Https加密流程以及原理(通俗易通並附圖)

1.定義

  • HTTP over SSL 的簡稱,即工做在 SSL(安全套接字層) 或TLS(SSL的升級版)上的 HTTP。說白了就是加密通訊的HTTP。算法

  • 必定注意HTTPS不是協議安全

2.工做原理

  • 在客戶端和服務器之間協商出一套對稱密鑰,每次發送信息以前將內容加密,收到以後解密,達到內容的加密傳輸。

加密解密數據用的對稱加密,傳輸Pre master sercert和證書驗證使用的非對稱加密。服務器

  • 爲何不直接使用非對稱加密?

非對稱加密因爲使用了複雜的數學原理,所以計算至關複雜,若是徹底使用非對稱加密來加密通訊內容,會嚴重影響網絡通訊的性能。網絡

3.Https創建過程

Step 1. Client Hello C端通知S端創建鏈接 同時會帶上客戶端支持的:

1. 對稱加密算法
2. 非對稱加密算法
3. Hash算法
4. SSL或者TLS版本號
5. 一個隨機數
複製代碼

Step 2.Server Hello S端通知C端創建鏈接 並帶上Server端選擇的:

1. 對稱加密算法
2. 非對稱加密算法
3. Hash算法
4. SSL或者TLS版本號
5. 一個隨機數
複製代碼

那麼此時客戶端和服務端就擁有了相同的性能

1. 對稱加密算法
2. 非對稱加密算法
3. Hash算法
4. SSL或者TLS版本號
5. 兩個隨機數
複製代碼

Step 3.S端發給客戶端被第三方機構信任的一個證書公鑰,客戶端收到證書公鑰後對證書進行驗證。

看圖:加密

如圖發來的信息主體是證書的公鑰,可是它同時會附加上證書的簽名和HOST主機名稱。

1. 首先咱們經過發來證書的根證書在本地找尋相同的根證書(本地根證書通常是操做系統自身已經帶着的)。
2. 取出根證書的公鑰對證書的簽名(用證書私鑰對發來公鑰進行加密的一個Hash值)作認證(公鑰解密)。
3. 比對驗證後的數據(Hash)和發來證書公鑰的Hash值是否相同,若是相同則認證經過,說明是一個受信任的證書。
複製代碼

Step 4.生成Pre Master-sercert(一個隨機數),並用發來的證書公鑰加密傳給Server端。

Step 5.C端和S端用Pre Master-sercert 和1,2部的兩個隨機數生成Master-sercert。

Step 6.C端和S端用相同的Master-sercert和相同的對稱加密算法生成祕鑰和sercert key(用於作Hash摘要),這時由於生成對稱加密密鑰的條件兩方相同,因此最後生成的祕鑰雖然沒有經過傳輸,兩方也是相同的(避免了對稱加密過程當中的祕鑰泄露問題)。

Step 7.開始加密數據 C端加密數據發給S端同時會帶上用sercert key爲介質作的Hash值(爲了防止數據被篡改)。

Step 8.S端解密數據後用sercert key對數據作Hash並同發送來的Hash做對比,若是相同則經過驗證。

4.HTTPS 鏈接創建的過程 簡要

1. Client Hello 
2. Server Hello 
3. 服務器證書 信任創建
4. Pre-master Secret 
5. 客戶端通知:將使用加密通訊 
6. 客戶端發送:Finished 
7. 服務器通知:將使用加密通訊 
8. 服務器發送:Finished
複製代碼

5.抓包軟件能夠抓到加密信息的原理Fiddler爲何能夠抓取到信息?

由於它要求你手動信任了它的根證書。此時它就能夠篡改證書爲它本身的證書了,HOST NAME直接篡改成目標服務器不變,證書公鑰是它自身的假機構簽發的而你本地又信任了它的根證書,那麼此時證書的驗證是能夠經過的,後續的Pre Master-Sercert它也能夠獲取到了,那麼最後它是持有密鑰的。Fiddler至關於當了中間人,客戶端服務端兩頭騙,因此咱們平時不要信任未知的證書。spa

可參考:blog.csdn.net/hbdatouerzi…操作系統

相關文章
相關標籤/搜索