TLS1.3 协议的加密过程
记录一下 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 协议的加密过程相关推荐
- 浅谈HTTPS协议的加密过程
https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密. 注:SSL是传输层协议 加密过程: 1,客户端使用https的URL访问Web ...
- TLSNotary中心化预言机(1) TLS1.1协议
TLSNotary是基于TLS1.1协议的流程来实现 1.TLS1.1协议 协议的大体流程是协商密钥生成算法然后通过随机数生成秘钥,最终双向验证秘钥达成握手,详细流程可以参见文末链接. 协议最终的效果 ...
- 安全修复之Web——【中危】启用了不安全的TLS1.0、TLS1.1协议
安全修复之Web--[中危]启用了不安全的TLS1.0.TLS1.1协议 背景 日常我们开发时,会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章 ...
- 某面试官吐槽:面试某大龄程序员,问HTTPS的加密过程,对方却答不出来!网友:这个问题毫无意义!...
大龄程序员面试时会遭遇什么窘境? 一个面试官发帖吐槽:刚才面了一个毕业15年的开发,自己并没有要坑大龄程序员的意思,只是问了一个https的加密过程,结果那个大龄程序员支支吾吾没答出关键,真怕自己以后 ...
- TLS1.3 协议的Golang 实现——ClientHello
前言 撰写本文时TLS1.3 RFC 已经发布到28版本.以前写过一点密码学及TLS 相关的文章,为了更深入理解TLS1.3协议,这次将尝试使用Go语言实现它.网络上已有部分站点支持TLS1.3,Ch ...
- 网络传输数据的加密过程详解
常见的明文传输协议有:http,smtp,dns,pop3,imap4. 常见的攻击方式有:窃听,数据注入,会话劫持 为了保证互联网上的数据传输的安全性,于是各种的加密方式和加密算法诞生了: 数据加密 ...
- (非)对称加密算法在https中的应用(加密过程以及CA颁发、验证)
文章目录 一.(非)对称加密 对称加密 非对称加密 二.http与https 1. HTTP 1.1 HTTP与TCP 1.2 短/长连接(HTTP如何使用TCP) 2. HTTPS = HTTP+S ...
- http服务(nginx、apache)停用不安全的SSL协议、TLS1.0和TLS1.1协议/启用TLS1.3
文章目录 一.http服务停用不安全的TLS1.0和TLS1.1协议 nginx Apache apache要支持TLS1.2 版本要求 工作中遇到问题整理 [error] No SSL protoc ...
- HTTPS 中双向认证SSL 协议的具体过程
HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器. ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. ③ 客户浏览器检查服务 ...
最新文章
- Redis进阶-分布式存储 Sequential partitioning Hash partitioning
- pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17
- 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南
- 模板语法-插入文本//模板语法-插入标签//模板语法-双花括号//模板语法-向标签属性中插入数据
- 日志管理系统html,用户操作日志.html
- TPLink路由器登陆密码怎么破解
- 网络安全应急响应实施过程
- 服务器集群虚拟化区别,服务器集群与虚拟化
- 用Affinity画对称纹理
- vue首次赋值不触发watch
- 【读书笔记】Robot Framework 的变量
- 什么是CDN资质?什么情况需要办CDN牌照
- Canal源码分析deployer模块
- sou problem
- 微信公众平台基本功能简单说明
- 什么是PV、UV、QPS、TPS等专业术语?
- 三菱fx2n64mr说明书_FX2N-64MR-DS手册三菱可编程控制器FX2N-64MR-DS使用说明书 - 广州凌控...
- VS模板 孤狼优化版v1.1
- 管式超滤膜的清洗步骤,你知道多少?
- Bitwig Studio v2.4 x64 macOS+Ubuntu+WiN 音乐制作宿主软件下载