从DES走到AES(现代密码的传奇之路)

目录

前言铺垫:

DES:

密钥如何生成:

密码分组;

伽罗瓦域:

AES:

接下来我们进入算法核心——“轮函数”:

接下来,密钥的生成:

结语:


前言铺垫:

计算机中,所有的信息数据都用二进制来保存

XOR(异或)是天然的加密算法:我们假设明文A经过密钥(XOR运算)B得到密文C。且我们只能看到密文C。当密文C为1时,你分不清是A是1还是B是1。反之,当密文C为0时,你分不清AB是全为0还是全为1。所以很明显,异或运算有着50%的随机,完美的随机。

受限于软硬件的处理性能,计算机处理数据时将大数据分块,分成一个个64bit的数据块,对每一块进行XOR加密,再重组,这样,加密所需要点密钥的长度就和分组的长度一样(64bit)。可惜的是这样依然可以通过频率破解来破译出明文,所以我们还需要另一种牢靠的算法让密文的数字更难以预料。搞信息论的香农在这篇开启了现代密码学大门的论文里《Communication Theory of Secrecy Systems*》将这样模糊密钥和密文关系的加密算法称之为:”混淆(confusion)“混淆很常见于古典密码(单表替换,维吉尼亚,Enigma),但这种混淆之后的关系还是有迹可循,而0和1却为混淆带来了更多的可能性

我们以加密100101为例:

看起来毫无规律,但还不够,对于分段存储于硬盘不同区域的信息,如果两个明文差异微小,在密文上的反应,也只是区域里有限位数的不同,这些差异就是破译者的福音。想要消解规律也很简单,打乱顺序就可以了。但这并没有解决明文自身的统计特性,所以,我们要让一个明文的变化影响多个密文,也就是“扩散(diffusion)”

输入里有一半的数据被置换了两次,这样以来,修改输入中的一个数字,就有50%可能改变输出中的两个数字

如果说混淆掩盖了密钥的踪迹,那扩散就是进一步扰乱明文的规律。

XOR,扩散,混淆,于是在1977年,一种以此为基础的加密算法横空出世——DES(Data Encryption Standard)。

这是DES的原理图

DES:

其中算法最核心的部分“轮函数”就是你所熟知的扩散加混淆。

我们把一个32bit的明文扩散成48bit,我们称这个扩散的表盒为“E盒”。

接下来,密钥进场,与之异或,异或后的结果被分为8组,一组6bit,每组数据分别游经自己的“S盒”形成8个4bit的结果 ,最终进行合并,正好又恢复了32bit。还没完,我们将结果再进行一次扩散,这次的表盒称之为“P盒”,注意此次扩散后依然为32bit,此时的结果就是最终的结果。

以上就是DES大名鼎鼎的“轮函数”,但轮函数只加密了一半的明文,因为一开始就被分为两组,各32bit,R0经过了复杂的轮函数之后在与L0进行异或,生成R1,L1什么也不用做,直接由R0得来(未加密前),再将L1和R1交换位置,两者拼接,就是密文,这就是著名的“Feistel加密结构”

为什么要分成两组?为什么L1不需要计算直接继承R0?为什么最后还要进行交换?

一切的一切都是为了——解密,解密就是将密文再加密一遍,其核心就是异或

那么这样的一次加密安全吗?对于心思缜密的密码学家来说,肯定不够!DES采用了16轮加密,每一轮都让密码的复杂度指数级上涨,每一轮都在放大明文和密文的差异。最后的最后,就是开头和结尾增加一次移位,也称为置换,这就是全部的“DES”

现在的密码大多都超出了普通人理解的极限,DES只是一个开始,却让我们思考如何让它呈现的时候,费劲了心力!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值