Hessian form of an elliptic curve

From testwiki
Jump to navigation Jump to search

In geometry, the Hessian curve is a plane curve similar to folium of Descartes. It is named after the German mathematician Otto Hesse. This curve was suggested for application in elliptic curve cryptography, because arithmetic in this curve representation is faster and needs less memory than arithmetic in standard Weierstrass form.[1]

Definition

A Hessian curve of equation x3+y3+1=0.3xy

Let K be a field and consider an elliptic curve E in the following special case of Weierstrass form over K: Y2+a1XY+a3Y=X3 where the curve has discriminant Δ=(a33(a1327a3))=a33δ. Then the point P=(0,0) has order 3.

To prove that P=(0,0) has order 3, note that the tangent to E at P is the line Y=0 which intersects E with multiplicity 3 at P.

Conversely, given a point P of order 3 on an elliptic curve E both defined over a field K one can put the curve into Weierstrass form with P=(0,0) so that the tangent at P is the line Y=0. Then the equation of the curve is Y2+a1XY+a3Y=X3 with a1,a3K.

To obtain the Hessian curve, it is necessary to do the following transformation:

First let μ denote a root of the polynomial T3δT2+δ23T+a3δ2=0.

Then μ=δa1δ2/33.

Note that if K has a finite field of order q2(mod3), then every element of K has a unique cube root; in general, μ lies in an extension field of K.

Now by defining the following value D=(μδ)μ another curve, C, is obtained, that is birationally equivalent to E:

C:x3+y3+z3=3Dxyz

which is called cubic Hessian form (in projective coordinates) C:x3+y3+1=3Dxy

in the affine plane (satisfying x=XZ and y=YZ).

Furthermore, D31 (otherwise, the curve would be singular).

Starting from the Hessian curve, a birationally equivalent Weierstrass equation is given by v2=u327D(D3+8)u+54(D620D38), under the transformations: (x,y)=(η(u+9D2),1+η(3D3Dx12)) and (u,v)=(9D2+εx,3ε(y1)) where: η=6(D31)(v+9D33Du36)(u+9D2)3+(3D3Du12)3 and ε=12(D31)Dx+y+1

Group law

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 Template:Math, that is, the neutral element (the inverse of Template:Math is Template:Math again). Let Template:Math be a point on the curve. The line y=x+(x1+y1) contains the point Template:Math and the point at infinity Template:Math. Therefore, Template:Math 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 x2(x1+y1)x+x1y1=θ

Since x1+y1+D is non zero (because Template:Math is distinct to 1), the Template:Math-coordinate of Template:Math is Template:Math and the Template:Math-coordinate of Template:Math is Template:Math , i.e., P=(y1,x1) or in projective coordinates P=(Y1:X1:Z1).

In some application of elliptic curve cryptography and the elliptic curve method of factorization (ECM) it is necessary to compute the scalar multiplications of Template:Math, say Template:Math for some integer Template:Math, and they are based on the double-and-add method; these operations need the addition and doubling formulas.

Doubling

Now, if P=(X1:Y1:Z1) is a point on the elliptic curve, it is possible to define a "doubling" operation using Cauchy-Desboves´ formulae:

[2]P=(Y1(X13Z13):X1(Z13Y13):Z1(Y13X13))

Addition

In the same way, for two different points, say P=(X1:Y1:Z1) and Q=(X2:Y2:Z2), it is possible to define the addition formula. Let Template:Math denote the sum of these points, Template:Math, then its coordinates are given by:

R=(Y12X2Z2Y22X1Z1:X12Y2Z2X22Y1Z1:Z12X2Y2Z22X1Y1)

Algorithms and examples

There is one algorithm that can be used to add two different points or to double; it is given by Joye and Quisquater. Then, the following result gives the possibility the obtain the doubling operation by the addition:

Proposition. Let Template:Math be a point on a Hessian elliptic curve Template:Math. Then: Template:NumBlk

Furthermore, we have Template:Math.

Finally, contrary to other parameterizations, there is no subtraction to compute the negation of a point. Hence, this addition algorithm can also be used for subtracting two points Template:Math and Template:Math on a Hessian elliptic curve: Template:NumBlk

To sum up, by adapting the order of the inputs according to equation (2) or (3), the addition algorithm presented above can be used indifferently for: Adding 2 (diff.) points, Doubling a point and Subtracting 2 points with only 12 multiplications and 7 auxiliary variables including the 3 result variables. Before the invention of Edwards curves, these results represent the fastest known method for implementing the elliptic curve scalar multiplication towards resistance against side-channel attacks.

For some algorithms protection against side-channel attacks is not necessary. So, for these doublings can be faster. Since there are many algorithms, only the best for the addition and doubling formulas is given here, with one example for each one:

Addition

Let Template:Math and Template:Math be two points distinct to Template:Math. Assuming that Template:Math then the algorithm is given by:

Template:Math

Template:Math

Template:Math
Template:Math
Template:Math

The cost needed is 8 multiplications and 3 additions readdition cost of 7 multiplications and 3 additions, depending on the first point.

Example

Given the following points in the curve for Template:Math and Template:Math, then if Template:Math we have:

Template:Math
Template:Math
Template:Math

Then: Template:Math

Doubling

Let Template:Math be a point, then the doubling formula is given by:

The cost of this algorithm is Template:Nowrap

Example

If P=(1:1:1) is a point over the Hessian curve with parameter Template:Math, then the coordinates of 2P=(X:Y:Z) are given by:

Template:Math

Template:Math

Template:Math

That is, 2P=(4:2:0)

Extended coordinates

There is another coordinates system with which a Hessian curve can be represented; these new coordinates are called extended coordinates. They can speed up the addition and doubling. To have more information about operations with the extended coordinates see:

http://hyperelliptic.org/EFD/g1p/auto-hessian-extended.html#addition-add-20080225-hwcd

x and y are represented by X,Y,Z,XX,YY,ZZ,XY,YZ,XZ satisfying the following equations:

  • x=X/Z
  • y=Y/Z
  • XX=XX
  • YY=YY
  • ZZ=ZZ
  • XY=2XY
  • YZ=2YZ
  • XZ=2XZ

See also

Notes

Template:Reflist

References

  • Otto Hesse (1844), "Über die Elimination der Variabeln aus drei algebraischen Gleichungen vom zweiten Grade mit zwei Variabeln", Journal für die reine und angewandte Mathematik, 10, pp. 68–96
  • Template:Cite book
  • Template:Cite book
  1. Cauchy-Desbove's Formulae: Hessian-elliptic Curves and Side-Channel Attacks, Marc Joye and Jean-Jacques Quisquarter