HTTPS工做原理

前言

咱們知道使用HTTP協議進行服務端與客戶端通訊時,信息是經過明文傳輸的。這期間信息就有可能被攔截或者篡改,爲了解決這種場景,HTTPS就出現了。算法

相對於HTTP來講,HTTPS有以下做用。瀏覽器

  • 內容加密,沒法被輕易破解;
  • 身份認證,若是信息被篡改,通訊雙方能夠馬上發現;
  • 數據完整性校驗;

接下來就學一下HTTPS的工做原理。安全

HTTPS的組成

HTTPS是目前使用最多的HTTP安全形式。在使用HTTPS時,全部的HTTP請求和響應數據在發送到網絡以前,都會進行加密。服務器

上圖展現了HTTP與HTTPS在網絡協議中的表現,能夠看到在應用層中HTTPS=HTTP + SSL/TLS網絡

什麼是SSL/TSL

SSL和TSL是一種安全協議。其中SSL是早起採用的安全協議,後來TSL是在SSL的基礎上進一步標準化了SSL協議。在上面的圖中能夠看到,SSL和TSL位於傳輸層之上,在數據到達傳輸層以前都會通過SSL/TSL協議層處理,由SSL/TSL保證數據的機密性和完整性。函數

SSL/TSL中的加密技術

SSL/TSL安全協議保證數據安全的技術基礎就是密碼學。接下來,咱們先了解一些跟HTTPS有關的密碼學知識。網站

密碼和密鑰

密碼是一種編碼方案的算法,也就是使用一種編碼方式編碼數據,而後使用相應的解碼方式解碼數據的算法。google

密鑰是編碼的參數。編碼

經過密碼+密鑰就能夠實現加密數據。加密

對稱密鑰加密

對稱加密就是編碼和解碼使用同一個密鑰的加密技術。

在對稱加密中,發送端和接收端使用相同的密鑰進行通訊。發送端使用共享的密鑰發送報文,而後將密文發送到接收端。接收端使用相同密鑰解密密文,恢復原始數據。

非對稱密鑰加密

非對稱加密也成爲公開密鑰加密技術,就是使用不一樣密鑰進行通訊的加密技術。

非對稱加密技術使用了不一樣的密鑰進行通訊,在發送端使用公鑰對報文進行加密(公鑰就是所用人均可以獲取到的密鑰),而後在接收端使用私鑰對加密的密文進行解密。常見的非對稱加密技術是RSA技術。

數字簽名

數字簽名是附加在報文上的特殊加密校驗碼。數字簽名能夠防止報文被篡改,若是有惡意攻擊在傳輸過程在篡改了報文,那麼校驗的時候校驗和就再也不匹配,所以能夠確認報文被篡改了。

數字簽名的加解密過程:

  • 發送端將報文經過算法(好比經過HASH函數)提取爲定長的摘要;
  • 發送端將摘要應用簽名算法,以私有密鑰做爲參數生成一個簽名;
  • 計算得出簽名後,將簽名附加在報文末端發送給接收方;
  • 接收端收到報文後,對簽名進行檢查。接收端經過公開密鑰解碼簽名。而後比對報文生成的摘要是否與簽名一致即可判斷報文是否被篡改。

數字證書

數字證書是由權威機構給某網站頒發的一種承認憑證。它主要包含一些認證信息,好比:對象的名稱(服務器、組織、我的等)、過時時間、證書頒發者、來自證書發佈者的數字簽名。

上面的圖片就是www.google.com的證書。

咱們能夠看到在上面講到數字簽名的時候,彷佛就能夠保證報文的安全了。爲何還須要數字證書呢?這個設想一下這個場景:好比某人A把發送到瀏覽器的公有密鑰進行了替換,同時A在給瀏覽器發送報文時使用本身的私有密鑰對報文進行數字簽名,那麼瀏覽器就不能確認報文是否來自於真實服務器。這個時候就可使用數字證書進行驗證,由於數字證書中保存了真實服務器的信息。

HTTPS的工做流程

創建安全傳輸

在TCP鏈接創建完成之後,在HTTPS協議中,客戶端和服務端會初始化SSL層,也就是安全層。

SSL握手

在發送報文以前,客戶端和服務端會進行一次SSL握手,在這個過程當中主要完成如下工做:

  • 交換協議版本號;
  • 選擇一個兩端都瞭解的密碼;
  • 對兩端的身份進行認證;
  • 生成臨時會話密鑰,以便加密信道(創建完安全通道後,傳輸報文時使用對稱加密);

在SSL會進行不少工做,處理交換一些必要的信息以外,還會對身份進行認證。

這裏的認證是經過數字證書進行的,在客戶端獲取證書後,會採用相應的算法對服務端的身份信息進行驗證:

  • 日期檢測:客戶端會檢查證書的有效期是否合法;
  • 簽名頒佈者可信度檢測:瀏覽器會附帶一個簽名頒發機構的授信列表,若是瀏覽器收到了位置的頒發機構簽發的證書,那麼它會顯示一條警告信息;
  • 簽名檢測:客戶端對簽名使用簽名頒發機構的公開密鑰,而後將其與校驗碼比較,以便驗證證書是否合法;
  • 站點身份檢測:客戶端驗證數字證書中的域名是否與服務端的域名匹配;

身份認證完成後,客戶端與服務端進行密碼協商,肯定本次鏈接採用哪一種加密算法進行通訊。

開始通訊

SSL握手完成後,就完成創建了HTTPS通道,客戶端與服務端就會根據協商的加密算法進行通訊。

整個HTTPS的工做流程能夠總結以下:

總結

相較於HTTP協議,HTTPS確保了報文的機密性以及完整性。HTTPS確保這些的依賴就是SSL/TSL協議,SSL/TSL安全協議搭配數字證書保證了報文在傳輸過程當中的絕對安全。

相關文章
相關標籤/搜索