码书:编码与解码的战争
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

密码机械的发展——从密码盘到“奇谜”

最早的密码机械是密码盘,由15世纪时的意大利建筑师里昂·阿尔伯蒂(Leon Alberti)所发明,他同时也是多套字母密码法的奠基人之一。他在两个不一样大小的铜盘边缘刻上字母,把小圆盘放在大圆盘上,用一根针固定住,并当作轴。他所设计出来的东西,就像图31的密码盘。这两个圆盘能个别转动,两套字母之间也就会有多种对应位置,可以据以加密信息。这是一种简易的恺撒挪移式密码法。例如,要用挪移一位的恺撒密码法加密信息时,就把外环的A对齐内环的B,外环是明文字母集,内环则代表密码字母集。加密时,到外环寻找信息的明文字母,写下它在内环的对应字母,如此即可将信息改编成密码文。同理,要用挪移五位的恺撒密码法传送信息时,只要转动圆盘,让外环的A对齐内环的F就成了。

密码盘虽是非常基本的装置,却真能简化加密过程,沿用了5个世纪之久。图31所示的版本,是美国人在内战期间所使用的。图32所示的密码表盘(Code-o-Graph),是一出美国早期的广播剧“午夜船长”(Captain Midnight)的同名英雄所使用的密码盘。听众写信给节目赞助公司阿华田(Ovaltine),并附上一个罐子标签,就可得到一个密码表盘。有时候,这个节目会以午夜船长所留下的秘密信息结束,忠实听众就可以用这个密码表盘解译这则信息午夜船长和小孤儿安妮常在节目尾声给小孩听众一些秘密信息,可用密码表盘或是“小孤儿安妮解码环”(Little Orphan Annie Decoder Ring)解译。这些信息通常是“多喝一些阿华田”或“下周继续收听”之类的。

图31:使用于美国内战的美国联邦密码盘。

图32:午夜船长的密码表盘;明文字母(外环)会被改编成数字(内环),不是字母。

密码盘可视为“编码器”(scrambler),把每一个明文字母改编成其他符号。这里所介绍的使用方法是比较直接的方式,所加密出来的密码也相当容易破解,然而密码盘还有更复杂的使用方法。它的发明人阿尔伯蒂即建议,在加密同一则信息时,可一再更改密码盘的设定,也就会产生一个多套字母集的密码,不是单套字母集密码。例如,假使阿尔伯蒂用他的密码盘,加上LEON这个钥匙单词,来加密goodbye这个单词,他就会根据钥匙单词的第一个字母来设定他的密码盘,把外环的A移来对齐内环的L,再去外环盘找这则信息的第一个字母g,看到它在内环的对应字母是R,而用R来取代g。要加密信息的第二个字母时,根据钥匙单词的第二个字母重新设定密码盘,把外环的A移来对齐内环的E,再去外环盘找出O,随之记下它在内环的对应字母——S。接下来根据钥匙单词字母O、然后N、然后又回到L……,一再更改密码盘的设定来加密这则信息。这样,他就等于用了维吉尼亚密码法,以他自己的名字当钥匙单词,加密了这则信息。密码盘可以提升加密的速度,而且相较于维吉尼亚方格,可以降低发生错误的概率。

这一种密码盘用法的重要特性是,在加密过程中,密码盘不断在更改它的编码模式。尽管这一层额外的复杂性会使加密出来的结果较难破解,但仍不是无法破解的。因为这不过是机械版的维吉尼亚密码法,而维吉尼亚密码法已被巴贝奇和卡西斯基破解了。但是,500年后,阿尔伯蒂的密码盘以更复杂的模式重生,引领出新一代更厉害、更难破解的密码法。

1918年,德国发明家亚图·雪毕伍斯(Arthur Scherbius)和他的密友里赫·里特(Richard Ritter)一起成立了雪毕伍斯与里特公司,一家从涡轮机到保温枕等各种新奇物品都有所涉猎的工程公司。雪毕伍斯负责研究和开发,当然也就不断在寻找新机会。他最钟爱的计划之一是,撤换第一次世界大战所使用的密码应用系统,以应用20世纪技术的加密方法来取代使用纸笔的密码法。曾在汉诺威与慕尼黑攻读电机工程的雪毕伍斯研发出一部密码机,相当于阿尔伯蒂密码盘的电机版本,称为“奇谜”(Enigma)机。雪毕伍斯的发明变成有史以来最可怕的加密系统。

雪毕伍斯的“奇谜”机是由许多独创的零件所组成,是一部错综复杂、难以对付的密码机器。不过,我们若拆解这部机器,再重新一步一步组装它,就很容易明了它的基本原理了。雪毕伍斯这项发明的基本结构是三个以电线相连接的单元:一个是输入明文字母的键盘,一个是把明文字母改编成密码字母的编码器,另一个则是含有许多密码字母显示灯的显示板。图33是这台机器的结构示意图,为了简化,只标出6个字母。进行加密时,通讯员就在键盘上按下信息的明文字母,键盘就会送出一个电流脉冲,穿过编码器,从另一端出来,然后在灯板上点亮相对应的密码字母。

奇谜的编码器是一个布满电线的橡胶盘,它是整台机器的核心。电线从键盘进入编码器的六个节点,在编码器内曲曲折折绕了许多弯后,才从另一端的6个节点冒出来。明文字母的编码结果全取决于编码器内部的配线。例如,图33的配线会有如下编码结果:

 

输入a会点亮字母B,亦即a改编成B。

输入b会点亮字母A,亦即b改编成A。

输入c会点亮字母D,亦即c改编成D。

输入d会点亮字母F,亦即d改编成F。

输入e会点亮字母E,亦即e改编成E。

输入f会点亮字母C,亦即f改编成C。

 

所以cafe这个字会被加密成DBCE。基本上,编码器是以这样的设计来定义密码字母集,好让机器执行简易的单套字母替代式密码法。

然而,雪毕伍斯的巧思是:每加密好一个字母,编码盘就自动转1/6圈(使用完整的26个字母时,则是转1/26圈)。图34(a)所显示的配置跟图33一样,输入字母b同样会点亮字母A。可是这次输入字母并点亮灯板上的字母后,编码器会立即转动1/6圈,转到图34(b)所示的位置。现在,单击字母b,被点亮的字母不再是A,而是C。随后,编码器立即又转了1/6圈,转到图34(c)所示的位置。这次输入b会点亮E。若连续输入字母b6次,就会产生ACEBDC的密码文。换句话说,每做完一次加密动作,就会改变一次密码字母集,所以字母b的编码结果一直在变。编码器就以这样的转动设计定义出6套密码字母集,这台机器也就能执行多套字母替代式密码法了。

图33:简化的“奇谜”机版本只有6个字母的字母集。这部机器最重要的单元就是编码器。在键盘上单击b,就会有一道电流流进编码器,顺着内部的配线走出来,点亮A灯。简而言之,b会改编成A。右边的方格列出这6个字母的编码情形。

图34:每输入、加密好一个字母,编码器就会转动一位,每一个字母的编码路径也就跟着改变。在(a)图,编码器把b改编成A;在(b)图,新的编码器方位则使b被改编为C。在(c)图,转写器又移动一位后,就把b改编成E。再继续加密4个字母,而再转动4位后,编码器就又会回到原来的方位。

编码器的转动是雪毕伍斯最重要的设计特点。然而,这样的机器有一个明显的弱点。输入6次b,就会使编码器转回原始位置,若一再输入b,就会重复编码模式了。一般而言,编码者都希望避免出现重复模式,否则密码文会有规则性和结构,这是脆弱密码的症状。再加入一片编码盘,就可减轻这个问题。

图35是一台有两个编码器的密码机结构图。编码器和内部配线的立体图太难画,因此图35只显示平面图。每加密一个字母,第一个编码器就会转动一位,或是以平面图解来说,每一条配线都往下移一位。相反地,第二个编码器通常都静止不动,只有在第一个编码器转满一圈后,它才会转动。第一个编码器装了一根凸齿,这根凸齿到达某一定点时,才会推动第二个编码器,让它移动一位。

图35(a)的第一个编码器正处在将要推动第二个编码器的位置。输入、加密一个字母后,这套机械装置就会变动成图35(b)所示的配置,亦即,第一个编码器移动了一位,而第二个编码器也被推动了一位。再输入、加密另一个字母,会使第一个编码器又移动一位,如图35(c)所示,这一次第二个编码器却保持不动。直到第一个编码器再执行五次加密动作而又绕了一整圈后,第二个编码器才会再动一次。这套设置就像汽车的里程计——代表个位数里程的转轴转得相当快,当它转完一圈到达“9”的时候,就会推动代表十位数里程的转轴移动一位。

图35:加上第二个编码器以后,只有在加密过36个字母、两个编码器都转回原点时,才会重复出现加密模式。为了简化图解,只以平面图呈现这些编码器;因此,配线转动一位时,这里呈现出来的是往下移动一位。电线似乎走离编码器的上方或下方时,在同一个编码器的上方或下方沿着对应的电线走,就可找出它的路径了。在(a)图,b被改编成D。加密好后,第一个编码器转动一位,并且轻推第二个编码器转一位——只有第一个转盘转完一圈时,才会如此。转动后所产生的新配置显示在(b)图里;在这儿,b会被改编为F。加密好后,第一个编码器又移动一位,但这次,第二个编码器保持不动了。新的配置显示在(c)图里;在此,b会改编为B。

增加一个编码器的优点是:直到第二个编码器也转回原点时,亦即第一个编码器转完6圈,执行了6×6次加密动作,也就是总共加密了36个字母后,加密模式才会开始重复。换句话说,这台机器一共有36种编码设定,相当于36套密码字母集。使用完整26个字母时,这台密码机就有26×26,亦即676套密码字母集了。因此,结合几个编码器(有时也称为转轮)就能造出一台不断更换不同的密码字母集的加密机器。通讯员打进一个字母,这台机器就会用数百套密码字母集的其中一套,完全视编码器的配置而定,加密这个字母。随后,编码器的配置再度更动,输入下一个字母时,又会用另一套密码字母集加密了。而且编码器自动转动的特性以及电流的速度,使得这一切都能以极高的速率与准确性顺利完成。

在详细解释雪毕伍斯所设计的使用方法以前,我必须先说明一下“奇谜”机的另两个单元,如图36所示。首先,雪毕伍斯的标准加密机还用到第三个编码器,以增加复杂度——使用完整的字母集时,这三个编码器会提供26×26×26种,亦即17,576种编码配置。再来,雪毕伍斯还加上一个反射器(reflector)。这反射器有一点儿像编码器,也是一个内部布满配线的橡胶盘,可是它不会转动,而且只有单面;电线从其中一面进去后,会再从同一面的另一点冒出来。装上反射器,输入一个字母,发自键盘的电流讯号通过三个编码器来到反射器,反射器会把这讯号送回去,也是通过这三个编码器,可是路线不同。以图36的配置为例,输入字母b,就会有一个讯号通过这三个编码器进入反射器,这个讯号会通过这些配线走回去,来到字母D。图36或许会让你误以为这个讯号是穿过键盘出来的,其实,它是转向来到灯板的。乍看之下,加上这个反射器似乎没什么意思,因为它是静态的,不会增加密码字母集的数目。不过,等我们看看这个机器如何加密、解译信息时,你就会清楚它的好处了。

现在,有位通讯员要传送一则秘密信息。开始加密之前,这位通讯员必须先把编码器转到某个特定起始位置。这部机器有17,576种配置,也就有17,576个起始位置可用。编码器的起始设定会决定这则信息如何被加密。我们可以把“奇谜”机想象成一般的密码系统,它的起始设定则决定加密的确实细节。换句话说,起始设定相当于密码钥匙。通常,通讯网络的每一名成员都会有一本密码簿,这本簿子会详列每一天的指定钥匙。发送密码簿当然需要一些时间与功夫,不过,因为每天只需要一把钥匙,若一本密码簿有28把钥匙,那么每四个星期发送一次,倒也可以接受。相较之下,军队若使用单次钥匙簿密码法,每则信息都需要一把钥匙,钥匙发送的任务会艰巨多了。遵循密码簿的指示,设定好这些编码器后,发信人就可以开始进行加密了。他输入这则信息的第一个字母,看看灯板上哪一个字母灯亮了,就把它写下来,成为这篇密码文的第一个字母。随后,第一个编码器自动转动一位,发信人再输入信息的第二个字母……等等。整篇密码文都写好后,就交由无线电通讯员传送给收信人。

要解译这则信息时,收信人必须也有一台“奇谜”机和一本列有当天钥匙的密码簿。他根据密码簿的指示设定好机器后,就一个字母、一个字母地输入密码文,灯板就会指示对应的明文字母。换句话说,发信人输入明文产生密码文,而收信人输入密码文就会产生明文——加密和解密的过程互为翻版。密码解译程序这么简易,是拜反射器之赐。在图36,我们看到,输入b后,沿着电线路径走,会回到D。同样地,若输入d,沿着电线路径走,就会回到B。这个机器会把明文字母加密成密码字母,而且只要设定相同,它也会把同一个密码字母解译回原来的明文字母。

不用说,这把钥匙,还有包含钥匙的密码簿,绝对不可落到敌人手里。敌人或许会截获一台“奇谜”机,但若不知道加密的起始设定,要解译一则拦截到的信息可不简单。没有密码簿,敌方的解码专家必须诉诸检验所有可能钥匙的方法,亦即测试17,576种编码器起始设定的可能性。孤注一掷的解码专家或许会把截获到的“奇谜”机,设定出某一种配置,输入一小段密码文,看看出来的结果有没有意义。如果没有,就换另一种配置,再试一次。如果他每分钟可检验一种编码器的配置,日以继夜地做,将近两个星期就能检验完所有设定。这样它的安全度还算是中等的。可是敌方若有十几个人做这项工作,一天之内就可以检查完所有设定了。因此,雪毕伍斯决定改善他的发明的安全性,增加起始设定的数目,亦即增加可能性钥匙的数目。

图36:雪毕伍斯所设计的“奇谜”机有三个编码器和一个反射器,反射器的作用是将电流传回编码器。在这张简化的配线图中,输入b可以点亮灯板上的D(灯板显示在键盘左侧)。

他是可以添用更多编码器以提高安全度(每增加一个编码器,就会使钥匙数目升高26倍),但是这也会增大“奇谜”机的体积。因此,他增添了两项新功能。首先,编码器变成可以取出、互换。例如,第一个编码器可以移置到第三个位置,第三个编码器则放到前面第一个位置来。编码器的位置顺序会影响加密结果,因此,确切的位置顺序是加密与解密的关键,3个编码器有6种置放顺序,所以这项功能把密码钥匙的数目,亦即起始设定的变化数目,提高了6倍。

第二项功能是在键盘和第一个编码器之间插入一块接线板(plugboard)。发信人可以利用接线板插入一些电线来互换某些字母讯号进入编码器的路径。例如,在接线板上a和b的接线孔插接一条电线后,通讯员要加密字母b时,电流讯号会沿着原本属于字母a的路线走,反之亦然。“奇谜”通讯员有6条电线可以使用,也就是说,可以调换6对字母的路线,其他14个字母不插接电线,它们的路线也就保持不变。利用接线板调换字母也是机器设定的一部分,必须在密码簿里指定好。图37呈现装上接线板的机器结构图。这个图解是以6个字母的字母集为例,因此只有一对字母a和b被调换了。

雪毕伍斯的设计有一项功能还没提到——环。环对加密程序虽有一些作用,却是整台“奇谜”机最不重要的零件,所以我不想在此讨论它。(想知道环的确实功用的读者请参阅书末所列的参考书目,例如大卫·坎恩(David Kahn)所著的《俘获奇谜》(Seizing the Enigma)参考书目也列了两个网址,那里有很棒的“奇谜”模拟机,你可以尝试操作一台虚拟的“奇谜”看看。)

认识完雪毕伍斯“奇谜”机的主要单元后,我们来算算,综合接线板的配线可能性以及编码器的顺序与方位,总共能有多少把密码钥匙。这台机器的每个变量的变化数目详列如下:

图37:接线板位于键盘与第一个编码器之间。在接线板接上电线后,即可将字母两两对调,在本图中,a即和b对调。现在,b使用原来由a所走的线路来加密。在有26个字母的“奇谜”机,操作员有6条电线来调换6对字母。

接线板

对调26个字母中的6对字母线路的变化数目非常庞大:

100,391,791,500

总数

钥匙总数就等于上面三个数字的乘积:

17,576×6×100,391,791,500 ≈10,000,000,000,000,000

 

发信人和收信人只要协议好接线板的配线、编码器的位置顺序和它们的相对方位——这些因素一起定义了钥匙的细节,他们就可以轻易地加密和解译信息了。然而,不知道钥匙的敌人想要破解密码文,就得检验10,000,000,000,000,000把可能的钥匙。一位固执,而且每分钟能检验一把钥匙的解码专家需要比宇宙岁数更久的时间,才能检验完所有钥匙。(事实上,在上面的计算中,我省略了环这个因素,也就是说真实的钥匙总数甚至更高,要破解“奇谜”所需的时间也甚至更久。)

图38:亚图·雪毕伍斯

既然对钥匙数目最有贡献的是接线板,你可能会疑惑,雪毕伍斯何不省却编码器。接线板本身只能提供一种简易的密码法,因为它就像单套字母替代法一样,调换12个字母罢了。接线板的问题是,一旦开始加密,这些调换就不会变动了,因此它自己单独制造出来的密码文可用频率分析法破解。编码器本身所提供的钥匙数目较小,可是它们的配置不断在变动,它们制造出来的密码文也就无法用频率分析法破解。雪毕伍斯结合编码器和接线板,使他的机器不怕频率分析法的威胁,又有庞大数量的可能钥匙。

雪毕伍斯在1918年获得他的第一项专利。他的密码机可以放在一个只有34×28×15厘米大的盒子里,却重达12公斤。

图39:军用“奇谜”机

图39是一台打开上盖的“奇谜”机。你可以看到用来输入明文字母的键盘,还有在它上方显示密码字母的灯板。键盘下方是接线板,在此有超过6对字母借由接线板调换路线,因为这一台“奇谜”机是目前为止所介绍的原始机型的修订版。图40是一台拿掉壳板的“奇谜”,揭露了更多组件,尤其是那3个编码器。

图40:拿掉内面壳板的“奇谜”机,看得到三个编码器。

雪毕伍斯相信他的“奇谜”坚不可破,它的加密威力势必会有大量的需求。他尝试同时对军方与商业界推销他的密码机,提供不同的版本给这两者。例如,他提供基本型的“奇谜”给商业界,豪华的使馆型(以打印机取代灯板)给外交部。他的机器单价,折算成今日的物价,相当于20,000英镑。

不幸,机器的高价位吓退了潜在买主。商界人士说,他们负担不起“奇谜”的安全性,雪毕伍斯却相信他们负担不起没有它的风险。他辩解说,被商业对手拦截到公司重要机密信息的损失会是一大笔财富,可是没几个生意人理睬他。德国军方也不怎么热衷,因为他们没注意到他们不安全的密码系统在大战期间所造成的损害。例如,他们被误导相信齐玛曼电报是在墨西哥被美国间谍偷窃走的,而归咎于墨西哥的安全漏洞。他们还没明白,是英国人拦截并破解了这份电报,齐玛曼的溃败其实是德国密码技术的失败。

雪毕伍斯不是唯一受到这种挫折的人。不同国家的其他三位发明人几乎同时、分别想出以转动的编码器为基础的密码机器。1919年,荷兰的亚历山大·科赫(Alexander Koch)取得编号10,700的专利,却无法从他的转轮机器获利,而在1927年卖掉他的专利权。在瑞典,亚维·当姆(Arvid Damm)也取得类似的专利,然而直到他于1927年辞世时,都未找到市场。在美国,发明家爱德华·赫本(Edward Hebern)对他的发明“无线的斯芬克斯”(Sphinx of the Wireless)信心十足,他的失败却最为凄惨。

在20世纪20年代中期,赫本花了38万美金建造一座工厂,不幸当时正是美国心态从偏执狂转为开阔心胸的时期。在第一次世界大战的余波中,美国政府设置了黑房厅,一个高效率的密码局,有20位密码分析家,领导人是显赫聪颖的赫伯特·雅德利(Herbert Yardley)。后来,雅德利写道:“紧闭、隐秘、禁卫的黑房厅什么都看得到、什么都听得到。尽管拉下窗帘,密闭窗户,它锐利的眼睛仍会穿透华盛顿、东京、伦敦、巴黎、日内瓦、罗马的秘密会议室。它灵敏的耳朵能抓住世界各国首都最细微的耳语声。”美国黑房厅在十年内破解了45,000件密码文。可是,赫本建造他的工厂时,赫伯特·胡佛(Herbert Hoover)当选总统,正尝试在国际事务上开创一个互信的新纪元。他解散黑房厅,他的国务卿亨利·史丁森(Henry Stimson)还声明:“绅士不应阅览他人的信件。”一个国家如果相信,阅读别人的信息是不对的,也就会开始相信别人不会读它自己的信息,而看不出巧妙的密码机器有什么用。赫本只卖出12台机器,总价约为1,200美金。1926年,他被不满的股东送上法庭,并依加利福尼亚州的企业证券法判决有罪。

相较之下,雪毕伍斯的运气还算不错。德国军方终于被英国的两份文件惊醒,而懂得欣赏“奇谜”机的价值了。第一份是温斯顿·丘吉尔(Winston Churchill)发表于1923年的《世界危机》,里面有一段英国如何撷取德国加密文件的戏剧性故事:

 

1914年9月初,德国轻型巡洋舰“玛德堡”(Magdeburg)在波罗的海遇难。几个小时后,俄国捞起一具德国士官的尸体,胸前僵硬的双臂紧抱着德国海军密码和通讯簿以及北海与黑尔戈兰德(Helgoland Bight)细密分格的地图。9月6日,俄国使馆的海军武官前来见我。彼得格勒(Petrograd)发出一则信息告诉他这件事。借由这些密码以及通讯簿,俄国海军部可以解译至少一部分德国海军的信息。俄国觉得,军力最强的英国海军部应该持有这些手册和航海图。我们若派一艘船到亚历山德拉夫(Alexandrov)去,照管这些书的俄国军官会把它们带来英国。

 

这些数据协助了40号房的密码分析家破解德国的一般加密信息。过了十年,德国人终于意识到他们在通讯安全上的失败。同样在1923年,英国皇家海军公开他们在第一次世界大战的官方历史数据,这份文件也重申德国通讯的拦截与分析给予同盟国明显优势的事实。英国情报局的傲人成就,正是对德国安全负责人员的明显打脸。他们得在自己的报告中承认:“信息一再被英国人拦截并解译的德国舰队指挥部,等于是摊开牌来和英国指挥部对打。”

德国军方开始征询如何避免重蹈第一次世界大战在密码技术上的惨败。他们的结论是,“奇谜”机是最好的方法。1925年,雪毕伍斯开始大量生产“奇谜”,来年这些机器全部由军方收购。后来,政府和国营机构,例如铁路局,也开始使用它们。这些“奇谜”跟雪毕伍斯先前卖给商业界的机器不一样,因为编码器的内部配线变了。因此拥有商用“奇谜”机的人并不知道政府和军方机型的详情。

接下来的二十多年,德国军方买了三万多台“奇谜”机。雪毕伍斯的发明供给德国军方世界上最安全的密码系统,第二次世界大战爆发时,他们的通讯由无可比拟的加密水平保护着。有那么些片刻,“奇谜”好像会扮演确保希特勒胜利的重要角色,可是相反地,它是希特勒最终毁灭的部分原因。雪毕伍斯未能亲眼看到他的密码系统的成功与失败。1929年,在赶着一队马匹时,他的马车失控,撞上一堵墙,5月31日雪毕伍斯死于内伤。