什么是工作模式
密码算法要求输入是固定长度的,而实际上需要加密的数据,即输入通常是变长的,分组密码的工作模式即用来解决这个问题。
工作模式是一种增强密码算法或使算法适应具体应用的技术。
ECB模式
ECB模式:将明文分组加密之后的结果将直接成为密文分组。一次处理一组明文分块,每次使用相同的密钥。
缺点:
1、容易遭受代换攻击(将部分密文替换为其他密文,并不破译密码本身)。
2、相同的明文映射到相同的密文。
CBC模式
每一个明文分组都要先和前一个加密后的密文分组进行异或运算,然后再加密,第一个明文分组需要用初始化向量IV(一个随机的且长度为一个分组长度的比特序列)进行异或操作再进行加密。
IV要求时变,且收发双发共享,第三方不可获知。
OFB模式
首先加密IV,得到第一个序列,然后与第一个明文分组异或,得到第一个密文分组,之后加密前一个序列,与明文分组异或,得到密文。
CFB模式
将前一个分组的密文加密后和当前分组的明文进行异或运算生成当前分组的密文,第一个明文分组通过初始化向量lV进行加密再与明文分组进行异或运算得到第一个密文分组。
CTR模式
每次加密时都会生成一个不同的值来作为计数器的初始值,每个分组对应一个逐次累加的计数器,通过对计数器进行加密来生成密钥流,再将密钥流与明文分组进行异或操作得到密文分组。
GCM模式
GCM模式(伽罗瓦计数器模式)在 CTR 加密的基础上增加 GMAC 的特性,解决了 CTR 不能对加密消息进行完整性校验的问题。
不同分组模式对比
ECB、CFB、OFB 三种模式可以解决 ECB 模式中相同明文生成相同密文的缺陷,CTR 又可以在此基础上提供多分组并行加密特性,但是它们都不能提供密文消息完整性校验功能。
GCM模式同时实现了身份验证和数据加密。
表:不同分组模式对比
模式 | 名称 | 优点 | 缺点 | 备注 |
ECB模式 | 电子密码本模式 | •简单 •快速 •支持并行计算(加密、解密) | •明文中的重复排列会反映在密文中 •通过删除、替换密文分组可以对明文进行操作 •对包含某些比特错误的密文进行解密时,对应的分组会出错 •不能抵御重放攻击 | 不应使用 |
CBC模式 | 密文分组链接模式 | •明文的重复排列不会反映在密文中 •支持并行计算(仅解密) •能够解密任意密文分组 | •对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错 •加密不支持并行计算 | 推荐使用 |
CFB模式 | 密文反馈模式 | •不需要填充 •支持并行计算(仅解密) •能够解密任意密文分组 | •加密不支持并行计算 •对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错 •不能抵御重放攻击 | •现在已不使用 •推荐用CTR模式代替 |
OFB模式 | 输出反馈模式 | •不需要填充 •可事先进行加密、解密的准备 •加密、解密使用相同结构 •对包含某些错误比特的密文进行解密时,只有明文中相对应的比特会出错 | •不支持并行计算 •主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转 | 推荐用CTR模式代替 |
CTR模式 | 计数器模式 | •不需要填充 •可事先进行加密、解密的准备 •加密、解密使用相同结构 •对包含某些错误比特的密文进行解密时,只有明.文中相对应的比特会出错 •支持并行计算(加密、解密) | 主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转 | 推荐使用 |