Diffie-Hellman密钥交换算法
Diffie-Hellman(DH)密钥交换算法是密码学中第一个实用的公钥协议,由Whitfield Diffie和Martin Hellman于1976年提出。它允许双方在不安全的信道上协商出一个共享密钥,无需预先共享秘密,其安全性依赖于离散对数问题(Discrete Logarithm Problem, DLP)。
核心思想
- 目标:双方(Alice和Bob)无需预先共享任何秘密,通过公开交换参数生成相同的密钥,用于后续加密通信
- 数学原理:基于离散对数问题(Discrete Logarithm Problem, DLP)的计算复杂性。已知大质数 p、生成元 g、以及
A = gamod p,计算私钥 a 是困难的
算法过程
- 公共参数选择
- Alice、Bob双方共享一个大素数q,以及证书a,且a是q的原根
原根即 a mod q,a 2 mod q,…… a n-1 mod q 可以得到1 ~ n-1 的所有整数
- 密钥生成
Alice生成私钥XA:随机选择整数 a(1 < a < p-1),并计算公钥 YA = gXA mod q
Bob生成私钥XB:随机选择整数 b(1 < b < p-1),计算公钥 YB = gXB mod q
- 交换密钥
- Alice发送公钥YA给Bob,Bob发送公钥YB 给Alice。
- Alice收到Bobde公钥YB,Bob收到Alice的公钥YA。
- 共享密钥计算
- Alice计算共享密钥 S = (YB)XA mod q
- Bob计算共享密钥 S = (YA)XB mod q
- 双方得到相同的共享密钥S,可用于对称加密(如AES)
实际变种与优化
椭圆曲线DH(ECDH)
- 数学基础:将模幂运算替换为椭圆曲线上的标量乘法。
- 优势:更短的密钥长度(如256位ECC等效于3072位RSA/DH),适用于资源受限环境。
- 加密流程:
- 双方约定椭圆曲线参数G。
- 私钥为随机整数 a, b、公钥为椭圆曲线点 aG, bG
- 共享密钥为 a(bG) = b(aG) = abG
认证DH(如STS协议)
- 问题:基础DH易受中间人攻击(MITM)。
- 解决方案:引入数字签名或预共享证书,验证双方身份。
- 流程
- Alice和Bob交换公钥和签名
- 验证签名后计算共享密钥
应用场景
- TLS/SSL:用于协商会话密钥(如DHE_RSA或ECDHE_RSA密码套件)。
- VPN:IPsec中常用DH或ECDH建立安全隧道。
- SSH:密钥交换阶段使用DH生成会话密钥。
- 区块链:部分隐私保护方案利用DH实现加密通信
Diffie-Hellman vs RSA
特性 | Diffie-Hellman | RSA |
---|---|---|
用途 | 密钥交换 | 加密/签名/密钥交换 |
数学难题 | 离散对数问题(DLP) | 大数分解(IFP) |
计算开销 | 较高(模幂运算) | 高(大数运算 |
密钥长度 | 2048位(等效RSA 2048位) | 2048位(推荐) |
Diffie-Hellman通过离散对数难题实现了安全的密钥协商,是互联网安全的基石之一。其变种ECDH进一步提升了效率,而结合认证机制和临时密钥可防御中间人攻击并支持前向保密。尽管面临量子计算的威胁,DH及其衍生协议在可预见的未来仍将是主流密钥交换技术。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 懒懒洋洋的blog!
评论