密碼學(一):古典密碼學
凱薩密碼、ROT13、維吉尼亞密碼
密碼學(Cryptography)分為古典密碼學與現代密碼學
- 古典密碼學主要關注資訊的保密書寫和傳遞,以及與其相對應的破譯方法
- 現代密碼學不只關注資訊保密問題,還同時涉及資訊完整性驗證( Data integrity)(訊息驗證碼)、資訊發布的不可抵賴性( Non-repudiation)(數位簽章)、以及在分散式計算中產生的來源於內部和外部的攻擊的所有資訊安全問題
以下介紹古典密碼學常見加密方法:
凱薩密碼( Caesar cipher)
凱薩密碼算是古典密碼中最知名的,他應用的就是替換加密方式
以以下例子說明: key=左3 (+3)
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
密碼破譯:
非常容易破解,直接暴力破解( 窮舉法)(最多26次)或使用頻率分析(字母或單詞)
當密文長度夠大的情況下,分析密文中每個字母出現的頻率,然後將這一頻率與正常情況下的該語言字母表中所有字母的出現頻率做比較, 分析密文字母出現的頻率,可以估計出正確的偏移量
ROT13(純屬好玩)
ROT13 是凱撒加密的一種變體, 偏移量為13
ROT13 is used in online forums as a means of hiding spoilers, punchlines, puzzle solutions, and offensive materials from the casual glance. ROT13 has inspired a variety of letter and word games on-line, and is frequently mentioned in newsgroup conversations.
ROT47是ROT13的衍生物,它除了打亂基本字母外,也對數字與常見符號做處理
原文:
The Quick Brown Fox Jumps Over The Lazy Dog.
加密成為:
%96 “F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]
這邊請參考ASCII code table:
維吉尼亞密碼
維吉尼亞密碼由一些偏移量不同的愷撒密碼組成,屬於多表密碼的一種簡單形式,為了生成密碼,需要使用表格法。這一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具體使用哪一行字母表進行編譯是基於密鑰進行的,在過程中會不斷地變換
使用wiki例子,假設明文為:
ATTAC
選擇某一關鍵詞並重複而得到密鑰,如關鍵詞為LEMON時,密鑰為:
LEMON
對於明文的第一個字母A,對應密鑰的第一個字母L,於是使用表格中L行字母表進行加密,得到密文第一個字母L。類似地,明文第二個字母為T,在表格中使用對應的E行進行加密,得到密文第二個字母X
以此類推,可以得到:
明文:ATTAC
密鑰:LEMON
密文:LXFOP
再看一個例子看是如何以計算方式得出密文:
密碼破譯:
頻率分析在這裡並沒有用
破譯維吉尼亞密碼的關鍵在於它的密鑰是循環重複的。如果我們知道了密鑰的長度,那密文就可以被看作是交織在一起的凱撒密碼,而其中每一個都可以單獨破解。使用卡西斯基試驗和弗里德曼試驗來得到密鑰的長度
卡西斯基試驗(Kasiski examination)
假設猜測6是keyword長度:
>下一篇: 密碼學(二):現代密碼學