我們為什麼需要 TLS 證書?

想要了解我們為什麼需要 TLS 證書前,我們必須先了解,對稱加密與非對稱加密是什麼

對稱加密 (Symmetric Encryption)

Symmetric-Encryption.png

雙方使用同一把密鑰加密、解密

優點:速度快,加密效率高,通常在訊息傳送方需要加密大量資料時使用

缺點:

  • 萬一密鑰被偷,丟失,加密的資料就不再安全
  • 一個網站有幾千萬個用戶,每個用戶都要採用不同的密鑰,導致密鑰難以管理、容易洩漏

非對稱加密 (Asymmetric Encryption)

Asymmetric-encryption-primitive.jpeg

Image.png

非對稱加密有兩種鑰匙,公鑰 (public key) 和私鑰(secret key),公鑰對外公開,私鑰放在服務器,客戶端用公鑰加密資料,資料傳送到服務器後用私鑰解密,當伺服器要傳送資料到客戶端時,用私鑰加密資料,客戶收到資料後用公鑰解密

優點:

  • 密鑰更容易管理,服務器保管好私鑰就好
  • 可以用做網站證書的簽名
    • 就是網站用私鑰加密的,公鑰可以解開
    • 舉例:當我們請求 google.com 的網頁時,我們要怎麼知道該網頁真的是 google 傳的呢?就是當我們可以用公鑰解開這個文檔的時候,因為只有 google 有私鑰可以加密這個文檔

缺點:

  • 速度較慢

混合加密 (Hybrid cryptosystem)

顧名思義,結合對稱與非對稱加密各自的優點的加密法

其核心目的是: 如何安全的讓客戶端與服務端拿到對稱加密的鑰匙

假設 Alice 想要安全的與 Bob 通信

  1. Bob 先生成公、私鑰
  2. Bob 將公鑰給 Alice
  3. Alice 生成一把對稱加密的鑰匙,叫做對談金鑰 (Session Key)
  4. Alice 用對談金鑰加密要傳送的內容 (使用對稱加密)
  5. Alice 用 Bob 給的公鑰加密對談金鑰 (使用非對稱加密)
  6. Alice 將 4,5 步的加密結果,一起傳給 Bob
  7. Bob 收到後用自己的私鑰解密對談密鑰 (使用非對稱解密)
  8. Bob 再拿對談密鑰解密傳送的內容 (使用對稱解密)

那為什麼還需要 TLS 證書?

聽起來混合加密很安全呀,那幹嘛還要 TLS 證書呀?客官且慢,聽我娓娓道來這個可怕的攻擊手法
假設我們要訪問 google.com 時,如果有個中間人在 google 服務器回傳公鑰的時候攔截了公鑰

  1. 中間人自己生成公、私鑰,我們叫它假公、私鑰
  2. 他將 google.com 的公鑰替換成假公鑰傳給我們
  3. 我們拿到假公鑰後,我們生成對談金鑰
  4. 我們不以為意的用了這把假公鑰加密了對話鑰匙然後傳給服務端
  5. 中間人拿到加密的對話鑰匙
  6. 中間人用假私鑰解開對話金鑰,成功拿到了我們的對話金鑰

中間人這時因為手上也有 google.com 一開始傳的公鑰,所以他也可以依照正常的混合加密方式,將自己的對話金鑰傳給 google.com,所以這樣一來這個中間人就同時有了我們對話金鑰和 google 對話金鑰,能夠在我們與 google.com 通信時,假裝是 google.com 回傳我們假資料或者假扮我們傳給 google.com 假資料,這就是一種 “中間人攻擊“。
因此我們需要找一種方式去證明一開始 google 傳的公鑰就是 google 的,答案就是透過一個客戶端和服務端都相信的第三方,叫做憑證頒發機構(certificate authority 簡稱 CA),簽發憑證給服務端

那怎麼簽發證書呢?

服務器將自己的公鑰給 CA,CA 會用自己的私鑰加密這把公鑰稱為數位簽名 (Digital Signature),然後連同原本的公鑰包在一起,稱為 CA 證書

那客戶端怎麼驗證 CA 證書?

客戶端要與服務器通信時,先把 CA 證書回給客戶端,客戶端看證書上是某 CA 簽發的,就拿該 CA 的公鑰去解數字簽名,然後解出的值與證書上的公鑰相同,就代表公鑰確實是服務端的


Reference:

Database Index 是什麼? 使用 stream 上傳檔案到 Server
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×