深入理解Https如何保證通訊安全

跳躍的鍵盤手發表於2021-08-12

作為一名ABC搬運工,我相信很多人都知道Https,也都知道它是用來保證通訊安全的,但是如果你沒有深入瞭解過Https,可能並不知道它是如何保證通訊安全的。我也是藉著這次機會,和大家分享下我深入瞭解的一個過程。

本文主要帶著以下幾個問題進行探討:

1、什麼是Https?

2、Https和Http有什麼區別?

3、Https是如何保證通訊安全的,它解決了哪些問題?

1.離不開的Https基礎理論

HTTPS是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。

通過上面的定義,我們關注到兩點:傳輸加密、身份認證。那我們先來了解下Https中將要用到的加密技術和認證技術。

1)對稱加密

加密資料,需要祕鑰對(加密祕鑰和解密祕鑰),對稱加密很容易理解,即:通訊雙方分別持有的加密祕鑰和解密祕鑰是一樣的。

2)非對稱加密

非對稱加密從字面上理解,即:通訊雙方分別持有的加密祕鑰和解密祕鑰是不一樣的。我們將私人持有的祕鑰稱為私鑰,將公開的允許大多數人持有的祕鑰稱為公鑰,現實場景中,通常是使用公鑰加密通訊資料,然後私鑰解密保證資料安全性。

3)數字簽名

保證資料傳輸的完整性和傳送方可信。數字簽名是非對稱金鑰加密技術與數字摘要技術的應用,通常使用hash演算法對資料進行數字摘要(生成一段唯一的資料標識,該過程不可逆),然後使用私鑰對數字摘要進行加密;接收方收到資料後,使用傳送放提供的公鑰對資料解密,確保資料是傳送方傳送的(如果不能解密,說明傳送方並不是真實的),然後使用相同的hash演算法對解密的資料進行數字摘要,比較前後兩次數字摘要資訊,如果相同則說明資料未被修改,從而確保資料完整性。

4)數字證書

數字證書又稱數字標識,由使用者申請,證書籤證機關CA對其核實簽發,對使用者的公鑰認證。前面提到的幾種技術都是在傳送方正確的情況下所做的加密認證技術,然而當傳送方本身就是偽造的,那麼後續的加密認證必然沒有意義。而證書籤證機構一般都是權威機構,通過其簽發的證書確保了傳送方提供的公鑰是可信的。

上面的理論描述可能理解起來不是很直接,大家可以繼續跟著後面的分析過程,逐步滲透理解。

2.和Http區別

 Https和Http的區別,我們在這裡不做詳細描述,主要通過一張圖瞭解一下:

通過上圖我們可以直觀的發現,HTTPS是在HTTP的基礎上加了SSL安全協議層,通俗的理解HTTPS=HTTP+SSL,SSL安全協議保證了通訊過程的安全性。

主要體現在以下幾方面:

1)資訊加密安全

2)資訊完整性

3)身份認證

3.如何保證通訊安全

我們先來看下HTTP的一次資料通訊過程。TCP建立連線和斷開連線的過程,這裡就不再描述了。

                                                          圖一

存在的安全性問題:

1)圖一過程①和②都有可能被黑客擷取,使用者的資訊暴露,非常危險。

HTTPS為了解決這個問題,允許通訊雙方共同約定一種加解密方式,即對稱加密技術,僅通訊雙方知曉金鑰以確保傳輸資料的安全;可是依然存在一個問題:通行雙方如何互動這個金鑰呢?

於是又提出通過非對稱加密技術實現金鑰的互動,即服務端向客戶端提供自己的公鑰,然後客戶端通過公鑰加密祕鑰傳輸給服務端,服務端收到後使用私鑰解密,獲取金鑰,後續通訊雙方通過該對稱金鑰進行通訊。

                                                      圖二

2)圖二中的過程②,如果被黑客攔截會發生什麼?

黑客可以偽造成伺服器,將黑客自己的公鑰分發給客戶端,也就是說“伺服器”本身就是個假的,這樣的話圖二中過程③客戶端加密的金鑰就很容易被黑客獲取,顯然後續的通訊過程一直被黑客監聽,資訊完全暴露。

HTTPS為了解決這個問題提出了“數字證書”,由於數字證書是權威機構頒發的,申請者需要提交很多資料稽核,正常情況下偽造者很難申請到證書,因此也就保證了服務端提供的公鑰是安全可信的。

                                                                                                   圖三

3)圖三中的過程②頒發的證書,被黑客攔截篡改怎麼辦?

如果證書被黑客攔截了。雖然黑客拿著證書也沒啥用,但是萬一黑客搗亂把證書資訊篡改了,那麼客戶端接收後就根本不知道了,同樣存在安全隱患。

所以,CA機構在生成證書的時候就使用了“數字簽名”,保證了證書的完整性。

原理:CA機構使用Hash演算法得到證書明文資訊的“資訊摘要”,然後使用自己的私鑰對“資訊摘要”加密,生成數字簽名一同放在數字證書中;當客戶端收到伺服器傳送的證書時,可以通過證書中的Hash演算法對證書資訊簽名得到“資訊摘要”,然後使用CA機構的公鑰對原證書中的簽名資訊解密,如果解密後的“資訊摘要”和自簽名得到的一致,則說明沒問題。(CA機構一般都是權威性的,所以通常它的公鑰都是內建在客戶端系統中的)

 

4)同樣的問題,客戶端和服務端在通訊過程中,雖然黑客沒有“會話金鑰”無法獲取真實的傳輸資訊,但是黑客可以“修改資料”,比如刪除一段資訊,這樣通訊雙方拿到資料後,並不知道資料被修改了。

HTTPS為了保證資料的完整性,同樣使用了“數字簽名”,使用的是HMAC演算法進行簽名,保證了通行過程中的資訊完整性。

 

至此,HTTPS已經幫我們實現了通訊雙方之間的安全通訊。

相關文章