恩尼格玛密码机


恩尼格玛密码机

文章插图
恩尼格玛密码机【恩尼格玛密码机】在密码学史中,恩尼格玛密码机(德语:Enigma,又译哑谜机,或“谜”式密码机)是一种用于加密与解密档案的密码机 。确切地说,恩尼格玛是对二战时期纳粹德国使用的一系列相似的转子机械加解密机器的统称,它包括了许多不同的型号,为密码学对称加密算法的流加密 。
基本介绍中文名:恩尼格玛密码机
外文名:Enigma
又译:哑谜机
属于:一种用于加密与解密档案的密码机
时间:1920年代
学科:密码学
加密原理键盘一共有26个键,键盘排列和广为使用的计算机键盘基本一样,只不过为了使通讯儘量地短和难以破译,空格、数字和标点符号都被取消,而只有字母键 。键盘上方就是显示器,这可不是意义上的萤幕显示器,只不过是标示了同样字母的26个小灯泡,当键盘上的某个键被按下时,和这个字母被加密后的密文字母所对应的小灯泡就亮了起来,就是这样一种近乎原始的“显示” 。在显示器的上方是三个直径6厘米的转子,它们的主要部分隐藏在面板下,转子才是“恩尼格玛”密码机最核心关键的部分 。如果转子的作用仅仅是把一个字母换成另一个字母,那就是密码学中所说的“简单替换密码”,而在公元九世纪,阿拉伯的密码破译专家就已经能够娴熟地运用统计字母出现频率的方法来破译简单替换密码,柯南·道尔在他着名的福尔摩斯探案《跳舞的小人》里就非常详细地叙述了福尔摩斯使用频率统计法破译跳舞人形密码(也就是简单替换密码)的过程 。——之所以叫“转子”,因为它会转!这就是关键!当按下键盘上的一个字母键,相应加密后的字母在显示器上通过灯泡闪亮来显示,而转子就自动地转动一个字母的位置 。举例来说,当第一次键入A,灯泡B亮,转子转动一格,各字母所对应的密码就改变了 。第二次再键入A时,它所对应的字母就可能变成了C;同样地,第三次键入A时,又可能是灯泡D亮了 。——这就是“恩尼格玛”难以被破译的关键所在,这不是一种简单替换密码 。同一个字母在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,又可以代表明文中的不同字母,字母频率分析法在这里丝毫无用武之地了 。这种加密方式在密码学上被称为“複式替换密码” 。
恩尼格玛密码机

文章插图
恩尼格玛密码机内部结构图但是如果连续键入26个字母,转子就会整整转一圈,回到原始的方向上,这时编码就和最初重複了 。而在加密过程中,重複的现象就很是最大的破绽,因为这可以使破译密码的人从中发现规律 。于是“恩尼格玛”又增加了一个转子,当第一个转子转动整整一圈以后,它上面有一个齿轮拨动第二个转子,使得它的方向转动一个字母的位置 。假设第一个转子已经整整转了一圈,按A键时显示器上D灯泡亮;当放开A键时第一个转子上的齿轮也带动第二个转子同时转动一格,于是第二次键入A时,加密的字母可能为E;再次放开键A时,就只有第一个转子转动了,于是第三次键入A时,与之相对应的就是字母就可能是F了 。因此只有在26x26=676个字母后才会重複原来的编码 。而事实上“恩尼格玛”有三个转子(二战后期德国海军使用的“恩尼格玛”甚至有四个转子!),那幺重複的机率就达到26x26x26=17576个字母之后 。在此基础上谢尔比乌斯十分巧妙地在三个转子的一端加上了一个反射器,把键盘和显示器中的相同字母用电线连在一起 。反射器和转子一样,把某一个字母连在另一个字母上,但是它并不转动 。乍一看这幺一个固定的反射器好像没什幺用处,它并不增加可以使用的编码数目,但是把它和解码联繫起来就会看出这种设计的别具匠心了 。当一个键被按下时,信号不是直接从键盘传到显示器,而是首先通过三个转子连成的一条线路,然后经过反射器再回到三个转子,通过另一条线路再到达显示器上,比如说上图中A键被按下时,亮的是D灯泡 。如果这时按的不是A键而是D键,那幺信号恰好按照上面A键被按下时的相反方向通行,最后到达A灯泡 。换句话说,在这种设计下,反射器虽然没有像转子那样增加不重複的方向,但是它可以使解码过程完全重现编码过程 。使用“恩尼格玛”通讯时,发信人首先要调节三个转子的方向(而这个转子的初始方向就是密匙,是收发双方必须预先约定好的),然后依次键入明文,并把显示器上灯泡闪亮的字母依次记下来,最后把记录下的闪亮字母按照顺序用正常的电报方式传送出去 。收信方收到电文后,只要也使用一台“恩尼格玛”,按照原来的约定,把转子的方向调整到和发信方相同的初始方向上,然后依次键入收到的密文,显示器上自动闪亮的字母就是明文了 。加密和解密的过程完全一样,这就是反射器的作用,同时反射器的一个副作用就是一个字母永远也不会被加密成它自己,因为反射器中一个字母总是被连线到另一个不同的字母 。“恩尼格玛”加密的关键就在于转子的初始方向 。当然如果敌人收到了完整的密文,还是可以通过不断试验转动转子方向来找到这个密匙,特别是如果破译者同时使用许多台机器同时进行这项工作,那幺所需要的时间就会大大缩短 。对付这样“暴力破译法”(即一个一个尝试所有可能性的方法),可以通过增加转子的数量来对付,因为只要每增加一个转子,就能使试验的数量乘上26倍!不过由于增加转子就会增加机器的体积和成本,而密码机又是需要能够便于携带的,而不是一个带有几十个甚至上百个转子的庞然大物 。那幺方法也很简单,“恩尼格玛”密码机的三个转子是可以拆卸下来并互相交换位置,这样一来初始方向的可能性一下就增加了六倍 。假设三个转子的编号为1、2、3,那幺它们可以被放成123-132-213-231-312-321这六种不同位置,当然收发密文的双方除了要约定转子自身的初始方向,还要约好这六种排列中的一种 。而除了转子方向和排列位置,“恩尼格玛”还有一道保障安全的关卡,在键盘和第一个转子之间有块连线板 。通过这块连线板可以用一根连线把某个字母和另一个字母连线起来,这样这个字母的信号在进入转子之前就会转变为另一个字母的信号 。这种连线最多可以有六根(后期的“恩尼格玛”甚至达到十根连线),这样就可以使6对字母的信号两两互换,其他没有插上连线的字母则保持不变 。——当然连线板上的连线状况也是收发双方预先约定好的 。就这样转子的初始方向、转子之间的相互位置以及连线板的连线状况就组成了“恩尼格玛”三道牢不可破的保密防线,其中连线板是一个简单替换密码系统,而不停转动的转子,虽然数量不多,但却是点睛之笔,使整个系统变成了複式替换系统 。连线板虽然只是简单替换却能使可能性数目大大增加,在转子的複式作用下进一步加强了保密性 。让我们来算一算经过这样处理,要想通过“暴力破解法”还原明文,需要试验多少种可能性:三个转子不同的方向组成了26x26x26=17576种可能性;三个转子间不同的相对位置为6种可能性;连线板上两两交换6对字母的可能性则是异常庞大,有100,391,791,500种;于是一共有17576x6x100,391,791,500,其结果大约为10,000,000,000,000,000!即一亿亿种可能性!这样庞大的可能性,换言之,即便能动员大量的人力物力,要想靠“暴力破解法”来逐一试验可能性,那几乎是不可能的 。而收发双方,则只要按照约定的转子方向、位置和连线板连线状况,就可以非常轻鬆简单地进行通讯了 。这就是“恩尼格玛”密码机的保密原理 。发明历史美国大片《U-571》,告诉人们“恩尼格玛”密码机是战争中,同盟国费尽心机想要获得的尖端秘密,是战胜德国海军潜艇的关键所在 。历史也确实如此,对于潜艇作战,尤其是德国海军的“狼群”战术来说,无线电通讯是潜艇在海上活动,获取信息通报情况的最重要的手段,而“恩尼格玛”密码机则是关乎整个无线电通讯安全的设备,其重要性可想而知 。自从无线电和摩尔斯电码问世后,军事通讯进入了一个崭新的时代,但是无线电通讯完全是一个开放的系统,在己方接受电文的同时,对方也可“一览无遗”,因此人类历史上伴随战争出现的密码,也就立即与无线电结合,出现了无线电密码 。直到第一次世界大战结束,所有无线电密码都是使用手工编码 。毫无疑问,手工编码效率极其低下,同时由于受到手工编码与解码效率的限制,使得许多複杂的保密性强的加密方法无法在实际中套用,而简单的加密方法又很容易被破译,因此在军事通讯领域,急需一种安全可靠,而又简便有效的方法 。1918年德国发明家亚瑟·谢尔比乌斯(Arthur Scherbius)和理察·里特(Richard Ritter)创办了一家新技术套用公司,曾经学习过电气套用的谢尔比乌斯,想利用现代化的电气技术,来取代手工编码加密方法,发明一种能够自动编码的机器 。谢尔比乌斯给自己所发明的电气编码机械取名“恩尼格玛”(ENIGMA,意为哑谜),乍看是个放满了複杂而精緻的元件的盒子,粗看和打字机有几分相似 。可以将其简单分为三个部分:键盘、转子和显示器 。操作步骤德军的各支部队使用一些不同的通讯线路,每条线路中的恩尼格玛密码机都有不同的设定 。为了使一条信息能够正确地被加密及解密,传送信息与接收信息的恩尼格玛密码机的设定必须相同;转子必须一模一样,而且它们的排列顺序,起始位置和接线板的连线也必须相同 。所有这些设定都需要在使用之前确定下来,并且会被记录在密码本中 。恩尼格玛密码机的设定包含了以下几个方面:转子:转子的结构及顺序 。起始位置:由操作员决定,传送每条讯息时都不一样 。字母环:字母环与转子线路的相对位置 。接线板:接线板的连线 。在末期版本中还包括了反射器的线路 。恩尼格玛密码机被设计成即使在转子的线路设定被敌人知道时仍然会很安全,儘管在实际使用中德军尽了全力来防止线路设定被泄露出去 。如果线路设定为未知,那幺最多需要尝试10种情况才可能推算出恩尼格玛密码机的密码;当线路和其它一些设定已知时,也最多需要尝试10次 。恩尼格玛密码机的使用者对它的保密性很有信心,因为敌人不可能使用穷举法来找出密码 。指示器恩尼格玛密码机的大部分设定都会在一段时间(一般为一天)以后被更换 。但是,转子的起始位置却是每传送一条信息就要更换的,因为如果一定数量的档案都按照相同的加密设定来加密的话,密码学家就会从中得到一些信息,并且有可能利用频率分析来破译这个密码 。为了防止这种事情发生,转子的起始位置在每次传送信息之前都会被改变 。这个方法被称作“指示器步骤” 。最早期的指示器步骤成为了波兰密码学家破译恩尼格玛密码机密码的突破口 。在这个步骤中,操作员会先按照密码本中的记录来设定机器,我们假设这时的转子位置为AOH,之后他会随意打三个字母,假设为EIN,接着为了保险起见,他会将这三个字母重新打一遍 。这六个字母会被转换成其它六个字母,这里假设为XHTLOA 。最后,操作员会将转子重新设定为EIN,即他一开始打的三个字母,之后输入密电原文 。在接收方将信息解密时,他会使用相反的步骤 。首先,他也会将转子按照密码本中的记录设定好,然后他就会打入密文中的头六个字母,即XHTLOA,如果传送方操作正确的话,显示板上就会显示EINEIN 。这时接收方就会将转子设定为EIN,之后他就可将密电打入而得到原文了 。这个步骤的保密性差主要有两个原因 。首先,操作员将转子的设定打到了密电中,这就使第三方能够得知转子设定 。第二,这个步骤中出现了重複输入,而这是一个严重的错误 。这个弱点使波兰密码局早在1932年就破译了二战之前的德军恩尼格玛系统 。但是从1940年开始,德国改变了这个步骤,它的安全性也就提高了 。这个步骤只被用于德国陆军和空军 。德国海军传送信息的步骤要複杂的多 。在被恩尼格玛密码机传送之前,信息会先被Kurzsignalheft密码本进行加密 。这个密码本将一个句子替换为了四个字母 。它转化的句子包括了补给、位置、港湾名称、国家、武器、天气、敌人位置、日期和时间等内容 。缩写与指导德国陆军的恩尼格玛密码机的键盘上只有26个字母,标点符号由字母组合来代替,X相当于空格 。在各军种的恩尼格玛密码机中,X都相当于句号 。有一些标点符号在不同军种的密码系统中被不同的字母组合代替 。陆军的系统使用ZZ来表示逗号,FRAGE或FRAQ则表示问号 。但是德国海军用来表示逗号及问号的则分别为Y和UD 。Acht(意为“八”)和Richtung(意为“方向”)中的字母组合CH则由Q来代替 。CENTA、MILLE和MYRIA分别表示两个、三个和四个零 。德国陆军和空军将每条信息都翻译成5个字母的代码 。使用四转子恩尼格玛密码机的德国海军则将信息翻译成4字母代码 。经常用到的词语代码与原词语的差别越大越好 。Minensuchboot(意为“扫雷艇”)这样的词语可以被表示为MINENSUCHBOOT、MINBOOT、MMMBOOT 或MMM354 。比较长的信息会被分成几个部分来传送 。弱点在第一次世界大战期间,英国的情报机关非常严密地监控了德国方面的通讯,邱吉尔的书和英国海军部的报告中透露的讯息只不过是一鳞半爪 。事实上,将美国引入一次大战的齐末曼(Arthur Zimmermann,1916年起任德国外交部长)电报就是由着名的英国40局破译的 。在此电报中德国密谋墨西哥对美国发动攻击,这使得美国最终决定对德宣战 。但是英国人的障眼法用得如此之好,使得德国人一直以为是墨西哥方面泄漏了秘密 。战后英国仍旧保持着对德国通讯的监听,并保持着很高的破译率 。但是从1926年开始,他们开始收到一些不知所云的信息——ENIGMA开始投入使用 。德国方面使用的ENIGMA越多,40局破解不了的电文就越多 。美国人和法国人碰到的情况也一样,他们对ENIGMA一筹莫展 。德国从此拥有了世界上最为可靠的通讯保密系统 。一次大战的战胜国很快就放弃了破译这种新型密码的努力 。也许是出于自信,在他们看来,在凡尔赛条约约束下的德国已经造成不了什幺危害 。由于看不到破译德国密码的必要性,盟国的密码分析专家懒散下来,干这一行的头脑似乎也变得越来越平庸 。在科学的其他领域,我们说失败乃成功之母;而在密码分析领域,我们则应该说恐惧乃成功之母 。普法战争造就了法国一代优秀的密码分析专家,而一次大战中英国能够破译德国的通讯密码,对失败的极大恐惧产生的动力无疑起了巨大的作用 。历史又一次重演 。因为在欧洲有一个国家对德国抱有这种极大的恐惧——这就是在一战灰烬中浴火重生的新独立的波兰 。在她的西面,是对失去旧日领土耿耿于怀的德国,而在东面,则是要输出革命的苏维埃联盟 。对于波兰来说,关于这两个强邻的情报是有关生死存亡的大事,波兰的密码分析专家不可能象他们的英美法同事那样爱乾不乾——他们必须知道这两个大国都在想什幺 。在此情况下波兰设立了自己的破译机构,波军总参二局密码处(Biuro Szyfrow) 。密码处的高效率在1919-1920年波苏战争中明显地体现出来,军事上屡尝败绩的波兰在密码分析方面却一枝独秀 。在苏军兵临华沙城下的情况下,1920年一年他们破译了大约400条苏军信息 。在对西面德国的通讯的监控方面,波兰人也保持了同样的高效率——直到1926年ENIGMA登场 。波兰人想方设法搞到了一台商用的ENIGMA机器,大致弄清楚了它的工作原理 。但是军用型的转子内部布线和商用型的完全不同,没有这个情报,想要破译德军的电报可谓难如登天 。波兰人使出了浑身的解数,甚至病急乱投医,请了个据说有天眼通功能的“大师”来遥感德国人机器里转子的线路图——当然和所有的“大师”一样,一遇上这种硬碰硬的事情,神乎其神的天眼通也不灵了 。这时事情有了转机 。汉斯-提罗·施密特(Hans-Thilo Schimdt)于1888年出生在柏林的一个中产阶级家庭里,一次大战时当过兵打过仗 。根据凡尔赛条约,战败后的德国进行了裁军,施密特就在被裁之列 。退了伍后他开了个小肥皂厂,心想下海从商赚点钱 。结果战后的经济萧条和通货膨胀让他破了产 。此时他不名一文,却还有一个家要养 。