Security 通过键空间而不是使用字符类检查密码复杂性的好处? 问题:

Security 通过键空间而不是使用字符类检查密码复杂性的好处? 问题:,security,passwords,Security,Passwords,检查密钥空间的密码而不仅仅是检查长度和使用的字符类会有什么缺点 细节: 我已经开始使用短语作为密码,而且我经常会因为用户友好而碰壁,因为密码要求阻止了我的密码。更糟糕的是,我遇到过有密码长度限制或不接受空格等的系统 例如,标准密码检查器需要至少8个字符、1个数字、1个大写字母、1个小写字母和1个符号。如果我希望我的密码是“stackoverflow是有史以来最好的网站”,检查者会抛出一个错误,但我的passphrse的键空间明显大于基本要求 "C0mplex?"

检查密钥空间的密码而不仅仅是检查长度和使用的字符类会有什么缺点

细节: 我已经开始使用短语作为密码,而且我经常会因为用户友好而碰壁,因为密码要求阻止了我的密码。更糟糕的是,我遇到过有密码长度限制或不接受空格等的系统

例如,标准密码检查器需要至少8个字符、1个数字、1个大写字母、1个小写字母和1个符号。如果我希望我的密码是“stackoverflow是有史以来最好的网站”,检查者会抛出一个错误,但我的passphrse的键空间明显大于基本要求

"C0mplex?"                               => 6.0956893 × 10^15
"stackoverflow is the best website ever" => 2.4650347 × 10^54
由于我必须自己设计这样的系统,我已经开始探索检查密码的键空间大小并要求最小键空间而不是特定特征(当然还有常见/明显的密码检查)的想法。这样,不管您使用的是8个字符的混合符号密码还是12个字符的不区分大小写的字母数字密码,它们都通过了复杂性检查


你们有什么想法/注意事项吗?

除了编写检查键空间要求的代码比检查字符类更难这一事实之外,并没有其他缺点,所以大多数网站(让我们面对它不是由杰出的安全专家或编码人员创建的)都不麻烦


更糟糕的是-限制为最大长度的密码通常是因为它们将您的密码存储在数据库中的clear中,并且有一个固定长度的存储列,任何对安全性稍有了解的人都会知道,这是不可接受的,因为密码应该在服务器上进行加密和散列。

这是一个有趣的问题,但投票结束是离题的。另见::-)很确定以前也问过类似的问题(我必须找到链接)。结论是,即使攻击知道您是如何创建密码的(即短替换与长短语),短语也会很快击败包含更多字符的短密码,即使面对字典攻击也是如此。