系统管理指南:安全性服务

使用 Kerberos 获取服务访问权限

要访问特定服务器上的特定服务,用户必须获取两个凭证。第一个凭证用于票证授予票证(称为 TGT)。票证授予服务对此凭证进行解密之后,该服务即可为用户请求访问的服务器创建第二个凭证。然后,可使用第二个凭证来请求访问该服务器中的相应服务。该服务器成功解密第二个凭证后,便会授予用户访问权限。以下各节详细介绍了此过程。

获取用于票证授予服务的凭证

  1. 要启动验证过程,客户机需要向验证服务器发送针对特定用户主体的验证请求。该请求在发送时未加密。由于请求中未包含安全信息,因此无需加密。

  2. 验证服务收到该请求后,将在 KDC 数据库中查找该用户的主体名称。如果主体与数据库中的项匹配,则验证服务可获取该主体的私钥。然后,验证服务将生成一个供客户机和票证授予服务使用的会话密钥(称为会话密钥 1),以及一个用于票证授予服务的票证(票证 1)。此票证也称作票证授予票证 (Ticket-Granting Ticket, TGT)。会话密钥和票证均使用该用户的私钥进行加密,并且会将信息发回客户机。

  3. 客户机通过该用户主体的私钥,使用此信息对会话密钥 1 和票证 1 进行解密。由于该私钥仅对此用户和 KDC 数据库公开,因此包中的信息应是安全的。客户机将该信息存储在凭证高速缓存中。

在此过程中,通常会提示用户输入口令。如果用户指定的口令与用于生成存储在 KDC 数据库中的私钥的口令相同,则客户机可以成功解密验证服务发送的信息。现在,客户机便拥有了用于票证授予服务的凭证。客户机现在可以请求用于服务器的凭证。

图 26–2 获取用于票证授予服务的凭证

流程图显示了客户机从 KDC 请求用于服务器访问的凭证,然后使用口令解密返回的凭证。

获取用于服务器的凭证

  1. 要请求访问特定服务器,客户机必须首先从验证服务获取用于该服务器的凭证。请参见获取用于票证授予服务的凭证。然后,客户机会向票证授予服务发送请求,其中包含服务主体名称、票证 1 以及使用会话密钥 1 加密的验证者。票证 1 最初是由验证服务使用票证授予服务的服务密钥加密的。

  2. 由于票证授予服务的服务密钥对票证授予服务公开,因此可以解密票证 1。票证 1 中的信息包括会话密钥 1,因此票证授予服务可以解密验证者。此时,可使用票证授予服务验证用户主体。

  3. 成功验证后,票证授予服务将为用户主体和服务器生成一个会话密钥(会话密钥 2),以及一个用于服务器的票证(票证 2)。然后,使用会话密钥 1 加密会话密钥 2 和票证 2。由于会话密钥 1 仅对该客户机和票证授予服务公开,因此此信息是安全的并可在网络上安全发送。

  4. 客户机收到此信息包后,将使用存储在凭证高速缓存中的会话密钥 1 解密此信息。客户机即获取用于服务器的凭证。现在,客户机可以请求访问该服务器中的特定服务。

图 26–3 获取用于服务器的凭证

流程图显示了客户机将使用会话密钥 1 加密的请求发送到 KDC,然后使用同一密钥解密返回的凭证。

获取对特定服务的访问权限

  1. 要请求访问特定服务,客户机必须首先从验证服务器获取用于票证授予服务的凭证,然后从票证授予服务获取服务器凭证。请参见获取用于票证授予服务的凭证获取用于服务器的凭证。然后,客户机可将包含票证 2 和另一个验证者的请求发送到该服务器。该验证者使用会话密钥 2 进行加密。

  2. 票证 2 是由票证授予服务使用该服务的服务密钥进行加密的。由于服务密钥对服务主体公开,因此该服务可以解密票证 2 并获取会话密钥 2。然后,可使用会话密钥 2 解密验证者。如果成功解密验证者,则可授予客户机对该服务的访问权限。

图 26–4 获取对特定服务的访问权限

流程图显示了客户机使用票证 2 以及通过会话密钥 2 加密的验证者,来获取对服务器的访问权限。