2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
当需要加密任意长度明文时,就需要分组迭代进行加密。 分组密码有很多模式,如果模式选择不当,就无法充分保证明文的机密性
分组密码:将明文数据划分为固定长度的块(通常为128位或64位),然后逐块加密。每个块称为一个分组(block)。
流密码:对数据流进行连续处理的加密算法,逐位或逐字节加密,适用于数据流的加密。
模式是分组密码的迭代算法
比如我们常使用的 DES 算法中的 ECB 模式。 ECB 模式就是将明文分割成多个分组并逐个加密的方法。 ECB 算法计算量小,加解密速度快,但现在已经证实 ECB 是不可靠的模式了。 所以正式场合中不要使用 ECB 模式
ECB 将明文进行分组后直接加密产生密文分组
工作原理:
优点:
缺点:
应用场景:
ECB 模式中,明文和密文是一一对应的。相同的明文一定可以得到相同的密文。所以虽然不能直接根据密文推导出明文,但可以根据密文的特点进行定向攻击
例如: Bob 向 Alice 发送了一个转账的报文:
分组1 = Bob的银行账号
分组2 = Alice的银行账号
分组3 = 转账金额
虽然 Eve 不能直接修改账号和金额(因为没有解密数据),但 Eve 可以通过交换分组 1 和分组 2,造成攻击。
分组1 = Alice的银行账号
分组2 = Bob的银行账号
分组3 = 转账金额
这种攻击方式能成功就是因为 ECB 没有隐藏明文信息造成的
密文分组链接模式
工作原理:
优点:
缺点:
CBC 最核心的一个环节,是将前一个密文分组作为一个变量带入了下一个明文加密中。 这样即便明文相同,但经过密文异或操作后,就会出现不同的结果。通过这样就实现了混淆明文信息的目的。
但不知道你有没有发现,第一个明文分组如何处理呢? 在处理第一个明文分组时,异或为 0.那么密文分组 A 就退化成了 ECB 模式。 为了避免出现这种情况,我们就需要人为补充一个初始密文分组,这个初始的密文分组就称为IV分量
应用场景:
对 CBC 模式的一种改进
在 CFB 模式中,明文分组和密文分组之间只做异或操作就可以了。在此时此刻,密码算法的输出有一些一次性密码本的意思了.
工作原理:
优点:
缺点:
应用场景:
输出反馈模式。 密码算法的输出会反馈到密码算法的输入中
OFB 并不是通过密码算法对明文进行加密的,而是通过将明文分组和密码算法的输出进行异或来产生密文的。所以 OFB 和 CFB 也有一些类似.
工作原理:
优点:
缺点:
应用场景: