二、商用密码算法体系

商用密码算法体系包括对称密码算法、公钥密码算法和密码杂凑算法等类型。习惯上,对称密码算法简称为“对称密码”;公钥密码算法简称为“公钥密码”;密码杂凑算法简称为“杂凑算法”,也称“散列算法”或“哈希算法”。

(一)对称密码算法

对称密码算法加密过程与解密过程使用相同或容易相互推导得出的密钥,即加密和解密双方的密钥是“对称”的。这如同往一个上了锁的箱子里放物品,放入时需要用钥匙打开;想要取出物品时,还需要用同样的钥匙开锁。

针对不同的数据类型和应用环境,对称密码有两种主要形式:一是序列密码,即将明文逐比特/字符运算的一种对称密码算法,也称“流密码”;二是分组密码,即将输入数据划分成固定长度的分组进行加解密的一种对称密码算法。

SM4算法是商用密码标准算法中的分组密码算法,它的分组长度为128比特,密钥长度为128比特,解密算法与加密算法相同,具有算法速度快、实现效率高、安全性好等优点,主要用于保护数据的机密性。2012年,SM4算法被发布为密码行业标准(GM/T 0002—2012),2016年被发布为国家标准(GB/T 32907—2016)。

祖冲之(ZUC)算法是我国颁布的商用密码标准算法中的序列密码算法,可用于数据机密性保护、完整性保护等。ZUC算法体现了序列密码设计上的发展趋势,具有较大安全余量,并且算法速度快,软硬件实现性能都比较好。2011年9月,以ZUC算法为核心的加密算法128-EEA3和完整性保护算法128-EIA3获国际移动通信标准化组织3GPP SA全票通过,与美国AES、欧洲SNOW 3G共同成为了4G移动通信密码算法国际标准。这是我国自主设计的商用密码算法首次参与国际标准制定,取得了历史性突破。ZUC算法的成功设计与标准国际化,提高了我国在移动通信领域的国际地位和影响力,对我国移动通信产业和商用密码产业发展具有重大而深远的意义。

(二)公钥密码算法

公钥密码算法又称非对称密码算法,打破了对称密码算法加密和解密必须使用相同密钥的限制,很好地解决了对称密码算法存在的密钥管理难题。公钥密码算法一般包括公钥加密算法、数字签名算法和密钥协商算法。密钥协商算法一般基于公钥加密算法,结合特定密码协议,用于协商通信双方共同使用的密钥。

公钥加密算法加密和解密使用不同的密钥。其中加密的密钥被公开,称为公钥;解密的密钥被保密,称为私钥。公钥和私钥是密切关联的,从私钥可推导出公钥,但从公钥不能推导出私钥。在应用公钥加密算法时,每个用户都有自己的一对公钥和私钥,公钥公开,私钥保密。需要向谁秘密通信,只需用谁的公钥对消息进行加密,具有相应私钥的人可以解密得到明文,而没有相应私钥的人都无法进行解密。2010年12月,国家密码管理局颁布了《SM2椭圆曲线公钥密码算法》(简称SM2算法)。SM2算法成为我国颁布的商用密码标准算法中的公钥密码算法,该算法推荐使用素数域256位的椭圆曲线。SM2算法基于椭圆曲线上离散对数计算困难问题,密钥长度为256比特,具有密钥长度短、安全性高等特点。SM2算法中的公钥加密算法可应用于数据加解密和密钥协商等。

数字签名算法也称电子签名算法,可以实现类似于手写签名的功能,但借助数学方法比手写签名更安全、功能更强。在应用数字签名算法时,每个签名者都有一对公钥和私钥,公钥公开,私钥保密。与公钥加密使用公钥和私钥的顺序不同,数字签名使用私钥对消息进行签名,使用公钥对签名进行验证。数字签名算法可用于确认数据的完整性、签名者身份的真实性和签名行为的不可否认性等。由于数字签名是用私钥产生的,没有私钥不能产生有效的签名,所以数字签名是不可伪造的。由于签名者和公钥有一一对应关系,可以用公钥对数字签名进行公开验证,因此合法的签名是可公开验证的。因为只能用签名者的公钥(而不是其他人的公钥)进行签名的验证,所以签名者不能否认自己签过的签名。由于一般需要签名的消息或文件很长,实际中数字签名算法都要将消息用杂凑算法进行压缩,再进行签名。SM2算法中的数字签名算法已在我国电子认证领域广泛应用。

2016年3月,国家密码管理局颁布了《SM9标识密码算法》(简称SM9算法)。SM9算法是我国颁布的商用密码算法中的另一种公钥密码算法,它是一组基于身份标识的公钥密码算法,也称为标识密码算法,包括数字签名算法、密钥交换协议、密钥封装和公钥加密算法。

(三)密码杂凑算法

密码杂凑算法是将任意长的消息压缩成固定长度短消息的函数,具有抗碰撞性和单向性等性质。函数的输出称为摘要值,或称摘要。密码杂凑算法的作用很多:它可以用于数字签名,先对消息进行压缩,再对摘要值进行签名,因为很长的文件不能一页一页地签名;它可以检测消息的完整性,由摘要值判断消息是否被篡改;它可以用于口令的存储,利用单向性的特点,即使暴露了摘要值也不会暴露口令。

SM3密码杂凑算法(简称SM3算法)是我国商用密码标准中的密码杂凑算法,可用于数字签名、完整性保护、安全认证、口令保护等。SM3算法消息分组长度为512比特,输出摘要长度为256比特。SM3算法在Merkle-Damagard结构的基础上,新增了16步全异或操作、消息双字介入、加速雪崩效应的P置换等多种设计技术,能够有效避免高概率的局部碰撞,有效抵抗强碰撞性的差分分析、弱碰撞性的线性分析和比特追踪法等密码分析方法。公开文献表明,SM3算法能够有效抵抗目前已知的攻击方法,具有较高的安全冗余。在实现上,SM3算法运算速率高、灵活易用、支持跨平台的高效实现,具有较好的实现效能。当前,SM3算法已成为我国电子认证、网络安全通信、云计算与大数据安全等领域的基础性密码算法,为促进商用密码发展、保障我国网络与信息安全发挥了巨大作用。