1

我对 ECDSA 和 ECDH 的执行顺序感到困惑,哪个先运行?

由于 ECDH 无法避免 MITM 附加,因此使用 ECDSA 来验证实体。那么 ECDSA 应该在 ECDH 之前运行吗?

还是根本不重要?

4

1 回答 1

1

由于 ECDH 无法避免 MITM 攻击

首先,这是您可以使用 RSA 而不是 DSA(或 ECDSA)解决此困难的众多方法之一:客户端在在线发送其 ECDH(或 DH)公钥之前,可以加密此 ECDH(或 DH)公钥密钥与服务器的公共 RSA 密钥。这样,服务器是唯一知道客户端 ECDH 密钥的对等方。因此,双方都受到保护,免受中间人攻击。当然,使用 RSA 加密另一个密钥可能需要 OAEP。

还是根本不重要?

在你的情况下,使用 ECDSA 而不是 RSA,你不能加密任何东西。因此,您需要在您将设计的协议中进行相互身份验证:您的服务器和您的客户端必须先前交换过他们的公共 ECDSA 密钥,或者必须具有某种 PKI 和某种根证书来验证远程公共 ECDSA 密钥。最后,客户端和服务器只需要按照以下顺序执行这些步骤:

  • 用他们的 ECDSA 私钥签署他们的 ECDH 公钥,
  • 将此信息发送给其他主机,
  • 从其他主机接收此信息,
  • 检查签名,
  • 如果检查失败,停止说话,
  • 如果签名被正确检查,则执行 DH 算法的结束。
于 2017-09-15T11:05:55.780 回答