メインコンテンツまでスキップ

5.1.4 Point Addition (点の加算)

5.1.4 Point Addition (点の加算)

点の加算には, 次の方法を推奨する. 点 (x,y) は extended homogeneous coordinates (拡張同次座標) (X, Y, Z, T) で表し, x = X/Z, y = Y/Z, x * y = T/Z とする.

neutral point (中立点) は (0,1) であるか, 拡張同次座標では等価的に (0, Z, Z, 0) (Z は任意の非零) である.

a=-1, a が平方, d が非平方である twisted Edwards curves (ねじれ Edwards 曲線) 上で, 二点 (x3,y3) = (x1,y1)+(x2,y2) を加える式は, [Edwards-revisited] の 3.1 節および [EFD-TWISTED-ADD] に記載されている. それらは complete (完全) である. すなわち任意の有効な入力の対に対して動作する.

                A = (Y1-X1)*(Y2-X2)
B = (Y1+X1)*(Y2+X2)
C = T1*2*d*T2
D = Z1*2*Z2
E = B-A
F = D-C
G = D+C
H = B+A
X3 = E*F
Y3 = G*H
T3 = E*H
Z3 = F*G

点の倍点 (x3,y3) = (x1,y1)+(x1,y1) については, 上式に同一点を代入すればよい (完全性によりその代入は正当), 四つの乗算が二乗になる. ただし, [Edwards-revisited] の 3.2 節および [EFD-TWISTED-DBL] の式を使うと, より小さな演算をいくつか省略できる.

                A = X1^2
B = Y1^2
C = 2*Z1^2
H = A+B
E = H-(X1+Y1)^2
G = A-B
F = C+G
X3 = E*F
Y3 = G*H
T3 = E*H
Z3 = F*G