一、从文字密码到比特序列密码
1、前置知识
当今密码都试建立在计算机的基础之上的,计算机的操作对象并不是文字,而是由0和1排列而成的比特序列。无论是文字、图像、声音、视频还是程序,在计算机中都是用比特来进行表示的。
2、编码
将现实世界中的东西映射为比特序列的操作称为编码。例如将midnight进行ASCII编码:
3、XOR(异或)
XOR的运算规则如下:
比特序列的XOR运算如下:
从上图可以看出明文A用密钥B进行加密,得到了密文A+B,将密文A+B用B进行异或运算后得到明文A。实际上选择一个合适的B,使用XOR就能够得到一个高强度的密码。
二、一次性密码本
1、什么是一次性密码本
只要通过暴力破解对密钥空间进行遍历,无论什么密文都将会被破译。然而一次性密码本却是一个例外。
2、一次性密码本的加密
将明文与一串随机的比特序列进行XOR运算。
3、为什么不能被破译
因为随机性太大,即使通过暴力破解法得到,也无法判断他是否是正确的明文。
4、一次性密码本为什么没有被使用
密钥的配送问题。
如果能够很好的保存密钥,那也能够很好的保存明文。
密钥的可重用性过低。
密钥的生成,密钥的生成必须是真正的随机数。
密钥的同步,当明文变得很长的时候,密钥也会随之变的很长。
5、一次性密码本孕育了流密码的产生
三、DES
1、什么是DES
DES是1977美国联邦信息处理标准中所采用的的一种对称密码。随着计算机的进步,DES已经能够被进行暴力破解。
2、DES加解密
DES是一种将64比特的明文加密成64比特的密文的对称密码算法。他的密钥长度为56比特,尽管从规格上来说,DES的密钥长度应该为64比特,但由于每隔7个比特会设置一个用于错误检验的比特,因此其密钥长度为56比特。
3、分组密码
以分组为单位进行处理的密码算法称为分组密码,DES是以64比特的明文(比特序列)为单位进行加密的。
4、模式
DES每次只能加密64比特的数据,如果需要加密的数据比较长,就需要对DES加密进行迭代,而迭代的具体方式称为模式。
5、DES的结构
DES的基本结构是由Horst Feistel设计的,因此也称为Feistel网络。在Feistel网络中加密的各个步骤称为轮,DES是一种16轮循环的Feistel网络。
一轮的计算步骤如下:
只要使用Feistel,就能够保证一定可以解密。加密和解密可以用完全相同的结构来进行实现。
6、差分分析与线性分析(选择明文攻击)
四、3DES
1、什么是3DES
3DES 是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA。
2、3DES 的加密机制
3DES的密钥长度为56*3=168 比特。从上图可以看出3DES是加密->解密->加密的过程。其目的是为了兼容普通的DES,3DES具有向下兼容性。
2、3DES的现状
3DES的处理速度较慢,除了特别重视向下兼容性的情况以外,很少被用于新的用途。
五、AES
1、什么是AES
AES(Advanced Encryption Standard)是取代其前任标准(DES)而成为新标准的一种对称密码算法。
2、什么是Rijndael
Rijndael是由比利时密码科学家设计的分组密码算法,在2000年被选选为新一代的标准密码算法(AES)。
Rijndael的密钥长度可以分为32比特为单位在128比特到256比特的范围内。不过在AES的规格中,分组长度固定为128比特,密钥长度只有128,192和256比特三种。