现代密码学_电子科技大学_中国大学MOOC(慕课)
计算机网络安全原理_吴礼发、洪征编著_电子工业出版社出版_ISBN:9787121387272
现代密码学_杨波_清华大学出版社_ISBN:9787302465553
秋风阁——北溪入江流:https://focus-wind.com/
秋风阁——现代密码学 | 01:概述
现在我们处于信息时代,信息时代网络无处不在,网络给我们的学习生活工作提供了较大的便利。但与此同时,网络中面对的攻击也是无处不在的,互联网的快速发展,极大的威胁到了我们的信息安全。
密码学是网络安全的基础,很多网络安全的防护手段都是通过密码来实现的。
根据《中华人民共和国密码法》的定义:密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。
密码系统(Cryptosystem)通常也被称为密码体制。密码系统由五部分组成,以S表示密码系统,则可以描述为S = {M, C, K, E, D},其中:
- 密码算法
- 无密钥密码算法
- 杂凑函数(Hash函数)
- 单向置换
- 随机序列
- 对称密钥密码算法
- 流密码
- 分组密码
- 消息摘要函数
- 公钥(非对称)密码算法
- 公钥加密
- 数字签名
- 身份认证
对称密钥加密算法:指加密密钥和解密密钥相同或很容易相互推到出来。
公开(非对称)密钥加密算法:加解密密钥互不相同,从其一个密钥难以推导出另外一个密钥。公钥可公开,私钥不可随意泄露。
针对任意长度的输入映射为定长输出,主要用于完整性验证。
Bruce Schneier说过:“如果把一封信锁在保险柜中,把保险柜藏起来,然后告诉你去看这封信,这并不是安全,而是 隐藏。 相反,如果把一封信锁在保险柜中,然后把保险柜及其设计规范和许多同样的保险柜给你,以便你和世界上最好的开保险柜的专家都能够研究锁的装置,而你还是无法打开保险柜去读这封信,这才是 安全。
Bruce Schneier的这段话符合了Kerckhoffs假设的约定。
密码算法只要满足以下两条准则之一,即在实际中是可用的:
单表代替密码可分为:
y = x + k ( m o d 26 ) y = x + k(mod\ 26) y=x+k(mod 26)
明文字母 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
密文字母 | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
y = k x ( m o d 26 ) y = kx(mod\ 26) y=kx(mod 26)
乘法密码的关键在于求解 k − 1 k^{-1} k−1:
方法:扩展的欧几里得算法
若 ( m , n ) = 1 (m, n) = 1 (m,n)=1,则存在整数 k 1 , k 2 k_1, k_2 k1,k2使得 k 1 m + k 2 n = 1 k_1m + k_2n = 1 k1m+k2n=1
这里 k 1 k1 k1就是 m − 1 m o d n m^{-1}modn m−1modn,
注意要将 k 1 k1 k1变为正数:
− k 1 m o d n = ( n − k 1 ) m o d n -k_1mod\ n = (n - k1)mod\ n −k1mod n=(n−k1)mod n
单表代替密码的特点是相同的明文被加密成相同的密文,这使得针对单表代替密码的统计分析可能破译该密码。
以英文为例,英文中字母出现的频率是有规律的,只要能够收集足够多的密文,通过统计就能够很容易地进行密码的破译。
多表代替密码首先将明文 M M M分为由 n n n个字母构成的分组 M 1 , M 2 , ⋅ ⋅ ⋅ , M j M_1,M_2,···,M_j M1,M2,⋅⋅⋅,Mj,对每个分组 M i M_i Mi的加密为:
C i ≡ A M i + B ( m o d N ) , i = 1 , 2 , ⋅ ⋅ ⋅ , j C_i \equiv AM_i + B(mod\ N), i=1,2,···,j Ci≡AMi+B(mod N),i=1,2,⋅⋅⋅,j
其中 ( A , B ) (A, B) (A,B)是密钥, A A A是 n × n n \times n n×n的可逆矩阵,满足 g c d ( ∣ A ∣ , N ) = 1 gcd(|A|, N) = 1 gcd(∣A∣,N)=1( ∣ A ∣ |A| ∣A∣是行列式), B = ( B 1 , B 2 , ⋅ ⋅ ⋅ , B n ) T B = (B_1, B_2,···, B_n)^T B=(B1,B2,⋅⋅⋅,Bn)T, C = ( C 1 , C 2 , ⋅ ⋅ ⋅ , C n ) T C = (C_1, C_2,···, C_n)^T C=(C1,C2,⋅⋅⋅,Cn)T, M i = ( m 1 , m 2 , ⋅ ⋅ ⋅ , m n ) T M_i = (m_1, m_2,···, m_n)^T Mi=(m1,m2,⋅⋅⋅,mn)T
对密文分组 C i C_i Ci的解密为:
M i ≡ A − 1 ( C i − B ) ( m o d N ) , i = 1 , 2 , ⋅ ⋅ ⋅ , j M_i \equiv A^{-1}(C_i - B)(mod\ N), i = 1, 2,···, j Mi≡A−1(Ci−B)(mod N),i=1,2,⋅⋅⋅,j
设 n = 3 , N = 26 n = 3, N = 26 n=3,N=26
A = ( 11 2 19 5 23 25 20 7 17 ) , B = ( 0 0 0 ) A = \left ( \begin{array}{ccc} 11 & 2 & 19 \\ 5 & 23 & 25 \\ 20 & 7 & 17 \\ \end{array}\right), B = \left ( \begin{array}{c} 0 \\ 0 \\ 0 \\ \end{array}\right) A=⎝⎛115202237192517⎠⎞,B=⎝⎛000⎠⎞
明文为”YOUR PIN NO IS FOUR ONE TWO SIX”
将明文分为 n = 3 n = 3 n=3个字母组成的分组“YOU RPI NNO ISF OUR ONE TWO SIX”,
由表:
字母 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
得: | ||||||||||||||||||||||||||
$$ | ||||||||||||||||||||||||||
M_1 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
24 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
20 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_2 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
15 \ | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_3 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_4 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
18 \ | ||||||||||||||||||||||||||
5 \ | ||||||||||||||||||||||||||
\end{array}\right),\ | ||||||||||||||||||||||||||
M_5 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
20 \ | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_6 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
4 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_7 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
19 \ | ||||||||||||||||||||||||||
22 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
M_8 = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
18 \ | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
23 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
$$ | ||||||||||||||||||||||||||
所以: | ||||||||||||||||||||||||||
$$ | ||||||||||||||||||||||||||
C_1 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
24 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
20 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
22 \ | ||||||||||||||||||||||||||
6 \ | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
C_2 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
15 \ | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
5 \ | ||||||||||||||||||||||||||
6 \ | ||||||||||||||||||||||||||
9 \ | ||||||||||||||||||||||||||
\end{array}\right),\ | ||||||||||||||||||||||||||
C_3 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
19 \ | ||||||||||||||||||||||||||
12 \ | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
C_4 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
18 \ | ||||||||||||||||||||||||||
5 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
11 \ | ||||||||||||||||||||||||||
7 \ | ||||||||||||||||||||||||||
7 \ | ||||||||||||||||||||||||||
\end{array}\right),\ | ||||||||||||||||||||||||||
C_5 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
20 \ | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
23 \ | ||||||||||||||||||||||||||
19 \ | ||||||||||||||||||||||||||
7 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
C_6 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
13 \ | ||||||||||||||||||||||||||
4 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
22 \ | ||||||||||||||||||||||||||
1 \ | ||||||||||||||||||||||||||
23 \ | ||||||||||||||||||||||||||
\end{array}\right),\ | ||||||||||||||||||||||||||
C_7 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
19 \ | ||||||||||||||||||||||||||
22 \ | ||||||||||||||||||||||||||
14 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
25 \ | ||||||||||||||||||||||||||
15 \ | ||||||||||||||||||||||||||
18 \ | ||||||||||||||||||||||||||
\end{array}\right), | ||||||||||||||||||||||||||
C_8 = A | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
18 \ | ||||||||||||||||||||||||||
8 \ | ||||||||||||||||||||||||||
23 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
(mod\ 26) = | ||||||||||||||||||||||||||
\left ( \begin{array}{c} | ||||||||||||||||||||||||||
1 \ | ||||||||||||||||||||||||||
17 \ | ||||||||||||||||||||||||||
1 \ | ||||||||||||||||||||||||||
\end{array}\right) | ||||||||||||||||||||||||||
$$ | ||||||||||||||||||||||||||
所以密文为“WGI FGJ LHH XTH WBX ZPS BRB”。 |
解密时,先求出:
A − 1 = ( 11 2 19 5 23 25 20 7 17 ) − 1 ( m o d 26 ) = ( 10 23 7 15 9 22 5 9 21 ) A^{-1} = \left ( \begin{array}{ccc} 11 & 2 & 19 \\ 5 & 23 & 25 \\ 20 & 7 & 17 \\ \end{array}\right)^{-1}(mod\ 26) = \left ( \begin{array}{ccc} 10 & 23 & 7 \\ 15 & 9 & 22 \\ 5 & 9 & 21 \\ \end{array}\right) A−1=⎝⎛115202237192517⎠⎞−1(mod 26)=⎝⎛10155239972221⎠⎞
再求:
M 1 = A − 1 ( 22 6 8 ) = ( 24 14 20 ) , M 2 = A − 1 ( 5 6 9 ) = ( 17 15 8 ) , M 3 = A − 1 ( 19 12 17 ) = ( 13 13 14 ) , M 4 = A − 1 ( 11 7 7 ) = ( 8 18 5 ) , M 5 = A − 1 ( 23 19 7 ) = ( 14 20 17 ) , M 6 = A − 1 ( 22 1 23 ) = ( 14 13 4 ) , M 7 = A − 1 ( 25 15 18 ) = ( 19 22 14 ) , M 8 = A − 1 ( 1 17 1 ) = ( 18 8 23 ) M_1 = A^{-1} \left ( \begin{array}{c} 22 \\ 6 \\ 8 \\ \end{array}\right) = \left ( \begin{array}{c} 24 \\ 14 \\ 20 \\ \end{array}\right), M_2 = A^{-1} \left ( \begin{array}{c} 5 \\ 6 \\ 9 \\ \end{array}\right) = \left ( \begin{array}{c} 17 \\ 15 \\ 8 \\ \end{array}\right),\\ M_3 = A^{-1} \left ( \begin{array}{c} 19 \\ 12 \\ 17 \\ \end{array}\right) = \left ( \begin{array}{c} 13 \\ 13 \\ 14 \\ \end{array}\right), M_4 = A^{-1} \left ( \begin{array}{c} 11 \\ 7 \\ 7 \\ \end{array}\right) = \left ( \begin{array}{c} 8 \\ 18 \\ 5 \\ \end{array}\right),\\ M_5 = A^{-1} \left ( \begin{array}{c} 23 \\ 19 \\ 7 \\ \end{array}\right) = \left ( \begin{array}{c} 14 \\ 20 \\ 17 \\ \end{array}\right), M_6 = A^{-1} \left ( \begin{array}{c} 22 \\ 1 \\ 23 \\ \end{array}\right) = \left ( \begin{array}{c} 14 \\ 13 \\ 4 \\ \end{array}\right),\\ M_7 = A^{-1} \left ( \begin{array}{c} 25 \\ 15 \\ 18 \\ \end{array}\right) = \left ( \begin{array}{c} 19 \\ 22 \\ 14 \\ \end{array}\right), M_8 = A^{-1} \left ( \begin{array}{c} 1 \\ 17 \\ 1 \\ \end{array}\right) = \left ( \begin{array}{c} 18 \\ 8 \\ 23 \\ \end{array}\right) M1=A−1⎝⎛2268⎠⎞=⎝⎛241420⎠⎞,M2=A−1⎝⎛569⎠⎞=⎝⎛17158⎠⎞,M3=A−1⎝⎛191217⎠⎞=⎝⎛131314⎠⎞,M4=A−1⎝⎛1177⎠⎞=⎝⎛8185⎠⎞,M5=A−1⎝⎛23197⎠⎞=⎝⎛142017⎠⎞,M6=A−1⎝⎛22123⎠⎞=⎝⎛14134⎠⎞,M7=A−1⎝⎛251518⎠⎞=⎝⎛192214⎠⎞,M8=A−1⎝⎛1171⎠⎞=⎝⎛18823⎠⎞
得明文为:“YOU RPI NNO ISF OUR ONE TWO SIX”
已知:
A = ( 11 2 19 5 23 25 20 7 17 ) A = \left ( \begin{array}{ccc} 11 & 2 & 19 \\ 5 & 23 & 25 \\ 20 & 7 & 17 \\ \end{array}\right) A=⎝⎛115202237192517⎠⎞
求得:
∣ A ∣ ( m o d 26 ) = − 4869 ( m o d 26 ) ≡ 19 因 为 19 和 26 互 素 , 所 以 矩 阵 A 可 逆 ∣ A ∣ − 1 ( m o d 26 ) ≡ 1 9 − 1 ( m o d 26 ) ≡ 11 |A|(mod\ 26) = -4869(mod\ 26) \equiv 19 \\ 因为19和26互素,所以矩阵A可逆 \\ |A|^{-1}(mod\ 26) \equiv 19^{-1}(mod\ 26) \equiv 11 ∣A∣(mod 26)=−4869(mod 26)≡19因为19和26互素,所以矩阵A可逆∣A∣−1(mod 26)≡19−1(mod 26)≡11
伴随矩阵
A ∗ = ( A 11 A 21 A 31 A 12 A 22 A 32 A 13 A 23 A 33 ) ( m o d 26 ) = ( 216 99 − 387 415 − 193 − 180 − 425 − 37 243 ) ( m o d 26 ) = ( 8 21 3 25 15 2 17 15 9 ) A^* = \left ( \begin{array}{ccc} A_{11} & A_{21} & A_{31} \\ A_{12} & A_{22} & A_{32} \\ A_{13} & A_{23} & A_{33} \\ \end{array}\right)(mod\ 26) = \left ( \begin{array}{ccc} 216 & 99 & -387 \\ 415 & -193 & -180 \\ -425 & -37 & 243 \\ \end{array}\right)(mod\ 26) = \left ( \begin{array}{ccc} 8 & 21 & 3 \\ 25 & 15 & 2 \\ 17 & 15 & 9\\ \end{array}\right) A∗=⎝⎛A11A12A13A21A22A23A31A32A33⎠⎞(mod 26)=⎝⎛216415−42599−193−37−387−180243⎠⎞(mod 26)=⎝⎛82517211515329⎠⎞
逆矩阵:
A − 1 = ∣ A ∣ − 1 A ∗ = 11 × ( 8 21 3 25 15 2 17 15 9 ) ( m o d 26 ) = ( 10 23 7 15 9 22 5 9 21 ) A^{-1} = |A|^{-1}A^* = 11 \times \left ( \begin{array}{ccc} 8 & 21 & 3 \\ 25 & 15 & 2 \\ 17 & 15 & 9 \\ \end{array}\right)(mod\ 26) = \left ( \begin{array}{ccc} 10 & 23 & 7 \\ 15 & 9 & 22 \\ 5 & 9 & 21 \\ \end{array}\right) A−1=∣A∣−1A∗=11×⎝⎛82517211515329⎠⎞(mod 26)=⎝⎛10155239972221⎠⎞