被征服的谜 - ENIGMA的故事

发布时间:2010-11-25 12:32:02   来源:文档文库   
字号:
被征服的谜——ENIGMA的故事 ENIGMA在密码学界里,绝对是划时代的丰碑。而且,还不是一座丰碑,而是两座:研究并制造ENIGMA是一座,研究并破解ENIGMA又是一座。 稍微看看ENIGMA的历史,任何人都会因其中透出的人类智慧之美而折服。如果要向这样辉煌的智慧敬献花环的话,那么主要的应该献给三个人: 首先是德国人亚瑟·谢尔比乌斯(Arthur Scherbius); 其次是波兰人马里安·雷杰夫斯基(Marian Rejewski); 第三个就是英国人阿兰·图灵(Alan Turing)。 这三个人中, 德国人发明了ENIGMA; 波兰人初步解破了简单的ENIGMA; 而英国人彻底终结了最高难的ENIGMA。 顺着时间的主轴,先从德国人亚瑟·谢尔比乌斯说起。 (一)密码的前世 一战终于结束了,时间转眼就跨入了1918年。而在这一年,密码学界的一件大事“终于”发生了:在德国人亚瑟·谢尔比乌斯天才的努力下,第一台非手工编码的密码机——ENIGMA横空出世了! 说是终于发生,也是因为确实有点奇怪。在工业革命浪潮席卷欧洲那么多年以后,天上有了飞机,地上有了坦克,海里有了潜艇,甚至连毒气都上了战场的情况下,密码学的发展竟然不可思议地始终是停滞的——千百年来人们用来加密文件的办法,竟然还是手工操作! 此外,加密的方式也受到了重大的挑战,简单的明文字母替换法已经被频率分析法毫无难度地破解了,曾经认为是完美的维吉耐尔(Vigenere)密码和它的变种也被英国人Charles Babbage破解了。顺便说一句,这个Charles Babbage可不是凡人,他设计了差分机Difference Engine和分析机Analytical Engine,而这东西就是现在计算机的先驱。而他老人家(1792-1871)可是19世纪的人! 扯远一点,先说说这个加密的方式。一般来说,把明文里的文字用其它字母替换,可以达到无法直接识别的目的。具体操作起来,当时流行的操作有这么几种: 1、每个字母都用其它固定的字母代替,比如A换成T,也就是一对一对应的单字替换法; 2、用多个字母替代一个字母,比如A换成TVW,也就是多对一的多名码替换法; 3、几个字母成为固定组合,被另外的固定组合代替,比如AQUA换成EDDTYM,也就是多对多的字母替换法; 4、每次用不同的字母替换同一字母,比如A换成T,下次则A换成U,比如AQUA换成TWCU,也就是不断变换的多表替换法。 首先说说这个单字替换法。 我们可以自己拟定一个规则,比如说,CODE一词的字母C、O、D、E,分别被替换成A、K、L、Y。而根据同一法则,DECODE就应该成为LYAKLY。猛一看到LYAKLY,一般人是得发晕,不知道这说的是什么。但是,数学家不是一般人,他们统计 了相当数量的文本以后,发明了频率分析法,专门对付这个单字替换法。 列个简单的单子,看看频率分析法是怎么破解单字替换法的: A 0.082 | B 0.015 | C 0.028 | D 0.043 | E 0.127 | F 0.022 | G 0.020……| T 0.091 | ……| Z 0.001 其中,字母后面跟着的数字代表它在文本中出现的统计频率。可以看出,什么字母出现概率最大?毫无疑问就是e。管你怎么替换,这个字母不会是别的。分析相当数量的根据同一法则替换之后的密文,完全可以轻松将每个字母的去向一一标明,进而,也就无密可保了。 看上去更象个小聪明的单字替换法就这么可耻地失败了。而类似地,多名码替换法、字母替换法这些加密方式一样无法逃避频率分析的威力,也跟着纷纷被拿下了。但是多名码替换法却还有人在用,直到一战中,英国人还在用这个明显不可靠的加密方式,原因为何,真是只有鬼知道了。 而最后一种,也就是多表替换法,却一跃成为了一时的主宰。 多表替换法好就好在,它的明文和密文之间的字母对应是会变的。这个“变”字,就成为密码学上一个非常成功的概念。甚至后来的ENIGMA,成功也就成功在这个变字上。 1568年Leon Battista首先发明了多表替换法,之后美国内战期间,北军用的就是这个加密方法。1858年,法国的外交官Blaise De Vigenère发明了另一套以他名字命名的Vigenère密码,从Vigenère密码里又衍生出了Beaufort密码,等等。 从原理上看,无论Battista、Vigenère和Beaufort等多表替换密码,其实都只是一个范畴的不同表现而已。而数学家所使用的频率分析法失灵的原因就是,每次变的那一下子,使密文完全不符合字母出现频率的规则了。 它的原理简单描述一下,大概是这个样子(不是很严密的):第一次对A加密的时候,出来T;下次再碰上A,按照某种顺序,比如最简单的递加顺序,则顺延T+1,变成U;第三次再碰上A,继续顺延成T+2,变成V。 于是,初始位置不知道,还可以用频率分析予以破解;但是顺延之后,频率分析就无能为力了。何况,谁知道是递加还是递减呢?谁知道是加几或者减几呢?以及,对手万一不用递加或递减,而是采用乘法除法,或者利用某个数列,比如素数数列来加密呢?而Vigenère法恰恰用的不是顺延,而是任意一组指定的数列! 这样一来,似乎无法破解的多表替代加密法就成为了密码之王。 但是,既然有人能发明,总有人能找到它的弱点。数学家又出现了! 还以多表法中最著名的Vigenère法来说。按当时的习惯,Vigenère法是这样加密明文的: 明文:ABCDEFGHIJK 密钥:3,2,6,8,1,4(表示字母向后顺延的位数) 则密文应该变为 A+3,B+2,C+6,D+8,E+1,F+4,(密钥用尽,从头开始重复加密)G+3,H+2,I+6,J+8,K+1 也就是 DDJLFJJJOQL 一次标准的加密就完成了。如果要解密,就需要知道密钥,然后倒着推算回去就是了。 从刚才的例子可以看出,密文DDJLFJJJOQL里面出现了4个J(我倒,真是随手一写,没想到搞成这样),2个D,2个L,而这些所对应的明文竟然是没有重复的ABCDEFGHIJK……Vigenère法的厉害可见一斑! 但是牛人出现了。上文说过,1858年,法国人Blaise De Vigenère发明了Vigenère多表替换法。而之后仅仅五年,普鲁士的一个少校军官,F.Kasiski找到了破解的办法!顺便说一句,又过了七年,普法战争就开始了…… 说起具体的破解方法,的确就是个纯粹的数学问题了,我这人,天生不擅长数学,就不具体写了,——因为也写不出来,写出来也是别人的,自己看不懂:(——但是,可以描述一下它的原理,那就是:密钥因为种种原因,是循环使用的。上文例子中,用了六位密钥,也就是说,每六个字母,就要循环使用一次相同的密钥加密——破绽就在这里! 实际上,除非你用的多表替换的密钥无限长,那么自然无法破解——稍微想想就明白了,那相当于你发明了另外一门使用相同字母的语言啊——但是,密钥是不可能无限长的,特别是在手工操作加密和解密的时代。例如,怎么能够想像,战火纷飞的战场上,解码员手里拿着厚厚一千多页的密钥去一个个查对字母——太长了,也容易出错啊! 当时在实际应用中,密钥一般是二十位左右长。这样,就取得了一个便用性和保密性的平衡。但是,二十位的密钥,还是太短了——在数学家眼里,这相当于把彩票要选的数字从36个降到只选5个,于是,中奖的概率大大增加了。 他们用的办法还是分析。这次,主要是分析密钥的长度,换言之,是经过多少次加密以后会出现循环现象。具体算法就不罗列了,很精彩,这里只给出一个理想情况下的结果: 如果密钥字长度为M,那么密文中随机两个字母的重合指数约为0.065(也就是说,比如我挑密文中的字母A,它对应的明文恰好也是字母A的重合指数是0.065); 如果长度不是M,也就是密钥完全由随机字母形成,那么随机两个字母的重合指数约为0.038。 具体算法别问我,问我也不懂,咱只是照抄:) 曾经牛的一塌糊涂的Vigenère多表替换法终于尝到了失败的滋味。而类似的,整个多表替换法也终于在数学的威力下败下阵来…… (二)、ENIGMA横空出世(上) 让密码学家很恼火的数学家就这样一个个击破了传统的加密方法。如上文所说,甚至连一 个聪明的普鲁士少校都能找出多表替换法的缺陷。这个事实给了我们两个启示:第一,没有哪种“绝对安全”的密码是不会被攻破的,这只是个时间问题;第二,破译密码看来只要够聪明就成,单枪匹马也可以挑战密码的权威——不是么?那些加密方式也无非是一个个单枪匹马的人具体研究出来的啊。。 在古典密码时代,以上两个启示真是启发了许多人。以至于很多人认为,其实再聪明的人,他设计的密码也会被另外的人攻破——他们的观点其实还是有道理的,只是他们没想到的是,这个“能攻破的人”不再是单数,而是复数;不仅一个人不再可能靠自己的能力攻破,甚至倾全国之人力物力也未必能很快奏效。 他们没想到,因为他们没见过非人工编码的加密方式。而这个非人工,说的就是机器。 从第一艘蒸汽船“真的”开始在河流里航行开始,人们就渐渐发现,以人的力气,根本无法与机器对抗。随着机器的不断进步,人们又渐渐发现,不要说人的力气,就连人的灵巧准确,也根本无法与机器对抗。再后来发展到工人集体大规模捣毁机器的时候,人们唯一还能自豪的就是,我们有智慧,而机器没有。 而密码编码解码这个东西,自然更是人类智慧的结晶,机器怎么能做的到? 事实说明了一切。 ——机器不仅能做到,而且一出手就改变了密码学整个的面貌! ——————————————————————————————————————— 第一个接受花环的Arthur Scherbius同志就这样当仁不让地站在了时代的最前端。 1878年,一个普通的年份——普法战争刚刚结束七年,俄土战争刚结束半年,离第一次世界大战还有三十六年。往远了说,在这一年里,中国和日本前后脚诞生了两个娃娃,日后都成了陆军上将,还都跟孙中山有过点关系。他们是谁呢? 答案揭晓了:一个叫陈炯明,一个叫松井石根;一个帮过孙中山后来又要杀孙中山,创立了中国致公党,最后客死香港;一个支持并响应孙中山的革命,后来直接指挥侵华战争,最后在东京巢鸭监狱被绞死,灵位进了靖国神社。 而在这一年的10月20日,在遥远的欧洲,在德国Frankfurt-am-Main的一个小商人家,也有一个娃娃诞生了。没错,这就是Arthur Scherbius同志,一个看上去和其他同龄孩子没有任何区别的普通小孩,也是一样长大了,读书了。 非要区别的话,就是后来他在慕尼黑技术学院(Technical College in Munich)读的是电力专业,并在1904年,以一篇《Proposal for the Construction of an Indirect Water Turbine Governor(关于间接水涡轮调节器构造的建议)》的论文获得了汉诺威技 术学院(Technical College in Hanover)的工程学博士学位。 这时候,他还没满26岁。 Arthur Scherbius同志在一战之前及一战中间究竟做了什么,我确实还不是很清楚。清楚的是,在一战即将结束的1918年2月23日,他为自己设计的一种密码机器申请了专利。同年,他和他的朋友一起开了一家公司,开始出售这种机器。 ENIGMA。 之所以取名为Enigma,我猜当时Arthur Scherbius同志对这机器肯定也是很自豪,甚至是自负的。实话说,他的这项发明的确使加密产生了巨大的飞跃,他的自豪甚至自负是绝对有道理的。因为ENIGMA,人类终于迈入了非手工编码的时代。而且,ENIGMA的起点之高,完全不是蹒跚学步的水平,而是个一出生就已经具有了强大战斗力的勇士! ENIGMA的构造之精巧,思路之诡异,的确让每个稍微仔细思考过它原理的人大为叹服。限于篇幅,这里就不过分详细介绍了,只是尽可能用文字描述一下,也是对自己纯文字表达能力的一个挑战吧:) 1、想象两副键盘,第一副键盘用来输入,我们称为1,第二副键盘每个键位都可以发光,用来显示,称为2; 2、在键盘1上输入A,记为1A;如果第二副键盘上显示某个字母,比如F,我们就记为2F; 3、把1和2直接连接好,设置为每个字母一一对应后,则1A-2A; 4、在1和2之间增加一个纵向的转盘3(你可以把它想象成一个立着的硬币),转盘3边缘上刻着从A到Z的26个字母;这样,1和2之间不再直接对应,而靠穿过3的“轴”连接; 5、转盘3可以旋转,而描述3当前的位置的时候,就用某个处于一定位置——比如正上方的字母——来表示,例如,现在位置是3F; 6、设想某个时刻,综合考虑1的输入、转轮2的位置和3的显示,则123的组合情况可以是这样的:1A-3H-2C; 7、输入和显示完毕一次之后,3自动开始转动一格,由3F变成3G,也就是转动一个字母的位置; 8、于是1-3和3-2的映射关系都发生变化,再次输入A,可能就是这样的:1A-3G-2D; 9、再次输入A,3再次自动转动一格,可能变成这样:1A-3H-2E; 10、再次输入A,3依然自转一格,可能变成这样:1A-3I-2F。 以上就是一个最最简化的ENIGMA的原理,不知道各位看明白没有,有一点点费脑子。。当然,主要是我描写的不好造成的。。。 从以上的描述可以看出,ENIGMA实际上有点类似上文讲过的多表替代法,也是不断改变明文和密文的字母映射关系。从这个例子可以看出,由于有了转轮3的存在,每转动一格就相当于给明文加密一次,并且每次的密钥不同,而密钥的数量就是全部字母的个数——26个。 如果ENIGMA仅仅是这样,那他实在也没有什么了不起 ,不过是个可以转动的机器多表替代器罢了。但是Arthur Scherbius同志的天才这才刚刚开始展现——且让我们继续描述ENIGMA: Arthur Scherbius同志认为,一个转轮显然是不够的,于是他将转轮的数量加到3个,也都是每打一个字母就自转一格的,我们分别记为3、4、5。那么,密钥的数量就变成了26的立方,17576。 Arthur Scherbius同志认为,3、4、5不应该固定,而是可以互相换位的。比如,345,354,435,534,543,453,一共6种方式。于是,密钥数量再次膨胀为17576*6=105456。 Arthur Scherbius同志认为,这样还是不够的,但是每次增加一个轮子,只能增加26倍的密钥数量;同时,他对这个发明还不是很满意,于是天才就在多表替换的基础上突然爆发了: Arthur Scherbius同志引进了反射板的概念。这个反射板,我们不妨把它理解为一面镜子。他把反射板插在了轮子序列的最后,让键盘2和键盘1同一端。这样,在引进反射板之前,加密路径是例如下面这样的: 1A-3F-4D-5K-2Y 引入反射板(用|表示)后,路径就变成了如下的半回路(这个拐弯可真难画啊): 1A-3F-4D-5K-| 2Y-3F-4D-5K-| 看起来没什么,不是么?不过是把原来的走向给反射回去了,路径长了一倍而已,1A出来的结果还是2Y嘛。。,也并没有新的加密出现,因为轮子没转啊…… 我开始就是这么想的,结果发现,天才就是跟我的水准不一样。Arthur Scherbius同志的这个创造,带来了一个震撼性的结果:反射板的出现,使加密的操作和解密的操作是完全一样的! 我个人觉得,无论怎么评价这个反射板的作用都不为过。历史上还从来没有出现过这样匪夷所思的邪招,靠同样的操作,就可以完成加密和解密!换言之,完全无须特别制造编码机和解码机,因为它们本身就是同一个东西! (二)、ENIGMA横空出世(下) 现在稍微详细说明一下。 比如水兵甲要把明文CDEF变成密文。于是他拿出ENIGMA,在1上开始输入第一个字母C。经过比如说3R、4V、5N的加密,再经过反射板6的反射,又依次返回经过5N、4V、3R,显示为2T。记录下2的显示T,第一个字母就算加密完成了。之后3、4、5各自旋转1/26格,水兵重复操作,输入其余的明文CDE,最后形成比如这样的密文:TMMD。 接收密文的水兵乙同样输入TMMD,结果,键盘1上就会同样连续映射出CDEF的字样。而这个操作,并不是专门去解的,你也可以认为是把TMMD按照初始加密的反顺序再次加密——只是一个过程的两端,看你取哪端了——而已。 当然,以上是种理想情况。实际操作中,水兵甲还必须告诉水兵乙转轮3、4、5的初始位置。否则,起步都不一样,如何保 证正确解码? 如上所述,ENIGMA完成了重大的飞跃。但是,天才的Arthur Scherbius同志依然没有满足。他决定,继续增加加密机制。这个匪夷又想了一招,依然如增设反射板那样简单,但是,又一次大大地增加了密钥的数量。 这个办法其实就是前文讲过的单字替换法的一种。怎么替换呢?他的办法很简单,在进出键盘的路径上加设一个连接板。在这个板上,某两个字母的线路被互相交换,比如,G和W交换一下。这样,GAT就变成了WAT。 Arthur Scherbius同志认为,只交换两个字母是不妥当的。他一咬牙,交换了6对12个字母的线路!就这一下,字母的一半江山改了姓名。重点是,交换的是哪个,都不是固定的,可以临时决定的。而两两交换6对字母的变化数量是100391791500种——于是,密钥的数量呈现了壮观的暴涨: 密钥数量=17576*6*100391791500=10586916764424000种。。。 翻译成简体中文,就是一亿零五百八十六万九千一百六十七亿六千四百四十二万四千种。。。。 我先捋捋舌头。。这个数字翻译过来真不容易,也真难为我了。。 前文所说,单字替换法是很危险很容易被破解的加密方式。但是,一旦它和多表替换法联合加密的时候,这个密码就变的极为坚固了——在ENIGMA身上,转轮就是多表替换,而连接板就是单字替换。联合起来的效应是明显的:不仅替换,而且替换三次;不仅替换三次,而且替换的本身规律都在变化——实话说,这真是要了命的加密方法! Arthur Scherbius同志还认为……我都怕他了,他还嫌不够结实——继续追求他的完美设计,看来是不把全世界的数学家都逼疯绝不罢休了:在一些机型上,他又加了一个轮子…… 德国军方为了更好的保密,沿着Arthur Scherbius同志指明的方向继续孜孜不倦地前进着: ——商用ENIGMA的转轮上,字母排列是按键盘方式排列的,为防止对手买到机器进而了解内部构造,军用ENIGMA转轮上的排列就改按字母表顺序了(顺便说一句,波兰人居然能把这个顺序给活活算出来,那个人就是应该得到第二个花环的马里安•雷杰夫斯基Marian Rejewski); ——每天更换不同的密码,也就是转轮的初始方向和连接板的字母连接情况; ——为了防止被每天同样密钥加密的密文大量被拦截导致泄密,军方还硬性规定,必须在每次联系时使用新密钥——办法是:用当天密码加密任意3个由操作员选择的字母,不得重复,不得相邻,比如ATX,然后加密两次变成6个字母,比如USGJDH。之后操作员调整机器,把3个转轮分别调整到A、T、X位置,——相当于使用了新密钥加密其后的内容——继续发出剩下的内容。对方接到U SGJDH后,翻当天的密码表,翻译出是ATXATX,两遍一样表示发文一方的操作员没有打错字,就把自己机器的三个转轮也一个个调整到A、T、X位置上,继续接收后面的密文,这样,每篇电报除了开头,密钥都是不一样的; ——转轮虽然还是3个,但是这3个轮子是从5个候选轮子里随便挑出来的,于是也大大增加了密钥的候选范围; ——最变态的是海军,他们专用的ENIGMA完全达到了疯狂的程度:候选轮子是8个,选上用的是4个,这还不算——还记得那个镜子——反射板么?海军型上的反射板居然是会转的!真是“废物”利用到家了,这下相当于增加了一个转轮,但又没有增加多少具体的重量…… Arthur Scherbius同志的心血——ENIGMA,就这样横空出世了! 遗憾的是,Arthur Scherbius同志本人没有见到这么牛x的海军型ENIGMA。虽然海军在8年之后的1926年,率先以军方的身份采购了ENIGMA,但是还没等到海军一步步把它升级到那个非理性程度之前,Arthur Scherbius同志就已经永远地离开了我们大家。 那一天是1929年5月13日,他老人家骑马的时候意外失手,撞在墙上,当场牺牲,时年50岁。 (三)、丘吉尔托起的灿烂星座 看看这个装在木头盒子里,有两副并排键盘的古怪机器吧。无论是从机器代替手工的角度出发,还是从它的强悍功能考虑,ENIGMA都是史无前例的——自出生那天起,它就注定了不会是昙花一现的发明。虽然如此,我们的Arthur Scherbius同志还是为它发愁了很久。。。 每一本谆谆教诲我们上进的书里都这么告诉我们:知识是无价的。ENIGMA这个机器到底是不是天才级别的发明创造,看来Arthur Scherbius同志是有清醒认识的。就在1918年,他做了三件事:注册了ENIGMA的专利;注册了ENIGMA的商标;和朋友一起开了公司。之后他很快将科技转化成了第一生产力,制造出了商品型的ENIGMA,并且开始出售了——虽然,这第一种打着“ENIGMA”商标的转轮密码机还远远没有那么复杂,甚至连ENIGMA后来最具标志性的反射板都还没有出现。 而Arthur Scherbius同志对自己这时的发明依然非常有信心,以至于把它的价格直接定成了一个天价——换算为今天的价格大约为30000美元一台——,并且用尽浑身解数向企业家们和军队推销。但是他碰了钉子:企业家无法相信,这三个齿轮两个键盘一堆电线的怪东西居然可以用来保密,此外,能有多少商业机密能值得用至少60000美元去保护呢——毕竟一买至少得买俩,用于双方通信,否则难道要自己加密再自己解着玩么——而最应该被看好的大买主——德国军方,居然也不感兴趣:有必要么?我们的密码系统好的很啊, 这么贵的新玩艺儿,还是算了吧。。。 Arthur Scherbius同志就这样惨淡经营了几年,收成不怎么样。虽然他打出了优惠的牌子,但是人家还是听了听就礼貌地转身走开了——他的优惠是,每台可以便宜13%(大约相当于今天的4000美元),前提是你得购买1000台以上。。。 虽然卖的不好,可Arthur Scherbius同志并没有失去信心。他的策略不是拼命降价以夺取市场,而是孜孜不倦地改进着他的宝贝机器——莫非刚下海的科学家都是这样的?——5年之后的1923年,带有反射板的ENIGMA-A问世了。 从这个A型开始,ENIGMA走上了一条家族兴旺的繁衍之路。也正因为如此,很多材料都把这个ENIGMA-A视为ENIGMA系列的真正元老。这也难怪,前文的介绍已经说过,反射板正是ENIGMA最突出的标志。而它的前辈,实际上只是一种转轮加密机,虽然起点也非常高,但是现在一比的话就逊色太多了。比如,它的显示设备是一排小灯,而不是后来的键盘式样。我个人的看法是,Arthur Scherbius同志的这个改进非常重要,至少,如果是我当操作员的话,非得去盯着一排整整齐齐此起彼伏的灯光,还得一个个记录下来的话,实在太容易头晕了。。。 A型不仅配置了后来型号一直保留的键盘式显示装置,还明确了输入键盘的键位设置。为了保密,A型取消了所有的标点,接收到的译文就是典型的“句读之不知”。此外,它保留了3个德语中特有的重音标记符号,但在26个德文字母中,删除了一个不常用的。这样,A型键盘上一共有28个键位。 之后的第二年,1924年,ENIGMA-B再次全新上市。这次,键盘上恢复了所有的字母,但是革命到底,干脆删除了一切标点符号,结果键位变成了标准的26个。顺便说一句,后来ENIGMA的反间谍机关型(Abwehr ENIGMA)上,又增加了若干标点符号,用意为何?不是很清楚,估计还是官儿大的,钱多的说了算吧。。。 本来,ENIGMA的道路大概就这样了:赶上Arthur Scherbius同志天才闪光的时候,就冷不丁推出个新型号;碰到平常年景,也许多年也不会有新东西问世——回想一下从第一种“ENIGMA”,到ENIGMA-A的出现,中间可是隔了几年啊。 可是,Arthur Scherbius同志的好运气来了,而且这运气一来,挡都挡不住——他生命中的贵人出现了。这个贵人不是别人,正是德国人的死对头——在一战中曾任英国海军大臣的温斯顿·丘吉尔。 丘吉尔先生威名赫赫,但是有那么一段日子,这个彪悍的人过的并不太爽,这里稍微回顾一下,看看到底能扯多远:) 1910年,丘吉尔先生任内政大臣;次年,转任海军大臣。正是在这个海军大臣任内,丘吉尔先生出了大名。 丘吉尔先 生本人对德国人、德国军队有着毫不掩饰的厌恶。当海军大臣还没满4个月,他就在格拉斯哥发表演说,矛头直指德国海军。两年后的1914年8月1日,当第一次世界大战全面爆发已经迫在眉睫的时候,他收到电讯,称“德国已经对俄国宣战”。对一个海军大臣而言,正常的举动应该是什么?看起来应该是马上向首相和内阁汇报吧——他没有。海军大臣丘吉尔先生非常有个性,大笔一挥,。直接就下达了海军的总动员令! 都动员了还说什么。。第二天,内阁追认了动员令。又过了两天,1914年8月4日,英国对德国宣战。似乎是天生好战,两个月后,他已经出现在比利时,去组织安特卫普保卫战了。。。 1915年5月,丘吉尔先生改任(兰开斯特公爵郡)不管部大臣。或许是觉得这活儿意思不大吧,他老人家半年后就辞职不干了,直接奔赴法国前线参战去了。。。一个多月后,被任命为皇家苏格兰毛瑟枪营营长。。。那时候,该营长先生41岁。。。 写到这里不禁感慨,海军大臣和营长之间,差了多少级?按咱们中国人的传统看法,这不是糟践人么。。。可丘吉尔先生还正经当了4个月的营长!后来为什么不当了?不是不想干,而是这个营给合并了——不知道是不是内阁终于觉得这么着太不成体统了,也太不给大臣面子了。。。 1年后的1917年,丘吉尔先生就任军需大臣。次年11月,第一次世界大战结束。再过一年,任陆军大臣兼空军大臣。1921年,转任殖民地事务大臣。 世界大仗打完了,但是丘吉尔先生可没闲着,一直鼓动英国政府干涉俄国/苏联的革命,甚至提出进行国际性干预;跟土耳其的争端中也力主强硬态度。想想他在二战中的表现,就知道这是个无论如何不喜欢和平的人,不管他承认不承认,我都这么看。。。 可在1922年10月,内阁倒台了,丘吉尔先生的大臣位置没了。更倒霉的是,他老人家在自己的根据地——丹迪市的大选也落败了,这下,连议员的位置都没了。 风风火火的丘吉尔先生就这么着一下摔入了自己政治生涯的谷底。回想以往的辉煌,又岂能甘心——可不甘心也得甘心,没位置就是没位置了。但是,丘吉尔先生哪里是那种稍被打击就认输的人——突如其来的赋闲也没有让他安顿下来,他老人家——开始写书了~~~ 这本书就是他的著名作品之一,五卷本的The World Crisis。1923年2月,The Times开始连载第一卷,同年,这本书的前两卷正式出版了。 ——终于可以把话题拉回来了:我们的Arthur Scherbius同志,好运气全在这本书里! 丘吉尔阅历丰富,N多内幕都是他亲手操办的,写起书来自然是天马行空,信手挥洒。这一 挥洒,问题就出来了:在一个章节里,他透露出:德国的密码在一战刚开始不久就已经被破译了! (有兴趣的兄弟不妨看看韩亚梓对我上篇文章的补充,也感谢韩亚梓朋友:) 这时候挨了一闷棍的德国军方才知道,英国专门负责破译密码的第40局,在第一次世界大战中,几乎是在“系统性”地获得德军情报! 怎能不败?怎能不割地赔款?——原来,不是军队指挥不好,也不是战术不当,而是我们摊开了所有的作战计划,请别人看着来打我们啊! 如梦方醒。。。 这时候,ENIGMA-A上市了。在我们的Arthur Scherbius同志正在努力研发ENIGMA-B的时候,德国军方终于看到了这本书,并且开始重新论证自己的密码体系。 1926年,民族仇恨不比丘吉尔先生小的德国海军率先决定采购ENIGMA的海军型——ENIGMA FUNK SCHLUSSEL-C型(LUSS中的U字母上有两个点,惭愧,我这系统打不出来)。 军方看上眼了——就好像一麻袋金币突然从天而降,还把扎口的绳子在我们的Arthur Scherbius同志面前给摔开了——资金简直是源源不绝地倒入了他的工厂和车间里。经费充裕了,ENIGMA发展历程的分水岭也跟着出现了。仿佛上了高速路,ENIGMA的研制顿时呈现出欣欣向荣的势头: 1927年,ENIGMA-D开发成功; 1927年,ENIGMA-E开发成功; 1927年,ENIGMA-F开发成功; 1927年,ENIGMA-D在英国获得专利; 1928年,ENIGMA-D被美国军队获取; 1928年,ENIGMA-G军用型开发成功,德国陆军(Heer)、空军(Luftw.)开始批量采购; 1929年,ENIGMA-H开发成功; 1930年,ENIGMA-Ⅰ军用型开发成功,被德国陆军、空军批量采购; 1930年,ENIGMA-H在英国申请专利,次年获得专利权; 1931年,ENIGMA-K开发成功; 1932年,波兰、瑞典先后获得ENIGMA-K; 1932年,在ENIGMA-Ⅰ军用型的基础上,ENIGMA-Ⅱ军用型开发成功,再次被德国陆军、空军采购; 1934年,日本购得ENIGMA-K; 1934年,ENIGMA FUNK SCHLUSSEL-M(海军型)开发成功; 1935年,西班牙、意大利先后获得ENIGMA-K; 1936年,在ENIGMA-Ⅰ军用型的基础上改进出德国国防军型ENIGMA(Wehrmacht ENIGMA); 1937年,日本依靠购来的ENIGMA-K,成功开发出大名鼎鼎的紫密; 1937年,德国党卫队开始装备ENIGMA早期型号; 1938年,ENIGMA MOB-38型开发成功,装备德国陆军、空军; 1938年,ENIGMA的海军型升级为ENIGMA FUNK SCHLUSSEL-M-2型; 1938年,ENIGMA商业型(具体型号不详)被德国帝国邮政局(Reishs Post)采购; 1938年,ENIGMA商业型(具体型号不详)被德国帝国铁路局(Reichs Bahn)采购 ; 1939年,日本在ENIGMA-K及紫密的基础上发展出日本海军型密码机; 1939年,ENIGMA MOB-39 型开发成功,装备德国陆军、空军; 1939年,ENIGMA的海军型再次升级为ENIGMA FUNK SCHLUSSEL-M-3型; 1939年,开发出德国反间谍部门(Abwehr,也译做军事情报署)型——Abwehr ENIGMA; 第二次世界大战爆发了,但是ENIGMA繁衍的脚步并没有停息。 1941年,海军型ENIGMA继续升级出M-4型; 1943年,海军型又升级出M-B型、M-8型; 甚至到了纳粹德国苟延残喘的1945年,全新开发的M-5型和由M-B型发展而来的M-10型还分别装备了陆海空三军…… 如上所述,ENIGMA大致可以分为两类:一般使用的商用型和特别制作的军用型。仅仅就军用型ENIGMA而言,从1926年海军的首次采购开始,到1945年纳粹灭亡的短短19年间,德国军队(不包括仆从国军队)就装备了大约三万台!与此同时,ENIGMA真真正正成为了德国的一个军事象征。而密码的相关发现或发明能享有如此显赫地位的事情,在历史上还从来没有过! 从诞生那天起,经过多年的沉默,随着时间和局势不可逆转地向着第二次世界大战的方向发力狂奔,令人眼花缭乱的ENIGMA家族终于迸发出了密码界最耀眼的光芒,一跃成为真正的群星璀璨的星座。 ——而这星座,竟然是由丘吉尔先生一手托起来的——他老人家不会不知道这里的故事。只是,他心里有没有为自己的口不择言而后悔,为那么多人成了自己信笔一挥的牺牲品而愧疚,又有谁知道呢…… (四)、波兰人的绝地反击(上) 观察历史,我们往往会发现:密码学的进展,常常会影响历史的进程,比如上文提到的一战中德国的惨败原因之一以及山本大将的毙命;而相应地,历史的进程,反过来也常常会影响密码学本身的发展,比如上文提到的丘吉尔写书,直接推动了ENIGMA的全面兴盛。 一战中,英国人成功地破译了德国的军用密码,不仅改写了战争的进程和结局,更让英国人得意非常,而丘吉尔“泄密”事件正为这种典型心理做了个形象的注脚。德英两国是世仇,是宿敌,能够彻底击败德国,英国人的解气可以想像。但是,随着战后第八年,也就是1926年的到来,英国人发现他们接到了越来越多莫名其妙的德国电讯,人才济济的第40局根本无力破译。 英国人明白,德国的密码系统升级了。很难理解的是,英国人对这个谜的出现似乎并不是太在意:既没有大规模地扩充破译机构的规模,也没有批量引进数学人才——唯一能够解释这个现象的理由是,英国人对自己看得太高了,同时又太小看德国了。大概,英国人认为,即便德国开发出难以破译的密码也不是什么了不得的事情,战争不刚刚结束不到十年么——大不了在战场上再把它击败一次就是 了;而德国,那个败的惨不忍睹的国家,还有再战的胆量和实力么? 莫名其妙的电讯,正是以德国海军为首的军方开始采用ENIGMA之后出现的。而此时的德国,正陷入深刻的危机:根据凡尔赛和约的规定,一向骄傲的德意志被迫割让土地,支付战争赔款,工厂和机器被直接拆走,轮船和火车被直接送到战胜国,连军队也被限制了规模,战前列强之一的德国,此时完全失去了强国的地位。 并且,和约中关于德国军队规模的限制完全是侮辱性的,其目的不仅仅是彻底打消德国与其它军事强国一争雌雄的念头,而且有对德国人念念不忘的光荣军事传统的羞辱——你不是一直很牛么?现在规定你的实力就是三流,所谓的光荣,留给你们的老祖宗吧! 之后,从1929年开始,横扫整个资本主义社会的世界经济危机爆发,并且整整肆虐了4年。本来就已经大失元气的德国这下更是雪上加霜,比起战前,人民生活水平几乎是在开足马力倒退。多年来对丧权辱国的条约早憋了一肚子气的德国终于走上了一条重振国威的不归路——尽管大有波折,但是最终,德国国家社会主义工人党(纳粹党)登上了历史舞台。1933年1月30日,德国国家元首、总统兴登堡任命纳粹党魁阿道夫·希特勒为德国总理,授命他组阁。次年8月2日,兴登堡病死,整个德国完全成为纳粹的天下。 而在一步步向右转的过程中,纳粹德国也一步步突破了凡尔赛和约对德国的军备限制,最后干脆彻底不承认这个条约,分期支付的战争赔款也不再提起。德国正在高速恢复元气,新建的工厂正在全力生产,狂热的人民笃信不疑他们新元首的主张:“新帝国必须再一次沿着古代条顿武士的道路向前进军,用德国的剑为德国的犁取得土地,为德国人民取得每天的面包。”而面对逐渐硬起来的德国,曾经的战胜国们却都退缩了,绥靖主义的论调开始弥漫欧洲。大洋彼岸的美国,也认为不该过分限制德国,应该允许德国一定程度的发展——而对这个战败国如此宽容的种种原因,都出在欧洲的东边。 在欧洲的东边,全新的社会主义国家——苏联已经出现十多年了。比起纳粹德国,更让列强害怕的是共产主义的扩张,何况多少个世纪以来,它们对俄罗斯本身就抱着根深蒂固的恐惧感。于是,它们开始明里暗里支持德国的沙文主义倾向,梦想着“祸水东引”,能够淹没红色苏联才好——于是,欧洲就出现这样的双雄对峙的局面,一个极左,一个极右;一个极红,一个极黑。 最刺激的是,希特勒公开声称:“(领土问题)只有在东方才有可能解决……只有在主要是牺牲俄国的情况下才有可能解决,… …在大陆方面,德国不能容有两大强国在欧洲崛起”,完全是公开在向苏联叫板,并且,德国人很明白的一点是,苏联清楚并且难以容忍德国的这个态度。在所有的欧洲人看来,这两个咄咄逼人的大国之间的激烈冲突是必然的,它的发生只是个时间问题了。 现在,让我们摊开二战前的欧洲地图,看看如此的局势是如何影响了密码学的进展: 在北纬50度线往北,德国首都柏林和苏联西部大城市基辅之间的直线距离大约是1220公里。如果用中国的城市距离做个参考,那么北京到上海的直线距离大约是1100公里,北京到湖南长沙的直线距离大约是1280公里——如果仅仅考虑德国和苏联的边界最近距离,那么这个1220公里还要缩短一半稍多,不到600公里,大致相当于从北京到河南开封的距离——剑拔弩张的形势,就这么清晰地跃然纸上了。。 事情还没有完。如果把这条1220公里的线段增粗一点,我们就会发现它还贯穿了一个大城市。这个城市就是波兰的首都华沙,它西距柏林520公里,东距基辅700公里…… 本节故事的主人公——无奈的波兰,就这么毫无选择地夹在了极左和极右,极红和极黑的强大势力之间! 刚才所说德苏国界的最短距离,其实就是波兰东西向边界的最狭窄处——这两个邻居对波兰是个什么态度,没有人比波兰人自己更清楚的了。 从公元十世纪起,波兰就被日耳曼人蹂躏过;一战中,波兰本身就是德国军队和协约国军队的战场;一战后,德国东部部分地区被划归了波兰,也就是所谓的“波兰走廊”。正是由于这条走廊的隔离,德国被分裂成两个不相接壤的部分:德国本土,和东普鲁士。而位于走廊上的但泽港也脱离了德国的版图,变成了波兰的“自由市”。设身处地想想看,德国人能不恨么?而获得了走廊的波兰人,能舒舒服服享受这块白来的领土么?此外,波兰还有那么多犹太人,而他们本身就是纳粹力图消灭的目标…… 而波兰跟俄罗斯,更是有着一笔笔历史和现实的烂帐:公元十四世纪,波兰国力最牛的时候,甚至入侵过俄罗斯,差点攻占了莫斯科;十七世纪的时候,俄罗斯人打回来了,十八世纪末,波兰亡国了——被俄罗斯、奥地利和普鲁士联合起来给吞并了……在ENIGMA发明的那一年,1918年,波兰才正式独立出来。可独立出来的波兰也没闲着,它趁着苏联革命,苏维埃政权立足未稳的机会,主动向东出兵,居然把苏联红军给打败了——乌克兰的部分西部领土,就这样归波兰所有了!一个泱泱大国,居然会栽在一个新生的小崽子手下,苏联人的这口气,也是非出不可的了…… 战火必起,波兰必将倒霉, 这已经是没办法的事了。唯一的问题是,究竟先遭谁的殃……如果我是当时的波兰人,那种感觉肯定非常糟糕:我明明知道世界末日来临的倒计时已经开始了,但是,我不仅无法知道现在数到几了,甚至都不知道这个末日将首先从哪个方向袭来…… 但是,波兰人还是要做出自己的努力,尽他们的全力去维护自己的祖国。不用更多的命令和动员,他们就开始拼命甚至疯狂地试图获取任何有关德国和苏联的情报,并且竭尽自己所能,全力解破他们所使用的密码。 就在这种巨大的难以想像的、令人窒息的恐惧的压迫下,波兰人做到了英国人做不到的事情——第一次,他们窥破了ENIGMA的奥秘! (四)、波兰人的绝地反击(中上) 从生命和财产的角度看,第一次世界大战毫无可取之处;然而从历史和地缘政治的角度看,第一次世界大战却极为深刻地改变了整个欧洲的政治版图,它的影响甚至越过了二战,一直波及到今天。 1918年11月11日(光棍儿节?),德法签订停火协议,第一次世界大战结束了。而在这个多事的秋天,在饱经战火的欧洲大地上,一连串的变故令人目瞪口呆地连续发生着。如果以军事上常用的“0”日来标记1918年11月11日的话,那么0日前后发生的这些事件记录下来就是这样的: …… -45日,保加利亚投降; -14日,捷克和斯洛伐克共和国成立; -13日,德国基尔港水兵暴动; -13日,南斯拉夫共和国成立; -12日,奥斯曼土耳其帝国投降,4年后,存在了600多年的长寿帝国消亡; -8日,奥匈帝国与协约国签署停火协议,整个帝国摇摇欲坠; -7日,基尔水兵暴动引发德国十一月革命; -4日,巴伐利亚国王路德维希三世退位; -2日,德皇威廉二世被迫退位(正式退位是在+17日),德国成为共和国; 0日,奥地利皇帝卡尔退位; +1日,奥地利成为共和国; +5日,匈牙利成为共和国; +7日,拉脱维亚共和国成为波罗的海三国中最后一个独立的国家…… …… 一时间,欧洲大地上简直是“五洲震荡风雷激,城头变换大王旗”,帝国不时髦了,现在流行共和国了!而在这一系列多米诺骨牌似的的连锁效应中,一张新牌出现了。 波兰共和国,就在刚才说的0日这一天——1918年11月11日——独立了。 新波兰自然极端重视自己的生死存亡。就在当年,波兰军队总参谋部已经开始着手完善自己的组织功能,举措之一就是在二局下面设立了密码处(Biuro Szyfrow)。 顺便说一句,所谓的二局就是情报局,这在不少国家似乎都是个通例——把司令部下属的“第二个”部门位置留给情报机关。比如,美国陆军的情报局简称是Ar my G-2,空军情报局简称是A-2;咱们中国这边,清朝设立军咨处的二厅就是情报厅;国民党参谋本部的二厅就是情报厅,至于现在么…… 有兄弟问了,那司令部的老大是什么?司令部司令部,……当然指挥部队作战的。约定俗成地,这个老大的位置通常也是留给作战部门的,至于老三老四,基本就是各国按自己的喜好来了。。 又扯远了……波兰总参谋部指挥的军队实在说不上多么勇猛无敌——要不也不会被苏军打到华沙城下,虽然后来又赶回去了——但是指挥的这个密码处,却令人十分意外地体现了超一流的水准。放在当时的环境下考察,波兰的密码处绝对比波兰的军队更让欧洲各国同行尊重。 例如1920年,在苏联红军兵临华沙城下,情况十分困难的情况下,密码处还破译了400条左右的苏军情报。这是不是改变了历史,现有的资料很难判定;可以知道的是,波苏战争的结果是,苏联丢掉了西乌克兰和部分的白俄罗斯(1919年白俄罗斯以加盟共和国身份加入苏联,但是一直保持一定的独立性)。 对苏联的密码破解工作虽然不能说非常优异,但是起码是成功的。对德国,波兰保持了类似的效果,总的来说,也算不错。 但是,事情从1926年开始发生了一些变化: 1926年2月,密码处发现他们无法再破译德国海军电报了。 1928年7月15日,密码处发现德国国防军的电报也没法破译了。 纵然是优秀的波兰密码处,一下子也被打懵了——他们面对的是人类历史上第一种投入实用的机器密码,毫无任何可以借鉴的经验,甚至,一开始都难以判断这密码是怎么弄出来的。算,算不出来;看,看不出头绪——所有过去用过的办法都试验过了,但是在ENIGMA强大的复合加密机制面前,一律灰溜溜地败下阵来。捧着截获到的莫名其妙的电文,我猜想波兰的密码分析人员一定郁闷的要死——这一大堆都认识的德文字母,它们到底在说什么啊……! 那支以前大家还都能随便瞅瞅发展动向的德国军队,似乎是瞬间就对全世界关上了大门。如果说,对待德国改变后的密码体系,波兰疯了一样地试图击破它的话,那么相比之下,一战的战胜国英国法国甚至美国的态度,简直就有点骄傲矜持乃至漫不经心了。破不了?破不了算了,反正不着急。。波兰本来跟英国法国都有比较密切的情报交流——波英法三个国家中间夹着的就是德国啊——可现在,这些哥们儿也只有摇摇头耸耸肩:我们也没货! 波兰人是明智的:依靠别人,永远不会有真正的安全。他们不敢向同行那样松懈,相反却加倍努力去试图破解。然而很奇怪的是,尽管历史上各种牛X加密方式一再 被数学家击破,密码界早就公认了数学的威力——但是按传统,密码处还是习惯性地倚重语言学家——毕竟,一般要破译的都是外国的文字。可现在,语言学家们显然也是一筹莫展。的确,即便你德语说的再好,哪怕你本人就是个德国人,也不可能直接看懂密文啊——这个浅显的道理终于被波兰密码处想明白了。 想明白了就得变——密码处一点不耽误,先后招募了波兰最优秀的数学家Waclaw Sierpinski 教授和Stefan Mazurkiewicz教授,并且决定开始在波兹南大学(Poznan University)的数学专业里培养专门的密码人才(这个大学成立不久,水平不是特别出众;但是,里面会说德语的人相当多,至于为什么会这样,我将在介绍Marian Rejewski 同志的工作的时候专门予以介绍)。 从开始接触到全新的ENIGMA密文起的第三年,1929年1月,波兹南大学数学系主任Zdzislaw Krygowski 教授被指定进行一项工作,也就是拉个单子,把学院里成绩最优异的三年级和四年级学生通通囊括进去,让他们改学新设立的密码专业。于是,二十个聪明的年轻人就此改变了他们的专业方向。 其中,有三个学生表现特别突出,即Marian Rejewski 、Henryk Zygalski和Jerzy R.zycki 。 日后,他们被称为波兰“数学三杰”,其中的Marian Rejewski 同志更是后文的主人公之一,现在先不赘述。 顺便提一句:同样在1929年,名气更大一点的华沙大学(Warsaw University)也没闲着,也开始培养密码专业的学生了——只不过,针对的是苏联密码系列——波兰啊,真是。。唉。。。 但是,在没有重大数学突破以前,仅靠几个数学家还是解决不了问题,而培养学生也不能立刻就派上用场……德国的密文还是天天挑衅一样出现在密码处的案头,波兰人依然毫无办法。 就在密码处急的要死的时候,中国的成语“否极泰来”应验了——突然,上帝决定出手帮一下波兰人了;这一出手,就给了波兰人两件礼物。 前一件礼物是个邮包。 后一件礼物则干脆是个大活人。 (四)、波兰人的绝地反击(中中) 附注:1、波兰人的绝地反击(中中)——都排出这样的序列号了。。。实在惭愧,我中学的语文老师要是看见,非得气死不可——实在是因为本人不太识数,写着写着发现:咦?比计划中多了两篇……如此说来,一位数的加法都算不过来,小学数学老师也得气死……没办法,只好临时借用了一下九品中正制…………见谅见谅,惭愧惭愧! 2、关于landlord朋友问的输入空格的问题,正如韩亚梓朋友所说,一般是没有空格的。想想咱们常见到的电报格式,也就能想通了:认起来虽然费劲,但是也不是认不出来: ) 3、关于春困秋乏朋友的问题,本节内有个说明。实际上,正如以前一位朋友所说,ENIGMA机器构造本身相当于是算法,而转轮的选择、个数、初始位置、连接板字母连接情况、反射板能否旋转及旋转位置等等才构成了ENIGMA的密钥。在密码学上,算法是可以不保密的,保密来保密去的,其实都是密钥。这么解释一下,不知道您能不能明白:) 再次感谢大家的关心和支持!鄙人实在才疏学浅,很多专业问题我也是干瞪眼,即便查到了资料也不知道该怎么回答;何况,有的问题是查不到资料的——有哪位朋友比较懂行的,也请帮我回答一下为盼,大家共同进步嘛:) 在此一并致谢了! ------------------------------------------------------------------------------------------------------ 上文提到,上帝突然帮了愁眉不展的波兰人,送来了两个礼物。其中,第一个礼物是个邮包。 这个邮包的故事传奇的很,因此众说纷纭,甚至连准确的日期都莫衷一是。稍微肯定一点的是,在1928年的一天(也有资料说是1927年),波兰华沙海关连续几次接到了德国驻波兰使馆的紧急通知,说的都是同一件事,口气既严厉又焦急:我国外交部发给我馆的外交邮包,请速放行,交予我馆! 德国人要的邮包这时候确实已经到了海关,其实本来很快就会给他们送去的。但是德国人着急的态度引起了海关的好奇和警惕,他们隐隐觉得这事情不太对头:华沙又不止你德国一个大使馆,收发外交邮包的又不是光你一家,也没见谁这么着急上火催个没完的啊——这么一琢磨,海关就偷偷把邮包交给情报机关去研究一下,看看里面到底藏着什么猫腻。再说了,明天就是周末了,多好的一个掩护啊——这样即便拖个一两天再给德国人,也不会被怀疑吧。 三下五除二,情报机关就把邮包打开了。瞬间,在场的人都愣住了,几乎不相信自己的眼睛,整个房间似乎也放出了金光: 一台崭新的ENIGMA。 谁能想到,朝思暮想、踏破铁鞋无觅处的密码女神——ENIGMA,就这样赤裸裸地出现在波兰情报人员的面前! 没二话,大家仿佛突然睡醒了一样,迅速分工,开始详细分析这台意外获得的宝贝:照相。分拆。测量。画图——波兰人夜以继日地研究着ENIGMA,各种数据源源不绝地被记录下来。星期一的时候,德国大使馆收到了他们的邮包,波兰人的歉意不用想都能猜出来:前两天周末么,可能在哪个地方耽搁了,唉,也没办法,他们太懒散了……不过,我们海关可是今天一早收到就给你送来了……而德国人,还就真的没怀疑…… 顺便说一句,这个故事告诉我们:如果有人对你先是莫名其妙地 冷漠而后又莫名其妙地恭敬,不要犹豫,他绝对是背后做了什么对不起你的事情——这可是德国人以惨重代价换来的教训,千万不要忘记啊!:) 波兰人截获的这台ENIGMA属于商业型,并不是更复杂的军用型。但是,即便如此也是极为宝贵的,毕竟它不再是原理,不再是代码,而是一台实实在在的、正在被敌人使用着的密码机器。何况,军用型与商业型比较起来,并无原理的不同,只有一些局部的调整……很快,波兰人就开始根据分拆得来的资料,试图复原出一台ENIGMA。 如果联系上前因后果,那么就是:大概一年后,密码处在波兹南大学的定向培养工作开始了。。 上帝给予波兰人的第二个礼物,如前文所说,是一个大活人。这个大活人叫Hans-Thilo Schmidt,我们下文就叫他Schmidt先生吧。 Schmidt先生1888年5月13日出生在德国柏林,是个命有点背的退伍老兵。简单地说就是,干什么什么不成,吃什么什么不剩;混到三十多岁,还是没见什么大出息。为了生存,只好腆着脸去求他的大哥Rudolph帮忙,给找个工作。 Schmidt先生的这位大哥可厉害太多了:他管着德国国防部的通讯部门,就连ENIGMA在军队中使用都是他下的命令。就这么着,Rudolph大哥给弟弟在自己手下找了个位置。1930年初,Schmidt先生就在德国国防部里的密码指挥机关——密码局(Chiffrierstelle)里正式上班了。因为钱少,Schmidt先生甚至只有把家留在巴伐利亚,自己单身在柏林工作生活——首都生活费用实在太高了。。 大哥如此之牛,自己如此之惨,Schmidt先生的心情可想而知。在他看来,自己的悲惨有两个原因,一个是被整个社会抛弃了,一个是因为穷。Schmidt先生决定从这两个方面索回补偿,办法就是报复社会,顺便挣笔银子花花。而他能怎么在报复社会的同时还挣到银子?Schmidt先生没法不注意到,他正好管着德国的ENIGMA工作。。 当年6月1日,ENIGMA的第一个重要军用型——ENIGMA - I(这里是I不是字母i,而是罗马数字I)被开发成功了,随即被德国陆军和空军采用。比起商业型,ENIGMA - I有多处改进,例如前文提过的,转轮上的字母不再以键盘的QWER顺序,而以字母表顺序ABCD开始排列,等等。顺便说一句,这个时候的ENIGMA内部的机械和线路连接构造已经非常复杂了,看起来非常头晕…… Schmidt先生也没闲着,这个ENIGMA的新进展使他有了更多的本钱。实际上,即便没有这个进展,他掌握的资料也绝对是重量级的。一年之后的1931年10月,他已经和法国情报服务局(Servic de Renseignement,SRF)联系上了。从此,他就走上了出卖情报的道路。 SRF方面,具体负责和他联系的是密码处( 又是第二处)的负责人,Gustave Bertrand上尉。按规矩,法国上尉Bertrand还给Schmidt先生起了个化名:Asche,有时候也叫H.E.先生——这细节都可以拿拍好莱坞电影去了。。 Schmidt先生既然决定走上“德奸”这条道路,就没有什么好回头的了。一个月后的1931年11月7日和8日,他和法国上尉Bertrand在欧洲第一台机械纺丝机的诞生地——比利时的小城韦尔维耶(Verviers),找了家小旅馆秘密接头了。这次接头,Schmidt先生的见面礼可够大方的,具体包括以下几个要点: 1、介绍了怎么使用ENIGMA机器——提供了ENIGMA的操作手册,以及陆军型所使用的Dv g 13文件,和空军型所使用的Dv g 13文件; 2、介绍了ENIGMA的核心原理——它是如何加解密的,以及陆军型使用的L.Dv g 14文件和空军型使用的L.Dv g 14文件; 3、描述了ENIGMA - I的细节,甚至还附了图(不过尽管这样,还是没提到内部转轮的情况;而这一点,各种资料上叙述有点冲突)。 为了这些机密,Schmidt先生获得了10000德国马克。而获得了情报的对手,又是怎么对待他提供的情报的呢? 法国上尉Bertrand把从Schmidt先生手里获得的文件上交给SRF,并断言“ENIGMA是不可能被破解的,这些(从Schmidt先生处获得的)文件用处不大。在(关于ENIGMA是否能被破解的)这个问题进行深入讨论时,应该把问题本身都去掉”……法国间谍有时候也够酷的,呵呵。 英国人也很快通过交流得知了法国人获得的这些情报,“得到了文件,细心地归档以后,并没有与(对此事和Schmidt先生)跟踪合作的企图”……得,英国人认真一些,可仔细一想,真是更XX一些。。 ——看看,和着急上火的波兰人比起来,法国人和英国人说的做的是多么轻松啊。 但是,Schmidt先生并不知道法国上尉Bertrand对他所提供情报的评语,因此也就继续履行着一个叛国者的职责——继续向未来的敌人们提供着ENIGMA的情报。一场泄密大戏就这样开了张: 又过了一个月,1931 年12月19日和20日,Schmidt先生和法国上尉Bertrand故地重游,在比利时韦尔维耶碰头; 1932 年5月7日和8日,还是他俩,还在老地方,第三次会面了(这地方有什么好的?真搞不懂); 1932年8月1日和2日,和SRF的中间人REX先生(也叫Rodolphe Lemoine先生)在柏林会面,同月10日,Schmidt先生提供的文件被装在外交邮袋里,寄达了巴黎; 1932年10月29日和30日,和法国上尉Bertrand在德国LiŠge第四次会面,这也是他们之间的最后一次直接会面; …… 从1931年起的七年时间里,Schmidt先生和法国情报人员接头达二十次,提供了大量机密。光是提供的密码本一项,上面就记录着德国38个月——也 就是三年零两个月之多——期间内使用的全部密钥!其它关于ENIGMA的情报,就更是难以统计了…… …… 说到这里,有人可能纳闷了:不是说波兰人的绝地反击么?Hans向法国人提供了情报,这很有趣;但是跟波兰人的工作有什么关系呢? 一句话就能回答这个问题:虽然法国人和英国人不重视这些情报,但是他们还是基本上把它们全部交流给了波兰密码处的处长Gwido Langer少校! 大家也许还记得刚才提到,1932年5月7日和8日,法国上尉Bertrand和Schmidt先生第三次在那个莫名其妙的老地方见面。不过,这只是法国上尉Bertrand五日行程的前两天的安排。之后的三天呢?他接着就“访问”了波兰首都华沙! 之后,8月10日,Schmidt先生提供的文件不是通过外交邮袋到了巴黎么?收到这些东西,并做了相关研究后,一个月后的9月17日到21日,法国上尉Bertrand又“访问”了华沙! …… 上帝送出的这两份礼物,对任何一种当时的密码来说,无疑都是灭顶之灾。但是,ENIGMA先天设计的超一流水准,使它居然摇摇晃晃又撑了很久——正如德军自己对ENIGMA的评估一样,“即使敌人获取了一台同样的机器,它仍旧能够保证其加密系统的保密性。”这也是为什么波兰人先后获得了ENIGMA商业型原机和ENIGMA - I军用型机器的原理、构造、走线等等资料之后,仍然无法立刻击破它的原因。实际上,他们已经能够复制ENIGMA了,但是,谜依然是谜。尽管,这个谜离被猜出来已经不远了…… 有兄弟问,既然波兰人已经掌握了交流来的那么多ENIGMA秘密,甚至连密钥都有了,何必还非要苦苦去破这个机器呢?能用不就行了嘛——这个问题,波兰密码处的处长Gwido Langer少校是这么考虑的:如果有一天这个线索断了呢?没有新的情报来源,岂不一下就傻眼了?所以,还是以培养自己的破译人才为主,即便那样也不怕了——就这样,这些情报就一直锁在他的抽屉里,每天因为破译ENIGMA而焦头烂额的密码处工作人员竟然都不知道! 毫无疑问,Gwido Langer少校具有远大的战略眼光。他所设想的情况果然发生了,而他的行动也确实有了效果——波兰人并没有因为获得了密码而松懈,他们的努力,不久就收到了成效。 在这里也介绍一下Schmidt先生的收场。 舒服了几年以后,第二次世界大战全面爆发了。在法国沦陷之后,Schmidt先生倒霉的时候到了。 还记得那个在柏林和Hans接头的中间人REX先生么?他实际上是个德国人,叫Stallmann,所谓REX先生或者Rodolphe Lemoine先生都是他的化名。Stallmann先生是Schmidt先生的专门联络官员,这时候被德国盖世太保,也就是秘密警察逮捕了。他是怎 么被发现的,我还不太清楚;比较清楚的是,一顿暴打之后,Stallmann先生把Schmidt先生给供出来了。 1943年愚人节这一天,Schmidt先生被不开玩笑地逮捕了。5个月之后,她的女儿被通知去认尸。种种迹象显示,Schmidt先生最后死于自杀。 都说汉奸没有好下场;那么,难道德奸就有好下场么?Schmidt先生用他自己的实践,给了我们一个明确的回答。 (四)、波兰人的绝地反击(中下) 附注:1、非朋友所言极是。我查了一下,虽然德国的儿童节不该不是6月1日,但是文中随手的这一写,还是产生了硬伤——1930年,还没有这个儿童节……根据资料,补充如下: 12年后的1942年6月,德国法西斯枪杀了捷克利迪策村16岁以上的男性公民140余人和全部婴儿。为了悼念利迪策村和全世界所有在战争中死难的儿童,反对虐杀和毒害儿童,以及保障儿童权利,1949年11月国际民主妇女联合会在莫斯科召开执委会,正式决定每年6月1日为全世界少年儿童的节日,即“国际儿童节”。 已经将原文修改完毕。谢谢指正,欢迎继续提出宝贵意见! 2、抱朴仙人朋友:我没打算说相声,故意使坏的是landlord,我是无辜的,请详察!嘿嘿:) ————————————————————————————————————————————————————— 对德国来讲,“天灾人祸”四个字真是再确切不过了——自己的不小心加上叛徒的出卖,使看上去坚不可摧的ENIGMA密码系统一点点出现了裂缝。不过,即便这样,整个系统崩塌的那一天还不会那么快到来。毕竟,扫帚不到,非同凡响的ENIGMA照例不会自己倒下。说到底,这些纰漏并不能从根本上直接动摇密码安全,最重要的是,雷霆万钧的打击还没到来——就在时代迫切需要英雄的时候,应该获得第二个花环的人——Marian Rejewski同志,终于光荣登场了! 在我看来很奇怪的是,这位波兰民族英雄Marian Rejewski同志到底是哪国人,居然都成了一个小小的问题。从任何一份关于他生平的资料都可以得知,他于1905年8月26日出生在波兰的比得哥什(Bydgoszcz,也译做比得哥煦)。按说这也就完了,但是为了慎重起见,我又稍微翻了一下1905年前后的地图——这一翻就翻出问题来了。。。 比得哥什位于波兰北部,维斯瓦河(Wisla River)西岸。这条维斯瓦河从南到北流经波兰全境,看上去,有点S形状的意思。维斯瓦河的中段穿越华沙,之后蜿蜒流向西北,在比得哥什附近掉头转向东北,最后在但泽附近汇入波罗的海——这个但泽,大家可能还有点眼熟吧? ——没错,就是那个一战后被辟为自由市,脱离了 德国的版图的但泽。那么比得哥什呢?和但泽一样,在1905年的时候,都属于德国的西普鲁士地区。而这个包括但泽和比得哥什的西普鲁士地区,是在一战后才被划给波兰,成为所谓“波兰走廊”的;也正是因为这一刀,德国的疆域被分成了德国本土和东普鲁士两块,因为失去了中间连接的西普鲁士或者说“波兰走廊”,而不再接壤了——也就是说,Marian Rejewski同志1905年出生在比得哥什,的的确确就意味着他应该是德国公民! 那。。我们的英雄Marian Rejewski同志,到底是德国人呢还是波兰人呢?这种出生后家乡就变成外国的情况,判断起来确实有点挠头,因为中国历史上这样的事情不算太多,很不好类比。非要头疼地找个例子来说,就是:比如1858年《中俄瑷珲条约》和《中俄北京条约》签定前五年,在海参崴出生的人,到底算中国人还是俄国人?蒙古独立前十年,出生在温都尔汗的人,到底算中国人还是蒙古人? 我猜,国际法对这样的情况一定有规定吧,同时我想,所有这些生在怪异时代怪异地区的人大概都有权利选择自己的国籍吧。也许是双重国籍呢?这还真就不清楚了。。 不管这些了,反正波兰从来是把Marian Rejewski同志作为自己的民族英雄纪念的,其它国家的观点也基本如此,所有资料都说他是波兰人——既然如此,那就这样吧。不过,这个插曲绝对不是没有意义的。我再提一个地方,波兹南——也是属于西普鲁士的,离比得哥什不远——这地方又有点眼熟,不是么?再提醒一下,这个地方有个波兹南大学。。 这就是为什么当年波兰密码处要选择建立不久、水平也不太高的波兹南大学数学系,进行定向培养德语密码破译人才的关键——Marian Rejewski同志和他的许多同学、同事都能说流利的德语、对德国文化了如指掌,正因为他们本身就是在德国文化环境下长大的!事实上,也正是这些人——会德语的数学家——极大地帮助了密码破译工作。说起来,也算波兰不幸中的大幸吧。 从论资排辈的角度讲,波兰的Marian Rejewski同志怎么算都是个后生——实际上,他比德国的Arthur Scherbius同志小了两轮还拐弯。Arthur Scherbius同志40岁的时候发明ENIGMA,而这会儿Marian Rejewski同志才13岁,在上中学……按说如此的时间差本来轮不到Marian Rejewski同志首先破解ENIMGA,但是造化弄人,如前文说所,ENIGMA在发明之后又沉寂了几年——这段时间差正好用来让Marian Rejewski同志茁壮成长,掌握足够的数学技能——而本事学到手的时候,ENIGMA才刚刚给别国造成了麻烦。。。 Marian Rejewski同志在波兹南大学(Boznan University)数学专业毕业以后,进入德国著名 的哥廷根大学(Gottingen University),进修了一年的统计学。之后回到波兹南大学,被密码处看上参加密码破译工作,1930年,开始研究德国顶级密码——ENIGMA,似乎就是在这期间,还顺手在波兹南大学教了两年数学……1932年,正式加入密码处,成为一个不穿军装的工作人员。 就这样,年方25岁的Marian Rejewski同志正式对世界之谜——ENIGMA发起了强有力的挑战。真是自古英雄出少年啊……感慨过后,让我们来看一下Marian Rejewski同志参加破解ENIGMA前后,波兰在研究ENIGMA方面的一些零散情况: 在意外拦截到德国外交邮包,获得了ENIGMA的第一手资料后,密码处决定以化名和假地址的方式,在德国市场上合法地购买一台真正的ENIGMA商业型,理由很简单:ENIGMA的商业型和军用型之间肯定有内在的联系; 1928年,密码处为破译ENIGMA专门成立了新的项目组,设立了三个官员:组长Maksymilian Ciężki 上尉(后来晋为少校), Michalowski,和Czajsner; 1930年1月15日,Gwido Langer少校(随后晋升为陆军上校)在华沙接替了Franciszek Pokorny少校,升任波兰军队总参谋部第二部负责人的职务(前文曾将第二部称为第二局,是考虑到当时具体编制规模过小的原因)。这时候,我们又碰上熟人了:这个Gwido Langer少校,就是上文所提到的,与那位SRV的负责人,法国上尉Bertrand交流情报的人;不过,这都是后一两年的事情了……也是他,顺手将送上门的法国情报锁进了抽屉……现在他升官了,不仅负责一个密码处,还管着整个情报部了(前文引用的是欠准确的资料,将和法国上尉交流情报时候的情报部部长Gwido Langer少校仍误为密码处处长,在此致歉!); 1931年年中,波兰总参谋部第二部进行了编制调整,分设情报拦截处、无线电情报处,密码处升级成为密码局(Biuro Szyfr¢w,简写为BS),并按工作对象区域重新进行了调整。其中,BS-3针对苏联情报,BS-4针对德国情报,而BS4的头头就是3年前新成立的项目组的组长,后来晋升为少校的Maksymilian Ciężki 上尉; 1931年年底,波兰人手里已经有了至少一台ENIGMA商业型机器,并且得知了若干有关军事型的信息; 1931年12月7日到11日,SRF的负责人法国上尉Bertrand访问华沙,与Gwido Langer少校达成共识:情报共享——这样,因为共同的敌人——德国的ENIGMA,波兰终于和法国接上了线。这意味着波兰人的智力终于有机会放射出光芒了:不仅能够在日后直接帮助盟国密码人员进行针对ENIGMA的破译工作,而且更重要地,启发了他们在波兰人的思路上更进一步,最终彻底击败ENIGMA。 现在我们把话题再拉回到Marian Rejewski同志身上。他 自从初步破掉了ENIGMA之后,名声大噪,也历经了坎坷的人生——这些,我们后文还要详细讲到。而现在我们要说的,是整个第二次世界大战结束的三十多年后的1978年,他所接受的一次访谈。从里面,我们也能看到Marian Rejewski同志当年所做所为的思路(现在是不是时髦管这个叫心路历程啊?呵呵)[又,文中括号内注解为本人所加,希望能够帮助理解,也希望不是画蛇添足:)] ——“所有电文的前六个字母都有特殊的意义,检查一下你就可以发现这一点:它就是被重复加密的密钥。我很快盯上了构成密钥的这六个字母(每封电文都有自己独立的被加密过两次的密钥)。如果德国人没有这样加密密钥本身,而是在电文头部直接以明文给出密钥,最后他们的结果要好的多。反正我怎么都得设法解破这些密钥,此外我也得到了资料,才能进行工作,并破译ENIGMA本身。” ——“在我已经有了初步结果后的一天,Maksymilian Ciężki 少校给我拿来了一台商业型(ENIGMA),这样我在这件事(破译工作)上的感觉就好多了。” ——“为了解决它,接下来的工作就是处理特定的方程了。我倒没指望这个工作能够快速进展,尽管如此,最后还是碰上了一个障碍。后来在一个天气不错的日子,大概是1932年12月9日或者10日吧,Ciężki 少校带来了一些情报资料,我根本不知道那是从法国那里弄来的。里面包括了……(德国)1932年9月和10月这两个月使用的密钥表,。这对我是个巨大的帮助,真是谢天谢地我有了这些密钥……方程里的未知数减少了,这样我就可以解出整个方程了。又是一个好天气的日子,我正坐那儿算呢,(它的)内部连接(也就是配线的方式)突然就以字母和数字的方式明白呈现了。第一个转盘就在最远的右边,在每次输入密钥的时候都要被旋转一下。” ——“后来我知道了那些从(法国上尉)Bertrand 处传到华沙的情报是从Hans-Thilo Schmidt那里得到的,他的代号是Asche。” ——“我想,1932年年底前,在某种意义上,拿到手的机器已经被破解了:三个转盘之间的配线,和第四个部件:固定的滚筒(就是反射板)的具体情况都已经清楚了。现在这台普通的商业型机器已经被改动了,使用那些由(法国上尉)Bertrand提供的密钥,它就可以阅读1932年9月和10月的电文了。9月和10月太重要了,换句话说,它们属于两个不同的季度。这是因为密钥包括了几个基本特性,其中之一就是密钥每个季度才变一次(附注:密钥天天改变是后来的事情了)。也就是说,转盘的顺序(就是密钥)。转盘的编号是1、2、3,谁都可以在机器里插入他们自己 乐意选择的那3个。当时,他们是每个季度变换一次。因为9月和10月分别属于两个季度,所以转盘的顺序也是不一样的。” ——“我已经有方法可以算出某个转盘的配线,不过我只能算出最远的右手边的那个转盘的情况,也就是每次输入密钥时旋转的那个。感谢9月的密钥,我可以算出9月时最远的右手边的那个转盘的位置。因为我同时也有10月的密钥,使用同样的方法,稍后我也算出了10月时最远的右手边的那个转盘的位置。这样,我就有了两个转盘的情况。第三个转盘和反射板的情况现在变的不那么困难了,我可以设法用其它的办法算出来。” ——“现在我们有了机器,但是我们还没有密钥,(而且我们)也不能太过迫切地要求(法国上尉)Bertrand不断地提供给我们每个月的密钥。就算他确实给过以后的密钥吧,但是我的确是再也没得到过了。现在情况完全掉转过来了:过去,我们是有密钥没机器,——结果我们破解了机器;现在我们有机器但是没密钥,我们必须想出办法找到每日变换的密钥。没用多久,我们找到了几种方法来,包括格栅法和字母循环圈表法(直译是旋转计数表法,根据后文意译如此)。字母循环圈表法方法极为重要,虽然它需要做大量的准备工作,但是准备好之后,找出密钥只需要十到二十分钟。” (以上内容,摘译自1982年1月首次出版的《Cryptologia》第六章第一节,Richard Woytak于1978年对Marian Rejewski同志的访谈,该书并于1984年以《Kozaczuk's Enigma》名字重印。顺便说一句,大家也看见了,一出现摘译的部分,1001n流利的中文顿时就惨遭摧毁,说都不会话了。。唉。。还得练。。。) 说起来简单……我个人的看法是,那是Marian Rejewski同志的伟大谦虚。如果真象他说的那么简单,为什么别人破不掉?为什么德国会对ENIGMA那么倚重,从外交到内政,从军事到民事,不仅高级别的战争指挥,甚至就连生日贺电天气预报这样的东西都是用ENIGMA编码的呢? 能破非一般的ENIGMA,这人一定也非一般人,这办法也一定非一般办法。而Marian Rejewski同志的办法究竟是什么,我们后文见分晓吧。 (四)、波兰人的绝地反击(下上) 在研究ENIGMA的加密机制时,我们的Marian Rejewski同志注意到了一个细节。这个细节就是德军的一个规定,也就是上文提到过的对临时密钥进行重复加密的措施。 从原理上讲,德国人的这个规定,的确是有他们的道理的:限于实际应用环境,密码本上记录的密钥首先不可能是无限长的,其次它的数量也不可能是无限多的。因此,理论上无解的“一文一密”方式,在实践中是毫无价值的。他们所 能做的,就是尽量减少同一密钥对不同电文的加密次数,以尽可能杜绝被破解的可能。因此,他们办法之一,就是密钥经常更换,比如,1936年前的每季一换。 而每季度的电文数量绝对不是一封两封,当有成千上万乃至更多的电文使用本季度的统一密钥加密后,这个规模的样本数量仍然可能给对手提供破解所需要的信息。为了解决这个问题,德国人在统一密钥的基础上临时设置新密钥再次加密,的确是个在理论上说的通的解决方案。 这个方案构思巧妙,也的确让一般人难以一下发现存在什么漏洞。这个一般人不仅包括你我(马后炮不算,嘿嘿),也包括著名的魔王希特勒。在看过ENIGMA的演示后,深知德国在密码上吃过大亏的希特勒兴奋地表示: “如果没有德国专家的帮助,世界上没有任何人能够解开这个谜”——这也就是说,至少在数学上,我们和很不平常的希特勒没有什么不同:大家都是一般人。 但是一般人看不出来漏洞,不代表我们的天才数学家Marian Rejewski同志也看不出来。下面尽量以通俗的方式解释一下的工作,而不去用什么群论置换之类我自己都不明白的东西来说:) 将问题高度简化,可以做一个简单的模拟。按照上文所说,现在假定德国水兵甲发送电文,在最开始的时候随便在键盘上按了三个字母,并以此对之后的电文进行加密。按照规定,三个字母是不能相邻、重复的,为了防止输入错误,需要连续输入两次。那么,例如他选择的是ATX,输入的自然就是ATXATX。而根据该季度的密钥加密后,出来一个结果,比如说是YBATAV。 为了区别起见,现在开始把每个季度换一次的密钥叫做当前密钥,输入员自己选择的密钥叫做临时密钥。 这样的电文被截获后,Marian Rejewski同志忽略后文,而把这最前六个字母单独拽出来,也就是YBATAV。可以看到,第一个字母Y和第四个字母T都是通过当前密钥,直接加密临时密钥的第一个字母而成的。区别是,Y是第一次加密的结果,T是第二次加密的结果。 这是非常宝贵的信息,因为这个时候,字母Y是使用当前密钥原汁原味加密字母A而成的,转轮都处在当前密钥所规定的初始位置上;再加密其它字母的时候,ENIGMA内部的转轮肯定要旋转了,这个初识位置也就不存在了。因此,这第一个字母的信息是十分宝贵的,它直接反映了ENIGMA的初始状态,也就是当前密钥的情况。 之后再次加密ATX的A时,由于转轮的转动(道理上讲,每加密一个字母转动一次,那么现在应该已经转动3次了),再次加密A的结果变成为了T。这也是很宝贵的信息:因为这次加密用的还是当前密钥,借此可以分析同一密 钥对已知相同字母的加密变化规律;并且,一般地讲,加密这前六个字母时,由于加密过程刚刚开始,往往只有最右边的转轮会旋转,其它两个转轮还没来得及开始转动——当然这不绝对——这就大大化简了需要猜测的可能性。 这时候,Marian Rejewski同志还不可能知道这个被加密的第一个字母是A。但是,他可以把Y和T记下来。 之后,他开始研究另一份被截获的电文。它的前六个字母,比如说是这样的:SPNHAI。当然了,这里的S和H,也都是对这份电报的临时密钥的第一个字母经过当前密钥加密而成的。他也把S和H记录下来。 为了更精确地模拟这个过程,我颇花了些时间,用网上的ENIGMA模拟器做了个试验。 首先,在设置模拟器的时候,我选择了9个转轮(模拟器不支持当时用的5个转轮,呵呵)中的1、3、4号转轮,排列是341; 其次,分别把它们调整到随机设置的D、J、O位置上; 最后,连接板的字母交换设置为A与R,C与V,E与P,H与Z,J与X,L与T分别两两交换。 以上这些设置没有什么科学道理,就是随便模拟了某个情况下的结果,都是任意设的:) 为了尽快试验出每个字母的加密结果,我把全部从A到Z的26个字母都做了实验。按照临时密钥是3个字母一组的设定,我把这26个字母分了组,一律符合本身不重复、键位不邻近的原则;这样就分成了9组。而最后一组由于字母不够用了,只好临时加了个A充数。 ——累死我了,以下是我的模拟结果: 分组情况是:ATX,BQU,CYF,NOW,KSH,ZMI,DVP,GEJ,LRA。 于是得到: 第一份电文输入:ATXATX——第一份电文显示:YBATAV 第二份电文输入:BQUBQU——第二份电文显示:SPNHAI 以此类推, CYFCYF——BGYARQ NOWNOW——DDZEMG KSHKSH——FJVPYJ ZMIZMI——SSRHZA DVPDVP——NTTIGY GEJGEJ——FZWWLL LRALRA——KELROD 放弃前面的原始明文不看(真在解密过程中,哪有明文让你看呢,呵呵),只看被加密后显示出的第一和第四个字母,把它们的对应关系记录下来,稍加整理,我们就可以获得一个表: Y-T,S-H,B-A,D-E,F-P,S-H,N-I,F-W,K-R。 这样就产生了一份换字表。换字表这个概念其实很简单,就是字母被更换替代所罗列的一张表。而我们面前这张换字表,就是由9组临时密钥被当前密钥加密后的第一个字母和第四个字母一一对应而来。 只是,能对应上的字母数量还不够多,还不能把所有字母覆盖全——现在只有9组的对应关系——显然,为了得到覆盖所有26个字母的换字表,我们至少需要罗列出26份密电中的第一个和第四个字母,前提是这些字母正好互不重合。 这么列表太长,于是我偷 了个懒,试图直接用上面9组密文中第二个-第五个字母、第三个-第六个字母来构造完成这张表,毕竟,设计的时候,9组字母已经把全部字母都包括进去了嘛。。。而就是这个偷懒的想法,构成了我的错误的第一步。。。 这样的努力很快出现了问题,如第四份显示的DDZEMG:D第一次出现时对应E,第二次出现时则对应M。按说,这才是加密后比较正常的结果,否则如果每个字母都只对应一个字母,那也就成了单字替代了。可是如此一来,我试图构造的完整换字表就出现了问题:字母一一对应的换字表是不允许一夫多妻制这样的重合现象发生的——于是在最小改动的前提下,我惩罚了所有的陈世美们,将整张表修正为一一对应关系,得到的结果就是下面这样的: 左-右 A-C B-A C-D D-M E-O F-X G-R H-E I-F J-Y K-B L-V M-K N-I O-N P-S Q-P R-U S-H T-G U-W V-J W-L X-Z Y-T Z-Q 现在它们一一对应,绝无重复了——看上去,这张完整覆盖所有字母的换字表的确是很逼真了。但是,逼真永远不是真,因为在随后而来的验证里就出现了问题,且让我继续讲下去: 有了这份覆盖全部字母的换字表后,我们从随便一个字母出发,按上面的一一对应关系找到它对应的字母,并不断地进行这个过程。 比如说,按上面的对应关系,左列的A对应右列的C,而查找左列的C,发现对应右列的D,而左列的D又对应右列的M……于是记录为ACDM……。将这个对应关系从始至终罗列完整,并将26个字母全部包括进去的整理结果如下: ACDMKBA EONIFXZQPSHE GRUWLVJYTG 不难发现,A经过一系列对应后,最后回到了A本身,构成了一个Marian Rejewski同志所说的“字母循环圈”。当然,从这个循环圈里的任一字母出发,最后都会回到它本身,这个例子中只是把A作为了开头和结尾而已。 相应地,E和G也出现了循环圈现象。统计一下可以得知,以上对应表共有3个循环圈;每个循环圈的长度,也就是其中包含字母的数量(头尾重复的只算一个)分别为6、11、9。 而Marian Rejewski同志的光荣和伟大,以及1001n个人的失败和错误,都体现在以下这段话里: Marian Rejewski同志通过群置换操作,严格地从数学上证明了:根据同一密钥加密后形成的字母循环圈的多少和循环圈的长度,是不随字母两两交换情况而变化的。 他成功了,我失败了……是先夸别人呢还是先检讨自己呢。。。迷茫中。。。算了,还是先检讨自己吧,因为这个错误犯的值得,令我很意外地从另一个角度撞上了ENIGMA加密机制中隐藏的弱点。。。 我的错误就是在对以上得到的字母循环圈进行字母两两交换的验证时发现的:任意选 择其中两对字母进行两两交换,应该是不影响字母循环圈的数量和长度的。于是,我随意更换了D/P、M/T两对字母。这时候,对应关系就变成了 A-C B-A C-D D-S E-O F-X G-R H-E I-F J-Y K-B L-V M-G N-I O-N P-M Q-P R-U S-H T-K U-W V-J W-L X-Z Y-T Z-Q 看起来还是满健康满逼真的啊。可是一用循环圈分析就原形毕露:还是从A出发,就变成了以下这个德行: ACDSHEONIFXZQPMGRUWLVJYTKBA 这下彻底完蛋,从A出发,竟然一口气把所有字母都串起来了……好好的三个循环圈让我折腾的只剩了一个,长度是26——这个结果真是让人疯狂。。。 我肯定是哪步搞错了,而Marian Rejewski同志肯定是对的。究竟错在哪里了呢? 一直在想…… 我想了很久,最后突然找到了答案——实际上,这是个很隐蔽的错误,但是就是这个错误,后来却大大地帮助了英国人!话说回来,如果不是这样,我又何苦把自己的错误一点点贴出来——咱扯的再远,那也是有目的的,嘿嘿。。。 出现这个错误的原因,和我两次比较随意的操作有关(倒是和从9个转轮里选3个关系不大): 第一次是偷懒,把第一-第四字母的对应关系,强加进第二-第五和第三-第六字母的对应关系(实际上是相当于加密的转轮旋转了,而我默认为没有转,或者转得正好到位;而这肯定是错误的); 第二次就是因为针对同一字母的重复对应(陈世美现象。。。),我随意地更改了对应关系,虽然其实只改了几个字母,但是,这张换字表已经彻底变了。特别就是这次随意的改动,是本实验完全失败的最重要原因。 事实上我的第二次改动从操作上说并没有什么不对,出现的字母组合也满足一一对应关系,并且没有重复,是符合逻辑的。也就是说,是一张符合严格定义的换字表的。 但是,最要命的地方就在这里:并不是每张符合逻辑,满足一一对应关系的换字表,都能通过ENIGMA机制获得!换言之,经过ENIGMA加密形成的换字表,只是所有可能性中的一小部分,有更多更多的换字表,通过ENIGMA机制是永远制造不出来的! 这个问题稍微深了一点,我们还是用一贯的简化方式来描述吧。 还记得ENIGMA上面那最匪夷所思的一招,也就是象镜子一样的那个反射板了么?因为它的存在,使加密解密的过程是完全一样的。例如,输入ABCD,出现KXMF。那么,解密的时候用同样的密钥之后,输入KXMF,就会出现ABCD——这样,在这个机制下,ABCD和KXMF就被称为是“对合”的。不难理解,出于这个设计,ENIGMA所有的输入和显示都是一一对合的。 根据上面的介绍可以得知,ENIGMA能做出的每张换字表都是“对合”的。道理很简 单,它是通过“镜子”“对称”的——这个镜子,就是反射板;这个对称,就是说输入和显示就象镜子里的像一样,是“对称”的。之所以给这里的对称也打上引号,是因为这里所说的对称不是平常意义上的对称,而是经过某种机制歪曲映射后的“对称”。 正如输入ABCD可以获得KXMF,输入KXMF也可以获得ABCD一样,输入和显示在这里互为镜像;只不过,不是平常意义的对称,而是经过ENIGMA加密映射之后显示出来的对称。 把ENIGMA看成一面哈哈镜,也许就更容易理解这里所说的“对称”的意思了。ABCD在哈哈镜里被歪曲成KXMF;在所有特征都完全一样的另一面哈哈镜里,KXMF也会被歪曲成相应的ABCD。当然这毕竟不是镜子,只是打个比方帮助理解——哪位兄弟真拿哈哈镜的例子来质疑,咱是不认地,嘿嘿。 而这个“对称”,就是刚才所提到的对合。 如此一来,问题就出现了。 通过数学分析我们不难知道,对合的换字表,在所有可能的换字表中,只占很小的一部分,甚至是可以说是非常罕见的一种换字表。说它罕见还真不是冤枉它,因为可以算出来——老办法,不给理由前提,只照抄公式: 一般地,如果字母数为N,则 换字表的总数为 N! 对合换字表的总数为 (N-1)*(N-3)*(N-5)*(N-7)*……*5*3*1 具体怎么论证的,还是那句话,别问我,呵呵……根据以上公式我们不难算出,有着26个字母的换字表总数为26!=403291461126605635584000000种,其中对合的换字表总数为25*23*21*19*……*3*1=7905853580625种。 403291461126605635584000000种。 7905853580625种。 上下一比什么都明白了,对合的换字表只占所有的换字表总数的不到50万亿分之一!说对合的换字表罕见,还真不是开玩笑,实在是太太太太太……*5*3*1罕见了! 这就解释了两个问题: 第一,为什么我从一开始那么严格地模拟了ENIGMA的机制,只是最后随意改写了几个字母组合,验证时就惨遭失败——真正的ENIGMA加密后绝对不会形成我上面的那个循环圈结果,因为它肯定是对合的——而我随意的构造正好能对合的概率不到50万亿分之一,真要能成功反而大大见鬼了; 第二,为什么ENIGMA最后怎么改进都逃不过被破掉的命运,因为只要它还有反射板,就决定了它必然只能造出对合的换字表;换字表总数虽然庞大,但是ENIGMA的原理决定了它只能利用了其中不到50万亿分之一…… 顺便说一句,1937年,日本人根据ENIGMA-K,并借鉴荷兰、瑞典、美国密码机发展出来的九七式欧文印表机(也就是紫密),就躲开了这个命门,没在里面设置反射板。也就是说在这一点上,日本人的确比德国人聪明了一些 。话说回来,改进的机器当然应该比原型机强,否则还改进个什么劲——只是,在没有外人提醒的前提下,日本人能看出这个地方的玄妙,确实也有点厉害。 唉,大大增加了密钥数量而同时又露出了致命的马脚,这个反射板啊——真是成也萧何,败也萧何! (四)、波兰人的绝地反击(下中) 看到了大家的反应——第一个反应就是惭愧地低下了头:还是文字水平太差,竟然无法把一个过程阐述清楚……第二个反应是,数学写的太多,过程不够流畅,看来效果是不好的……第三个决心马上就下定了,改!看行动!不过,数学不提还是不行的。。不提就很难讲清楚了。。只有尽量努力了…… —————————————————————————————————— 继续上文。Marian Rejewski同志设置并解出的庞大矩阵方程,正是对付对合换字表的。关于丢人实验的检讨做完了,下面我轻装上阵,继续解说Marian Rejewski同志的想法。如刚才所提到的,他已经证明ENIGMA使用同一密钥加密的结果,不管怎么进行字母交换,其构成的字母循环圈数量必定相同,循环圈长度也必定相同。 这就意味着一个惊人的结果:在面对暴力破解攻击(就是用穷尽法进行攻击)的时候,那个造成密钥暴涨,进而使ENIGMA变成金刚不坏之身的功臣——用来进行字母两两交换的连接板,在这个结论面前,它的作用突然可以被忽略掉了。。。 在这里,我们简单复习一下ENIGMA密钥数量的计算方法(在不考虑转轮是可选的情况下;如果是从5个轮子里面选3个,不考虑排列的话,变化的可能性是10种,需要的话直接乘进下面的结果里就是了): 转轮3个,每个上面有26个字母位置,可能性就是26*26*26=17576; 转轮之间的位置排列组合可能为3!=3*2*1=6; 字母两两交换,交换6组12个,可能性就是100391791500; 于是,总可能性是17576*6*100391791500种。 这个数字很庞大,可以看出,主要就是连接板的贡献。而现在,Marian Rejewski同志已经证明了,这个对ENIGMA保密性贡献最大的连接板,在群论面前就变成了NULL,完全可以忽略掉了;而那100391791500种,就不用再乘了…… 于是,ENIGMA的复合加密中的单字替代,就这样被数学高手轻轻拎到门外单独处理去了——而此时的ENIGMA,还剩17576*6=105456种变化。这个数字依然很大,但是不再是那么大的离谱了——画皮被揭穿了,ENIGMA坚硬的外甲下终于也露出了柔弱的心前区——现在留给Marian Rejewski同志和他的同事的工作,至少从理论上看已经轻松多了。 现在他们要做的,就是根据获得的情报和计算结果编好一张表,这张表上主要的内 容就是换字表与转轮的排列、位置之间的对应关系。之后按表索骥,把每个循环圈的长度和数量分门别类地和这张表已有的结果一个个对应上,再通过这个对应去查找转轮的排列和具体位置。 而查到的这个转轮的排列和位置,不就是密码本上规定的当前密钥么? 说是这么说,其实还是很麻烦的。为了构造这个伟大的字母循环圈所需要的对字表,波兰人整整忙活了一年,分析所有他们能获得的电文,有的工作人员手指都磨出了血。此外,以上所说的,都是一个高度简单化的模型而已。只有思路和模型,密文仍然是没办法破解的——果然应了那句话,什么事都是说起来容易。。。 为了解读ENIGMA密文,波兰人至少还必须知道转盘的内部连线情况,以及连接板到底把哪些字母换了——虽然说,因为连接板而形成的单字替代机制现在可以被分出来单独研究了,但这不代表不需要去研究啊。而它毕竟也还有着100391791500种可能,它毕竟也是个变化多端的加密机制,破起来也是需要时间的,分析它也是非常麻烦的事情——等等这类很细节的事情,毕竟,一个环节跟不上,你就读不出电文;你读不出电文,你的努力就没有成果——总之,整个破译工作仍然是非常艰苦的。 Marian Rejewski同志的表现确实是极为出色的。根据他的方程,在有了密文并破出临时密钥以后,还可以倒推回去,计算出当时的转轮内部连线情况。换言之,这个季度的密钥就被完全破解了,而这三个月里的所有密电也因此失去了任何伪装。不止如此,如前文所提到的那样,Marian Rejewski同志甚至还算出了商业型和军用型的某些区别,比如转轮的字母排列,军用型的不再是QWER键盘式排列,而是ABCD字母表式排列。 ——说实在的,我根本不知道他怎么能连这个都算得出来,只好借鲁迅先生的话来胡乱“表扬”一下我们的Marian Rejewski同志“状诸葛之多智而近妖”了。。。 在这里也提一下,Marian Rejewski同志位列波兰三杰之一,另外二位——Jerzy Rozycki和Henryk Zygalski也做出了很大的贡献。比如这位Henryk Zygalski,就发明了一个办法,在一张纸上穿很多个洞,每个洞的纵横坐标都对应着相应的字母。这样,查起换字表字母的对应关系来就快多了。看起来是个小发明吧?可这张有着几百个洞的卡片纸,能为破译人员节省多少查对的时间和精力啊。 从1936年起,德国密钥由每季一换变为每日一换,这样,每天的工作量大大增加,几乎相当于过去的91倍(这个这个我就不严格论证了……)。再靠人去拼,实在是太辛苦了。 这么下去肯定不是个事儿,肯定得发展出更狠的办法来对付日益强 大的ENIGMA。我们的Marian Rejewski同志和Jerzy Rozycki顺应形势,开动脑筋,终于开发出了破解ENIGMA的“循环测定机”,成功地将破译工作由纯人工查找升级为机器化操作。 我个人看法,早被无数双敌对的眼睛盯上的ENIGMA密码机,迟早有一天要面对同样是机器破解的对抗。机器加密过的天书,还要人工去破解,本身就是不合理的。就象潜艇最好的天敌就是潜艇,歼击机最好的天敌就是歼击机一样,机器最好的天敌自然也正是机器本身。 当然,怎样贯彻数学上的发现,如何去设计这个机器,等等,这都是人脑思考的结果。但是,象在编码方面机器显示出了强大的优势一样,解码同样是机器的长项。在这点上,循环测定机发挥得淋漓尽致。 同时,“潜艇最好的天敌就是潜艇”一句还可做另外一个更形象的解释。那就是,循环测定机不仅跟ENIGMA是同类,甚至连它本身都可以理解为两台并联着的ENIGMA,说到底它实际上还是ENIGMA的亲戚——虽然,这个亲戚不仅血不浓于水,相反正是为了杀掉ENIGMA才出世的。。。 循环测定机里面有6个转轮,3个一组,用以模拟ENIGMA。它刚出世的时候,对手ENIGMA还只有3个转轮,没有候选转轮;这3个转轮的排列,就是6种。这样,循环测定机内的转轮排列就可以是这6种中的同时任意2种,反正这些转轮在设计的时候就被设置为同样可以拿出来任意换位,因此虽然不能同时模拟所有6种情况,倒也不是什么大问题。只要一个个测试,6种可能很快就会被穷尽,真正的答案也肯定就藏在这6种可能中的某一种中。 德国人虽然对ENIGMA非常有信心,但是不代表他们就冥顽不化地死抱着原来的设计,前文已经有所提及。1937年,ENIGMA的反射板也开始会转了;1938年,转轮变成5个,从里面选3个用。 这样一来,循环测定机就有点吃力了,因为工作量一下翻了十倍——从以前的计算6种可能变成计算60种可能。面对每天都更换的密钥,循环测定机累趴下了,已经很难保证及时的电文破解。 敌人的机器升级了,那么,专门破解它的机器也应该跟着升级——这是再合逻辑不过的事情了。于是循环测定机跟着升级,针对新型号“谜”的“炸弹”——Bomba出场了。 顺便说一句,这个Bomba该怎么翻译,有点小小的争论。在波兰语里,它的意思是炸弹,但是似乎应该译做“冰淇淋球”才是正解,据说这跟Marian Rejewski同志钟爱的某种小食品有关系。 支持的根据之一是:英国人也把它翻译成了Bombe,也是冰淇淋球的意思。但是问题是,英国人翻译用的这个词Bombe却来自于法语,意思还是炸弹。美国人的翻译按说应该跟英国人一样吧?还偏不, 他们是直接给翻译成Bomb,又是炸弹……晕死了,干脆还是按1001n的简洁翻译原则,把Bomba直接音译为“波霸”得了。。。 比起循环测定机,Bomba最牛的地方就是它可以同时模拟6台ENIGMA。在这里就不得不交待一句,ENIGMA内部的连线其实是非常复杂的,机械本身加工精度也是比较高的,装配更是麻烦,要不怎么会一问世就敢卖那么贵——而要试图制造一台相当于6台ENIGMA并联的机器,大概是个什么难度呢? 先并联18个转轮; 再按特定规则连接6个能转的反射板; 三是逐个连通6副连接板,每副连接板都要保证交换了6对字母,共72个字母被两两交换; 四还要连通比蜘蛛网复杂千万倍的内部连线; 最后,得使这么个系统步调一致地进行分析解码。 这个Bomba的复杂程度可想而知,设计标准之苛刻可想而知,加工难度之大也可想而知——最后,也正因为这样,它的造价之高昂也可想而知…… 后来,情况发生了一些变化。 1938年,ENIGMA还在升级,而在最需要情报的时候,波兰人的机器升级工作却停滞了——原因很简单:他们实在没钱了,对抗不下去了——谁能想到,破译密码这么有前途的工作,竟然会那么贵! 而德国的ENIGMA仍然象上足了发条一样,继续朝着变态的方向不断地升着级……这是后话了。 回顾一下波兰人的成果吧: 从群论、矩阵方程、字母循环圈到打孔卡片,从循环测定机到Bomba,从分析计算到设计制造,Marian Rejewski同志的智慧,他和他的同事们的心血,波兰政府倾注的巨大人力物力财力,——所有这一切的付出,最后终于有了丰硕的回报。 据统计,从1933年1月到1939年6月,不到六年半的时间里,波兰人破译了德国不是一份两份,而是活活破译了将近十万份电文!这些破译出来的情报被冠以Wicher的字头(Wicher是这个破译项目的代号),作为绝密在波兰高层内很小的范围内流通。 …… Marian Rejewski同志获得我们送上的第二个花圈,堪称当之无愧! (四)、波兰人的绝地反击(下下)     (一)绝密的接力 开战前半年,也就是1939年3月以后的欧洲局势,完全成了一个万花筒,转的人头晕目眩。还是用老办法,用“0”日标记第二次世界大战爆发的那一天,那么把3月后的事态整理一下,就是下面这个样子的: -170日,德军占领捷克和摩拉维亚 -169日,德国宣布对捷克和摩拉维亚实行保护 -169日,斯洛伐克宣布独立,德国宣布对斯洛伐克实行保护 -163日,英国和法国商定战时互助(建立军事同盟) -152日,英国保证波兰的独立地位 -147日,意大利吞并阿尔巴尼亚 -141日,法国和英国对希腊和罗马尼亚提 供保证 -140日,英国和法国开始与苏联就建立反侵略联盟举行谈判 -139日,美国总统罗斯福向德国元首希特勒和意大利元首墨索里尼发出和平信件 -127日,英国实行普遍义务兵役制 -126日,德国撕毁1935年英德海军协定和1933年德波条约 -102日,德国和意大利签订战略同盟协定(柏林公约/钢铁盟约)罗马-柏林轴心完全建立 -81日,西方国家与苏联举行外交谈判 -22日,西方国家与苏联举行军事谈判 -9日,德国和苏联签订互不侵犯条约 -7日,英国和波兰建立军事同盟 …… 形势急转直下,所有人似乎都已经能够闻到遍布欧洲大陆的浓烈的血腥味了——仗就要打起来了,而且,绝对不会只是两三个国家的事情——这一点,别说各国的头头脑脑,就连最普通的老百姓都已经看的很清楚了…… 而这期间,波兰人完全急成了热锅上的蚂蚁——随着ENIGMA的不断升级,“波霸”不灵了!几个月来,波兰完全没有破译出德军采用新机器后的电文,根本无法猜测德国的行动,只能被动地看着德国抢占了苏台德区,被动地看着德国国内由纳粹煽动的反波浪潮越来越高涨,而毫无办法…… 在情况空前复杂的1939年四五月间,波兰人面临选择。该怎么办? 德国人最大的也是必然的敌人,就是苏联。根据敌人的敌人就是朋友的原理,是不是应该尽快向苏联靠拢? ——绝对不能!在这个特殊历史舞台上,敌人的敌人却很可能是更凶恶的敌人——种种情报显示,苏联和德国很有可能签订互不侵犯条约;而这条约一旦签订,德国侵犯波兰的时候,就别指望苏联可能会插手干涉——哦,这个说法还是不确切的:苏联很有可能会插手干涉,但是肯定不是帮波兰人,而是帮助一起消灭波兰,出口恶气不说,还能为自己获得一大块针对纳粹德国的缓冲空间…… 东边不行,就只有往西看了。不管怎么说,在1936年,波兰就已经和英国签订了互助协定;英国和法国更是铁板一块的盟国;在情报交流上,三个国家早有密切的往来。比如那个德奸出卖给法国人的情报,不也源源不断地出现在波兰人的案头上么——而这一点,在没有充分的互相信任的基础上,是绝对不可能做到的…… 时间已经不等人了…… 慎重地分析权衡了利弊以后,波兰总参谋长亲自下令,决定批准对未来的盟国公开ENIGMA破译情况的机密。这绝对是个破天荒的举动:一个国家对其它国家完整公开自己最绝密的情报破译能力。。。即便是二战中的美国和英国,那么铁的好哥们,互相之间也依然留着一手……以至到今天,都很难找出类似的例子。从这里也能看出,当时波兰的处境有多么凶险。。。 如果各位兄弟觉得波兰人的举动虽然实属无奈,但是也实在没什么特别了不起的话,不妨想想后来的英国人吧:在二战已经结束六十年后的今天,在ENIGMA早已被淘汰几十年后的今天,关于当年破译ENIGMA的很多技术细节仍然是机密,依旧尘封在英国情报机关的档案柜里…… ——还记得那个Gwido Langer少校,也就是拿着奸细送来的情报也不用的那位波兰情报负责人么?这时候,他早就已经是上校了(注:各种资料在这里有冲突,有资料说还是少校)。在-63日,也就是1939年6月30日的时候,Gwido Langer上校发了电报,邀请英国和法国的同行来探讨关于ENIGMA的破译问题。 虽然电报是紧急电报,但是英国人和法国人显然没有明白这个电报到底有多重要。这也不能全怪英国人和法国人——Gwido Langer上校的电文里只是说“有些新情况要通知”。大战在即,谁不忙啊?特别是情报机关和密码专家,这会儿正是忙的四脚朝天的时候。说句老实话,忙成这样了还得抽出时间去拜访别人的首都,也的确难为他们了。 即便是这样,英国人和法国人最后终于还是去了。而且大概是出于对等外交的原则,英国方面还是由MI6(军事情报第六处,军情六处)的负责人Stuart Graham Menzies上校亲自带队的。成员则是两个密码专家:一名是Nox先生,另一名就是在我们的ENIGMA故事系列中该获得我们第三个花环、大名鼎鼎的Alan Turing先生。Nox先生具体情况不是太清楚,但是剩下的两个人,Stuart Graham Menzies上校和Alan Turing先生,绝对可都算是传奇人物,后文再慢慢介绍吧。。。 去是去了,但是那是“终于”去了——这一“终于”,就终于到了-39日,也就是7月24日。Gwido Langer上校发出的紧急电报都将近一个月了,三国情报界的第二次正式会议才“终于”胜利召开了。 够酷的Gwido Langer上校不知道是不是等烦了,懒得多说,直接就把异国同行带到一个房间里,揭开了一块蒙布遮盖着的一个东西,告诉他们:这就是德国人现在正在使用着的密码机器——ENIGMA。接着来到另一间屋子,指着一台大得多的机器告诉他们:这就是专门用来破译ENIGMA密码的机器,我们管它叫Bomba。 。。。 啥都别说了,英国人和法国人完全晕了: 这是真的ENIGMA机器啊…… 这是真的破解ENIGMA的机器啊…… ——上帝啊,他们怎么什么都有啊…… 还没等被震撼的目瞪口呆的异国专家们反应过来,Gwido Langer上校接着宣布,要送给他们几份礼物: 首先是两台波兰仿制的ENIGMA(这时候波兰已经有十多台ENIGMA的仿制品了。按以前的编号习惯,要不干脆叫ENIGMA-P?嘿嘿)。都别打架,英国法国一家一台。 第二是友情赠送Bomba的设计图纸。 第三是跟机器比起来,那又轻又薄、还穿了几百个窟窿的卡片纸。 顺便说一句,这些“有洞的纸”,在战争初期帮了欧洲盟国大忙,成了破译德国陆军、空军型ENIGMA的主要手段。 ——法国人这时候才知道自己有多傻。光给人家送情报了,自己却没开发出什么成果来,还以为不重要——书到用时方恨少,情到深处……不对,总之的非常的后悔,这不等于捧着金碗要饭么?毕竟,战争就要全面来临了,这一份礼物,该让盟国在破译ENIGMA的时候拓展多少思路、节约多少时间啊! 就这样,波兰人跑完了第一棒,现在,轮到英国人接棒了! ——为什么不是法国人接棒呢?因为我们很快就会提到,法国的寿命也不长了。。。 会议开完了,感激不已的盟国情报机关自然是满载而去,Gwido Langer上校也终于卸下了心头的一副重担,从此淡出了我们的故事。。。而波兰的故事,还没有结束。     (二)铁十字和镰刀锤子的握手 刚才我们-X日、-Y日地数了半天,就是没数到0日。现在,我们就来把它数完:0日——1939年9月1日,第二次世界大战全面爆发了。而这个爆发是以什么事件为标志的?大家都知道的,不是别的,正是德国入侵波兰。 波兰啊波兰。。。对历史上就多灾多难的波兰来说,这二十世纪依然是悲喜交加的一百年:第一次世界大战结束的0日,从德国手中独立出来的波兰笑了;第二次世界大战爆发的0日,被德国再次侵略的波兰又哭了…… 仅仅39天前,波兰人才把ENIGMA的破绽展示给了盟国同行;仅仅在9天前,纳粹德国才和苏联签订互不侵犯条约,才可能专心致志地攻击波兰;而现在,这个国家就已经风雨飘摇了。德国苦心钻研多年的军事理论上的重大突破——闪击战,也第一次被使了出来。战略上早有准备,战术上猝不及防的波兰军队的抵抗几乎全无效果,德军的进展几乎是马不停蹄。 0日,英国法国要求德国停止军事行动; +2日,英国对德宣战; +2日,法国对德宣战; +9日,加拿大对德宣战…… 战争,就这样降临在全人类的头上…… +14日,苦撑了13天的波兰人拒绝了德军的最后通牒,拒不投降。 然而这个时候,波兰人最担心的事情发生了:一直作壁上观的苏联突然也对波兰下手了!几乎就在那个瞬间,腹背同时受敌的波兰一下失去了所有胜利的希望——更何况,腹背所受的都是什么级别的敌人啊:纳粹德军,苏联红军——那可是欧洲最强大最彪悍的两支军队啊! 清朝人钱彩所写的《说岳全传》第六十一回,讲到了一个故事。金山寺的高僧道悦,一向同情岳飞, 秦桧不爽,就派所谓的家人,也是衙役的何立来抓他。何立来到金山寺,道悦正在给弟子讲经。看到何立来了,道悦口占一偈:何立从东来,我向西边走。念完之后,当即坐化。 道悦在东边情况不对的情况下,还可以“我向西边走”。 波兰人呢?东边是苏联红军,西边是纳粹德军,又能往哪边走? +16日,苏联红军进入波兰; +27日,德军攻占首都华沙,波兰亡国了; +27日,还在这一天,德国和苏联在莫斯科签订协定,决定正式瓜分波兰,差不多是一家一半,东西对开的样子; +27日,还是这一天,德国和苏联还签订了苏德经济协定; +27日,也在那一天,苏联盯了很久的波罗的海三国中,爱沙尼亚首先成为猎物——苏爱互助条约签订了…… 波兰,也用自己的实践告诉了大家,当两个敌人在一起握手拥抱的时候,自己会遭到什么样的下场。之后,波兰在纳粹德国的统治下,遭尽了人间罪苦。不用说别的,只想想那些臭名昭著的纳粹集中营吧,再看看这些集中营有多少位于波兰境内吧……      (三)尾声 现在再说说我们的Marian Rejewski同志后来的情况吧。 战争开始后,他和波兰密码破译界的精英们通过罗马尼亚逃到了法国,进入PC Bruno情报站,组成Z小组,继续帮助法国人破译德军电文,并与英国政府密码学校展开了更密切的合作。这个政府密码学校将在后文中更多地出现,现在就不多介绍了。 几个月一眨眼就过去了。 1940年4月,德军开始发起丹麦、挪威战役,目的是绕过英国法国的水上封锁,夺取北方的出海口。5月又发起荷兰、比利时战役,大获全胜之后,把盟军逼到了绝路。仓皇之间,盟军被迫在敦克尔克进行了著名的战略撤退。6月4日刚撤退完,6月5日,德军就把锋芒对准了法国。五天后的6月10日,法国政府决定退出巴黎,巴黎也成为不设防的城市。三天后的6月13日,德军进入巴黎,举行了入城式;次日,在香榭里舍大街举行了阅兵式…… 这期间,法国人在波兰人的帮助下,一共破译了1000份以上的德军情报。可惜的是,跟波兰军队一样不争气的法国军队,一样地辜负了优秀的破译机构,甚至都发生过这样的事情:破译机构已经提前通报了德军将对巴黎进行空袭,可是军队还是一点办法也没有,任德国轰炸机炸了个痛快。都到这个地步了,情报还有什么用?破解的密电还有什么用? 很快,法国投降了。而以我们的Marian Rejewski同志为代表的波兰数学三杰,此刻都留在了由傀儡政权——维希政府控制下的巴黎,并且坚持工作了两年之久。这两年时间里,他们努力破译了9000多份德军情报,并且 显示出了比较长期的效果——使德军后来在苏联、南斯拉夫、希腊的军事行动陆续遭到惨败,并直接帮助了盟军开辟北非战场的计划。 形势越来越不妙,傀儡政权加紧了对他们的搜捕。历经坎坷以后,1942年5月,他们逃到了英国。这时候的三杰只剩下了两杰,那位合作发明Bomba的Jerzy Rozycki先生在4个月前因一次海难已经去世。 在逃到英国之前,我们的Marian Rejewski同志以及发明了穿孔卡片的Henryk Zygalski先生,在法国的PC Bruno情报站里,和英国负责破译密码的首席科学家,上文提到过的Alan Turing先生有过会面。 怪异的不是这个,虽然说这本身也有点戏剧性。让人完全想不通的是,他们交谈后,Alan Turing先生居然拒绝Marian Rejewski同志和Henryk Zygalski先生参加英国的破译ENIGMA工作。为什么会这样,没有人知道真正的原因了。或许是为了垄断破译成果,或许是对外国人不放心,不管是什么,结果都是一样——他们来到英国以后,也有了份工作,也是破译密码——但是破译的是德国的SS密码,级别比ENIGMA要低。 因此,Marian Rejewski同志对英国的ENIGMA破译大本营——布莱彻利公园里发生的一切竟然毫不知情。 二战结束后的1946年,Marian Rejewski同志回到波兰,和老婆及俩孩子相聚了。身为数学家的他在一家工厂里找到了一份工作,倒也跟数字打交道——这次是当会计¥#@——并一直干到退休。 那么多年里,他对自己曾经做过的事情,一个字也没提过,看起来就是一个普通的会计而已。顺便说一句,会计他当的也不爽,因为他发现了别人的违规情况,因此一直还遭到嫉恨。 一转眼二十多年过去了。直到1974年,F.W.Winterbotham所写的那本轰动一时的解密著作The Ultra Secret的问世,才使Marian Rejewski同志得知那些年里英国人做了什么,也才使他得知自己的工作对英国人的帮助有多么巨大。而在这本书出版以前,英国对于布莱彻利公园里的故事,从来是作为最高机密予以掩盖的,Marian Rejewski同志对此自然更是无从知晓。 而1976年,William Stevenson出了本A Man Called Intrepid,是反映第二次世界大战的书,很畅销但是也很不严肃。其中,大概是对Marian(意思是圣母玛利亚的)这个名字望文生义吧,他居然把Marian Rejewski同志写成了一位女士。这就算了,他还一点也没提到Marian Rejewski同志的功劳。这也算了,他还不知道从哪里来的灵感,杜撰出了“卡车上的ENIGMA被偷走了”的荒诞故事。。。 Marian Rejewski同志真有点愤怒了,他联系了军事历史作家Wladyslaw Kozaczuk,详细讲了自己的过去。1978年,他接受了Richard Woytak的采访。也正是因此,如前文中提到的,我们才得以知 道他破解ENIGMA的思路和一些细节。 我们的Marian Rejewski同志出了大名以后,也没有过多久名人的日子。两年后的1980年2月13日,Marian Rejewski同志在华沙去世,享年74岁。 他被安葬于华沙Powazki公墓,这个公墓在波兰的地位大约相当于忠烈祠或革命公墓吧。为了表彰他的功绩,波兰数学协会授予了他一枚奖章。 而在这之前两年的1978年,波兰三杰的另一位Henryk Zygalski先生,已经在英国的普莱茅斯(Plymouth)去世了。 曾经的“波兰数学三杰”时代,就这样在上个世纪八十年代初期,最后拉上了大幕。 而英国的Alan Turing先生对Marian Rejewski同志难以理解的拒绝,不代表英国人都会遗忘这位昔日的数学英雄。 2000年9月,英国的安德鲁王子在访问波兰时,将一台从德国潜艇上缴获的ENIGMA机赠送给波兰,表示英国政府对波兰在破译ENIGMA密码中作出的贡献的感谢。 2001年4月21日,Marian Rejewski、Jerzy Rozycki和Henryk Zygalski纪念基金在波兰华沙设立,基金会在华沙和伦敦都设置了纪念波兰数学家的铭牌。 2002年夏天,在已经对外开放的布莱彻利公园里,竖立起了为波兰三杰而建造的纪念碑。 …… 波兰人在绝境中对ENIGMA的反击故事,在此就算告一段落了。如果说这个故事还有一点点可读性的话,那也是因为它纪录的是真正的历史,——真正的历史总会提供那么多朴实而令人震撼的细节,充斥着我们预料不到的演变和结果。而也正因为是真实,才会给人以更多的思考,毕竟,这些事情曾经就发生在昨天。 实际上,本章中所重点提到的Marian Rejewski同志,只是他所在的优秀破译机构的一个代表而已;“波兰数学三杰”之外,更多的波兰人也曾经为击败ENIGMA而工作着,历史却根本没有留下他们的名字。但是,他们的心血没有白费,每一条因为他们的工作而获救的生命都是对他们最好的奖赏。 更重要的是,波兰人那种面对强敌永不放弃的精神,才真正是ENIGMA惨遭失败的最重要原因。培根先生说过,读史使人明智。而在这个历史故事的系列里,如何击破ENIGMA的技术细节未必是让我们感触最深的,而波兰人顽强的精神大概才是最能给我们以一些启示的吧。。。 最后,我把Marian Rejewski同志1977年所写的一篇回顾性论文An Application of the Theory of Permutations in Breaking the Enigma Cipher(置换理论在破译ENIGMA密码中的应用)全文的英文版放在后面,供有兴趣的人阅读,也算是稍稍表达我对这种精神的一点敬意吧…… PDF版:http://frode.home.cern.ch/frode/crypto/rew80.pdf HTML版:http://www.impan.gov.pl/Great/Rejewski/article.html ----------------------------------------- --(完)----------------------------------------------- 也说说密码 (1001n) 终于有人开始谈论密码学了。。密码这东西太有意思了,确实是人类纯智力对抗的最顶峰表现。相比被媒体吹到天上的国际象棋大赛什么的,密码的对抗才的的确确表现了群体的支持下,智力会发展成什么样子…… 从似乎是亚历山大时代,用皮带缠绕木棍刻下文字,然后将皮带做为密信发给远方开始,密码的对抗就在不断升级。之后的简单加密,比如单字替代法,错位法,开始似乎都是很有前途的。但是,一个简单的频率分析法,让无论怎么替代的字母都得现出原形——谁让发明拼音化语言总有这个缺陷呢 与之同期出现的指代法和暗语法,相对安全一点。比如指代法,就象镖局主人兄所说的,用书籍和诗句中的内容掩饰。但是,一般的书籍发行不是一本,诗句也未必只有几个人知道。越多的人可能拥有加密的参考资源,密码也就越不可靠。 比较而言,暗语法应用更为广泛一些。比如二战时期日军用AF指代中途岛,已经是鼎鼎大名的例子了。只是,AF是被美军用特殊值法(嘿嘿)猜出来了,还有更多的没被猜出来,或者没被公布的。而没猜出来的,也就躲过去了,达到了密码设置的目的. 当密码发展到非单字替换的时代以后,大规模的密码对抗才真正开始成型。二战中伦敦的布列奇里公园成为了一个密码学上的里程碑,因为它有两重意义:第一,它集合了全国的天才,以集体智慧的形式真正开始了密码学意义上的国家对抗;第二,他们所对付的ENIGMA这种机器密码(每发送一个字母,密钥盘都会转动,无规律可循,——我记得不牢,它好像是三层密钥盘还是五层密钥盘层层变换加密来着,每天都用不同的电路排线结构确定当前唯一的转动加密顺序——除非你造出同样一台机器,或者得到每天变换的密码本),也是人类智力的杰作。而最后的结果是,ENIGMA被打败了,U艇一艘艘地沉没在冰冷的大西洋和太平洋的海底…… 吴宇森的风语战士,说的也是密码。一个只懂罕见语言的战士,被重点保护,以避免泄密——因为密码就是用他的语言写就的。个人看法,这应该只是军内的低级密码。而高级密码,不会那么简单,ENIGMA已经是个明显的例子了。 麦家以前写过几部小说,解密,和后来的几部,记不清名字了,从文学角度上,还是很好看的,有兴趣的兄弟不妨找来看看。 至于现在的密码,特别是我国的密码学进展,就实在很难窥到门径了。象前一阵子热闹的MD5被发现存在碰撞,就是一个很少见的浮出水面的例子。尽管MD5加密并不因此失去全部价值,碰撞也是有条 件的——但是如果任何一种稍微高级的密码以此原理写就,它的命运就只有一个了:被毫不留情地废弃。 再以前,新浪军事的海军论坛曾经巨牛无比的帖子《海军上校访谈录》里曾经以我军某海军上校的口气提到,咱们的密码,要是不懂易经八卦,趁早别碰……之类,呵呵,至于有没有那么神,那就不得而知了。可以总结的是,建国以前,我们的军用高级密码,是没有被对手破译的。建国以后就很难说了,我个人倾向于大概没有吧。但是近来经常说我国泄密严重,似乎总以文件丢失、机密被拍照之类的形式,具体到全面失密,也就是密码被破译,似乎还没听说过。话说回来,文件丢失之类的事件,或许又是敌方的幌子,为的是掩护真正的已经破译密码了。。也说不定。德军ENIGMA在二战中被破译了,英国不是冒着本土被轰炸的危险也绝对不动用破译出来的德军通信来抗击么?只是希望了,希望咱们的密码永远不要被破译,咱们的数学家、计算机专家、物理学家……多多用力,一定能够确保我们的安全吧。 最后,提一本书,名字叫《军事密码学》(好像是),大概是解放军出版社出的。。惭愧,记得不太清楚了。在我印象中,国内很少出这种书籍的。不过,书里也没有泄密,嘿嘿,主要是详细地讲了讲密码学的原理,比如,频率分析的公式,错位或替代加密的公式破解法,以及科普性质的密码学讲述。看起来,还是很有意思的,也很锻炼脑子,推荐给国内有兴趣的兄弟们读读。 最后提一句,忘了是不是麦家说的,“密码是人类发明的一个恶魔”……这话,仔细体会一下,真是很有道理啊。 ------------------------------------------------------------------------------------------ 标题:咔咔,我补充一下啊 韩亚梓 enigma最早出来时卖得很不好。商业的没人用,德国军方也没有兴趣。只是后来邱吉尔同学在他自己的一战回忆录里漏了底,德国总参谋部才恍然大悟。原来一战一开战俄国就从一艘搁浅的德国轻巡洋舰上弄到了全套的密码本,英国作为俄国的盟友自然也能轻易破解德国密码了。著名的多戈尔沙洲一战,其实就是密码被破惹的祸。醒悟过来的德国人立刻对enigma产生浓厚兴趣。人手加密是不成了,光机器加密也不成。万一机器被盗了呢?德国人想,enigma这样有多重安全设置的加密方法才是王道啊。机器丢了不怕,密码定期更换,泻露一点也没事。真正怕的是人,人要犯起傻来没得救。比方如果有人把同样的电报先明文发一遍,然后再用密码发一遍。这样敌人两厢参照,破起来就很容易了。所以,德军对密码纪律抓的很紧,有专门的 部门负责监视自己的无线电通信。一旦发现有犯傻的主,对不起,先抓后关。 德国海军对enigma的安全性尤其抓得紧。他们的密码机早期备五个转轮(机上一次装三个用),后来是七个。再后来是机上装四个转轮,最后一个比较薄,跟新的反射板一起占用原来反射板的空间。 关于泄密,其实老丘也不是头一个泄密的。 在他之前就有半官方的年鉴上暗示了德国密码被破的问题。不过老丘这话一说,德国人再鸵鸟也该认清问题了。当然这泄密不能全怪老丘,一战不是号称结束一切战争的战争嘛,战后大家自然是认为不会再有大战了。以前的事情说说也无所谓。 还有人问那个“对合”的意思((四)、波兰人的绝地反击(下上))——我研究了一下1001n兄的意思,用数学的方法解释似乎是这样: 设原始的字母数组α=[A,B,C,D...X,Y,Z],这个enigma机加密的过程可以用一个矩阵γ来表示,最后加密出来的字母数组β=[B,X,W,F,...A,R,S](我瞎编的)。那么,数学上的写法就是:β=αγ。这个对合的意思呢,就是说反过来写的话,α=βγ也能成立了。这样一来的话,γ矩阵就得是狠特殊的一类形式了。本来γ是可以随便取的,可enigma加的这个反射板一弄,能产生的γ就少了很多。这样一来,自然破解比较容易。 其他的,还是请1001n兄继续。

本文来源:https://www.2haoxitong.net/k/doc/374949717fd5360cba1adbec.html

《被征服的谜 - ENIGMA的故事.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式