第四讲
矩阵模运算与古典密码
—— Hill 2 加密解密
主要内容
信息加密与古典密码
矩阵运算与Hill
2加密解密
Hill
2密码破译
MATLAB 实现
为什么要加密
保密通讯无论在军事、政治、经济还是日常生活中都起着 非常重要的作用。
为了将信息传递给己方的接受者,同时又要防止他人(特 别是敌人)知道信息的内容,必须将要传递的信息(明文)
加密,变成密文后发送出去,这样,即使敌方得到密文也看 不懂,而己方的接受者收到密文后却可以按照预先定好的方 法加以解密。
信息加密
密码分类
古典密码:以字符为基本加密单元
加密信息传递过程
明文(信息) 加密器
密文
明文(信息) 解密器 密文
普 通 信 道
发 送
敌方截获 破译 发送方
接收方
矩阵运算与Hill 2 密码
Hill2 密码的加密过程
Hill
2密码中所用的数学手段是 矩阵运算
加密过程:
①
将26 个字母
与0 到 25
之间的整数建立一一对应关系,称为字母的
表值
,然后根据明文字母的表值,将明 文信息用数字表示
A B C D E F G H I J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 0
设通讯双方所给出的 26 个字母的表值如下:
注:这里假定明文中只使用 26 个大写字母
Hill2 密码的加密过程
②
选择一个二阶可逆整数方阵 A
,称为Hill2密码的加 密矩阵
,它是加密体制的 “密钥
”,是加密的关键,仅 通讯双方掌握
③ 将明文字母分组。 Hill2 使用的是二阶矩阵,所以将明 文字母每 2 个一组(可以推广至Hilln密码)。查出每个字 母的表值,这样,每组字母构成一个二维列向量
α
若最后仅剩一个字母,则补充一个没有实际意义的哑字母
(哑元),这样使得每组都有 2 个字母
④ 令
β = A α
,由β
的两个分量反查字母表值表,得到 相应的两个字母,即为密文字母Hill2 加密举例
例: 设明文为“ HDSDSXX”(华东师大数学系),试给 出这段明文的 Hill
2密文。其中加密矩阵为
将明文字母分组:
HD SD SX XX
最后的一个字母 X 为哑字母,无实际意义。
解:
,
8 19 19 24
, ,
4 4 24 24
A B C D E F G H I J K L M 1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 0
查表得每组字母的表值,得到 4 个二维列向量:
1 2 0 3
A
=
将上述 4 个二维向量左乘密钥矩阵 A 得:
16 27 67 72
, , ,
12 12 72 72
作 模 26 运算,将所有的数都化为 0 到 25 之间的整数:
16 27
(mod 26) , (mod 26)
12 12
67 72
(mod 26)
16 1
12 12
15 20
20 , (mod 26) . 20
72 72
= =
= =
Hill2 加密举例
反查字母表值得每个向量对应的字母组为:
HDSDSXX PLALOTTT
Hill
2 加密Hill2 加密举例
A B C D E F G H I J K L M 1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 0
16 1 15 20
, , ,
12 12 20 20
PL AL OT TT
问题: 怎样解密?
明文字母 查表值
分组 一组向量
加 密 矩 阵 左
乘
一组新的向量 密文 反查表值
Hill2 加密过程
模运算
Hill 2 密码解密
12
先查出密文字母 “ PL AL OT TT ” 所对应的向量:
16 1 15 20
, , ,
12 12 20 20
解密:加密的逆过程,将加密过程逆转回去即可
Hill2 解密过程
上面的向量是由 经过 模 26 运算 得来的,现在的问题是怎样逆转回去?
16 27 67 72
, , ,
12 12 72 72
例:
怎么得到密文 “PLALOTTT
” 的原文模 m 可逆
{0,1, 2, ..., 1}
Z
m= m − 记
定义 1:设
A
为定义在集合Z
m 上的n
阶方阵,若存在一个定义在
Z
m 上的方阵B
,使得则称
A
模 m 可逆,B
为A
的 模 m 逆矩阵,记为(mod ) AB = BA = E m
1
(mod )
B = A
−m
定义 2:设
a ∈ Z
m ,若存在b ∈ Z
m 使得ab=1 (mod m)
,则称
b
为a
的 模 m 倒数 或乘法逆,记作b = a
-1(mod m)
。注:
a , b
都是Z
m 中的数命题:定义在集合 Z
m上的 n 阶方阵 A 模 m 可逆的充要条 件是:m 和 det(A) 无公共素数因子,即 m 与 det(A) 互素。
Hill
2密码的加密矩阵必须满足上述条件。
m=26 m 的素数因子只有 2 和 13
定义在 Z
26上的方阵 A 模 26 可逆 的充要条件是:
模 m 可逆
问题: 是否 Z
m中所有的数都存在模 m 倒数 ?
a 存在唯一的模 m 倒数 a 与 m 无公共素数因子
Z
26中具有模 26 倒数的整数及其模 26 倒数表
a 1 3 5 7 9 11 15 17 19 21 23 25 a
-11 9 21 15 3 19 7 23 11 5 17 25
模 26 可逆
思考: 如何用 Matlab 编程来找出所有模 m 倒数
的整数及其模 m 倒数?(穷举法)
,
16 1 15 20
, ,
12 12 20 20
在模运算下解方程组: A α = β
1
(mo d 2 6 )
A β
α =
−∗
,
8 19 19 24
, ,
4 4 24 24
Hill2 解密过程
?
(mod 26)
问题: 如何计算 A
−1(mo d 2 6 ) ?
模 m 逆矩阵的计算
1
1
| |
A A
A
−
=
∗ 设 B=k A* 为 A 的 模 26 逆 ,其中 k 为待定系数
| |
BA = ⋅ k A E ⋅ (mo d 26 )
BA = E k ⋅ | A | 1(mo = d 2 6 )
| |
1(mod 26 ) k = A
−A* 为 A 的伴随矩阵
本计算方法可推广到求矩阵 A 的 模 m 逆矩阵
Hill2 解密过程
设加密矩阵 1 2 0 3
A
=
3 2
| | 3,
0 1 A A
∗ −
= =
1 1
3 2
(mod 26 ) (m od 26 ) (mod 26 ) 0 1
3
A
− − −
⋅
=
1 8 0 9
=
1
(mo d 2 6 ) B = A
−3 2
9 (mod )
0 − 1 26
=
,
16 112 1 97
12 108 , 12 108
15 175 20 180
20 180 , 20 180
B B
B B
= =
= =
用 B 左乘密文对应的向量得:
模 26 运算后得:
,
8 19 19 24
, ,
4 4 24 24
查表后得明文分别为: HD SD SX XX
,
16 1 15 20
, ,
12 12 20 20
8 , 19 19 24
, ,
4 4 24 24
?
Hill2 加密过程总结
① 通讯双方确定加密矩阵 ( 密钥) 和字母的 表值对应表
② 将明文字母分组,通过查表列出每组字母对应的向量 α
③
令 β = A α mod(m) ,由 β 的分量反查字母表值表,
得到相应的密文字母
若明文只含奇数个字母,则补充一个哑元
Hill2 解密过程总结
① 将密文字母分组,通过查表列出每组字母对应的向量 β
② 求出加密矩阵 A 的 模 m 逆矩阵 B
③
令 α = B∗ β mod(m) ,由 α 的分量反查字母表值表,
得到相应的明文字母
甲方收到乙方(己方)的一个密文信息,内容为:
Hill2 解密举例
WKVACPEAOCIXGWIZUROQWAB ALOHDKCEAFCLWWCVLEMIMCC
按照甲方与乙方的约定,他们之间采用
Hill
2密码,密钥 为 ,字母表值见下表,问这段密文的原文 是什么?1 2 0 3 A
=
A B C D E F G H I J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 0
Hill2 解密举例
① 将密文字母分组,通过查表列出每组字母对应的向量
② 求出加密矩阵 A 的 模 26 逆矩阵
③
用 B 左乘每组密文字母组成的向量,然后再反查字母 表值表,得到相应的明文字母
1 8 0 9 B
=
序号 分组
密文 密文
表值 明文
表值 分组 明文
1 W
K
23 11
7 21
G U
2 V
A
22 1
4 9
D I
3 C
P
3 16
1 14
A N
4 E
A
5 1
13 9
M I
5 O
C
15 3
13 1
M A
6 I
X
9 24
19 8
S H
序号 分组
密文 密文
表值 明文
表值 分组 明文
7 G
W
7 23
9 25
I Y
8 I
Z
9 0
9 0
I Z
9 U
R
21 18
9 6
I F
10 O
Q
15 17
21 23
U W
11 W
A
23 1
5 9
E I
12 B
A
2 1
10 9
J I
Hill2 解密举例
序 号
分组 密文
密文 表值
明文 表值
分组 明文
13 L
O
12 15
2 5
B E
14 H
D
8 4
14 10
N J
15 K
C
11 3
9 1
I A
16 E
A
5 1
13 9
M I
17 F
C
6 3
4 1
D A
18 L
W
12 23
14 25
N Y
序 号
分组 密文
密文 表值
明文 表值
分组 明文
19 W
C
23 3
21 1
U A
20 V
L
22 12
14 4
N D
21 E
M
5 13
5 13
E M 22 I
M
9 13
9 13
I M
23 C
C
3 3
1 1
A A
Hill2 解密举例
即:“古典密码是以字符为基本加密单元的密码”
GU DIAN MI MA SHI YI ZI FU WEI JI BEN JIA MI DAN YUAN DE MI MA A
WKVACPEAOCIXGWIZUROQWAB ALOHDKCEAFCLWWCVLEMIMCC
原文
Hill2 解密举例
密文
Hill 2 密码破译
28
A B C D E F G H I J K L M 1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
经分析该密文是用 Hill2密码 加密,且密文 ( U, C ) 和 ( R, S ) 分别对应明 文 ( T, A ) 和 ( C, O ),问能否破译这段密文?
Hill2 密码破译举例
MOFAXJEABAUCRSXJLUYHQATCZHWBCSCP 我方截获一段密文
猜测密文是由26个字母组成,即 m=26,
经破译部门通过大量的统计分析和语言分析确定表值
破译这段密文的关键是找到“密钥”和字母对应的表值
,
U R
C S
T C
A O
→ →
21 18
3 19
20 3
1 , 15
= A
密文 ( U, C ) 和 ( R, S ) 分别对应明文 ( T, A ) 和 ( C, O )Hill2 密码破译举例
查 字 母 表 值
= A
21 18 3
20 3
19 A 1 15
=
P C P = AC
21 18 20 3
3 19 , 1 15
P C
= =
P = AC
A P
−1= C
| P |
=7 (m od 26)
| C |
=1 1 (mo d 2 ) 6
P、C 模26可逆
1 1
A
−= ⋅ C P
−(
1)
1
(mod 26 ) (mo d 26 ) (m od 2 6 ) A
−= C ⋅ P
−Hill2 密码破译举例
注:这里的运 算都是在模运 算意义下进行
HE WI LL VI SI TA CO LL EG ET HI SA FT ER NO ON
得到加密矩阵的 模26逆矩阵 后,根据前面的解密方法即 可得密文的原文