密钥交换Key Exchange)是通信双方在可能被监听的信道上协商出共享秘密的过程,常用于后续 对称加密 的会话密钥建立。

核心问题

对称加密需要双方先有同一把密钥,但开放网络无法假设双方已经安全共享秘密。密钥交换解决的是“如何在攻击者能监听网络的情况下,让双方得到同一个秘密,而监听者得不到”的问题。

核心机制

典型的 Diffie-Hellman 思路是:双方各自生成私有随机数,并交换对应的公开值。以简化形式表示:

发送方持有私有值 a,接收方持有私有值 b。交换 AB 后,双方都能计算:

监听者只看到 gpAB,在困难问题成立时无法有效恢复共享秘密 s。实际协议会把 s 输入 KDF,派生出加密密钥、认证密钥和方向隔离密钥。

现代系统常用 ECDH 或 X25519;如果每次连接都使用临时密钥,还能提供前向保密。

工程用途

  • TLS / HTTPS:建立会话密钥,再用对称算法保护 HTTP 流量。
  • SSH 和 VPN:登录或隧道建立阶段协商会话密钥。
  • 端到端加密:通信双方协商临时密钥或链式派生消息密钥。
  • 设备接入:设备和平台建立安全通道时协商短期会话密钥。

边界与常见坑

  • 密钥交换不是加密数据本身:它只产出共享秘密,后续还要用 认证加密 保护数据。
  • 未认证的 DH 会被中间人攻击:攻击者可以分别和双方交换密钥,转发并篡改通信。
  • 公钥认证不能省:需要证书、预共享公钥、签名或带外指纹确认。
  • 前向保密依赖临时密钥:长期静态密钥一旦泄露,历史会话可能被解密。
  • 不要直接使用原始共享秘密:应通过 KDF 派生密钥,并绑定上下文、双方身份和协议参数。

相关术语