什麼是相互 TLS (mTLS) ?

雙向 TLS (mTLS) 是一種驗證類型,即連線雙方使用 TLS 通訊協定相互驗證。

學習目標

閱讀本文後,您將能夠:

  • 說明相互 TLS (mTLS) 的運作原理
  • 瞭解相互 TLS 和常規 TLS 之間的區別
  • 說明 mTLS 如何阻止攻擊

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是相互 TLS (mTLS) ?

相互 TLS 簡稱 mTLS,是一種相互驗證的方法。mTLS 透過驗證網路連線兩端的各方都擁有正確的私密金鑰來確保他們都是所聲稱的身分。他們各自的 TLS 憑證中的資訊提供了額外的驗證。

mTLS 通常被用於 Zero Trust 安全框架*,以驗證組織內的使用者、裝置和伺服器。它也可以協助保持 API 的安全<。

*Zero Trust 意味著預設情況下不信任任何使用者、裝置或網路流量,這種方法有助於消除許多安全漏洞。

白皮書
最大程度利用 TLS 的能力

指南
保護應用程式存取的 Zero Trust 指南

什麼是 TLS?

Transport Layer Security (TLS) 是網際網路上廣泛使用的一種加密通訊協定。TLS 的前身是 SSL,在用戶端-伺服器連線中對伺服器進行驗證,並對用戶端和伺服器之間的通訊進行加密,以便外部各方無法窺視通訊。

關於 TLS 的運作原理,需要瞭解三件重要的事情:

1. 公開金鑰和私密金鑰

TLS 使用一種叫做公開金鑰加密的技術運作,它依賴於一對金鑰,即公開金鑰和私密金鑰。使用公開金鑰加密的任何內容都只能用私密金鑰解密。

因此,一個伺服器如果解密了用公開金鑰加密的資訊,就證明它擁有私密金鑰。任何人都可以透過查看網域或伺服器的 TLS 憑證來檢視公開金鑰。

2. TLS 憑證

TLS 憑證是一個資料檔案,其中包含用於驗證伺服器或裝置身分的重要資訊,包括公開金鑰、憑證簽發者聲明(TLS 憑證由憑證授權單位簽發)以及憑證的到期日期。

3. TLS 交握

TLS 交握是驗證 TLS 憑證和伺服器是否擁有私密金鑰的過程。TLS 交握還會確定交握完成後如何進行加密。

WAF 保護
防禦「十大」攻擊技術

mTLS 如何運作?

通常在 TLS 中,伺服器擁有具有 TLS 憑證和公開金鑰/私密金鑰對,而用戶端則沒有。典型的 TLS 過程的運作方式如下:

  1. 用戶端連接到伺服器
  2. 伺服器提供其 TLS 憑證
  3. 用戶端驗證伺服器的憑證
  4. 用戶端和伺服器透過加密的 TLS 連線交換資訊
TLS 交握的基本步驟

但是,在 mTLS 中,用戶端和伺服器都有一個憑證,並且雙方都使用其公開金鑰/私密金鑰對進行驗證。與常規 TLS 相比,mTLS 中還有額外步驟來驗證雙方(額外步驟以粗體顯示):

  1. 用戶端連接到伺服器
  2. 伺服器提供其 TLS 憑證
  3. 用戶端驗證伺服器的憑證
  4. 用戶端提供其 TLS 憑證
  5. 伺服器驗證用戶端的憑證
  6. 伺服器授予存取權限
  7. 用戶端和伺服器透過加密的 TLS 連線交換資訊
相互 TLS (mTLS) 交握的基本步驟

mTLS 中的憑證授權單位

實作 mTLS 的組織充當自己的憑證授權單位。這與標準 TLS 形成鮮明對比,在標準 TLS 中,憑證授權單位是一個外部組織,負責檢查憑證擁有者是否合法擁有關聯的網域(瞭解 TLS 憑證驗證)。

mTLS 需要「根」TLS 憑證,這使組織能夠成為自己的憑證授權單位。授權用戶端和伺服器使用的憑證必須與此根憑證相對應。根憑證是自我簽署的,這意味著組織自己建立它。(此方法不適用於公用網際網路上的單向 TLS,因為必須由外部憑證授權單位簽發這些憑證。

為什麼使用 mTLS?

mTLS 有助於確保用戶端和伺服器之間的流量在兩個方向上都是安全和可信的。這為登入到組織網路或應用程式的使用者提供了額外的安全層。它還可以驗證與不遵循登入過程的用戶端裝置的連線,如物聯網 (IoT) 裝置。

mTLS 可防止各種攻擊,包括:

  • 中間人攻擊:中間人攻擊者將自己置於用戶端和伺服器之間,並攔截或修改兩者之間的通訊。使用 mTLS 時,中間人攻擊者無法向用戶端或伺服器進行驗證,因此幾乎無法執行此攻擊。
  • 詐騙攻擊:攻擊者可能嘗試在使用者面前「偽裝」(模仿)網頁伺服器,或在伺服器前偽裝使用者。當雙方都必須使用 TLS 憑證進行驗證時,詐騙攻擊要困難得多。
  • 認證填充:攻擊者使用從資料外洩中洩露的認證集,試圖以合法使用者身分登入。如果沒有合法簽發的 TLS 憑證,認證填充對使用 mTLS 的組織的攻擊就無法成功。
  • 暴力攻擊:暴力攻擊通常使用機器人執行,是指攻擊者使用快速試錯來猜測使用者的密碼。mTLS 確保密碼不足以存取組織的網路。(限速是處理此類機器人攻擊的另一種方法。)
  • 網路釣魚攻擊:網路釣魚攻擊的目標通常是竊取使用者認證,然後使用這些認證入侵網路或應用程式。即使使用者遭受此類攻擊,攻擊者仍然需要 TLS 憑證和相應的私密金鑰才能使用這些認證。
  • 惡意 API 請求:當用於 API 安全性時,mTLS 確保 API 請求僅來自合法的、經過驗證的使用者。這可以阻止攻擊者傳送惡意的 API 請求來利用漏洞或破壞 API 的預期運作方式。

網站已經使用 TLS,那為什麼沒有在整個網際網路上使用 mTLS?

對於日常用途,單向驗證可提供足夠的保護。TLS 在公用網際網路上的目標是:1)確保人們不會造訪詐騙網站,2)在私人資料通過構成網際網路的各種網路時保持安全和加密,以及 3)確保資料在傳輸過程中不會被修改。單向 TLS(其中用戶端僅驗證伺服器的身分)就足以實現這些目標。

此外,將 TLS 憑證分發到所有終端使用者裝置將非常困難。產生、管理和驗證為此所需的數十億憑證幾乎是不可能的任務。

但在較小的規模上,mTLS 對單個組織非常有用且非常實用,尤其是當這些組織採用 Zero Trust 方法來確保網路安全時。由於 Zero Trust 方法預設不信任任何使用者、裝置或請求,因此組織必須能夠在每次嘗試存取網路中的任何時間對每個使用者、裝置和請求進行驗證。mTLS 透過驗證使用者和驗證裝置來幫助實現這一點。

Cloudflare 如何利用 mTLS?

Cloudflare Zero Trust 使用 mTLS 實現 Zero Trust 安全性。Cloudflare API Shield 還使用 mTLS 來驗證 API 端點,確保未經授權的各方都無法傳送潛在的惡意 API 請求。瞭解如何使用 Cloudflare 實作 mTLS