Vernam 密码(一次性密码本)在线编码器和解码器
Vernam 密码(又称一次性密码本)是唯一经数学证明无法破解的加密方法。它通过 XOR 或模加法将明文与等长的真随机密钥组合。使用此免费工具以完美保密性加密和解密消息——无需注册。
加密模式
选项
可视化
安全警告
- • 密钥必须是真正随机的(不能是单词或规律)
- • 永远不要重复使用密钥——使用一次后销毁
- • 密钥长度必须等于或超过消息长度
- • 使用后立即销毁密钥
正确使用时提供完美保密性
什么是弗纳姆密码?
弗纳姆密码(Vernam Cipher),也称为一次性密码本(OTP),是唯一被数学证明不可破解的加密方法。由 Gilbert Vernam 于1917年在 AT&T 贝尔实验室工作时发明,它将每个明文字符与来自等长真随机密钥的对应字符相结合,使用模加法或 XOR 运算。
当正确实现时,一次性密码本能够实现密码学家所称的完美保密性——Claude Shannon 在其1949年的里程碑式论文《保密系统的通信理论》中正式证明了这一性质。无论现在还是未来,任何计算能力都无法破解正确使用的一次性密码本。
加密原理
弗纳姆密码提供两种操作模式,只要密钥满足所需条件,两者都能产生可证明安全的密文。
维吉尼亚模式(字母加法)
每个字母被转换为数字(A=0, B=1, ... Z=25),与对应的密钥值相加,并以26取模:
加密: C = (P + K) mod 26
解密: P = (C - K) mod 26
示例: 使用密钥"XMCKL"加密"HELLO":
- H(7) + X(23) = 30 mod 26 = 4 (E)
- E(4) + M(12) = 16 mod 26 = 16 (Q)
- L(11) + C(2) = 13 mod 26 = 13 (N)
- L(11) + K(10) = 21 mod 26 = 21 (V)
- O(14) + L(11) = 25 mod 26 = 25 (Z)
结果:HELLO 变为 EQNVZ
XOR 模式(二进制运算)
每个字符被转换为二进制,并与密钥逐位进行 XOR 运算。XOR 是自逆运算,即相同操作既可加密也可解密:
明文 'H': 01001000
密钥字节: 10110111
XOR 结果: 11111111 (密文)
密文: 11111111
密钥字节: 10110111
XOR 结果: 01001000 (恢复 'H')
XOR 模式可处理任何二进制数据,而不仅仅是文本,使其成为现代实现中的标准方法。
完美安全性的要求
完美保密性依赖于四个不可妥协的条件。违反其中任何一个都会将密码降级为普通的可破解系统。
| 要求 | 重要性 |
|---|---|
| 真随机密钥 | 伪随机生成器遵循可以被预测或重现的确定性模式 |
| 密钥长度 >= 消息长度 | 较短的密钥会强制重复,产生可利用的模式(类似于维吉尼亚密码) |
| 仅使用一次 | 重复使用密钥让攻击者可以对两个密文进行 XOR,消除密钥并暴露两个明文 |
| 密钥保密 | 如果对手获得密钥,所有安全性立即丧失 |
弗纳姆密码与维吉尼亚密码对比
弗纳姆密码与维吉尼亚密码共享相同的数学运算——模加法——但在密钥处理方式上存在根本差异。
| 特性 | 弗纳姆密码(OTP) | 维吉尼亚密码 |
|---|---|---|
| 密钥长度 | 等于消息长度 | 短关键词,重复使用 |
| 密钥材料 | 真随机 | 易记的单词或短语 |
| 安全级别 | 完美保密性(已证明) | 可通过 Kasiski 检验破解 |
| 实际用途 | 极其有限 | 历史上广泛使用 |
| 密钥重用 | 从不——每个密钥仅使用一次 | 相同关键词无限期重复使用 |
像"SECRET"(6个字母)这样的维吉尼亚密钥在100个字母的消息中重复超过16次,产生频率分析可以利用的周期性模式。而100个真随机字符的弗纳姆密钥产生的密文完全没有可利用的结构。
历史应用
军事和情报用途
一次性密码本在冷战时期得到广泛使用。特工携带印有随机数字序列的纸质密码本,每页只使用一次后即销毁。1963年建立的华盛顿-莫斯科热线(旨在防止意外核战争)最初依赖一次性密码本加密。
该系统最著名的失败案例发生在二战期间。受战时压力影响,苏联重复使用了部分一次性密码本密钥。美国国家安全局的**文字密码项目(Venona Project)**利用这些重复使用的密钥,在1943年至1980年间解密了数千条苏联情报消息,暴露了主要间谍网络。算法本身从未被破解——只是密钥管理失败了。
现代意义
今天,一次性密码本对大多数通信来说是不切实际的,因为分发与每条消息等长的密钥会产生巨大的后勤挑战。然而,这一原则在**量子密钥分发(QKD)**中得以延续,它使用量子力学通过光纤链路安全分发真随机密钥,从而有效解决了密钥分发问题。
一些情报机构据信仍在最敏感的通信中使用一次性密码本系统,该密码仍是衡量所有其他加密方法的理论标准。
弗纳姆密码与其他加密方法对比
| 特性 | 弗纳姆(OTP) | 凯撒密码 | AES-256 | RSA |
|---|---|---|---|---|
| 安全基础 | 信息论 | 无(极易破解) | 计算复杂性 | 计算复杂性 |
| 密钥长度 | 与消息等长 | 1个数字(0-25) | 256位 | 2048+位 |
| 抗量子 | 是(可证明) | 不适用 | 部分 | 否 |
| 日常实用性 | 否 | 否 | 是 | 是 |
常见问题
弗纳姆密码可以被破解吗?
不能——只要正确使用就不能。Shannon 的证明表明,使用真随机、足够长的单次使用密钥时,对于任何给定密文,每个可能的明文都是同等可能的。攻击者仅从密文中获取零信息。像文字密码项目这样的历史性"破解"之所以成功,是因为密钥被重复使用,而非算法有缺陷。
为什么一次性密码本对日常使用不切实际?
密钥必须与每条消息等长且永不重用。加密1 GB的文件需要通过单独渠道安全分发1 GB的密钥。对于大量通信,这造成了难以维持的后勤问题,这就是为什么现代系统使用AES等计算安全算法的原因。
弗纳姆密码与 XOR 加密有何区别?
XOR 是弗纳姆密码中使用的二进制运算,但并非所有 XOR 加密都符合一次性密码本的标准。许多"XOR加密"工具使用短的重复密钥或算法生成的伪随机流。安全性来自密钥属性——真随机性、足够的长度和单次使用——而非 XOR 运算本身。
谁发明了弗纳姆密码?
Gilbert Sandford Vernam 于1917年在 AT&T 贝尔实验室发明了该密码,用于保护电传打字机通信(美国专利1,310,719,1919年授权)。美国陆军信号兵团的 Joseph Mauborgne 后来贡献了密钥必须完全随机这一关键见解。Claude Shannon 于1949年提供了完美保密性的数学证明。
自动密钥密码与弗纳姆密码相比如何?
自动密钥密码使用短初始密钥,然后通过追加明文字符来扩展它。虽然这消除了维吉尼亚密码的重复密钥弱点,但密钥流并非随机——它依赖于明文本身,使其容易受到统计攻击。弗纳姆密码要求每条消息都有一个完全独立的真随机密钥。
相关工具与资源
关于弗纳姆密码的常见问题
弗纳姆密码是什么?
弗纳姆密码是一种将明文与等长随机密钥通过 XOR 或模加法结合的加密方法。1917 年由 AT&T 贝尔实验室工程师吉尔伯特·弗纳姆发明,最初用于电传通信安全。当使用真正随机的一次性密钥时,它成为一次性密码本——唯一被数学证明无法破解的密码。
为什么一次性密码本无法破解?
一次性密码本无法破解,因为在任意密文下,每种明文出现的概率都相等。克劳德·香农在其 1949 年论文《保密系统的通信理论》中证明了这一点,称之为"完美保密性"。由于密钥是真正随机的且与消息等长,无论多大的计算能力或数学分析都无法缩小原始消息的范围。使用不同密钥进行的每次解密都会产生合理但不同的结果。
弗纳姆密码如何工作?
弗纳姆密码通过 XOR(异或)或模加法将明文的每个字符与密钥对应字符结合。加密时,每个明文位或字母与对应的密钥位或字母进行 XOR 运算。解密时,对密文应用相同的 XOR 运算和相同的密钥,因为 XOR 是自逆的。例如,明文"A"(01000001)XOR 密钥"K"(01001011)产生密文(00001010),再对该结果与相同密钥进行 XOR 运算即可还原"A"。
安全的一次性密码本有哪些要求?
安全的一次性密码本需要满足四个严格条件:(1)密钥必须是真正随机的,而非伪随机或算法生成;(2)密钥长度至少与明文消息一样长;(3)每个密钥只能使用一次,使用后销毁;(4)密钥必须完全保密,仅在发送方和接收方之间共享。违反任何条件都会使密码丧失完美保密性保证,并可能遭受密码分析攻击。
谁发明了弗纳姆密码?
AT&T 贝尔实验室工程师吉尔伯特·桑福德·弗纳姆于 1917 年发明了这种密码,用于保护电传(电报机)通信安全。弗纳姆于 1919 年为该系统申请了专利(美国专利 1,310,719)。美国陆军通信兵军官约瑟夫·莫博涅后来提出了密钥必须完全随机的关键见解,将弗纳姆密码转变为真正的一次性密码本。克劳德·香农随后于 1949 年提供了其安全性的数学证明。
为什么一次性密码本对大多数用途不实用?
一次性密码本不实用,因为密钥管理造成了巨大的后勤挑战。密钥必须与发送的每条消息一样长,因此加密一个 1 GB 的文件需要提前安全分发一个 1 GB 的密钥。密钥永远不能重复使用,因此各方必须通过安全渠道持续交换新的密钥材料。大规模生成真正随机密钥也很困难。这些限制使一次性密码本仅适用于最高安全级别的通信,例如冷战期间的华盛顿–莫斯科热线。
弗纳姆密码与 XOR 加密有何区别?
XOR 加密是弗纳姆密码中使用的二进制运算,但并非所有 XOR 加密都符合弗纳姆密码的标准。真正的弗纳姆密码(一次性密码本)要求使用与消息等长且从不重复使用的真随机密钥。许多所谓的 XOR 加密方案使用短重复密钥或算法生成的伪随机密钥流,这使其容易受到已知明文攻击、频率分析和密钥恢复攻击。弗纳姆密码的安全性来自于密钥特性,而非 XOR 运算本身。