bcrypt/Bcrypt.net 的优势和替代方案

2024-03-02

好吧,经过大量研究后,我决定使用 bcrypt (请随意评论)在我的 PhoneGap 应用程序中散列和存储密码。

几天前,我偶然发现了 Bcrypt.net,它对我来说似乎“足够好”(再次,请随意发表评论)。所以,我的问题是 C# 中还有哪些其他可用的 bcrypt 实现? Bcrypt.net 的实施中是否存在严重缺陷?

我的安全模型基本上是这样的:

  1. 用户在客户端输入他的密码/密码/密码
  2. 这是通过安全 SSL 发送到我的 .net 应用程序(因此基本上从客户端以明文形式发送)
  3. 使用像 bcrypt.net 这样的库来散列密码并进行存储/比较

还有什么我真正需要考虑的吗?

任何帮助将不胜感激。


很高兴在这里看到有人做了一些研究。

我还没有看到任何不应该使用 bcrypt 的充分理由。一般来说,在服务器上使用 bcrypt、PBKDF2 或 scrypt 可以提供良好的安全层。

一如既往,细节决定成败。您当然需要 SSL,如果可能的话还需要使用 AES 加密的 TLS 1.2。如果您无法执行此操作,请确保您的连接中除了用户名/密码 + 必要的 HTML 之外不允许其他任何内容。

您应该决定密码的字符编码。我建议使用 UTF-8,可能会缩小到可打印的 ASCII 字符。记录所使用的字符编码或将其存储在配置中的某个位置。

尝试将所有输入参数与“散列”密码一起存储到 bcrypt。当然不要忘记迭代次数。这使得当用户稍后输入他/她的密码时更容易升级到更高的迭代次数。您需要生成一个 8-16 字节的安全随机盐来与密码一起存储。

此外,您可能希望将额外的 KBKDF(基于密钥的密钥派生方案)应用于任何上述 PBKDF 的输出。这使得可以使用bcyrptKBKDF 对具有足够熵的数据进行处理,因此通常只需要很少的时间(例如,使用 NIST SP 800-108 兼容计数器模式 KDF)。我想这应该被视为“专家模式”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bcrypt/Bcrypt.net 的优势和替代方案 的相关文章

随机推荐