传统秘密钥匙系统
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
- 密文:IIBMWNOWIIGOYUSTYYIDWATNFROE
(B) 钥匙排列法
- 明文:I SIT BY MY WINDOW WAITING FOR YOU
- 钥匙排列:
钥匙: | 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 |
- 密文:IIIRTNTYSWAOIYWFBDIOYONUMWGE
(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 加密处理
- (A) 运算规则:
- T0 = L0 || R0
- L1 = R0
- R1 = L0 ⊕ F(R0, K1)
- Li = Ri-1
- Ri = Li ⊕ F (Ri-1, Ki)
- (B) F(Ri-1, Ki) 函数
- (C) Ex(Ri-1) 扩充函数
- (D) S-Box 函数
- 将 48 bits 的输入压缩为 32 bits 的输出。
- B = Ex(Ri-1) ⊕ Ki
- B = B1 || B2 || … || B8
- Bi = b1, b2, b3, b4, b5, b6
- Si (Bi) = Si b1b6 (b2 b3 b4 b5)
列 (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 |
- (E) 排列函数 P
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)。