嘿:)我正在学习Kerberos。我首先读到了MIT Kerberos,然后了解了它在Microsoft中的用法。我发现了一些不同。我只想确认一下。在最初的MIT Kerberos中,密码的哈希永远不会从客户端发送到服务器,但在Microsoft Kerberos中会发生这种情况,这是正确的吗?
发布于 2020-06-09 01:25:59
哈?
Kerberos就是Kerberos。它是一个定义良好的规范,所有不同的实现或多或少都实现了相同的内容。Windows实现当然也有它自己的怪癖,但它不会以任何方式将密码散列发送到服务器。
Kerberos使用密钥协商过程来交换消息。客户端和KDC都知道用户的“长期凭证”,这是他们使用特定密钥派生函数散列的密码。当客户端想要向KDC发送消息时,它使用长期凭证对其进行加密。KDC知道该凭证,因此可以对其进行解密。响应是以同样的方式加密的。
通常情况下,任何一方都不会将密码或其散列发送给另一方。
然而,有两个独立但特定的场景不适用于此。
当使用证书通过PKINIT登录时,Windows将在user PAC of the ticket中包含长期凭证(以便工作站可以解密它),并将其加密为Diffie-Hellman导出的秘密。
另一种情况是,当进行FIDO登录时,长期凭据包含在authorization data element中。
这两种方案都允许客户端支持仅支持密码身份验证的旧协议。
https://stackoverflow.com/questions/62266645
复制相似问题