秘密的起源:古典密码的黄金时代
人类最早的秘密书写可以追溯到文字诞生之初。当苏美尔人在泥板上刻下楔形文字时,当古埃及的祭司在纸莎草纸上描绘象形符号时,他们或许从未想过,几千年后,会有一群人专门研究如何把信息藏起来、又如何被人找出来。这群人研究的,就是我们今天要聊的主题——密码学。
“密码”这个词很有意思。在中文里,“密”意味着隐蔽、不公开,“码”则是符号、代码的意思。两字合在一起,描述的正是用特定符号传递隐藏信息的行为。但如果追根溯源,我们会发现,密码学的历史几乎和文字本身一样古老。几乎从人类开始书写的第一天起,就有人开始琢磨怎么把写下的东西藏起来、不让别人看见。
古埃及的隐秘符号
人类最早的有意识的信息隐藏行为,可以追溯到大约公元前1900年左右的古埃及。在埃及中王国时期的一些贵族墓葬中,考古学家发现了一些耐人寻味的铭文。这些铭文乍看之下是普通的象形文字,但仔细观察后会发现,它们包含大量不常见的符号排列,与标准的象形文字系统格格不入。
这些“奇怪”的铭文后来被密码学史研究者称为“埃及罕见符号”(Egyptian Unusual Signs)。它们看起来更像是某种符号游戏,而非正常的书写系统。有学者推测,这些铭文可能是用来标记墓葬确切位置的,目的是防盗——让那些试图闯入墓室窃取财宝的人找不到真正的入口。也有人认为,这些符号承载着某种神圣的、仅限祭司阶层知晓的知识。
无论出于何种目的,这些铭文的存在至少说明了一点:早在四千年前,人类就已经开始有意识地在文字中隐藏信息了。虽然我们无法确定古埃及人是否真的在使用“加密”技术——即有意打乱信息的正常表达方式——但他们显然已经意识到,信息的表达方式可以有多种层次。有些内容是公开的,有些则需要特定的钥匙才能解读。
值得注意的是,埃及象形文字本身的复杂性,也为信息隐藏提供了一层天然的保护。象形文字系统极其复杂,学习曲线陡峭,对于大多数外行人来说,即使看到原文也无法理解其含义。从某种意义上说,整个埃及书写系统本身就是一种“密码”——只有经过多年训练的书记员才能读懂。但这种基于知识门槛的保护,与我们今天所说的密码技术还是有本质区别的。
古埃及的案例给我们一个重要启示:信息隐藏的需求,可能比文字本身还要古老。当人类开始用符号记录思想的那一天起,就有人开始思考如何只让特定的人读懂这些符号。
斯巴达的塞兹密码棒
时间快进到公元前5世纪,世界正在经历一场东西方文明的正面碰撞——希波战争。这场持续了近半个世纪的战争,不仅塑造了希腊和波斯的命运,也为密码技术的舞台提供了一个绝佳的展示机会。
古希腊历史学家希罗多德在其不朽著作《历史》中,记录了大量关于密码术的趣闻。其中最著名的故事之一,讲述的是波斯国王薛西斯一世计划入侵希腊,但这个军事机密被一位希腊人提前获知——关键证据来自一封被截获的密信。这说明当时的统治者和军事指挥官,已经开始利用密码技术来传递敏感信息。
但真正让密码学史家着迷的,是斯巴达人发明的一种独特加密装置——塞兹密码棒(Scytale Cipher)。这种装置的原理简单得令人惊讶,却在当时发挥了重要作用。
塞兹密码棒是一根精心削制的木棒,截面呈多边形(通常是长方形或六边形)。使用时,将一条狭窄的羊皮纸或皮革条带螺旋缠绕在木棒上,然后沿着木棒的轴向写下要传递的信息。写完后,将条带从木棒上取下——此时,条带上的字母排列已经完全打乱,只有拥有相同规格木棒的接收者,才能将条带重新缠绕上去,沿着轴向读出原始信息。
这种加密方法的核心原理是转置(Transposition)——通过改变字母的位置顺序来隐藏信息,而不去改变字母本身。在密码学发展史上,塞兹密码棒被认为是最早的转置密码系统之一。
为什么斯巴达人选择转置而非替换?这要从他们的实际需求说起。斯巴达人以军事立国,讲究简洁高效。在他们的军事通信体系中,信息传递往往需要跨越复杂的地形、在紧张的战斗间隙进行。转置密码的一个优势是:发送者不需要掌握复杂的加密技巧,只需要知道如何正确使用那根木棒即可。相比之下,替换密码——比如后来凯撒使用的位移法——需要发送者记住一套替换规则,并且在每次通信时都要进行字母转换。塞兹密码棒则把这些计算工作转移到了装置本身。
让我们用一个具体的例子来理解塞兹密码棒的工作方式。假设发送者想要传递一条简短的信息:“SPARTA IS READY”(斯巴达已准备就绪)。如果使用的木棒周长为4个字符(即缠绕一圈可以写下4个字母),那么发送者会将信息纵向写在木棒上:
``` S P A R T A I S R E A D Y ? ? ? ```
按行读取后,密文变成:“TPISRAEAYRDSD??”(实际通信中,填充字母可能随机选择)。接收者收到这条看似乱码的密文后,只要使用周长相同的木棒,将条带重新缠绕,然后纵向读取,就能还原出原始信息。
塞兹密码棒的设计简洁而优雅,但它有一个致命的弱点:密钥空间太小。所谓密钥空间,是指加密系统可能使用的密钥数量。塞兹密码棒的密钥是木棒的周长。如果木棒截面是正方形或六边形,周长可能只有4或6个字符位置。这意味着潜在的密钥只有屈指可数的几个。敌人只要尝试所有可能的周长,就能破解任何截获的密文。
此外,塞兹密码棒还有一个物理上的脆弱点:如果敌人缴获了一根木棒,就能立刻读懂所有的加密信息。更糟糕的是,斯巴达人的盟友需要预先获得相同规格的木棒才能进行通信——在当时的条件下,这种“密钥分发”的难度可想而知。
尽管如此,塞兹密码棒代表了密码学发展史上的一个重要里程碑。它展示了通过改变信息排列顺序来隐藏内容的思想,这种思想在后来的密码系统设计中反复出现。二十世纪著名的Enigma密码机,其核心思想之一也是转置——只不过实现方式要复杂得多。
凯撒的位移密码
如果说斯巴达人用木棒和条带传递秘密,那么罗马人则选择了一种更加轻便的方案——位移密码(Shift Cipher)。而这种加密方式最著名的使用者,正是日后成为罗马终身独裁官的尤利乌斯·凯撒。
据古罗马作家苏维托尼乌斯记载,凯撒在与他信任的人通信时,会使用一种简单的字母位移法。他将每个字母向后移动固定位数——例如移动3位,那么A变成D,B变成E,C变成F,以此类推。这种方法后来被密码学史家称为“凯撒密码”(Caesar Cipher)。
凯撒密码的数学原理非常直接。如果我们将字母表从A到Z编号为0到25,那么加密过程可以表示为:
$$C_i = (P_i + k) \mod 26$$
其中 $C_i$ 是密文字母的编号,$P_i$ 是明文字母的编号,$k$ 是位移值(密钥),$\mod 26$ 表示取26的模(确保超过26时循环回A)。
解密过程则相反:
$$P_i = (C_i - k) \mod 26$$
例如,用密钥k=3加密明文“HELLO”:
- H → K(7+3=10)
- E → H(4+3=7)
- L → O(11+3=14)
- L → O(11+3=14)
- O → R(14+3=17)
密文就是“KOOR”。
这种加密方法的优势在于它的极度简单。不需要任何特殊工具,不需要复杂的表格,只需要知道位移值,任何识字的人都能进行加密和解密。难怪凯撒会在私人通信中使用它——连外出征战时给元老院写报告,也不忘把自己的私房话藏进密文里。
然而,凯撒密码的安全性几乎为零。问题出在密钥空间(Keyspace)上。
凯撒密码只有25个可能的密钥(位移1到25)。这个数量小到什么程度?小到任何人都可以在一分钟之内,通过暴力尝试所有可能的位移值,找到正确的解密结果。
更糟糕的是,即使不使用暴力法,另一种更巧妙的攻击方式也能轻易破解凯撒密码——频率分析(Frequency Analysis)。
人类语言有一个显著特征:不同字母出现的频率是不同的。在英语中,字母E出现的频率最高,大约占所有字母的12.7%;其次是字母T(约9.1%)、A(约8.2%)、O(约7.5%)和N(约7.0%)。这个规律被称为字母频率分布(Letter Frequency Distribution),它是一把双刃剑:既可以用来分析语言学特征,也可以用来破解密码。
想象一下,截获了一条凯撒密文,其中字母K出现了10次,是出现次数最多的字母。如果我们假设这对应明文中的字母E,那么密钥就是K-E=10-4=6。但这只是一个猜测。实际上,最常见的密文字母更可能对应T或A,而非E。正确的方法是观察整个字母分布模式:统计每个字母出现的频率,与英语标准频率对比,选取最匹配的映射。
这个过程可以通过计算重合指数(Index of Coincidence)来量化。重合指数衡量的是,从一段文本中随机抽取两个字母,它们恰好相同的概率。对于英文文本,这个值大约是0.065。对于凯撒密码,解密后的明文应该具有接近这个值的重合指数。通过比较不同位移值下的重合指数,可以确定正确的密钥。
凯撒密码的失败,从根本上说,是因为它的密钥空间太小且统计特征过于明显。这两个问题贯穿了整个古典密码学时期,也是推动密码学不断演进的核心动力。
中世纪的密码术
西罗马帝国灭亡后,欧洲进入了漫长的中世纪时期。在这段被称为“黑暗时代”的岁月里,密码学的发展几乎陷入停滞。但就在欧洲踟蹰不前的时候,阿拉伯世界却在密码学领域取得了突破性进展。这些进展不仅帮助阿拉伯学者解读了敌人的密信,更为重要的是,它们开创了一门全新的学科——密码分析学(Cryptanalysis)。
公元9世纪,阿拉伯学者阿尔-金迪(Al-Kindi,约801-873年)撰写了《解秘信函的方法》(A Manuscript on Deciphering Cryptographic Messages)一文。在这篇开创性的论文中,阿尔-金迪系统地阐述了如何通过字母频率分析来破解单字母替换密码。这篇论文的发现,被认为是密码学史上的一个分水岭——在此之前,密码术是一种“单向”的艺术:发送者用某种方法隐藏信息,接收者用相同的方法还原信息。但阿尔-金迪的工作表明,攻击者也可以通过分析密文本身来破解密码,而无需预先知道加密方法。
阿尔-金迪的频率分析方法,其核心思想可以概括为:语言中的字母不是均等分布的,通过统计密文中字母的出现频率,并与语言的标准频率对比,可以推断出加密时使用的替换规则。 这个想法简单而强大,它的数学基础是概率论和统计学。
用更精确的语言描述,假设我们知道英语中字母E出现的频率是$p_E = 0.127$。在一段长度为$n$的密文中,如果字母K出现了$m_K$次,那么我们可以估计密文中K对应的明文字母频率是$m_K/n$。通过比较$m_K/n$与各字母的标准频率$p_i$,我们最可能找到的匹配是使得$|m_K/n - p_i|$最小的$p_i$。
当然,这个估计会受到统计波动的影响,尤其是当密文长度较短时。但随着密文长度的增加,统计结果会越来越接近语言的真实频率分布,这使得频率分析方法变得极为可靠。
阿尔-金迪的工作很快产生了实际效果。阿拉伯学者能够截获并破解来自拜占庭帝国的外交信件,从中获取大量有价值的情报。这些情报帮助阿拉伯人在外交和军事上占据了优势。密码术和密码分析术之间的“军备竞赛”,就此拉开序幕。
在中世纪后期,欧洲人也开始发展自己的密码系统。这个时期的密码技术,以替换密码(Substitution Cipher)为主流。所谓替换密码,就是将明文中的每个字母,按照某种固定规则,替换成另一个字母。凯撒密码就是一种最简单的替换密码——所有字母按照相同的规则进行位移。
但中世纪的欧洲人很快发现,仅仅位移字母是不够的。频率分析让任何替换密码都变得脆弱不堪。为了对抗频率分析,密码学家们开始设计更复杂的替换系统。
一种常见的改进是同音替换密码(Homophonic Substitution Cipher)。在这种系统中,一个明文字母可以对应多个不同的密文字母。例如,字母E可以映射到密文字母X、Y或Z中的任何一个,具体映射哪个,取决于随机选择。这样一来,密文中不再有某个字母占据绝对优势——因为每个字母都可能被映射到多个密文字母,频率分布变得更加平坦。
另一种改进是多字母替换密码(Polyalphabetic Substitution Cipher),这是密码学史上的一个重要突破。最著名的多字母替换系统是维吉尼亚密码(Vigenère Cipher),它在16世纪的欧洲广泛使用。维吉尼亚密码使用一个关键词(Key Word),关键词的每个字母决定一个不同的位移值。例如,如果关键词是“KEY”,那么第一个字母按照k=3(K的偏移)加密,第二个字母按照k=5(E的偏移)加密,第三个字母按照k=11(Y的偏移)加密,然后重复这个模式。
维吉尼亚密码的加密过程可以用下面的数学公式表示:
$$C_i = (P_i + K_{i \mod m}) \mod 26$$
其中 $K$ 是密钥,$m$ 是密钥长度,$i$ 是明文字母的位置。
相比单字母替换密码,维吉尼亚密码大幅提升了安全性。因为同一个明文字母,在密文中可能出现为不同的密文字母,频率分析的直接应用变得更加困难。然而,维吉尼亚密码并非无懈可击。如果攻击者能够确定密钥长度,仍然可以分别对每个“子字母表”进行频率分析。更进一步,19世纪的数学家发现,可以通过寻找密文中重复出现的字母模式来推断密钥长度——这种技术被称为卡西斯基检验(Kasiski Examination)。
维吉尼亚密码的兴衰史,本身就是密码学发展的一个缩影:防御手段不断进步,攻击手段也随之进化,永远没有永远的赢家。
频率分析:密码学的分水岭
在深入讨论频率分析之前,让我们更详细地理解这个强大的技术。
字母频率的数学基础
在自然语言中,字母出现的频率并非随机分布。这种非均匀分布源于语言的结构特征:某些字母在单词中的出现频率更高,某些字母组合(双字母组合、三字母组合)则更为常见。这些统计规律,为频率分析提供了数学基础。
以英语为例,下面是各字母的频率分布:
| 字母 | 频率 | 字母 | 频率 | |:---:|:---:|:---:|:---:| | E | 12.7% | N | 6.7% | | T | 9.1% | I | 6.7% | | A | 8.2% | O | 7.5% | | O | 7.5% | S | 6.3% | | I | 6.7% | H | 6.1% | | N | 6.7% | R | 6.0% |
频率分析的原理可以用概率论来解释。假设我们有一段足够长的密文,其中字母$C$出现了$f_C$次,密文总长度为$n$。那么在密文中,字母$C$的经验频率是:
$$\hat{p}_C = \frac{f_C}{n}$$
由于密文是明文通过某种确定的替换规则得到的,密文中$C$的频率应该与明文中某个特定字母的频率相近。如果替换是双射的,那么存在一个明文字母$P_j$使得:
$$\hat{p}_C \approx p_{P_j}$$
其中$p_{P_j}$是明文中字母$P_j$的真实频率。
当我们对所有字母进行这种频率匹配时,我们就获得了一个从密文字母到明文字母的映射。这个映射可能不是完美的(由于统计波动),但对于足够长的密文,它通常足够准确,使得我们能够恢复出大部分明文内容。
超越单字母频率
经验丰富的密码分析者不会仅仅依赖单字母频率。他们还会分析双字母组合(Digraphs)和三字母组合(Trigraphs)的频率模式。
在英语中,最常见的双字母组合包括:
- TH(3.6%)
- HE(3.0%)
- IN(2.1%)
- ER(2.0%)
- AN(1.9%)
最常见的三字母组合包括:
- THE(4.6%)
- AND(2.3%)
- ING(1.5%)
- ENT(1.3%)
- ION(1.3%)
这些高频组合为密码分析提供了额外的线索。即使单字母频率分析给出了模糊的结果,双字母和三字母频率分析往往能够澄清局面。例如,假设通过单字母频率分析,我们无法确定密文字母X对应的是T还是E。但如果我们发现X后面总是跟着Y,而密文中恰好有一个高频的双字母组合XY,这在英语中几乎只可能对应“TH”或“HE”,那么我们就可以据此修正之前的判断。
实际案例:破解凯撒密码
让我们通过一个具体例子来演示频率分析的实际应用。
假设截获了一条凯撒密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH OXA
首先,我们统计每个字母的出现频率:
| 字母 | 出现次数 | 频率 | |:---:|:---:|:---:| | H | 3 | 9.7% | | X | 3 | 9.7% | | 其他 | ... | ... |
密文很短,我们很难得到可靠的频率分布。因此,我们尝试所有25种可能的位移值:
- 位移1:JVJGSKHVDQSI(无意义)
- 位移2:IUIFRUJGUHDR(无意义)
- 位移3:THIS ISIS FRQWH(接近!)
- 位移4:SGHRGHR EQXGV(无意义)
- ... ...
当位移为3时,我们得到了接近可读文本的结果:THIS ISIS FRQWH。这个结果还不完整,但已经可以看出端倪。如果我们继续尝试位移4、5等,很快就会发现位移3虽然能产生部分可读内容,但并非完全正确。这可能是因为密文太短,统计结果不可靠,或者是因为我们的位移值还差一点。
经过仔细尝试,正确的密钥是3,应用后得到的完整明文是:
THIS IS A SECRET MESSAGE FROM ROME
这是一条来自罗马的机密信息。频率分析在短文本上的局限性,说明了为什么在实际应用中,我们需要足够长的密文才能可靠地破解凯撒密码——这也正是为什么凯撒密码虽然简单,却在历史上被广泛使用了很长时间。
古典密码的共同缺陷
回顾古典密码的发展历程,我们发现,无论是塞兹密码棒的转置法,还是凯撒的位移密码,抑或是中世纪的各种替换系统,它们都有一些共同的致命缺陷。这些缺陷最终推动了现代密码学的诞生。
密钥管理的困境
古典密码面临的最大挑战之一,是密钥管理(Key Management)。在古典时代,密钥是通信双方共享的秘密——可能是木棒的周长、位移的位数,或者替换表格的内容。为了让通信生效,通信双方必须预先协商好密钥。
这在今天的术语中,被称为对称密钥(Symmetric Key)系统:加密和解密使用相同的密钥。对于小规模的、固定的通信网络(例如一个王国的军事指挥系统),预先分发密钥是可行的。但对于大规模、动态的通信需求(例如不同王国之间的外交通信),密钥管理就变得异常困难。
古典密码的另一个问题是密钥重用(Key Reuse)。在当时的技术条件下,每次通信都生成新密钥、分发新密钥的成本太高,因此同一个密钥往往被反复使用。这为密码分析提供了可乘之机——当攻击者收集了足够多的使用同一密钥加密的密文时,他们可以更容易地发现语言模式,从