5.1.4 Point Addition (Punktaddition)
5.1.4 Point Addition (Punktaddition)
Für die Punktaddition wird folgende Methode empfohlen. Ein Punkt (x,y) wird in erweiterten homogenen Koordinaten (X, Y, Z, T) dargestellt, mit x = X/Z, y = Y/Z, x * y = T/Z.
Der neutrale Punkt ist (0,1), bzw. äquivalent in erweiterten homogenen Koordinaten (0, Z, Z, 0) für beliebiges von null verschiedenes Z.
Die folgenden Formeln zum Addieren zweier Punkte (x3,y3) = (x1,y1)+(x2,y2) auf twisted-Edwards-Kurven mit a=-1, quadratischem a und nicht-quadratischem d sind in Abschnitt 3.1 von [Edwards-revisited] und in [EFD-TWISTED-ADD] beschrieben. Sie sind vollständig (complete), d.h. sie funktionieren für jedes Paar gültiger Eingabepunkte.
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
Für Punktverdopplung (x3,y3) = (x1,y1)+(x1,y1) könnte man dieselben Punkte in die obigen Formeln einsetzen (wegen der Vollständigkeit ist das zulässig); vier Multiplikationen werden dabei zu Quadraten. Die in Abschnitt 3.2 von [Edwards-revisited] und in [EFD-TWISTED-DBL] beschriebenen Formeln sparen jedoch einige kleinere Operationen.
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