https爲何能保證安全性

http傳輸以下:算法

此時信息是明文傳輸,若是信息被人截獲,則能看到裏面的內容,極不安全 segmentfault

那就須要對內容加密,過程以下:瀏覽器

  1. 瀏覽器生成一個祕鑰
  2. 瀏覽器向服務器請求公鑰
  3. 服務器向瀏覽器發送它的公鑰
  4. 瀏覽器接收服務器發送的公鑰,並使用公鑰加密隨機生成的對稱密鑰,發送給服務器
  5. 服務器接收瀏覽器發送的數據,用自身私鑰,獲得對稱加密密鑰
  6. 最後,瀏覽器和服務器能夠使用對稱密鑰加密內容進行通訊

但此方案仍會存在安全隱患,在第三步和第四步之間,若是被一箇中間人獲取到它的公鑰,瀏覽器使用中間人的公鑰加密對稱密鑰,發送給服務器,中間人再次截獲數據,獲取其中的對稱密鑰。瀏覽器和服務器在雙方數據都不知情的狀況下,數據內容被窺探。 安全

問題的重點在於,第三步瀏覽器沒法獲得公鑰的來源的合法性,這就須要數字證書了。這就是https的解決方案
服務端單單發送公鑰,而是發送包含公鑰的數字證書。
數字證書由第三方機構頒發,瀏覽器已經維護了全部知名的第三方機構。 服務器

瀏覽器如何肯定公鑰的合法性?網絡

  1. 在接收數字證書時,查看證書的有效期
  2. 根據數字證書的第三方機構名稱,找到對應的公鑰,解密數字簽字,獲得hash1
  3. 根據服務端網址等信息,使用簽名算法,生成hash2
  4. 若是hash1等於hash2,則公鑰合法

公鑰和私鑰的相關知識
公鑰和私鑰是一對密鑰對,它們能夠互解密。使用公鑰加密,私鑰解密。能有效保證數據的安全性。可是若是使用私鑰加密,公鑰解密呢,則能夠肯定來源的合法性。由於只有知道私鑰才能加密,若是咱們能使用公鑰解密獲得正常內容(內容是否正確就是比較hash1和hash2),那麼對方必定是擁有私鑰的主機,而私鑰是由第三方頒發給服務器的,這就是數字簽名。加密

OSI七層
物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層
https的ssl位於傳輸層和應用層之間spa

相關文章
相關標籤/搜索