Feistal框架是DES的主体,DES是在其基础上搞出来的具体应用。
关于Feistal框架部分不再赘述,了解的可跳过,不了解的跳转↓做好预习
https://blog.csdn.net/weixin_43289702/article/details/108913996
本文包括:DES结构,轮函数的计算,子密钥产生,和它们的原理。
.
.
一、DES结构
DES特点
- 不求可逆
- 非线性
- 扩散性
- 混乱性
- 雪崩
- 位独立
不墨迹了,直接看F和密钥的细节。
.
.
.
二、轮函数F
结构如图
具体步骤
1、64位的明文分组,拆成32位的左右两部分。Li=Ri-1不做变动;Ri-1进入轮函数F,准备经过运算后生成Ri。
2、E-box扩展:从32位扩展至48位。填充方法如图,将原文每4个位一行排列。比如第二行5 6 7 8,那么在5前面填充第4位,在8后面填充第9位。
3、已经扩充到48位,下一步就拿它们跟48位的密钥XOR(下面会说48位的密钥怎么来的)。
4、S-box:把48位长度的数据变回32位。一个S盒负责将6位数据变成4位,所以48/6=8,我们一共需要8个S盒。
S盒是安全的关键,唯一的非线性部分。
- 8个S盒的工作原理是一样的,这里以S2盒为例:第7位和第12位作为Outer bits输入,第8位—第11位作为middle 4 bits of input输入,最终产生4位数据,即是输出数据的第5位—第8位。
- 那么 S盒是怎么把6位数据变成4位的呢?很简单,查表。下图是S5盒的表
【补充】每个S盒的表格,都是固定的,并非使用时随机生成,或开发人员随便填写。细心对比可以发现,输入中任1比特的变化,都会最少引起输出中2比特的变化。
(其实这是当年美国IBM公司的大佬精心设计的,目的为了提高扩散性和混乱性。不过美国并未公布具体的设计原理,只告诉了大家成果)
对其余S盒有兴趣的可以去查 百度百科词条_S盒。
5、P-box:再将32比特的数据置换,此处是为了再次加强扩散性。
P盒的特点:
- 各输出块的4个比特必须来自不同输入块
- 各输入块的4个比特必须分配到不同的输出块
- 第n个输出块中不能包含第n个输入块的数据
6、输出,一次迭代中的轮函数至此结束。
.
.
.
.
三、子密钥
密钥表面上有64比特,实际只有56比特,后面8比特是校验和。如图
1、初试密钥经过第一次置换,拆成C、D左右两部分(各自28比特)。
2、C、D分别独立的进行第一次循环左移。
3、将2的结果组合(56比特),进行第二次置换(48比特)
4、输出K1(48比特)
5、继续进行2,3步骤
6、输出K2
… …
7、输出K16
C和D每次循环左移 要移多少位呢?还是查表 ╮(╯▽╰)╭
.
.
后话
差分分析是第一个公开的能对 DES 在小于 255复杂度情况下攻击成功的方法。它表明,若有 247个选择明文,用差分分析就可以在 247次加密运算内成功攻击 DES。尽
尽管差分分析是一个强有力的密码攻击方法,但它对 DES 并不十分奏效。
另一个密码分析方法是线性分析,这种方法只需知道 243 个明文就可以找出 DES 的密钥,而用差分分析则需知道 247 个选择明文。尽管获取明文比获取选择明文容易得多,但是这只是一个小的改进,线性密码分析对于攻击 DES 还是不可行的。
.
.
全文结束,加密过程的重中之重是S盒。
最后附上DES完整流程图。
.
.
.
.
部分图片素材截取自网上信息安全课程的PPT,感谢任教老师,自己做了适当调整,如有错误和不足,欢迎指出。
.
.
考研阶段,边学边写边复习,编辑器用的不熟
.
.
.
.
.