哪个顺序是正确的? ECDSA 在 ECDH 之前运行还是在 ECDH 之后运行?

Which order is correct? ECDSA runs before ECDH or after ECDH?

我搞不懂ECDSA和ECDH的执行顺序,哪个先运行?

由于ECDH无法避免MITM attach,因此使用ECDSA来验证实体。所以 ECDSA 应该 运行 在 ECDH 之前 ?

或者根本不重要?

Since ECDH can not avoid MITM attack

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

Or it doens't matter at all?

在你的例子中,使用 ECDSA 而不是 RSA,你不能加密任何东西。所以你需要在你要设计的协议中进行相互认证:你的服务器和你的客户端必须事先交换了他们的 public ECDSA 密钥,或者必须有某种 PKI 和某种根证书来验证远程 public ECDSA 密钥。最后,客户端和服务器只需要按照以下顺序执行这些步骤:

  • 用他们的 ECDSA 私钥签署他们的 ECDH public 密钥,
  • 将此信息发送给其他主机,
  • 从其他主机接收此信息,
  • 检查签名,
  • 如果检查失败,停止说话,
  • 如果签名检查无误,则执行DH算法结束