Passwords 如何防御离线暴力密码攻击?

Passwords 如何防御离线暴力密码攻击?,passwords,Passwords,我想知道这是否是一种常见的做法,盐和散列一个密码,如 E(填充| |散列(salt | |密码)) 其中| |是串联,E使用RSA作为示例。我主要是为了传输密码数据库而问这个问题(而不是在线存储,在在线存储中,服务器将始终拥有私钥来解密加密的密码) 我知道加密散列应该是不可逆的,但是对弱密码的离线暴力攻击很容易泄露密码。要最终解密该数据库中的记录,服务器将知道填充的长度,只需去掉填充以显示哈希(salt | |密码) 这不是一个典型的问题,但我找不到关于某人必须正确传输密码数据库并抵御脱机攻击的

我想知道这是否是一种常见的做法,盐和散列一个密码,如

E(填充| |散列(salt | |密码))

其中| |是串联,E使用RSA作为示例。我主要是为了传输密码数据库而问这个问题(而不是在线存储,在在线存储中,服务器将始终拥有私钥来解密加密的密码)

我知道加密散列应该是不可逆的,但是对弱密码的离线暴力攻击很容易泄露密码。要最终解密该数据库中的记录,服务器将知道填充的长度,只需去掉填充以显示哈希(salt | |密码)


这不是一个典型的问题,但我找不到关于某人必须正确传输密码数据库并抵御脱机攻击的参考。

如果您控制尝试解密数据库的函数,请在重试之间放置1秒的计时器

这肯定会使蛮力的速度减慢一点

  • 使用字典中不会显示的密码
  • 使用

  • 或者只加密密码数据库本身。如果无法传输解密密钥,则可以使用公钥加密对解密密钥进行加密。

    关键在于,在用户登录和存储密码时进行比较时,您将以相同的方式对密码进行加密。拥有一个好的salt可以防止有人进行标准查找,还可以增强哈希抵抗字典攻击的能力。如果salt和密码组合在一个散列中,将大大减少脱机攻击的使用,并且您无需采取任何特别的预防措施来保护它。

    使用强加密密码文件,那么密码如何存储在文件中并不重要

    使用类似PGP的东西进行运输

    我注意到这个答案在其他人投票之前被否决过一次,我只是想澄清一下,因为我怀疑否决我答案的人实际上没有读过这个问题。另一方面,对于提出问题的人来说,可能不可能对整个文件进行完全加密。如果是这样的话,这将是一个方便的问题澄清

    无论如何,问题明确指出这是关于传输数据(数据库)。它还特别指出,这与在线存储和使用无关

    因此,对整个文件使用安全的加密方法确实是最好的方法,因为这样您就不局限于操纵文件内容来试图屏蔽每个密码

    相反,整个文件将毫无意义,如果要传输的不仅仅是密码文件,它将与更多的数据集中在一起,从而与更多的数据一起加密,这使得识别密码的过程几乎不可能


    如果你选择一种声誉良好的加密算法和实现(PGP、GPG等),那么对此类加密文件的攻击成功的可能性要比你自己发明的东西小得多,或者至少让攻击者很容易找到小块的个人密码。

    所有其他响应都很好,但我要补充一点:

    定期强制更改密码


    这是中断离线暴力攻击的可靠方法。打击移动目标更难。

    防止暴力攻击的唯一方法是使用慢速哈希算法。现在或者是一条路要走,因为它可以配置为需要大量CPU时间和荒谬的RAM。随着CPU速度的提高和内存的减少,您只需增加设置并降低散列速度

    如果你每秒能猜到数百万个哈希,或者只猜到几个dozend,那就真的很不一样了


    Codinghoror有一篇关于这个话题的好文章:

    不,因为破解者会编写他的程序来避免延迟。#2在你上面的回答中正是我刚才所说的:-可能,但暴力程序依赖于每秒能够尝试数百次。Fredou:是的,但你的措辞意味着使用“睡眠”或“延迟。”我强调了“离线”这几个字“为了让这一点更清楚,用户可能只有时间,cpu速度,还有算法ram的折衷技巧使它们变慢。对于需要解密密钥才能读取密码文件的主机来说,这是没有用的。这只意味着你必须偷更多的东西:)正如我所理解的,这是关于将数据库从a传输到B(可能是DVD,可能是通过互联网)以及如何最好地保护它的问题。因此,加密传输层(即加密DVD)对我来说似乎是唯一可行的方法。这也将保护数据库中的弱密码。1-#2假设您可以控制密码数据库本身,就像人们提出的大多数建议一样。因此,我提出了另一个建议。为什么需要传输密码数据库?我的经验表明,被迫更改密码的用户只需使用相同的基本密码并添加一个字母/数字。如果你强迫用户使用神秘的密码,他们只需要写下来。。。总的来说,密码很糟糕:)即使他们稍微更改了密码,它仍然有帮助。盐渍可以防止彩虹攻击。是的,密码很糟糕,但是除非你想使用一些硬件方法,否则你没有太多的选择。多个普通语言单词的密码短语比相对较短(10个字符)的随机噪声字符串更容易记住,也更安全。IMHO密码强度检查器应该停止对密码中的特定字符有任何要求,只要求它们至少有30个字符长。但是,是的,你仍然有点坚持定期更换它们