Passa al contenuto principale

5.1.4 Point Addition (Addizione di punti)

5.1.4 Point Addition (Addizione di punti)

Per l'addizione di punti, si raccomanda il metodo seguente. Un punto (x,y) è rappresentato in coordinate omogenee estese (X, Y, Z, T), con x = X/Z, y = Y/Z, x * y = T/Z.

Il punto neutro è (0,1), o equivalentemente in coordinate omogenee estese (0, Z, Z, 0) per qualsiasi Z non nullo.

Le formule seguenti per sommare due punti (x3,y3) = (x1,y1)+(x2,y2) su curve Edwards twistate con a=-1, a quadrato e d non quadrato sono descritte nella Sezione 3.1 di [Edwards-revisited] e in [EFD-TWISTED-ADD]. Sono complete (complete), cioè funzionano per ogni coppia di punti di input validi.

                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

Per il raddoppio del punto (x3,y3) = (x1,y1)+(x1,y1), si potrebbero sostituire punti uguali nella formula precedente (per completezza, tale sostituzione è valida) e osservare che quattro moltiplicazioni diventano quadrati. Tuttavia, le formule descritte nella Sezione 3.2 di [Edwards-revisited] e in [EFD-TWISTED-DBL] risparmiano alcune operazioni più piccole.

                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