SSL和TLS之间的区别
根据维基百科: http : //en.wikipedia.org/wiki/Transport_Layer_Security
似乎TLS是SSL的替代品,但大多数网站仍在使用SSL?
总之,TLSv1.0或多或less是SSLv3.1。 您可以在ServerFault上的这个问题中find更多的细节。
本研究表明(Lee,Malkin和Nahum的论文: SSL / TLS服务器的密码强度:当前和近期实践 ,IMC 2007),大多数网站实际上同时支持SSLv3和TLSv1.0(链接从IETF TLS列表中获得 )。 超过98%支持TLSv1 +。
我认为SSLv3仍然在使用的原因是为了支持传统(尽pipe大多数浏览器支持TLSv1和一些TLSv1.1甚至TLSv1.2)。 直到不久之前,一些发行版默认还有SSLv2(被认为是不安全的)。
(您也可能会发现这个问题很有趣,虽然它是关于TLS的使用模式,而不是SSL与TLS(实际上您可以使用与SSL相同的模式),但HTTPS不适用于HTTPS,因为HTTPS使用SSL / TLS从连接开始。)
来自http://www.thoughtcrime.org/blog/ssl-and-the-future-of-authenticity/
在九十年代初,在万维网出现之初,Netscape的一些工程师开发了一个用于进行安全HTTP请求的协议,他们想到的是SSL。 鉴于当时有关安全协议的知识相对稀less,以及网景所有人面临的巨大压力 ,他们的努力只能被视为非常英雄。 SSL已经忍受了很长时间,相比之下,来自同一年份的其他一些协议也是如此。 不过,从那以后,我们肯定学到了很多东西,但是关于协议和API的事情却是很less回头。
SSL协议有两个主要更新:SSL 2(1995)和SSL 3(1996)。 这些都是精心完成的,以便向后兼容,以减轻采用。 然而, 向后兼容性是安全协议的一个限制因素 ,它可能意味着向后易受攻击。
因此决定打破向后兼容性,并且新的协议命名为TLS 1.0 (1999)。 (事后看来,把它命名为TLS 4可能会更清楚)
这个协议和SSL 3.0之间的差异并不明显,但它们足够重要,TLS 1.0和SSL 3.0不能互操作。
TLS已经过两次修订,TLS 1.1(2006)和TLS 1.2(2008)。
截至2015年,所有SSL版本都被破坏,不安全(POODLE攻击)和浏览器正在取消支持。 TLS 1.0无处不在,但只有60%的站点支持TLS 1.1和1.2 ,这是一个令人遗憾的事态。
如果你对这个东西感兴趣,我build议Moxie Marlinspike在https://www.youtube.com/watch?v=Z7Wl2FW2TcA
tls1.0表示sslv3.1
tls1.1表示sslv3.2
tls1.2表示sslv3.3
rfc只是改了名字,你可以发现tls1.0的hex代码是0x0301,这意味着sslv3.1
“如果没有损坏,不要碰它”。 在大多数情况下,SSL3都能正常工作(10月份SSL / TLS协议中存在一个基本缺陷,但是这比应用程序本身还是一个应用程序缺陷),所以开发人员不急于升级他们的SSL模块。 TLS带来了一些有用的扩展和安全algorithm,但它们是方便的补充,而不是必须的。 所以大多数服务器上的TLS仍然是一个选项。 如果服务器和客户端都支持它,它将被使用。
更新:在2016年SSL 3,甚至TLS 1.2发现易受各种攻击和迁移到TLS 1.2推荐。 也存在对TLS 1.2实现的攻击,虽然它们是依赖于服务器的。 TLS 1.3目前正在开发中。 现在TLS 1.2是必须的。
TLS保持与SSL的向后兼容性,因此在本文提到的任何版本中通信协议几乎相同。 SSL v.3,TLS 1.0和TLS 1.2之间的两个重要区别是伪随机函数(PRF)和HMAC散列函数(SHA,MD5,握手),用于构造一个对称密钥块应用程序数据encryption(服务器密钥+客户端密钥+ IV)。 TLS 1.1和TLS 1.2之间的主要区别是1.2需要使用“显式”IV来防止CBC攻击,尽pipePRF或协议没有变化。 TLS 1.2 PRF是密码套件专用的,这意味着PRF可以在握手过程中进行协商。 SSL最初由Netscape Communications(历史)开发,后来由Internet Engineering Task Force(IETF,现在)维护。 TLS由networking工作组维护。 以下是TLS中PRF HMAC函数的区别:
TLS 1.0和1.1
PRF(secret,label,seed)= P_MD5(S1,label + seed)XOR P_SHA-1(S2,label + seed);
TLS 1.2
PRF(秘密,标签,种子)= P_hash(秘密,标签+种子)
https://hpbn.co/transport-layer-security-tls/是一个很好的介绍;
SSL协议最初是在Netscape上开发的,目的是使Web上的电子商务交易安全,这需要encryption以保护客户的个人数据,以及validation和完整性保证,以确保交易安全。 为了达到这个目的,SSL协议是在应用层实现的,直接在TCP之上(图4-1),使得它上面的协议(HTTP,电子邮件,即时消息等等)通过networking进行通信。
当正确使用SSL时,第三方观察者只能推断连接端点,encryptiontypes以及发送频率和近似数据量,但不能读取或修改任何实际数据。
SSL 2.0是该协议的第一个公开发布的版本,但由于发现了一些安全漏洞,它很快被SSL 3.0取代。 由于SSL协议是Netscape专有的,因此IETF形成了对协议进行标准化的努力,产生了RFC 2246,该协议于1999年1月出版,并被称为TLS 1.0。 自那时以来,IETF一直在继续研究协议,以解决安全漏洞,并扩展其function:TLS 1.1(RFC 2246)于2006年4月发布,2008年8月发布了TLS 1.2(RFC 5246),现在开始工作正在进行定义TLS 1.3。