如何创建一个强密码(用对的方法)
要创建一个强密码,就把它弄得又长又随机:争取至少 16 个由密码学安全来源生成的字符,并且为每一个账户都使用一个不同的密码。真正能挡住攻击者的,是长度和不可预测性——而不是你塞进去多少个感叹号。最快拿到一个强密码的方法,是让工具替你生成,比如 Andev 的 密码生成器,它直接在你的浏览器里创建密码,绝不发送到任何地方。
究竟是什么让密码变强
当一个密码既难以猜中、又难以暴力破解时,它就是强的。有两点驱动着这件事:
- 长度。 每多一个字符,攻击者必须尝试的可能组合数就会成倍增加。这种倍增是指数级的,所以你添加的每一个字符都比上一个更重要。
- 随机性。 这些字符需要是真正不可预测的。一个由单词、姓名、生日或键盘排列构成的密码,无论它看起来有多长,软件都很容易猜出来。
简单说:又长又随机的密码就强。又短又”巧妙”的密码就不强。其余的一切——你用了哪些符号、把大写字母放在哪里——在那两个因素面前都只是微不足道的零头。
“长度 vs 复杂度”的误区
多年以来,标准的建议都是”用一个复杂的密码”:混合大写、小写、数字和符号。这条建议催生出了像 P@ssw0rd! 这样的密码——它们看起来复杂,实际上却很弱,因为攻击者对人们做的替换了如指掌(a 变成 @,o 变成 0,末尾再加一个感叹号)。
数学讲述了一个更清楚的故事。给密码多加一个字符,会把攻击者所需的猜测次数乘以你字符集的大小。而加一个特殊符号,只是把那个字符集稍微扩大一点。所以一个更长的密码几乎总是胜过一个更短的”复杂”密码——正如上面的图表所示,长度把难度往上推的速度,远远快过零零散散地撒进一些标点。
这就是为什么一个由几个随机单词组成的口令短语既可以很强、又可以好记。一串互不相关、随机选出的单词,又长、又难猜,而且比一堵符号墙更好输入。关键词是随机:一个你因为对自己有意义而选中的短语,恰恰就是攻击者的词表里早已收录的那类东西。
复杂度规则仍有它的用武之地
许多网站会强制要求混用多种字符类型,而一个生成出来的密码反正也会满足那些规则。重点不是要避开符号——而是不要依赖它们作为你强度的来源。先把长度和随机性弄对,复杂度自然就水到渠成了。
为什么”生成一个”胜过”自己想一个”
人类是糟糕透顶的随机数生成器。我们总会去抓单词、日期、宠物的名字和各种规律,而且会在各个账户之间重复自己。攻击者利用的正是这些习惯。
一个好的生成器通过从一个密码学安全的随机性来源中取材,来消除这种瞎猜。在浏览器里,那个来源就是 Web Crypto API——具体来说是 crypto.getRandomValues()——它被设计为不可预测的。这与那种用来做诸如打乱播放列表之类事情的简单”随机”函数大不相同,那些函数的可预测程度,足以让它们永远不该被用于安全场景。
Andev 的 密码生成器 正是建立在这一点之上。它在你的浏览器里本地生成密码,使用的就是 Web Crypto API。由于工作发生在你的设备上,生成的密码绝不会被发送到任何地方——没有任何服务器看得到它、记录它,或可能泄露它。你得到了一个强密码,却无需把结果托付给任何第三方。
一份实用的清单
照着下面这些去做,你就把那些真正重要的事情都覆盖到了:
- 要长。 至少用 16 个字符。越多越好,而且一旦有了生成器和密码管理器来替你输入,这对你来说几乎是零成本。
- 要随机。 从一个密码学安全的来源生成它,而不是自己去发明一个。
- 绝不要基于个人信息。 不要用姓名、生日、地址、喜欢的球队,或任何别人能查到或猜到的关于你的东西。
- 每个网站用一个唯一的密码。 一个账户一个密码。如果某一个网站被攻破,损害就到此为止。
- 绝不要重复使用密码。 重复使用正是一个泄露的密码通过”撞库”演变成多个被攻陷账户的方式——攻击者会把泄露的登录信息拿到其他网站上去重放。
- 把它们存进密码管理器。 你本就不该去背几十个 16 位的随机字符串——那是管理器的活儿。它还会替你自动填入,于是长度就不再是个麻烦了。
- 开启双因素认证(2FA)。 强密码是你的第一道防线;2FA 是第二把锁,即便密码不知怎么被暴露了,它依然守得住。
如何在几秒钟内造出一个
- 打开 密码生成器。
- 把长度设为 16 或更高(对你真正在意的账户用得更长些)。
- 选择你想要的字符类型——大多数网站对一套完整的混合都很满意。
- 在创建或更新账户时,把生成的密码复制到你的密码管理器里。
- 凡是账户提供 2FA 的地方都开启它。
这就是整套工作流。生成器负责随机性,密码管理器负责记忆,而你再也不必去发明或重复使用一个密码了。
关于相关工具的一点说明
密码和哈希很容易被混淆,所以值得说清楚:密码是你保管并反复用来登录的一个秘密,而哈希是某些数据的一种单向指纹,往往用于验证完整性,而不是用来认证你的身份。如果你需要为一个文件或字符串生成校验和,那是 哈希生成器 的活儿——它并不能替代一个强而唯一的密码。不要把你的密码粘进哈希工具,指望它能让密码变得可以安全存储;账户登录时对密码做哈希,并不是这么回事。
要点回顾
- 长度和随机性取胜。 它们是唯二真正决定一个密码有多难破解的因素。
- 复杂度的误区不过如此。 一个长的随机口令短语,每一次都胜过像
P@ssw0rd!这样的短”复杂”密码。 - 让一个安全的工具来生成它。 使用一个建立在 Web Crypto API 的
crypto.getRandomValues()之上的来源,而不是一个可猜的或人为选择的字符串。 - 每个网站一个唯一的密码,每次都如此。 绝不重复使用、绝不基于个人信息,并把它们存进密码管理器。
- 加上第二把锁。 开启双因素认证,这样单单一个被暴露的密码就不会满盘皆输。
让你的下一个密码成为一个强密码
密码生成器 免费、无需注册,并完全在你的浏览器里运行——你的密码用 Web Crypto API 在本地生成,绝不离开你的设备。一键生成一个 16 位的随机密码,把它放进你的密码管理器,再去看看 Andev 其他 私密的浏览器内工具,用同样私密的方式处理更多安全任务。