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