熵:计算猜测次数
密码强度以熵的比特数衡量。从 N 种可能中随机选出的密码有 log2(N) 比特,每多一比特,攻击者的工作量就翻倍。从 94 个可打印字符中随机选出的 12 位密码约有 79 比特。关键在于随机二字:人自己选的密码,比如名字加年份再加感叹号,比特数远少于长度所暗示的,因为攻击者会优先尝试这些模式。
Diceware 和密码短语
1995 年,Arnold Reinhold 发布了 diceware:掷五颗骰子从 7776 个单词的列表中选一个词,然后重复。每个单词约增加 12.9 比特,所以六个单词约有 77 比特,而且仍然容易输入。电子前哨基金会(EFF)在 2016 年发布了改进的单词列表,本生成器使用其大列表。这个想法因 2011 年的一幅漫画而闻名,漫画把 correct horse battery staple 与难记却很弱的 Tr0ub4dor&3 做了对比。
指南怎么说
NIST 数字身份指南(SP 800-63B)更看重长度而非组成规则:允许长密码和密码短语,用泄露密码列表检查新密码,没有理由时不要强制定期更换。强制的复杂度规则大多导致可预测的模式。长度加上真正的随机性,以及每个网站使用不同的密码,重要得多。
攻击者猜测有多快
网站被攻破后,攻击者会针对被盗的哈希值进行离线猜测。使用快速哈希和现代显卡,每秒可达数十亿次,这正是这里显示的破解时间所依据的假设。bcrypt 或 Argon2 等慢速哈希会大大降低这一速度,但你无法知道网站使用的是什么。目标至少 70 到 80 比特,每个网站使用唯一密码,使用密码管理器并开启双重身份验证。
常见问题
密码应该多长?
对于包含字母、数字和符号的随机密码,16 位或以上可超过 100 比特。密码短语至少使用 5 到 6 个随机单词。增加长度是提升强度最简单的方法。
P@ssw0rd 这样的替换够强吗?
不够。攻击者熟悉常见替换并会自动尝试,所以几乎没有帮助。让密码变强的是真正的随机性。
应该定期更换密码吗?
现行指南认为不需要,除非有泄露等原因。频繁强制更换往往会产生更弱、更可预测的密码。请使用唯一的密码,并在可能泄露时更换。
准备好尝试了吗?
在浏览器中打开 PictorX — 无需安装,无需信用卡即可启动。
打开密码生成器