【发布时间】:2021-08-02 02:14:52
【问题描述】:
以下两个功能之一是否优于另一个? 它们是否都做同样的事情,只是实现方式不同?
两者似乎返回相同的值,只是在不同的包中。
我想为以下曲线创建一个私钥/公钥对
提前致谢! :)
【问题讨论】:
标签: go cryptography elliptic-curve key-generator
以下两个功能之一是否优于另一个? 它们是否都做同样的事情,只是实现方式不同?
两者似乎返回相同的值,只是在不同的包中。
我想为以下曲线创建一个私钥/公钥对
提前致谢! :)
【问题讨论】:
标签: go cryptography elliptic-curve key-generator
在椭圆曲线密码学中,私钥只是某个范围内的一个大随机数,通常是0 - 2^256,但范围是由曲线本身定义的,通常是某个循环子群的顺序,或者处理时的整个曲线顺序素数曲线。
ECC 用于许多事情,椭圆曲线 Diffie Hellman、椭圆曲线签名 (ECDSA) 它们都需要给定私钥与曲线的生成点 的标量 乘法 来建立公共键。
出于各种安全和效率原因,这些标量乘法函数的实现方式不同。
简单来说就是三种乘法函数:
ECDSA 使用固定基数,ECDH 使用可变基数。
这里有直觉,在 ECDH 期间,您必须将您的私钥乘以其他人的“变量”公共点。
无论如何,要使用 Brainpool,您必须生成一个适合该曲线顺序的密钥,并将其乘以曲线生成点。通常大多数 API 都允许指定曲线。
顺便说一句,别用Brainpool,它sucks。
【讨论】:
elliptic 实现。你能解释一下为什么我会选择一种实现而不是另一种吗?另外,我将曲线切换到 Ed448。 PS:我认为私钥是生成点的标量乘数,用于通过组操作导出公钥。