SHA-3是NIST在4年前发布的。以我的经验,它似乎没有像我期望的那样被广泛使用。我经常看到SHA-2甚至SHA-1。您对这种情况有何看法?:

评论

该问题/答案以及直接链接的内容涵盖#1:crypto.stackexchange.com/questions/15727/…

@RichieFrame也许我完全错过了它,但这对SHA-3的安全性有何看法?它似乎是要通过NIST更改某些参数,尤其是在填充方面,据说这对安全性没有不利影响...但是它没有提及任何有关Bruce Schneier的内容,也没有提到SHA-3会涉及任何安全性问题用。你到底是什么意思(请注意,您的评论所引用的内容已移至此答案:crypto.stackexchange.com/a/72527/2512)

@Luc与该问题相关的另一个问题列出了有关容量和原像抵抗的“拟议”变更,以及NIST和Keccak团队的理论依据。我的回答是,这些更改从未使它成为SHA-3

#1 楼

首先,您将问题倒退了。惯性是默认位置。您不应该寻找不切换的原因,而是寻找切换的原因。如果没有充分的理由进行切换,则没有人会进行切换。

安全性不是理由。在SHA-2和SHA3之间,没有理由相信一个比另一个更安全。从MD5切换到SHA-1或从SHA-1切换到SHA-2时,情况并不像以前那样,在每种情况下,较早的功能都有确实导致攻击的结构上的弱点,并且输出的大小越来越小,从而开始提高对暴力攻击的担忧。 SHA-2和SHA3具有相同的大小,并且没有已知的结构缺陷。

性能并不是大多数应用程序的原因。实际上,性能是不切换的原因。在通用处理器上,SHA3比SHA-2慢。它是各种处理器之间SHA3竞赛中最慢的决赛选手之一。这不是不进行转换的重要原因,因为散列几乎从来都不是瓶颈,但这当然不是进行转换的诱因。
SHA3确实具有性能上的优势,这是实现起来便宜的原因。在专用硬件中。在专用电路上速度非常快。这对于低功耗设备尤为重要:在硬件中实现时,SHA3的每字节成本比SHA-2(或任何其他SHA3决赛产品)低。因此,物联网可能会推动SHA3的采用。但是,硬件设计需要时间,并且硬件设计人员比较保守(您无法修复硬件中的错误),因此这不会很快发生。此外,SHA3的硬件实现比SHA-2使用更多的门,因此,即使以后使用它的成本更低,构建SHA3设备的成本也更高,因此即使在低功耗的情况下也没有明显的成本动机来进行切换要求很关键。

SHA3​​还具有多功能优势。相同的核心原语(Keccak海绵)不仅可以用作哈希,而且还可以用作MAC(KMAC,成本比HMAC低),作为键派生函数(具有部分秘密输入的SHAKE,其价格较低)。成本不是HKD3这样的结构。SHA3不能做其他人无法做的事情,但是可以做其他需要更复杂的基元组合的事情。这是切换的动力,但是仅在以下情况下:1.您需要这些多余的东西; 2.组合更多代码是一个问题。同样,物联网(需要低成本,低功耗的设备)可能会使用SHA3,但是只有定义了使用SHA3哈希功能以外的其他功能的协议并开始部署它。

回到安全性,SHA3的一个优点是它与SHA-2有很大的不同。确实,这是它被其他SHA3提议选中的主要原因之一:由于其结构不同,如果一类新的攻击破坏了SHA-2,则不太可能应用于SHA3,反之亦然。安全性的好处不是切换到SHA3,而是部署支持两者的软件和协议,因此,如果在SHA-2中发现弱点,世界可以迅速而廉价地过渡到SHA3。

评论


$ \ begingroup $
从硬件方面讲了一些琐事,我还没有看到有人要求SHA-3。有很多BLAKE2实现,我猜想这是仅由芯片空间驱动的。
$ \ endgroup $
–b degnan
19年8月10日在21:43

$ \ begingroup $
您始终编写不带破折号的SHA3,对于SHA-1和SHA-2,您始终使用破折号。 NIST规范也将其写为SHA-3,但是相当准确地知道您,我认为在您编写SHA3时它不是错字。如果SHA3和SHA-3之间有区别,请告诉我吗?
$ \ endgroup $
–rene
19年8月11日在12:43

$ \ begingroup $
@FutureSecurity问题是有关SHA-2和SHA-3(即Keccak)的问题。我不建议使用其他SHA-3决赛入围者,因为他们不太可能进行更多的密码分析。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
19年8月11日在20:58

$ \ begingroup $
@rene该系列的官方名称确实是SHA-3,但是单个算法的名称是SHA3-224等。我应该使用SHA-3,但是鉴于使用了SHA-3算法之一,您需要编写“ SHA3-…”,我希望SHA3的拼写比SHA1和SHA2更加普及。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
19年8月11日在21:01



$ \ begingroup $
@Luc Die地区。 BLAKE2的最小实现比Keccak小。参见例如pdfs.semanticscholar.org/649a/…表4。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
19年8月13日在11:20

#2 楼

由于此问题是在询问观点,因此很难给出正确的答案(或者,所有可能的答案都是正确的,因为它们是观点)。但是,我的看法是:

我相信有几个方面对此有所贡献:

大多数应用程序设计师(即使用加密技术实际解决问题的人)通常,实际上并没有指定像散列函数一样低的级别;相反,它们在更高级别上指定事物(例如,公用密钥签名方法或加密协议),并使用那些更高级别原语使用的哈希值。 ,他们倾向于以慢得多的速度更新事物-因此,他们倾向于花费一些时间来获取SHA-3之类的东西(尤其是如果没有强烈的需求进行更改)。

对于感知到的需求,SHA-2通常被视为完全合适的技术,它以合理的成本解决了我们所遇到的问题,因此没有立即花费精力转向SHA-3的需求。 。 SHA-3的最大优点是可以更快地实现,并且对于大多数应用程序来说,哈希函数的速度并不是主要因素。

现在,我们可能会看到更多采用率在接下来的几年中;如果您查看了NIST后量子候选者,则他们倾向于使用SHAKE(至少需要哈希函数的人)。这意味着,当它们被应用程序占用(并在实际产品中使用)时,它们将与SHA-3一起使用(并且可以预期,因为加密库中现在有SHA-3实现)已经)将会发现更多的通用用途。

但是,对于成为“标准”(也就是说,实际上不鼓励人们使用SHA-2),我不会在很长一段时间内看到(除非进行密码分析发现)。据我们所知,它没有任何弱点,并且确实比SHA-3具有一些实际优势(至少,我相信使用最少数量的门更容易构建)

评论


$ \ begingroup $
实际上,“ SHA-3可以更快地实现”,SHA3的硬件速度始终较快,软件的速度较慢。它只有在专用电路中才更快。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
19年8月10日14:43



$ \ begingroup $
作为帮助维护一些安全性库的人,与SHA-3相比,我更喜欢SHA-256,因为它提供了更多的硬件支持。 SHA-256加速在x86(Goldmont),Aarch64(Armv8.1-a),PowerPC(Power8)和MIPS上可用。据我所知,SHA-3加速仅在Aarch64(Armv8.4-a)上可用。当没有硬件加速时,SHA-3的软件速度也较慢。
$ \ endgroup $
–user10496
19年8月13日在5:15



$ \ begingroup $
... aarch64有SHA-3加速功能吗?我从未听说过使用实际Keccak实现的商品硬件!
$ \ endgroup $
–Ruben De Smet
19年8月14日在12:12

$ \ begingroup $
@jww它是自己实现SHA-3还是Keccak-f置换功能?
$ \ endgroup $
–森林
19年8月21日在21:34

$ \ begingroup $
@forest-我相信它是SHA3,因为还有SM3,SM4和SHA512。但是我可能是错的。我不知道有没有实现它的人。我刚刚检查了OpenSSL,而Andy尚未将其切入。我注意到Jack Lloyd在添加对ARMv8 SM4指令的支持时合并了ARMv8.4 SM4的PR。只要可以通过ISA购买硬件,就可以投入使用。我需要在真实硬件上测试算法。
$ \ endgroup $
–user10496
19年8月22日在3:20



#3 楼

主要是选项2。人们很懒。此外,使用SHA-2的用户没有充分的理由进行切换。
使用SHA-1的用户是懒惰的,并且已经懒惰了一段时间。
另一个原因是兼容性,如果我在证书中使用SHA3某些软件可能无法使用它,并且如果SHA2既快速又安全,出于所有实际目的,为什么我应该选择兼容性较差的选项。
我不认为针对SHA-3会有严重的安全问题,有些人认为它不是最佳候选者(我就是其中之一),但这并不意味着他们客观地认为这是一个不安全的哈希函数。
大多数开发人员没有对密码原语做出明智的选择,惯性是一个不错的选择。我认为很少有人愿意进行更多的密码分析。

评论


$ \ begingroup $
我最喜欢的SHA-1事实是该算法在2005年被破解。几年前发布的碰撞所需要的计算时间与2005年破解所估计的时间差不多。与Heartbleed和Dual EC DRBG一样,这是一个“不要说我们没有警告您”的事件。除了开发人员指着这三件事,然后说:“当您没有警告我们这些事情时,为什么我们现在应该听您的声音?”
$ \ endgroup $
–未来的安全性
19年8月11日15:41



$ \ begingroup $
SHA-2还不错。如果不是因为长度扩展问题,那么升级到其他版本的最佳理由只是出于性能方面的考虑。今天使用SHA-2并不像几年前使用SHA-1或RC4那样值得使用。
$ \ endgroup $
–未来的安全性
19年8月11日在15:49

#4 楼

以下是我最初包含在问题中但更适合作为答案的一些建议。

1)SHA-3仍然存在一些问题。我记得发布时有一些争议,例如布鲁斯·施耐尔(Bruce Schneier)和其他人提出了一些担忧。这些担忧仍然存在吗? [基于其他答案,我现在看到这不是真的有效。我还研究了布鲁斯·施耐德(Bruce Schneider)的批评,这与NIST强制进行的容量可选性更改有关,以平衡安全性和性能,而不是像这样的安全性。]

2)人们只是慢/懒即将采用新标准,四年时间不长。采用率将继续缓慢增长,直到SHA-2被NIST证明为弱或被NIST撤消。

3)许多开发人员等着看到使用加密功能已有5年之久,并在采用之前对其进行了广泛研究和攻击(即比2更有意识/系统的方法)。 SHA-3的使用在未来几年内可能会显着增加,并成为标准。

评论


$ \ begingroup $
这场争论完全是政治性的,因为最终定案是在斯诺登(Snowden)披露(包括BULLRUN项目)的同时进行的。争论没有技术基础-结果是固定大小的哈希函数SHA3-256等比Snowden的计时错误,因此比实现其安全目标所需的速度慢。幸运的是,SHAKE128避免了此错误。
$ \ endgroup $
–吱吱作响的s骨
19年8月21日在16:47



$ \ begingroup $
@SqueamishOssifrage争议在于容量(以及因此的抗碰撞性),对吗?是否涉及轮数或其他任何可以提高对密码分析抵抗力的功能?
$ \ endgroup $
–森林
19年8月21日在21:31



$ \ begingroup $
@forest关于容量,是的。具体来说,对于128位安全级别,(例如)SHA3-256的容量$ c = 512 $是其所需容量的两倍,即$ c = 256 $,而这对于性能来说是相当大的代价,并且没有意义。安全性的提高。
$ \ endgroup $
–吱吱作响的s骨
19年8月21日在22:06