简介TLS 1.3
0x00 前言
最近在阅读论文,其中阅读了 WWW2021的一篇文章“TLS 1.3 in Practice: How TLS 1.3 Contributes to the Internet”。在本篇文章中,作者对当下TLS 1.3在实际中的采用率、安全性、性能和实现进行了大规模的测量。下面是对TLS 1.3 的一些优势与特性的总结。
论文下载地址:https://yonghwi-kwon.github.io/data/tls_www21.pdf
0x01 什么是TLS?
TLS代表传输层安全性并且是SSL(安全套接字层)的后继者。TLS提供了Web浏览器和服务器之间的安全通信。连接本身是安全的,因为使用对称密码术对传输的数据进行加密。密钥是为每个连接唯一生成的,并且基于在会话开始时协商的共享机密(也称为TLS握手)。
0x02 TLS 1.3 &&TLS 1.2
在过去十年中,部署了最新的TLS版本1.3 ,解决了其前身(即TLS 1.2 )的关键漏洞,如BEAST和FREAK攻击。TLS 1.3的标准化工作始于2013年8月,随着安全性和性能的提高,于2018年8月完成。
安全性提高
- 废除不支持前向安全性的 RSA 和 DH 密钥交换算法;
- MAC 只使用 AEAD 算法;
- 禁用 RC4 / SHA1 等不安全的算法;
- 加密握手消息;
- 兼容中间设备 TLS 1.2;
- 加密握手消息。
另外,TLS 1.2容易受到中间人攻击和降级攻击(FREAK)。TLS 1.3 弥补了TLS 1.2 的缺陷,使其不易受到攻击。
降级攻击(FREAK)原理
主要原因,TLS1.2 握手部分协商使用哪种密码,并没有进行加密数字签名。而 TLS 1.3 对握手信息进行了加密处理。
Phase 1:在客户端发出的Hello消息中,它会请求标准的加密,中间人攻击者会改变请求内容,转而请求“40 bit 密钥的出口级的加密算法”(弱加密算法)
Phase 2:服务端会回复一个出口级的密钥,由于OpenSSL/Secure传输的bug,客户端会接受这个存在漏洞的密钥
Phase 3:攻击者进行爆破40bit密钥,以便能够伪造mac,进行消息修改。详见TLS 1.2 握手过程.
Phase 4:服务端进行响应消息,中间攻击者可以查看.
所有的流量都使用弱加密算法,并将经过中间人,中间人可以随意查看与修改。
Export 加密算法
Export是一种老旧的弱加密算法,是被美国法律标示为可出口的加密算法,其限制对称加密最大强度位数为40位,限制密钥交换强度为最大512位。这是一个现今被强制丢弃的算法。
性能提高
TLS和加密连接在网络性能方面总是会增加一些开销。HTTP / 2确实可以解决此问题,但是TLS 1.3通过诸如TLS错误启动和零往返时间(0-RTT)之类的功能,甚至可以进一步提高加密连接的速度。
1-RTT模式
简而言之,对于TLS 1.2,需要两次往返来完成TLS握手。在1.3版本中,它只需要一个往返, 这反过来又将加密延迟减少了一半。这有助于使那些加密的连接比以前更灵活。
具体来说,在TLS 1.2的第二次往返中,客户机Hello和服务器Hello消息与密钥交换消息相结合。
0-RTT恢复
TLS1.3通过引入early_data扩展0-RTT恢复与先前访问的网站的会话 ,对于恢复的会话,在发送应用程序数据之前没有握手过程。它允许客户端将应用程序数据与第一个握手消息一起发送。相比之下,TLS 1.2在发送应用程序数据之前需要一个RTT。
在TLS 1.2中,有两种恢复连接的方法:会话ID和会话票据。TLS 1.3把这俩结合在一起形成了新模式,称为PSK(预共享密钥)恢复。具体是,在建立会话之后,客户端和服务器可以派生一个共享的密钥,叫做“恢复主密钥”。可以将其存储在服务器上(会话ID的形式),也可以使用仅服务器已知的密钥进行加密(会话票据形式)。此会话票据将发送给客户端,并在恢复连接时进行交换。
对于恢复连接,双方共享恢复的主密钥,不需要进行密钥交换。客户端下一次连接到服务器时,它可以从上一个会话中获取密钥,并使用它来加密应用程序数据和会话票据一起发送到服务器。具体如图:
0-RTT恢复不具有前向安全性,且消息可能被用作重放攻击,所以安全性较低,需慎重使用。
0-RTT 重放攻击原理
这里借用cloudflare的原理图
如果攻击者捕获了发送到服务器的0-RTT数据包,则他们可以重放该数据包,并且服务器可能会将其视为有效。这可能会产生负面后果。
0x03 参考文献
TLS 1.3 in Practice: How TLS 1.3 Contributes to the Internet
TLS Session Resumption: Full-speed and Secure
HTTPS 温故知新(三) —— 直观感受 TLS 握手流程(上)
简介TLS 1.3的更多相关文章
- 基于TLS的反调试技术
TLS(Thread Local Storage 线程局部存储) 一个进程中的每个线程在访问同一个线程局部存储时,访问到的都是独立的绑定于该线程的数据块.在PEB(进程环境块)中TLS存储槽共64个( ...
- Python Web学习笔记之SSL,TLS,HTTPS
一. SSL 1. SSL简介 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可 ...
- netty系列之:让TLS支持http2
目录 简介 TLS的扩展协议NPN和ALPN SslProvider ApplicationProtocolConfig 构建SslContext ProtocolNegotiationHandler ...
- nginx配置多个TLS证书,以及TLS SNI简介
背景 原来申请的正式域名备案通过,TLS证书也申请了.之前使用的临时域名和证书作为测试环境使用.于是要在单个ECS主机上配置nginx多个证书和多个域名. 实践 nginx部署多个TLS证书很简单,在 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)
ASP.NET Core 1.1 Preview 1于2016年10月25日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强. 要将现有项目更新到ASP.NET Core 1.1 Pre ...
- Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...
- HTTPS协议简介
一.HTTPS简介 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义. HTTPS ...
随机推荐
- Java自学第2期——注释、数据类型、运算符、方法
2.1.注释 注释用于说明某段代码的作用,某个类的用途,某个方法的功能,参数和返回值数据类型的意义等等: 注释非常非常非常重要,回顾代码时通过注释找回思路:团队沟通需要,让别人读懂你的代码,增加效率: ...
- js中this指向的问题与联系
前言 JavaScript 中最大的一个安全问题,也是最令人困惑的一个问题,就是在某些情况下this的值是如何确定的.有js基础的同学面对这个问题基本可以想到:this的指向和函数调用的方式相关.这当 ...
- python进阶(3)序列化与反序列化
序列化与反序列化 按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化:反之,从文件的字节恢复到内存,就是反序列化: pytho ...
- TERSUS无代码开发(笔记02)-简单实例加法
简单实例加法 1.用户端元件(显示元件)(40个) 图标 英文名称 元件名称 使用说明 服务器端 客户端 Pane 显示块 是一个显示块,是HTML的div标签 √ Row 行 行元件中的显示元件 ...
- Tango with django 1.9 中文——3.Django基础
让我们开始运用Django.本章主要是给你一个关于创建新项目和新应用过程的概览.在本章的末尾,你将建立起一个简单的由Django驱动的网站. 3.1 配置测试 让我们测试以下你的Python和Djan ...
- PVE更新WEB管理地址
PVE也是一台Linux系统,如果PVE更换了网络环境,比如从家里拿到了办公室,那么就需要对其更新网络,才能让其它机器访问到它的8006管理地址. 具体做法是通过修改配置文件来更改IP. 更新网卡配置 ...
- (三)MySQL锁机制 + 事务
转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. sh ...
- 设计模式之工厂方法模式(Factory Method Pattern)
一.工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读<设计模式之简单工厂模式(Simple Factory Pattern)>这篇文档.工厂方法模式是针对简单工厂模式中违反开闭原则的不 ...
- mysql-canal-rabbitmq 安装部署教程
原文 1.1. 开启 MySQL 的 binlog 日志 修改 my.cnf 或 my.ini(windows), 添加配置项: # binlog 日志存放路径 log-bin=D:\env\mysq ...
- there is nothing(i春秋CTF题解)
(1)打开页面,显示为:there is nothing (2)抓包发现提示 (3)hint:ip,Large internal network 意为最大的内网网段IP,hint: ip,Larg ...