我一直在阅读Argon2(在较小程度上还包括其他最近的密码哈希)。我试图了解它为什么赢得了比赛,而不是其他决赛选手,例如Catena,Lyra2,Makwa或Yescrypt。

不幸的是,我在比赛的网站上没有看到太多的技术讨论。它确实链接到邮件列表档案,但是由于链接断开,我无法在其中找到实际的邮件列表(尽管我没有尝试使用NNTP选项,因为我没有NNTP客户端)。我尚不清楚这是暂时的问题还是永久的问题。

我有两个密切相关的问题,对于以下两个问题,我将不胜感激:


我一直认为,PHC是一项备受推崇且能胜任竞争的竞赛,被认为在密码哈希技术方面处于领先地位。是否有任何明显的争议,例如
与其他决赛入围者相比,导致PHC小组宣布Argon2成为获奖者的主要因素是什么? />

#1 楼

我参加过几次密码竞赛(AES,eSTREAM,SHA-3,PHC)。在他们每个人中,都有一些人用苦涩的话说,并为选择过程的不公平而哭泣和抱怨。只是人们就是这样,而擅长密码学并不能阻止智能密码学从根本上成为人们。

邮件列表托管在Gmane上,这是某人维护的免费资源他的业余时间。在2016年7月,他认为自己受够了(他厌倦了周期性的DoS攻击)。但是,PHC邮件列表档案已由Alexander Peslyak(又名yessol PHC候选人背后的“太阳能设计师”)恢复并重新上线。例如,您可以在那里看到获奖者公告。

#2 楼

我同意托马斯·珀金斯(Thomas Pornins)的回答,但小组成员中有一项非凡的批评。比赛的第二轮实际上只允许进行较小的调整。 Argon切换到Argon2,这只是一个新方案,而不是一项调整。我欢迎专家组采取不官僚的决定接受Argon2,但是正式上这是令人反感的。

第二个问题的答案当然有些投机。第二轮还剩下9个方案,因此排除其他方案可能会回答您的问题。 Makwa(以及Parallel)并不适合于密码哈希的所有用途。 Pomelo并非基于Blake2或SHA3之类的认可算法,对此的研究还很少。与Scrypt相比,Battcrypt和Pufferfish的内存更少。
在讨论了有关高速缓存时序抵抗性和内存硬度的问题之后,小组显然选择了一种抗高速缓存计时的方案。 Yescrypt不是,Lyra2只是一个混合方案(如Argon2id和Pomelo)。在第二轮中只剩下两种完全抗高速缓存定时的方案:Catena和Argon2i。 Argon2i具有更好的性能,主要是因为使用了并行性。这意味着与Catena变体相比,Argon2i在给定时间内的存储难度更大。该决定可以受到批评,但我认为这是可以理解的。

#3 楼

一些资源:


Argon2:论文和GitHub存储库

Catena:论文,优秀论文和GitHub存储库

Makwa: paper

Yescrypt:paper

Lyra2:paper和GitHub存储库

具有第1轮提交的GitHub存储库

A带有第2轮性能分析的GitHub存储库(尽管不是官方的,iirc)。 />另一个答案有一个非常重要的思想:密码哈希竞赛实际上并没有为您提供有关如何哈希密码的明确答案和秘诀。取而代之的是,它引发了许多针对内存硬哈希函数的研究。 PHC决赛入围者有一些非常不同的核心:Makwa用Blum整数做某事,Catena主要涉及位反转图,Lyra2是新的海绵热,而Argon2可能是最精致的(例如,本地搜索巨头最近推出了一个源优化过的Argon2成为新闻了。)因此,至少在我看来,没有人会告诉您选择什么。相反,您将不得不花一些时间来了解细节并做出有根据的决定。也许您需要一些独特的功能,例如服务器释放,托管或其他任何功能(并非所有方案都提供额外的好处)。如果能得到安慰,Lyra2足够让普通的本科生在大约3个月内就能理解,并能够以其他语言重新实现。请参阅我的GitHub,我与参考文献的比较(我更糟)和一个Android应用程序。