1、为了弄清楚TLS1.3的内部结构,觉得有必要将TLS的整个结构从新整理一遍,方便后续在做握手协议的形式化分析的时候能够不遗漏每个加密和认证的的环节。

TLS1.3不论文在协议内容上还是性能上都较之前的TLS1.2版本有较大的改变,这里首先概括性的表征一下存在的差异:

更换了新的密码套件,旧的密码套件不在支持TLS1.3,不提供乡下兼容的特性。新的密码套件一共五个如下:

  1. TLS_AES_128_GCM_SHA256
  2. TLS_AES_256_GCM_SHA384
  3. TLS_CHACHA20_POLY1305_SHA256
  4. TLS_AES_128_CCM_SHA256
  5. TLS_AES_128_CCM_8_SHA256

同时新的密码组定义不同,并未指定证书类型,秘钥交换机制,客户端在ClientHello中提供了key_Share,在主握手完成之后才能建立会话,在握手结束和会话建立之间存在间隙,在后续的会话恢复机制中可以产生影响。TLS1.3连接中不能重新协商。秘钥改变之后不再像对方发送change_cipher_spec报文信息。更多的握手信息会被加密。更多类型的消息可以实现扩展 ,

TLS1.3彻底废弃了RSA秘钥交换算法,之前的1.2的版本先计算MAC再加密的方法存在很多安全隐患,不再允许对加密报文进行压缩处理,TLS1.3弃用的加密算法如下:

  1. SHA-1 Hash Function    存在安全隐患
  2. RC4 Steam Cipher  ----在HTTPS中使用并不安全
  3. DES
  4. 3DES
  5. AES-CBC
  6. MD5 Algorithm
  7. Various Diffie-Hellman groups
  8. EXPORT-strength ciphers
  9. RSA Key Transport      --------不支持向前安全

LTS1.3 仅采用AEAD类对称加密算法作为唯一的加密选项,同时引入了新的秘钥协商机制 PSK(PreSharedKEy)

图 TLS在传输层保障信息传输的安全示意图

2、对TLS1.3 握手协议的过程分析

从效率性能上讲,TLS1.2的版本 握手需要协商多个参数,握手过程需要往返两个(RTT),相比较1.3的版本在参数,秘钥,秘钥套件和往返次数上都减少。所以TLS1.3放弃了向后兼容的方法,转而向更加安全的措施。

  • 1、客户端发送 ClientHello 消息
  • ClientHello---包含的信息---------{ 协议版本 、DH秘钥交换参数列表KeyShare 、随机数 }
  • 2、服务端回复 ServerHello消息
  • ServerHello-----包含信息-------{ 选定的加密套件、  发送的证书给客户端、 使用证书私钥对握手消息签名、选用客户端提供的参数生成ECDH临时秘钥、结合选定的DH参数计算出用于加密的共享秘钥、服务端生成临时公钥通过 KeyShare 消息发送给客户端  }
  • 3、客户端收到KeyShare 消息之后,使用证书的公钥进行签名验证,获取服务器端的ECDH临时公钥,生成会话所需要的公钥秘钥
  • 4、双方使用生成的共享秘钥对消息加密传输,保证消息安全。

3、恢复会话过程

TLS1.3恢复会话可以直接发送加密后的应用数据,不需要额外的TLS握手,因此 “0-RTT” 握手就是指恢复加密传输层不需要二外的RTT,但是在第一次进行完全握手的时候,是需要 1-RTT的。但是存在的一个缺点是,TLS1.3 0-RTT现在无法保证向前安全(ForwardSecrecy),如果当攻击者通过某种手段可以获取到 Secession Ticket key ,攻击者就可以解密之前的加密数据。(注意:环节该问题的办法: 可以通过设置 SeverConfiguration 和Expiration Date字段,使得与Session Ticket Key 相关的DH静态参数在短时间内过期)

4、对TLS1.2 协议形式化分析的改进

TLS 1.2 握手示意图

5、TLS1.3 协议形式化描述

形式化描述之前对TLS协议的握手过程要抽象出信息交互过程

TLS降级

TLS1.3 握手协议过程

参考文献:

cn.bing.com  TLS1.3/QUIC 是怎样做到 0-RTT 的

https://timtaubert.de/blog/2015/11/more-privacy-less-latency-improved-handshakes-in-tls-13/

https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/

https://www.wolfssl.com/tls-1-3-performance-part-2-full-handshake-2/

https://crypto.stackexchange.com/questions/47423/tls1-3-encrypted-handshake

https://tlseminar.github.io/tls-13/

https://cloudshark.io/articles/examples-of-tls-1-3/

https://tls13.ulfheim.net/

https://github.com/syncsynchalt/illustrated-tls13

TLS握手秘钥套件分析的更多相关文章

  1. TLS1.3 认证和秘钥建立握手环节的分析

    1.ClientHello 中的参数 ClientHello---{   Random_C .extension }   在 extension中的扩展中包含 ( supported_version ...

  2. TLS握手协议分析与理解——某HTTPS请求流量包分析

    https://xz.aliyun.com/t/1039 HTTPS简介 HTTPS,是一种网络安全传输协议,在HTTP的基础上利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护 ...

  3. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  4. [转帖]TLS握手:回顾1.2、迎接1.3

    TLS握手:回顾1.2.迎接1.3 novsec2019-05-10共26541人围观 ,发现 2 个不明物体网络安全 *本文原创作者:novsec,本文属于FreeBuf原创奖励计划,未经许可禁止转 ...

  5. SSL/TLS 握手过程详解

    在现代社会,互联网已经渗透到人们日常生活的方方面面,娱乐.经济.社会关系等都离不开互联网的帮助.在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的.幸运的是,在大牛 ...

  6. SSL/TLS握手过程

    ----------------------------------专栏导航----------------------------------HTTPS协议详解(一):HTTPS基础知识 HTTPS ...

  7. TLS握手

    http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1 ...

  8. (计蒜客)UCloud 的安全秘钥

    UCloud 的安全秘钥 题意 给出一个数组 s 串,和数组 t 串,那么如果两者长度相同且两者所含的数字全部相同,则说这两个串相似. 给定原始串 S ,以及 m 个询问 T 串,问 S 串有多少个连 ...

  9. UCloud 的安全秘钥 (计蒜客初赛第五场)(待解决)

    20.7% 1200ms 262144K 每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年 ...

随机推荐

  1. 常用OID(SNMP)

    系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...

  2. 【Leetcode_easy】859. Buddy Strings

    problem 859. Buddy Strings solution: class Solution { public: bool buddyStrings(string A, string B) ...

  3. iOS-UIPasteboard的使用

    剪贴板的使用以及自定义剪贴板. 系统剪贴板的直接调用 其实整个过程非常的简单,我就用我写的一个自定义UILable来说明调用系统剪贴板. 首先,因为苹果只放出来了 UITextView,UITextF ...

  4. puppeteer-firefox 开启扩展

    puppeteer-firefox安装扩展 puppeteer-firefox 目前已经有许多人在投入开发工作,但是和chrome的launch打开扩展api不一致,在chrome中,我们可以很容易配 ...

  5. laravel 运用.env部署多环境配置

    切换到laravel 入口文件bootstrap\app.php 在  return $app;  之上添加: $environmentPath = $app->environmentPath( ...

  6. Java基础笔试练习(四)

    1.编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( ). A.java B.class C.html D.exe 答案: B 解析: Java源程序 ...

  7. SpringBoot项目集成PageHelper使用

    SpringBoot项目集成PageHelper使用 一.开始 ​ 地址:https://github.com/pagehelper/Mybatis-PageHelper ​ 在spring boot ...

  8. Python重要配置大全

    PYTHON 环境安装 安装虚拟环境 pip install virtualenv 卸载包是用:pip uninstall virtualenv 快捷下载安装可用豆瓣源,方法为: pip instal ...

  9. 17 SUMIF函数、countif函数、averagif函数

    情景 按买家求他们的消费各是多少. 可以考虑使用分类汇总来做,但这里我们使用函数sumif来做. SUMIF函数 格式:=SUMIF(条件列表,匹配条件,数据区) 该函数这样理解:按照匹配条件,从条件 ...

  10. Git学习(一)——熟悉git操作流程

    本篇笔记前面都是仔细介绍使用方法,如果想跳过这些直接熟悉怎么使用,跳到最后一个知识点完整流程介绍. git 了解:特点.优点 1.git用户版和服务版整合在一起,任何机器上都安装了两个版本 2.git ...