古典密碼的演化 (一)— 密碼學複習(二)

不愛學習的Shirley發表於2021-08-01

  複習完密碼學的基本概念後,下面對古典密碼進行簡單的複習。下圖列出的是經典密碼體制的框圖。(由於比較懶就直接放筆記的照片了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)

  古典密碼學大體上可以分為 代換密碼置換密碼

  (1)代換密碼

  構造一個或多個密文字母表,然後用密文字母表中的字母或字母組來代替明文字母或字母組。各字母或字母組的相對位置不變,但其本身改變了。

  (2)置換密碼

  又稱換位密碼。把明文中的字母重新排序,字母本身不變,但其位置改變了。

  2.1 移位密碼演算法 Shift Cipher

  設 M = C = Z26,對任意的 key∈Z26, x∈M, y∈C.

  定義ekey(x) = x + key (mod 26)

  同時dkey(y) = y - key (mod 26)

  注:26個英文字母與模26剩餘類集合{0,1,...,25}建立一一對應。

  移位密碼很容易受到唯密文的攻擊

  例子:凱撒密碼(key = 3)

   若此時明文為venividivici.則密文為:yhqlylglylfl.若解密只需將密文左移三位即可。

  2.2 仿射密碼演算法

  加密函式取形式為:e(x) = ax + b (mod 26), a,b∈Z26.

  要求唯一解的充要條件是gcd(a,26)=1.

  注:之所以要求a與26互素。目的是為了保證逆元存在。同時,因為a與26互素,所以a可取φ(26)個。φ(26)=φ(2)φ(13)=1×12=12.故a可取12個。

  該演算法描述為:

設 M = C = Z26

  K = {(a,b)∈Z26×Z26; gcd(a,26)=1}

對 key=(a,b)∈K, x∈M, y∈C,

定義 ekey(x) = ax + b (mod 26) 和 dkey(y) = a-1(y-b) (mod 26).

  在Z26中,滿足gcd(a,26)=1的a只有12個值(1,3,5,7,9,11,15,17,19,21,23,25),因此仿射密碼的金鑰空間大小為12×26=312個。

  對於Z26中與26互素的元素,相應的乘法逆元為:

1-1 mod 26 = 1     3-1 mod 26 = 9     5-1 mod 26 = 21   7-1 mod 26 = 15   

9-1 mod 26 = 3    11-1 mod 26 = 19   15-1 mod 26 = 7    17-1 mod 26 = 23   

19-1 mod 26 = 11   21-1 mod 26 = 5    23-1 mod 26 = 17   25-1 mod 26 = 25

  求逆元過程(以9-1 mod 26 = 3為例)

  9·9-1≡1 (mod 26)

  9x≡1 (mod 26) 其中x≡9-1 (mod 26)

  x = x-1+9-1·26 (mod 26)

   = 9-1(1+26)  (mod 26)

   = 3       (mod 26)

 ∴ 9-1≡3 (mod 26)

  仿射密碼演算法例子

 設 k=(7,3),注意到7-1 mod 26 = 15,

  加密函式:ek(x) = 7x + 3 (mod 26)

  解密函式:dk(y) = 15(y-3) (mod 26) = 15x-19 (mod 26)

  易見 dk(ek(x)) = dk(7x + 3) = 15(7x + 3)-19 = x+45-19 = x (mod 26)

  若加密明文為hot,則有如下步驟:

  ① 轉換字母h、o、t為數字7、14、19

  ② 然後加密:

 

  ③ 解密有:

  2.3 單表代換密碼 —— 分析

 (1)金鑰量一般比較小,難以抵抗窮盡搜尋攻擊

 (2)即使金鑰量很大,但因為沒有將明文字母的頻率隱藏起來,所以也很容易受到頻數分析法的攻擊

  2.4 單表代換的優缺點

優點:

  明文字元的形態一般將面目全非。

缺點:

  a.明文的位置不變

  b.明文字元相同,則密文字元也相同。從而導致:

   ① 若明文字元被加密成密文字元a,則明文中e的出現次數就是密文中字元a的出現次數;

   ② 明文的更隨關係反映在密文之中。因此,明文字元的統計規律就完全暴露在密文字元的統計規律之中,形態變但位置不變。 

  2.5 單表代換密碼的統計分析舉例

  密文為:YIFQFMZR...CFWDJNZDIR(共168個字母)

  分析:∵Z出現20次,出現的頻率約為0.12

∴猜測D(Z)=e

∵出現至少10次的密文字母為C、D、F、J、M、R、Y,出現頻率約在0.06到0.095之間

∴猜測{D(C),D(D),D(F),D(J),D(M),D(R),D(Y)}={t,z,o,i,n,s,h,r}...

以此類推

  不太明白的話可以參考[2.3_單表代替密碼的分析]

  2.6 多表代換密碼

  多表代換密碼是一系列(兩個以上)代換表依次對明文訊息的字母進行代換的方法。可以分為:非週期多表代換密碼 和 週期多表代換密碼。

  非週期多表代換密碼:代換表是非週期的無限序列。

  週期多表代換密碼:代換表個數有限,重複使用。

  2.6.1 維吉尼亞密碼 Vigenére cipher

  設 m 是某固定的正整數,定義P=C=K=(Z26)m,對一個金鑰 k=(k1,k2,...,km),定義

ek(x1,x2,...,xm) = (x1+k1,x2+k2,...,xm+km)

dk(y1,y2,...,ym) = (y1-k1,y2-k2,...,ym-km)

  且所有的運算都在Z26中。

  簡單地說,可以將其描述為如下形式:

金鑰 K=(k1,k2,...,kn),

明文 P=(p1,p2,...,pn),

密文 C=(c1,c2,...,cn).

加密:ci=pi+ki (mod 26)

解密:pi=ci-ki (mod 26)

  金鑰一般是一個單詞或一句話去除後面的重複字母后構成。

  本質:多個移位密碼

  金鑰量:對於n為金鑰,金鑰量有

  例子:

  2.6.2 希爾密碼 Hill cipher

  設m是某個固定的正整數,P=C=(Z26)m,又設K={m×m可逆陣,Z26};對任意k∈K,定義

ek(x) = xk

則dk(y) = yk-1

  其中所有的運算都是在Z26中進行。

  其中明文、密文和金鑰可以寫成如下形式:

 

  注意:

    k必須滿足條件:

  1.非奇異矩陣,即|k|≠0,

  2.gcd(|k|,26)=1 (mod 26)

  加密:


 

  解密:

 

  例子1:

  例子2:

  介紹完希爾密碼後,接下來對希爾密碼的特點進行介紹:

(1)完全隱藏了單字母的頻數;

(2)字母和數字的對應可以改成其他方案,使得更不容易被攻擊成功;

(3)能比較好地抵抗頻數法的分析,對抗唯密文攻擊強度較高。

 

  2.7 置換密碼 Permutation Cipher 或 Transposition Cipher

  設m是某個固定的正整數,P=C=(Z26)m,且K由所有{1,2,...,m}的置換組成,對一個金鑰(即一個置換∏),定義

e(x1,x2,...,xm) = (x∏(1),x∏(2),...,x∏(m))

d(y1,y2,...,ym) = (y-1(1),y-1(2),...,y-1(m))

  其中∏-1是∏的逆置換。

  例子:

  在簡單對幾種古典密碼演算法進行介紹後,下一篇將介紹密碼破譯

相關文章