图解密码技术(第二章)
- 接线板 plugboard,转子rotor
- 密钥加密密钥key Encrypting Key,KEK
- 隐蔽式安全性 security by obscurity
2.4Enigma
Enigma是一种由键盘、齿轮、电池和灯泡所组成的机器,通过这台机器就可以完成加密和解密工作。
Enigma加密通信
发送者和加密者各自拥有一台Enigma。
发送者和接受者必须使用相同的密钥,所以他们有一本叫做国防军密码本的册子,里面记录了所使用的每日密码。
密文通过无线电通信。
Enigma的构造
-
每当按下Enigma上的一个键,就会点亮一个灯泡。将按键的同时,读出灯泡所对应的字母,写在纸上。
这个操作在发送者一方是加密,在接收者一方是解密。
-
接线板:接线板上的连接方式是根据国防军密码本的每日密码决定的,一天内不会变
转子:转子内部的接线方式无法改变,但转子在每输入一个字母时自动旋转。三个转子可以拆卸,在对Enigma进行设置时,可以选择转子的顺序以及它们的初始位置。
Enigma的加密
-
在进行通信前,双方都需要持有国防军密码本,国防军密码本中记载了发送者和接收者需要使用的每日密码
-
设置Enigma
发送者查询国防军密码本的每日密码,按照该密码设置Enigma。即在接线板上连线,将3个转子进行排列
-
加密通信密码
发送者想出三个字母,并将其加密,这三个字母称为通信密码
通信密码的加密也是Enigma完成的。加入发送者选择的通信密码是psv,则要在Enigma键盘两次输入psv,即psvpsv。每输入一个字母,就会有相应的灯泡亮起。记下对应的密文:(假设密文为)ATCDVT
-
重新设置Enigma
发送者重新设置Enigma。通信密码的三个字母代表了三个轮子的初始位置,发送者需要将轮子1/2/3分别转到p/s/v所对应的位置
-
加密消息
发送者将明文(nacht)从键盘输入,然后从灯泡中读取对应字母(KXNWP)并记录下来。
-
拼接
发送者将加密后的通信密码(ATCDVT)与加密后的消息(KXNWP)进行拼接,ATCDVTKXNWP作为电文通过无线电发送出去。
-
每日密码与通信密码
每日密码是用来加密通信密码的,通信密码来加密消息。
- 采用两重加密,是因为用同一个密钥所加密的密文越多,破译的线索也会越多,危险性增加
每日密码是一种用来加密密钥的密钥,称为密钥加密密钥。
避免通信错误
连续两次输入通信密码,是为了防止信号差而出现错误。
接收者可以对通信密码进行校验,检查解密后的通信密码是不是三个字母重复两次得来的。
Enigma的解密
-
解密步骤:
-
分解
接收者将受到的电文ATCDVTKXNWP分解成两部分,前六个字母和剩余字母。
-
设置Enigma
和发送者设置Enigma时相同。
-
解密通信密码
接收者将ATCDVT输入到Enigma,将亮起的灯泡记录下来psvpsv,psv为通信密码,且接收者可以判断有没有错误。
-
重新设置Enigma
接收者根据通信密码psv重新设置Enigma。通信密码的三个字母代表了三个轮子的初始位置,发送者需要将轮子1/2/3分别转到p/s/v所对应的位置
-
解密消息
接收者将KXNWP输入到Enigma,将亮起的灯泡记录下来nacht,这就完成了对消息的解密。
-
Enigma的弱点
- 每次输入,通过三个轮子改变电路;加密通信密码时,实质上只有轮子1会转。
- 将通信密码连续输入两次并加密,这样密码破译者只需要破译前三个字母。
- 通信密码是人为选定,密钥应该使用无法预测的随机数来生成。
- 必须派发国防军密码本,如果它落到敌人手中,就很麻烦了。
Enigma的破译
Enigma的设计并不依赖于隐蔽式安全性,只要不知道Enigma的设置(相当于密钥),就无法破解。
最后被破解雷耶夫斯基是通过密文找到每日密码(一天之中是不会变的)的方法。
图灵在1940年研制出破译Enigma的机器