密钥交换与建立
密钥建立协议允许各方就一个新的共享密钥达成一致,并将其绑定到经过身份验证的身份,以便后续通信可以使用快速对称加密进行保护。
Definition
密钥建立是两个或多个参与方达成共享密钥的协议;在密钥协商中,双方都对密钥的生成做出贡献,而在密钥传输中,一方生成密钥并安全地发送给另一方。
Scope
本主题涵盖认证密钥交换(AKE)协议:密钥协商与密钥传输、它们必须抵御的威胁(中间人攻击、重放攻击、密钥泄露冒充攻击)、安全属性(如前向保密性和贡献式密钥控制),以及用于分析它们的正式模型(Bellare-Rogaway模型、Canetti-Krawczyk模型)。它讨论了如何将认证添加到原始的Diffie-Hellman协议中。它不包括底层问题的数学原理和已部署的信道协议,这些将在其他地方单独处理。
Core questions
- 认证密钥交换协议必须保证哪些安全属性?
- 如何将认证分层到像Diffie-Hellman这样的原始密钥协商协议上?
- 什么是前向保密性,以及临时密钥的选择如何提供它?
- 形式化模型如何捕捉控制网络的活跃攻击者?
- 协议必须抵御哪些攻击(中间人攻击、重放攻击、密钥泄露冒充攻击、未知密钥共享攻击)?
Key concepts
- 密钥协商与密钥传输
- 认证密钥交换
- 前向保密性
- 临时密钥
- 中间人攻击
- 密钥泄露冒充攻击
- 未知密钥共享攻击
- Bellare-Rogaway和Canetti-Krawczyk模型
- 密钥派生函数
Key theories
- 认证密钥交换
- 原始密钥协商提供共享密钥,但不能保证对方的身份;AKE协议通过添加认证(通过签名、证书或预共享密钥)来确保各方知道它们是与预期的对等方而非冒名顶替者共享密钥。
- 前向保密性和会话密钥新鲜度
- 为每个会话使用新鲜的临时密钥材料并将其与长期认证密钥结合,可以生成一个会话密钥,即使长期密钥后来被泄露,该密钥也能保持机密,同时抵御旧会话的重放攻击。
Mechanisms
典型的AKE结合了临时Diffie-Hellman交换和认证:各方交换临时的公共值,并通过签署会话记录数据或使用预共享或认证的长期密钥来证明其身份。生成的共享密钥通过密钥派生函数和会话记录哈希进行处理,以将其绑定到会话,从而抵御重放攻击和未知密钥共享攻击,并提供新鲜的、经过认证的会话密钥。
Clinical relevance
密钥建立是几乎所有安全会话的开场步骤:TLS 1.3握手、Signal X3DH和Double Ratchet、IPsec IKEv2、SSH和WireGuard都在任何数据流之前运行认证密钥交换。它们的正确性决定了攻击者是否可以冒充服务器或在两方之间进行静默窃听。
Evidence & guidelines
密钥建立方案已在NIST SP 800-56A/B中标准化,并在Bellare-Rogaway和Canetti-Krawczyk等模型中进行了分析。现代协议(TLS 1.3,Noise框架)强制要求前向保密的临时交换,并已获得正式的安全分析。不具备前向保密性的传统静态密钥交换不被推荐使用。
History
认证密钥交换起源于1976年的Diffie-Hellman协议,并认识到它需要认证才能抵御主动攻击者。1990年代至2000年代产生了严格的安全模型(Bellare-Rogaway 1993,Canetti-Krawczyk 2001)以及站到站(station-to-station)和MQV风格的协议。这些经验教训在经过正式分析的TLS 1.3握手和Noise协议框架中得到了整合。
Key figures
- Whitfield Diffie
- Martin Hellman
- Mihir Bellare
- Phillip Rogaway
- Ran Canetti
- Hugo Krawczyk
Related topics
Seminal works
- diffie1976
- katz2020
- menezes1996
Frequently asked questions
- 密钥协商和密钥传输有什么区别?
- 在密钥协商(如Diffie-Hellman)中,双方都贡献随机性,因此任何一方都不能单独决定最终密钥。在密钥传输中,一方生成密钥并将其在另一方的公钥下加密发送。协商更自然地支持前向保密性。
- 为什么一次性建立密钥不足以用于长时间会话?
- 长期存在的密钥在被泄露时会增加暴露风险,并且可能因密码分析或攻击者观察而逐渐被破解。协议会定期重新生成密钥或进行棘轮操作(如Signal中),这样即使一个会话密钥被泄露,也不会暴露过去或未来的消息。