HTTPS 圖文解析

開篇

在前端面試博弈過程當中常常會被問到https、ssl相關內容,咱們對比總結一下。html

在http協議中可能存在信息竊聽或者身份假裝的安全問題,使用https能夠通訊機制能夠有效的防止這些問題。前端

https = http + ssl

背景

http 和 https的區別

http的缺點面試

  • 使用明文通訊,內容可能會被竊聽,而且隨意篡改
  • 不驗證通訊雙方身份,有可能遭遇假裝
  • 沒法證實報文的完整性,內容可能遭到篡改
HTTP + 加密 + 認證 + 完整性保護 = HTTPS

HTTPS 是身披SSL外殼的HTTP安全

https有如下特性服務器

  • TLS/SSL 內容加密
  • 數字證書(CA) 驗明身份,防止中間人攻擊
  • MD五、SHA-1 等散列值方法防止信息篡改

加密方式

對稱加密

數據加解密使用同一份密鑰,加解密速度快,效率高,缺點是密鑰的管理難度大,一旦密鑰傳輸泄露,那就沒啥用處了。session

因此解決辦法就是下面的併發

非對稱加密

使用一對非對稱密鑰。一把叫私有密鑰,另外一把叫公有密鑰,私有密鑰存儲於服務器,公有密鑰隨意發送。也就是說,發送密文方使用對方的公有密鑰進行加密,對方接受到信息後,使用私有密鑰進行解密。再不使用私有密鑰狀況下很難還原信息。 dom

混合加密

HTTPS採用對稱加密和公開密鑰加密二者混合加密,二者都有各自的優勢。對稱加密處理速度快,但密鑰沒法安全發送給對方;非對稱加密處理速度慢,但密鑰可以安全交換。 但若是咱們將兩種加密方式一塊兒使用,則兩種加密方式就能互補。也就是說,利用非對稱加密方式安全地交換在共享密鑰加密中要使用的密鑰,在確保密鑰安全前提下,使用對稱加密方式進行通訊加密

SSL證書

數字證書的一種,遵循SSL協議,由受信任的數字證書頒發機構CA,在驗證服務器身份後頒發,具備服務器身份驗證和數據傳輸加密功能,我經常使用的是 DigiCert 免費版,有效期只有一年。長期的證書仍是很貴的。spa

正文內容

SSL 握手過程

開始加密通訊以前,客戶端和服務器首先必須創建鏈接和交換參數,這個過程叫作握手(handshake)。如圖:

  • 第一步,愛麗絲給出協議版本號、一個客戶端生成的隨機數(Client random),以及客戶端支持的加密方法。
  • 第二步,鮑勃確認雙方使用的加密方法,並給出數字證書、以及一個服務器生成的隨機數(Server random)
  • 第三步,愛麗絲確認數字證書有效,而後生成一個新的隨機數(Premaster secret),並使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。
  • 第四步,鮑勃使用本身的私鑰,獲取愛麗絲髮來的隨機數(即Premaster secret)。
  • 第五步,愛麗絲和鮑勃根據約定的加密方法,使用前面的三個隨機數,生成"對話密鑰"(session key),用來加密接下來的整個對話過程。

白話版本

一、客戶端生成一個隨機數,帶着客戶端所支持的加密方法List,傳遞給服務器端,本身的隨機數先存着。

二、服務器接收到這個隨機數,先存着,生成一個新的隨機數,並從客戶端傳過來的加密方法List中選擇一個最合適的加密方法,還有本身的數字證書(公鑰),三個一併發送給客服端。

三、客戶端確認數字證書有效,拿到隨機數先存着,再生成一個新的隨機數,而後用公鑰加密這個隨機數,生成一個 預主祕鑰(Premaster secret),將預主祕鑰發送給服務器端。 當前步驟中的預主祕鑰是本次加密的關鍵,前2個隨機數都是明文傳送,當前這個使用公鑰加密,因此不容易拿到,即便拿到也沒有關係,由於只有服務器上的祕鑰才能解析,才知道第三個隨機數是什麼。

四、服務器接收到預主祕鑰以後,用私鑰解密獲得隨機數。到此,客服端和服務器端都知道了三個 隨機數。 用這個三個隨機數生成 對話祕鑰(session key),用來加密接下來的全部對話過程。

來張圖就是這個樣子:

總結:HTTPS 使用的混合加密的方式來進行加密處理的。最重要的加密是第三個隨機數的傳輸,以此來保證本次傳輸的安全性。

參考資料: http://www.ruanyifeng.com/blo...

相關文章
相關標籤/搜索