GnuPG以iterated+salted S2K的形式内置了缓慢的散列。
与隐窝或氪石相比,它是否有缺点?GnuPG的慢散列方法在GPU中很容易自动化吗?
发布于 2012-07-16 23:42:13
OpenPGP的“迭代和盐化S2K”只是一个很长的输入上的一个散列实例,它包括重复连接salt和密码。这是非常友好的GPU,特别是当使用一个哈希函数是建立在32位的基本操作(这类包括MD5,SHA-1,SHA-256和RIPEMD-160;GPU不是很好地处理64位操作,例如SHA-512)。因此,当攻击者试图攻击已使用该密钥派生函数处理的密码时,将从GPU中得到很好的提升。
请注意,这使S2K与PBKDF2处于同一类别:尽管它们的内部结构差别很大,但它们在硬件上有相似的使用模式。相比之下,bcrypt和scrypt需要更快的访问RAM,这使得GPU处于劣势。Bcrypt仍然适合于几千字节的RAM,因此仍然很容易通过FPGA进行优化;scrypt看起来更好,但是它很闪亮,因为它是新的,这在密码系统中不是一件好事(就像好酒,好密码必须等待几年才能获得最佳质量;更深入的讨论请参见这个答案 )。
让我强调,实际上,OpenPGP的S2K (或者说PBKDF2)很少成为给定系统中最弱的部分。尽管S2K有许多缺点,但它比简单的非迭代散列加盐哈希调用要好得多,更重要的是,它是一种未加盐的哈希调用,不幸的是,在部署的应用程序中仍然经常遇到这种情况。
发布于 2012-07-16 20:53:13
大多数哈希函数(似乎包括S2k)都不是内存密集型函数。因此,您可以非常便宜地在GPU上运行大量迭代变体的计算。
然而,Scrypt是设计为内存密集型的,因此如果不需要大量内存,就无法有效地并行运行它。
https://crypto.stackexchange.com/questions/3252
复制相似问题