Cryptography SHA-1密码存储是否安全?

Cryptography SHA-1密码存储是否安全?,cryptography,hash,sha1,Cryptography,Hash,Sha1,结论:SHA-1与任何东西一样安全,可以抵御前映像攻击,但它易于计算,这意味着更容易发起暴力或字典攻击。(对于像SHA-256这样的后继函数也是如此。)根据具体情况,设计为计算开销大的散列函数(如bcrypt)可能是更好的选择 有些人经常说“SHA-1坏了”之类的话,所以我试图理解这到底是什么意思。假设我有一个SHA-1密码哈希数据库,一个拥有最先进的SHA-1破解算法和一个拥有100000台机器的僵尸网络的攻击者可以访问它。(拥有超过10万台家用电脑意味着他们每秒可以进行10^15次操作。)

结论:SHA-1与任何东西一样安全,可以抵御前映像攻击,但它易于计算,这意味着更容易发起暴力或字典攻击。(对于像SHA-256这样的后继函数也是如此。)根据具体情况,设计为计算开销大的散列函数(如bcrypt)可能是更好的选择


有些人经常说“SHA-1坏了”之类的话,所以我试图理解这到底是什么意思。假设我有一个SHA-1密码哈希数据库,一个拥有最先进的SHA-1破解算法和一个拥有100000台机器的僵尸网络的攻击者可以访问它。(拥有超过10万台家用电脑意味着他们每秒可以进行10^15次操作。)他们需要多少时间

  • 查找任何一个用户的密码
  • 查找给定用户的密码
  • 查找所有用户的密码
  • 是否找到作为用户之一登录的方法
  • 是否找到以特定用户身份登录的方法
  • 如果密码是咸的,这会发生什么变化?盐析的方法(前缀、后缀,两者都有,或者像xor盐析这样更复杂的东西)重要吗

    这是我目前的理解,在谷歌搜索之后。如果我误解了什么,请更正答案

    • 如果没有盐,彩虹攻击会立即找到所有密码(除了非常长的密码)
    • 如果存在足够长的随机salt,则找出密码的最有效方法是暴力或字典攻击。冲突和前映像攻击都无助于找出实际密码,因此针对SHA-1的加密攻击在这里毫无帮助。使用什么算法都无关紧要——甚至可以使用MD5或MD4,密码也同样安全(因为计算SHA-1散列的速度较慢,所以略有不同)
    • 为了评估“同样安全”的安全性,我们假设一次sha1运行需要1000个操作,密码包含大小写和数字(即60个字符)。这意味着攻击者每天可以测试1015*60*60*24/1000~=1017个潜在密码。对于暴力攻击,这意味着在3小时内测试所有密码,最多9个字符,一周最多10个字符,一年最多11个字符。(每增加一个字符就需要60倍的时间。)字典攻击速度要快得多(即使只有一台计算机的攻击者也可以在数小时内完成攻击),但只能找到弱密码
    • 要以用户身份登录,攻击者不需要找出确切的密码;找到一个结果相同的哈希的字符串就足够了。这称为第一次前映像攻击。据我所知,没有针对SHA-1的前照攻击。(一次蛮力攻击需要2160次行动,这意味着我们理论上的攻击者需要1030年才能成功。理论上的可能性限制在260次行动左右,攻击需要几年时间。)有一些行动的效果可以忽略不计(对于使用44步而不是80步的精简版SHA-1,攻击时间从2160次减少到2157次)。对SHA-1的碰撞攻击在理论上是可行的(将时间从280次减少到252次),但这些攻击对密码散列无效,即使没有satting
    简而言之,用SHA-1存储密码似乎非常安全。我错过了什么吗


    更新:Marcelo指出了一篇文章,其中提到(编辑:因为,这种攻击是一种假设的构造,不适用于现实生活场景。)不过,我仍然不明白这会给使用SHA-1作为关键派生函数带来什么危险。是否有充分的理由认为碰撞攻击或第二个前映像攻击最终会变成第一个前映像攻击?

    在SHA-1中发现了严重的漏洞,使得搜索速度比b快得多这在很大程度上仍然难以解决,但预计这种情况不会持续太久;偏执的程序员喜欢来自SHA-2家族的东西

    关于2005年的原始结果:

    “该走了,但不能跑。你看不到烟,但火警已经响了。”

    这并不是因为目前的密码分析使SHA-1不安全,而是因为密码社区担心更坏的消息可能即将到来。这种担心也适用于SHA-2,它与SHA-1具有相同的缺陷,尽管搜索空间要大得多,因此仍在继续寻找


    简言之,SHA-1目前是安全的,而且可能在未来一段时间内是安全的,但加密社区对预后感到不安。

    如果您存储加密密码,SHA-1在实际应用中是安全的。 SHA-2被认为更安全,但SHA-1不是问题,除非你有理由变得真正偏执

    以下是NIST的观点:

    目前在SHA-1上显示的结果 不要把它的安全性称为 问题。但是,由于 技术,NIST计划逐步淘汰 SHA-1有利于更大的 更强的散列函数(SHA-224, SHA-256、SHA-384和SHA-512)由 2010年


    就目前的技术水平而言,你的描述听起来很准确

    但是,您不应该使用任何哈希函数的一次迭代:至少,您应该迭代多次(哈希函数的1000次迭代会使攻击者的工作量增加1000倍。它会使您的工作量增加相同的数量,但您所做的密码哈希要比它们少得多)


    但是,理想情况下,您应该使用现有的密码存储原语,如所述。

    对您的问题的简短回答是:SHA-1是尽可能安全的。MD5也可以,即使是MD4;但它可能会让一些投资者感到紧张。对于公共关系,它是