https加密傳輸詳解

2021-08-11 14:06:16 字數 1806 閱讀 6820

https採用對稱加密與非對稱加密的混合加密方式

混合加密方式原理:

1. 服務端將非對稱加密的公鑰傳送給客戶端;

2. 客戶端拿著服務端發來的公鑰,對對稱加密的key做加密並發給服務端;

3. 服務端拿著自己的私鑰對發來的密文解密,從來獲取到對稱加密的key;

4. 二者利用對稱加密的key對需要傳輸的訊息做加解密傳輸。

上述混合的加密方式還是存在安全問題,那就是無法證明公開金鑰本身就是貨真架勢的公開金鑰。比如,正準備和某台伺服器建立混合加密的通訊時,如何確保發來的公開秘鑰就是那個伺服器發來的?很有可能就是不法分子發來的。

為了解決上述的問題,可以使用數字認證機構頒發的公開金鑰證書。

首先,伺服器這邊生成一對公私鑰,公司人員拿著公開金鑰去數字認證機構提出申請。數字認證機構在調查判斷公司合法身份後,對這個公開金鑰做數字簽名,並將這個公開金鑰繫結在公鑰證書中,將這個公鑰證書發給伺服器。

客戶端找服務端通訊時,伺服器會先將這個公鑰證書傳送給客戶端,接到公鑰證書的客戶端使用數字證書認證機構的公開金鑰,對這個證書進行驗證,一旦驗證通過,客戶端可明確兩件事:一、認證伺服器的公開金鑰證書是真實有效的數字證書機構認證的。二、伺服器的公開金鑰是值得信賴的。

需要說的一點,此處認證機構的公開金鑰必須安全地轉交給客戶端。使用通訊方式時,如何安全轉交是一件很困難的事,因此,多數瀏覽器開發商發布版本時,會事先在內部植入常用認證機構的公開金鑰。

步驟 1: 客戶端通過傳送 client hello 報文開始 ssl 通訊。報文中包含客戶端支援的 ssl 的指定版本、加密元件(cipher suite)列表(所使用的加密演算法及金鑰長度等)。

步驟 2: 伺服器可進行 ssl 通訊時,會以 server hello 報文作為應答。和客戶端一樣,在報文中包含 ssl 版本以及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件內篩選出來的。

步驟 3: 之後伺服器傳送 certificate 報文。報文中包含公開金鑰證書。

步驟 4: 最後伺服器傳送 server hello done 報文通知客戶端,最初階段的ssl握手協商部分結束。

步驟 5: ssl 第一次握手結束之後,客戶端以 client key exchange 報文作為回應。報文中包含通訊加密中使用的一種被稱為 pre-master secret 的隨機密碼串。該報文已用步驟 3 中的公開金鑰進行加密。

步驟 6: 接著客戶端繼續傳送 change cipher spec 報文。該報文會提示伺服器,在此報文之後的通訊會採用 pre-master secret 金鑰加密。

步驟 7: 客戶端傳送 finished 報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正確解密該報文作為判定標準。

步驟 8: 伺服器同樣傳送 change cipher spec 報文。

步驟 9: 伺服器同樣傳送 finished 報文。

步驟 10: 伺服器和客戶端的 finished 報文交換完畢之後,ssl 連線就算建立完成。當然,通訊會受到 ssl 的保護。從此處開始進行應用層協議的通訊,即傳送 http請求。

步驟 11: 應用層協議通訊,即傳送 http 響應。

步驟 12: 最後由客戶端斷開連線。斷開連線時,傳送 close_notify 報文。上圖做了一些省略,這步之後再傳送 tcp fin 報文來關閉與 tcp 的通訊。在以上流程中,應用層傳送資料時會附加一種叫做 mac(message authenticationcode)的報文摘要。mac 能夠查知報文是否遭到篡改,從而保護報文的完整性。

參考文件:

https進行加密傳輸

ssl握手協議的過程 握手階段分成以下五步 第一步,客戶端給出協議版本號 乙個客戶端生成的隨機數 client random 以及客戶端支援的加密方法。第二步,伺服器確認雙方使用的加密方法,並給出數字證書 以及乙個伺服器生成的隨機數 server random 第三步,客戶端確認數字證書有效,然後生...

HTTPS加密傳輸過程

https全稱hyper text transfer protocol over securesocket layer,是以安全為目標的http通道,在http的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。https在http的基礎下加入ssl層,https的安全基礎是ssl,因此加密的詳細...

淺顯易懂Https加密傳輸原理

https是一種加密傳輸協議,基於非對稱加密演算法和對稱加密演算法的協作使用。伺服器每次傳送真實資料前,會先生成一把金鑰傳輸給客戶端,伺服器給客戶端傳送的真實資料會實現用這把金鑰進行加密,客戶端收到加密資料後再用金鑰進行解密。客戶端給伺服器傳送資料同理 圖一.https對稱加密 2.單一使用對稱加密...