一、 算法分类逻辑:按 "是否依赖临时密钥" 划分
HTTPS 常用密钥交换算法可分为 2 大类,核心区别是是否使用临时密钥对(决定是否支持前向保密):
基于长期密钥的算法:依赖服务器长期公钥 / 私钥,无临时密钥,不支持前向保密
基于临时密钥的算法:使用一次性临时密钥对,支持前向保密
二、 常用算法深度解析(面试高频)
1. RSA算法(最经典,无临时密钥)
核心流程
- 客户端生成 Pre-Master Secret (随机数),用服务器证书公钥加密后发送给服务器;
- 服务器用长期私钥解密,得到 Pre-Master Secret ;
- 双方用 Pre-Master Secret + 客户端随机数Rc + 服务器随机数Rs 生成会话密钥。
特点
- 优点:实现简单,兼容性强(老设备/老浏览器均支持);
- 缺点:不支持前向保密(长期私钥泄露则历史会话可被破解);加密 Pre-Master Secret 的计算成本较高。
适用场景
- 老系统、兼容性要求极高的场景(如部分传统行业内网)。
2. ECDHE-RSA算法(现代主流,临时密钥)
核心流程(前文重点讲解的算法)
- 服务器生成临时密钥对 (ks, Ps=ks×G) ,用证书长期私钥给 Ps 签名后发送;
- 客户端验签通过后,生成临时密钥对 (kc, Pc=kc×G) 并发送;
- 双方基于椭圆曲线交换律,计算出同一共享密钥 Secret ;
- 用 Secret + Rc + Rs 生成会话密钥。
特点
- 优点:支持前向保密;椭圆曲线计算效率高,密钥长度短(256位≈RSA 3072位安全强度);
- 缺点:对老设备兼容性略差(但现代浏览器均支持)。
适用场景
- 高并发公网场景(电商、网站)、对安全性要求高的场景(支付、金融)。
3. DHE-RSA算法(临时密钥,非椭圆曲线)
核心流程
- 与ECDHE逻辑一致,但基于传统离散对数问题(而非椭圆曲线)生成临时密钥对;
- 服务器生成 (ks, Ps=g^ks mod p) ,客户端生成 (kc, Pc=g^kc mod p) ( g/p 是公开参数);
- 双方计算共享密钥 Secret=Pc^ks mod p=Ps^kc mod p 。
特点
- 优点:支持前向保密,兼容性比ECDHE略好;
- 缺点:计算效率低,需要更长的密钥(1024位以上)才能达到与椭圆曲线相当的安全强度,服务器资源消耗大。
适用场景
- 对椭圆曲线算法有合规限制的场景,或部分老设备兼容场景。
4. PSK算法(预共享密钥,无证书)
核心流程
- 客户端与服务器提前约定好预共享密钥(PSK);
- 客户端发送 ClientHello ,携带PSK标识;
- 服务器确认PSK后,双方用 PSK + Rc + Rs 生成会话密钥。
特点
- 优点:无证书校验,握手仅需2轮,速度极快;计算量小,资源消耗低;
- 缺点:PSK需提前安全分发,泄露则所有会话可被破解;仅适合封闭场景。
适用场景
- IoT设备(智能手表、传感器)、企业内网设备(机房服务器)等算力弱、封闭环境。
5. SM2算法(国密算法,临时密钥)
核心流程
- 我国自主研发的椭圆曲线算法,逻辑与ECDHE一致,但使用国密标准的椭圆曲线参数;
- 支持前向保密,流程与ECDHE-RSA完全对应。
特点
- 优点:符合国内合规要求(《网络安全法》),无国外算法后门风险;
- 缺点:仅国内场景使用,国际兼容性差。
适用场景
- 国内政务系统、银行APP、国企内网等合规要求高的场景。
三、算法对比表
| 算法 | 前向保密 | 计算效率 | 兼容性 | 适用场景 |
|---|---|---|---|---|
| RSA | ❌ 不支持 | 中 | 优 | 老系统、强兼容场景 |
| ECDHE-RSA | ✅ 支持 | 优 | 良 | 高并发公网、高安全场景 |
| DHE-RSA | ✅ 支持 | 差 | 良 | 椭圆曲线受限、老设备兼容场景 |
| PSK | ❌ 不支持 | 优 | 中 | IoT、封闭内网、算力弱设备 |
| SM2 | ✅ 支持 | 优 | 仅限国内 | 国内合规场景(政务、金融) |
四、 场景面试题(算法选型类)
-
电商网站选ECDHE-RSA还是RSA?为什么?
答:选ECDHE-RSA。理由:① 支持前向保密,安全性更高;② 椭圆曲线计算效率高,适配电商高并发场景;③ 现代浏览器均支持,兼容性足够。
-
IoT设备为什么选PSK而不是ECDHE?
答:因为IoT设备算力弱、内存小:PSK无证书校验,握手仅2轮,计算量极小,更适合资源受限的设备;而ECDHE需要生成临时密钥对,计算成本相对更高。
-
国内银行APP为什么必须用SM2算法?
答:因为SM2是我国自主研发的国密算法,符合《网络安全法》等国内合规要求,能避免国外算法的潜在后门风险,保障金融数据的国家安全。