HTTPS 協議

admin發表於2019-05-07

關於HTTPS協議的優點和版本發展可以參閱以下兩篇文章:

(1).HTTPS 優點和缺點一章節。

(2).SSL和TLS區別一章節。

HTTP協議沒有加密機制,但可以通過和SSL(Secure Socket Layer,安全套接層)或TLS(Transport Layer Security,安全層傳輸協議)的組合使用,以此加密 HTTP 的通訊內容,屬於通訊加密,即在整個通訊線路中加密。

[HTML] 純文字檢視 複製程式碼
HTTP+ 加密 + 認證 + 完整性保護 =HTTPS(HTTP Secure )

SSL/TSL:

(1).SSL(Secure Sockets Layer 安全套接層)。

(2).TLS:(Transport Layer Security,傳輸層安全協議)。

圖示如下:

aid[3248]

HTTPS 採用共享金鑰加密(對稱)和公開金鑰加密(非對稱)兩者並用的混合加密機制。

若金鑰能夠實現安全交換,那麼有可能會考慮僅使用公開金鑰加密 來通訊。

但是公開金鑰加密與共享金鑰加密相比,其處理速度要慢。

所以應充分利用兩者各自的優勢,將多種方法組合起來用於通訊。 

在交換金鑰環節使用公開金鑰加密方式,之後的建立通訊交換報文階段 則使用共享金鑰加密方式。

圖示如下:

aid[3249]

HTTPS握手過程的簡單描述如下:

aid[3250]

1.瀏覽器將自己支援的一套加密規則傳送給網站:

[HTML] 純文字檢視 複製程式碼
伺服器獲得瀏覽器公鑰

2.網站從中選出一組加密演算法與HASH演算法,並將自己的身份資訊以證書的形式發回給瀏覽器。

證書裡面包含了網站地址,加密公鑰,以及證書的頒發機構等資訊。

[HTML] 純文字檢視 複製程式碼
瀏覽器獲得伺服器公鑰

3.獲得網站證書之後瀏覽器要做以下工作:

(1).驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄裡面會顯示一個小鎖頭,否則會給出證書不受信的提示。

(2).如果證書受信任,或者是使用者接受了不受信的證書,瀏覽器會生成一串隨機數的密碼(接下來通訊的金鑰),並用證書中提供的公鑰加密(共享金鑰加密)。

(3).使用約定好的HASH計算握手訊息,並使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊傳送給網站。

[HTML] 純文字檢視 複製程式碼
瀏覽器驗證->隨機密碼,並用伺服器的公鑰加密->生成HASH握手,用密碼加密

4.網站接收瀏覽器發來的資料之後要做以下的操作:

(1).使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,並驗證HASH是否與瀏覽器發來的一致。

(2).使用密碼加密一段握手訊息,傳送給瀏覽器。

[HTML] 純文字檢視 複製程式碼執行程式碼
伺服器用自己的金鑰解出隨機密碼->用密碼解密握手訊息(共享金鑰通訊)->驗證HASH與瀏覽器是否一致(驗證瀏覽器)

5.瀏覽器解密並計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密。

相關文章