【密碼故事012】科普向: 加密演算法——密碼學的核心技術(上)

【密碼故事012】科普向: 加密演算法——密碼學的核心技術(上)

來自專欄 區塊鏈下午茶

混合加密機制

混合加密機制同時結合了對稱加密和非對稱加密的優點。

先用計算複雜度高的非對稱加密協商出一個臨時的對稱加密密鑰(也稱為會話密鑰,一般相對所加密內容來說要短得多),然後雙方再通過對稱加密演算法對傳遞的大量數據進行快速的加解密處理。

典型的應用案例是現在大家常用的HTTPS協議。HTTPS協議正在替換掉傳統的不安全的HTTP協議,成為最普遍的Web通信協議。

HTTPS在傳統的HTTP層和TCP層之間通過引入Transport Layer Security/Secure Socket Layer(TLS/SSL)加密層來實現可靠的傳輸。

SSL協議最早是Netscape於1994年設計出來實現早期HTTPS的方案,SSL 3.0及之前版本存在漏洞,被認為不夠安全。TLS協議是IETF基於SSL協議提出的安全標準,目前最新的版本為1.2(2008年發布)。推薦使用的版本號至少為TLS 1.0,對應到SSL 3.1版本。除了Web服務外,TLS協議也廣泛應用於Email、實時消息、音視頻通話等領域。

採用HTTPS建立安全連接(TLS握手協商過程)的基本步驟如下:

 TLS握手協商過程

1. 客戶端瀏覽器發送信息到伺服器,包括隨機數R1、支持的加密演算法類型、協議版本、壓縮演算法等。注意該過程為明文。

2. 服務端返回信息,包括隨機數R2、選定加密演算法類型、協議版本以及伺服器證書。注意該過程為明文。

3. 瀏覽器檢查帶有該網站公鑰的證書。該證書需要由第三方CA來簽發,瀏覽器和操作系統會預置權威CA的根證書。如果證書被篡改作假(中間人攻擊),很容易通過CA的證書驗證出來。

4. 如果證書沒問題,則客戶端用服務端證書中的公鑰加密隨機數R3(又叫Pre-MasterSecret),發送給伺服器。此時,只有客戶端和伺服器都擁有R1、R2和R3信息,基於隨機數R1、R2和R3,雙方通過偽隨機數函數來生成共同的對稱會話密鑰MasterSecret。

5. 後續客戶端和服務端的通信都通過對稱加密演算法(如AES)進行保護。

可以看出,該過程的主要功能是在防止中間人竊聽和篡改的前提下完成會話密鑰的協商。為了保障前向安全性(perfect forward secrecy),TLS對每個會話連接都可以生成不同的密鑰,避免某次會話密鑰泄露之後影響了其他會話連接的安全性。需要注意,TLS協商過程支持加密演算法方案較多,要合理地選擇安全強度高的演算法,如DHE-RSA、ECDHE-RSA和ECDHE-ECDSA。

示例中對稱密鑰的協商過程採用了RSA非對稱加密演算法,實踐中也可以通過Diffie–Hellman協議來完成。

離散對數與Diffie–Hellman密鑰交換協議

Diffie–Hellman(DH)密鑰交換協議是一個經典的協議,最早發表於1976年,應用十分廣泛。使用該協議可以在不安全信道完成對稱密鑰的協商,以便後續通信採用對稱加密。

DH協議的設計基於離散對數問題(Discrete Logarithm Problem,DLP)。離散對數問題是指對於一個很大的素數p,已知g為p的模循環群的原根,給定任意x,求解X=g^x mod p是可以很快獲取的。但在已知p、g和X的前提下,逆向求解x目前沒有多項式時間實現的演算法。該問題同時也是ECC類加密演算法的基礎。

DH協議的基本交換過程如下:

1. Alice和Bob兩個人協商密鑰,先公開商定p,g;

2. Alice自行選取私密的整數x,計算X=g^x mod p,發送X給Bob;

3. Bob自行選取私密的整數y,計算Y=g^y mod p,發送Y給A;

4. Alice根據x和Y,求解共同密鑰Z_A=Y^x mod p;

5. Bob根據X和y,求解共同密鑰Z_B=X^y mod p。

實際上,Alice和Bob計算出來的結果將完全相同,因為在mod p的前提下,Y^x=(g^y)^x=g^(xy)=(g^x)^y=X^y。而信道監聽者在已知p、g、X、Y的前提下,無法求得Z。


推薦閱讀:

作為域用戶,有什麼辦法可以保護自己的私人文件夾,不讓域管理員接觸?
如何從零基礎開始研究後量子加密,這門學科的關鍵點在哪裡?
異或加密使用於哪種需求?
加密手機真的需要加密晶元嗎?
WinRAR 的加密效果怎麼樣,其中加密文件名是什麼意思?

TAG:加密 | 加密演算法 | 密碼學 |