密码学/素数曲线/楚德诺夫斯基坐标
外观
< 密码学
<密码学
楚德诺夫斯基坐标 用于表示素数曲线 y^2 = x^3 + ax + b 上的椭圆曲线点。当域求逆的成本明显高于域乘法时,它们比仿射坐标 提供了速度优势。在楚德诺夫斯基坐标 中,五元组 (X, Y, Z, Z^2, Z^3) 代表仿射点 (X / Z^2, Y / Z^3)。
设 (X, Y, Z, Z^2, Z^3) 为用楚德诺夫斯基坐标 表示的一个点 (不等于无穷远点)。那么它的两倍 (X', Y', Z', Z'^2, Z'^3) 可以通过以下方式计算
if (Y == 0) return POINT_AT_INFINITY S = 4*X*Y^2 M = 3*X^2 + a*(Z^2)^2 X' = M^2 - 2*S Y' = M*(S - X') - 8*Y^4 Z' = 2*Y*Z Z'^2 = Z'^2 Z'^3 = Z'^2 * Z' return (X', Y', Z', Z'^2, Z'^3)
注意:如果 a = -3,那么 M 也可以计算为 M = 3*(X + Z^2)*(X - Z^2),从而节省了 2 个域平方运算。
设 (X1, Y1, Z1, Z1^2, Z1^3) 和 (X2, Y2, Z2, Z2^2, Z2^3) 为两个用楚德诺夫斯基坐标 表示的点 (都不等于无穷远点)。那么它们的和 (X3, Y3, Z3, Z3^2, Z3^3) 可以通过以下方式计算
U1 = X1*Z2^2 U2 = X2*Z1^2 S1 = Y1*Z2^3 S2 = Y2*Z1^3 if (U1 == U2) if (S1 != S2) return POINT_AT_INFINITY else return POINT_DOUBLE(X1, Y1, Z1, Z1^2, Z1^3) H = U2 - U1 R = S2 - S1 X3 = R^2 - H^3 - 2*U1*H^2 Y3 = R*(U1*H^2 - X3) - S1*H^3 Z3 = H*Z1*Z2 Z3^2 = Z3^2 Z3^3 = Z3^2 * Z3 return (X3, Y3, Z3)
设 (X1, Y1, Z1, Z1^2, Z1^3) 为用楚德诺夫斯基坐标 表示的一个点,(X2, Y2) 为仿射坐标 中的一个点 (都不等于无穷远点)。通过将“Z2”的所有出现都替换为“1”(从而减少三个域乘法),可以很容易地从常规的楚德诺夫斯基点加法推导出添加这些点的公式。
有关更多详细信息,请参阅 雅可比坐标。