雙向認證是指連線的雙方相互驗證身分的情況。
閱讀本文後,您將能夠:
複製文章連結
相互驗證是指通訊通道的兩端驗證彼此的身分,而不是僅一端驗證另一端。相互驗證也稱為「雙向驗證」,因為該過程是雙向的。
當有人使用拼車應用程式時,他們通常會檢查車牌或車輛描述,以確保他們乘坐正確的汽車。在他們上車後,司機會詢問乘客的名字,以確認他們接上了正確的人。乘客和司機各自確認他們正在與預定的人互動,以確保司機提供正確的服務,乘客正乘坐在前往目的地的汽車中,且雙方都可以確認他們與經過拼車應用程式驗證的人在一起。
同樣,相互驗證會驗證數位通訊通道中的雙方。例如,使用相互驗證的用戶端和伺服器採取步驟來分別驗證彼此的身分,而不僅僅是用戶端對伺服器進行驗證。裝置到裝置的連線(如 物聯網 (IoT) 裝置之間的連線)通常也使用相互驗證。
相互驗證最常與 Transport Layer Security (TLS) 通訊協定相關聯,但它也可以由其他通訊協定以及在其他環境中使用。瞭解相互 TLS。
有三種主要方法可以相互驗證通訊通道的兩端:
1. 公開金鑰驗證:此方法依賴於公開金鑰加密。金鑰是可用於加密資料或對資料進行數位簽名的資料字串。公開金鑰加密使用兩個金鑰:一個公開金鑰和一個私密金鑰。使用公開金鑰加密的資料將使用私密金鑰解密。
在公開金鑰相互驗證中,通訊雙方都公告公開金鑰,並且都必須證明他們擁有與公開金鑰相匹配的私密金鑰——就像有人出示政府簽發的身分證來驗證他們的名字一樣。每一端都向另一端傳送一個數位簽名。如果可以使用公開金鑰驗證簽名,則表示使用了正確的私密金鑰,且傳送簽名的一方是合法的。
2.憑證驗證:這種方法類似於公開金鑰驗證,不過不只是一個公開金鑰,而是雙方都有一公開金鑰憑證。憑證包含有助於驗證各方身分的其他資訊,包括憑證和公開金鑰的頒發者、憑證的適用對象、憑證何時到期等。如果雙方都有 TLS 憑證,則可以使用 TLS 憑證進行這種類型的相互驗證。
3.使用者名稱和密碼:儘管名稱不同,但這種相互驗證的方法仍然使用伺服器端的憑證。伺服器向用戶端出示憑證,用戶端驗證憑證。在用戶端,它就像典型的使用者名稱/密碼驗證一樣:用戶端將其使用者名稱和密碼組合傳送到伺服器,伺服器驗證憑據。
單向驗證在網際網路上一直在發生。每次有人載入使用 HTTPS 的網站時,他們的裝置都會透過檢查伺服器的 TLS 憑證來驗證網頁伺服器的身分。另一個範例是某人在應用程式上登入其帳戶,在這種情況下,應用程式會驗證該人的身分。
雖然相互驗證消除了一些安全性漏洞,並使某些類型的攻擊更加難以執行,但它需要更多的時間和運算能力才能完成資訊交換增。它還需要一些預先設定:通訊的雙方都需要一組認證、一個公開金鑰-私密金鑰對或一個公開金鑰憑證(取決於使用的驗證類型)。這使得普通使用者難以實作相互驗證,這就是為什麼當有人使用 Web 應用程式時,相互驗證通常不是 TLS 的一部分。
相互驗證的主要使用案例包括:
中間人攻擊:在中間人攻擊中,攻擊者處於雙方之間的連線中間。攻擊者攔截兩個方向通訊,並相互冒充對話的兩端。相互驗證有助於阻止此類攻擊,因為攻擊者將無法對通訊的兩端進行驗證。
欺騙和冒充:攻擊者使用這些攻擊來誘騙伺服器或使用者,使其認為自己是已知且受信任的一方。攻擊者可能會在使用者面前偽裝網頁伺服器,或在伺服器前偽裝使用者。當雙方都必須進行驗證時,這種攻擊要困難得多。
認證盜竊:某些形式的相互驗證是基於密碼的,這些驗證仍可能受到認證盜竊的影響(當攻擊者竊取合法使用者的密碼時)。但是,由於相互驗證通常基於公開金鑰,因此認證盜竊不可能實現,因為沒有認證可以竊取。這可以使網路釣魚攻擊無法生效。
以下網路通訊協定要麼內建了相互驗證,要麼提供了使用它的選項:
安全殼層通訊協定 (SSH):SSH 是一種通道通訊協定,用於安全地連接到遠端伺服器或裝置。SSH 可以使用公開金鑰驗證或憑證驗證。換句話說,可以在 SSH 中使用公開金鑰或公開金鑰憑證相互進行驗證。
TLS:雖然預設情況下 TLS 不會相互驗證連線的兩端,但它可用於此目的。Mutual TLS (mTLS) 是最常用的相互驗證類型之一。在 mTLS 中,連線的兩端都有一個 TLS 憑證。mTLS 通常用於 API 安全性、IoT 安全性和 Zero Trust 安全應用程式。
相互驗證是 Cloudflare 提供的幾種 Zero Trust 安全性解決方案的核心。Cloudflare Zero Trust 是用於應用程式存取控制和網際網路瀏覽的平台,其提供用於驗證使用者和裝置的 mTLS。Cloudflare API Shield 支援 mTLS 以實現 API 驗證和安全性。
入門
關於存取管理
關於零信任