第四章 剽窃的发明(2/2)
甚至可以自己定义一个密码字母图形而不采用拉丁字母。但是用这种方法所得到的密文还是相当容易被破解的。至迟在公元九世纪,阿拉伯的密码破译专家就已经娴熟地掌握了用统计字母出现频率的方法来击破简单替换密码。破解的原理很简单:在每种拼音文字语言中,每个字母出现的频率并不相同,比如说在英语中,e出现的次数就要大大高于其他字母。所以如果取得了足够多的密文,通过统计每个字母出现的频率,就可以猜出密码中的一个字母对应于明码中哪个字母(当然还要通过揣摩上下文等基本密码破译手段)。
所以如果转子的作用仅仅是把一个字母换成另一个字母,那就没有太大的意思了。但是所谓的“转子”,它会转动!这就是谢尔比乌斯关于ENIGMA的最重要的设计——当键盘上一个键被按下时,相应的密文在显示器上显示,然后转子的方向就自动地转动一个字母的位置。假定要键入3个b, 当第一次键入b时,信号通过转子中的连线,灯A亮起来,放开键后,转子转动一格,各字母所对应的密码就改变了;第二次键入b时,它所对应的字母就变成了C;同样地,第三次键入b时,灯E闪亮。这就是ENIGMA加密的关键:这不是一种简单替换密码。同一个字母b在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,可以代表明文中的不同字母,频率分析法在这里就没有用武之地了。这种加密方式被称为“复式替换密码”。
但是如果连续键入26个字母,转子就会整整转一圈,回到原始的方向上,这时编码就和最初重复了。而在加密过程中,重复的现象是很危险的,这可以使试图破译密码的人看见规律xìng的东西。于是谢尔比乌斯在机器上又加了一个转子。当第一个转子转动整整一圈以后,它上面有一个齿拨动第二个转子,使得它的方向转动一个字母的位置。假设第一个转子已经整整转了一圈,按b键时显示器上D灯亮;当放开b键时第一个转子上的齿也带动第二个转子同时转动一格,于是第二次键入b时,加密的字母为F;而再次放开键b时,就只有第一个转子转动了,于是第三次键入b时,与b相对应的就是字母B。
用这样的方法,要26*26=676个字母后才会重复原来的编码。而事实上ENIGMA里有三个转子(二战后期德国海军用ENIGMA甚至有四个转子),不重复的方向个数达到26*26*26=17576个。 在此基础上谢尔比乌斯十分巧妙地在三个转子的一端加上了一个反shè器,而把键盘和显示器中的相同字母用电线连在一起。反shè器和转子一样,把某一个字母连在另一个字母上,但是它并不转动。乍一看这么一个固定的反shè器好象没什么用处,它并不增加可以使用的编码数目,但是把它和解码联系起来就会看出这种设计的别具匠心了。
键盘和显示器中的相同字母由电线连在一起,事实上那是一个很巧妙的开关,当一个键被按下时,信号不是直接从键盘传到显示器(要是这样就没有加密了),而是首先通过三个转子连成的一条线路,然后经过反shè器再回到三个转子,通过另一条线路再到达显示器上,比如说上图中b键被按下时,亮的是D灯。我们看看如果这时按的不是b键而是d键,那么信号恰好按照上面b键被按下时的相反方向通行,最后到达B灯。换句话说,在这种设计下,反shè器虽然没有象转子那样增加可能的不重复的方向,但是它可以使译码的过程和编码的过程完全一样。
要用ENIGMA发送一条消息,发信人首先要调节三个转子的方向,使它们处于17576个方向中的一个(事实上转子的初始方向就是密匙,这是收发双方必须预先约定好的),然后依次键入明文,并把闪亮的字母依次记下来,然后就可以把加密后的消息用比如电报的方式发送出去。当收信方收到电文后,使用一台相同的ENIGMA,按照原来的约定,把转子的方向调整到和发信方相同的初始方向上,然后依次键入收到的密文,并把闪亮的字母依次记下来,就得到了明文。于是加密和解密的过程就是完全一样的——这都是反shè器起的作用。稍微考虑一下,我们很容易明白,反shè器带来的一个副作用就是一个字母永远也不会被加密成它自己,因为反shè器中一个字母总是被连接到另一个不同的字母。
于是转子的初始方向决定了整个密文的加密方式。如果通讯当中有敌人监听,他会收到完整的密文,但是由于不知道三个转子的初始方向,他就不得不一个个方向地试验来找到这个密匙。问题在于17576个初始方向这个数目并不是太大。如果试图破译密文的人把转子调整到某一方向,然后键入密文开始的一段,看看输出是否象是有意义的信息。如果不象,那就再试转子的下一个初始方向……如果试一个方向大约要一分钟,而他二十四小时rì夜工作,那么在大约两星期里就可以找遍转子所有可能的初始方向。如果对手用许多台机器同时破译,那么所需要的时间就会大大缩短。这种保密程度是不太足够的。
当然谢尔比乌斯还可以再多加转子,但是我们看见每加一个转子初始方向的可能xìng只是乘以了26。尤其是,增加转子会增加ENIGMA的体积和成本。谢尔比乌斯希望他的加密机器是便于携带的(事实上它最终的尺寸是34cm*28cm*15cm),而不是一个具有十几个转子的庞然大物。首先他把三个转子做得可以拆卸下来互相交换,这样一来初始方向的可能xìng变成了原来的六倍。假设三个转子的编号为1、2、3,那么它们可以被放成1-132-213-1-312-321六种不同位置,当然现在收发消息的双方除了要预先约定转子自身的初始方向,还要约定好这六种排列中的使用一种。
下一步谢尔比乌斯在键盘和第一转子之间增加了一个连接板。这块连接板允许使用者用一根连线把某个字母和另一个字母连接起来,这样这个字母的信号在进入转子之前就会转变为另一个字母的信号。这种连线最多可以有六根(后期的ENIGMA具有更多的连线),这样就可以使6对字母的信号互换,其他没有插上连线的字母保持不变。连接板处于键盘的下方,当然连接板上的连线状况也是收发信息的双方需要预先约定的。于是转子自身的初始方向,转子之间的相互位置,以及连接板连线的状况就组成了所有可能的密匙:三个转子不同的方向组成了26*26*26=17576种不同可能xìng; 三个转子间不同的相对位置为6种可能xìng; 连接板上两两交换6对字母的可能xìng数目非常巨大,有100391791500种; 于是一共有17576*6*100391791500,大约为10000000000000000,即一亿亿种可能xìng。
只要约定好上面所说的密匙,收发双方利用ENIGMA就可以十分容易地进行加密和解密。但是如果不知道密匙,在这巨大的可能xìng面前,一一尝试来试图找出密匙是完全没有可能的。连接板对可能xìng的增加贡献最大,那么为什么谢尔比乌斯要那么麻烦地设计转子之类的东西呢?原因在于连接板本身其实就是一个简单替换密码系统,在整个加密过程中,连接是固定的,所以单使用它是十分容易用频率分析法来破译的。转子系统虽然提供的可能xìng不多,但是在加密过程中它们不停地转动,使整个系统变成了复式替换系统,频率分析法对它再也无能为力,与此同时,连接板却使得可能xìng数目大大增加,使得暴力破译法(即一个一个尝试所有可能xìng的方法)望而却步。
1918年谢尔比乌斯申请了ENIGMA的专利。他以为既然自己的发明能够提供优秀的加密手段,又能拥有极高的加密解密效率,一定能很快就畅销起来。他给商业界提供了一种基本型ENIGMA,又给外交人员提供一种豪华的装备有打印机的型号。但是他似乎搞错了。他的机器售价大约相当于现在的30000美元(如果订购一千台的话每台便宜4000美元)。这个价钱使得客户望而却步。虽然谢尔比乌斯向企业家们宣称,如果他们重要的商业秘密被竞争对手知道了的话,遭到的损失将比ENIGMA的价格高得多,但是企业家们还是觉得他们没有能力来购买ENIGMA。谢尔比乌斯的新发明并没有象他预料的那样带来多少回响。军队方面对他的发明也没有什么太多的注意。
谢尔比乌斯的失望是可想而知的。但是这方面他不是唯一的人。和他几乎同时在另外三个国家的三个发明家也都dú lì地想到了发明了使用转子的电气加密机的主意。1919年荷兰发明家亚历山大.科赫(Alexander Koch)注册了相似的专利,可是却没有能够使它商业化,1927年他只好卖掉了他的专利。在瑞典,阿维德.达姆(Arvid Damm)也获得了一个差不多的专利,但是直到1927年他去世时还是没有能找到市场。在美国,爱德华.赫本(Edward Hebern)发明了他的“无线狮身人面”,对它充满希望。他用三十八万美元开了一个工厂,却只卖出价值一千两百美元的十来台机器。1926年在加利福尼亚州赫本被股东起诉,被判有罪。
可是谢尔比乌斯突然时来运转。英国zhèng fǔ发表了两份关于一次大战的文件使得德**队开始对他的发明大感兴趣。其中一份是19年出版的温斯顿.丘吉尔的著作《世界危机》,其中有一段提到了英国和俄国在军事方面的合作,指出俄国人曾经成功地破译了某些德军密码,而使用这些成果,英国的40局(英国zhèng fǔ负责破译密码的间谍机构)能够系统xìng地取得德军的加密情报。德国方面几乎是在十年之后才知道这一真相。第二份文件同样是在19年由皇家海军发表的关于第一次世界大战的官方报告,其中讲述了在战时盟军方面截获(并且破译)德军通讯所带来的决定xìng的优势。这些文件构成了对德国情报部门的隐xìng指控,他们最终承认“由于无线电通讯被英方截获和破译,德国海军指挥部门就好象是把自己的牌明摊在桌子上和英国海军较量。”
为了避免再一次陷入这样的处境,德军对谢尔比乌斯的发明进行了可行xìng研究,最终得出结论:必须装备这种加密机器。自1925年始,谢尔比乌斯的工厂开始系列化生产ENIGMA,次年德军开始使用这些机器。接着zhèng fǔ机关,如国营企业,铁路部门等也开始使用ENIGMA。这些新型号的机器和原来已经卖出的一些商用型号不同,所以商用型机器的使用者就不知道zhèng fǔ和军用型的机器具体是如何运作的。
在接下来的十年中,德**队大约装备了三万台ENIGMA。谢尔比乌斯的发明使德国具有了最可靠的加密系统。ENIGMA的发明使密码学从加密方法的保密转变成加密密钥的保密,加密方法不可能随时更换,因为更换加密方法是一项非常浩大的工程,而ENIGMA的使用使得即使敌人知道了加密方法即使得到了ENIGMA密码机,只要他不知道密钥,那么他也没有办法破解密码,而密钥的更换是非常方便的,可以一天更换一次,也可以一天更换几次,而密钥的一亿亿种可能xìng让破解它几乎成为不可能完成的任务。
在第二次世界大战开始时,德军通讯的保密xìng在当时世界上无与伦比。似乎可以这样说,ENIGMA在纳粹德国二战初期的胜利中起到的作用是决定xìng的,但是它在后来希特勒的灭亡中扮演了重要的角sè,因为ENIGMA后来被盟军成功破解了。
方明当然知道ENIGMA的缺点以及盟军破解它的方法,虽然他知道有更好的加密方法,但现在并没有条件进行生产,所以他现在只是想在ENIGMA的基础上设计一款新的密码机,来弥补原来ENIGMA的缺陷。
首先方明将转轮增加到八个,而每次使用其中的四个,其次方明把每个转轮上的字母重复了一遍,增加到了五十二个,字母的排列顺序是随机的。这样光是转子的改变就让密钥对有52*52*52*52*1680=12283514880种可能,再加上连接板,这样密钥的可能xìng就增加到了13164064720107520000种,大约是十万亿亿种可能。方明为了防止由于轮子被敌人获取而造成泄密,规定转子每隔一定时间必须全部更换一次,而每次转子的字母排列都是随机的,这样大大增加了敌人仿制密码机的难度。
其实这样并不能万无一失,因为这台密码机采用的还是传统的“密钥密码体制”,即在加密、解密的过程中都采用同一个钥,简称为“密钥”(secret key)。所谓同一个钥,就是说知道了其中的一个钥,另一个钥就可以很容易地计算出来,如果密钥被敌人知道的话,很容易造成大面积的泄密。
方明为了避免这种情况的出现,决定利用后来出现的公钥加密方法来实现密钥交换。公钥加密的“主要特xìng”是它利用了一个包含两部分的密钥,其中一半由发送方持有,另一半则由 接收方持有。想象一下,少男少女有时使用的一对分成两半的连心锁片中的一个: 它上面印着的消息只有在两人都在时才能完整地读取。简而言之,它就象一个公钥 对,通信双方各自有一个共同 知晓的密钥和一个私人拥有的密钥。 密钥算法被构造成使用它们的特定组合来起作用。在发送数据时,发送方使用接收方的公钥;这个加 密的作用是数据只能使用接收方私钥译出。
因为使用了这种双密钥过程的数学逻辑,这样通信双方就都不必知道完整的密钥组合,并且每个密钥都是唯一的。如果使用这种密码机,那么就算捕获任何船只或潜水艇的私钥都不会造成惨重的损失,因为敌人只能获得读取特定船只的消息而不是整个海军的消息的能力。而且,他们不必担心密钥的分发,因为公钥可以通过公开的通信通道发送。基于数论的密码在这交换过程中将发挥巨大的作用,这才是方明所设计的密码机的重点,也是他说擅长的,虽然有很多功能限于条件不能实现,但是相对于目前的计算能力来说,这样的方式还是非常可靠的。
数论是数学中最古老、最纯粹的一个重要数学分支。素有“数学王子”之称的19世纪德国数学大师高斯就曾说过,数学是科学的皇后,数论是数学的皇后。数论的一个主要任务,就是研究整数(尤其是正整数)的xìng质(包括代数方程的整数解)。由于在研究这些整数的过程中,人们往往要用到别的数学分支的知识与技巧,这样就诞生出了解析数论、代数数论、组合数论、概率数论、几何数论甚至计算数论等分支学科。
方明在跟随导师学习的时候一直在进行椭圆曲线领域方面的研究,而他在高等数学研究所的主要工作就是寻求快速实用的计算椭圆曲线离散对数的算法(哪怕是子指数复杂xìng的算法),用在现在的话,估计二十年内被破解的机会几乎不会存在。
方明后来用了不到一个月的时间就完成了图纸的设计,并且编制了一整套的cāo作说明,但他并没有把它公开或者申请专利,也不打算现在就把它制造出来,只是把这些资料藏在了自己的箱子里,准备合适的时候再拿出来。