Kerberos

Kerberos:分離 AS 和 TGS

  • April 18, 2014

在 Kerberos 中,身份驗證伺服器 (AS) 和票證授予伺服器 (TGS) 通常在同一台伺服器上實現。該機器稱為密鑰分發中心 (KDC)。

當然,在同一台物理機器上實現這些服務是有意義的,因為在中小型網路中,將這兩種服務分開是多餘的。此外,我有一個相對可靠的來源,它說(翻譯):

TGS 和 AS 必須訪問同一個數據庫 => 在不同的機器上實現 TGS 和 AS 沒有多大意義

但是我看不到必須在兩者之間共享哪個數據庫。

這是我的想法,我將如何分離 AS 和 TGS,沒有共享數據庫:

  • 由於 AS 和 TGS 是分開的,所以它們有不同的 Master Secret
  • AS 有一個數據庫,所有使用者都有各自的主密鑰(在使用者登錄時使用,用於加密會話密鑰),以及 TGS 的主密鑰(用於加密請求的 TGT)。
  • TGS 有一個數據庫,它允許它確定允許哪個使用者使用哪個服務(ACL、撤銷列表,…),以及一個包含所有服務及其各自主密鑰的數據庫(用於加密票證)。

當使用者想要使用服務時(簡化):

  • 在 AS 進行身份驗證
  • 獲取使用 TGS Master Secret 加密的 Ticket Granting Ticket (TGT),以及使用使用者的 Master Secret 加密的會話密鑰。
  • 通過 TGT 聯繫 TGS
  • 獲取使用服務的主密鑰加密的票證
  • 憑票聯繫服務

我是否遺漏了什麼,或者將 AS 和 TGS 分開真的沒有問題嗎?

你的問題都是理論。所以我會實物回答。AS 和 TGS 是邏輯伺服器,因此理論上它們可以分開。但在實踐中,沒有充分的理由在不同的機器上實現它們,因此在現實生活中沒有人這樣做。就 Kerberos 身份驗證而言,即使是世界上最大、最繁忙的網路也無需分離 KDC 的邏輯組件。在 Kerberos 的實際實現中,AS 需要的所有數據和 TGS 需要的所有數據都儲存在同一個數據庫中。它理論上可以分開,但沒有充分的理由這樣做,而且只會使實現變得不必要地複雜化。

引用自:https://serverfault.com/questions/589896