来源:互联网 更新时间:2026-06-22 16:55
很多人学习 HTTPS 时,总会被一串名词绕晕:DH、DHE、ECDHE、离散对数、椭圆曲线…… 它们到底是什么关系?为什么能在完全不安全的网络里,安全协商出只有双方知道的加密密钥?
本文从最基础的指数函数开始,顺着「
」的脉络逐层拆解,带你彻底搞懂 HTTPS 密钥交换的完整逻辑。数学原理 → 密码学算法 → 工程落地
所有现代非对称加密的根基,都藏在「正向易、反向难」的数学运算里。一切的起点,是我们最熟悉的指数和对数。
指数运算就是我们常说的「乘方」:给定底数和指数,计算结果。
y = a^x
a:底数(公开固定值)x:指数(可以是任意数)y:运算结果举个最简单的例子:底数 a=2,指数 x=5。
2⁵ = 2×2×2×2×2 = 32
对数是指数的反向操作:已知底数和结果,反推当初的指数是多少。
x = logₐ y
对应上面的例子:已知底数 a=2,结果 y=32,求指数。
log₂ 32 = 5
在连续的实数范围内,普通对数是有成熟解法的。
如果直接用普通对数做加密,攻击者拿到公开的底数和结果,瞬间就能算出私钥,毫无安全性可言。于是密码学家做了关键一步改造:
离散对数,就是在指数运算的最后,加一步
公式如下:
a^i mod p = b
参数说明:
a:底数(公开,也叫原根)p:一个非常大的质数(公开,模数)i:整数指数(私有,就是我们的私钥)b:运算结果(公开,就是我们的公钥)「离散」的含义:运算结果被限制在
0 ~ p-1的整数范围内,不再是连续的实数,而是一个个离散的整数点。
正向计算(知道底数、指数、模数,求结果)依然非常快,和普通指数运算难度差不多。
我们用密码学经典的小参数举个例子:
公开参数:p=23(质数),g=5(底数)
私有指数:i=6
正向计算:
5⁶ mod 23 = 15625 mod 23 = 8
只需要几步运算就能得到结果 8,这个结果就可以作为公钥公开发送。
现在反过来:
p=23、g=5、结果 b=8,让你反推出指数 i 是多少也就是解方程:
5^i mod 23 = 8
这个反向求解的过程,就是
p 是一个 密码学的核心安全逻辑,就建立在这个「正向秒算、反向无解」的不对称性上:
我们用一张图直观对比正向和反向的难度差异:

一句话记住:
离散对数不是一种新运算,而是 “加了取模的对数”,它把一个简单的数学题,变成了全世界超算都解不开的难题。
1976 年,Diffie 和 Hellman 两位密码学家,基于离散对数难题,发明了人类历史上第一个密钥交换协议 ——
在 DH 算法出现之前,密码学有一个死局:
DH 算法彻底打破了这个死局:
核心利用了模幂运算的结合律:
(g^a mod p)^b mod p = (g^b mod p)^a mod p = g^(ab) mod p
简单说就是:
我们用最经典的 p=23, g=5 参数,完整走一遍流程:
Alice 和 Bob 先公开约定:质数 p=23,底数 g=5,所有人都能看到。
Alice 随机生成私钥 a=6(只有自己知道)
计算公钥:A = g^a mod p = 5^6 mod 23 = 8
把公钥 A=8 发给 Bob
Bob 随机生成私钥 b=15(只有自己知道)
计算公钥:B = g^b mod p = 5^15 mod 23 = 19
把公钥 B=19 发给 Alice
Alice 用自己的私钥 a + Bob 的公钥 B 计算:
S = B^a mod p = 19^6 mod 23 = 2
Bob 用自己的私钥 b + Alice 的公钥 A 计算:
S = A^b mod p = 8^15 mod 23 = 2
中间人全程能看到 p=23、g=5、A=8、B=19,但因为离散对数难题,算不出 a=6 或 b=15,自然也算不出最终的共享密钥 2。

DH 算法有一个致命问题:
传统 DH 算法,服务器的公私钥是固定的,长期不变。
这在高安全场景(金融、军事、隐私通信)里是完全不可接受的。
为了解决这个问题,出现了
DHE 带来的这个安全特性,就叫
即使服务器的长期证书私钥未来泄露了,也无法解密之前已经完成的加密会话。
因为每次会话的临时私钥用完就删了,就算拿到长期私钥,也解不开历史数据。这是现代 HTTPS 的标配安全特性。
| 对比项 | 传统 DH | DHE(临时 DH) |
|---|---|---|
| 公私钥 | 长期固定 | 每次握手临时生成,用完销毁 |
| 前向安全 | ✘ 不具备 | ✔ 具备 |
| 性能 | 更高(不用每次生成密钥) | 稍低(每次握手都要计算) |
| 安全风险 | 私钥泄露则历史数据全泄露 | 私钥泄露不影响历史会话 |
DHE 解决了安全问题,但又带来了新的问题:性能。
为了保证安全,DHE 需要用非常大的质数 p(通常 2048 位甚至 4096 位)。
于是密码学家找到了一个更高效的数学载体:
ECC 不是一种新算法,而是把离散对数难题,从「整数模幂」搬到了「椭圆曲线的点运算」上。
它的安全根基,是
椭圆曲线的标准方程:
y² = x³ + ax + b
它的几何形状是一条关于 x 轴对称的曲线:

密码学中使用的是
和传统 DH 的「模幂运算」对应,ECC 有一套自定义的「点运算」规则,核心是两种基础操作。
在曲线上取两个不同的点 P 和 Q,按照固定三步规则得到新点:

这里的「+」是椭圆曲线上自定义的运算符号,不是普通数字加法,只是借用了加法的名字。
如果两个点重合(P=Q),就换成切线,规则完全一致:

有了加法,就能定义数乘:把同一个点 G,连续加 d 次,得到的结果记作:
Q = d · G
和快速幂同理,计算机不用真的加 d 次,通过「翻倍 + 相加」的快速算法,几百步就能算出 256 位大数的结果,正向计算极快。
和传统离散对数完全对应:
这个反向难题,就是 ECC 的安全根基。
同等安全强度下,ECC 的密钥长度远远短于传统 DH/RSA:
| 安全强度等级 | 传统 DH/RSA 密钥长度 | ECC 密钥长度 | 长度比例 |
|---|---|---|---|
| 基础安全 | 1024 位 | 160 位 | 约 6:1 |
| 商用标准安全 | 3072 位 | 256 位 | 约 12:1 |
| 高安全级 | 15360 位 | 512 位 | 约 30:1 |
优势总结:
这也是为什么现在 HTTPS、移动支付、区块链几乎全在使用 ECDHE,而不是老式的 DHE。
纯 ECDHE 依然有中间人攻击的问题,所以在真实的 TLS 协议中,会配合
TLS 里的 ECDHE 握手,服务器会做一件关键的事:
这样就完美解决了 DH 的中间人攻击问题:
我们常说的 TLS 四次握手,就是两个往返、四个关键消息阶段。以最常用的 ECDHE_RSA 套件为例,一步步拆解。

客户端主动发起握手,核心携带:
Client Random(后续密钥生成的材料)服务器一次性发回四条消息,是握手中内容最多的一步:
ServerKeyExchange
:ECDHE 的核心消息
至此,四次握手全部完成,TLS 安全通道正式建立,后续所有 HTTP 请求响应,都用协商好的对称密钥加密传输。
很多人会混淆共享密钥和最终的会话密钥,这里梳理清楚:
会话密钥集
:从主密钥派生出多组密钥,分别用于:

很多人觉得这些知识是 “面试八股文”,工作中用不到。但实际上:
理解了底层数学和演进逻辑,再看 HTTPS 的各种配置和问题,就会有种 “豁然开朗” 的感觉。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
帅气继父网名女生可爱英文(精选100个)
帅到极致的网名女生霸气(精选100个)
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
如何在夸克浏览器中开启网页视频的倍速播放功能?
蒙古上单是什么梗
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
作家助手如何上传自制封面 作家助手如何设置小说的封面
韦一敏是什么梗
韩漫小少爷网名大全女生(精选100个)
网络热词聊污是什么意思
archiveofourown 实战指南:常见用法整理
有寓意的易经网名男生(精选100个)
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
抖音最火沙雕男生网名(精选100个)
阿里发布Qwen3.7-Max大模型,全球第五、国产第一
小众游戏抖音网名男生(精选100个)
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc