盐渍SHA1与盐渍SHA512相比有多不安全

jbl*_*lue 7 php security hash sha1 sha512

SHA512比SHA1更复杂,但是与使用512对哈希值进行散列相比,使用SHA1对盐渍密码进行哈希处理会损失多少安全性?就拥有数据库的人破解单个密码所需的时间而言.我使用的框架不能让我轻松访问SHA512,我必须覆盖一些东西以使其工作,所以我想只使用SHA1,虽然在过去我总是使用SHA512.

Tho*_*nin 13

SHA-1目前已知的弱点不会影响您尝试执行的操作的安全性.从其散列版本恢复密码的不可能依赖于"原像素抗性",据我们所知,这仍然是SHA-1完全不可行的.使用SHA-512,SHA-256甚至MD4或MD5也完全不可行.一个以科幻为导向的思想可以设想计算机能够在2050年左右找到MD4或MD5的预成像; SHA-1需要更长的时间.

现在碰巧虽然没有已知的在SHA-1上计算preimages的快捷方式,但也没有什么安全性证明.在数学词汇中,如果SHA-1中使用的压缩函数与"随机预言"无法区分,那么它对于预映像是安全的.但是SHA-1的已知弱点(理论上)导致了碰撞,也表明它的压缩函数不是一个随机的神谕.因此,SHA-1对抗preimages的安全性不再是"有很好的数学原因,为什么它不会破坏"说服力.它更像是"meh,还没有找到如何打破它".

用更普通的话来说,如果你使用SHA-1那么你可能需要证明自己是正确的.即使你没有做错任何事,你对SHA-1的选择也会受到质疑.虽然没有人会质疑使用SHA-256或SHA-512,即使它意味着一些开发开销.简而言之,使用SHA-1是糟糕的公共关系.

请注意,腌制与该问题完全正交.Salting旨在防止对不同密码实例的攻击之间的成本分摊.预先计算的表(包括所谓的"彩虹表")是一种共享(表构建很昂贵但可以用来攻击2,10,10000个密码,每个受攻击密码的额外成本较低).腌制失败分享.腌制很好.击败共享很重要,因为攻击一个密码是可能的:不是因为哈希函数,而是因为密码是适合人类大脑的东西,因此适合暴力("字典攻击").对于与密码相关的任何内容,由于散列函数的弱点,您不会遇到问题,但是因为您首先使用密码.


Dan*_* D. 5

已证明SHA1算法存在安全漏洞,可能导致攻击.我建议使用SHA2的变体(SHA 256或SHA 512).

至于需要多长时间才能破解存储在不同哈希值中的密码,如果不知道攻击者的处理能力,密码有多长,如果他们使用彩虹表,盐是多么随机,就很难说,但是,如果算法有问题,它可能会导致更容易找到散列值的方法或等同于相同散列(称为碰撞)的不同值,就像MD5的情况一样.

(来源和更多信息:http://en.wikipedia.org/wiki/SHA-1)