读懂熵值
下列等级是对比特数的一种呈现性分组,其划分意在把会被离线攻击攻破的密码与不会被攻破的区分开。旁边列出的后果是由熵计算得出的,而不是人为指定的。
| 熵 | 等级 | 实际含义 |
|---|---|---|
| 低于 40 比特 | 弱 | 离线攻击几乎可以立刻穷举 |
| 40 – 59 比特 | 一般 | 能挡住随手尝试;面对有决心的离线攻击则会失守 |
| 60 – 79 比特 | 强 | 超出针对良好哈希的常规离线攻击能力范围 |
| 80 比特及以上 | 很强 | 穷举搜索不再是薄弱环节;重复使用和钓鱼才是 |
- 密码在你的浏览器内使用平台的密码学安全随机源生成,并被特意排除在本站所有分析与 AI 功能之外。它绝不会被传送出去。
- NIST SP 800-63B 建议验证方不要强制要求混用不同类型的字符,也不要强制定期更换密码,但在有迹象表明已被泄露时应当强制更换。
密码熵衡量的是什么
熵衡量的是生成器本可以产生多少个可能性相同的密码,以比特表示。若生成器从 N 个字符的字符集中独立抽取每一个字符,生成长度为 L 的密码,其熵为 L x log2(N) 比特,而每多一比特,攻击者必须尝试的候选数量就翻一倍。
熵是生成器的属性,而不是它所产生字符串的属性。某一个具体密码本身并没有熵——真正的问题只在于它是从多大的空间里抽出来的。这正是为什么无法诚实地给你自己想出来的密码标注比特数,而对生成的密码则可以。
这也是长度胜过复杂度的原因。给一个从 76 个符号中抽取的 20 位密码再加一个字符,约增加 6.2 比特;给一个很短的密码再加上一整类字符,增加的要少得多。NIST 的指南正体现了这一点:SP 800-63B 告诉验证方,不应强制要求混用不同类型字符的组合规则,并且应当允许长度至少 64 个字符的密码。
如何使用密码生成器
- 选择长度。加长是你能做出的最有效的单项改变。
- 选择要包含哪些字符类别。每增加一类都会扩大字符集,从而提高每个字符的熵。
- 如果这个密码需要被朗读或手工抄写,请排除形近字符——你用少量熵换取更少的转录错误。
- 读取熵值。它是衡量强度的诚实指标;所需年数只是把同一个数字表达成时间长度。
- 把密码存进密码管理器,而不要重复使用。重复使用会让再高的熵都失去意义。
熵值背后的公式
每个字符都从字符集中独立且均匀地抽取,因此可能的密码数量等于字符集大小的长度次方。熵就是这个数量以 2 为底的对数。
时间数字假定的是针对快速且防护薄弱的哈希、以每秒一万亿次尝试进行的离线攻击,并给出搜索一半空间的期望时间。它只是数量级的示意,而不是预测:经过适当强化的密码哈希被攻击的速度要慢好几个数量级,而以明文泄露的密码则根本不需要时间。
常见错误
- 增加一类字符而不是增加长度。长度抬高熵的速度要快得多。
- 在多个站点重复使用同一个强密码。此时任何一处服务泄露都会危及其余全部,无论熵有多高。
- 在熟悉的单词里替换字符,比如把 password 写成 P@ssw0rd。破解工具用的正是这些替换规则。
- 把强度指示器对你自己想出的密码给出的判断当成熵的测量结果。熵描述的是生成器,不是某个字符串。
- 为了更换而按日程更换密码,NIST 并不建议这样做;应在有迹象表明泄露时更换。
常见问题
密码应该多长?
NIST SP 800-63B 为用户自选的密码设定了 8 个字符的下限,并要求验证方至少允许 64 个字符。对生成的密码而言,长度是最关键的杠杆:在 76 个字符的字符集下,每多一个字符约增加 6.2 比特的熵,搜索空间大约每个字符翻一倍。
以比特计的密码熵是什么?
它是生成器本可以产生的密码数量以 2 为底的对数:长度 x log2(字符集大小)。一个从 76 个字符中抽取的 20 位密码带有 20 x log2(76) = 125 比特。每多一比特,攻击者需要测试的候选数量就翻一倍。
混用不同类型的字符会让密码更强吗?
这会扩大字符集,因而提高每个字符的熵——但远不如加长有效,而且 NIST SP 800-63B 明确建议验证方不要强制要求这类混用的组合规则。一条只用一类字符的长口令,胜过一个用了四类字符的短密码。
密码会被发送到什么地方吗?
不会。它在你的浏览器内由操作系统的密码学安全随机源生成,并且这个计算器被明确排除在为本站其他功能提供数据的结果发布之外,因此它绝不会被传送或记录。
我应该定期更换密码吗?
NIST SP 800-63B 不建议无缘由的定期更换,理由是这会促使人们采用可预测的变体。但在有迹象表明凭据已被泄露时,它要求更换。每个站点使用唯一密码并存放在密码管理器中,比一份轮换日程更有益。
参考文献
- Grassi PA, Garcia ME, Fenton JL. NIST Special Publication 800-63B: Digital Identity Guidelines — Authentication and Lifecycle Management. National Institute of Standards and Technology, 2017 (with subsequent errata). Section 5.1.1 on memorized secrets.
- Shannon CE. A Mathematical Theory of Communication. Bell System Technical Journal 1948; 27(3): 379-423 — entropy as a measure of uncertainty.
- World Wide Web Consortium. Web Cryptography API — Crypto.getRandomValues(), the cryptographically strong random source used here. w3.org.
- National Cyber Security Centre (UK). Password policy: updating your approach. ncsc.gov.uk.