数据加密标准 DES
DES不安全主要原因:密钥空间太小
DES的特点:
- 分组长度:64位 (明文和密文 分组皆为64位)
- 密钥长度:56位(实际上是64位,8位用于奇偶校验)
- 轮数:16 16轮子密钥,每一个子密钥是48位
DES加密
加密的3个阶段:
- 初始置换:重排明文分组
- 16轮轮变换:Feistel结构
- 逆初始置换:前面有一个左右置换
初始置换:
- 64位明文分组M以位为一行,共8行(8*8置换表)
- IP:输入的第58位置换位输出的第一位,输入的第50位置换位输出的第二位,以此类推。
- 初始置换IP和逆初始置换IP^-1 是互逆的
- 输入的第1位经过IP置换输出为第40位,经过IP^-1 置换到第一位。
密钥编排:
- 密钥56位
- 经过置换选择1
- 左循环移位再进行置换选择2,产生48位每轮子密钥
- 迭代16轮
轮结构
- DES轮结构分为左右两半
- 左半部分和Feistel结构一样
- 右半部分产生每轮子密钥
- 轮函数F分为4个操作步骤:
- 扩展置换E:主要功能是扩散,32位扩展成48位
- 异或:与48位子密钥异或
- S盒代换:48位通过8个S盒产生32位的输出
- P盒置换:重新排列
扩展置换
- 扩展置换:轮输入的右半部分R为32位,扩展成48位
- 将32位输入分为8组,每组4位
- 从相邻两组的邻近位置各取1位形成扩展置换E,其中16个位各重复一次
与子密钥异或
- 扩散置换喏d'f的输出与48位子密钥进行异或
- 产生48位,进入S盒代换
S盒代换
- 代换盒 S盒,S盒是DES安全的关键,提供混淆性能
- 共8个S盒,每个S盒的输入6位,输出4位
- S盒是非线性的,可以抵抗差分密码分析
- S盒是该密码体制的唯一非线性组件
S盒的设计
- 每个S盒给出了4个代换,每一行定义一个可逆代换。6位输入,取第1位和第6位形成一个2位二进 制数,即行号,中间4位用来选择列号
- 行列交叉位置的十进制数就是S盒的输出
例如:输入为011001 输出为 1001 ,即为十进制的9
S盒代换
- 每个S盒是4行16列矩阵,每行定义一个可逆代换
- DES的S盒设计主要是为了确保非线性关系,并不需要可逆
- DES算法是基于Feistel密码结构的,其加密盒解密过程是相同的,只是轮密钥的使用顺序相反而已,所以无需加密过程可逆。
P盒置换
- S盒操作胡为2位(8*4),经过P盒重新置换重新排列
- P盒式可逆置换
最后一步
- 将右半边32位作为左半边,而左半边32位与Pbox输出的32位进行异或,并将运算结果作为右半边。
- 这个过程重复16轮,每轮采用不同子密钥
- 最后左右互换,经过逆初始变换IP^-1 ,产生64位密文分组。
DES密钥的生成
- 56位密钥先经过一个置换运算PC1
- 然后将置换后的56位分为28位左右两半C0,D0
- 循环生成16轮子密钥
- 在第i轮对Ci-1和Di-1分别进行左循环移位。在1,2,9,16轮左移一位,其他轮左移两位。
- 移动总数为28位,即 C16=C0 D16=D0,刚好左移28位回到初态。
- 移位后的结果作为求下一轮子密钥的输入,同时也作为置换选择PC2的输入,PC2是压缩置换从56位中选48位
- 通过PC2产生的48位的Ki,即为第i轮的子密钥,作为函数F(Ri-1,Ki)的输入。
密钥
- DES是一种Feistel结构,DES的解密和加密算法使用同一算法,但子密钥使用的顺序相反。
- 经典加密法中,密钥基本不变,但在分组加密法中,密钥随明文分组每轮之花不同,这就允许分组加密的每轮使用不同的子密钥来执行操作。
解密
解密是加密的逆过程,算法相同,但子密钥使用的次序相反。
DES的安全性问题
- 雪崩效应:明文或密钥的某一位发生便话会导致密文多问产生变化。
- DES能够实现较好的混淆
- DES存在取反特性
- DES存在弱密钥和半弱密钥
弱密钥:存在k,使得EK (EK (m)) = m,
DES有4个弱密钥 0101010101010101, 1F1F1F1F0E0E0E0E, E0E0E0E0F1F1F1F1, FEFEFEFEFEFEFEFE
半弱密钥:存在K1,K2,使得EK1 (EK2 (m)) = m
有12个半弱密钥, 形成6对, K1,K2如下: I 01FE01FE01FE01FE,FE01FE01FE01FE01 1FE01FE00EF10EF1 ,E01FE01FF10EF10E 01E001E001F101F1 ,E001E001F101F101 1FFE1FFE0EFE0EFE ,FE1FFE1FFE0EFE0E 011F011F010E010E ,1F011F010E010E01 E0FEE0FEF1FEF1FE , FEE0FEE0FEF1FEF1
这里每字节的最低位用作奇偶校验位
- DES的弱密钥和半弱密钥,在多重DES加密中,第二次加密可能使第一次加密负元
- 弱密钥与半弱密钥使得原本多轮迭代的复杂结构简单化和容易分析
- DES迭代8论以后,就可认为输出和输入不相关。
二重 2DES
加密:C = EK2 (EK1 (P))
解密:P = DK1 (DK2(C))
Caesar密码构成一个群,用Caesar加密一个消息,先用密钥加密,再用密钥5加密,等同于用密钥8加密,所以对于Ceasar密码,双重加密并不增加安全性。那DES呢?
- DES不是一个群,所以二重加密不等价与用一个单一的密钥加密明文
- DES二重加密增加安全性,但是增加不多
- DES的安全行依赖于较大的密钥空间
- DES的密钥长度使5位,所以密钥空间是 2的56次方
- 2DES的密钥空间是2的57次方
- 2DE容易被中途相遇攻击破解
中途相遇攻击
中途相遇攻击需要已知一些明文/密文对。
2DES的密钥空间是2的57次方。
3DES
抵抗中图相遇攻击的一种实用方法是采用3DES
- 3DES 有168位密钥,3DES可以用2个或3个密钥
- 方法:仅使用两个密钥做3次DES
- 加密:C = EK1 (DK2 (EK1 [P]))
- 解密: P = DK1 (DK2 (DK1 [C]))
- 当K1=K2时,3DES变成单密钥的DES
3DES使密钥穷搜攻击的复杂度从O(2^56)增至O(2^112),并且 采用一定技巧编程,3DES的加密时间仅为DES的2倍
复习整理,如侵则删
版权归原作者 qq_47632786 所有, 如有侵权,请联系我们删除。