Padding oracle attack

适用于CBC模式下的AES,DES,3DES等分组密码。

攻击成立需要:

  1. 能控制初始向量 IV 和密文 CT
  2. 能触发密文解密流程(选择密文),得知解密结果以及是否padding异常

攻击效果:

  1. 解密密文
  2. 生成任意明文的密文

攻击场景:

  1. 加密协议为SSLv3的HTTPS请求
  2. 客户端存储形式的敏感凭证

对于固定的CT,改变IV,交给服务端解密时有三种结果:

  1. 解密成功,业务正常(只对应1个IV)
  2. 解密失败
    1. padding错误
    2. 解码错误(落到utf-8范围以外),但通常会在所有block解密完成之后才会触发,所以如果有padding错误,会先触发padding错误
  3. 解密成功,业务错误(只对应1个IV,因为明文是可见字符,不会落到0x01~0x20的区间)

利用padding错误提示,构造多个攻击IV,可低成本地(获得一个Block明文触发解密流程次数不超过255*16)解出CT对应的中间值,从而得到明文(通过计算中间值 xor 服务器返回正确的IV)。

Leave a Reply

Your email address will not be published. Required fields are marked *