加密 – 安全认证:SSL与SASL

我的理解是,SSL将加密算法(如AES,DES等)与密钥交换方法(如Diffier-Hellman)相结合,以在不安全网络(如Internet)上的两个端点之间提供安全加密和识别服务, 。

我的理解是,SASL是一个MD5 / Kerberos协议,几乎完全相同。

所以我的问题是:选择两者的优缺点是什么?基本上,我正在寻找一些在选择SSL或使用SASL时遵循的指导原则。提前致谢!

比较SSL / TLS和SASL是非常困难的,因为SSL / TLS是通信协议,而SASL是与其他协议集成的框架。 (实际上,在某些情况下可以同时使用。)

此外,您还提到了Kerberos,它确实是一种身份验证协议(可以与SSL / TLS或SASL一起使用或独立使用)。您的问题似乎表明,是否使用Kerberos您应该首先选择的主要子问题之一。

SASL本质上是一个间接层,允许现有应用协议(例如LDAP,SMTP,Subversion,…)中的可插拔认证系统和数据安全性,尽管这些协议需要了解此扩展(例如SMTP auth)。是否以及如何提供安全的身份验证和数据加密在很大程度上取决于此框架内使用的underlying mechanism。以下是svnserve documentation的一个例子:“内置的CRAM-MD5机制不支持加密,但DIGEST-MD5则不会”。
如果要使用Kerberos与SASL,您将需要另一层次间接:GSS-API(最常用于Kerberos,但也可以允许其他机制)。 (请注意,在SASL的上下文中,GSSAPI似乎暗示了Kerberos,与其GS2 successor不同)

SSL / TLS的一般目标是确保客户端和服务器之间的通信(完整性和机密性)。客户端应始终检查SSL / TLS服务器的身份,并为服务器提供检查客户端身份的机制。它可以做的还取决于它的配置方式。 SSL / TLS最常用于X.509证书:浏览器可以检查HTTPS服务器的身份。还可以将服务器配置为请求客户端使用证书来识别自己(客户端证书身份验证)。
但是,如果要使用Kerberos,可以使用TLS Kerberos cipher suites.这不太常见,但是它们是implemented in the JSSE

它的实现通常提供类似于使用纯TCP连接的API:在Java中,一旦配置,您可以或多或少地使用SSLSocket,就像使用普通Socket一样。尽管某些协议具有明确的命令来从普通连接切换到SSL / TLS,但这并不需要协议顶端的特定的意识(Implicit v.s. Explicit SSL/TLS)。它也可以提供认证。在Java中,JSSE是默认的SSL / TLS实现,可让您访问SSLSocket(如果您足够勇敢,则可以访问SSLEngine)。

您可能想要阅读“When to use Java GSS-API vs. JSSE”,类似于“SASL vs. SSL / TLS”(尽管似乎没有更新一段时间,因为JSSE现在支持Kerberos密码套件,至少自从Oracle Java 6)。

我承认我不太了解SASL而不是SSL / TLS,但是通过SASL进行数据加密听起来好像会更多的工作。它似乎没有某些SSL / TLS功能,如Perfect Forward Secrecy offered by EDH cipher suites.有一个example that uses SASL with GSSAPI (Kerberos here) in the JGSS tutorial:您需要明确地打包/打开数据,这在使用SSLSockets时不必这么做。

我认为您主要关心的是首先要决定使用哪种身份验证机制:Kerberos,X.509证书或其他内容。这将对您的整体架构产生更大的影响,而且两者都可以与SASL和SSL / TLS一起使用(更多的是,如果在SSL / TLS连接之上使用具有EXTERNAL机制的SASL)。

Kerberos非常集中。除了可以联系您的应用服务器外,客户端还需要能够联系KDC进行身份验证。客户端也需要配置使用该KDC。从用户的角度来看,他们可以使用密码。
> X.509更分散。但是,您可能需要为您的用户证书部署证书颁发机构(或使用商业版本)。用户需要获得证书和私钥,有些可能会发现太复杂。

JAAS是因为它是用于处理身份验证和授权的通用Java框架。这与安全管理人员的概念密切相关。它给出了Subject and Principal的概念。这不是直接与协议或通信相关联,而是与您在应用程序中建立身份验证和授权的方式。 (它为您提供了一套标准的课程。)

(我通常会建议您通过Java reference documents,提及您所说的话:JGSS,SASL,…虽然不一定很容易阅读。)

http://stackoverflow.com/questions/11347304/security-authentication-ssl-vs-sasl

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:加密 – 安全认证:SSL与SASL