【问题标题】:What is best possible way of salting and storing salt?腌制和储存盐的最佳方法是什么?
【发布时间】:2010-12-17 16:54:11
【问题描述】:

我读过关于密码加盐的文章,但这听起来可能有点奇怪。但是我如何储存和保护盐。例如,在多轮胎架构中,假设我使用客户端机器的 GUID 生成我的 salt,然后用户被限制在一台机器上,但如果我使用随机 salt,它必须存储在某个地方。几天前,我看到一个示例应用程序,每当创建新用户时,都会在客户端系统上生成哈希和盐,然后将盐化密码和哈希传输到服务器,并将它们存储在 SQL 服务器中。但是,如果我遵循这种方法并且数据库被泄露,那么 X 人将可以使用每个密码的密码和盐值。那么,我应该再次加盐/加密密码并在服务器端接收加盐吗?腌制的最佳做法是什么?

【问题讨论】:

    标签: security encryption cryptography passwords


    【解决方案1】:

    将未加密的盐存储在哈希密码旁边的数据库中不是问题。

    盐的用途不是保密。它的目的是使每个散列(即随机)不同,并且足够长以在攻击者获得数据库时阻止使用rainbow tables

    请参阅此 excellent post Thomas Ptacek 的主题。

    edit @ZJR:即使盐完全公开,它们仍然会破坏彩虹表的好处。当你有一个盐和散列数据时,你能做的最好的事情就是暴力破解(假设散列函数是加密安全的)

    编辑@n10i:参见维基百科文章secure hash function。至于 salt 大小,流行的 bcrypt.gensalt() 实现使用 128 位。

    【讨论】:

    • 我想说盐的目的也不是公开
    • 你能解释一下“散列函数在密码学上是安全的”吗?对不起,我是密码学的新手。在您的回复中,您还提到“足够长以击败彩虹桌的使用”盐应该多长时间,足够长?
    【解决方案2】:

    请花点时间阅读这个关于盐和散列的非常好的描述

    Salt Generation and open source software

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 2013-02-15
      相关资源
      最近更新 更多