自动密钥密码:自密钥机制如何改进维吉尼亚加密
了解自动密钥密码如何将明文用作自身密钥,消除重复模式,从而比标准维吉尼亚加密更加安全。
自动密钥密码——有时在非正式场合也叫"auto cipher"——是多表替换加密历史上最重要的改进之一。它针对标准维吉尼亚密码的核心弱点下手:重复密钥问题。在维吉尼亚密码中,像"LEMON"这样的短关键词会在整条消息中反复循环,产生周期性规律,进而被 Kasiski 检测法和重合指数分析所识别和利用。自动密钥密码通过将明文本身纳入密钥的一部分,消除了这种重复,使密钥流永不循环,且随每条消息而变化。
这一概念通常归功于 Blaise de Vigenère,但其历史比大多数教科书描述的要复杂得多。维吉尼亚在其 1586 年著作《密码论》(Traicte des Chiffres)中描述了一种自动密钥系统,这是在 Giovan Battista Bellaso 数十年前发表的思想基础上进一步发展的。具有讽刺意味的是,以维吉尼亚名字命名的密码——即标准重复密钥系统——并非他真正倡导的方案。他真正的贡献在于自动密钥原理,但后世密码学家大多将其束之高阁,转而偏好更简单但更脆弱的重复密钥方法。
本指南将说明自动密钥密码的工作原理、为何比标准维吉尼亚密码更安全,以及它自身存在哪些弱点。如需加密或解密消息,请使用自动密钥密码工具。
重复密钥的问题
标准维吉尼亚密码的工作原理
在标准维吉尼亚密码中,加密使用一个循环重复以匹配明文长度的关键词。若关键词为"KEY",明文为"ATTACK AT DAWN",则密钥流为:
明文: A T T A C K A T D A W N
密钥流:K E Y K E Y K E Y K E Y
每个明文字母按对应密钥字母进行位移(A=0,B=1,……,Z=25):
密文:K X R K G I K X B K A L
关键词"KEY"每三个字母循环一次。这种周期性正是该密码的致命弱点。
为何重复如此危险
当关键词重复时,密文中每隔三个字母就会用相同的位移加密。密码分析师可以:
-
检测密钥长度——利用 Kasiski 检测法(查找密文中重复序列,其间距的最大公因数即为密钥长度)或重合指数分析(依次测试不同周期长度,直到各子序列的重合指数与自然语言相符)。
-
按密钥长度拆分密文——将密文按密钥长度分组,每组字母均用同一个单一位移加密。
-
各自破解每组——用频率分析将每组当作简单的凯撒密码来破解。
这种两阶段攻击法由 Kasiski 于 1863 年首次发表,Babbage 在此十年前独立发现,可彻底破解任何实用密钥长度的标准维吉尼亚密码。重复密钥恰恰制造了多表替换原本应当消除的规律性。
自动密钥密码如何消除重复
核心思路
自动密钥密码使用一个引导密钥(短初始关键词)加上明文本身构成密钥流。引导密钥用完后,后续每个密钥字母就是固定偏移位置之前的明文字母。
这意味着密钥流与消息等长且永不重复(除非明文本身重复,而这远比固定关键词循环难以预测)。密钥流取决于消息内容,因此即使使用相同引导密钥,不同消息也会产生不同的密钥流。
明文自动密钥与密文自动密钥
自动密钥原理有两种变体,理解二者的区别至关重要。
明文自动密钥(最常见的形式):密钥流由引导密钥后接明文字母组成。这是维吉尼亚所描述的系统,也是"自动密钥密码"一词通常所指的版本。
明文: A T T A C K A T D A W N
引导密钥:Q
密钥流: Q A T T A C K A T D A W
密文自动密钥:密钥流由引导密钥后接密文字母组成。每个密文字母一旦生成,便成为下一个密钥字母。
明文: A T T A C K A T D A W N
引导密钥:Q
密钥流: Q ? ? ? ? ? ? ? ? ? ? ?(每个 ? 是前一个密文字母)
密文自动密钥的加密过程:
- 用密钥 Q 加密 A:A + Q = Q。密钥流至此:Q
- 用密钥 Q(前一密文)加密 T:T + Q = J。密钥流:Q,Q
- 用密钥 J(前一密文)加密 T:T + J = C。密钥流:Q,Q,J
- 依此类推。
密文自动密钥变体的优势在于:接收方只需持有密文(本已有之)和引导密钥即可解密。而明文自动密钥则需要逐个字母顺序解密,因为每个解密后的字母将成为后续字母的密钥。
两种变体都消除了重复密钥的弱点,但明文自动密钥是更广泛使用和研究的系统。本文后续所说的"自动密钥密码",除非特别说明,均指明文自动密钥变体。
加密全流程演示
以引导密钥 KILT 加密消息 MEET ME AT THE BRIDGE。
第一步:准备明文
去除空格并转换为大写:
MEETMEATTHEBRIDGE
第二步:构建密钥流
以引导密钥 KILT 开头,后接明文字母:
明文: M E E T M E A T T H E B R I D G E
密钥流:K I L T M E E T M E A T T H E B R
密钥流为:K,I,L,T,M,E,E,T,M,E,A,T,T,H,E,B,R
注意,密钥流第 5 位起与明文第 1 位起完全一致。密钥流即为引导密钥与明文开头的拼接。
第三步:加密每个字母
使用标准维吉尼亚公式:C = (P + K) mod 26,其中 A=0,B=1,……,Z=25。
| 位置 | 明文 | 密钥 | P 值 | K 值 | (P+K) mod 26 | 密文 |
|---|---|---|---|---|---|---|
| 1 | M | K | 12 | 10 | 22 | W |
| 2 | E | I | 4 | 8 | 12 | M |
| 3 | E | L | 4 | 11 | 15 | P |
| 4 | T | T | 19 | 19 | 12 | M |
| 5 | M | M | 12 | 12 | 24 | Y |
| 6 | E | E | 4 | 4 | 8 | I |
| 7 | A | E | 0 | 4 | 4 | E |
| 8 | T | T | 19 | 19 | 12 | M |
| 9 | T | M | 19 | 12 | 5 | F |
| 10 | H | E | 7 | 4 | 11 | L |
| 11 | E | A | 4 | 0 | 4 | E |
| 12 | B | T | 1 | 19 | 20 | U |
| 13 | R | T | 17 | 19 | 10 | K |
| 14 | I | H | 8 | 7 | 15 | P |
| 15 | D | E | 3 | 4 | 7 | H |
| 16 | G | B | 6 | 1 | 7 | H |
| 17 | E | R | 4 | 17 | 21 | V |
密文:WPMMY IEMFL EUKPH HV
第四步:验证
密钥流 KILTMEE…… 不会像标准维吉尼亚关键词那样周期性重复。密钥流第 5 和第 9 位都出现了字母 M,但这是因为明文第 1 和第 5 位含有 M,而非关键词循环所致。正是这种不规律性,使自动密钥密码能够抵抗基于周期性的攻击。
解密全流程演示
明文自动密钥密码的解密是顺序进行的:每个解密后的字母成为后续字母的密钥。
用引导密钥 KILT 解密 WPMMY IEMFL EUKPH HV
第一步: 前四个密钥字母已知:K,I,L,T。
第二步: 解密第 1 位:P = (C - K) mod 26 = (22 - 10) mod 26 = 12 = M。
解密所得字母 M 成为密钥第 5 位。
第三步: 解密第 2 位:P = (12 - 8) mod 26 = 4 = E。
E 成为密钥第 6 位。
第四步: 按顺序继续。每个解密所得字母向后传入密钥流。
| 位置 | 密文 | 密钥(已知) | (C-K) mod 26 | 明文 | 新密钥字母 |
|---|---|---|---|---|---|
| 1 | W (22) | K (10) | 12 | M | M 作为第 5 位 |
| 2 | M (12) | I (8) | 4 | E | E 作为第 6 位 |
| 3 | P (15) | L (11) | 4 | E | E 作为第 7 位 |
| 4 | M (12) | T (19) | 19 | T | T 作为第 8 位 |
| 5 | Y (24) | M (12) | 12 | M | M 作为第 9 位 |
| 6 | I (8) | E (4) | 4 | E | E 作为第 10 位 |
| 7 | E (4) | E (4) | 0 | A | A 作为第 11 位 |
| 8 | M (12) | T (19) | 19 | T | T 作为第 12 位 |
| 9 | F (5) | M (12) | 19 | T | T 作为第 13 位 |
| 10 | L (11) | E (4) | 7 | H | H 作为第 14 位 |
| 11 | E (4) | A (0) | 4 | E | E 作为第 15 位 |
| 12 | U (20) | T (19) | 1 | B | B 作为第 16 位 |
| 13 | K (10) | T (19) | 17 | R | R 作为第 17 位 |
| 14 | P (15) | H (7) | 8 | I | — |
| 15 | H (7) | E (4) | 3 | D | — |
| 16 | H (7) | B (1) | 6 | G | — |
| 17 | V (21) | R (17) | 4 | E | — |
还原明文:MEETMEATTHEBRIDGE
解密的顺序特性意味着任意位置的单个错误都会损坏之后所有位置的解密结果。这种错误传播是自动密钥系统在实用层面的主要缺陷之一。
为何自动密钥密码能抵抗 Kasiski 检测法
Kasiski 攻击依赖周期性
Kasiski 检测法通过寻找密文中的重复序列并测量其间距来发起攻击。在标准维吉尼亚密码中,重复出现的原因在于:相同的明文片段与重复关键词的相同部分对齐时,会产生相同的密文。重复序列之间的间距始终是密钥长度的倍数。
自动密钥无周期性
在自动密钥密码中,密钥流不会重复。前几个字母是引导密钥,其余字母由明文决定,而明文随消息不同而各异。由于密钥流没有周期,Kasiski 检测法无法确定密钥长度——因为根本不存在可供查找的重复密钥长度。
这并不意味着自动密钥密码无法被破解,仅意味着彻底击溃标准维吉尼亚密码的那种攻击方式在此无效。需要采用不同的攻击手段。
重合指数的影响
重合指数检验同样依赖周期性。对于标准维吉尼亚密码,测试不同周期长度时,当各子序列的重合指数升至自然语言水平(英语约为 0.0667)时,便可确定正确的密钥长度。由于自动密钥密码没有周期,在不同假设密钥长度下进行重合指数分析不会产生明显峰值,由此确认该密码并非标准周期多表替换系统。
安全性分析:优势与弱点
优势
非重复密钥流。 核心优势。密钥流与消息等长,并依赖消息内容,消除了使 Kasiski 检测和重合指数攻击得以奏效的周期性。
每条消息对应不同密钥流。 即使使用相同引导密钥,不同明文也会产生不同密钥流,因此一批消息无法像使用相同关键词的多条维吉尼亚消息那样被轻易交叉分析。
实现简便。 自动密钥密码使用与标准维吉尼亚密码相同的 Tabula Recta 表,无需额外的表格、装置或计算资源。
弱点
已知明文攻击。 若攻击者知道或猜测到任何一段明文,便可立即计算出密钥流的对应部分,进而揭露更多明文(因为密钥流是引导密钥加上明文)。一个小小的已知片段就可能瓦解整条消息。
例如,若攻击者猜测消息以"DEAR SIR"开头,便可将前八个密文字母减去"DEARSIR",还原出前八个密钥字母。其中前几个密钥字母是引导密钥;其余密钥字母则是消息中更早位置的明文,而这些明文已被还原。攻击者随后可逐字母继续解密,将每个新还原的明文字母作为下一个密钥字母。
统计攻击。 尽管自动密钥密码消除了周期性,但并未消除所有统计规律。密钥流由自然语言文本(即明文)构成,本身具有频率特征。具体而言,E、T、A 等常见字母在明文和密钥流中都出现频繁,导致密文分布不均匀。研究人员已基于这些统计特性开发出相应攻击方法。
错误传播。 单个传输错误会损坏之后所有字母的解密,因为每个解密字母都会进入密钥流。在手写消息和通信信道不可靠的年代,这是一个严重的实用缺陷。
引导密钥的恢复。 引导密钥通常较短(便于记忆和共享)。一旦引导密钥被还原,整条消息便可被解密。由于引导密钥字母位于密钥流开头,攻击者可以穷举所有可能的短密钥,并检验哪个能产生可读的明文开头。
与相关密码的比较
自动密钥密码与标准维吉尼亚密码
| 属性 | 标准维吉尼亚密码 | 自动密钥密码 |
|---|---|---|
| 密钥流 | 重复关键词 | 引导密钥 + 明文 |
| 周期性 | 有(周期 = 密钥长度) | 无 |
| Kasiski 弱点 | 有 | 无 |
| 密钥长度 | 等于关键词长度 | 等于消息长度 |
| 已知明文漏洞 | 仅恢复关键词 | 任意已知片段均可瓦解整条消息 |
| 错误传播 | 错误仅影响一个字母 | 错误损坏之后所有字母 |
| 易用性 | 非常容易 | 稍难(需顺序解密) |
自动密钥密码与流动密钥密码
流动密钥密码同样使用非重复密钥流,但不是用明文本身,而是使用通信双方事先约定的一段书文或其他文本作为密钥。流动密钥密码避免了自动密钥的已知明文弱点(猜到明文并不能揭示密钥来源),但引入了另一种弱点:密钥文本是具有可预测统计特性的自然语言,而精密攻击可以利用明文和密钥均来自同一语言这一事实。
自动密钥密码与博福特密码
博福特密码是维吉尼亚密码的互反变体,加解密使用相同运算(明文从密钥中减去,模 26)。博福特密码同样可以实现自动密钥版本,其结构上的优势和弱点与标准自动密钥密码相同,另具有加解密程序完全一致的额外特性。
自动密钥密码与一次性密码本
一次性密码本通过使用与消息等长且永不重复的真随机密钥流来实现完美保密。自动密钥密码表面上与一次性密码本相似,其密钥流也与消息等长,但自动密钥的密钥流并非随机——它来源于结构化的自然语言明文。这一区别至关重要:一次性密码本在数学上可证明无法破解,而自动密钥密码在掌握足够密文和分析手段后是可以被破解的。
历史归属之争
Bellaso、维吉尼亚与误归功问题
自动密钥密码的历史涉及密码学中最根深蒂固的误归功之一。以下是真实经过:
Giovan Battista Bellaso 于 1553 年至 1564 年间发表了一系列密码学小册子。在其 1564 年的著作中,他描述了一种结合维吉尼亚 Tabula Recta 表使用重复关键词的密码——这正是后来世界称之为"维吉尼亚密码"的系统。Bellaso 才是标准重复密钥多表替换密码的真正发明者。
Blaise de Vigenère,法国外交官兼学者,于 1586 年出版《密码论》(Traicte des Chiffres)。这部综合著作中,维吉尼亚描述了多种密码系统,其中包括一种使用明文来扩展短引导密钥的自动密钥密码。这一自动密钥系统才是维吉尼亚对密码学的真正贡献。
此后数百年间,历史学家将两人的贡献混为一谈。Bellaso 的重复密钥密码被称为"维吉尼亚密码",而维吉尼亚真正的发明——自动密钥系统——则大多被遗忘,或被归功于后来的密码学家。这一误归如此彻底,以至于大多数密码学入门教材至今仍将重复密钥密码呈现为维吉尼亚的发明。
David Kahn 的里程碑式历史著作《密码破译者》(The Codebreakers,1967 年)有助于正本清源,但传统命名已被证明根深难改。如今,密码学家普遍承认历史事实,同时继续沿用传统名称以求实用方便。
自动密钥密码为何被忽视
如果自动密钥密码比重复密钥维吉尼亚密码更安全,为何更弱的系统在实践中占了上风?以下几点可以解释这一现象:
-
易用性。 重复密钥系统允许在消息的任意位置独立进行加解密。自动密钥系统则要求严格顺序处理,因为每个字母都依赖于前一个解密字母。
-
容错性。 重复密钥维吉尼亚消息中的单个错误只会损坏一个字母。自动密钥消息中的单个错误则会损坏从该点起的所有字母。
-
对安全性的认知。 在该密码的活跃使用期间,标准维吉尼亚密码一直被认为是无法破解的。若更简单的系统已被视为"无法解读",便没有实际动力去采用更复杂的自动密钥变体。
-
传播与扩散。 Bellaso 的重复密钥系统广泛流传并被大量模仿。维吉尼亚的自动密钥方案藏于一部长达 600 页的法文密集论著之中,受众有限。
使用自动密钥密码的实用建议
选择引导密钥
- 至少使用 4 至 6 个字符。更短的密钥极易被暴力破解。
- 避免使用字典词汇。词组片段或缩写更为合适。
- 若攻击者可能截获多条消息,切勿对多条消息重复使用同一引导密钥。
避免常见陷阱
- 仔细核对。 由于错误会传播,任意位置的失误都会损坏后续所有内容。在进行到下一个字母之前,务必验证每个字母。
- 事先约定规则。 使用明文自动密钥还是密文自动密钥?J 是否等同于 I?空格和标点是去除还是保留?规则不一致将导致输出乱码。
- 使用工具。 对于超过几个单词的任何消息,使用自动密钥密码工具可以消除手动操作错误的风险。
自动密钥密码在教育与竞赛中的应用
密码学课程
自动密钥密码在密码学教育中占有特殊地位,因为它能清晰说明多个重要概念:
- 重复密钥的危险性。 将标准维吉尼亚密码与自动密钥密码对比,能让学生直观看到密钥重复如何产生漏洞,以及消除重复如何提升安全性。
- 自引用密钥流。 将消息本身用作密钥的一部分,这一概念颇具优雅之感,也预示了现代分组密码中更高级的构造方式——例如密码块链接(CBC)模式,其中每块明文在加密前先与前一块密文进行异或运算。
- 安全性与可用性之间的权衡。 自动密钥密码比标准维吉尼亚密码更安全,但也更难使用。这种权衡贯穿密码学发展史,在现代系统设计中同样存在。
CTF 竞赛
自动密钥密码在 CTF(夺旗)竞赛中频繁出现,通常作为中等难度的挑战题目。参赛者可能获得一段密文和提示说明其为自动密钥加密,也可能需要通过分析自行识别密码类型。顺序解密的特性以及猜测引导密钥的需求,使这类挑战既引人入胜又不至于无从下手。
常见问题
自动密钥密码与维吉尼亚密码有什么区别?
标准维吉尼亚密码在整条消息中重复一个固定关键词,产生可被 Kasiski 检测法和重合指数分析识别和利用的周期性规律。自动密钥密码使用短引导密钥后接明文本身作为密钥流,密钥永不重复。这消除了使标准维吉尼亚密码可被破解的周期性,但引入了其自身的弱点,尤其是对已知明文攻击的脆弱性和错误传播问题。
自动密钥密码在现代标准下是否安全?
否。虽然比标准维吉尼亚密码安全得多,但自动密钥密码不符合现代密码学标准。它容易遭受已知明文攻击、利用密钥流非随机性的统计分析,以及对短引导密钥的暴力破解。AES 等现代对称加密算法提供的安全性是任何古典密码都无法企及的。自动密钥密码在密码学教育和娱乐性密码学中仍具有价值。
"autokey"(自动密钥)是什么意思?
"Autokey"是"automatic key"(自动密钥)的缩写——该密码从消息内容自动生成自身的密钥,而非需要一个与消息等长的独立密钥。引导密钥启动整个过程,随后由明文(或密文,取决于变体)接管,生成剩余的密钥字母。
如果只有密文,能否破解自动密钥密码?
可以,但比破解标准维吉尼亚密码更难。最常见的纯密文攻击方法是穷举所有可能的短引导密钥(若引导密钥为 4 个字母,仅有 26^4 = 456,976 种可能),并对每种解密结果按预期语言统计特征评分。正确的引导密钥将产生具有自然语言频率分布、二元组规律和词语结构的明文。在现代硬件上,自动评分工具可在数秒内完成所有候选方案的测试。
为何自动密钥密码有时被称为"auto cipher"?
"auto cipher"是"autokey cipher"的非正式缩写,指同一系统。部分较早的文献和谜题社群使用"auto cipher"作为简称,尤其是在将其与其他维吉尼亚变体区分时。两种称呼均指在初始引导密钥之后从消息内容生成密钥流的多表替换密码。