一份英文密语词表里的 292 个亚洲外来语,是怎么选出来的¶
我们是一群关心匿名网络与网络自由的志工,从台湾出发,维运文档站。社区做了一份 7776 字的英文密语词表 asian-diceware,可以直接替换 EFF 的 Large Wordlist,差别在里面固定收 292 个已经进入英文字典的亚洲外来语,tofu、oolong、boba、kimchi 都在其中。
站上的工具页已经写过怎么用它,小工具区的密语生成器也可以直接按。以下补上另一半,选字的过程,以及过程中挡掉了什么。

为什么一份英文词表需要亚洲味¶
密语(passphrase)的做法是掷骰子从一份固定的词表抽出几个英文字,用符号接起来当密码。强度来自抽字的过程够随机,跟抽到哪些字无关。既然强度跟用字无关,换掉词表的内容有什么意义?
意义在抄得下来、念得回去。密语真正被用到的场合是密码管理器的主密码、全盘加密的口令、要在电视或游戏主机上一个字一个字敲进去的 Wi-Fi 密码,全都需仰赖人脑记住、人手输入。EFF 那份词表挑字时避开难拼字、脏话与容易混淆的同音字,理由正在于此1。
对在台湾、香港与亚洲各地生活的人来说,oolong 比 oolite 好认,ramen 比 ramekin 好记。抽到一个你天天在用的字,抄写与回想的错误率就会下降。换掉词表内容的理由仅止于此,密语强度一分一毫都没有变。
词表要能跟 EFF 那一份直接对换¶
第一条规则先定下来,词表要刚好 7776 个字,一个不多一个不少。
7776 是 6 的 5 次方,代表掷 5 颗骰子读成一个五位数,刚好对应到表上唯一一个字。每个字贡献 log2(7776) ≈ 12.925 bits,六个字约 77.5 bits1。字数维持在 7776,asian-diceware 就是 EFF Large Wordlist 的直接替代品,任何原本用 EFF 词表的流程换过来都不必改动,强度也完全一致。
数字固定之后,选字就变成一个名额有限的问题。292 个亚洲外来语占掉 292 个名额,剩下 7484 个名额用最高频、好拼写的常见英文字填满。名额有限是后面每一个取舍的来源。
292 个字的来源分布,跟做的人原本预期的不一样¶
词表从台湾出发,直觉会以为华语来源的字最多。实际查完字典之后的分布如下:
| 来源语言 | 字数 | 例字 |
|---|---|---|
| 日语 | 102 | sushi、ramen、tofu、matcha、karaoke、tsunami、emoji、umami |
| 南亚与梵语 | 91 | yoga、karma、guru、avatar、chai、masala、bazaar、cheetah |
| 马来与东南亚 | 39 | bamboo、curry、mango、durian、satay、gecko、shampoo、jungle |
| 韩语 | 35 | kimchi、bibimbap、soju、hangul、taekwondo、mukbang、bingsu |
| 华语 | 16 | typhoon、oolong、pinyin、boba、lychee、mahjong、qigong |
| 粤语 | 8 | wok、wonton、hoisin、kumquat、loquat、cheongsam、longan |
| 闽南语 | 1 | ketchup |
日语 102 个,南亚与梵语 91 个,两者加起来超过总数的六成。华语只有 16 个,闽南语只有 ketchup 一个。
分布记录的是英语实际吸收了什么,不记录我们希望它吸收什么。日本料理、瑜伽与印度香料进入英语世界的时间长、渠道多,累积下来的词就多。韩语那 35 个字里有不少是近年才进 OED 的,来自 2021、2024 与 2026 几批 K-culture 收词。华语的 16 个字多半年代久远,typhoon、ginseng、kowtow 都是几百年前的贸易与外交留下来的。
华语圈的味道就藏在那 16 个字里:oolong(乌龙茶)、boba(珍珠奶茶,源自台湾)、typhoon(台风)、pinyin(拼音)。加上唯一那个闽南语来源的 ketchup,番茄酱的英文可以一路追回闽南语,字源很多人不知道。
还有一批字大概没人会猜到是亚洲外来语:tycoon、honcho、shampoo、bungalow、jungle、loot、thug、atoll、gecko、cheetah、gong、dinghy、mongoose。它们每天都有人在用,来历早就融进英语里了。
选字的两个限制¶
只收已经进字典、写成一个单词的词¶
feng shui、kung fu、dim sum 三个词在英语世界的知名度都不低,全部没收。理由是中间有空格。
密语的组成方式是把抽到的字用 - 之类的符号接起来,抽到一个带空格的词,整组密语的断词就会产生歧义,抄写、口述与输入都会出错。词表的价值在于抄得下来、念得回去,一个会让人抄错的词不管多有代表性都不能收。
字典背书也是硬条件,292 个字全部在 OED、Merriam-Webster 或 Cambridge 查证过。硬条件挡掉的是「我觉得这个字英语圈应该懂」的判断,那种判断通常是错的。
不自己音译华语¶
另一个选项是自行音译,把常见的华语词转写成英文字母收进词表,华语来源的比例马上就能拉高。我们没有走那条路。
台湾同时流通汉语拼音、威妥玛与通用拼音几套系统,香港另有粤语拼音(Jyutping),中国大陆则以汉语拼音为单一标准。同一个音在不同系统下拼法不同,不同的音在同一个系统下又可能拼成相近的样子。词表要面向整个华语圈,就得同时面对这几套系统。密语词表最不能出现的就是歧义,一个字有两种合理拼法,抄下来的人就有一半机率打不开自己的磁盘。
音译本身有价值,只是属于另一个项目,需要先把拼音标准的选择处理完,不能夹带在一份以英语为基底的词表里。
为什么停在 292,不凑成一个整数比例¶
292 个字占 7776 的比例约 3.8%。数字看起来像是随手取的,实际上是把可用的字都捞完之后剩下的结果。
把 OED、Merriam-Webster 与 Cambridge 查过一轮,华语圈读者认得出来的亚洲外来语大约 330 个。其中 292 个收进词表,另外约 40 个标成备援,可辨识的字几乎就到顶了。v0.4.0 把 161 个扩充到 292 个,扩充时的原则是好认优先,查得到但没人认得的字宁可先搁着,也不为了凑成 4% 这种漂亮数字而硬塞2。
想再往上拉,例如拉到 10%(约 778 个字),只有两条路。第一条是拿冷僻词充数,puttee、howdah、nilgai、maund 这类字多数人拼不出、念不准也记不住,一收就破坏了词表存在的理由。第二条是改用罗马拼音的官话或注音音节,也就是上一节说过的另一个项目。
工具页把比例比喻成啤酒的酒精浓度(ABV),一个刻意挑过的数字,不是稀释出来的意外。比喻在最后一步失效:酒精浓度更高会有差别,亚洲外来语比例更高不会。无论抽到 tofu 还是 the,每个字都是一样的 12.925 bits,强度只跟词表恰好 7776 字、每次掷骰机率均匀有关。文化覆盖跟好用性冲突的时候,好用性优先。
构建流程挡掉的东西¶
词表由一条可重复执行的流程产出,六个阶段依序是收集、正规化、质量过滤、修剪、组装、验证2。
高频英文字的排序来自 wordfreq 的一份留在仓库里的快照,只当排序依据用。质量过滤那一关把专有名词、缩写与杂讯清掉,它们看起来是英文字,实际上会让密语变得难输入或难辨认。
真正麻烦的是修剪那一关,处理的是前缀冲突。密语词表有一个好性质,任何一个字都不会是另一个字的开头,于是把几个字接在一起,不必分隔符号也能唯一还原出原本的组合。要维持该性质,两个字互为前缀时就得砍掉一个。
问题在于被砍掉的可能正好是钉住的亚洲外来语。流程的规则写得很明确:
- 钉住的字受保护,前缀冲突发生在钉住的字与一般字之间时,砍一般字
- 两个一般字相撞时,砍频率较低的那个
- 两个钉住的字互相冲突时,构建直接失败并印出冲突的那一对字,由人去改数据文件决定砍哪一个
第三条是刻意的。自动砍掉一个钉住的字,词表会悄悄少一个亚洲外来语,没有人会发现。构建失败很吵,吵是必要的,少一个字的问题需要有人看到。
最后的验证有八项验收测试,另外用外部工具 wla 稽核一次,确认长度是 7776、可唯一解码、每字熵值 12.925 bits、没有重复字。验证通过才会发版。
开源条件与怎么取得¶
程序采 MIT,词表数据采 CC-BY-4.0,源代码与完整词表都在 GitHub anoni-net/asian-diceware。频率快照只当排序依据,收进词表的字本身是常见英文词汇。
CC-BY-4.0 的意思是你可以直接拿去印、去发、去改,保留出处标注即可。我们把 7776 字词表排成一本 A5 掷骰查表小册,含封面、使用教学、QR 与版权页,PDF 可以直接下载,约 36 页,用家里或便利店的打印机印 A4 对折成册即可。
做小册时碰到一个实际问题可以分享。PDF 里的中文字体必须内嵌,否则换一台电脑打开就会变成方框,而 macOS 内建的苹方(PingFang)授权不允许为了再分发而内嵌。所以小册改用可自由内嵌的开源字体 Noto Sans TC 与 JetBrains Mono,任何人拿去重印都不会遇上授权问题。要让别人能自由再分发,字体也要一起处理。
社区参加工作坊、小聚与研讨会等实体活动时,也会带几本印好的小册到现场发送。在活动里取得一本、或刚好遇到我们,非常欢迎过来聊聊,问密语、问匿名网络,或只是打声招呼都可以。想知道我们最近会出现在哪,见活动参与。
为什么社区要做一份词表¶
密语词表看起来离匿名网络有一段距离,关联在一个还在规划的项目上。
Tor Project 有一个叫 AnonTicket 的服务,让人不必提供 email 就能匿名向 Tor 的 GitLab 回报问题,账号用系统生成的一组随机英文字代码辨识身分3。让记者接收爆料的 SecureDrop 平台也一样,为每位匿名来源生成一组七个随机字的登录代码4。代码要好念、好抄、不容易混淆,来源正是一份挑过的词表。
社区接下来想做一个类似 AnonTicket 的匿名服务平台,还在规划阶段。asian-diceware 就是为了当那种服务的代码字源而准备的,顺便先变成一份现在就能用的密语词表。要做一个不必留下 email 的匿名回报渠道,词表是其中一块材料。
相关阅读¶
- Asian Diceware,带亚洲味的英文密语字典:完整的掷骰方法、强度对照表、随机性规则与暗号本的进阶用法
- 文档站新增八个小工具,全部在读者自己的浏览器里执行:站上的密语生成器怎么用,含实体骰子模式
- 密码管理器入门:密语适合少数要用脑记的密码,其余每个网站交给管理器
- 威胁模型如何建立:判断自己需要多强的密码,从这里开始
-
EFF Dice-Generated Passphrases - Electronic Frontier Foundation ↩↩
-
anoni-net/asian-diceware 的
README.md与SPEC.md,v0.4.0(2026-06-25 发布) ↩↩ -
Anonymous GitLab Ticketing: An Exciting New Project at Tor - The Tor Project ↩
-
SecureDrop - Freedom of the Press Foundation ↩