波尔塔密码
发布 2026 年 10 月 8 日 · · 7 分钟阅读
乔万·巴蒂斯塔·德拉·波尔塔在 1563 年公布了这张表盘,解决了一个困扰密码学家一个世纪的问题:他造出了一套自逆的多表密码。加密与解密使用同一套流程、同一把密钥,因此野战文书不可能把方向搞反。
- 时代
- 文艺复兴
- 类型
- 多表
- 密钥空间
- 26^k, 13 rows
- 难度
- 野战
I现象
这张表盘有十三行,每行由一对字母作密钥:第一行用 A 或 B,第二行用 C 或 D,依次到第十三行用 Y 或 Z。这把密钥字母表缩小了一半,同时让每一行都成为对合映射。
每行的工作方式是把字母表劈成两半。A-M 是前半,N-Z 是后半。在第一行里 A 映射到 N、B 映射到 O;N 映射回 A、O 映射回 B。把该行套用两次就回到原字母,这正是使密码自逆的性质。
| 密钥对 | A 映射到 | N 映射到 | A 再 N 的结果 |
|---|---|---|---|
| AB(第 1 行) | N | A | 回到原文 |
| CD(第 2 行) | O | M | 回到原文 |
| EF(第 3 行) | P | L | 回到原文 |
以密钥 PORTA 加密明文 LOOM 的实例:
| 位置 | 明文 | 密钥 | 行 | 密文 |
|---|---|---|---|---|
| 1 | L | P | 8 | A |
| 2 | O | O | 8 | Y |
| 3 | O | R | 9 | C |
| 4 | M | T | 10 | D |
注意前两个字母用了同一行,因为 P 与 O 都落在第八行的密钥字母对范围内;后两个字母换行。机制就在这里:长度为 k 的密钥给出 13^k 种不同的行序列,而不是 26^k,但换来的是自逆性。
II密钥空间
对长度为 k 的密钥,行序列空间是 13^k。六字母密钥给出约 480 万种行序列——比维吉尼亚的 26^6 小 64 倍,这就是自逆性付出的代价。
这是一次实际的缩减,但就其时代而言并不致命。波尔塔真正的弱点与维吉尼亚相同:密钥会重复,而重复的密钥可以用卡西斯基检验测量。
自逆性是一项运行特性,不是安全特性。让密码更容易使用并不会让它更难被破,只是意味着使用者会犯更少的错误。
平心而论,少犯错是有价值的。一个密钥空间为 13^6、但被正确使用的密码,对军队来说比一个密钥空间为 26^6、却被错误使用的密码更有用——波尔塔显然是有意做出这个判断的。
III加密步骤
- 写下不含空格的关键词,在心里把字母两两配对:A 与 B 是第 1 行,C 与 D 是第 2 行,依此类推。
- 把明文写成大写写在下方,关键词按需重复。
- 对每个位置,由密钥字母确定行号,只取配对序号:字母序号除以 2 向下取整。
- 在该行查出明文字母。A-M 映射到字母表后半,N-Z 映射到前半。
- 写出结果字母。任何步骤都不需要改变——波尔塔只有一套流程。
- 输出按五个一组分组以便传输。
IV解密步骤
- 完全按发信方的方式重建密钥时序。由于密码是对合映射,没有其他东西需要设置。
- 对每个密文字母,由密钥字母确定行号。
- 在同一行读出明文字母。映射是对称的,因此不需要逆表。
- 由上下文重新分词。波尔塔与所有多表密码一样,本身不保留词边界。
- 若结果不通,检查密钥:一个错误的密钥字母只会污染一个明文字母,因此错误是局部的、容易定位。
- 面对未知密钥时,对密文中的重复做卡西斯基检验,求出周期,再把每条流当作十三行的替换来解决。
V弱点
密钥重复。 该密码只在密钥长度范围内是多表的。超出之后行序列开始循环,而标准的周期寻找攻击与对付维吉尼亚时一模一样地适用。
只有 13 行。 行数只有完整表盘的一半,因此每一行被使用的频率大约翻倍,统计特征更快稳定,分析者需要的文本更少。
自逆性压缩了密钥空间。 13^k 而非 26^k——缩减因子是 2^k,对十字母密钥而言就是一千倍。
它的泄露方式与所有多表密码相同。 相隔为密钥长度倍数的重复明文短语会产出重复密文,而这些间距的最大公约数就交出了密钥长度。
VI实战挑战
密文
AAAANZSVJFWOPY
提示: 密钥 PORTA。行号由密钥字母配对决定:AB 是第 1 行,CD 是第 2 行,依此类推。
展开答案
明文
PORTA KEEPS HALF
·史料
乔万·巴蒂斯塔·德拉·波尔塔于 1563 年在《论隐书》中公布了这张表盘;该书还收录了大量更早的密码,并长篇讨论了密码分析。波尔塔密码在意大利被使用,并以其修改形式出现在后来的欧洲外交通信中。它在历史上的主要意义在于自逆设计:它证明了多表密码不必要求两套不同流程——这项创新使机械式、其后是电气式的密码机在设计上简单了许多。
·继续读
波尔塔的贡献常被低估,因为他的密码被破了;但那个设计直觉是对的,而且不断取胜:现代认证加密模式在某种意义上也是自逆的——同一把密钥与 nonce 驱动两个方向;现代野战装备的设计目标之一,就是让疲惫的操作者不可能选错模式。
波尔塔表盘还有一个对教学很重要的性质:由于每行由半字母对构成,整张表可以由一条规则生成,而不必背下 676 个条目。把密钥调度压缩成一条规则,正是现代密钥派生背后的同一个想法。
下一台织机:cardan-grille——用实体遮罩完成的置换,以及一种对“密钥可以是什么”截然不同的理解。
+相关织线
维吉尼亚表盘
维吉尼亚密码被称作 *le chiffre indéchiffrable*——不可破译的密码——这个名号保持了大约三百年,其中只有一半是虚张声势。它是本织机上第一个密钥空间真正无法暴力穷举的密码,也是第一个必须用全新思…
阿尔贝蒂密码盘
莱昂·巴蒂斯塔·阿尔贝蒂在 1460 年代造了一面黄铜圆盘,也用它跨过了古典密码学与现代密码学之间的那条线。此前的密码整条消息只有一套固定替换,而阿尔贝蒂的圆盘可以在中途更换它——仅这一项能力,就是所有转轮机的祖先。
恩尼格玛转轮机
恩尼格玛是那种纸面上无懈可击、实战中却输掉一场战争的密码。它的密钥空间达到 10 的 23 次方量级,而它被破不是因为暴力穷举,而是因为有人注意到:这台机器永远不会把某个字母加密成它自己——仅此一个事实,就瞬间排除了几…