HTTPS原理解析

HTTPS的驗證流程:

在這裏插入圖片描述

  • 客戶端向服務端發起https請求,把自身自持的一系列Cipher Suite(密鑰算法套件,簡稱Cipher)發送給服務端。
  • 服務端,收到客戶端所有的Cipher後與自身支持做對比。從中選出一種非對稱加密算法和HASH加密算法,以證書的形式返回到客戶端,證書中還包含了公鑰,頒證機構,網址失效日期等等。
  • 客戶端收到服務端的響應以後會做以下幾件事
    3.1:驗證證書的合法性:頒發證書的機構是否過期,證書中包含的網站地址是否與正在訪問的地址一致。證書通過以後會在瀏覽器上加一把小鎖。
    3.2:生產隨機密碼,如果證書通過將會用對稱加密的方法生產隨機書,然後用證書的中的公鑰對其進行加密。
    3.3:HASH握手信息:用最開始的HASH方式,把握手消息取HASH值,然後用“隨機數加密”公鑰加密一起將”握手消息+握手消息的HASH值”一同發給服務端。
    取握手消息的HASH值,主要是把握手消息做一個簽名,用於驗證握手消息在傳輸過程中沒有被篡改過“。
  • 服務端拿到客戶端傳來的密文,用自己的私鑰對其進行解密握手消息去除隨機數密碼,再用隨機數密碼解密握手消息與HASH值,並與傳過來的HASH值做對比確認是否一致(然後用隨機密碼加密一段握手消息(握手消息+握手消息的HASH值)給客戶端)
  • 客戶端用隨機數解密並計算握手消息的HSAH值,如果與服務端發來的一致。此時握手過程結束,之後所有的通信數據將由之前瀏覽器生產的隨機密碼並利用對稱加密進行。(因爲密鑰只有客戶端和服務端知道,所以即使中間請求被攔截也是沒法解決數據的,以此保護通信的安全
延伸的問題:

如果中間人自己向權威機構申請一個證書,並且把服務端發來的證書進行偷換成自己的證書,該如何?
並不能造成危害,因爲證書的簽名是由服務端網址等信息生成的,並且經過機構私鑰加密,中間人無法篡改。所以,發個服務端的證書是無法通過驗證的。

HTTPS的缺點:
  • HTTPS協議多次握手,導致頁面的加載時間延長近50%;
  • HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗;
  • 申請SLL證書需要錢,功能越強大的證書費用越高。
HTTPS和HTTP的區別:
  • HTTPS是HTTP協議的安全版本,HTTP協議的數據傳輸時明文的,時不安全的,HTTPS使用了SSL/TLS協議進行了加密處理。
  • http和https使用連接方式不同,默認端口也不一樣,http是80,https是443。
HTTPS內容的加密:

混合加密:結合非對稱加密和對稱加密技術。客戶端使用對稱加密對傳輸的數據進行加密,使用非對稱加密的公鑰對密鑰進行加密。所以網絡上傳輸的數據是被私鑰加密的密文和公鑰加密數據,因此被黑客劫持,沒有私鑰,無法取得加密明文的密鑰,便無法獲取到明文數據。
數字摘要:通過單向hash對原文進行哈希,將需加密的明文”摘要“成一串固定長度的密文,不同的明文摘要成的密文其結果總是不相同的,同樣的明文摘要必定一致,並且及時使用了摘要也很難反推明文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章