主要观点:作者在阅读《Real-World Cryptography》时被提及的 Bleichenbacher 对 RSA 的攻击吸引,于是从 scratch 实现了 RSA,编写攻击代码解密消息并制作了网页演示,详细介绍了整个过程,包括实现 RSA 所面临的问题及选择、攻击的实施过程及遇到的困难与解决方法、制作演示的过程及技术细节等,最后强调这是一个有趣的学习项目,虽不会在生产中使用相关代码,但达到了学习和娱乐的目的。
关键信息:
- RSA 是仍被广泛使用但存在问题的加密系统,Bleichenbacher 攻击可在没有私钥的情况下解密 RSA 加密消息,需结合特定编码方案 PKCS #1 v1.5 实施。
- 实现 RSA 时选择 Rust 语言和 cryptoy 库,因可使用 WASM 工具链用于网页演示,后因 bigint 库问题迁移到 num-bigint-dig 库。
- 攻击实施过程中部分工作较易,调试困难,曾因 rounding 问题出错,后发现迭代计数器为 8 位整数导致大密钥失败,改为较大类型后解决,还将攻击代码转换为迭代器以展示攻击进度。
- 制作演示使用 Yew 框架,通过状态钩子和表单管理数据,在 update 函数中调用攻击代码,根据不同消息进行相应操作,同时注意测试时使用 release 版本避免电脑过热。
重要细节:
- 作者阅读相关论文理解攻击原理,为快速验证攻击效果使用小密钥和小消息实现 RSA。
- 不同版本的攻击使用不同的 oracle,实际中很多情况提供特定的 oracle 假设。
- 演示代码中通过 AttackDemo 结构体管理攻击状态和相关统计信息,实现 Yew 的 Component trait 处理不同消息。
- 作者提到一些术语如“nerd sniped”的来源,以及实现过程中遇到的各种库相关的具体问题及解决思路等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。