【问题标题】:Security Differences with bcrypt Node.js Modulesbcrypt Node.js 模块的安全差异
【发布时间】:2014-04-02 16:40:39
【问题描述】:

我的一个项目是使用bcrypt 模块来散列秘密。少数人抱怨它很难安装,因为它是dependencies。我之前尝试在 Windows Server 上安装它,这不是在公园里散步。

人们要求我使用纯 Javascript 插件替代品,例如 dcodeIO/bcrypt.jsshaneGirish/bcrypt-nodejs。但我真的不知道使用它们的安全隐患。它们同样可靠吗?

【问题讨论】:

  • 唯一能想到的就是内存安全;使用 C,您可以确保将缓冲区归零,这样私有信息就不会残留在内存中;但是,这可能仍然行不通,因为信息可能会被分页到磁盘,然后由操作系统随时返回到内存中。

标签: node.js bcrypt


【解决方案1】:

如果这些实现是正确的,你应该使用最快的 bcrypt 可用,这很可能意味着非 JS 实现。

您应该假设攻击者拥有最快的可用实现,并且您希望通过尽可能多地增加计算成本来减慢攻击者的速度。

【讨论】:

  • 我在任何与密码学相关的讨论中都没有听说过这个。如果存在一个算法的良好实现,您可以假设任何其他良好的实现具有相同的计算复杂度。
  • @a0viedo Computational complexity 是我没有使用的术语:它具有特定含义,与主题无关。我所说的是计算成本和实现之间的相对性能差异。如果您还没有听说过有关密码哈希的性能和优化的讨论,非常欢迎您加入我们的 PHC 邮件列表password-hashing.net/interaction.html
  • 我指的是“选择最快的,更安全”的说法。使用最快的实现应该是为了改善最终用户体验而不是安全问题(这里的主要讨论)。
  • @a0viedo 不,这不仅仅是用户体验。密码散列的安全性与算法的性能及其实现直接相关。您应该使用 slowest(或一般来说更消耗资源,例如内存)算法的 fastest 实现。
  • 同意,您应该使用可用的最快速度。 bcrypt 算法here 有一个 asm.js 端口,速度非常快,没有依赖关系,并且针对原始 C 实现测试套件进行了全面测试。
猜你喜欢
  • 2012-04-26
  • 1970-01-01
  • 2014-04-17
  • 2014-09-29
  • 2013-12-12
  • 1970-01-01
  • 2013-11-09
  • 2012-12-04
  • 2018-12-01
相关资源
最近更新 更多