Documentos de Académico
Documentos de Profesional
Documentos de Cultura
curvas elpticas
Lloren Huguet Rotger
Josep Rif Coma
Juan Gabriel Tena Ayuso
PID_00200952
Los textos e imgenes publicados en esta obra estn sujetos excepto que se indique lo contrario a
una licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 Espaa de
Creative Commons. Podis copiarlos, distribuirlos y transmitirlos pblicamente siempre que citis
el autor y la fuente (FUOC. Fundaci per a la Universitat Oberta de Catalunya), no hagis un uso
comercial y no hagis una obra derivada. La licencia completa se puede consultar en
http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
CC-BY-NC-ND PID_00200952 Criptografa con curvas elpticas
ndice
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.5.1. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5.2. Eficiencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Ejercicios de autoevaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
CC-BY-NC-ND PID_00200952 5 Criptografa con curvas elpticas
Introduccin
y2 = x3 + ax + b.
Objetivos
Ya hemos estudiado de forma detallada algunos de los conceptos que tambin Ver tambin
usaremos en este mdulo. Vamos a recordar solo algunos:
En el mdulo Cuerpos
finitosde esta asignatura
encontraris de forma
La caracterstica de un cuerpo K es el mnimo nmero p tal que para todo detallada algunos de los
x K se cumple que 1 conceptos que tambin
| + 1 +{z + 1} = 0, donde 0 es el elemento neutro de la
p
usaremos en este mdulo.
suma y 1 es el elemento neutro del producto en el cuerpo K. Escribiremos
char(K) = p.
Si para todo n N, 1
| + 1 +{z + 1} 6= 0 decimos que char(K) = 0.
n
Dado un punto proyectivo (x0 : x1 : x2 ) sabemos que para algn i = 0,1,2 xi 6= 0. Nota
Definimos el conjunto abierto Ui = {(x0 : x1 : x2 )|xi 6= 0}
Anlogamente se define el
espacio proyectivo
n-dimensional
Sea (x : y : z) U3 . Existe un nico representante de este punto de la forma Pn = Kn+1 {0}/ , cuyas
clases de equivalencia se
( xz , yz ,1). De este modo, dado que z 6= 0, podemos identificar puntos proyectivos denominan puntos y se
con puntos afines: denotan por
(x0 : x1 : : xn ).
Algoritmo 1.2.
P2 U3 K2
(x : y : z) ( xz , yz )
Los puntos proyectivos con z = 0 forman lo que se denomina recta del infinito.
. Observacin
Ejemplo 1.1.
Ahora bien, s que tiene sentido decir que F[x,y,z]=0 puesto que si 6= 0,
F[x,y,z] = r F[x,y,z]; en consecuencia, si F es un polinomio homogneo de
grado r, entonces F[x,y,z] = 0 si y solo si F[x,y,z] = 0.
CC-BY-NC-ND PID_00200952 11 Criptografa con curvas elpticas
Relacin afn-proyectivo
Algoritmo 1.4.
An Ui Pn
(a1 , . . . ,an ) (a1 ; . . . ; ai1 ; 1; ai+1 ; . . . ; an )
zi +1
( zz0i , . . . , zzi1i , zn
zi , . . . , zi ) (z0 ; . . . ; zn )
Ejemplo 1.2.
Coordenadas:
A2 U2 P2
(1,2) (x : y : z) = (1 : 2 : 1)
(2, 21 ) (x : y : z) = (4 : 1 : 2)
Polinomios:
K[x,y] K[x,y,z]
x2 + x3 + xy x2 z + x3 + xyz
x + x2 y + 1 xz2 + x2 y + z3
. Recordar
8
f
>
>
> (p) = 0
< x
>
>
>
> f
>
: (p) = 0
y
.
Recordar
Definicin 1.8 (Curva no singular).
f
La notacin (p) significa
Una curva es no singular si todos sus puntos son simples (o sea, no x
calcular la derivada parcial de
singulares). f (x) respecto a la variable x y
dar valores en el punto p.
f f
(p)(x a) + (p)(y b) = 0
x y
.
Observacin
Definicin 1.10 (Multiplicidad en un punto).
mp (C) = 0 p 6 C.
Definimos la multiplicidad de C, en el punto p = (a,b), como el mnimo mp (C) = 1 p es un
punto simple de C.
k tal que fk (xa,y b) 6= 0 (como polinomio) y la denotaremos por mp (C).
Si mp (C) = 2, decimos
que p es un punto doble.
.
Observacin
Definicin 1.11 (Nodos y cspides).
Ntese que los factores y
Si mp (C) = 2, entonces f2 (x a,y b) se puede descomponer en producto en la Definicin1.11 no
tienen por qu tener los
de 2 factores: f2 (x a,y b) = . coeficientes en el cuerpo K,
sino que pueden tenerlos en
Si 6= , diremos que p es un nodo. alguna extensin cuadrtica
de K.
Si = , diremos que p es una cspide. En el caso de un nodo
distinguiremos un nodo
racional (si y tienen
Donde la anterior igualdad o desigualdad de y se entiende salvo un
coeficientes en K), de un
factor constante. nodo irracional (en caso
contrario).
Ejemplo 1.3.
Para responder la primera cuestin, tal y como hemos dicho en la definicin 1.7,
calcularemos las derivadas parciales teniendo en cuenta que, adems, el valor de la
funcin f (x,y) debe ser cero en todos los puntos de la curva:
f
8
>
> = 3x2 + 2ax = 0
x
>
>
>
>
>
>
>
>
<
f
= 2y = 0
> y
>
>
>
>
>
>
>
>
f = x3 + ax2 y2 = 0
>
:
Por lo tanto, f0 (x,y) = f1 (x,y) = 0, f2 (x,y) = ax2 y2 = ( ax + y)( ax y), f3 (x,y) = x3 .
As, de acuerdo con la definicin 1.10, vemos que mp (C) = 2 y, por lo tanto, p = (0,0)
es un punto doble. Ahora, de acuerdo con la Definicin 1.11 vemos que para a = 0 el
punto p = (0,0) es una cspide y para todos los valores a 6= 0, el punto p = (0,0) es un
nodo. Dependiendo de si a K o no el nodo ser racional o irracional.
y 0,5
0,5
0,5
0
0,2 0,4 0,6 0,8 1
x
0,5
Una pregunta que quizs nos hayamos hecho a estas alturas es: por qu nos
interesar mirar las curvas en el plano proyectivo?
Estas dos curvas afines (las dadas por f y g) son curvas asociadas a la mis- Observacin
ma curva proyectiva. As, aunque una de las curvas afines contenga un punto
El uso de coordenadas
singular podramos encontrar otra curva afn asociada a la misma curva pro- proyectivas tambin permite
realizar clculos en curvas
yectiva que no tenga ninguno.
elpticas sobre cuerpos finitos
sin necesidad de hacer
operaciones de divisin en el
. cuerpo. Esto es importante,
puesto que las operaciones
Teorema 1.12 (Teorema de Bezout). de dividir son
computacionalmente
Sean C = {(x : y : z) P2 |F[x,y,z] = 0} y D = {(x : y : z) P2 |G[x,y,z] = 0} costosas.
Ejemplo 1.4.
Corolario 1.13.
Nuestra cnica es una curva proyectiva de grado 2; por lo tanto, por el teorema
de Bezout, la recta y la cnica tienen 2 puntos en comn, pero como el punto
singular tiene multiplicidad ms grande o igual que 2, el nmero de puntos en
CC-BY-NC-ND PID_00200952 16 Criptografa con curvas elpticas
.
Observacin
Definicin 1.15 (Cuerpo p-dico).
El cuerpo R de los nmeros
Sea p primo. Todo nmero a Q se puede escribir de la forma a = reales se puede definir como
m el conjunto de todas las
pr , donde mcd(m,p) = 1 y mcd(n,p) = 1. Entonces, definimos la norma sucesiones fundamentales,
n
1 mdulo una cierta relacin
p-dica de a como: |a|p = r . de equivalencia.
p
Una cnica (con coeficientes en Q) tiene un punto racional si y solo El Teorema1.17 es falso para
si tiene un punto racional sobre R y sobre los cuerpos Qp para todo curvas de grado mayor que
2. Para curvas de grado 2, es
primo p. cierto para cualquier nmero
de variables, es decir, curvas
planas o no, definidas por
una forma cuadrtica
(Hasse-Minkowski).
CC-BY-NC-ND PID_00200952 17 Criptografa con curvas elpticas
Una curva de grado 1 es una recta. La ecuacin de una tal recta se puede
escribir como Ax + By + C = 0.
Algoritmo 1.18.
t (t, CAt
B )
1) x2 + y2 = c < 0 = .
2) x2 + y2 = 0 = un punto.
3) x2 = 0 = recta doble.
4) xy = 0 = dos rectas.
5) y = x2 = parbola.
6) xy = 1 = hiprbole.
7) x2 + y2 = c > 0 = elipse.
Los puntos de la cnica los podemos pensar como intersecciones de la cnica con rectas
que pasan por este punto fijado p = (0,1).
Consideramos las rectas r : Ax + By + C = 0, del haz de rectas que pasan por el punto p.
Como p = (0,1) pertenece a la recta, se tiene que B + C = 0, o sea C = B.
A
Hagamos A = y, entonces la recta ser, A x + y 1 = 0.
B
As, el haz de rectas que pasan por p = (0,1) es {A x + y 1 = 0}A (o sea, variando los
valores del parmetro A , encontramos todas las rectas del haz).
Hagamos ahora la interseccin de las rectas del haz con la cnica. O sea, resolvamos el
sistema de ecuaciones:
8
< A x + y 1 = 0
x2 + y 2 = 1
:
Haciendo operaciones, y = 1 A x
8
<x = 0 punto (0,1)
>
2A 2A 1 A2
:x(1 + A2 ) 2A = 0, x =
> punto ,
1 + A2 1 + A2 1 + A2
As, escogiendo como punto fijo p = (0,1), parametrizamos la cnica inicial de la siguiente
manera:
Algoritmo 1.19.
2
2t
t , 1t
1+t 2 1+t 2
2t 1 t 2
Para cada t del cuerpo base, el punto de la curva 2
, 2
tambin lo es; en
1+t 1+t
2 2
particular si el cuerpo es infinito, la curva dada por f (x,y) = x + y 1 tiene infinitos
puntos racionales.
Demostracin: Suponemos que tenemos una cbica con dos puntos singu-
lares. Consideramos la recta que pasa por estos dos puntos. La curva y la recta
tienen, como mnimo, 4 puntos en comn contando multiplicidades; pero,
teniendo en cuenta el teorema de Bezout, solo podran tener 3, a menos que
tuviesen una componente irreducible en comn, lo que como en el corolario
1.13 no puede ocurrir. Por tanto, la cbica solo puede tener un punto singular
a lo sumo.
Supongamos ahora que este punto singular tiene multiplicidad mayor que
dos. Entonces una recta que pase por este punto y otro punto cualquiera de
la cbica tendra, al menos, 4 puntos en comn con la curva y esto, por el
teorema de Bezout, no puede ocurrir.
Proposicin 1.21.
Si tenemos una curva de grado 3 no singular, sabemos que una recta que pasa
por dos de sus puntos corta a la curva en un tercer punto. Adems, si dos de
estos punto son racionales, entonces el tercero tambin lo es. (Diofantes, siglo
III a. C.).
Resumimos lo que hemos dicho hasta ahora sobre los puntos racionales so-
bre Q:
Una curva elptica es una curva plana no singular de grado 3 junto con
un punto racional prefijado, que denominaremos punto base.
Cualquier curva elptica puede ser escrita en P2 como una ecuacin cbica de
la siguiente forma:
Ax3 + Bx2 y + Cx2 z + Dxyz + Ey2 z + Fy2 x + Gy3 + Hz3 + Iz2 x + Jz2 y = 0
con a1 , . . . ,a6 K
y2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 (2)
Si char(K) 6= 2, entonces
1 1 1 1 1
(y + a x + a3 )2 = y2 + a1 xy + a3 y + a1 x2 + a23 + a1 a3 x
2 1 2 4 4 2
1 1 1 1 1
(y + a x + a3 )2 ( a1 x2 + a23 + a1 a3 x) = x3 + a2 x2 + a4 x + a6
2 1 2 4 4 2
CC-BY-NC-ND PID_00200952 22 Criptografa con curvas elpticas
1 1
y := y + a x + a3
2 1 2
y nos queda:
1 1 1
y2 = x3 + (a2 + a )x2 + (a4 + a1 a3 )x + (a6 + a23 )
4 1 2 4
b2 2 b4 b
y 2 = x3 + x + x+ 6 (3)
4 2 4
b2 3 b b2 b32
(x + ) = x3 + 2 x2 + 2 2 x +
34 4 4 3 (3 4)3
b2 3 b22 b
y2 = (x + ) 3x ( 2 )3 + 2b4 x + b6
34 (3 4)2 34
b2
x := x +
34
y2 = x3 + 27c4 x 54c6
y2 = x3 + Ax + B (4)
y 2 = x3 + a2 x2 + a6 (6)
10
8
y
6 y
5
4
0 0
3 2 1 1 2 3 4 5 1 1 2 3 4
x
2 x
4
5
8
10
1.000
800
600
400
200
0
0 200 400 600 800 1.000
Proposicin 2.2.
8
f
>
>
> = 3x2 + A
< x
>
>
>
> f
>
: = 2y
y
Puntos singulares:
8 r
> f A
>
> =0 x = ,
< x
> 3
>
>
: f = 0
>
>
y = 0
y
A 3B
x3 + Ax + B y2 = 0 x + Ax + B = 0 x =
3 2A
entonces
9B2 A
x2 = = 4A3 + 27B2 = 0
4A2 3
Sean P,Q C y L la recta que pasa por estos dos puntos (la tangente en el caso
P = Q), y R el tercer punto de interseccin de L y C. Sea L la recta que une R y
O. Entonces L C = {R,O,P+Q }; es decir P+Q es el tercer punto de interseccin
de la curva y la recta que pasa por R y O.
Proposicin 2.3.
Para facilitar los clculos, tomaremos como punto base el punto del infinito
Notacin
de la curva, O = (0 : 1 : 0). Dados dos puntos de la curva, P y Q calculemos
Para n Z, P C
R (en la figura siguiente, R es el tercer punto donde la recta que pasa por P y
escribiremos:
Q corta a la curva). Si ahora queremos calcular la interseccin de la recta que nP = P + + P n veces, si
n > 0.
pasa por R y O con la curva elptica, basta encontrar el simtrico de R respecto
nP = (P) + + (P) |n|
al eje de las x. veces, si n < 0
0P = O
P+Q
CC-BY-NC-ND PID_00200952 26 Criptografa con curvas elpticas
Algoritmo 2.4.
function Suma(n)
begin
for j 1 to n
endfor
return(parcial)
end
Ejemplo 2.1.
Calcular 19P.
El nmero
19 escrito enbinario
es 10011. Entonces, de acuerdo con el algoritmo anterior
`
19P = 2 2 2 2(0 + P) + P + P.
Ejemplo 2.2.
Calcular P1 + P2 .
Calcular 10P1
7 10 1
= = = 12 = 11
93 2
10 = 11 3 + = = 10 10 = 0
CC-BY-NC-ND PID_00200952 27 Criptografa con curvas elpticas
8
< y = 11x
>
>
y 2 = x3 + x + 1
:
6x2 = x3 + x + 1
luego
f f
(P)(x x1 ) + (P)(y y1 ) = 0
x y
Tenemos f (x,y) = y2 x3 x 1
8 f
>
> (P1 ) = 4 1 = 18
< x
>
>
>
>
> f
>
: (P1 ) = 20
y
8
< y = 6x + 15
>
>
y 2 = x3 + x + 1
:
(6x + 15)2 = x3 + x + 1
entonces
0 = x3 13x2 + 5x + 6 = (x 3)2 (x x3 )
ya que el punto de tangencia P1 = (3,10) es una solucin doble del sistema de ecuaciones.
13 = 3 3 x3 = x3 = 6 + 13 = 7
y3 = 6 7 + 15 = 11
8 f
>
> (Q) = 13
< x
>
>
>
>
> f
>
: (Q) = 1
y
8
< y = 10x + 11
>
>
y 2 = x3 + x + 1
:
8 = 7 7 x3 = x3 = 17
y3 = 10 17 + 11 = 20
CC-BY-NC-ND PID_00200952 29 Criptografa con curvas elpticas
O sea: R = 2Q = (17,3)
3 10 8
= = = 8 10 = 11
17 3 7
10 = 11 3 + = = 10 10 = 0
8
< y = 11x
>
>
y 2 = x3 + x + 1
:
8 f
>
> (Q) = 9
< x
>
>
>
>
> f
>
: (Q) = 9
y
8
< y = 22x + 2
>
>
y 2 = x3 + x + 1
:
0 = x3 x2 + 3x 3 = (x 9)2 (x x3 )
1 = 9 9 x3 = x3 = 6
y3 = 6 +2 = 19
10P1 = (6,4)
CC-BY-NC-ND PID_00200952 30 Criptografa con curvas elpticas
Ejemplo 2.3.
Calcular P1 + P2
Calcular 2P1
Sea = [x], la lista de los elementos en forma exponencial y su equivalente forma poli-
nomial es entonces:
= [x] 9 = 3 +
2 = [x]2 = [x2 ] 10 = 2 + + 1
3 = [x]3 = [x3 ] 11 = 3 + 2 +
5 = 4 = 2 + 13 = 3 + 2 + 1
6 = 3 + 2 14 = 3 + 1
7 = 4 + 3 = 3 + + 1 15 = 1
8 = 2 + 1
Ahora calcularemos P1 + P2 =
13 8 3 + 2 + 1 + 2 + 1 3
a= = = =
3 6 3 + 3 + 2 2
8 = 6 + b = b = 8 + 7 = 11
LP1 ,P2 : y = x + 11
CC-BY-NC-ND PID_00200952 31 Criptografa con curvas elpticas
LP1 ,P2 C
y = x + 11
8
>
<
>
y2 + xy = x3 + 4 x2 + 1
:
2 x2 + 10 + x2 + 11 x = x3 + 4 x2 + 1
0 = x3 + 8 x2 + 12 x + 10 + 1 = (x 6 )(x 3 )(x x3 )
8 = 6 + 3 + x3 = x3 = 8 + 6 + 3 = 2 + 1 + 3 + 2 + 3 = 1
y3 = + 11 = 6
P1 + P2 = (1,6 )
8 f
>
> (P1 ) = 9
< x
>
>
>
> f
(P1 ) = 6
>
>
:
y
9 (x 6 ) + 6 (y 8 ) = 0 3 x + 9 + y + 8 = 0
LP1 : y = 3 x + 12
LP1 C
y = 3 x + 12
8
>
<
>
y2 + xy = x3 + 4 x2 + 1
:
CC-BY-NC-ND PID_00200952 32 Criptografa con curvas elpticas
6 x2 + 9 + 3 x2 + 12 x = x3 + 4 x2 + 1
0 = x3 + 10 x2 + 12 x + 7 = (x 6 )2 (x x3 )
10 = 6 + 6 + x3 = x3
y3 = 13 + 12 =
Solucin:
2P1 = (10 ,)
Consideramos la curva elptica C sobre K con char(K) 6= 2,3, con ecuacin Observacin
2 3
C : y = x + Ax + B. El punto base (en la recta del infinito) es O = (0 : 1 : 0) Verificar, si se desea, que el
de forma que el simtrico P de un punto P = (x,y) se puede tomar como P = punto base O = (0,1,0)
pertenece a la curva
(x, y). Sean P = (x1 ,y1 ), Q = (x2 ,y2 ), P + Q = (x3 ,y3 ), con P,Q C, P = (x1 , y1 ). C : y2 = x3 + Ax + B.
Suponemos que Q 6= P. Entonces:
8
> y2 y1 2
>
>
> x 3 = x1 x2
>
< x2 x1
a)P 6= Q
>
>
>
> y2 y1
: y3 =
> (x1 x3 ) y1
x2 x1
8 !2
>
> 3x21 + A
> x3 =
>
> x1 x1
>
>
< 2y1
b)P = Q
>
> !
3x21 + A
>
>
>
> y3 =
> (x1 x3 ) y1
: 2y1
CC-BY-NC-ND PID_00200952 33 Criptografa con curvas elpticas
E : y2 + cy = x3 + ax + b, c 6= 0
P = (x1 ,y1 + c)
8
> y1 + y2 2
>
> x
> 3 = + x1 + x2
>
< x1 + x2
a) P 6= Q
>
>
>
> y1 + y2
: y3 =
> (x1 + x3 ) + y1 + c
x1 + x2
8
> x41 + a2
> x3 =
>
>
>
< c2
b) P = Q !
>
>
>
> x21 + a
: y3 =
> (x1 + x3 ) + y1 + c
c
E : y2 + xy = x3 + ax + b, b 6= 0
P = (x1 ,y1 + x1 )
8
> y1 + y2 2 y1 + y2
>
> x
> 3 = + + x1 + x2 + a
>
< x1 + x2 x1 + x2
a) P 6= Q
>
>
>
> y1 + y2
: y3 =
> (x1 + x3 ) + x3 + y1
x1 + x2
8
b
>
>
> x3 = x21 + 2
>
>
< x1
b) P = Q
>
>
>
> 2 y1
: y3 = x1 + x1 +
> x3 + x3
x1
Ejemplo 2.4.
Dada la curva y2 = x3 + 10x + 13 sobre F23 y los puntos de la misma P = (7,9), Q = (17,6),
calcular P + Q.
` 6 9 2 9
x3 = 7 17 = 1 = 3,
17 7 8
69 3
y3 = (7 3) 9 = 4 9 = 22.
17 7 4
Fijmonos en que hemos hecho sumas y multiplicaciones en el cuerpo finito F23 pero,
tambin, divisiones. O, de otro modo, hemos tenido que calcular inversos en F23 .
El clculo de inversos en un cuerpo finito es una operacin costosa que se puede obviar
usando coordenadas proyectivas en lugar de coordenadas afines.
CC-BY-NC-ND PID_00200952 34 Criptografa con curvas elpticas
. Recordar
E(q)
= Zn1 Zn2
donde n2 divide n1 y N = n1 n2 .
8
< 1 si n es QR (mod p)
>
>
n
=
p >
>
:
1 si n es QNR (mod p)
CC-BY-NC-ND PID_00200952 35 Criptografa con curvas elpticas
Algoritmo 3.4.
Fq {1, 1}
x 1, si x es QR
x 1, si x es QNR
Si q es un nmeroprimo,
Vemos el caso particular q = p , Fq = Z/p. x
entonces (x) = .
q
8
< +1, si x es QR
>
>
p1
x Z/p, xp1 = 1 (mod p) = x 2 =
>
>
:
1, si x es QNR
Lema 3.5.
8
< p 1, si i = 0 o i = p 1
>
>
X
xi =
>
>
x(Z/p) :
0, si i 6= 0,p 1
X
Demostracin: Si i = 0, es claro que x = p 1. Con i = p 1 nos
x(Z/p)
encontramos en la misma situacin puesto que xp1 = 1 (mod p).
CC-BY-NC-ND PID_00200952 36 Criptografa con curvas elpticas
X X p1
N =1 + p + (f (x)) = 1 + p + (f (x)) 2
xFp xFp
p1
X 3
p1 X 3X
2
=1+p+ (x + Ax + B) 2 =1+p+ fi xi
xFp xFp i=0
p1 p1
32
3 2
X X i
X X
=1+p+ fi x =1+p+ fi xi + f0
i=0 xFp i=0 xF
p
= 1 + p + (p 1)f0 + (p 1)fp1 + f0 .
Casos especiales:
. Observacin
|N (1 + q)| 2 q
.
Hiptesis de Riemann
Definicin 3.8 (La funcin de Riemann).
Es uno de los problemas
abiertos ms importantes y
La funcin de Riemann viene dada por:
famosos de la matemtica
contempornea. Es el cuarto
! problema del milenio que el
Y 1 X 1 Clay Mathematics Institute
(s) = = dot con un premio de un
1 ns
p primo 1 s nN milln de dlares para la
p
primera persona que aporte
una demostracin correcta
de la conjetura.
Para valores reales de s tenemos:
8
>
> 1 1 1
>
>
> 1+ 2 + 3 + 4 + = , si s = 1
>
<
(s) = tiene solucin, si s > 1
>
>
>
>
>
>
:diverge, si s < 1.
Teorema 3.9.
8
<|t | 2q
>
>
j k
:si p|t pn |t, donde n = m + 1
>
>
2
Ejemplo 3.1.
y2 + xy = x3 + b2 x2 + b6 , si = b6 6= 0
y2 + b3 y = x3 + b4 x + b6 , si = b43 6= 0
Por el teorema de Hasse, 3 2 2 N 3 + 2 2 1 N 5.
Las dos ltimas curvas son curvas supersingulares, puesto que N = 1 + p y la tercera es
una curva anmala.
Hay casos particulares algo ms sencillos; por ejemplo, curvas del tipo y2 =
x3 + Ax o y2 = x3 + B. En estos casos se usa el algoritmo de Munuera-Tena (1993)
con complejidad del orden de O(log23 (p)).
Una curva elptica definida sobre Fp puede considerarse tambin definida so-
bre Fq donde q = pm . Denotemos N = #E(p) = p + 1 t y Nm = #E(q).
Nm = 1 + pm m m
CC-BY-NC-ND PID_00200952 39 Criptografa con curvas elpticas
Ejemplo 3.2.
< = 2y
8
x2 + (3 3)x + 2 = 0
= 2y
:
Si m = 0 (mod 4), entonces Nm = 1 + 2m 2 2m
Si m = 2 (mod 4), entonces Nm = 1 + 2m + 2 2m
Como hemos visto en el apartado anterior, los puntos de una curva elptica
forman un grupo respecto de la suma. Dado un punto P de una curva elptica
E, podemos calcular Q = sP, s Z, donde Q vuelve a ser un punto de la curva E.
h 13 ` 32 i
exp c + o(s) log(pk ) log log(pk )
da E(Z/p) se proyectan r combinaciones lineales en el plano sobre el cuerpo Q En la equivalencia dada por el
y se considera la curva E(Q) que contiene estos r puntos. En el supuesto de que algoritmo MOV,
normalmente, el valor del
estos r puntos obtenidos sean linealmente dependientes, se soluciona el pro- parmetro k ser muy grande
blema elptico. Actualmente se usa este mtodo con r 9 y la probabilidad de y, por lo tanto, no ganaremos
nada haciendo la conversin
que los puntos obtenidos sean linealmente dependientes es muy pequea. La del logaritmo elptico en
importancia del xedni-calculus es que es fcilmente adaptable tanto al proble- logaritmo discreto clsico.
Pero, en algunos casos, s que
ma del logaritmo discreto como a la factorizacin, por tanto permitira atacar podremos romper el
todos los criptosistemas de clave pblica en caso de que se encontrara algn logaritmo elptico a travs de
los algoritmos para romper el
algoritmo eficiente para resolverlo. logaritmo discreto (esto es el
que pasa para las curvas
supersingulares donde es
conocido que k 6).
4.2. Eleccin de la curva
Para resistir la reduccin MOV n (orden del punto escogido) no debe dividir
pk 1, k pequeo.
Veamos ahora diferentes mtodos conocidos para escoger una curva adecuada.
Recordemos que dada una curva elptica E, definida sobre Fp , podemos consi-
derarla tambin como una curva elptica sobre cualquier extensin Fpm de Fp .
Adems, sabemos calcular el nmero de puntos de la curva sobre el cuerpo
extendido, a partir del nmero de puntos de la curva sobre el cuerpo base.
Para elegir una curva adecuada sobre F2m , primero tomaremos una curva so-
bre F2l , con l dividiendo m y calcularemos el nmero de puntos de la curva
sobre F2l (que se puede hacer de forma exhaustiva puesto que hemos elegido
l de forma que el cuerpo F2l sea pequeo). Entonces calcularemos el nmero
de puntos de la curva sobre el cuerpo extendido y comprobaremos si es resis-
tente a los ataques anteriores. En caso de que no resista alguno de los ataques
anteriores repetimos el proceso hasta encontrar una curva adecuada.
2) Mtodo global. Esta manera de elegir la curva est basada en tomar una
curva sobre los racionales y reducirla mdulo un primo para tener la curva
sobre un cuerpo finito y comprobar si resiste los ataques anteriores.
Uno de los problemas prcticos que se plantean a la hora de usar este tipo
de criptografa es el de definir una correspondencia entre los mensajes que se
quieren transmitir y los puntos de la curva. Existen diferentes procedimientos
para hacerlo; veamos dos de ellos. Suponemos que char(K) 6= 2,3. E : y2 = f (x) =
x3 + Ax + B.
Sea m el mensaje que queremos transmitir, 0 < m < C, donde C es una cota
superior del nmero de mensajes diferentes. Tomamos k arbitrario (que llama-
remos grado de fiabilidad), escogemos p primo tal que p > Ck, p con al menos
160 bits para asegurar la fortaleza del sistema. Podemos suponer los elementos
1, . . . ,Ck contenidos en Z/p usando la siguiente tabla:
2 3
6 1 2 ... k1 7
6 7
6 7
6 7
6 k k+1 k+2 ... 2k 1 7
6 7
6
6 .. .. .. .. 7
7
6 . . . ... . 7
6 7
6 7
6 7
6 mk mk + 1 mk + 2 ... (m + 1)k 1 7
6 7
6
6 .. .. .. .. 7
7
6 . . . ... . 7
6 7
4 5
(C 1)k ... Ck 1
mismo proceso hasta encontrar x tal que f (x) tiene raz cuadrada, tomando
p
entonces y = f (x).
As pues, dado m, existe un valor j {1, . . . ,k 1} tal que el punto P = (mk + j,y)
pertenece a la curva. Tenemos entonces la correspondencia:
Algoritmo 4.4.
Curva Z/p
m (mk + j,y)
jk
(,)
k
.
Observacin
Teorema 4.6.
Fijada una curva E, existe una
Sean E y E curvas entrelazadas. Entonces gran cantidad de parejas
(E,E ) de curvas entrelazadas.
#E + #E = 2(p + 1)
8 p1
>
> 2x, s P E, 0 y
>
>
> 2
>
>
> p1
>
>
> 2x + 1, s P E, <yp
>
>
> 2
>
>
>
>
> 2p, s P = (,) E
>
<
m= 2x p1
, s P E , 0 y
>
>
>
> 2
>
>
> 2x p1
>
>
> + 1, s P E , <yp
>
>
> 2
>
>
> 2x
>
>
> + 1, s P = (x,0) E
:
>
2p + 1, s P = (,) E
2x
donde se ha de reducir mdulo 2p.
8 m
>
> ( , ) E, si m es par y 6= 0 es QR (mod p)
>
>
> 2
> q
> m
( , 3 ) E ,
>
>
> si m es par y 6= 0 es NQR (mod p)
>
>
>
> 2
>
> m m
>
> ( ,0) E, si m es par, 6 py=0
=
>
>
> 2 2
>
> m
>
< (,) E, si m es par, =p
P= 2
>
> m1
>
>
> ( , ) E, si m es impar y 6= 0 es QR (mod p)
>
>
> 2
> q
> m1
3 ) E ,
>
>
> ( , si m es impar y 6= 0 es NQR (mod p)
>
>
> 2
>
>
> m1 (m 1)
>
>
> ( ,0) E , si m es impar, 6 py=0
=
>
>
: 2 2
(m 1)
(,) E , si m es impar, =p
2
donde x3 + Ax + B (mod p) y , son las races cuadradas de un
elemento .
Ejemplo 4.1.
E : y2 = x3 + 3x + 1
8
>
>
>
> (0,1) (0,30) (1,6) (1,25) (6,7) (6,24)
>
>
(8,14) (8,17) (10,15) (10,16) (11,1) (11,30)
>
>
>
>
>
>
>
>
>
> (13,6) (13,25) (14,11) (14,20) (17,6) (17,25)
<
Puntos de E: (18,11) (18,20) (19,2) (19,29) (20,1) (20,30)
>
>
>
(21,5) (21,26) (22,12) (22,19) (24,3) (24,28)
>
>
>
>
>
>
>
> (26,4)
>
> (26,27) (27,7) (27,24) (29,7) (29,24)
>
>
>
(30,11) (30,20) (,)
:
CC-BY-NC-ND PID_00200952 46 Criptografa con curvas elpticas
8
>
>
> (1,15) (1,16) (3,5) (3,26) (8,10) (8,21)
>
>
>
>
>
> (9,7) (9,24) (15,8) (15,23) (20,1) (20,30)
<
Puntos de E : (21,8) (21,23) (22,6) (22,25) (23,4) (23,27)
>
>
>
(24,14) (24,17) (26,8) (26,23) (29,11) (29,20)
>
>
>
>
>
>
:
(,)
Entre las dos curvas tenemos pues 64 puntos. La correspondencia entre mensajes y pun-
tos viene dada por la tabla siguiente.
Algoritmo 5.1.
nA
A B
nB
A B
Versin con curvas elpticas. Sea E una curva elptica sobre Fp y P E punto
pblicamente conocido. Cada usuario U elige al azar un nmero secreto nU
Fp y hace pblico el valor nU P. Para compartir una clave secreta, A y B deben
hacer:
Algoritmo 5.2.
n P
A
A B
Bn P
A B
En primer lugar, los usuarios A y B eligen una curva elptica E sobre un cuerpo finito Zp .
Tambin eligen un punto P de la curva de forma que su orden sea un nmero primo
grande.
Tomemos P = (16,51) que tiene orden ord(P) = 127, o sea P es un generador de la curva E.
CC-BY-NC-ND PID_00200952 48 Criptografa con curvas elpticas
Protocolo
Al finalizar el algoritmo, tanto A como B disponen del mismo punto que tomarn como
clave de sesin: K = (5,48).
En este ejemplo podemos seguir los clculos numricos haciendo uso del software SAGE. Simulador de clculos
Se puede utilizar instruccin a instruccin, pero tambin se puede utilizar un script que en curvas elpticas
nos calcule directamente el resultado que queremos.
Para comprobar los clculos
Antes que nada definiremos el cuerpo finito F113 , que denominaremos F, con la orden:
de este ejemplo podis usar
el programa SAGE, que
sage: F = FiniteField(113)
encontraris en la direccin
http:www.sagemath.org/.
A continuacin definiremos la curva elptica y2 = x3 + 5 x + 7. En general, la curva
definida por los parmetros [a,b,c,d,e] es y2 + axy + cy = x3 + bx2 + dx + e.
sage: E = EllipticCurve(F,[0,0,0,5,7])
Elliptic Curve defined by y^2 = x^3 + 5*x + 7 over Finite Field of size 113
sage: print(E.cardinality())
127
sage: P = E.point((16,51))
sage: P.order()
donde estamos explicando que se toma el punto P = (16,51) dentro del dominio de
puntos de la curva E.
Finalmente, podemos comprobar que los dos usuarios pueden utilizar la misma clave
comn: K = nA KB = nB KA :
print 101*K_A,98*K_B
Tras esta ltima instruccin SAGE contesta con los dos valores que le hemos pedido
imprimir:
(5 : 48 : 1) (5 : 48 : 1)
Algoritmo 5.3.
EA (m)
A B
EB (EA (m))
A B
EB (m)
A B
Algoritmo 5.4.
mnA
A B
(mnA )nB
A B
mnB
A B
Algoritmo 5.5.
An P
A B
n (n P)
A BA B
Bn P
A B
calcula = (k )nB ,
m = c 1 .
Versin con curvas elpticas. Sea E una curva elptica sobre Z/p, sea P un
punto de la curva de orden grande N (sera deseable que hPi = E), N |#E(p).
Para cada usuario U, sea nU su clave privada, 1 < nU < N; (bastara tomar
nU < p + 1 2 p). La clave pblica de U ser PU = nU P. Suponemos que el
usuario A quiere enviar el mensaje m cifrado al usuario B:
Pm = C nB (kP),
encuentra el mensaje m asociado con el punto Pm .
Observacin
El usuario A cifra m calculando c = E(e,n) (x) = xe (mod n) (con el mtodo de
Actualmente no se conoce
multiplicar y elevar al cuadrado, por ejemplo), ningn algoritmo de
El usuario A enva c a B. factorizacin de complejidad
menor que la
sub-exponencial.
El usuario B para descifrar el mensaje c deber hacer:
Cada vez que A quiere enviar un mensaje m a B deber seguir los siguientes Observacin
pasos:
El esquema de KMOV
(Koyama, Maurer, Okamoto,
Vanstone) usa curvas elpticas
El usuario A divide su mensaje m en dos partes m = (m1 ,m2 ) donde m1 ,m2 definidas sobre Zn , donde
Zn . n = pq es el producto de dos
nmeros primos que se
El usuario A determina el valor b de la curva de forma que m En (b). mantienen en secreto. La
Especficamente, calcula b = m22 m31 (mod n). seguridad de KMOV es la
misma que la del esquema
cifra el punto m calculando c = E(m) = em sobre En (b), RSA. No obstante, el cifrado
enva el texto cifrado c = (c1 ,c2 ) a B. en el esquema KMOV es ms
flexible que en el RSA, por
ejemplo, la curva elptica no
se fija, sino que se construye
El usuario B para descifrar el mensaje c deber hacer:
para cada nuevo mensaje.
Para solucionar este
inconveniente hay otros
a partir del mensaje cifrado c = (c1 ,c2 ) el usuario B puede determinar el valor esquemas como el de
de b puesto que este no cambia en el proceso de cifrado. Especficamente, Demytko (1993), Meyer y
Mller ( 1996), Paillier
calcula b = c22 c13 (mod n) y construye la curva y2 = x3 + b. (1999), etc.
a partir de la clave privada calcula m = D(c) = dc sobre En (0,b).
Versin clsica: DSS. Usaremos la misma nomenclatura que en el criptosiste- Ver tambin
ma ElGamal que ya hemos visto anteriormente.
El criptosistema ElGamal se
estudia en el mdulo
Elementos de criptografa
El usuario A quiere firmar un mensaje m: de esta asignatura.
k
h(m) = (nA ) (k )s (mod p).
Versin clsica: DSA. Sea q un nmero primo de unos 160 bits y p otro n-
mero primo de unos 500 bits tal que p = 1 (mod q). Sea un generador del
subgrupo cclico de orden q de (Z/p) . Para cada usuario U, su clave privada es
nU , un nmero escogido al azar, 0 < nU < q y la clave pblica es U = nU .
El usuario A quiere firmar un mensaje m:
Versin con curvas elpticas: ECDSA. Sea E una curva elptica sobre Z/p, sea
P un punto de la curva de orden primo n. Cada usuario U toma al azar un
nmero nU [1,n 1] que ser su clave privada, la clave pblica de U ser
PU = nU P. El usuario A quiere firmar un mensaje m:
Dada una curva elptica, deberemos calcular su cardinal y ver si satisface las
condiciones anteriores. Aunque hay un algoritmo polinomial (Schoof 1985)
para hacer este clculo, su complejidad es del orden de log8 (p), que para valo-
res demasiado grandes de p no es prctico.
5.5.1. Seguridad
5.5.2. Eficiencia
Cada uno de los tres sistemas, ECC, RSA, DSA, exige un gran esfuerzo compu-
tacional. En el RSA se puede usar un exponente pblico pequeo (aun cuando
se deberan discutir los riesgos en los que se puede incurrir) para mejorar la
rapidez en la verificacin de firmas y en el cifrado, pero no en la generacin
CC-BY-NC-ND PID_00200952 54 Criptografa con curvas elpticas
Apoyo para esquemas de firmado ECDSA (elliptic curve digital signature al-
gorithm) y ECNR (Elliptic Curve Nyberg-Rueppel) signature scheme.
Posteriormente, en un draft que complementa este estndar llamado P1363A Ver tambin
(standard specifications for public key cryptography: additional techniques) se in-
Los pairings se estudian en el
troduce la posibilidad de utilizar el esquema de cifrado ECIES. Tambin, en mdulo Pairings y sus
aplicaciones .
el draft P1363.3, se introducen los esquemas basados en la identidad usando
pairings.
FIPS 186-2
El SECG (standards for efficient cryptography group) fue creado por la empresa
Certicom, para promover estndares de curva elptica as como la difusin de
los mejores mtodos para implementar este tipo de criptografa. Su principal
objetivo es crear un estndar, basado en los principales que existen, pero ha-
ciendo restricciones sobre los parmetros que estos exigen sobre cada uno de
los esquemas de firmado, cifrado o intercambio de claves que usan. El objetivo
de estas restricciones es hacer posible la interoperatividad de las aplicaciones
basadas en este estndar, con las basadas en cualquiera de los otros estndares
principales.
SET 3 trata sobre esquemas de firma basados en curvas elpticas con recons-
truccin parcial del mensaje (ECPVS y ECAOS).
RSA
NSA
rior como nuevas soluciones para optimizar estos protocolos, sobre todo en
entornos donde el tamao de la clave no puede ser demasiado grande. A con-
tinuacin enumeraremos algunos.
WAP WTLS
WTLS (wireless transporte security layer) es la capa de seguridad para WAP (wi-
reless application protocol). Esta especificacin se ha convertido en el estndar
de facto para proveer seguridad, integridad y autenticidad para aplicaciones de
telfonos mviles y otros dispositivos pequeos. Los esquemas de firma (DSA)
y de intercambio de claves (DH) descritos en esta especificacin han sido am-
pliados para soportar ECDSA para las firmas y ECDH para el intercambio de
claves. Los parmetros utilizados para estos dos algoritmos siguen los del es-
tndar del IEEE P1363 descrito en el apartado anterior. Esta especificacin,
junto con el estndar FIPS del NIST demuestran la voluntad por parte de la
industria de adoptar este tipo de criptografa
ATM
Utilizando ECC se consigue que el tiempo necesario para generar una pare-
ja de claves sea tan reducido que incluso dispositivos de caractersticas de
clculo tan modestas como las tarjetas inteligentes pueden generar tal pa-
reja. Esto significa que el proceso de personalizacin puede ser evitado en
aquellas aplicaciones donde la no repudiacin sea realmente importante.
6.2.3. Conclusiones
La reduccin del tamao de las clave y los certificados que permite la ECC
para construir sistemas de clave pblica, ofrece unas ventajas incuestionables
para la implementacin de aplicaciones seguras en tarjetas inteligentes.
CC-BY-NC-ND PID_00200952 63 Criptografa con curvas elpticas
Ejercicios de autoevaluacin
3. Dada la curva y2 = x3 + 3x + 2 sobre F23 y los dos puntos de la misma P = (16,11),Q = (8,20),
calcular P + Q, 2P, 4P.
6. Implementar usando SAGE el sistema criptogrfico ElGamal sobre curvas elpticas. Usar
un nmero primo de ms de 10 cifras y cifrar el texto
El mtodo de codificacin ser una variante, debida a Menezes y Vanstone conocida como
MV-ElGamal. Un punto P de orden grande y la curva E son informacin pblica. La clave
privada es un entero nU ms pequeo que el orden de P y la clave pblica es PU = nU P. El
mensaje m lo dividiremos en dos bloques mdulo p, o sea (m1 ,m2 ) Fp Fp . La funcin de
cifrado viene dada por
donde r es un nmero aleatorio, (x,y) = rPU y c1 = xm1 (mod p), c2 = ym2 (mod p). Supon-
dremos que x,y 6= 0, de lo contrario buscaremos otro valor de r.
La correspondiente funcin de descifrado es:
Soluciones
1. Los nicos puntos posible de la curva son (0,0),(0,1),(1,0),(1,1). Solo hace falta probar qu
valores satisfacen la ecuacin y ver que los puntos racionales son (0,1),(1,0),(1,1).
2. El problema, ahora, no es tan sencillo como el anterior. Si en el cuerpo hay muchos ele-
mentos no podemos irlos probando todos de uno en uno. Podemos hacer como en el ejem-
plo 1.5.
8
< Dx + y + 1 = 0
x2 + xy + y2 +1 = 0
:
2
1
Resolviendo este sistema obtenemos: x = D2 +D+1 ; y = DD +1
2 +D+1 y, al ir dando valores a D F8
obtenemos las ocho soluciones (1,0); (1,1); ( ,); (, ); (4 ,); (,4 ); (2 ,4 ); (4 ,2 ) que,
2 2
junto con la solucin inicial (0,1), da los nueve puntos racionales que buscbamos.
4.
Si vamos buscando otros posibles puntos, llegaremos a la conclusin de que solo hay
soluciones cuando x = 0, valor que tiene dos soluciones. En el plano proyectivo escribi-
ramos las soluciones como (0,1,0) y (0,1,1).
5.
sage: p= nextprime(10^10+10^8+10^5+1)
sage: E = EllipticCurve(GF(p),[1975,4])
sage: P = E([0,2])
sage: print p
sage: print(E.cardinality())
sage: print P.additiveorder()
10100100007
10100137808
1262517226
CC-BY-NC-ND PID_00200952 65 Criptografa con curvas elpticas
Para ver su funcionamiento tomemos por ejemplo, como clave privada nU = 10000:
sage: uncipher(privatekey,cipher(publickey,999,1999))
(999,1999)
def codificar(texto):
valornumerico = 0
for c in texto:
valornumerico = 256*valornumerico + ord(c)
return valornumerico
def descodificar(numero):
numero = Integer(numero)
texto =
for y in numero.digits(256):
texto = chr(y) + texto
return texto
Bibliografa
Blake, I.; Seroussi, G.; Smart, N. (2000). Elliptic Curves in Cryptography. London Mat-
hematical Society Lecture Note Series (nm. 265). Cambridge: Cambridge U. Press.
Fulton, W. (1969). Algebraic Curves. An Introduction to Algebraic Geometry. Nueva York: Ben-
jamin Inc. (Versin en castellano: Curvas algebraicas (1972). Barcelona: Ed. Reverte.)
Hankerson, D.; Menezes, A.; Vanstone, S. (2004). Guide to Elliptic Curve Cryptography.
Nueva York: Springer-Verlag.
Menezes, A. (1993). Elliptic Curve Public Key Cryptosystems. Massachusetts: Kluwer Academic
Publishers, Norwell.