天天看點

SSL/TSL一、SSL/TSL

一、SSL/TSL

  • SSL
    • TLS的前身,由netscape開發的安全協定
  • TLS
    • 與具體的網絡傳輸協定無關
    • 既可以用于HTTP,也可以用于TCP

1.1 加密算法

1.1.1 對稱加密

  • 雙方使用同一個密鑰進行加解密;
  • 加解密速度快,通常在消息發送方需要加密大量資料時使用;

問題:

  • 在第一次與陌生人進行通信時,如何安全的傳遞密鑰

1.1.2 非對稱加密(公鑰加密)

  • 雙方使用不同的密鑰進行加解密;
    • 公鑰
      • 公開給所有需要與自己通信的對象;
      • 公鑰加密的内容隻能通過對應的私鑰進行解密;
      • 用于内容加密,由内容發送者持有
    • 私鑰
      • 個人私密擁有;
      • 私鑰加密的内容,任何對應的公鑰都能進行解密;
      • 用于表征身份,即産生數字簽名
        • 數字簽名
          • 對消息内容進行哈希計算,得到hashcode,利用私鑰對hashcode進行加密
          • 可以辨別身份,因為私鑰唯一,公鑰與私鑰是一對,公鑰能解密成功,證明消息的發送方一定是私鑰的持有者
          • 可以校驗消息的一緻性,消息和數字簽名一同發送給接收方,如果消息被篡改,hashcode和數字簽名中儲存的hashcode不一樣,數字簽名中的hashcode無法修改,否則解密不會成功
  • 加解密速度慢;
  • 公鑰可以公開釋出,不需要考慮密鑰安全傳遞的問題

問題:

  • 隻使用一套公私鑰,則隻能實作公鑰持有者(例如用戶端)向私鑰持有者(例如服務端)的單向資訊加密,私鑰持有者(例如服務端)向公鑰持有者(例如用戶端)發送的資訊不安全;
  • 雖然公鑰可以公開釋出,但在與陌生人第一次建立通信時,如何确認收到的公鑰是對方發送的,而不是通信被截獲之後僞造的。

1.2 數字證書

  • 數字證書
    • 将公鑰與私鑰持有者的身份資訊進行綁定
    • 内容包括:
      • 證書的釋出機構
      • 證書的有效期
      • 公鑰
      • 證書所有者
      • 指紋算法
        • hash算法等,将證書中的明文内容計算hash值
      • 簽名所使用的算法
        • CA認證機構利用自身的私鑰對hash值進行加密
      • 指紋
        • 指證書内容的hash值經過CA私鑰加密後生成的内容
  • CA(certification authority)
    • 頒發數字證書的權威機構

1.2.1 确認公鑰的身份的真實性

  • 數字證書中包含公鑰以及公鑰釋出者的身份資訊,且加上了CA的數字簽名
  • 将公鑰身份真實性的确認問題轉化為
    • CA公鑰的真實性
      • 内置在作業系統中,受信任的根證書頒發機構
      • 數字證書内容的一緻性,未經篡改
    • 公鑰身份真實性的确認問題
      • 由CA認證機構完成,并對結果負有法律責任

1.2.2 雙向通信的安全性

  • 通信内容采用對稱加密
    • 對稱加密能實作雙向加密,且加密速度快
  • 對稱加密中的密鑰采用非對稱加密方式傳遞
    • 用戶端使用公鑰對對稱加密中的密鑰進行加密,傳輸給服務端

1.2.3 CA認證過程

  • 服務提供者向CA認證機構注冊,得到數字證書
  • 服務提供者在建立第一次通信時将證書下發,用戶端進行解密
    • 利用作業系統内置的CA認證機構釋出的公鑰對證書進行解密得到證書内容的hash值
    • 根據指紋算法将證書内容重新計算一遍hash值并進行比較,确定公鑰的真實性
SSL/TSL一、SSL/TSL

1.3 SSL/TSL通信過程

SSL/TSL一、SSL/TSL
  • client向server發送請求;
  • server向client下發CA憑證;
  • client比較證書中所有者的資訊與正在通路的服務提供者的資訊是否一緻,确認公鑰的身份一緻性;
  • client校驗證書是否為合法機構頒發,确認公鑰的真實性;
  • client生成一個随機值(對稱密鑰),然後用證書中的公鑰對該對稱密鑰加密;
  • server利用非對稱私鑰解密client發送的資訊,從中得到對稱密鑰;
  • 之後server和client就可以通過對稱密鑰進行資訊互動。

1.4 IIS中生成自簽名證書與SSL綁定

  • 生成自簽名證書
    SSL/TSL一、SSL/TSL
  • SSL綁定
    SSL/TSL一、SSL/TSL