主题:【原创】密码传奇(三):13、纯技术篇之活拆了ENIGMA(4) -- 1001n
【附加模块】
操作员输入的字母信息,辛辛苦苦穿过了层层转轮,到现在总算是出来了。不过,出来了也白搭,因为它们还得回去——因为,横在这些电信号前面的,赫然竟是面镜子!
这面“镜子”,就是我们要说的反射板([德]Umkehrwalze,[英]Reflector)。说是“板”,其实怎么看也不象块“板”;说起来,这明显是从英语里翻译过来的,也有人翻译做“反射子”——只是,walze在德语里有“轮子、辊子”的意思;看来,翻译成“反射轮”更加合适一些吧。
不过,为了和后文还要提到的反射轮相区别,这里,还是继续沿用反射板这个称呼好了。
说它是“镜子”,其实只是个形象的比方而已。镜子这东西,反射的是光线;而反射板这面“镜子”,反射的却是电信号——而“反射”两个字,倒还真是挺贴切的,呵呵。
前面,我们比较详细地研究了转轮组的特性。回想一下不难发现,正是由于转轮内部的连线,和转轮彼此之间的“触针 - 触点”式连接,整个转轮组才构成了通路。作个流程图,大概就是这样的:
进转轮组
│ ┌────────右轮────────┐
↓ ↓ ↓
字母信号 → 输入轮 → 右轮触针 → 右轮内触针到触点的连线 → 右轮触点 →
┌────────中轮────────┐
↓ ↓
→ 中轮触针 → 中轮内触针到触点的连线 → 中轮触点 →
出转轮组
┌────────左轮────────┐ │
↓ ↓ ↓
→ 左轮触针 → 左轮内触针到触点的连线 → 左轮触点 → 反射板 → ……
真是要命,为了说明反射板,还得介绍一下新出现的组件——输入轮([德]Eintrittwalze;[英]Entry Wheel,entry stator)。好在这个轮子不是什么关键设备,简单提一下也就可以了。
这输入轮有点“神似”转轮,但是跟转轮又完全不同;打比方说,它有点象个挤压成型的机器,专门负责把原料挤压成一定形状,供后续工序使用。
比如,当原料——字母信号进来的时候,它们跟转轮组的触点、触针们是没法一个个匹配的;而经过输入轮的“加工梳理”,这些字母信号就会沿着输入轮左面的触点们流入转轮组。
因此,外观上,输入轮的左面也有转轮般的触点;跟转轮完全不同的是,输入轮肯定是不能转的——否则它巧笑倩兮地轻轻一转,那些负责向输入轮传递字母信号的集束线缆,还不全得拧麻花了啊。。。
在这里也强调一下:输入轮所接收的,其实还不是操作员直接在键盘上打出来的字母信号,而是被后文要介绍的连接板交换过一次后的字母信号。这个倒不影响理解,因为传进输入轮的字母信号无论是什么,后续的步骤都是一样的——不都是字母信号么?通吃通吃,呵呵。。。
为了便于理解后文,我们不妨再打个比方:输入轮象一座桥,让它接收的字母信息可以顺利地抵达彼岸——转轮组,并被加密。
既然是桥,允许去彼岸,那么从彼岸折返回来自然也是可以的——信号经过反射板,折返回转轮组,还会再回到输入轮。这样,能够被转轮组识别的“触点 - 触针”式字母信号,又在这里被转换成线缆信号,从而可以送入后续的连接板。
关于输入轮还有个小八卦。在商用型的ENIGMA上,操作员输入的字母是按键盘顺序被映射的,举例来说,他通过键盘输入Q、W、E、R、T……,将被输入轮分别映射为A、B、C、D、E……,并传入后面的转轮组进行进一步加密。这个QWER,正是所谓的键盘顺序映射,如下:
输入字母 Q W E R T Z U I O A S D F G H J K P Y X C V B N M L
| | | | | | | | | | | | | | | | | | | | | | | | | |
映射结果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
顺便说一句,这映射就是指进入输入轮的字母,和流出输入轮的字母的对应关系。看了上面这张映射表,不难发现:ENIGMA的键盘顺序,和我们今天用的键盘有点不一样;各位也不用辛苦去一个个按表对比了,这里直接附上图吧:
这是ENIGMA的键盘
不妨低头看看,是不是跟自己的键盘顺序不太一样?
前文提过,波兰人不是买过商用型的ENIGMA么?按说,费点儿劲拆了这个输入轮,波兰人就能看到输入轮里面的连线情况,也就知道了它的映射规律是键盘顺序映射;可邪了门儿的是,拿这个顺序来破解德军电文,却总是不对。
天才,总是在最需要的时刻才闪出智慧的火花啊——我们的雷杰文斯基同志算啊算的,算着算着,眼前突然就一亮——闹了半天,这个输入轮和军用型号的输入轮,里面的构造是不一样的;或者说,它们的映射规律是不同的。
原来,德军的ENIGMA输入轮的映射关系是这样的:操作员输入A、B、C、D、E……,经过输入轮,出来的信号还是A、B、C、D、E……,这就是所谓的字母表顺序映射。
说了半天,不就是“M对M,N对N;一百年,不许变”么?还搞东搞西的——可说是这么说,当你完全不知道军用型的输入轮会偷偷地改变的时候,面对怎么也对不上的计算结果,恐怕首先先怀疑的,该是自己的计算方式吧?何况,转轮组、反射板、连接板都是可以变化的——在此前提下,还能想到问题可能会出在这个最不起眼的输入轮上——雷杰文斯基之厉害,也就可以想见了。。。
不过,恰恰是因为军用型ENIGMA的输入轮的映射规律比较简单,看上去实在是再正常不过,很多文献资料在介绍ENIGMA构造的时候,干脆就把它给忽略了。好,关于输入轮就八卦到这里;现在,让我们接着来看本节的重点,ENIGMA的标志性装置——那极有个性的反射板吧。
惭愧,这张截取的不是很清楚,但主体是反射板,嘿嘿
右侧的,则是以前介绍过的字母轮箍——只不过,轮箍上的是数字而已
和输入轮一样,反射板也是和转轮组直接连接的,所以,它的模样多少跟转轮有点儿象——在ENIGMA机里,反射板位于转轮组的左边;或者说,反射板的右面,和转轮组左轮的左面相连。
上文说过,转轮的左面有触点,右面有触针。那么,为了和转轮相连接,反射板应该是右面有触针的;实际情况,当然也正是这样——严格地符合逻辑推理结果,呵呵。
这些触针说明了一个问题:所谓的“反射”,其实不过是通联电路的折返而已——而要说明白这个机理,实在比较麻烦,我们还是看图吧。
顺便说一句,图中所示均为简化情况,别真去找26个触点哟——就为这点玩意儿,真是活活画了一个下午加一个晚上。。。
这是单个转轮的抽象图,只画了4个触点和触针,意思意思而已,呵呵
现在我们上转轮组了:
同样的办法,把反射板、输入轮也抽象化:
在机器内,它们的相互关系就是这样的,只差紧密扣在一起了
好啦,现在它们亲密无间了
这下,我们就可以开始研究ENIGMA的加密过程了。首先,我们输入一个字母R,也即
挺清楚的,就不解释了
进入转轮组的中轮了。
注意,R在右轮内之所以掉头折下,是因为右轮触针-触点之间的连线就是这么连接的
R这回杀到连接板了
得,在连接板里来了个大窝脖儿
被遣送回来了。为了和进入的路径区别,这里改用红线标注折返路径
辛辛苦苦,总算是从转轮组里出来了
不用说,出来的肯定跟进去的不一样了
画这些图真是麻烦死了……不过,为了更形象地表现这个过程,1001n又画蛇添足地把它们做成了动画,希望各位看起来能对这个流程更清楚一些:
是循环的,看不清楚不妨多看几遍,咱心里也更满足一些啊,呵呵
得,喘口气,冒根烟儿……
一个1001n自认为比较清晰的流程就是这样的,反映了加密单个字母的情况。下面的,则是连续加密两个字母的情形了:
注意,本图忽略了输入轮
有必要介绍一句的是,这张图没有版权,原作者也不详。唉,不能不承认,人家画的是真好啊,又简练又说明问题;而1001n,也只是把它翻译了一下而已。
不过,没有前面的烂图铺垫,这张图也许还不太容易一下看懂——而能一下看懂的兄弟,就别说什么了;呵呵,咱总得给自己的拙劣画工找个台阶下吧。。
到了这个时候,什么转轮的构造啊,转轮组的构造啊,输入轮的构造啊,反射板的构造啊……等等之前我们介绍了半天的东西,才终于组合出了强大的威力;正是这些组件的精诚合作,一个个字母才会被变得连它们的亲人都认不出来了……
——密码机啊密码机,认真琢磨起来,其实也不算太难,是不是?嘿嘿。。。
现在,再来八卦一下这个反射板吧;顺便说一句,1001n的这类“八卦”,和坊间真正的“八卦”,那水准实在差的太远了……
反射板这东西,和转轮组的左轮是相连接的;而左轮,是可以转动的。这也就是说,左轮和反射板其实是处于一个相对旋转的状态的;既然是相对旋转,有左轮旋转就够了,反射板完全可以固定不动,一样可以达到不断改变连通电路的要求。
于是,在ENIGMA的大部分型号中,反射板都是这么固定着的。这也确实有一定道理:毕竟,在图纸上让它转一下容易,可要在机械结构上实现,肯定要增加工序和改动相关零件;而这么做,似乎又想不出什么必要,那还是别多此一举了吧。
不过,人们对于安全强度的认识,是会随着时间流逝而进步的;观察反射板的发展历程,我们就可以很清楚地看到这一点。
1926年,德国海军率先采购了ENIGMA Funkschlussel - C [ENIGMA 无线电(收发报机)密码 - C型],而它的原型,就是商用型的ENIGMA - C。在这个商用的C型上,虽然反射板在机器出厂的时候就被固定了,但是,可以有一到两种安装位置的选择。于是,出厂的C型机,其实就有了两种稍有区别的亚型。
这实际就意味着人们已经认识到:对密码机来说,一静不如一动;也因此,“反射板可以不转”并非最好的主意。既然如此,针对反射板的改革很快接踵而至了。
随后,C型的ENIGMA发展为枝繁叶茂、多子多福的D型ENIGMA,而这个反射板,也跟着升级了——它可以调节到26个位置中的任意一个。这样一来,变化的总体可能自然又是原来的26倍了——只不过,在对电文加密的时候得事先确定一个位置,中途是不能改的。不管怎么说,这会儿的反射板,已经隐约有了反射轮的意思了。
再往后,反射板开始沿着两个不同的方向进化着:一是陆军和空军使用的国防军型ENIGMA的方向,二是海军型ENIGMA的方向。
这先说这国防军型的吧。这个系列的反射板都是固定的,也不能转,但是由于内部连线关系不同,先后发展出4个型号。最开始的,是A型反射板(Umkehrwalze A);1937年11月1日,升级为B型(这里说的A、B、C、D型都是反射板的型号,不是ENIGMA的型号)。
这张图上,左上角的就是反射板;上面的B字,清楚地标明了它是B型反射板
从1937年直到开战后的一段时间,反射板都没有什么新的改变。直到1941年,它才又升级为C型;而D型,具体装备时间不详,被盟军发现的时间,则迟至1944年1月2日,具体情况不详。1001n估计,大概也是盟军缴获后才发现:呀嗬,这地方有点儿不一样了啊。。
最后发展出的这种D型反射板有个很特别的设置,就是允许操作员部分地改变反射板的内部连线关系。也就是说,本来在出厂时就已经固定了的内部连线,现在可以由操作员手工调整了——显然,从安全角度看,这比以前的反射板要好得多;只是,这个D型出现的实在是太晚了,等到它诞生的时候,二战已经打得差不多了。
无独有偶,类似这种“最后的才是最好的”的现象,也发生在海军型的反射板上。
海军型ENIGMA,从技术的角度讲,应该说是ENIGMA系列的精品。1941-1942年间,正是大西洋海战打的如火如荼的时候,海军M系列ENIGMA中的的M4型,也终于应运而生了。比起三年前的M2型和两年前的M3型,M4型最大的变化就在这个反射板上。
变在哪里呢?
两点:一、变薄了;二、能转了。
在这里也插一句:海军型的ENIGMA,从来都跟别的系统使用的型号不太一样。比如,在ENIGMA刚被装备不久的1930年,海军型ENIGMA还没有连接板,后来听取了陆军的意见,才有了这个装置。
不过自此以后,海军型ENIGMA就开始大踏步地领先其它型号的ENIGMA:1934年8月,在别的型号还是以三个转轮选3个的方式安装的时候,海军型ENIGMA已经改成五个转轮选3个了。
这就是当年的海军五轮型ENIGMA的五个转轮,随机器专门有装它们的盒子
至于空出来的地方,1001n目前还没考证出该装什么,呵呵
五年以后,当陆军空军也终于升级为五选3的时候,一直在顺利破译ENIGMA的波兰人当场就没咒儿念了——可见,海军型的技术有多么领先;毕竟,那是整整五年的时间啊。这还没完,海军型ENIGMA很快又变成了七选3,八选3;最后发展到M4型时,连反射板也可以转了!
这个M4,在ENIGMA的成员众多的家族当中,大概该算是非常出名的一个了,以至于它都有个响亮的绰号——海神(Triton,可别翻译成和尚大吹的那个法螺哟);而在盟军,还专门给它起了代号,是更加凶猛的鲨鱼(Shark)。
同一个家族的产物,为什么会出现这样的差别呢?说到底,还就是因为“客户才是上帝”。经过残酷的战争检验,虽然德国人相当信赖ENIGMA,但是从谨慎和多疑的天性出发,海军还是对ENIGMA的安全强度提出了更高的要求。
而到这时候,ENIGMA已经是个非常成熟的密码机了;要想再增加它的安全度,只有两条路:要么推倒重来,要么进行局部改良。推倒重来的话,时间肯定是不允许的;唯一的办法只有对ENIGMA进行局部改良。
而对于密码机来讲,它的安全强度是制造完毕的时候就已经确定下来的;因此,想要加强安全强度,德国工程师们别无它途,只能一个个重新审视ENIGMA的内部结构模块,并且寄希望于能够以最小的设计改动代价,来实现这个目的。
他们看来看去,最后还是看中了转轮组这个绝妙的装置的潜力,并决定为转轮组再增加一个转轮——很显然,生产这个第四转轮时,和生产其它转轮的工序大致相同,是个最经济最简单的解决方案。
而增加第四转轮,不仅经济上合算,而且也基本不需要额外培训——因为在使用时,它实在是跟前三个转轮的操作没什么区别;即便在安装时,也只要把它和反射板扣在一起,然后装在转轮组的旁边就成了——至于这第四转轮内部结构的变动,本身不能步进,等等这些机理上的细微区别,根本不需要操作员去具体理解和掌握,照样可以很好地完成任务。
这个第四转轮也有两种型号,即Beta型和Gamma型。下面这个,就是Beta型第四转轮和反射板、转轮组的全家福:
最左面的是反射板,然后是Beta型第四转轮,再右边是三个转轮
放大看看,中间这个就是Beta型第四转轮
注意,它的右面有触针,但是跟右面的转轮一比就知道,它没有棘轮
这里也顺便说一句:这个第四转轮不能步进的原因,只是因为它本身是没有棘轮的;而没有棘轮,并不是因为工程师们的设计疏忽,而是故意把它省略掉了。
为什么好好的棘轮要被省略掉呢?
原来,在ENIGMA机槽内,能够推动转轮步进的掣爪(Pawl)只有三个。这三个掣爪是具有某种机械联动关系的,每个掣爪对应一个转轮,它的作用则是两个:既可以推动转轮上的棘轮,从而使转轮进行步进;也可以因为随着步进落入凹口圈的凹口,从而导致之后的转轮进位。
换言之,转轮组的步进、进位和双重步进,都是由于这三个联动的掣爪的存在,才能在机械上予以实现。前文为了清晰起见,没有提到这个小装置;而现在就要说一句了:第四转轮不能跟随转轮组步进的最根本原因,正是因为德国人从来就没有在机槽内设计出第四个掣爪来推动它!
M4的机槽。注意图中四个褐红色的小滚轮下方,只对应了三个掣爪
掣爪,就是那三根细扁的金属短杆
实在说,要为第四转轮增添一个联动的掣爪,必然要对ENIGMA的内部机械结构做出相当大的调整才成;这样的大手术,必然需要时间。而在军情急如飞火的1942年,海军哪里还有那么多时间等工程师慢慢改良ENIGMA——时不他待,这个掣爪没被做出来,进而第四转轮也不能随转轮组旋转,也就是个可以理解的现象了。
这也是第四转轮被1001n排除在转轮组结构外的最重要的原因。既然不能按转轮组的规律运转,那么,无论它长得多象转轮组内的转轮,也得被单独拿出来分析。不过,第四转轮尽管不能随转轮组步进,只能靠手工调节,却也绝不是可有可无的一个创意。
稍微思考一下就会明白,增加这个转轮以后,ENIGMA的密钥周期长度(注)又将跃升为以前的26倍——这个数字无疑也是诱人的,一如我们前面计算的那样:
三个转轮的变化 * 第四轮的变化 = 16900 * 26 = 439400
[注]密钥周期长度,在此指转轮组与第四转轮在工作时,遍历所有可能状态的总数量。比如
第四转轮 - 左轮 - 中轮 - 右轮
T F Y B
这样的组合算一种可能状态;而第四转轮与转轮组所有可能状态的总量,就是所谓密钥周期的长度,它反映的是经过多少次加密以后,这些转轮的总体行为将出现循环。具体到上面那个例子,密钥周期长度就是截至再次出现 T - F - Y - B 这种组合时,转轮们逐字加密过的总次数——解说的不太好,希望baumchen老兄能够将就看明白,呵呵。
于是,这个第四转轮,就被作为M4型ENIGMA的标准件被采用了。但是在ENIGMA机器中,供安装输入轮、转轮组和反射板的空间,一直都是比较局促的;这几位就座以后,机槽里可真是再装不下什么新东西了。现在,凭空多出一个转轮,那反射板往哪搁?
不过,这种“螺蛳壳里做道场”的小问题,又怎么可能难得住德国的工程师们——把反射板削薄点儿,再把它跟第四转轮搞一块儿,总共只占原来反射板的空间大小不就完了嘛——于是在M4上,这个变薄了的反射板与第四转轮合在一起,也跟着能转了!
还是刚才那张图,ENIGMA的机槽只有这么大
这是把削薄的反射板和第四转轮,一起装入机槽后的样子
下面还等什么?当然是把转轮组也给装配好,其实就是用那根杆把三个转轮串起来:
再把转轮组装入,齐活儿啦
说来说去,M4就是在转轮组外,又附加了一个不能步进、只能手动的转轮而已。从这个角度讲,M4样子唬人,与其它型号的ENIGMA却也没有本质区别;相比其它国家的后起之秀,即便是M4,也只能望其项背了。
不过,关于其它型号密码机的话题,这里就暂不涉及了,也不敢说什么时候才会涉及——写起来才知道,这任何一个专题简直都是写不完的,这一台小小的ENIGMA,就……
唉。。
【反射板的作用分析】
可以看出,反射板的作用就是把经过转轮组加密的字母,再次送回转轮组加密,只不过经历的转轮顺序由从右往左,“反射”成了从左往右的而已。那么,这个反射板的作用显然就是把本来经过三个转轮的路径,给延长了一倍,变成了经历六个转轮——虽然,经历的后三个转轮其实和前面的三个转轮是一样的。
看起来,是不是还真有点“镜子”的意思?
而第三只眼兄关于“经过反射,是不是就变成六表加密”的问题,这里也提一下吧。
严格地说,每个转轮都有着二十六张换字表,因此,三个转轮构成的转轮组,实际上是不能称为“三”表加密的。前文在这里出现了纰漏,也向大伙致歉;原文已经修正,感谢第三只眼兄提出的问题:)
准确说,每个转轮都是二十六表加密;具体到特定的一个输入字母,每进入一个转轮时,都将被该转轮二十六张换字表中的某一张加密。而转轮组是由三个转轮构成的,因此转轮组总的换字表数量,应该是二十六张的立方。当然,这是没考虑双重步进机制时的理论计算值。
为什么说是二十六表加密?此外,三次加密,与经历折返的六次加密,到底有没有安全强度的增加?分析这个问题稍有些复杂,1001n准备在后文中提到。这里,还是先拉回到反射板上吧。
由于这个镜子般的特性,反射板还带来了一个有趣的结果——让我们做个智力体操吧……
设想转轮组中的某个转轮。现在,它左边的触点相当于字母A',右边的触针相当于字母A——注意,A和A'是两个完全不同的字母。我们把它记为下面这个样子:
A' ---|--- A
要注意的是:实际转轮中,只有触针到触点的连线关系,并没有A和A'这么两个明确的字母;这里把它暂时具体化,也只是为了便于描述而已。
那么,它就意味着输入的字母A,经过这个转轮以后就被唯一地加密成了A'。这并不难理解,因为该转轮的触点和触针之间,是用导线一对一连接的;换言之,能连接到触针A的触点,只有A'。
因此,一个字母如果从左边的触点流入,并且从右面的触针输出了A的话,它就只能是A'。
ENIGMA这东西,属于流式密码机(The Stream Cipher Machine),也就是说:针对每个明文字母,ENIGMA都会一个个地连续进行加密。
同时,ENIGMA每次加密时都是机械部分率先动作,而在运动当中,ENIGMA内部的电路是不通的;只有当机械运动到位后,电路才被连通——这就意味着:在连续输入两个字母之间的这段时间内,整个ENIGMA的机械运动部件,必在某个瞬间全部处于“静止”状态。
正是靠着所有机械部件这一瞬间的静止,ENIGMA的电路才会导通,字母信号才会迅速地在迷宫般的机械部件中迂回折返,变成被加密的字母信号。
好在电流的速度比机械响应那是快多了,因此,即便操作员打字再快,也不会出现电信号跟不上的情况——倒是机械运动很可能还没到位,呵呵。这也是为什么电影里出现使用ENIGMA的场景时,操作员总是打的很慢,除了对照明/密文外,大概就是因为机械方面的原因吧——这是1001n自己瞎猜的,呵呵。
继续上面的分析。按上面的规则,我们再进一步设定这个转轮为右轮,它的状态为
A' ---|--- A
右 轮
随后,我们可以继续追加中轮和左轮,最后构造出完整的转轮组的情况:
C' ---|--- C ┆B' ---|--- B ┆A' ---|--- A
左 轮 ┆ 中 轮 ┆ 右 轮
←── 输 入 信 号 传 输 方 向 ←──
结合上面的设定,这个表达应该不难理解,这里就不再具体解释了。
在实际情况中,我们还要考虑上反射板。这个反射板,当然是在转轮组的左边;同时,它把信号折返回去,也就是
反射板 ┆ C' ---|--- C ┆B' ---|--- B ┆A' ---|--- A
┆ 左 轮 ┆ 中 轮 ┆ 右 轮
┌←────── 输 入 信 号 传 输 方 向 ←──
↓
┕──────→ 折 返 信 号 传 输 方 向 ──→
这下就很清楚了:如果还想得出个A的最终折返结果,那么在反射板这边,传入的信号就必须是C'。
而反射板的结构决定了:每一个进入点只连接另一个特定的输出点;宏观地看,就是从左轮传入的某个字母信号,将被反射回左轮的另一个位置,从而变成一个迥然不同的“新”字母。这就意味着:C'进入反射板后,必然是以非C'的字母输出。
既然C'不能被反射成C',那么后面的电路,也就是 C'/C → B'/B → A'/A 就成了无源之水,结果自然也就不会一步步演变成A了;换言之,输入转轮组的A,经过反射板这么一折返,流出转轮组的时候肯定就不再会是A了。
这就意味着:由于有反射板的存在,每个输入的字母,都不可能被加密为它本身!
换言之,当你看到一份诸如
AGTLG QWLGM QWEOG ……
这样的密电的时候,虽然你根本不知道明文是个啥,但是你依然可以非常有把握地说,“我起码知道,明文的第一个字母肯定不是A,第二个字母肯定不是G,第三个字母肯定不是T……”
——咱不懂ENIGMA的密文,也不会破译它;但是,咱知道怎么让MM崇拜咱,是不?呵呵。。。
“任何字母都不会被ENIGMA加密为它本身”——虽然很有意思,但从密码安全的角度看,这绝对不是什么好消息。最最起码,当敌人破译出明文以后,拿这份明文和密文一对照,就知道自己的破译有没有原则性错误:两份文本对齐,上下对照着一看,如果同样位置有同样的字母,那肯定就是自己搞错了。。
“能够简单验证破译出的明文是否错的离谱”,这也得算ENIGMA的一大特点了……
当然,也有可能译文全错,但是又没有出现上述这类错误的情况;于是,这个办法并不能成为通用的校验译文正确与否的标准。但是,作为一个最简单的验证措施,它的确还是相当有用的:英国人日后在破译ENIGMA的时候,这个特点可是大大帮助了他们的猜测性明文攻击(猜测性明文攻击为已知明文攻击的变种)——这是后话,现在就不多提了。
总的来说,反射板这个部件,为ENIGMA带来了相当大的危害。从这个意义上讲,反射板是ENIGMA上的一大败笔;也正因如此,其它国家的密码机,借鉴ENIGMA之处甚多,唯独这个反射板,却往往是避之不及。说来说去,天才也会犯错误——ENIGMA的发明人、德国的舍比尔乌斯同志,终于也在这里栽了个小跟头。
不过,正因为有了反射板这个独特装置,ENIGMA才有了极具特色的加密-解密同相的特征。这一点前文已经多次说过,这里就简单提一下吧——在接到密电以后,操作员只要调整好设置,再把收到的密电,逐个字母地打一遍,就能从显示板上依次观察并记录到正确的明文。
道理也很简单:既然明文P和密文C之间有折返对应关系,P会被折返成C;那么同样地,把C“按”回去,自然还会从P“冒”出来——于是,不需要额外的解密设备,只靠ENIGMA自身,就可以顺利完成解密。解密的过程如此方便,可就是反射板的功劳了;客观地说,这个特性在实用场合,特别是在烽火连天的战场上,又的确是个很不错的优点。
——败也萧何,成也萧何;这反射板,又该怎么评价它呢?
或许,应该从不同角度来评判吧——从密码机安全强度的角度来看,反射板是个错误;但是从机械美学(有这词么?咱光知道有个暴力美学)的角度看,这反射板却又让人玩味不已。
既然我们不是破译ENIGMA的盟军密码分析家,那么,也不妨泛泛体会一下反射板带来的密码美感吧,呵呵。。。
--------------------------------------------------------------------------------------
到现在,一个字母历经输入轮、转轮组、反射板、转轮组、输入轮,已经被加密成了一个完全不同的字母;多表替代的威力,到现在,也已经发挥的淋漓尽致。
不过,经过如此这般多表替代反复加密的ENIGMA,安全性已经非常好了,但是还没好到理想的程度——事实上,如果有数学高高高手对ENIGMA进行仔细分析的话,他完全可以通过计算来彻底破解ENIGMA,而工具也不要特殊的,纸和笔就够了——这一点,已经被数学证明了。
这就是纯粹的多表替代所带来的问题;对于密码机而言,这样的结果当然很不美妙——而这一点,很快就引起了德国人的警惕。为了解决这个问题,他们又给ENIGMA装上最后一道锁。
由此,我们对ENIGMA的剖析,也该进入了最后一个模块了。
---------------------------------
写完这篇下来,又一直改到现在,真是元气大伤,呵呵,休息几天再继续吧。。
本帖一共被 3 帖 引用 (帖内工具实现)
1001夜老兄怎么这么聪明...佩服
把这个反射板功能讲解得很清楚...
不过,这个“任何字母都不会被ENIGMA加密为它本身”的特性,似乎并不应归咎于反射板本身构造设计 -- 而是因为机电产品的特性:电流从一端输入,必然不可能从同一端输出... 很好奇想看一看是否有别的设计能够绕过这个坎儿...
花你。
能想出这个词,就知道一千零一夜老兄是个搞科研的好材料。
不要反射板,就算一个字母被加密成本身也不怕。你举的例子也说明了,A顶多只有一次可能被加密成本身。再来个A就成别的啦。
在轮型确定的情况下,把内部联线,凹口点,3和1的位置等等,相应调整一下,不行?
正因为在反射板而言,进入点和流出点是两个点,所以才不可能出现A被加密为A——具体情况,请老兄再仔细看文中的流程示意图;老兄所说,
可是有点冤枉我了。。呵呵,不是只有一次可能,而是一次可能也没有……
---------------------------------------------
又看了一遍老兄的问题。如果老兄是说,“取消反射板,就不可以这么解密吗”的话,那么,答案只能是否定的。
请老兄仔细想一想:
正因为ENIGMA加密字母时,字母信号经过了反射板的“对称”,才导致进入字母和输出字母是“互逆”的;
所以,无论是从输入端或输出端进入,这个互逆的关系并不会变;
而操作员解密电文时做的事情,就是把输出端流出的字母(也就是密文)从输入端再打回去而已,因此,自然可以解密。
某些其它密码机没有这个反射板,我们举例来说,比如A会被加密成U。那么,即便把收报的密码机的所有设置调的跟发报的密码机完全一样,又如何去解密?
再说清楚一点就是:
普通密码机上,输入A,最终U灯会亮;那么当你输入U以后,亮起来肯定未必是A——A和U在这里并不是互逆的折返关系啊——既然不是,如何解密?解出来的,不是乱码又是什么呢?
作为一个例证,普通的密码机上,往往都有一个专门的解密模块,附加在密码机上,用以对密文进行解密。而ENIGMA上就没有这个专门模块,究其原因,正是反射板的功劳。
加密两次 -- “ABCD”第一次加密变成“GDKN”,操作员换两个轮,把“GDKN”再加密一次,可能就是“AKEG” -- A仍然有可能是A,谁都不敢打保票了吧...
解密时操作员需要对其进行两次解密,还得预先知道几个轮的依次顺序,稍微麻烦一点...
这就是文科生的脆弱。。
得,还是花之走人了事。。。
是不是所有的报文都用莫尔斯码发出?就是不管是明文A还是密文A,只要是A,都是·—?
德国有没有把这个电码重新设计并且本身也被加密过一次。如果真的这么玩一下,那盟军可有的头疼。
有没有可能,在一篇密文里,不同的字母被加密成同一个字母。比如A--I,P--I
至少我记得德文里面有U(上面还带两点),Enigma上面可没看到咧?再就是,数字还有标点也没有咧?
中文可是笔划,中文一般怎么加密?
至于举例问题,实在帮不上。因为到现在也只能在理论上理解双重步进,实践中是怎么实现的,还是想不出来。
棘轮问题么,就不用讲啦。我原先以为是靠轮子本身的结构达成的。
居然有五个问题……咱也不是专家,随便探讨探讨,等待更高的高手来指教吧:)
1、是不是所有报文都用摩尔斯电码?
我自己倾向于认为,是这样的。
从道理上讲,在传输密电的时候,电码只是起到了载体的作用。因此,电码是不用保密的——我不怕你把AGFGX全部抄下来,因为抄下来你还是不知道我在说什么。
不过,既然摩尔斯电码被称为国际通用电码,那么似乎应该也有不通用的电码。至于各国在密码通信的实践中,有没有使用非通用的电码的例子,我就不清楚了,也一并候教方家吧:)
关于德国是否把电码再次加密的问题,截至目前我查到的资料,没有发现这个现象。
对电码本身加密,我个人判断,这应该是个得不偿失的工作。首先,如果只是简单地互换掉“电码-字母”的对应关系,那么根据频率分析便可以直接把它们还原,这一步非常简单,这样的密几乎等于没加——而如果采用复杂加密,阅读密电就势必要经过脱密电码-脱密密文两步。
且不论对电码本身的加密会不会比对明文的加密更牢固,两步加密必将使通信双方付出更大的密码通信成本——人力、物力、时间等等——这样做,在实际应用中究竟合算不合算?很值得怀疑。
如果觉得只对明文加密不保险,才考虑连电码也要加密的话,更可行的办法似乎是索性换一种更强悍的明文加密机制。不知老兄是不是这么看?
2、不同字母加密成相同密文字母的情况,是不是会发生?
肯定会发生,这是转轮密码机的多表替代的原理所决定的。
多表多表,就是说描述字母替代规律的换字表不是一张而是多张。因此,这一次A对应I,下次完全可能是P对应I。
顺便说一句,ENIGMA不能把字母加密成它本身,但在别的密码机,连这一点也能做到——也就是说,在其它的密码机上,A-I,P-I;A-A,P-P;A-U,P-M等这几种情况,都是可以发生的。
3、ENIGMA上的字母咋跟德文字母略有不同咧?
在【波兰篇-丘吉尔托起的灿烂星座】中,曾经介绍过ENIGMA的升级之路。在最初的ENIGMA-A上,不仅有U上俩点,A上俩点和O上俩点都是有的;在这三个变异元音之外,还有25个字母——去掉了一个不常用的Y。这样,ENIGMA-A就有28个键位。
在这个时候,ENIGMA就已经没有标点符号了。
而后的ENIGMA-B上,三个变异元音全被取消,Y也被恢复了;由此,ENIGMA呈现出标准的键盘位置,并一直流传——除了又恢复了部分符号的军事情报署型ENIGMA(Abwehr ENIGMA)外。
4、为什么ENIGMA的键盘上没有标点符号?
实话说,密电是不需要标点符号的。老兄一定拍过电报吧;呵呵,不用标点一样可以说清楚嘛。
至于数字,却是另一个问题了;对它的加密,按说是个小问题吧?却也曾经成为ENIGMA的一个漏洞。这个以后还要提到,现在就先不说了:)
5、中文如何加密?
一般通行的办法是先把中文编码为字母和/或数字,再对这些字母和/或数字进行加密。
这样一来,中文的加密,就跟英文法文德文。。。等拼音文字的加密没什么区别了,呵呵。
---------------------------
最后,看来石英钟这个例子,还得勉强维持下去了,呵呵
莫尔斯最早是在电报中用的,有过很多变种。早在19世纪中欧洲就统一了电报码,叫国际莫尔斯码。那时美国还在用美国莫尔斯码。后来无线电通讯从一开始就采用了国际莫尔斯码。二战的时候短距通讯有调幅甚至调频等语音通讯,但长距一般还是用基于点划的码。另外国际通讯统一用莫尔斯码,所以训练无线电人员莫尔斯码是一定要训练的。
但不是所有国家内部都用莫尔斯电码。莫尔斯电码是基于拉丁文的电码,对不少国家不适用。比如日本就有自己的基于片假名的电码系统,即对每个片假名字母编码。中国的电码系统也不是莫尔斯码。
用哪种码对解密码没有区别,截收到的反正都是点和划。你用片假名发,我用英文字母抄,反正都只是个符号。其中对应关系对破密码的人来说根本不是问题。
本帖一共被 1 帖 引用 (帖内工具实现)