西西河

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

共:💬19 🌺32 新:
全看树展主题 · 分页首页 上页
/ 2
下页 末页
家园 【原创】密码传奇(三)、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 帖 引用 (帖内工具实现)
家园 沙发

花少不了

家园 抢偶像的板凳
家园 别倒, 别倒

讲清楚那些个转轮组的详细工作原理不容易, 要简单地讲讲还是不难的.

家园 看明白了

Wapcaplet的图在4和6之间有一小段非常不显眼的线连接,这个恐怕才是这个法轮的奥妙所在

刚开始没有意识到那是什么东东,还以为是什么标示线呢...

家园 精彩,鲜花。
家园 新的概念如水般涌来,我在默然后终于晕菜~~~哈哈哈哈~~~

我压根就没抱着“能够弄明白”的奢望,就当“外行看热闹" 的来捧个场~~上花上花

家园 鲜花,略过不看
家园 有了玉再添几块砖

点看全图

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

家园 著名的插板 plugboard

点看全图

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

家园 1001文中提到的那个可直接看位置的窗口

点看全图

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

家园 分解图,最后那个转轮能看到一些连线

点看全图

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

家园 这个比较特别, 4个轮, 当然级别高, 海军用

点看全图

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

家园 电路示意图

点看全图

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

家园 花一朵, 其实一个"轮子", 就是一个"表"?, 三个"轮子" 就是:

时下最行的--------------三个代表!

全看树展主题 · 分页首页 上页
/ 2
下页 末页


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

Copyright © cchere 西西河