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

时间:2020-03-06 14:30:34  来源:igfitidea点击:

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

有人可以帮忙吗?
谢谢!

解决方案

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

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

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

相关说明:SSL的最新版本称为"传输层安全性的TLS"。

SSL使用公共密钥加密:

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

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

  • 你们(服务器和客户端)都向可信的第三方证明身份(通过秘密)。
  • 当我们要使用服务器时,请检查并确认服务器是可信任的。同时,服务器检查我们是否值得信任。现在,相互保证彼此的身份。我们可以与服务器通信。 2个

简而言之,Kerberos是一种协议,用于通过受信任的第三方为客户端和服务器建立相互身份信任或者身份验证,而SSL仅在服务器的公钥已建立的情况下才确保对服务器的身份验证。通过其他渠道值得信赖。两者都提供服务器与客户端之间的安全通信。

给定客户端C,服务器S和C和S都信任的第三方T,从更正式的角度讲(但无需深入研究数学证明):

经过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容易受到中间人攻击,在这种情况下,第三方可以通过使用两个独立的安全通道向C和S中继通信,从而假装是S到C。 Kerberos身份验证,窃听者必须同时伪装成S和C的T。但是,请注意,根据Kerberos的目标,信任集仍未中断,因为根据前提条件" C和S,最终状态仍然正确"信任T"。

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