歷史上的密碼

凱撒密碼

加密:通過將明文中所使用的字母表按照一定的字數「平移」來進行加密的

假設凱撒密碼為平移3個字母:

假設需要被保密的資訊為rookie,只考慮將其在保密狀態下發送給接收者。按上例中的凱撒密碼將其加密如下:

r—>U

o—>R

o—>R

k—>N

i—>L

e—>H

如上明文rookie就轉換成了密文URRNLH,這就是使用凱撒密碼對明文加密的過程。

解密:使用與加密是相同的密鑰進行反向的平移操作。

U—>r

R—>o

R—>o

N—>k

L—>i

H—>e

如上便實現了解密,得到明文rookie。在這個場景中,密鑰需發送者與接收者事先約定。

破譯凱撒密碼

上述例子中以英文為例,因為字母數量有限,將所有可能的密鑰全部嘗試一遍(過程省略),即可得到明文。同時這種破解方法也稱為暴力破解(brute-force attack),其本質是從所有的密鑰中找出正確的密鑰,因此又稱為窮舉搜索(exhaustive search)。

簡單替換密碼

簡單替換密碼(simple substitution cipher)就是在明文中所使用的字母表替換為另一套字母表的密碼。凱撒密碼也可以稱為簡單替換密碼的一種。

例如下圖所示,打亂對應順序,構成新的對應關係。

加密:按上圖新的對應表對rookie進行加密,則

r—>S

o—>R

o—>R

k—>L

i—>N

e—>G

則得到密文SRRLNG,與凱撒密碼相比較,該加密方式得到的密文變得毫無規律。

解密:只要使用加密是使用的替換表進行反向替換,即可得到明文。

破譯簡單替換密碼

凱撒密碼可以通過暴力破解來破譯,但簡單替換密碼很難通過暴力破解來破譯。因為簡單替換密碼的密鑰空間很大。”所有密鑰的集合稱為密鑰空間(keyspace)”,密鑰空間越大,暴力破解就越困難。

由於字母數量的限制,有一種破譯方法能破解簡單替換密碼,稱為頻率分析的密碼破譯方法。統計每個字母出現的頻率,替換成日常生活中常用的語句即可。

通過該方法總結出以下幾點:

  • 除了高頻字母以外,低頻字母也能夠成為線索

  • 高清開頭和結尾能夠成為線索,搞清單詞之間的分隔也能夠成為線索

  • 密文越長越容易破譯

  • 同一個字母連續出現能夠成為線索(因為在簡單替換密碼中,某個字母在替換表中所對應的另一個字母是固定的。

  • 破譯速度會越來越快

Enigma

Enigma是由德國人(Arthur Sherbius)於20世紀初發明的一種能夠進行加密和解密操作的機器。原理是通過轉動的圓盤和電路,創造出了人類手工無法實現的高強度密碼。

Enigma是一種由鍵盤、齒輪、電池和燈泡所組成的機器,通過機器就可與完成加密和解密兩種操作。發送者和接受者各自擁有一台Enigma,發送者用Enigma將明文加密,將生成的密文通過無線電發送給接收者。接收者將接收到的密文用自己的Enigma解密,從而得到明文。使用Enigma加密通訊過程如圖所示:

Enigma的原理類似與動態變化的「鬼腳圖」

鬼腳圖

鬼腿(中文:畫鬼腳),在日本被稱為阿彌陀簽(阿彌陀簽,「阿彌陀彩票」,因紙張被摺疊成類似於阿彌陀光環的扇形而得名或在韓國被稱為Sadaritagi ( 사다리타기 ),字面意思是「爬梯」),是一種彩票方法,旨在在任意數量的事物的兩組之間創建隨機配對,只要每組中的元素數量相同。這通常用於在人們之間分配東西,分配的東西的數量與人數相同。例如,可以通過這種方式公平且隨機地分配家務或獎品。

它由垂直線和水平線組成,連接兩條沿其長度隨機散布的相鄰垂直線;水平線稱為「腿」。垂直線的數量等於玩的人數,每條線的底部都有一個項目將與玩家配對的東西。玩這個遊戲的一般規則是:選擇頂部的一條線,然後沿著這條線向下。當遇到水平線時,跟隨它到達另一條垂直線並繼續向下。重複此過程,直到到達垂直線的末端。然後玩家會得到寫在行底部的東西。

如果把寫在鬼腿上面的元素當作一個序列,在使用鬼腿之後,把相同的元素寫在底部,那麼開始的序列就變成了另一個排列。因此,Ghost Leg 可以被視為一種置換運算元。

排列:Ghost Leg 將輸入序列轉換為具有相同數量元素但(可能)不同順序的輸出序列。因此,它可以被視為n 個符號的排列,其中n是幽靈腿中的垂直線數,因此它可以由相應的排列矩陣表示。

例如,考慮將戲劇中的角色分配給演員。

  1. 首先,這兩個集合在一個板上水平枚舉。演員的名字在上面,角色在下面。然後,繪製垂直線將每個演員與其正下方的角色連接起來。

  2. 然後隱藏演員和/或角色的名字,以便人們不知道哪個演員在哪條線上,或者哪個角色在哪條線上。

  3. 接下來,每個演員在棋盤上添加一條腿。每條腿必須連接兩條相鄰的垂直線,並且不得接觸任何其他水平線。

  4. 完成此操作後,將從每條垂直線的頂部到底部跟蹤一條路徑。當你沿著這條線往下走時,如果你遇到一條腿,你必須沿著它到左邊或右邊的相鄰垂直線,然後繼續向下追蹤。您繼續直到到達垂直線的底部,您開始的頂部項目現在與您結束的底部項目配對。

更多細節參見維基百科

Enigma加密過程

  1. 設置Enigma

    根據每日密碼來設置Enigma

  2. 加密通訊密碼

    由發送者提供一定數量的字母作為通訊密碼,發送者需在Enigma的鍵盤上輸入兩次改通訊密碼。

  3. 重新設置Enigma

    發送者根據通訊密碼重新設置Enigma,通訊密碼中的字母實際上代表了轉子的初始位置,每個轉自上面都是印有字母,根據字母來設置轉子的初始位置。

  4. 加密資訊

    輸入明文資訊,並記錄下對應的字母。

  5. 拼接

    將加密後的通訊密碼與加密後的資訊進行拼接作為電文通過無線電發送出去。

    加密過程如圖所示:

Enigma解密過程

  1. 分解

    接受者將受到的電文分解成兩個部分。分離出通訊密碼和密文

  2. 設置Enigma

    進行與發送者一致的操作。

  3. 解密通訊密碼

    通過Enigma的鍵盤輸入字母,將通訊密碼記錄,通過兩次重複的密碼確認是否存在傳輸正確。

  4. 重新設置Enigma

    根據密碼重新設置Enigma。

  5. 解密消息

    將電文剩餘部分進行解密,得到傳輸內容。

    解密過程如圖所示:

Enigma的弱點

  1. 將通訊密碼連續輸入兩次並加密
  2. 通訊密碼是人為選定的
  3. 必須派發國防軍密碼本

Enigma的破譯

因為Enigma的設計並不依賴於「隱蔽式安全性(security by obscurity)「,破譯者得到Enigma密碼機,只要不知道設置,就無法破譯密碼。

由於每日密碼在一天之中不會改變,因此破譯者在一天哪所截獲的通訊都是同一個密碼進行加密的。而且,這些密文都有一個共同的特點,那就是重複兩次。波蘭密碼破譯轉接Marian Rejewski通過深入的研究,總結出破譯方法:

轉子的順序共有6種可能,3個轉子的旋轉氣質共有26x26x26=17576種組合。通過6台的機器,分別對著17576種組合進行檢查,就能在短時間內找到每日密碼。也可以理解為是一種暴力破解。

總結

  • 凱撒密碼
    • 密碼演算法:將明文中的各個字母按照指定的字母數平移
    • 密鑰:平移的字母數量
  • 簡單替換密碼
    • 密碼演算法:按照替換表對字母表進行替換
    • 密鑰:替換表
  • Enigma(通訊密碼的加密)
    • 密碼演算法:使用Enigma密碼機,通過接線板的接線方式、三個轉子的順序、每個轉子的旋轉位置對字母進行替換
    • 密鑰(每日密碼):接線板的接線方式、三個轉子的順序、每個轉子的旋轉位置

將密碼演算法和密鑰分開的原因:

綜上,密碼演算法中都會有一部分是不變的,因此將密碼演算法和密鑰分開考慮,就解決了希望重複使用,但重複使用會增加風險這個難題。