目錄
對稱加密和公鑰加密
加密用於保證機密性。本文總結對稱加密和公鑰加密的優缺點及兩者比較。主要材料來自於Handbook of Applied Cryptography一書。
加密方案的安全性
必要不充分條件: 密鑰空間大到排除窮搜
對稱密碼學
采用對稱密鑰加密的雙方通信可用下圖表示,對稱密碼的一個主要問題是尋求有效的方法進行密鑰協商及交換。
對稱密鑰加密的密鑰管理問題
- 密鑰管理中心(KMC)方案
- 密鑰分散方案
- 使用公鑰技術進行密鑰管理
可以保證:加密傳遞的數據只能被指定的接收者解密;單個實體的失效不能影響其它實體的安全;密鑰不能擴散;密鑰易於傳遞
對稱密鑰加密方案分類
- 分組密碼:分組進行加密,需要滿足混淆(密鑰與密文之間的關系盡可能復雜)和擴散原則(使明文中的冗余度能擴散到整個密文)。
- 流密碼:可看做分組長度為1的分組密碼。
- 優點:在傳輸錯誤率很高的環境中,具有較大優勢,因為流密碼中沒有錯誤擴散。也可用於數據處理必須每次一個符號的場景,如設備沒有存儲區或緩沖區有限。此外,相比分組密碼,流密碼的硬件實現電路更簡單。
- 缺點:低擴散、插入和修改的不敏感性。
- 一次一密(One time pad) 是唯一被證明安全的的系統。
對稱密鑰加密優點
- 數據高吞吐量,便於軟硬件實現。一些硬件實現達到了每秒加密幾百兆字節,軟件實現的吞吐量也達到了兆字節每秒的量級。
- 密鑰相對較短。
- 可作為要素構造各種密碼機制。如:偽隨機數生成器,雜湊函數,快速數字簽名方案。
- 可合成強密碼。簡單變換容易被分析,但研究其弱點后,可用來構造乘積密碼。
- 歷史較久遠。
對稱密鑰加密缺點
- 通信雙方的密鑰均需要保密。
- 大型網絡中需要管理許多密鑰對。其結果是,有效的密鑰管理者需要有一個無條件可信的TTP(在所有事情上都是可信的,它可以訪問用戶的私鑰,還承擔着公鑰與標識符的聯系),該TTP需要實時使用。
- 密鑰需要時常更換,甚至每次會話都需要更換。
- 源自對稱密鑰加密的數字簽名機制通常需要關於公開驗證函數的大密鑰,或通信協議。
公鑰密碼學
采用公鑰加密的雙方通信可用下圖表示,公鑰密碼假設無法通過公鑰e得到私鑰d的信息。沒有一個獨立於某種預定的假設的公鑰方案被證明是安全的。
公鑰系統中認證的必要性
在公鑰系統中,需要對公鑰本身的數據源進行認證,否則容易發生如下的假冒攻擊。
常見公鑰密碼算法
-
RSA:基於RSA困難的假定,而非分解大整數的困難假定(因為並不清楚大整數分解是否是破解RSA的唯一方法);但是若可以分解大整數,則可破解RSA。NIST建議2014年以后,使用2048位以上的大整數。
-
Diffie-Hellman密鑰交換協議:一種在通信雙方之間協商會話密鑰的協議
-
國產SM2公鑰密碼算法的加密方案:利用公鑰產生任意長密鑰流,用密鑰流與明文模二加獲得密文,這實質上就是序列算法。在速度上與對稱算法沒有實質性差別了。
公鑰系統的應用
- 公鑰直接加密(速度太慢,不實用)。
- 密碼信封方式加密:使用公鑰加密對稱密碼的密鑰,使用對稱算法加密數據,將兩者一起傳送給接收方。
- 基於可交換公鑰加密的數字簽名(需要一種加密算法作為來源)。但是在一些情況下,不允許加密的存在,此時這些數字簽名方案就不適用了。
\(D_d(E_e(m)) = E_e(D_d(m)) = m\)
實際應用中,簽名用於驗證身份,保證不可抵賴性。
公鑰加密優點
- 只有私鑰需要保密。
- 與無條件可信的TTP相反,公鑰密鑰管理者只需要一個功能上可信的TTP(它是誠實且公正的,但是無法訪問用戶私鑰),並且該TTP可以離線使用。
- 一對公鑰/私鑰可以多次使用甚至多年不變。
- 許多公鑰方案產生了相對有效的數字簽名機制,用於刻畫公開驗證函數的密鑰通常比對稱密鑰小得多。
- 在大型網絡中,所需密鑰的數量要比對稱密鑰少很多。
公鑰加密缺點
- 吞吐量上,大多流行的公鑰方案要比已知最好的對稱密鑰方案慢幾個數量級。
- 密鑰長度比對稱密鑰大很多(如RSA的1024比特對比對稱密碼的64或128比特);公鑰簽名的大小也比對稱密鑰技術提供的數據源認證標記(MAC)大很多。
- 還沒有公鑰方案被證明是安全的(對分組密碼也可以這么說)。至今發現的有效公鑰加密方案都基於數學困難問題。
- 歷史較短,始於1977年RSA的提出。
兩者比較
對稱和公鑰有許多互補的優點。目前的密碼系統融合了兩者的優勢。例如:
- 憑借公鑰加密技術建立密鑰(密鑰可長期使用)
- 將該密鑰作為對稱密鑰進行雙方通信(高吞吐量)
在實際應用中,
- 公鑰密碼學推動了有效的簽名(特別是不可抵賴性)和密鑰管理。
- 對稱密碼學對於加密及數據完整性應用很有效。