【问题标题】:Does ASP.NET use SHA256 or SHA1?ASP.NET 使用 SHA256 还是 SHA1?
【发布时间】:2017-03-30 05:18:12
【问题描述】:

我正在使用 ASP.NET 4.5 MVC 和实体框架提供的默认身份信息。我可以使用密码创建用户,并且散列密码显示在数据库中。我试图弄清楚该哈希是使用不再受信任的 SHA1 算法还是 SHA2 算法(无论是 SHA256、SHA512 等)生成的。

似乎说它默认为 SHA256 的文章:

https://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148

http://kosmisch.net/Blog/DotNetEssential/Archive/2015/2/1/aspnet-membership-default-password-hash-algorithms-in-net-4x-and-previous-versions.html

似乎说它默认为 SHA1 的文章:

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx

当我沿着链向下走时,我最终进入 PasswordHasher.cs 类 -> HashPassword() -> Crypto.HashPassword() ,我可以看到它使用的是 Rfc2898DeriveBytes ,其中包含一堆关于 HMACSHA1 的内容。

那么我的密码是被 SHA256 还是 SHA1 散列了?默认为 SHA256 的简单方法?

如果有帮助,这是从我的本地环境中获取的虚拟密码: AIPfkvy5v59jmVZdPpU9QfUMoToCQ+Rp3dBT7m9RwMKZai5/61REkN/0InCtxKPUOQ==

【问题讨论】:

  • Comments 在源代码中表示版本 2 中的 SHA1 和版本 3 中的 SHA256
  • @Thangadurai 和版本 3 仅在 ASP.NET Core 中可用,在 ASP.NET 4.5 中不可用,对吧?
  • 从 .NET 4.0 开始,默认哈希算法似乎已更改为 SHA256。我找不到任何有关此更改的官方文档。
  • @Thangadurai 你的依据是什么?我收录的文章?代码看起来仍然使用 SHA1

标签: asp.net asp.net-mvc password-protection sha


【解决方案1】:

所以看起来答案并不完全:

来自ASP.Net Identity Source Code中的cmets

版本 0: 带有 HMAC-SHA1 的 PBKDF2,128 位盐,256 位子密钥,1000 次迭代。

另请参阅:SDL 加密指南 v5.1,第 III 部分)

格式:{ 0x00, salt, subkey }

最终哈希算法是SHA1,但它不是密码的简单SHA1哈希,甚至不是SHA1+盐哈希。

值得指出的是,由于数学攻击,SHA1 被视为数字签名“损坏”,从而将生成冲突的计算工作量减少到几乎可行的水平。

这不适用于散列密码。

进一步阅读的链接。

Is SHA-1 secure for password storage?

https://www.schneier.com/blog/archives/2005/02/sha1_broken.html

https://en.wikipedia.org/wiki/PBKDF2

https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

Rfc2898DeriveBytesHMACSHA1

【讨论】:

  • 如果它使用 SHA1 或将 SHA1 与盐一起使用一千次,它仍然在使用 SHA1。我正在寻找一种方法来默认使用 SHA256 而无需将整个应用程序移植到 ASP.NET Core
  • @scottndecker 为什么?
  • 因为 SHA1 不再被认为是安全的,并且预计在未来一两年内会受到广泛攻击。
  • @scottndecker 您是否有任何资源链接显示密码散列已损坏?
  • 如果 MS 正在升级以在新版本的密码哈希算法中使用 SHA256(它们是)并且普遍认为 SHA1 算法容易受到攻击(它是),那么它会很多最好现在而不是以后升级到 SHA2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2019-09-18
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
相关资源
最近更新 更多