加载中...

填充预言攻击(Padding Oracle Attack)是针对 CBC 模式加密的一类选择密文攻击:只要系统在解密时对"填充错误"与"其他错误"给出可区分的反馈(错误信息、状态码甚至响应时间差异),攻击者就能把它当作预言机,逐字节还原明文而无需密钥。
CBC 解密中,当前明文块等于解密结果与前一密文块的异或。攻击者篡改前一密文块的字节并观察填充校验是否通过,即可推断出中间值,进而以每字节至多 256 次尝试的代价解出全部明文,甚至反向构造合法密文。该攻击由 Serge Vaudenay 于 2002 年提出。
2010 年 ASP.NET 填充预言漏洞可解密并伪造加密的会话数据;2014 年 POODLE 攻击利用 SSL 3.0 的填充缺陷迫使全行业弃用该协议;Lucky 13 则利用了 TLS CBC 的时序差异。
根本解法是弃用"CBC + 手工填充校验",改用 AES-GCM、ChaCha20-Poly1305 等 AEAD;若必须用 CBC,应采用 Encrypt-then-MAC 并保证错误响应完全不可区分。

登录 后参与讨论
暂无讨论,来发表第一条评论吧