恩尼格码密码机如何工作?

less than 1 minute read

Published:

恩尼格码机器底层工作原理是字母替换,明文中的每个字母都会被恩尼格码密码机替换成另一个字母。

1. 单个字母的旅程

恩尼格码机是一台机械式操作的电子设备,电信号通过电线与各种机械部件传递。了解这台机器运作方式最简单的方法就是跟随一个字母从键盘(输入,明文)到灯板(输出,密文)。

下面的图片显示了从键盘上按下字母T到灯板亮起字母G这一过程中电信号的路径。 ​ Alt text

1.1 键盘

当密码机的操纵者在键盘上按下字母“T”的时候,机器会产生一个电信号,通过机器的电子线路,最后点亮灯板上的灯。键盘是整个“字母旅程”的起始站。

1.2 插接板

插接板是“字母旅程”的第一站,电信号来到插接板输入端字母“T”的位置。在插接板中,有些字母会被转接到其他不同字母上,导致输出的电信号也会被改变(如字母T)。如果没有输入字母没有被转接,那么直接输出它(如字母U)。此时,在本例中,字母T通过插接板后被转接成字母K。

1.3 静态转子

下一站是静态转子。顾名思义,它并没有改变信号,只是将电信号的载体从电线变成了金属触点(只有触点连接的时候,电信号才可以通过)。现在,我们的电信号仍然表示字母’K’。静态转子的输出端连接着右转子的输入端,从这里开始,事情变得复杂了起来。

1.4 转子

通过图1可以发现,一共有五个转子,最右侧的是一个静态转子,已经经过。现在字母’K’来到中间三个转子。三个转子的运行原理是相同的,所以我们先只讨论一个转子的结构。对于每一个转子,其外部右侧有一圈(26个)金属触点,其外部左侧也有一圈(26个)金属触点,这两个金属触点分别负责接收来自“上游”的电信号和将经过此转子的电信号传递给“下游”。经过此转子时,承载字母的电信号会被打乱(具体打乱的方式是:乱序地连接左右侧金属触点),比如在图1中,字母’K’经过Wheel III变成了字母’U’,这样,单个转子改变字母的任务就完成了。将三个转子拼接在一起,使转子之间可以通过各自的金属触点传递电信号,我们的字母’K’经过图1中三个转子后变成了字母’H’。

1.5 反射板

顾名思义,反射板的作用是将电信号反射回左侧第一个转子。反射板只有右侧一圈(26个)金属触点,反射的原理是使用导线将右侧一圈触点从其内部两两连接(是的,需要13根导线),从而达到“反射”电信号的作用。反射板的结构决定了它具有以下两个特点:

  • 排己性:比如对反射板输入字母’A’,那么反射板输出的字母一定不是’A’,因为其内部不允许存在一根A触点连接到A触点的导线。

  • 自反性:我们在初中都学过入射角与出射角的概念,光线经过入射角,经过反射,从出射角射出。加入将光线反着沿刚才的出射角射入,那么出射光线一定也会经过刚才的入射角。在恩尼格码机中也是同样的道理。这个特性使得恩尼格码机成为了一台加解密一体机。

此时,在本例中,经过反射板的反射,我们的字母’H’经过反射板已经变成了字母’D’,字母’D’沿着回路(图1中的蓝色实线)返回到灯箱中,“G灯”亮起。至此,一个字母’T’被恩尼格码机加密为字母’G’的旅程结束了。

2. 安全性

在经历单个字母的旅程后,可能会提出质疑:这不就是一个简单的单表替换密码吗?这不是很容易破解吗?诚然,恩尼格码机的转子结构是在做字母替换,而且单表替换密码安全性并不高。但是,恩尼格码机的三个转子都是可以转动的。

操作恩尼格码机的时候,每一次按键,三个转子最右侧的那一个都会转动一次,当最右侧转轮转动一圈后,中间转轮转动一次,中间转轮转动一圈后,最左侧转轮转动一次。这种转动过程可以被类比为26进制版本的时:分:秒(时分秒分别对应左中右转子)。

在转动的过程中,三个转子之间触点的两两对应关系随之改变,从而改变了每个字母信号通过转子时的电信号路径,意味着任意转子的转动都会产生不同的替换结果,效果是相当于产生了一张全新的字母替换表。

我们可以量化一下转子结构的安全性,我们在这里计算三个转轮产生的字母替换表数量:$ 262626 = 26^3 = 17576 $。这个数量应对当时的通讯文稿可以说绰绰有余,因为鲜有万字文件,所以在当时真正的做到了“一字一换表”的操作。

恩尼格码机操作员在操作之前,先将三个转轮调整在特定的位置,这个位置可以对应三个转轮呈现的一个数字三元组(例如17-9-22),然后输入明文并依次通过灯板记录密文。接收方要解密密文的前提是必须知晓三个转轮的初始位置,也就是那个数字三元组(17-9-22),接着在键盘上输入密文并依次通过灯板记录明文。是的,所谓的转轮初始位置便是密钥。

但是其实这样的设计并不能百分之百地规避开暴力破解手段。恩尼格码机发明人谢尔比乌斯(Arthur Scherbius)对于安全性有着极高的要求,于是他为恩尼格码机加装了插接板装置。前面提到,接线板的作用就是交换两个字母,交换线插到哪两个字母上就把这两个字母做了交换。如果插接板上存在六对交换线的话,那么相当于从26个字母中选出12个组成6对,可以计算有多少种方式:$9657700 * 10395 = 100391791500$