实验题目
DES算法与差分攻击
实验目的
了解DES算法基本工作原理,体会并理解分组密码算法的混淆和扩散概念。了解Sbox工作原理及效果。了解DES的工作模式和填充方式。了解差分攻击
的基本原理。
实验原理与理论基础
DES算法简介
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。
DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。
密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
-
DES算法的主要流程如下图所示:
IP置换
IP置换目的是将输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。
表中的数字代表新数据中此位置的数据在原数据中的位置,即原数据块的第58位放到新数据的第1位,第50位放到第2位,……依此类推,第7位放到第64位。置换后的数据分为L0和R0两部分,L0为新数据的左32位,R0为新数据的右32位。
密钥置换
不考虑每个字节的第8位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。产生的56位密钥由下表生成(注意表中没有8,16,24,32,40,48,56和64这8位):
在DES的每一轮中,从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下:
1).将56位的密钥分成两部分,每部分28位。
2).根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:
移动后,从56位中选出48位。这个过程中,既置换了每位的顺序,又选择了子密钥,因此称为压缩置换。压缩置换规则如下表(注意表中没有9,18,22,25,35,38,43和54这8位):
置换方法同上
E扩展置换
- 扩展置置换目标是IP置换后获得的右半部分R0,将32位输入扩展为48位(分为4位×8组)输出。
- 扩展置换目的有两个:生成与密钥相同长度的数据以进行异或运算;提供更长的结果,在后续的替代运算中可以进行压缩。
-
扩展置换原理如下表:
表中的数字代表位,两列黄色数据是扩展的数据,可以看出,扩展的数据是从相邻两组分别取靠近的一位,4位变为6位。靠近32位的位为1,靠近1位的位为32。表中第二行的4取自上组中的末位,9取自下组中的首位。
扩展置换之后,右半部分数据R0变为48位,与密钥置换得到的轮密钥进行异或。
S盒代替
压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送人S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。
一个S盒就是一个4行16列的表,盒中的每一项都是一个4位的数。S盒的6个输入确定了其对应的输出在哪一行哪一列,输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据(<32)。
S盒代替时DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的,相比于其他步骤,提供了更好安全性
P盒置换
S盒代替运算的32位输出按照P盒进行置换。该置换把输入的每位映射到输出位,任何一位不能被映射两次,也不能被略去,映射规则如下表:
表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第16位放到新数据的第1位,第7位放到第2位,……依此类推,第25位放到第32位。
IP-1末置换
末置换是初始置换的逆过程,DES最后一轮后,左、右两半部分并未进行交换,而是两部分合并形成一个分组做为末置换的输入。末置换规则如下表:
置换方法同上
DES的工作模式和填充模式
实际应用中,DES是根据其加密算法所定义的明文分组的大小(64bits),将数据割成若干64bits的加密区块,再以加密区块为单位,分别进行加密处理。根据数据加密时每个加密区块间的关联方式,可以分为4种加密模式,包括ECB,CBC,CFB及OFB。
- 电码本模式(ECB)
- ECB模式是DES加密的基本工作模式。
- 在ECB模式下,每一个加密区块依次独立加密,产生独立的密文区块,每一加密区块的加密结果不受其他区块的影响。使用此种方式下,可以利用并行处理来加速加密解密运算,且在网络传输时任一区块有任何错误发生,也不会影响到其他区块传输的结果。这是该模式的优点。
- 该模式的缺点是容易暴露明文的数据模式。
- 密码分组链接模式(CBC)
- 在CBC模式下,第一个加密区块先与初始向量IV做异或运算,再进行加密。其他每个加密区块加密之前,必须与前一个加密区块的密文作一次异或运算,再进行加密。每一个区块的加密结果均会受到前面所有区块内容的影响,所以即使在明文中出现多次相同的明文,也会产生不同的密文。
- 密文内容若遭剪贴、替换,或在网络传输过程中发生错误,则其后续的密文将被破坏,无法顺利解密还原,这是这一模式的的优点,也是缺点。
- 在CBC模式下,加密作业无法利用并行处理来加速加密运算,但其解密运算可以利用并行处理来加速。
- 密文反馈方式(CFB)
在CFB模式下,可以将区块加密算法当作流密码加密器使用,流密码加密器可以按照实际上的需要,每次加密区块大小可以自订,每一个区块的明文与前一个区块加密后的密文做异或后成为密文。因此,每一个区块的加密结果受之前所有区块内容的影响,也会使得在明文中出现多次相同的明文均产生不同的密文。在此模式下,位了加密第一个区块,也必须选择一个初始向量,且此初始向量必须惟一,每次加密时必须不一样,也难以利用并行处理来加快加密作业 - 输出反馈模式(OFB)
OFB与CFB大致相同,都是每一个区块的明文与之前区块加密后的结果做异或后产生密文,不同的是之前区块加密后的结果为独立产生,每一个区块的加密结果不受之前所有密文区块的内容的影响,如果有区块在传输过程中遗失或发生错误,将不至于无法完全解密,在此模式下,为了加密第一个区块,必须设置一个初始向量,否则难以利用并行处理来加快加密作业。
DES差分攻击
DES算法其中主要起作用的算法有:矩阵置换、扩展、左移、异或、左右互换、s盒作用 。其中对攻击者来说最麻烦的要说s盒一步,破解des体系关键在s盒。
乍一看六位输入与四位输出貌似没什么关系。但事实上,对于同一个s盒具有相同输入异或的所有输入六比特组的输出四比特异或值有一定规律。
具体些说,对于输入异或相同的明文对B,B*仅有32组,而这32组输出异或却并不是均匀分布,而是仅分布在很少的几个四比特值中;也可以说具有相同输入异或且输出四比特异或也相同的六比特输入数量不多且分布不均匀。正是这种输入输出输出异或间的不均匀性可以被攻击者利用并破解密钥。
实验要求
- 编程实验DES算法
- 通过改变DES算法明文和密文内容观察加密后输出统计结果
- 实现生成指定差分的明文对,实现对特定差分输入的Sbox差分输出分布,观察 DES S-box 输入差分与密钥无关,输出差分与密钥相关特性。
- 实现 DES 各种工作模式和填充方式,实现使用DES算法对数据文件加解密(选作 P124)
- 实现简单的GUI界面
实验过程和结果测试
输入1,DES加密
输入2,改变明文位数观察密文改变位数
-
明文改变2位,密文平均改变位数为33.70
-
明文改变4位,密文平均改变位数为30.90
-
明文改变6位,密文平均改变位数为34.30
-
明文改变8位,密文平均改变位数为31.50
-
明文改变10位,密文平均改变位数为30.30
-
明文改变20位,密文平均改变位数为31.00
-
明文改变40位,密文平均改变位数为31.00
结果表格:
明文改变位数 | 密文改变位数 |
---|---|
2 | 33.70 |
4 | 30.90 |
6 | 34.30 |
8 | 31.50 |
10 | 30.3 |
20 | 31.00 |
40 | 31.00 |
平均数 | 31.8 |
输入3,改变密钥位数观察明文改变位数
-
改变密钥2位,密文改变33.2位
-
改变密钥4位,密文改变30.9位
-
改变密钥6位,密文改变33.4位
-
改变密钥10位,密文改变31.7位
-
改变密钥20位,密文改变33.3位
-
改变密钥40位,密文改变32.3位
7.改变密钥50位,密文改变32.3位
结果表格:
密钥改变位数 | 密文改变位数 |
---|---|
2 | 33.20 |
4 | 30.90 |
6 | 33.40 |
10 | 31.70 |
20 | 33.3 |
40 | 32.30 |
50 | 32.3 |
平均数 | 32.44 |