我正在用Curve25519做一个使用ECDH的项目。我使用mbedtls库,在实现中,我意识到Curve25519的私钥是清晰的3最后一位,或者除以8,Curve25519的辅助因子也是8。我看了另一条曲线(Curve448),它的辅助因子是4,私钥也除以4。我试着为8选择一个不可分的密钥,这个算法仍然有效。在ECC上,辅助因素也会影响私钥。
发布于 2019-12-31 10:36:51
Curve25519和Curve448上的Diffie-Hellman是在RFC 7748上指定的,算法明确提到标量必须是辅助因子的倍数(根据曲线将2或3个最小有效位设置为零)。
如果您选择一个具有最小有效位的键,而不是所有的零,那么它取决于实现。RFC后面的正确实现将确保在标量乘法之前将最小有效位设置为零(无论是在程序中导入密钥时,还是在标量乘法之前)。
现在,您最终可以做一个不清除最不重要位的实现,算法会给您提供一些信息,但是它很容易受到小的子组攻击。
如果有人向您发送一个小订单点(例如4),那么通过去掉您私钥中最不重要的比特,算法的结果将给出被认为无效的0,并自动检测到该小订单点。
https://crypto.stackexchange.com/questions/76737
复制相似问题