传统秘密钥匙系统
2-1 密码学 (Cryptography) 概论
· 密码学定义:
o "kryptos" 与 "grphein" 为『位置混排处理』
o 加密动作 (Enciphering)
o 解密动作 (Deciphering)
o 密码系统 (Cryptosystem)
· 加密与解密的运作程序:
o 变量定义:
§ M = 明文
§ C = 密文
§ K1 = 加密钥匙,K2 = 解密钥匙
§ E = 加密算法
§ D = 解密算法
o 运作程序:
§ 加密运作:C = EK1 (M)
§ 解密运作:M = DK2(C) = DK2(EK1(M))
o 密码系统:
§ K1 = K2 :对称密码系统
§ K1 <> K2 :非对称密码系统
· 加密系统运作图
2-2-1 密码系统的观念
· 钥匙功能:『印章』
· 钥匙是可破解的
· 钥匙的曝光率
2-2-2 密码系统的真实情况
· 密码算法必须是公开的
· 明文格式是无法隐藏的
· 密文是唾手可得的
2-2-3 密码系统的运用
· 秘密钥匙系统:隐密性数据传输
· 公开钥匙系统:
o 双方交换『会议钥匙』时加密使用
o 身份认证的数字签章使用
2-3-1 密码的破解技巧
· 只知密文破解
· 已知明文破解
· 选择明文破解
· 选择密文破解
· 暴力攻击法 (Brute-Force Attack)
2-3-2 密码破解因素
· 『计算上的安全』(Computationally Secure)
o 破解密码所需的成本是否合乎该讯息的价值
o 破解密码所需的时间是否超过该钥匙的寿命
2-4 传统密码学的基本原理
· 换位加密法 (Transposition Cipher)
· 取代加密法 (Substitution Cipher)
2-4-1 换位加密法
· 加密:利用一个特定排列规则,将明文中的字符重新排列过,来产生另一个无规律的密文。
· 解密:使用同样的规则,将密文倒回原来明文。
(A) 铁轨法 (Railroad Method)
· 明文:I SIT BY MY WINDOW WAITING FOR YOU
(B) 钥匙排列法
钥匙: |
3 |
4 |
2 |
1 |
5 |
6 |
7 |
明文: |
I |
S |
I |
T |
B |
Y |
M |
|
Y |
W |
I |
N |
D |
O |
W |
|
W |
A |
I |
T |
I |
N |
G |
|
F |
O |
R |
Y |
O |
U |
E |
(A) 旋转替换加密法 (Rotation Substitution Cipher)
· 明文:
· 转盘旋转 7 格后之替换表:
· 密文:RHRGYBNBDRMWLDDZRGRMTULIBLF
(B) 旋转机 (Rotor Machine)
2-5 区块加密的基本原理
· 运作程序:
o 将讯息分割成若干个固定大小的区块。
§ M = M1 || M2 || M3‧‧‧|| Mn
o 明文区块依序进入加密器产生同样大小的密文区块。
o 连结密文区块成为加密后的密文。
§ C = Ek(M) = Ek(M1) || Ek(M2) || ‧‧‧|| Ek(Mn)
· 乘积加密法 (Product Ciphers)
· Feistel 加密法
2-5-1 乘积加密法
· 讯息 M = M1 || M2 || M3‧‧‧|| Mn
· 密文 C = Ek(M) = Sk Pk-1 ‧‧‧P2 S2 P1 S1 (M)
2-6-1 Feistel 加密算法
· 区块加密法的先趋
· 至目前为止,绝大部份的对称加密法多半沿用此基本原理。
2-6-2 Feistel 加密法的基本原理
· 加密动作:
o Li+1 = Ri
o Ri+1 = Li ⊕ F(Ki+1,Ri)
· 解密动作:
o Li = Ri+1 ⊕ F(Ki+1,Li+1)
o Ri = Li+1
· 子钥匙:由秘密钥匙产生
2-6-3 Feistel 加密/解密器架构
2-7-1 数据加密标准 (Data Encryption Standard, DES)
· 美国国家标准
· 钥匙长度:56 bits
· 区块长度:64 bits
· 重复次数:16 次
· 子钥匙产生:16 把/48 bits
· 算法:加密/解密算法相容
2-7-2 DES 算法流程
1. 明文数据分割
2. 初始变换 (Initial Permutation, IP)
3. 选择子钥匙,共有 16 把。
4. 加密处理
5. 重复加密处理 16 次,每次使用不同的子钥匙。
6. 终结变换 (Final Permutation)
2-7-3 初始与终结排列
· 初始排列
· 终结排列
2-8 DES 加密处理
列 (b1, b6) |
B 输入,行 (b2, b3, b4, b5) |
||||||||||||||||
|
b1 b6 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
S1 |
0 |
14 |
4 |
13 |
1 |
2 |
15 |
11 |
8 |
3 |
10 |
6 |
12 |
5 |
9 |
0 |
7 |
1 |
0 |
15 |
7 |
4 |
14 |
2 |
13 |
1 |
10 |
6 |
12 |
11 |
9 |
5 |
3 |
8 |
|
2 |
4 |
1 |
14 |
8 |
13 |
6 |
2 |
11 |
15 |
12 |
9 |
7 |
3 |
10 |
5 |
0 |
|
3 |
15 |
12 |
8 |
2 |
4 |
9 |
1 |
7 |
5 |
11 |
3 |
14 |
10 |
0 |
6 |
13 |
|
S2 |
0 |
15 |
1 |
8 |
14 |
6 |
11 |
3 |
4 |
9 |
7 |
2 |
13 |
12 |
0 |
5 |
10 |
1 |
3 |
13 |
4 |
7 |
15 |
2 |
8 |
14 |
12 |
0 |
1 |
10 |
6 |
9 |
11 |
5 |
|
2 |
0 |
14 |
7 |
11 |
10 |
4 |
13 |
1 |
5 |
8 |
12 |
6 |
9 |
3 |
2 |
15 |
|
3 |
13 |
8 |
10 |
1 |
3 |
15 |
4 |
2 |
11 |
6 |
7 |
12 |
0 |
5 |
14 |
9 |
|
S3 |
0 |
10 |
0 |
9 |
14 |
6 |
3 |
15 |
5 |
1 |
13 |
12 |
7 |
11 |
4 |
2 |
8 |
1 |
13 |
7 |
0 |
9 |
3 |
4 |
6 |
10 |
2 |
8 |
5 |
14 |
12 |
11 |
15 |
1 |
|
2 |
13 |
6 |
4 |
9 |
8 |
15 |
3 |
0 |
11 |
1 |
2 |
12 |
5 |
10 |
14 |
7 |
|
3 |
1 |
10 |
13 |
0 |
6 |
9 |
8 |
7 |
4 |
15 |
14 |
3 |
11 |
5 |
2 |
12 |
|
S4 |
0 |
7 |
13 |
14 |
3 |
0 |
6 |
9 |
10 |
1 |
2 |
8 |
5 |
11 |
12 |
4 |
5 |
1 |
13 |
8 |
11 |
5 |
6 |
15 |
0 |
3 |
4 |
7 |
2 |
12 |
1 |
10 |
14 |
9 |
|
2 |
10 |
6 |
9 |
0 |
12 |
11 |
7 |
13 |
15 |
1 |
3 |
14 |
5 |
2 |
8 |
4 |
|
3 |
3 |
15 |
0 |
6 |
10 |
1 |
13 |
8 |
9 |
4 |
5 |
11 |
12 |
7 |
2 |
14 |
|
S5 |
0 |
2 |
12 |
4 |
1 |
7 |
10 |
11 |
6 |
8 |
5 |
3 |
15 |
13 |
0 |
14 |
9 |
1 |
14 |
11 |
2 |
12 |
4 |
7 |
13 |
1 |
5 |
0 |
15 |
10 |
3 |
9 |
8 |
6 |
|
2 |
4 |
2 |
1 |
11 |
10 |
13 |
7 |
8 |
15 |
9 |
12 |
5 |
6 |
3 |
0 |
4 |
|
3 |
11 |
8 |
12 |
7 |
1 |
14 |
2 |
13 |
6 |
15 |
0 |
9 |
10 |
4 |
5 |
3 |
|
S6 |
0 |
12 |
1 |
10 |
15 |
9 |
2 |
6 |
8 |
0 |
13 |
3 |
4 |
14 |
7 |
5 |
11 |
1 |
10 |
15 |
4 |
2 |
7 |
12 |
9 |
5 |
6 |
1 |
13 |
14 |
0 |
11 |
3 |
8 |
|
2 |
9 |
14 |
15 |
5 |
2 |
8 |
12 |
3 |
7 |
0 |
4 |
10 |
1 |
13 |
11 |
6 |
|
3 |
4 |
3 |
2 |
12 |
9 |
5 |
15 |
10 |
11 |
14 |
1 |
7 |
6 |
0 |
8 |
13 |
|
S7 |
0 |
4 |
11 |
2 |
14 |
15 |
0 |
8 |
13 |
13 |
12 |
9 |
7 |
5 |
10 |
6 |
1 |
1 |
13 |
0 |
11 |
7 |
4 |
9 |
1 |
10 |
14 |
3 |
5 |
12 |
2 |
15 |
8 |
6 |
|
2 |
1 |
4 |
11 |
13 |
12 |
3 |
7 |
14 |
10 |
15 |
6 |
8 |
0 |
5 |
9 |
2 |
|
3 |
6 |
11 |
13 |
8 |
1 |
4 |
10 |
7 |
9 |
5 |
0 |
15 |
14 |
2 |
3 |
12 |
|
S8 |
0 |
13 |
2 |
8 |
4 |
6 |
15 |
11 |
1 |
10 |
9 |
3 |
14 |
5 |
0 |
12 |
7 |
1 |
1 |
15 |
13 |
8 |
10 |
3 |
7 |
4 |
12 |
5 |
6 |
11 |
0 |
14 |
9 |
2 |
|
2 |
7 |
11 |
4 |
1 |
9 |
12 |
14 |
2 |
0 |
6 |
10 |
13 |
15 |
3 |
5 |
8 |
|
3 |
2 |
1 |
14 |
7 |
4 |
10 |
8 |
13 |
15 |
12 |
9 |
0 |
3 |
5 |
6 |
11 |
2-9 DES 子钥匙产生
· 将 56 bits 的主钥匙产生 16 把 48 bits 的子钥匙。
· 产生方法:
o 将 56 bits 分成两组 28 bits (C0 与 D0)
o 左旋运算子 (LSi)
o Ci = LSi (Ci-1)
o Di = LSi (Di-1)
o Ki = PC-2 (Ci || Di); i = 1, 2, 3, …, 16。
· (A) PC-1 移位转换
· (B) PC-2 移位转换
2-10 DES 操作模式
· 电子密码书 (Electronic Code Book, ECB) 模式
· 密文区段串接 (Cipher Block Chaining, CBC) 模式
· k-位密文反馈 (k-bits Cipher Feedback, CFB) 模式
· k-位输出反馈 (k-bits Output Feedback, OFB) 模式
2-11 电子密码书模式 (Electronic Code Book)
· 加密处理:
o 明文:P = P1 || P2 || P3, …, || PN
o 密文:C = EK(P) = EK (P1) || EK (P2) ||, …, || EK (PN)
· 解密处理:
o 密文:C = C1 || C2 || C3, …, || CN
o 明文:P = EK(C) = EK (C1) || EK (C2) ||, …, || EK (CN)
· 容易遭受『明文攻击』
2-12 密文区块串接 (Cipher Block Chaining, CBC) 模式
· 增加『初始向量』(Initialization Vector, IV)
· 加密程序:
o C1 = EK(IV ♁ PN)
o Ci = EK(Ci-1♁ Pi); i = 2, 3, 4, …N
o C = C1 || C2 || C3, …, CN
· 解密程序:
o P1 = DK(C1) ⊕ IV
o Pi = DK(Ci) ⊕ Ci-1 ; i = 2, 3, 4, …N
o P = P1 || P2 || P3, …, PN
· 验证:
o DK(Ci) = DK( EK(Ci-1♁ Pi)); i = 2, 3, 4, …N
= (Ci-1♁ Pi)
o 则:DK(Ci) ⊕ Ci-1 = (Ci-1♁ Pi) ♁ Ci-1 = Pi 得证之。
2-13 J-位密文反馈 (J-bits Cipher Feedback, CFB)
· J 位串流加密 (Stream Cipher)
· 加密运算程序:
o SR1 = IV
o C1 = Fj (EK(SR1)) ⊕ P1
o SRm = Sj (SRm-1) || Cm-1 ; m = 2, 3, 4, …, N
o Cm = Fj (EK(SRm)) ⊕ Pm ; m = 2, 3, 4, …, N
o C = C1 || C2 || C3, …, CN
· 解密运算程序:
o SR1 = IV
o P1 = Fj (DK(SR1)) ⊕ C1
o SRm = Sj (SRm-1) || Cm-1 ; m = 2, 3, 4, …, N
o Pm = Fj (DK(SRm)) ⊕ Cm ; m = 2, 3, 4, …, N
o P = P1 || P2 || P3, …, PN
2-14 J-位输出反馈 (J-bits Output Feedback)
· J-位串流加密
· 加密运算乘程序:
o SR1 = IV
O1 = Fj (EK(SR1))
C1 = P1 ⊕ O1
SRm = Sj (SRm-1) || Om-1 ; m = 2, 3, 4, …, N
Om = Fj (EK(SRm)) ; m = 2, 3, 4, …, N
Cm = Om ⊕ Pm ; m = 2, 3, 4, …, N
C = C1 || C2 || C3, …, CN
· 解密运算程序:
o SR1 = IV
O1 = Fj (DK(SR1))
P1 = O1 ⊕ C1
SRm = Sj (SRm-1) || Om-1 ; m = 2, 3, 4, …, N
Om = Fj (DK(SRm)) ; m = 2, 3, 4, …, N
Pm = Om ⊕ Cm ; m = 2, 3, 4, …, N
P = P1 || P2 || P3, …, PN
2-15 秘密钥匙分配
· 基本观念:
o 由 A 选好一把钥匙,再传送给 B。
o 由第三者选好一把钥匙,再分别传送给 A 和 B。
o A 与 B 双方协议出一把秘密钥匙。
· 运作程序:
o 公钥系统传送秘密钥匙。
o 钥匙中心分配。
o 协商建立秘密钥匙。
2-13-1 公钥系统传送秘密钥匙
· Alice 选出一把秘密钥匙;
· 利用 Bob 的公开钥匙加密后,再传送给 Bob。
2-13-2 钥匙分配中心 (Key Distribution Center, KDC)
· KDC 登录客户端『主密钥』(Master Key)。
· 客户端向 KDC 要求登入系统。
· KCD 确认身份,并发给前往服务器的通行票。
· 通行票 (Ticket) 包含会议钥匙 (Session Key) 及身份证明。
2-13-3 协商建立秘密钥匙
· Diffie-Hellman 钥匙交换协议 (Key Exchange Protocol)
o 讯号 (1):Alice 选择一个较大的数值 x,再依 gx mod n 公式计算,并将计算结果传送给 Bob。
o 讯号 (2):Bob 也选择一个较大的数值 y,也依照 gy mod n 公式计算出结果,再传送给 Alice。
o 讯号 (3):Alice 将收到的讯息(gy mod n),依照(gy mod n)x 公式计算出的结果(gyx mod n),会和 Bob 所计算的结果(gxy mod n)相同,此计算后的数值便成为双方通讯的会议钥匙(gxy mod n)。