古典密碼
密碼
在現今資訊爆炸的年代,溝通容易變得公開,故加密 (Coding) 的工作尤其重要。
所謂「加密」,即把一段訊息,我們通稱「明文」(Message) ,加上密碼,成為「密文」(Code) ,再行傳輸,即使被別人看了,別人也不明其意。
當指定接收訊息的人經過一個「解密」(Decode) 或稱「解碼」的程序後,便得知原本的「明文」。
以往的加密方法有很多,如易位、代替等,我們通稱「古典密碼」(Classic Cipher)。
凱撒密碼
凱撒密碼 (Caeser's Cipher) 是指用別的字母 (或單一漢字) 代替原本「明文」上的字母 (或單一漢字) ,使之「密文」。如:
明文:「AMY ATTENDED A MEETING」後移 (5)
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 |
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 |
表中紅色為加密後的字母。
把「明文」字母作一一對應的替換得:
密文:「FRD FYYJSIJI F RJJYNSL」
當中的「後移五」,我們稱為「密鑰」,即解密的鑰匙。
因為古代的凱撒大帝 (Gaius Julius Caeser Augustus, 前 63 - 14) 曾使用此方法加密,因而得名。但此法實得二十六種不同的可能性,很易被解。
置換密碼
若我們把二十六個字母看成 0 至 25 這二十六個不同的數字,是指用別的字母 (或單一漢字) 代替原本「明文」上的字母 (或單一漢字) ,使之「密文」。如:
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 |
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 |
0 |
我們可以找出一道算式,使 0 至 25 各數經運算後除以 26 的餘數均在 0 至 25 內,而不同的兩個數字的結果不會相同。以此法所作的加密,便是「置換密碼」(Permutation Cipher)。
若以這角度來看,凱撒密碼的算式便是使用了加法或減法。此外,我們也可使用乘法,而被乘數只要是與 26 互素 (Coprime) ,那便會達至上述對算式的要求。
如:
明文:「AMY ATTENDED A MEETING」
算式: 7X - 11
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 |
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 |
0 |
22 | 3 | 10 | 17 | 24 | 5 | 12 | 19 | 0 | 7 | 14 | 21 | 2 | 9 | 16 | 23 | 4 | 11 | 18 | 25 | 6 | 13 | 20 | 1 | 8 | 15 |
V | C | J | Q | X | E | L | S | Z | G | N | U | B | I | P | W | D | K | R | Y | F | M | T | A | H | O |
表中紅色的數字和字母分別為經算式運算後的數值和加密後的字母。
把「明文」字母作一一對應的替換得:
密文:「VBH VYYXIQXQ V BXXYZIL」
解密的方法,便是找出算式的反函數,即 (X+11)/7 或 15(X+11) 或 15X+9。這樣便可找出由密文和明文的字母對應表,便可解密。留意,這兒反函數的計算涉及同餘 (Congruence) 的學問,詳可參看《同一餘數的學問》一文。
易位密碼
易位密碼 (Tranposition Cipher) 亦稱為欄柵易位密碼 (Columnar Tranposition Cipher) ,通常用於西方字母組成的文句中,方法是把明文的字母次序改變,使人難於明白。如:
明文:「AMY ATTENDED A MEETING」
上文合共有 19 個字母 (不計空白),我們作一 4x5 的方陣,如下。
A |
M |
Y |
A |
T |
T |
E |
N |
D |
E |
D |
A |
M |
E |
E |
T |
I |
N |
G |
我們改變次序,得
密文:「ATDT MEAI YNMN ADEG TEE」
古典密碼的不足
古典密碼的不足在於其依然以字母為基礎,要知道英文中各字母出現的頻率不一:
字母 |
頻率 |
字母 |
頻率 |
字母 |
頻率 |
字母 |
頻率 |
字母 |
頻率 |
A |
0.0856 |
B |
0.0139 |
C |
0.0297 |
D |
0.0378 |
E |
0.1304 |
F |
0.0289 |
G |
0.0199 |
H |
0.0528 |
I |
0.0627 |
J |
0.0013 |
K |
0.0042 |
L |
0.0339 |
M |
0.0249 |
N |
0.0707 |
O |
0.0797 |
P |
0.0199 |
Q |
0.0012 |
R |
0.0377 |
S |
0.0607 |
T |
0.1045 |
U |
0.0249 |
V |
0.0092 |
W |
0.0149 |
X |
0.0017 |
Y |
0.0199 |
Z |
0.0008 |
這現象在中文上亦是相類似,只要我們計算字母出現頻率,再加推敲,破解密文實不難。 再者,密鑰的變化依然有限,以電腦的計算能力,一一推敲亦不難。當然古典密碼在一些短語的傳遞上仍有作用,但整篇文章以此法加密,其保安能力已顯然不足了。