密钥分发

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

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

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

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

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

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

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