Enigma(转轮密码机)在密码学界里,绝对是划时代的丰碑。并且,它所凝聚而成的不是一座丰碑,而是两座:研究并制造出Enigma是一座,研究并破解掉Enigma是另一座。只要稍微了解一下Enigma的历史,或许很多人就会被其中闪耀的人类智慧之美所折服;而如果要向这样辉煌的智慧敬献花环的话,我想,主要应该献给3个人:首先是德国人亚瑟·谢尔比乌斯(Arthur Scherbius);其次是波兰人马里安·雷耶夫斯基(Marian Rejewski);然后是英国人阿兰·图灵(Alan Turing)。
这3个人中,德国人发明了Enigma;波兰人初步破解了简单的Enigma;而英国人彻底终结了最高难的Enigma。
那么,就让我们顺着时间的主轴,先从德国人亚瑟·谢尔比乌斯说起吧!
![](/admin/upload/img/200851523156328.jpg)
在古典密码时代,大家普遍认为,哪怕再聪明的人,他设计出的密码也会被另外的人攻破——诸如此类的观点,其实还是挺有道理的。
只是当时的人们完全没有想到,随着密码编码手段的强力进化,这个所谓“能攻破的人”不再是单数,而是复数;不仅单个的人不再可能自行攻破,甚至,就是倾全国之人力物力,也未必能很快奏效。他们没想到,因为他们没见过非人工编码的加密方式,而这个“非人工”,说的当然就是机器。
——机器不仅能做到,而且一出手就改变了整个密码学的面貌!
第一位应该接受花环的亚瑟·谢尔比乌斯(Arthur Scherbius),就这样当仁不让地站在了大时代的最前端。
1878年,历史长河中一个普通得不能再普通的年份——普法战争刚刚结束7年,俄土战争刚结束半年,离一战还有36年。同年10月20日,在遥远的欧洲,在德国美因河畔法兰克福的一个小商人家,一个娃娃诞生了。没错,他就是谢尔比乌斯。
在一战即将结束的1918年2月23日,在参考了荷兰人科赫的构想之后,谢尔比乌斯为自己设计的一种密码机器申请了专利。这是人类第一份关于转轮密码机的专利申请——在他之后,还有荷兰人科赫、瑞典人达姆、美国人赫本陆续提出自己的转轮密码机专利申请。但是,首先被官方批准的,却是赫本的专利。考虑到当时各位发明家是独立地向各自国家提出的申请,谢尔比乌斯没有首先获得批准,大概也只能说是造化弄人了吧。
就在提出申请的同年,谢尔比乌斯和朋友一起开了一家公司,开始出售这种机器——Enigma。之所以取名为Enigma(意为“谜”),我猜当时的谢尔比乌斯对这机器肯定是很自豪,甚至是很自负的。实话说,他的这项发明的确使加密产生了巨大的飞跃:因为这台Enigma,人类终于迈入了机械化编码的时代!而且,较之荷兰人科赫初步和粗糙的设想,Enigma的起点要高得多——它已经完全不是蹒跚学步的水平,而是个刚刚出生就已具备了强大战斗力的武士!
Enigma的构造之精巧、思路之诡异,的确让每个稍微仔细思考过它的原理的人大为叹服。有诗为证:
次第转轮幻无穷,展化密字亿万千。
此谜只合天上有,缘何飞落人世间!
Enigma的加密核心,是3个转轮。在每个转轮的边缘上,都标记着26个德文字母,借以表示转轮的26个位置。经过巧妙的设计,每次转轮旋转的时候,伴随着“咔嗒”、“咔嗒”的声音,它都会停留在这26个位置中的某个位置上。
我们现在假设从转轮的右面“输入一个字母信号”,经过转轮内部特定走向的导线连接后,由于输入—输出的位置发生了变化,输出的字母信号也就不再对应刚才输入的字母了。输入的字母K,经过转轮内部的导线,最终从转轮的另一侧输出,并变成了R。
谢尔比乌斯认为,一个转轮太少了,怎么着也得来3个,起码要弄成一个转轮组。
在转轮组内,转轮们相互接触的侧面之间,都有相对应的电路触点,可以保证转轮组的内部构成通路。于是,输入的字母K,经过第一个转轮,变成输出字母R;之后这个R进入第二个转轮,咱们假设它又变成了C;尔后,这个C再进入第三个转轮,假设又变成了Y。
如此这般,初始字母K历经层层磨难,终于功德圆满,变成了谁也认不出来的Y。
值得说一句的是:这3个转轮内部都有着复杂的连线,而具体的走线情况,又都是各自不同。由于3个转轮内部连线不同,因此,它们合起来连续加密的总效果就是3个转轮各自能力的乘积。也就是说,每个转轮都有26个位置,3个转轮组合起来,就能生成26×26×26=17576 种不同的变化。
从以上的描述可以看出,Enigma转轮组的加密原理,正是多表替代——它通过不断改变明文和密文的字母映射关系,对明文字母们进行着连续不断的换表加密操作。而这17576种变化着的字母映射关系,实际就是对应着迥然不同的17576张换字表。
我们在前面介绍过,多表替代的密钥在实践中一般都比较短,即便长点儿的,一般也就20位。因此,密钥长度20,也就意味着它背后对应着20张换字表。
反观Enigma,我们已经可以开始初步领教机器编码的威力了:过去常用的20张,顶天了100张换字表,现在已经被上万张——具体说就是17576张——换字表给轻松取代了。我们常说“量变引起质变”,而这个成百上千倍扩大换字表总规模的办法,确实一下就刷新了加密的纪录,以至完全改变了加密的面貌!对一个使用Enigma的加密者来说,现在他拥有的换字表资源简直是多得奢侈,甚至奢侈得都有点过分了……(未完待续,本文摘自《密码传奇》)