如果我cat /etc/shadow
可以得到 root 和我的用户的加密密码。
每个帐户的这些密码都是相同的(我知道,安全性很差),但/etc/shadow
它们显示为不同的加密字符串。
为什么?每个都使用不同的算法吗?
答案1
单独的用户意味着单独的用户 ID,因此算法将涉及单独的哈希值。
即使用户具有相同的名称、相同的密码并且同时创建,也会(几乎有一定的概率)最终得到不同的哈希值。还有其他因素有助于创建加密。
如果你想看一个简单的例子这里它可能会更好地解释它。
答案2
算法是一样的。现代影子套件使用可插入身份验证模块 (PAM),PAM 允许您配置一种哈希算法。这都是关于“加盐”,这意味着随机化密码以达到您所要求的效果。
加盐是字典攻击的一种对策,攻击者使用已知密码/哈希对的字典试图找出未知密码的给定哈希值是否与已知密码之一的哈希值匹配。
加盐可以防止这种情况,因为不同的盐值会导致不同的哈希值,因此密码是否相等并不重要。 (尽管如此,这仍然是不好的做法,但出于其他原因。)为了使字典攻击成功,攻击者现在必须拥有每个可能的盐值的字典。足够大小的真正随机盐将使此类攻击的成功概率可以忽略不计。
答案3
在影子文件中,您将看到 $$ 之间的数字(例如 $1$ 或类似的数字)。它指示您的机器使用哪种哈希算法。识别算法并看看它是如何工作的。例如,$6$ 是 SHA 512,它的设计方式是,即使两个人拥有相同的密码,他们的密码的哈希摘要也会不同。