从尼罗河畔到斯巴达战场:守护秘密的千年渴望
第1章:从尼罗河畔到斯巴达战场:守护秘密的千年渴望
想象这样一个场景:夜幕降临,尼罗河畔的僧侣在一块石碑上刻下神圣的文字,他的手指在石面上留下深深浅浅的痕迹。这些文字并非为了展示给所有人看——它们是祭司与神之间的私密对话,是凡人不得窥探的禁忌知识。几千英里之外,另一群人正在忙碌:斯巴达的战士们将一条狭窄的羊皮纸螺旋缠绕在一根特殊的木棒上,然后写下他们的作战计划。只有拥有相同木棒的人才能读懂这些文字,敌人即便截获了羊皮纸,看到的也不过是一串毫无意义的字母。
与此同时,在遥远的东方,汉朝的一位文人正在构思一首绝妙的诗篇。他的诗读起来朗朗上口,意境优美,但如果读者把每一句的第一个字竖着读下去,会发现一个完全不同的秘密信息——那是他真正想说的话。
这三群人彼此从未谋面,他们说着不同的语言,有着不同的信仰,居住在相隔万里的土地上。但他们不约而同地做了一个相同的选择:想办法把某些信息藏起来,不让不该知道的人看到。
为什么?人类为什么如此执着于隐藏信息?这个问题的答案,或许藏在我们每个人的基因深处。
密码学不是为了游戏,而是源于生存的本能
要理解人类为什么要隐藏信息,我们必须回溯到比文字更久远的时代。想象一下几百万年前我们的祖先——一群生活在非洲草原上的原始人类。他们没有锋利的爪牙,没有坚硬的外壳,身体素质在自然界中并不占优势。但他们有一项独特的能力:协作。
协作需要沟通。一只猴子可以独自生存,但一个原始人部落必须依靠集体智慧才能狩猎、躲避猛兽、度过严寒。于是,语言诞生了。语言让人类能够传递复杂的思想——哪里有水源,哪里有危险,哪只猎物最容易捕获——这是人类成为地球霸主的秘密武器之一。
但语言有一个致命的问题:它会泄露。
当你大声告诉同伴“前方有狮子”时,附近的任何生物都能听到——包括那头狮子本身。在自然界中,信息泄露可能意味着死亡。一个简单的解决方案是:用别人听不懂的声音来交流。这就是最原始的“加密”——让信息变得只有特定的人才能理解。
生物学家发现,很多动物都在使用类似的策略。某些鸟会改变歌声的音调,让竞争对手无法判断自己的领地边界;海豚会发出只有自己族群成员才能识别的特殊叫声;蚂蚁会在行进途中留下化学信息素,但如果被其他蚁群发现,这些信息就会被“窃取”或“伪造”。这说明隐藏信息的本能并非人类独有,而是智慧生命在进化过程中自然形成的生存策略。
当人类文明发展到部落、城邦、帝国的规模时,隐藏信息的需求变得前所未有地迫切。一个君主必须确保他的军事计划不被敌国获知;一个商人必须保护自己的商业机密不被竞争对手窃取;一对恋人必须找到一个安全的传情方式,避开家族的眼线。密码学,正是在这些需求的土壤中萌芽、生长,最终长成了参天大树。
从某种意义上说,密码学的历史就是人类文明史的缩影。每一次重大的技术突破——文字的发明、纸张的诞生、印刷术的出现、互联网的普及——都同时带来了新的信息传递方式和新的信息泄露风险。人类在追求更高效沟通的同时,始终没有放弃对安全的需求。这两种力量——开放与封闭、透明与隐藏——像DNA的双螺旋一样交织在一起,推动着人类社会的演进。
所以,当你打开这本书,准备踏入密码学的世界时,请记住:你正在探索的不是一门冷冰冰的技术,而是一段延续了数万年、关乎人类生存与发展的精彩故事。
从古埃及到斯巴达:跨越时空的三个秘密
第一站:尼罗河畔的圣书字
让我们把时间拨回到大约4000年前,也就是公元前2000年左右。那时候,埃及正处于第十二王朝的统治之下,伟大的法老们正在建造金字塔,尼罗河每年准时泛滥,带来肥沃的淤泥,滋养着这片土地上的人们。
就在这个时期,一位名叫赫姆特(Hemut)的贵族男子去世了。他的家人在孟菲斯附近为他竖立了一块墓碑,以纪念他生前的功绩。这块墓碑后来被称为“德孟布朗石”(Demotic Brick),因为上面的文字是一种叫做“世俗体”的古埃及书写文字——这是当时普通人使用的书写方式,与祭司们使用的神圣文字不同。
碑文本身的文字内容其实相当平淡,讲述的是赫姆特的家谱和他在阴间将获得的祝福。但真正让这块墓碑变得特别的,是它所采用的一种书写方式。
在古埃及,书写是一种神圣的行为。文字被认为是神赐予人类的礼物,承载着神秘的力量。祭司们使用的“圣书体”(Hieroglyphics)更是神圣中的神圣,他们只在最庄重的场合——神庙墙壁、法老陵墓、宗教铭文——使用这种文字。普通人死后,墓碑上通常只会写一些程式化的祝祷词。
但赫姆特的墓碑有些不同。它的文字并不是按照正常的顺序书写的。有些字被故意写错,有些字被替换成了其他字,还有一些字的位置被调换了。如果按照表面的顺序去读,你会得到一段毫无意义的文字。但如果按照僧侣们才知道的规则去“纠正”这些错误,你才能读懂真正想表达的内容。
这可能是人类历史上最早的、有据可查的“加密”行为之一。
当然,我们无法确定赫姆特的家人为什么要这么做。一种可能是,这块墓碑上隐藏着某些只有家族成员才能理解的私人信息——也许是关于财产分配的细节,也许是关于家族秘密的记载。另一种可能是,这是一种显示家族学识的方式——只有受过良好教育的埃及人才能读懂这些“变形”的文字,这意味着赫姆特的家族在社会中享有崇高的地位。
无论出于什么原因,这块墓碑告诉了我们一个重要的事实:早在4000年前,人类就已经开始尝试“改造”文字以隐藏其真实含义了。我们今天所说的密码学,最早的雏形可能就诞生在尼罗河畔的某个书吏的笔下。
在接下来的几千年里,埃及人发展出了更加复杂的文字隐藏技巧。考古学家在埃及各地发现了许多采用类似“变形书写”的文献,它们被统称为“僧侣体秘密文字”(Enigmatic Secret Scripts)。其中最著名的可能要数“拉斯穆夫纸草书”(Papyrus Leiden I 346),这是一份大约公元前1200年的文献,上面使用了多种复杂的符号替换规则,直到19世纪才被学者们破译出来。
这些古老的埃及文献为我们提供了一个重要的启示:密码学的诞生并非某个天才的发明,而是人类在日常生活中逐渐摸索出来的生存智慧。当你的信息有足够的价值,而泄露信息的代价又足够高时,隐藏信息就成了一种自然而然的选择。
第二站:斯巴达的密码棒
让我们把目光从埃及转向希腊。在那里,另一群人正在书写着属于他们的传奇。
公元前5世纪,希腊城邦斯巴达是整个地中海世界最令人畏惧的军事力量。斯巴达人身材魁梧,纪律严明,他们的孩子从7岁就开始接受残酷的军事训练。斯巴达人有一句著名的格言:“与剑盾同在,要么胜利,要么死亡。”这个城邦的全部社会结构都是为了战争而设计的。
正是在这样一个崇尚武力的地方,诞生了人类历史上最早的可重复使用的加密装置——密码棒(Scytale)。
密码棒的原理出奇地简单。你需要一根形状规则的多边形木棒——通常是正六边形或正八边形的棱柱——以及一条狭窄的羊皮纸带。使用时,将羊皮纸沿木棒螺旋缠绕,让纸带覆盖住木棒的所有面。然后,把要传递的信息沿着木棒的轴向写下。写完后,解开羊皮纸,上面的文字就会变成一串看似毫无规律的字母。只有拥有相同规格木棒的人,将羊皮纸重新缠绕上去,才能读出原始信息。
这个装置的巧妙之处在于它的“可证明性”。如果你试图不用木棒就解读密文,你会发现自己面对的是一串完全无法理解的字母。这不是一种需要复杂记忆或特殊训练才能掌握的技能——只要有正确的木棒,任何人都能瞬间读懂信息。这意味着斯巴达的将军们可以在紧急情况下快速传递复杂指令,而不必担心传递过程中的信息泄露。
考古学家至今没有找到斯巴达原版的密码棒,但我们有文字记载可以证明这种装置确实存在过。公元前4世纪的历史学家波利比乌斯(Polybius)就曾描述过密码棒的工作原理,并称其为“斯巴达最古老的加密方法”。古希腊历史学家普卢塔克(Plutarch)也提到,斯巴达人使用密码棒来传递军事命令,特别是在与雅典的战争期间。
让我们用一个具体的例子来演示密码棒是如何工作的。
假设斯巴达将军想要传递一条信息:“明天黎明进攻北山”(在希腊语中写作“ΤΗΝ ΑΥΡΙΟ ΕΠΙΘΕΣΙΝ ΕΠΙ ΤΟ ΒΟΡΕΙΟΝ ΟΡΟΣ”)。他有一根正六边形的密码棒。将羊皮纸缠绕上去后,他沿着木棒的方向依次写下这则信息。当你从上到下、沿着一列读下去时,每个字母都会落在羊皮纸的特定位置。
解开羊皮纸后,原本整齐的信息就变成了一串混乱的字母。如果你把羊皮纸沿水平方向展开,会看到类似这样的序列:“ΤΗΝΑΥΡΙΟΕΠΙΘΕΣΙΝΕΠΙΤΟΒΟΡΕΙΟΝΟΡΟΣ”——一串看起来毫无意义的字符。
现在,假设敌国的间谍截获了这条羊皮纸。他可能会尝试各种方法来解读它,但只要他手头没有正确规格的密码棒,这些尝试都将徒劳无功。密码棒的安全性完全依赖于“只有发送者和接收者知道木棒的形状”这个事实。
但是,这里有一个关键的问题:如果敌人获得了(或者猜对了)木棒的形状呢?
事实上,密码棒的加密强度并不高。一根正六边形木棒可以产生的字母组合是有限的。一个有耐心的密码分析者完全可以尝试所有可能形状的木棒,直到找到能读通顺信息的那种。更糟糕的是,由于希腊语的语法结构相对固定,密码分析者可以利用语言本身的统计特征来加速破译过程。
这告诉我们一个重要的道理:没有永远安全的加密方法。随着时间推移,总会有人找到破解它的办法。密码学的历史,本质上就是一部加密与破译之间永无止境的“军备竞赛”。
第三站:西汉长安的藏头诗
现在,让我们进行一次时空穿越,来到2000多年前的中国。
公元前202年,刘邦在垓下之战中击败项羽,建立了汉朝。随后的几百年里,汉朝迎来了它的黄金时代——史称“文景之治”和“汉武盛世”。长安城成为当时世界上最繁华的都市,丝绸之路从这里延伸向遥远的西方。
就在这样一个伟大的时代里,中国人发展出了独具特色的“密码”文化。
在汉语中,有一类特殊的文学作品叫做“藏头诗”(Acrostic Poem),也叫做“堆金诗”或“织锦诗”。这种诗的特别之处在于:如果读者把每一句的第一个字(有时是最后一个字,或者某个特定位置的字)竖着连起来读,会发现一个隐藏的信息。
藏头诗在中国文学史上有着悠久的传统。早在《诗经》中,我们就能看到类似的结构——虽然《诗经》中的“首句连读”可能并非刻意为之,但这种形式确实为后来的藏头诗奠定了基础。到了汉代,藏头诗已经成为文人墨客展示才华、传递暗语的一种流行方式。
让我们来看一首据传为西汉才女卓文君所作的藏头诗:
> 白头吟 > 头白溪水漾碧波 > 吟风弄月自婆娑 > 罢却人间是与非 > 休将白发对红粉 > 琴心三叠道初成
如果把这五句的第一个字连起来读,就是“白头吟罢休琴”——这恰好是卓文君《白头吟》这首诗的题目。当然,关于这首诗的作者和创作背景,学者们至今仍有争议。但无论如何,它向我们展示了藏头诗在汉代文人中的流行程度。
另一首更为著名的藏头诗出自《水浒传》,作者据说是北宋末年的一位书生。这首诗的每一句开头的字连起来是“芦花荡里有神行”,暗指《水浒传》中戴宗的神行术。但《水浒传》是元末明初成书,所以这首诗的创作时间应该更晚一些。
藏头诗之所以在中国文化中如此流行,与汉语本身的特性密不可分。汉字是方块字,每个字都是独立的音节,竖向排列时视觉上非常清晰。这与西方的拼音文字形成了鲜明对比——在英语中玩藏头诗也是可能的,但效果远不如中文来得直接。
更重要的是,藏头诗完美契合了中国文人“含蓄蕴藉”的审美追求。一首表面描写山水风月、离愁别绪的诗,私下里却隐藏着另一层意思——这种表里不一、言在此而意在彼的表达方式,正是中国传统文学的最高境界。
从密码学的角度来看,藏头诗代表了一种独特的信息隐藏思路:它不是通过改变文字本身来加密,而是利用文字排列的额外维度来承载第二层信息。你不必“破解”任何密码规则,只需要按照特定的顺序(通常是竖着读每句的第一个字)提取信息。这种方法在密码学中被称为“隐写术”(Steganography)——它的目标不是让信息变得不可读,而是让人压根儿不怀疑这里有秘密。
让我们来做一个小练习,自己创作一首藏头诗。
假设你想通过一首诗向朋友传递信息:“明天考试取消”。你可以这样写:
> 明月清风拂书案 > 天高云淡心自闲 > 考古论文皆放下 > 试问何事最开颜 > 取消课程无牵挂 > 消磨时光乐无边
这六句话单独看是一首关于悠闲生活的小诗,但每句的第一个字连起来就是“明天考试取消”。当然,任何知道这个秘密的人都可以轻易发现隐藏的信息。藏头诗的安全性并不高——一旦有人注意到首字有玄机,秘密就暴露了。
但这恰恰说明了一个重要的密码学原理:没有完美的安全,只有不同级别的保护。藏头诗不需要抵御专业密码分析者的攻击,它只需要瞒过日常接触中的一般人。对于古人来说,能够做到这一点就已经足够了。
明文、密文、加密、解密、密钥:五大核心概念
通过以上三个跨越时空的故事,我们已经对“隐藏信息”这件事有了感性的认识。现在,是时候把这些感性认识提升为理性理解了。密码学作为一门学科,有自己的一套术语体系。掌握这些术语,就像获得了一把打开密码学之门的钥匙。
明文(Plaintext)是指信息的原始形式——你想传达的、未经任何处理的原始消息。当斯巴达将军在木棒上写下“明天黎明进攻北山”的时候,他写下的就是明文。当你给朋友发短信说“今晚8点见”时,那条短信也是明文。明文是信息的本来面目,是人人都能理解的形式。
密文(Ciphertext)则是明文经过某种规则处理后得到的形式——这种形式在没有正确知识的情况下难以理解。斯巴达将军写完信息后解开羊皮纸,上面那些看似乱码的字母就是密文。敌人截获了羊皮纸,看到的就是一串毫无意义的符号。
加密(Encryption)是把明文变成密文的过程。你可以把加密理解为一个“变形”的操作——就像《格列佛游记》中的大人国把小人装进口袋,小人还是那个小人,但所处的环境变了,从外面看起来就不一样了。加密就是把信息“装进”一个只有特定人才能打开的容器里。
解密(Decryption)则是加密的逆操作——把密文还原成明文。只有掌握正确方法的人才能完成这个操作。对于斯巴达的密码棒来说,这个方法就是“拥有一根相同规格的木棒”;对于藏头诗来说,这个方法就是“知道要从每个字的第一行提取信息”。
密钥(Key)是控制加密和解密过程的关键参数。我们可以把密钥想象成一把真正的钥匙——你家门上的锁可以有很多把,但你手里的钥匙只能打开属于你的那把。密钥决定了密文如何被加密,以及如何被解密。在斯巴达密码棒的例子中,密钥就是“木棒的形状”——正六边形、正八边形,或者其他什么形状。只有知道这个参数,才能正确地加密和解密信息。
这五个概念构成了密码学的基础“语法”。在接下来的章节中,我们将会反复遇到它们。理解了这五个词,你就已经迈出了进入密码学世界的第一步。
让我们用一个生活中的比喻来巩固对这些概念的理解。
想象你要给远方的朋友寄一封信,但你不信任邮递系统,怕有人在途中偷看。于是你想出了一个办法:用一个密码箱来装这封信。你把信放进箱子里,用锁锁上,然后寄出箱子。你的朋友收到箱子后,用配套的钥匙打开,取出信来阅读。
在这个场景中:
- **明文** = 信的内容
- **密文** = 锁着的箱子里装着的那封信(处于“受保护”状态)
- **加密** = 把信放进箱子并上锁的过程
- **解密** = 用钥匙打开箱子、取出信的过程
- **密钥** = 打开箱子所需要的钥匙(以及锁本身的规格)
这个比喻虽然简单,但它准确地反映了密码学中所有操作的核心逻辑。无论技术如何发展,密码学要解决的基本问题始终是这一个:如何让信息的发送者和接收者能够安全地传递信息,同时不让任何第三方获知内容。
古代密码的共同特点:依赖秘密的安全
我们已经走过了尼罗河畔、斯巴达战场和西汉长安,聆听了三个相隔万里的故事。现在,让我们站在更高的视角,来审视这些古代密码方法的共同特点。
如果我们仔细分析赫姆特墓碑上的“变形文字”、斯巴达的密码棒、以及中国的藏头诗,会发现它们有一个根本性的共同点:它们的安全性都完全依赖于“除了发送者和接收者之外,没有其他人知道这个秘密”。
让我们把这种安全模式叫做“秘密安全”(Security through Obscurity)。这个名字听起来可能有些贬义,但在古代,它确实是唯一可行的安全策略。
以斯巴达密码棒为例。它的安全性完全取决于敌人不知道木棒的形状。一旦敌人获得了相同规格的木棒,或者猜对了木棒的形状,他就能瞬间读懂所有的密文。这意味着密码棒的安全性不是在数学上可以证明的,而是建立在“敌人无法获知这个秘密”这个假设之上的。如果这个假设成立,一切都没问题;如果这个假设被打破,整个系统就会崩溃。
藏头诗也是一样的道理。藏头诗的秘密在于“每句的第一个字藏着另一层意思”这个规则。如果有人偶然发现这个规则,或者有人无意中向你透露了这个秘密,藏头诗就完全失去了保密作用。它并没有一个可以更换的“密钥”——一旦你决定使用藏头诗,就意味着你必须让接收者知道“在每句的第一个字里寻找信息”这个规则。而一旦这个规则被泄露给第三方,保密就无从谈起了。
埃及人的“变形文字”也是如此。考古学家之所以能够破译这些文字,正是因为他们成功地发现了僧侣们用来处理文字的规则。一旦规则被发现,所有的秘密都暴露在阳光之下。
这种“秘密安全”的模式有一个致命的弱点:随着使用时间的延长和使用范围的扩大,秘密被泄露的概率会无限趋近于1。
想象一下,斯巴达的密码棒在一次战役中被敌人缴获了。即便这是唯一的密码棒,敌人也已经知道了它的秘密。下一次,斯巴达人必须更换新的、不同规格的密码棒。但更换本身就需要时间,而且所有知道旧密码棒的人都需要被告知新密码棒的规格。在这个过渡期内,旧的秘密和新的秘密交织在一起,极易造成混乱。
中国古人在这个问题上相对灵活一些。藏头诗的“规则”不需要像木棒那样被制作出来——它只需要双方事先约定好就可以了。但这也意味着,一旦约定被泄露,就必须想出新的约定。在一个相对封闭的熟人社会中,这可能不是问题;但一旦扩展到更大的范围,管理这些约定本身就会成为一个噩梦。
这并不是说古人的密码方法毫无价值。恰恰相反,在适当的场景下,它们确实能够提供有效的保护。斯巴达密码棒在短期内、小范围内使用时,仍然是一个简单而有效的工具;藏头诗在文人雅士之间传递私密的情感时,也足够保密。但这些方法的共同局限在于:它们无法应对大规模、长期使用的挑战。
现代密码学的伟大突破之一,正是认识到这种“秘密安全”的局限性,并发展出了与之相对的“算法安全”(Security through Cryptography)——也就是设计即使算法本身被公开、只要密钥保持秘密就仍然安全的加密方法。我们将在后面的章节中详细讨论这个问题。
理解“秘密安全”和“算法安全”的区别,是我们理解密码学发展脉络的关键。古代密码属于前者,现代密码属于后者。认识到这一点,能帮助我们更好地理解为什么密码学会沿着它固有的轨迹演进。
密码学最核心的对抗逻辑
在我们结束这一章