如果黑客从数据库中获取盐和我们的哈希密码,为什么他不能破解密码?[复制]

If an Hacker get salt and our hashed password from a database, why can't he hack the password? [duplicate]

提问人:Harivignesh 提问时间:6/12/2023 更新时间:6/19/2023 访问量:238

问:

他们说,对密码加盐,然后对其进行哈希处理会更安全。我们都知道密码是加盐的,然后经过哈希处理,最终存储在数据库中。 在数据泄露期间,黑客可以获取密码(加盐和哈希)以及盐,因为盐也存储在数据库中以进行验证。 那么,如果黑客可以同时获得盐和密码,为什么不容易破解呢? 我以为在得到盐之后,黑客可以找到它是什么密码(加盐和散列),然后他可以从中删除盐来获取原始密码!

例如,考虑:(这就是我认为事情正在发生的方式) 我的密码:Harivignesh123 加盐 : 1$2$3

我的新盐票可能是:Harivignesh1231$2$3

在数据库中: 密码(加盐和散列):8a84dbd1ab769dfdeaf389a38a91feb7f0a3d9ea5e34254775dd66a5b82a402d 盐: 1$2$3

黑客从数据泄露中获取数据后: 通过某种方法(可能使用hashcat),他发现我的密码是:Harivignesh1231$2$3 他也知道我的盐是(因为它也存储在数据库中):1$2$3

所以他可以从密码中删除 1 美元 2 美元 3 美元(盐),是的,他找到了,对吗?有那么容易吗?那么它怎么能像他们所说的那样更安全!或者加盐只是为了确保每个密码都是唯一的?

帮助这个新手克服这个疑问,请指出我的想法是否有误,非常感谢您提前的解释!

安全 哈希 密码

评论


答:

1赞 symcbean 6/12/2023 #1

因为用户选择可预测的密码,并且有可能的密码的哈希数据库 - NIST 引用每个字符 4 位的熵数。这些数据库称为 Rainbow 表。使用盐意味着攻击者需要使用盐分值再次计算所有哈希值。

评论

0赞 Royce Williams 6/12/2023
盐的目的确实是抵抗预计算(使其不可行)。细微差别:早在我们求助于彩虹表之前,我们只是在“直接”单词列表攻击中使用密码破解者所说的“字典”或“单词列表”(常用密码列表)。然后,我们继续进行其他有效的攻击,早在彩虹表(规则、面具等)出现之前。事实上,借助现代 GPU 的强大功能,彩虹表现在只在非常狭窄的情况下有用(已知长度较短的随机或异常密码、高价值目标、非常少的哈希值)。大多数哈希破解者从不使用它们。
2赞 President James K. Polk 6/12/2023
@RoyceWilliams:彩虹表在与它们一直完全相同的情况下很有价值:可以进行预计算,攻击者正在追寻多个密码。
0赞 Royce Williams 6/13/2023
@PresidentJamesK.波尔克:我们必须让我们各自的发言代替辩论。:D
0赞 martinstoeckli 6/19/2023 #2

通过某种方法”是这里的关键,不可能将哈希值转换为其原始密码。hashcat 所做的是尝试数百万个可能的密码,并检查它们是否会导致被盗的哈希值。

使用长盐(比您的示例中长得多),不可能在单个彩虹表中预先计算所有这些哈希值,以便以后快速获取密码。加盐的密码需要太多的组合/时间。Harivignesh123mI82hjHHw1QwertxcvgZP0

因此,通过加盐,攻击者只有在知道盐之后才能构建彩虹表,然后彩虹表只能用于该盐。由于每个密码都使用唯一的盐,因此彩虹表只能找到一个密码。

如果您想了解有关此主题的更多信息,可以查看我关于安全存储密码的教程。

评论

0赞 Harivignesh 6/24/2023
谢谢你帮助我,是的,我从你的解释中理解了这个概念。@symcbean