中国古代很早就有使用密码的传统。《孙子兵法》有言:“ 知彼知已,百战不殆;不知彼而知己,一胜一负;不知彼,不知已,每战必殆。 ” [1] 知彼就是了解对手的实力强弱、作战计划、战略方针等信息,情报的数量及准确性甚至可以直接决定战争的胜负。战争历来是使用密码最频繁的地方,比如 “对口令” 就是密码校验的过程。因此中国古代的军队中也拥有不少巧妙、规范和系统的保密通信和身份认证方法。比如作为调遣军队凭证的虎符,就是中国古代非常经典的身份认证方法之一。春秋战国时期,魏国信陵君正是通过窃取魏王的虎符,在通信不发达的当时完成了以密码确认身份信息的过程,从而夺取兵权,率兵大破秦军,解了赵国邯郸之围。
春秋战国时期的兵书《六韬·龙韬·阴符》 [2] 中也介绍了中国古代战争中君王与征战在外的将领是如何进行保密通信的。武王问太公,假如军队深入敌后,遇到紧急情况,该如何保持密切联系?太公回答:使用阴符进行秘密联络。阴符共有 8 种。
1)长一尺的符,表示大获全胜,摧毁敌人;
2)长九寸的符,表示攻破敌军,杀敌主将;
3)长八寸的符,表示守城的敌人已投降,我军已占领该城;
4)长七寸的符,表示敌军已败退,远传捷报;
5)长六寸的符,表示我军将誓死坚守城邑;
6)长五寸的符,表示请拨运军粮,增派援军;
7)长四寸的符,表示军队战败,主将阵亡;
8)长三寸的符,表示战事失利,全军伤亡惨重。
若奉命传递阴符的使者延误传递,则处死;若阴符的秘密被泄露,则无论是无意泄密者还是有意,传告者都将被处死。只有国君和主将知道这 8 种阴符的秘密。这就是不会泄露朝廷与军队之间相互联系的内容的秘密通信语言。敌人再聪明也不能识破它。
正是因为阴符的可靠、有效及保密性,后世继续对阴符进行了传承和改进,才有了“符契”和“阴书”等高阶形式。而 “符”在实际使用中,作为凭证,是由竹子做的,并做成两部分,使用时一分为二,验证时合二为一。只有同一“符”的两部分才能完美地合在一起,这就是常用词 “符合”的来历。
后世的军事家对情报传输做了更多的改进。宋朝天章阁待制曾公亮和工部侍郎丁度在编著《武经总要》时,对阴符做了改进。《武经总要》是中国古代著名的军事著作 [3] ,是中国第一部由官方主持编修的兵书。在该书前集第 15 卷中有“符契”“信牌”和“字验” 3节,专门介绍了军队中秘密通信和身份验证的方法,如图 1-1 所示。“符契” 源于秦汉时期的调兵虎符,“符”用于朝廷调遣地方军队,“契”为上下两段鱼形,是军队主将向部属调兵的凭证。“符契” 由主将掌握,并且使用 “符契” 后,必须由专人书面记载使用记录,再由专人押递照验。
图1-1 《武经总要》秘密通信方法
“信牌”主要用于两军阵前交战时,传送紧急命令,初期用一分两半的铜钱,后来则用可以写字的木牌。
“字验”是以诗词为载体的军事通信“密码”,类似于现代军队使用密码本进行通信。《武经总要·制度十五·字验》记载了使用方法,即事先将要联络的事项以术语的形式编排好次序,将领们平时均加以熟记,每次作战之前,主将与每个受命出战的副将约定一首无重复的五言律诗为“字验”。若有事报告,就随意写成一封书信,将要报告之事的次序对应该诗中的第几个字,然后在普通书信中的该字旁加一记号即可。
例如,《武经总要·制度十五·字验》记载其规定联络事项的术语及次序是:(1)请弓; (2)请箭;(3)请刀;(4)请甲;(5)请枪旗;(6)请锅幕;(7)请马;(8)请衣赐;(9)请粮料;(10)请草料;(11)请车牛;(12)请船;(13)请攻城守具;(14)请添兵;(15)请移营; (16) 请进军;(17)请退军;(18)请固守;(19)未见贼;(20)见贼讫;(21)贼多;(22)贼少; (23)贼相敌;(24)贼添兵;(25)贼移营;(26)贼进兵;(27)胧退军;(28)贼固守;(29)围得贼城;(30)解围城;(31)被贼围;(32)贼围解;(33)战不胜;(34)战大胜;(35)战大捷; (36)将士投降;(37)将士叛;(38)士卒病;(39)都将病;(40)战小胜。
假设主将与副将规定使用《使至塞上》一诗作为“字验”。《使至塞上》共 40 字,无重复,符合要求。《使至塞上》全文如下:
单车欲问边,属国过居延。
征蓬出汉塞,归雁入胡天。
大漠孤烟直,长河落日圆。
萧关逢候骑,都护在燕然。
假若副将在战争进行中发现敌军增援后,军队被包围了,想把第 24 项和第 31 项军情报告给主将,在报告中就需要设法写进“烟”和“萧”这两个字,并在这两个字旁边做好标记,如点一个黑点或洒一滴水等。主将看到后,想请副将坚守再解围城,那么在回复中,主将也需要设法写进 “入” 和 “圆” 这两个字并做好标记。主副将之间就完成了沟通,即使被敌人截获,因为古代诗词无数,信使也不知道这封信使用了哪首诗,因此无法破译。相比阴符,它所能表达的军事状况更多,更加方便主将做出决策。后来李淑又将五言律诗改为七言绝句,使用了传播范围不那么广的民间绝句,进一步加强了军事情报传递的安全性。
明朝抗倭名将戚继光在战场上使用了反切码作为加密手段。反切是一种注音方法,戚继光利用 “反切注音方法”,编写了密码本。通过该密码本,只有我方的情报人员和将领知道信息的真实含义,传递人员和普通士兵无从知晓。
明末清初著名的军事理论家揭暄所著的《兵经百言》中也详细介绍了军队中的秘密通信方法。《兵经百言》的《术篇·传》下有论述:军队分开行动后,如相互之间不能通信,就要打败仗;如果能通信但不保密,则也要被敌人暗算。所以除了用锣鼓、旌旗、炮声、骑马送信、传令箭、燃火、烽烟等联系手段,两军相遇,还要对暗号。当军队分开有千里之远时,宜用机密信进行通信。机密信分为 3 种形式,即改变字的通常书写或阅读方式;隐写术;不把书信写在常用的纸上,而是写在特殊的、不引人注意的载体上。使用这些通信方式连送信的使者都不知道信中的内容,但收信人却可以接收到信息。由此可见,在中国古代战场上,秘密通信的受重视程度是非常高的。
密码不仅在中国战场上使用频繁,在国外战争中也是如此,著名的凯撒密码就是古罗马时期为了确保在战争中进行有效、可靠的秘密通信而发明的。根据苏维托尼乌斯的《罗马十二帝王传》:如果需要保密,信中便用暗号,也就是改变字母顺序,使局外人无法组成单词。如果想要读懂和理解它们的意思,得用第 4 个字母置换第字母,即以 D 代 A,以此类推。当时的人们还没有办法破解这样的密码,直到公元 9 世纪阿拉伯的阿尔·肯迪才发现可用频率分析来破解凯撒密码,他将方法写在了《破译加密信息手稿》一书中。
大约在公元前 700 年,斯巴达人使用一种叫作“Scytale”的圆木棍进行保密通信,它也被称作密码棒,如图 1-2 所示。它使用起来很简单,把长条带状的羊皮纸缠绕在一根圆木棍上,然后写上想要传达的信息,写完后从圆木棍上解下羊皮纸,上面的字符就被打乱顺序了。只有再以同样的方式将纸缠绕到同样粗细的圆木棍上,才能看明白所写的内容。
图1-2 Scytale
近代密码学主要是指从第一次世界大战到 1976 年这段时期的密码发展阶段。
19 世纪初,电报的发明极大地加速了信息的流通,也使得远距离快速传递信息成为可能。1893 年,尼古拉·特斯拉(Nikola Tesla)在美国密苏里州圣路易斯首次公开展示了无线电通信,标志着人类正式进人无线电时代,使得人们可以远距离进行实时通信。在分秒必争的战争中,军事指挥官可以及时了解前线信息并给出相应及时的部署。
因为无线电不像有线电话线可以专线传输,在一定范围内,无线电是以广播的形式播放的,任何人包括敌人都可以收到无线电信息从而进行应对。因此如何对无线电传送的信息进行加密迫在眉睫。随着第一次世界大战的爆发,对编码和解码人员的需求急剧上升,一场秘密通信的全球战役打响了。第一次世界大战进行到中后期,英国从事密码破译的机构 “40 号办公室” 利用缴获的德国密码本破译了著名的“齐默尔曼电报”(Zimmermann Telegram),改变了战争进程,如图 1-3 所示。
在第一次世界大战爆发之初,美国采取了中立态度,并没有参加欧洲战事。英国为了让美国加入战争,监听了整个大西洋的海底电缆,其中就截获了包括齐默尔曼电报在内的一系列电报。齐默尔曼电报是由德国外交部长发送给德国驻墨西哥大使的,其内容大致是德国想让墨西哥与自己结盟,一起对抗美国。因为电报传输必须通过大西洋电缆,所以该电报被英国截获。结合之前在战场上获得的密码本,英国在很短的时间内破译了密码信息。看到电报内容的英国人异常兴奋,因为他们一直想把美国卷入战争,但苦于没有机会,现在机会终于来了。于是英国向美国转交了这份电报,该电报激怒了美国,使整个美国相信德国是美国的敌人,就在齐默尔曼电报发送后的 3 个月,美国加入了战争,可以说信息的保密程度直接决定了战争的走向和命运。这次破译也由此被视为密码学历史上一次经典的密码破译案例。
图1-3 齐默尔曼电报
失败的德国人痛定思痛,认识到了密码在战争领域的重要性,且之前发明的密码不再安全,因此迫切需要一个安全性更高的密码系统。于是德国人在1919年发明了 Enigma (恩尼格玛)密码机,它的设计结合了机械系统与电子系统,被证明是当时最为可靠的加密系统之一,如图 1-4 所示。作为看似不可破译的密码机器,其密码组合约有 个之多,如此庞大的密码组合使得 “二战” 期间德军的保密通信技术遥遥领先于其他国家。盟军在很长一段时间内无法了解德军的部署,因而在战争初期迅速溃败。德国海军使用该密码系统区分了大西洋运输线上的德国潜艇和他国运输船,通过精准打击切断了盟军的海上运输线,想迫使英国在战争中做出让步。
图1-4 Enigma 密码机
20 世纪计算机科学迅猛发展,电子计算机和现代数学方法为破译者提供了有力的武器。1941 年,英国人阿兰·麦席森·图灵(Alan Mathison Turing)带领200名专业人士发现了 Enigma 密码的漏洞,即明文字母加密后不会是它本身,从而使用计算机破译了德国 Enigma 密码系统。这使英国海军得以提前了解德国潜艇部署,并设下埋伏以吸引德军火力,缓解了运输中可能遇到的压力,扭转了之前的被动局面,逐渐在 “二战”的大西洋航运中占据上风。
1941 年 12 月 7 日清晨,日军对美国夏威夷珍珠港海军基地进行偷袭,美军官兵伤亡惨重。珍珠港海军基地几乎被摧毁,整个太平洋舰队也完全瘫净。这次偷袭是太平洋战争的导火索,也促成了美国直接参加第二次世界大战,世界反法西斯联盟对德、意、日的联合作战拉开了新的序幕。
美军在珍珠港的惨败在很大程度上是由于美国对日本海军偷袭珍珠港的情报不重视,对情报的破译也很随意,使得日军仅以极微弱的代价就给美国海军造成了不可估量的重创。值得一提的是,日军以极其巧妙的方式对情报进行加密,联合舰队偷袭珍珠港时全程无线电静默,只以民用广播发的古诗作为进攻指令。
在此之后美国开始高度重视日本海军在太平洋的情报传递,并通过密码破译对情报进行分析,进而掌握了日本海军的动向和意图,在随后展开的太平洋海战中取得了一次次改变历史进程的胜利。
抗日战争期间,为了迫使中国投降,日本对重庆进行了持续数年的大轰炸,史称“重庆大轰炸”。重庆是有名的雾都,大多数的天气其实是不适合飞机飞行的。然而中国情报部门发现,日本轰炸重庆时都是晴天,绝不会无功而返,因此怀疑有间谍在重庆给日本人通风报信,但苦于找不到间谋。于是中国情报部门邀请美国人雅德利(见图 1-5)来重庆帮助找出间谍。
图1-5 赫伯特·奥斯本·雅德利
雅德利的全名是赫伯特·奥斯本·雅德利(Herbert Osborn Yardley),他是美国密码学之父,出生于印第安纳州沃辛顿。他自小就有着非同寻常的数学天赋, 13 岁就从身为铁路车站站长的父亲那里学会了如何收发电报,从此对电报编码产生了浓厚兴趣。数年后,雅德利通过考试,成了一名美国政府的机要员,专门负责电文的收发、转译等工作,他卓越的工作能力受到了美国政府的赏识。1917年,雅德利牵头组织成立了第一间 “美国黑室”——军情八处,该黑室是美国国家安全局(National Security Agency,NSA)的前身。后来由于美国政府内部重组,新上任的领导对军情八处并不感兴趣,就解散了该处。雅德利在事业上瞬间跌人深谷,并在很长一段时间内靠写小说维持生活。“二战”初期,生活上不得志的雅德利接受了中国的邀请,担任中国情报部门的顾问。
其间,中国情报部门抓捕了包括“独臂大盗”在内的一系列间谍,这些人中不仅有军队系统的,也有情报部门内部的,甚至有政府高层的。不过随着越来越多的间谍被抓获,雅德利的身份也被慢慢公开,待在中国变得不再安全,因此他返回了美国。
返回美国后,雅德利写下了回忆录《中国黑室》,但遭到美国政府的封杀。雅德利于 1958年病逝于美国华盛顿。1999年,其回忆录《中国黑室》终于被公开,雅德利的事迹才在中国慢慢传开。
可以说,密码学的发展直接影响了 “二战”的战局。
密码本密码实际上是一种替换密码,通过用密码本中的字来代替某个信息进行加密。关于密码本密码的应用场景,最为人熟知的就是各个影视剧中所出现的译电员翻译一组数字,写成内容后交给上级的场景。
由于无线电通信的技术瓶颈,无线电发明后很长一段时间内无法直接接收对方的语音信息,只能将语言通过编码形式传给对方,对方再用相同的编码方式翻译回来,这就是译电员的工作。英语是表音文字,很简单,如果不用加密,通过摩斯电码即可传给对方。但作为表意文字的中文就没那么容易了,汉语拼音直到“二战”以后才被发明出来,因此在 “二战”前,人们只能给汉字进行编码,将每个汉字的四角分别用 4 位数字代替,再用摩斯电码发送,这也是中文密码本的来源。这种四角码其实从清朝末期就开始使用了,康熙字典就是使用四角码查阅汉字的。
最早的一本中文电码是法国人编写的《电报新书》,后来在此基础上,中国人编著了《中国电报新编》,作为通用标准开始使用。但是这仅仅被用于不需要加密的民间通信,在外交、军事等信息保密等级较高的领域则完全行不通。于是行业内人员都使用自己的密码本作为加密的材料进行通信。中文密码本如图 1-6 所示。
图1-6 中文密码本
密码本是一种特殊的非通用编码本,通信双方秘密约定某本书,按页码、行数、字数将汉字译为数字后发送。它可以是自己写的密码本,也可以是公开发售的某本读物。使用前者的好处是密码本一旦被销毁,就再也不可能破译密文,坏处则是密码本的传输困难,容易在传输过程中被对方情报机构拦截。若选择公开发售的书籍,需要选择同版号同版次印刷的,以保证密码的准确性。这种方式的好处很多,一方只需要告诉另一方是什么书就行,然后在当地获取,不需要进行密码本的传输;坏处则是一旦对方情报机构知道是哪本书,则密码就会被破译,从而将情报彻底地暴露在敌方面前。
密码本在通信量少的情况下,安全性非常高,攻击者很难发现其规律。但是一旦通信量大,攻击者就会根据信息冗余,猜出这本书是哪一类的书籍,进而破译密码。
太平洋战争时期,日军曾先后有两艘潜艇触礁沉没。美军发现后立即派出部队,对这两艘沉没的潜艇进行了彻底搜寻,并在潜艇残骸中找到了日军密码本。正是依靠该密码本,美军情报部门才得以在极短时间内掌握了日本密码编制的方法。前文所列举的日本海军司令山本五十六的行踪被泄露,就是美方情报人员根据该批密码本对日军情报进行破译后得到信息的案例。不过令人意外的是,日军仍然坚信他们的密码本没有外泄,日军方面认为山本五十六所乘飞机被美军击落只不过是偶然事件。
我国关于密码本的历史最早可以追溯到宋朝。北宋时期的《武经总要·字验》是目前可考究的中国最早的军事密码本。
现代密码学的发展与计算机技术、电子通信技术密切相关。在这一阶段,密码理论得到了蓬勃发展,密码系统的设计与分析互相促进,出现了大量的加密算法和各种分析方法。除此之外,对密码的使用扩张到各个领域,出现了许多通用的加密标准,从而促进了网络和技术的发展。
在这里,不得不介绍现代密码学奠基人之一———克劳德·艾尔伍德·香农 (Claude Elwood Shannon)博士。香农毕业于麻省理工学院,是一位非常著名的数学家、电子工程师和密码学家,被誉为信息论的创始人。在 “二战”期间,他为破译敌方密码做出了突出贡献。
香农于1948年发表了一篇著名的论文 “A Mathematical Theory of Communication” (通信的数学理论) [4] 。该文从研究通信系统传输的实质出发,对信息做了科学的定义,并进行了定性和定量的描述,是现代信息论的基础。1949 年,香农又发表了一篇著名论文 “Communication Theory of Secrecy Systems” (保密系统的通信理论) [5] ,把已有数千年历史的密码学推向了基于信息论的科学轨道,它也是现代密码学的理论基础之一。但论文发表之初并没有被广泛应用,直到数十年后分组密码诞生,才显示出它的价值。
1976 年,惠特菲尔德·迪菲(Whitfield Diffie)和马丁·爱德华·赫尔曼(Martin Edward Hellman)发表论文《密码学的新方向》 [6] ,提出了 “公钥密码” 概念,开辟了公钥密码学的新领域。密码学的历史在此刻一分为二,分为对称密码学和非对称(公钥)密码学。在此之前,所有的密码系统都是对称的。可以说,没有对公钥密码学的研究,就没有现代密码学。
1977 年,美国麻省理工学院的 3 位教授提出了 RSA 密码算法 [7] ,标志着首个较完善、无明显弱点的公钥密码算法的诞生。这是密码学史上的重要标志性事件。此后,ElGamal、椭圆曲线密码及格密码等公钥密码相继被提出,现代密码学进入一个新的快速发展时期。
1978年,数据加密标准(DES)分组密码被 IBM 公司提出,DES 的出现使密码学得以从政府走向民间。DES 对于分析和掌握分组密码的基本理论与设计原理具有重要参考意义,其设计思路被后续的对称密码算法所参考。基于安全、可靠、速度快等特点,对称密码系统在今天仍然被广泛使用,政府、金融等领域都在使用对称密码算法。
此后,中国、美国、欧盟等国家都加大了对密码学的研究。对称密码学领域相继出现了 SM4、AES 等算法,非对称密码学领域相继出现了 SM2、ECC 等算法,研究人员也开始关注量子密码、格密码等,后量子密码等前沿密码技术逐步成为研究热点。