SSL和TLS之间确切的协议级别差异是什么?


40

在询问了此概述问题之后,这是一次技术性的深入探讨。

SSL和TLS之间的协议区别是什么?
真的有足够的区别来保证更名吗?(相对于较新版本的TLS,将其称为“ SSLv4”或SSLv5)


3
我怀疑如果您想真正深入地了解您,则必须开始阅读规格。查阅Wiki页面。它包括指向RFC和规范的链接。
Zoredache

7
@Zoredache,请不要使用“ Wiki”作为“ Wikipedia”的缩写。
Spiff 2010年

Answers:


36

SSLv2和SSLv3完全不同(并且现在都被认为是不安全的)。SSLv3和TLSv1.0非常相似,但有一些区别。

您可以将TLSv1.0视为SSLv3.1(实际上就是在交换的记录中发生的事情)。将TLSv1.0TLSv1.1TLSv1.2进行比较只是比较容易,因为它们都已在IETF中进行了编辑,并且大致遵循相同的结构。SSLv3由其他机构(Netscape)编辑,这使得发现差异更加困难。

这里有一些区别,但是我怀疑是否可以全部列出:

  • ClientHello消息(客户端发送的用于发起握手的第一条消息)中,该版本适用{3,0}于SSLv3,{3,1}TLSv1.0和{3,2}TLSv1.1。
  • ClientKeyExchange不同。
  • MAC / HMAC不同(TLS使用HMAC,而SSL使用HMAC的早期版本)。
  • 密钥推导有所不同。
  • Finished在SSLv3中发送SSL / TLS 消息后,可以直接发送客户端应用程序数据。在TLSv1中,它必须等待服务器的Finished消息。
  • 密码套件的列表有所不同(其中一些密码套件已从更改SSL_*TLS_*,并保持相同的ID号)。
  • 关于新的重新协商扩展,也存在差异。

如果您真的想要更多详细信息,我强烈推荐Eric Rescorla的书-SSL 和TLS:设计和构建安全系统,Addison-Wesley,2001 ISBN 0-201-61598-3。我从本书中学到了以上提到的一些要点。在解释一些SSL / TLS消息时,作者偶尔会提到SSLv3和TLS(仅在撰写本书时为v1.0)之间的区别,但是您确实需要有关这些消息的背景说明,才能有机会了解(因此不宜在此处复制/粘贴此书)。


似乎TLS扩展仅适用于TLS,不适用于SSL,是吗?因此,例如,TL​​S客户端可以发送扩展的ClientHello记录,而仅SSL3的客户端只能发送原始ClientHello的记录。
culix 2014年

一般来说,@ culix确实是正确的(主要是因为TLS扩展是在IETF框架中定义的)。SSLv3还能够在其ClientHello记录中包含其他数据(与TLS 1.0和1.1相同)。(与TLS规范中的7.4.1.2节相比,请查找draft302.txt和“ 为了实现前向兼容性... ”)。为了应对不支持此功能的堆栈,还提供了变通办法,例如重新协商扩展中的SCSV伪密码套件。
布鲁诺

@Bruno,书本链接关闭.....
Pacerier '16

4

我将仅回答其他答案,但重点可能稍有不同。

Netscape拥有一个安全套接字协议,该协议称为SSL版本2。Netscape也拥有一个具有不同记录结构和安全性改进的新版本,并将其称为SSL版本3。 place是二进制版本号字段。对于SSL版本3,此字段设置为0x03 0x00,即版本3.0。然后,IETF决定创建自己的标准。可能是因为SSL存在一些知识产权方面的不确定性,包括“ SSL”是否是Netscape商标,当IETF发布该协议的下一个版本时,他们给它起了自己的名字:传输层安全协议或TLS版本1.0。记录格式和整体结构相同,并且与SSL v3一致。二进制版本号已修改为0x03 0x01,并且正如其他人所指出的,存在一些较小的加密更改。此后出现TLS版本1.1和1.2,其内部协议编号为0x03 0x02和0x03 0x03。

忽略SSLv2,基本上只是名称更改,以及随着人们对安全性和性能变得更加精明而进行的常规协议微调。


3

从根本上讲,这只是协议的较新版本的名称更改。我认为,这样做的主要原因是将它与主要由Netscape设计的较旧的非正式标准区分开来,该标准在成为正式的IETF标准跟踪协议后才得以设计。

就像您先前问题的答案中所说的,这并不意味着SSLv3和TLSv1.0是兼容的。引用RFC 2246:

该协议与SSL 3.0之间的差异并不明显,但它们之间的差异非常大,以至于TLS 1.0和SSL 3.0无法互操作。

我想如果您真的想知道协议中的确切差异,则必须阅读标准并进行比较。

Netscape TLSv1.0 RFC 2246的SSLv3协议草案


@SvenW我将自己比较一下,但这是一个很大的挑战,不确定我是否愿意承担。该标准已经存在了十年。当然,已经有人用漂亮的图形进行了比较,以便像我这样的人可以理解。
goodguys_activate

@ MakerOfThings7不幸的是,这个问题不能归结为饼图。唯一可以显示在图表上的是加密比特率或(在此我要扩展)授予的安全级别(其中SSLv3为“-”,而TLS为“ =“ ...))可以通过实际阅读规格或至少阅读Wikipedia页面(我在上一个问题中提供给您)来获得
gWaldo 2010年

@SvenW您自己阅读并理解了这两个规范吗?
goodguys_activate

不,我为什么要这样?我不是按照该规范编写软件的开发人员,这是我能想到的唯一理由。如果我需要使用SSL / TLS,请阅读OpenSSL等文档,这对于用户和管理员来说已经足够了。
斯文

@SvenW没有冒犯,但是我会一直保持公开状态,直到得到阅读并理解了规格的人的回复为止。考虑到我的问题,这是合理的。
goodguys_activate 2010年

0

加密协议SSL现在称为TLS,从而为同一协议生成两个名称。当前软件将自动协商TLS版本1或SSL版本3。另一方面,人类必须在使用更易识别的SSL术语与官方TLS名称之间做出选择。

SSL是TLS的前身。

TLS和SSL在应用程序层加密网络连接段,以确保在传输层进行安全的端到端传输。


这是一个更名吗?而已?
goodguys_activate 2010年

是TLS是较新的版本,TLS可以根据需要将其自身转换为SSL3。
aleroot 2010年

3
不,这不是一个更名。TLSv1可与SSLv3互操作(并将回退),但反之则不一定如此。TLSv1就像SSLv4。注意:TLS还有多个版本。
菲利普·雷诺兹

-2

差异:

  • TLS完全在标准协议上运行。TLS连接的开始就像标准服务的未加密会话一样,但是在某些时候它们开始协商加密。它要求扩展用于此协商的标准协议。
  • 标准协议在SSL之上运行。SSL连接首先协商加密,然后在其上运行基本协议。

这是不正确的,你和SSL / TLS开始,在协议中通过命令,如STARTTLS切换到TLS之间交谈的区别:stackoverflow.com/questions/3660798/...
布鲁诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.