不止一次,我被要求为我正在开发的软件实施密码选择规则.典型的建议包括:
密码长度必须至少为N个字符;
密码必须包括小写,大写和数字;
不重复使用最后的M个密码(或P天内使用的密码).
等等.
虽然有些事情总是让我对密码施加任何限制 - 通过限制可用密码,你减少了所有允许密码的空间大小.这不会让密码更容易猜到吗?
同样,通过让用户创建复杂且频繁更改的密码,将其写下来的诱惑力也会增加,同时也会降低安全性.
是否存在密码限制规则使系统更安全的定量证据?
如果有,有什么"最安全"的密码限制策略可供使用?
编辑 ÓlafurWaage善意地指出了一篇关于字典攻击的Coding Horror文章,其中有很多有用的分析,但令我感到震惊的是,字典攻击可以大大减少(正如Jeff建议的那样),只需在认证尝试失败后添加延迟.
考虑到这一点,有什么证据表明强制复杂密码更安全?
虽然有些事情总是让我对密码施加任何限制 - 通过限制可用密码,你减少了所有允许密码的空间大小.这不会让密码更容易猜到吗?
从理论上讲,是的.在实践中,您不允许使用的"弱"密码代表所有可能密码的一小部分,在没有限制时不成比例地经常选择,并且哪些攻击者首先知道攻击.
同样,通过让用户创建复杂且频繁更改的密码,将其写下来的诱惑力也会增加,同时也会降低安全性.
正确.强迫用户每月更改密码是一个非常非常糟糕的想法,除非在极端高安全性的环境中,每个人都真正了解安全需求.