PKCS#1 将 SHA1 定义为默认散列函数,所有实现都支持此散列函数和基于 SHA1 的掩码生成函数。在某些实现中,您可以更改用于 OAEP 填充的散列函数。
SHA1 哈希可以与加密随机数据(对称加密密钥)一起使用,还是应该使用另一种哈希方法?
是否存在已知的攻击或漏洞?
其他哈希函数有什么优势?
PKCS#1 将 SHA1 定义为默认散列函数,所有实现都支持此散列函数和基于 SHA1 的掩码生成函数。在某些实现中,您可以更改用于 OAEP 填充的散列函数。
SHA1 哈希可以与加密随机数据(对称加密密钥)一起使用,还是应该使用另一种哈希方法?
是否存在已知的攻击或漏洞?
其他哈希函数有什么优势?
SHA-1,作为一个散列函数,被称为“有点不稳定”。它是一个 160 位的哈希函数(它的输出是一个 160 位的序列);因此,它应该提供 2 80的碰撞阻力,而它的真实阻力似乎更接近 2 61左右。
但是,OAEP 对其底层哈希函数的要求并不高。似乎根本不需要防碰撞来确保加密系统的安全性。有关详细信息,请参阅本文(这有点技术性)。
底线:我们不知道任何可以通过利用 SHA-1 的任何弱点来对抗 RSA-OAEP 的攻击;我们甚至不确定这种攻击是否存在。从这个意义上说,从密码学的角度来看,在RSA-OAEP 的上下文中从 SHA-1 切换到另一个散列函数没有已知的优势。
然而,目前的时尚是看到 SHA-1 并坚持系统地切换到 SHA-2 功能之一(例如 SHA-256 或 SHA-512)。因此,使用 SHA-256 对公共关系有好处,并且会节省一些时间,因为坚持使用 SHA-1 需要向很多人证明自己的合理性。
请注意,SHA-256 具有更大的输出(256 位),这对您能够加密的数据大小施加了一个下限。如果使用 2048 位 RSA 公钥(256 字节),RSA-OAEP+SHA-1 的最大消息大小将为 214 字节(1712 位),而 RSA-OAEP+ 的最大消息大小为 190 字节(1520 位) SHA-256。如果您要加密的只是对称加密的密钥,那么这在实践中应该无关紧要。