STARTTLS比TLS / SSL更安全吗?

在雷鸟(我也承担了许多其他客户端),我可以select“SSL / TLS”和“STARTTLS”之间进行select。

据我了解,“STARTTLS”的意思是简单的说“如果两端都支持TLS,则encryption,否则不要encryption传输” 。 而“SSL / TLS”的意思是简单的说“永远encryption或根本不连接”它是否正确?

换句话说:

STARTTLS不如SSL / TLS安全,因为它可以回退到明文而不通知我?

基于SMTP( RFC 3207 )的STARTTLS RFC的答案是:

STARTTLS不如TLS安全。

我不会自己说话,而是让RFC自己说话,用BOLD高亮显示四个相关位:

通过从服务器上删除“250 STARTTLS”响应,可以启动中间人攻击。 这会导致客户端不尝试启动TLS会话。 另一种中间人攻击是允许服务器公布其STARTTLSfunction,但是要改变客户端启动TLS和服务器响应的请求。 为了抵御这种攻击,客户端和服务器必须能够被configuration为在成功传输消息之前,要求成功的TLS为所选主机提供合适的密码套件。 在可能的情况下,还应提供使用TLS的附加选项 。 实现可以提供loggingTLS用于与给定对等进行通信的能力,如果在以后的会话中没有使用TLS,则会生成警告。

如果TLS协商失败或客户端收到454响应,客户端必须决定下一步做什么。 有三个主要的select:继续SMTP会话的其余部分,

正如你所看到的,RFC本身(不是非常清楚,但是很清楚)没有任何要求客户端build立安全连接,并告知用户安全连接是否失败。 它明确地为客户提供了默默build立纯文本连接的选项。

这两个选项之间的安全性没有区别。

  • SSL / TLS首先打开SSL / TLS连接,然后开始SMTP事务。 这必须发生在没有运行非SSL / TLS SMTP服务器的端口上; 由于协议的性质,不可能将单个端口configuration为处理纯文本和encryption连接。

  • STARTTLS启动SMTP事务,并在对EHLO的响应中寻找TLS另一端的支持。 如果客户端在支持的命令列表中看到STARTTLS,则发送STARTTLS并开始协商以进行encryption。 所有这些都可以(并且通常)发生在标准的SMTP端口25上,部分是为了向后兼容,但是也允许在支持它但不一定需要它的端点之间机会性encryption。

通常,SSL / TLS仅用于最终客户端和服务器之间。 在MTA之间,STARTTLS更常用于保证服务器间的传输。

鉴于这两种实现,如果用户或pipe理员假定连接已encryption,但实际上并未将其configuration为需要encryption,则可能会将STARTTLS解释为不安全。 但是,所使用的encryption与SSL / TLS完全相同,因此除了这种types的configuration错误之外,不会多或less容易受到中间人攻击。

是的,你有基本的权利。 是的,STARTTLS绝对不安全。 它不仅可以在没有通知的情况下进行明文故障恢复,还可以进行中间人攻击。 由于连接开始清晰,MitM可以删除STARTTLS命令,并防止encryption发生。 但是,我相信邮件服务器可以指定传输只发生在encryption隧道已经build立后。 所以你可以解决这个问题。

那么为什么这样的事情甚至存在? 为了兼容性原因。 如果任何一方不支持encryption,您可能仍然希望连接正确完成。

同意@Greg。 这些攻击是可能的。 但是,可以configurationMTA(取决于MTA)以使用“强制TLS”,而不是“机会主义TLS”。 这意味着对于电子邮件交易使用TLS和仅TLS(这也包括STARTTLS)。 如果远程MTA不支持STARTTLS,则电子邮件将被退回。