1.6 KiB
1.6 KiB
挑战48:Bleichenbacher的PKCS 1.5填充预言机(完整情况)
密码分析MVP奖
这是一个极其有用的攻击。PKCS#1v15填充,尽管完全不安全,是RSA实现使用的默认填充。替代它的OAEP标准没有被广泛实现。这个攻击经常破坏SSL/TLS。
这是挑战#47的延续;它实现了完整的BB'98攻击。
按照你在#47中的方式设置自己,但这次生成768位模数。
要使攻击在现实的RSA密钥对上工作,你需要重现论文中的步骤2b,你的步骤3实现需要处理多个范围。
完整的Bleichenbacher攻击基本上是这样工作的:
- 从可能产生大于2B的明文的最小's'开始,迭代搜索产生符合要求的明文的's'
- 对于我们已知的's1'和'n',求解m1=m0s1-rn(再次:只是模乘法的定义)来得到'r',我们绕过模数的次数
- 'm0'和'm1'是未知的,但我们知道两者都是符合PKCS#1v1.5的明文,因此在[2B,3B]之间
- 我们用已知的边界替换两者,只留下'r'自由,并求解可能的'r'值范围。这个范围应该很小!
- 再次求解m1=m0s1-rn,但这次求解'm0',插入我们在上一步中生成的每个'r'值。这给我们新的区间来工作。排除任何在2B,3B之外的区间
- 对连续更高的's'值重复这个过程。最终,这个过程将使我们减少到只有一个区间,此时我们回到练习#47
当我们减少到一个区间时会发生什么,我们停止盲目地递增's';相反,我们开始快速增长'r'并通过求解m1=m0s1-rn来得到's'而不是'r'或'm0'来支持它。这么多代数!让你的青少年儿子为你做吧!注意:在实践中效果不佳