本节摘要:1949 年发表的《保密系统的通信理论》第一次把"安全"变成数学对象:熵度量不确定性,完善保密性给出可证明的绝对安全,唯一解距离解释了为什么一切实用密码终将被穷举攻破,混淆与扩散则成为分组密码的设计宪法。本节沿着这篇论文的脉络,把散落两千年的密码实践收拢成一个理论体系。
1941 年,贝尔实验室迎来一位刚到任的数学家。克劳德·香农受命参与 X 系统——盟军最高层之间的加密语音电话项目(军方代号 SIGSALY),罗斯福与丘吉尔的越洋通话就走在这条线上。项目要求回答一个此前从未被认真回答过的问题:一段语音加密后,敌手到底还能不能从里面挤出信息?
战争的思考在 1948 与 1949 年结出两篇论文。前者《通信的数学理论》创立信息论,定义了信息的度量单位——比特;后者《保密系统的通信理论》把前者对准密码学,解密后立即震动学界。两篇合起来做的事,用一句话说就是:**把"保密"从工匠的手感变成可以计算、可以证明的数学命题。**肯迪的频率分析、卡西斯基的周期测试、图灵的 crib 逻辑,这些散落的智慧第一次被同一个框架收编:密文之所以泄露明文,是因为明文有冗余;密钥之所以有效,是因为它带来不确定性;安全的极致,就是让密文对明文的不确定性与密钥完全无关。

香农给出的定义冷静而苛刻:若对一切明文 M 与密文 C,恒有"看到 C 的条件下 M 的概率 = M 的先验概率",则该体制完善保密(perfect secrecy)。直白地说:密文不提供任何新信息,破译与瞎猜等价。这不是工程上的"很难破",是信息论意义上的"破无可破"。
存在性证明出人意料地简单。1917 年贝尔实验室的弗农已发明"一次一密"(one-time pad):密钥是与明文等长的真随机比特串,密文 = 明文异或密钥。香农证明它就是完善保密的唯一形态——对任意密文 C 与任意候选明文 M,恰好存在唯一一把密钥把 C 解成 M,所有候选明文机会均等,密文自然不偏袒谁。冷战时期华盛顿与莫斯科之间的热线电话就采用一次一密,因为它值得用最高成本换取零风险。
代价同样冰冷:密钥必须与全部通信量等长、必须真随机、只能用一次、必须提前安全送达。通信一万兆就要先秘密递一万兆密钥——密钥分发问题非但没有解决,反而被放大成悖论。香农理论的价值恰在于此:它证明了绝对安全的边界位置,宣告一切实用密码都是"计算安全"的折中——不是破无可破,而是在有限算力内破不动。这个二分法奠定了此后所有标准(DES、AES)的理论站位。
用一段 Python 亲手验证"密文抹平频率":
import random from collections import Counter def otp_encrypt(msg_bytes, key_bytes): assert len(msg_bytes) == len(key_bytes) return bytes(m ^ k for m, k in zip(msg_bytes, key_bytes)) msg = b"ATTACKATDAWN" * 10 # E 出现极不均匀的明文 ciphers = [] for _ in range(20000): # 用 2 万把随机密钥加密同一明文 key = bytes(random.randrange(256) for _ in msg) ciphers.append(otp_encrypt(msg, key)) first_bytes = Counter(c[0] for c in ciphers) print("首位字节取值分布:从 0 到 255 高度均匀,每个值约 78 次") print("极差:", max(first_bytes.values()) - min(first_bytes.values())) # 若换成"固定密钥的凯撒",首位字节将永远只有 1 个取值——统计指纹一眼可见
理论还回答了一个切身问题:实用密码(密钥远短于明文)到底还能撑多久?香农定义唯一解距离 n₀ ≈ 密钥信息量 / 语言冗余度。英语每字母冗余约 3.2 比特,一把 56 比特的密钥对应 n₀ ≈ 56 / 3.2 ≈ 17.5 个字母——截获超过这个长度的密文,理论上就只剩唯一合理的明文,其余都是干扰。DES 的 56 位密钥在香农的算式里早已写好判决:它从设计之初就注定会被海量密文穷举收割,剩下的只是算力何时到位(答案是 1998 年,见第 3 章)。反过来,维吉尼亚五字母密钥约 23.5 比特,唯一解距离不足 8 个字母——三百年神话在数学上连一封信都护不住。
对"如何造出接近计算安全极限的实用密码",论文末尾给出两条公理,日后成为分组密码的宪法:
两者交替叠用即乘积密码——1.4 节"替换加换位"的公理化版本。三年后的 Lucifer 与 DES、半个世纪后的 AES,都是这两条公理的工程答卷。
💡 关键直觉:信息论看密码,本质是一场"不确定性预算"的分配。明文冗余是不确定性的漏洞,密钥熵是确定性的补给;密钥熵低于明文冗余之时,就是密文终被唯一解之日。
理论已备,工业登场。下一章看两公理如何长成 16 轮 Feistel 网络,DES 如何统治四分之一个世纪,又如何在算力面前让位于 AES。