大话密码学史(上):从姜太公折断鱼竿说起

喏呗尔  2018-10-31  新手入门/区块链知识栏目  

  在人类漫长的历史进程中,生产力的变革不仅加速了人类思想解放的进程,同时也促进了不同地域民族或人种之间的交流。而这种交流最直接的形式,就是以杀戮为核心的战争与争夺。

  人类文明史的发展,始于文字的诞生。根据目前公开的历史资料来看,人类文明大约出现在公元前3500年,即诞生于美索不达米亚的苏美尔人之间。更有一说是源自更早的姆大陆文明,但个中故事波澜曲折,姆大陆文明迄今未被主流历史所认可,在此不再赘述。

  随着人类文明的发展以及战争规模的日益壮大,战时信息安全及保密性日渐得到军事将领的重视。在古埃及C位出镜之前,世界上最早的密码工具普遍被认为是在公元前1000年由姜子牙发明的军用“阴符”。

  相传商纣王末年,姜太公辅佐周室。有一次,姜太公带领的周军指挥大营被叛兵包围,情况危急,姜太公令信使突围,回朝搬兵,但又怕信使遗忘机密,或者周文王不认识信使,耽误了军务大事。于是其将自己珍爱的鱼竿折成数节,每节长短不一,各代表一件军机,令信使牢记,不得外传。信使几经周折回到朝中,周文王令左右将几节鱼竿合在一起,亲自检验。周文王辨认出是姜太公的心爱之物,于是亲率大军,解救姜太公。此后,姜太公将鱼竿传信的办法加以改进,“阴符”由此诞生。

  当时“阴符”的规格共有8种(即8个不同的尺寸),每种规格分别代表一种状态。比如,长为1尺的“阴符”表示大获全胜、全歼敌军;长为4寸的“阴符”表示军队失败,将领阵亡等。

不同尺寸“阴符”含义

  但是,受尺寸所限,“阴符”并不足以传递战时信息。为此,姜子牙又进一步发明了“阴书”,即将竖写的秘密文书横截成3段,并派出3位信使各执一段,于不同时间、不同路线分别出发,先后送达收件者。任何人只有在收齐3段文件以后才能获悉秘密文书的全部内容。

  然而,在后来的考古发现中,考古学家们认为,世界上最早出现密码影子的地方应该是公元前2000年的古埃及:时位古埃及贵族的克努姆霍特普二世的墓碑上有一段不同于已知的埃及象形文字的“字符”,这些“字符”实际上是将普通的象形文字经过变形处理之后铭刻于墓碑上的。不过,墓碑加密“字符”与军事远远不沾边,不过是为了让铭文显得更庄严罢了。

  公元前400年,古希腊的斯巴达人发明了“塞塔(scytale)”密码。他们把长条纸螺旋地斜绕在一根多棱棒上,让纸条被多棱棒分割成一个个的类似格子一样的区域,并沿着这个区域,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,换一个区域,写完一行再另起一行从左到右写。这样一来,本来完整通顺的一句话,就被机械地分割开了。将信息写完后,解下来的纸条上的文字消息杂乱无章、无法理解,这就将原来的信息明文转换成了密文。在把展开的纸条传递出去以后,解密人只有将纸条斜绕在另一根同等尺寸的多棱棒上才能看到原始消息。

  在这一时期,《左传·宣公十二年》记载了一种用于替换信息的“隐语”法。所谓“隐语”,就是电影里常见的暗语、黑话,用一个完全不相关的词来代表特定含义。

  至此,我们可以粗略地划一条分界线。在公元前400年以前,所谓“密码”本质上是古人根据物理工具特性所作出的改造和伪装,当中并没有涉及到启发式的数学思维或方法,我们称之为远古密码。

  当然,随着人们在建筑、器械以及经济实践中的经验积累,其对数学的认知也逐渐发展成为一种完备的思维。伴随着古希腊文明的兴起,数学的发展——从伊奥尼亚学派到毕达哥拉斯学派,再到柏拉图学派和后来的丢番图、欧几里德——也走向了新的高点。今天我们所熟知的Cryptography(密码学),正是由希腊词kryptós(意为“隐藏的”)派生而来。在公元前400年以后,人们又相继发明了更复杂且具有启蒙意义的密码,我们称之为古典密码。

  古典密码

  古典密码普遍分为代换密码和置换密码。所谓代换密码,是指通过使用加密字符来替换原文字符;而置换密码则不改变明文字符,仅做纯粹的位置置换。

  公元前100年,罗马共和国的凯撒大帝在高卢战争中使用以自己名字命名的密码(即CAEsar密码)来对军事信息进行加密。所谓Caesar密码,其实就是对明文的字母同时进行相同间隔的位移。有意思的是,这种在今天看来简单得不行的加密方式在当时却收效极佳。至于个中缘由,曾经有人推断说是因为高卢人比较落后。

  然而后来的考古学证实,早在罗马人征服高卢之前,高卢文明已经十分发达,其中就包括有词汇、经济、技术等方面,因此这个解释并不令人信服。从历史上看,高卢人的事务普遍以口传形式记载,尽管由于受到希腊文化影响,在商业和贸易领域一度出现以希腊字书写的高卢文字,但因宗教因素所限,这些文字并没有得到广泛传播。由此,我们可以推断:在凯撒时代,文字在大多数高卢人之间属于稀缺品,而且表达范围十分有限,那么高卢人破解不了Caesar密码也就属于情理之中了。

  随着人们的不断尝试,Caesar密码已经无法满足战争加密的需求。于是,在同等间隔位移的基础上,又出现了借助关键词或者特殊设备识别的差异位移加密。比如著名的圣经密码。1994年,希伯来大学数学教授Eliyahu Rips及其同僚Doron Witztum和Yoav Rosenberg在《统计科学》杂志发表《创世记中的等距字母序列(ELS)》一文,文中指出,由智者们挑选出来的32位重要人物的名字和生卒曰期都包含在《创世纪》中,并且是连在一起的。文章不仅在学术界引起了轰动,更由此引爆了破解圣经密码的热潮。此后,“圣经密码”一直被广泛用于指代通过ELS加密的信息。

  为了进一步提升加密的难度,15世纪末,佛罗洛萨人Alberti又发明了圆盘密码。所谓圆盘密码,就是两个同心圆盘上,内盘随机填写字符,而外盘的字符则按照一定顺序来填写。使用者只需转动圆盘就可以找到内外盘字符间的映射方式。

南北战争时期使用的密码盘

  上述密码都可以统称为单表代换密码,即明文和密文之间均具有一一对应的关系。为了打破这种对应关系,1553年,Giovan Battista Bellaso在其著作中发明了通过字母密钥来循环加密明文的“维吉尼亚”密码。这个悲伤的命名缘于吃瓜群众误以为Bellaso密码是由法国外交官维吉尼亚发明的(后者确实在1586年提出了相同的方法),从此沿用至今。以下是维吉尼亚算法的简陋图解:

  假设要加密的明文是:TO BE OR NOT TO BE THAT IS THE QUESTION,密钥为RELATIONS,即RE LA TI ONS RE LA TION SR ELA TIONSREL,那么我们就可以在一个特定的26*26表格中搜寻第R行、第T列所对应的字母作为T的密文。以此类推,得到密文为:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY。

维吉尼亚密码表

  随着科技及破译技术的发展,类似维吉尼亚密码这种周期多表代换方法已经无法应对频率分析方法的破解,于是人们又发明出了非周期多表代换的方法。当然,除了Caesar密码及其改进算法外,在这一段演进时期,中西方还出现了其它有趣的方法。

  公元前两世纪,古希腊人发明了利用Polybius方阵加密的方法,即棋盘密码。所谓棋盘密码,就是把字母按序或乱序填入表格里,并对应行和列进行加密,比如最简单的棋盘密码:

假设明文是GOD,那么加密后则为23 43 14。

  棋盘密码虽然简单,但实用性非常好。在第一次世界大战中,德军上校Fritz Nebel用ADFGX替换代表行列数的12345,并把表内字母乱序,由此诞生了ADFGX密码。

  另一种有名的代换密码是1700年共济会使用得热火朝天的猪圈密码。所谓猪圈密码,就是以格子或符号为基础来替换明文字符。猪圈密码的起源已无从考证,其形式及变种很多,大多数教材使用的经典图案长这样:

猪圈密码

  还有赫赫有名的栅栏密码,其原理是将字母明文分成N个一组,然后再把对应位置的字母连接起来:比如把CAE SAR分成两组,加密后便得到CS AA ER。

  而在我国古代,首先就是大家耳熟能详的猜字谜以及藏头诗,比如在周星驰版《唐伯虎点秋香》中,唐伯虎给华府写的卖身契,第一行藏头即是“我为秋香”。

唐伯虎卖身契(原为4列文书)

  尽管汉字不如单词的字母组合那么容易拆解,但古人还是根据汉字的边旁结构发明了“析字法”。“析字法”将汉字的结构归纳为“六书”,即象形、指事、会意、形声、转注、假借,并据此将汉字划分为音、形、义三个类别。

  关于析字法最经典的历史莫过于一代女皇武则天手撕宰相裴炎。公元684年9月,一位名叫徐敬业的国公在扬州起兵造反,有大臣问裴炎应该怎么办,裴炎在回信中只写了两个字:青鵝。然而,这封书信不幸落到武则天的线人手中,武则天一看,马上下令将裴炎入狱,以造反罪将其砍头抄家。所谓“青鵝”,拆解即“十二月,我自与(我将给予帮助)”,也就是说,裴炎将与叛军里应外合。

  到了宋代,军事首领们总结行军经验,制定了军需四十余条,其中包括支援粮草、增援兵力、将士叛变等,并从旧诗中选取四十个不重复的字,每字依次对应一种情况作为暗号。在通信时,就以暗号代替具体的事件。

  及至明朝,抗倭名将戚继光发明“反切码”来为军事情报进行加密。说到“反切码”,我们不得不提到“反切法”。在汉语拼音出现以前,古人为汉字注音的方法普遍有几种:直音法、反切法、读若法、读为法以及叶音法。其中,直音法就是直接用读音相同的汉字来为另一个汉字注音;而反切法,就是通过使用两个汉字,并依次取第一个汉字的声母和第二个汉字的韵母和声调来为某一个汉字注音。反切码正是应用了反切法的精髓。

  根据戚继光编写的密码本,“反切码”的精髓在于这两首诗歌:其一为“柳边求气低,波他争日时。莺蒙语出喜,打掌与君知”;其二为“春花香,秋山开,嘉宾欢歌须金杯,孤灯光辉烧银缸。之东郊,过西桥,鸡声催初天,奇梅歪遮沟。”如果我们取前一首诗歌中前20个汉字的声母,依次分别编号1到20;同时取后一首诗歌的36个汉字的韵母,并依次编号1到36。然后再根据当时福州方言字音的八种声调,依序编号1到8,就形成了完整的“反切码”体系。比如情报上的密码为5-25-2,那么对照声母编号5是“低(di)”字,韵母编号25是“西(xi)”字,两字的声母和韵母合在一起是di,对照声调2,就可以得到“敌”字。后来,戚继光还专门编写了《八音字义便览》,以作为情报人员的训练教材。

  随着东西方文明日益频繁的交流和融合,科技的发展日新月异。1766年,第一架具有实用价值的蒸汽机正式诞生,标志着人类机械时代的来临。此后一百年,电力的大规模应用更是将包含经济、科技、文化等各领域产业推上快车道,也宣告着密码学正式进入机器时代。

  由于文章篇幅过长,为保证更好的阅读体验,文章分为上下两部分。敬请期待!

  【本文版权属于Unitimes,转载请保留版权信息。未经授权,不得以任何方式加以使用,包括转载、摘编、复制或建立镜像。Unitimes将追究侵权者的法律责任。合作或授权请联系cONTact@unitimes.media或添加微信unitimes2017】

版权信息
作者:喏呗尔
来源:Unitimes

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com