本章学习内容
- 比特序列运算
- XOR运算
- 一次性密码本
- DES
- 三重DES
- AES
- 其他一些密码算法
从文字密码到比特序列密码
计算机中的任何东西都是通过01进行表示的(比特序列)
将现实世界中的东西映射为比特序列的操作称为编码
XOR
XOR的全称是exclusive or,在中文中叫做异或。
异或加密操作两次的话想当与不进行变化,所以同一个数字进行XOR运算的结果一定为0。
比特序列进行异或运算之后便可进行简单的加密,解密时只需要用同样的方式数字进行异或解密即可。
如果能够产生无法预测的比特序列就可以提高安全性,不可预测的比特序列就称为随机数。
一次性密码本——绝对不会被破译的密码
和明文的编码的比特序列等长获得一个随机比特序列,通过使用这个比特序列进行XOR运算,就可以得到新的序列,也就是密文。
需要解密的话就必须得到进行加密的比特序列。
一次性密码本是无法破解的
因为即使我们得到了正确的明文,我们无法确定这个明文是否就是正确的
所以理论上是绝对无法破解的。
一次性密码本为什么没有被使用
密钥的配送:
如果说我们有方法进行密码本的配送,那和如果使用这种方式配送明文就可以了。本身就是矛盾的。
密钥的保存:
如果能安全的保存密钥,那就也有办法保存明文本身了,本身也是矛盾的。
密钥的重用:
一次性密码本不能重用,因为一旦被破解,以前的密文也都会被破解
密钥的同步:
密钥过长,在通信过程中不允许有任何错位,否则错位后的所有信息都无法解密
密钥的生成:
一次性密码本需要生成大量的随机数。
综上所述,一次性密码本是一个几乎没有任何实用性的密码。
DES
什么是DES
DES全称Data Encryption Standard,是一种对称密码。
DES以64比特的明文为一个单位进行加密,每64比特为一个分组。如果明文比较长,则需要分好几组进行迭代,迭代的方式称为模式。第四章会进行讲解 Chapter4 分组密码的模式
DES的结构
DES结构为Feistel网络或者Feistel密码。
Feistel网络中,加密的哥哥步骤称为轮,整个加密过程就是进行若干次轮的循环。
一轮的步骤如下:
- 输入的数据分成左右两部分
- 将输入的右侧直接发送到输出的右侧
- 将输入的右侧发送到轮函数
- 轮函数根据右侧数据和子秘钥计算出一串看上去随机的比特序列
- 上一步得到的比特序列与左侧数据激进型XOR计算,作为加密后的左侧
由于上一轮的右侧没有进行加密所以我们需要用不同的子秘钥对一轮的处理重复若干次。
然后对左右都进行处理。
下面是解密的流程:
加密和解密可以使用完全相同的结构来实现。加密时使用任何轮函数都可以正确解密。
差分分析与线性分析
差分分析是一种针对分组密码的分析方法,改变一部分明文并且分析密文如何随之改变来分析改变中产生的偏差。
线性分析则是将明文和密文中一些对应的比特XOR并计算其结果为0的概率。如果密文具备足够的随机性,则任选明文和密文进行XOR结果为0的概率为1/2。如果能找到大幅偏离1/2的部分则可以获取一些秘钥相关的信息。
这两个前提是密码破译者可以选择任意明文并且得到密文。
这种攻击方式叫做选择明文攻击。
三重DES
实际上就是把DES跑三遍
为了保持和DES的兼容性,我们也可以用以下方式。
这样只用一个秘钥的情况也可以和同时使用三个秘钥的情况兼容。
秘钥1和秘钥3使用相同的秘钥,而秘钥2不同则称为DES-EDE2
如果密钥1、密钥2、密钥3都不同,则称为,DES-EDE3。
三重DES的解密
三重DES的现状
目前暂时允许使用,但是由于处理速度不高,所以除了用于向下兼容,其他很少使用了。
AES
什么是AES
AES(Advance Encryption Standard),通过选拔的方式进行候选。最终使用了Rigndael的对称密码算法。
AES的选拔过程
略。
像通过竞争来实现标准化的方式是密码算法选拔的正确方式。由世界上最高水平的密码学家共同尝试破译,如果没找到弱点,那就是证明这是一个好的密码算法。
AES最终候选算法的确定以及AES的最终确定
Rijndael
什么是Rijndael
略
Rijndael的加密和解密
Rijndael也是多轮组成,每一轮分为SubBytes、ShiftRows、MixColumns、AddRoundKey,使用了SPN结构。
SubBytes
Rijndael的输入分组为128比特,也就是16字节。每个字节的值0~255为索引,从一张拥有256值的替换表进行对应值的处理。其实就是一个大的替换密码做法。
ShiftRows
以4字节为单位的行,按照一定规则进行左平移,每一行平移的字节数是不同的。
MixColumn处理
对4字节的值进行比特运算,变为另一个4字节值\
AddRoundKey
最后对MixColumns的输出进行XOR。
以上就是一轮中完整的处理过程了。解密的时候就完全进行逆操作即可。
Rijndael的破译
Rijndael背后有严谨的数学结构,为新的攻击方式提供了可能,但是目前还未出现。
应该使用哪种对称密码呢
- DES不应该被使用
- 三重DES仅用于兼容
- AES最终候选的算法,可以作为AES算法的备份
- 决不能使用任何的自制密码算法