RSA 可以用作分组密码吗?

信息安全 加密 RSA
2021-08-21 13:26:04

我一直认为我们不能使用它的原因是因为它需要太多的 CPU 周期。但是@TomLeek 的回答表明情况并非如此:

https://security.stackexchange.com/a/103446/50051

大多数讨论混合加密的文章都说我们需要这样做,因为非对称加密很慢,但这是错误的。使用混合加密的真正原因是因为已知的非对称加密算法不能简单地处理任意长度的消息,而且我们不知道如何改变它们以便安全地这样做。基本上,分组密码的“链接模式”没有明显安全的非对称加密等价物。

为什么使用 RSA 作为分组密码如此复杂?

当您快速查看它时,RSA 会加密一个文本块,因此我们可以将其称为“分组密码”,然后您只需将其插入一个良好的分组密码操作模式,您就可以收工了。但是,似乎 RSA 需要一些花哨的填充才能安全。安全问题是否与该填充问题有关?

https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29#Padding

2个回答

没有理论上的理由为什么不能优化非对称算法来处理更大长度的纯文本消息,但是对称算法对于绑定到其对称性质的应用程序级数据具有一些优势。

  • 在两个对等方之间共享一个用于用户(应用程序级)消息传递的秘密有利于简单而优雅的协议。
  • 需要较少的密码创新来提供速度和抵抗部分纯文本和其他攻击的能力,因为在任何合理的时间范围内,拥有一个不会为发现私钥打开大门的公钥的负担被减轻了。
  • 它们的对称算法和软件实现在 SSL 和 TLS 的历史使用中沿着高速、可流式帧处理和对大型消息的攻击弹性进行了演变。

是的,正如您提到的,RSA 可以很容易地用作分组密码,但真正的问题是速度。当您设计一个协议时,您需要它在所有类型的设备之间顺利运行,您需要为您的客户提供高质量的服务,以及比块和流密码更好的方法来提供良好的速度!

例如,谷歌正在转向 CHACHA20,因为它比 AES 更快并且使用 CPU 友好指令。