古代密码学与信息安全
信息安全公益宣传,信息安全知识启蒙。
加微信群回复公众号:微信群;QQ群:16004488
加微信群或QQ群可免费索取:学习教程
教程列表见微信公众号底部菜单
二次元世界的小伙伴对“风林火山”这个词不会感到陌生,日本战国时期的一方诸侯武田信玄把“疾如风、徐如林、侵掠如火、不动如山”印在自己的军旗上,几百年后又通过影视剧和动漫作品变得广为人知。这句话实际上出自《孙子兵法·军争》中的名句“其疾如风、其徐如林、侵掠如火、不动如山”,意思也不难理解——一支理想的军队,就应该做到进攻时要像风和火一样迅疾,防守时要像树林和大山一样整齐和稳定。
▲其实后面没有出现的两句可能更加重要
不过,这段话后面还有两句——“难知如阴,动如雷震”,说的就不仅仅是战争上的事了,要做到“难知如阴”,除了临场战术意义上的隐蔽之外,对己方信息的保密是更为重要的环节。因为战争打的就是突然性,展开阵势打堂堂之阵,是成本最高的一种,如果能隐藏好自己的真实意图,打对方一个措手不及,就可以用小的代价换取大胜利。所以,在保密方面下点功夫,花点成本,是很划算的。
这个道理,自从有战争以来,就为天下的兵家所懂得——不懂的都被灭了,《孙子兵法·用间》中总结:“事莫密于间”、“间事未发而先闻者,间与所告者皆死”。道理不难懂,不过应该以怎样的具体措施来落地,那办法可就多啦。
▲“阴符”记载于古兵书《六韬》中相传为姜太公所发明
相传在中国周朝,就出现了“阴符”和“阴书”两种保密方法。所谓阴符,就是事先制作一些长度不同的竹片,然后约定好每个长度的竹片代表的内容,比如,三寸表示溃败,四寸表示将领阵亡,五寸表示请求增援,六寸表示坚守……一尺表示全歼敌军等等。这种“阴符”无文字,无图案,只有前方少数将领和后方指挥人员了解含义,即使传令兵被俘或叛变,敌人也搞不懂几张长短不一的竹片到底代表了什么。
▲竹简可拆,使阴书成为可能
阴符保密性肯定不错,不过能传达的信息也有限,要是战场有超出事先预料的情况,阴符也就表达不了。为了弥补这个缺点,又出现了“阴书”,即把信息以明文写在竹简或木简上,然后将竹简或木简随机分为三份,由三名传令兵各执一份分别送达。收件人收齐后,再把三份“阴书”拼合起来,完整内容就出现了。这种“阴书”能传递更为复杂的信息,即使某一信使被敌方抓住,敌方也得不到完整的情报。
“阴书”兼顾了保密性和灵活性,但也同时也是为了灵活性而降低了保密性,因为如果其中一份落入敌手,虽然信息不全,但敌人也可以猜到一二,总归是有隐患。到了宋代,为了避免这种情况,出现了升级版的阴符——字验。这种方法见于宋代军事类书《武经总要》,大致过程是这样的——
先收集军事中常用的40个短语,然后给每个短语分别编码,比如:1.请弓;2.请箭;3.请刀;4.请甲……35.战大捷;36.将士投降;37.将士叛;38.士卒病;39.都将病;40.战小胜。将领带兵出发前,后方指挥机关同这位将领约定用一首四十字的五言律诗作为密钥,并发给将领一本有40个短语编码顺序的密码本,编码顺序可变化,不同的编码顺序可形成若干不同的密码本。
如以《咏史》这首诗为密钥:“汉家青史上,计拙是和亲。社稷依明主,安危托妇人。岂能将玉貌,便拟静胡尘。地下千年骨,谁为辅佐臣?”假如需要补充箭矢,将领就从密码本中查出“请箭”的编码是“2”,诗中第2个字是“家”字,于是,将领就把“家”字写入一件无关机密的普通信件中,在“家”字盖上印章。后方在收到信件后,查出“家”字在诗中的顺序是第2个字,再对照密码本上的编码译出“请箭”的信息,然后就可以决定下一步的行动了。这种办法非常巧妙,由于信件无关机密,即使关信人叛变或被被俘,均不能从中解读出有用的信息,盖了印章的字更是会使人不明就里,保密的目的也就达到了。
南宋还出现了密写的先进技术。据《三朝北盟汇编》记载,公元1126年,开封被金军围困之时,宋钦宗“以矾书为诏”。因为“以矾书帛,入水方见”,只有把布帛浸入水中,隐藏其上的字迹才会显露出来,金人不知道此术,也就无从知道情报的内容了。除此之外,还有譬如将情报写于丝绸或纸张上,然后搓成圆球用蜡裹住藏在信使身上或将其吞入腹中传递,这种保密性传递方法一直沿用至清朝。
▲凯撒密码就是简单的移位,在当时是够用了
古代的欧洲文明中,也同样有保密技术出现。传说在古希腊时期就用过一种笨办法——把奴隶的头发剃光,在头上写字,头发长出来后再派出去传递秘密情报(奴隶:MD洗头都不行……),可谓最古老的“加密”了。公元前4世纪的伯罗奔尼撒战争期间,希腊人又用了在腰带上书写移位后的文字来加密传递情报的方法。古罗马时期发明了“恺撒密码”,就是把明文中的各个字母换成错开一定间隔,形成秘文传递。
到16世纪,西班牙、英、法、意等国家之间相互竞争剧烈,情报活动也就随之变得非常频繁,在其利用使馆进行情报传递的过程,各国使节就已普遍使用编制的密码书写信件来向国内报告情况,当时威尼斯公国驻英国使节米凯尔所用的密码,英国人绞尽脑汁也没能搞明白,直至3个多世纪后的1863年才被人破译。对于加密和破译的需求,甚至直接催生了一门新的学科——“密码学”。
第三任美国总统杰弗逊对密码学很有研究,于1795年发明了一种加密装置,被称为“杰弗逊圆盘”(Jefferson disk),或叫做“杰弗逊转轮加密器”(Jefferson wheel cipher)。这个装置有36片同样大小的木制转轮,套在一根铁杆上,每片转轮上的圆周边缘上刻有乱序的26个英文字母表。
进行秘密通信的双方必须各自拥有完全一样转轮加密器。当要把一段文字(不超过36字)秘密通知对方时,只需转动加密器上的各片转轮,使这段文字正好出现在同一行上,这时转轮上排列的其他25行都是无意义的乱码;此时发信人抄写其中任意一行的乱码,关交给信使传送(加密)。对方收到乱码信后,只需拿出自己保存的同样的装置,转动上面各片转轮,让它们的排列使得这段乱码正好出现在同一行上,然后他查看其他25行上的内容,其中必然有一行会显示出真正的信息(解密)。
杰弗逊加密器属于“多表替换”型加密,很难被破解,除非能得到加密装置。据说美国军队直到上世纪60年代仍然在使用。当然,这种加密器的缺点也是很明显的,即它每次只能传送简单的信息(字长不能超过转轮的片数),而且参与通信的各方不能太多。
▲这种密码机装备德国海军
使英国从1942年2月到12月都没能
解读德国潜艇的信号
当然,最为人所知的加密装置,当非二战时期德国的“恩尼格玛”密码机莫属。这种密码机最初并不是军用品,而是在20年代早期被用于传递商业信息(商场如战场)。恩尼格玛的原理并不复杂,主要由键盘,扰频器,显示屏三部分组成,键盘输入字母,扰频器为字母加密,显示屏显示字母(“显示屏”是由一系列用灯照亮的字母组成)。
▲恩尼格玛的构造图
最关键的是扰频器,也有三个主要部分,插线板-转轮-发射器。通过插线板可以讲字母对换,然后经过三个联接在一起的转轮,每输入一次,转轮往前进一步,则下一个文字转轮状态就已经变化了,最后是反射器,将输入文字变换为另一个文字返回。最初的恩尼格玛机通过在插线板中交换6对字母,再加上三个转轮,总共可以生成的密匙总量是10的16次方。也就是说如果每一秒钟尝试一个密匙,也需要3亿年时间才能全部尝试完,可以说恩尼格玛机实现了加密者的梦想。
▲图灵用来破译的机器
可见解密比加密难多了
不过,魔高一尺道高一丈,这个堪称完美的加密机最后由于情报泄露(构造被卖给了英国)、操作员的失误、使用步骤错误、机器或密码本被缴获等原因,再加上英国拥有伟大的数学家图灵,恩尼格玛最终还是被成功破译,这也成为战争史乃至科学史上的一段传奇。
除此以外,历史上还出现过各种加密的奇招,比如我们非常熟悉的美军“风语者”——以印第安那瓦霍族人的土语为基础编制密码,由于语言的罕见,可谓密上加密。其实美国在一战时间就使用过这种方法,1918年9月,在第二次索姆河战役中,美国第30步兵师将一组切诺基族士兵用于电文发送,开辟了美军将美洲土著语言用于秘密通讯的先例。美军第36步兵师也从实践中发现了印第安语的妙用,安排14名巧克陶族士兵接受电讯训练,帮助美军在法国默兹-阿贡战役中赢得了几场重要战斗。
▲监听到在正在用印第安语通话的美军
日军一脸懵逼
无独有偶,在抗日战争中,来自西南的滇军同样用过这种土法,全部使用白族士兵当通讯员,就算直接明语通话被日军监听到也听不懂,在八十年代的对越作战中,解放军干脆让温州籍战士充当通讯员,越军长年与中国对抗,能听懂西南方言、粤语和普通话,但依然在温州话面前败下阵来——保持我国境内语言的多样性还是很重要的,因为不知道什么时候,方言或少数民族语言就会成为自带加密属性的“战略资源”。
加密是为了保住秘密,如果加密强度不够,或者因为别的原因被破解,后果也就非常严重。甲午战争中,清政府使用的密码过于简单,被日本轻松破译,不光在战争中丧师失地,在谈判中也被对手牢牢控制。德军的恩尼格玛被破译后,许多U艇也就随之暴露了位置,被盟军反潜兵力一艘接一艘的送进了海底,这些教训不可谓不惨痛。
▲因为暴露位置而遭到追杀的潜艇
在我们今天的生活中,仍然大量充斥着各种密码,你的银行卡、手机、邮箱、社交账号……无不要使用密码来保证信息和财产安全,一旦泄露,这后果难以想象。当然,今天我们所使用的加密技术目前还是值得信任的,只要不使用过于简单的密码,并且确保不会外泄,通常也不会有什么问题。
其实,密码的存在,更多的是需要一层屏障,保护外来入侵,防止有心无心地窥探。愿你工作中也处处有安全防护!