椭圆曲线-无限远点
无限远点一般可以看作一个点 ( ∞ , ∞ ) (\infty,\infty ) (∞,∞),简单用 ∞ \infty ∞表示。在图像上表示在y轴的顶端和底端。
- 如果一条直线是垂直的,那么我们就认为这条直线穿过点 ∞ \infty ∞。
- 两条垂直的直线在点 ∞ \infty ∞相交。
椭圆曲线 - 加法规则
椭圆曲线上点的集合可以看作一个加法群。如图所示, 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−x1y2−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=2y13x12+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,
- 当 P 1 = P 2 P_1 = P_2 P1=P2,
- 当 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).
在此坐标下,加法计算规则为:
Addition of points takes 12 multiplications and 4 squarings. Doubling takes 3 multiplications and 6 squarings.