信息安全技术基础04:071数据加密标准DES(DataEncryptionStandard)----主讲唐西林信息安全技术基础04:072本节课的内容提要:•数据加密标准(DES)•3DES信息安全技术基础04:073数据加密标准•美国国家标准局(NBS),即现在的国家标准和技术研究所(NIST)于1973年5月向社会公开征集标准加密算法•并公布了它的设计要求:--算法必须提供高度的安全性--算法必须有详细的说明,并易于理解--算法的安全性取决于密钥,不依赖于算法--算法适用于所有用户--算法适用于不同应用场合--算法必须高效、经济--算法必须能被证实有效信息安全技术基础04:074•1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由Feistel领导的团队研究开发,采用64位分组以及128位密钥•IBM用改版的Lucifer算法参加竞争,最后获胜,成为数据加密标准(DataEncryptionStandard,DES)•1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。1977年1月15日,数据加密标准,即FIPSPUB46正式发布•DES是分组密码的典型代表,也是第一个被公布出来的加密标准算法。现代大多数对称分组密码也是基于Feistel密码结构信息安全技术基础04:075DES加密过程•DES同时使用了代换和置换两种技巧•它用56位密钥加密64位明文,最后输出64位密文•整个过程分为两大部分组成:一是加密过程,另一是子密钥产生过程•图3.4是DES加密算法简图信息安全技术基础04:076信息安全技术基础04:077•图3.4左半边的处理过程可以分三个部分:(1)64位明文经过初始置换被重新排列,然后分左右两半,每半各32位;(2)左右两半经过16轮置换和代换迭代,即16次实施相同的变换。然后再左右两半互换;(3)互换后的左右两半合并,再经过逆初始置换输出64位密文。•图3.4右半部则由56位密钥,产生16个48位子密钥,分别供左半边的16轮迭代加密使用信息安全技术基础04:078初始置换•初始置换(InitialPermutation,IP)是数据加密的第1步•将64位的明文按照图3.5置换。置换表中的数字表示输入位在输出中的位置信息安全技术基础04:079•置换后将数据M分成两部分:左半部分L0和右半部分R0各32位。划分方法原则是偶数位移到左半部,奇数位移到右半部,即:信息安全技术基础04:0710DES每轮结构•上一轮的右边Ri-1直接变换为下一轮的左边Li•上一轮的左边Li-1与加密函数F异或后作为下一轮的右边Ri•加密函数F则是上一轮右边Ri-1和子密钥Ki的函数。即•Li=Ri–1•Ri=Li–1⊕F(Ri–1,Ki)信息安全技术基础04:0711图3.6DES每一轮结构Li-1Ri-1LiRiKiF+信息安全技术基础04:0712•加密函数F本质上是Ri-1和子密钥Ki的异或•从图3.6可以看出加密函数F是32位,而Ri-1是32位,子密钥Ki是48位,因此Ri-1和Ki不能直接异或•DES这样处理这个问题:先用扩展置换E(如图3.8所示)将Ri-1扩展为48位,与48位子密钥异或,输出48位;再使用8个S盒压缩成32位;然后经置换函数P(如图3.9所示)输出32位的加密函数F。信息安全技术基础04:0713加密函数F的计算过程Ki(48bits)Ri-1(32bits)48bitsE+S1S2S3S4S5S8S6S7F(32bits)P信息安全技术基础04:0714图3.8扩展置换E图3.9置换函数P信息安全技术基础04:0715S盒•在加密函数计算过程中使用了8个S盒;•S盒是DES保密性的关键所在;•S盒有6位输入,4位输出;•48位数据经过8个S盒后输出32位数据;•每个S盒都由4行(表示为0,1,2,3)和16列(0,1,…,15)组成,如图3.10所示信息安全技术基础04:0716信息安全技术基础04:0717•每行都是全部的16个长为4比特串的一个全排列•每个比特串用它对应的二进制整数表示,如1001用9表示。•对每个S盒,将6位输入的第一位和最后一位组成一个二进制数,用于选择S盒中的一行。用中间的4位选择S盒16列中的某一列,行列交叉处的十进制数转换为二进制数可得到4位输出。•例如对于S1盒而言,如果输入为011001,则行是01(十进制1,即S盒的第2行),列1100(12,即S盒的第13列),该处的值是9,转换为二进制数为1001,即为该S盒的输出信息安全技术基础04:0718DES子密钥产生•DES加密过程共迭代16轮,每轮用一个不同的48位子密钥•子密钥由算法的56位密钥产生•DES算法的输入密钥长度是64位,但只用了其中的56位•如图3.11所示,图中无阴影部分,也就是每行的第8位被忽略,主要用于奇偶校验,也可以是随意设置•子密钥的产生过程如图3.12所示信息安全技术基础04:0719图3.11DES的输入密码信息安全技术基础04:0720信息安全技术基础04:0721•56位密钥首先经过置换选择1(如图3.13所示)将其位置打乱重排•将前28位作为C0(如图3.13的上面部分),后28位D0(如图3.13的下面部分)信息安全技术基础04:0722•接下来经过16轮,产生16个子密钥•每一轮迭代中,Ci-1和Di-1循环左移1位或者2位,如图3.14所示•Ci-1和Di-1循环左移后变为Ci和Di,将Ci和Di合在一起的56位,经过置换选择2(如图3.15所示),从中挑出48位作为这一轮的子密钥•再将Ci和Di循环左移后,使用置换选择2产生下一轮的子密钥,如此继续,产生所有16个子密钥。信息安全技术基础04:0723图3.14每轮左移次数的规定图3.15置换选择2信息安全技术基础04:0724DES解密•DES解密过程与加密过程本质上一致•加密和解密使用同一个算法,使用相同的步骤和相同的密钥•主要不同点是将密文作为算法的输入,但是逆序使用子密钥ki,即第1轮使用子密钥k16,第2轮使用子密钥k15,最后一轮使用子密钥k1信息安全技术基础04:0725DES的强度•从发布时起,DES就备受争议•争论的焦点主要集中在密钥的长度、迭代次数以及S盒的设计等方面•DES的安全性是依赖S盒,但是S盒设计详细标准至今没有公开•有人怀疑S盒里隐藏了陷门(trapdoors)。然而到目前为止也没有任何证据证明DES里确实存在陷门。事实上,后来表明S盒是被设计成能够防止差分密码分析•DES是将Lucifer算法作为标准,Lucifer算法的密钥长度128位,但DES将密钥长度改为56位,这不能抵抗穷尽密钥搜索攻击信息安全技术基础04:0726•1997年,克罗拉多州的程序员Verser在Inrernet上数万名志愿者的协作下用96天的时间找到了密钥长度为40位和48位的DES密钥•1998年电子边境基金会(EFF)使用一台价值25万美元的计算机在56小时之内破译了56位的DES•1999年,电子边境基金会(EFF)通过互联网上的10万台计算机合作,仅用22小时15分破译了56位的DES•另外,DES存在弱密钥。如果一个密钥所产生的所有子密钥都是一样的,则这个外部密钥就称为弱密钥•DES的密钥置换后分成两半,每一半各自独立移位。如果每一半的所有位都是“0”或者“1”,那么在算法的任意一轮所有的子密钥都是相同的信息安全技术基础04:0727三重DES•DES由于安全问题,美国政府于1998年12月宣布DES不再作为联邦加密标准•新的美国联邦加密标准是高级加密标准(ASE)•在新的加密标准实施之前,为了使已有的DES算法投资不浪费,NIST在1999年发布了一个新版本的DES标准(FIPSPUB46-3),该标准指出DES仅能用于遗留的系统,同时将三重DES(简写为3DES)取代DES成为新的标准•3DES存在几个优点。首先它的密钥长度是168位,足以抵抗穷举攻击。其次,3DES的底层加密算法与DES的加密算法相同,该加密算法比任何其它加密算法受到分析的时间要长得多,也没有发现有比穷举攻击更有效的密码分析攻击方法信息安全技术基础04:0728•但是双重DES不安全•双重DES存在中间相遇攻击,使它的强度跟一个56位DES强度差不多•如果C=EK2[EK1[M]],令X=EK1[M]=DK2[C]。若已知(M,C),攻击方法如下:--先用256个可能的K1加密M,得到256个可能的值,将这些值从小到大存入一个表中--再对256个可能的K2解密C,每次做完解密,将所得的值与表中的值比较,如果产生匹配,则它们对应的密钥可能是K1和K2--用一个新的明文密文对检测所得两个密钥,如果两密钥产生正确的密文,则它们是正确的密钥信息安全技术基础04:0729•为防止中间相遇攻击,可以采用3次加密方式,如图3.17所示•这是使用两个密钥的三重EDS,采用加密—解密—加密(E-D-E)方案•注意的是,加密与解密在安全性上来说是等价的。这种加密方案穷举攻击代价是2112EEK1K1CMB加密解密DK2ADDK1K1MCAEK2B信息安全技术基础04:0730•目前还没有针对两个密钥的三重DES实际的攻击方法•但是感觉它不大可靠,如果采用三把密钥的三重DES则比较放心•三把密钥的三重DES的密钥长度是168位,采用加密—解密—加密(E-D-E)方案•其加密过程为C=EK3[DK2[EK1[M]]],解密过程为M=DK1[EK2[DK3[C]]]•这种加密方式已经被一些网络应用采用,如本书后面章节要讨论的PGP和S/MIME采用了这种方案信息安全技术基础04:0731希望大家能学出好成绩,我们一起努力!谢谢大家!