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月完成。

安全性提高

  1. 废除不支持前向安全性的 RSA 和 DH 密钥交换算法;
  2. MAC 只使用 AEAD 算法;
  3. 禁用 RC4 / SHA1 等不安全的算法;
  4. 加密握手消息;
  5. 兼容中间设备 TLS 1.2;
  6. 加密握手消息。

另外,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

详细了解RFC 8446(又名TLS 1.3)

TLS Session Resumption: Full-speed and Secure

“历史遗留”漏洞:浅析新型SSL/TLS漏洞FREAK

HTTPS 温故知新(三) —— 直观感受 TLS 握手流程(上)

TLS 详解握手流程

简介TLS 1.3的更多相关文章

  1. 基于TLS的反调试技术

    TLS(Thread Local Storage 线程局部存储) 一个进程中的每个线程在访问同一个线程局部存储时,访问到的都是独立的绑定于该线程的数据块.在PEB(进程环境块)中TLS存储槽共64个( ...

  2. Python Web学习笔记之SSL,TLS,HTTPS

    一. SSL 1. SSL简介 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可 ...

  3. netty系列之:让TLS支持http2

    目录 简介 TLS的扩展协议NPN和ALPN SslProvider ApplicationProtocolConfig 构建SslContext ProtocolNegotiationHandler ...

  4. nginx配置多个TLS证书,以及TLS SNI简介

    背景 原来申请的正式域名备案通过,TLS证书也申请了.之前使用的临时域名和证书作为测试环境使用.于是要在单个ECS主机上配置nginx多个证书和多个域名. 实践 nginx部署多个TLS证书很简单,在 ...

  5. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  6. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  7. 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 ...

  8. Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

    原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...

  9. HTTPS协议简介

    一.HTTPS简介 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义. HTTPS ...

随机推荐

  1. 纯CSS实现内容放大缩小效果

    先搭架子 再实现第一个内容 填充更多内容 拆掉border,查看最终效果 html代码 <!-- 服务 --> <div class="service"> ...

  2. Django Admin 删除文件同时删除资源文件(delete_upload_files)

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  3. 【Notes】现代图形学入门_02

    跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 光栅化 着色(Shading) 在图形学中,着色的定义可 ...

  4. Bitter.NotifyOpenPaltform : HTTP 异步消息接收调度中心&mdash;开源贡献 之 一:简介

    现在互联网的系统越来越趋向于复杂,从单体系统到现在的微服务体系演变.公司与公司的分工也越来越明确. 大数据公司提供了大数据服务 人脸识别公司提供了人脸识别服务 OCR 公司提供了专业的OCR 服务 车 ...

  5. Jmeter的脚本参数化

    一.变量 Jmeter中的变量用法:${变量名称} 变量定义:两种 1.用户定义变量 User Defined Variables 2.用户参数  User Parameters 1.1用户定义变量 ...

  6. 后端程序员之路 8、一种内存kv数据库的实现

    键值(Key-Value)存储数据库,这是一种NoSQL(非关系型数据库)模型,其数据按照键值对的形式进行组织.索引和存储.KV存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘 ...

  7. Pyqt5——变色的表格

    需求:鼠标左键点击表格后,对应的单元格背景颜色发生变化. 实现:(1)使用Qt的model-view模式生成表格视图. (2)重写表格的点击事件. (3)设置表格的背景颜色. 正常情况下,当用户选中单 ...

  8. pip命令安装python包到指定目录

    pip install wxpython --target=D:\Server\Python38\Lib\site-packages

  9. Flutter Web 支持现已进入稳定版

    作者 / Mariam Hasnany, Product Manager, Flutter 我们对 Flutter 的愿景是成为一个可移植的 UI 框架,在全平台上构建精美的应用体验.做为 Flutt ...

  10. [MongoDB知识体系] 一文全面总结MongoDB知识体系

    MongoDB教程 - Mongo知识体系详解 本系列将给大家构建MongoDB全局知识体系.@pdai MongoDB教程 - Mongo知识体系详解 知识体系 学习要点 学习资料 官网资料 入门系 ...