历史上几种著名的密码:恺撒密码、简单替换密码、Enigma
两种破译密码的方法:暴力攻击、频率分析
1.恺撒密码
1.1 什么是恺撒密码
恺撒密码:是一种相传尤利乌斯·恺撒曾使用过的密码
恺撒密码是通过将明文中所使用的字母表按照一定的字数“平移”来进行加密的
我们用小写字母(a,b,c,...)来表示明文,用大写字母(A,B,C,...)来表示密文
如下图所示,我们将字母表平移3个字母
明文a在加密后就变成了与其相隔3个字母的D,以此类推,b->E,c->F,d->G,...,w->Z,x->A,y->B,z->C
1.2 恺撒密码的解密
恺撒密码可以用暴力破解来破译密码
暴力破解:将所有可能的密钥全部尝试一遍,本质是从所有密钥中找出正确密钥,又称穷举搜索
2. 简单替换密码
2.1 什么是简单替换密码
简单替换密码:将明文中所使用的字母表替换为另一套字母表的密码称为简单替换密码
恺撒密码也可以说是简单替换密码中的一种
如下图所示,就是一个简单替换密码的对应表(替换表)
2.2 简单替换密码的解密
简单替换密码的加密过程是依次将明文中的每一个字母按照替换表替换成另一个字母
简单替换密码解密时,只要使用加密时所使用的替换表进行反向替换
2.3 简单替换密码的密钥空间
恺撒密码可以通过暴力破解来破译,但简单替换密码很难通过暴力破解来破译。
因为简单替换密码中可以使用的密钥数量,比恺撒密码要多得多
密钥空间:一种密码能够使用的“所有密钥的集合”称为密钥空间
所有可用密钥的总数就是密钥空间的大小
密钥空间越大,暴力破解就越困难
简单替换密码中,明文字母表中的a可以对应A,B,C,...,Z这26个字母中的任意一个(26种),b可以对应除了a所对应的字母以外的剩余25个字母中任意一个(25)种。以此类推,我们可以计算出简单替换密码的密钥总数为:
26×25×24×23×...×1=403291461126605635584000000
这个数字相当于4兆的约100兆倍,密钥数量如此巨大,用暴力破解进行穷举就非常困难。
2.4 用频率分析来破译密码
使用被称为频率分析的密码破译方法,就能够破译简单替换密码
频率分析利用了明文中的字母的出现频率与密文中的字母的出现频率一致这一特性。
通过统计密文中每个字母出现的频率、英语文章中所使用的字母频率(eg:e)、英语中出现最多的单词(eg:the)等进行替换,根据英语词汇寻找可能的组合,列出所找到的组合以及假设的对应关系,除了高频字母外,低频字母也可以找到相关的组合。
- 除了高频字母以外,低频字母也能够称为线索
- 搞清楚开头和结尾能够称为线索,搞清单词之间的分隔也能够称为线索
- 密文越长越容易破译
- 同一个字母连续出现能够成为线索(这是因为在简单替换密码中,某个字母在替换表中所对应的另一个字母是固定的)
- 破译的速度会越来越快
3. Enigma
3.1 什么是Enigma
Enigma是由德国人阿瑟·谢尔比乌斯(Arthur Sherbius)于20世纪初发明的一种能够进行加密和解密操作的机器
谢尔比乌斯使用能够转动的圆盘和电路,创造出了人类手工无法实现的高强度密码
刚发明之际,Enigma被用在商业领域,纳粹时期,德国国防军采用了Enigma,并将其改良后用于军事用途
3.2 用Enigma进行加密
Enigma是一种由键盘、齿轮、电池和灯泡所组成的机器,通过这一台机器就可以完成加密和解密两种操作
发送者和接收者各自拥有一台Enigma
发送者用Enigma将明文加密,将生成的密文通过无线电发送给接收者
接收者将接收到的密文用自己的Enigma解密,从而得到明文
由于发送者和接收者必须使用相同的密钥才能够完成加密通信,因此发送者和接收者会事先收到一份叫做国防军密码本的册子
国防军密码本中记载了发送者和接收者所使用的每日密码,发送者和接收者需要分别按照册子的指示来设置Enigma
Enigma加密通信流程如图所示
3.3 Enigma的构造
Enigma能够对字母表中的26个字母进行加密和解密操作,按下键盘上的一个键后,电信号就会通过复杂的电路,最终电量输出用的灯泡。
如图所示,只有4个字母的情况:
每当按下Enigma上的一个键,就会点亮一个灯泡,读取灯泡所对应的字母并记录下来。
这个操作在发送者一侧是加密,在接收者一侧是解密
只要将键和灯泡的读法互换一下,在Enigma上就可以用完全相同的方法来完成加密和解密两种操作了
接线板是一种通过改变接线方式来改变字母对应关系的部件
接线板上的接线方式是根据国防军密码本的每日密码来决定的,在一天之中不会改变
转子是一个圆盘状的装置,其两侧的接触点之间通过电线相连
转子内部的接线方式无法改变,转子可以在每输入一个字母时自动旋转
当输入一个字母时,转子1就旋转1/4圈(字母表中只有4个字母时),转子1每旋转1圈,转子2就旋转1/4圈,而转子2每旋转1圈,转子3就旋转1/4圈
3个转子都是可拆卸的,在对Enigma进行设置时可以选择转子的顺序以及它们的初始位置
3.4 Enigma加密
Enigma加密操作步骤:
① 设置Enigma
发送者查阅国防军密码本,找到当天的每日密码,按照该密码来设置Enigma
② 加密通信密码
发送者需想出3个字母,并将其加密,这三个字母称为通信密码
通信密码也是通过Enigma完成的
将通信密码连续输入两次并加密
③ 重新设置Enigma
发送者根据通信密码重新设置Enigma
④ 加密消息
发送者对消息进行加密
发送者将消息逐字从键盘输入,然后从灯泡中读取对应的字母并记录下来
⑤ 拼接
发送者将“加密后的通信密码”与“加密后的消息”进行拼接,作为电文通过无线电发送出去
3.5 每日密码与通信密码
每日密码不是用来加密消息的,是用来加密通信密码的
每日密码是一种用来加密密钥的密钥,即密钥加密密钥
3.6 Enigma的解密
Enigma解密过程:
① 分解
接收者将接收到的电文分解成两个部分,加密后的通信密码和加密后的消息
② 设置Enigma
接收者查阅国防军密码本中的每日密码,并按照该密码设置Enigma
③ 解密通信密码
接收者将加密后的通信密码进行解密
④ 重新设置Enigma
接收者根据通信密码重新设置Enigma
⑤ 解密消息
接收者对消息进行解密
接收者将电文剩余部分逐一用键盘输入,然后从灯泡读取结果并记下来,就完成了对消息解密的过程
3.7 Engima的弱点
① 将通信密码连续输入两次
破译者可以知道密文开头的6个字母被解密之后的明文一定是3个字母重复两次
② 通信密码人为选定
密码系统中使用的密钥是不能人为选定的,而应该使用无法预测的随机数来生成
③ 必须派发国防军密码本
密码本一旦泄露,就会带来大麻烦
4.为什么要将密码算法和密钥分开
- 恺撒密码
密码算法:将明文中的各个字母按照指定的字母数平移
密钥:平移的字母数量- 简单替换密码
密码算法:按照替换表对字母表进行替换
密钥:替换表- Enigma(通信密码的加密)
密码算法:使用Enigma密码机,通过接线板的接线方式、3个转子的顺序、每个转子的旋转位置对字母进行替换
密钥(每日密码):接线板的接线方式、3个转子的顺序、每个转子的旋转位置- Enigma(通信电文的加密)
密码算法:使用接线板的接线方式和3个转子的顺序固定的Enigma密码机,按照每个转子的旋转位置对字母进行替换
密钥(通信密码):每个转子的旋转位置
密码算法中必然存在可变的部分,这些可变部分就相当于密钥。
密码算法是需要重复使用的,在密码算法中准备一些可变部分,每次通信是都对这部分内容进行改变,而这一可变部分就是密钥