西西河

主题:【原创】密码传奇(三):23、纯技术篇之ENIGMA究竟输在哪里? -- 1001n

共:💬18 🌺43 新:
全看树展主题 · 分页 下页
家园 【原创】密码传奇(三):23、纯技术篇之ENIGMA究竟输在哪里?

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拍发前,往往会被改写成ANANVONVON

有的词,其中的字母还必须重复写三遍,比如替代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【纯技术篇】全部结束,感谢大家费心观看!

关键词(Tags): #密码#破译#ENIGMA#布莱奇利元宝推荐:不爱吱声,

本帖一共被 3 帖 引用 (帖内工具实现)
家园 这么有名的沙发被俺抢到喽!

欢呼一下!

家园 我一看到技术篇这样的字眼就晕

不过这篇好象没那么难。

家园 是啊,好东西还得靠牛人用。
家园 确实是,这次的技术篇不用晕,基本是连环故事了

自己觉得,一路把故事看下来应该是比较轻松的;就是太长了。可也没办法,谁让它问题太多呢——考虑到马上就要发下一篇,也就没截断分开发了。只是,看起来难免辛苦,hohoho~~

也有以此相对轻松的篇章,一洗“【技术篇】从来让人头大”恶名的意思,嘿嘿。能不能成功,就看这最后一锤子买卖了

家园 嗯,发现一个小辫子,抓住

正如后来遭到德国破译的美国M-209密码机一样

要求讲这个故事!

家园 这个问题……

纳粹海军总司令部曾经颁发了关于保密的第949号海军勤务规定,其中在关于紧急状态下如何销毁密码的条目里,明确规定了“销毁ENIGMA及其转轮”仅是位列第三的任务。

第一第二是什么啊?

家园 这个比较抱歉,实在是没有时间和精力再写德国篇了

回答这个简单问题,要查的书可就太多了……抱歉抱歉

家园 被引用的资料上没提,我也不清楚,呵呵
家园 花上一朵。

慢慢琢磨。

密码兄的文章得一个字一个字的看,否则就会晕过去。

家园 我觉得

应该是

1. 派人销毁密码机操纵者,防止密从口出

2. 干掉杀人者,还死者以正义。

家园 德国人似乎是以严谨和高效著称的

怎么也犯这么愚蠢的错误呢?看来个体差异还是很明显的。

家园 【击节送花】密码巨著,镇河之宝

花贺!

家园 老兄辛苦了, 新春快乐, 得好好歇一下

说实话也是很奇怪, 面对巨大的损失, 德国人为什么就不知变通, 死活抓住ENIGMA不放呢? 民族性格使然? 无论如何, 对我们的确是敲响了警钟.

家园 人是最有创造性的,也是最容易出错的一环

制定密码体系时,一定要把所有密码操作者假设为傻瓜...

全看树展主题 · 分页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河