SWIFFT: Difference between revisions
en>SchreiberBike Repairing links to disambiguation pages - You can help! - Field |
en>John85 m →Practical Security: consistent superscript formatting |
||
| Line 1: | Line 1: | ||
In [[mathematics]], the '''Twisted Hessian curve''' represents a generalization of [[Hessian curve]]s; it was introduced in [[elliptic curve cryptography]] to speed up the addition and doubling formulas and to have strongly unified arithmetic. In some operations (see the last sections), it is close in speed to [[Edwards curve]]s. | |||
==Definition== | |||
[[Image:Twisted Hessian curve.svg|300px|right|thumb|A Twisted Hessian curve of equation <math>10x^3+y^3+1=15xy</math>]] | |||
Let ''K'' be a [[field (mathematics)|field]]. According to<ref>{{cite web|url=http://hyperelliptic.org/EFD/g1p/auto-twistedhessian.html|title=Twisted Hessian curves|accessdate=28 February 2010}}</ref> twisted Hessian curves were introduced by [[Daniel J. Bernstein|Bernstein]], Lange, | |||
and Kohel. | |||
The twisted Hessian form in ''[[affine space|affine coordinates]]'' is given by: | |||
<math> a\cdot x^3+y^3+1=d\cdot x\cdot y </math> | |||
and in ''[[projective space|projective coordinates]]'': | |||
<math> a\cdot X^3+Y^3+Z^3=d\cdot X\cdot Y\cdot Z </math> | |||
where <math>x=\frac{X}{Z}</math> and <math> y=\frac{Y}{Z}</math> and ''a'', ''d'' in ''K'' | |||
Note that these curves are [[birational geometry|birationally equivalent]] to [[Hessian curves]]. | |||
The Hessian curve is just a special case of Twisted Hessian curve, with a=1. | |||
Considering the equation ''a'' · ''x''<sup>3</sup> + ''y''<sup>3</sup> + 1 = ''d'' · ''x'' · ''y'', note that: | |||
if ''a'' has a cube root in ''K'', there exists a unique ''b'' such that ''a'' = ''b''<sup>3</sup>.Otherwise, it is necessary to consider an [[field extension|extension field]] of ''K'' (e.g., ''K''(''a''<sup>1/3</sup>)). Then, since ''b''<sup>3</sup> · ''x''<sup>3</sup> = ''bx''<sup>3</sup>, defining ''t'' = ''b'' · ''x'', the following equation is needed (in Hessian form) to do the transformation: | |||
<math> t^3+y^3+1=d\cdot x\cdot y </math>. | |||
This means that Twisted Hessian curves are birationally equivalent to elliptic curve in [[Elliptic curve|Weierstrass form]]. | |||
==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|simple power analysis]] and [[Power_analysis#Differential_power_analysis|differential power analysis]] attacks are based on the running time of these operations). In general, the group law is defined in the following way: if three points lies in the same line then they sum up to zero. So, by this property, the [[explicit formula]]s{{dn|date=December 2013}} for the group law depend on the curve shape. | |||
Let ''P'' = (''x''<sub>1</sub>, ''y''<sub>1</sub>) be a point, then its inverse is −''P'' = (''x''<sub>1</sub>/''y''<sub>1</sub>, 1/''y''<sub>1</sub>) in the plane. | |||
In projective coordinates, let ''P'' = (''X'' : ''Y'' : ''Z'') be one point, then −''P'' = (''X''<sub>1</sub>/''Y''<sub>1</sub> : 1/''Y''<sub>1</sub> : ''Z'')<!-- ?? --> is the inverse of P. | |||
Furthermore, the [[neutral element]] (in affine plane) is: θ = (0, −1) and in projective coordinates: θ = (0 : −1 : 1). | |||
In some applications of [[elliptic curve cryptography]] and the elliptic curve method of [[integer factorization]] ([[Lenstra elliptic curve factorization|ECM]]) it is necessary to compute the [[scalar multiplication]]s of ''P'', say ''[n]P'' for some [[integer]] ''n'', and they are based on the [[Exponentiation by squaring|double-and-add]] method; so the addition and doubling formulas are needed. | |||
The addition and doubling formulas for this [[elliptic curve]] can be defined, using the affine coordinates to simplify the notation: | |||
===Addition formulas=== | |||
Let ''p'' = (''x''<sub>1</sub>, ''y''<sub>1</sub>) and ''Q'' = (''x''<sub>2</sub>, ''y''<sub>2</sub>); then, ''R'' = ''P'' + ''Q'' = (''x''<sub>3</sub>, ''y''<sub>3</sub>) is given by the following equations: | |||
<math>x_3=\frac{x_1-y_1^3\cdot x_1}{a\cdot y_1\cdot x_1^3-y_1} </math> | |||
<math> y_3=\frac{y_1^3-a\cdot x_1^3}{a\cdot y_1\cdot x_1^3-y_1} </math> | |||
===Doubling formulas=== | |||
Let ''P'' = (''x'', ''y''); then [2]''P'' = (''x''<sub>1</sub>, ''y''<sub>1</sub>) is given by the following equations: | |||
<math> x_1=\frac{x-y^3\cdot x}{a\cdot y\cdot x^3-y} </math> | |||
<math> y_1=\frac{y^3-a\cdot x^3}{a\cdot y\cdot x^3-y} </math> | |||
==Algorithms and examples== | |||
Here some efficient algorithms of the addition and doubling law are given; they can be important in cryptographic computations, and the projective coordinates are used to this purpose. | |||
===Addition=== | |||
<math> A = X_1\cdot Z_2 </math> | |||
<math>B = Z_1\cdot Z_2 </math> | |||
<math>C = Y_1X_2 </math> | |||
<math>D = Y_1\cdot Y_2 </math> | |||
<math>E = Z_1\cdot Y_2 </math> | |||
<math>F = a\cdot X_1\cdot X_2 </math> | |||
<math>X_3 = A\cdot B-C\cdot D </math> | |||
<math>Y_3 = D\cdot E-F\cdot A </math> | |||
<math>Z_3 = F\cdot C-B\cdot E </math> | |||
The cost of this algorithm is 12 multiplications, one multiplication by a (constant) and 3 additions. | |||
'''Example:''' | |||
let ''P''<sub>1</sub> = (1 : −1 : 1) and ''P''<sub>2</sub> = (−2 : 1 : 1) be points over a twisted Hessian curve with a=2 and d=-2.Then ''R'' = ''P''<sub>1</sub> + ''P''<sub>2</sub> is given by: | |||
<math> A=-1; B=-1; C=-1; D=-1; E=1; F=2; </math> | |||
:<math>x_3=0</math> | |||
:<math>y_3=-3</math> | |||
:<math>z_3=-3</math> | |||
That is, ''R''= (0 : −3 : −3). | |||
===Doubling=== | |||
<math> D = X_1^3 </math> | |||
<math> E = Y_1^3 </math> | |||
<math> F = Z_1^3 </math> | |||
<math> G = a\cdot D </math> | |||
<math> X_3 = X_1\cdot (E-F) </math> | |||
<math> Y_3 = Z_1\cdot (G-E) </math> | |||
<math> Z_3 = Y_1\cdot (F-G) </math> | |||
The cost of this algorithm is 3 multiplications, one multiplication by constant, 3 additions and 3 cube powers. | |||
This is the best result obtained for this curve. | |||
'''Example:''' | |||
let ''P'' = (1 : −1 : 1) be a point over the curve defined by a=2 and d=-2 as above, then ''R'' = [2]''P'' = (''x''<sub>3</sub> : ''y''<sub>3</sub> : ''z''<sub>3</sub>) is given by: | |||
<math> D=1; E=-1; F=1; G=-4; </math> | |||
:<math>x_3=-2</math> | |||
:<math>y_3=-3</math> | |||
:<math>z_3=-5</math> | |||
That is ''R'' = (−2 : −3 : 5). | |||
==See also== | |||
* [[Table of costs of operations in elliptic curves]] | |||
==External links== | |||
* http://hyperelliptic.org/EFD/g1p/index.html | |||
==References== | |||
<references/> | |||
* http://hyperelliptic.org/EFD/g1p/auto-twistedhessian.html | |||
{{DEFAULTSORT:Twisted Hessian Curves}} | |||
[[Category:Elliptic curves]] | |||
[[Category:Elliptic curve cryptography]] | |||
Revision as of 11:44, 22 January 2014
In mathematics, the Twisted Hessian curve represents a generalization of Hessian curves; it was introduced in elliptic curve cryptography to speed up the addition and doubling formulas and to have strongly unified arithmetic. In some operations (see the last sections), it is close in speed to Edwards curves.
Definition
Let K be a field. According to[1] twisted Hessian curves were introduced by Bernstein, Lange, and Kohel.
The twisted Hessian form in affine coordinates is given by:
and in projective coordinates:
Note that these curves are birationally equivalent to Hessian curves.
The Hessian curve is just a special case of Twisted Hessian curve, with a=1.
Considering the equation a · x3 + y3 + 1 = d · x · y, note that:
if a has a cube root in K, there exists a unique b such that a = b3.Otherwise, it is necessary to consider an extension field of K (e.g., K(a1/3)). Then, since b3 · x3 = bx3, defining t = b · x, the following equation is needed (in Hessian form) to do the transformation:
This means that Twisted Hessian curves are birationally equivalent to elliptic curve in Weierstrass form.
Group law
It is interesting to analyze the group law of the elliptic curve, defining the addition and doubling formulas (because the simple power analysis and differential power analysis attacks are based on the running time of these operations). In general, the group law is defined in the following way: if three points lies in the same line then they sum up to zero. So, by this property, the explicit formulasTemplate:Dn for the group law depend on the curve shape.
Let P = (x1, y1) be a point, then its inverse is −P = (x1/y1, 1/y1) in the plane. In projective coordinates, let P = (X : Y : Z) be one point, then −P = (X1/Y1 : 1/Y1 : Z) is the inverse of P.
Furthermore, the neutral element (in affine plane) is: θ = (0, −1) and in projective coordinates: θ = (0 : −1 : 1).
In some applications of elliptic curve cryptography and the elliptic curve method of integer 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; so the addition and doubling formulas are needed.
The addition and doubling formulas for this elliptic curve can be defined, using the affine coordinates to simplify the notation:
Addition formulas
Let p = (x1, y1) and Q = (x2, y2); then, R = P + Q = (x3, y3) is given by the following equations:
Doubling formulas
Let P = (x, y); then [2]P = (x1, y1) is given by the following equations:
Algorithms and examples
Here some efficient algorithms of the addition and doubling law are given; they can be important in cryptographic computations, and the projective coordinates are used to this purpose.
Addition
The cost of this algorithm is 12 multiplications, one multiplication by a (constant) and 3 additions.
Example:
let P1 = (1 : −1 : 1) and P2 = (−2 : 1 : 1) be points over a twisted Hessian curve with a=2 and d=-2.Then R = P1 + P2 is given by:
That is, R= (0 : −3 : −3).
Doubling
The cost of this algorithm is 3 multiplications, one multiplication by constant, 3 additions and 3 cube powers. This is the best result obtained for this curve.
Example:
let P = (1 : −1 : 1) be a point over the curve defined by a=2 and d=-2 as above, then R = [2]P = (x3 : y3 : z3) is given by:
That is R = (−2 : −3 : 5).