It is interesting to analyze the
group law of the elliptic curve, defining the addition and doubling formulas (because the
SPA and
DPA attacks are based on the running time of these operations). Furthermore, in this case, we only need to use the same procedure to compute the addition, doubling or
subtraction of points to get efficient results, as said above. In general, the group law is defined in the following way:
if three points lie in the same line then they sum up to zero. So, by this property, the group laws are different for every curve. In this case, the correct way is to use the Cauchy-Desboves´ formulas, obtaining the point at infinity , that is, the
neutral element (the inverse of is again). Let be a point on the curve. The line y = -x + (x_1+y_1) contains the point and the point at infinity . Therefore, is the third point of the intersection of this line with the curve. Intersecting the elliptic curve with the line, the following condition is obtained x_2-(x_1+y_1)\cdot x + x_1\cdot y_1=\theta Since x_1+y_1+D is non zero (because is distinct to 1), the -coordinate of is and the -coordinate of is , i.e., -P = (y_1,x_1) or in projective coordinates -P = (Y_1:X_1:Z_1). In some application of
elliptic curve cryptography and the elliptic curve method of factorization (
ECM) it is necessary to compute the scalar multiplications of , say for some
integer , and they are based on the
double-and-add method; these operations need the addition and doubling formulas.
Doubling Now, if P = (X_1:Y_1:Z_1) is a point on the elliptic curve, it is possible to define a "doubling" operation using Cauchy-Desboves´ formulae: [2]P=\left(Y_1 \cdot \left(X_1^3-Z_1^3\right) : X_1 \cdot \left(Z_1^3-Y_1^3\right) : Z_1 \cdot \left(Y_1^3-X_1^3\right)\right)
Addition In the same way, for two different points, say P=(X_1 : Y_1 : Z_1) and Q=(X_2 : Y_2 : Z_2), it is possible to define the addition formula. Let denote the sum of these points, , then its coordinates are given by: R=\left(Y_1^2\cdot X_2\cdot Z_2-Y_2^2\cdot X_1\cdot Z_1 : X_1^2\cdot Y_2\cdot Z_2-X_2^2\cdot Y_1\cdot Z_1 : Z_1^2\cdot X_2\cdot Y_2-Z_2^2\cdot X_1\cdot Y_1\right) ==Algorithms and examples==