Clélies: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>David Eppstein
unreferenced
 
en>PierreAbbat
Viviani's curve, etym
 
Line 1: Line 1:
Emilia Shryock is my title but you can contact me anything you like. The preferred pastime for my children and me is to perform baseball and I'm trying to make it a profession. Supervising is my profession. My family members lives in Minnesota and my family enjoys it.<br><br>Also visit my web blog; [http://www.january-yjm.com/xe/index.php?mid=video&document_srl=182582 http://www.january-yjm.com/]
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 [[elliptic curves|Weierstrass form]].<ref>Cauchy-Desbove's Formulae: ''Hessian-elliptic Curves and Side-Channel Attacks'', Marc Joye and Jean-Jacques Quisquarter</ref>
 
== Definition ==
[[Image:Hessian curve.svg|300px|right|thumb|An Hessian curve of equation <math>x^3+y^3+1=0.3xy</math>]]
Let <math> K </math> be a [[field (mathematics)|field]] and let ''E'' denote an [[elliptic curve]] in [[Weierstrass form]]  over <math> K </math>. Then the following curve can be obtained:
 
<math> Y^2+(a_1\cdot X+a_3)\cdot Y=X^3 </math>
 
where the curve has [[discriminant]] <math> \Delta = (a_3(a_1^3 - 27a_3)) = a_3^3  \delta, </math>
 
and (0,0) has order 3. Before proving this, note that if the [[characteristic (algebra)|characteristic]] of <math> K </math>, say ''q'', is 2 modulo 3, then the curve has 3 points of order 3; and if ''q'' is 1 modulo 3, there are 8 points of order 3.
 
To prove that <math> P=(0,0) </math> has order 3, it is sufficient to show that <math> [2]P=-P </math> using the elliptic curve [[elliptic curve#The group law|group law]].
 
''(i)  Compute <math>-P</math>:'' if <math> Y^2+h(X)\cdot Y=X^3 </math> is the given curve and <math> P_1=(x_1,y_1)</math> the point, then <math> -P=(x_1, h(x_1)-y_1) </math>.
So, in this case, since <math> P=(0,0) </math>, then <math>-P=(0,a_3)</math>.
 
''(ii) Compute <math>[2]\cdot P</math>:'' it can be done using the tangent and chord method, that is, first construct the line through the general point <math> P_1=(x_1,y_1)</math> and find the other intersection point with the curve.
 
Let <math> y=l\cdot x+m </math> be the tangent to the curve at <math> P_1 </math>. Now, to find the points of intersection between the curve and the line, replace every <math> y </math> by <math> y=l\cdot x+m </math> in the curve:
 
<math> (l\cdot x+m)^2+(a_1\cdot x+a_3)\cdot (l\cdot x+m)=x^3 </math>  iff  <math> x^3-(l^2+a_1l)\cdot x^2-(2\cdot l\cdot m+a_1\cdot l+a_3\cdot l)\cdot x-m^2-a_3m=0 </math>
 
The roots of this equation are the x-coordinates of <math> P_1</math> and <math> P_2=(x_2,y_2) </math>, so:
 
<math> (x-x_1)^2\cdot (x-x_2)=x^3-(2\cdot x_1+x_2)\cdot x^2+g(x)= x^3-(l^2+a_1\cdot l)\cdot x^2+g'(x) </math>
 
Then comparing the coefficients:
 
<math> x_2=l^2+a_1\cdot l-2\cdot x_1 </math>  and  <math> y_2=l\cdot x_2+y_1-l\cdot x_1 </math> (<math> y_2=l\cdot x_2+m </math> and <math> m=y_1-l\cdot x_1 </math>).
 
Note that <math> x_1, y_1</math> are known and by the [[implicit function theorem]] <math> l=-\frac{\frac{\partial f}{\partial x}}{\frac{\partial f}{\partial y }}</math>  (which is the [[slope]] of the line <math> y=l\cdot x+m </math>). Then, <math> [2]P_1=-P_2 </math> and [2]P would be known. This is a general method to compute <math> [2]P </math>.
 
'''So applying it to P=(0,0):'''
 
since <math> l=\frac{3\cdot x^2-a_1\cdot y}{2\cdot y+a_1\cdot x+a_3}=0 </math> (note <math> a_3 </math> cannot be zero, otherwise the denominator would vanish at <math>P</math> and the curve would be singular),
 
then <math> [2]\cdot P=-P_2=(l^2+a_1\cdot l-2\cdot x_1,h(x_1)-l\cdot x_3+y_1-l\cdot x_1)=(0,a_3) </math> where <math> h(x)=a_1x+a_3 </math>
 
Thus, '''<math>[2]P=(0,a_3)=-P</math>''', that is (0,0) has order 3 over <math> Y^2+(a_1\cdot X+a_3)\cdot Y=X^3 </math>.
 
Now, to obtain the Hessian curve, it is necessary to do the following [[map (mathematics)|transformation]]:
 
First let <math> \mu </math> denote a [[equation solving|root]] of the polynomial ''T''<sup>3</sup>&nbsp;&minus;&nbsp;''δT''<sup>2</sup>&nbsp;+&nbsp;&nbsp;''δ''<sup>2</sup>''T''/3&nbsp;+&nbsp;''a''<sub>3</sub><math>\delta</math><sup>2</sup>&nbsp;=&nbsp;0.
 
where <math> \mu </math> is determined from the formula:
 
<math>\mu</math> = 1/3((-27a<sub>3</sub><math>\delta</math><sup>2</sup>)1/3+<math>\delta</math>)
 
Note that if <math> K </math>  has [[Characteristic (algebra)|characteristic]] ''q''&nbsp;≡&nbsp;2&nbsp;(mod&nbsp;3), then every element of <math> K </math> has a unique [[cube root]]; otherwise, it is necessary to consider an extension field of ''K''. 
 
Now by defining the following value <math> D=\frac{3\cdot (\mu-\delta)}{\mu} </math> another curve, C, is obtained, that is [[birational geometry|birationally equivalent]] to E:
 
<math> C </math> : <math> x^3 + y^3 + z^3= Dxyz </math>   
 
which is called ''cubic Hessian form'' (in [[projective space|projective coordinates]])
 
<math> C </math> : <math> x^3 + y^3 + 1= Dxy </math>
 
in the ''affine plane''  ( satisfying <math> x=\frac{X}{Z}</math> and <math> y=\frac{Y}{Z} </math> ).
 
Furthermore,  D<sup>3</sup>≠1  (otherwise, the curve would be [[singular point of an algebraic variety|singular]])
 
Starting from the Hessian curve, a [[birationally equivalent]] [[Weierstrass equation]] is given by
 
: <math> v^2 = u^3 - 27D(D^3 + 8)u + 54(D^6 - 20 D^3 - 8), \, </math>
 
under the transformations:
 
: <math> (x,y) = (\eta (u + 9D^2), - 1 + \eta(3D^3 - Dx -12)) \, </math>
 
and
 
: <math> (u,v) = (-9D^2 + \varepsilon x, 3\varepsilon(y - 1)) \, </math>
 
where:           
 
:<math>\eta</math> = [6(D<sup>3</sup>-1)(v+9D<sup>3</sup>-3Du-36)]/[(u+9D<sup>2</sup>)<sup>3</sup>+(3Dd-Du-12)<sup>3</sup>]
:<math>\epsilon</math> = [12(D<sup>3</sup>-1)]/[Dx+y+1]
 
== Group law ==
 
It is interesting to analyze the [[elliptic curve#The group law|group law]] of the elliptic curve, defining the addition and doubling formulas (because the [[Power analysis#Simple_power_analysis|SPA]] and [[Power analysis#Differential_power_analysis|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 <math>\theta</math> = ( 1 : -1: 0), that is, the [[identity element|neutral element]] (the inverse of <math>\theta</math> is <math>\theta</math> again).
Let P=(x<sub>1</sub>,y<sub>1</sub>) be a point on the curve. The line <math>y=-x+(x_1+y_1)</math> contains the point <math> P </math> and the point at infinity <math>\theta</math>.
Therefore, -P 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  <math> x_2-(x_1+y_1)\cdot x + x_1\cdot y_1=\theta</math>
 
Since <math> x_1+y_1+D </math> is non zero  (because <math> D^3 </math> is distinct to 1), the x-coordinate of <math>-P</math> is <math> y_1 </math> and the y-coordinate of <math>-P</math> is <math> x_1 </math>, i.e., <math> -P=(y_1,x_1)</math> or in projective coordinates <math>-P=(Y_1:X_1:Z_1)</math> .
 
In some application of [[elliptic curve cryptography]] and the elliptic curve method of factorization ([[Lenstra elliptic curve factorization|ECM]]) it is necessary to compute the scalar multiplications of ''P'', say ''[n]P'' for some [[integer]] ''n'', and they are based on the [[Exponentiation by squaring|double-and-add method]]; these operations need the addition and dobling formulas.
 
'''Doubling'''
 
Now, if <math>P=(X_1:Y_1:Z_1)</math> is a point on the elliptic curve, it is possible to define a "doubling" operation using Cauchy-Desboves´ formulae:
 
<math> [2]P=(Y_1\cdot (X_1^3-Z_1^3) : X_1\cdot (Z_1^3-Y_1^3) : Z_1\cdot (Y_1^3-X_1^3)) </math>
 
'''Addition'''
 
In the same way, for two different points, say <math>P=(X_1 : Y_1 : Z_1)</math> and <math>Q=(X_2 : Y_2 : Z_2)</math>, it is possible to define the addition formula. Let <math> R</math> denote the sum of these points, <math>R=P+Q</math>, then its coordinates are given by:
 
<math> R=(Y_1\cdot X_2\cdot Z_2-Y_2\cdot X_1\cdot Z_1 : X_1\cdot Y_2\cdot Z_2-X_2\cdot Y_1\cdot Z_1 : Z_1\cdot X_2\cdot Y_2-Z_2\cdot X_1\cdot Y_1) </math>
 
==Algorithms and examples==
 
There is one [[algorithms|algorithm]] that can be used to add two different points or to double; it is given by [[Marc Joye|Joye]] and [[Jean-Jacques Quisquater|Quisquater]]. Then, the following result gives the possibility the obtain the doubling operation by the addition:
 
'''Proposition'''. Let ''P = (X,Y,Z)'' be a point on a Hessian elliptic curve ''E(K)''. Then: ''2(X:Y:Z) = (Z:X:Y) + (Y:Z:X)''      (2).
Furthermore, we have ''(Z:X:Y)≠(Y:Z:X).''
 
Finally, contrary to other [[parametrization|parameterizations]], there is no subtraction to compute the negation of a point. Hence, this addition algorithm can also be used for subtracting two points <math>P= (X_1:Y_1:Z_1)</math>  and <math>Q= (X_2:Y_2:Z_2)</math> on a Hessian elliptic curve:
 
( X<sub>1</sub>:Y<sub>1</sub>:Z<sub>1</sub>)  - ( X<sub>2</sub>:Y<sub>2</sub>:Z<sub>2</sub>)  = ( X<sub>1</sub>:Y<sub>1</sub>:Z<sub>1</sub>)  + (Y<sub>2</sub>:X<sub>2</sub>:Z<sub>2</sub>)    (3)
 
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 attack]]s.
 
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 P<sub>1</sub> = (X<sub>1</sub>:Y<sub>1</sub>:Z<sub>1</sub>) and P<sub>2</sub> = (X<sub>2</sub>:Y<sub>2</sub>:Z<sub>2</sub>) be two points distinct to <math>\theta</math>. Assuming that Z<sub>1</sub>=Z<sub>2</sub>=1 then the algorithm is given by:
 
A = X<sub>1</sub> Y<sub>2</sub>
 
B = Y<sub>1</sub> X<sub>2</sub>
 
:X<sub>3</sub> = B Y<sub>1</sub>-Y<sub>2</sub> A
:Y<sub>3</sub> = X<sub>1</sub> A-B X<sub>2</sub>
:Z<sub>3</sub> = Y<sub>2</sub> X<sub>2</sub>-X<sub>1</sub> Y<sub>1</sub>
 
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 d=-1 P<sub>1</sub>=(1:0:-1) and P<sub>2</sub>=(0:-1:1), then if P<sub>3</sub>=P<sub>1</sub>+P<sub>2</sub> we have:
 
:X<sub>3</sub> = 0-1=-1
:Y<sub>3</sub> = -1-0=-1
:Z<sub>3</sub> = 0-0=0
 
Then: P<sub>3</sub> = (-1:-1:0)
 
=== Doubling ===
Let ''P''&nbsp;=&nbsp;(''X''<sub>1</sub>&nbsp;:&nbsp;''Y''<sub>1</sub>&nbsp;:&nbsp;''Z''<sub>1</sub>) be a point, then the doubling formula is given by:
 
*''A'' = ''X''<sub>1</sub><sup>2</sup>
*''B'' = ''Y''<sub>1</sub><sup>2</sup>
*''D'' = ''A''&nbsp;+&nbsp;''B''
*''G'' = (''X''<sub>1</sub>&nbsp;+&nbsp;''Y''<sub>1</sub>)<sup>2</sup>&nbsp;&minus;&nbsp;''D''
*''X''<sub>3</sub> = (2''Y''<sub>1</sub>&nbsp;&minus;&nbsp;''G'')&nbsp;&times;&nbsp;(''X''<sub>1</sub>&nbsp;+&nbsp;''A''&nbsp;+&nbsp;1)
*''Y''<sub>3</sub> = (''G''&nbsp;&minus;&nbsp;2''X''<sub>1</sub>)&nbsp;&times;&nbsp;(''Y''<sub>1</sub>&nbsp;+&nbsp;''B''&nbsp;+&nbsp;1)
*''Z''<sub>3</sub> = (''X''<sub>1</sub>&nbsp;&minus;&nbsp;''Y''<sub>1</sub>)&nbsp;&times;&nbsp;(''G''&nbsp;+&nbsp;2''D'')
 
The cost of this algorithm is three&nbsp;multiplications&nbsp;+&nbsp;three&nbsp;squarings&nbsp;+&nbsp;11&nbsp;additions&nbsp;+&nbsp;3&times;2.
 
;Example
If <math>P=(-1:-1:1)</math> is a point over the Hessian curve with parameter d=-1, then the coordinates of <math>2P=(X:Y:Z)</math> are given by:
 
X = (2.(-1)-2)(-1+1+1) = -4
 
Y = (-4-2.(-1))((-1)+1+1) = -2
 
Z = (-1-(-1))((-4)+2.2) = 0
 
That is, <math>2P=(-4:-2:0)</math>
 
==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
 
<math> x </math> and <math> y </math> are represented by <math>  X , Y , Z , XX , YY , ZZ , XY , YZ , XZ  </math> satisfying the following equations:
 
<math> x=X/Z </math>
 
<math> y=Y/Z </math>
 
<math> XX=X\cdot X </math>
 
<math> YY=Y\cdot Y </math>
 
<math> ZZ=Z\cdot Z </math>
 
<math> XY=2\cdot X\cdot Y </math>
 
<math> YZ=2\cdot Y\cdot Z </math>
 
<math> XZ=2\cdot X\cdot Z </math>
 
==See also==
 
For more information about the running-time required in a specific case, see [[Table of costs of operations in elliptic curves]]
 
[[Twisted Hessian curves]]
 
==External links==
* http://hyperelliptic.org/EFD/g1p/index.html
 
==Notes==
 
{{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.&nbsp;68&ndash;96
* {{cite book
| author = Marc Joye, Jean-Jacques Quisquater 
| year = 2001
| title = Hessian Elliptic Curves and Side-Channel Attacks
| publisher = Springer-Verlag Berlin Heidelberg 2001
| url = http://www.springerlink.com/content/467hl25tjyecwcpf/
| isbn = 978-3-540-42521-2
}}
* {{cite book
| author = N. P. Smart 
| year = 2001
| title = The Hessian form of an Elliptic Curve
| publisher = Springer-Verlag Berlin Heidelberg 2001
| url = http://www.springerlink.com/content/4rrxvgjhwbftr6r9/
| isbn = 978-3-540-42521-2
}}
 
{{DEFAULTSORT:Hessian Form Of An Elliptic Curve}}
[[Category:Elliptic curves]]
[[Category:Elliptic curve cryptography]]

Latest revision as of 20:34, 8 January 2014

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

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

Let K be a field and let E denote an elliptic curve in Weierstrass form over K. Then the following curve can be obtained:

Y2+(a1X+a3)Y=X3

where the curve has discriminant Δ=(a3(a1327a3))=a33δ,

and (0,0) has order 3. Before proving this, note that if the characteristic of K, say q, is 2 modulo 3, then the curve has 3 points of order 3; and if q is 1 modulo 3, there are 8 points of order 3.

To prove that P=(0,0) has order 3, it is sufficient to show that [2]P=P using the elliptic curve group law.

(i) Compute P: if Y2+h(X)Y=X3 is the given curve and P1=(x1,y1) the point, then P=(x1,h(x1)y1). So, in this case, since P=(0,0), then P=(0,a3).

(ii) Compute [2]P: it can be done using the tangent and chord method, that is, first construct the line through the general point P1=(x1,y1) and find the other intersection point with the curve.

Let y=lx+m be the tangent to the curve at P1. Now, to find the points of intersection between the curve and the line, replace every y by y=lx+m in the curve:

(lx+m)2+(a1x+a3)(lx+m)=x3 iff x3(l2+a1l)x2(2lm+a1l+a3l)xm2a3m=0

The roots of this equation are the x-coordinates of P1 and P2=(x2,y2), so:

(xx1)2(xx2)=x3(2x1+x2)x2+g(x)=x3(l2+a1l)x2+g(x)

Then comparing the coefficients:

x2=l2+a1l2x1 and y2=lx2+y1lx1 (y2=lx2+m and m=y1lx1).

Note that x1,y1 are known and by the implicit function theorem l=fxfy (which is the slope of the line y=lx+m). Then, [2]P1=P2 and [2]P would be known. This is a general method to compute [2]P.

So applying it to P=(0,0):

since l=3x2a1y2y+a1x+a3=0 (note a3 cannot be zero, otherwise the denominator would vanish at P and the curve would be singular),

then [2]P=P2=(l2+a1l2x1,h(x1)lx3+y1lx1)=(0,a3) where h(x)=a1x+a3

Thus, [2]P=(0,a3)=P, that is (0,0) has order 3 over Y2+(a1X+a3)Y=X3.

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

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

where μ is determined from the formula:

μ = 1/3((-27a3δ2)1/3+δ)

Note that if K has characteristic q ≡ 2 (mod 3), then every element of K has a unique cube root; otherwise, it is necessary to consider an extension field of K.

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

C : x3+y3+z3=Dxyz

which is called cubic Hessian form (in projective coordinates)

C : x3+y3+1=Dxy

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

Furthermore, D3≠1 (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(D3-1)(v+9D3-3Du-36)]/[(u+9D2)3+(3Dd-Du-12)3]
ϵ = [12(D3-1)]/[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 θ = ( 1 : -1: 0), that is, the neutral element (the inverse of θ is θ again). Let P=(x1,y1) be a point on the curve. The line y=x+(x1+y1) contains the point P and the point at infinity θ. Therefore, -P 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 D3 is distinct to 1), the x-coordinate of P is y1 and the y-coordinate of P is x1, 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 P, say [n]P for some integer n, and they are based on the double-and-add method; these operations need the addition and dobling 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 R denote the sum of these points, R=P+Q, then its coordinates are given by:

R=(Y1X2Z2Y2X1Z1:X1Y2Z2X2Y1Z1:Z1X2Y2Z2X1Y1)

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 P = (X,Y,Z) be a point on a Hessian elliptic curve E(K). Then: 2(X:Y:Z) = (Z:X:Y) + (Y:Z:X) (2). Furthermore, we have (Z:X:Y)≠(Y:Z:X).

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 P=(X1:Y1:Z1) and Q=(X2:Y2:Z2) on a Hessian elliptic curve:

( X1:Y1:Z1) - ( X2:Y2:Z2) = ( X1:Y1:Z1) + (Y2:X2:Z2) (3)

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 P1 = (X1:Y1:Z1) and P2 = (X2:Y2:Z2) be two points distinct to θ. Assuming that Z1=Z2=1 then the algorithm is given by:

A = X1 Y2

B = Y1 X2

X3 = B Y1-Y2 A
Y3 = X1 A-B X2
Z3 = Y2 X2-X1 Y1

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 d=-1 P1=(1:0:-1) and P2=(0:-1:1), then if P3=P1+P2 we have:

X3 = 0-1=-1
Y3 = -1-0=-1
Z3 = 0-0=0

Then: P3 = (-1:-1:0)

Doubling

Let P = (X1 : Y1 : Z1) be a point, then the doubling formula is given by:

  • A = X12
  • B = Y12
  • D = A + B
  • G = (X1 + Y1)2 − D
  • X3 = (2Y1 − G) × (X1 + A + 1)
  • Y3 = (G − 2X1) × (Y1 + B + 1)
  • Z3 = (X1 − Y1) × (G + 2D)

The cost of this algorithm is three multiplications + three squarings + 11 additions + 3×2.

Example

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

X = (2.(-1)-2)(-1+1+1) = -4

Y = (-4-2.(-1))((-1)+1+1) = -2

Z = (-1-(-1))((-4)+2.2) = 0

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

For more information about the running-time required in a specific case, see Table of costs of operations in elliptic curves

Twisted Hessian curves

External links

Notes

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

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
  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  1. Cauchy-Desbove's Formulae: Hessian-elliptic Curves and Side-Channel Attacks, Marc Joye and Jean-Jacques Quisquarter