服了酷到让人望而生畏密码学能解释得如此简单图解密码技术( 七 )


接线板( plugboard)是一种通过改变接线方式来改变字母对应关系的部件 。接线板上的接线方式是根据国防军密码本的每日密码来决定的 , 在一天之中不会改变 。
在电路中,我们还看到有3 个称为 转子( rotor)的部件 。转子是一个圆盘状的装置,其两侧的接触点之间通过电线相连 。尽管每个转子内部的接线方式是无法改变的,但转子可以在每输入一个字母时自动旋转 。当输入一个字母时,转子1 就旋转1/4 圈(当字母表中只有4 个字母时) 。转子1 每旋转1 圈 , 转子2 就旋转1/4 圈,而转子2 每旋转1 圈,转子3 就旋转1/4圈 。这3 个转子都是可以拆卸的,在对Enigma 进行设置时可以选择转子的顺序以及它们的初始位置 。
图7 显示了一个转子的放大示意图 。

服了酷到让人望而生畏密码学能解释得如此简单图解密码技术

文章插图
图7 转子
这些装置组合起来使得Enigma 看起来很像是一个能够动态变化的“鬼脚图” 。
鬼脚图(ghost leg),日本称“阿弥陀签” , 是一种基于数学原理的简易决策游戏,其基本原理是将一 个序列映射到元素相同但顺序不同的另一个序列,具体请参见维基百科 。
四、Enigma 的加密
下面我们来详细讲解一下Enigma 的加密步骤 。图8 展示了发送者将一个包含5 个字母的德语单词nacht(夜晚)进行加密并发送的过程 。
服了酷到让人望而生畏密码学能解释得如此简单图解密码技术

文章插图
图8 用Enigma 加密nacht
在进行通信之前,发送者和接收者双方都需要持有国防军密码本,国防军密码本中记载了发送者和接收者需要使用的每日密码 。
(1) 设置Enigma
发送者查阅国防军密码本,找到当天的 每日密码,并按照该密码来设置Enigma 。具体来说,就是在接线板上接线,并将3 个转子进行排列 。
(2) 加密通信密码
接下来 , 发送者需要想出3 个字母,并将其加密 。这3 个字母称为 通信密码。
通信密码的加密也是通过Enigma 完成的 。假设发送者选择的通信密码为psv,则发送者需要在Enigma 的键盘上输入两次该通信密码,也就是说需要输入psvpsv 这6 个字母 。
发送者每输入一个字母,转子就会旋转,同时灯泡亮起,发送者记下亮起的灯泡所对应的字母 。输入全部6 个字母之后,发送者就记下了它们所对应的密文,在这里我们假设密文是ATCDVT(密文用大写字母来表示) 。
(3) 重新设置Enigma
接下来,发送者根据通信密码重新设置Enigma 。
通信密码中的3 个字母实际上代表了3 个转子的初始位置 。每一个转子的上面都印有字母,可以根据字母来设置转子的初始位置 。通信密码psv 就表示需要将转子1、2、3 分别转到p、s、v 所对应的位置 。
(4) 加密消息
接下来,发送者对消息进行加密 。
发送者将消息(明文)逐字从键盘输入,然后从灯泡中读取所对应的字母并记录下来 。这里是输入nacht5 个字母,并记录下所对应的5 个字母(如KXNWP) 。
(5) 拼接
接下来,发送者将“加密后的通信密码”ATCDVT 与“加密后的消息”KXNWP 进行拼接,将ATCDVTKXNWP 作为电文通过无线电发送出去 。
上面就是用Enigma 进行加密的操作步骤,看来还真是挺麻烦的 。
五、每日密码与通信密码
大家应该注意到了,在Enigma 中出现了“每日密码”和“通信密码”这两种不同的密钥 。
每日密码不是用来加密消息的 , 而是用来加密通信密码的 。也就是说 , 每日密码是一种用来加密密钥的密钥 。这样的密钥 , 一般称为密钥加密密钥( Key Encrypting Key , KEK) 。KEK在现代依然很常用 。