如果偷了網(wǎng)站的私鑰,SSL真的會被破解嗎?
近幾年來,隨著網(wǎng)上支付以及網(wǎng)上交易業(yè)務(wù)的日益頻繁,SSL證書得到許多像網(wǎng)上銀行、基金交易平臺、電商購物等業(yè)務(wù)場景的青睞。隨著各大搜索引擎公布優(yōu)先收錄https站點后,很多中小型網(wǎng)站也開始安裝使用SSL證書。
SSL證書最大的優(yōu)勢是保護數(shù)據(jù)傳輸安全,當客戶端向服務(wù)器發(fā)出請求后,它們之間會開始一系列操作,使用非對稱加密方式傳遞會話密鑰,建立連接。
密鑰對數(shù)據(jù)安全至關(guān)重要,不禁讓我們產(chǎn)生了一個疑問,如果服務(wù)器的私鑰被第三人竊取,是不是意味著歷史數(shù)據(jù)、正在傳輸?shù)臄?shù)據(jù),以及未來要傳輸?shù)臄?shù)據(jù),都會被破解?
首先,我們要明白一個問題:通信雙方SSL是如何寫上出加密/解密密鑰的?
有兩種方法:
RSA Key Exchange
首先,客戶端單向認證服務(wù)器的真實身份,信任服務(wù)器RSA證書的公鑰。客戶端使用偽隨機函數(shù),隨機生成字符串(Pre-Master Key),該字符串用于加密和解密通信雙方的傳輸內(nèi)容,所以它是一種對稱加密。
緊接著,客戶端使用服務(wù)器的公鑰,加密Pre-Master Key,并發(fā)送給服務(wù)器。服務(wù)器再使用與公鑰對應(yīng)的私鑰解密,得到客戶端發(fā)過來的Pre-Master Key。
最后雙方使用Hash算法,計算出相同的Master Key,推導(dǎo)出加密/解密的密鑰,以及HMAC算法密鑰,后者用于數(shù)據(jù)校驗。
完成以上步驟后,通信雙方都知道了密鑰,使用這一密鑰進行通信即可。
很顯然,服務(wù)器的私鑰很關(guān)鍵,如果泄露,就會發(fā)生中間人攻擊,它可以隨意竊聽。
DHE Key Exchange
DHE是Diffie-Hellman Ephemeral的縮寫,一次性DH密鑰交換算法。
首先基于SSL證書,客戶端認證了服務(wù)器的真實身份,雙方各自交換自己的公鑰,注意該公鑰是動態(tài)計算得來的,并不保存,雙方還會交換各自的隨機碼。
拿到對方的公鑰后,和自己的私鑰計算出Pre-Master Key。再用隨機碼計算得到Master Key。接下來的過程與第一種方法一樣。
不難看出來,服務(wù)器私鑰的作用,僅僅只是保證公鑰在傳輸過程中,不會被中間人篡改而已。
所以,即便服務(wù)器私鑰被偷了,第三者也無法得到Pre-Master Key和加密/解密的密鑰,自然無法解密被加密的數(shù)據(jù)。
那么,如果第三者要解密數(shù)據(jù),該怎么辦呢?只需擁有任何一方的私鑰即可。
但是由于這個私鑰是臨時的、一次性的,通信雙方在得到Pre-Master Key后,就會被刪除,也不會在網(wǎng)絡(luò)上傳輸,所以第三者根本無法得到私鑰。