在之前的文章中,我们讲了TLS和SSL的区别,那么我们今天就来全面了解一下什么是TLS。

什么是TLS?

TLS全程为Transport Layer Security,中文名叫做传输层安全性协议,和它的前身SSL一样,是一种旨在提供计算机网络上的安全通信的加密协议。TLS最早版本发布于1999年,当前最新版本为发布于2018年8月的TLS 1.3。

TLS

TLS的发展史

  1. SSL 1.0仅是网景内部版本,由于严重Bug,从未公开发布;
  2. SSL 2.0 发布于1995年2月,同样存在一些安全漏洞,已于2011年废弃;
  3. SSL 3.0 发布于1996年,经过完全重新设计,也是一度广泛使用的版本,但由于易遭臭名昭著的POODLE攻击,同样在2015年已被废弃;
  4. TLS 1.0,发布于1999年1月,为协议从网景移交到IETF后的第一个版本,该版本变化并不大,已于2020年被废弃;
  5. TLS 1.1,发布于2006年4月,修复了安全漏洞,增强加密强度,同样于2020年被废弃;
  6. TLS 1.2,发布于2008年8月,强化了支持的算法包,增加了扩展定义,也是目前的使用的主流版本;
  7. TLS 1.3,发布于2018年8月,在强化安全性的同时,引入了0-RTT模式,降低了传输延迟,增强了传输性能。

TLS

TLS 1.3协议层级架构

在网络领域,为了实现解耦基本都遵循了层级软件架构,TLS协议位于下层TCP协议及上层(即应用层)协议之间。

由于TLS对交互信息的时序有规定,所以下层协议必须能够提供这种时序服务,因此TLS不能使用UDP来传输。针对UDP的安全应用场景,可参照DTLS规范。

同样在TLS协议内部也是基于分层架构,分为两层:下层为记录层协议,为TLS上层子协议为传送提供分片、消息加密及加密后报传输,同时对接收到的数据进行验证、解密、重新组装,然后提交给高层的应用层;上层包含4种子协议为握手协议、警报协议、应用数据协议及Change_cipher_spec。其中change_cipher_spec只是为了兼容性存在,其余每个子协议都具有特定的作用,组合起来实现完整的协议功能。

TLS

TLS 1.3的升级

  1. 对原有的对称算法列表进行调整,只支持使用带有关联数据的认证加密(AEAD)算法,增强安全性。
  2. 以牺牲某些安全属性为代价添加了0-RTT模式,节省了特定场景下应用程序数据的连接建立的往返时间,减少延迟,提升性能。
  3. 静态RSA和Diffie-Hellman密码套件已被删除;所有基于公钥的密钥交换机制现在都提供前向保密性,增强安全性。
  4. ServerHello之后的所有握手消息都进行加密,提高安全性。
  5. 重新设计密钥派生函数,用基于HMAC的密钥提取和密钥扩展函数(HKDF)作原语,规范密钥生成算法。
  6. 重组握手状态机使其更加前后一致,并移除了多余的消息,进一步提升性能。
  7. 压缩,自定义DHE组和DSA已被删除。压缩可能带来安全风险已被删除,增强安全性。

TLS

TLS 1.3协议发布距TLS 1.2 版本已有十年时间,在这期间互联网需求及密码学都发生了翻天覆地的变化,经过长时间需求累计和修订,此版本相较之前版本,无论是性能还是安全方面,TLS 1.3都有了较大的发展,所以还是更推荐使用TLS 1.3协议。

免责声明:素材源于网络,如有侵权,请联系删稿。