凱撒密碼
原理
- 凱撒密碼的實現方式就是對字母進行平移,加密向右平移的話,解密就向左平移
- 凱撒密碼的算法就是平移,密鑰就是平移的長度
破解
- 凱撒密碼是可以被暴力破解的。原因是如果是26個英文字母的話,字母的便宜最多也就是26種,把這些都嘗試一遍是不需要花太多時間和成本的
簡單替換密碼
原理
- 這個算法也很簡單,實質上就是一張字母對照表。例如,字母A對應字母H,以此類推。
- 這個算法里的密鑰就是這張字母對照表
破解
- 暴力破解此算法很難。因為密鑰空間會有 252423...*1 = 4兆的1000兆倍,破解需要花費的時間太長了
- 此算法仍舊可以破解。對照表的特點是,相同字母每次加密后的值不是隨機的,而是固定的。如果一篇文章很長,會導致相同的明文字母會重復出現多次,而相同的密文也就重復多次。完全可以根據英文字母在單詞的出現頻率的多少,來猜測對應的字母代表什么。
- 相同明文每次加密后變成固定值的密碼算法是不安全的
Enigma
原理
- Enigma的密碼原理還是非常先進和現代的,體現在下面幾個地方。
1、出現了密鑰加密密鑰,即針對加密密鑰進行加密。現在的加密算法還在進行加密。
2、對于相同的明文,每次加密后生成的密文不相同,這點根據上面簡單替換密碼的破解,就知道其重要性
3、具備簡單的容錯。對于加密密鑰,通過重復兩次,進行容錯的校驗。雖然這給破解帶來了便利。
4、不依賴于加密算法本身來實現加密。由于存在加密密鑰,所以哪怕即使拿到了Enigma機器,也沒辦法破解密文。 - Enigma的機械結構:
由接線板、三個轉子組成。當輸入一個字符時,電流通過由接線板和轉子同時確定的線路,會產生到一個新的對應字符上。這個類似現在由軟件實現的加密算法了。 - Enigma加解密的步驟:
1、加密加密密鑰。用于加密明文的密鑰,是由發送者想出來的三個字母。這個由于需要用于解密,要發送給接收方,所以需要針對此加密密鑰進行加密。
針對加密密鑰進行加密,使用的密鑰是國防軍發布的"每日密碼本"的當日密碼。
首先根據當日密碼設置Enigma機器,然后發送者想一個加密密鑰,在機器上輸入2次。每輸入一個字符,第一個轉子就旋轉一下,保證了每個字符加密后的結果都不同。
最終得到的是加密后的6個字符,也就是2遍的加密密碼。
2、加密發送明文。發送者想出的加密密鑰是三個字符的,其實是表示三個轉子的初始位置設置。
所以,首先根據加密密鑰設置三個轉子的初始位置,然后再逐個輸入正文的字符。
由于每輸入一個字符后,三個轉子都會根據之前的規定旋轉,所以即使是相同的明文,加密后的結果也不相同。
3、合并發送。將加密后的加密密鑰 和 加密后的密文 合并后,一起發送給接收者。
4、解密加密密鑰。接收者拿到發送后的全文后,先取前6個字符,再依據每日密碼設置機器進行解密。
如果解密后的6個字符是重復兩次的相同字符時,證明發送過程沒有問題。
5、解密正文。根據解密后的加密密鑰設置機器,然后輸入正文,完整正文的解密。
破解
-
弱點
1、用于加密密鑰的密鑰不是隨機的。這個是指的每日密碼本是固定的,而且是預先設定發布的,其安全性大大降低。
2、加密密鑰是頭6個字符且重復2次。相當于所有人都知道密鑰存放的地方,而且很有規律,這樣可以方便猜測極為關鍵的加密密鑰。
3、加密密鑰的加密強度較弱。相對于正文的加密是三個轉子都旋轉,加密加密密鑰時只有一個轉子旋轉,強度自然減弱。
4、加密密鑰是人為想出的。是的,人才是所有保密手段中最薄弱的環節。人可能想到的加密密鑰是aaa之類的簡單密鑰,這樣破解的人可以猜測,即使不能直接猜測出來,也大大方便了推導。 -
破解
突破口還是在加密密鑰的特性上,就是上面弱點的第2點上。
再加上,用于加密加密密鑰的每日密碼一天內是沒法變化的,這就導致一個結果是一天之內有大量的樣本用于解密。
轉子總共才3個,每個轉子的位置只有26個,所以也就有262626種可能性。使用機器暴力是可以找到每日密碼做相關破解。 -
趣事
德國人為了測試機器,發布了一條全l(小寫L)的消息,這條用于測試的消息給了盟軍以破解的方便。
因為加密后不可能加密成原來的字符,所以可以通過密文推測明文就是全l,因為通篇沒有出現l這個字符。
根據大量的樣本進行排列組合,就推測初接線板和轉子狀態的線索。
密碼算法和密鑰分開
原因也很簡單,密碼算法是需要重用的,但是密鑰不能重用,因為重用會帶來破解風險。