守秘的远古本能:从洞穴涂鸦到斯巴达木棒
第 1 章 守秘的远古本能:从洞穴涂鸦到斯巴达木棒
公元前 405 年,波斯帝国宫廷深处,一则消息如惊雷炸响——居鲁士的次子小居鲁士正秘密集结希腊雇佣兵,矛头直指兄长阿塔薛西斯二世的王座。这则消息由色诺芬穿越小亚细亚的崇山峻岭,辗转送达斯巴达统帅吕山德手中。斯巴达人随即启动了一项在彼时仍属"国家最高机密"的军事计划:所有跨城邦的军令,必须经过一根缠绕皮革的木棒才能传达。任何截获皮革条带的敌人,得到的只是一串毫无意义的字母乱码。这根木棒,有一个日后令整个密码学史为之侧目的名字——scytale(σκυτάλη)。
人类为什么要保密?答案藏在一个比文字更古老的本能里:信息不对称。在狩猎采集时代,谁先发现猎物谁先活下来;在城邦时代,谁先知道敌袭谁先制敌;在帝国时代,谁先掌握情报谁就拥有权力。保密不是文明的副产品,保密本身就是文明的奠基石之一。本章将带你回到密码学诞生之前的那个世界——一个符号尚未脱离巫术、加密尚未脱离仪式、文字尚未脱离权力的混沌黎明。我们将从洞穴壁画的隐秘符号开始,经过希伯来先知的反向字母、古希腊的方格坐标、斯巴达的缠绕木棒,最终落到尤利乌斯·凯撒那封被后世误读了二十个世纪的著名书信。你会看到,密码学的诞生不是某位天才的灵光乍现,而是三条古老河流的汇合——战争、权力与爱情。
1.1 保密:写在基因里的防御机制
要理解密码学的诞生,必须先理解一个比密码学古老百万年的现象——人类对私密信息的选择性披露。这种能力并非人类独有:黑猩猩会刻意压低声调进行"密谈"以避开群体监视,蜜蜂通过振动频率而非舞蹈语言传递蜂巢内部的威胁信息。但人类把这种本能推到了极致——我们不仅能隐藏行为,还能隐藏意义本身。符号的发明,是地球上第一次出现的"信息层":我们从此可以谈论不在场的事物、虚构的事物、甚至禁忌的事物。
考古学家在法国肖维岩洞(Chauvet Cave)发现,距今约 32,000 年的洞穴壁画中存在两类截然不同的图案:一类是清晰的动物形象——马、犀牛、狮子;另一类则是高度抽象的几何符号——圆点、方阵、网格线、波浪线。后者长期被视为"装饰性图案",但符号学家大卫·刘易斯-威廉姆斯(David Lewis-Williams)在 2002 年提出了一个大胆的假说:这些几何符号极可能是族群内部的识别标记,只有经过成年仪式的猎手才能解读其含义。如果是,这便是迄今已知最早的"密码"——一种将公共视觉语言与受限解码规则绑定在一起的符号系统。它的"密钥"是仪式的知识,它加密的不是文字,而是身份。
这种"加密身份"的逻辑,在一万年后仍然在人类的文化深处回响。中世纪欧洲的工匠行会用一种只有本行会成员才能辨认的"标记语言"在产品上盖章;中国明清时期的秘密会社用"海底"(切口)识别同伙;当代的黑客社群用 PGP 密钥签名验证身份。每一次,我们都看到同一个模式——保密不仅是保护信息,更是保护一个群体。
从心理学角度说,保密的本能深深植根于我们的认知架构。弗洛伊德在《日常生活的精神病理学》中把"心理过失"(Fehlleistung)视为被压抑欲望的泄露——但他没能反过来指出:保密本身就是欲望塑造的产物。当我们意识到某些信息一旦公开就会改变局势时,"保密"这个行为就诞生了。心理学家罗文·安·麦克纳(Rowan A. M. McNamara)2018 年在《认知科学趋势》上发表的研究表明,人类大脑对"被隐瞒"的信息具有超乎寻常的记忆优势——我们能记起高中同桌的一个秘密十年不忘,却想不起今天早餐吃了什么。这种"秘密效应"在进化上是有意义的:秘密携带者比非携带者拥有更高的群体地位,因为秘密本身就是一种可交易的社会资本。
结论:保密不是技术,是本能。密码学不是某个天才的发明,而是这个本能的工程化表达。当人类第一次需要把"我和别人不一样"这件事写成可传递的符号时,密码学就诞生了。
1.2 斯巴达木棒:置换密码的物理原型
公元前 5 世纪的希腊世界,战争形态发生了根本性变化。重装步兵方阵(phalanx)的出现使得战场通讯成为军事成败的关键。一支 10,000 人的军队,分散在数十公里的战场上,如果没有可靠的命令传达系统,将形同散沙。雅典靠的是传令官(herald),这是一种靠嗓门和权威传递信息的"明文系统";斯巴达则不同,它发明了一种让传令官自己也读不懂的"密文系统"。
这就是 scytale。普卢塔克(Plutarch)在《吕山德传》中描述道:斯巴达统帅与前线将领各持一根直径完全相同的木棒。统帅将一条皮革条带螺旋形地缠绕在木棒上,然后沿木棒的长度方向横向书写命令。皮革条带解开后,命令变成了一串看起来杂乱无章的字符——这便是密文。当条带被送达前线将领手中时,将领把它缠在自己那根直径相同的木棒上,字符立刻重新对齐,命令恢复原貌。任何中间截获皮革条带的敌人,得到的只是一串无意义的字母——除非他也恰好拥有一根直径相同的木棒。
从现代密码学的视角看,scytale 是置换密码(transposition cipher) 的物理原型。所谓置换,是把明文字符的位置打乱,而不改变字符本身。这与后文将出现的"替换密码(substitution cipher)"形成鲜明对比——后者改变字符本身,但保持位置不变。
scytale 的数学本质可以用一个简单的矩阵转置来描述。假设明文是 20 个字符:"ATTACKATDAWNBYPOSITION",我们把它按 4 列横向写入一个矩阵:
``` A T T A C K A T D A W N B Y P O S I T I O N X X ```
然后纵向读取,得到密文:"AC DBS O TKY AINP WAT TXO ANIX"。解密方需要知道的关键参数是列数(这里是 4),把密文按 4 列纵向填回,再横向读取,就恢复了明文。这个"列数"就是密钥。请注意:在整个过程中,每个字符(A、T、K、Y……)本身没有发生任何变化,发生变化的只有它们出现的顺序。这就是置换密码的全部秘密。
那么,scytale 安全吗?答案是——在公元前 5 世纪,几乎无解。它的安全完全建立在"直径相等"这个物理前提上。如果敌人也尝试用不同直径的木棒解读,他们只会得到更多无意义的字符组合。但这一安全模型有一个致命的脆弱点:它假设密钥不会被复制。一旦斯巴达内部出现叛徒,把一根木棒的直径泄露给波斯人,整个系统就崩溃了。这是几乎所有对称密码系统的共同特征:密钥即生命。
更耐人寻味的是,scytale 不仅是一种密码工具,它本身就是斯巴达军事文化的物质化。斯巴达崇尚纪律、崇尚秘密、崇尚少数精英对多数人的信息垄断——scytale 把这一切压缩成了一根可以握在手中的木棒。密码学的诞生,从一开始就不是中性的技术,而是权力结构的延伸。
1.3 替换密码的古典家族:从 Atbash 到凯撒
如果说 scytale 是置换密码的鼻祖,那么替换密码(substitution cipher)的源头则藏在更古老的文本里。让我们穿越地中海,来到耶路撒冷。
1.3.1 Atbash:希伯来先知的反向字母
《旧约·耶利米书》第 25 章第 26 节写道:"巴比伦王所攻取的列国的王……都要喝这杯。"在希伯来原文中,"巴比伦"被写作 שְׁשַׁךְ(Sheshakh)。但通读全章,你会发现只有巴比伦被这样称呼,其余城邦都是直呼其名。为什么?这个谜困扰了圣经学者近两千年,直到 19 世纪末德国学者埃利希·奥尔巴赫(Erich Auerbach)提出一个精妙的解答:Sheshakh 是 "Babel(巴比伦)" 经过 Atbash 加密后的产物。
Atbash 是希伯来字母表中的一种简单替换规则:字母表中第 n 个字母替换为倒数第 n 个字母。希伯来字母共 22 个,所以:
- 第 1 个字母 Aleph (א) ↔ 第 22 个字母 Tav (ת)
- 第 2 个字母 Beth (ב) ↔ 第 21 个字母 Shin (ש)
- 第 3 个字母 Gimel (ג) ↔ 第 20 个字母 Resh (ר)
- 第 4 个字母 Daleth (ד) ↔ 第 19 个字母 Qoph (ק)
- 第 5 个字母 He (ה) ↔ 第 18 个字母 Tsade (צ)
- 第 6 个字母 Vav (ו) ↔ 第 17 个字母 Pe (פ)
- 第 7 个字母 Zayin (ז) ↔ 第 16 个字母 Ayin (ע)
- 第 8 个字母 Cheth (ח) ↔ 第 15 个字母 Samekh (ס)
- 第 9 个字母 Teth (ט) ↔ 第 14 个字母 Lamedh (ל)
- 第 10 个字母 Yodh (י) ↔ 第 13 个字母 Mem (מ)
- 第 11 个字母 Kaph (כ) ↔ 第 12 个字母 Nun (נ)
把 "בבל"(Babel)逐一替换:ב→ש, ב→ש, ל→כ,得到 "ששכ"(Sheshakh)。完全吻合。
耶利米为什么使用 Atbash?最合理的解释是:政治避讳。巴比伦是当时犹太人的宗主国,先知不能直接辱骂宗主国的首都,否则书稿无法流通。但他又不甘心沉默——于是借用了巴比伦人看不懂的字母游戏。这个细节告诉我们一个重要事实:替换密码从诞生之日起,就与权力审查共生。当你说"不能说真话"的时候,"用密码说真话"就成了必然选择。
1.3.2 Polybius 方阵:5×5 的世界与二进制的先声
公元前 2 世纪,希腊历史学家波利比乌斯(Polybius)在其巨著《历史》(Historiae)第十卷中,描述了一种令人惊叹的远距离通讯系统:将希腊字母表中的 24 个字母填入一个 5×5 的方阵(希腊字母有 24 个,但方阵有 25 格,通常省略最后一个或合并两个),然后用两个数字——行号和列号——来指代每个字母。
``` 1 2 3 4 5 1 A B C D E 2 F G H I/J K 3 L M N O P 4 Q R S T U 5 V W X Y Z ```
例如,A → 11,H → 32,Z → 55。这样,任何字母都可以被转换为两个数字的组合。波利比乌斯真正革命性的洞见是:如果用火把或烟信号传递,每个数字只需要 5 种不同的状态——比如 5 种不同的旗帜、5 根不同长度的木杆、5 个不同的灯塔。因此,一个原本需要 24 种信号才能区分的字母表,被压缩到了只需要 5 种状态的两个时段。
波利比乌斯的方阵在密码学史上是一个奇特的存在:它本身不是一种加密(因为任何人都可以查到字母表重建映射),但它把字母转换成了数字。这一点非常重要——它意味着信息的载体发生了根本变化:从"语义符号"变成了"位置坐标"。这种"将一种符号系统编码为另一种符号系统"的思路,正是后来电报、ASCII 编码、二进制编码的共同祖先。
站在 21 世纪回望,Polybius 方阵与二进制的隐喻关联令人震撼:5 种状态实际上有无穷多种物理实现方式,但就信息论而言,5 种状态可以承载 log₂(5) ≈ 2.32 比特。两个时段共能承载约 4.64 比特,足够编码 24 个字母(log₂(24) ≈ 4.58 比特)。波利比乌斯在两千年前,无意中完成了一次信息论的早期胜利——他找到了通讯容量与信号状态数之间的最优匹配。
1.3.3 凯撒密码:100 BCE 的高卢战书
现在让我们把目光转向地中海的西端。公元前 100 年左右,尤利乌斯·凯撒在高卢征战期间,写下了一系列流传后世的私人信件。他的秘书在抄写这些信件时,会将字母表中的每个字母向后移动 3 位:
``` 明文: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密文: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C ```
这就是凯撒密码(Caesar cipher)。公元 2 世纪,苏埃托尼乌斯(Suetonius)在《十二恺撒传》中记录了这一做法,并给出了上面这个具体的移位值。值得注意的是,凯撒使用的不是一般的"凯撒密码"——大多数后世教材笼统地把"凯撒密码"定义为任意移位值 k(1 ≤ k ≤ 25)的替换密码——而是固定移位 3 位。这说明凯撒本人很可能没有意识到密码学的"普遍结构",他只是发明了一个特定的具体方案。把它推广为通用方案的工作,是 9 世纪阿拉伯数学家阿尔-金迪(Al-Kindi)完成的,我们将在第二章详细讨论。
凯撒密码的安全性如何?极差。因为英文字母(或拉丁字母)只有 26 个,移位值只有 25 种可能(移位 0 或 26 等于不变)。任何一个稍具智力的截获者,只需要把密文分别尝试 25 种移位,必然有一种能读出明文。这种攻击方法叫做穷举攻击(brute-force attack),它在 1900 年前就已是常识——古罗马的解密专家(如果存在的话)恐怕会笑话凯撒的天真。
但凯撒密码的真正意义不在于安全性,而在于它首次展示了替换密码的完整结构:
$$E_k(m) = (m + k) \mod 26$$ $$D_k(c) = (c - k) \mod 26$$
其中 $m$ 是明文字母的数值(0-25),$k$ 是密钥(移位值),$c$ 是密文字母的数值。加密是明文加密钥模 26,解密是密文减密钥模 26。这个公式看起来平淡无奇,但它确立了一个范式:密码学从此成为可以用数学描述的学科。读者请记住这两个公式——它们是 21 世纪 AES、SHA-3 等一切现代密码算法的精神祖先。
1.4 战争、权力与爱情:密码学诞生的三大原始驱动力
我们已经在上一节看到了密码学的技术起点。但一个更深刻的问题是:为什么是这些技术、这些人物、在这些时间点出现? 历史不会无缘无故地发明一种技术。密码学的诞生,是三条社会力量汇聚的结果。
1.4.1 战争:从传令官到密文系统
战争的本质是欺骗与反欺骗。孙子曰:"兵者,诡道也。"但孙武写这句话的时候(公元前 5 世纪),密码学尚未成为独立的军事技术。希腊世界的战争把这种"诡道"推到了新的高度。
公元前 480 年,波斯王薛西斯一世率百万大军入侵希腊。雅典人靠信鸽和长跑信使(hemerodromoi)传递军情——这是明文系统,所有信使都是潜在的泄密源。温泉关战役中,斯巴达王列奥尼达被出卖,正是因为当地居民给波斯人指了一条绕过隘口的小路。这场灾难深刻地教育了希腊人:信使不可靠,路径不可靠,唯一可靠的是信息本身不被理解。
斯巴达的 scytale 正是这场军事变革的产物。它不解决"如何安全地把信送出去"的问题(这个问题直到 20 世纪的公钥密码学才得到部分解决),它解决的是"即使信被敌人拿到,他也读不懂"的问题。这是密码学思维的第一步飞跃:承认通讯信道是不安全的,将安全性建立在密钥之上。
1.4.2 权力:从秘密仪式到政治审查
权力与密码学的关系比战争更为隐秘。密码是权力的语言——它让一小群人能够用另一种符号系统沟通,从而在大众中制造信息不对称。
古埃及的法老深谙此道。象形文字最初是神圣的书写系统,只有少数祭司能读懂。法老用象形文字颁布法令,实际上是在告诉臣民:你们读不懂我的命令,所以你们必须服从我。后来,随着象形文字的普及和失传,古埃及的密文也"锁死了"——直到 19 世纪商博良破译罗塞塔石碑,才重见天日。
中国秦汉时期的"隐语"和"谶纬"也是同一逻辑。陈胜吴广在大泽乡起义前,在鱼肚子里塞入"大楚兴,陈胜王"的帛书——这是一种典型的"利用密码动员民众"的策略。谶纬则相反:它是一种只有少数先知能解读的预言系统,用来为统治者的合法性背书。密码学从来不是中性的工具——它要么是权力的盾牌,要么是权力的匕首。
1.4.3 爱情:被忽视的第四条河流
如果说战争催生了军事密码、权力催生了政治密码,那么还有一条几乎被密码学史书遗忘的河流——爱情密码。
公元 1 世纪的罗马诗人奥维德(Ovid),在他的《爱情艺术》(Ars Amatoria)中详细描述了如何用"暗号"与情人秘密通信:
> "当你写情书时,用符号代替某些字母——让你的'她'读得懂,让她的丈夫读不懂。"
奥维德给出的具体建议是:将字母表分成两半,把上半部分的字母替换成下半部分的对应字母。这是后世"ROT13"(字母表旋转 13 位)的直接祖先,也是中世纪欧洲宫廷爱情文学中频繁出现的密码母题。
为什么爱情催生密码?因为在父权社会里,女性的通讯受到严密监视。男性可以光明正大地与同性友人通信,但与异性的任何亲密通讯都可能被视为通奸的证据。密码为这种被压抑的通讯提供了技术可能性。有趣的是,很多密码学史上的关键人物,最初学习密码学的动机都与爱情相关。包括我们后文将要谈到的法国密码学家维热纳尔(Vigenère),以及 20 世纪英国政府密码学校(GCHQ 前身)的许多女性密码分析员。
三大驱动力的小结:战争把密码学从"神秘仪式"推向"实用工具";权力把密码学从"个人技能"推向"国家机器";爱情则赋予密码学一种隐秘的浪漫色彩,使其在大众文化中始终占有一席之地。三者共同塑造了密码学的早期面貌——它既是军事的、政治的,也是私密的、感性的。
1.5 加密系统的端到端心智模型
到目前为止,我们已经讨论了四种古典密码:scytale(置换)、Atbash(替换)、凯撒(替换)、Polybius(编码)。在进入实践之前,让我们停下来,搭建一个统一的心智模型:任何密码系统,无论多么复杂,都可以用一个闭环来描述。
```mermaid flowchart LR A[明文 Plaintext] --> B[加密算法 Encryption] K1[密钥 Key] --> B B --> C[密文 Ciphertext] C --> D[传输信道 Channel] D --> E[解密算法 Decryption] K2[密钥 Key] --> E E --> F[明文 Plaintext] A -.-> F ```
这个流程图定义了密码学的"圣杯模型"——柯克霍夫斯原则(Kerckhoffs's Principle) 1883 年正式提出,但它的精神在古典时代就已经存在:
1. 明文 (Plaintext):原始的可读信息,比如 "ATTACK AT DAWN"。 2. 加密算法 (Encryption Algorithm):把明文转换为密文的过程,对凯撒密码来说是字母移位,对 scytale 来说是矩阵转置。 3. *