Security ❀ HTTPS的認證流程

HTTPS的認證流程

HTTPS協議根據其認證次數可以分爲單向認證和雙向認證;

(1)單向認證

  • 客戶端向服務器發起請求,其中包含各種SSL參數,並從服務器端拿到證書;
  • 客戶端將從服務器端獲得的證書提交至CA, CA驗證該證書的合法性並告知客戶端,客戶端根據 CA驗證結果來確認目標站點的真實性;
  • 從服務器端的證書中取出公鑰, 利用公鑰對客戶端產生的密鑰加密(對稱密鑰),利用公鑰將加密後的密鑰發送到服務器端;
  • 服務器端用其私鑰解密出數據,即得到客戶端發送來的對稱密鑰, 之後均利用這個對稱密鑰對傳輸文件進行加密、解密;

單向認證的特點在於只有客戶端對服務器端進行了身份驗證 ,而服務器只是對提交過來的加密密鑰進行識別並處理 ,而不對客戶端的合法性進行驗證,這就造成了遭受SSL剝離攻擊的隱患;
SSL剝離攻擊是針對HTTPS單向認證環境的攻擊手段。例如,SSL Strip工具的原理就是劫持用戶的請求,並模擬用戶來與目標站點建立HTTPS連接。成功連接後利用已立連接的對稱密鑰解密服務器發送過來的HTTPS,將其中的HTTP再發送給客戶端SSL剝離攻擊的流程如下圖所示 這也是由於單向認證巾服務器並不對客戶端的有效性進行檢查而造成的。

SSL剝離攻擊常用於WiFi劫持、ISP層面的流量劫持等環境,如果在日常站點訪問中,經常訪問的站點突然由HTTPS 協議變成了HTTP協議,那麼就需格外小心類劫持行爲對用戶的數據會產生較大的危害,同時也會危害到網站的利益。因爲用戶權益一旦受到損失,用戶會降低對網站的信任度,導致網站最終受到損失。因此,在大型站點的高價值業務或者兩個站點互聯互通時均會利用HTTPS雙向驗證技術來解決上述安全隱患;

(2)雙向認證
相對於單向認證整體流程,HTTPS雙向認證主要是在客戶端與服務器端的認證部分發生了改變,HTTPS雙向認證流程如下所示:

  • 客戶端向服務器發起請求,其中包含各種SSL參數,並從服務器端拿到證書;
  • 客戶端將從服務器獲得的證書交由CA,CA驗證該證書的合法性並告知客戶端,客戶端根據CA驗證結果來確認目標站點的真實性;
  • 服務器要求客戶端發送證書並驗證,並接受用戶的公鑰;
  • 雙方利用對方公鑰加密來協商可以支持的傳輸類型及密碼方案;
  • 客戶端從服務器的證書取出公鑰,利用公鑰對客戶端產生的祕鑰加密(對稱祕鑰),並利用公鑰加密後的祕鑰發送到服務器;
  • 服務器用私鑰解密出數據,即得到客戶端發送來的對稱祕鑰,之後所有的內容均利用這個對稱祕鑰對傳輸的文件進行加密、解密;

由於客戶端沒有針對特定網站的祕鑰生成機制,因此在雙向認證時會要求客戶端安裝特定的插件,用來實現祕鑰的生成,這個過程會給用戶帶來額外的操作和影響,因此不能適用於全部環境;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章