• home > theory > algorithm > encryption >

    简叙密码发展史(1):密码发展史之古典密码

    Author:zhoulujun Date:

    密码学是一门拥有几千年历史的学科。古典密码阶段是指从密码的产生到发展成为近代密码之间的这段时期密码的发展历史。公元前2000年人类文明刚刚形成,大约就在那个时候古埃及就拥有了密码。

    密码(Cryptology)是一种用来混淆的技术,它希望将正常的、可识别的信息转变为无法识别的信息。密码学是一个即古老又新兴的学科,密码学一词源自希腊文“krypto's”及“logos”两字,直译即为“隐藏”及“讯息”之意。

    密码学是一门拥有几千年历史的学科。密码学的发展大概经历了三个阶段:古典密码阶段、近代密码阶段、现代密码阶段。下面我们一起了解古典密码阶段。

    古典密码阶段是指从密码的产生到发展成为近代密码之间的这段时期密码的发展历史。我们从古代产生密码的各个国家和几个简单的古典密码体制等方面来认识一下古典密码。

    一、古典密码在古代各国的使用

    古埃及:公元前2000年人类文明刚刚形成,大约就在那个时候古埃及就拥有了密码。贵族克努姆霍特普二世的墓碑上记载了在阿梅连希第二法老王朝供职期间它所建立的功勋。上面的象形文字与我们已知的埃及象形文字有所不同,那是由一位擅长书写的人对普通象形文字经过处理之后刻录的,但是具体的方法尚未可知。民众们推测这可能是庄严和权威的象征。

    古印度:印度公元前三百年写成的《经济论》旨在描述当时密探充斥全国时特务机关的官员用密写的方式给密探下达任务。


    古希腊:大约在公元前700年,古希腊军队用一种叫做Scytale的圆木棍来进行保密通信。其使用方法是:把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。

    这种Scytale圆木棍也许是人类最早使用的文字加密解密工具,据说主要是古希腊城邦中的斯巴达人(Sparta)在使用它,所以又被叫做“斯巴达棒”。

    斯巴达棒的加密原理属于密码学中的“换位法”(Transition)加密,因为它通过改变文本中字母的阅读顺序来达到加密的目的。

    这里推荐阅读下经典之作《玛丽女王的密码


    中国古代兵书《六韬》中的阴符和阴书:《六韬》又称《太公六韬》或《太公兵法》,据说是由西周的开国功臣太公望(又名吕尚或姜子牙,约公元前1128—公元前1015)所著。书中以周文王和周武王与太公问答的形式阐述军事理论,其中《龙韬•阴符》篇和《龙韬•阴书》篇,讲述了君主如何在战争中与在外的将领进行保密通信。

    武王问太公曰:引兵深入诸侯之地,三军卒有缓急,或利或害。吾将以近通远,从中应外,以给三军之用,为之奈何?

    太公曰:主与将,有阴符,凡八等。有大胜克敌之符,长一尺。破军擒将之符,长九寸。降城得邑之符,长八寸。却敌报远之符,长七寸。警众坚守之符,长六寸。请粮益兵之符,长五寸。败军亡将之符,长四寸。失利亡士之符,长三寸。诸奉使行符,稽留,若符事闻,泄告者,皆诛之。八符者,主将秘闻,所以阴通言语,不泄中外相知之术。敌虽圣智,莫之能识。

    中国宋代兵书《武经总要》是北宋仁宗时期官修的一部兵书,成书于1040年—1044年,作者是天章阁待制曾公亮和工部侍郎丁度。该书前集第15卷中有“符契”、“信牌”和“字验”三节,专门讲述军队中秘密通信和身份验证的方法。

    • “符契”是《六韬》中“阴符”方法的改进。其中的“符”是皇帝派人向军队调兵的凭证,共有5种符,各种符的组合表示调用兵力的多少,每符分左右两段,右段留京师,左段由各路军队的主将收掌。使者将带着皇帝的命令和由枢密院封印的相应的右符,前往军队调兵;主将听完使者宣读皇帝的命令后,须启封使者带来的右符,并与所藏的左符验合,才能接受命令;然后用本将军的印重封右符,交由使者带回京师。

    • “契”是主将派人向镇守各方的下属调兵的凭证,共有三种契,每契都是鱼形,可分为上下两段。上段留主将收掌,下段交各处下属收掌,使用方法类似于上述的符。

    • “信牌”是两军阵前交战时,派人传送紧急命令的信物和文件。北宋初期使用的信物是一分两半的铜钱,后来改用木牌,上面可以写字。

    • “字验”则是秘密传送军情的一套方法。先约定40种不同的军情,然后用一首含有40个不同字的诗,令其中每一个字对应一种军情。传送军情时,写一封普通的书信或文件,在其中的关键字旁加印记。军使在送信途中,不怕被敌方截获并破解信中内容。将军们收到信后,找出其中加印记的关键字,然后根据约定的40字诗来查出该字所告知的情况,还可以在这些字上再加印记,以表示对有关情况的处理,并令军使带回。

    我们看到,宋代的“字验”方法与近代以来军队、外交官和间谍们常用的借助密码字典进行秘密通信和联络的原理相同。

    古代中国的君王常以虎符作为调用军队的凭证。如在春秋战国时期,就有魏信陵君使如姬窃取魏王的虎符,并以此夺取大将晋鄙的兵权,然后率兵大破秦军,以解赵国之围的故事。虎符一般由铜、银等金属制成,背面刻有铭文,以示级别、身份、调用军队的对象和范围等;虎符分为两半,一半放在朝廷,另一半由在外的将帅保管。朝廷派来的使者,需携虎符验合,才可调兵遣将。

    古代调兵的虎符

    顺便解释“符”字:其本义是指古代朝廷下命令的凭证;部首的“竹”表明最早的“符”是用竹子做的;“符”通常做成两部分,使用时一分为二,验证时合二为一;只有同一符的两部分才能完美地合在一起;这就是常用词“符合”的来历。近代间谍史上,常有人把纸币钞票一撕为二,作为接头联络的工具,其原理同“符”。现代密码学中,运用公钥—私钥体系进行身份认证的方法也与“符”相通。

    我国明末清初著名的军事理论家揭暄(1613—1695)所著的《兵经百言》用100个字条系统阐述了中国古代的军事理论。其中的“传”字诀则是古代军队通信方法的总结,其解释如下:

    军队分开行动后,如相互之间不能通信,就要打败仗;如果能通信但不保密,则也要被敌人暗算。所以除了用锣鼓、旌旗、骑马送信、燃火、烽烟等联系外,两军相遇,还要对暗号(口令)。当军队分开有千里之远时,宜用机密信(素书)进行通信。机密信分为三种:改变字的通常书写或阅读方式(“不成字”,如传统密码学的文字替换或移位方法);隐写术(“无形文”,用含有某种化学物质的液体来书写,收信者用特殊方法使文字显现出来,如矾书);不是把书信写在常用的纸上(“非纸简”),而是写在特殊的、不引人注意的载体上(如服饰,甚至人体上等)。这些通信方式连送信的使者都不知道信中的内容,但收信人却可以接收到信息。

    公元七世纪开始兴盛的伊斯兰教阿拉伯民族,最早使用并系统总结了密码分析的方法。因此,很多西方学者认为密码学真正的诞生是在阿拉伯世界。阿拉伯人还最早使用了cipher这个词,该词一开始表示“零”、“什么也没有”,后来表示任何一个十进制数,然后又有了“密写”、“密码”、“密文”、“暗号”、“加密”等含义—也就是说与code同义。

    九世纪阿拉伯伟大的哲学家、数学家肯迪(AbuYusufYaqubibnIshaqal-SabbahAl-Kindi,801-873)。他是中世纪阿拉伯哲学家、自然科学家,亚里士多德学派的主要代表之一。

    1987年,发现了他大约在公元850年写的“解码手册”(RisalahfiIstikhrajal-Mu'amma,英译ManuscriptfortheDecip

    heringCryptographicMessages),其中有关于密码分析的如下描述:如果我们已经知道了一份密文(encryptedmessage)所使用的语言,要破解它的一种方法是,找一份用同样语言写的明文(plaintext),大约有一页纸那么长。然后我们来就数其中每个字母出现的次数;我们把出现频率最高的字母叫做“第一”,出现频率次高的字母叫做“第二”,以下依次为“第三”,等等。直到我们数完明文中所有的字母。

    然后我们来看我们要破解的那份密文,我们同样对其中的符号做(频率的)排序;我们找到出现频率最高的那个符号并把它改为上述的“第一”字母,找到出现频率次高的符号并把它改为的“第二”字母,找到再次高的符号并改为“第三”字母,就这样一直下去,直到数完密文中的所有符号。

    这是历史上最早的研究用频率分析法破解密码的文献,比西方的同类文献早大约300年。基于字母和单词的统计学特性的频率分析方法一直是破解密码的最基本和最常用方法。两次大战中的密码战,是当时敌对双方最优秀的科学大脑和最先进的科技之间的生死较量,但究其所依据的加密和破解原理,仍然是基于字母和单词的频率分析,只是复杂的程度不同而已。当然,肯迪的方法只能破解较原始的单表替换加密方法,对于较复杂的多表替换加密方法,它是无能为力的。

    频率分析方法一般只适用于以少量的字母为构词基本单元的拼音文字,这是西方世界普遍使用的文字类型。而中国使用象形表意的文字,其构词的基本单元是方块字,有成千上万个,所以不可能用频率分析方法破解中文密码。

    肯迪(Al-Kindi)的《解码手册》的首页

    基于深刻的数学思想和高速计算机技术的现代密码学,一般是对整篇文章——不是对字母或单词——加密和解密,因此在这里频率分析法也无大作用。

    二、古典密码中简单的密码体制

    1.Caesar密码

    凯撒(Caesar)密码是公元前一世纪在高卢战争时被使用的,它是将英文字母向前移动k位。从而生成字母替代的密表,如k=5,则密文字母与明文与如下对应关系:

    凯撒密码明密文对应表

    k就是最早的文字密钥。

    据说凯撒当年就是使用这种加密方法与手下的将军们通信的。现在已经无法弄清恺撒密码在当时有多大的效果,但是有理由相信它是安全的。因为恺撒大部分敌人都是目不识丁的,而其余的则可能将这些消息当作是某个未知的外语。即使有某个敌人获取了恺撒的加密信息,根据现有的记载,当时也没有任何技术能够解决这一最基本、最简单的替换密码。

    凯撒加密的思想对于西方古典密码学的发展有较大影响。事实上,直到第二次世界大战结束,西方所使用的加密方法大多属于“字母表替换”加密,只是替换的规则越来越复杂而已

    后人根据凯撒加密法的原理而制作的字母循环移位盘。可以根据需要设定加密时移位的位数,并可供加密或解密时快速查询。

    用于产生凯撒密码的字母循环移位盘

    2.Polybius密码

    公元前2世纪,一个叫Polybius的希腊人设计了一种将字母编码成符号对的方法,他使用了一个称为Polybius的校验表,这个表中包含许多后来在加密系统中非常常见的成分。Polybius校验表由一个5行5列的网格组成,网格中包含26个英文字母,其中I和J在同一格中。相应字母用数对表示。在古代,这种棋盘密码被广泛使用。Polybius校验表如表2所示。


    Polybius校验表

    3.多表代替密码

    1466年末1467年初,利昂•巴蒂斯塔•艾伯蒂第一个提出多表代替密码的概念,后来多表代替又被许多人逐步发展成当今大多数密码体制所属的一种密码类型;修道院院长约翰内斯•特里特米乌斯在1508年初从事写作一本专讲密码学的书,使多表代替又向前跨出了一大步,书名为《多种写法》,此书在他死后一年半才得以出版,《多种写法》是密码学第一本印刷书籍;在此之后,乔瓦尼•巴蒂斯塔•波他将艾伯蒂乱序密表与特里特米乌斯和贝拉索的见解融合在一起,使之成为现代多表代替的概念,他还首先阐明了密码分析技术的第二个主要方式——可能字猜译法。

    4.“不可破译”的维吉尼亚密码

    法国外交官维吉尼亚BlaisedeVigenere(1523-1596)在1585年写成了《论密码》一文,在该文中他集中了当时密码学的很多精华(密码分析除外),对贝拉索密码,他采用自身密钥体制,即以一个共同约定的字母为起始密钥,以之对第一个密文脱密,得到第一个明文,以第一个明文为密钥对第二个密文脱密,以此类推,如此不会重复使用密钥,然而他的自身密钥体制被后世遗忘,而他着力改进的原来的贝拉索密码却被人当作他的发明,于是贝拉索密码被称为维吉尼亚密码。

    在1467年,多表替换密码由莱昂•巴蒂斯塔•阿尔伯蒂以圆碟的形式首次描述。字母群体为单元的加密则称为“多表加密”或“表格式加密”。单表加密只可在一个单元中使用同一种替换加密,而多表加密则可在一个单元使用不同的加密方式,明文单元映射到密文上可以有好几种可能性,反之亦然。

    维吉尼亚加密术所使用的字母表矩阵的一个例子

    约翰尼斯•特里特米乌斯所著的《隐写术》中介绍了一种表格。1563年,乔瓦尼•巴蒂斯塔•德拉波尔塔在《书写中的隐蔽字符》描述了一个更复杂的混合字母版本。在一个多表替换密码中,会使用多个字母作为密码。为了加快加密或解密速度,所有的字母通常写在一张表格上,密码学上称作tableau。这种表格通常是26×26,因为这样才能放下全部26个英文字母。填充表格及选择下次使用的字母的方法,就是不同多字母替换密码之间的定义。多字母替换密码比单字母更难打破,因为其替换可能性多,密文要较长才可。用来加密和解密的维吉尼亚表格其中最著名的一种为吉奥万•巴蒂斯塔•贝拉索于1585年推出的维吉尼亚密码。它于1863年之前一直未被破解。法国人称它作“不能破译的密码”。(此密码曾被误以为由布莱斯•德•维吉尼亚所创,所以才叫作维吉尼亚密码。)维吉尼亚密码中,表格的第一行只需直接填上26个字母,然后以下每一行的字母都是向左偏移一格。(这叫作表格横移,数学上每一列同余26。)要用这种密码需要使用一个关键字来作为密钥。关键字每次用完就再次重复。假设关键字是“CAT”,明文的第一个字由“C”加密,第二个字由“A”加密,第三个则由“T”加密,然后再回到C加密,一直重复。然后按照右边的密码表加密,例如BALL用CAT作关键字时会加密至DAEN,可见即使是同一个“L”亦会加密至另一个字母。现实中,维吉尼亚密码的关键字非常长。

    1863年,弗里德里希•卡西斯基少校发明了一种方法(在克里米亚战争前已由查尔斯•巴贝奇秘密并独立地发明),使得可以计算维吉尼亚密码中关键字的长度。这种方法需要较长的密文,因为其运作依靠找出常见的字(如THE))使用相同关键字(如ABC)的数量,因此,极短的密文难以用此办法找出。因此,即使在今天,如果在表格中使用混合表加密,或关键字是随机的,维吉尼亚密码理论上亦难以破解。但由于实际上很难用到这些方法,维吉尼亚密码的使用越来越少。其他著名的多字母替换加密包括:

    • 格兰示菲特密码——与维吉尼亚密码相似,但由于整个密码只使用10个单元,因此关键字长度有限,很容易被破解。

    • 博福特密码——这实际上就是维吉尼亚密码,除“tabula”改为向后偏移一格,数学上是等式为:密文=键-明文。博福特密码属于对等加密,即加密算法与解密算法相同。

    • 自动密钥密码——它的密钥开头是一个关键词,之后则是明文的重复,以避免周期函数。

    • 运动密钥密码,关键词从某些文章或名句中取出,因此可以非常长。

    现代的流密码中可以看出,现代的多表替换加密都努力改进流密钥,使其尽可能的长及不可预知。

    6、隐写术

    隐写术从严格意义上讲不属于密码学,但它其实也是自古以来一种常用的秘密通信手段。

    信息隐藏的思想在很早的古希腊时代就有所体现。在那时,一位名叫Histaiaeus的古希腊人蓄意煽动反抗波斯国王的一场叛乱。由于需要传递秘密信息,他剃光了他的一个奴隶的头发,并在这个奴隶的头皮上刻下了叛变的信息,当这个奴隶的头发重新长满之后,再把他送出城外,到达另一种城池,由于他的头发已长满能覆盖掉头皮上刻下的信息,他躲过了重重的搜查,最终到达目的地。信息接收者再次剃光了这位奴隶的头,看到了起兵造反的信息。

    中国古代的“矾书”就是用明矾水写的书信。当水干后,纸上毫无字迹,把它弄湿后,字迹重新显现。据史记载,矾书是中国古代军事和政治斗争中常用的秘密通信方法。如南宋李心传(1166-1243)所撰的《建炎以来繫年要录•建炎元年正月》中有:“曹辅至兴仁,守臣徽猷阁待制赣县曾楙詰之,辅乃裂衣襟出御笔蜡封,乃枢密院矾书,以遗楙。”

    成书于元代(1261)的《金史•宣宗纪上》中有:“太原府宣抚使乌古论礼,遣人间道齎矾书,至京师告急。”意谓太原府的军事长官乌古论礼,派人带着用明矾写的机密信走偏僻的小路,赶到京师向皇帝告急。

    清康熙五十四年(1715)发生过“矾书事件”:太子胤礽托人把矾书交给正红旗满洲都统镇国公普奇,请他代为保举自己出任领兵的大将军。矾书后来被他人看到,并向皇帝告发。

    在第二次世界大战期间,德军将信息隐藏在普通照片中,这些照片经过“细微化”处理,也就是将秘密信息写在用肉眼难以察觉的照片中,间谍需要用放大镜读取,间谍通过这技术从敌国将数据传递给友军。

    随着科学技术的发展,基于种种物理、化学等原理的隐写术也非常发达,被广泛应用于军事、外交和谍报战线。即使到了计算机网络时代,隐写术同密码术一样,也有了基于数字化技术的发展——如把信文隐藏在图像、声音或视频文件中。

    2001年,著名的“911”事件的起因就是恐怖分子通过数字图像隐写技术而逃过美国情报机构的监控,最终被成功利用;2015年,Stegoloader病毒使用数字图片隐写技术入侵了全球的一些计算机系统,这款病毒使用隐写术躲避杀毒软件,成功入侵计算机,据报道其主要攻击目标是美国医疗保障公司。就在今年,即2019年,中国的一家安全企业发现一些图片携带恶意代码的有效负载,以达到攻击特定目标的目的。

    具体参看《隐写术(一)--简介》、《隐写术


    转载本站文章《简叙密码发展史(1):密码发展史之古典密码》,
    请注明出处:https://www.zhoulujun.cn/html/theory/algorithm/encryption/8616.html