西西河

主题:【原创】密码传奇(三)、10:纯技术篇之活拆了ENIGMA (1) -- 1001n

共:💬19 🌺32 新:
全看分页树展 · 主题
家园 【原创】密码传奇(三)、10:纯技术篇之活拆了ENIGMA (1)

ENIGMA与同时代的密码机比起来,的的确确算个异数。而这个“异”,又“异”在哪里呢?

首先,它的加密-解密同相的操作方式肯定算独树一帜;

此外,它兄弟众多,直系(国内的种种版本)和旁系(海外衍生版本)都是“机”丁兴旺,堪称为一款超人气的密码设备;

再次,从1918年它被发明出来,1926年被军队采用,到1945年纳粹灭亡为止,这二十七年的时间里改来改去,却始终顶着个ENIGMA的名号;何况,即便在战后,依然有不少国家在使用它——在参加过二战的密码机里,的确算是个寿星了。

——称它为“异数”,应该不是言过其辞。

在【波兰篇】里,1001n曾用文字粗略介绍了一下ENIGMA的构造和运行原理。据大家事后反映,效果还是很明显的:“看不懂”“晕了”“下决心,以后看到原理就跳过去”……如此等等,感动得真是涕泗横流啊,呵呵。。

时光荏苒,这不,只一晃,ENIGMA系列就已经讲到了【英国篇】,并且,即将讲到针对ENIGMA的破解了。可是,1001n扪心自问,在写了如此之长的ENIGMA故事之后,这ENIGMA到底是个什么,究竟讲清楚没有?

没有!

几万字的东西,居然没把核心介绍明白——这样的连载,怕也只有西西河才会宽容的下吧。。总之一句话,从写完【波兰篇】起,心里就总是隐隐有个结,总觉得意犹未尽,至少是没有达到自己的标准。

那么,这次正好可以借这个机会,来好好弥补一下。并且,【波兰篇】中,涉及到的ENIGMA型号,是截至到波兰灭亡的1939年之前发展出来的;之后,ENIGMA又有了长足的进展——认真介绍一下,怕也不是多余的。

起码,这样也有利于大家更深入地理解ENIGMA究竟是个怎样的机器;而加密这种神乎其神的过程,又是如何通过机电设备具体实现的——其实真搞明白了就会发现,这个手段也并不特别高深,是我们各位都完全可以理解的。而哪怕只是从知识的角度去欣赏一下,不也是挺好的么?

何况,ENIGMA作为出现较早的转轮密码机,它的结构是非常典型的;如果能够理解这密码机的构造,对认识后文将渐渐涉及的其它密码机,也会有相当大的帮助。

最让1001n手痒和心痒的原因,却起于另外一个发现——在1001n寻找资料的漫长过程中,搜索并浏览了相当多的中文论坛和站点。这其中,涉及到英国破译ENIGMA故事的文章简直是汗牛充栋,偶尔也能看到个别介绍ENIGMA原理的章节。但是,1001n没有找到哪怕一篇文章或资料,比较全面而清晰地介绍ENIGMA的内部构造,和它的详细工作机制。

换言之,“密码机打开以后是个什么样”,“密码机到底是怎么一步步加的密”,诸如这样的问题,几乎就没有一篇公开的中文文献描述过。

“首次披露”总是很诱惑人的;那么,咱就不自量力地来填一次空吧。

这次吸取了【波兰篇】折戟沉沙的教训,二话不说,配图!配图!!

以及,所用之图,除了个别几张,完全是公开版权的图片,大家放心观看便是:)

ENIGMA型号众多,但是,它的基本原理始终没有改变;某些细节和附加功能的增减,总体来说,对我们描述ENIGMA也不会造成很大的困扰。至于具体型号特有的结构,将会在文中介绍时,予以附带说明。

前言够长了,那就开始吧。

--------------------------------------------------------------------------------------

粗粗研究一下,照1001n的观点看,这ENIGMA机器可以被分成几个功能模块,分别是

输入部分

加密部分

输出部分

其中,输入部分和输出部分都比较好理解;输入部分就是键盘,如图:

点看全图
外链图片需谨慎,可能会被源头改

这张照的主题可够突出的,真是除了键盘啥都没有

而输出部分就是块显示板,它下方是以键盘形式排列的小灯泡组。输出哪个字母,哪个字母位置底下的小灯泡就亮起来,从显示板上就能直观地看到,如图:

点看全图
外链图片需谨慎,可能会被源头改

显示板,主题同样地突出

这就是发光部分的核心——小灯泡,嘿嘿。

点看全图
外链图片需谨慎,可能会被源头改

显示板每个字母位置下边,都是这个小东西在发光发热

就不由得遐想起来:如果是现在发明这东西,这小灯泡肯定该换成发光二极管了吧?又省电,又能换颜色,又不爱坏,还不发烫——关键是,便宜啊!别说和今天的液晶显示板比,就是和今天的小灯泡比,价格上也无非是伯仲之间啊,呵呵。

这些地方都很好理解;真正要费点劲儿才能想明白的,就是它的加密部分

从原理方面我们可以知道,ENIGMA的加密是在多表替代基础上,再加一次单字替代组合成的;因此,它的加密部分可以粗略分解成两个模块,分别对应多表替代,和单字替代。

与此同时,ENIGMA还有一个诡异的加密-解密同相机制,具体则是依靠反射板来实现;不过,从密码学概念上分析,它并不涉及新类型的加密方式,所以,把它姑且定位为附加模块吧。

于是,ENIGMA的加密部分,可以再细分成以下三个功能模块:

多表替代模块转轮组

单字替代模块连接板

附加模块反射板

下面,我们就把它们拆开揉碎,一个个认真打量一遍吧。

多表替代模块

ENIGMA之所以可以进行多表替代加密,其核心就是它内部的转轮组。转轮组、转轮组,顾名思义,自然就是由一组转轮构成的。

在刚开始的时候,ENIGMA机器有三个转轮,被命名为Ⅰ、Ⅱ、Ⅲ号转轮(也叫密钥轮/加密轮;[德]walzen,[英]rotor/wheel/drum)。考虑到这罗马数字不好打,单独使用的时候还容易被误认为英文字母,这里就把它们通通用阿拉伯数字命名,称为1、2、3号转轮吧。

在使用的时候,机器内部需要安装三个转轮;因此,1、2、3号转轮必须全部装上。不过,顺序可以是

1-2-3 1-3-2

2-1-3 2-3-1

3-1-2 3-2-1

这所有六种可能中的任意一种。

随着机器的不断升级发展,加密安全性越来越好,转轮的数量也在增加。渐渐地,转轮变成了5个,但是机器内部没有那么多空间,仍然只能安装3个;这样,就总有两个转轮被闲置着。装哪个,不装哪个,可以在使用前事先约定;很显然,变化一下多了起来:

5个转轮选3个的变化为 5! / 3!/(5 - 3)! = 120 / 6 / 2 = 10 种 [ 注:公式上下标都无法正常显示,放弃了放弃了 ]

而转轮组装的顺序又是可变的,比如1,4,5号转轮就可以组合出1-4-5,1-5-4,4-1-5等六种情况,因此总的变化就是

(5选3的变化)*(每一种内的变化) = 10 * 6 = 60

有兄弟肯定要说了:搞个排列不就完了, 5 * 4 * 3 = 60 啊,哪有你这么麻烦——嘿嘿,咱不是试图一步步分解么。。

不过,ENIGMA的转轮还有更让人晕眩的变化。在海军型中,开始的5个转轮又渐渐发展到7个,最后则是8个。而需要装进机器的转轮,依然是3个。如此一来,可能的变化就分别是

(7选3)*(每一种内的变化) = (7! / 3!/ (7 - 3)! ) * 6 = 210

(8选3)*(每一种内的变化) = (8! / 3!/ (8 - 3)! ) * 6 = 336

实际上,海军型的变化还不止如此,而这将在后面分析反射板的时候提到。也难怪在破解ENIGMA的文献中,英国人总是重点吹嘘对海军型ENIGMA的破解——那才是最提气的啊。。

……我们暂时还是回到转轮吧。

这些转轮就象被切好的香肠片,中间用根儿铁扦子一穿,就可以拿去烧烤了——不对,就可以拿去组装了。。。现在,就让我们从单个转轮研究起吧。讲了半天,还是干巴巴的——那我们就来点湿乎乎的,上图!

转轮,其实是个直径大概10厘米左右的硬质轮盘;大家可以猜猜这轮盘主要是用什么材料做的。。

点看全图
外链图片需谨慎,可能会被源头改

三个散放的转轮,是美国国家安全局(NSA)的资料照片

铁轮子?钢轮子?铜轮子?铝轮子?

呵呵,总的来说都不是——它的主体,其实是用硬质的橡胶,或者酚醛塑料做成的;外圈,才是金属的。而这酚醛塑料,其实就是我们常用的电木;老式的那种上下拨动的电灯开关盒,表面是黑色的,一般装在楼道里的那种——制作材料就是电木。

点看全图
外链图片需谨慎,可能会被源头改

这是ENIGMA的五个转轮。

稍微留心就会发现,每个转轮上都标记着它是几号转轮,用的是罗马数字

可以注意到,这转轮的外轮廓是齿状的;不过比起真正的齿轮,转轮上的齿却明显柔和的多,一看就知道不是用来啮合其它齿轮的。事实上,这波浪状的柔和“牙齿”是用来拨动的,也就是拨轮(finger wheel)——换言之,它“啮合”的不是其它铁齿铜牙,而是人柔软的手指肚:)

下面,我们把转轮拉近了看一看。这样一来,难免就要翻来覆去一番:

点看全图
外链图片需谨慎,可能会被源头改

这张是转轮的左面视图。我们可以看到,在它的黑色底盘上,有一圈环形排列的发亮的圆点儿。这些圆点儿可就不是绝缘的橡胶或电木啦,而是正八经用铜做的触点(electrical contacts)。至于这些铜触点的数量嘛,各位兄弟不用数了,1001n已经数过了——不多不少,正好26个。至于为什么非要是26个,恐怕得去问发明字母序列的人了。。。

好,我们再把转轮倒个个儿,从右面看看它:

点看全图
外链图片需谨慎,可能会被源头改

依然有26个铜质的触点;只不过,这面的触点明显要小一些,于是改叫触针(pin)。

从左视图到右视图,大伙有没有从这些触点看出一点玄机?比如,把几个转轮象三明治那样紧紧挨在一起的话……

没错,这些触点和触针,其实就是转轮之间的连接点。如果有两个转轮,例如1和2,紧紧靠在一起时,1的右面视图的部分,和2的左面视图部分就重合在一起了;换言之,1号转轮的铜触点就和2号转轮的触针逐个对应起来了。

而为了保证它们确实可靠地相互接触,在它们的后面,都埋伏着预先压好的弹簧呢——这么一来,在弹簧的弹力下,分别被顶出一点点的触点和触针也就相应地接好压实了。

此外,刚才可提过,这触点和触针是铜做的;又能导电,又被一对一压在一起——电路还能不通么?呵呵。。实际上,这就是ENIGMA的设计精髓所在:机械部件虽然显眼,却只是其中的配角;它再怎么令人眼花缭乱地旋转和变动,目的也只是为了不断地改变电路而已

这就是说,ENIGMA实际上是个电-机械混合机制的产物。

细心的兄弟肯定要问了:那么,又怎么保证触点和触针严格地一对一地接触呢?转轮们虽然是共轴的,但是各自旋转角度稍微不对,就没法保证1上的某个触点“正好”顶在2的相应触针上啊。。。

确实如此。不过,总还有简单的解决办法不是?请大伙再看这张图:

点看全图
外链图片需谨慎,可能会被源头改

还是刚才那张右视图

这些触针们,不是乖乖地分布在一个黑色的底盘上么?这黑色底盘的轮廓也不是正圆,也长满了牙齿;而且,这次可真是“齿轮”了——从齿的角度和锐利程度就能看出,这玩意儿可不是让人拨来拨去,而是要啮合其它齿轮的了。。

它的名字叫棘轮(ratchet wheel),齿的数量各位也不用数了——还是天杀的26个。。。而这,不正好和触点/触针的数量相等么?实际上,它的作用就是咔嗒咔嗒地转,转一圈就咔嗒26次,每次咔嗒完毕都可以保证触点恰好转到合适的位置——于是,触点和触针们的切实接触问题,至此彻底解决:)

以上这些,都是白的不能再白的大白话,呵呵。其实严格点讲,棘轮的作用,就是让转轮以步进的方式转动。这个“步进”,其实生活中也很常见,比如各位家里挂的石英钟;它的秒针一般都不是圆滑地一圈圈转动的,而是每到一秒“咔嗒”停一下,好让各位能方便地计时——老式钟表倒是有那种非常平滑地走动的,只是在看的时候,未免觉得有些把不准点儿……

如果转轮仅有以上设计,虽然的确也够牛了,但是,还确实没达到ENIGMA的水准——毕竟是一代名机,那也不是吹出来的啊。到现在,我们已经看了转轮的左面和右面,却还没看见它的侧面。那么,就让我们再换个角度看一下吧。

点看全图
外链图片需谨慎,可能会被源头改

这是ENIGMA的4号和5号转轮

啊哈,这个转轮还挺厚的——当然要厚,要不那些负责把左面的触点、右面的触针给顶起来的弹簧,岂非就没地方安放了?呵呵。。不过,这张图倒主要不是为了让各位体谅安装弹簧的难度,而是注意这里:

点看全图
外链图片需谨慎,可能会被源头改

局部放大,再放大

字母轮箍(alphabet tyre/letter ring),又一个新名词。它名字叫“字母轮箍”,然而在某些版本的ENIGMA转轮上,上面刻印的可是数字,另外的版本上才是字母。如果是数字,那么就是从01、02、03……直到26;如果是字母,那自然就是从A到Z了。这里也顺便说一句,无论是字母还是数字,它们都是沿着轮箍“向上”的方向顺序排列的;比如说,02在01上,B在A上,等等。

点看全图
外链图片需谨慎,可能会被源头改

再来一张,这个转轮的字母轮箍可终于是名副其实了

这个字母轮箍又有什么用?莫非是转轮的耍酷装饰品?

当然不是。在确定转轮的位置时,就需要用这些字母/数字来标定。由于转轮在正常使用时,是被封闭在机器内部而无法直接读数的,所以为了实现这个目的,设计师在ENIGMA机器的表面,又开着一个小小的观察窗口,正好可以露出一个字母或数字。这样,报务员在使用的时候,就可以通过这个窗口显露出的字母或数字,确定这个转轮当前旋转到的位置。

在早期的ENIGMA版本中,这个字母轮箍是被固定在转轮外侧面的。随着机器的升级,又渐渐衍生出更复杂的装置,可以调节字母轮箍和转轮内部连线之间的关系——这个说起来比较复杂,姑且略过吧;而字母轮箍的位置,一般称为环位置环设置([德]ringstellung;[英]ring settings)。

即便是从字面上分析,“字母轮箍”应该也只是个空心的环。事实也的确如此,这个轮箍就象个被放大了的耳环。那么,转轮侧面难道只有这一圈轮箍,里面就是空的了么?

当然也不是。这个转轮可是实心的,它的内部不仅有刚才提到的弹簧,更重要的是,拥有密密麻麻的许多段电线。正是靠这些电线而不是轮子本身,单个转轮才能成为整个密码机电路的一部分。

既然有许多段电线,那么,必然有首有尾。从线路上分析,倒是很简单:电线都是一头连着左面的触点,一头连着右面的触针;这样,几个转轮如烤熟的羊肉般串好以后,电流就将沿着

第一个转轮的触点 → 第一个转轮的触针 → 第二个转轮的触点 → 第二个转轮的触针 → 第三个转轮的触点 → 第三个转轮的触针

这么一条优美的电路蜿蜒前行。至于为什么这电路是一条而不是多条,后文我们将详细分析其中的机理。

如刚才所介绍,电线都是一个触点、一个触针地连接起来的。那么,是不是说每个触点必定对应某个触针呢?

这就是ENIGMA加密之所以牛得不得了的另一个重要原因:触点 - 触针是一对一连接不假,但是具体怎么连接,不同号的转轮都是不一样的……

比如说,1号转轮里,左面的3号触点连接着右面的26号触针(仅是举例),那么在2号转轮,恐怕同样的3号触点,连接的就是9号触针了——正因为没有规律,所以才变化无穷。

但是为了使用方便,并没有把一切转轮都搞的互相不同——且不说制作多了,从统计意义上就必然出现重合现象;即便做了,也会把转轮的号型搞的巨繁无比——只是不同号的转轮有所不同;同号的转轮,比如同型ENIGMA的1号转轮,内部连线关系都应该是一样的。

不要小看这个转轮内的连线关系的变化。它起码给ENIGMA带来了两个特性,而这两个特性,在其它种类密码机上往往或多或少都有所体现:

1、由于同号的转轮内部连线关系一致,所以,不同使用者之间可以通过约定某号转轮,方便而迅速地搭配出同样的电路结构;这样,ENIGMA之间的正确通信就有了基础保障;

2、由于不同号的转轮内部连线关系完全不同,因此,使用几个内部连线迥异的转轮,连续多次地可靠加密也就有了保障。ENIGMA工作时,需要安装三个转轮;如果它们的内部连线情况完全相同的话,也就大致相当于同一转轮在某种情况下连续加密三次,被破解的风险必然大大增加。

——的确是神来之笔!

转轮的主要构成,就介绍到这里吧。其实,它还有诸如凹口圈弹性环状校准杆等等一些小的附件。这其中的凹口圈,将在后文中的加密操作中予以介绍;其它的,因为只是对现有机制的微调而已,这里就不展开说了。

讲了这么多,估计大家也晕了;下面还是附上一张ENIGMA转轮的构造示意图吧——的确不是我画的,我还没进化得那么快,嘿嘿——看了这个,或许能更好地帮助大家理解这个转轮的牛叉之处吧:

点看全图
外链图片需谨慎,可能会被源头改

不得不佩服人家的图做得好,实在够细致的——原作者Wapcaplet,真名Eric Pierce

突然就想起一句小诗,谁作的来着,好像就是1001n自己吧?

新的概念如水般涌来,我在默然后终于晕菜

今天,ENIGMA的转轮被1001n拆开介绍了一遍,估计已经有不少兄弟头大了;不过比起今天,明天只怕更难熬——因为,单个转轮将被穿在一起,即将以“转轮组”的名义集体亮相了。

我自己先倒下了。

关键词(Tags): #密码#破译#二战#布莱奇利#ENIGMA元宝推荐:ArKrXe,

本帖一共被 2 帖 引用 (帖内工具实现)
全看分页树展 · 主题


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

Copyright © cchere 西西河