跳到正文
简体中文
工作台什么都不上传的工具
ODERSA 协会的一间工坊什么都不外传,什么都不留存,什么都到不了我们手里。

工坊 · 口令

怎么用 : 口令

六个随机抽出来的词,胜过一个八位的密码,而这件工具会用算式证明给您看。它也会说清楚哪些是白费劲:首字母大写和分隔符,值零比特。

打开工具

密码生成器是最不该把信任交给服务器的地方。如果这个秘密不是在您这边生成的,那就有别人见过它,而您没有任何办法知道他有没有留下来。在这里,口令是在您的浏览器里、用您系统的随机数发生器抽出来的,标签页一关它就没了。

用的是掷骰子法:每个词都从一份 7776 词的清单里独立抽取,因为 7776 正好是五颗骰子的结果总数。这不是程序员的什么花招,这是一套您可以拿真骰子和印出来的清单手工重做一遍的方法,而这正是它可核验的地方。

这件工具做了一件“密码强度”进度条从来不做的事:它把算式摆出来。每一行都写明自己贡献了多少,而那些一点贡献都没有的行就写成零。给每个词的首字母加大写,不会让一句口令多结实哪怕一个比特,因为那是一条人人都知道的规则。把这件事说出来,比一根绿色的进度条有用。

怎么用

  1. 调好词数。六个对绝大多数人来说都是合适的选择。
  2. 点“生成一句口令”。它就出来了,连同逐行算出来的熵值,以及要多久才猜得到。
  3. 马上把它复制走并收好,放进密码管理器,或者记在脑子里。别处哪儿都没有它:没有人能再给您一份。

支持的格式

这件工具什么都不收:不收文件,也不收文字。所以根本没有什么可以发出去的,哪怕是误发。这是工坊里唯一一件这样的工具,也正因如此,它的信任横幅讲的是它生成了什么,而不是您放进了什么。

什么都不用放进来

工具的原料是您的设置和您系统的随机数发生器。词表就内嵌在它的代码里:没有什么要去取的,而且断网也照样用。

查看兼容性对照表

它的限制

两份 7776 词的清单,一种语言一份,不多不少

只有当一份词表的自由许可由作者白纸黑字写明时,我们才内嵌它,而单单为了这个理由,我们就淘汰了好几份:一份流传很广的法语词表根本找不到许可,另一份的作者自己写着不知道该适用哪一种。您在这里看到的这两份,一份来自电子前哨基金会,采用知识共享署名许可,另一份由“Tango”为 Tails OS 和 The Tor Project 编纂,采用 CC0 1.0 通用协议。两份都不含重音字母,这是有意的:一个打不出来的词不是一个能用的词。

首字母大写和分隔符什么也不加,工具会把它们显示成零

这是确定性的规则:知道这件工具怎么工作的人,本来就知道它们。所以它们并不会让要试的口令变多。它们之所以还在,只是因为有些表单要求必须有大写字母,或者不收空格;而工具老老实实把它们标成零比特,而不是把计数器吹起来。

词表里有四个词本身就带连字符

它们是 drop-down、felt-tip、t-shirt 和 yo-yo。如果您选连字符作分隔符,得到的口令用眼睛就切不开词了。这不影响它的结实程度,但重读时可能让人一愣,所以我们说一声。

口令丢了就是丢了

它不会被发到任何地方,不会被写到任何地方,标签页一关它就没了。这恰恰是一个秘密生成器该有的性质,也就是说,备份是您的活儿,不是我们的。

破解耗时只是数量级,而且把假设写在旁边

它完全取决于保管您密码的那家服务是怎么保护它的,而这一点您看不见。所以我们给出三个各自写明的假设,而不是给一个看着像保证的单一数字。三个假设都认定攻击者知道方法:这是柯克霍夫原则,也是唯一老实的假设。

关于这个工具的问题

这句口令会被发到什么地方吗?

不会,而这是最讲究这一点的一件工具。按 F12 打开开发者工具,切到“网络”标签页,清空列表,然后想生成多少句就生成多少句:列表一直是空的。把网断掉再做一遍:工具照样生成得出来,因为词表就在它的代码里。一个需要联网的秘密生成器,是一个把秘密分享出去的生成器。

为什么是六个词,而不是一个复杂的八位密码?

因为六个随机抽出来的词大约有 77 比特的熵,而在键盘上真正随机抽出来的八位密码大约只有 52 比特。所以六个词要难猜三万多倍,而且好记得多。而一个由人自己想出来的八位密码,开头一个大写、末尾一个数字,远远不值 52 比特:那恰恰是攻击工具最先试的那个套路。

7776 这个数是哪儿来的?

来自五颗骰子。六个面的五次方是 7776,所以词表里每个词都对应五颗骰子的一次投掷,而这套方法可以拿真骰子和印出来的清单手工重做一遍。正因如此,任何人都能核验它,不必去信任某个程序,包括我们这个。

为什么首字母大写显示成零比特?

因为它没有多出任何一种要试的可能性。如果规则是“每个词首字母大写”,攻击的人知道这一点,也照样套用同一条规则:可能的口令数一分一毫都没变。要是大写落在一个随机抽出来的位置上就不一样了,但那样这句口令就没法记了。至于那个数字,它是真随机抽的,工具会把它的 3.3 比特算进去。

能用我自己语言的词吗?

这里内嵌了两份 7776 词的清单,一份英语,一份法语。没有中文的,理由跟淘汰另外几份法语词表一样:只有当一份词表的自由许可由作者白纸黑字写明时,我们才内嵌它。口令结不结实不取决于语言,只取决于抽取本身:语言改变的是您记不记得住这句口令,而这远远不是小事。

这句口令能用在本站的加密工具上吗?

能,而这正是预期的用法。安全专区那个保险箱会用六十万轮计算从您的密码生成密钥,这让攻击变得非常慢;再配上一句六个词的口令,能结实很久。给 PDF 设密码也一样,而且那里更要紧:那个格式不会拖慢密码校验,所以结实与否完全靠这句口令。

我能多生成几次,挑一句喜欢的吗?

能,一点损失都没有。每一次抽取都跟前面几次相互独立:从三句里挑一句,不会降低您留下那一句的熵。真正会降低它的,是用手去改这句口令让它读着更顺口,或者一律把不认识的词淘汰掉。那样,是的,您就把可能的范围缩小了。