1.概念
_1.对称密码与公钥密码
对称密码是指在加密和解密时使用同一密钥的方式。
公钥密码则是指在加密和解密时使用不同密钥的方式。因此,公钥密码又称为非对称密码。
_2.混合密码系统
对称密码和公钥密码结合起来的密码方式
_3.散列值
散列值就是用单向散列函数计算出来的数值。单向散列函数所保证是完整性。完整性指的是“数据是正牌的而不是伪造的”这一性质。使用单向散列函数,就可以检测出数据是否被篡改过。
_4.消息认证码
确认消息是否来自所期望的通信对象,可以使用消息认证码。使用消息认证码,不但能够确认消息是否被篡改,而且能够确认消息是否来自所期待的通信对象。也就是说,消息认证码不仅能够保证完整性,还能够提供认证机制。
_5.数字签名
发送者对消息加上数字签名后再发送,接收者可以对该数字签名进行验证。通过这样的方式,不但可以检测出篡改和伪装,还能够防止事后否认。数字签名是一种能够确保完整性、提供认证并防止否认的密码技术。
_6.伪随机数生成器
一种能够模拟产生随机数列的算法。随机数确实承担着密钥生成的重要职责。
2.对称密码
_1.DES
_1.1.加密和解密
DES 是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。尽管从规格上来说,DES 的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。
DES 是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为分组。一般来说,以分组为单位进行处理的密码算法称为分组密码,DES就是分组密码的一种。
DES 每次只能加密64比特的数据,如果要加密的明文比较长,就需要对 DES加密进行迭代(反复),而迭代的具体方式就称为模式(mode)。
_1.2.加密过程
对每个分组,执行多轮操作,一轮流程:
总结一下, 一轮的具体计算步骤如下。
(1)将输入的数据等分为左右两部分。
(2)将输入的右侧直接发送到输出的右侧。
(3)将输入的右侧发送到轮函数。
(4)轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列。
(5)将上一步得到的比特序列与左侧数据进行 xoR 运算,并将结果作为加密后的左侧。
下一轮处理前,左右部分对调。每一轮产生一个新的子密钥。
_1.3.差分分析与线性分析
差分分析是一种针对分组密码的分析方法,其思路是 “改变一部分明文并分析密文如何随之改变”。通过分析密文改变中所产生的偏差,可以获得破译密码的线索。
线性分析的密码分析方法,其思路是将明文和密文的一些对应比特进行xOR 并计算其结果为零的概率。如果能够找到大幅偏离1/2的部分,则可以借此获得一些与密钥有关的信息。
_2.三重 DES
DES 重复3次
当三重DES 中所有的密钥都相同时,三重DES也就等同于普通的 DES了。以前用DES 加密的密文,就可以通过这种方式用三重 DES 来进行解密。也就是说,三重DES对DES具备向下兼容性。DES的加密和解密过程只是改变了子密钥的顺序,而实际进行的处理是相同的。
_3.AES
分组长度和密钥长度可以分别以32比特为单位在128 比特到256比特的范围内进行选择。不过在AES的规格中,分组长度固定为128比特,密钥长度只有128、192和256比特三种。
_3.1.加密和解密
多轮,每一轮分为SubBytes 、ShiftRows、MixColumns和AddRoundKey共4个步骤。