适用于CBC模式下的AES,DES,3DES等分组密码。
攻击成立需要:
- 能控制初始向量 IV 和密文 CT
- 能触发密文解密流程(选择密文),得知解密结果以及是否padding异常
攻击效果:
- 解密密文
- 生成任意明文的密文
攻击场景:
- 加密协议为SSLv3的HTTPS请求
- 客户端存储形式的敏感凭证
对于固定的CT,改变IV,交给服务端解密时有三种结果:
- 解密成功,业务正常(只对应1个IV)
- 解密失败
- padding错误
- 解码错误(落到utf-8范围以外),但通常会在所有block解密完成之后才会触发,所以如果有padding错误,会先触发padding错误
- 解密成功,业务错误(只对应1个IV,因为明文是可见字符,不会落到0x01~0x20的区间)
利用padding错误提示,构造多个攻击IV,可低成本地(获得一个Block明文触发解密流程次数不超过255*16)解出CT对应的中间值,从而得到明文(通过计算中间值 xor 服务器返回正确的IV)。