SSL 和 Kerberos 身份验证之间的区别?

Posted

技术标签:

【中文标题】SSL 和 Kerberos 身份验证之间的区别?【英文标题】:Difference between SSL and Kerberos authentication? 【发布时间】:2010-09-11 19:14:36 【问题描述】:

我试图了解 SSL 和 Kerberos 身份验证之间的实际区别是什么,以及为什么有时我同时拥有 SSL 流量和 Kerberos。 或者 Kerberos 是否以任何方式使用 SSL?

有人可以帮忙吗? 谢谢!

【问题讨论】:

大概,“SSL 身份验证”是指“通过 X.509 证书进行基于 PKI 的身份验证,因为它经常发生在 SSL/TLS 中”。 SSL 并不严格依赖于 X.509 证书。见***.com/questions/4878018/… secureblackbox.com/kb/articles/6-Kerberos.rst 【参考方案1】:

SSL 使用公钥加密:

    您(或您的浏览器)有一个公钥/私钥对 服务器也有公钥/私钥 您生成一个对称会话密钥 您使用服务器的公钥进行加密,然后将此加密的会话密钥发送到服务器。 服务器使用其私钥解密加密的会话密钥。 您和服务器开始使用对称会话密钥进行通信(主要是因为对称密钥更快)。

Kerberos 不使用公钥加密。它使用受信任的第 3 方。这是一个草图:

    你们(服务器和客户端)向受信任的第 3 方证明您的身份(通过秘密)。 当您想使用服务器时,您检查并查看服务器是否可信。同时,服务器会检查您是否值得信赖。现在,相互确定对方的身份。您可以与服务器通信。 2

【讨论】:

Kerberos 可以将公钥加密用于其会话密钥。该标准从 2006 年的共享密钥机制扩展而来,请参阅ietf.org/rfc/rfc4556.txt 了解更多详情 我想我说的是旧的 Kerberos 协议。另一点是区分您在 SSL 中如何为自己担保(通过公钥/私钥),而在 Kerberos 中,即使使用 PKC 作为会话密钥,服务器仍在为您担保。【参考方案2】:

虽然Kerberos 和SSL 都是协议,但 Kerberos 是一种身份验证协议,而 SSL 是一种加密协议。 Kerberos 通常使用UDP,SSL 使用(大部分时间)TCP。 SSL 身份验证通常通过检查嵌入在称为 X.509 certificates 的东西中的服务器和客户端的 RSA 或 ECDSA 密钥来完成。您已通过证书和相应的密钥进行身份验证。使用 Kerberos,您可以通过密码或其他方式进行身份验证。例如,Windows uses Kerberos 在域中使用时。

请记住:SSL 的最新版本称为传输层安全性 TLS。

【讨论】:

首先,SSL 并不需要 TCP。它可以在任何传输上运行,只要传输保证交付,并且有 DTLS,它是对 TLS 的轻微修改以在 UDP 上运行。接下来,SSL 不仅允许使用证书进行身份验证,还允许使用密码、openpgp 密钥等进行身份验证。 除了@Eugene 所说的,TLS 中也有基于 Kerberos 的密码套件。 Kerberos 可以使用 UDP 和 TCP【参考方案3】:

简而言之,Kerberos 是一种协议,用于通过受信任的第三方为客户端和服务器建立相互身份信任或身份验证,而 SSL 确保仅对服务器进行身份验证,并且仅当其公钥具有已经通过另一个渠道被确定为值得信赖。两者都提供服务器和客户端之间的安全通信。

更正式(但不涉及数学证明),给定客户端 C、服务器 S 和第三方 T CS 都信任:

Kerbeos 认证后,确定:

C 认为 S 是它打算联系的人 S 相信 C 就是它自称的那个人 C 认为它与 S 有安全连接 C 相信 S 相信它与 C 有安全连接 S 认为它与 C 有安全连接 S 相信 C 相信它与 S 有安全连接

另一方面,SSL 仅确定:

C 认为 S 是它打算联系的人 C 认为它与 S 有安全连接 S 认为它与 C 有安全连接

显然,Kerberos 建立了更强大、更完整的信任关系。

此外,为了通过 SSL 建立 S 的身份,C 需要关于 S 的先验知识,或确认此信任的外部方式.对于大多数人的日常使用,它以根证书的形式出现,并缓存 S 的证书以供将来交叉引用。

如果没有这些先验知识,SSL 很容易受到中间人攻击,第三方可以通过以下方式伪装成 SC使用 2 个独立的安全通道将它们之间的通信中继到 CS。要破坏 Kerberos 身份验证,窃听者必须伪装成 TSC。但是请注意,根据 Kerberos 的目标,信任集仍然没有中断,因为根据前提条件“CS 信任,最终状态仍然正确。 T"。

最后,正如评论中指出的那样,Kerberos 可以并且已经被扩展为使用类似 SSL 的机制来建立 CT 之间的初始安全连接em>。

【讨论】:

SSL 完全能够使用客户端证书建立客户端的身份。 我知道这是一个老问题,但我一直在努力寻找一套“最佳实践”指南,以便在选择 SSL 与 Kerberos 时使用。恕我直言,这个答案不仅是这个问题的最佳答案,而且是谷歌撤回的最佳答案。时期。荣誉。 SSL 客户端证书如何确定客户端机器的身份很清楚,但不清楚它们如何确定客户端用户的身份>。例如,如果用户拿起不同的设备,或者通过双跳连接到服务。然而,Kerberos 以非常低摩擦的方式做到了这一点。 对我来说,根 CA 是第 3 方。所以还是类似的。而在 Kerberos 中,C 和 S 如何信任 T?【参考方案4】:

简而言之:

Kerberos 通常不加密传输数据,但 SSL 和 TLS 会。

“没有用于访问这些消息的标准 API。截至 Windows Vista,微软没有为用户提供机制 生成 KRB_PRIV 或 KRB_SAFE 消息的应用程序。” - 来自 http://www.kerberos.org/software/appskerberos.pdf

相反,SSL 和 TLS 通常不会将您的 Windows 域登录名传输和证明到服务器,但 Kerberos 会。

【讨论】:

【参考方案5】:

简短回答:SSL 和 Kerberos 都使用加密,但 SSL 使用在会话期间不变的密钥,而 Kerberos 使用多个密钥来加密客户端和客户端之间的通信。

在 SSL 中,加密由通信的两端直接处理,而在 Kerberos 中,加密密钥由客户端和服务器之间的第三方(某种中介)提供。

【讨论】:

不完全是这样 - 可以在 TLS 中即时更改密钥(这通常称为重新键入)。【参考方案6】:

来自http://web.mit.edu/kerberos/: Kerberos 由 MIT 创建,旨在解决这些网络安全问题。 Kerberos 协议使用强加密,因此客户端可以通过不安全的网络连接向服务器证明其身份(反之亦然)。在客户端和服务器使用 Kerberos 证明其身份后,他们还可以加密所有通信,以确保他们在开展业务时的隐私和数据完整性。

同时: SSL 用于通过公钥加密建立服务器服务器身份验证。

【讨论】:

【参考方案7】:

来自https://www.eldos.com/security/articles/7240.php?page=all,

Kerberos 和 TLS 不是要比较的东西。他们有不同的目标和不同的方法。在我们文章的开头,我们提到了“哪个更好”和“选择什么”等常见问题。前者根本不是问题:如果你以正确的方式使用它,没有什么是更好的,一切都是好的。后一个问题值得认真考虑:选择什么取决于您拥有什么以及您想要什么。

如果您想在没有人可以读取或篡改的意义上保护您的通信,也许正确的选择是使用 TLS 或其他一些基于它的协议。使用 TLS 保护由 HTTP 承载的万维网流量的一个很好的例子是使用 HTTPS。对于安全文件传输,您可以使用 FTPS,并考虑到 SMTP(尽管它代表“简单”邮件传输协议,而不是“安全”)也可能受到 TLS 保护。

另一方面,如果您需要管理用户对服务的访问,您可能需要使用 Kerberos。例如,想象一下,您有多个服务器,如 Web 服务器、FTP、SMTP 和 SQL 服务器,以及可选的其他服务器,所有内容都在一台主机上。一些客户端允许使用 SMTP 和 HTTP,但不允许使用 FTP,其他客户端可能使用 FTP 但无权访问您的数据库。这正是 Kerberos 即将使用时的情况,您只需在 Authentication Server 中描述用户权限和管理策略。

【讨论】:

我为什么要“管理用户对服务的访问”(即为不同资源的“相同用户”授予不同权限)?为什么我不为每个服务用户组合创建一个具有一组权限的“用户帐户”?除了必须记住一个密码的可用性优势之外,我认为单用户理念没有任何优势 - 但是密码管理器可以在更高级别上提供这种可用性。另外我不明白“在一个主机上”的服务与身份验证有什么关系。

以上是关于SSL 和 Kerberos 身份验证之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 集成 (NTLM) 身份验证与 Windows 集成 (Kerberos)

Kerberos 双跃点身份验证 - SQL Server

在 PowerShell 中,我应该使用哪种身份验证方案?

[Kerberos] Kerberos教程

Kerberos协议

HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?