这里的随机意味着“对攻击者来说将是耗时的”。
密码在技术上由各种字符(可能是小写、大写等)组成,因为它们是作为字符串处理的。有两种密码:
- 由用户处理的
- 由密码管理器处理的那些
第二种情况很简单:尽可能地进行长而复杂的组合,直到应用程序要求输入密码的限制(他们设置了一些限制,有时这些限制是可怕的)。!sg8Itp2%hjxXxo6a6TGMbJs8Jcxtk205XgZ@M^C2CmAgfC*q6
是我刚刚想出的一个很棒的密码,随机和一切。
第一种情况更复杂,因为你的记忆、对你来说什么是“随机”以及什么是“角色”之间存在冲突。
让我们从一开始就明确表示,除了上述真正随机密码之外的任何其他内容都会大大减少所谓的“密钥空间”,即密码的可能性数量。密钥空间越大越好。但这不是问题,当仔细接近时。
您唯一的目标是建立一个需要“很长时间”才能破解的密码。你自己定义什么是很长的时间。这可以是 1 分钟或 100 年。由于统计数据和 CPU 便宜的事实,让我们瞄准 1000 年。一个专门的破解者 1000 年的努力,他将拥有 NSA 的计算能力。
破解者将通过尝试所有可能的组合来攻击您的密码(我在这里对应用程序所有者的密码存储质量做出了一些假设)。这意味着他会尝试a
, b
, ... aa
, ab
, ...
嗯,不。他不会尝试这样做,因为他知道您的密码可能至少有 6 个字符长。这里是关于随机性的关键点之一:您必须绝对假设破解者知道您的密码是如何构建的。这里没有“默默无闻的安全性”(它在其他地方很有用,但不是在这里)。
这将我引向最后一部分:你的记忆。你不会很擅长记住我之前给出的 50 个字符的密码。你最终会得到一些类似于单词及其变体的东西。拥抱它!整月建立一个由几个(4 或 5)个随机单词组成的密码!
但是“每个人都说使用字典单词不好”。那些不做数学的人做。
让我们计算一下:您有一个由 4 个单词组成的密码,每个单词都是 7000 种可能性中的一种(这是人口的平均词汇量。请注意:
- 总词汇量在 70,000-100,000 个单词的范围内(法语或英语)...
- ...所以我们选取了一小部分您可以实际想到的单词...
- ...因为你可能不会用骰子方法选择你的单词,而是突然出现
因此,您有7000^4 ~= 10^15
密码。高端专用破解环境可以10^10
每秒尝试组合,4字版本约1天。5个字带你到30岁。这是针对离线攻击,当攻击者掌握了您的密码数据库时。在线攻击是不切实际的(每秒大约 1000 个组合)。
作为比较,小写、大写和数字的 8 个字符的密码具有10^14
组合。
笔记:
- 上述信息适用于在线或离线攻击密码以获取正确存储的密码。这就是说,如果密码是明文存储的,或者是非加盐的短密码,会立即被破解
- 我坚信必须明智地选择密码策略。有时没有密码是可以的,有时多因素身份验证是要走的路。没有“一刀切”的解决方案。
- 我也坚信密码策略必须务实并解决现实世界的限制。不是每个人都能记住 253 个密码,这些密码长 25 个字符,每三个月更改一次。
- 可悲的是,许多标准和官方建议都像 [审查] 一样愚蠢,我们最终还是会得到
Hello1
密码,因为它们恰好符合构造规则。
我最近对来自 NIST、ISO27002、HIPAA、SANS、PCI-DSS、法国和德国政府机构、ISF 和 CobIT 的密码建议进行了比较(特别是在密码过期方面)。上面的顺序是从“深思熟虑”到“我把 90 年代一个随机的家伙或女孩发明的任何东西写在纸上,因为我在 6 年级时停止了数学,我的 4 个神经元不允许我集中更多的注意力20秒解决一个问题”
编辑:根据评论中的要求,以下是标准审查的结论。这与显示密码过期不会提高安全性的研究形成对比。
- 完全没有建议(NIST)
- 除了“定期更改”(ISO27002)之外没有其他建议
- 基于风险评估的变化,少于 2 年 (HIPAA)
- 180 天 (SANS)
- 90 天(PCI-DSS、法国和德国政府机构、ISF、CobIT)
考虑到他们所做的出色工作,ISF 的建议尤其令人失望。