不止一次,我被要求为我正在开发的软件实施密码选择规则.典型的建议包括:
等等.
虽然有些事情总是让我对密码施加任何限制 - 通过限制可用密码,你减少了所有允许密码的空间大小.这不会让密码更容易猜到吗?
同样,通过让用户创建复杂且频繁更改的密码,将其写下来的诱惑力也会增加,同时也会降低安全性.
是否存在密码限制规则使系统更安全的定量证据?
如果有,有什么"最安全"的密码限制策略可供使用?
编辑 ÓlafurWaage善意地指出了一篇关于字典攻击的Coding Horror文章,其中有很多有用的分析,但令我感到震惊的是,字典攻击可以大大减少(正如Jeff建议的那样),只需在认证尝试失败后添加延迟.
考虑到这一点,有什么证据表明强制复杂密码更安全?
大多数服务,程序等都有各种密码复杂性检查.在没有深入研究这种检查的功效的情况下,我想到了一个可能有趣但也可能有问题的检查:
"新密码必须是Y与上一个X密码不同的字符."
这会阻止人们使用像Password1!,Password2!等等的密码.但是如果这样做了,就不能对先前使用的密码进行哈希处理 - 它们最好是加密的......对吧?
对于一个小Y而且相当短的密码,你可能仍然可以存储哈希和暴力Y破解新密码的所有字母变体,但是随着Y密码长度的增加而变得不可行.
我最初的想法是这样的:因为当你更改密码时,你必须提供你的原始密码,散列新密码并以加密形式存储旧密码.现在它是可逆的.
因此,假设有效密码始终是哈希值,那么有更好的方法吗?并且这样做是否会增加或降低应用程序的安全性?