TLS1.3的简单学习

发布时间 2024-01-04 06:48:20作者: 济南小老虎

TLS1.3的简单学习


TLS的历史

From GTP3.5
TLS(传输层安全)是一种加密协议,旨在确保 Internet 通信的安全性和隐私保护。下面是 TLS 的历史概述:
SSL(安全套接层):TLS 的前身是 Netscape 公司在 1994 年推出的 SSL 协议。SSL 1.0、2.0 和 3.0 逐渐发展,但 3.0 存在一些安全漏洞。

TLS 1.0:为了解决 SSL 3.0 的安全漏洞,1999 年发布了 TLS 1.0。TLS 1.0 安全性更高,主要基于 SSL 3.0。这是第一个被冠以 “TLS” 名称的版本,但其实质上仍然是 SSL。
TLS 1.1:在 TLS 1.0 发布后的几年,一些安全漏洞被发现。为了修复这些漏洞,于2006年发布了 TLS 1.1。TLS 1.1 取消了对一些旧有密码套件的支持,增加了对新的安全特性的支持。
TLS 1.2:2008 年发布了 TLS 1.2,这是一个重要的更新。TLS 1.2 引入了对新的密码套件的支持,提供更高的安全性和效率。它还解决了一些与 TLS/SSL 相关的安全问题。
TLS 1.3:TLS 1.3 是 TLS 的最新版本,于2018 年发布。TLS 1.3 进一步提高了安全性和性能,并简化了握手协议。它废除了一些不安全和不常用的特性,提供更快的连接速度和更好的安全性。

总的来说,TLS 的历史是从 SSL 逐渐演化而来的。每个版本都添加了新的特性和安全性改进,以适应互联网发展中的需求,并修复已知的安全漏洞。TLS 1.3 是目前使用最广泛的版本,也是最安全和高效的版本。

一些说明

TLS 1.2其实存在的问题也很多, 比如不支持前向加密.
所以微软其实对TLS1.2非常不热心.
2009年发布的win7和 Win2008r2 就不支持 TLS1.2

但是TLS1.3的发布比较优秀. 基本上解决了大部分的安全问题. 
各大开源软件 基本上再2018年都大部分支持了 TLS1.3
但是微软应该不使用 开源的代码, 自己进行代码开发. 
所以实际上他这边使用的是自己开发的代码. 
也导致Winserver2019发布时依旧不支持 TLS1.3
直到2021年发布的 Win Server 2022才正式支持 TLS1.3

关于TLS与TCP和HTTPS

TLS是传输层协议,HTTPS是表示层的协议.
HTTPS是建立在TLS协议之上的. 
TLS其实是在TCP协议之上的安全协议. 

TLS1.3时增加了很多特性, 比如0rtt等, 性能以及安全性都有了很大的提升. 

HTTPS 其实需要借助于证书 才可以实现加密访问. 

证书其实是证明网站身份的证明. 

证书内有网站的信息.公钥信息,以及上级CA给的办法的签名信息. 

客户端拿到证书后, 会有浏览器内嵌的CA证书的公钥进行验签, 验证证书的真伪
验证证书之后再拿到网站的公钥, 进行非对称加密发送客户端的一些密文等信息

需要注意 https 除了握手阶段, 数据流量其实都是对称加密的. 

关于软件对TLS1.3的支持

JDK
JDK11 正式支持 TLS1.3
JDK8 需要在261的版本才兼容支持TLS1.3

Windows
Windows2022 才支持TLS1.3. 
Win2012 开始支持TLS1.2

nginx  在2018年的版本基本上就支持了TLS1.3