主题:【原创】密码传奇(三):23、纯技术篇之ENIGMA究竟输在哪里? -- 1001n
ENIGMA作为一代名机,以极高的起点傲然出世,多年后又遭到了毁灭性的打击;再联系上波澜壮阔的二战,其戏剧性之强,在密码学历史上,实在最有看点的一段对抗。
“没有刺不穿的盾”,这句话在密码分析中,更有具有特别的味道。如果我们把破译按时效性分为有效破译和无效破译(比如我们今天再去破译当年的德军电文)的话,那么英国人的有效破译甚至已经发展到了“准实时”的程度,某些时候甚至比敌方统帅更早看到报文——ENIGMA竟然惨败到这种程度,也着实令人慨叹。
由于自作聪明的反射板的设置,使ENIGMA出现了“对合”或说“自反”的特征,而这,大大简化了需要暴力穷尽的对象数量,也因此使有效破译成为可能。
但是,英国人对ENIGMA那令人瞠目、史无前例的全面有效破译,难道仅仅是由于ENIGMA自身设计上的问题么?
我个人认为:绝不是。
甚至,很可能都不是最重要的问题——关键的关键,不是机器本身,而是制定规则的人,和使用机器的人。
我们说ENIGMA是一代传奇名机,不仅仅是因为它的诞生得早,也不仅仅因为它跟纳粹德国那剪不断的关系。其实,ENIGMA是历史上第一种,很有可能也是迄今为止唯一 一种既广泛而长期地投入实用,又被相当彻底地“曝光”的机械密码体制。
说真的,当1001n每每翻查资料,对比ENIGMA和其它密码机乃至其它密码编码体制时,不禁常常感慨:要是所有密码编码体制都能得到ENIGMA这样的“优待”,每个都有丰富的资料可以查对,那我们的密码传奇系列,又该增加多少有意思的篇章啊。。
ENIGMA,由此成为密码学上一个非常非常经典、非常非常难得的生动标本;仔细分析它失败的原因,对我们更深入地理解密码学实践中的一些基本原则,应该有着极大的帮助。那么,我们不妨就在这里,认真看看德国人在ENIGMA身上犯过的大大小小的错误吧。
总的来说,ENIGMA的失败,大概有七个比较大的原则性失误:
一、军民混用
从一开始,ENIGMA就不该出现在民用市场上。
尽管民用型号和军用型号有着不小的差别,但是三个转轮,每个转轮有26个位置,每加密一个字母转轮运动一次——诸如这些最基础的设置,在ENIGMA被发明出来的二十多年里,从来就没有变过(M4型ENIGMA有四个转轮,但三转轮构成的转轮组仍是它的基础)。
试想,如果ENIGMA从来不曾上市,当敌方截获ENIGMA密电时,能不能很快发现这是由什么办法加密出来的?能不能迅速反推出机器内部结构?
没见过实物,没操作过实物,特别是没有见过所谓的“反射板”时,敌方又怎么会知道ENIGMA密文有“对合”的性质?又怎么能发展出关于“字母循环圈”的理论?进而,又如何研制出破译机器?
战后,论及ENIGMA的失败时,当年德国空军密码处官员自己都认为,允许ENIGMA自由出售,甚至允许在国外出售,
这样做,一开始就给潜在的对手的破译工作,提供了重要的有利条件。
而卡恩,更是把这一条作为ENIGMA失败的四大技术性原因之首。
具体到ENIGMA的发展史,我们可以看出,这也是没办法的事情:先有民用型号,再被军方看中,才有军用型号的陆续登场——对密码机公司来说,这很上算;但对于大量采购而很少改动原型原理的军方来说,恐怕就完全是个错误决定。
ENIGMA本身是一种并不很怕被公开的机器,毕竟它的保密基础是密钥(转轮设置、连接板交换字母设置等)而不是算法(机器本身)。但是,如果能够不让对方知道算法,是不是更可取一些?
总之,正如后来遭到德国破译的美国M-209密码机一样,它们都是吃了军民混用的亏。
二、叛卖
在波兰篇里,我们已经介绍过德国奸细是怎么把ENIGMA军用型号的详细资料传递到法国,尔后又被交流到波兰的。
再好的机器保密制度,也经不起叛卖。
三、使用规则制定错误
1、初期转轮组设置的变动周期太长
直到1935年12月31日,这些设置还是三个月一变(季密钥),从1936年1月1日起一个月一变(月密钥),同年10月1日起改为每日一变(日密钥),后来在二战中,才终于缩短为每8小时一变。
如此磨蹭地缩短变动周期,确实给波兰人提供了太慷慨的破译时间。
2、转轮进位点设置错误
为了让ENIGMA转轮组的步进和进位看起来更复杂一点,德国人特意固定了设置,结果是这样的:
转轮名 进位点
1号转轮 Y
2号转轮 M
3号转轮 D
4号转轮 R
5号转轮 H
因此,转轮组运转起来,猛一看确实令人眼花缭乱,很难一下找到北。
可是,由于每个转轮都有自己独特的进位点,那么对敌人来说,一旦完全破译了转轮组中转动最勤快的右轮的具体设置,就可能暴露出它本身是几号转轮。依此类推,当德国人更换右轮为其它转轮时,那么被新换上的转轮也就跟着倒霉了——雷杰文斯基正是这样,一个个地破解了转轮的内部设置。
直到1938年,德国人似乎才明白过来;他们在新增加的6、7、8号转轮上,确定了相同的进位点。
这一次,改正不算太迟——虽然已经投入使用的5个转轮,无一例外都已经被敌人彻底搞清了内部设置。
3、加密的临时密钥通过密文传送
1938年起,临时密钥被要求连写两次并加密;这是ENIGMA使用规则上的一个极为重大的错误,由此催生出了波兰的Bomba。
波兰灭亡后,直到1940年4月底为止,这种办法还在被沿用,只是做了少许修改:被加密出的六个字母改放在报头第四到第九个字母的位置;至于增加的前三个字母,则是转轮组的当前位置。
《密码编码与密码分析:原理与应用》一书的作者,弗里德里希·包尔尖刻地评价道:
使用指标组(即密钥),削弱了密码的安全性,而德国人对此毫无顾忌,因为指标组是由ENIGMA加密的,而ENIGMA被认为是坚不可摧的。谁也没注意到,这是一个逻辑上错误的怪圈。
但在这一点上,全怪德国人也是不公平的——在公开密钥加密体系被聪明人琢磨出来以前,“如何安全而又高效地传递密钥”始终是传统密码学的一个命门。在以后章节涉及公开密钥体系的时候,这个话题会再做适当延伸的。
总之,德国人面对的是一个历史性的难题——如果他们无法通过“三次问答式加密传输”来解决这个问题的话。困难非常之大固然不假,但是他们给出的答案,也实在是太糟糕了。
4、新旧机型的混用
打个不太恰当的比方来说,这完全就是在自毁长城。
a、党卫队保安处(Sicherheitsdienst)方面
1938年9月15日,德国改变了加密规则;三个月后的12月15日,启用了第4、第5号转轮。
但是,党卫队保安处并没有跟着改变加密规则,却也按期启用了新的转轮。这样一来,第4、第5号转轮总有机会被选用,其中就有被安装为转轮组右轮的可能;而波兰人对于破解右轮的内部配线,实在是太熟练了。
结果是:两个新转轮投入使用不久,就都被波兰人彻底破解。
b、海军方面
1942年2月1日起,海军M4型ENIGMA装备U艇。但当它们与海岸电台联络时,对方装备的仍是旧的三转轮型ENIGMA;为顺利通讯,M4的第四转轮必须空置,同时前三个转轮还必须与海岸电台ENIGMA保持一致。
1942年12月13日,破译的密电使英国人知道了这个情况。由此,英国人只需在已经破译的三转轮型ENIGMA的基础上,最多再做26次试验即可破译新型的M4。
就在得知这个关键情报的当天,困扰了英国人十一个月的M4被一举拿下,代号为“海神(TRITON)”的密钥网全部遭到破译。由此,令英国人伤心绝望的所谓“灯火管制(Blackout)”期(盟国损失了1160艘舰船,共计六百万吨),被彻底终结了。
类似的事情,还发生在纳粹海军水面舰艇部队里;他们的小型舰船是不装备ENIGMA的。当它必须和大型舰船联络时,只有使用自己的双码替代方式手工加密电文——而这样的方式,大型舰船自己一般是不用的。但出现紧急情况时,比如接到小型舰船附近发现敌舰的通报,就需要立即联系小型舰船,这时也只好把ENIGMA通报先脱密成明文,再“翻译”成小型舰船“看得懂”的双码替代密文发送过去。
而双码替代密文的破译,难度比破译ENIGMA要简单的多。这就意味着:“新”的双码替代密文,必然跟“旧”的ENIGMA密文之间有相当大的关联;而在电文来往之间,什么都泄露了。
布莱奇利庄园的专家们称这后一种现象为园艺;意译过来,颇有点“无心插柳”的味道。
5、自我毁灭式的密钥网络设置
纳粹海军上将Ludwing Stummel在密码学上的无知和过分热心,再次导致了U艇的灾难——他不辞辛苦地建立海军密钥网络,至1944年中期,甚至每艘U艇,都已经有了自己的独立密钥。
看上去很美的事物,往往经不住逻辑的推敲:U艇经常是就近组队、集群作战的——在这种情况下,同一份电报明文(比如天气预报、作战命令、战况通报)等必将以不同密钥加密后发送;考虑到U艇未必都能同时接到电文(比如潜到一定深度以后),有时候这样的密电还会转天再次发布。
在纳粹海军司令部,没有人会有耐心,专门为每艘U艇单独拟定内容相同、文字各异的电报;在各个密钥网络,情况也是如此——而在盟军,却相当注意这个问题;即便不伪装报头报尾,至少也会把同样的电文分割成两部分发送。
对国家信息安全而言,建立多密码体系、多密钥网络并存的状态是正确的,但是前提是:必须适当伪装需要多途径播发的明文;否则,从密码分析角度来看,纯粹就是找死。因此,德国人这种看起来是为了给敌人增加麻烦的做法,最终正是搬起石头砸了自己的脚。
不仅是海军,陆军的情况也类似。1944年7月,陆军北方集团军群的作战日志就记载着,仅仅在这个集团军群内部,就有11个不同的密钥网络。而遍布德军三军的二百多个密钥网络,干的也是同样的事。
同样明文经过不同密钥加密,结果只能是参与的密钥网络越多,受到的损失就越惨重——最起码,德国人用自己将近三万条潜艇兵的生命,证明了这条密码学原理是多么地不该被遗忘。
6、不同密级文件,都由ENIGMA处理
想给在司令部工作的朋友来份生日祝福?还是向各车站发布火车时刻表?诸如此类不着调的事儿,只要有必要远距离传送,德国人都不在乎把它们变成ENIGMA密电。
不同密级的电文(甚至有些根本没必要加密的电文,比如天气预报)使用同样的加密系统,本身就对高密级电文和加密系统本身造成了危害。
更有甚者,戈林元帅属下骄横狂妄的空军部队,在使用ENIGMA时简直是无所顾忌;而邓尼茨元帅属下的海军潜艇部队,更是被布莱奇利庄园的专家戏称患上了“多话症”——其结果很简单,那就是纳粹空军的密钥网很早即被成批攻破;而U艇,更成了水兵们的海下坟场。
又一条被鲜血染红的密码学规则:
不必加密的,就不要加密。
7、电文格式错误
a、关于标点
除了个别型号以外,ENIGMA键盘上是没有标点符号的。一般而言,电文也不需要标点,文体本身是十分紧凑的;特别是在高级别密码领域,绝对要压缩掉标点——这是一项铁律。
但是德军偏偏画蛇添足,规定y表示逗号,j表示引号,xx表示冒号,yy表示分号。这样一来,报文倒是清晰好看了,可是大量出现的规律性的标点符号(特别是如重码XX、YY这样形成的标点),又为对手分析密文提供了新的素材。
b、关于数字
①数字的界定
ENIGMA键盘上同样没有数字,为此在需要输入数字时,德军规定在数字的起始各加一个比较少用的字母y,用以界定;比如535,如果用中文打比方的话,就要写成y五百三十五y。
实话实说:这种无意义的充填,只是在降低对手破译的难度。
②数字的替换
此外在1937年,还出现过更糟糕的情况;这次的主角,又是党卫队保安处。
他们内部要求很严格,规定对于要发出的明文,先要由军官手工加密一次之后,才交给报务员用ENIGMA加密发出。
这个规定本身是挺好的,效果也不错:波兰人同样破译了党卫队保安处发出的ENIGMA密电,但是恢复的明文根本就无法通读;因此大家被搞糊涂了,觉得党卫队保安处用的大概不是ENIGMA,而是别的什么加密系统。
就在这时候,党卫队保安处需要发出的某份明文中,出现了一个阿拉伯数字1。应该指出的是:军官手工加密变换的是字母,对于数字是不管的;因此经过这一步后,这个1并没有被改动。之后,军官也似乎没有和报务员沟通该怎么解决这个问题,以至于在发报时,报务员无法打出这个数字1,就擅自将它改成了EIN(德文中的数字1)。
因为EIN并未被手工加密,因此在已经被破译的ENIGMA电文中分外扎眼。细心的波兰人顿时明白了:党卫队保安处用的还是ENIGMA,只不过经过另一次加密而已——有了这个重要的提示,他们很快就发现,这另外的一次加密是种非常简单的手工加密;而党卫队保安处的电报,从此被全部破译。
③数字的指定和重复
更要命的是天气预报。纳粹海军规定,用字母A-Z(X除外)对气温进行编码,结果就是:
A:28℃ B:27℃ C:26℃ …… W:6℃ Y:5℃ Z:4℃
然后随着温度的降低,使用的字母顺序再次循环,即
A:3℃ B:2℃ C:1℃ …… W:-19℃ Y:-20℃ Z:-21℃
——乍一看,真是聪明啊:谁会把气温误读,以至于错为25℃范围外的另一个数字呢?类似的,水温、气压、风向、风速、能见度、云层深度、经纬度等等这些指标,也都按预先确定的字母顺序编码。
实在是很简明扼要;只可惜啊,这些由变化很小的变量构成的天气预报,对敌人来说,差不多就是明文广播。
顺便补充一点:当时欧洲一般盛行西风……
c、关于重码
某些德国人认为重要的词,比如an(大致相当于英文的to,常常出现在报头,用于表明接受方),和von(大致相当于英文的from,常常出现在报尾,用于表示发送方),在送交ENIGMA拍发前,往往会被改写成ANAN和VONVON。
有的词,其中的字母还必须重复写三遍,比如替代Befehlshaber der U-Boote(U艇艇长)的BDUUU,替代Oberkommando der Marine(海军司令部)的OKMMM。
在回答关于美军口令问题的电文中,德国人还强调性地使用了CHICKEN WIRE CHICKEN WIRE。
——是不是怕对手注意不到这些送上门的礼物?
不知道。
d、关于敬畏
不该重复的重复了,该压缩的又不敢压缩——比如对于有些电文中无可避免的Heil Hitler(希特勒万岁),就没什么人,敢从什么密码学安全的角度予以压缩。。
那么变通一下,用别的字母挨个替换一下?遗憾的是,如“heilhitler”这样由“1234135426”形式构成的德语单词或词组,根本就没有第二个——换都换不成。
英国人破译了ENIGMA电文后,常常能够发现报头和报尾都充斥着无意义的废话。这时,就连他们都觉得实在受不了德国人的愚蠢。
多说一句题外话吧——写到这里,就不由自主想到我国的一些密电,会不会也有一些不该、不能、或者不好压缩掉的成套话语?
想起来,杞人忧天一般,总是心下不安。
e、关于压缩
明文如果需要经过加密发送,应该经过一些修正;但在ENIGMA投入应用的早期,大量明文是被直接拍发的。
作为电文,报头肯定要写明发给谁,因此“an(相当于英语的to)”是少不了的。当时,德军规定X是空格,而明文开头的“An 某某某”,也就很自然地被加密为“ANX某某某”——前面我们说“an”往往要被复写为“ANAN”,那已经是后来的事了。
明文报头出现ANX,似乎没有什么好奇怪的;但是,如果一大堆明文的报头都同样是ANX的话,情况又会如何呢?
更要命的是,这个“不压缩非必要明文”的土鳖习惯做法,还被前文提到的那个德奸透露给对手了……
8、自做聪明
这一条要说的,和跟前面所说的“漫不经心”相反,完全是多操了白费的心——或者说,是典型的“好心办坏事”。
①转轮排列问题
转轮组有左轮、中轮和右轮之分,候选转轮也有多个;而德国人为了防止给对手可乘之机,专门规定:
禁止连续两天在同等位置放置同号转轮。比如,昨天的左轮是4号转轮,那么今天的左轮就不能是4号转轮;
禁止在一个月内出现相同排列的转轮组。比如,本月3日的顺序是左2-中4-右1,则这个顺序在这个月都不能重复出现。
后果是:德国人犯的这个“人工随机”的大错误,大大节省了英国人连续多日破解ENIGMA密电的时间——昨天有的、这个月有的,都不用再去试探了……
②连接板交换字母问题
德国人规定,
连续字母对不许被交换。比如A-B,M-N这样的;
在连接板上,处于上下相邻的字母对也不许被交换。比如E-X,U-N这样的,见下图。
这个规定很受布莱奇利专家的欢迎,因为它明显提高了英国Bombe的工作效率——剔除了这些实际不会产生的可能性后,Bombe的速度又有了很大提高。
四、操作错误
1、懒惰的报务员
a、看着键盘随手就打
按使用手册规定,临时密钥那三个字母,都是由操作员任意选取的。人肯定是有惰性的,特别是在没有规则强力禁止的前提下——每天要发送不知多少电文的操作员们往往偷懒,看上一个字母就连敲三次,造就了大量诸如AAA,KKK,ZZZ这样的三重码,或者PYX、NML这样在ENIGMA键盘上水平相邻的键盘顺序三连码,见下图:
1933年春天,这样的行为才被明令禁止。
但是,一些更隐蔽的偷懒行为在当时并没有被及时纠正:比如ABC,HIJ这样的字母顺序三连码,以及QAY、RFV这样斜向相邻的键盘顺序三连码。
又一份送给波兰对手的礼物——雷杰文斯基仔细观察了四十个这样的临时密钥。结果是令人震惊的:这四十个密钥里,有三十八个都是三重码,或者键盘顺序相邻的三连码。
只有两个例外,分别是ABC和UVW——在键盘上,它们不相邻;但是,在字母表上,它们还是字母顺序三连码。
这样偷懒,后果很严重,波兰人很高兴:起初他们并不知道德军规定要在电文报头先打两遍临时密钥,直到破译了这些随手敲出的偷懒字母组,才明白了德军的电文规则。
b、想着设置随手就打
还有更懒的。
德军后来改了报头的规则,即先打日密钥/或后来采用的当前密钥,尔后再重复打两遍临时密钥,共计九个字母。规定出台以后,懒惰的报务员们就把日密钥/当前密钥直接作为临时密钥,吧唧吧唧再连打两遍就算完事——例如,现在的机器设置是KWN,那么,临时密钥跟着就成了KWN,然后连打两遍KWNKWN。
这就意味着,KWN三个字母,被连续加密了三次。结果是英国人很同情地看着愚蠢的德国报务员,并把这个缺心眼儿行为称为JABJAB——在密码学历史上,这也是个挺有名的错误类型。
顺便说一句:大家也不要因此就特别瞧不起德国报务员,因为美国报务员也好不到哪里去——当他们被允许可以自由选取六个字母作为报文密钥的时候,往往喜欢从女朋友名字里找六个字母交差;说是浪漫,其根源还是偷懒。
结果是:一天的多份密电,其密钥都一样;不仅大西洋这边的报务员觉得自己很帅,而且大西洋那头的隆美尔元帅的心情也很好——这美军的M-209密码机,简直就是个送情报的机器嘛,值得表扬!
c、懒得改转轮设置
1940年5月起德军规定,ENIGMA不再统一使用日密钥,而是由报务员自由选定各转轮的起始位置作为当前密钥,并用三个字母表示,发在报头的最开始处。
结果,报务员又偷懒了——就在当月,布莱奇利庄园的破译专家John Herivel,发现这个月截获电文的特点是:每天某一部ENIGMA发出的新电文的起始位置,往往非常接近它前一天的最后一封电文的结束位置。
“懒得挨个把转轮们多转几圈”,正是这一现象产生的直接原因;而后果嘛,自然是需要计算的可能性立刻大大减少喽。
2、懒惰的负责军官
类似的事件还发生在德国空军。一名负责管理电台的军官命令手下,第一份电文结束的转轮组位置直接作为第二份电文的起始位置,第二份电文发完后的位置作为第三份的起始位置,……如此执行。
战后盟军破译专家说,由于他的这个规定,大家只要破译一份“总长度为所有电文之和”的大电文就可以了,因为中间的密钥变换统统可以忽略掉——也是在战后,那位空军军官总算是明白了自己曾经有多愚昧,他深情地说:
当时,如果按密码机使用说明来做就好了。
呵呵,呵呵。
五、战时丢失
1940年2月12日,英国海军俘获了U-33艇,而艇上的报务员居然忘了把ENIGMA的转轮们扔到大海里——结果,继前五个转轮后,6号和7号转轮也被英国人彻底掌握。同年8月,8号转轮也被缴获。
1941年8月,在M4启用的前半年,U-570被捕获;搜查潜艇,只找到了ENIGMA的空箱子。但是英国人注意到:箱子上为第四个转轮留出了放置位置。
英国人由此确定:四转轮型的ENIGMA即将装备纳粹海军。
类似的事情,连续发生在装备着ENIGMA的德国海军Polares号、U-13、Krebs号、Muenchen号气象船、U-110、Lauenburg号气象船、U-559……等等大小船艇的身上。
好运气不光在英国人一边;1944年6月30日,U-250沉没在芬兰湾——看看地图就知道,为什么这次轮到苏联人捡了个大便宜。
更严重的是,德国人每次都为自己找到了借口,而不是以最坏的打算和最快的行动弥补已经产生的损失;这个话题,下一条还要继续谈。
六、对ENIGMA安全性过于自负
1、过高估计ENIGMA的安全性
a、海军
纳粹海军总司令部曾经颁发了关于保密的第949号海军勤务规定,其中在关于紧急状态下如何销毁密码的条目里,明确规定了“销毁ENIGMA及其转轮”仅是位列第三的任务。
这也难怪在战争期间,为什么U艇上的ENIGMA常会因为“来不及销毁”而被生擒——究其根源,正在这里。
b、陆军
1944年6月,纳粹陆军总司令部发布了一个内部通知,其主要内容就是强调通信保密纪律。通知还列举了很多实例,但是全文中却找不到任何关于ENIGMA密码可能被对手破译的警告和提示。
2、大大低估对手的能力
ENIGMA多次丢失,此外经过多年使用、多次小修小改,早就面临被破译的危险。但是,德国人往往总是不能正确认识到这一点,虽然战争期间也有不少人和单位(比如邓尼茨、陆军第16军、陆军北方集团军群等)已经怀疑ENIGMA遭到破译,但后来还是在各种侥幸心理支配下继续使用,最终使自己付出了惨重的代价。
在这个问题上,海军的邓尼茨元帅的确比他的元首要强的多——面对战果的大幅度减少和损失的大幅度上升,他曾经明智地怀疑ENIGMA出了问题。但是他的手下不相信英国人能破译,为此给出了各种似乎“合情合理”的解释,并成功打消了邓尼茨这个密码外行的疑虑,直接导致了更多的U艇踏上了深海不归路。
在这个方面,他们远远不如美国人做的到位:1944年,美军在法国丢了一台密码机;从那时起,美国密码机构开始连轴转,很快在军内全部更换了同型机器的转轮。此外,当他们得知自己的武官密码已经被德国人破译后,立刻就启用了新密码——所以,一名美国密码分析人员才敢说,
我们从未象德国人和日本人那样骗过自己。
就是到了大战结束二十五年后的1970年,当年纳粹海军无线电侦察部门的负责人仍然确信,盟国不可能破译M系列ENIGMA;更夸张的是,到了大战结束二十九年后的1974年,第一批“超级”情报已经被解密之后,当年纳粹海军中主管海战密码的负责人仍然宣称:
我认为这些是完全不可能的。
联想到另一位密码外行,也就是纳粹元首希特勒所说的,
没有德国专家的帮助,世界上没有任何人能够揭开这个谜。
再到密码内行,就是某些德国专家也认为:英国人不可能破译ENIGMA,除非他们造出一间房子那么大的机器——结果英国人真造出来了Bombe,而且确实不比房间小多少……
等等这些,我们只能长叹一声:坑灰未冷山东乱,刘项原来根本就不读书——其实,早在1883年,克尔克霍夫斯就把一句极为精辟的密码学名言扔到了世间:
只有密码分析者,而不是任何人,能够评价一个密码体制的安全性。
这句话,应该成为所有密码工作者时刻牢记的座右铭。
七、ENIGMA被过分重视
纵观整个二战期间,德国投入实用的其实只有ENIGMA、LORENZ公司的SZ40/SZ42以及西门子的T52,共四个种类的密码机。其中,ENIGMA装备最广(从军队到地方,从中央到地方),时间最久(从军用型开始计算,共19年),是第三帝国最为中坚的密码机器。
ENIGMA的过分兴盛,其实正埋伏下了它日后全面崩溃的一笔。
不难设想,ENIGMA一旦被破译,必将使整个纳粹德国的损失极为惨重——这就是“单一密码体制”的最大致命缺陷。反过来说,如果各位是盟国领导人,又得知对手主要使用ENIGMA以后,会不会集中全部力量对它进行破译,以图“毕其功于一役”?
而且,由于ENIGMA被过分重视,才导致它的服役时间过久;在这么长的时间里,德国人宁可一步步地升级ENIGMA,也不肯断然淘汰ENIGMA而换另一种密码体制。这样一来,敌人也就有可能逐步跟进ENIGMA的演化,而不至于突然出现断顿——如M4型ENIGMA造成的“灯火管制”,实在是个特例。
总之,正是因为德国人信任它的“安全”,才会全面铺开使用,而且一用就是十九年;进而,才会让ENIGMA的“不安全”发挥到最大限度,结果造成了最大的损失。
这,大概就是辩证法吧。
总结:
在德国人使用ENIGMA的过程中,几乎各种可能出现的安全漏洞,都被他们生动地演示过了。我们说ENIGMA这个标本难得,也就难得在这里;谁还能把错误全犯一遍呢?
而这德国人,还就真能!
我们前文提到的那位布莱奇利庄园六号棚屋的负责人,亲自参与了破译ENIGMA并直接改进了Bombe的威尔士曼,应该是最有资格对ENIGMA的错误做个评价的了;而他,是这样说的:
德国人的错误……从头至尾,完全不是ENIGMA密码机的理论错误,而是机器操作程序、报文处理程序、无线电发送程序的弱点。总之,由一点失误演变成所有程序上的错误。
这些话告诉我们,在密码学的实践中,“人”的因素是多么的重要。再好的密码设计,碰上瞎指挥、乱规定、老偷懒、找借口、盼侥幸……等等形形色色的人们,也必将是死无葬身之地。
威尔士曼还说了一句话,更加意味深长:
ENIGMA密码机,就其本身而言,如果被正确使用,将会是坚不可摧的。
“坚不可摧”的ENIGMA密码体制,最终还是遭到惨败。
而这一切,对今天的密码科学,又有着怎样的启示呢?
------------------------------------------------------------------------------------------------
至此,【密码传奇】之ENIGMA【纯技术篇】全部结束,感谢大家费心观看!
本帖一共被 3 帖 引用 (帖内工具实现)
欢呼一下!
不过这篇好象没那么难。
自己觉得,一路把故事看下来应该是比较轻松的;就是太长了。可也没办法,谁让它问题太多呢——考虑到马上就要发下一篇,也就没截断分开发了。只是,看起来难免辛苦,hohoho~~
也有以此相对轻松的篇章,一洗“【技术篇】从来让人头大”恶名的意思,嘿嘿。能不能成功,就看这最后一锤子买卖了
要求讲这个故事!
第一第二是什么啊?
回答这个简单问题,要查的书可就太多了……抱歉抱歉
慢慢琢磨。
密码兄的文章得一个字一个字的看,否则就会晕过去。
应该是
1. 派人销毁密码机操纵者,防止密从口出
2. 干掉杀人者,还死者以正义。
怎么也犯这么愚蠢的错误呢?看来个体差异还是很明显的。
花贺!
说实话也是很奇怪, 面对巨大的损失, 德国人为什么就不知变通, 死活抓住ENIGMA不放呢? 民族性格使然? 无论如何, 对我们的确是敲响了警钟.
制定密码体系时,一定要把所有密码操作者假设为傻瓜...