我对 ECC 不熟悉,如果这个问题有点奇怪/愚蠢,我很抱歉。
我正在使用一些第三方存储库(Private Join and Compute)实现一些协议,并且在创建 EC 组时,该存储库仅支持 openssl 中 FIPS 模块(P-224、256、348 和 512)中的内置曲线:
StatusOr<ECGroup::ECGroupPtr> CreateGroup(int curve_id) {
auto ec_group_ptr = EC_GROUP_new_by_curve_name(curve_id);
// If this fails, this is usually due to an invalid curve id.
if (ec_group_ptr == nullptr) {
return InvalidArgumentError(
absl::StrCat("ECGroup::CreateGroup() - Could not create group. ",
OpenSSLErrorString()));
}
return ECGroup::ECGroupPtr(ec_group_ptr);
}
Run Code Online (Sandbox Code Playgroud)
(EC_GROUP_new_by_curve_name位于 openssl/crypto/fipsmodule 中)
我的问题:
我可以修改代码以将我的协议的内置曲线替换为 X25519 吗?我的协议将其用于 ECDH。
如果不是,除了 X25519 未经 FIPS 验证之外还有什么问题?
或者,简单地说,在什么用例中我应该使用 secp256r1/k1,而对于 X25519 又应该使用什么?
谢谢!