传统秘密钥匙系统

传统秘密钥匙系统

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+1Ri)

·   解密动作:

o      Li = Ri+1 F(Ki+1Li+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 nx 公式计算出的结果(gyx mod n),会和 Bob 所计算的结果(gxy mod n)相同,此计算后的数值便成为双方通讯的会议钥匙(gxy mod n)。

 

你可能感兴趣的:(传统秘密钥匙系统)