The tripling-oriented Doche–Icart–Kohel curve is a form of an elliptic curve that has been used lately in cryptography; it is a particular type of Weierstrass curve. At certain conditions some operations, as adding, doubling or tripling points, are faster to compute using this form.The Tripling oriented Doche–Icart–Kohel curve, often called with the abbreviation 3DIK has been introduced by Christophe Doche, Thomas Icart, and David R. Kohel in [1]
Let
K
An elliptic curve in tripling oriented Doche–Icart–Kohel form is defined by the equation:
Ta : y2=x3+3a(x+1)2
with
a\inK
A general point P on
Ta
(x,y)
Consider an elliptic curve in the Tripling-oriented Doche-Icart-Kohel form in affine coordinates:
Ta: y2=x3+3a(x+1)2, a ≠ 0,\tfrac{9}{4}.
As in other forms of elliptic curves, it is possible to define some "operations" between points, such as adding points, or doubling (See also The group law). In the following sections formulas to add, negate and doubling points are given. The addition and doubling formulas are often used for other operations: given a point P on an elliptic curve it is possible to compute [n]P, where n is an integer, using addition and doubling; computing multiples of points is important in elliptic curve cryptography and in Lenstra elliptic curve factorization.
Given
P1=(x1,y1)
P2=(x2,y2)
Ta
P3=(x3,y3)=P1+P2
\begin{align} x3&=
1 | ||||||||||||
|
\left\{
3+(x | |
-x | |
2-3a)x |
2+6ax | |
2)x |
1+(y
2-2y | |
2y |
1+(-x
2)) | |
2 |
\right\}\\ y3&=
1 | ||||||||||||
|
\left\{(-y1+2y2)x
3+(-3ay | |
1-3y |
2x2+3ay2)x
2y | |
1+6ax |
2y1-6ay2x2)x1\right.\\ &
3-3y | |
\left.+(y | |
2y |
2)y | |
1+(y |
2x
3+3ay | |
2x |
3)) | |
2 |
\right\} \end{align}
Given a point
P1=(x1,y1)
Ta
P3=(x3,y3)=2P1
\begin{align} x3&=
9 | + | ||||||||||||||
|
9 | ||||||
|
+\left(
9 | + | ||||||||
|
9 | ||||||
|
\right
2+ | |
)x | |
1 |
\left(
18 | |||||||||
|
-2\right)
x | |||||||||||||
|
\\ y3&=-
27 | - | |||||
|
81 | ||||||
|
+\left(-
81 | - | ||||||||
|
81 | ||||||
|
\right
4+ | |
)x | |
1 |
\left(-
27 | - | ||||||||
|
81 | + | ||||||||
|
9 | |
2y1 |
\right
3+ | |
)x | |
1 |
\left(-
81 | - | ||||||||
|
81 | ||||||
|
| ||||
a |
2 | |
\right)x | |
1 |
\\ & +\left(-
81 | + | ||||||||
|
9 | + | |||||
|
9 | |
y1a |
\right)x1+\left(-
27 | + | ||||||||
|
9 | ||||||
|
-y1\right) \end{align}
Given a point
P1=(x1,y1)
Ta
(0:1:0)
-P1=(x1,-y1)
There are also other formulas given in [2] for Tripling-oriented Doche–Icart–Kohel curves for fast tripling operation and mixed-addition.
For computing on these curves points are usually represented in new Jacobian coordinates (Jn):
a point in the new Jacobian coordinates is of the form
P=(X:Y:Z:Z2)
P=(X:Y:Z:Z2)=(λ2X:λ3Y:λZ:λ2Z2),
for any
λ\inK
This means, for example, that the point
P=(X:Y:Z:Z2)
Q=(4X:8Y:2Z:4Z2)
λ=2
P=(x,y)
Ta
P=(X:Y:Z:Z2)
x=X/Z2
y=Y/Z3
Ta
Ta : Y2=X3+3aZ2(X+Z2)2.
The term
Z2
The neutral element in new Jacobian coordinates is
(1:1:0:0)
The following algorithm represents the sum of two points
P1
P2
P3=(X3,Y3,Z3,ZZ3)
Z2=1
a3=3a
A=X2ZZ1
B=Y2ZZ1Z1
C=X1-A
D=2(Y1-B)
F=C2
F4=4F
Z3=
2-ZZ | |
(Z | |
1-F |
E=
2 | |
{Z | |
3} |
G=CF4
H=AF4
X3=
2-G-2H-a | |
D | |
3E |
Y3=D(H-X3)-2BG
ZZ3=E
Let
P1=(1,\sqrt{13})
P2=(0,\sqrt{3})
R
y2=x3+3(x+1)2
Then:
A=X2ZZ1=0
B=Y2ZZ1Z1=\sqrt{3}
C=X1-A=1
D=2(Y1-B)=2(\sqrt{13}-\sqrt{3})
F=C2=1
F4=4F=4
Z3=
2-ZZ | |
(Z | |
1-F |
=2
E=
2 | |
{Z | |
3} |
=4
G=CF4=4
H=AF4=0
X3=
2-G-2H-a | |
D | |
3E |
=48-8\sqrt{39}
Y3=D(H-X3)-2BG=296\sqrt{3}-144\sqrt{13}
ZZ3=E=4
Notice that in this case
Z1=Z2=1
P3=(X3,Y3,Z3,ZZ3)=(48-8\sqrt{39},296\sqrt{3}-144\sqrt{13},2,4)
P3=(12-2\sqrt{39},37\sqrt{3}-18\sqrt{13})
The following algorithm represents the doubling of a point
P1
a3=3a
a2=2a
A=
2 | |
{X | |
1} |
B=a2ZZ1(X1+ZZ1)
C=3(A+B)
D=
2 | |
{Y | |
1} |
E=D2
Z3=(Y1+Z
2-D-ZZ | |
1 |
ZZ3=
2 | |
Z | |
3 |
F=
2-A-E) | |
2((X | |
1+D) |
X3=
2-a | |
C | |
3ZZ |
3-2F
Y3=C(F-X3)-8E
Let
P1=(0,\sqrt{3})
y2=x3+3(x+1)2
Then:
A=
2 | |
{X | |
1} |
=0
B=a2ZZ1(X1+ZZ1)=2
C=3(A+B)=6
D=
2 | |
{Y | |
1} |
=3
E=D2=9
Z3=(Y1+Z
2-D-ZZ | |
1 |
=2\sqrt{3}
ZZ3=
2 | |
Z | |
3 |
=12
F=
2-A-E) | |
2((X | |
1+D) |
=0
X3=
2-a | |
C | |
3ZZ |
3-2F=0
Y3=C(F-X3)-8E=-72
Notice that here the point is in affine coordinates, so
Z1=1
P3=(0,-72,2\sqrt{3},12)
P3=(0,-\sqrt{3})
Any elliptic curve is birationally equivalent to another written in the Weierstrass form.
The following twisted tripling-oriented Doche-Icart-Kohel curve:
Ta,λ: y2=x3+3λa(x+λ)2
can be transformed into the Weierstrass form by the map:
(x,y)\mapsto(x-λa,y).
In this way
Ta,λ
y2=x3-3{λ}2a(a-2)x+{λ}3a(2a2-6a+3)
Conversely, given an elliptic curve in the Weierstrass form:
Ec,d: y2=x3+cx2+d
it is possible to find the "corresponding" Tripling-oriented Doche–Icart–Kohel curve, using the following relation:
λ=
-3d(a-2) | |
a(2a2-6a+3) |
where is a root of the polynomial
6912a(a-2)3-j(4a-9),
where
j= | 6912c3 |
4c3+27d2 |
is the j-invariant of the elliptic curve
Ec,d
Notice that in this case the map given is not only a birational equivalence, but an isomorphism between curves.
For more informations about the running-time required in a specific case, see Table of costs of operations in elliptic curves