首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用HMAC SHA1的Rfc2898DeriveBytes是否仍然被认为是哈希密码的“足够安全”?

使用HMAC SHA1的Rfc2898DeriveBytes是否仍然被认为是哈希密码的“足够安全”?
EN

Security用户
提问于 2015-07-08 18:03:28
回答 1查看 10.6K关注 0票数 22

一个CISSP告诉我,.NET类Rfc2898DeriveBytes今天不会通过安全审核,因为它仍然使用SHA1。它对SHA1的依赖--即使是迭代--使得它太容易受到暴力破解的影响。就我个人的理解和其他偶然发现这个问题的人而言,Rfc2898DeriveBytes是否仍然被认为是一种安全的密码哈希方法?沿着同样的思路,带盐但没有迭代的HMAC SHA256是否足够?

为了记录这一点,由于我被授权使用Rfc2898DeriveBytes以外的任何东西,而且我比从头开始使用自己的代码更清楚,所以我打算拆解Rfc2898DeriveBytes,使用SHA256而不是SHA1复制代码。

EN

回答 1

Security用户

回答已采纳

发布于 2015-07-08 19:01:14

Rfc2898DeriveBytes实现了标准算法,称为PBKDF2,并在RFC 2898中定义(因此名)。该算法使用可配置的底层伪随机函数(通常为HMAC ),而HMAC本身依赖于可配置的底层散列函数,通常是SHA-1。虽然所有这些都是可配置的,但是给定的实现可能不那么灵活,实际上,Rfc2898DeriveBytes总是使用HMAC,并且总是使用SHA-1作为SHA-1的底层函数。

如今,被统称为“审计师”的人们在看到任何涉及沙一的东西时,往往会哀号、抱怨、尖叫、嘲弄和绕圈子。这在科学上是没有根据的。目前,在所有已发表的“科学”杂志中,没有丝毫迹象表明在HMAC中使用SHA-1会很弱。已知的SHA-1中的弱点是关于不影响HMAC的碰撞(而且这些仍然是理论上的)。如果某个拥有CISSP的家伙坚持认为SHA-1实际上使PBKDF2更容易受到暴力的伤害,那么他应该去重新学习他的教训。

尽管如此,切换SHA-256并不是个坏主意,所以如果避开SHA-1是摆脱审计人员所需要的,那就去吧。

然而,必须指出以下几点:

  • 反汇编然后修改是一种相当粗糙的方法,而且容易导致不可维护的代码。您可以简单地从实际的源代码(例如从这里)开始,或者更简单地(并且具有更清晰的法律地位)从头开始重新实现它。.NET提供了一个HMAC/SHA-256实现HMAC/SHA-256实现;使用它来编写PBKDF2代码并不难。
  • 或者,您可以尝试重用其他一些现有的实现,比如这一个
  • 当您想要“散列密码”时使用PBKDF2,而且并不是所有的函数在这方面都是相等的。哈希函数只有在攻击者计算成本较高的情况下才有任何好处。在这方面,带有SHA-1或SHA-256的PBKDF2并不是最好的选择;可以说,使用SHA-512的PBKDF2是一个更好的选择(因为现有的GPU比SHA-256更难优化SHA-512 ),但其他解决方案可能更可取,特别是bcrypt。有关此主题的更多信息,请阅读,以及更一般的。这意味着虽然SHA-1“弱点”并不会使PBKDF2变得更弱,但它仍然是一个可以在GPU上很好地优化的函数,在这种情况下,这是一个问题--但是,这是最重要的一点,SHA-256的价格也不是更好。
  • 在任何情况下,通过使用纯C#实现,您都可以接受,这种特定的CPU密集型技术将随着该技术的内在减速而运行,与优化的C代码(或程序集)相比,该技术的运行速度可估计为2到3倍。换句话说,攻击者可以获得2倍或3倍的优势。因此,您可能需要在这里使用一些本机代码,而不是纯C#。
票数 25
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/93435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档