Kerberos:分离AS和TGS

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

当然,在同一台物理机器上实现这些服务是有道理的,就像在中小型networking中一样,把这两种服务分开是过分的。 此外,我有一个相对可靠的来源,其中说(翻译):

TGS和AS必须访问相同的DB =>在不同的机器上实现TGS和AS没有什么意义

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

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

  • 由于AS和TGS是分开的,他们有不同的主密钥
  • 应用服务器拥有一个数据库,所有用户都拥有各自的主密钥(用户login,encryption会话密钥时使用)以及TGS的主密钥(用于encryption请求的TGT)。
  • TGS有一个数据库,它允许它确定哪个用户被允许使用哪个服务(ACL,撤销列表…)以及具有所有服务的数据库以及它们各自的主秘密(encryption票证)。

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

  • 在AS进行身份validation
  • 获取使用TGS主密钥encryption的票证授予票证(TGT)以及使用用户主密钥encryption的会话密钥。
  • 与TGT联系TGS
  • 获取一张使用服务主密钥encryption的票
  • 联系服务与机票

我错过了什么东西,还是真的没有任何问题分离AS和TGS?

你的问题是所有的理论。 所以我会以实物回答。 AS和TGS是逻辑服务器,理论上它们可以分开。 但是实际上在单独的机器上没有很好的理由去实现它们,所以在现实生活中没有人这样做。 即使是Kerberos身份validation方面世界上最大,最繁忙的networking,也不需要将KDC的逻辑组件分离出来。 在实际的Kerberos实现中,AS需要的所有数据以及TGS需要的所有数据都存储在同一个数据库中。 它理论上可以分开,但是没有理由这么做,什么也不做,只是不必要地使执行复杂化。