gpt4 book ai didi

php - 密码散列 : Keccak or not

转载 作者:可可西里 更新时间:2023-10-31 23:52:07 24 4
gpt4 key购买 nike

SHA-3 哈希算法竞赛的获胜者已经选出。获胜者的算法是 Keccak

我使用 Blowfish 并且非常喜欢它,但据说 Keccak 更好。在我的网站上使用它来存储用户密码是否值得?

如果是,是否有用于 PHP、Python、Ruby 或任何其他语言的 Keccak 实现用于网络编程?

我希望这个问题也能帮助其他人。谢谢!

最佳答案

简答:

没有,而且可能永远不会。对于密码散列,BCrypt 和 PBKDF2-HMAC-xxx 是比任何简单的 SHA-1/2/3 算法更好的选择。在 SHA-1/2 实际发布可行的原像攻击之前,SHA-3 实际上是最差的选择,特别是因为它的速度和低缓存占用空间。

更长的答案:

不同密码散列算法的相对安全性的一个主要因素是:与你相比,专门的攻击者散列密码的速度有多快?也就是说,他们的软件/硬件组合(为密码散列的明确目的而购买)与您服务器上的软件(软件的现成 C 实现,为您的应用程序需求购买的硬件)相比要快多少。

SHA-3 的主要标准之一是应该在嵌入式架构上高效运行,嵌入式架构以少量片上缓存、寄存器等为代表。但这也描述了现代 GPU:寄存器/累加器更少,体积更小片上缓存;但另一方面,他们的芯片经过优化,可以在大量数据上并行执行相同的任务。这对于攻击者的蛮力尝试来说是完美的:无论在硅片上花费多少美元,攻击者通过购买另一个 GPU 获得的 SHA3 哈希值/秒比你通过购买更好的 CPU 获得的更多。

出于这个特定原因,BCrypt 旨在对内存表进行大量读/写操作,该表目前比大多数 GPU 的缓存都大。这意味着当前基于 GPU 的 BCrypt 实现甚至赶不上它们的 CPU 对应物的速度。因此,仅通过选择 BCrypt,您就已经通过迫使攻击者购买与您相同的 CPU 来减缓他花费的每一美元的优势。

这就是为什么原始速度是密码散列的敌人。 您希望选择一种算法,其最快的软件/硬件组合为您的攻击者提供的每美元相对于您将使用的商品软件/硬件的优势最少。现在,那是 BCrypt,或者 PBKDF2-HMAC-xxx 的选择稍少。由于 GPU 可能只会越来越擅长 SHA3,我怀疑它永远不会是正确的选择。我没有 SHA3 上的数字,但“哪个更安全”并不是一个模糊的相对术语 - 可以使用上述规则对其进行精确量化。

关于php - 密码散列 : Keccak or not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com