长口令(passphrase)生成器如何兼顾安全与好记

"难猜的密码往往难记,好记的密码往往容易被猜到"——长口令生成器试图用多个随机单词组合的方式,解决这个由来已久的矛盾。

diceware到底是什么

一种通过掷骰子(在数字工具中则用随机数生成代替)从一份庞大且固定的词表中选出单词的方法,关键在于每个单词都是通过真正无偏的随机方式选出的,而不是由人凭感觉"想一个随机的词"。

安全强度主要取决于单词数量,而不是具体选了哪些词

安全性主要来自串联在一起的随机单词数量,而不是这些词本身是什么。从一份庞大的词表中随机选出4到6个单词,通常就能达到与相当长的随机字符串相当的安全强度。

单词之间必须互不相关才能保持强度

安全性依赖于每个单词都是独立且随机选出的——人为构造出的"通顺短语"(比如常见的说法)即便单词数量相同,也远比互不相关的随机单词组合更容易被猜中。

分隔符和大小写只是锦上添花

在单词之间加入连字符、数字或大小写混合(比如correct-Horse-42-battery)确实能在原有基础上略微增加一些安全强度,但绝大部分安全性仍然来自单词本身的随机性。

更容易准确输入和记忆

相比随机字符和符号的杂乱组合,由真实(但互不相关)的单词组成的口令明显更容易快速、准确地输入,这对需要经常手动输入的密码来说尤其重要。

这种方式为什么会流行起来

diceware方法的初衷,是基于"人很难真正做到随机思考"这一前提,提供一种任何人都能重复使用、且安全强度可计算的长口令生成方式,而不是依赖人自己"想一个随机的东西"。数字化的生成器只是用可靠的随机数来源,自动完成了原本掷骰子的这一步。

到底需要几个单词才算够

从一份庞大的词表中每多加一个随机单词,增加的安全强度是指数级的,而不是简单相加。从一份包含数千个单词的词表中随机选出5到6个单词组成的长口令,其安全强度通常远远超出现实时间内暴力破解的能力范围。

常见问题

长口令真的比同等长度的随机字符密码更安全吗?

如果整体熵值(随机程度)相当,两者理论上的安全强度也大致相当。长口令真正的实际优势在于更容易被准确输入和记住。

可以在生成的长口令基础上自己加词吗?

可以,但如果加的是对自己有特殊意义的词(比如名字或宠物的名字),就会重新引入随机生成器本来要避免的那种容易被猜中的模式,反而可能降低安全性。