密码算法应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 DES加密算法的变型

1.4.1 多重DES加密算法

通过多次使用DES加密算法就可以获得更强的密码,密钥长度也可以成倍地增长,但其代价是速度会减慢。在多重DES加密算法中,以密钥长度为112比特的三重DES加密算法最为常见,其框图如图1.4.1所示。

图1.4.1 三重DES加密算法框图

1.4.2 子密钥独立的DES加密算法

在子密钥独立的DES加密算法中,每轮的子密钥都是独立的,不是由单个的56比特密钥生成的。因为16轮中的每轮都要求48比特的密钥,这就意味着这种变型的密钥长度为768比特,极大地增加了DES加密算法的实现难度。

比哈姆(Eli Biham)和沙米尔(Adi Shamir)证明了该变型仍可用261个选择明文来破译,并不需要强有力地攻击2768次,因此,改变密钥的生成方式并不能使DES加密算法变得更安全。

1.4.3 S盒可选的DES加密算法

S盒可选的DES加密算法是指将DES加密算法的改变集中在S盒上。在一些设计中,S盒的次序是随密钥变化的,也有一些设计者使S盒的内容是可变的。但比哈姆和沙米尔证明, DES加密算法的S盒的设计,甚至S盒自身的内容抗差分分析都是最优的。DES加密算法的8个S盒次序的改变(并不改变S盒的内容)都会使得DES加密算法变弱许多,甚至DES加密算法的一个S盒的内容稍做改变,也会导致DES内容易于破译。

目前,还没有人证明,就所知的攻击方法而言,会有更好的S盒。

1.4.4 S盒可变的DES加密算法

差分分析仅在分析者已知S盒结构的前提下才有效,一些设计者使S盒根据密钥进行变化,并使其保密,那么差分分析就不再适用了。

1.4.5 CRYPT(3)加密算法

CRYPT(3)加密算法是UNIX操作系统上DES的加密算法变型,主要用于对口令实施单向变换,也可用于加密,是一个S盒和E盒均与密钥相关的DES加密算法的变型。

1.4.6 广义的DES(GDES)加密算法

GDES加密算法是既为了提高DES加密算法的速度,又为了提高其强度而设计的,该算法将明文分组长度增加,非线性函数 f 则保持不变。GDES加密算法对不同长度的明文分组进行操作,将加密分组分成q个32比特的子分组,精确数目依赖于整个分组长度(在设计中分组长度是可变的,但在实现中却必须固定),通常令 q 等于明文分组长度除以32。GDES加密算法编制框图如图1.4.2所示。

图1.4.2 GDES加密算法编制框图

非线性函数f在每轮最右边的分组上计算一次,其结果同其他部分进行模2加,然后将模2加后的结果循环右移。GDES加密算法的轮数n是不变的,最后一轮稍有不同,使得加密和脱密过程仅在子密钥的次序上有所不同(如DES加密算法)。事实上,当q=2、n=16时, GDES加密算法就是DES加密算法。

比哈姆和沙米尔证明了,使用差分分析破译q=8、n=16的GDES加密算法仅需6个选择明文。如果使用不相关的子密钥,则仅需16个已知明文。q=8、n=22的GDES加密算法可以由48个选择明文破译;q=8、n=31的GDES加密算法仅要50万个选择明文就能破译;q=8、n=64的GDES加密算法需要249个已知明文方能破译,仍然比DES加密算法更弱。事实上,比DES加密算法快的任何GDES加密算法都不如DES加密算法安全。DES加密算法变型的差分分析如表1.4.1所示。

表1.4.1 DES加密算法变型的差分分析

1.4.7 DESX加密算法

DESX是RSA数据安全公司设计的DES加密算法的一种变型。自1986年以来,它就一直是MailSafe电子邮件安全程序的密码算法,同时它也是BSafe工具箱中的密码算法之一。DESX加密算法在加/脱密时仍然使用DES加密算法,只是在DES加密算法的输入和输出中添加了附加密钥。具体情形是,除了56比特的DES加密算法密钥,DESX加密算法还有一个64比特的附加密钥,在DES加密算法的第一轮之前,64比特的附加密钥同明文进行模2加,随后使用一个单向函数,以整个120比特的密钥作为输入进行计算后得到一个64比特的生成密钥,并在DES加密算法的最后一轮与密文进行模2加。这种方式的变型使DESX加密算法比DES加密算法有更强的抵抗穷尽搜索攻击能力,同时也改进了抗差分分析和线性分析的能力,它分别要求261个选择明文和260个已知明文。

1.4.8 Ladder-DES加密算法

Ladder-DES加密算法将DES加密算法作为每轮使用的非线性函数,其框图如图1.4.3所示。

图1.4.3 Ladder-DES加密算法框图