Kerberos——如果 TGT 在途中被盗怎么办?

Kerberos——如果 TGT 在途中被盗怎么办?

在 Kerberos 中,KDC(密钥分发中心)创建一个 TGT 并将其发送回客户端。客户端无法打开它,也不应该打开它。

如果有人窃听并窃取 TGT,然后将其发送给 KDC 以获取票证,该怎么办?

答案1

经过进一步挖掘,我想我找到了答案。当 TGT 返回给客户端时,它有两个主要部分,如下所示:

在此处输入图片描述

需要注意的关键点是,整个 TGT 都使用客户端(Alice)的私钥(Alice 的密码)进行加密,但在这个 TGT 内有一张密封的票证,并且该票证使用票证授予服务(TGS,创建 TGT 的服务)进行加密。

一旦整个 TGT 到达客户端,客户端就会解密,结果是

  1. A密封票(TFS 加密并且将保持加密状态)。
  2. 会话密钥

从现在起,每当客户端需要服务票证(不是 TGT,而只是票证)时,客户端必须在所有请求中发送(TGT)的密封票证部分,并且请求必须使用会话密钥如下所示:

在此处输入图片描述

因此,如果中间人掌握了原始 TGT,如下所示:

在此处输入图片描述

,他们无法将其解密为各个部分。如果他们要发送它以获取票证,它将不仅包含密封票但整个内容和请求将不会使用加密会话密钥。因此,当服务器解密时,它不会只是密封票,并且它不会使用会话密钥加密(怎么会这样?攻击者无法解密获取会话密钥)因此它会拒绝它。

另一个预防措施是原始客户端的 IP 在票证内,因此只有来自同一 IP 的请求才能使用该票证;然而,这只是另一个预防措施。

这里了解更多信息。

答案2

该协议描述于维基百科上有关 Kerberos 的文章

当身份验证服务器向客户端提供 TGT 时,它还会提供一个客户端/TGS 会话密钥,该密钥使用用户密码生成的密钥加密,以便客户端可以解密。

窃听者没有用户的密码,因此无法解密客户端/TGS 会话密钥。没有它,TGT 就毫无用处。

相关内容