跳到正文
Cipherloom密码织机

CIPHER/SUBSTITUTION/BOOK CIPHER

书本密码

发布 2026 年 10 月 2 日 · · 7 分钟阅读

书本密码用一本书取代字母表。每个字母写成一个位置——页、行、词、字——由接收方去查。这套方法不需要数学、不需要背方阵、不需要器械,因此每当人们只能依靠手边现成的东西来秘密通信时,它就会重新出现。

时代
中世纪
类型
替换
密钥空间
the shared volume
难度
野战
密文栅格图版:书本密码
图版 book-cipher · 替换

I现象

两个人约定同一个版本。数字 14.2 表示第 14 个词的第二个字母——在更完整的约定 页.行.词 中,每个字母要用三个数字。

双方必须持有同一版本,而不仅仅是同名书。不同印次的页码不同;袖珍本与对开本对不上。这是该方法在实践中的决定性约束。

约定写法每字母位数
页.行.词.字母214.07.11.38-12
行.词.字母214.34-6
词.字母(固定单页)14.22-4
单页连续索引612

最后一行正是本条目实验台采用的做法:用一段固定的字母串代替那一页,每个字母写成目标字符在该串中的序号。这不是真实书本密码的写法,但它暴露了这门技术所依赖的东西——双方持有一件完全相同、且带索引的实物。

II密钥空间

密钥空间是“两个人可能都拥有的书”的集合,在任何有用的意义上都不可搜索。但这不等于强。

想一想攻击者需要什么。他们需要那本书。若缴获了书,根本不需要破译——密文直接变成一张查表。若没有缴获书,他们依然可以利用一个事实:这些数字是有结构的,每组中的第一个数字在整页上变化很慢,最后一个变化很快。这种结构就是指纹。

一个以两人共有的公开物为密钥的密码,其安全等级等于通信本身的保密程度,而不是算法的保密程度。

相关的历史困难:约定的那一版用完了。军队在移动,图书馆在燃烧,而一个用不了的密码比一个能被破的密码更糟。

III加密步骤

  • 与通信对象约定一个确切的版本,并把印次信息记录下来,以便双方核对。
  • 选定位置约定:页、行、词、字母,或某种更简短的形式。在第一条消息之前用书面形式固定下来。
  • 写出明文。去掉约定无法表达的内容——标点、数字、重音符号——或约定好拼读替代法。
  • 对每个字母,在书中找到该字母的一处出现并记录其位置。
  • 把位置编号连成组,用分隔符保持多位数字可读。
  • 尽量别在同一条消息里对两个不同字母复用同一处出现;复用会暴露结构。

IV解密步骤

  • 拿出约定的那一版,与记录核对印次信息。
  • 按约定把密文切成位置组。
  • 对每一组,先找页,再找行,再找词,最后找字母。
  • 按序写下字母。词边界靠上下文恢复,而不是从密文中恢复。
  • 若某个组得出的字母讲不通,按顺序检查两个最常见的原因:位置记错,或版本不对。先查版本,因为代价更低。
  • 在野战条件下,每一百个位置大约会出现一个错误;消息长度要按这个比例来规划。

V弱点

版本不符会无声地失效。 不同印次会产生错误的字母,读起来却像说得通的乱码,而接收方无法区分“版本错了”和“传输出错了”。

数字结构会泄露。 一长串缓慢递增的首位数字告诉分析者:这里用的是基于页面的方案,并且大致能推断出页面有多长。

书的缴获是彻底而即时的。 不存在“部分破解”这种说法;整批通信会一次性变成明文。

使用既慢又易错。 在时间压力下在一本实物书里查几百个位置,必然出错。每一次重发都让攻击者拿到的材料翻倍。

不更换实物就无法轮换密钥。 换书意味着必须把新书实体送达每一个通信对象,这与名册密码的问题一样,答案也一样:改用一次一密。

VI实战挑战

密文

1 2 3 29 11 11 19 8 3 3 20 21 6 1 21 11 12 13 7 11 5 13 21 3 29

提示: 一行固定的文本就是那本书。位置是该行中从 1 开始的序号。

展开答案

明文

THE LOOM KEEPS ITS OWN COUNSEL

本条目为历史与教育内容。相关描述不是绕开任何在用系统安全措施的指引,也不构成专业建议。

·史料

书本密码见于美国内战、十九世纪俄国革命者的通信,以及两次世界大战。最著名的失败案例是 1918 年的齐默尔曼电报:德国外交部长阿图尔·齐默尔曼在其中提议墨西哥对美结盟。英国海军情报处第 40 室的密码分析者此前已部分重建了德国外交密码本,一旦从墨西哥电报局取得该电报的副本,他们便能完整读出内容。那本“书”实际上已被缴获,而由此导致的披露推动美国参战。

·继续读

书本密码是本合集中最清楚地说明“密码学是系统工程问题”的一条。这里的算法是平凡的——查表。而所有失效模式都是运行层面的:采购、分发、版本控制,以及查表人员的培训。

只要知道该找什么,现代等价物很容易辨认:固件里硬编码的密钥、wiki 里的共享秘密、被复制进十二个服务里的同一个 API 令牌。算法是强的;运行模型却是一套版本控制更差的书本密码。

下一台织机:alberti-disk——第一台为“在书写过程中改变替换”而设计的器械。

+相关织线