web基礎系列(五)---https是如何實現安全通訊的

https是如何實現安全通訊的

若是有不正確的地方,還望指出!html

web基礎系列目錄

回顧

總結幾個概念(具體描述能夠看上一篇文章)

數字簽名和數字證書的應用

  • 場景是這樣的:rose給jiajun寫情書
  • 剛開始用非對稱加密的方式,rose用jiajun的公鑰對情書進行加密,那麼這樣的話,若是Billy截獲到情書,也沒法對情書進行解密,由於只有jiajun有私鑰,除非私鑰泄露了
  • jiajun收到,要回信給rose,這個時候jiajun要證實這封信是他本身寫的,並且中途沒有被別人修改
  • 這個時候,jiajun將信進行摘要,而後對摘要用私鑰進行加密,這就是一個數字簽名,而後我將數字簽名和信一塊兒發送給rose
  • rose接到後,用公鑰對數字簽名進行解密,獲得的是一個摘要(這個時候不知道有沒有被人修改過),而後對信進行摘要,這樣的話,對兩個摘要進行比較,若是不一樣那麼說明這封信被修改過。
  • 後來,Billy想冒充jiajun(讓rose和jiajun分手),他把jiajun的公鑰換成他本身的公鑰,而後按照上面的同樣的操做發送給rose。這樣Billy就能夠得手
  • 再後來,爲了避免讓Billy得逞,jiajun想出一個方法,要解決這個問題就是要向rose肯定這個公鑰是不是jiajun的,因此jiajun去找證書中心(CA),爲公鑰作認證,證書中心用本身的私鑰對公鑰和一些相關中心進行加密,這樣產生的就是數字證書
  • 那麼之後,jiajun發送消息給rose的時候,就將數字簽名和數字證書發送個rose,這樣rose經過數字證書就能夠獲得真實的公鑰,就能夠經過數字簽名判斷是否更改過

https的安全通訊

SSL/TLS

  • SSL(Secure Sockets Layer安全套接層),是一種網絡安全協議
  • TLS(Transport Layer Security傳輸層安全協議),是基於SSL協議的通用化協議,正逐步替代SSL。
  • SSL/TLS分爲兩層,一層是記錄協議(創建在可靠的傳輸協議上(好比tcp),提供數據封裝,加密解密,數據建議等基本功能),一層是握手協議(創建在記錄協議上,在實際的數據傳輸開始前,進行加密算法的協商,通訊密鑰的交換等)。

什麼是https

  • 全稱是hypertext protocol over secure socket layer,也就是基於ssl的http協議,http的安全版,能夠理解爲https=http+ssl
  • https支持單向認證(只驗證服務端證書的有效性),也支持雙向驗證(既驗證服務端證書的有效性也驗證客戶端證書的有效性)
  • https協議在http協議與tcp協議之間增長一層安全層,數據在網絡傳輸以前,會先進行加密,再進行傳輸

爲何用https

  • 有時候,咱們訪問一個國外的http站點,發現下面會有國內的一些小廣告,事實上是中間人(一些網絡節點,好比wifi熱點,路由器,防火牆等)劫持,在html注入了一段廣告的html。而只是注入廣告的話還只是小問題,若是有一些有一些重要的信息被抓取的話,那麼問題就挺嚴重的
  • 打個比喻,http是三輪車,沒有封閉,裏面裝的什麼東西能夠被看到,https是封閉的汽車,看不到裏面裝了什麼

https功能

  • 內容加密,用對稱密鑰進行加密
  • 身份認證,數字證書驗證身份

https協商過程

  • 瀏覽器向服務器發出請求
  • 服務器響應瀏覽器,將證書發送給瀏覽器,瀏覽器確認證書有效
  • 瀏覽器和服務器經過非對稱密鑰算法協商好對話密鑰(用於對稱加密)
  • 後面雙方都使用對話密鑰作對稱加解密就能完成整個通訊
  • 總的來講,通訊內容用對稱加密算法機密,而對稱加密的加密密鑰經過非對稱加密協商

握手過程(以RSA密鑰協商爲例,不一樣的算法實現不同)

  • 客戶端發送消息,消息包含協議的版本信息,客戶端支持的加密算法,客戶端產生的隨機數
  • 服務端響應消息,消息包括服務端產生的隨機數,協議版本信息,服務端數字證書,從客戶端提供的加密算法確認使用的加密算法
  • 客戶端根據證書管理器,驗證服務端證書(驗證有效期,證書中的域名和瀏覽器中域名是否匹配等)的有效性
  • 驗證經過後,從證書獲取公鑰,生成隨機數,此時經過這3個隨機數通過必定的算法生成一個對話密鑰,而後發送隨機數(用證書的公鑰進行加密),
  • 服務器端用私鑰解密第三個隨機數,而後經過3個隨機數計算生成對話密鑰
  • 握手階段結束,客戶端和服務端進入加密通訊,用對話密鑰加密內容

https的性能問題

  • 對比http,咱們多了一個ssl握手的過程,而這個過程,有對稱加密和非對稱加密的過程,那麼天然會消耗cpu資源了

用故事總結本文內容

  • 場景同樣,一樣是rose給jiajun寫情書
  • rose和jiajun協商好用對稱加密的方式給情書加密,但是如今有一個問題對稱密鑰怎麼解決,沒法安全地生成和保管對稱密鑰
  • 因而jiajun想了辦法,jiajun生成一對公鑰和私鑰,公鑰是公開的,因而rose生成一個用於對稱加密的對話密鑰,而後用公鑰加密這個對話密鑰,那麼這樣的話,即便中間lBilly截獲了這部份內容,由於對話密鑰很安全,因此沒法獲取內容
  • Billy很聰明,想到一個方法,假裝成jiajun,把他的公鑰給rose,此時非對稱協商密鑰協商的對象是Billy
  • jiajun也不笨,很快他發現問題,要解決這個問題根本上就是要向rose證實這個公鑰是誰的。因而jiajun找到了認證中心CA,生成一份數字證書

我以爲分享是一種精神,分享是個人樂趣所在,不是說我以爲我講得必定是對的,我講得可能不少是不對的,可是我但願我講的東西是我人生的體驗和思考,是給不少人反思,也許給你一秒鐘、半秒鐘,哪怕說一句話有點道理,引起本身心裏的感觸,這就是我最大的價值。(這是我喜歡的一句話,也是我寫博客的初衷)

做者:jiajun 出處: http://www.cnblogs.com/-new/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。若是以爲還有幫助的話,能夠點一下右下角的【推薦】,但願可以持續的爲你們帶來好的技術文章!想跟我一塊兒進步麼?那就【關注】我吧。web

相關文章
相關標籤/搜索