公开交换值与各自秘密结合
在常见有限域模型中,双方约定合适的模数p与生成元g,各自选择秘密指数a、b,发送g^a mod p与g^b mod p。再用自身秘密对对方公开值运算,双方得到g^(ab) mod p这一共享结果。
相同结果来自指数运算在所选群中的关系,不是因为双方在网络上直接传了相同口令。旁观者能看到公开参数和交换值;安全性要求在适当参数与假设下,这些信息不足以可行地重建共享秘密。
不是任何两个大整数都能安全交换
交换可以建立在不同群上,椭圆曲线Diffie–Hellman采用相应点群的运算。它与有限域形式具有共同的密钥协商目标,但参数、编码和输入处理不同,不能只替换一个公式符号就认为所有实现可以互通。
原始群运算输出也不必直接当成应用加密密钥。具体协议应规定如何派生并绑定公开交换值、身份或其他上下文,同时处理无效输入。RFC 7748就分别定义X25519和X448的交换形式,并讨论特殊输入与共享结果的边界。
会协商秘密仍不等于认对了人
未经认证的基础交换不能阻止中间人分别与两端协商,让每端都以为自己连到了目标对象。协议必须把交换值可靠关联到预期参与者;能计算出某个共享秘密,不足以独立证明它来自谁。
每次使用新鲜临时材料并在适当时机删除,可帮助协议取得针对长期密钥事后泄露的前向保密;但这不是所有静态DH用法自动具备的性质。TLS 1.3把临时交换、握手认证与派生过程结合,仍需按实际模式检查保证。