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 握手

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 一起使用。
CipherSuite
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.

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值