密钥交换与 DHKE
在密码学中,密钥建立(密钥交换、密钥协商)是一种让双方获得共享秘密以供后续密码学用途(通常是加密通信)的过程或协议。密钥建立技术可以采用密钥协商方案或密钥传输方案。
- 在密钥协商方案中,双方都参与共享秘密的协商。密钥协商方案的例子包括 Diffie-Hellman(DHKE)和椭圆曲线 Diffie-Hellman(ECDH)。
- 在密钥传输方案中,只有一方提供共享秘密,另一方从该方获得这个秘密。密钥传输方案通常通过公钥密码学实现。例如,在 RSA 密钥传输中,客户端使用服务器的公钥加密随机会话密钥并将其发送给服务器,服务器再使用自己的私钥解密。
按照设计,密钥交换方案能在双方之间安全地交换密码学密钥,使其他任何人都无法获得密钥副本。通常在加密会话开始时(例如 TLS 握手阶段),双方会先协商会话期间使用的加密密钥(共享秘密)。密钥交换方案是现代密码学中的重要主题,因为互联网上数百万台设备和服务器每天都会进行大量密钥交换。
每当笔记本电脑连接到 Wi-Fi 网络,或 Web 浏览器通过 https:// 协议打开网站时,都会执行密钥协商(密钥建立)方案。密钥协商可以基于匿名密钥交换协议(如 DHKE)、密码或预共享密钥(PSK)、数字证书,也可以组合使用多种要素。有些通信协议只建立一次共享密钥,而另一些协议则会随时间不断更换密钥。
认证密钥交换(AKE)是在密钥交换协议中交换会话密钥,同时也对参与方的身份进行认证(例如通过密码、公钥或数字证书)。例如,连接到受密码保护的 WiFi 网络时会使用认证密钥协商协议,多数情况下是密码认证密钥协商(PAKE)。连接到公共 WiFi 网络时,则会进行匿名密钥协商。
密钥交换/密钥协商算法
密钥交换和密钥建立有许多不同的密码学算法。有些使用公钥密码系统,有些使用简单的密钥交换方案(如 Diffie–Hellman 密钥交换);有些涉及服务器认证,有些涉及客户端认证;还有些使用密码、数字证书或其他认证机制。
密钥交换方案的例子包括:Diffie–Hellman 密钥交换(DHKE)和椭圆曲线 Diffie–Hellman(ECDH)、RSA-OAEP 和 RSA-KEM(RSA 密钥传输)、PSK(预共享密钥)、SRP(安全远程密码协议)、FHMQV(完全哈希的 Menezes-Qu-Vanstone)、ECMQV(椭圆曲线 Menezes-Qu-Vanstone)和 CECPQ1(抗量子密钥协商)。
下面从经典的 Diffie–Hellman 密钥交换(DHKE)方案开始,它是最早的公钥协议之一。