关键词密码

关键词密码的历史与密码分析:从古代替换到现代求解器

探索关键词密码的历史,掌握频率分析、字典攻击和 MCMC 求解器等密码分析技术。

发布于 2026年3月18日
14 分钟阅读
密码学指南

关键词密码在密码学史上占据着举足轻重的地位。作为最广泛使用的单表替换密码之一,它在被密码分析学家的数学洞察攻破之前,曾为外交官、军事指挥官和间谍服务了数百年。理解其历史及破解技术,是领会古典密码学与现代密码学思想的重要基础。

本指南追溯关键词密码从远古起源,经欧洲国家外交鼎盛时期的应用,再到各种密码分析方法——从纸笔频率分析到遗传算法——最终使其在安全领域走向淘汰,同时保留其巨大教育价值的全过程。

古代起源与替换密码的诞生

替换密码是有文字记载以来最古老的加密技术之一。其基本思想——按照固定规则将消息中的每个字母替换为另一个字母——在多个文明中独立出现。关键词密码对这一概念进行了改进:用一个容易记忆的单词或短语来生成替换字母表,使该系统既比随机排列更易于记忆,又更难被猜测。

阿尔-金迪与密码分析的黎明(公元850年)

关于系统性频率分析的最早已知记录,出现在**阿尔-金迪的手稿《破译密码消息的手稿》**中,该书约于公元850年在巴格达写成。阿尔-金迪是一位被誉为"阿拉伯哲学之父"的博学者,他观察到任何自然语言中的字母都以可预测的频率出现。他证明:通过统计密文中字母的出现次数并与已知语言规律进行比对,分析者无需知道密钥便可重建替换字母表。

这一洞见在此后的千年间主导了密码分析领域。每一种单表替换密码——包括关键词密码——从根本上都易受阿尔-金迪所描述的技术攻击。英语中最常见字母与最不常见字母之间的频率差(E 占 12.7%,Z 仅占 0.07%)提供了压倒性的统计优势,使频率分析在密文足够长的情况下极为有效。

从简单移位到关键词字母表

凯撒密码依赖固定的数字移位(例如将每个字母移动3位),而关键词密码引入了更复杂的排列方式。加密者选择一个关键词,去除重复字母,将这些字母置于密码字母表的开头,其余字母按标准字母顺序依次排列。

以关键词"ZEBRAS"为例,密码字母表为:

明文:  ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:  ZEBRASCDFGHIJKLMNOPQTUVWXY

这种方法相比简单移位密码具有两个实际优势:第一,关键词易于记忆和安全传递;第二,所得替换结果看起来远不如凯撒移位那样有规律,这种虚假的安全感延续了数个世纪。

外交与军事应用:黄金时代

从15世纪到18世纪,基于关键词的替换系统是欧洲国家外交的核心工具。各国政府、军事指挥官和外交官依赖越来越精密的单表密码变体来保护最敏感的通信。

命名密码本:外交标准

文艺复兴时期及近代早期外交的主要加密工具是命名密码本——一种将基于关键词的替换密码与代表常用词汇和短语的符号密码本相结合的系统。命名密码本被用于:

  • 外交谈判:寻求联盟或领土协议的欧洲列强之间
  • 军事情报:战役期间,拦截到的命令可能改变战局
  • 政治密谋:协调针对君主或对立派系的秘密活动
  • 商业往来:保护商业机密和金融信息

到18世纪,一些命名密码本已包含超过50,000个符号,但其底层的替换组件仍然易受近千年前阿尔-金迪所描述的同种频率分析攻击。

著名历史案例

路易十四的大密码(17世纪)

路易十四统治下的法国宫廷采用了历史上最复杂的命名密码本系统之一,称为大密码。该密码由安托万·罗西尼奥尔和博纳旺蒂尔·罗西尼奥尔父子设计,在关键词替换的基础上融入了数千个编码音节。这个密码被保密超过200年。1890年,法国军事历史学家艾蒂安·巴泽里终于将其破解,解密的信息揭示了关于神秘的铁面人身份的诱人线索——这是历史上最经久不衰的谜团之一。

巴宾顿阴谋与苏格兰女王玛丽(1586年)

历史上最具决定性的密码失败案例之一,涉及苏格兰女王玛丽。她使用一种结合了单表替换的命名密码本,与巴宾顿阴谋的共谋者秘密通信。弗朗西斯·沃尔辛厄姆爵士麾下的破译人员在托马斯·菲利普斯的带领下,通过频率分析和模式识别系统性地破解了这一密码。解密的信件提供了玛丽参与谋刺伊丽莎白一世女王阴谋的证据,直接导致玛丽于1587年受审并被处决。

美国南北战争中的通信(1861—1865年)

南北战争期间,联邦军和邦联军均使用关键词密码进行战地通信。邦联密码盘和各种基于关键词的系统被用于协调部队调动和战略部署。联邦军的军事情报局破译人员成功破解了许多邦联密码,往往在截获后数小时内便告成功——这印证了到19世纪单表替换密码已变得多么脆弱。

福尔摩斯与文学密码分析(1903年)

阿瑟·柯南·道尔的短篇小说**《跳舞的人》**将替换密码的密码分析带入了大众文化。故事中,夏洛克·福尔摩斯运用频率分析破解密码,将最常见的符号识别为字母E,再由此逐步推导。尽管故事简化了这一过程,但它准确描绘了核心技术,并让数以百万计的读者了解到破译密码的基本原理。

关键词密码的工作原理

在研究如何破解之前,理解加密机制至关重要。关键词密码在明文字母表和密文字母表之间建立了一种双射映射——每个字母恰好映射到另一个字母,且没有两个明文字母对应相同的密文字母。

逐步加密过程

  1. 选择关键词并转换为大写:例如"GRANDMOTHER"
  2. 去除重复字母,保留顺序:"GRANMOTHE"
  3. 补充剩余字母,按字母顺序排列:GRANMOTHEBCDFIJKLPQSUVWXYZ
  4. 将每个明文字母映射到对应的密文字母:
明文:  ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:  GRANMOTHEBCDFIJKLPQSUVWXYZ
  1. 加密消息,替换每个字母:
明文:  MEET AT DAWN
密文:  DMMS GS NGWI

本站的关键词密码解码器自动完成这一过程,同时显示替换表和逐步转换结果。

密钥空间与安全性含义

单表替换密码理论上允许 26!(约 4 × 10^26)种可能的字母表——这个数字庞大到即使是现代计算机也无法穷举。然而,关键词密码极大地压缩了这一空间。如果关键词是常见英语单词,有效密钥空间就缩减为攻击者所使用字典的词汇量,通常仅有数万个候选词。这种局限性正是字典攻击对关键词密码如此有效的原因。

频率分析:经典攻击手段

频率分析仍然是破解关键词密码及所有其他单表替换系统最基本、最强大的技术。它利用了替换操作保留底层语言统计特征这一事实。

英语字母频率

频率分析的基础是自然语言中字母分布的不均匀性。在标准英语文本中:

字母频率字母频率字母频率
E12.70%T9.06%A8.17%
O7.51%I6.97%N6.75%
S6.33%H6.09%R5.99%
D4.25%L4.03%C2.78%

由于关键词密码加密是字母间的一对一替换,这些频率规律在加密后完整保留。密文中最常见的字母几乎肯定代表 E,第二常见的很可能是 T 或 A,以此类推。

重合指数

**重合指数(IC)**衡量从文本中随机抽取两个字母相同的概率。英语文本的 IC 约为 0.065;对于均匀随机分布,该值约为 0.038。关键在于,单表替换不会改变 IC——经关键词密码加密的英语文本仍保持约 0.065 的 IC 值。这一特性确认密文使用的是单表替换(而非多表替换),从而引导分析者采用频率分析,而非针对维吉尼亚密码等密码所设计的技术。

IC = Sum of ni(ni - 1) / N(N - 1)

其中 ni 为每个字母的出现次数,N 为字母总数。

卡方检验

卡方拟合优度检验量化了观测频率分布与预期英语分布的吻合程度:

X2 = Sum of (Observed - Expected)^2 / Expected

值越低表示匹配越紧密。在测试多个候选解密结果时,卡方值最低的通常最有可能正确。这一指标在自动求解器需要在无人工判断的情况下对数千个候选方案进行排序时尤为有价值。

最小文本长度要求

频率分析的可靠性在很大程度上取决于密文长度:

  • 25—50个字母:可进行基本模式识别,但频率噪声较大
  • 50—100个字母:统计方法变得相当可靠
  • 100—200个字母:可高置信度分析,大多数字母可识别
  • 300个字母以上:密码分析几乎必然成功

这正是为什么历史上较长的加密消息比短消息面临更大的截获和分析风险。

超越字母计数:模式识别

频率分析提供了统计基础,但熟练的密码分析人员会借助结构性模式识别来加速,甚至取代纯统计方法。

二元组和三元组分析

除单个字母外,常见的二元组(双字母对)和三元组(三字母序列)提供了额外的约束条件。最常见的英语二元组为 TH、HE、IN、ER、AN、RE 和 ED,最常见的三元组为 THE、AND、ING、HER 和 HAT。

如果三字母序列"QGJ"在密文中多次出现,分析者可以假设 QGJ 代表 THE——立即建立三个字母的映射(Q=T、G=H、J=E)。这些映射在文本的其余部分级联传播,往往能够解锁整个单词和短语。

利用词语结构

当保留词语边界时(关键词密码通常如此),可获得更多线索:

  • 单字母词必定是"A"或"I"
  • 常见三字母模式(如"THE"、"AND"和"FOR")可通过频率和位置识别
  • 双字母(LL、SS、EE、OO、TT)限制了密文字母与明文字母的映射关系
  • 词尾(如 -ING、-TION 和 -ED)揭示部分映射

实战示例

以下关键词密码密文示例:

QGJ OUFLV YPMEH AMW DUITS MQJP QGJ KCXS BAZ

第一步:"QGJ"出现两次且为三字母词——几乎可以确定是"THE"。由此得出 Q=T、G=H、J=E。

第二步:部分解密结果为:THE ?U??? ???E? ??? ?U??T ??E? THE ???? ???

第三步:"THE ?U???"提示"THE QUICK",扩展映射后确认更多字母。

第四步:持续替换后还原明文:"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG。"

这个关键词密码示例展示了频率分析与模式识别相结合,即使在文本相对较短的情况下也能破解密码。

现代计算密码分析

对于较短消息,纸笔频率分析已经足够,而现代计算方法则能以最少的人工干预自动破解关键词密码。

字典攻击

最直接的计算攻击方式是将字典中的每个词都作为潜在关键词进行测试。对于每个候选词,算法生成对应的密码字母表,解密密文,然后用英语语言指标对结果评分。

def dictionary_attack(ciphertext, word_list):
    best_score = 0
    best_result = None

    for keyword in word_list:
        cipher = KeywordCipher(keyword)
        decrypted = cipher.decrypt(ciphertext)
        score = english_score(decrypted)

        if score > best_score:
            best_score = score
            best_result = (keyword, decrypted, score)

    return best_result

一本典型的英语字典包含5万到20万个词。现代计算机可以在不到一秒内将每个词与密文逐一测试,使字典攻击对于使用真实词语作为密钥的关键词密码几乎是即时有效的。

马尔可夫链蒙特卡洛(MCMC)方法

对于使用随机或非字典密钥的关键词密码,MCMC 方法提供了更复杂的攻击手段。算法从随机替换字母表开始,然后迭代提出小的改动(交换两个字母映射),并评估所得解密结果是否更接近英语。

评分函数通常使用四元组频率——四字母序列在英语文本中出现的概率。通过接受改进方案,偶尔也接受较差方案(以跳出局部最优),MCMC 求解器能够高可靠性地收敛到正确解密结果。

基于 MCMC 的单表密码求解器在给定约200个以上字符的密文时,可以破解任意替换密码(不仅限于关键词约束),是自动化分析经典替换系统的黄金标准。

遗传算法方法

遗传算法将进化计算原理应用于密码分析。算法维护一个候选密钥种群,根据解密质量施加选择压力,并利用交叉和变异操作探索密钥空间。

适应度函数使用以下指标评估每个候选解密:

  • N元组频率分数:衡量字母序列与英语文本的吻合程度
  • 字典词汇计数:检查出现了多少可识别的词语
  • 重合指数:验证统计特性

遗传算法在与其他技术结合时特别有效:初始字典攻击缩小搜索空间,遗传算法再从此处精化结果。

实现关键词密码求解器

Python 实现

完整的 Python 实现展示了密码的机制,并为构建自动求解器提供了基础:

class KeywordCipher:
    def __init__(self, keyword):
        self.keyword = keyword.upper()
        self.standard = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        self.cipher_alpha = self._build_alphabet()

    def _build_alphabet(self):
        seen = set()
        unique = []
        for ch in self.keyword:
            if ch.isalpha() and ch not in seen:
                seen.add(ch)
                unique.append(ch)
        remaining = [c for c in self.standard if c not in seen]
        return ''.join(unique) + ''.join(remaining)

    def encrypt(self, text):
        table = str.maketrans(self.standard +
                              self.standard.lower(),
                              self.cipher_alpha +
                              self.cipher_alpha.lower())
        return text.translate(table)

    def decrypt(self, text):
        table = str.maketrans(self.cipher_alpha +
                              self.cipher_alpha.lower(),
                              self.standard +
                              self.standard.lower())
        return text.translate(table)

JavaScript 实现

可在浏览器中直接使用的 JavaScript 版本,可与网页界面直接集成:

class KeywordCipher {
  constructor(keyword) {
    this.keyword = keyword.toUpperCase();
    this.standard = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    this.cipherAlpha = this.buildAlphabet();
  }

  buildAlphabet() {
    const seen = new Set();
    const unique = [...this.keyword]
      .filter(c => /[A-Z]/.test(c) && !seen.has(c) && seen.add(c))
      .join('');
    const remaining = [...this.standard]
      .filter(c => !seen.has(c))
      .join('');
    return unique + remaining;
  }

  encrypt(text) {
    return [...text].map(ch => {
      const i = this.standard.indexOf(ch.toUpperCase());
      if (i === -1) return ch;
      const mapped = this.cipherAlpha[i];
      return ch === ch.toLowerCase()
        ? mapped.toLowerCase() : mapped;
    }).join('');
  }

  decrypt(text) {
    return [...text].map(ch => {
      const i = this.cipherAlpha.indexOf(ch.toUpperCase());
      if (i === -1) return ch;
      const mapped = this.standard[i];
      return ch === ch.toLowerCase()
        ? mapped.toLowerCase() : mapped;
    }).join('');
  }
}

这些实现可以扩展加入频率分析评分、字典攻击循环和 MCMC 优化,从而构建完全自动化的单表密码求解器。

安全性评估:关键词密码的失败原因

尽管理论密钥空间极为庞大(26! 种排列),关键词密码仍存在根本性弱点,使其不适用于任何对安全性有要求的场景。

结构性漏洞

  • 频率模式保留:单表替换不会消除字母频率,因此明文语言的统计特征在加密后完整保留。
  • 无扩散性:改变一个明文字母只影响对应的密文字母。而 AES 等现代密码确保每一位输入都影响每一位输出。
  • 关键词约束字母表:密码字母表必须以去重后的关键词开头,后跟其余字母按序排列,这极大压缩了有效密钥空间。
  • 模式保留:词语长度、标点符号和空格通常在加密后原样保留,提供了结构性线索。

历史上失败的应对措施

密码学家曾尝试多种改进方案以增强单表替换密码的强度:

  • 命名密码本为常见术语添加了代码词,但替换组件仍可被破解
  • 同音替换为高频字母分配了多个密文符号,在一定程度上平坦化了频率,但仍难逃高级分析
  • 空字符和填充插入无意义字符以掩盖规律,但经过训练的分析者学会了识别并剔除它们

唯一有效的解决方案是转向多表替换密码,如维吉尼亚密码,后者使用多个替换字母表,能抵御简单的频率分析——尽管它们最终也会在更复杂的统计攻击面前落败。

教育价值与现代应用

尽管在密码学上已经过时,关键词密码在教育领域仍不可或缺。它为理解现代密码学基础概念提供了易于接触的切入点。

数学概念

  • 双射函数:理解集合之间的一对一映射
  • 置换理论:字母表的重排方式及其组合数学
  • 统计分析:将概率分布应用于现实世界的模式检测
  • 假设检验:使用卡方检验等方法评估候选解

编程技能

实现关键词密码及其求解器有助于培养:

  • 字符串操作与字符编码
  • 哈希映射和查找表,用于高效替换
  • 算法设计,适用于暴力破解和启发式搜索
  • 优化技术,通过 MCMC 和遗传算法实现

娱乐与竞技应用

关键词密码频繁出现在以下场景中:

  • **夺旗赛(CTF)**网络安全竞赛
  • 报纸密码谜题和谜题书
  • 密室逃脱和寻宝游戏
  • 历史研究,解密存档的外交和军事信函

历史时间线

  • 公元850年 — 阿尔-金迪发表关于频率分析的最早已知记述
  • 15世纪 — 融入关键词替换的命名密码本成为欧洲外交标准
  • 1586年 — 巴宾顿阴谋密码被破解,直接导致苏格兰女王玛丽被处决
  • 16世纪 — 各国政府雇用的密码分析人员在欧洲各地例行破解命名密码本
  • 17世纪 — 路易十四的大密码达到空前的复杂程度
  • 18世纪 — 命名密码本系统扩展到50,000个以上符号,在与分析者的军备竞赛中节节败退
  • 19世纪 — 机械和数学进步使单表密码对于严肃用途彻底过时
  • 1903年 — 柯南·道尔的《跳舞的人》将替换密码分析带入大众文化
  • 21世纪 — MCMC 和遗传算法求解器实现了对任意单表密码的完全自动化破解

结语

关键词密码的历史,在许多方面正是密码学本身的历史:制造密码者与破解密码者之间的持续角力。从阿尔-金迪在9世纪巴格达的革命性洞见,到运行于笔记本电脑上的现代 MCMC 求解器,击败单表替换密码的技术日益强大,而密码本身的根本弱点——保留字母频率模式——始终未变。

研究关键词密码的密码分析,揭示了在现代安全领域依然相关的原则:可预测模式的危险性、统计分析的力量,以及密钥空间与扩散性的关键重要性。这些经验可以直接迁移到理解为什么 AES、RSA 等现代算法要如此设计。

欢迎使用我们的免费关键词密码工具练习加解密。使用频率分析解码器亲手破解密文,并将关键词密码的安全性与凯撒密码维吉尼亚密码进行比较,了解密码学复杂性如何随历史演进。

关于本文

本文是我们综合 关键词密码 教程系列的一部分。继续了解古典密码学,并探索我们的交互式密码工具。

试用 关键词密码 工具

通过我们的交互式关键词密码工具,将所学知识付诸实践。

试用 关键词密码 工具