西安工程技术(技师)学院 郭学功
DES加密是典型的按分组方式工作的密码,其基本思想是将二进制序列的明文分成每64比特一组用64比特的密钥对其进行16轮代换和换位加密,最后形成密文。
(1)密钥有效长度是56位(第8,16,?,64位为校验位),分组明文长度为64位,而且明文、密文与密钥存在互补关系。
(2)仅用16次循环迭代,使得相同明文会产生相同密文。
(3)存在着很好的并行结构:产生内部密钥的左移次数存在着准对称性(即内部密钥生成过程存在并行性)。DES属于传统的Feistel网络结构,在DES的基本单元中能够实施并行操作。
(4)DES有16轮加密,如果将第i轮的P置换移至下一轮后会与下一轮的E扩展操作进行合并,简化算法的基本操作。
(5)可以通过S盒与P置换合并的方法节省P置换的基本操作时间。
数据加密标准过程主要包括三部分:一个是密钥产生部分;一个是换位操作,即初始置换部分和末置换部分;另一个是乘积交换部分。
解密运算与加密运算一样,只是所取子密钥的顺序不同。加密时候的顺序是K1→K2→Ki→K16,解密时的顺序则为K16→K15→Ki→K1。
通过对DES加、解密过程分析,从技术上讲,DES存在的缺陷主要集中在三个方面:
(1)密钥较短作为分组密码,DES的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个区组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。密钥仅有56位二进制未免太短,各次迭代中使用的密钥K(i)是递推产生的,这种相关性必然降低了密码体制的安全性。如果密钥的长度再长一些,显然会更加安全。因此,有人认为:在现有的技术条件下用穷举搜索法来寻找正确密钥已趋于可行,因此,若要安全保护10年以上的数据最好不用DES算法。
(2)DES存在一些弱密钥和半弱密钥。由它们所产生的16个子密钥是有相重的。弱密钥和半弱密钥的存在无疑是DES的一个不足。
(3)除去S盒,DES里的所有计算全是线性的,而且S盒的设计对密码算法的安全性至关重要。由于DES算法采用美国国家安全局精心设计的8个S-盒和IP-置换,而实现迭代函数Si所用的S-盒的设计原理尚未公开,其中可能留有隐患。更有人担心DES算法中有“陷门”,知道秘密的人可以很容易地进行密文解密。
根据目前DES算法的使用情况看,采用DES算法仍然具有极高的安全性。
基于DES算法上的缺陷,各国信息安全专家都在研究,在基本不改变DES算法加密强度条件下提出了几十种增强DES安全性的方法,经过研究比对,常用的有以下7种,具有可行性:
为了增加密钥的长度,可采用多重加密技术。将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。对DES,专家的共识是使用三重加密DES,可使加密密钥长度扩展到128位(112位有效)或192位(168位有效)。用三把不同密钥对数据连续加密三次,构成所谓Tripe-DES。它等价于把DES的钥匙长度增加到112位。钥匙长度每增加一位,钥匙总数就会翻一番,能有效地防止对密钥的穷尽搜索。当然,加密、解密的运算量也会是DES的3倍。以128位的密钥为例,其基本原理是将128位的密钥分为64位的两组(K1,K2):
<1>用密钥K1进行DES加密。
<2>用K2对步骤<1>的结果进行DES解密。
<3>用步骤<2>的结果使用密钥K1进行DES加密。
如此对明文数据进行三次普通的DES加解密操作,从而提高了加密强度。据称,目前尚无人找到针对此方案的攻击方法。
通过优化S-盒的设计,使S-盒的次序随密钥而变化或使S-盒的内容本身是可变的,就可以抵抗破译时差分密码分析,以达到进一步增强DES算法加密强度的目的。
在DES算法中S-box是核心。其设计准则是:
<1>没有一个S-box的输出位是输入位的线性函数。
<2>如果将输入的两端固定,中间4位变化,产生的输出只能得到一次。
<3>如果S-box的两个输入之间有一位的差异,则输出中至少两位不同。
这种改进是每一轮迭代都使用一个不同的子密钥,而不是由一个56位二进制的密钥产生。由于16轮迭代的每一轮使用一个48位二进制的密钥,所以这种变形的DES密钥长度是768位。这一方法可以大大地增加穷举破译难度,相应增强了DES的加密强度,
xDESi方案利用DES构造了一族分组密码,加大了数据分组和密钥长度。当i=0时,就是DES;
当i>0时,xDESi:GF(2)56i(2i+1)×GF(2)128i→GF(2)128i,即为采用密钥长度为56×i×(2i+1)位、组长为128×i位的分组密码;
当i=1时,它将分组长度加倍,成为密钥长度增至3倍的三轮方案,它比一般三重加密DES快;
当i≥3时,由于实现复杂而不实用。
DES算法实现时最关键的是初始置换表IP、末变换表IP-1及S盒的设计,但出于安全的需要,分组密码DES的若干换位表都是直接引出,使使用者很难理解,更无法找到其换位规则,下面就通过对它的分析力图找到DES算法的换位规则和提高其运算效率的实现方法。
IP变换表分析及实现方法的改进
通过对表1分析可以看出,先输入64比特的一组明文M(64),编号次序为0,1,2,3,…,63,把M(64)的第2,4,6,8,1,3,5,7列变成第1,2,3,4,5,6,7,8行后再首尾翻转180°就得到明文M(64)的初始换位表IP(64)。IP-1换位表是将64比特的字符串R16L16的第1,2,3,4,5,6,7,8行变成2,4,6,8,1,3,5,7列后再首尾翻转180°得到的。找到这个规律有助于程序实现的改进并能够提高计算速度。软件设计上,可以用一个表实现两个表的操作,减少程序的大小;也可以直接用算式代替IP及IP-1变换表,由计算代替查表,可以大大提高计算的速度。
在进行S盒运算时,设6位输入为A=a1,a2,a3,a4,a5,a6,记h=a1a6,k=a2a3a4a5,则在Si(i=1,2,...,8)表中第h行,k列所对应的值即为输出值。由于a1a2a3a4a5a6=a1a6*16+a2a3a4a5,所以在具体软件实现时,可以将S盒的二维表化为一维表来操作,将在4行,16列的一个二维表中查找对应的值Si(a1a6,a2a3a4a5)变成逐行接续的一维表,直接查找一维表中a1a2a3a4a5a6所对应的值,这样可以大大提高程序运行速度。进一步将E表第6列变到第2列,PC-2表第6列变到第2列,在查找Si(i=1,2,...,8)表时,只须去查找a1a6行,a2a3a4a5列所对应的值,变成一维表后,直接查找表中a1a2a3a4a5a6所对应的值即可。
通过以上改进,减少了DES算法设计上的难度,同时提高了算法的执行效率。
[1]陈运.信息加密技术[M].电子科技大学出版社,1996.
[2]胡予濮,张玉清,肖国镇.对称密码学[M].北京:机械工业出版社,2002,7.
[3]卢铁成.信息加密技术[M].四川科学技术出版社,1986.
[4]朱文余,孙琦.计算机密码应用基础[M].北京:科学出版社,2000,8.