天天看点

椭圆曲线数论与密码学(1)椭圆曲线-无限远点椭圆曲线 - 加法规则Projective CoordinatesJacobian Coordinates

椭圆曲线-无限远点

无限远点一般可以看作一个点 ( ∞ , ∞ ) (\infty,\infty ) (∞,∞),简单用 ∞ \infty ∞表示。在图像上表示在y轴的顶端和底端。

  • 如果一条直线是垂直的,那么我们就认为这条直线穿过点 ∞ \infty ∞。
  • 两条垂直的直线在点 ∞ \infty ∞相交。

椭圆曲线 - 加法规则

椭圆曲线数论与密码学(1)椭圆曲线-无限远点椭圆曲线 - 加法规则Projective CoordinatesJacobian Coordinates

椭圆曲线上点的集合可以看作一个加法群。如图所示, P 1 P_1 P1​和 P 2 P_2 P2​是一条椭圆曲线 E E E 上的两个点,那么 P 3 = P 1 + P 2 P_3 = P_1+P_2 P3​=P1​+P2​ 作为两个点的合,即为穿过 P 1 P_1 P1​ 和 P 2 P_2 P2​ 的直线与椭圆曲线 E E E 上的交点。

一些特别的规则( E : y 2 = x 3 + A x + B E: y^2 = x^3 + Ax +B E:y2=x3+Ax+B):

  • 当 x 1 ≠ x 2 x_1 \neq x_2 x1​​=x2​ 时, x 3 = m 2 − x 1 − x 2 x_3 = m^2 - x_1 -x_2 x3​=m2−x1​−x2​, y 3 = m ( x 1 − x 3 ) − y 1 y_3 = m(x_1 - x_3 ) - y_1 y3​=m(x1​−x3​)−y1​, m = y 2 − y 1 x 2 − x 1 m= \frac{y_2-y_1}{x_2 - x_1} m=x2​−x1​y2​−y1​​。
  • 当 x 1 = x 2 x_1 = x_2 x1​=x2​时, x 3 = m 2 − 2 x 1 x_3 = m^2 - 2 x_1 x3​=m2−2x1​, y 3 = m ( x 1 − x 3 ) − y 1 y_3 = m(x_1-x_3)-y_1 y3​=m(x1​−x3​)−y1​, m = 3 x 1 2 + A 2 y 1 m = \frac{3x_1^2+A}{2y_1} m=2y1​3x12​+A​
  • x 1 = x 2 x_1 = x_2 x1​=x2​ 且 y 1 ≠ y 2 y_1 \neq y_2 y1​​=y2​,那么 P 1 + P 2 = ∞ P_1 + P_2 = \infty P1​+P2​=∞。
  • P 1 = P 2 P_1 = P_2 P1​=P2​ 且 y 1 = 0 y_1 = 0 y1​=0,那么 P 1 + P 2 = ∞ P_1 + P_2 = \infty P1​+P2​=∞。
  • P 1 + ∞ = P 1 P_1 + \infty = P_1 P1​+∞=P1​。
  • ∞ + ∞ = ∞ \infty + \infty = \infty ∞+∞=∞。

Projective Coordinates

Let P i = ( x i : y i : z i ) P_i = (x_i : y_i : z_i) Pi​=(xi​:yi​:zi​) be points on the elliptic curve y 2 z = x 3 + A x z 2 + B z 3 y^2z = x^3 + Axz^2 + Bz^3 y2z=x3+Axz2+Bz3. Then

( x 1 : y 1 : z 1 ) + ( x 2 : y 2 : z 2 ) = ( x 3 : y 3 : z 3 ) (x_1 : y_1 : z_1) + (x_2 : y_2 : z_2) = (x_3 : y_3 : z_3) (x1​:y1​:z1​)+(x2​:y2​:z2​)=(x3​:y3​:z3​)

在此坐标下,加法计算规则为:

  • 当 P 1 ≠ ± P 2 P_1 \neq \pm P_2 P1​​=±P2​,
    椭圆曲线数论与密码学(1)椭圆曲线-无限远点椭圆曲线 - 加法规则Projective CoordinatesJacobian Coordinates
  • 当 P 1 = P 2 P_1 = P_2 P1​=P2​,
    椭圆曲线数论与密码学(1)椭圆曲线-无限远点椭圆曲线 - 加法规则Projective CoordinatesJacobian Coordinates
  • 当 P 1 = − P 2 P_1 = -P_2 P1​=−P2​, P 1 + P 2 = ∞ P_1 + P_2 = \infty P1​+P2​=∞。

Point addition takes 12 multiplications and 2 squarings, while point doubling takes 7 multiplications and 5 squarings.

Jacobian Coordinates

Let ( x : y : z ) (x : y : z) (x:y:z) represent the affine point ( x / z 2 , y / z 3 ) (x/z^2, y/z^3) (x/z2,y/z3). The function x x x has a double pole at ∞ \infty ∞ and the function y y y has a triple pole at ∞ \infty ∞.

The elliptic curve y 2 = x 3 + A x + B y^2 = x^3 + Ax +B y2=x3+Ax+B becomes y 2 = x 3 + A x z 4 + B z 6 y^2 = x^3 + Axz^4 + Bz^6 y2=x3+Axz4+Bz6. The point at infinity has the coordinates ∞ = ( 1 : 1 : 0 ) \infty = (1 : 1: 0) ∞=(1:1:0).

在此坐标下,加法计算规则为:

椭圆曲线数论与密码学(1)椭圆曲线-无限远点椭圆曲线 - 加法规则Projective CoordinatesJacobian Coordinates

Addition of points takes 12 multiplications and 4 squarings. Doubling takes 3 multiplications and 6 squarings.

继续阅读