我正在寻找一个知名服务来续订SSL(好的TLS)通配符证书。我需要提供一个我使用2048位密钥创建的CSR。我还需要选择一个签名哈希。该服务提供三种选择:SHA-256SHA-384SHA-512。其中,SHA-256是默认设置。

这让我感到困惑。难道不是更长的哈希总是更强吗?是否有充分的理由使我希望较小的256位签名哈希大于较大的512位签名,或者这可能只是UI错误?是否有一些尚不能使用512位哈希的应用程序?

评论

可能与兼容性有关吗?

#1 楼

从安全角度来看,这将毫无意义。实际上,SHA-256与SHA-384或SHA-512一样安全。我们无法使用当前或可预见的技术在任何碰撞中产生碰撞,因此获得的安全性是相同的。

从非安全性的角度来看,在较长的摘要中选择SHA-256的原因更容易理解:它更小,需要更少的存储和传输带宽,更少的内存以及在许多情况下更少的处理计算能力。 (在某些情况下,SHA-512更快,更高效。)第三,可能存在兼容性问题。由于几乎没有人使用带有SHA-384或SHA-512的证书,因此您很有可能会遇到不了解它们的系统。现在的问题可能比过去更少了,但是同样,您要冒风险却无所作为。

因此,目前,选择SHA-384或SHA-512尚无明显优势,但存在明显的劣势。这就是SHA-256是网站现代证书通用选择的原因。

评论


对于带有RSA的散列签名,签名的存储或传输仅取决于密钥(模数),不受散列的影响。计算时间可能会有所不同,并且验证(仅)不会因modexp时间而变得微不足道,尽管您注意到这种差异可能会发生。

–dave_thompson_085
19-10-26在1:44

#2 楼

SHA-512可能比SHA-256拥有的唯一真正优势是抗碰撞性,该术语在密码学中的含义非常狭窄。 SHA-256声称具有128位抗碰撞性,SHA-512声称具有256位。如果或当构建实用的量子计算机时,我们可能需要256位抗碰撞性。

由于SSL证书通常具有相对较短的到期日期,因此获得SHA-256很好今天的证书,因为它会在建造实用的量子计算机之前过期(如果有的话)。

除此之外:



SHA-256输出较短,从而节省了带宽。
不同的硬件倾向于使用不同的功能。 SHA-512在64位处理器上通常更快,而SHA-256在32位处理器上更快。 (请在计算机上尝试使用命令openssl speed sha256 sha512。)

SHA-512 / 256位于两个功能之间-SHA-256的输出大小和安全级别以及SHA-512的性能-但是到目前为止,几乎没有系统使用它。


评论


即使QC可以像预期的那样工作,并且可以像传统计算机一样便宜地计算哈希调用,但查找冲突仍然非常昂贵(它需要$ 2 ^ {85} $哈希调用,而不是$ 2 ^ {128} $)。 DJB甚至声称,在考虑RAM访问电路成本的现实成本模型中,根本没有提速。

– CodesInChaos
17年7月20日在10:56

这是更完整的答案。

–凯尔·伯凯特(Kyle Burkett)
18-10-22在13:34