攻击目标
求解:
约束:不能直接获取Alice的私钥
攻击步骤(1/3)
步骤1:构造盲化消息
选取随机数
攻击步骤(2/3)
步骤2:诱骗签名
Eve设法让Alice对进行签名:
技巧:Alice可能以为是她需要签名的普通消息
攻击步骤(3/3)
步骤3:解盲并获取明文
攻击成功:Eve获得明文
必要条件
- 攻击者能获取用目标公钥加密的密文
- 受害者愿意/被诱骗对任意消息签名
- RSA实现没有对签名消息进行适当检查
防御措施
- 消息格式检查:签名前验证消息格式
- 随机填充:使用OAEP等填充方案
- 签名限制:不对外部提供签名服务
- 使用独立密钥:加密和签名使用不同密钥对
现实世界案例
历史案例
- Bleichenbacher攻击 (1998):针对PKCS#1 v1.5
- RSA SecurID攻击 (2011):硬件令牌漏洞
影响范围
- Web服务器SSL/TLS证书
- 代码签名系统
- 身份验证令牌
关键要点
核心教训
- 算法安全 ≠ 实现安全
- 协议设计至关重要
- 永远不要对不可控输入签名
开发建议
参考资料
- Bleichenbacher, D. (1998). "Chosen Ciphertext Attacks Against Protocols"
- PKCS #1: RSA Cryptography Specifications
- NIST Special Publication 800-57