我一直在阅读著名的X25519,维基百科的蒙哥马利曲线,在那篇文章中,他们说我们不需要检查点的有效性。是因为任何x < p都满足曲线方程吗?对于X25519来说,这可能是因为它是蒙哥马利曲线,还是因为它是由发现者Dan专门设计的(为了提高效率,也为了获得更多的公钥可能性)?为什么每个x < p 都不满足其他曲线的曲线方程,比如SECP256k1,其中方程是Weierstrass形式的y^2 = x^3 + ax + b \mod p ?我真的很想知道背后的数学原因。先谢谢大家!
发布于 2020-02-09 09:57:51
如果有方程y^2 = f(x) \bmod p给出的椭圆曲线,那么对于每个x,f(x)都是平方模p,并且存在平方根y,使得(x,y)和(x,-y)满足曲线方程。如果f(x)不是平方模p,那么这个值x不对应于曲线上的一个点,而对应于曲线二次扭转上的一个点。
因此,只知道x,我们就知道它对应于曲线上的一个点或它的二次扭曲。问题是,许多标准化曲线具有弱二次扭曲(参见SafeCurves上的这一页,因此必须检查曲线上的点,如果我们只使用x-coordinate,则仍然需要检查它是否在二次扭曲上,以避免无效的曲线攻击。
designed将X25519设计为Diffie-Hellman函数,使用Curve25519的蒙哥马利形式.在这条曲线上,Montgomery阶梯标量乘法是有效的,并且只使用点的x-coordinate。然后,操纵点位于曲线或它的二次扭转,这是一样安全的原始曲线。那么任何x都是有效的,但不一定对应于曲线上的一个点。
https://crypto.stackexchange.com/questions/77510
复制相似问题