HTTPS 常用密钥交换算法解析

一、 算法分类逻辑:按 "是否依赖临时密钥" 划分

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 ✅ 支持 优 仅限国内 国内合规场景(政务、金融)

四、 场景面试题(算法选型类)

  1. 电商网站选ECDHE-RSA还是RSA?为什么?

    答:选ECDHE-RSA。理由:① 支持前向保密,安全性更高;② 椭圆曲线计算效率高,适配电商高并发场景;③ 现代浏览器均支持,兼容性足够。

  2. IoT设备为什么选PSK而不是ECDHE?

    答:因为IoT设备算力弱、内存小:PSK无证书校验,握手仅2轮,计算量极小,更适合资源受限的设备;而ECDHE需要生成临时密钥对,计算成本相对更高。

  3. 国内银行APP为什么必须用SM2算法?

    答:因为SM2是我国自主研发的国密算法,符合《网络安全法》等国内合规要求,能避免国外算法的潜在后门风险,保障金融数据的国家安全。

相关推荐
时间的拾荒人4 小时前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
zxanz14 小时前
网站为什么需要 SSL 证书来实现 https?
https
沐言人生6 小时前
又一个神级考公脑库-22,375篇真题终于按考点整理了
后端·面试
长按助力退休6 小时前
HTTP缓存从强缓存到协商缓存,前端性能优化第一步
http
for_ever_love__6 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
救救孩子把7 小时前
Agent面试题-记忆治理-上下文-多Agent协作与工程落地
面试·agent·多agent·agent记忆·agent面试题·上下文治理
泡干脆面就番茄7 小时前
HDFS读写流程与MapReduce原理深度解析(面试高频考点)
hdfs·面试·mapreduce
bksczm7 小时前
0基础面试3
面试·职场和发展
Lsetea9 小时前
curl报58 unable to set private key file:客户端证书与私钥加载排查
运维·https·ssl证书·openssl·curl
Lsetea10 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl