弗纳姆密码

Vernam 密码与一次性密码本:唯一经理论证明不可破解的加密方式

了解 Vernam 密码和一次性密码本如何实现完全保密。涵盖 Gilbert Vernam 的发明、香农的证明、VENONA 计划以及现实应用。

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

简介

在整个密码学史上,只有一种加密体系被数学上证明是不可破解的。它并非像 AES 或 RSA 那样"在计算上难以攻破",而是无论攻击者拥有多强的算力或才智,都真正地、永久地、可证明地无法被破解。这个体系就是一次性密码本(one-time pad),而它的实践起源正是 Vernam 密码。

现存的每一种密码——从凯撒密码到现代分组密码——理论上只要给予足够的时间和资源,都可以被破解。一次性密码本独树一帜。它的安全性既不依赖计算难度,也不依赖数学假设,更不依赖技术水平的高低。它建立在一个简单的信息论事实之上:若密钥是真正随机的、长度不短于消息,且从不重复使用,则密文中字面上不包含任何关于明文的信息。

这一区别至关重要。它将 Vernam 密码与密码学史上的所有其他体系区分开来,使其成为该领域最重要的发明之一——尽管实际应用上的局限性使其从未得到广泛使用。

使用我们的免费 Vernam 密码工具,体验基于 XOR 的一次性密码本加密与解密。


Gilbert Vernam 与密码的诞生

AT&T 面临的问题

1917 年,美国刚刚加入第一次世界大战,安全通信成为迫切需求。AT&T 的电报网络承载着大量商业和政府通信,全部通过铜线以电脉冲形式传输。当时的标准编码方式是 Baudot 码(又称 ITA2),这是一种五位二进制系统,每个字符用五个电脉冲表示——每个脉冲要么是"传号"(有电流)要么是"空号"(无电流)。例如,字母 A 对应 11000,字母 B 对应 10011,依此类推,共有 32 种组合,覆盖所有字母、数字和控制字符。

其漏洞显而易见:任何人只要在电报线路上搭线,便可直接读取 Baudot 信号。当时针对电报流量的现有加密方法既繁琐易错,又被公认为不安全。

Vernam 的洞见

Gilbert Sandford Vernam 是 AT&T 研究实验室(即后来贝尔实验室的前身)一名年仅 27 岁的工程师。他的背景是电气工程,而非数学或密码学,这使他的贡献愈显难能可贵。

Vernam 的核心洞见在于:Baudot 码的二进制特性,使其天然适合一种特定的数学运算——异或(XOR)。他提议在纸带上打出一段随机密钥,该密钥纸带与明文纸带逐字符地通过 XOR 运算结合后再发送。在接收端,将同一密钥纸带送入一台相同的机器,再次执行 XOR 运算,即可还原明文。

每一比特的 XOR 运算规则如下:

明文位密钥位密文位
000
011
101
110

XOR 运算的关键属性在于它是自身的逆运算:将密文与同一密钥再做一次 XOR,即可还原原始明文。数学表达为:P XOR K = C,且 C XOR K = P。

电传打字机实现

Vernam 建造了一台可直接与现有电传打字机设备集成的工作原型。两条同步纸带——一条载有消息,一条载有密钥——同时送入机器。机器通过继电器电路以机械方式执行 XOR 运算,输出带有加密内容的第三条纸带。整个过程自动、快速,无需操作员进行任何手动密码操作。

Vernam 于 1918 年 9 月 13 日申请了专利(美国专利第 1,310,719 号)。专利详细描述了该系统,包括使用两段不同长度的环形密钥带以产生更长有效密钥周期的方案。然而,这种双带变体无法实现完全保密,因为合并后的密钥终究会周期重复。

Joseph Mauborgne 上尉的贡献

Vernam 发明不久后,美国陆军通信兵团的 Joseph O. Mauborgne 上尉认识到,该系统的安全性完全取决于密钥的随机性与不重复性。Mauborgne 主张,密钥纸带必须满足:

  1. 真正随机(不由任何可预测的过程生成)
  2. 长度不短于消息
  3. 仅使用一次,使用后立即销毁

Mauborgne 对这三个条件的坚持,将 Vernam 实用的电传密码升华为我们今天所称的一次性密码本。Vernam 的 XOR 机制加上 Mauborgne 的密钥管理规则——二者的结合,创造了历史上唯一经过证明不可破解的密码体系。


克劳德·香农与完全保密性的证明

信息论与密码学

Vernam 发明三十年后,数学家克劳德·香农提供了严格的理论基础,从根本上解释了为何一次性密码本不可破解。香农 1949 年的论文《保密系统的通信理论》是信息论与现代密码学两个领域的奠基文献之一。

香农此前已凭借 1948 年的论文《通信的数学理论》彻底革新了通信领域,该论文引入了信息熵的概念。在 1949 年的论文中,他将同样的数学框架转向了加密问题。

完全保密性的含义

香农将完全保密性定义为一个精确的数学条件:若一个加密系统具有完全保密性,则密文完全不泄露任何关于明文的信息。形式化表达为:对于每一个可能的明文消息 M 和每一个可能的密文 C:

P(M | C) = P(M)

这个等式表明,在已知密文 C 的条件下,明文为 M 的概率,与在完全不知道密文的情况下明文为 M 的概率完全相同。密文在统计上与明文相互独立。观测到 C 对关于 M 的知识毫无影响。

证明

香农证明了两个相互关联的结论:

定理一:一次性密码本具有完全保密性。若密钥是均匀随机的、独立于明文、且长度不短于消息,则对任意密文 C,所有等长明文产生该密文的概率均相等。截获 C 的攻击者可以计算出,它可能是"ATTACK AT DAWN"的加密,也可能是"PLEASE SEND HELP"的加密,或者任何其他等长消息的加密,而所有可能性的概率完全相同。没有任何统计检验、模式分析或算力能够将正确的明文与其他候选项区分开来。

定理二:完全保密性要求密钥长度不短于消息。这是上述结论的逆命题,确立了一个严格的下界。无论多么精巧的密钥调度方案、多么聪明的压缩技巧,或多么高明的数学捷径,都无法用更短的密钥实现完全保密性。这一结论解释了为何所有实用密码(必然使用短密钥)在理论上都是可破解的——它们必须以牺牲香农的完全保密性来换取实用性。

意义何在

香农的证明将一次性密码本从军事奇技巧算升华为信息论中的奠基性结论。它表明,不可破解的加密在原则上是可能的,但代价不可逃避:你需要与待加密数据等量的密钥材料。其他所有密码都是安全性与实用性之间的折中,而香农的证明使这一权衡在数学上显得无比清晰。


三项严格要求

一次性密码本的完全保密性依赖于三个条件被精确满足。违反其中任何一个,哪怕只是轻微违反,都会彻底摧毁其数学保证。

要求一:密钥必须真正随机

密钥必须由真正不可预测的过程生成——不是伪随机,不是"足够随机",而是信息论意义上的真正随机。密钥的每一个比特或字符,都必须在统计上独立于其他所有比特,并在所有可能值上均匀分布。

这一要求比看起来更难满足。大多数计算机生成的"随机"数实际上是伪随机数:由确定性算法生成,给定相同的种子就会产生相同的输出。伪随机密钥带,无论其统计特性多么优良,熵值都远低于真正随机的密钥。如果攻击者发现了算法和种子,就能重新生成整条密钥。

历史上,真正随机的密钥依赖物理过程生成:放射性衰变、电子噪声、骰子投掷或大气噪声。现代硬件随机数生成器(HRNG)利用半导体结中的热噪声或光子探测器中的量子效应产生随机数。

要求二:密钥长度必须不短于消息

每个明文字符都需要对应一个密钥字符。加密一条 1000 字符的消息需要 1000 字符的密钥。加密 1 GB 的数据需要 1 GB 的密钥。这一点无法绕过。

这是实践中负担最重的要求。它意味着 Alice 和 Bob 在交换加密消息之前,必须先通过安全渠道交换等量的密钥材料。而如果他们有传输密钥的安全渠道,理论上也可以直接用这个渠道传消息本身。这种循环依赖,是一次性密码本尽管安全性完美却使用受限的根本原因。

要求三:密钥决不能重复使用

每个密钥只用于单条消息,使用后立即销毁。若同一密钥被用于加密两条不同的消息,整个体系就会崩溃。

原因如下:若 C1 = P1 XOR K,C2 = P2 XOR K(使用相同密钥 K),则:

C1 XOR C2 = (P1 XOR K) XOR (P2 XOR K) = P1 XOR P2

密钥完全被抵消。攻击者得到的是两段明文的 XOR,从中泄露了大量信息。若明文是自然语言,通过"字段拖拽(crib dragging)"技术——猜测常见词汇,验证另一条消息的部分解密结果是否合理——就能完全还原两条消息。

这不是理论上的担忧,而正是 VENONA 计划中苏联情报体系被攻破的方式。


VENONA 计划:密钥重用如何破解苏联密码

背景

VENONA 计划是迄今最为震撼的现实案例,充分展示了一次性密码本密钥被重复使用后的后果。它是一个警世故事,为所有关于密钥管理的理论警告提供了佐证。

第二次世界大战期间,苏联使用一次性密码本系统与其遍布世界的大使馆、领事馆和情报机构进行通信。密钥材料在苏联国内生产,以密码本的形式分发——每页包含若干组随机五位数字。理论上,每页应使用一次后立即销毁。

致命错误

1942 年至 1943 年间,在德国入侵的压力下,苏联密码机构("第八局")犯下了一个灾难性错误:它复制了约 35,000 页一次性密码本密钥材料。重复的页面被装订成不同的密码本,分发给不同的苏联驻外机构。这意味着,相隔数月乃至数年发送的电报,可能使用了同一密钥加密。

这次复制很可能是因为战时围困状况使生产足够多的真正随机密钥材料极为困难。苏联密码学家或许认为,将同一页分发给不同国家的机构——这些机构大概在谈论不同的话题——应该足够安全。他们错了。

美国密码分析员

1943 年,美国陆军信号情报处(SIS,后更名为武装力量安全局,最终演变为国家安全局 NSA)启动了一项秘密项目,专门分析苏联外交通信。该项目最初代号为 JADE,后改为 BRIDE,最终定名 VENONA。

1946 年,密码分析员 Meredith Gardner 注意到部分电报在某些位置共享了相同的密文序列——这只可能在使用了同一密钥时才会发生。首个突破由此而来。通过对使用同一密钥加密的电报对做 XOR 运算,Gardner 得到了底层明文的 XOR 值,再结合苏联密码本结构的知识和自然语言统计规律,他开始逐步还原这些电报。

在此后三十年间,VENONA 的密码分析员从数十万份截获的电报中,成功解密了约 3,000 份苏联电报。这些解密电报揭露了:

  • 苏联安插在曼哈顿计划中的间谍身份(包括 Klaus Fuchs、Julius Rosenberg 和 Theodore Hall)
  • 苏联在美国国务院、财政部及战略情报局(OSS)内部的间谍网络
  • 英国情报机构中"剑桥五人组"间谍网络的存在
  • 苏联在整个西方世界的情报行动

教训

VENONA 证明了一次性密码本的安全保证极为脆弱:规则被严格遵守时,它完美无懈;一旦规则被打破,它就会灾难性地崩溃。苏联人用的并非弱密码,而是当时最强大的密码体系——但他们违反了其三项要求中的一项,仅此一个漏洞,便将一切毁于一旦。


一次性密码本的现实应用

尽管在通用场景中不够实用,一次性密码本在某些高风险的特定场景下确实被采用,因为在那些场合,绝对安全性值得承担巨大的后勤成本。

莫斯科—华盛顿热线

1962 年古巴导弹危机暴露了两个核大国之间通信迟缓且不可靠的危险,美苏两国于 1963 年建立了直接通信链路,即著名的"热线"。与流行印象相反,最初的热线并非一部红色电话,而是一条电传打字机链路。

该热线使用一次性密码本系统加密。密钥材料在两国之间实物交换:美国制作的密钥带被送往莫斯科,苏联制作的密钥带被送往华盛顿。双方各使用对方提供的密钥材料加密自己发出的电报,确保双方都无需信任对方的随机数生成器。

这一安排之所以可行,是因为热线通信量很低(该链路仅用于国家元首之间的紧急通信),而实物密钥交换的后勤成本在如此重大的战略意义面前是可以接受的。

二战中的英国特别行动处

英国特别行动处(SOE)在第二次世界大战期间负责协调被占领欧洲的破坏和抵抗活动,使用一次性密码本与在外活动的特工通信。特工们获得的是丝绸一次性密码本——密钥材料印在薄丝绸片上,可以缝入衣物,使用后焚烧即可轻松销毁。

丝绸密码本体积小、重量轻,比密码书更易隐藏。每张丝绸片包含足够一条短消息使用的密钥材料。使用后,特工将用过的部分撕下销毁。这套系统为外勤特工通常发送的短小、低频消息提供了出色的安全保障。

然而,SOE 的密钥分发始终是一大挑战。特工们往往密钥材料供应不足,被迫重复使用密钥,或退回到安全性更差的密码系统,例如经常被德军破解的"诗歌密码"。

外交通信

整个冷战期间,许多国家使用一次性密码本处理最敏感的外交通信。大使馆通过密封的外交邮袋收取一次性密码本材料,存放于大使馆保险柜中,使用后销毁。最高机密外交电报的相对低频率,使这一方案切实可行,尽管这需要持续运转的实物密钥传递后勤链条。


一次性密码本与序列密码的对比

一次性密码本的不实用性推动了密码学家开发序列密码(流密码)——这类系统以从短种子密钥生成的伪随机密钥流,取代真正随机的密钥,从而近似模拟一次性密码本。

序列密码的工作原理

序列密码使用以秘密密钥(通常为 128 或 256 位)为种子的伪随机数生成器(PRNG),生成一条密钥流,再与明文进行 XOR 运算——这与 Vernam 密码完全相同。关键区别在于:该密钥流是确定性的,任何知道种子密钥的人都可以重新生成整条密钥流。

安全性权衡

属性一次性密码本序列密码
密钥长度与消息等长固定(128–256 位)
密钥生成真正随机由种子生成的伪随机
完全保密性
实际密钥分发极度困难简单
脆弱性仅限密钥重用算法弱点、密钥重用
示例Vernam 密码、外交密码本ChaCha20、AES-CTR、RC4

现代序列密码(如 ChaCha20)具有计算上的安全性——用任何已知算法都无法在合理时间内破解。但它们并非信息论意义上的安全。理论上,足够强大的计算机(或算法上的数学突破)可以将其破解。一次性密码本则不存在此类脆弱性,因为其安全性完全不依赖计算假设。

自动密钥密码代表了历史上对类似思路的一次尝试:通过将明文本身纳入密钥生成过程来延伸短密钥。它的安全性虽优于它所派生的维吉尼亚密码,但与一次性密码本相去甚远,因为其密钥延伸过程是确定性且可预测的。


现代一次性密码本实现

量子密钥分发(QKD)

一次性密码本技术领域最重要的现代进展是量子密钥分发(QKD)。QKD 系统利用量子力学原理,在两方之间生成并分发真正随机的密钥材料,并保证任何窃听行为都将被检测到。

BB84 协议由 Charles Bennett 和 Gilles Brassard 于 1984 年开发,通过将密钥比特编码在单个光子的偏振态中来传输密钥。量子物理定律确保测量光子的状态必然会扰动它,因此任何截听行为都会在密钥中引入可检测的错误。若错误率超过阈值,双方即知信道已被入侵,并丢弃该密钥。

QKD 解决了一次性密码本的密钥分发难题——至少在原理上如此。目前已有数款商用 QKD 系统问世,中国已部署了一条连接北京与上海的 2000 公里量子密钥分发网络。结合一次性密码本,QKD 可提供端到端的信息论安全:在光纤或自由空间光链路上实现真正无法破解的加密。

数字一次性密码本

软件实现的一次性密码本存在于特定应用场景中,典型工作流程如下:

  1. 使用硬件随机数生成器生成一个大型真随机数据文件。
  2. 将该文件复制到两个 USB 驱动器或其他存储介质上。
  3. 以实物方式将一份副本交付给接收方。
  4. 将随机数据作为一次性密码本用于加密消息,同时记录密钥文件的使用偏移量。
  5. 双方删除已使用的密钥文件部分。

对于能够安排实物密钥交付的双方而言,这种方法在低通信量、高安全性的场景下是可行的。例如,在危险环境中与消息来源通信的记者,曾使用过这套系统的变体。


历史背景:Vernam 密码在密码学史上的地位

Vernam 密码出现于密码学史上的关键时刻。1917 年,主流密码体系还是维吉尼亚密码等手工密码,数百年来被认为坚不可破,却日益遭到专业密码分析员的破解。电报通信的机械化要求一种全新的加密方法——一种能以机器速度运行、能抵御系统性分析的方法。

Vernam 的贡献在于认识到二进制电信号可以通过 XOR 运算直接与随机密钥结合,从而消除了对查找表、密码字母表或手工运算的依赖。这是一次概念上的跨越,架起了古典笔纸密码时代与现代机器加密时代之间的桥梁。

一次性密码本也充当了衡量所有其他密码的基准。密码学家在评估一种新密码时,一个根本性的问题始终是:"这与一次性密码本的安全性有多接近?它以牺牲哪些安全性换取了哪些实用优势?"从某种意义上说,每一种实用密码都是在工程层面对一次性密码本理论完美性的一种权衡。


常见问题

为什么一次性密码本没有被用于日常加密?

一次性密码本要求密钥材料与待加密数据等长、真正随机,且绝不重复使用。对于网页浏览、电子邮件、文件存储等日常应用,这完全不切实际。加密一个 1 GB 的文件需要 1 GB 的真随机密钥材料,而这些材料还必须事先安全地交付给接收方。现代密码(如 AES)使用 256 位密钥即可实现极高(尽管并非完美)的安全性,对几乎所有现实应用场景而言都实用得多。

如果用计算机的随机函数生成一次性密码本密钥会怎样?

大多数编程语言内置的随机函数(如 Python 的 random 模块或 JavaScript 的 Math.random())使用确定性算法生成伪随机数。这些函数不适合用于一次性密码本,因为发现算法和种子的攻击者可以重新生成整条密钥。真正的一次性密码本必须使用密码学安全的随机源,最好有硬件支持:Linux 上的 /dev/urandom、Windows 上的 CryptGenRandom,或专用的硬件随机数生成器。

量子计算机能破解一次性密码本吗?

不能。一次性密码本的安全性是信息论层面的,而非计算层面的。它不依赖任何数学难题的"难解性"。即使是算力无限的量子计算机,也无法从密文中提取字面上不存在的信息。这与 RSA 或椭圆曲线密码学有根本区别——后两者依赖量子计算机可以利用 Shor 算法高效求解的数学难题(因式分解、离散对数)。

Vernam 密码与一次性密码本有何区别?

严格来说,Vernam 密码是指机械实现层面的内容——即 Gilbert Vernam 于 1918 年申请专利的、基于 XOR 的电传打字机加密系统。一次性密码本是更广泛的密码学概念,在 Vernam 机制的基础上增加了真随机性和单次使用的要求。实践中,这两个术语往往被混用。Vernam 最初的设计实际上使用了两条循环密钥带(这些密钥最终会周期重复),因此并不能实现完全保密性。正是 Mauborgne 上尉坚持了"一次性"要求,才使这套系统真正无法破解。

除 VENONA 计划外,还有人因一次性密码本密钥重用而落网吗?

有。密钥重用是一个反复出现的漏洞。第二次世界大战期间,德国情报机构偶尔重复使用 Enigma 的设置,这是盟军布莱切利园破解 Enigma 的原因之一。更直接类似于 VENONA 的案例是,冷战期间多个东方阵营情报机构被发现重复使用了一次性密码本材料。根本教训始终如一:一次性密码本的安全性取决于管理密钥的人的自律程度。历史上,密钥管理中的人为失误远比任何密码分析突破更为常见。

关于本文

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

试用 弗纳姆密码 工具

通过我们的交互式弗纳姆密码工具,将所学知识付诸实践。

试用 弗纳姆密码 工具