什么是https


https是基於http和SSL/TLS實現的一個協議,他可以保證在網絡上傳輸的數據都是加密的,從而保證數據安全。

接下來我們從http協議開始,提出想法並逐步進行分析,最終實現Https。

1. http協議是不安全的。

在https誕生之前,所有網站都使用http協議,而http協議在數據傳輸的過程中都是明文,所以可能存在數據泄露和篡改。

2. 使用對稱秘鑰進行數據加密

為了防止數據泄露和篡改,我們對數據進行加密,如:生成一個對稱密碼【DKUFHNAF897123F】,將對稱秘鑰分別交給瀏覽器和服務器端,他們之間傳輸的數據都使用對稱秘鑰進行加密和解密。

請求和響應流程如下:

  1. 客戶端使用對稱秘鑰對請求進行加密,並發送給服務端。
  2. 服務端接收到密文之后,使用對稱秘鑰對密文進行解密,然后處理請求。 最后再使用對稱秘鑰把要返回的內容再次加密,返回給客戶端。
  3. 客戶端接收到密文之后,使用對稱秘鑰進行解密,並獲取最終的響應內容。

如此一來,數據傳輸都是密文,解決了明文傳輸數據的問題。但是,這么干有bug。

  • 瀏覽器如何獲取對稱秘鑰?
  • 每個客戶端的對稱秘鑰相同,瀏覽器能拿到對稱秘鑰,那么黑客也可以拿到,所以,數據加密也就沒有意義了。  

3. 動態對稱秘鑰和非對稱秘鑰

為了解決對稱秘鑰動態性以及讓客戶端和服務端安全的獲取對稱秘鑰,可以引入非對稱秘鑰機制。

 

 

如此一來,解決了 動態對稱秘鑰 和 數據加密的問題,因為每個用戶的對稱秘鑰都是隨機生成且傳輸的過程中都使用公鑰加密(公鑰加密的數據只有私鑰能解密),所有黑客無法截獲對稱秘鑰。而數據傳輸是通過對稱秘鑰加密過的,所以黑客即使能獲取數據也無法去解密看到真實的內容。  看似無懈可擊,但是,這么干還是又bug。

如果黑客在上圖 【步驟2】劫持,黑客把自己的公鑰返回給客客戶端,那么客戶端會使用黑客的公鑰來加密對稱秘鑰,黑客在【步驟6】截獲請求,使用自己的私鑰獲取對稱秘鑰,后面過程全都會完蛋...

4. CA證書的應用

使用 ca 證書可以解決黑客劫持的問題。

 

 

如此一來,就解決了黑客劫持的問題,因為即使黑客劫持后的給瀏覽器即使返回了證書也無法通過校驗,同時瀏覽器也會提示錯誤信息。

注意:https是基於http和SSL/TLS實現的一個協議,其中前9個步驟稱為是SSL/TLS過程,之后的傳輸數據利用的就是http協議(收發數據)。

5. 總結

以上就是Https的實現原理,https可以保證數據安全,但由過程需要反復加密解密所有訪問速度會有所下降(魚和熊掌不能兼得)。


免責聲明!

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



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