提问人:Harivignesh 提问时间:6/12/2023 更新时间:6/19/2023 访问量:238
如果黑客从数据库中获取盐和我们的哈希密码,为什么他不能破解密码?[复制]
If an Hacker get salt and our hashed password from a database, why can't he hack the password? [duplicate]
问:
他们说,对密码加盐,然后对其进行哈希处理会更安全。我们都知道密码是加盐的,然后经过哈希处理,最终存储在数据库中。 在数据泄露期间,黑客可以获取密码(加盐和哈希)以及盐,因为盐也存储在数据库中以进行验证。 那么,如果黑客可以同时获得盐和密码,为什么不容易破解呢? 我以为在得到盐之后,黑客可以找到它是什么密码(加盐和散列),然后他可以从中删除盐来获取原始密码!
例如,考虑:(这就是我认为事情正在发生的方式) 我的密码:Harivignesh123 加盐 : 1$2$3
我的新盐票可能是:Harivignesh1231$2$3
在数据库中: 密码(加盐和散列):8a84dbd1ab769dfdeaf389a38a91feb7f0a3d9ea5e34254775dd66a5b82a402d 盐: 1$2$3
黑客从数据泄露中获取数据后: 通过某种方法(可能使用hashcat),他发现我的密码是:Harivignesh1231$2$3 他也知道我的盐是(因为它也存储在数据库中):1$2$3
所以他可以从密码中删除 1 美元 2 美元 3 美元(盐),是的,他找到了,对吗?有那么容易吗?那么它怎么能像他们所说的那样更安全!或者加盐只是为了确保每个密码都是唯一的?
帮助这个新手克服这个疑问,请指出我的想法是否有误,非常感谢您提前的解释!
答:
因为用户选择可预测的密码,并且有可能的密码的哈希数据库 - NIST 引用每个字符 4 位的熵数。这些数据库称为 Rainbow 表。使用盐意味着攻击者需要使用盐分值再次计算所有哈希值。
评论
“通过某种方法”是这里的关键,不可能将哈希值转换为其原始密码。hashcat 所做的是尝试数百万个可能的密码,并检查它们是否会导致被盗的哈希值。
使用长盐(比您的示例中长得多),不可能在单个彩虹表中预先计算所有这些哈希值,以便以后快速获取密码。加盐的密码需要太多的组合/时间。Harivignesh123mI82hjHHw1QwertxcvgZP0
因此,通过加盐,攻击者只有在知道盐之后才能构建彩虹表,然后彩虹表只能用于该盐。由于每个密码都使用唯一的盐,因此彩虹表只能找到一个密码。
如果您想了解有关此主题的更多信息,可以查看我关于安全存储密码的教程。
评论
下一个:零访问加密和“忘记密码”部分
评论