哑谜机Enigma的研究(一)—— [转载] ENIGMA的兴亡

本篇将讲述密码学中著名的Enigma机的兴亡史。


文章来源于《三思·科学》电子杂志第二期,200181日。《三思·科学》现已停刊。

本人在阅读本篇文章后对一些错别字和词不达意处进行了校正,并重新进行了排版。阅读时注意:ENIGMA机不区分大小写,本文中大小写仅为了便于区分出明文和密文。


转载请注明原文和本文出处:

原文:http://www.oursci.org/archive/magazine/200108/010809.htm
本文:http://blog.csdn.net/u013298939/article/details/60521661

关于哑谜机Enigma的原理研究和实现代码在后续中会给出。

编辑:201736日,KondeU。


本篇资料传送门:

本文PDF文档——ENIGMA的兴亡(重新排版).pdf

http://download.csdn.net/detail/u013298939/9773218

系列文档传送门:

哑谜机Enigma的研究(二)—— [原创] Enigma加密解密算法的原理

http://blog.csdn.net/u013298939/article/details/60769934
哑谜机Enigma的研究(三)—— [原创] Enigma加密解密算法的C++实现

http://blog.csdn.net/u013298939/article/details/60770030
哑谜机Enigma的研究(四)—— [原创] 自己动手DIY一个Enigma机

http://blog.csdn.net/u013298939/article/details/60770079


ENIGMA的兴亡

人类使用密码的历史,从今天已知的,最早可以一直追溯到古巴比伦人的泥板文字。古埃及人,古罗马人,古阿拉伯人……几乎世界历史上所有文明都使用过密码。军事和外交一直是密码应用的最重要的领域,国王、将军、外交官以及阴谋分子等,他们为了在通讯过程中保护自己信息不被外人所知,使用过形形色色的密码;而为了刺探于己不利的秘密,他们又绞尽脑汁地试图破译对手的密码。加密与解密一直是密码学这枚硬币互相对抗又互相促进的两面。在所有用于军事和外交的密码里,最著名的恐怕应属第二次世界大战中德国方面使用的ENIGMA机(读作恩尼格玛,意为)。

一、诞生

直到第一次世界大战结束为止,所有密码都是使用手工来编码的。直截了当地说,就是采用铅笔加纸的方式。在我国,邮电局电报编码和译码直到很晚(大概是上个世纪八十年代初)还在使用这种手工方法。手工编码的方式给使用密码的一方带来很多的不便。首先,这使得发送信息的效率极其低下。明文(就是没有经过加密的原始文本)必须由加密工作者一个一个字母地转换为密文。考虑到不能多次重复使用同一种明文到密文的转换方式(这很容易使敌人猜出转换方式进而破解掉),因此和民用的电报编码解码工作者不同,军方的加密人员并不能把转换方式牢记于心,因为更换转换方式的频率过快。转换通常是采用查表的方法,所查表又每日不同,所以编码解码速度极慢。同时,接收密码一方又要用同样的方式将密文转为明文。其次,这种效率低下的手工操作也使得许多复杂的保密性能更好的加密方法不能被实际应用,而简单的加密方法根本不能抵挡解密学的威力。

解密一方当时正值春风得意之时,几百年来被认为坚不可破的维吉耐尔(Vigenere)密码和它的变种也被破解。而无线电报的发明,使得截获密文易如反掌。无论是军事方面还是民用商业方面都需要一种可靠而又有效的方法来保证通讯的安全。
1918年,德国发明家亚瑟·谢尔比乌斯(Arthur Scherbius)和他的朋友理查德·里特(Richard Ritter)创办了谢尔比乌斯和里特公司。这是一家专营把新技术转化为应用方面的企业,很像现在的高新技术公司,利润不小,可是风险也很大。谢尔比乌斯负责研究和开发方面,紧追当时的新潮流。他曾在汉诺威和慕尼黑研究过电气应用,他的一个想法就是要用二十世纪的电气技术来取代那种过时的铅笔加纸的加密方法。

图 1 亚瑟·谢尔比乌斯

谢尔比乌斯发明的加密电子机械名叫ENIGMA,在以后的年代里,它将被证明是有史以来最为可靠的加密系统之一,而对这种可靠性的盲目乐观,又使它的使用者遭到了灭顶之灾。这是后话,暂且不提。

图 2 ENIGMA

ENIGMA看起来是一个装满了复杂而精致的元件的盒子。不过要是我们把它打开来,就可以看到它可以被分解成相当简单的几部分。下面的图是它的最基本部分的示意图,我们可以看见它的三个部分:键盘、转子和显示器。

图 3 ENIGMA基本部分的示意图

在上面ENIGMA的照片上,我们看见水平面板的下面部分就是键盘,一共有26个键,键盘排列接近我们现在使用的计算机键盘。为了使消息尽量地短和更难以破译,空格和标点符号都被省略。在示意图中我们只画了六个键。实物照片中,键盘上方就是显示器,它由标示了同样字母的26个小灯组成,当键盘上的某个键被按下时,和此字母被加密后的密文相对应的小灯就在显示器上亮起来。同样地,在示意图上我们只画了六个小灯。在显示器的上方是三个转子,它们的主要部分隐藏在面板之下,在示意图中我们暂时只画了一个转子。
键盘、转子和显示器由电线相连,转子本身也集成了6条线路(在实物中是26条),把键盘的信号对应到显示器不同的小灯上去。在示意图中我们可以看到,如果按下a键,那么灯B就会亮,这意味着a被加密成了B。同样地我们看到,b被加密成了A,c被加密成了D,d被加密成了F,e被加密成了E,f被加密成了C。于是如果我们在键盘上依次键入cafe(咖啡),显示器上就会依次显示DBCE。这是最简单的加密方法之一,把每一个字母都按一一对应的方法替换为另一个字母,这样的加密方式叫做“简单替换密码”。
简单替换密码在历史上很早就出现了。著名的“凯撒法”就是一种简单替换法,它把每个字母和它在字母表中后若干个位置中的那个字母相对应。比如说我们取后三个位置,那么字母的一一对应就如下表所示:
明码字母表:abcdefghijklmnopqrstuvwxyz
密码字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
于是我们就可以从明文得到密文:
明文:veni, vidi, vici
密文:YHAL, YLGL, YLFL
(veni, vidi, vici,“我来,我见,我征服”是儒勒·凯撒征服本都王法那西斯后向罗马元老院宣告的名言)
很明显,这种简单的方法只有26种可能性,不足以实际应用。一般上是规定一个比较随意的一一对应,比如:
明码字母表:abcdefghijklmnopqrstuvwxyz
密码字母表:JQKLZNDOWECPAHRBSMYITUGVXF
甚至可以自己定义一个密码字母图形而不采用拉丁字母。但是用这种方法所得到的密文还是相当容易被破解的。至迟在公元九世纪,阿拉伯的密码破译专家就已经娴熟地掌握了用统计字母出现频率的方法来击破简单替换密码。破解的原理很简单:在每种拼音文字语言中,每个字母出现的频率并不相同,比如说在英语中,e出现的次数就要大大高于其他字母。所以如果取得了足够多的密文,通过统计每个字母出现的频率,我们就可以猜出密码中的一个字母对应于明码中哪个字母(当然还要通过揣摩上下文等基本密码破译手段)。柯南·道尔在他著名的福尔摩斯探案集中《跳舞的人》里详细叙述了福尔摩斯使用频率统计法破译跳舞人形密码的过程。

所以如果转子的作用仅仅是把一个字母换成另一个字母,那就没有太大的意思了。但是大家可能已经猜出来了,所谓的“转子”,它会转动!这就是谢尔比乌斯关于ENIGMA的最重要的设计——当键盘上一个键被按下时,相应的密文在显示器上显示,然后转子的方向就自动地转动一个字母的位置(在示意图中就是转动1/6圈,而在实际中转动1/26圈)。下面的示意图表示了连续键入3个b的情况:
当第一次键入b时,信号通过转子中的连线,灯A亮起来,放开键后,转子转动一格,各字母所对应的密码就改变了;第二次键入b时,它所对应的字母就变成了C;同样地,第三次键入b时,灯E闪亮。

图 4连续键入3b的情况



图 5 照片左方是一个完整的转子,右方是转子的分解,我们可以看到安装在转子中的电线



图 6 二转子平面示意图
这里我们看到了ENIGMA加密的关键:这不是一种简单替换密码。同一个字母b在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,可以代表明文中的不同字母,频率分析法在这里就没有用武之地了。这种加密方式被称为“复式替换密码”。
但是我们看到,如果连续键入6个字母(实物中26个字母),转子就会整整转一圈,回到原始的方向上,这时编码就和最初重复了。而在加密过程中,重复的现象是很危险的,这可以使试图破译密码的人看见规律性的东西。于是谢尔比乌斯在机器上又加了一个转子。当第一个转子转动整整一圈以后,它上面有一个齿拨动第二个转子,使得它转动一个字母的位置。看图6示意图(为了简单起见,现在我们将它表示为平面形式)。
这里(a)图中我们假设第一个转子(左边的那个)已经整整转了一圈,按b键时显示器上D灯亮;当放开b键时第一个转子上的齿也带动第二个转子同时转动一格,于是(b)图中第二次键入b时,加密的字母为F;而再次放开键b时,就只有第一个转子转动了,于是(c)图中第三次键入b时,与b相对应的就是字母B。
我们看到用这样的方法,要6*6=36个(实物中为26*26=676个)字母后才会重复原来的编码。而事实上 ENIGMA 里有三个转子(二战后期德国海军用ENIGMA甚至有四个转子),不重复的方向个数达到26*26*26=17576个。
在此基础上谢尔比乌斯十分巧妙地在三个转子的一端加上了一个反射器,而把键盘和显示器中的相同字母用电线连在一起。反射器和转子一样,把某一个字母连在另一个字母上,但是它并不能自动转动。乍一看,这么一个固定的反射器好像没什么用处,它并不增加可以使用的编码数目,但是把它和解码联系起来就会看出这种设计的别具匠心了。见下图:
图 7 具有反射器的ENIGMA机线路结构
我们看见这里键盘和显示器中的相同字母由电线连在一起。事实上那是一个很巧妙的开关,不过我们并不需要知道它的具体结构的细节。我们只需要知道,当一个键被按下时,信号不是直接从键盘传到显示器(要是这样就没有加密效果了),而是首先通过三个转子连成的一条线路,然后经过反射器再回到三个转子,通过另一条线路再到达显示器上,比如说上图中b键被按下时,亮的是D灯。我们看看如果这时按的不是b键而是d键,那么信号恰好按照上面b键被按下时的相反方向通行,最后到达B灯。换句话说,在这种设计下,反射器虽然没有像转子那样增加可能的不重复的方向,但是它可以使译码的过程和编码的过程完全一样。
图 8 反射器
想象一下要用ENIGMA发送一条消息。发信人首先要调节三个转子的方向,使它们处于 17576个方向中的一个(事实上转子的初始方向就是密匙,这是收发双方必须预先约定好的),然后依次键入明文,并把闪亮的字母依次记下来,然后就可以把加密后的消息用比如电报的方式发送出去。当收信人收到电文后,使用一台相同的ENIGMA,按照原来的约定,把转子的方向调整到和发信人使用的相同的初始方向上,然后依次键入收到的密文,并把闪亮的字母依次记下来,就得到了明文。于是加密和解密的过程就是完全一样的——这都是反射器起的作用。稍微考虑一下,我们很容易就明白,反射器带来的一个副作用就是一个字母永远也不会被加密成它自己,因为反射器中一个字母总是被连接到另一个不同的字母。
于是转子的初始方向决定了整个密文的加密方式。如果通讯当中有敌人监听,他会收到完整的密文,但是由于不知道三个转子的初始方向,他就不得不一个个方向地试验来找到这个密匙。问题在于17576个初始方向这个数目并不是太大。如果试图破译密文的人把转子调整到某一方向,然后键入密文开始的一段,看看输出是否像是有意义的信息。如果不像,那就再试转子的下一个初始方向……如果试一个方向大约要一分钟,而他二十四小时日夜工作,那么在大约两星期里就可以找遍转子所有可能的初始方向。如果对手用许多台机器同时破译,那么所需要的时间就会大大缩短。因此当前这种保密程度是不太足够的。
当然谢尔比乌斯还可以再多加转子,但是我们看见每加一个转子初始方向的可能性只是乘以了26。尤其是,增加转子会增加ENIGMA的体积和成本。谢尔比乌斯希望他的加密机器是便于携带的(事实上它最终的尺寸是34cm*28cm*15cm),而不是一个具有十几个转子的庞然大物。首先他把三个转子做得可以拆卸下来互相交换,这样一来初始方向的可能性变成了原来的六倍。假 设三个转子的编号为 1、2、3,那么它们可以被放成123-132-213-231-312-321六种不同位置,当然现在收发消息的双方除了要预先约定转子自身的初始方向,还要约定好这六种排列中的使用一种。
图 9 安装在 ENIGMA 中的反射器和三个转子
下一步谢尔比乌斯在键盘和第一转子之间增加了一个连接板。这块连接板允许使用者用一根连线把某个字母和另一个字母连接起来,这样这个字母的信号在进入转子之前就会转变为另一个字母的信号。这种连线最多可以有六根(后期的ENIGMA具有更多的连线),这样就可以使6对字母的信号互换,其他没有插上连线的字母保持不变。在上面图2中ENIGMA的实物图里,我们看见这个连接板在键盘的下方。当然连接板上的连线状况也是收发信息的双方需要预先约定的。
图 10 ENIGMA机线路结构
在上面示意图中,当b键被按下时,灯C亮。于是转子自身的初始方向,转子之间的相互位置,以及连接板连线的状况就组成了所有可能的密匙,让我们来算一算一共到底有多少种。三个转子不同的方向组成了26*26*26=17576种不同可能性;三个转子间不同的相对位置为6种可能性;连接板上两两交换6对字母的可能性数目非常巨大,有100391791500种;于是一共有17576*6*100391791500,大约为10000000000000000,即一亿亿种可能性。只要约定好上面所说的密匙,收发双方利用ENIGMA就可以十分容易地进行加密和解密。但是如果不知道密匙,在这巨大的可能性面前一一尝试来试图找出密匙是完全没有可能的。我们看见连接板对可能性的增加贡献最大,那么为什么谢尔比乌斯要那么麻烦地设计转子之类的东西呢?原因在于连接板本身其实就是一个简单替换密码系统,在整个加密过程中,连接是固定的,所以单使用它是十分容易用频率分析法来破译的。转子系统虽然提供的可能性不多,但是在加密过程中它们不停地转动,使整个系统变成了复式替换系统,频率分析法对它再也无能为力,与此同时,连接板却使得可能性数目大大增加,使得暴力破译法(即一个一个尝试所有可能性的方法)望而却步。
1918年谢尔比乌斯申请了ENIGMA的专利。他以为既然自己的发明能够提供优秀的加密手段,又能拥有极高的加密解密效率,一定能很快就畅销起来。他给商业界提供了一种基本型 ENIGMA,又给外交人员提供一种豪华的装备有打印机的型号。但是他似乎搞错了。他的机器售价大约相当于现在的30000美元(如果订购一千台的话每台便宜4000美元)。这个价钱使得客户望而却步。虽然谢尔比乌斯向企业家们宣称,如果他们重要的商业秘密被竞争对手知道了的话,遭到的损失将比ENIGMA的价格高得多,但是企业家们还是觉得他们没有能力来购买ENIGMA。谢尔比乌斯的新发明并没有像他预料的那样带来多少回响。军队方面对他的发明也没有什么太多的注意。
谢尔比乌斯的失望是可想而知的。但是这方面他不是唯一的人。和他几乎同时在另外三个国家的三个发明家也都独立地想到了发明了使用转子的电气加密机的主意。1919年荷兰发明家亚历山大·科赫(Alexander Koch)注册了相似的专利,可是却没有能够使它商业化,1927年他只好卖掉了他的专利。在瑞典,阿维德·达姆(Arvid Damm)也获得了一个差不多的专利,但是直到1927年他去世时还是没有能找到市场。在美国,爱德华·赫本(Edward Hebern)发明了他的“无线狮身人面”,也对它充满希望,他用三十八万美元开了一个工厂,却只卖出价值一千两百美元的十来台机器。1926年赫本在加利福尼亚州被股东起诉,被判有罪。
可是谢尔比乌斯突然时来运转。英国政府发表了两份关于一次大战的文件使得德国军队开始对他的发明大感兴趣。其中一份是1923年出版的温斯顿·丘吉尔的著作《世界危机》,其中有一段提到了英国和俄国在军事方面的合作,指出俄国人曾经成功地破译了某些德军密码,而使用这些成果,英国的40局(英国政府负责破译密码的间谍机构)能够系统性地取得德军的加密情报。德国方面几乎是在十年之后才知道这一真相。第二份文件同样是在1923年由皇家海军发表的关于第一次世界大战的官方报告,其中讲述了在战时盟军方面截获(并且破译)德军通讯所带来的决定性的优势。这些文件构成了对德国情报部门的隐性指控,他们最终承认“由于无线电通讯被英方截获和破译,德国海军指挥部门就好像是把自己的牌明摊在桌子上和英国海军较量。”
为了避免再一次陷入这样的处境,德军对谢尔比乌斯的发明进行了可行性研究,最终得出结论:必须装备这种加密机器。从1925年开始,谢尔比乌斯的工厂开始系列化生产ENIGMA,次年德军开始使用这些机器。接着政府机关,比如说国营企业,铁路部门等也开始使用 ENIGMA。这些新型号的机器和原来已经卖出的一些商用型号不同,所以商用型机器的使用者就不知道政府和军用型的机器具体是如何运作的。
在接下来的十年中,德国军队大约装备了三万台ENIGMA。谢尔比乌斯的发明使德国具有了最可靠的加密系统。在第二次世界大战开始时,德军通讯的保密性在当时世界上无与伦比。似乎可以这样说,ENIGMA在纳粹德国二战初期的胜利中起到的作用是决定性的,但是我们也会看到,它在后来希特勒的灭亡中扮演了重要的角色。
但是谢尔比乌斯没有能够看见所有这一切。有一次在套马时,他被摔到了一面墙上,于1929年5月13日死于内脏损伤。

二、弱点

在一次大战其间,英国的情报机关非常严密地监控了德国方面的通讯,丘吉尔的书和英国海军部的报告中透露的消息只不过是一鳞半爪。事实上,将美国引入一次大战的齐末曼(Arthur Zimmermann,1916年起任德国外交部长)电报就是由著名的英国40局破译的。在此电报中德国密谋墨西哥对美国发动攻击,这使得美国最终决定对德宣战。但是英国人的障眼法用得如此之好,使得德国人一直以为是墨西哥方面泄漏了秘密。
战后英国仍旧保持着对德国通讯的监听,并保持着很高的破译率。但是从1926年开始,他们开始收到一些不知所云的信息——ENIGMA开始投入使用。德国方面使用的ENIGMA越多,40局破解不了的电文就越多。美国人和法国人碰到的情况也一样,他们对ENIGMA一筹莫展。德国从此拥有了世界上最为可靠的通讯保密系统。
一次大战的战胜国很快就放弃了破译这种新型密码的努力。也许是出于自信,在他们看来,在凡尔赛条约约束下的德国已经造成不了什么危害。由于看不到破译德国密码的必要性,盟国的密码分析专家懒散下来,干这一行的头脑似乎也变得越来越平庸。在科学的其他领域,我们说失败乃成功之母;而在密码分析领域,我们则应该说恐惧乃成功之母。普法战争造就了法国一代优秀的密码分析专家,而一次大战中英国能够破译德国的通讯密码,对失败的极大恐惧产生的动力无疑起了巨大的作用。历史又一次重演。因为在欧洲有一个国家对德国抱有这种极大的恐惧——这就是在一战灰烬中浴火重生的新独立的波兰。在她的西面,是对失去旧日领土耿耿于怀的德国,而在东面,则是要输出革命的苏维埃联盟。对于波兰来说,关于这两个强邻的情报是攸关生死存亡的大事,波兰的密码分析专家不可能像他们的英美法同事那样爱干不干——他们必须知道这两个大国都在想什么。在此情况下波兰设立了自己的破译机构——波军总参二局密码处(Biuro Szyfrow)。密码处的高效率在1919-1920年波苏战争中明显地体现出来,军事上屡尝败绩的波兰在密码分析方面却一枝独秀。在苏军兵临华沙城下的情况下,1920年一年他们破译了大约400条苏军信息。在对西面德国的通讯的监控方面,波兰人也保持了同样的高效率——直到1926年ENIGMA登场。
波兰人想方设法搞到了一台商用的ENIGMA机器,大致弄清楚了它的工作原理。但是军用型的转子内部布线和商用型的完全不同,没有这个情报,想要破译德军的电报可谓难如登天。波兰人使出了浑身的解数,甚至病急乱投医,请了个据说有天眼通功能的“大师”来遥感德国人机器里转子的线路图——当然和所有的“大师”一样,一遇上这种硬碰硬的事情,神乎其神的天眼通也不灵了。
这时事情有了转机。
汉斯-提罗·施密特(Hans-Thilo Schimdt)于1888年出生在柏林的一个中产阶级家庭里,一次大战时当过兵打过仗。根据凡尔赛条约,战败后的德国进行了裁军,施密特就在被裁之列。退了伍后他开了个小肥皂厂,心想下海从商赚点钱。结果战后的经济萧条和通货膨胀让他破了产。此时他不名一文,却还有一个家要养。
和他潦倒的处境相反,他的大哥鲁道夫(Rudolph)在战后春风得意。和汉斯-提罗一样都是一次大战的老兵,可鲁道夫没有被裁减,相反却一路高升。到了二十年代,他当上了德国通讯部门的头头,就是他正式命令在军队中使用ENIGMA。和大哥的成功比起来,汉斯-提罗自然觉得脸上无光。
可是破产后汉斯-提罗不得不放下自尊心来去见大哥,求他在政府部门替自己谋个职位。鲁道夫给他的二弟在密码处(Chiffrierstelle)找了个位置。这是专门负责德国密码通讯的机构ENIGMA的指挥中心,拥有大量绝密情报。汉斯-提罗把一家留在巴伐利亚,因为在那里生活费用相对较低,勉强可以度日。 就这样他一个人孤零零地搬到了柏林,拿着可怜的薪水,对大哥又羡又妒,对抛弃他的社会深恶痛绝。
图 11 汉斯-提罗·施密特
接下来的事情可想而知。如果把自己可以轻松搞到的绝密情报出卖给外国情报机构,一方面可以赚取不少自己紧缺的钱,另一方面可以以此报复这个抛弃了他的国家。1931年11月8日,施密特化名为艾斯克(Asche)和法国情报人员在比利时接头,在旅馆里他向法国情报人员提供了两份珍贵的有关ENIGMA操作和转子内部线路的资料,得到一万马克。靠这两份资料,盟国就完全可以复制出一台军用的ENIGMA机。
不过事情并不像想象的那么简单。要破译ENIGMA密码,靠这些情报还远远不够。德军的一份对ENIGMA的评估写道:“即使敌人获取了一台同样的机器,它仍旧能够保证其加密系统的保密性。”就算有了一台ENIGMA,如果不知道密钥(在本文的第一部分里我们知道所谓的密钥,就是转子自身的初始方向,转子之间的相互位置,以及连接板连线的状况)的话,想破译电文,就要尝试数以亿亿计的组合,这是不现实的。
“加密系统的保密性只应建立在对密钥的保密上,不应该取决于加密算法的保密。”这是密码学中的金科玉律。加密算法可以直接是某个抽象的数学算法,比如现在通用的DEA和RSA算法,也可以是实现某个算法的像ENIGMA这样的加密机械或专门用于加密的电子芯片等加密器件,还可以是经过编译的在计算机上可执行的加密程序,比如现在在互联网通信中被广泛使用的PGP(Pretty Good Privacy)。因为对加密算法的保密是困难的。对手可以用窃取、购买的方法来取得算法、加密器件或者程序。如果得到的是加密器件或者程序,可以对它们进行逆向工程而最终获得加密算法。如果只是密钥失密,那么失密的只是和此密钥有关的情报,日后通讯的保密性可以通过更换密钥来补救;但如果是加密算法失密,而整个系统的保密性又建立在算法的秘密性上,那么所有由此算法加密的信息就会全部暴露。更糟糕是,为了使以后的通讯保持秘密,必须完全更换加密算法,这意味着更新加密器械或更换程序。比起简单地更换密钥,这要耗费大量财富和管理资源(大规模更换加密器械和程序会使对手更有机会乘虚而入)。
如此明显的道理,却时常有人不愿遵守,把加密系统的保密性建立在对加密算法的保密上,为此吃够了苦头。最著名的例子莫过于DVD的加密算法(DVD Movie encryption scheme)。信息和密码专家通过对DVD驱动器解密芯片和解密软件的分析得到了它的加密和解密算法。以此为基础有人编写了一个破解DVD加密算法的程序DeCSS。虽然在2000年1月,美国法官刘易斯·卡普兰(Lewis Laplan)裁定在互联网上传播DeCSS为非法,但是这种行政的强制手段似乎毫不奏效。反对裁决的一方以保护言论自由的美国宪法第一修正案的来反驳,卡普兰不得不附加了“计算机源程序不属言论”的附加裁定。
但这个附加裁定似乎也没有什么太大的用处——虽然不能直接传播DeCSS的源程序,如果愿意的话,人们还是可以用“源程序的第一个字母是A,第二个字母是=”这类卡普兰法官绝不能归到“非言论”一类去的方法来描述。在
你可以找到十几种怪里怪气地“不违法”地传播DeCSS的方法,其中包括一首诗,一件印着源程序的T恤衫, 一段朗诵源程序的录音和三张显示着源程序的GIF图片——法官大人下令禁止的是源程序,不是它的图片,不是吗?
更有甚者,有人在网上公布了一个素数,如果把这个素数写成十六进制并记录成一个文件,我们就可以拿解能够解gzip格式的压缩软件(比如说WinZip)来将它解成DeCSS。如果卡普兰法官下令禁止这个素数的话,它很有可能成为有史以来第一个“非法”的素数。你可以在
看到这个素数。
在上面这个例子里我们甚至可以看到,在此时更换加密算法已经变得实际上不可能,因为DVD作为标准已经被固定下来,于是它的加密算法也就从此形同虚设。
正如前面所言,ENIGMA的设计使得搞到了它的秘密的法国人也一筹莫展。法国密码分析人员断定这种密码是不可破译的。他们甚至根本就懒得根据搞到的情报去复制一台ENIGMA。
在十年前法国和波兰签订过一个军事合作协议。波兰方面一直坚持要取得所有关于ENIGMA的情报。既然看来自己拿着也没什么用,法国人就把从施密特那里买来的情报交给了波兰人。和法国人不同,破译ENIGMA对波兰来说至关重要,就算死马也要当作活马医。现在他们总算能迈出最初的一步了。
在施密特提供的关于ENIGMA的情报中,不仅有关于ENIGMA构造和转子内部连线的描述,还有德国人使用ENIGMA进行编码的具体规定。每个月每台ENIGMA机的操作员都会收到一本当月的新密钥,上面有此月每天使用的密钥。比如说, 第一天的密钥可以是这个样子:
1.连接板的连接:A/L-P/R-T/D-B/W-K/F-O/Y
2.转子的顺序:2,3,1
3.转子的初始方向:Q-C-W
当操作员要发送某条消息时,他首先从密钥本中查到以上信息。然后按照上面的规定,首先用连线把连接板上的A字母和L字母,P字母和R字母连接起来;然后把2号转子放在ENIGMA的第一个转子位置上,把3号转子放在第二个位置上,把1号转子放在第三个位置上;最后,他调整转子的方向(从照片上可以看到每个转子的边上都刻着一圈字母用来显示转子所处的方向),使得三个转子上的字母Q、C和W分别朝上。在接收信息的另一方,操作员也进行同样的准备(他也有一本同样的密钥本),就可以进行收信解码的工作了。
【模拟ENIGMA的Java Applet。你要打开WEB浏览器的Java功能才能使用。这里各部件的位置和真正的ENIGMA机差不多,最上方为三个转子,方向由0到25的数字表示,其下为显示器,再往下为键盘,最后是连接板(你可以用鼠标把两个字母连起来)。在最下方你可以在九个备用转子里选三个装在ENIGMA上(这比当初德国人的选择要多,最开始他们仅有三个备用转子,后来增加到五个),也可以在那里选择转子的初始方向。
本程序由Russell Schwager编写,源码可在
http://hops.cs.jhu.edu/~russell/classes/enigma/enigma.html
取得】
调整好ENIGMA,现在操作员可以开始对明文加密了。但是我们看到每天只有一个密钥,如果这一天的几百封电报都以这个密钥加密发送的话,暗中截听信号的敌方就会取得大量的以同一密钥加密的信息,这对保密工作来说不是个好兆头。我们记得在简单替换密码的情况下,如果密码分析专家能得到大量的密文,就可以使用统计方法将其破解。
尽管不知道对ENIGMA是否可以采用类似的统计方法,德国人还是留了个心眼。他们决定在按当日密钥调整好ENIGMA机后并不直接加密要发送的明文。相反地,首先发送的是一个新的密钥。连接板的连线顺序和转子的顺序并不改变,和当日通用的密钥相同;相反地,转子的初始方向将被改变。操作员首先按照上面所说的方法按当日密钥调整好ENIGMA,然后随机地选择三个字母,比如说PGH。 他把PGH在键盘上连打两遍,加密为比如说KIVBJE(注意到两次 PGH 被加密为不同的形式,第一次KIV,第二次BJE,这正是ENIGMA的特点,它是一种复式替换密码)。然后他把KIVBJE记在电文的最前面。接着他重新调整三个转子的初始方向到PGH,然后才正式对明文加密。
用这种方法每一条电文都有属于自己的三个表示转子初始方向的密钥。把密钥输入两遍是为了防止偶然的发报或者接收错误,起着纠错的作用。收报一方在按当日密钥调整好ENIGMA 机后,先输入密文的头六个字母KIVBJE,解密得到PGHPGH,于是确认没有错误。然后把三个转子的初始方向调整到PGH,接着就可以正式解密其余的密文了。
如果不使用对每条电文都不同的密钥,那么每天很可能总共会有几千条电文也就是几百万个字母的消息以同一个密钥加密。而采用每条电文都有自己的密钥这个方法后,当日密钥所加密的就是很少的几万个字母,而且这些字母都是随机选取,和有意义的电文性质不同,不可能用统计方法破译。
乍一看来这种方法无懈可击。可是波兰人铁了心,必须在这厚厚的护甲上撕出一个口子来。在此以前,密码分析人员通常是语言天才,精通对语言方面特征的分析。但是既然ENIGMA是一种机械加密装置,波兰总参二局密码处就考虑到,是否一个具有科学头脑的人更适合于它的破译工作呢?
1929年1月,波兹南大学数学系主任兹德齐斯罗·克里格罗夫斯基(Zdzislaw Krygowski)教授开列了一张系里最优秀的数学家的名单,在这张名单上,有以后被称为密码研究“波兰三杰”的马里安·雷杰夫斯基(Marian Rejewski),杰尔兹·罗佐基(Jerzy  Rozycki)和亨里克·佐加尔斯基(Henryk Zygalski)。波兹南大学并非当时波兰最有名的大学,但是它地处波兰南部,那里直到1918年还是德国领土,所以所有这些数学家都能讲流利的德语。
图 12 马里安·雷杰夫斯基
在三位被密码局招聘的数学家中,雷杰夫斯基的表现最为出色。当年他是个架着一副近视眼镜,脸上略带羞色的二十三岁小伙子。他的在大学里学的专业是统计学,打算以后去干保险业行当,也许在此之前他从未想到会在密码分析方面大展身手。在经过短期的密码分析训练后,他把所有的精力都投入到破解ENIGMA的工作中去。
雷杰夫斯基深知“重复乃密码大敌”。在ENIGMA密码中,最明显的重复莫过于每条电文最开始的那六个字母——它由三个字母的密钥重复两次加密而成。德国人没有想到这里会是看似固若金汤的ENIGMA防线的弱点。
德方每封密文最开始的六个字母,是此信密钥的三个字母重复两遍,由当日密钥加密而成。比如说这封信的密钥是ULJ(这是开始加密明文时由操作员临时随机选取的),那么操作员首先用当日通用的密钥加密ULJULJ,得到六个字母的加密后序列,比如说PEFNWZ,然后再用ULJ来作为密钥加密正文,最后把PEFNWZ放在加密后的正文前,一起用电报发给收信方。雷杰夫斯基每天都会收到一大堆截获的德国电报,所以一天中可以得到许多这样的六个字母串,它们都由同一个当日密钥加密而成。比如说他收到四个电报,其中每封电报的开头的六个字母为
                     1 2 3 4 5 6
第一封电报:L O K R G M
第二封电报:M V T X Z E
第三封电报:J K T M P E
第四封电报:D V Y P Z X
对于每封电报来说,它的第一个字母和第四个字母都是由同一个字母加密而来,同样地第二和第五个字母以及第三和第六个字母也是分别由同一个字母加密而来。比如说在第一封电报中,字母L和R是由同一字母加密而来。这个字母之所以先被加密成L,然后又被加密成了 R,是因为在此期间转子向前转动了三个字母的位置。
从L和R是由同一个字母加密而来这点,雷杰夫斯基就有了判断转子的初始位置的一条线索。当转子处于这个初始位置时,字母L和R在某种意义下具有紧密的联系。每天截获的大量电文能够给出许多这样的紧密联系,从而使雷杰夫斯基最终能够判断出转子的初始位置。在上面的第二、三、四封电报中,我们看见M和X,J和M,D和P都有这种联系:
第一个字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第四个字母:------P---------M-RX----------------------------
如果雷杰夫斯基每天可以得到充分多的电报,他就可以把上面这个关系表补充完整:
第一个字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
第四个字母:FQHPLWOGBMVRXUYCZITNJEASDK
光凭这个对应表格,雷杰夫斯基还是没办法知道当天的通用密钥。可是他知道,这个表格是由当天的通用密钥决定的,而且只由它决定。如果密钥不同,那么这个表格也应该不同——那么,有没有一种办法可以从这个对应表来推断出当日的通用密钥呢?雷杰夫斯基对这样的表格进行了仔细观察。从字母A开始看,它被对应成F;而F在此表中又被对应成W,接下去它被对应成A,我们又回到了最先开始的字母,于是就有了一个循环的字母圈A→F→W→A。如果考虑所有的字母,雷杰夫斯基就能写出关于此对应表的所有的循环圈:
A→F→W→A                                     3个字母的循环圈
B→Q→Z→K→V→E→L→R→I→B   9个字母的循环圈
C→H→G→O→Y→D→P→C            7个字母的循环圈
J→M→X→S→T→N→U→J              7个字母的循环圈
这里我们只是考虑了第一和第四个字母形成的对应表。同样地对第二和第五、第三和第六个字母形成的对应表,我们也可以写出类似的字母循环圈。由于每天的密钥都不同,雷杰夫斯基得到的循环圈也各不相同。
雷杰夫斯基观察到,这些循环圈长短不一。这使他有了一个重要的灵感:
虽然这些循环圈是由当日密钥,也就是转子的位置,它们的初始方向以及连接板 上字母置换造
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值