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是我国自主研发的国密算法,符合《网络安全法》等国内合规要求,能避免国外算法的潜在后门风险,保障金融数据的国家安全。

相关推荐
不染尘.2 小时前
TCP可靠传输和流量控制
服务器·网络·网络协议·计算机网络·tcp
网安INF2 小时前
电子邮件安全协议详解
网络·网络协议·安全·网络安全
Hi, how are you2 小时前
GyAn数字资产守护系统
python·安全·http·网络安全·信息与通信
qq_463408422 小时前
React Native跨平台技术在开源鸿蒙中使用内置的`fetch` API或者第三方库如`axHarmony`来处理网络通信HTTP请求
javascript·算法·react native·react.js·http·开源·harmonyos
乾元2 小时前
红队 / 蓝队:用 AI 自动生成攻击场景并评估防御效果——从“安全演练”到“可计算的网络对抗系统”
运维·网络·人工智能·网络协议·安全·web安全·架构
wanghowie13 小时前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试
德迅云安全—珍珍14 小时前
什么是udp攻击,为什么udp攻击难防御
网络·网络协议·udp
阿亮爱学代码14 小时前
Java 面试 (三)
面试·职场和发展
a努力。15 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试