从《暗算》中还原真实的密码技术发展史近期受《通信保密与信息安全》课的影响,大家都在找寻涉及密码题材的影视作品进行赏析,相关题材的作品有很多,《风语者》、《达芬奇密码》、《天使与魔鬼》、《风声》、《潜伏》等等这些都是很成功的影视作品,故事的精彩,情节的跌宕和一些知名艺人的细致演绎是它们成功的关键,密码在其中或是一个道具,或是一个噱头,并没有深层次的触及。
相对来讲05 年火爆各大电视台的谍战大戏《暗算》是对这一题材触及的比较深的。
《暗算》分三个部分,分别是——第一部《听风》、第二部《看风》、第三部《捕风》:《听风》,即无线电侦听者;这是一群“靠耳朵打江山”的人,他们的耳朵可以听到天外之音,无声之音,秘密之音。
《看风》,即密码破译的人;这是一群“善于神机妙算”的人,他们的慧眼可以识破天机,释读天书,看阅无字之书。
《捕风》,即我党地下工作者;在国民党大肆实施白色恐怖时期,他们是牺牲者,更是战斗者,他们乔装打扮,深入虎穴,迎风而战,为缔造共和国立下了不朽的丰功伟业。
从电视剧中的很多细节刻画可以看出,作者麦家写作此书前对保密部门运作方式和秘密战线的斗争进行了深入了解,因此很多细节才会显得那么真实。
这是一部信息量很大的电视剧,人物刻画、故事主线上都不同于以往那些“高大全”的主旋律影视剧,显得真实、感人,有血有肉。
大多数人对此举的评价都非常正面,也有一些人从专业角度指出了电视剧的一些瑕疵。
其实,不论是原著作者还是导演,对于剧中涉及的很多专业问题也只能是一知半解,因为毕竟剧作本身不是密码学知识的科普讲座,剧中是情有可原些涉及密码学专业方面的硬伤也的。
提起密码技术,人们常常和隐写墨水、微缩胶片、纽扣照相机、袖珍发报机、钢笔手枪之类谍报装备、技术相联系。
事实上密码技术源远流长,和人类历史的发展密不可分。
只要人类社会还存在斗争,密码技术就永远不会消亡。
美国著名密码学家Bruce Schneier 在《应用密码学》开篇即写道:“现代密码学家通常也是理论数学家。
”的确,片中对于数学家和密码学关系的刻画也印证了这一说法,并且指出“密码破译领域埋葬的数学天才比任何其他领域都多”。
没有坚实的数学功底是干不了这一行的。
有人千方百计不想让人知道他跟人说了些什么,就有人偏想知道。
在这一行中,密码编码和密码破译永远针锋相对。
而就在这针锋相对中,诞生了现代的数字计算机。
就如剧中所说,计算机的老祖宗冯- 诺伊曼不仅是一位杰出的数学家,更是一位老道的密码学家。
20 世纪20 年代,人们发明了各种机械设备来自动处理加解密,密码机就于此时出现。
因为大多数密码机使用连线接通各个机械转轮,实现密码代换,所以也称之为“转轮机时代”。
转轮机设计思想对后世的现代密码学也产生了深远影响。
在著名的DES 密码中,转轮机时代的影子依旧清晰可辨。
德国的Enigma 转轮机是二战前的古典密码学时代的巅峰之作,但是远非如《看风》中所说的“世界上第一次将密码做成机械”。
这句台词凸显了原著作者和导演对此领域的懵懂。
实际上,Enigma 机只不过是此前出现的林林总总各式密码机中的佼佼者而已,却不能说是唯一的。
《看风》的台词虽然不够严谨,但此前数这段真实的历史不可抹杀。
通常人们认为一套密码的机密性全靠密码算法的保密,也就是保住密码机就万事大吉,丢掉密码机就全部完蛋了。
在古典密码学时代有可能确实如此,但是这种只具有历史意义的“受限制密码”的缺陷,瞎子都看得出来:谁也不能保证密码机万无一失、绝对不可能落入敌方或者第三方手里。
如果将一部密码的安全性整个建筑在算法保密性基础上,无异于自取灭亡!因此,早在19 世纪,荷兰人A.Kerckhoffs 就提出了一个在密码学界被公认为基础的假设,也就是著名的“ Kerckhoffs 假设”:一部密码的安全性全部依赖于密钥。
信息论鼻祖香农的格言则是:密码系统必须保证安全,即使机器设备落入敌手。
两人的意思是一致的。
这可以用一个比方来说明,如果将一部密码比喻成一个保险柜的话,好的密码应该做到,即使大盗们抓来设计保险箱的工程师,并且拿到保险箱图纸,唯独缺少关键的保险箱开锁口令,照样干瞪眼!既然如此,那密码还有什么破头?我们说,Kerckhoffs 假设只是一个理论上的完美假设,或者说是一个标杆。
破解设计良好的密码系统确实非常困难,问题是世上糟糕的密码系统比好的多得多,不论它的级别有多高。
密码设计和密码分析是一种斗智的过程,而世上的蠢材也远比天才多得多。
另一方面,随着技术的进步,今天看来还很完美的一部密码,明天或许就漏洞百出。
破译一部密码,如同进入一个迷宫,探索一个黑洞。
密钥处于一部密码的核心地位,并非象《看风》里借用陈二湖的口所说的那样,密钥只是插曲和枝节。
好的密码机通常都包括密钥生成器,密钥生成算法的好坏则直接影响着密码系统的安全性。
任何懂一点密码破译的人都知道,所有的破译工作针对的并非相对容易获得的密码系统本身,而是针对最核心的密钥。
认为破译密码是针对密码系统,是一种曲解。
破译是要找出一部密码的数学结构中蕴含的缺陷,终极目标则是密钥,或者在不能分解出密钥的情况下,至少找出明文和密文之间的函数关系。
大家都知道德国的“谜”密被美国人破解了,而破解过程却充满了艰辛,足够写成一本厚厚的惊险小说,里面涉及到德国人、波兰人、法国人和英国人,盖世太保和地下抵抗军的猫鼠游戏。
事件以波兰两位天才数学家和德国反纳粹人士的合作为开始,他们利用偷带出来的情报和数学工具成功复制出了一台Enigma 模拟机,并在波兰灭国之前成功携带它逃离。
到达英国后,他们纠正了约翰牛从语义学符号学入手的错误做法,并继续研究新型Enigma 机的破译方法。
随后,英国人从俘获的德国潜艇上缴获了一台密码机。
但是,单单一台密码机没用,如果不把轮齿对到合适的位置,那它就只是一个玩具,而密钥所起的作用就是将轮齿对到合适的位置。
没有密钥,光靠缴获的一台密码机没用。
在“ Kerckhoffs 假设”前提下,破译密码所作的工作就是分析一部密码的数学结构,从密文和明文中倒推回去,希望能 用数学方法推算出密钥。
有了密钥,问题就迎刃而解了。
今后的任何密报都不再是一堆乱码。
所以,接下来的工作 就是对密码机进境拆解、分析、演算、仿造,再用仿造的 密码机做实验,比如输入各种可能的明文和密钥,获取输 出的密文。
用这些测试用的明文、密文和密钥进行进 的演算和推导,需要继续做实验的话就再来第二轮,必要 时还得通过特工获取密钥的关键线索。
只要密码机不换 (也就是一部密码不进行更换),掌握了其数学结构的话, 即使对方更换密钥,过一段时间照样可以推算出新密钥来。
这种大规模演算和仿造在《看风》的情节里也有反映。
在密码系统安全性方面,日本是一个比较失败的例子。
日本在二战时先后使用的绿密、红密和紫密等密码先后为 中、美、苏、德所破译。
从破译所需要的已知条件来看,《看风》向我们展示 的是最困难的“唯密文攻击”,也就是破译者所能获得的 仅仅是密文,这种情况对于破译者是极其严酷的考验。
对 于一部设计良好的密码,“唯密文攻击”难如登天! 对于 破译者来说,该部密码的内部结构如果是已知条件,当然 对破译出密钥是一个极大的帮助。
如果情况并非如此,则 能部分得到密文所对应的明文也是好的。
当然,在很多情 况下,这只能靠猜。
正是这个原因, 701 从军方等部门所能 获得的国民党军政人员名单这些参考资料才具有巨大的价 值。
有时,密码使用者的误用对破译也有很大帮助。
典型 的误用就是:二战时,罗斯福的外交官然出于维护自己声望考虑一直坚持使用外交密本,但是总 是以典型的“ For Murphy ” f It 步 Robert Murphy 虽或者“ From Murphy ”开头,这正好帮了德国外交部下属的密码分析小组大忙。
当年参加破译工作的一位德国女破译家说,她在马尔堡逗留期间,曾见Robert Murphy 驾车经过:“我想上前截住他并握手——他为我们做了这么多工作。
”而德国在二战中将谁也不敢省略的“ heihitler ”译成诸如1234135426 之类,并包含在每一份密报中,同样为英国人的破译提供了极大便利。
古典密码学并没有随着计算机的使用而退出历史舞台。
1960 年代,北约一直使用美国研制的转轮密码机KL-7 和KW-7 进行多国通信。
它们是最后一批生产的转轮机之一。
与此同时,随着计算机技术的发展,现代密码学也蓬勃兴起,并得到广泛应用。
70 年代以前的密码分为两种:分组密码和序列密码(也称为“流密码”),一般军用密码以后者为主,原因很简单:序列密码每次加密一个字符,速度快,特征很不明显。
它的基本结构是:用一个随机密钥种子启动一套复杂的机构,产生一个输出的伪随机密钥流序列,然后再用这个密钥流序列去加密明文,产生密文。
这里最关键的密钥就是随机种子,而密码机的核心作用就是通过种子产生密钥流序列。
这种谍报员用的序列密码除了袖珍密码机之外只需要一个很简短的随机密钥种子,特工们并不需要傻瓜一样将老土老土的密码本随时带在身上,让对方抓个现行,只需要通过电台收听到诸如“今日菜价:青菜3 块5,黄豆5 毛”之类广播就够了。
从纯理论角度来说,世界上最安全的密码就是“一次一密乱码本”系统。
它并非是指某部密码,而是指这样一类东东,它的密钥和明文一样长,加密多长的明文,就使用多长的密钥。
这种东东压根就没有什么算法或者数学结构,所以数学上完全不可解。
它也不需要什么密码机,只要一本小小的密码本就可以了。
至于这本密码本,可能是保密性极高的袖珍密电本(可能采用化学隐写方法保密),也可能采用公开发行的书籍的某一页开始的若干段落或者字、词。
就是在科技发达的今天,“一次一密乱码本”系统依然没有退出历史舞台,而被广泛运用于谍报界。
原因很简单:它是数学上不可破的。
这类东东一点也不违反“ Kerckhoffs 假设”。
破解它的唯一办法就是获得密码本,也就是直接获得密钥。
至于如何获得密钥,那是间谍特工们的事,数学家可以回家睡觉了。
“一次一密乱码本”虽然从理论上难以破译,但是它带来的问题更多,比如密钥供应问题、无法防范通信失步等。
同样,它也存在误用问题,比如所产生的乱码的随机性可能很差。
有报道称,德国外交部安全条例规定了“一次性密钥本不得备份”原则,但密钥本世纪被复制了九份,并分发到了五个不同的驻外使馆。
有人曾经破译了苏联最高级别的密码系统,原因说来简单到了荒唐的地步:遇到了偶尔一次相同的一次性密钥本重新发布。
破译“一次一密乱码本”虽然不需要高深的数学知识,但是我们说好的破译家不仅仅是数学家,同样也是猜谜高手,他应该具有宽广的知识面。
这一点很重要。
抗战时期,轰炸重庆的日军得益于先前派出的气象间谍,他每次向日军大本营报告重庆天气。
国民党请来的美国破译专家亚德利通过分析截收到的密报内容,首先肯定密报的某些内容和当地天气相关,这属于一份气象情报,然后再将密报内容和天气、发报时间比对,猜测并排列出部分密文可能对应的明文,从而推断出密码本可能是某本英文书籍,后来国民党特工人员顺藤摸瓜,果然从嫌犯家中找到了这本书。