DES算法和原理

    科技2024-03-09  72

    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比特,每7比特是1bit校验和。如图

    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,感谢任教老师,自己做了适当调整,如有错误和不足,欢迎指出。

    . . 考研阶段,边学边写边复习,编辑器用的不熟 . . . . .

    转载请注明原文地址:https://blackberry.8miu.com/read-29678.html
    最新回复(0)