查看原文
其他

硝烟中的艺术品—恩尼格码 |《走进计算机文化史》之二

2017-08-14 道法自然 哲学园

本文经「原理」(微信公众号:principia1687)授权转载,禁止二次转载


在计算机系列文章第一期的时候为大家大概介绍了现代计算机的分支及发展(详见《从开始到现在》)。这一期我们从计算机的前身讲起,开始我们的计算机的探索之旅。


故事要回到二十世纪初。


当时就已经有一些国家开始将一种“转子加密机”(如图1所示)用于商业及政府之间的信息加密及传输。这种加密机后来被统称为恩尼格玛机



△ 图1:恩尼格玛机。(图片来源:Crypto Meseum)


恩尼格玛机由三部分组成,从下往上分别是键盘(下方按键),显示板(中间字母显示,通过字母下方的灯泡亮起来显示字母)以及转子(机器上方像齿轮的四个转子)。


若是加密方使用,键盘则输入明码字母,显示板显示的是加密后的字母,而上面的转子则负责经过一系列的机械及电路设计对输入字母进行加密。若是解密方使用,键盘则输入加密后的字母,显示板显示解密后的字母,而转子则负责通过一系列的机械机电路对输入字谜进行解密。也就是说,如果两个加密机的设置相同,加密前后的字母是可以互相转换的。即如果在键盘上输入 A 得到的加密是 F 的话,那么“在同一设置下”,键盘上输入 F 即可得到加密前的 A。


那么怎样才是机器的同一设置呢?我们首先得先了解一下转子的结构。



△ 图2:转子。(图片来源:Wikipedia)


转子是恩尼格码机的核心部分。最开始的恩尼格玛机只有三个转子。后来为了增加破译的难度,在1938年之后恩尼格玛机开始使用五个转子,直至最后增加到八个。这些转子使用罗马数字 I 到 VIII 来识别。如图2所示,一个转子分为两半,转子右侧均匀排布着26个金属管脚,以代表26个英文字母(空格和特殊符号用字母组合表示)。转子的左侧同样等距排布着26个金属触点,也代表着26个英文字母。



△ 图3:转子。(图片来源:Wikipedia)


当两部分合在一起并在键盘上输入一个字母的时候,转子右侧的其中一个管脚就会通电并接触左侧转子的一个触点形成通路。若此时代表 A 的管脚连在了代表 M 的触点,此时的字母 A 就被加密成了字母 M。同一输入字母会经过 3 到 8 个转子的不同加密来增加破译难度。而连接触点和管脚的金属线在每个转子内的排列方式也不尽相同。操作人员可手动拧动转子进行设置。每次输入之后,放在最右边的转子便会转动一格从而改变加密方式。每当靠右的转子转动一周之后,其相邻的左边那个转子便会转动一格。和钟表秒针分针和时针的感觉很像。由于这样的设置,同一个字母输入便会得到不同的加密输出。同样,同一个加密后的字母也可能被解码成不同的字母。这一特性改变了当时同一输入得到同一输出的加密方式,大大的增加了破译的难度。


那么回到开始的话题,什么叫做同一设置呢?那就是在加密和解码之前将加密方和解码方的恩尼格玛机转子位置、转子内部字母排列顺序及接线板的连线(见后文)设置在同一起始位置上。而这些起始位置需要被记录在密码本中并定期更新。



△ 图4:接线板位于恩尼格玛密码机前部键盘的下方。(图片来源:Wikipedia)


后来第二次世界大战爆发,恩尼格玛机被德国改进后用在了对军事信息的加密。其改进除了增加转子个数之外,还在机器的正前方添加了一个接线板,如图4所示。


接线板允许操作人员通过连接两个字母来设置更多不同的线路。接线板上每条线都会连接一对字母,使电流在进入转子之前改变方向。比如图中连接的 A 和 J 点,当操作人员连接这两点并按下 A 键时,电流就会先到达 J 插口(相当于按下J 键)再流经转子。接线板上有 26 个字母,所以最多可以同时接 13 条线。(而在实际使用中,有些恩尼格玛机只用 10 条连接线)细心的读者可能会注意到为何每个字母都会有两个插孔。那是因为上插孔连接键盘,下插孔连接转子。当插头插入时,该按键(A)和转子将会断开。并通过插头的另一端与J按键连接后接入转子。总的来说其运行原理可由图5表示。


△ 恩尼格玛密码机的原理图。(图片来源:Wikipedia)


图中 1 为供电系统,在 2 处按下 A 键后电流流过 3 通过 4 , 5(转子)进入 6(反射器)。反射器将电流导回转子并流向 7(S键)。此时S键因接线板插头的插入两级被断开。电流因此流向接线板插头的另一端(D 键)。此时 D 键的两级同样因插头而断开,所以电流流向显示器 字母 D 下面的灯泡。整个系统在转子和接线板的共同合作下将字母 A 加密成为字母 D。当然,如上文所描述的,按下按键的同时转子位置发生改变,所以再次按下 A 键的时候将会的到不同的结果。


读者可能会怀疑一个插线板能有多大的功效居然使得平时作为商用的恩尼格玛机被军方使用?其实这个小小的接线板可以说是破译恩尼格码密码最无解的难题之一。原因很简单,因为解码时破译方需要有同样的连接板设置。如果只是三个齿轮运行,其密码最多可以有 26 x 26 x 26 = 17576 种可能。(抛开有些恩尼格玛机中第二个和第三个转子会共同转动的情况。)每增加一个转子也只会增加 26 倍的密码可能性。然而一个小小的接线板,在用十条线做连接的机器中便将会增加


倍!


在这个基础上再加上转子起始位置及线路连接设置的定期更新,恩尼格码被当时德国称之为不可破之加密,德国军方对其有着非常高的自信。原因很简单,因为敌人不可能用穷举法来破译密码。


但众所周知,恩尼格码还是被破解了。看似如此周密的加密系统存在着哪些缺陷呢?科学家们是如何利用这些缺陷的?他们在破解恩尼格码的时候有经历了哪些心路历程呢?且看下回分解。


从开始到现在 |《走进计算机文化史》之一

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存