SM4算法、AES算法、DES算法三种分组密码的基础分析 分组密码当中代表性的SM4算法、AES算法、DES算法在计算机和通信系统中起着重要的实际作用,每一种的算法都会有其独有的一份结构,讲解起来其实每一种都有很大的一个篇幅。在这里主要是把这几种密码算法放在一起做一个简单的分析,也可以通过了解每一种算法来比较一下三者之间的差别。 那么,我们就通过了解SM4算法、AES算法、DES算法这几种有代表性的近代分组密码来讨论一下分组密码的基本理论及其在计算机和通信系统中的实际应用。
1、SM4算法
SM4密码算法是一个分组算法,其算法设计简沽,结构有特点,安全高效。数据分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法均采取32轮迭代结构。SM4密码算法以字节(8位)和字(32位)作为单位进行数据处理。SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
SM4算法的基本内容有以下几方面:
基本运算:SM4密码算法使用模2加和循环移位作为基本运算。 基本密码部件:SM4密码算法使用了S盒、非线性变换τ、线性变换部件L、合成变换T基本密码部件。 轮函数:SM4密码算法采用对基本轮函数进行迭代的结构。利用上述基本密码部件,便可构成轮函数。SM4密码算法的轮函数是一种以字为处理单位的密码函数。 加密算法:SM4密码算法是一个分组算法。数据分组长度为128比特,密钥长度为128比特。加密算法采用32轮迭代结构,每轮使用一个轮密钥。 解密算法:SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密铝的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 密钥扩展算法:SM4密码算法使用128位的加密密钥,并采用32轮法代加密结构,每一轮加密使用一个32位的轮密钥,共使用32个轮密钥。因此需要使用密钥扩展算法,从加密密钥产生出32个轮密钥。 SM4的安全性:SM4密码算法经过我国专业密码机构的充分分析测试,可以抵抗差分攻击、线性攻击等现有攻击,因此是安全的。
2、AES算法
2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen和Vincent Rijmen提出的一种密码算法RJNDAEL作为AES,目前AES己经被一些国际标准化组织(ISO,IETF,IEEE802.11等)采纳作为标准。RIJNDAEL算法之所以能够最终被选为AES的原因是其安全、性能好、效率高、实用、灵活。RIJNDAEL算法是一个数据块长度和密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于256位的32位的任意倍数。
AES算法的基本内容有以下几方面:
状态:在RIJNDAEL算法中,加解密要经过多次数据变换操作,每一次变换操作产生一个中间结果,称这个中间结果叫做状态。各种不向的密码变换都是对状态进行的。 轮函数:RIJNDAEL加密算法的轮函数采用代替/置换网络结构(SP结构),由S盒变换ByteSub、行移位变换ShiftRow、列混合变换MixColumn、圈密钥加变换AddRoundKey组成。 圈密钥产生算法:圈密钥根据圈密钥产生算法由用户密钥产生得到,圈密钥产生分两步进行:密钥扩展和圈密钥选择。 加密算法:RIJNDAEL加密算法由一个初始圈密钥加、Nr-l圈的标准轮函数、最后一圈的非标准轮函数组成。 解密算法:RIJNDAEL算法不是对合运算,因此RIJNDAEL的解密算法与加密算法不同。由于RIJNDAEL设计得非常巧妙,使得我们只要略稍改变一下密钥扩展策略,便可以得到等价的解密算法,等价解密算法的结构与加密算法的结构相同,从而方便了工程实现。等价解密算法中的变换为加密算法中相应变换的逆变换。 RIJNDEAEL的安全性:RIJNDEAEL算法的安全设计策略是宽轨迹策略(Wide Trai1 Strategy),具有很高的安全性,能有效抵抗自前己知的攻击,如线性攻击、插值攻击、差分攻击和相关密钥攻击等。RIJNDEAEL的数据块长度和密钥长度都可变,因此能够适应不同的安全应用环境。
3、DES算法
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。DES 综合用了置换、代替、代数等多种密码技术。它设计精巧、实现容易、使用方便,堪称是适应计算机环境的近代传统密码的一个典范。设计DES的目标是用于加密保护静态存储和传输信道中的数据,安全使用1O~15年。
DES算法的基本内容有以下几方面:
DES的加密过程。 子密钥的产生:64位密钥经过置换选择1、循环左移、置换选择2等变换,产生出16个48位长的子密钥。 初始置换IP:初始置换IP是DES的第一步密码变换。初始置换的作用在于将64 位明文打乱重排,并分成左右两半。 加密函数f:加密函数f是DES的核心部分,由选择运算E,代替函数组S和置换运算P组成。 逆初始重换IP-1:逆初始置换IP-1是初始置换凹的逆置换。它把第十六次加密迭代的结果打乱重排,形成64位密文。至此,加密过程完全结束。 DES的解密过程:由于DES的运算是对和运算,所以解密和加密可共用同一个运算,只是子密钥使用的顺序不同。 DES安全性:几十年来的应用实践证明了DES作为商用密码,用于其设计目标是安全的。DES在总的方面是极其成功的,但同时也不可避免地存在着密钥较短、存在弱密钥等弱点和不足。 三重DES:3DES即可以使用三个密钥,也可以使用两个密钥。它有三个显著的优点:首先它的密钥长度是168位,完全能够抵抗穷举攻击;其次是相当安全,该加密算法比任何其他加密算法受到分析的时间都要长;其三,由于3DES的底层加密算法与DES相同,所以许多现有的DES软硬件产品都能方便地实现3DES ,因此使用方便。 SM4算法、AES算法、DES算法这三种分组密码各有各的不同,但作为分组密码在计算机系统中都有广泛的应用,学习了之后我们便可理解并讨论它们的基本理论及其在计算机和通信系统中的实际应用。