15 mins to know TLS

前言

咱們經常使用的加密方式有對稱加密和非對稱加密。這二者的優缺點以下。html

對稱加密

介紹:生成一個密鑰、客戶端和服務端都用這個密鑰解密
優勢:簡單,加密效率高
缺點:沒有一個可靠的密鑰傳輸通道(客戶端和服務端都得知道這個密鑰,意味着這個密鑰須要傳輸)算法

非對稱加密

介紹:生成一個公鑰和一個私鑰,二者配套,公鑰加密只能私鑰解密,私鑰加密只能公鑰解密。
在實際使用的時候,A把本身的公鑰發給B -> B使用A公鑰加密數據後發給A -> A使用本身的私鑰解密,如圖。
非對稱加密.PNG
優勢:比較安全,私鑰是服務端私有的,因此經過公鑰加密的數據只有服務端能解開,在傳輸上,因爲只傳輸公鑰,非對稱加密不會有對稱加密的傳輸問題。
缺點:加密速度慢,沒法支持大量數據加密。沒法避免中間人攻擊瀏覽器

什麼是TLS

TLSTransport Layer Security的縮寫,也叫傳輸層安全協議,定義了傳輸層數據的加密封裝格式,所以,在OSI模型中,它屬於傳輸層上方的會話層。咱們也能夠從另外一個方面解釋,會話層是管理會話的,在證書校驗不經過的時候,會話會被踢出,因此處於會話層。
TLS的前身是網景公司的SSL,SSL3.0以後就是TLS 1.0,能夠認爲TLS和SSL是同一個東西,只是版本不同。
瞭解完這些再瞭解一下TLS相關的一系列名詞,基本就瞭解了TLS,分別以下:安全

CA

Certificate Authority的簡寫,證書頒發機構,負責發放和管理證書,做爲交易中的受信任的第三方機構。
CA簽發證書時候,須要對申請者的信息進行多方面確認,在確認申請者可信的狀況下再頒發證書,CA簽發證書的流程如圖。
CA頒發證書.PNG加密

根證書

CA本身的證書,這個證書由CA本身簽發,主要包括如下內容:spa

  1. CA的名字
  2. CA的公鑰
  3. CA使用本身的_私鑰_對根證書自簽名
中間證書

經過CA根證書或其餘中間證書籤發的證書,主要包括如下內容:設計

  1. 中間證書全部者的名字
  2. 中間證書全部者的公鑰
  3. 中間證書頒發者的名字
  4. 頒發者的簽名
信任鏈

含義:A證書爲了證實本身可信,須要找到頒發者的證書,取其中的頒發者公鑰解開本身證書上的簽名,若是可以解開則證實A證書的公鑰可信,與此同時,若是頒發者的證書不是CA根證書,還須要一級一級往上校驗,直到CA根證書爲止。這造成了一個鏈條狀的信任關係,又叫信任鏈,這些中間證書和CA根證書,會最終bundle在一個證書文件中,信任鏈創建如圖。
信任鏈.PNG
可能你們有個疑問,驗證證書的過程當中,爲了驗證D可信,原理上只須要使用證書C驗證便可,不須要一直往上驗證到根證書,但信任鏈這個東西就是這麼設計的,具體爲何,有想法的朋友歡迎交流。code

信任證書

客戶端要與服務端創建會話,須要先信任服務端證書。這個信任動做,就是咱們平時瀏覽器彈出的信任此證書安裝此證書之類彈窗。通常來講,瀏覽器會經過預置證書到瀏覽器中來保障安全性,這個在安裝瀏覽器的時候就打包在安裝包裏。可是仍是避免不了有時候須要手動去安裝證書的狀況,這就有了必定中間人攻擊的不安全性。htm

TLS的會話創建

TLS創建會話主要分爲如下幾個步驟:blog

  1. 客戶端發第一個隨機數、使用的加密算法ClientHello等給服務端。
  2. 服務端返回第二個隨機數、本身的證書SeverHello是否驗證客戶端證書等給客戶端。
  3. 客戶端對服務端證書校驗後,使用其服務端證書中的公鑰加密第三個隨機數發送給服務端。若是服務端須要校驗客戶端證書,客戶端須要把本身的客戶端證書發過去。
  4. 至此,服務端和客戶端都創建了得到了3個隨機數和加密算法,生成對稱加密密鑰以後使用對稱加密密鑰通信

如圖:
TLS創建會話.PNG

爲何須要TLS

TLS最大的做用是解決中間人攻擊,安全性更高。同時,TLS還解決了對稱加密沒有可靠傳輸信道的問題。

然而在現實生活中,若是用戶信任了一些未知來源的證書,那麼仍是會有受中間人攻擊的可能性,好比這樣做死

參考文獻

https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/
https://www.jianshu.com/p/fcd0572c4765
https://www.jianshu.com/p/6bf2f9a37feb

相關文章
相關標籤/搜索