古典密碼學

**古典密碼**是密碼學中的其中一個類型，其大部分加密方式都是利用替換式密碼或移項式密碼，有時則是兩者的混合。其於歷史中經常使用，但現代已經很少使用，大部分的已經不再使用了。一般而言，經典密碼是基於一個拼音字母（像是 A-Z）、動手操作或是簡單的裝置。它們可能是一種簡單的密碼法，以致於不可信賴的地步，特別是有新技術被發展出來後。

現代的方法是用電腦或是其它數位科技，基於位元和位元組上操作。許多經典密碼被受尊重的人使用，像是尤利烏斯・凱撒和拿破崙，他們創造了一些常被人們使用的密碼。許多密碼起源於軍事上，相同立場的人常使用來寄送秘密訊息。經典的方法常攻擊密碼文，有時候甚至不知其密碼系統，也可以使用工具，像是頻率分析法。有些經典密碼是使用先進的機器或是機電密碼機器，像是恩尼格瑪密碼機。

## 經典密碼的類型

經典密碼大致上分為替換式密碼和移項式密碼。

### 替換式密碼

代換密碼是字母（或是字母群）作有系統的代換，直到訊息被替換成其它難以解讀的字。

#### 凱撒密碼

凱撒密碼是廣為人知的代換密碼。為了用凱撒密碼法加密訊息，每個密碼字母集中的字母將會被其位置的後 3 個字母替代。因此字母 A 將會被字母 D 替代、字母 B 將會被字母 E 替代、字母 C 將會被字母 F 替代等，最後，X、Y 和 Z 將分別的被替代成 A、B 和 C。例如，"WIKIPEDIA" 將被加密成 "ZLNLSHGLD"。凱撒把字母向後移 "3" 位，但其他數字也可照著作。

另一種代換密碼是使用關鍵字，你可以選擇一個單字或是短片語並去除所有的空格和重復的字母，接著把它當作密碼字母集的開頭。最後記得去除掉關鍵字的字母把其它字母接續排序。例如，如果關鍵字是 CIPHER，則密碼字母表是這樣寫的：

**一般字母**: 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

**密碼字母**: c i p h e r s t u v w x y z a b d f g j k l m n o q

#### 維吉尼亞密碼

凱撒密碼的例子是所有單字母替代式密碼（英語：monoalphabetic substitution ciphers）的典範，它只使用一個密碼字母集。但我們也可以使用多字母替代式密碼（英語：polyalphabetic substitution cipher），使用的是多個密碼字母集。加密由兩組或多組密碼字母集組成，加密者可自由的選擇然後用交替的密碼字母集加密訊息。這麼做將會增加解碼的困難度，因為密碼破解者必須找出這兩組密碼字母集。

另一個多字母替代式密碼的例子，這將更難解密，稱作維吉尼亞密碼（法語：Vigenère cypher），亦作**維吉尼亞方格**，這是一種創新的加密方法。隨著這個方格，它有 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
                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 A
                C 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
                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
                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 D
                F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
                G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
                H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
                I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
                J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
                K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
                L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
                M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
                N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
                O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
                P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
                Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
                R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
                S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
                T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
                U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
                V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
                W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
                X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
                Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
                Z 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
```

為了使用維吉尼亞密碼加密訊息，必須先選擇一個關鍵字，接著重復這個關鍵字直到跟明文相同長度。然後看明文訊息下方是哪一個密碼字母集可供使用，就是明文的第一個字母下方對映到的關鍵字母。另外，每個密碼字母集由它自己的第一個字母作為名稱。

例如關鍵字是 WORD、明文是 I LOVE CRYPTOGRAPHY，則：

**訊息**： I LOVE CRYPTOGRAPHY

**關鍵字**： W ORDW ORDWORDWORDW

**密碼訊息**： E ZFYA QIBLHFJNOGKU

一些替代式密碼牽涉使用數字而非字母。一個例子是偉大密碼（法語：Grand Chiffre），其數字代表音節。還有另一種數字替代式密碼，一個字母基於關鍵字而使用 4 種不同選項的數字對。相對的，符號也可以用來替代字母或音節。一個例子是 12 星座字母，每個星座的象徵符號代表不同字母，例如，太陽的象徵符號替代 A、木星替代 B、土星替代 C。另外，點、線、破折號也可拿來使用，例如，摩斯電碼，雖然它並不是真的密碼，但是它的點、破折號就是代表一個字母。另一種是豬圈密碼（英語：pigpen cipher），運用格子系統或線和點為字母建立一些象徵符號。當然，還有其它方法也是用符號、點、破折號來建立密碼字母集。

### 移位式密碼

移位式密碼，它們字母本身不變，但它們在訊息中順序是依照一個定義明確的計畫改變。許多移位式密碼是基於幾何而設計的。一個簡單的加密（也易被破解），可以將字母向右移 1 位。例如，明文 "Hello my name is Alice." 將變成 "olleH ym eman si ecilA."。密碼棒（英語：scytale）也是一種運用移位方法工具。

一個移位式密碼的具體例子縱欄式移項密碼。先選擇一個關鍵字，把原來的訊息由左而右、由上而下依照關鍵字長度轉寫成長方形。接著把關鍵字的字母依照字母集順序編號，例如 A 就是 1、B 就是 2、C 就是 3 等。例如，關鍵字是 CAT，明文是 THE SKY IS BLUE，則訊息應該轉換成這樣：

```
                         C A T
                         3 1 20
                         T H E
                         S K Y
                         I S B
                         L U E
```

最後把訊息以**行**為單位，依照編號大小調換位置。呈現的應該是 A 行為第一行、C 行為第二行、T 行為第三行。然後就可以把訊息 "The sky is blue" 轉寫成 HKSUTSILEYBE。

另一種移位式密碼是中國式密碼（英語：Chinese cipher），移位的方法是將訊息的字母加密成由右而左、上下交替便成不規則的字母。範例，如果明文是：THE DOG RAN FAR，則中國式密碼看起來像這樣:

```
                           R R G T
                           A A O H  
                           F N D E  
```

密碼文將寫成：RRGT AAOH FNDE

絕大多數的移位式密碼與這兩個範例相類似，通常會重新排列字母的行或列，然後有系統的移動字母。其它一些例子包括 Vertical Parallel 和雙移位式（英語：Double Transposition）密碼。

更複雜的演算法可以混合替代和移位成為積密碼（product cipher）；現代資料區段密碼像是 DES 反覆位移和替代的幾個步驟。

## 經典密碼的破譯

經典密碼通常很容易被破解。許多經典密碼可單單經由密文而破解，所以它們容易受到唯密文攻擊法攻擊（英語：ciphertext-only attack）。有些經典密碼（像是凱撒密碼）的金鑰個數有限，所以這類密碼可以使用暴力破解嘗試所有的金鑰。替代式密碼有比較大的金鑰數，但是容易被頻率分析，因為每個密碼字母各代表了一個明文字母。多字母替代式密碼密碼，像是維吉尼亞密碼使用多個替換防止了簡單的頻率分析，然而，更先進的技術卡西斯基試驗就可用來破解這類密碼。

另一方面，現代密碼的設計可以承受更強大的唯密文攻擊。一個優秀的現代密碼必須保證廣泛潛在的攻擊，包括 known-plaintext attack 和 chosen-plaintext attack 以及 chosen-ciphertext attack。對於密碼破解者來說，應不能夠找到關鍵，即使他知道明文和對應的密碼文、即使他可以選擇明文或密碼文。經典密碼再也不能滿足這些強大的標準，因此，有興趣者再也不拿它來作安全應用了。

## 參考文獻

### 參照

### 來源

* Hand Ciphers （頁面存檔備份，存於網際網路檔案館） Pencil-and-paper ciphers on Ciphermachines & Cryptology
* Trinity College Department of Computer Science: Historical Cryptography Information about many different types of encryption algorithms including substitution and transposition ciphers
* Singh, Simon. The Code Book The Science of Secrecy from Ancient Egypt to Quantum Cryptography. New York: Anchor, 2000.
* D'Agapeyeff, Alexander. Codes and Ciphers. Oxford UP, 1939.
* Laffin, John. Codes and Ciphers: Secret Writing through the Ages. Abelard-Schuman, 1964.
* Wrixon, Fred B. Codes, Ciphers, and Secret Languages. New York: Bonanza Books, 1989.

## 參見

* 密碼學