我了解 Kerberos 使用加密提供身份验证。我看到它交换会话密钥。这些会话密钥是否用于应用程序在执行身份验证后通过网络加密发送数据?
举个例子来说明:
如果我对我的 telnet 服务器和客户端进行 Kerberos 化,那么我的客户端和服务器会话是否也会被加密(大概使用前面提到的会话密钥)(即嗅探器无法看到我在会话中输入的命令)?
我发现基于 HTTP 的 SPNEGO kerberos 不遵循此规定,因此需要使用 SSL 来保护会话。
答案1
这完全取决于服务的实现方式。我确信大多数版本的 Kerberized telnet 确实使用会话密钥来加密流量。
这将是旧程序对 kerberos API 的“标准”使用。几乎所有标准 kerberos 发行版附带的程序都以这种方式使用 kerberos。要查找的关键 API 是
krb5_mk_priv
另一个标准 API 是
gss_wrap
然而在这种情况下,您需要检查呼叫参数以确定是否启用了隐私。
看
http://www.kerberos.org/software/appskerberos.pdf
了解有关如何在应用程序中使用 kerberos 的相对较新的概述。
SPNEGO 是 Kerberos 世界中的特殊情况,因为它仅用于身份验证。一般来说,在应用程序协议中,任何正确设计的 Kerberos 使用都将包括会话数据加密,除非您出于某种原因专门将其关闭。
不幸的是,并非所有的 kerberos 用途都经过了适当的设计。在检查任何声称支持 kerberos 的应用程序时,您必须验证这一点。