https在原有的http協議與tcp協議之間新增了一層,這一層初始使用的是ssl加密,後續逐漸使用tls。
首先需要明白https誕生的原因:解決通訊過程中的安全問題,不會被攻擊者獲取通訊中的資訊。
為了實現這一目標,我們第一想法是對通訊的內容進行加密。如對稱加密、非對稱加密等。
非對稱加密安全性較高,但是比較耗時,所以我們盡量使用對稱加密進行通訊。對稱加密通訊中的金鑰可以暫時稱為「會話金鑰」。顯然,乙個客戶端的一次隨機連線,應當對應乙個會話金鑰,即會話金鑰應當是即時產生的,並且充分隨機的。
由於保證會話金鑰的安全性,是保證以後所有通訊安全的基礎。因此,我們可以在通訊連線建立的時候,可以利用非對稱加密傳輸會話金鑰,我暫時稱為「傳輸金鑰」。
這裡又出現乙個問題,如何保證非對稱加密的安全性呢?眾所周知,非對稱加密需要公鑰和私鑰。私鑰服務端保留,公鑰傳送給客戶端。但是服務端不可能將自己的公鑰盲目的一股腦傳送給客戶端,這樣無疑也給攻擊者以可乘之機了。
為了解決這個問題,這裡引入了乙個第三方機構ca。服務端將自己的公鑰通過ca進行加密傳輸,傳送給客戶端,這樣就解決了這個問題。
以上涉及到了三對金鑰:
下面我們來看一下ca證書是如何保證整個連線的安全性的。
ca是負責發放和管理數字證書的權威機構。瀏覽器預設都是會安裝一些ca證書的,這些ca證書是被認為是安全可靠的。
引入第三方機構後的通訊流程圖如下:
服務端申請證書
服務端要向ca申請證書,來保證本服務端通訊的可靠性。服務端生成自己的公鑰、私鑰,然後將公鑰交給ca。ca利用自己的私鑰對服務端的公鑰進行簽名,生成證書,返還給服務端。
客戶端瀏覽器內建了一些ca證書,可以拿到這些ca證書的公鑰。
客戶端與服務端進行三次握手的時候,服務端會將ca證書(包含服務端的公鑰)、頒發日期、有效期等響應給客戶端。
客戶端進行ca證書的驗證。
客戶端獲取服務端公鑰。由於客戶端瀏覽器擁有ca證書的公鑰,所以可以通過解籤計算獲取到服務端的公鑰。
客戶端生成隨機金鑰,並通過公鑰加密傳送給服務端。隨機金鑰的生成使用的random既包含了客戶端的請求,也包含了服務端的響應。這樣可以保證是充分隨機的。
服務端利用私鑰解密獲取到會話金鑰
客戶端與服務端利用生成的會話金鑰進行通訊
另:ca在頒發證書的時候,會生成乙個數字證書的編號。這個編號是利用證書的一些相關資訊生成的。客戶端進行驗證的時候,會利用這個編號進行驗證。所以如果攻擊者想要偽造證書、或自己申請乙個ca證書進行攻擊都是不可行的,從而保證了安全。
HTTPS如何保證安全
同事去大廠面試,回來帶回來乙個問題,聊聊https的安全和非對稱加密。剛好自己對這塊網路協議也不是很熟悉,剛好研究一波。https如何保證安全?https這邊主要採用了對稱加密 非對稱加密 ca認證去保證安全。當我們在網路上傳輸資訊的時候,需要確保資訊的安全,不被竊聽,不被攔截,那從最簡單的方式,就...
網路安全通訊https工作原理
https其實是有兩部分組成 http ssl tls,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過tls進行加密,所以傳輸的資料都是加密後的資料 1.客戶端發起https請求 這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https 然後連線到server的44...
https通訊原理
了解https之前,先了解http 是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型。是乙個無狀態的協議 http協議通常承載於tcp協議之上,有時也承載於tls或ssl協議層之上,這個時候,就成了我們常說的https。https有兩種基本的加解密演算法型別 1 對稱加密 金鑰只有乙...