DES类密码体制的差分分析

一.DES的简介

      Data Encryption Standard(DES),虽然已被淘汰使用,但是对于研究密码攻击人员,学习差分分析很有必要。

      首先简单介绍一下DES工作原理,是分组密码的一种,明文是64位,每一轮的子密钥是56位。16轮Feistel结构。下图是一个3轮的例子。


1.首先,64位明文经过初始置换(Initial Permutation,IP)函数,对明文进行初始置换。初始置换只进行一次,在第一轮之前进行,根据初始置换表进行(在我看来就是打乱初始明文的顺序)

2.初始置换之后,64位明文被分成左右两部分明文,称左明文L0,右明文R0.

3.每一轮DES都包括以下:

(1)子密钥变换,一开始密钥是有64位,分别放弃第8i(i=1,...,8)位得到56位密钥,56位密钥经过压缩置换表选择其中的48位。

(2)扩展置换,扩展置换是将右明文R0从32位扩展到48位。具体过程大概是把右明文R0分为8组,每一组4位,然后每个4位通过重复第1位和第4位扩展为6位,经过扩展置换之后右明文变为了48位。

(3)S盒置换,如下图所示。经过扩展之后的48位右明文R0和48位子密钥进行异或反应。异或之后的48位分成8组,每组6位,分别进入Si(i=1,...,8)盒,每一个S盒通过查表把6位转换成4位,最后形成32位输出。

(5)异或和交换。最初的左明文L0和P盒置换之后输出的结果进行异或运算,形成下一轮的右明文。最初的右明文是下一轮的左明文。如下图所示(以三轮为例)

4.经过16轮之后,最后,把左明文和右明文重新连接起来,对组成的块进行最终置换(Final Permutation,FP),最终置换只进行一次,最终置换之后,输出64位密文。

二.差分分析简介

1.差分分析的原理

  差分分析是一种选择明文攻击,通过分析明文对中的差异对结果密文的差分的影响,这些差分是用来给可能的密钥进行分配概率,确定最有可能的密钥。差分在这里指的是明文对的异或。

2.3轮DES的差分分析

  我们以3轮DES为例,选择明文异或,L0’为任意值,R0'=0.找出在第三轮中进入S1盒的6个子密钥比特,以下图为例,设L是初始的左明文,R是初始右明文,l是三轮之后的输出密文。a,b,c分别代表第一轮第二轮第三轮的输入异或,A,B,C分别代表第一轮,第二轮,第三轮的输出异或。根据DES基本原理,我们可以得出结论 l=L(+)A(+)C(这里不能添加异或符号,用(+)代替)。针对本例选择的明文,R0’=0,所以a=0,自然A=0.所以l=L(+)C,即C=l(+)L.

        假设k是输入S1盒的可能对数,再回顾一下F函数中关于S盒的工作流程,首先输入6比特的值(Se)和6位密钥(Sk)进行异或,异或之后进入S盒成为进入S盒的实际值(Si表示),得出Sk=Se(+)Si.

      进一步举例说明,如果在DES第三轮里面进入S1的密文比特分别是Se=1,Se*=35,且输出XOR是D,则Sk的值一定会在下表中出现。(我来解释一下为什么哦,首先输入对一个是1,一个是35,那他们的输入异或是34,输出异或是D,我们可以查S1XOR分布表,共有8对,实际不算顺序应该只有4对,跟师姐请教之后说应该是穷举得出的。如下表,然后根据Sk=Se(+)Si,每一行都产生两个密钥,分别是Se(+)Si,Se*(+)Si)

3.n轮特征

     3.1一轮特征

     下面一轮特征概率是1(对任何L'),这是概率大于1/4的唯一一圈特征。该特征在破译DES型密码体质的所有特征中具有特殊的重要性。(这个很好理解,输入异或是0,那么这两个输入值相同,输出的值一定相同,则输出异或一定是0)

下面这一轮特征的概率是14/64.

  a'=0110,0000,0000,0000,0000,0000,0000,0000    

a’经过扩展之后是001100,000000,000000,000000,000000,000000,000000,000000  (C,0,0,0,0,0,0,0)x

   A'=0000,0000,1000,0000,1000,0010,0000,0000

P置换之后是(E0000000)x

接下来查S1盒的XOR分布表,可以发现Cx——>Ex,概率p=14/64,其余都是0x——>0x,p=1,所以整个这一轮的特征概率是14/64.

2.三轮特征

这种情况是可能出现的,当X=19600000时,概率大约是1/234,用来对9轮及以上的DES进行攻击。

3.六轮DES的破译

    六轮DES9比三轮DES更加复杂,采用两个p=1/16的统计特征,选择最常计算的密码值。在这两个特征中,每一个特征都能找到K6的30个密钥比特,加上公用的3个S盒,所以由两个特征发现的密钥比特为42,其他的14个密钥比特可以通过穷举得出。

你可能感兴趣的:(DES类密码体制的差分分析)