Kerberos:分离 AS 和 TGS

Mis*_*sch 9 kerberos

在 Kerberos 中,身份验证服务器 (AS) 和票证授予服务器 (TGS) 通常在同一台服务器上实现。这台机器称为密钥分发中心 (KDC)。

当然,在同一台物理机器上实现这些服务是有意义的,因为在中小型网络中,将这两种服务分开是多余的。另外,我有一个相对可靠的消息来源,它说(翻译):

TGS 和 AS 必须访问同一个 DB => 在不同的机器上实现 TGS 和 AS 没有多大意义

但是我没有看到必须在两者之间共享哪个数据库。

这是我的想法,我将如何分离 AS 和 TGS,没有共享数据库:

  • 由于AS和TGS是分开的,他们有不同的Master Secret
  • AS 有一个数据库,其中包含所有用户及其各自的主密钥(在用户登录时使用,用于加密会话密钥),以及 TGS 的主密钥(用于加密请求的 TGT)。
  • TGS 有一个数据库,它允许它确定允许哪个用户使用哪个服务(ACL、撤销列表等),以及一个数据库,其中包含所有服务及其各自的主机密(用于加密票证)。

当用户想要使用服务时(简化):

  • 在 AS 上进行身份验证
  • 获取使用 TGS Master Secret 加密的 Ticket Granting Ticket (TGT) 以及使用用户的主密钥加密的会话密钥。
  • 与 TGT 联系 TGS
  • 获取使用服务的主密钥加密的票证
  • 凭票联系服务

我是否遗漏了什么,或者将 AS 和 TGS 分开真的没有问题吗?

Rya*_*ies 4

你的问题都是理论。那么我就以实物来回答吧。AS和TGS是逻辑服务器,因此理论上它们可以分开。但实际上,没有充分的理由在单独的机器上实现它们,因此在现实生活中没有人这样做。即使是世界上最大、最繁忙的 Kerberos 身份验证网络也无需分离 KDC 的逻辑组件。在Kerberos的实际实现中,AS需要的所有数据和TGS需要的所有数据都存储在同一个数据库中。从理论上讲,它可以分开,但没有充分的理由这样做,而且除了不必要地使实施变得复杂之外,什么也做不了。