密钥分发

密钥身份验证技术不说明客户端和服务器如何获取在彼此会话中使用的机密 会话密钥 。 如果他们是人,他们可以秘密见面,同意钥匙。 但是,如果客户端是在工作站上运行的程序,而服务器是在网络服务器上运行的服务,则该方法将不起作用。

客户端需要与多个服务器通信,并且每个服务器都需要不同的密钥。 服务器与许多客户端通信,并且每个客户端也需要不同的密钥。 如果每个客户端需要针对每个服务器使用不同的密钥,并且每个服务器需要每个客户端的不同密钥,则密钥分发会成为一个问题。 此外,需要存储和保护许多计算机上的许多密钥会产生巨大的安全风险。

Kerberos 协议的名称建议其解决密钥分发问题。 克贝罗斯 (或塞贝鲁斯) 是古典希腊神话中的一个人物——一只凶猛的三头狗,阻止活着的入侵者进入黑社会。 与神话保护一样,Kerberos 协议有三个头:客户端、服务器和受信任的第三方,用于在它们之间进行调解。 此协议中的受信任中介是密钥分发中心 (KDC) 。

KDC 是在物理安全服务器上运行的服务。 它维护一个数据库,其中包含其领域中所有 安全主体的 帐户信息。 领域是 Windows 中域的 Kerberos 等效项。

除了有关每个安全主体的其他信息外,KDC 还存储只有主体和 KDC 知道的加密密钥。 这是每个安全主体与 KDC 之间的交换中使用的 主密钥 。 在 Kerberos 协议的大多数实现中,此主密钥是使用安全主体密码中的 哈希 函数派生的。

当客户端想要与服务器建立安全连接时,客户端首先会向 KDC 发送请求,而不是向要访问的服务器发送请求。 KDC 创建一个唯一 的会话密钥 并将其发送给客户端,供客户端和服务器用来对彼此进行身份验证。 KDC 有权访问客户端的主密钥和服务器的主密钥。 KDC 使用服务器的主密钥加密服务器的会话密钥副本,并使用客户端的主密钥加密客户端副本。

KDC 可以通过将会话密钥直接发送给所涉及的每个安全主体来履行其作为受信任中介的角色,但实际上,由于多种原因,此过程不起作用。 相反,KDC 会将这两个加密的会话密钥发送到客户端。 服务器的会话密钥包含在 会话票证中。