DES算法及其工作模式分析
褚慧丽
中南财经大学信息管理与信息系统专业2009级
[摘要] 现代密码学的发展经过了一个漫长而复杂的过程,在这过程中出现了一系列经典而高效的加密。DES作为分组密码的典型代表,对密码学的发展做出了重要的贡献。本文主要介绍了DES的概况,并对它的算法进行描述,找出它的设计思想和特点,分析它的安全性。在此基础上,进一步介绍了DES的工作模式。
[关键词] 分组密码 信息安全 DES 演化密码 对称密码
1. 概况
1.1DES简介
DES算法是由IBM公司在20世纪70年代发展起来的,于1976年11月被美国采 用,随后被美国国家标准局和美国国家标准协会承认,同时也成为全球范围内事实上的工业标准。
DES算法作为分组密码的代表,已成为金融界及其他各种行业广泛应用的对称密钥密码 系统。它以feistel网络结构理论为基础,采用迭代分组形式,在提高算法的运行速度,改善了密码的实用性的同时,也大大的提高了密码的安全性,对于我们研究密码学以及展望密码学的发展方向有重要意义。
1.2算法描述
DES使用56位密钥对位的数据块进行加密,并对位的数据块进行16轮编码。在每轮编码中,一个48位的密钥值由56位的“种子”密钥得出来。
DES算法把位的明文输入快变成位的密文输出块,整个算法的变换过程如图1.1所示。
图1.1 DES算法框图
图中描述的是DES的加密过程。而解密和加密过程大致相同,不同之处仅在于右边的16个子密钥的使用顺序不同,加密的子密钥的顺序为K1,K2,…,K16,而解密的子密钥的使用顺序则为K16,K15,…,K1。
IP即初始换位的功能是把输入的位明文数据块按位重新组合,并把输出分为L0,R0两部分,每部分各长32位。其置换规则如表1.1所示。
表1.1 DES算法初始换位规则表 58 62 57 61 52 54 49 53 42 46 41 45 34 38 33 37 26 30 25 29 18 22 17 21 10 14 9 13 2 6 1 5 60 59 63 52 56 51 55 44 48 43 47 36 40 35 39 28 32 27 31 20 24 19 23 12 16 11 15 4 8 3 7 即将输入的位数据的第58位换到第1位,第50位换到第2位„„依此类推。设置换前的输入值为D1D2„D,则经过初始换位后的结果为:L0=D58D50„D8,R0=D57D49„D7。 经过初始换位后,将R0与密钥发生器产生的密钥K1进行计算,其结果记为f(R0,K1)再与L0进行异或运算得到L0⊕f(R0,K1),把R0记为L1放在左边,把L0⊕f(R0,K1)记为R1放在右边,从而完成了第一次迭代运算。连续迭代16次,第16次迭代结果左右不交换,即L15⊕f(R15,K16)记为R16放在左边,R15记为L16放在右边。
16次迭代后,得到L16,R16。将此作为输入进行逆初始换位IP-1,就可以得到密文输出。逆初始换位正好是初始换位的逆运算。其置换规则如表1.2所示。
表1.2 DES算法逆初始换位规则表 40 38
8 6 48 46 16 14 56 54 24 22 62 32 30 39 37 7 5 47 45 15 13 55 53 23 21 63 61 31 29
36 34 4 2 44 42 12 10 52 50 20 18 60 58 28 26 35 33 3 1 43 41 11 9 51 49 19 17 59 57 27 25 其置换规则和表1.1所述相似。
DES算法的16次迭代具有相同的结构,每一次迭代的运算过程如图1.2所示。
Li-1 Ri-1 密钥 移位移 位 扩展置换 压缩置换 ⊕ S -盒 P-盒置换 ⊕ Li Ri 密钥
图1.2 DES算法的一次迭代过程图
在每一次迭代过程中,其核心部分是f函数,即图1.2中的扩展置换、异或运算、S-盒替换和P-盒置换。
扩展置换是将32位数据扩展为48位,使其长度与密钥一样。其置换规则如表1.3所示。
表1.3 扩展置换规则表 32 12 22 1 13 23 2 12 24 3 13 25 4 14 24 5 15 25 4 16 26 5 17 27 6 16 28 7 17 29 8 18 28 9 19 29 8 20 30 9 21 31 10 20 32 11 21 1 P-盒置换规则如表1.4所示。
表1.4 P-盒置换规则表
16 2 7 8 20 24 21 14 29 32 12 27 28 3 17 9 1 19 15 13 23 30 26 6 5 22 18 11 31 4 10 25
S-盒是DES算法的核心,它的功能是将6位数据变为4位数据,它是一个选择函数,共有8个S函数,其功能表如表1.5所示。
表1.5 S-盒查询功能表 S1 14 0 4 15 S2
4 15 1 12 1 13 7 14 8 8 1 4 8 2 14 2 14 13 4 6 15 2 6 9 11 11 13 2 1 3 8 1 11 7 4 3 10 15 5 9 10 6 12 11 7 6 12 9 3 2 12 11 7 14 13 5 9 3 10 12 9 5 10 0 0 0 3 5 6 5 7 8 0 13 10 15
3 0 13 S3 10 13 13 1 S4 7 13 10 3 S5 2 14 4 11 S6 12 10 9 4 S7 4 13 1 6 S8 13 1 7 2 13 14 8 0 7 6 10 13 8 6 15 12 11 2 8 1 15 14 3 11 0 4 11 2 15 11 1 4 7 10 9 0 4 13 14 11 9 0 4 2 1 12 10 4 15 2 2 11 11 13 8 13 4 14 7 11 1 14 9 9 0 3 5 0 6 1 12 11 7 15 2 5 12 14 7 13 8 4 8 1 7 15 10 3 6 3 8 6 0 6 12 10 7 4 10 1 9 7 2 9 15 4 12 1 6 10 9 4 2 4 15 3 4 15 9 6 15 11 1 10 7 13 14 2 12 8 5 0 9 3 4 15 3 12 10 8 13 4 15 6 3 8 9 0 7 13 11 13 7 2 6 9 12 15 8 1 7 10 11 7 14 8 14 1 2 5 10 0 7 10 3 13 8 6 1 8 13 8 5 3 10 13 10 14 7 1 4 2 13 12 5 11 1 2 11 4 1 4 15 9 8 5 15 6 0 6 7 11 3 14 10 9 10 12 0 15 0 8 6 13 8 1 15 2 7 1 4 5 0 9 15 13 1 0 14 12 3 15 5 9 5 6 12 1 12 7 12 5 2 14 8 2 3 5 3 15 12 0 3 13 4 1 9 5 6 0 3 6 10 9 10 6 12 7 14 12 3 5 12 14 11 15 10 5 9 4 14 10 7 7 12 8 15 14 11 13 0 6 9 0 11 12 5 11 11 1 5 12 13 3 6 10 14 0 1 6 5 2 0 14 5 0 15 3 9 3 5 4 11 10 5 12 10 2 7 0 9 3 4 7 11 13 0 10 15 5 2 0 14 3 5 11 2 14 2 15 14 2 4 14 8 2 14 8 0 5 5 3 11 8 6 8 9 3 12 9 5 6 5 15 9 8 1 7 12 15 9 4 14 9 6 14 3 11 8 6 13 1 6 2 12 7 2 8 11 以S1为例,设S1盒6位输入为D=D1D2D3D4D5D6,将D1D6组成的一个2位二进制数转化为十进制数,对应表中行号,将D2D3D4D5组成的一个4位二进制数也转化为十进制数,对应列号,然后在S1表中差得行和列交叉点处的对应的数,以4位二进制表示,即为S1的输出。
图1.3给出了子密钥Ki(48位)的生成算法。
K 置换选择1 C0 LS C1 LS D0 LS D1 LS 置换选择2 K1 LS C16 LS D16 置换选择2 K1
图1.3 子密钥产生过程图
初始密钥值位位,但去掉8,16,„,位的奇偶校验位,实际可用位数只有56位。经过置换选择1(如表1.6所示)后,密钥的位数由位变成56位,分为C0,D0两部分,然后进行第一次循环左移(图中LS),得到C1,D1,合并得到56位,再经置换选择2(如表1.7所示),得到密钥K1。依此类推,可得到K2,K3,„,K16. 每次循环左移的的位数分别是:1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1
表1.6 置换选择1
C0 57 1 10 19 D0 63 7 14 21 49 58 2 11 55 62 6 13 41 50 59 3 47 54 61 5 33 42 51 60 39 46 53 28 25 34 43 52 31 38 45 20 17 26 35 44 23 30 37 12 9 18 27 36 15 22 29 4
表1.7 置换选择2 14 3 23 16 41 30 44 46
17 28 19 7 52 40 49 42 11 15 12 27 31 51 39 50 24 6 4 20 37 45 56 36 1 21 26 13 47 33 34 29 5 10 8 2 55 48 53 32
以上就完成了DES的整个加密解密流程。
2. DES的安全性
20多年来,尽管计算机硬件及破解密码技术的发展日新月异,若撇开DES的密钥太短,易于被使用穷尽密钥搜索法找到密钥的攻击法不谈,目前所知攻击法,如查分攻击法或线性攻击法,对于DES的安全也仅仅做到了“质疑”的地步,并未从根本上破解DES。 当然,对DES的批评也有很多,主要集中在以下几点: (1) DES的密钥长度(56位)可能太少。 (2) DES的迭代次数可能太少。 (3) S-盒中可能有不安全因素。
(4) DES的一些关键部分不应当保密。
比较一致的看法是DES的密钥太短,仅256个,不能抵抗穷尽密钥搜索攻击。事实上也确实如此,先后有人在较短的时间内就破解了DES。正因为如此,美国已经征集评估和判定出了新的数据加密标准AES以取代DES。尽管如此,DES还是对现代分组密码理论的发展和应用起了奠基性作用。
3.DES的工作模式
实际应用中,DES是根据其加密算法所定义的明文分组的大小(bits),将数据割成若干bits的加密区块,再以加密区块为单位,分别进行加密处理。根据数据加密时每个加密区块间的关联方式,可以分为4种加密模式,包括ECB,CBC,CFB及OFB。
3.1 电码本模式(ECB)
ECB模式是DES加密的基本工作模式。
在ECB模式下,每一个加密区块依次加密,产生的密文区块,每一加密区块的加密结果不受其他区块的影响。使用此种方式下,可以利用并行处理来加速加密解密运算,且在网络传输时任一区块有任何错误发生,也不会影响到其他区块传输的结果。这是该模式的优点。
该模式的缺点是容易暴露明文的数据模式。
3.2 密码分组链接模式(CBC)
在CBC模式下,第一个加密区块先与初始向量IV做异或运算,再进行加密。其他每个加密区块加密之前,必须与前一个加密区块的密文作一次异或运算,再进行加密。每一个区块的加密结果均会受到前面所有区块内容的影响,所以即使在明文中出现多次相同的明文,也会产生不同的密文。
密文内容若遭剪贴、替换,或在网络传输过程中发生错误,则其后续的密文将被破坏,无法顺利解密还原,这是这一模式的的优点,也是缺点。 在CBC模式下,加密作业无法利用并行处理来加速加密运算,但其解密运算可以利用并行处理来加速。
3.3 密文反馈方式(CFB)
在CFB模式下,可以将区块加密算法当作流密码加密器使用,流密码加密器可以按照实际上的需要,每次加密区块大小可以自订,每一个区块的明文与前一个区块加密后的密文做异或后成为密文。因此,每一个区块的加密结果受之前所有区块内容的影响,也会使得在明文中出现多次相同的明文均产生不同的密文。在此模式下,位了加密第一个区块,也必须选择一个初始向量,且此初始向量必须惟一,每次加密时必须不一样,也难以利用并行处理来
加快加密作业。
3.4 输出反馈模式(OFB)
OFB与CFB大致相同,都是每一个区块的明文与之前区块加密后的结果做异或后产生密文,不同的是之前区块加密后的结果为产生,每一个区块的加密结果不受之前所有密文区块的内容的影响,如果有区块在传输过程中遗失或发生错误,将不至于无法完全解密,在此模式下,为了加密第一个区块,必须设置一个初始向量,否则难以利用并行处理来加快加密作业。
4.结束语
DES作为国际上通用的数据加密标准,也是实际上的工业标准,应用了20年左右。而后由于计算机技术的迅速发展,该算法较短的密钥长度已无法抵抗简单的穷举攻击,由此出现了后来的3DES,AES等具有更高安全性的算法。但DES在密码史上的地位仍是无可替代的。
参考文献
[1]朱少彰等.信息安全概论.北京邮电大学出版社.2007年 [2]章照止.现代密码学基础.北京邮电大学出版社.2004年 [3]张焕国等.演化密码引论.武汉大学出版社.2010年