其他分享
首页 > 其他分享> > 你知道HTTPS ECDHE握手吗?

你知道HTTPS ECDHE握手吗?

作者:互联网

HTTPS ECDHE握手解析

一、DH算法的原理

数学基础

DH算法是非对称加密算法,因此它可以作为密钥交换,算法的核心是离散对数。
在这里插入图片描述
特别是当模数P是⼀个很大的质数,即使知道底数 a 和真数 b ,在现有的计算机的计算水平是几乎无法算出离散对数的,这就是 DH 算法的数学基础。

DH算法过程

  1. 假设小红和小明使用DH算法进行密钥交换,小红和小明先确定模数和底数作为DH算法的参数,这两个参数是公开的,记作P和G。
  2. 小红生成一个随机数作为私钥,记作a,小明生成一个随机数作为私钥,记作b,双方私钥不能泄漏。
  3. 小红的公钥A=G^a mod P;小明的公钥B=G^b mod P
  4. A和B也是公开的,根据离散对数原理,是很难算出a和b的,至少现在的计算机能力无法破解。
  5. 双方交换公钥。此时小红共有5个数:A,B,a,P,G;小明同样有5个数:A,B,b,P,G;
  6. 小红执行运算K1=B^a mod P;小明执行运算K2=A^b mod P,此时K1=K2,这就是以后的对称加密密钥,可作会话密钥使用。

根据离散对数的原理,如果 P 是⼀个大数,在现有的计算机的计算能力是很难破解出私钥 a、b 的,破解不出私钥,也就⽆法计算出会话密钥,因此 DH 密钥交换是安全的。
在这里插入图片描述

DH算法分类

static DH算法(已经废弃了)

static DH 算法里有一方的私钥是静态的,也就说每次密钥协商的时候有一方的私钥都是⼀样的,⼀般是服务器方固定,即 a 不变,客户端的私钥则是随机⽣成的。于是,DH 交换密钥时就只有客户端的公钥是变化,而服务端公钥是不变的,那么随着时间延长,黑客就会截获大量的密钥协商过程的数据,因为密钥协商的过程有些数据是公开的,黑客就可以依据这些数据暴力破解出服务器的私钥,然后就可以计算出会话密钥了,于是之前截获的加密数据会被破解,所以static DH算法不具备前向安全性。

DHE算法

双方的私钥在每次密钥交换通信时,都是随机生成的、临时的,这个方式也就是 DHE 算法。即使有个牛逼的黑客破解了某⼀次通信过程的私钥,其他通信过程的私钥仍然是安全的,因为每个通信过程的私钥都是没有任何关系的,都是立的,这样就保证了前向安全。

二、ECDHE算法

ECDHE概述

DHE因为做了大量的乘法导致性能不佳,因此出现了广泛应用与密钥交换算法ECDHE算法。
ECDHE算法是在DHE算法的基础上利用了 ECC 椭圆曲线特性,可以用更少的计算量计算出公钥,以及最终的会话密钥。

ECDHE密钥交换过程

三、ECDHE握手过程

第一次握手

ClientHello:客户端发送一个信息

第二次握手

SeverHello:服务端发送一个信息

第三次握手

CleintKeyExchange:发送用RSA加密的客户端的椭圆曲线公钥
ChangeCiperSpec:通知开始使用加密方式发送消息
EncryptedHandshakeMessage(Finish):之前所有发的数据做摘要,用会话密钥加密,让服务器做验证
会话密钥=客户端随机数 + 服务端随机数 + ECDHE 算法算出的共享密钥三个材料生成的。

第四次握手

ChangeCiperSpec:开始使用加密方式发送消息
EncryptedHandshakeMessage:验证成功
在这里插入图片描述

四、RSA和ECDHE握手过程的区别

标签:私钥,DH,握手,算法,密钥,HTTPS,ECDHE
来源: https://blog.csdn.net/JT518721/article/details/120629648