原文標題:《那些不可思議的古典密碼學》
作者:Silas
密碼學(Cryptography),是一門將資訊進行加密處理與傳遞,以及分析加密資訊的學科。根據以 RSA 為代表的公鑰加密體系的出現,可以將密碼學的發展過程分為古典密碼學與現代密碼學兩部分。古典密碼學以「置換法」與「替換法」為基礎,多應用于軍事與情報領域;現代密碼學則建立在數學、計算機與通信科學的基礎上,除了加密資訊之外,數字簽名、數據完整性、身份認證等也是現代密碼學的研究課題。
古典密碼學(Classic cryptography)和現代密碼學(Modern cryptography)的主要差別在于計算機的使用,一般來說,古典密碼學是基于字符的,而現代密碼學是基于二進制位的。
密碼學的概念與人們平時登入網站、使用銀行賬戶的「密碼」并不相同。這些用于身份認證的「密碼」,更準確的翻譯是通行詞(password),它是現代密碼學的諸多應用之一,
一般來說,古典密碼學主要包括兩類,即替換和置換。
置換法依照一定的規則,改變原始資訊中的字母排列順序;替換法將原始資訊中的字母按照一定的規則替換成其他字母。置換法與替換法的安全性較差,古阿拉伯的學者們開創了破譯加密資訊的科學 — — 密碼分析學,通過頻率分析的方法破解替換式加密法。
代換
代換密碼是將明文中的字符替代成其他字符,即替代轉換,若整個加密過程中每個字符采用同一張表替代,則為單表代換密碼,類似的,若整個加密過程中每個字符采用不同的表替代,則為多表代換密碼,典型的單表代換密碼有凱撒密碼、培根密碼等,多表代換密碼有維吉尼亞密碼等,
凱撒密碼
凱撒密碼(Caesar cipher)就是將明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。例如,當偏移量為3時,所有的字母A將被替換成D,B變成E,以此類推。明文Hello World的加密過程如下:
- 取偏移量為3
- 計算H的后3位為K
- 以此類推
- 密文為:Khoor Zruog
類似的,解密過程如下:
- 計算K的前3位為H
- 以此類推
- 明文為:Hello World
注意:當偏移量為13時,這種凱撒密碼的特例又被稱為ROT13(回轉13位)加密,ROT13加密是一種對等加密(Reciprocal cipher),對等加密是對稱加密的一個特例,即該類密碼的加密算法是它自己本身的逆反函數,換言之,要對其解密,只需對其密文再次套用加密算法即可,當偏移量未知時,可采用窮舉法一個個試,偏移量必定小于26。
培根密碼
培根密碼(Bacon’s cipher)加密時,明文中的每個字母都會轉換成一組5個英文字母。其轉換依靠下表:
按照上表,明文hello的密文為AABBBAABAAABABBABABBABBBA,顯然,密文的長度是明文長度的5倍。除了上表用來加密小寫明文外,還有一張用來加密大寫明文的表。
同理,明文HELLO的密文為aabbbaabaaababbababbabbba。注意:雖然表中出現了A B兩種字符,但培根密碼的本質是二進制,即用兩種不同的特征來加密明文,可以是字母的大小寫或字體的樣式等等。例如采用字母的大小寫加密hello為GOod gOOd STUdY, dAY dAy UP, haHa,其中大寫代表A,小寫代表B;類似的,也可以用粗體代表A,正常代表B,以字體的樣式加密hello,顯然,培根密碼所包含的資訊可以和用于承載其的文章完全無關,
維吉尼亞密碼
維吉尼亞密碼是使用一系列凱撒密碼組成密碼字母表的加密算法,
這一表格包括了26行字母表,每一行都由前一行向左偏移1位得到,行為明文行,列為密鑰列,密文位于表格內, 明文HELLOWORLD的加密結果如下:
- 選擇某一關鍵詞作為密鑰,如SECRET
- 對于明文第1個字母H,對應密鑰的第1個字母S,于是使用表格中S行字母表進行加密,得到密文第一個字母Z
- 以此類推,若密鑰長度小于明文長度,則轉到密鑰第1個字母繼續循環,最終得到密文ZINCSPGVNU
類似的,解密過程如下:
- 根據密鑰第1個字母S所對應的S行字母表,發現密文第1個字母Z位于H列,因而明文第1個字母為H
- 依次類推
顯而易見,維吉尼亞密碼相對于本文介紹的其他古典密碼,很難利用窮舉法破解,
置換
置換密碼是將明文中的字母重新排列,字母本身不變,但其位置改變,即位置轉換,典型的有柵欄密碼等,
柵欄密碼
柵欄密碼(Rail fence cipher),又稱籬笆密碼,就是把要加密的明文分成n個一組,然后把每組的第一個字連起來,緊接著把每組的第二個字連起來,以此類推,形成一段無規律的話,明文Hello World的加密過程如下:
- 去掉空格:HelloWorld
- 5個一組:Hello,World
- 取出每組第1個字母:HW
- 取出每組第2個字母:eo
- 以此類推
- 連在一起:HWeolrllod
- 加上適當空格:HWeol rllod
類似的,解密過程如下:
- 去掉空格:HWeolrllod
- 分成5欄:HW、eo、lr、ll、od
- 取出每欄第1個字母:Hello
- 依次類推
- 連在一起:HelloWorld
- 加上適當空格:Hello World
注意:這里柵欄的欄數取決于n的取值,一般而言,n要整除字母數,n不可能大于或等于字母數,當不知道n為多少時,可采用窮舉法一個個試。
其他
當鋪密碼
準確來說,當鋪密碼不是一種加密方式而是一種編碼方式,它是將中文和數字進行轉化的算法,具體為:當前漢字有多少筆畫出頭,就轉化成數字幾,如王夫 井工 夫口 由中人即為67 84 70 123,
豬圈密碼
豬圈密碼(Pigpen cipher),又稱共濟會密碼(Masonic cipher),是一種以格子為基礎的簡單代換式密碼,下圖為豬圈密碼中所用符號與26個英語字母之間的對應關系:
明文X MARKS THE SPOT的加密結果如下:
在長達一千多年的時間里,古典密碼學以置換法與替換法為基礎不斷演進,以維吉尼亞密碼為代表的多字母表替換式加密法輪流使用多個不同的替換式密碼表,依次對明文中的字母進行加密。第二次世界大戰時德軍使用的「恩尼格瑪」是一種基于復雜的多表替換加密原理的機械式密碼機,但最終由于自身加密算法的缺陷,被圖靈設計的「炸彈」攻克,
休·懷特摩爾創作的戲劇“破譯密碼”的內容為艾倫·圖靈的生活,艾倫·圖靈是在二戰中幫助英國破譯恩尼格瑪密碼機的密碼的最大功臣。
英國暢銷書作家羅伯特·哈里斯于1996年出版的小說“恩尼格瑪”講述的是布萊切利園的密碼學家們破譯恩尼格瑪的過程。2001年這本小說被拍成了電影“恩尼格瑪”。
由喬納森·莫斯托拍攝并于2000年上映的電影U-571講的是一群美國潛艇兵為繳獲一臺恩尼格瑪密碼機而搶了一艘德國潛艇后的故事,電影中的恩尼格瑪密碼機是一個收藏家手里的真品,這部電影的情節并沒有嚴格地按照歷史發展,英國皇家海軍在1941年擊敗德軍潛艇U-110號最早獲得德國海軍密碼機,也是獵殺U-571電影的真實版本,美國只是在1944年諾曼底登陸之前繳獲了一艘U型潛艇。
2014年上映的電影《模仿游戲》講述了艾倫·圖靈等英國的數學家、邏輯學家協助軍方破譯恩尼格瑪密碼機的過程。
2019年網易推出的非對稱對抗懸疑手游《第五人格》中求生者陣營需要破譯五臺密碼機讓大門通電輸入密碼逃生所需破譯的五臺密碼機就是恩尼格瑪密碼機,
置換式與替換式加密法的弱點在于沒能完全消除密文中有關明文的某些特征,保留了明文中的某些資訊。奧古斯特·柯克霍夫在 19 世紀提出的柯克霍夫原則(Kerckhoff’s Principle)概括性地總結了加密算法應遵循的設計原則:即使加密系統的各個環節都是公開知識(Public knowledge),只要密鑰未被泄漏,加密系統都應該是安全的,
加密算法的安全性問題本質在于:如何降低攻擊者在了解加密算法,并擁有足夠長的密文片段的前提下,猜測出正確密鑰的可能性?
1948 年,香農創立了資訊論,并在次年的一篇論文中從數學的角度討論了加密系統,人們開始從科學的角度探究密碼學的奧秘。