ECDH 和前向保密

信息安全 tls 密码学 密钥交换
2021-08-13 05:01:13

我刚刚阅读了有关ECDH的内容,在对整个过程进行了概述时,我注意到这种密钥交换方法既不提供任何前向保密,也不防止重放攻击,因为每个会话的共享密钥都是相同的。是否有任何通用方法可以扩展 ECDH 以支持这些安全功能?

1个回答

要获得完美前向保密,您必须使用临时密钥

使用静态 Diffie-Hellman(椭圆曲线与否,这不是问题),Alice 和 Bob 都拥有一个 DH 密钥对:Alice 的私钥是a,公钥是aG(椭圆曲线符号,G是传统的“基点”对于曲线);Bob 的私钥是b,公钥是bG当 Alice 和 Bob 想要互相交谈时,他们会做 DH 的事情,这意味着他们最终会得到共享的秘密值abG他们总是有这个确切的共享秘密。如果攻击者设法窃取了 Alice 的私钥 ( a ),那么他可以重新计算共享秘密,从而解密 Alice 和 Bob 之间所有过去和未来的对话。

Ephemeral Diffie-Hellman 是关于“动态”生成 DH 密钥对,而不是在任何地方记录私钥(私钥仅保存在 RAM 中,并且仅在对话期间保存)。从不被记录应该使这些私钥免受不可告人的盗窃;这就是 PFS 的由来。这在SSL/TLS中与“DHE”(和“ECDHE”)密码套件一起使用:服务器拥有一个私钥/公钥对,公钥在证书中,并且适合签名(例如,该密钥对是RSA 或 DSA 类型)。当客户端连接时,客户端和服务器都会生成新的 DH 密钥对;服务器标志他新生成的 DH 公钥及其签名密钥(客户端验证该签名并验证服务器证书)。实际用于加密数据的密钥是源自 Diffie-Hellman 算法的密钥。

使用 DHE 密码套件,如果服务器的私钥被盗,那么窃贼只能获得计算伪造签名的权力。然后,小偷可能会冒充服务器并通过运行中间人攻击来危及未来的通信,但过去的连接已根据早已丢失的 DH 密钥进行加密,因此不会被攻击者解密。这就是 PFS。