詳解HTTPS原理

一、概念

協(xié)議

1、HTTP 協(xié)議(HyperText Transfer Protocol):超文本傳輸協(xié)議,是客戶端與服務(wù)器之間的通信協(xié)議 。

2、HTTPS 協(xié)議(HyperText Transfer Protocol over Secure Socket Layer):可以理解為HTTP+SSL/TLS, 即 HTTP 下加入 SSL 協(xié)議,SSL的作用就是利用多種加密算法對HTTP進(jìn)行加密,保證客戶端和服務(wù)器能夠安全的進(jìn)行通訊。

加密算法

1、對稱加密

對稱加密指加密和解密使用相同密鑰的加密算法。它的特點(diǎn)是算法公開、計(jì)算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。

常見算法:DES、AES等

2、非對稱加密

非對稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進(jìn)行加密,那么只有用對應(yīng)的公開密鑰才能解密。它的特點(diǎn)是算法強(qiáng)度復(fù)雜、安全性高。但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快。

常見算法:RSA、DSA等

二、HTTPS

http請求流程

如上圖所示,HTTP請求過程中,客戶端與服務(wù)器之間沒有任何身份確認(rèn)的過程。服務(wù)器只要收到請求,都會給予回應(yīng),因此這傳輸?shù)倪^程中,數(shù)據(jù)很容易被黑客竊聽和篡改。因此, HTTP 傳輸面臨的風(fēng)險(xiǎn)有:
(1) 竊聽風(fēng)險(xiǎn):黑客可以獲知通信內(nèi)容。
(2) 篡改風(fēng)險(xiǎn):黑客可以修改通信內(nèi)容。
(3) 冒充風(fēng)險(xiǎn):黑客可以冒充他人身份參與通信。

那么HTTPS是如何保證請求的安全呢?

如果利用對稱加密,雙方擁有相同的密鑰,信息得到安全傳輸,但此種方式也存在著明顯的缺點(diǎn),就是一旦公鑰被泄漏了,那么服務(wù)器的安全就無法得到保障。

如果利用非對稱加密,客戶端用公鑰對請求內(nèi)容加密,服務(wù)器使用私鑰對內(nèi)容解密,這樣即使公鑰泄漏出去,也不會影響服務(wù)器的安全。但是,由于非對稱加密算法的復(fù)雜度,解密的過程需要消耗較多的時(shí)間,這樣子會影響到用戶體驗(yàn)。

因此,https取其精華,棄其糟粕,把兩者的優(yōu)點(diǎn)結(jié)合起來。https協(xié)議在通信的過程中,會先進(jìn)行下圖所示的握手,第1-5步的過程是利用非對稱加密算法,把客戶端生成的秘鑰傳到服務(wù)器,服務(wù)器利用私鑰機(jī)密,得到客戶端生成的密鑰。然后雙方再利用這個(gè)秘鑰對數(shù)據(jù)傳輸進(jìn)行對稱加密。這樣子,既保證了傳輸過程的安全,又保證了數(shù)據(jù)傳輸?shù)男?。接下來對這個(gè)過程進(jìn)行詳細(xì)的分析:

https請求流程

(1)客戶端先向服務(wù)器發(fā)出加密通信的請求,這一步被叫做ClientHello請求;
(2)圖中第二步的crt是服務(wù)器從證書頒發(fā)機(jī)構(gòu)申請的crt證書,證書包含證書的頒發(fā)機(jī)構(gòu)、有效期、公鑰、簽名等相關(guān)信息。注意,證書中不包含私鑰,私鑰只存在服務(wù)器中
(3)服務(wù)器收到客戶端請求后,向客戶端發(fā)出回應(yīng),這叫做SeverHello請求,在這里,服務(wù)器會將證書傳到客戶端;
(4)客戶端收到響應(yīng)后,會對證書進(jìn)行驗(yàn)證,如果證書無效,則會發(fā)出相應(yīng)的警告,如果證書是有效的,客戶端會生成一個(gè)隨機(jī)的秘鑰;
(5)客戶端利用證書的公鑰進(jìn)行加密,把上一步生成的隨機(jī)秘鑰傳輸?shù)椒?wù)器;
(6)服務(wù)器利用對應(yīng)的私鑰進(jìn)行解密,獲取客戶端生成的隨機(jī)密鑰;
(7)服務(wù)器利用隨機(jī)密鑰進(jìn)行加密,把數(shù)據(jù)傳輸給客戶端;
(8)客戶端利用隨機(jī)密鑰進(jìn)行解密,獲取響應(yīng)的數(shù)據(jù)。

三、總結(jié)

綜上所述,相比 HTTP 協(xié)議,HTTPS 協(xié)議增加了很多握手、加密解密等流程,雖然過程很復(fù)雜,但其可以保證數(shù)據(jù)傳輸?shù)陌踩?。所以在這個(gè)互聯(lián)網(wǎng)膨脹的時(shí)代,其中隱藏著各種看不見的危機(jī),為了保證數(shù)據(jù)的安全,維護(hù)網(wǎng)絡(luò)穩(wěn)定,建議大家多多推廣HTTPS。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容