Chapter 1: The Dawn of Secret Writing / 第一章:秘密书写之始
第一章:秘密书写之始
引言:永恒的保密需求
人类文明的演进史,从某种意义上说,也是一部信息控制与保护的历史。当部落的首领需要协调远方的狩猎行动,当将军必须向分散的部队传达作战命令,当外交官试图在敌对势力的监视下传递敏感情报——在这些场景中,一个根本性的问题始终存在:如何确保只有预期的接收者能够理解传递的信息?
这个问题触及了人类通信的核心矛盾:信息的价值往往与其传播范围成反比。一条商业机密在竞争对手知晓之前价值连城;一份军事计划在敌人掌握之前关乎生死存亡;一次政治密谋在暴露之前可能改变历史进程。正是在这种永恒的张力中,密码学(cryptography)应运而生,成为人类智识生活中最具魅力的领域之一。
密码学是一门研究如何在不安全的环境中保护信息安全的学科。它的英文名称源于希腊语κρυπτός(kryptós,意为“隐藏”)和γράφειν(gráphein,意为“书写”),字面意思即是“秘密书写”。然而,密码学并非孤立存在,它与隐写术(steganography)、编码(encoding)等相关领域既有交叉又有本质区别。在本章中,我们将首先厘清这些基本概念,然后追溯密码学从古埃及象形文字到古罗马军事密码的演变历程,最后为全书的学习提供一个清晰的路线图。
---
1. 核心概念的界定
1.1 密码学的基本定义
密码学(Cryptography) 是研究如何通过变换信息的形式来保护信息安全的科学。具体而言,密码学关注的核心问题包括:
- **保密性(Confidentiality)**:确保信息仅被授权人员访问
- **完整性(Integrity)**:确保信息在传输过程中未被篡改
- **认证性(Authentication)**:验证信息来源的身份
- **不可否认性(Non-repudiation)**:确保发送者无法否认其发送的信息
密码系统通常由三个基本组件构成:明文(Plaintext) 是原始的、可理解的消息;密文(Ciphertext) 是通过加密过程产生的、不可理解的消息;加密算法(Encryption Algorithm) 和 解密算法(Decryption Algorithm) 则是完成明文与密文之间转换的数学过程。此外,密码系统还需要 密钥(Key)——一个秘密的参数,决定加密和解密的具体方式。
一个简单的加密过程可以用数学语言描述为:
$$C = E_K(P)$$
其中 $C$ 表示密文,$P$ 表示明文,$E$ 表示加密算法,$K$ 表示密钥。相应的解密过程为:
$$P = D_K(C)$$
其中 $D$ 表示解密算法。这种通过密钥控制加密解密过程的设计理念,是现代密码学的基石。
1.2 密码学与隐写术的本质区别
隐写术(Steganography) 源自希腊语στεγανός(steganós,意为“覆盖”)和γράφειν(gráphein,意为“书写”),其核心思想是隐藏信息本身的存在。与密码学不同,隐写术并不试图通过改变信息的形式来保护信息,而是试图让人根本不知道有信息被传递。
历史上记载的隐写术方法令人叹为观止。古希腊历史学家希罗多德(Herodotus)记载,波斯国王薛西斯(Xerxes)曾计划入侵希腊,一位名叫Demaratus的流亡希腊人将这一消息写在蜡板的蜡层下面,然后再覆上一层新蜡,从而将警告隐藏在一块看似空白的蜡板上。在中国古代,也有关于用米汤在纸上书写秘密信息,接收者用碘酒涂抹显形的故事。
更极端的例子包括:微观点摄影术(microdot)——将整页文件缩小到一个句点大小;隐形墨水——如柠檬汁、唾液或特殊化学试剂书写的信息;以及在数字时代,将信息嵌入图像或音频文件的最低有效位(LSB)中。
隐写术与密码学的关键区别在于:
| 特征 | 密码学 | 隐写术 | |------|--------|--------| | 目标 | 隐藏信息的内容 | 隐藏信息的存在 | | 方法 | 变换信息的格式 | 掩盖信息的载体 | | 安全性假设 | 敌人知道通信正在发生 | 敌人不知道通信正在发生 | | 抵抗性 | 即使被发现,内容仍然保密 | 一旦被发现,信息立即暴露 | | 应用场景 | 需要长期保护的信息 | 需要否认通信存在的场景 |
值得注意的是,在实际应用中,密码学和隐写术经常被结合使用——首先对信息进行加密(保护内容),然后将密文隐藏在看似无害的载体中(保护存在)。这种组合策略提供了双重保护。
1.3 密码学与编码的区分
编码(Encoding) 是另一种常被误解为密码学的概念。实际上,编码与密码学有着本质的不同,尽管两者都涉及信息的转换。
编码是一个将信息从一种格式转换为另一种格式的过程,其目的通常是提高传输效率、保证兼容性或便于处理,而非提供安全性。例如,ASCII码将英文字符转换为计算机可处理的数字;莫尔斯码(Morse Code)将字母转换为点和划的序列以便于电报传输;Base64编码将二进制数据转换为可打印ASCII字符以便在文本协议中传输。
编码与密码学的核心区别在于:
1. 目的不同:编码的目的是表示和传输,而非保密。编码规则通常是公开的,任何人都可以解码。 2. 密钥概念:编码不需要密钥;密码学必须依赖密钥保持安全。 3. 可逆性:编码的转换规则是标准化的,可被任何人反向操作;密码学的解密需要密钥。
然而,在某些语境下,特别是在军事和外交领域,"编码"可能被用来指代更复杂的转换系统,其中包含一定程度的保护机制。这种用法容易造成混淆,因此本书将严格区分编码(无密钥、可公开解码)与密码学(依赖密钥、需要秘密解密)。
1.4 密码分析学:硬币的另一面
与密码学相伴而生的还有 密码分析学(Cryptanalysis)——研究如何破解加密系统的学科。密码分析学与密码学之间的对抗博弈,推动了双方不断演进和发展。
密码分析的基本方法包括:
- **暴力攻击(Brute Force Attack)**:尝试所有可能的密钥
- **频率分析(Frequency Analysis)**:利用语言中字符或字符组合的统计规律
- **已知明文攻击(Known Plaintext Attack)**:利用已知的明文-密文对
- **选择明文攻击(Chosen Plaintext Attack)**:能够选择明文并获取对应密文
- **选择密文攻击(Chosen Ciphertext Attack)**:能够选择密文并获取对应明文
这种攻守双方的动态平衡,被密码学家罗纳德·里维斯特(Ronald Rivest)形象地描述为"密码学是矛与盾的艺术"。理解攻击者的能力和方法,对于设计安全的密码系统至关重要。本书将在后续章节中详细讨论各种密码分析方法。
---
2. 古代密码学的曙光
2.1 古埃及:保密书写的最早尝试
密码学的历史可以追溯到人类文明的早期阶段。最早的已知证据来自古埃及,而古埃及的 象形文字(Hieroglyphics)** 系统本身就提供了一定程度的保密性。
在古埃及的贵族墓葬中,考古学家发现了约公元前1900年的铭文,其中使用了非标准的象形文字符号。这些被称为 cryptoglyphs 或"隐藏文字"的特殊写法,并非任何人的母语书写系统,即使能够阅读标准象形文字的人也无法理解其含义。这表明古埃及人已经意识到通过改变文字形式来保护信息的价值。
在丹德拉(Dendera)神庙的浮雕中,学者们发现了一些使用"替代文字"刻写的铭文。这些铭文用非常规的符号替代标准符号,显示出古埃及祭司阶层试图垄断宗教知识的意图。这种做法与现代密码学中的替换原理有着惊人的相似性。
然而,需要指出的是,这些古代做法与现代意义的密码学存在本质区别。它们缺乏系统性的加密方法,没有明确的密钥概念,加密的决定往往基于个别书写者的随意性。尽管如此,这些尝试证明了人类很早就开始思考如何限制信息的访问范围。
2.2 美索不达米亚:楔形文字中的机密
在美索不达米亚平原,两河流域的文明同样留下了密码学萌芽的证据。考古学家在古代巴比伦遗址发现的泥板文书(cuneiform tablets)中,有一些包含经过简化的数字符号系统,用于记录商业交易和天文观测。
更引人注目的是,约公元前1500年的泥板显示,巴比伦的抄写员会使用特殊的数字表来记录敏感信息。这些被称为"数字表"(number tables)的工具,本质上是一种原始的替换密码系统。通过将标准数字替换为特殊的符号序列,抄写员能够保护商业机密和纳税记录不被未经授权者理解。
2.3 希伯来密码:Atbash的宗教应用
在希伯来传统中,最早的加密系统之一是 Atbash 密码。这种密码的原理极为简洁:使用字母表的镜像进行替换。具体而言,希伯来字母表的第一个字母(Aleph)与最后一个字母(Taw)互换,第二个字母(Beth)与倒数第二个字母(Shin)互换,以此类推。
Atbash的名称来源于其替换规则:Aleph-Taw-Beth-Shin,即首字母与尾字母互换的缩写。这种密码在希伯来文献《耶利米书》(Book of Jeremiah)中首次被使用。例如,巴比伦被写作Sheshach——通过对Babel使用Atbash变换得到:Beth(2)→ Shin(300),Aleph(1)→ Taw(400),Lamed(30)→ Kaph(20),Beth(2)→ Shin(300),总计为300+400+20+300=1020的数值。
关于Atbash是否真的是一种有意识使用的密码,还是仅仅是巧合,学者们仍有争议。一些人认为这是先知耶利米有意使用密码来隐藏神谕,避免被未开化者理解;另一些人则认为这只是当时流行的文字游戏。然而,Atbash的存在证明了古代学者已经掌握了字母替换的基本技术。
---
3. 古典时期的密码学发展
3.1 希腊:古典智慧的密码应用
古希腊文明在密码学发展史上占有重要地位。公元前5世纪,斯巴达人发展出了一种被称为 Scytale 的密码工具,这是已知最早使用的军事密码装置之一。
Scytale密码 的原理如下:将一条羊皮纸或皮革带缠绕在一根特定直径的棍棒(称为scytale)上,然后书写信息。当这条带子从棍棒上取下后,文字就变成了一串杂乱无章的字母。只有使用相同直径的棍棒重新缠绕,才能恢复原文。这种密码的安全性基于棍棒的直径——即密钥——而不在于算法本身。
斯巴达人将Scytale用于军事通信,特别是在战争期间传递作战命令。指挥官使用scytale发送加密信息,而接收方使用相同直径的scytale进行解密。如果敌方截获了这条带子,但没有正确直径的棍棒,信息就无法被读取。
斯巴达将领 莱山德(Lysander)在公元前5世纪的战争中频繁使用scytale进行秘密通信。这种密码系统的使用表明,古代军事组织已经认识到保密通信的战略价值。
然而,Scytale的安全性实际上是有限的。如果敌人截获了足够多的加密消息,通过尝试不同直径的棍棒,总能找到解密的方法。密码系统的安全性不能仅仅依赖于保持工具的秘密——这是密码学发展中一个反复出现的教训。
3.2 古希腊历史学家的密码记录
希腊历史学家对密码学的记录,为后人了解古代密码实践提供了宝贵的第一手资料。
波利比乌斯(Polybius)是公元前2世纪的希腊历史学家,他在其著作《通史》(Histories)中不仅记录了Scytale密码,还提出了一种创新的密码思想。波利比乌斯设想了一种通过火光信号传递信息的方法:使用一个5×5的网格(包含25个格子),每个格子对应一个字母,通过火光闪烁的次数来表示字母的位置。例如,第一个字母用1次闪烁表示,第十个字母用10次闪烁表示。
尽管波利比乌斯的火光密码在实际操作中存在困难——同时计数多个数字序列几乎不可能——但他的思想对后来的密码发展产生了深远影响。他发明的 波利比乌斯方阵(Polybius Square) 成为一种经典的加密工具,直到20世纪仍被使用。
波利比乌斯还提出了一个重要的认识论观点:即使是最复杂的密码系统,如果使用过于频繁,敌人终将发现其规律。这一见解预示了两千年后荷兰密码学家奥古斯特·克尔克霍夫斯(Auguste Kerckhoffs)提出的著名原则。
3.3 古罗马密码:尤利乌斯·凯撒的加密实践
如果说有一个人物在古代密码学发展史上的地位最为突出,那无疑就是 尤利乌斯·凯撒(Julius Caesar)。这位罗马共和国的军事家和政治家,在其著名的《高卢战记》(Commentarii de Bello Gallico)中记载了他使用的加密方法。
根据凯撒的同时代人苏埃托尼乌斯(Suetonius)在《十二凯撒传》(The Twelve Caesars)中的记载,凯撒使用了一种简单的 字母替换密码——后人称之为 凯撒密码(Caesar Cipher)——与重要的人进行秘密通信。凯撒将每个字母向后移动三位进行加密:A变成D,B变成E,Z变成C(回绕到字母表开头)。这种替换规则构成了古典密码学最著名的例子之一。
凯撒密码可以用数学公式表达。设明文字母的序号为 $p$(A=0, B=1, ..., Z=25),则密文字母的序号 $c$ 为:
$$c = (p + k) \mod 26$$
其中 $k$ 是移位数(凯撒使用的 $k=3$)。解密过程为:
$$p = (c - k) \mod 26$$
凯撒密码的密钥空间只有25种可能(排除移位为0的情况)。这意味着即使不知道具体的移位数,密码分析者也可以通过简单的暴力攻击在25次尝试内破解密码。
然而,对于两千年前的信息安全需求而言,凯撒密码提供了足够的保护。敌方即使截获了加密消息,也很难在短时间内破译——而军事信息的时效性往往只有几个小时或几天。在那个时代,"两天内无法破译"几乎等同于"信息始终保密"。
3.4 凯撒密码的变体与扩展
在凯撒之后,罗马人发展出了多种凯撒密码的变体。一些变体使用不同的移位数;另一些则使用非连续的替换序列。然而,真正具有重要意义的是单一字母替换密码(Monoalphabetic Substitution Cipher)的广泛应用。
单一字母替换密码将字母表中的每个字母映射到另一个字母,但映射规则是任意的,而非简单的移位。这意味着有 $26! \approx 4 \times 10^{26}$ 种可能的密钥——这是一个天文数字,使得暴力攻击变得完全不可行。
然而,单一字母替换密码存在一个致命的弱点:语言规律。在任何语言中,字母的出现频率并非均匀分布。在英语中,字母E的出现频率约为12.7%,而字母Z的出现频率约为0.07%。更微妙的是,某些字母组合(如英语中的"TH"、"HE"、"IN")的出现频率也遵循特定规律。
通过频率分析(Frequency Analysis),密码分析者可以识别密文中出现频率最高的字母,并将其对应到明文语言中的常见字母。例如,在英语密文中出现最频繁的字母很可能代表明文中的E或T。通过反复尝试和调整,最终可以恢复原文。
频率分析技术的起源可以追溯到9世纪的阿拉伯学者肯迪(Al-Kindi)。在他的著作《破解加密消息的手稿》(A Manuscript on Deciphering Cryptographic Messages)中,肯迪系统地阐述了频率分析的方法,这是密码分析史上最重要的突破之一。
---
4. 阿拉伯学者的密码分析贡献
4.1 伊斯兰黄金时代的学术繁荣
8世纪至14世纪之间,阿拉伯伊斯兰世界经历了知识和文化的大繁荣。在这一时期,巴格达、大马士革、科尔多瓦等城市成为学术中心,阿拉伯学者在数学、天文学、医学、哲学等领域做出了杰出贡献。密码学作为数学和语言学的交叉领域,同样获得了长足发展。
阿拉伯学者对密码学最大的贡献在于密码分析学(cryptanalysis)的发展。他们不仅使用和改进古典密码系统,还发展出了系统性的方法来破解这些系统。这一贡献彻底改变了密码学的面貌,使密码学与密码分析成为一对相互促进、螺旋上升的对手。
4.2 肯迪:频率分析的先驱
阿布·优素福·肯迪(Abu Yusuf Ya'qub ibn Ishaq al-Kindi,约801-873年)是最早系统论述频率分析方法的学者。他在《破解加密消息的手稿》(Risalah fi Istikhraj al-Mu'amma)中详细阐述了这一技术。
肯迪的方法基于一个简单但深刻的观察:虽然单个字母可以伪装,但语言的整体统计特征难以消除。频率分析的过程可以概括为:
1. 统计密文中各字母的出现频率 2. 将密文频率与已知语言频率表进行比对 3. 做出初步对应假设 4. 检查假设下的"明文"是否形成合理的字母组合 5. 根据检查结果调整对应关系 6. 迭代直到获得有意义的文本
肯迪还指出,对于n个字母的替换密码,如果知道明文中某些字母组合的频率,可以将分析方法扩展到多字母组合频率分析。他建议使用"reconstructed plain text"(重建明文)方法,即保留已知部分,尝试推断未知部分。
4.3 阿尔·法拉比:语言学与密码学的结合
另一位对密码学做出重要贡献的阿拉伯学者是阿尔·法拉比(Al-Farabi,872-950年)。法拉比不仅是一位哲学家和音乐理论家,还著有专门讨论密码系统的著作。
法拉比的贡献在于将语言学分析与密码技术相结合。他注意到,不同语言具有不同的字母频率特征,因此破解不同语言的密文需要不同的频率表。例如,阿拉伯语中最常见的字母是Alif和Lam,而英语中是E和T。这一认识使得频率分析方法更加精确和有效。
4.4 伊本·杜兰:系统性密码分析的奠基
伊本·杜兰(Ibn Duran)在密码学史上的地位类似于数学中高斯的地位——他将前人的零散方法系统化为一套完整的理论。他的著作《信息传递者的渴望》(Tuhfat al-Mudhakkir)系统地论述了密码分析的各种方法。
杜兰的创新之处在于他区分了不同类型的加密系统,并针对每种类型提出了具体的分析方法。他认识到,对于某些类型的密码,仅靠字母频率分析是不够的,还需要考虑双字母组合(digraphs)和三字母组合(trigraphs)的频率。这一洞见预示了现代密码分析中使用的N-gram分析技术。
---
5. 秘密书写在历史重大事件中的作用
5.1 军事通信的命脉
密码学在军事史上的作用怎么强调都不为过。从古希腊罗马时代到现代战争,保密通信往往决定着战役的成败乃至历史的走向。
在伯罗奔尼撒战争(公元前431-404年)中,斯巴达人使用的Scytale密码多次帮助指挥官协调分散的