记录一下 TLS1.3 的加密过程,如何协商会话秘钥

TLS 就是 HTTPS 的那一层加密协议,前身是SSL,但是现在SSL已经淘汰了。之前用wireshark 抓包看,现在的网站多是TLS1.2。

这层协议的主要流程大概是双方先通过非对称协商握手,得出一个对称密钥,然后再通过这个对称密钥加密进行通信。

官方说明文档:https://www.rfc-editor.org/rfc/rfc8446
(有亿点复杂,麻了,想要知道细节的话就去看文档吧,160页的论文)

一. 与 TLS 1.2 的主要区别

  • 对称加密算法换成带有关联数据的经过身份验证的加密 (AEAD) 算法。可以理解为他将完整性和机密性结合了?
  • 静态 RSA 和 Diffie-Hellman 密码套件已被删除。所有基于公钥的密钥交换机制现在都提供前向保密。
  • 重新设计了密钥派生函数:使用基于HMAC的提取和扩展密钥派生函数 (HKDF) 。
  • TLS 1.2 版本协商机制已被弃用,TLS1.3和1.2不能兼容。

二. 协议概述

1.TLS 支持三种基本密钥交换模式

  • (EC)DHE (Diffie-Hellman over either finite fields or elliptic curves)
  • PSK-only
  • PSK with (EC)DHE

2. 完整 TLS 握手

3. 握手有三个阶段

  • Key Exchange(密钥交换):建立共享密钥材料并选择加密参数。此阶段之后的所有内容均已加密。
  • Server Parameters(服务器参数):建立其他握手参数(客户端是否认证,应用层协议支持等)。
  • Authentication(身份验证):验证服务器(以及可选的客户端)并提供密钥确认和握手完整性。

由ClientHello 和 ServerHello 协商的密钥材料生成最后的共享密钥。

(EC)DHE and PSK,这两个密钥建立方法,可以单个使用,也可以同时。应该是由客户端选择的,客户端在ClientHello中添加相应的拓展字段。(TLS 1.3 ClientHello 消息总是包含扩展(至少是“supported_versions”,否则,它们会被解释为TLS 1.2ClientHello 消息)

ClientHello中有

  • offered protocol versions:a list of symmetric cipher/HKDF hash pairs.
  • Diffie-Hellman key shares (in the “key_share” extension) 或者 pre-shared key labels (in the “pre_shared_key” extension),也可以两者都有。

三. 密钥生成

密钥派生过程使用了为 HKDF [ RFC5869 ] 定义的 HKDF-Extract 和 HKDF-Expand 函数。
输入密钥材料 (IKM),通过 HKDF 生成最终密钥。

输入的两个参数:

  • PSK (a pre-shared key established externally or derived from the
    resumption_master_secret value from a previous connection)
  • (EC)DHE shared secret

四. 密码套件 CipherSuite

对称密码套件定义了一对 AEAD算法和哈希算法,以与 HKDF 一起使用。

TLS 1.3 有五个密码套件:

  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_GCM_SHA256
  • TLS_AES_128_CCM_8_SHA256
  • TLS_AES_128_CCM_SHA256

例如:TLS_AES_128_CCM_SHA256
AES-CCM (AES-CTR + CBC-MAC,128-bit) (a AEAD algorithm),
SHA256 is the hash function used in HKDF.

TLS1.3 协议的加密过程相关推荐

  1. 浅谈HTTPS协议的加密过程

    https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密. 注:SSL是传输层协议 加密过程: 1,客户端使用https的URL访问Web ...

  2. TLSNotary中心化预言机(1) TLS1.1协议

    TLSNotary是基于TLS1.1协议的流程来实现 1.TLS1.1协议 协议的大体流程是协商密钥生成算法然后通过随机数生成秘钥,最终双向验证秘钥达成握手,详细流程可以参见文末链接. 协议最终的效果 ...

  3. 安全修复之Web——【中危】启用了不安全的TLS1.0、TLS1.1协议

    安全修复之Web--[中危]启用了不安全的TLS1.0.TLS1.1协议 背景 日常我们开发时,会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章 ...

  4. 某面试官吐槽:面试某大龄程序员,问HTTPS的加密过程,对方却答不出来!网友:这个问题毫无意义!...

    大龄程序员面试时会遭遇什么窘境? 一个面试官发帖吐槽:刚才面了一个毕业15年的开发,自己并没有要坑大龄程序员的意思,只是问了一个https的加密过程,结果那个大龄程序员支支吾吾没答出关键,真怕自己以后 ...

  5. TLS1.3 协议的Golang 实现——ClientHello

    前言 撰写本文时TLS1.3 RFC 已经发布到28版本.以前写过一点密码学及TLS 相关的文章,为了更深入理解TLS1.3协议,这次将尝试使用Go语言实现它.网络上已有部分站点支持TLS1.3,Ch ...

  6. 网络传输数据的加密过程详解

    常见的明文传输协议有:http,smtp,dns,pop3,imap4. 常见的攻击方式有:窃听,数据注入,会话劫持 为了保证互联网上的数据传输的安全性,于是各种的加密方式和加密算法诞生了: 数据加密 ...

  7. (非)对称加密算法在https中的应用(加密过程以及CA颁发、验证)

    文章目录 一.(非)对称加密 对称加密 非对称加密 二.http与https 1. HTTP 1.1 HTTP与TCP 1.2 短/长连接(HTTP如何使用TCP) 2. HTTPS = HTTP+S ...

  8. http服务(nginx、apache)停用不安全的SSL协议、TLS1.0和TLS1.1协议/启用TLS1.3

    文章目录 一.http服务停用不安全的TLS1.0和TLS1.1协议 nginx Apache apache要支持TLS1.2 版本要求 工作中遇到问题整理 [error] No SSL protoc ...

  9. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器. ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. ③ 客户浏览器检查服务 ...

最新文章

  1. Redis进阶-分布式存储 Sequential partitioning Hash partitioning
  2. pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17
  3. 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南
  4. 模板语法-插入文本//模板语法-插入标签//模板语法-双花括号//模板语法-向标签属性中插入数据
  5. 日志管理系统html,用户操作日志.html
  6. TPLink路由器登陆密码怎么破解
  7. 网络安全应急响应实施过程
  8. 服务器集群虚拟化区别,服务器集群与虚拟化
  9. 用Affinity画对称纹理
  10. vue首次赋值不触发watch
  11. 【读书笔记】Robot Framework 的变量
  12. 什么是CDN资质?什么情况需要办CDN牌照
  13. Canal源码分析deployer模块
  14. sou problem
  15. 微信公众平台基本功能简单说明
  16. 什么是PV、UV、QPS、TPS等专业术语?
  17. 三菱fx2n64mr说明书_FX2N-64MR-DS手册三菱可编程控制器FX2N-64MR-DS使用说明书 - 广州凌控...
  18. VS模板 孤狼优化版v1.1
  19. 管式超滤膜的清洗步骤,你知道多少?
  20. Bitwig Studio v2.4 x64 macOS+Ubuntu+WiN 音乐制作宿主软件下载

热门文章

  1. springboot 小程序微信支付
  2. ASEMI快恢复模块MUR20060CT的发展前景
  3. matlab中读取blf数据路径,需求可拆分车辆路径优化模型与BLF-GA算法设计
  4. 学习java的心得体会_学习java的心得体会范文.doc
  5. Q_ENUM与Q_ENUMS的区别
  6. Vue全家桶系列之Vuex(一)
  7. Elixir应用简介
  8. Linux 进程结束前善后处理
  9. 线上事故的善后——事故通告
  10. OSChina 周日乱弹 ——还是有个程序员女朋友好!