在 Ubuntu 12.04 上,我创建了多个用户和密码,然后立即尝试使用 John the ripper 破解这些密码。 一个密码非常强,但其他密码都在我的单词列表中。
John 仍在运行,但到目前为止我已经在大约 20 分钟内破解了两个。
我读到的所有内容都谈到盐是否已知。 以这个哈希为例:
john:$6$YiP34XiXdXyh9fZn$JrbLMb.VGncFzEyBlz5YsKUim.UE5JLPvFhfcgAH4lz.usOrh.lic8IrQx0PRMIvIIIK4KnaTs9fiEXwNOLJ1/:1003:1003:John,,,:/
盐是:
YiP34XiXdXyh9fZn
,对吗? 我的意思是,这不是一直都知道的吗? 所以盐除了防止使用彩虹表之外真的没有任何作用,对吗?
还有这个帖子:
暴力破解加盐 SHA-512 哈希需要多长时间? (提供盐)
据此,除非密码位于单词列表中,否则 sha512 本质上根本无法被破解。 这篇文章已经有一年多了,大家有什么新的见解吗? 我发现很难找到关于破解哈希值的好资源;所有信息都是关于生成哈希值和保护密码的。
这篇文章确实很旧,但我还是想纠正它。
加盐不仅可以防止彩虹表攻击,还可以减缓针对大量哈希值的猜测攻击,例如包含密码哈希值的数据库表。
作为攻击者,你不会愚蠢到单独攻击每个哈希。
相反,你会同时攻击他们。
您可以浏览单词列表中的每个条目(或使用暴力破解或其他一些技术来生成猜测),为其生成哈希值,并将其与数据库中的所有哈希值一次性进行比较。
这样,您只需计算每个哈希一次,同时能够使用每个哈希检查数千甚至数百万个密码。
使用每个哈希值的随机盐,您必须单独计算每个密码的每个哈希值。
这意味着攻击加盐密码哈希转储所需的时间几乎是转储中哈希总数的一个因子。
当然,这对数据被盗的公司没有帮助,但它在一定程度上保护了服务的用户。尤其是那些密码强度稍强但仍可猜测的密码,其中有很多。
在您的示例中,盐是
YiP34XiXdXyh9fZn
(base-64 encoded
)。是的,在这种情况下,盐只能防止彩虹表。
SHA512
现在仍然安全。攻击者需要密码列表。