文章

Kerberos 驗證/身分驗證:優勢、挑戰與運作原理

深入瞭解 Kerberos 驗證通訊協定

Kerberos 驗證通訊協定是一種網路驗證通訊協定,可在不受信任的網路(如網際網路)中,於兩個或多個受信任主機之間驗證服務請求,且無需傳送密碼。Kerberos 被譽為現代網路安全通訊協定的基礎,採用對稱式金鑰加密技術,並仰賴受信任的第三方進行協調。

自 1983 年問世以來,Kerberos 已廣泛應用於各種環境,特別是在對驗證/身分驗證有嚴格要求的場合。Kerberos 已整合於多種作業系統中,並成為許多網路安全與單一登入解決方案的標準組件。

Kerberos 的起源

Kerberos 驗證/身分驗證通訊協定於 1983 年誕生,源自麻省理工學院(MIT)、Digital Equipment Corporation 和 IBM 共同推動的 Project Athena 計畫,用意在打造一個橫跨校園的分散式運算環境,供教學使用。

「Kerberos」這個名稱取自希臘神話中的三頭犬 Cerberus,牠負責守護冥界 Hades 的大門。

這三頭犬象徵著該通訊協定的結構:分為三個相互依存的元件——用戶端、伺服器,以及金鑰發佈中心(KDC)。

Kerberos 驗證/身分驗證的運作方式:架構與流程解析

Kerberos 驗證/身分驗證架構

Kerberos 架構採用對稱式加密(密鑰加密技術)與受信任的第三方——金鑰發佈中心(KDC),來實現用戶端與伺服器應用程式的驗證/身分驗證,並確認使用者身分。KDC 透過驗證伺服器發放票證給用戶端,並藉由票證授權伺服器提供票證授權服務。這些票證會以工作階段金鑰加密,作為用戶端身分的憑證。

KDC 包含三大核心元件:

  1. 驗證伺服器(AS , Authentication Server):負責處理使用者存取服務時的初步驗證/身分驗證,並發放票證
  2. 票證授權伺服器(TGS , Ticket-Granting Server):接受已驗證的用戶端,並協助使用者連接至所需的服務伺服器(SS , Service Server)
  3. Kerberos 資料庫:儲存所有已驗證使用者的識別資訊

請注意,KDC 發放的所有票證均有時效限制。

Kerberos 驗證/身分驗證流程

Kerberos 驗證/身分驗證流程涵蓋用戶端、伺服器與 KDC 之間的一系列互動。每次會話都會產生一組加密票證(即工作階段金鑰),並儲存在申請服務的使用者裝置上。服務端將此票證作為驗證依據,而非傳統密碼。

Kerberos 驗證/身分驗證流程分為四大步驟,確保使用者密碼從不經過網路傳輸,有效防範潛在攔截風險。

1. Kerberos 初始驗證/身分驗證服務請求

使用者啟動登入,向 KDC 的驗證伺服器(AS)提出 Kerberos 驗證/身分驗證服務請求。此請求包含使用者主體名稱(UPN,亦即使用者識別碼),但不包含密碼,並載明票證有效期限及到期資訊。請求內容以使用者密碼雜湊加密,AS 隨後產生票證授權票(TGT)。

2. Kerberos 票證授權票(TGT)發放

當 AS 收到服務請求後,KDC 會利用使用者密碼雜湊進行解密。若解密成功且時間戳記未過期,AS 便產生工作階段金鑰與 TGT,發送給用戶端以加密後續請求。

TGT 內含用戶端 ID、網路位址及有效期限。使用者系統會用密碼解密工作階段金鑰;TGT 則以 TGS 專屬密鑰加密。

3. Kerberos 服務票證請求

接著用戶端向 TGS 發出請求,內容包含先前取得的加密 TGT,以及以工作階段金鑰加密的服務請求。服務端會以其密鑰解密票證並驗證其有效性。若服務端成功解密並驗證服務票證,即確認用戶端身分並授予存取權。

4. Kerberos 服務存取

驗證成功後,用戶端向伺服器出示服務票證。伺服器若能正確解密服務票證,即授予用戶端存取權限。

Kerberos 驗證/身分驗證的優勢

Kerberos 驗證/身分驗證在網路安全與管理上具有多項優勢,包括:

跨平台互通性

Kerberos 作為開放標準協定,具備高度互通性,支援多種系統與平台(如 Windows、Unix 及 Linux),可靈活整合各類 IT 環境。

雙向驗證/身分驗證

Kerberos 提供用戶端與伺服器雙向驗證/身分驗證,雙方皆須確認彼此身分,有效降低中間人(MitM)攻擊風險,防止攻擊者冒充伺服器或用戶端竊取訊息內容。由於雙方均需驗證/身分驗證,可徹底防堵中間人攻擊。

高擴展性

隨著基礎結構規模調整,Kerberos 可因應大量用戶與服務的驗證/身分驗證需求,支援大型網路環境的彈性擴展。

單一登入(SSO)功能

Kerberos 支援單一登入,使用者只需驗證/身分驗證一次,即可存取多項服務,無需重複登入。此舉不僅提升用戶體驗,也藉由減少多重密碼管理,降低密碼疲勞與弱密碼風險,強化整體安全防護。

強大加密保護

Kerberos 採用對稱式加密,全面保障用戶端與伺服器間的資料傳輸安全,包括驗證/身分驗證過程。加密所用金鑰從不經由網路傳送,進一步降低攔截風險,防止竊聽或資料竄改。

Kerberos 驗證/身分驗證的限制

雖然採用 Kerberos 驗證/身分驗證機制具有諸多優點,但在部署與運作過程中仍存在若干限制,這些挑戰源自於協定設計、作業需求及環境因素。

複雜度與管理負擔

Kerberos 協定本身結構複雜,導致部署和管理成為重大難題。建置與維護 Kerberos 系統需要深入瞭解協定原理、謹慎的設定,以及持續的管理工作,這對規模較小的組織(企業)而言,尤其是一大挑戰,因為這需要專業知識與資源。

管理人員必須妥善管理金鑰、正確設定服務,並確保金鑰發佈中心(KDC)的持續維護。若管理疏忽,容易產生錯誤與漏洞,進而削弱安全性。此外,每一個網路服務都需配置專屬的 Kerberos 金鑰。

跨網域驗證/身分驗證的複雜性

Kerberos 最初設計僅適用於單一網域,因此跨網域或不同管理領域(realm)間的驗證/身分驗證設定與管理相當繁瑣。必須手動建立及維護不同領域間的連線,並在 KDC 之間共享金鑰。

相容性與互通性限制

並非所有協定都支援 Kerberos 驗證/身分驗證,這使其在異質化網路環境中(服務及協定多元)應用受限。將 Kerberos 整合至各類系統與應用程式(特別是原生不支援 Kerberos 的情境)時,往往需要額外投入與客製化解決方案。

Kerberos 憑證限制

Kerberos 憑證(ticket)具有有效期限。當應用程式或連線持續時間超過憑證有效期時,可能導致服務中斷。若需在不中斷使用者連線的情況下續發憑證,管理上更具挑戰性。

密碼型攻擊風險

Kerberos 僅需連線至 KDC,即可進行暴力破解或字典攻擊。攻擊者可反覆發送驗證/身分驗證請求,利用常見密碼字串,嘗試取得票證授權憑證(TGT),進而偽冒合法使用者。

擴充性問題

雖然 Kerberos 設計上具備擴充性,但過度依賴集中式 KDC,當驗證/身分驗證請求量激增時,容易形成瓶頸。為支援業務成長,必須審慎規劃並隨時擴充基礎結構。

單點故障風險

KDC 為 Kerberos 驗證/身分驗證架構的核心,若 KDC 發生故障或遭入侵(如硬體故障、網路異常或網路攻擊),將導致所有依賴 Kerberos 的服務無法驗證/身分驗證,造成業務中斷。

時間同步敏感性

Kerberos 透過時間戳記防止重放攻擊(即攻擊者重送合法資料以冒充合法身分)。為防止此類攻擊,系統內所有實體必須維持精確的時間同步。若同步失敗,將導致驗證/身分驗證失敗。預設情況下,若用戶端與伺服器的本地時間相差超過五分鐘,即無法完成驗證/身分驗證。

然而,在大型分散式網路環境中,維持時間同步極具挑戰,特別是在時鐘精度與穩定性不一的情境下。

Kerberos 驗證/身分驗證常見問題與排解指引

透過深入瞭解 Kerberos 常見問題的成因及對策,能有效預防風險,讓組織(企業)充分享受 Kerberos 驗證/身分驗證帶來的安全效益。

網域控制站

Kerberos 依賴高可用性的金鑰發佈中心(KDC),通常部署於 Active Directory 的網域控制站。若網域控制站無法連線或設定錯誤,將導致驗證/身分驗證失敗。建議排解步驟如下:

  • 檢查網域控制站的覆寫狀態
  • 驗證網域控制站的 DNS 服務記錄
  • 確認防火牆與路由器設定允許 Kerberos 流量

第三方系統整合性

應用程式需正確設定服務主體名稱(SPN)及金鑰檔(keytab)。若 SPN 不唯一或 keytab 過期,將導致整合失敗。建議排解步驟如下:

  • 驗證 SPN 設定
  • 若服務回報「解密完整性檢查失敗」,重新產生 keytab
  • 確認服務本身支援 Kerberos

舊型系統

部分舊型系統可能不支援 Kerberos,或預設使用 NTLM,造成相容性問題並帶來安全漏洞。建議排解步驟如下:

  • 在群組原則中強制優先使用 Kerberos
  • 若無法支援 Kerberos,應隔離舊型系統,並採用虛擬私人網路(VPN)、防火牆及多因子驗證(MFA)等補償性控管措施

Kerberos 驗證/身分驗證錯誤

這類錯誤通常源於用戶端、伺服器或 KDC 之間時間同步誤差超過五分鐘。其他常見原因包括 DNS 設定錯誤導致 KDC/服務無法解析,或 SPN 設定錯誤或重複。建議解決步驟如下:

  • 同步用戶端、伺服器及 KDC 的系統時間
  • 驗證網域登入狀態
  • 清除現有憑證後重新驗證/身分驗證

Kerberos 是否可能遭到入侵?

如同所有資安機制,Kerberos 驗證/身分驗證並非完全無法被攻擊。下列為 Kerberos 驗證/身分驗證可能遭到入侵的方式:

金鑰發佈中心(KDC)遭入侵

KDC 為 Kerberos 驗證/身分驗證流程的核心,一旦 KDC 遭到入侵,攻擊者便可為任意使用者簽發有效憑證(ticket),取得網域內所有服務的無限制存取權限,進而橫向擴散至整個網路。

黃金票攻擊(Golden Ticket Attack)

攻擊者若取得 KDC 所屬網域(realm)的祕密金鑰,即可自行產生票證授權憑證(TGT),並以任意身分存取所有服務。這類憑證可設定長時間有效,且與合法憑證難以區分,偵測上極具挑戰。

白銀票攻擊(Silver Ticket Attack)

此攻擊規模較小,攻擊者取得特定服務的祕密金鑰後,可產生有效的服務憑證(service ticket),進而冒用任意使用者身分,繞過一般驗證/身分驗證檢查。由於白銀票攻擊不經過 KDC,且與黃金票相同,難以被偵測。

票證轉移攻擊(Pass-the-Ticket Attack)

攻擊者竊取有效的 TGT,直接冒充合法使用者,取得未經授權的存取權限。Kerberos 驗證/身分驗證以憑證為基礎,無需互動式密碼交換,因此只要取得有效憑證,攻擊者即可橫行無阻。若票證有效期限過長或可續發,風險尤高。

內部威脅

具備合法存取 Kerberos 驗證/身分驗證基礎結構(如 KDC)權限的內部人員(如員工、承包商或任何可存取內部網路者),可能繞過外部防禦,取得敏感服務的存取權限。

中間人(MitM)攻擊

Kerberos 設計上透過雙向驗證/身分驗證防範中間人攻擊,但若設定不當或網路存在漏洞,攻擊者仍有機會攔截用戶端與 KDC 或服務伺服器之間的通訊。

密碼猜測攻擊

Kerberos 驗證/身分驗證常見弱點之一為使用者密碼強度不足,因為初始驗證/身分驗證依賴使用者密碼產生的祕密金鑰。若密碼過於簡單,攻擊者可透過暴力破解或字典攻擊進行猜測。一旦密碼被破解,攻擊者即可向 KDC 申請 TGT,冒充使用者,取得未經授權的存取權限。

重放攻擊

重放攻擊利用 Kerberos 的時間戳記機制。儘管大多數憑證有效期短暫,攻擊者若取得有效憑證,仍可在允許的時限內重複發送請求,取得未經授權的存取權限。

Kerberos 驗證/身分驗證設定最佳實務

遵循這些設定最佳實務,可確保 Kerberos 驗證/身分驗證的安全性與可靠性:

  • 正確設定正向與反向 DNS 查詢,確保用戶端能隨時找到正確的網域控制站及服務。
  • 限制服務委派範圍。
  • 部署多台 KDC(金鑰發佈中心),避免單點故障。
  • 為每個服務指派唯一的服務主體名稱(SPN)。
  • 所有用戶端、伺服器與 KDC 必須維持系統時間誤差在五分鐘以內。
  • 縮短票證(TGT 與服務票證)有效期限,降低風險。
  • 詳實記錄跨網域或跨領域的設定。
  • 定期測試票證與 SPN 的有效性。
  • 定期輪替並更新服務金鑰,確保與 KDC 保持同步。
  • 持續監控 Kerberos 事件,偵測異常行為(例如 pass-the-ticket 攻擊)。
  • 僅使用強式、以 AES 為基礎的加密演算法。

Kerberos 與其他驗證/身分驗證通訊協定的比較與差異

除了 Kerberos 之外,常見的驗證/身分驗證通訊協定還包括 NTLM、LDAP、OAuth、SAML及 OpenID Connect。以下簡要說明各種驗證/身分驗證通訊協定:

  • NTLM:舊版 Windows 挑戰回應通訊協定,採用密碼雜湊。
  • 限制:易受 pass-the-hash 及 relay 攻擊,現今環境下安全性不足。
  • LDAP:用於儲存與擷取身分資訊的目錄存取通訊協定。
  • 限制:除非搭配 LDAPS,否則安全性薄弱,且不具備內建SSO功能。
  • OAuth:授權框架,發行權杖以讓應用程式取得有限的使用者資源存取權。
  • 限制:設計用途為授權而非驗證/身分驗證,若權杖遭竊會帶來風險。
  • SAML:以 XML 為基礎的通訊協定,在身分提供者與服務提供者間交換驗證/身分驗證與授權資料。
  • 限制:依賴冗長的 XML,較現代 JSON 通訊協定複雜且效能較低。
  • OpenID Connect:建構於 OAuth 2.0 之上的 JSON 身分層,為網頁、行動及 API 應用程式提供驗證/身分驗證與授權。
  • 限制:高度仰賴正確的 OAuth 2.0 實作,設定錯誤風險較高。

評估 Kerberos 驗證通訊協定

Kerberos 仍廣泛應用於現代網路環境中,為不安全的網路提供安全的驗證/身分驗證機制。

然而,雖然使用普遍,Kerberos 並非沒有其限制。為維持 Kerberos 驗證/身分驗證的安全性,必須謹慎規劃與管理,包括確保跨網路系統間的時間同步,以及嚴密保護金鑰發放中心(KDC),以防止可能造成重大損害的資安事件。

儘管如此,組織(企業)可透過適當的資源與專業知識,降低上述風險,進而善用 Kerberos 驗證/身分驗證,作為分散式網路環境中用戶與服務驗證的基礎架構。

免責聲明:本文件所載資訊僅供參考,並非任何形式的法律建議。SailPoint 無法提供法律意見,建議您就相關法律問題諮詢專業律師。

Kerberos 驗證/身分驗證常見問答

什麼是 Kerberos 驗證/身分驗證?其運作原理為何?

Kerberos 驗證/身分驗證是一種網路驗證通訊協定,專為在分散式網路環境及不受信任的網路中驗證用戶與服務的身分而設計。此協定廣泛用於強化身分安全,因其能降低密碼曝露風險、防止重放攻擊,並支援單一登入(SSO)。

Kerberos 驗證/身分驗證流程依賴由受信任第三方(金鑰發放中心,KDC)簽發的時效性憑證。以下為 Kerberos 驗證/身分驗證的運作概要:

1. 使用者於系統中輸入帳號與密碼。
2. KDC 的驗證伺服器(AS)驗證使用者憑證。
3. 若憑證正確,AS 會簽發一組票證授權票(TGT),並以使用者金鑰加密。
4. 使用者系統於存取服務時,向票證授權伺服器(TGS)出示 TGT。
5. TGS 為特定資源簽發服務票證。
6. 使用者系統將服務票證提交給目標服務,驗證通過後即可無須再次輸入密碼存取資源。

Kerberos 有哪些實際應用範例?

Kerberos 驗證/身分驗證的典型應用情境,是企業環境中採用 Microsoft Active Directory 的架構。當使用者登入加入網域的 Windows 工作站時,系統會自動啟用 Kerberos 驗證/身分驗證來驗證使用者憑證。經過 Kerberos 驗證/身分驗證後,使用者即可在 Windows Active Directory 內,無需再次輸入密碼,即可存取多項已啟用 Kerberos 驗證/身分驗證的服務,包括:

  • 協作工具(如 SharePoint 網站或 Teams)
  • 資料庫(如 SQL Server、Oracle 或 PostgreSQL 實例)
  • 由網域管理的印表機
  • 電子郵件服務(如 Microsoft Exchange 信箱及 Outlook Web Access)
  • 網路服務(如 DNS、DHCP 及其他網域控管的基礎結構服務)
  • 其他加入網域的電腦
  • 共用網路資料夾與磁碟機
  • 網頁應用程式(如內部入口網站或企業內部應用程式)
Kerberos 和 LDAP 有何不同?

Kerberos 是一種驗證通訊協定,可在用戶端與伺服器之間,於存取網路服務前,實現安全且雙向的身分驗證/身分驗證。LDAP(輕量型目錄存取通訊協定)則是目錄管理通訊協定,同時也可用於驗證/身分驗證。

簡言之,Kerberos 驗證/身分驗證負責驗證身分,而 LDAP 則負責管理身分。這兩者經常搭配使用:LDAP 儲存身分資料,Kerberos 則確保這些資料的驗證/身分驗證過程安全無虞。

Kerberos 與單一登入(SSO)有何差異?

Kerberos 主要負責在網路環境中對使用者及服務進行驗證/身分驗證與授權,而單一登入(SSO)則讓使用者能夠跨多個服務與平台進行存取。Kerberos 通常作為 SSO 的後端技術,負責實作驗證/身分驗證,讓使用者只需登入一次,即可安全存取多個系統與服務。

Kerberos 和 OAuth 有何不同?

Kerberos 是一種網路驗證通訊協定,主要用於企業內部環境中驗證使用者的身分。相較之下,OAuth 則是一套授權框架,設計目的是讓應用程式(如網頁、行動裝置、桌面或機器對機器的應用)能在不暴露憑證的情況下,透過應用程式介面 (API) 取得有限的使用者資源存取權限。Kerberos 透過第三方金鑰發佈中心提供加密票證來完成驗證;而 OAuth 則由授權伺服器(可由企業內部控管或外部第三方營運)發行存取權杖以實現授權。

Kerberos 驗證/身分驗證目前仍然被使用嗎?

是的,Kerberos 驗證/身分驗證至今仍被廣泛採用,並預期將繼續作為企業網路安全的關鍵基礎。主要作業系統(如 Windows、Linux 及 macOS)皆持續以 Kerberos 作為核心驗證通訊協定,特別適用於需要集中化身分與存取管理的環境。Kerberos 驗證/身分驗證持續被採用的原因包括:

  • 可透過延伸與調整,與雲端服務及混合環境無縫整合。
  • 提供強大的雙向驗證機制。
  • 降低密碼暴露風險。
  • 支援跨多項服務的單一登入 (SSO) 功能。
我們要如何啟用 Kerberos 驗證/身分驗證?

啟用 Kerberos 驗證於組織網路環境時,具體步驟可能有所不同,但主要流程可歸納為下列五大步驟:

1. 建立金鑰發佈中心 (KDC),此中心同時承載驗證伺服器 (AS) 及票證授權伺服器 (TGS)
2. 在 KDC 中建立並設定使用者(即登入實體)與服務(例如應用程式或資源)主體帳號,並調整網路原則、防火牆及 DNS,確保用戶端、伺服器與 KDC 之間的 Kerberos 流量能無縫運作
3. 在用戶端與服務端啟用 Kerberos
4. 取得票證授權票 (TGT)
5. 存取服務

我們應如何修復 Kerberos 驗證錯誤?

修復 Kerberos 驗證錯誤時,應採取系統化的方法來釐清並解決基礎結構層面的問題。這類錯誤多半源於票證流程的中斷。建議依循下列步驟進行:

  • 全系統時間同步:Kerberos 嚴格依賴時間視窗,若用戶端、伺服器與金鑰發佈中心 (KDC) 的時鐘不同步,票證將遭拒。請使用 NTP(網路時間協定)確保所有系統時間一致。
  • 驗證 DNS 設定:Kerberos 需仰賴 DNS 解析服務主體名稱 (SPN)。若 DNS 設定錯誤或有重複項目,將導致驗證失敗。請檢查 DNS 配置,確保正反向查詢均能正確解析網域控制站及服務主機。
  • 確認 SPN 唯一且正確:服務需正確註冊 SPN,缺漏或重複常見錯誤為「目標主體名稱不正確」。請檢查並註冊正確的 SPN。
  • 更新 keytab 檔案:Linux/Unix 應用程式常以 keytab 檔案儲存服務主體金鑰。若遺失、過期或損毀,將導致驗證失敗。請檢查 keytab,必要時重新產生並安全部署。
  • 更新或清除過期票證:Kerberos 票證具有效期,過期時用戶將無法重新登入。請檢查票證生命週期與快取,並根據需要清除或更新票證。
  • 檢查網域原則:網域功能層級、資安原則設定錯誤,或 Active Directory 中 Kerberos 功能遭停用,皆可能阻礙驗證。請檢查群組原則與網域設定,並檢閱事件檢視器中的 Kerberos 相關錯誤記錄,調整原則設定。
  • 確認應用程式設定:部分應用程式需明確啟用 Kerberos。請確認應用程式或服務設定已正確啟用 Kerberos,並指向正確的領域與 KDC。
日期: 2026年5月7日閱讀時間:5 分鐘
網路安全身分與存取管理資料安全

立即開始

瞭解 SailPoint 身分安全能為貴組織帶來哪些改變

要在不影響生產力或創新能力的前提下保障資源存取安全,可謂一大挑戰,瞭解我們的解決方案如何支援當今現代企業因應這項挑戰。