索引
保密通讯
保密通讯分为3步:
- 发送方使用密钥把明码转换成密码;
- 密码的传输;
- 接收方使用解钥把密码转换成明码。
在公开密钥体制中,密钥和加密程序是公开的;解钥不公开,仅信息接收方知道。
第三方若要破解收到的密码,首先要得到或者破解解钥。
仿射密码
概述
以明码为英语字母为例,将字母按照下表转化为数字 x x x(明码的等价表示),通过
x ↦ ( a x + b m o d 26 ) : = y x\mapsto \left( ax+b\text{ }\bmod 26 \right)\text{ }:=y x↦(ax+b mod26) :=y
加密成密码( a , b ∈ Z a,b\in \mathbb{Z} a,b∈Z未知, gcd ( a , 26 ) = 1 \gcd \left( a,26 \right)=1 gcd(a,26)=1),再通过
y ↦ ( a 11 ( y − b ) m o d 26 ) = x y\mapsto ({
{a}^{11}}\left( y-b \right)\text{ }\bmod 26)=x y↦(a11(y−b) mod26)=x
解密出数字(明码),最后将数字按下表转换回字母。
0 1 2 3 4 5 6 7 8 9 10 11 12 A B C D E F G H I J K L M 13 14 15 16 17 18 19 20 21 22 23 24 25 N O P Q R S T U V W X Y Z \begin{matrix} 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\ A & B & C & D & E & F & G & H & I & J & K & L & M \\ 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 \\ N & O & P & Q & R & S & T & U & V & W & X & Y & Z \\ \end{matrix} 0A13N1B14O2C15P3D16Q4E17R5F18S6G19T7H20U8I21V9J22W10K23X11L24Y12M25Z
注
- a x + b m o d 26 ax+b\text{ }\bmod 26 ax+b mod26表示取 a x + b ax+b ax+b模掉(除以)26后剩下的余数 d d d, d ∈ Z ≥ 0 , 0 ≤ d ≤ 25 d\in { {\mathbb{Z}}_{\ge 0}},\text{ }0\le d\le 25 d∈Z≥0, 0≤d≤25。
- 要求 gcd ( a , 26 ) = 1 \gcd \left( a,26 \right)=1 gcd(a,26)=1,是因为 A , B , ⋯ , Y , Z A,B,\cdots ,Y,Z A,B,⋯,Y,Z对应的数字 0 , 1 , ⋯ , 24 , 25 0,1,\cdots ,24,25 0,1,⋯,24,25构成模 26 26 26的完全剩余系 K K K。设 x x x通过 K K K,当 gcd ( a , 26 ) = 1 \gcd \left( a,26 \right)=1 gcd(a,26)=1时, a x + b ax+b ax+b (即 y y y) 也才通过模 26 26 26的完全剩余系 a K + b aK+b aK+b。
- 此时也才成立 x x x到 a x + b mod26 ax+b\text{ mod26} ax+b mod26的单射关系,而不至于两个不同的明码加密成同一个密码。
- gcd ( a , 26 ) = 1 ⇒ gcd ( a 11 , 26 ) = 1 \gcd \left( a,26 \right)=1\text{ }\Rightarrow \text{ gcd}\left( {
{a}^{11}},26 \right)=1 gcd(a,26)=1 ⇒ gcd(a11,26)=1,也就有 y y y到 a 11 ( y − b ) = a 11 y − a 11 b m o d 26 {
{a}^{11}}\left( y-b \right)={
{a}^{11}}y-{
{a}^{11}}b\text{ }\bmod 26 a11(y−b)=a11y−a11b mod26的单射关系,不至于两个不同的密码解密出同一个明码。
概括
- 密钥: a , b ∈ Z , gcd ( a , 26 ) = 1 a,b\in \mathbb{Z},\text{ }\gcd \left( a,26 \right)=1 a,b∈Z, gcd(a,26)=1
- 解钥: a , b ∈ Z , gcd ( a , 26 ) = 1 a,b\in \mathbb{Z},\text{ }\gcd \left( a,26 \right)=1 a,b∈Z, gcd(a,26)=1
- 加密: 明码 r ∈ { 0 , 1 , ⋯ , 25 } r\in \left\{ 0,1,\cdots ,25 \right\} r∈{ 0,1,⋯,25}, a r + b ≡ s ( m o d 26 ) ar+b\equiv s\left( \bmod 26 \right) ar+b≡s(mod26)
- 解密: 密码 s s s, a 11 ( s − b ) ≡ r ( m o d 26 ) {
{a}^{11}}\left( s-b \right)\equiv r\left( \bmod 26 \right) a11(s−b)≡r(mod26)
解密式子的证明如下。
一方面,
gcd ( a , 26 ) = 1 φ ( 26 ) = φ ( 2 × 13 ) = φ ( 2 ) × φ ( 13 ) = 12 } ⇒ a φ ( 26 ) = a 12 ≡ 1 ( m o d 26 ) \left. \begin{matrix} \gcd \left( a,26 \right)=1 \\ \varphi \left( 26 \right)=\varphi \left( 2\times 13 \right)=\varphi \left( 2 \right)\times \varphi \left( 13 \right)=12 \\ \end{matrix} \right\}\text{ }\Rightarrow \text{ }{ {a}^{\varphi \left( 26 \right)}}={ {a}^{12}}\equiv 1\left( \bmod 26 \right) gcd(a,26)=1φ(26)=φ(2×13)=φ(2)×φ(13)=12} ⇒ aφ(26)=a12≡1(mod26)
另一方面,
a r + b ≡ s ( m o d 26 ) ⇔ a r ≡ s − b ( m o d 26 ) ar+b\equiv s\left( \bmod 26 \right)\text{ }\Leftrightarrow \text{ }ar\equiv s-b\left( \bmod 26 \right) ar+b≡s(mod26) ⇔ ar≡s−b(mod26)
因此有
r m o d 26 = 1 ⋅ r ≡ a 12 r = a 11 ( a r ) ≡ a 11 ( s − b ) m o d 26 \begin{aligned} & \text{ }r\text{ }\bmod 26 \\ & =1\centerdot r \\ & \equiv { {a}^{12}}r \\ & ={ {a}^{11}}\left( ar \right) \\ & \equiv { {a}^{11}}\left( s-b \right)\text{ }\bmod 26 \\ \end{aligned} r mod26=1⋅r≡a12r=a11(ar)≡a11(s−b) mod26
加密过程
例子
-
已知仿射密码用
x ↦ x + k m o d 26 x\mapsto x+k\text{ }\bmod 26 x↦x+k mod26
加密。现有一密码为 L B S L Y LBSLY LBSLY,请解密。
(注:这个加密方式并不好,解密只需减 k mod26 k\text{ mod26} k mod26。对于计算机,使用穷举法,很快就能完成)
解
英语中各字母出现频率从高到低依次为
e t a o i n s r h l d c u m f p g w y b v k x j q z e\text{ }t\text{ }a\text{ }o\text{ }i\text{ }n\text{ }s\text{ }r\text{ }h\text{ }l\text{ }d\text{ }c\text{ }u\text{ }m\text{ }f\text{ }p\text{ }g\text{ }w\text{ }y\text{ }b\text{ }v\text{ }k\text{ }x\text{ }j\text{ }q\text{ }z e t a o i n s r h l d c u m f p g w y b v k x j q z
而密码 L B S L Y LBSLY LBSLY中 L L L出现次数最多,故猜想 E → L E\to L E→L,即有 k ≡ 7 m o d 26 k\equiv 7\text{ }\bmod 26 k≡7 mod26, 也就有解密
y ↦ y − k m o d 26 y\mapsto y-k\text{ }\bmod 26 y↦y−k mod26
下面解密:
L B S L Y ↔ 11 , 1 , 18 , 11 , 24 − 7 m o d 26 → 4 , 20 , 11 , 4 , 17 ↔ E U L E R \begin{aligned} & LBSLY \\ & \leftrightarrow 11,\text{ }1,\text{ }18,\text{ }11,\text{ }24 \\ & \underrightarrow{-7\text{ }\bmod 26\text{ }}\text{ }4,\text{ }20,\text{ }11,\text{ }4,\text{ }17 \\ & \leftrightarrow EULER \\ \end{aligned} LBSLY↔11, 1, 18, 11, 24−7 mod26 4, 20, 11, 4, 17↔EULER
已经有意义,如果合理,不需要进行其它尝试。
-
已知某通讯使用仿射密码
x ↦ 7 x + 3 m o d 26 x\mapsto 7x+3\text{ }\bmod 26 x↦7x+3 mod26
请加密 G A U S S GAUSS GAUSS和解密 M F S J D G MFSJDG MFSJDG。
解- 对 G A U S S GAUSS GAUSS加密过程如下。
G A U S S ↔ 6 , 0 , 20 , 18 , 18 7 x + 3 → 45 , 3 , 143 , 129 , 129 m o d 26 → 19 , 3 , 13 , 25 , 25 ↔ T D N Z Z \begin{aligned} & \text{ }GAUSS \\ & \leftrightarrow 6,\text{ }0,\text{ }20,\text{ }18,\text{ }18 \\ & \underrightarrow{\text{ }7x+3\text{ }}\text{ }45,\text{ }3,\text{ }143,\text{ }129,\text{ }129 \\ & \underrightarrow{\text{ }\bmod \text{ }26\text{ }}\text{ }19,\text{ }3,\text{ }13,\text{ }25,\text{ }25 \\ & \leftrightarrow TDNZZ \\ \end{aligned} GAUSS↔6, 0, 20, 18, 18 7x+3 45, 3, 143, 129, 129 mod 26 19, 3, 13, 25, 25↔TDNZZ - 首先解 7 11 m o d 26 {
{7}^{11}}\text{ }\bmod 26 711 mod26如下。
7 11 m o d 26 = 49 5 × 7 ≡ ( − 3 ) 5 × 7 ( ∵ 49 − 26 × 2 = − 3 ) = 9 2 × ( − 21 ) ≡ 3 × 5 ( ∵ − 21 + 26 = 5 , 9 2 = 81 = 26 × 3 + 3 ) = 15 m o d 26 \begin{aligned} & \text{ }{ {7}^{11}}\bmod 26 \\ & ={ {49}^{5}}\times 7 \\ & \equiv { {\left( -3 \right)}^{5}}\times 7\text{ }\left( \because 49-26\times 2=-3 \right) \\ & ={ {9}^{2}}\times \left( -21 \right) \\ & \equiv 3\times 5\text{ }\left( \because -21+26=5,\text{ }{ {9}^{2}}=81=26\times 3+3 \right) \\ & =15\text{ }\bmod 26 \\ \end{aligned} 711mod26=495×7≡(−3)5×7 (∵49−26×2=−3)=92×(−21)≡3×5 (∵−21+26=5, 92=81=26×3+3)=15 mod26
然后对 M F S J D G MFSJDG MFSJDG解密如下。
M F S J D G ↔ 12 , 5 , 18 , 9 , 3 , 6 7 11 ( y − 3 ) ≡ 15 ( y − 3 ) ( m o d 26 ) → 135 , 30 , 225 , 90 , 0 , 45 m o d 26 → 5 , 4 , 17 , 12 , 0 , 19 ↔ F E R M A T \begin{aligned} & \text{ }MFSJDG \\ & \leftrightarrow 12,\text{ }5,\text{ }18,\text{ }9,\text{ }3,\text{ }6 \\ & \underrightarrow{\text{ }{ {7}^{11}}\left( y-3 \right)\equiv 15\left( y-3 \right)\text{ }\left( \bmod 26 \right)\text{ }}\text{ }135,\text{ }30,\text{ }225,\text{ }90,\text{ }0,\text{ }45 \\ & \underrightarrow{\text{ }\bmod 26\text{ }}\text{ }5,\text{ }4,\text{ }17,\text{ }12,\text{ }0,\text{ }19 \\ & \leftrightarrow FERMAT \\ \end{aligned} MFSJDG↔12, 5, 18, 9, 3, 6 711(y−3)≡15(y−3) (mod26) 135, 30, 225, 90, 0, 45 mod26 5, 4, 17, 12, 0, 19↔FERMAT
- 对 G A U S S GAUSS GAUSS加密过程如下。
指数密码 ( Pohlig, Hellman, 1978 )
概述
设 p p p(可公开)是一个素数。
-
密钥; e ∈ Z > 0 e\in { {\mathbb{Z}}_{>0}} e∈Z>0(可公开), 0 ≤ e ≤ p − 1 0\le e\le p-1 0≤e≤p−1, gcd ( e , p − 1 ) = 1 \gcd \left( e,p-1 \right)=1 gcd(e,p−1)=1
-
解钥: d ∈ Z > 0 d\in { {\mathbb{Z}}_{>0}} d∈Z>0(保密), 0 ≤ d ≤ p − 1 0\le d\le p-1 0≤d≤p−1, e d ≡ 1 m o d ( p − 1 ) ed\equiv 1\text{ }\bmod \left( p-1 \right) ed≡1 mod(p−1)
-
加密过程: 设 a ∈ Z > 0 a\in { {\mathbb{Z}}_{>0}} a∈Z>0是明码, 0 ≤ a ≤ p − 1 0\le a\le p-1 0≤a≤p−1,通过 a e ≡ b m o d p { {a}^{e}}\equiv b\text{ }\bmod p ae≡b modp得到密码 b b b
-
解密过程: b d ≡ a m o d p { {b}^{d}}\equiv a\text{ }\bmod p bd≡a modp
证明
p 是 素 数 0 ≤ a ≤ p − 1 } ⇒ gcd ( a , p ) = 1 ⇒ a p − 1 ≡ 1 ( m o d p ) \left. \begin{matrix} p是素数 \\ 0\le a\le p-1 \\ \end{matrix} \right\}\text{ }\Rightarrow \text{ }\gcd \left( a,p \right)=1\text{ }\Rightarrow \text{ }{ {a}^{p-1}}\equiv 1\left( \bmod p \right) p是素数0≤a≤p−1} ⇒ gcd(a,p)=1 ⇒ ap−1≡1(modp)
e d ≡ 1 m o d ( p − 1 ) ⇔ e d − 1 ≡ 0 m o d ( p − 1 ) ⇔ ( p − 1 ) ∣ ( e d − 1 ) ⇔ ∃ k ∈ Z , s . t . e d − 1 = k ( p − 1 ) \begin{aligned} & ed\equiv 1\text{ }\bmod \left( p-1 \right)\text{ }\Leftrightarrow \text{ }ed-1\equiv 0\text{ }\bmod \left( p-1 \right)\text{ }\Leftrightarrow \text{ }\left. \left( p-1 \right) \right|\left( ed-1 \right) \\ & \Leftrightarrow \exists k\in \mathbb{Z},\text{ }s.t.\text{ }ed-1=k\left( p-1 \right) \\ \end{aligned} ed≡1 mod(p−1) ⇔ ed−1≡0 mod(p−1) ⇔ (p−1)∣(ed−1)⇔∃k∈Z, s.t. ed−1=k(p−1)
因此有
b d = ( a e ) d = a e d = a 1 + k ( p − 1 ) = a ⋅ ( a p − 1 ) k ≡ a m o d p { {b}^{d}}={ {\left( { {a}^{e}} \right)}^{d}}={ {a}^{ed}}={ {a}^{1+k\left( p-1 \right)}}=a\centerdot { {\left( { {a}^{p-1}} \right)}^{k}}\equiv a\text{ }\bmod p bd=(ae)d=aed=a1+k(p−1)=a⋅(ap−1)k≡a modp -
第三方破解: 已知 p , e p,e p,e,未知解钥 d d d,通过求解
e d ≡ 1 m o d ( p − 1 ) ed\equiv 1\text{ }\bmod \left( p-1 \right) ed≡1 mod(p−1)
得到解钥(不难解),进而破解密码。
例子
-
已知某通讯使用指数密码, p = 29 p=29 p=29, e = 5 e=5 e=5。请加密 9 9 9,解密 11 11 11。
解- 以下对 9 9 9进行加密。
9 5 m o d 29 = 81 2 × 9 = ( − 6 ) 2 × 9 ( ∵ 21 − 29 × 3 = − 6 ) = 36 × 9 ≡ 7 × 9 ( ∵ 36 = 29 × 1 + 7 ) = 63 ≡ 5 m o d 29 \begin{aligned} & \text{ }{ {9}^{5}}\text{ }\bmod 29 \\ & ={ {81}^{2}}\times 9 \\ & ={ {\left( -6 \right)}^{2}}\times 9\text{ }\left( \because 21-29\times 3=-6 \right) \\ & =36\times 9 \\ & \equiv 7\times 9\text{ }\left( \because 36=29\times 1+7 \right) \\ & =63 \\ & \equiv 5\text{ }\bmod 29 \\ \end{aligned} 95 mod29=812×9=(−6)2×9 (∵21−29×3=−6)=36×9≡7×9 (∵36=29×1+7)=63≡5 mod29
因此 9 9 9被加密成 5 5 5。 - 未知解钥 d d d,先求解 e d = 5 d ≡ 1 m o d ( 29 − 1 = 28 ) ed=5d\equiv 1\text{ }\bmod \left( 29-1=28 \right) ed=5d≡1 mod(29−1=28)
-
法一
gcd ( 5 , 28 ) = 1 φ ( 28 ) = φ ( 2 2 × 7 ) = 12 } ⇒ 5 φ ( 28 ) = 5 12 ≡ 1 m o d 28 \left. \begin{matrix} \gcd \left( 5,28 \right)=1 \\ \varphi \left( 28 \right)=\varphi \left( { {2}^{2}}\times 7 \right)=12 \\ \end{matrix} \right\}\text{ }\Rightarrow \text{ }{ {5}^{\varphi \left( 28 \right)}}={ {5}^{12}}\equiv 1\text{ }\bmod \text{ }28 gcd(5,28)=1φ(28)=φ(22×7)=12} ⇒ 5φ(28)=512≡1 mod 28
d = 1 ⋅ d ≡ 5 12 ⋅ d = 5 11 ( 5 d ) ≡ 5 11 = 25 5 × 5 ≡ ( − 3 ) 5 × 5 ( ∵ 25 − 28 = − 3 ) = 9 2 × ( − 15 ) = 81 × ( − 15 ) ≡ ( − 3 ) × ( − 15 ) ( ∵ 81 − 28 × 3 = − 3 ) = 45 ≡ 17 m o d 28 \begin{aligned} & d=1\centerdot d \\ & \equiv { {5}^{12}}\centerdot d \\ & ={ {5}^{11}}\left( 5d \right) \\ & \equiv { {5}^{11}} \\ & ={ {25}^{5}}\times 5 \\ & \equiv { {\left( -3 \right)}^{5}}\times
-
- 以下对 9 9 9进行加密。