0
点赞
收藏
分享

微信扫一扫

HTTPS ECDHE 握手解析

RockYoungTalk 2022-04-02 阅读 74
网络协议

HTTPS ECDHE 握手解析

HTTPS 常用的密钥交换算法 RSAECDHE

RSA: 传统 不具备前向安全性

ECDHE:具有前向安全 被广泛使用

离散对数

ECDHE密钥协商算法从DH算法演进过来

DH算法: 非对称加密算法 因此可以用于密钥交换 该算法的核心数学思想是离散对数

指数和对数互为反函数 指数是幂运算 对数是指数的逆运算

对数运算的取值是可以连续的 而离散对数的取值是不能连续的 因此取名 离散

离散对数是对数运算的基础上进行了模运算 取余

img

参数a 和 模板p 公开

b为真数 i为对数

知道对数可以用上面公式计算出真数

反过来知道真数很难推算出对数(DH算法的数学基础)

DH算法

  1. 确定模板和底数 用P G 代称
  2. 各自生成一个随机整数 作为私钥 a b
  3. 计算公钥 A = G ^ a ( mod P ) B = G ^ b ( mod P )
  4. B ^ a ( mod P ) -> K A ^ b ( mod P )->K
  5. K为对称加密密钥

根据离散对数原理 如果P是一个大数 在现有的计算机的计算能力 很难破解出私钥ab 无法计算出会话密钥 因此安全

DHE算法

  • static DH 现在已经废弃
  • DHE算法

static DH 算法中有一方的私钥是静态的

黑客可以根据暴力数据破解服务器私钥 计算出会话密钥 不具备前向安全性

因此 随机生成 E:ephemeral(临时性的)

优势:只破获一次通信过程的私钥 和其他通信过程没有关系 相互独立

前向安全

ECDHE算法

DHE算法 -> 大量乘法 -> 性能不佳 -> 出现ECDHE算法

ECDHE算法在DHE算法基础上 利用ECC椭圆曲线特性 减少计算量

  1. 双方事先确定好使用哪种椭圆曲线 曲线基点G
  2. 各生成随机数 私钥d 与基点G相乘得到 公钥Q=dG 目前公私钥为 Q1 d1 ;Q2 d2
  3. 交换各自公钥 计算点(x1,y1)=d1Q2 (x2,y2)=d2Q1
  4. 椭圆曲线上满足乘法交换和结合律 x 坐标一样 因此是共享密钥

ECDHE 握手过程

TLS第一次握手

Client Hello

  • TLS版本号
  • 支持的密码套件
  • 随机数

TLS第二次握手

Server Hello

  • 服务器确认的TLS版本
  • 随机数
  • 选择合适的密码套件

「 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384」

  • 密钥协商算法使用 ECDHE;
  • 签名算法使用 RSA;
  • 握手后的通信使用 AES 对称算法,密钥长度 256 位,分组模式是 GCM;
  • 摘要算法使用 SHA384;

证明身份发送Certificate消息 发送证书

发送完证书之后 发送 Server Key Exchange消息

  • 选择椭圆曲线
  • 随机数 作为 私钥
  • 计算出服务端公钥 公开给客户端

使用RSA签名算法 给服务端的椭圆曲线公钥做签名

Server Hello Done

目前共享的信息:

  • Client Random
  • Server Random
  • 使用的椭圆曲线
  • 椭圆曲线基点G
  • 服务端椭圆曲线的公钥

TLS第三次握手

首先校验证书合法性 -> 证书链

客户端生成随机数作为私钥 生成客户端公钥

使用 Client Key Exchange 消息发送给服务端

至此双方计算之后 横坐标 相同 可以作为会话密钥

TLS:最终的会话密钥 是使用 客户端随机数 服务端随机数 ECDHE算法的共享密钥 生成

客户端发送 Change Cipher Spec 消息 告诉客户端之后采用对称加密算法通信

客户端发送Encrypted Handshake Messgae 消息进行摘要 用对称密钥加密一下 让服务端做验证 验证对称密钥是都可以正常使用

TLS第四次握手

  • Change Cipher Spec
  • Encrypted Handshake Messgae
  • 如果双方验证加密解密没有问题 握手完成
  • 可以正常收发加密的HTTP请求和响应了
  • RSA密钥协商算法不支持前向保密 ECDHE密钥协商算法支持前向保密
  • 使用RSA密钥协商算法 TLS完成四次握手才能进行数据传输
  • ECDHE算法 客户端可以不用等服务端的最后一次TLS握手 可以提前发出加密的HTTP数据
  • ECDHE TLS第二次握手中 出现服务端发送的 Server Key Exchange 消息
  • RSA中没有
举报

相关推荐

0 条评论