关于 Kerberos,有 3 件事我不完全理解。
假设我们正在向 AD 域添加新服务器。KDC 为该服务器创建共享密钥,该密钥如何安全地发送到服务器?
有一位用户是 AD 域的成员。该用户有自己的密钥(密码),并且正在更改它 - 如何安全地将其传递给 KDC 以更新其数据库?
由于每个 DC 都可以(或者可能必须)拥有 KDC,KDC 数据库是否在每个 DC 之间复制?如果是,如何确保安全?
答案1
AD 中的每个主体(用户、机器、服务、信任对象)都有一个密码,并且每个对象都有此密码的几种不同哈希类型(MD4、AES、DES 等)。哈希值用作身份验证的对称密钥。身份验证通常会生成用于传输加密的会话密钥。
所以...
- 将设备加入域时另一个帐户用于设置安全通道。该安全通道允许设备提交自己的设备密码。然后,当 KDC 要求设备更改密码时(通过到期窗口),设备会定期更改密码。
- 用户正常进行身份验证,生成会话密钥。此会话密钥加密更改密码请求,其中包含明文密码。KDC 可以解密请求,因为它知道会话密钥,并尝试更改密码,为帐户生成各种哈希值。
- 通常情况下,所有数据都会同步,但在某些情况下,例如只读 DC,只有一部分数据会同步。这主要是数据库复制的功能。每个 DC 都有自己的机器机密,并向其对等 DC 进行身份验证。身份验证会生成一个会话密钥,用于保护复制流量。