原文恕删
先讲结论,基本上你能想到的增加自己麻烦的反人类的机制,
几乎都无助于强化密码安全。
至于细节,若要讲怎么设密码来防止暴力踹密码,
就必须了解是怎么暴力踹密码的。
暴力踹密码的基本方向不外乎两种:字典攻击与穷举。
字典攻击这个比较复杂先不提,
穷举法破解密码的所需期望时间基本上可简单写为:
期望时间 = 可能的密码组数 x 平均踹一组密码费时
所以任何能增加可能密码组数或是增加踹一组密码花费时间的方法,
理论上都能强化密码的安全性。
所以
错误一,“要求使用”特殊字符与英数大小写的密码比较难踹
很简单的道理,能要求使用特殊字符当密码的网站,代表输入字段能接受特殊字符。
在能使用特殊字符的前提下,是限制必须怎么使用特殊字符的密码组数比较多,
还是不限制使用特殊字符的密码组数比较多?
废话当然是不限制的比较多,报废的越多剩下的越少天经地义
这个方法基本上就是针对字典攻击,
但字典攻击有效的密码本来就因为有效字符少(可能组数少)而非常脆弱,
还不如十位的随机密码。
而即使是能强化密码的方法,也有效果的差距,
多输入一次就是上火度特别高外效果还特别烂的那种方法。
多输入一次 = 踹一组密码时间加倍 = 期望时间加倍
BUT,一般来说我们踹一组密码要花多久?算0.01秒好了,
踹5次禁五分钟的效果是:
踹5次禁五分钟 = 平均踹一组密码花1分钟 = 期望时间6000倍
效果是多输入一次的3000倍不说还不会上火。
然后即使是这个方法仍然赢不了多开放三位密码:
多一位密码(数字英文大小写) = 增加至62倍的密码组数
多两位密码(数字英文大小写) = 增加至3844倍的密码组数
多三位密码(数字英文大小写) = 增加至24万倍的密码组数
详细就不写了,透过简单的复杂度(建议自己去查)计算,
防暴力破解的方法按有效性排列:
可用位数增加 > 可用字符增加 > 冷却时间 >> 多输入一次 > 0 > 强制特殊字符
其实一般10~12位的随机密码就已经非常硬了,其他都多打的,
再加冷却时间完全足以能让人放弃暴力破解。
骇客不是傻瓜,比起跟密码死嗑,
还不如做个假网页或是侧录让使用者自己吐密码出来简单的多。