易记密码短语生成器(Diceware式)
通过随机组合常见单词,生成易于记忆、也便于口头传达的密码短语。可指定单词数量、分隔符、首字母大写和末尾数字,全部处理均在浏览器内完成。
关于 Diceware 密码短语方法
Diceware 是一种通过骰子(或其他随机来源)从单词表中选取若干单词并拼接起来生成密码的方法。相比随机的字母符号串,其结果对人类而言更容易记忆,并且随着单词数量增加,其抵御暴力破解的强度(熵)会呈线性增长。
密码短语生成是什么
密码短语是以多个常见单字符串接而成的密码,取代掺入符号的短字符串。对人而言,它作为单字的排列很好记,而只要增加单字数量,对暴力破解的强度便会呈直线上升。本工具可指定单字数、分隔字符、大写化与数字附加,当场生成密码短语。
生成使用密码学上安全的乱数,处理全部在浏览器内完成。既不会送往服务器也不会储存,因此请当场复制所显示的字符串。重新载入页面便会换成另一组组合。一併显示的推估强度,是由单字表的规模与单字数所推算的参考值。
密码短语的产生方法
- 决定单字数 建议6个以上。本工具的单词表有853个单词,每个单词约9.7比特,6个单词约58比特,超过由字母、数字和符号随机组成的8位密码(约52比特)。
- 选择分隔字符 在需要口头传达的场合,连字号较易朗读而便利。若服务不允许空白,请选择其他符号。
- 设定大写化与数字附加 这是为要求必须含大写或数字的服务所做的调整。可在满足要求的同时保持好记。
- 生成并复制 可重新产生直到出现满意的组合。决定後请当场复制并登录至保存处。
用好本工具的小技巧
- 建议至少使用6个单词。4个单词(约39比特)的强度只相当于由字母、数字和符号随机组成的6位密码。
- 在需要口头告知或手写记录的场景(如Wi-Fi密码)中,连字符分隔更易读,也能减少输入错误。
- "在末尾添加2位数字"用于满足要求至少包含一个数字的服务。数字并不是符号,因此若服务要求必须包含符号,请选择连字符或句点等符号作为分隔符。
- 生成的密码短语仅用于显示,不会被保存。刷新页面会生成新的组合,如需使用请立即复制。
密码短语的实用场景
决定 Wi-Fi 的密码
由于经常需要口头告知访客,单字的排列远比符号的罗列容易传达。以连字号分隔适合朗读。
密码管理工具的主密码
这是唯一需要自己记住的密码。可在确保长度的同时做成能够记忆的形式。
加密文件的通行密语
作为 ZIP 或磁碟加密所用的通行密语,可选择易於传达且不易打错的形式。
临时的共用密码
适合团队内短期共用的用途。即使贴在聊天室,也不易发生误读。
与密码短语相关的术语
- 密码短语
- 指将多个单字符串接而成的密码。易於确保长度,且便於记忆与口头传达是其特点。
- Diceware
- 指以骰子等乱数从单字表中挑选词语的方式。此思维即为密码短语生成的基础。
- 熵(Entropy)
- 指以位元数表示猜测难度的指标。数值每增加1,暴力破解所需的尝试次数便加倍。
- 暴力破解攻击
- 指将可能的组合从头逐一尝试的攻击。密码短语的长度会直接转化为耐受度。
- 字典攻击
- 指尝试常用单字或过去外泄密码的攻击。以随机方式挑选单字即可对抗。
- Web Crypto API
- 指浏览器所具备的密码处理机制。本工具以此产生难以预测的乱数。
常见问题
闲话 ― "correct horse battery staple" 如何改变了讨论方向
Diceware方法本身由Arnold Reinhold于1995年提出,但真正广为人知要归功于2011年网络漫画xkcd的第936话。该漫画将"Tr0ub4dor&3"这类看似复杂却难以记忆的密码,与由"correct horse battery staple"这四个普通单词组成的密码短语进行比较,指出后者虽然更易记忆,但对暴力破解的理论强度反而更高。
这种看似矛盾的现象源于信息论中的熵。与其在每个位置扩大字符集,不如从一个大型单词表中选取多个单词,这样每次选择能积累更多的随机比特数。853个单词的列表中每个单词约有9.7比特的信息量,四个单词合计约38.9比特。这与混合字母、数字与符号的6位随机密码(约39.3比特)大致相当,达不到8位(约52.4比特)的水平。如果想要超过8位此类密码的强度,请选择6个单词(约58.4比特)以上。
不过这也有实际的权衡之处。较长的密码短语更容易出现输入错误,而且如果在多个服务中重复使用同一个密码短语,一处泄露就会波及所有账户。另外,上述强度是在假设攻击者已经知道单词表的前提下计算的,因此即使单词表被人知道,强度也不会降低(Diceware的单词表本身也是公开的)。对于最重要的账户,建议将生成的密码短语当作密码管理器的可记忆主密码使用,而非到处重复使用。