下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

分组密码之DES算法简单分析

作者:课课家教育     来源: http://www.kokojia.com点击数:2860发布时间: 2019-03-08 09:42:36

标签: 信息安全工程师密码学分组密码DES算法

软考,您想通过吗?一次通过才是硬道理

  分组密码之DES算法简单分析(上)信息安全工程师_密码学_分组密码_DES算法_课课家

      DES算法为密码体制中的对称密码体制,属于分组密码中的一种算法,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法,主要用于敏感信息的加密。DES综合用了置换、代替、代数等多种密码技术。它设计精巧、实现容易、使用方便,具有极高的安全性,堪称是适应计算机环境的近代传统密码的一个典范。而设计DES的目标是用于加密保护静态存储和传输信道中的数据,安全使用1O~15年。

      DES的设计充分体现了Shannon信息保密理论所阐述的设计密码的思想,标志着密码的设计与分析达到了新的水平。

  DES的整体结构

      如图1-1所示

 DES的整体结构

图1-1 DES的整体结构

  DES是一种分组密码。明文文、密文和密钥的分组长度都是64位。

  DES是一种二进制的密码算法,所以可以加解密任意形式的计算机数据。

  DES是对合运算,因此加密和解密均使用同一算法,进而能使工程实现的工作量减半。

  DES的基本原理

  DES入口参数有三个:key、data、mode。Key是加密解密使用的密钥,为8个字节共64位,data也是8个字节共64位,为加密或者解密的数据,mode为其工作模式。当模式为加密模时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了6位中的56位,这样才具有高的安全性。

  DES的安全性

  DES一般都用来做商用密码,其极高的安全性已经在几十年来的实际应用中得以证明。除了密钥太短经不起当今网络计算和并行计算的穷举攻击这个缺陷以外,至今为止都没发现DES有其他严重的缺陷。56位长的密钥的穷举空间为256,这就意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,这就是为何DES会具有高安全性的原因所在。

  DES的弱点

  当然,具有高安全性的DES并不是不可破解,它的特点是分组比较短、密钥太短、密码生命周期短、运算速度较慢,这些DES自身的特点使得它不可避免的存在一些不足和弱点。

  一方面,DES采取56位密钥对于如今愈发高速发展的计算机能力显然是太短了些。

  另一方面,DES存在着一些弱密钥和半弱密钥。在16次加密迭代中分别使用不同的子密钥是确保DES安全强度的一种重要措施。但是实际上如存在着一些密钥,由它们产生的16个子密钥不是互不相同,而是有相重的。

  设k是给定的密钥,如果由k所产生的子密钥:

  K1=k2=…=k16

  则称k为弱密钥。如果k为弱密钥,则有

  DES[DES(M, k),k]=M

  DES-1[DES-1(M,k),k]=M

  DES(M,k)=DES-1(M,k)

  如果DES能解决以上在密钥上的一些问题的话,DES将会更安全。

  三重DES

  为了克服DES密钥空间小的缺陷,人们又提出了三重DES的变形方式。美国NIST在1999年发布的一个新DES标准中指出DES仅能用于遗留的系统,因此将3DES取代DES成为新的标准。

  3DES即可以使用三个密钥,也可以使用两个密钥。其两个密钥的3DES结构如图1-2所示:

两个密钥的3DES结构图

图1-2 两个密钥的3DES结构图

  3DES是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密,对比DES有三个显著的特点。

  1.密钥长度:对比DES56位的密钥长度,3DES具有168位密钥长度,完全能够抵抗DES不能抵抗的穷举攻击。

  2.相当安全:3DES的底层加密算法与DES的相同,其加密算法比任何其他加密算法受到分析的时间都要长,而且也没发现比穷举攻击更为厉害的攻击方法,因此比DES更加安全。

  3.使用方便:3DES的底层加密算法与DES相同,因此很多现有的DES软硬件产品都能方便地实3DES。

     DES的加密过程

      DES的解密与加密是学习DES算法的关键所在,了解了加密解密的过程我们才能对基本原理了解得通透,也能把DES运用到实际当中来。

  (1)DES的64位密钥经过子密钥产生算法然后产生出16个子密钥K1,K2,…,K16,这16个子密钥分别提供第一次,第二次,…,第十六次的加密迭代使用。

  (2)首先需要经过初始置换IP(Initial pennutation)的64位明文,要将数据打乱然后分为左右两半重新排列起来。左边的32位构成L0,右边的32位构成R0

  (3)子密钥K1对R0的加密是由加密函数f来实现的,所实现的结果为32位的数据组f(R0,K1)。f(R0,K1)需要再和R0模2相加,继而得到一个32位的数据组L0⊕f(R,K1)。用L0⊕f(R0,K1)来作为第二次加密迭代的Rl,以R0作为第二次加密迭代的L1。第一次的加密迭代就到这一步结束了。

  (4)后面的第二次加密迭代至第十六次加密迭代分别用子密钥K2,…,K16来进行,这些过程均与第一次加密迭代相同。

  (5)当最后一次即第十六次的加密迭代结束之后便会产生一个64位的数据组。用左边的32位作为Rl6 ,右边的32位作为L16,两个合并起来后再经过逆初始置换IP-1,将数据重新排列起来就得到了64位的密文。DES的加密过程到了这里就已经全部结束了。

  通过上面的综述,我们可以将DES 的加密过程用以下的一个数学公式来描述:

  DES子密钥的生成算法

  子密钥的一个生成算法可以用图1-4来表示:

子密钥的生产

图1-4子密钥的生产

  64位密钥需要经过置换选择1、循环左移、置换选择2等进行变换,然后产生出16个48位长的子密钥。所谓的置换就是要将数码中某一位的值根据置换表的规定,用另一位代替;而移位就是将一段数码按照规定的位数整体性地左移或右移,那么循环左移就是当左移时,把数码的最前的位移到数码的最后头,循环右移正相反。例如数码123456循环左移一位就是234561,循环右移一位就是612345。

  产生每一个子密钥所需的循环左移位数如下表1-5所示:

表1-5循环左移位数表

循环左移位数表

     1.置换选择1

  64位的密钥分为8个字节。每个字节的前7位是真正的密钥位,第8位是奇偶校验位。奇偶校验位可以从前7位密钥位计算得出,不是随机的,因而不起密钥的作用。奇偶校验位的作用在于可检测密钥中是否有错误,确保密钥的完整性。

      置换选择1的作用一个是从64位密码当中去除掉8个奇偶校验位,另一个作用则是将剩余的56位密钥位打乱重排,然后将前28位作为C0,后28位作为D0。在置换选择1中C0的各位依次为原密钥中的第57,49,…1,…, 44, 36位;而D0的各位依次为原密钥中的第63,55,…, 7,…, 12, 4位。它的矩阵如下图所示:

置换选择1

图1-6置换选择1

     2. 置换选择2

  置换选择2起到一个可以将Ci和Di合并成一个56位的中间数据,然后从当中选出一个48位的子密钥Ki的作用。如图1-6所示,置换选择2的子密钥当中的1,2,…,48位依次是这个56位中间数据中的14,17,…,5,3,…,29,32位。

置换选择2

图1-7置换选择2

  初始置换IP

  在DES的算法结构当中,初始置换IP是第一步的密码变换。如之前所说,初始置换可以将64位明文分成左右两半来打乱重排,左边的32位为L0,右边的32位为R0,提供给后面的加密迭代使用。初始置换IP的置换矩阵如图1-8所示。置换矩阵说明为置换后64位数据的1, 2,…, 64位依次是原明文数据的58,50,…,2,60,…,15,7各位。

初始置换IP

图1-8初始置换IP

  加密函数f

加密函数f

图1-9加密函数f

  加密函数f由选择运算E,代替函数组S和置换运算P组成,是DES运算当中的核心部分。

     1.选择运算E

  选择运算E是一个扩展运算,它通过重复选择某些数据位来达到数据扩展目的,对32位数据组A的各个位数进行一个排列和选择然后使其产生一个48位的数据组结果,用于和有着48位的子密码模2相加使其满足需要一定数据长度的函数组5的要求。选择运算E的矩阵如下图1-10所示

             图1-10选择运算E

     2.代替函数组S

  代替函数组S是由一个48位的数据作为输入的,从1到48依次加到代替函数组的记为S1 ,S2,S3,S4,S5,S6,S7,S8 的8个S盒(代替函数)的输入端当中。S盒是一种非线性的变换,DES的关键所在是S盒的保密性。因此,S盒的输出与输入的选择规则都有规定,以此来确保它的保密性。每个S盒的选择矩阵有O到15的16个数字的4行,共有16列,每行数字的排列以及8个选择矩阵均不相同。每一个S盒均有6位输入,然后产生4位的输出。其选择的规则是S盒的6位输入中的第1位和第6位数字组成的二进制数值代表选中的行号,剩余的4位数字所组成的二进制数值代表选中的列号,而处在被选中的行号和列号交点处的数字就是S盒的输出(以二进制形式输出)。以S1 为例,设输入为10101 1,第1位和第6位数字组成的二进制数为11=(3)10,表示选中品的行号为3的那一行,其余4位数字所组成的二进制数为0101=(5)10,,表示选中S1 的列号为5的那一列。交点处的数字是9 ,则S1的输出就是1001。

      每一个S盒都会有它自己的一个矩阵,如下表1-11:

表1-11代替函数组S

代替函数组S

  

      S盒是DES保密性的关键所在。它是一种非线性变换,也是DSE中唯一的非线性运算。如果没有它,整个DES将成为一种线性变换,这将是不安全的。关于S盒的设计细节, IBM公司和美国国家保密局(NSA) 至今尚未完全公布。研究表明, S盒至少应满足以下准则:

  (1)输出不是输入的线性和彷射函数;

  (2)任意改变输入中的一位,输出至少有两位发生变化;

  (3)对于任何S盒和任何输入x,S(x)和S(x⊕001100)至少有两位不同,这里x是一个6位的二进制串;

  (4)对于任何S盒和任何输入x, 以及y,zЄGF(2),S(x)≠S(x⊕11yzOO),这里x是一个6位的二进制串;

  (5) 保持输入中的1位不变,其余5位变化,输出中的O和1的个数接近相等。

  随着对DES研究的深入,人们发现,除了以上五条准则外,S盒还必须满足抗差分攻击的要求。人们猜测,IBM公司和美国国家保密局(NSA)至今尚未公布的关键细节就在于此。在我们对DES的研究中咀证明了这一点,研究表明DES的S盒的抗差分能力很强,这说明设计者在当时已经掌握了抗差分攻击的设计方法,而他们不想让外人知道差分攻击技术,便不公布这一设计准则。

  根据香农用混淆和扩散设计密码的理论, DES的S盒用来提供混淆,而P置换用来提供扩散。

  3.置换运算P

  置换运算P把S盒输出的32位数据打乱重排,得到32位的加密函数输出。用P置换来提供扩散,把S 盒的混淆作用扩散开来。正是置换P与S盒的互相配合提高了DES的安全性。置换矩阵P如图1-12所示。

图1-12 置换运算P  

      4.逆初始置换IP-1

  逆初始置换IP-1是DES加密过程的最后一步,它的作用打乱重排第十六次加密迭代的结果然后形成64位密文,是初始置换IP的逆置换,到了这一步,DES的加密过程就结束了。其置换矩阵如图1-13所示。

逆初始置换IP-1

图1-13逆初始置换IP-1

  

      初始置换IP和逆初始置换IP-1的密码意义不大,因为IP和IP-1没有密钥参与,而且在其置换矩阵公开的情况下求出另一个是很容易的。IP的主要作用是把输入数据打乱重排,以打乱原始输入数据的原有格式。因为使用了IP,所以必须使用IP-1,以确保加密算法的可逆性和对合性。

  DES的解密过程

  有加密的过程必然就会有其解密的过程。因为DES使用的是对合运算,所以DES的解密运算可以和加密运算用同一个算法,当然,两者之间还是有一些不同之处的,那就是它们使用子密钥时顺序不一样。

  DES解密的过程可以由以下的数学公式来描述:

                                                                                                      (1-14)

  将64位的密码作为明文输入进去,K16作为第一次的解密迭代子密钥来使用,K15作为第二次的解密迭代使用,...,一直到K1作为最后一次(即第十六次)的解密迭代子密码,然后输出的就是64位明文了。这个就是与加密使用共同运算方法但使用不同顺序子密钥的解密过程了。

  到了这里,DES的内容已经是全部都讲完了,本章主要讲了一些DES的基本概念和原理等基础知识以及DES的一些加密解密的过程。说实话,DES学习起来对于小编来说也有一些困难,但学习需要有毅力不是么?所以如果大家觉得看一遍不明白清楚的可以多看几遍,也欢迎大家来我们课课家教育平台学习更多的教程,里面的教程讲解会比小编整理的知识点更为详细,希望能对大家有所帮助,喜欢可以点个赞哟。

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程