密码学101:密码
本文是《圖解密碼技術》閱讀的總結性文章。
1.1 歷史上的密碼
現代的密碼通常用于計算機數據的加密,操作的是比特序列。但早在計算機誕生之前,加密技術就已經被使用了。歷史上使用過的密碼有這些:
- 凱撒密碼:
- 算法:通過將字母按照字母表順序進行平移的方式對文本進行加密;反平移解密
- 密鑰:平移的位數
- 缺點:可以通過暴力破解破譯
- 簡單替換密碼:
- 算法:通過一對一的字母替換表,將字母進行替換;反替換解密
- 密鑰:26!
- 特點:明文中字母的出現頻率與密文中的字母的出現頻率一致
- 缺點:由于密鑰空間很大,很難暴力破解。但可以通過頻率分析的方式破譯
- Enigma
- 背景:由德國人Arthur Sherbius在20世紀初發明的機器,德語里為“謎”的意思
- 加密:1. 使用每日密碼設置Enigma 2. 加密通信密碼,記下對應的密文 3. 根據通信密碼重新設置Enigma 4. 加密消息,記下對應的密文 5. 拼接
- 解密:1. 分解密文 2. 使用每日密碼設置Enigma 3. 解密通信密碼 4.使用通信密碼重新設置Enigma 5. 解密消息
- 特點:Enigma的設計不依賴于隱蔽式安全性(security by obscurity),即使拿到Enigma密碼機(密碼算法),只要不知道Enigma的設置(密鑰)就無法破解。
- 缺點:通信密碼連續輸入兩次并加密;通信密碼人為選定;必須派發國防軍密碼本(每日密碼)
小結:研究上述歷史上的密碼可以看出,密碼算法和密鑰是分開的,解決了希望重復使用但重復使用會增加風險的問題。現代密碼算法中有一部分標準化的技術,將密碼算法作為共有財產被開發、研究和利用,但即便如此,密文的機密性也絲毫沒有降低,正是因為密碼算法和密鑰是分開的。密鑰才是密碼的精髓。
1.2 對稱密碼(共享密鑰密碼)——用相同的密鑰進行加密和解密
隨著計算機的誕生與發展,現代的密碼加密的內容從文本變成了由0和1排列而成的比特序列。兩個概念:
- 編碼:將現實世界的東西映射為比特序列的操作
- XOR:異或運算以下特性和加密解密步驟非常相似。明文A用密鑰B進行加密得到密文C,密文C用密鑰B解密得到明文A
??
實際上只要選擇一個合適的B,僅僅使用異或就可以實現一個高強度的密碼。對于密碼技術來說,“是否可以預測”非常重要,能夠產生不可預測的比特序列(隨機數),對密碼技術的貢獻是巨大的。
幾種加密技術:
- 一次性密碼本
- 原理:將明文與一串隨機的比特序列進行異或運算
- 特點:由于無法判斷得到的是不是明文,所以一次性密碼本是無法破譯的
- 缺點:密鑰配送、保存、重用、同步;需要生成大量的隨機數,不是通過計算機程序生成的偽隨機數,而必須是無重現性的真正隨機數
- DES
- 將64比特明文加密成64比特密文的對稱加密算法,密鑰長度為56比特,多出的7位用于錯誤校驗
- 原理:16輪循環Feistel網絡
- 三重DES
- AES(Rijndael)
- AES標準最終使用了Rijndael算法
- 原理:通過替換、平移、矩陣運算、異或運算四個步驟進行加密;相反順序進行解密
小結:使用一種密鑰空間巨大且算法上沒有弱點的對稱密碼,就可以通過密文來確保明文的機密性。但使用對稱密鑰進行通信時,還會出現密鑰的配送問題。上述的這些算法,都只能將固定長度的分組進行加密,如果需要加密長文,需要對密碼算法通過一定的模式進行迭代。
1.3 公鑰密碼——用公鑰加密,用私鑰解密
使用對稱密碼進行通信時會出現密鑰的配送問題。如果有一種方式可以保證密鑰配送的絕對安全,那么為什么不用這種方式加密消息呢?為了解決密鑰問題,有以下幾種方案:
- 事先共享密鑰
- 密鑰分配中心:密鑰中心保存所有端的密鑰,密鑰中心生成臨時密鑰給予通信雙方進行通信
- 使用Diffie-Hellman密鑰交換:僅傳輸一些信息然后自行生成密鑰
- 公鑰密碼:接收方生成密鑰對,將公鑰派發給發送方用于消息加密,接收到密文后用私鑰解密
使用最廣泛的公鑰密碼算法——RSA
RSA可用于公鑰密碼和數字簽名。
RSA加密:E和N的組合就是公鑰
RSA解密:D和N的組合就是私鑰
生成密鑰對:求E、D和N這三個數就是生成密鑰對。計算過程(有時間補上)省略。
對RSA的攻擊
- 通過密文求得明文:求離散對數的問題
- 通過暴力破解找出D
- 通過E和N求出D
- 中間人攻擊:替換發送方的公鑰
- 選擇密文攻擊:利用服務器的解密提示。由此產生了RSA-OAEP改良算法,填充了一些校驗信息,也支持改變密文的排列組合
小結:對稱密碼通過將明文轉換為復雜的形式來保證機密性,而公鑰密碼基于數學上困難的問題來保證機密性。但是,公鑰也存在缺點,比如無法防御中間人攻擊,運行速度遠低于對稱密鑰。
1.4 混合密碼系統——用對稱密碼提速,用公鑰密碼保護會話密鑰?
混合密碼系統組成機制:
- 用對稱密鑰加密信息
- 用為隨機數生成器生成對稱密碼加密中使用的會話密鑰
- 用公鑰密碼加密會話密鑰
- 從混合密碼系統外部賦予公鑰密碼加密時使用的密鑰
注意,混合密碼系統運用了偽隨機數生成器、對稱密鑰和公鑰密碼三種技術,其中每一種技術要素的強度都必須很高,以防止攻擊者集中攻擊其中薄弱環節。不僅強調單個技術要素的強度,技術要素之間的強度平衡也很重要。從長期運用的情況來看,公鑰密碼的強度應該高于對稱密鑰。
密碼技術的組合經常被用于構建一些實用的系統,如分組密碼模式,通過采用不同的分組密碼組合方式,構建具有不同特點的分組密碼模式。三重DES也是一種將三個DES組合在一起以增加密鑰長度的密碼技術。接下來的章節中,還會出現一些由多種技術組合而成的技術。
總結
- 上一篇: 西安电子科大2010年的硕士博士考试推荐
- 下一篇: 猫扑网娱乐门户的猫派营销