密码学技术
参考书籍:《图解密码技术》
分组密码:
在之前讨论的 DES、AES 都属于分组密码,他们只能加固固定长度的明文。如果要加密任意长度的明文,就需要对分组密码进行迭代,迭代的方法称为模式。
分组密码有很多模式,如果模式选择不正确,就无法保证机密性。
ECB模式
讲明文分割成多个分组,对每个分组逐个加密的方法称为 ECB,在 ECB 加密后的结果将直接成为密文分组。
我们可以将其理解为一个巨大的“明文分组->密文分组”的对应表,因此 ECB 模式也称为电子密码本模式。
当最后一个明文分组的内容小于分组长度的时候,需要一些特定的数据进行填充。
ECB 模式的弱点
在 ECB 模式中,每个明文分组都是独立加密解密的,假如存在攻击者,他通过改变顺序就能达到一定目的。
如果下面的意思是从 A 账户里转1000000000元到 B 账户
明文: 分组1:1097179511 (A账户) 分组2:1234567890 (B账户) 分组3:1000000000 (转账金额) 密文: 分组1:********** (A账户) 分组2:********** (B账户) 分组3:********** (转账金额)
即使攻击者没有破译密码,但是还是可以将付款人账户与收款人账户对调,那还是可以把前转进自己的账户。
密文: 分组1:********** (B账户) 分组2:********** (A账户) 分组3:********** (转账金额)
这样就实现了,通过这个例子,可以看出,ECB 模式的弱点就是可以在不破解明文的情况下操纵明文。
CBC模式
CBC 模式中会先将明文分组与前一个密文分组进行 XOR 运算,然后再进行加密(图是解密过程,加密的图没找到,又不想自己做)
当然,对第一个明文分组来说,是没有前一个密文分组的,那么就需要一个初始化向量(简称IV)
CFB模式
相对于 CBC 模式,CFB 模式是先将初始化向量进行加密,然后再异或
针对 CFB 模式的攻击
重放攻击:A 向 B 发送了一条消息,消息由四组密码组成, C 保存了下来。第二天,A 又向 B 发送消息,C用昨天保存下来的三个密文分组将今天的后三个密文进行了替换。
这样,当 B 解密时,只有第一个会时正确的明文,第二个会出错,第三个和第四个则变成了 C 替换的内容。
然而 B 无法判断时通信出错还是被人攻击
OFB模式
OFB 模式不是通过算法直接进行加密,而是通过将“明文分组”和“密码算法的输出”进行 XOR 来产生“密文分组”。
CTR模式
CTR 模式是一种通过逐次累加的计数器进行加密来生成密钥流的流密码
关于流密码与分组密码的区别:
分组密码是每次处理输入的一组元素,相应的得到一组密文元素
流密码则是连续的处理输入元素,每次输出一个密文元素
分组密码模式比较表
END