代码之家  ›  专栏  ›  技术社区  ›  Venemo

OpenSSL EVP API中EC和ECDSA之间的区别是什么?

  •  3
  • Venemo  · 技术社区  · 7 年前

    我正在开发一个程序,我想用OpenSSL的libcrypto EVP API生成一个ECDSA密钥。 I found this piece of documentation that deals with this topic.

    指定密钥类型时,没有 EVP_PKEY_ECDSA 只有 EVP_PKEY_EC 。文件上说这是 用于ECDSA和ECDH密钥

    然而,参数生成功能 EVP_PKEY_CTX_set_ec_paramgen_curve_nid 仅接受曲线NID(OpenSSL中使用的椭圆曲线的名称)。无法告诉此函数我需要ECDSA密钥。 According to this documentation ,没有其他 EVP_PKEY_CTX_set_ec_ 函数。

    我不是密码学专家,所以我可能理解不正确。

    是一个 EC 键与 ECDSA ECDH 钥匙OpenSSL文档和术语明确指出了这一点,但没有明确指出。如果它们不相同,如何确保生成 ECDSA 钥匙

    1 回复  |  直到 7 年前
        1
  •  3
  •   dave_thompson_085    7 年前

    编辑:在回答之前没有注意到,但接近重复 Is there a difference between ECDH and ECDSA keys?

    对于Weierstrass曲线, 是相同的EC密钥对可用于ECDSA或ECDH 。(或者两者兼有,但这不是最佳做法,因为通常情况下,您不应该将一个密钥用于不同的目的,而签名和密钥协议是不同的目的。)同样的密钥对也可以用于实现这些算法的其他椭圆曲线算法,如ECMQV,而OpenSSL没有。

    如果 您将密钥与证书结合使用,SSL/TLS协议、CMS和S/MIME消息以及其他功能都是这样做的,然后 证明书 可以对使用密钥的操作(因此算法)施加限制。但并不是所有的东西都使用证书,对于那些使用证书的人来说,从技术上讲,没有什么可以阻止您为同一个密钥拥有多个具有不同密钥用法的证书。

    伯恩斯坦的“curve25519”使用不同的键 算法,并作为特例处理。