HTTPS原理以及握手階段

拜讀了阮一峯大神關於HTTPS的文章,恍然大悟了不少以前看的似懂非懂的HTTPS知識。特此整理下來,讓本身可以完全消化,同時也但願能幫助到你們。html

HTTPS原理:

  1. 對稱加密

消息使用同一個密鑰進行加密和解密。算法

  • 優勢:很快,方便
  • 缺點: A給B發送密鑰時容易被截取

  1. 非對稱加密

A向B發送消息 使用B的公鑰進行加密 B收到密文後使用本身的私鑰進行解密 反之亦然安全

  • 優勢:安全
  • 缺點:慢

3. 非對稱加密+對稱加密

A先生成一個對話密鑰,而後把對話密鑰發送給B。可是這個對話密鑰要通過B的公鑰進行加密,B收到後用本身的私鑰進行解密。這樣就解決了對稱加密時公鑰容易被截取的缺陷。服務器

  • 優勢:快,安全
  • 缺點:中間人攻擊
  1. 中間人攻擊

2,3兩種方法在加密時都使用B的公鑰進行加密。可是B的公鑰哪來的呢?加密

是鏈接一開始B把本身的公鑰發送給A。可是在這個時候,有個中間人截取了B的公鑰,而後把本身的公鑰發送給A。A在給B發送消息時,想用B的公鑰進行加密。但實際上用的是中間人的公鑰。中間人截取了A給B發送的消息,而後用本身的私鑰解密。就能夠隨意讀取消息的內容。
此外,由於中間人能夠把本身的公鑰發給A,讓B誤覺得中間人就是A3d

  1. 數字證書

數字證書包括 公鑰和數字簽名 公鑰經過hash算法能夠獲得數據摘要,數據摘要使用CA的私鑰加密獲得數字簽名。cdn

檢驗時 把數字證書中的公鑰經過hash算法獲得的消息摘要以及數字前面經過CA公鑰解密獲得的消息摘要進行對比。

HTTPS握手的五個階段:

  1. 客戶端向服務器發送支持的SSL/TSL的協議版本號,以及客戶端支持的加密方法,和一個客戶端生成的隨機數
  2. 服務器確認協議版本和加密方法,向客戶端發送一個由服務器生成的隨機數,以及數字證書
  3. 客戶端驗證證書是否有效,有效則從證書中取出公鑰,生成一個隨機數,而後用公鑰加密這個隨機數,發給服務器
  4. 服務器用私鑰解密,獲取發來的隨機數
  5. 客戶端和服務器根據約定好的加密方法,使用前面生成的三個隨機數,生成對話密鑰,用來加密接下來的整個對話過程

小結:

HTTPS是安全版的HTTP,是以安全爲目標的HTTP通道。在HTTP的基礎下加入了SLSL/TSL層,這也HTTPS的安全基礎。現被普遍應用於互聯網上的敏感通信,如交易支付的過程。HTTPS創建鏈接的階段也就是非對稱加密+對稱加密+數字證書協同做用的過程。服務器和客戶端各產生一個隨機數,互相傳給對方。而後再生成第三個隨機數,經過服務器公鑰加密傳給服務器,服務器用私鑰解密得到第三個隨機數。這樣雙方都有了三個隨機數。因而用這三個隨機數來生成對話密鑰,來加密以後的通訊過程。htm

參考資料: 阮一峯 圖解SSL/TLS協議blog

相關文章
相關標籤/搜索