Kerberos:分离 AS 和 TGS

Kerberos:分离 AS 和 TGS

在Kerberos中,认证服务器(AS)和票证授予服务器(TGS)一般实现在同一台服务器上,这台机器叫做密钥分发中心(KDC)。

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

TGS 和 AS 必须访问相同的数据库 => 在不同的机器上实现 TGS 和 AS 没有多大意义

但是我不知道这两者之间必须共享哪个数据库。

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

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

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

  • 在 AS 上进行身份验证
  • 获取使用 TGS 主密钥加密的票证授予票证 (TGT),以及使用用户主密钥加密的会话密钥。
  • 通过 TGT 联系 TGS
  • 获取使用服务主密钥加密的票证
  • 持票人联系服务

是我遗漏了什么吗,还是分离 AS 和 TGS 真的没有问题?

答案1

你的问题都是理论。所以我会以同样的方式回答。AS 和 TGS 是逻辑服务器,因此它们可以理论上可以分开。但在实践中,没有充分的理由将它们实现在单独的机器上,因此在现实生活中没有人这样做。即使是世界上最大、最繁忙的 Kerberos 身份验证网络也不需要将 KDC 的逻辑组件分开。在 Kerberos 的实际实现中,AS 需要的所有数据和 TGS 需要的所有数据都存储在同一个数据库中。它可以理论上应该分开,但是没有充分的理由这样做,而且只会使实施过程变得复杂化。

答案2

我能想到的一个原因是,如果对身份验证服务器的攻击成功,可能会导致身份验证服务器瘫痪,从而使颁发的令牌和密钥(在 TGS 和 AS 之间)变得毫无用处。然后,客户端将被拒绝访问资源所在的应用服务器。在颁发的令牌的有效期内,将它们分开是有意义的。

相关内容