HTTPS加密傳輸過程


HTTPS加密傳輸過程

HTTPS全稱Hyper Text Transfer Protocol over SecureSocket Layer,是以安全為目標的HTTP通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。HTTPSHTTP的基礎下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL

知識儲備

HTTP

HTTP是應用層協議,默認運行在80端口,是一種不安全的傳輸協議,經其傳輸的數據都是未加密的明文數據,可以被中間人攻擊,獲取到你的網絡傳輸數據,這也就是盡量不要使用公共場所WIFI的原因。

HTTPS

HTTPS是應用層協議,默認運行在443端口,是一種安全的傳輸協議,通過在HTTP層與運輸層的TCP直接加入一個加密/身份驗證層來保證安全傳輸。

SSL

SSL安全套接層Secure Sockets Layer,位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:
SSL記錄協議SSL Record Protocol:它建立在可靠的傳輸協議如TCP之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。
SSL握手協議SSL Handshake Protocol:它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

TLS

TLS傳輸層安全性協議Transport Layer Security用於在兩個通信應用程序之間提供保密性和數據完整性,其由TLS記錄協議和TLS握手協議組成。TLS1.0即為SSL3.0的標准化版本,SSL最初由網景Netscape提出研發,在SSL3.0時由國際互聯網工程任務組IETF進行了標准化並添加了少量機制,並更名為TLS1.0

對稱加密

簡單來說對稱加密的加密密鑰和解密密鑰是相同的,對稱加密的效率要比非對稱加密高。

非對稱加密

簡單來說非對稱加密的加密密鑰與解密密鑰是不同的,需要一把公鑰與一把私鑰,私鑰不能被其他任何人知道,公鑰則可以隨意公開。公鑰加密,私鑰解密;私鑰數字簽名,公鑰驗證。

CA

由於公鑰是放在服務器的,在建立連接的過程中將公鑰傳輸到用戶,但是如何避免中間人攻擊,即在傳輸公鑰的過程中避免劫持,於是引入第三方認證權威機構CA,大多數操作系統的CA證書是默認安裝的,CA也擁有一個公鑰和私鑰。任何人都可以得到CA的證書,其包含公鑰,用以驗證它所簽發的證書。CA為服務申請者頒發證書,在CA判明申請者的身份后,便為他分配一個公鑰,並且CA將該公鑰與申請者的身份信息綁在一起,並為之簽字后,便形成證書發給申請者。如果一個用戶想鑒別一個證書的真偽,他就用CA的公鑰對那個證書上的簽字進行驗證,一旦驗證通過,該證書就被認為是有效的。證書實際是由證書簽證機關CA簽發的對用戶的公鑰的認證。

傳輸過程

  1. 首先TCP三次握手建立鏈接,這是數據傳輸基礎,在此之上開始SSL
  2. 客戶端首先發送Client Hello開始SSL通信,報文中包含客戶端支持的SSL版本、隨機值Random1、加密算法以及密鑰長度等。
  3. 服務器發送Server Hello,和客戶端一樣,在報文中包含SSL版本、隨機值Random2以及加密組件,此后服務端將證書也發送到客戶端。
  4. 此時客戶端需要對服務端發送的證書進行驗證,通過操作系統內置的CA證書,將服務器發送的證書的數字簽名進行解密,並將證書的公鑰進行相同算法的HASH與解密的數字簽名解密的內容進行對比,驗證證書是否合法有效,是否被劫持更換。
  5. 客戶端驗證證書合法,然后生成一個隨機值Random3,用公鑰對Random3進行加密,生成Pre-Master Key,客戶端以Client Key Exchange報文將Pre-Master Key發送到服務端,此后發送Change Cipher Spec報文表示此后數據傳輸進行加密傳輸。
  6. 服務端將Pre-Master Key用自己的私鑰解密為Random3,服務端發送Change Cipher Spec報文表示此后數據傳輸進行加密傳輸。
  7. 此時客戶端與服務端都擁有三個隨機字符串,且Random3是密文傳輸的,是安全狀態的,此時則可以使用這三個字符串進行對稱加密傳輸。由於非對稱加密慢,不能每次傳輸數據都進行非對稱加密,所以使用非對稱加密將密鑰協商好然后使用對稱加密進行數據傳輸。
  8. 此時便正常進行HTTP數據傳輸,但是由於SSL加密的作用,此時的HTTP傳輸便是安全的,此為HTTPS的傳輸過程,其中2356也被稱為SSL四次握手。

每日一題

https://github.com/WindrunnerMax/EveryDay

參考

https://www.cnblogs.com/yangtianle/p/11202574.html
https://www.cnblogs.com/liyulong1982/p/6106132.html
https://blog.csdn.net/lyztyycode/article/details/81259284
https://blog.csdn.net/lihuang319/article/details/79970774
https://blog.csdn.net/qq_32998153/article/details/80022489


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM