Criptografía en curvas elípticas - Unirioja · Resumen En este trabajo estudiamos las curvas...

81
Iciar Sesma Lorea José María Pérez Izquierdo Facultad de Ciencias, Estudios Agroalimentarios e Informática Grado en Matemáticas 2014-2015 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico Criptografía en curvas elípticas Autor/es

Transcript of Criptografía en curvas elípticas - Unirioja · Resumen En este trabajo estudiamos las curvas...

Iciar Sesma Lorea

José María Pérez Izquierdo

Facultad de Ciencias, Estudios Agroalimentarios e Informática

Grado en Matemáticas

2014-2015

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

Criptografía en curvas elípticas

Autor/es

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2015

publicaciones.unirioja.esE-mail: [email protected]

Criptografía en curvas elípticas, trabajo fin de gradode Iciar Sesma Lorea, dirigido por José María Pérez Izquierdo (publicado por la

Universidad de La Rioja), se difunde bajo una LicenciaCreative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.

Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los titulares del copyright.

Facultad de Ciencias, Estudios Agroalimentarios e Informática

TRABAJO FIN DE GRADO

Grado en Matemáticas

Criptografía en curvas elípticas

Alumno:

Iciar Sesma Lorea

Tutores:

José María Pérez Izquierdo

Logroño, julio, 2015

CRIPTOGRAFIA EN

CURVAS ELIPTICAS

Iciar Sesma Lorea

Trabajo dirigido porJose Marıa Perez Izquierdo

Trabajo fin de Grado

Grado en Matematicas

Facultad de Ciencias, Estudios Agroalimentarios e Informatica

Universidad de La Rioja

Julio 2015

Quisiera agradecer todo el tiempo y la dedicacionque ha puesto mi tutor Jose Marıa Perez Izquierdo.

Tambien me gustarıa reconocer todos los anosde paciencia y sacrificios que han sobrellevadomis padres para posibilitarme unos estudios.

Por ultimo, me encantarıa dar las gracias a todosmis companeros por estos maravillosos anos

y por ayudarme a llegar donde estoy.

Resumen

En este trabajo estudiamos las curvas elıpticas y su aplicacion en la crip-tografıa, haciendo especial hincapie en el calculo de grado de endomorfismosy en el teorema de Hasse. Ambos resultados son muy importantes porque nosayudaran a encontrar el orden de una curva elıptica y ası poder garantizar laseguridad criptografica.

Ademas se dara una pequena nocion de criptografıa general y mas especıfica-mente de la basada en curvas elıpticas. Esta ultima sera la clave para comprendermas tecnicamente como funcionan las monedas digitales bitcoins.

i

Abstract

In this project, we are studying elliptic curves and their cryptographic appli-cations, focusing, specifically, in the calculation of endomorphism degrees andHasse’s theorem. Both results will be very important because they will help usto find the order of an elliptic curve, thereby ensuring cryptographic security.

Moreover, we will make a brief introduction into the notion of cryptography,and more specifically the one based on elliptic curves. This one will be the keyto understand how Bitcoin, digital currency, works.

iii

Prefacio

El boom de la informatica y el uso masivo de las comunicaciones digitales,ha producido un numero creciente de problemas de seguridad. Esto es debido aque las transacciones que se realizan a traves de la red pueden ser interceptadas,lo que conlleva la necesidad de vigilar su confidencialidad y su integridad, entreotros.

Los avances informaticos mejoran las prestaciones de los ordenadores con loque cada vez se exige a los metodos criptograficos numeros mas grandes parapoder garantizar la seguridad.

A lo largo de los ultimos anos, las curvas elıpticas han cobrado gran impor-tancia en la criptografıa, ya que los sistemas de cifrado basados en ellas ofrecenun nivel de seguridad equivalente al de los metodos tradicionales pero utilizandonumeros de menor tamano. Este hecho hace que sean especialmente utiles entarjetas inteligentes.

Esquema del proyecto

La disposicion del trabajo constara de tres partes diferenciadas: teorıa ma-tematica, teorıa informatica y la aplicacion de ambas.

La parte matematica se desarrollara a lo largo de los cuatro primeros capıtu-los. Comenzara con una pequena introduccion de las curvas elıpticas para pocoa poco comenzar a trabajar con endomorfismos que seran la pieza clave parala demostracion de uno de los teoremas mas importante en criptografıa en cur-vas elıpticas, el teorema de Hasse. Este teorema, demostrado por Helmut Hasseen 1933, permite aproximar e incluso calcular exactamente en ciertos casos elnumero de puntos que posee una curva elıptica sobre un cuerpo finito. Por ellogarantiza la complejidad de los posibles ataques por fuerza bruta a los criptosis-temas basados en curvas elıpticas y por lo tanto su posible aplicacion practica.Ademas se hablara del problema del logaritmo discreto y sus posibles ataques.

Al hilo de lo anterior empezara la parte informatica en la que se mencionaranbasicamente todos los elementos de los criptosistemas y se hara un especialhincapie en la criptografıa basada en curvas elıpticas sobre cuerpos finitos. Enesta seccion se hablara tanto de los distintos estandares para cifrar mediantecurvas elıpticas como el proceso de firma y verificacion de la misma.

v

vi PREFACIO

Para terminar el trabajo y con el fin de buscar una aplicacion de todo loestudiado hablaremos de los bitcoins.

Motivos de la eleccion del trabajo

Desde pequena he sido siempre muy afın a las matematicas pero fue en lacarrera donde me sentı atraıda por la informatica, tanto es ası que comence acursar la doble titulacion de Ingenierıa Informatica y Matematicas. Es por esoque querıa encontrar un trabajo matematico orientado a la informatica e indagaren una de tantas aplicaciones que tienen las matematicas en la vida real.

Objetivos

Uno de los objetivos a nivel personal es aplicar parte de los contenidos quehe aprendido en la carrera, en un nivel mas abstracto, a la vida cotidiana. Porello hable con mi tutor y decidimos que la relacion de objetos matematicosbellos, como las curvas elıpticas, con la seguridad de la informacion podıa seruna buena aplicacion para ello.

Tambien como meta esta la demostracion del teorema de Hasse, uno delos principales teoremas en el estudio de las curvas elıpticas, que mas tardefue generalizado a curvas de genero superior y que es una consecuencia de lasconjeturas de Weyl terminadas de probar por P. Deligne en 1974. Por ello enla parte matematica todos los contenidos giraran en torno a la prueba de dichoteorema.

Indice general

Resumen I

Abstract III

Prefacio V

1. Teorıa basica 1

1.1. Plano proyectivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1. Polinomios homogeneos . . . . . . . . . . . . . . . . . . . 2

1.2. Curvas elıpticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3. Estructura de grupo . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.1. Suma de dos puntos . . . . . . . . . . . . . . . . . . . . . 5

1.3.2. Multipicacion de un entero por un punto . . . . . . . . . 6

1.4. El j-invariante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5. Endomorfismos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6. Curvas singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. Puntos de torsion 15

2.1. Puntos de torsion . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2. Polinomios de division . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3. Emparejamiento de Weil . . . . . . . . . . . . . . . . . . . . . . . 18

3. Curvas elıpticas sobre cuerpos finitos 21

3.1. El endomorfismo de Frobenious . . . . . . . . . . . . . . . . . . . 22

3.2. Ordenes de grupos . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2.1. Curvas en subcuerpos . . . . . . . . . . . . . . . . . . . . 25

3.2.2. Ordenes de puntos . . . . . . . . . . . . . . . . . . . . . . 27

4. El problema del logaritmo discreto 31

4.1. Calculo del ındice . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2. Baby-step giant-step . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3. Metodo ρ de Pollard . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.4. Curvas supersingulares . . . . . . . . . . . . . . . . . . . . . . . . 37

vii

viii INDICE GENERAL

5. Criptografıa 415.1. Introducion a la criptografıa . . . . . . . . . . . . . . . . . . . . . 41

5.1.1. Criptografıa . . . . . . . . . . . . . . . . . . . . . . . . . . 415.1.2. Funciones hash . . . . . . . . . . . . . . . . . . . . . . . . 425.1.3. Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.1.4. Acuerdo de claves . . . . . . . . . . . . . . . . . . . . . . 43

5.2. Infraestructura de clave publica, PKI . . . . . . . . . . . . . . . . 445.2.1. Certificado digital . . . . . . . . . . . . . . . . . . . . . . 455.2.2. Firma digital . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.3. Criptografıa en curvas elıpticas . . . . . . . . . . . . . . . . . . . 475.3.1. Intercambio de clave Diffie-Hellman . . . . . . . . . . . . 475.3.2. Cifrado de clave publica ElGamal . . . . . . . . . . . . . . 485.3.3. Firma digital ElGamal . . . . . . . . . . . . . . . . . . . . 485.3.4. Algoritmo de firma digital . . . . . . . . . . . . . . . . . . 49

6. Bitcoins 536.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.1.1. Historia de Bitcoin . . . . . . . . . . . . . . . . . . . . . . 536.2. Conceptos generales . . . . . . . . . . . . . . . . . . . . . . . . . 546.3. Sistema Bitcoin y protocolos . . . . . . . . . . . . . . . . . . . . 55

6.3.1. Direcciones y monederos . . . . . . . . . . . . . . . . . . . 556.3.2. Transacciones . . . . . . . . . . . . . . . . . . . . . . . . . 556.3.3. Cadena de bloques . . . . . . . . . . . . . . . . . . . . . . 56

6.4. Minerıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566.5. Conclusion sobre el sistema Bitcoin . . . . . . . . . . . . . . . . . 56

A. Codigo 59A.1. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59A.2. SageMath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Conclusion 62

Bibliografıa 64

Capıtulo 1

Teorıa basica

1.1. Plano proyectivo

Comunmente estamos acostumbrados a tratar con la geometrıa euclıdea,aunque en este trabajo utilizaremos como soporte la geometrıa proyectiva. Paraentender mejor dicha geometrıa introduciremos la nocion de plano afın y planoproyectivo, aunque por simplicidad no lo haremos axiomaticamente.

Definicion 1.1 (Plano afın). Sea K un cuerpo, el plano afın sobre K es elconjunto de puntos de K2, al cual denotaremos por A2

K.

Definicion 1.2 (Plano proyectivo). Sea K un cuerpo. El plano proyectivo sobreK, denotado como P2

K, es el conjunto de puntos (x, y, z) ∈ K3 \ {(0, 0, 0)} con

la relacion de equivalencia ∼ dada por

(x, y, z) ∼ (λx, λy, λz) con λ ∈ K×,

donde K× denota el conjunto de elementos no nulos de K.

En otras palabras, el plano proyectivo es una variedad 2-dimensional dadapor P2

K= K3 \ {(0, 0, 0)}/ ∼ en la que cada clase de equivalencia representa un

punto proyectivo y lo denotaremos por (x : y : z).

Ademas los puntos proyectivos pueden distinguirse en dos tipos dentro de P2K:

los puntos finitos, donde la coordenada z del punto (x : y : z) es �= 0, y los puntosdel infinito que son todos los puntos de la forma (x : y : 0) que constituiran larecta del infinito.

El plano afın guarda gran relacion con el plano proyectivo, pues contamoscon la aplicacion inclusion que las vincula.

i : A2K

↪→ P2K

(x, y) �−→ (x : y : 1)

1

2 CAPITULO 1. TEORIA BASICA

Ademas el plano proyectivo es un espacio compacto T2 e i(A2K) es denso en P2

K

con lo que tambien se trata de una compactificacion de A2K.

Esta aplicacion es muy importante puesto que, a pesar de que trabajemosen el plano proyectivo, utilizaremos los puntos afines para referirnos a sus res-pectivos puntos proyectivos. Los elementos de P2

Kque no estan en A2

Kseran los

puntos que pertenecen a de la recta del infinito y los denotaremos por ∞.

1.1.1. Polinomios homogeneos

En el plano proyectivo se trabaja con polinomios homogeneos gracias a loscuales podemos definir el conjunto de ceros del polinomio. La exigencia de lautilizacion de estos polinomios es debida a que los polinomios no homogeneosno estan bien definidos en la clase de equivalencia. Por ello explicaremos acontinucion que son y porque tienen importancia.

Definicion 1.3 (Polinomio homogeneo). Un polinomio es homogeneo F (x, y, z)de grado n si todos sus monomios axiyjzk con a ∈ K cumplen que i+j+k = n.

Es facil ver que estos polinomios cumplen F (λx, λy, λz) = λnF (x, y, z) paratodo λ ∈ K con n el grado del polinomio. Por ello solo tiene sentido examinarlos puntos en los que se anula este polinomio o estudiar el cociente de dos deellos del mismo grado.

En este trabajo tendran especial interes las funciones racionales definidas enel plano proyectivo, puesto que mediante ellas definimos los endomorfismos.

Definicion 1.4 (Funcion racional en el plano proyectivo). Dada una funcionf : P2

K→ K se dice racional si

f(x : y : z) =R(x : y : z)

Q(x : y : z),

donde R y Q polinomios homogeneos del mismo grado.

Cualquier polinomio del plano afın f(x, y) podemos convertirlo en un poli-nomio homogeneo y viceversa. Simplemente teniendo en cuenta las siguientesigualdades:

F (x, y, z) = znf(xz,y

z

)f(x, y) = F (x, y, 1)

Como ultimo apunte en este apartado es necesario mencionar uno de susprincipios basicos de la geometrıa proyectiva.

Lema 1.5 (Principio de la geometrıa proyectiva). Todo par de rectas se cortanen un punto.

Demostracion. Sean dos rectas paralelas definidas en el plano afın

y = mx+ b1, y = mx+ b2,

1.2. CURVAS ELIPTICAS 3

con b1 �= b2. A partir de ella obtenemos su correspondientes rectas homogeneasen el plano proyectivo,

y = mx+ b1z, y = mx+ b2z.

Resolviendo el sistema que constituyen las anteriores ecuaciones conseguimosz = 0 e y = mx. Como no puede las variables x, y, z anularse a la vez, debidoa que (0, 0, 0) �∈ P2

K, podemos reescalar dividiendo por x.

(x : mx : 0) = (1 : m : 0)

Por lo tanto se cortan en un punto del infinito.

1.2. Curvas elıpticas

En el campo de la criptografıa, la aplicacion de las curvas elıpticas adquieregran peso tanto en la factorizacion de numeros, como en el diseno de criptosis-temas con requisitos pequenos de longitudes de clave.

En un principio podrıamos ver una curva elıptica como el conjunto de solu-ciones de la ecuacion de Weierstrass dada por y2 = x3 + Ax + B, pero eso noes exactamente ası. Por ello deduciremos la ecuacion de Weierstrass e introdu-ciremos una definicion estricta de estas curvas.

La ecuacion de Weierstrass de una curva elıptica viene representada pory2 = x3 +Ax+B siempre y cuando la caracterıstica del cuerpo sea distinta de2 y de 3.

Deduciremos esta ecuacion, la ecuacion general de la curva es y2 + a1xy +a3y = x3 + a2x

2 + a4x + a6 donde a1, . . . , a6 ∈ K. Suponiendo que la carac-terıstica de K es distinta de 2, podemos dividir por 2 y completar cuadrados

(y +

a1x

2+a32

)2= x3 +

(a2 +

a214

)x2 +

(a4 +

a1a32

)x+

(a234

+ a6

),

que reescribiendo sera y21 = x3 + a′2x2 + a′4x+ a′6 con a′2, a

′4, a

′6 ∈ K. Analoga-

mente, si la caracterıstica no es 3, podemos realizar el cambio x1 = x +a′2

3 yconseguimos

y21 = x31 +Ax1 +B,

con A,B ∈ K.

Definicion 1.6 (Curva elıptica). Sea K un cuerpo, la curva elıptica E definidasobre K vendra dada por

E(K) = {∞} ∪ {(x, y) ∈ A2K| y2 = x3 +Ax+B},

donde A y B son constantes que pertenecen a un cuerpo K e ∞ := (0 : 1 : 0).

4 CAPITULO 1. TEORIA BASICA

Ademas, al tratarse de un polinomio de grado tres, presentara tres raıcesr1, r2, r3. Con estas se consigue obtener el discriminante de la curva, que vendradado por

((r1 − r2)(r1 − r3)(r2 − r3))2 = −(4A3 + 27B2).

Con ello podemos deducir que, si existen raıces multiples, el discriminante seracero, lo que significara que se trata de una curva singular.

y2 x3- 4 x - 2y2 x3- 4 x - 1y2 x3- 4 xy2 x3- 4 x + 1y2 x3- 4 x + 2y2 x3- 4 x + 3y2 x3- 4 x + 4y2 x3- 4 x + 5

Figura 1.1: Curvas elıpticas dependiendo de sus valores A.

Lema 1.7 (Curva elıptica sobre un cuerpo de caracterıstica 2). Sea K un cuerpocuya caracterıstica es 2, entonces la ecuacion de la curva elıptica tiene una delas siguientes formas:

• Si a1 �= 0 entonces y2 + xy = x3 +Ax2 +B donde B �= 0 y A, B ∈ K.

• Si a1 = 0 entonces y2 +Ay = x3 +Bx+C donde A �= 0 y A, B, C ∈ K.

Lema 1.8 (Curva elıptica sobre un cuerpo de caracterıstica 3). Si la carac-terıstica de K es 3 entonces la ecuacion de la curva elıptica sera y2 = x3 +Ax2 +B donde A, B ∈ K.

1.3. ESTRUCTURA DE GRUPO 5

1.3. Estructura de grupo

1.3.1. Suma de dos puntos

Sumar dos puntos en una curva elıptica no roza lo habitual, para ver como sesuman dos puntos en curvas elıpticas deberemos definir una operacion de grupo.

Sean P = (x1, y1) y Q = (x2, y2) dos puntos que satisfacen la ecuacion de lacurva elıptica E dada por y2 = x3 + Ax + B. Con estos dos puntos y, a travesde la operacion aditiva, encontraremos R = P +Q. Para ello hay que seguir lossiguientes pasos:

1. Construirse la recta que une P con Q.

2. La recta cortara a la curva en tres puntos. Calcular el punto de cortedistintos a los anteriores.

3. Calcular su simetrico respecto al eje x, que se correspondera con P +Q.

P

Q

-R

R

Figura 1.2: Suma de dos puntos.

Como casos esecial podemos detallar que ocurre cuando x1 = x2 e y1 �= y2,donde la lınea que une los puntos es la vertical y por tanto corta en el puntoP +Q = ∞.

Tambien al hilo con lo anterior podemos considerar un caso excepcionalcuando P = Q. En esta ocasion lo que se hace es considerar la recta tangentecomo la recta que los une.

Por otro lado si Q fuese ∞, la recta que une a los puntos es la vertical, conlo que el corte con E nos darıa el simetrico de P respecto al eje x y por lo tantollegarıamos a que P +∞ = P

6 CAPITULO 1. TEORIA BASICA

Proposicion 1.9. Sean P = (x1, y1) y Q = (x2, y2) dos puntos que satisfacenla ecuacion de la curva elıptica E dada por y2 = x3+Ax+B y sea R = P +Q =(x3, y3):

• Si x1 �= x2 entonces

{x3 = m2 − x1 − x2

y3 = m(x1 − x3)− y1con m =

y2 − y1x2 − x1

.

• Si x1 = x2 e y1 �= y2 entonces P +Q = ∞

• Si P = Q e y1 �= 0 entonces

{x3 = m2 − 2x1

y3 = m(x1 − x3)− y1con m =

3x21 +A

2y1.

• Si P = Q e y1 = 0 entonces P +Q = ∞.

• P +∞ = P para todo P ∈ E.

Teorema 1.10. Los puntos de la curva elıptica E junto con la operacion sumaconstituyen un grupo abeliano cuyo elemento identidad es ∞ y por ello satisfacelas siguientes propiedades:

1. (Conmutativa) P +Q = Q+ P para todo P,Q ∈ E.

2. (Existencia de elemento neutro) P +∞ = P para todo P ∈ E.

3. (Existencia de opuesto) Dado P ∈ E, existe P ′ ∈ E con P + P ′ = ∞.El punto P ′ se denotara por −P .

4. (Asociativa) (P +Q) +R = P + (Q+R) para todo P,Q,R ∈ E.

1.3.2. Multipicacion de un entero por un punto

Sea P un punto de la curva elıptica E y sea k ∈ Z entonces si k es positivokP = P + P + · · · + P (con k sumandos). En caso contrario, si k es negativo,kP = (−P ) + (−P ) + · · ·+ (−P ) (con |k| sumandos). Cuando k = 0 definimosque 0P = ∞.

Esta operacion puede ser ineficiente si el valor de k toma grandes valores.Por ello conviene utilizar la tecnica de exponenciacion binaria que se desglosaen el siguiente lema.

Lema 1.11. Sea P un punto de la curva elıptica E y sea k ∈ N, el procedi-miento para calcular kP sigue los siguientes pasos:

1. Nos creamos tres variables auxiliares que seran a, Q1 y Q2, que en uninicio valdran k, ∞ y P respectivamente.

2. Evaluamos si el valor de a es par o impar.

• Si a es par, asignamos a = a2 , Q1 = Q1 y Q2 = 2Q2.

• Si a es impar, asignamos a = a− 1, Q1 = Q1 +Q2 y Q2 = Q2.

1.4. EL J-INVARIANTE 7

3. Si a �= 0 regresar al paso 2 con los nuevos valores.

4. Si a = 0 entonces kP = Q1.

Esta operacion tiene gran importancia ya que el problema del logaritmodiscreto reside en la dificultad de obtener k a partir de kP y P .

1.4. El j-invariante

Al igual que la topologıa utiliza la caracterıstica de Euler para determinarsi dos superficies son distintas, en curvas elıpticas hay un sımil que recibe elnombre de j-invariante. La peculiaridad del j-invariante es que si dos curvaselıpticas poseen el mismo j-invariante, entonces son la misma curva y se puedeobtener una a partir de la otra con un cambio de variable. En caso de que losj-invariantes de dos curvas sean distintos entonces se garantiza que no se tratade la misma curva, y por tanto no se puede obtener una a partir de la otra.

El j-invariante de una curva elıptica E viene definido por

j(E) = 17284A3

4A3 + 27B2.

Cabe destacar que el denominador no se anulara porque representa el opuestodel discriminante de la curva elıptica y se asume que no es cero y por lo tantoque no trabajamos con curvas singulares.

Teorema 1.12. Sean E1, E2 dos curvas elıpticas dadas respectivamente pory21 = x31+A1x1+B1 e y22 = x32+A2x2+B2 con j-invariantes j1 y j2. Si j1 = j2entonces existe μ �= 0 ∈ K tal que

A2 = μ4A1, B2 = μ6B1.

El cambio de variable dado por x2 = μ2x1, y2 = μ3y1 transforma una ecuacionen la otra.

1.5. Endomorfismos

Para alcanzar el objetivo de probar el teorema de Hasse debemos enten-der claramente que son y para que sirven los endomorfismos. Esta seccion nosayudara a tomar conciencia sobre dichas aplicaciones.

Antes de introducir la siguiente definicion cabe destacar que en este trabajodenotaremos K como la clausura algebraica de K.

Definicion 1.13 (Endomorfismo de una curva elıptica). Un endomorfismo so-bre una curva elıptica E es una aplicacion α : E(K) −→ E(K) dada por fun-ciones racionales R1(x, y), R2(x, y) tal que α(x, y) = (R1(x, y), R2(x, y)) y quecumple que dados P1, P2 ∈ E entonces

1. α(P1 + P2) = α(P1) + α(P2).

8 CAPITULO 1. TEORIA BASICA

2. α(∞) = ∞.

Cualquier endomorfismo de una curva elıptica se puede expresar de maneramas sencilla. Para ello suponemos que tenemos una funcion racional de la curvaR(x, y) tal que

R(x, y) =p1(x) + p2(x)y

p3(x) + p4(x)y

donde p1(x), p2(x), p3(x), y p4(x) son funciones polinomicas. Racionalizando eldenominador multiplicando por p3(x)− p4(x)y obtendrıamos que

R(x, y) =q1(x) + q2(x)y

q3(x),

donde q1(x), q2(x), y q3(x) son funciones polinomicas. Consideramos el endo-morfismo dado por α(x, y) = (R1(x, y), R2(x, y)), y tenemos en cuenta la si-metrıa de cualquier curva elıptica. Entonces se cumple

α(x,−y) = α(−(x, y)) = −α(x, y).Lo que significa que

R1(x,−y) = R1(x, y) y R2(x,−y) = −R2(x, y).

Realizando las correspondientes racionalizaciones α(x, y) = (r1(x), r2(x)y)con r1(x) y r2(x) funciones racionales.

La demostracion del teorema de Hasse pasa por el calculo del grado de unendomorfismo. A continuacion detallaremos a que nos referimos con grado ybuscaremos diferentes lemas que nos ayuden en la busqueda del mismo. En unprincipio nos puede parecer un proceso liviano pero en ciertas aplicaciones puederesultar un calculo engorroso.

Definicion 1.14 (Grado del endomorfismo). Para calcular el grado del en-domorfismo α �= 0 debemos fijarnos en r1(x). Como r1(x) es una funcion

racional, podemos pensar en ella como r1(x) = p(x)q(x) teniendo en cuenta que

mcd(p(x), g(x))=1. Entonces el grado de α vendra dado por

grado(α) = max{grado(p(x)), grado(q(x))}.Definicion 1.15 (Separable). Dentro del contexto de las curvas elıpticas, unendomorfismo α se dice separable si r′1(x) �= 0 siendo r′1(x) la derivada de r1(x).

Proposicion 1.16. Sea α �= 0 un endomorfismo separable de una curva elıpti-ca E, entonces

grado(α) = #Ker(α).

En el caso de que α �= 0 no sea separable solo se puede asegurar que

grado(α) > #Ker(α).

1.5. ENDOMORFISMOS 9

Demostracion. Para demostrar la proposicion elegiremos un punto generico su-ficientemente bueno y calcularemos la cantidad de preimagenes que tiene. Cabe

recordar que el endomorfismo se puede escribir como α(x, y) = (r1(x), y r2(x))

con r1 = p(x)q(x) , siendo gcd(p(x), q(x)) = 1. Sea S := {x ∈ K | (pq′−p′q)(x)q(x) =

0} y sea (a, b) ∈ E(K) tal que:

1. a �= 0, b �= 0 y (a, b) �= ∞.

2. grado(p(x)− aq(x)) = max{grado(p), grado(q)} = grado(α).

3. a �∈ r1(S).

4. (a, b) ∈ α(E(K)).

Llegados a este punto realizamos un estudio por casos, diferenciando entresi α �= 0 es separable o no.

Caso 1. Sea α �= 0 separable y por tanto r′1(x) �= 0 ⇒ p′(x)q(x)−p(x)q′(x) �=0. Veamos ahora que (a, b) presenta exactamente grado(α) preimagenes. Sea(x1, y1) ∈ E(K) tal que α((x1, y1)) = (a, b) entonces (x1, y1) cumplira⎧⎨

⎩p(x1)

q(x1)= a,

y1r2(x1) = b.

Como (a, b) �= ∞ entonces q(x1) �= 0 y ası r2(x1) �= 0. Por lo tanto, como b �= 0,se tiene que

y1 =b

r2(x1),

con lo que y1 quedara determinado por x1. Con la otra ecuacion deducimosp(x1)− aq(x1) = 0. Por lo tanto, si grado(p(x)− aq(x)) = grado(α) entonces nohay raıces multiples.

Comprobemos ahora que x1 no es raız multiple usando reduccion al absurdo.Suponemos que x1 es raız multiple por lo que tenemos que x1 cumplira p(x1)−aq(x1) = 0 y p′(x1)− aq′(x1) = 0. Multiplicando la segunda ecuacion por q(x1)

y observando que a = p(x1)q(x1)

llegamos a que

q(x1)p′(x1) = p(x1)q

′(x1) ⇐⇒ x1 ∈ S

y, si esto ocurre, significara que r1(x1) = a ∈ r1(S) y es absurdo por la elecciondel elemento a. Ası concluimos que x1 no tiene raıces multiples y grado(α) =#Ker(α).

Caso 2. En este caso α �= 0 no es separable con lo que r′1(x2) = 0 paraciertos valores de x2. Por ello q(x2)p

′(x2) = p(x2)q′(x2) con lo que existen

raıces multiples y solo podemos asegurar que grado(α) > #Ker(α).

10 CAPITULO 1. TEORIA BASICA

Un ejemplo importante de endomorfismo es el de Frobenius. Sea E una curvadefinida sobre el cuerpo finito Fq, entonces el endomorfismo de Frobenius vienedado por

Φq(x, y) = (xq, yq).

Definicion 1.17 (Suma de dos endomorfismos en curvas elıpticas). Sea E unacurva elıptica sobre un cuerpo K y sean α : E(K) → E(K) y β : E(K) → E(K)dos endomorfismos. Podemos definir su operacion suma, que denotaremos porα+ β, como

α+ β : K → K

P �→ α(P ) + β(P ).

Ademas denotaremos con un entero n al endomorfismo que viene dado por

n : K → K

P �→ nP.

Proposicion 1.18. Sea E una curva elıptica sobre Fq con q = pn, donde p esla caracterıstica del cuerpo, y sean r, s �= 0 ∈ Z. El endomorfismo rΦq + sdefinido por

rΦq + s : E(Fq) → E(Fq)

P �→ rφq(P ) + sP

es separable si y solo si p � s.

1.6. Curvas singulares

A lo largo de los capıtulos asumimos que trabajamos con una curva elıpticaE tal que y2 = x3+Ax+B no tiene raıces multiples. Sin embargo es interesantever que ocurre cuando hay raıces multiples, y eso es precisamente en lo que noscentraremos en este apartado.

Ademas, como vamos a discutir brevemente al final de esta seccion, las curvassingulares surgen naturalmente cuando las curvas elıpticas definidas sobre losnumeros enteros son reducidas modulo varios primos.

Comenzaremos por las nociones de punto singular y curva singular.

Definicion 1.19 (Punto singular). Sea E una curva elıptica dada por unafuncion f y sea P = (a, b) ∈ E. Decimos que P es un punto singular de E sisatisface las ecuaciones: ⎧⎪⎪⎪⎨

⎪⎪⎪⎩

∂f

∂x(P ) = 0,

∂f

∂y(P ) = 0.

1.6. CURVAS SINGULARES 11

Definicion 1.20 (Curva singular). Una curva singular es aquella que presentaal menos un punto singular.

Dentro de los puntos singulares se puede distinguir entre nodos y cuspides.Para saber diferenciarlos deberemos introducir algunas pequenas definiciones.Siempre que tenemos una curva elıptica E sobre un cierto cuerpo K que vienedada por la funcion f y encontramos un punto p = (a, b) ∈ E(K), podremosescribir f como suma de componentes homogeneas. De este modo

f(x− a, y − b) = f0(x− a, y − b) + · · ·+ fm(x− a, y − b),

donde grado(fi(x− a, y − b)) = i.

Obviamente, en el contexto de las curvas elıpticas, el grado maximo quepueden presentar las componentes homogeneas es 3, ya que una curva elıpticapresenta x3 en su ecuacion.

Definicion 1.21 (Multiplicidad en un punto). Definimos la multiplicidad deuna curva elıptica E en el punto P = (a, b) como el mınimo k tal que fk(x −a, y − b) = 0 y lo denotaremos como mp(E).

Definicion 1.22. Si mp(E) = 2, entonces f2(x−a, y−b) se puede descomponeren producto de dos factores tal que f2(x − a, y − b) = αβ. Ası distinguiremosentre:

• una cuspide, si α = λβ con λ un escalar.

• un nodo en caso contrario.

A continuacion desglosaremos dos ejemplos de curvas elıpticas de los cualesobtendremos una cuspide y un nodo.

En primer lugar, consideremos el caso en que x3+Ax+B tiene una raız tripleen x = 0, por lo que la curva tiene la ecuacion y2 = x3 y por tanto f = x3 − y2.En este caso el punto p = (0, 0) es un punto singular ya que

⎧⎪⎪⎪⎨⎪⎪⎪⎩

∂f

∂x(P ) = 3x2 |x=0= 0,

∂f

∂y(P ) = −2y |y=0= 0.

Ademas, si ponemos f como suma de componentes homogeneas, tenemos quef(x− 0, y− 0) = 0+0+ (−y2)+x3 y, como el polinomio que no se hace cero enprimer lugar es el de grado 2, concluimos con que mp(E) = 2. Ademas, comof2(x, y) = −y2 = −y · y descompone en factores iguales salvo escalar, se tratade una cuspide como se puede observar en la figura 1.3.

12 CAPITULO 1. TEORIA BASICA

-1 1 2 3

-3-2-1

1

2

3

Figura 1.3: Curva singular en la que (0, 0) es una cuspide.

Realizando el mismo proceso con la curva elıptica E(K) dada por x2 =x3 + x2 tendrıamos un nodo en (0, 0) ya que f2(x, y) = x2 − y2 = (x− y)(x+ y)descompone en factores distintos como se puede ver en la figura 1.4.

-1.0 -0.5 0.5 1.0

-1.5-1.0-0.5

0.5

1.0

1.5

Figura 1.4: Curva singular en la que (0, 0) es un nodo.

Ahora bien, tanto en el nodo como en la cuspide, el punto (0, 0) causa pro-blemas en el grupo. Lo curioso sera que, dejando fuera del grupo el punto, elresto de puntos singulares constuiran un nuevo grupo al que denotaremos por

1.6. CURVAS SINGULARES 13

Ens(K). Dicho grupo cumplira la estructura de grupo de igual forma. Estudia-remos que ocurre en cada caso con un par de teoremas, comenzando por el casode la cuspide.

Teorema 1.23 (Reduccion aditiva). Sea E la curva elıptica dada por y2 = x3

y sea Ens(K) el grupo de los puntos no singulares incluido el punto del infinito.La aplicacion

Ens(K) → K

(x, y) �→ x

y

∞ �→ 0

muestra un isomorfismo entre Ens(K) y K considerado como un grupo aditivo.

En el caso del nodo ocurre algo diferente a lo citado en el teorema anterior,se produce la reduccion multiplicativa.

Teorema 1.24 (Reduccion multiplicativa). Sea E la curva y2 = x2(x+ a) con0 �= a ∈ K, sea Ens el grupo de los puntos no singulares de E con coordenadasen K y Sea α2 = a. Consideramos la aplicacion

ψ : (x, y) �→ y + αx

y − αx

∞ �→ 1.

1. Si α ∈ K, entonces ψ proporciona un isomorfismo entre Ens(K) y K×,considerado como un grupo multiplicativo.

2. Si α �∈ K, entonces ψ proporciona un isomorfismo

Ens(K) ∼= {u+ αv | u, v ∈ K, u2 − av2 = 1},

donde el lado derecho es un grupo bajo la operacion multiplicacion.

Capıtulo 2

Puntos de torsion

Los puntos de torsion juegan un papel muy importante en el estudio de lascurvas elıpticas, puesto que gracias a ellos se puede probar la demostracion dealgunos de los lemas del calculo de grados. En este capıtulo se hace tambienhincapie en el calculo del grado de endomorfismos del tipo P �→ nP con n unnatural.

2.1. Puntos de torsion

Definicion 2.1 (Puntos de torsion de E). Sea E una curva elıptica definidasobre el cuerpo K, los puntos de torsion de E seran todos aquellos cuyos ordenessean finitos. Ademas, dado n un entero positivo, nos puede interesar calcularlos elementos de torsion de un determinado orden, que definiremos por

E[n] = {P ∈ E(K) | nP = ∞}.

Notar que, como ya ocurrıa en la curva elıptica, ∞ representa el elementroneutro con lo que una definicion alternativa es E[n] = Ker(P �→ nP ).

Ejemplo 1. Calcular los 2-puntos de torsion.

Como las formulas de la curva elıptica varıan dependiendo de la caracterısticadel cuerpo, realizaremos el ejercicio en dos casos: cuando la caracterıstica de Ksea distinta de 2 y cuando sea 2.

Cuando la caracterıstica de K no es 2, E puede verse como

y2 = (x− e1)(x− e2)(x− e3),

donde e1, e2, e3 ∈ K. Un punto P = (x, y) satisface 2P = ∞ si y solo sisu tangente respecto a la curva es la vertical. Otra manera de verlo es que Pcumple P = −P y por tanto (x, y) = −(x, y) = (x,−y), deduciendo ası quey = −y ⇒ y = 0 ya que la caracterıstica es distinta de 2. El sistema que

15

16 CAPITULO 2. PUNTOS DE TORSION

tenemos en ese caso sera{y = 0,

y2 = (x− e1)(x− e2)(x− e3),

que al resolverlo nos lleva a ver que se trata de un grupo isomorfo a Z2 ⊕Z2 dela forma

E[2] = {∞, (e1, 0), (e2, 0), (e3, 0)}.Cuando la caracterıstica es 2 el ejercicio es mas delicado. En el Lema 1.7

vimos que la curva elıptica E podıa tener dos formas:

(I) y2 + xy + x3 + a2x2 + a6 = 0 con a6 �= 0,

(II) y2 + a3y + x3 + a4x+ a6 = 0 con a3 �= 0.

Si el punto P = (x, y) satisface 2P = ∞ entonces la tangente de dicho puntoes la vertical y por ello la derivada parcial con respecto a x debe ser cero.

En el primer caso, calculando la derivada parcial y teniendo en consideracionque la caracterıstica del cuerpo es 2 obtenemos que

∂y= 2y + x = x =⇒ x = 0.

Sustituyendo en la ecuacion correspondiente conseguimos llegar a 0 = y2+a6 =(y +

√a6)

2. Ası tenemos un unico punto de orden 2 y por lo tanto los 2-puntosde torsion seran

E[2] = {∞, (0,√a6)}.

En el segundo caso, la derivada parcial con respecto a y es ∂∂y = 2y+a3 = a3.

En este caso, como a3 �= 0 por definicion de la curva entonces, no existe ningunpunto de orden dos y por ello

E[2] = {∞} ∼= 0.

Al igual que como hemos hecho con el ejercicio anterior, se podrıa proseguircon 3-puntos de torsion y ordenes superiores y se podrıa observar que se tienela conclusion del siguiente teorema.

Teorema 2.2. Sea E una curva elıptica sobre K y sea n un entero positivo,teniendo en cuenta que la caracterıstica de K es p, deducimos que

• Si p � n o p = 0 entonces E[n] ∼= Zn ⊕ Zn.

• Si p > 0 y p | n podemos escribir n = prn′ con p � n′. Entonces

E[n] ∼= Zn′ ⊕ Zn′ o E[n] ∼= Zn ⊕ Zn′ .

A raız de estudiar los diferentes isomorfismos que surgen entre los puntos detorsion, se emplean dos nuevas nociones respectos a las curvas.

2.2. POLINOMIOS DE DIVISION 17

Definicion 2.3 (Tipos de curvas elıpticas de caracterıstica p). Sea E una curvaelıptica de caracterıstica p:

• se llama ordinaria si E[p] ∼= Zp

• se llama supersingular si E[p] ∼= 0.

En el ejercicio anterior por ejemplo, cuando la caracterıstica es 2, podemosdeducir que en el primer caso la curva es ordinaria y en el segundo caso essupersingular.

2.2. Polinomios de division

Los polinomios de division son la piedra angular para calcular tanto el gradode los endomorfismos P �→ nP , como la formula con la que se obtienen lascoordenadas del punto nP . Esto es muy util para calcular el grado del propioendomorfismo. Desafortunadamente los polinomios de division se construyenrecursivamente.

Definicion 2.4 (Polinomios de division). Sea E una curva elıptica que vienedada por la formula y2 = x3+Ax+B, definimos recursivamente los polinomiosde division ψm ∈ Z[x, y,A,B] por

ψ2m+1 = ψm+2ψ3m − ψm−1ψm+1 m ≥ 2,

ψ2m = (2y)−1(ψm)(ψm+2ψ2m−1 − ψm−2ψ

2m+1) m ≥ 3,

con

ψ0 = 0,

ψ1 = 1,

ψ2 = 2y,

ψ3 = 3x4 + 6Ax2 + 12Bx−A2,

ψ4 = 4y(x6 + 5Ax4 + 20Bx3 − 5A2x2 − 4ABx− 8B2 −A3).

Ademas necesitaremos de unos polinomios auxiliares que nos serviran, sobre-todo, para que la formula de las coordenadas de nP tenga un aspecto mas legible.Seran

φm = xψ2m − ψm+1ψm−1,

ωm = (4y)−1(ψm+2ψ2m−1 − ψm−2ψ

2m+1).

Como los polinomios de division constituiran unas formulas, para calcularla formula de nP necesitaremos saber donde residen dichos polinomios, ya quetienen que atender a la formula

nP = (rz(x), r2(x)y).

18 CAPITULO 2. PUNTOS DE TORSION

Para averiguarlo tenemos el siguiente lema.

Lema 2.5. {ψn ∈ Z[x, y2, A,B] si n es impar

ψn ∈ 2yZ[x, y2, A,B] si n es par

φn ∈ Z[x, y2, A,B] para todo n{ωn ∈ yZ[x, y2, A,B] si n es impar

ωn ∈ Z[x, y2, A,B] si n es par

Una vez definidos los polinomios ya podemos introducir uno de los teoremasclaves de esta seccion.

Teorema 2.6. Sea P = (x, y) un punto de la curva elıptica sobre un cuerpo decaracterıstica diferente de 2, y sea n un entero positivo, entonces

nP =

(φn(x)

ψ2n

,ωn(x, y)

ψn(x, y)3

)

Para calcular el grado del endomorfismo anterior, antes, deberemos introdu-cir un lema en el que se detallen las potencias de cada uno de los polinomiospreviamente definidos.

Lema 2.7. Se tiene que

φn(x) = xn2

+ potencias de menor grado,

ψn(x) = n2xn2−1 + potencias de menor grado.

El ultimo corolario de esta seccion tiene que ver con el grado del endomor-fismo que estamos estudiando.

Corolario 2.8. Sea E una curva elıptica, el endomorfismo de E dado por P �→nP tiene grado n2.

2.3. Emparejamiento de Weil

El emparejamiento deWeil sobre los n-puntos de torsion de una curva elıpticaes la mejor herramienta en el estudio de las curvas elıpticas, ya que con elpodemos calcular tanto el grado de los endomorfismos, como de la suma deellos. Nos apoyaremos en el a la hora de demostrar el teorema de Hasse, debidoa que nos ayudara a saber el numero de puntos que presenta una curva elıpticasobre un cuerpo finito.

Definicion 2.9 (Raıces n-esimas de la unidad sobre K). Sea E una curvaelıptica sobre un cuerpo K de caracterıstica p y sea n un entero que cumple quep � n, definimos

μn = {x ∈ K | xn = 1}como el grupo de la raıces n-esimas de la unidad en K.

2.3. EMPAREJAMIENTO DE WEIL 19

Entonces por el teorema 2.2 sabemos que E[n] ∼= Zn ⊕Zn. Ademas la ecua-cion xn = 1 no tiene raıces multiples, por lo que hay n raıces sobre K. Por lotanto μn es un grupo cıclico de orden n y su generador, al que llamaremos n-raızprimitiva de la unidad, es ξ.

Antes de introducir el siguiente teorema, hay que recalcar que la aplicacionen, que se describira a continuacion, es una funcion que sabemos que existe,pero que localizarla se escapa del objetivo de este trabajo.

Teorema 2.10. Sea E una curva elıptica sobre un cuerpo K de caracterısticap y sea n un entero que cumple que p � n, entonces el emparejamiento de Weiles una aplicacion

en : E[n]× E[n] → μn

que satisface las siguientes propiedades:

1. en es bilineal en ambas variable, lo que viene a decir que se cumple

en(S1 + S2, T ) = en(S1, T )en(S2, T )

yen(S, T1 + T2) = en(S, T1)en(S, T2)

para cualquier S, T , S1, S2, T1, T2 ∈ E[n].

2. en es no degenerada en cada variable. Esto significa que si en(S, T ) = 1para todo T ∈ E[n], entonces S = ∞ y, analogamente, si en(S, T ) = 1para todo S ∈ E[n], entonces T = ∞.

3. en(T, T ) = 1 para todo T ∈ E[n].

4. en(T, S) = en(S, T )−1 para todo S, T ∈ E[n].

5. en(σS, σT ) = σ(en(S, T )) para todo automorfismo de E σ sobre K.

6. en(α(S), α(T )) = en(S, T )grado(α) para todo endomorfismo separable α so-

bre E. Si los coeficientes de la ecuacion que define a E pertenecen a uncuerpo finito Fq, entonces el afirmacion se mantiene cuando α es el en-domorfismo de Frobenius (a pesar de no ser separable).

Corolario 2.11. Sea {T1, T2} una base de E[n], entonces en(T1, T2) es unan-raız primitiva de la unidad.

Demostracion. Suponemos que en(T1, T2) = ζ con ζd = 1, entonces en(T1, dT2) =en(T1, T2)

d = ζd = 1. Ademas en(T2, dT2) = en(T2, T2)d = 1. Sea S ∈ E[n] en-

tonces S = aT1 + bT2 para ciertos enteros a y b, entonces

en(S, dT2) = en(T1, T2)aen(T2, dT2)

b = 1.

Este hecho se cumple para todo S, lo que implica que dT2 = ∞. Ası deducimosque d sera multiplo del orden de T2. Ademas T2 es parte de una base con loque su orden es n y, como d debe dividir a n puesto que es el orden de la raız,concluimos que d = n.

20 CAPITULO 2. PUNTOS DE TORSION

Una vez introducido el teorema y corolario anterior ya estamos en condicio-nes de deducir dos proposiciones que nos serviran para demostrar el teorema deHasse en el siguiente capıtulo.

Antes de comenzar notaremos que dado un endomorfismo α de E podemosobtener su correspondiente matriz

αn =

(a bc d

)

con entradas en Zn, descrita por la imagen de α de la base {T1, T2}.Proposicion 2.12. Sea α un endomorfismo sobre una curva elıptica E definidasobre un cuerpo K de caracterıstica p y sea n un entero que cumple que p � n,entonces

det(αn) ≡ grado(α) (mod n).

Demostracion. ζ = en(T1, T2) es una raız primitiva de la unidad por el punto(6) del teorema 2.10 y por tanto

ζgrado(α) =en(α(T1), α(T2)) = en(aT1 + cT2, bT1 + dT2)

=en(T1, T1)aben(T1, T2)

aden(T2, T1)cben(T2, T2)

cd

=en(T1, T2)aden(T2, T1)

cb = en(T1, T2)aden(T1, T2)

−bc

=en(T1, T2)ad−bc = ζad−bc.

Con ello concluimos que det(αn) ≡ grado(α) (mod n).

Proposicion 2.13. Sea α, β dos endomorfismos sobre E y sean a, b ∈ Z, elgrado del endomorfismo aα+ bβ vendra dado por

grado(aα+ bβ) = a2 grado(α) + b2 grado(β)

+ ab(grado(α+ β)− grado(α)− grado(β)).

Demostracion. Sea n un entero no divisible por la caracterıstica del cuerpo K yrepresentamos α y β por las matrices αn y βn. Como la matriz coordenada deaα+ bβ es aαn + bβn tenemos que

det(aαn + bβn) = a2 det(αn) + b2 det(βn)

+ ab(det(αn + βn)− det(αn)− det(βn)).

Entonces por la proposicion 2.12

grado(aα+ bβ) = a2 grado(α) + b2 grado(β)

+ ab(grado(α+ β)− grado(α)− grado(β)) (mod n).

Y, como esto es valido para cualquier n, entonces la igualdad sera cierta.

Capıtulo 3

Curvas elıpticas sobrecuerpos finitos

Sea F un cuerpo finito y sea E una curva elıptica definida sobre F, entoncesexiste un numero finito de puntos (x, y) con x, y ∈ F y, por lo tanto, E(F) esun grupo finito. En este capıtulo trabajaremos con las curvas elıpticas sobrecuerpos finitos calculando su orden, que es el objetivo principal del trabajo.Ademas en este capıtulo se demostrara el teorema de Hasse.

Comenzamos con un ejemplo sencillo de calculo de los puntos de una curvaelıptica sobre un cuerpo finito.

Ejemplo 2. Sea E la curva elıptica dada por y2 = x3 + x+4 sobre F5. Calculatodos sus puntos.

Para hallar todos sus puntos haremos una lista de los posibles valores quepuede tomar x, despues calcularemos x3 + x+4 (mod 5) y posteriormente rea-lizaremos su raız cuadrada para ver que valores puede tomar la coordenada y.

x x3 + x+ 4 y Puntos0 4 ±2 (0, 2), (0, 3)1 1 ±1 (1, 1), (1, 4)2 4 ±2 (2, 2), (2, 3)3 4 ±2 (3, 2), (3, 3)4 2 - -∞ ∞ ∞

Ası hemos podido ver que E(F5) tiene orden 9 y obviamente es abeliano porquela propiedad conmutativa se cumple en curvas elıpticas. Por tanto puede serisomorfo a Z3⊕Z3 o a Z9. Para ver de cual se trata calcularemos el orden de loselementos. Si en algun momento encontramos un punto que tenga orden mayorque tres es natural que se trata de Z9.

Para comprobar si es o no cıclico lo que hacemos es ejecutar un programaque he creado escrito en Java utilizando las librerıas de Bouncy Castle de lascuales hablaremos mas extensamente en el apendice.

21

22 CAPITULO 3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS

1 int orden = 1;

2 ECCurve curvaEliptica = new ECCurve.Fp(new BigInteger("5"), new BigInteger("1"),

new BigInteger("4"));↪→3 ECPoint base = curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→4 ECPoint punto = curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→5 while(!punto.isInfinity())

6 {

7 System.out.println("("+punto.getX()+","+punto.getY()+")");

8 orden++;

9 punto = punto.add(base);

10 }

11 System.out.println("El orden del punto es " + orden);

Y ejecutando obtenemos el siguiente resultado

〈(0, 2)〉 = {(0, 2), (1, 4), (3, 2), (2, 3), (2, 2), (3, 3), (1, 1), (0, 3)}Con lo que el orden del punto (0, 2) es 9 y por lo tanto E(F5) sera isomorfoa Z9. En conclusion E(F5) es un grupo abeliano cıclico de orden 9 y presentacomo generador a (0, 2).

Tambien nos podrıamos haber ayudado con SageMath introduciendo las si-guientes ordenes.

1 F = Zmod(5)

2 E=EllipticCurve(F,[1,4])

3 show(E.points())

4 E.cardinality()

3.1. El endomorfismo de Frobenious

Ya se introdujo en la seccion 1.5 del primer capıtulo el endomorfismo deFrobenius. Este endomorfismo va a ser clave porque apoyandonos en el conse-guiremos desarrollar la demostracion del teorema de Hasse.

Definicion 3.1. Sea Fq un cuerpo finito cuya clausura algebraica viene repre-sentada por Fq y sea

φq : Fq → Fq,

x �→ xq

el endomorfismo de Frobenius sobre Fq. Definimos el endomorfismo de Frobe-nious orientado a una curva elıptica E(Fq) como

φq(x, y) =(xq, yq),

φq(∞) =∞.

3.1. EL ENDOMORFISMO DE FROBENIOUS 23

Lema 3.2. Sea E una curva elıptica definida sobre Fq y sea (x, y) ∈ E(Fq),tenemos

1. φq(x, y) ∈ E(Fq),

2. (x, y) ∈ E(Fq) si y solo si φq(x, y) = (x, y).

Demostracion. Para la demostracion del lema emplearemos la ecuacion generalde una curva elıptica, por lo tanto tendremos

y2 + a1xy + a3y = x3 + a2x2 + a4x+ a6,

con ai ∈ Fq. Elevamos la ecuacion a la potencia q-esima y obtenemos

(yq)2 + a1(xqyq) + a3(y

q) = (xq)3 + a2(xq)2 + a4(x

q) + a6.

Este hecho significa que (xq, yq) cumple E y por tanto es solucion, con lo quehemos probado el primer punto del lema. Para probar segundo hay que recordarque los elementos de Fq en Fq son exactamente los que cumplen que xq = x.Entonces

(x, y) ∈ E(Fq) ⇔ x, y ∈ Fq

⇔ φ(x) = x y φ(y) = y

⇔ φ(x, y) = (x, y).

Proposicion 3.3. Sea E una curva elıptica sobre Fq y sea n un entero positivomayor que 0, entonces

1. Ker(φnq − 1) = E(Fqn),

2. φnq − 1 es un endomorfismo separable de manera que

#E(Fqn) = grado(φnq − 1) = #Ker(φnq − 1).

Demostracion. En el anterior lema veıamos que (x, y) ∈ E(Fqn) ⇔ φnq (x, y) =(x, y) entonces φnq (x, y) − (x, y) = 0 ⇔ (x, y) ∈ E(Fqn). Por ello es trivial verque Ker(φnq −1) = E(Fqn) se cumple y por tanto queda probado el primer ıtem.

En cuanto a la separabilidad de φnq − 1 deducimos que es separable ya queq � −1. Al saber que es separable y ayudandonos con el teorema 1.16 llegamosa la conclusion de que grado(φnq − 1) = #Ker(φnq − 1) y utilizando el primerpunto de la proposicion queda demostrada.

Lema 3.4. Sean r, s enteros positivos cuyo gcd(s, q) = 1. Entonces

grado(rΦq − s) = r2q + s2 − rsa,

con a = q + 1−#E(Fq).

24 CAPITULO 3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS

Demostracion. Por la proposicion 2.13 sabemos que

grado(rΦq − s) = r2 grado(φq) + s2 grado(−1) + rs(grado(φq − 1)

− grado(φq)− grado(−1))

= r2q + s2 + rs(#E(Fq)− q − 1) = r2q + s2 − rsa.

Una vez introducido todo lo anterior ya estamos en condiciones de ver yprobar el teorema de Hasse.

Teorema 3.5 (Teorema de Hasse). Sea E una curva elıptica sobre el cuerpofinito Fq, entonces el tamano de E(Fq) cumple

|q + 1−#E(Fq)| ≤ 2√q.

Demostracion. Para la demostracion de este teorema nos apoyaremos inicial-mente en la proposicion anterior. Sabemos que el grado(rφq + s) ≥ 0 y por ellor2q+s2−rsa ≥ 0. Ademas recordamos que s no es divisible por la caracterısticadel cuerpo, entonces podemos sin problemas dividir por s2.

q(rs

)2− a

(rs

)+ 1 ≥ 0.

Realizamos el cambio de variable x = rs y tenemos

Helmut Hasse. Matemati-co aleman conocido por suscontribuciones a la teorıa decuerpos de clases, la aplica-cion de numeros p-adicos ala teorıa de cuerpos de claseslocales y geometrıa diofanti-ca y a las funciones zeta lo-cales.

qx2 − ax+ 1 ≥ 0,

que es precisamente la region superior de una parabola convexa puesto que qtoma valores positivos al tratarse de la caracterıstica del cuerpo. Analizaremoslos casos ayudandonos con la parabola limıtrofe en todas sus variantes.

En el primer caso, la parabola puede tomar valores negativos, motivo por elcual incumple la inecuacion y debemos descartarla. En el segundo caso, hay unaunica raız doble al cortar con el eje en el origen. En el ultimo caso, no hay raıcesreales ya que no corta con el eje, lo que hace que existan dos raıces complejasy, por tanto, el discriminante sera negativo.

x

y y = x2 − C

x

y y = x2

x

y y = x2 + C

Figura 3.1: Casos de una parabola convexa con 0 < C ∈ R.

Recapitulando, el discriminante es menor o igual que cero, es decir, a2 −4q ≤ 0. Por lo tanto |a| ≤ 2

√q y, como a = q + 1−#E(Fq), entonces

|q + 1−#E(Fq)| ≤ 2√q

3.2. ORDENES DE GRUPOS 25

Con la demostracion de este teorema hemos alcanzado el principal objetivodel proyecto. A partir de ahora pondremos el resultado en practica y hablaremosmas extensamente del logaritmo discreto.

Para ver un ejemplo del teorema de Hasse en una curva elıptica que se empleaen OpenSSL escogemos p–192 donde

p = 6277101735386680763835789423207666416083908700390324961279,

entonces calculamos el intervalo aproximado que es (a, b) donde

a =6277101735386680763835789423049210091055380025203237060608

b =6277101735386680763835789423366122741112437375577412861952

con lo que el orden del grupo bastante grande.

3.2. Ordenes de grupos

Con el teorema de Hasse hemos conseguido obtener un intervalo lımite dondevivira la cardinalidad de una curva elıptica sobre un cuerpo finito. En estaseccion se discutiran algunos metodos actuales para determinar el orden delos grupos.

3.2.1. Curvas en subcuerpos

En ocasiones, nosotros nos definimos una curva elıptica E sobre un cuerpofinito Fq y queremos conocer el orden de E(Fqn) para un cierto valor de n. Paradeterminar el orden recurriremos a los siguientes lemas y teoremas.

Teorema 3.6. Sea E una curva elıptica definida sobre Fq y sea a = q + 1 −#E(Fq), entonces

φ2q − aφq + q = 0

es un endomorfismo de E y a es el unico entero k tal que

φ2q − kφq + q = 0.

En otras palabras, si (x, y) ∈ E(Fq), entonces

(xq2

, yq2

)− a(xq, yq) + q(x, y) = ∞y a es el unico entero que la satisface para todo (x, y) ∈ E(Fq).

Demostracion. Sabemos por la proposicion 1.16 que cualquier endomorfismoα �= 0 tendra nucleo finito. Por lo tanto si φ2q − aφq + q tiene un nucleo infinitosignificara que es el endomorfismo cero.

Sea m ≥ 1 un entero tal que mcd(m, q) = 1 y sea (φq)m la matriz inducidapor φq que describira la accion de φq sobre E[m]. Sea

(φq)m =

(s tu v

)

26 CAPITULO 3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS

Entonces como φq − 1 es separable implicara

#Ker(φq − 1) = grado(φq − 1) ≡ det((φq)m − I)

=sv − tu− (s+ v) + 1 (mod m).

Ahora bien, como sv − tu = det((φq)m) ≡ q (mod m) deducimos por la propo-sicion que #Ker(φq − 1) = q + 1− a. Por lo tanto,

Traza((φq)m)) = s+ v ≡ a (mod m).

Por el teorema de Cayley-Hamilton del algebra lineal tenemos que

((φq)m)2 − a(φq)m + qI ≡ 0 (mod m),

ya que x2 − ax + q es el polinomio caracterıstico de φm. Esto significa que elendomorfismo φ2q − aφq + q es identicamente cero en E[m], ya que su matrizcoordenada es nula al ser las entradas enteros modulo m. Como hay infinitaselecciones del valorm y por el teorema 2.2 cada valorm conduce am2 elementosen E[m], entonces el nucleo sera infinito, por lo que el endomorfismo sera cero.

Lema 3.7. Sea sn = αn+βn con α y β tales que x2− ax+ q = (x−α)(x−β),entonces

sn+1 = asn − qsn−1,

para n ≥ 1, tomando s0 = 2 y s1 = a.

Es obvio que sn = αn + βn es un numero entero ya que se obtiene recursi-vamente a partir de multiplicacion y resta de enteros.

Teorema 3.8. Sea #E(Fq) = q + 1 − a para un cierto valor de a, escribimosx2 − ax+ q = (x− α)(x− β), entonces

#E(Fqn) = qn + 1− (αn + βn)

para todo n ≥ 1.

Demostracion. Sea f(x) = (xn − αn)(xn − βn) = x2n − (αn + βn)xn + qn.Entonces x2 − ax + q = (x − α)(x − β) divide a f(x) ya que f(α) = f(β) = 0.Evaluando f en φq conseguimos

f(φq) = (φnq )2 − (αn − βn)φnq + qn = Q(φq)(φ

2q − aφq + q) = 0,

siendo Q(x) el cociente de dividir f(x) por x2 − ax+ q. Y como sabemos por elteorema 3.6 solo hay un entero k que cumple que φ2qn − kφqn + qn = 0, y dichak viene determinada por k = qn + 1−#E(Fqn) con lo que

#E(Fqn) = qn + 1− (αn + βn).

3.2. ORDENES DE GRUPOS 27

Ejemplo 3. Con respecto al ejemplo anterior ¿Que ocurrirıa con un cuerpo de25 elementos? ¿Y de 125?.

Sabemos que #E(F5) = 9 por lo que 9 = q+1−a = 6−a con lo que a = −3.Una vez deducido el valor de a obtenemos las raıces del polinomio

x2 + 3x+ 5 =

(x− −3− i

√11

2

)(x− −3 + i

√11

2

).

Por lo tanto α = −3−i√11

2 y β = −3+i√11

2 . Una vez conseguidos todos los valoresya estamos en condiciones de hallar los cardinales

#E(F25) = 25 + 1− (α2 + β2) = 27,

#E(F125) = 125 + 1− (α3 + β3) = 108.

Comprobamos ahora, tambien con ayuda de un ordenador, que el resultadoes correcto.

1 F = Zmod(5)

2 E = EllipticCurve(F,[1,4])

3 E.count_points(n=3)

Al ejecutar dichas ordenes en SageMath obtenemos {9, 27, 108}.

3.2.2. Ordenes de puntos

En este apartado averiguaremos los ordenes1 de diferentes puntos apoyando-nos tanto en el teorema de Hasse como en el de Lagrange, un resultado funda-mental de teorıa de grupos que introducimos a continuacion.

Teorema 3.9 (de Lagrange). Sea G un grupo finito, entonces tenemos que:

1. Si H es un subgrupo de G, entonces el orden de H divide al orden de G.

2. Si g ∈ G, entonces el orden de g divide al orden de G.

Ahora bien, por el teorema de Hasse sabemos que #E(Fq) vive en un inter-valo de longitud 4

√q.

. . .. . .

q + 1− 2√q q + 1 q + 1 + 2

√q

Figura 3.2: Intervalo de longitud 4√q donde vive #E(Fq).

Cabe destacar que si encontramos un punto cuyo orden es superior a 4√q

(longitud del intervalo) que se halle en ese intervalo habremos encontrado el

1Sea P ∈ E(Fq), el orden de P es el menor entero positivo k tal que kP = ∞.

28 CAPITULO 3. CURVAS ELIPTICAS SOBRE CUERPOS FINITOS

orden del grupo #E(Fq). Esto es ası debido a que |P | divide a #E(Fq) luego#E(Fq) = m |P |. Si m > 1 entonces #E(Fq) se encontrara fuera del intervalo,luego podemos concluir que m = 1 y #E(Fq) = |P |.Ejemplo 4. Sea E una curva elıptica determinada por y2 = x3 + 3x + 1 ydefinida sobre F619. ¿Cual sera su orden?.

Lo primero que haremos sera calcular un punto de la curva elıptica. Paraello damos como valor x = 0 y calculamos y que sera ±1, localizado los puntos(0, 1) y (0, 618).

Gracias al programa de ordenador que escribimos a continuacion obtenemosque los ordenes son respectivamente 100 y 300.

1 int orden=1;

2 ECCurve curvaEliptica=new ECCurve.Fp(new BigInteger("619"),new

BigInteger("3"),new BigInteger("1"));↪→3 ECPoint base1=curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("1"));↪→4 ECPoint punto1= curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("1"));↪→5 while(!punto1.isInfinity())

6 {

7 orden++;

8 punto1= punto1.add(base1);

9

10 }

11 System.out.println("El orden del punto es " + orden);

12 orden=1;

13 ECPoint base2=curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("618"));↪→14 ECPoint punto2= curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("618"));↪→15 while(!punto2.isInfinity())

16 {

17 orden++;

18 punto2= punto2.add(base2);

19

20 }

21 System.out.println("El orden del punto es " + orden);

Ahora aplicando el teorema de Hasse averiguaremos entre que valores estacomprendido el orden del grupo

619 + 1− 2√619 ≤ #E(F619) ≤ 619 + 1 + 2

√619,

es decir,571 ≤ #E(F619) ≤ 669

. Y como uno de los puntos presentan orden 300, llegamos a la conclusion (apli-cando el teorema de Lagrange) de que #E(F619)=600 ya que el orden del puntodebe dividir al orden del grupo.

Ejemplo 5. Sea E una curva elıptica determinada por y2 = x3 + 5x + 4 ydefinida sobre F2017. ¿Cual sera su orden?.

3.2. ORDENES DE GRUPOS 29

De forma analoga a la del ejercicio anterior, obtenemos el punto (0, 2) de lacurva. Ahora calcularemos su orden ayudandonos de las siguientes intruccionesen Java, obteniendo un orden de 517 para este punto.

1 int orden=1;

2 ECCurve curvaEliptica=new ECCurve.Fp(new BigInteger("2017"),new

BigInteger("5"),new BigInteger("4"));↪→3 ECPoint base1=curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→4 ECPoint punto1= curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→5 while(!punto1.isInfinity())

6 {

7 orden++;

8 punto1= punto1.add(base1);

9 }

10 System.out.println("El orden del punto es " + orden);

El orden de la curva debe ser multiplo de 517, por tanto, aplicando el teoremade Hasse que ademas nos dice que 1929 ≤ #E(F2017) ≤ 2107, deducimos que#E(F103) = 2068.

Ejemplo 6. Sea E una curva elıptica determinada por y2 = x3 + 4x + 1 ydefinida sobre F1589851 . Determina el orden del grupo.

Sabemos que (0, 1) es un punto de la curva y ayudandonos de un ordenadordeducimos que su orden es 1588809.

1 int orden = 1;

2 ECCurve curvaEliptica = new ECCurve.Fp(new BigInteger("1589851"), new

BigInteger("4"), new BigInteger("1"));↪→3 ECPoint base1 = curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("1"));↪→4 ECPoint punto1 = curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("1"));↪→5 while (!punto1.isInfinity())

6 {

7 orden++;

8 punto1 = punto1.add(base1);

9 }

10 System.out.println("El orden del punto es " + orden);

De nuevo, junto con la hipotesis que resulta del teorema de Hasse, en estecaso 1587331 ≤ #E(F1589851) ≤ 1592373 y el teorema de Lagrange, concluimosque #E(F1589851) = 1588809.

Capıtulo 4

El problema del logaritmodiscreto

En este capıtulo hablaremos del problema clasico del logaritmo discreto ycomentaremos algunos de los diferentes ataques que se pueden aplicar pararesolverlo como el calculo del ındice, el metodo baby-step, giant-step y el metodoρ de Pollard.

Por ultimo, vamos a mostrar que para las clases especiales de curvas elıpti-cas, supensingulares y anomalas en concreto, sera posible recudir el problemadel logaritmo discreto a una variante mas sencilla: en el caso multiplicativo loreducimos a un cuerpo finito y en el caso aditivo, a enteros modulo primo. Porello sin interes.

Definicion 4.1 (Problema clasico del logaritmo discreto). Sea p un primo ysean a, b enteros tales que a �≡ 0 (mod p) y b �≡ 0 (mod p), suponiendo queexiste un cierto k tal que

ak ≡ b (mod p).

El problema clasico del logaritmo discreto consiste en encontrar ese k.

Generalmente se toma (G, ·) y a, b ∈ G pero tambien se puede definir sobre(G,+) como por ejemplo E(Fq) en cuyo caso a y b serıan puntos de la curva Ey se intentarıa localizar el entero k que cumpla que ka = b.

A continuacion describiremos cada uno de los ataques mencionados anterior-mente con los cuales se tratara de averiguar a partir de a y b el valor de k.

4.1. Calculo del ındice

Sea p un primo y sea g el generador del grupo cıclico F×q , entonces para todo

h �≡ 0 (mod p) podemos encontrar un unico k modulo p− 1 tal que h ≡ gk paraun cierto valor . Llegados a este punto, definimos el logaritmo discreto de h con

31

32 CAPITULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO

respecto a la base g como L(h) = k tal que

gL(h) ≡ h (mod p).

Si tomamos ahora h1 y h2, entonces

gL(h1h2) ≡ h1h2 ≡ gL(h1)+L(h2)

lo que significa que L(h1h2) ≡ L(h1) + L(h2) (mod p− 1).

El ataque del calculo del ındice consiste en calcular el logaritmo de primospequenos formando una base de factores y, a partir de ellos, calcular potenciasempleando la propiedad anterior.

Ejemplo 7. Sea p = 179424673 y sea g = 15, debemos calcular el valor de ktal que 15k ≡ 134418867 (mod 179424673).

Primero nos construiremos una base de pequenos primos que sera nuestra ba-se de factores B = {2, 3, 5, 7, 11, 13, 17, 19, 23} y calcularemos sus logaritmos.Para hallar sus logaritmos buscaremos

15x ≡ ± producto de primos de la base B (mod 179424673).

Con el programa de ordenador y teniendo en cuenta de que las columnas secorresponden con el exponente de los elementos de la base excepto la ultimaque determina el exponente de el generador 15.

⎛⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎝

0 1 1 0 0 0 0 0 0 15 2 0 2 1 0 0 0 1 54724 0 0 0 0 1 0 0 2 186363 5 0 3 1 0 0 0 1 194906 3 0 0 1 0 2 1 0 200830 0 3 1 1 0 1 0 1 279556 0 0 0 0 3 0 1 1 311512 3 0 1 0 1 0 0 2 326545 1 0 2 0 3 1 0 0 398844 2 0 0 0 1 3 0 0 419801 0 1 0 1 2 0 2 1 457534 2 0 0 0 0 0 3 0 533140 0 0 2 1 2 1 1 0 544852 6 0 0 1 0 0 0 1 5916411 0 3 2 1 0 0 0 0 592642 5 0 1 0 0 0 3 0 67332

⎞⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎠

Escalonando y tomando logaritmos conseguimos

4.2. BABY-STEP GIANT-STEP 33

L(2) = 31549672

L(3) = 4150476

L(5) = 175274197

L(7) = 50661934

L(11) = 102414445

L(13) = 75110238

L(17) = 49760482

L(19) = 134609230

L(23) = 168491863

Ya sabemos todos los logaritmos de nuestra base de factores B. Ahora bus-caremos el valor k tal que 15k ≡ 134418867 (mod 179424673). Para calcularloseguiremos como estrategia localizar un valor de i tal que 15i · 134418867 ≡producto de elementos de la base. En este caso

151280 · 134418867 ≡ 132 · 172 · 23 (mod 179424673)

Por lo que,

L(134418867) ≡ 2L(13)+2L(17)+L(23)−1280 ≡ 59382679 (mod 179424673),

entonces 1559382679 ≡ 134418867 (mod 179424673).

El codigo de este ejercicio se puede encontrar en el apendice A. Y ademas,tambien mencionar que el calculo del logaritmo mediante el metodo del ındicepuede lograr una complejidad computacional de hasta Ln[

12 ,√2 + o(1)].1

A continuacion se detallaran dos ataques mas, en este caso aplicados allogaritmo discreto sobre una curva elıptica. Sea E una curva elıptica sobre uncuerpo finito Fq, sean P y Q dos puntos de E donde P es un generador dela curva, entonces el logaritmo discreto consistira en localizar k ∈ Fq tal queQ = kP .

4.2. Baby-step giant-step

Este metodo que viene a traducirse como ��paso pequeno, paso gigante�� re-quiere de aproximamente

√q pasos y alrededor de

√q zonas de memoria. Por

ello solo funcionara bien para un valor de q moderado. El procedimiento consisteen lo que sigue.

1. Elegir un m ≥ √q y calcular mP .

1Ln[α, c] = e(c+o(1))(logn)α(log logn)1−α.

34 CAPITULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO

2. Crear y almacenar todos los valores iP con 0 ≤ i < m.

3. Calcular los puntos Q − jmP para j = 0, 1, · · · ,m − 1 hasta que unocoincida con un elemento de los anteriores guardados.

4. Si iP = Q− jmP , tenemos que Q = kP con k = i+ jm (mod q).

Este algoritmo recibe este nombre porque los puntos iP se calculan anadiendoP a (i−1)P (paso pequeno), mientras que el punto Q−jmP se calcula sumando−mP a Q− (j − 1)mP (paso gigante).

Ejemplo 8. Sea E(F59) una curva elıptica dada por y2 = x3 + 7x + 4 y seaP = (0, 2) y Q = (45, 17), entonces intentaremos calcular el logaritmo discretoen base P de Q; es decir, hallaremos k donde Q = kP .

Por el teorema de Hasse sabemos que el orden de E(F59) es como muchoq + 1 + 2

√q = 59 + 1 + 2

√59 ∼= 75 y como m ≥ √

q entonces tomamos m = 9.Los puntos iP para 1 ≤ i ≤ 8 son respectivamente

(0, 2), (51, 12), (28, 33), (32, 30), (25, 13), (56, 30), (18, 48), (57, 49).

Ahora calculamos Q− jmP para 0 ≤ j ≤ 8 y obtenemos

(45, 17), (47, 27), (53, 10), (52, 54), (56, 30), (28, 26), (41, 51), (46, 31), (1, 37)

y observamos que Q− 4mP = 6P , es decir Q = 6P + 36P = 42P. Por lo tantok = 42.

Para ayudarnos a resolver el ejercicio hemos utilizado el siguiente codigo conel cual hemos ido consiguiendo los pasos pequenos y los pasos gigantes.

1 int m=9, i=1, j=0;

2 ECCurve curvaEliptica=new ECCurve.Fp(new BigInteger("59"),new BigInteger("7"),new

BigInteger("4"));↪→3 ECPoint base=curvaEliptica.createPoint(new BigInteger("0"), new BigInteger("2"));

4 ECPoint punto= curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→5 System.out.println("Calculamos los puntos iP");

6 while(i < m)

7 {

8 System.out.print(i+"P : (" +Integer.parseUnsignedInt(punto.getX().toString(),

16));↪→9 System.out.println("," +Integer.parseUnsignedInt(punto.getY().toString(),

16)+")");↪→10 i++;

11 punto= punto.add(base);

12

13 }

14 ECPoint puntomP=punto;

15 ECPoint puntoQ=curvaEliptica.createPoint(new BigInteger("45"), new

BigInteger("17"));↪→16 ECPoint puntoQmP;

17 System.out.println("Calculamos los puntos Q-jmP");

18 while (j<m)

19 {

4.3. METODO ρ DE POLLARD 35

20 puntoQmP=puntoQ.subtract(puntomP.multiply(new BigInteger(String.valueOf(j))));

21 System.out.print("Q-"+j+"mP :

("+Integer.parseUnsignedInt(puntoQmP.getX().toString(), 16));↪→22 System.out.println("," + Integer.parseUnsignedInt(puntoQmP.getY().toString(),

16)+")");↪→23 j++;

24 }

Cabe destacar que la complejidad del algoritmo baby-step gigant-step es deO(

√q).

4.3. Metodo ρ de Pollard

Una desventaja importante del metodo del paso pequeno, paso de gigantees que necesita gran capacidad de almacenamiento. El metodo ρ de Pollard,en cambio, emplea el mismo tiempo de calculo pero haciendo uso de menoralmacenamiento.

Al igual que el metodo anterior intentamos romper el logaritmo discreto ypor tanto a partir de los puntos P y Q queremos hallar k donde Q = kP . SeaFq un grupo finito de orden q, elegimos una funcion aleatoria f : Fq → Fq.Empezamos eligiendo un elemento P0 aleatoriamente al que aplicaremos f ycalculamos los elementos Pi+1 = f(Pi) hasta un cierto momento. Como Fq esun conjunto finito, y teniendo en cuenta la paradoja de cumpleanos, sera muyprobable que f repita valores y por lo tanto existira i0 < j0 tal que

Pi0+1 = f(Pi0) = f(Pj0) = Pj0+1.

Entonces la secuencia Pi sera periodica de periodo j0 − i0.

P0

P1

P2

P4

Pi = Pj

P10

P9

P8

P7

P6

P5

Figura 4.1: Grafico de nodos del metodo ρ de Pollard.

Se puede observar que la figura 4.1 muestra una apariencia similar a la letraρ y por ello recibe dicho nombre.

36 CAPITULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO

El problema reside en como escoger adecuadamente la funcion f . Una manerade hacerlo es dividir el grupo Fq en s subconjuntos disjuntos de mas o menos elmismo tamano, que denotaremos por Si. Para ello se eligen ai, bi aleatoriamenteobteniendo 2s numeros. Una vez conseguidos se calcula

Mi = aiP + biQ.

Finalmente, definimosf(g) = g +Mi si g ∈ Si.

Por ultimo elegimos enteros aleatorios a0 y b0 para calcular P0 = a0P +b0Q,que sera el punto de inicio de nuestro camino. Mientras calculamos los sucesivospuntos Pj debemos almacenar como estan expresados en terminos de sumandosde P y Q. Cuando encontremos una coincidencia tendremos entonces

Pj0 = uj0P + vj0Q = ui0P + vi0Q = Pi0 ,

por lo tanto(ui0 − uj0)P = (vj0 − vi0)Q.

Y si d = mcd(vj0 − vi0 , q) entonces tendremos que mcd(vj0 − vi0 , q) = d con loque

k ≡ ui0 − uj0vj0 − vi0

(modq

d).

Ejemplo 9. Sea G = E(F78341), donde E es una curva elıptica dada por y2 =x3 + x + 1 y sean P = (0, 2) y Q = (20563, 70190) puntos de E, trataremos decalcular k tal que Q = kP , es decir, hallaremos el logaritmo discreto en base Pde Q. Ademas sabemos que el orden de P es 77892.

Para resolver el ejercicio me he ayudado con una clase de Java creada pormı misma que se encuentra en el apendice A. En nuestro caso tomamos s = 3 yescogemos al azar s+1 puntos.

P0 = 1P + 9Q,

M0 = 3P + 9Q,

M1 = 2P + 7Q,

M2 = 6P + 8Q.

Consideramos ademas la funcion f definida por

f : E(F78341) → E(F78341)

(x, y) �→ f(x, y) = (x, y) +Mi,

donde i vendra dada por i ≡ x (mod 3), considerando x como un entero tal que0 ≤ x < 78341. Ademas definimos f(∞) = ∞. Calculamos ahora los sucerivos

4.4. CURVAS SUPERSINGULARES 37

puntos Pj obteniendo

P0 = (326, 69),

P1 = (59657, 30493),

P2 = (22531, 63410),

P3 = (56500, 8681),

P4 = (4450, 1929),

...

P270 = (4772, 7004),

P271 = (56865, 72629),

P272 = (33410, 56425),

...

P554 = (11656, 54130)

P555 = (56865,...72629),

P556 = (33410, 56425).

En nuestro caso podemos ver que la sucesion comienza a repetirse en P271 =P555 y, como P271 = 1010P + 2168Q y P555 = 2036P + 4435Q, entonces

∞ = P555 − P271 = 1026P + 2267Q.

Ahora bien, como sabemos que el orden de P es 77892 podemos concluir queQ ≡ (−2267)−11026P ≡ 74490P (mod 77892). Ası hemos conseguido hallar ellogaritmo discreto en base P de Q que es, precisamente, k = 74490.

4.4. Curvas supersingulares

Las curvas supersingulares tienen propiedades muy interesantes que desglo-saremos en esta seccion. Sea E(Fq) una curva elıptica, diremos que es supersin-gular si E[p] = {∞}, es decir, si no existen puntos de orden p.

Proposicion 4.2. Sea E una curva elıptica sobre Fq, donde q es una potenciadel primo p y sea a = q + 1−#E(Fq), entonces E sera supersingular si y solosi a ≡ 0 (mod p) o, de manera equivalente, si #E(Fq) ≡ 1 (mod p).

Demostracion. Escribimos x2 − ax + q = (x − α)(x − β) y por el teorema 3.8,sabemos que

#E(Fqn) = qn + 1− (αn + βn).

Ademas, por el lema 3.7, podemos decir que los sn = αn + βn satisfacen larelacion de recurrencia

s0 = 2, s1 = a, sn+1 = asn − qsn−1.

38 CAPITULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO

Para la demostracion de la proposicion haremos dos casos. Primero supo-nemos que a ≡ 0 (mod p). Entonces, si s1 = a ≡ 0 (mod p), esto implica quesn+1 ≡ 0 (mod p) para todo n ≥ 1. Por lo tanto,

#E(Fqn) = qn + 1− sn ≡ 1 (mod p),

con lo que no habra puntos de orden p en E(Fqn) para todo n ≥ 1. Ademas, comoFq = ∪n≥1Fqn , significara que no encontraremos puntos de orden p en E(Fq).

En el otro caso suponemos que a �≡ 0 (mod p). La recurrencia implica quesn+1 = asn (mod p) para todo n ≥ 1. Por ello, como s1 = a, tendremos quesn = an (mod p) para todo n ≥ 1. Ası,

#E(Fqn) = qn + 1− sn ≡ 1− an (mod p).

Ademas, por el pequeno teorema de Fermat, sabemos que ap−1 ≡ 1 (mod p).En resumen, tenemos E(Fqp−1) cuyo orden es divisible por p, es decir, por elteorema de Cauchy para grupos finitos, existe un punto de orden p, luego no essupersingular.

Por ultimo, para acabar de demostrar el lema, tendremos que

#E(Fq) = q + 1− a ≡ 1− a (mod p),

luego #E(Fq) ≡ 1 (mod p) si y solo si a ≡ 0 (mod p).

Una caracterıstica atractiva de las curvas supersingulares es que los calculoscomputacionales que tienen que ver con la multiplicacion de un entero con unpunto pueden, habitualmente, hacerse en mucho menos tiempo del esperadocomo podemos ver a continuacion.

Suponemos que E es una curva elıptica supersingular definida sobre Fq, seaP = (x, y) un punto de E(Fqn) para cualquier n ≥ 1, sea k un entero positivo ysea n un entero grande, con lo que pretendemos calcular kP.

Asumimos que a = 0 entonces

φ2q + q = 0.

Ası podemos deducir que

q(x, y) = −φ2q(x, y) =(xq

2

,−yq2).

El calculo de xq2

y yq2

involucra aritmetica de cuerpos finitos, por lo queel par puede ser generado mucho mas rapido que con los calculos de curvaselıpticas. Para una mejor comprension exponemos el procedimiento en cuatrosencillos pasos.

1. Desarrollamos k en base q

k = k0 + k1q + k2q2 + · · ·+ krq

r,

con 0 ≤ ki < q.

4.4. CURVAS SUPERSINGULARES 39

2. Calculamos kiP = (xi, yi) para cada i.

3. Calculamos qikiP =(xq

2i

i , (−1)iyq2i

i

)para cada i

4. Sumamos los puntos qikiP para 0 ≤ i ≤ r.

Observamos que el principal beneficio se encuentra en el tercer paso, dondeen vez de hacer calculos con curvas elıpticas, los hacemos en un cuerpo finitocomo habıamos adelantado. Aunque a priori parece ventajoso por el ahorrocomputacional que implica, criptograficamente hablando no son deseables, puesel esfuerzo para romper el logaritmo discreto se ve tambien mermado.

Capıtulo 5

Criptografıa

5.1. Introducion a la criptografıa

Las transacciones que se realizan a traves de la red pueden ser interceptadas,por lo que la seguridad de esta informacion debe garantizarse. Este desafıo yel gran estudio sobre el tema ha generalizado la criptografıa, dando lugar a unconcepto mas amplio del que toma parte, la criptologıa. Esta rama se divide endos vertientes:

1. Criptografıa. Se ocupa del estudio de los algoritmos, protocolos y siste-mas que se utilizan para proteger la informacion y dotar de seguridad alas comunicaciones y a las entidades partıcipes.

2. Criptoanalisis. Se encarga de conseguir captar el significado de mensa-jes construidos mediante criptografıa sin tener autorizacion para ello. Suobjetivo es buscar un punto debil de las tecnicas criptograficas para ex-plotarlo reduciendo o incluso eliminando la seguridad, que teoricamente,aportaba esa tecnica criptografica.

5.1.1. Criptografıa

La criptografıa fue inicialmente una rama de las matematicas aunque actual-mente tiene gran peso en la informatica. La criptografıa, entre otros objetivos,hace uso de metodos y tecnicas para cifrar un mensaje o archivo por medio deun algoritmo, usando una o mas claves. Su objetivo es pues disenar, implemen-tar e implantar sistemas dotandolos de alguna de seguridad. Por tanto, algunasde las propiedades de las que se ocupa la criptografıa son:

1. Confidencialidad. Garantiza que la informacion sea accesible unicamen-te por el personal autorizado. Para conseguirlo utiliza codigos y tecnicasde cifrado.

41

42 CAPITULO 5. CRIPTOGRAFIA

2. Integridad. Vela por la plenitud de la informacion. Para conseguirlo pue-de usar funciones hash criptograficas, protocolos de compromiso de bit oprotocolos de notarizacion electronica.

3. No repudio. Permite vincular un documento o transaccion a una personao sistema de gestion criptografico automatizado. Para conseguirlo se puedeusar por ejemplo firmas digitales.

4. Autenticacion. Proporciona mecanismos que permiten verificar la identi-dad del comunicador. Para conseguirlo puede usar por ejemplo los codigosde autenticacion (MAC por sus siglas en ingles).

5. Soluciones a problemas de la falta de simultaneidad en la tele-firma digital de contratos. Para conseguirlo puede usar por ejemploprotocolos de transferencia inconsciente.

Diremos que un sistema criptografico es seguro respecto a una tarea si unadversario con capacidades especiales no puede romper esa seguridad, es decir,el atacante no puede realizar esa tarea especıfica.

Cabe destacar que la codificacion se entenderıa por una transformacion de unmensaje a traves de las reglas o normas de un codigo o lenguaje predeterminado,por lo que distarıa de la idea de cifrado si el codigo o lenguaje es conocido.

5.1.2. Funciones hash

Una de las principales herramientas para garantizar la integridad del men-saje son las funciones hash. Mas adelante veremos que, habitualmente, en losalgoritmos de firma se suele firmar el valor hash del mensaje a enviar. De estaforma el receptor, una vez que verifique la firma y calcule el hash del mensaje,puede comparar el valor calculado con el recibido y ver si el mensaje ha sufridomodificaciones.

Una funcion hash o funcion resumen es una funcion h : Fm → Fn con n,m ∈N y m > n que toma un mensaje de longitud arbitraria como entrada y produceuna salida de longitud fija, que llamamos valor hash o, simplemente, hash. Unhash es un dato que se calcula a partir de otro dato mas voluminoso.

Debido a que el tamano del hash de un dato es menor que el del valor deentrada puede darse el caso de que existan colisiones, es decir, que dos datosdiferentes puedan dar lugar al mismo resumen luego la funcion hash no es in-yectiva.

Una buena funcion hash debe tener las dos propiedades siguientes:

1. Debe ser improbable que aparezcan colisiones (en los casos de aplicacionnecesariamente existiran colisiones, pero deben ser poco frecuentes).

2. Una variacion pequena en el argumento de entrada debe producir valoreshash muy diferentes (es decir, funcion mal condicionada).

5.1. INTRODUCION A LA CRIPTOGRAFIA 43

Ademas a las funciones hash se les puede anadir una propiedad mas, exi-giendo que sean criptograficas. Con ello se impone que a partir del dato hashsea difıcil encontrar la preimagen, es decir, la funcion hash no debe tener unainversa facil de calcular.

5.1.3. Cifrado

El cifrado es un metodo que permite a traves de una clave de cifrado au-mentar la seguridad de un mensaje o archivo de manera que sea difıcil leerlo sila persona no conoce la clave de descifrado.

Segun como sean las claves de cifrado y de descifrado, podemos hablar de:

1. Cifrado simetrico. Aquel cuya clave de cifrado y de descifrado se dedu-cen facilmente una a partir de la otra, incluso pueden ser la misma.

2. Cifrado asimetrico. Tambien llamados de clave publica. Son aquellosen los que existe una clave publica, que puede ser conocida por todos, yuna clave privada, que no debe poder obtenerse facilmente a partir de lapublica.

Algunos de los metodos de cifrado simetrico mas populares son DES (DataEncryption Standard) y AES (Advanced Encryption Standard), mientras queen el cifrado asimetrico encontramos metodos como Diffie-Hellman, ElGamal yRSA (nombrada ası por sus creadores:Rivest, Shamir y Adleman).

5.1.4. Acuerdo de claves

El cifrado simetrico tiene grandes ventajas frente el asimetrico ya que esmucho mas eficiente pero puede generar muchos problemas, sobretodo a la horade acordar que clave emplear al necesitar un medio seguro para compartirla.En la actualidad, para que dos entidades acuerden su clave pueden realizaruna comunicacion mediante cifrado asimetrico para pasar la clave. Una vez esconocida por ambas partes, ya se pueden emplear cifrados simetricos, con lasventajas que conlleva. Otra alternativa para establecer una clave compartidaserıa utilizar un protocolo de intercambio de llaves.

Un protocolo de intercambio de claves es un protocolo criptografico en el quese establece una secuencia de pasos, entre dos o mas participantes, a traves de lacual los participantes se ponen de acuerdo en el valor de una informacion secretacompartida. A esta informacion secreta compartida se le suele llamar clave,debido a que se suele usar para generar la clave de algun algoritmo criptografico.

Un ejemplo de este tipo de protocolos es el protocolo criptografico Diffie-Hellman, debido a Whitfield Diffie y Martin Hellman, que utiliza una canalinseguro de manera anonima. Se emplea generalmente como medio para acor-dar claves simetricas que seran empleadas para el cifrado de una sesion. Aun

44 CAPITULO 5. CRIPTOGRAFIA

siendo un protocolo no autenticado, provee las bases para varios protocolos au-tenticados. Su seguridad radica en la extrema dificultad de calcular logaritmosdiscretos en un grupo finito.

5.2. Infraestructura de clave publica, PKI

Para afrontar el problema de garantizar todas las propiedades de la cripto-grafıa surge la infraestructura de clave publica gracias a la cual conseguiremosgarantizar con seguridad las diferentes operaciones criptograficas.

Definicion 5.1 (Infraestructura de clave publica). Una infraestructura de clavepublica o PKI es una combinacion de hardware y software, polıticas y procedi-mientos de seguridad que permiten la ejecucion con garantıas de operacionescriptograficas como el cifrado, la firma digital o el no repudio de transaccioneselectronicas.

La tecnologıa de una PKI se hace necesaria ya que permite a los usuariosautenticarse frente a otros usuarios y usar la informacion de los certificadosde identidad para cifrar y descifrar mensajes, firmar digitalmente informacion,garantizar el no repudio de un envıo, etc. Para ello necesita de diferentes com-ponentes:

• Autoridad de certificacion (CA): es la encargada de la emision y revocacionde certificados.

• Autoridad de registro (RA): valida la identidad de los titulares de loscertificados.

• Autoridad de validacion (VA): se ocupa de la comprobacion de la validezde los certificados.

• Repositorios, los hay de varios tipos a su vez:

− De certificados digitales almacenamiento y recuperacion de certifica-dos.

− De sellos de tiempo almacenamiento y recuperacion de sellos de tiem-po.

− De CRL almacenamiento y consulta de listas de revocacion.

• Autoridad de sellado de tiempo (TSA) emision de sellos de tiempo dedocumentos.

Las operaciones criptograficas de clave publica son procesos en los que seutilizan unos algoritmos de cifrado conocidos y accesibles para todos. Por es-te motivo, la seguridad que puede aportar la tecnologıa PKI esta fuertementeligada a la privacidad de la llamada clave privada, condicionada por los proce-dimientos, operaciones y polıticas de seguridad aplicadas.

Es de vital importancia las polıticas de seguridad en esta tecnologıa, puestoque ni los dispositivos mas seguros ni los algoritmos de cifrado mas fuertes sirvende nada si, por ejemplo, una copia de clave privada se hace publica.

5.2. INFRAESTRUCTURA DE CLAVE PUBLICA, PKI 45

Figura 5.1: Componentes y esquema de funcionamiento de una PKI.

5.2.1. Certificado digital

Para paliar los problemas de seguridad se intenta conseguir que las comuni-caciones cumplan todas las propiedades criptograficas, por ello, para garantizarla autenticidad, surgen los certificados digitales.

Definicion 5.2 (Certificado digital). Certificacion electronica que vincula auna persona fısica, organismo o empresa con unos datos de verificacion de fir-ma y que confirma su identidad. Es necesaria la colaboracion de un tercero deconfianza que emita el certificado. Esta entidad de confianza es la autoridad decertificacion o CA, que puede ser un organismo publico o empresa reconocidaen Internet.

Cada CA presenta su par de claves publica y privada, conservando la claveprivada guardada de forma segura. Las claves publicas de los usuarios, quesoliciten un certificado a dicha entidad, son junto con su identidad son firmadaspor la clave privada de la CA, dando lugar a los certificados digitales. Hay variostipos de certificados de CA:

• Cruzados: en el que el emisor y el sujeto son CA diferentes.

• Autoemitidos: donde el emisor y el sujeto son la misma CA.

46 CAPITULO 5. CRIPTOGRAFIA

• Autofirmados o certificados raız: son autoemitidos y la firma es verificadamediante la clave publica contenida en el propio certificado.

El Gobierno de Espana como entidad de confianza raız se apoya en la FNMT-RCM1, cuyo certificado, naturalmente, es autofirmado.

Cuando la clave privada de un certificado se usa para firmar otro certificadode la misma u otra CA se produce una cadena de confianza. El principio de lacadena es el certificado raız y la confianza de un certificado de la cadena se basaen la confianza de todos los certificados superiores.

En la seguridad siempre debe partirse de un punto de confianza, de lo con-trario entrarıamos en un cırculo vicioso sin fin.

5.2.2. Firma digital

Una firma digital da al destinatario seguridad en que el mensaje fue creadopor el remitente y que no fue alterado durante la transmision. Por ello tienegran importancia en la seguridad de las comunicaciones.

Definicion 5.3 (Firma digital). La firma digital es una aplicacion de la crip-tografıa de clave publica que garantiza la integridad, la autentificacion y el norepudio.

Figura 5.2: Diagrama de generacion y comprobacion de la firma digital.

1Fabrica Nacional de Moneda y Timbre - Real Casa de la Moneda.

5.3. CRIPTOGRAFIA EN CURVAS ELIPTICAS 47

5.3. Criptografıa en curvas elıpticas

Uno podrıa preguntarse por que usar curvas elıpticas en criptografıa. Larazon es que las curvas elıpticas proveen de una seguridad equivalente a lossistemas criptograficos clasicos, pero utilizando un menor numero de bits. Delo anterior se deduce que las curvas elıpticas son optimas para dispositivos quepresenten un tamano de almacenamiento pequeno o con una menor potencia decomputo.

A lo largo del apartado dispondremos de tres personajes: Alicia, Roberto yEva. Alicia sera la encargada enviar a Roberto el correspondiente mensaje, paraello Alicia debera cifrar el texto claro con el fin de que Eva, que es una fisgona,no consiga leer el mensaje a partir del texto cifrado.

Obviamente Alicia y Roberto necesitan establecer una clave simetrica y paraello utilizaran criptografıa de clave publica. Unos de los sistemas mas famosos declave publica son el sistema RSA, basado en la dificultad de factorizar enterosen primos y el sistema ElGamal, que se apoya en el problema del logaritmodiscreto.

5.3.1. Intercambio de clave Diffie-Hellman

Consideramos que Alicia y Roberto no han tenido contacto con anterioridady los unicos canales de comunicacion de los que disponen son publicos. Unamanera de establecer la clave simetrica es con el metodo de Diffie-Hellman quese describe a continuacion.

1. Alicia y Roberto acuerdan publicamente la curva elıptica E sobre el cuerpofinito Fq donde trabajaran. Ademas ellos establecen un punto P ∈ E(Fq)de manera que el subgrupo generado por P sea de un orden elevado.

2. Alicia escoge un numero secreto aleatorio a y calcula Pa = aP , y es Pa loque envıa a Roberto.

3. Del mismo modo Roberto tambien escoge un numero aleatorio b y hallaPb = bP , mandando Pb a Alicia.

4. Alicia calcula aPb = abP y Roberto bPa = abP .

5. Alicia y Roberto ademas habran acordado publicamente que bits les in-teresa extraer de abP para obtener la clave.

Hoy en dıa no se conoce ningun algoritmo eficiente que permita encontrarabP a partir de P , aP y bP sin conocer a o b. De este modo, si Eva fuesecapaz de hallar abP entonces estarıa resolviendo un problema para el cual lacomunidad matematica no ha encontrado todavıa solucion eficiente.

48 CAPITULO 5. CRIPTOGRAFIA

5.3.2. Cifrado de clave publica ElGamal

De manera analoga al procedimiento anterior, Alicia y Roberto establecenuna curva elıptica E sobre un cuerpo finito Fq de forma que sea practicamenteimposible calcular el logaritmo discreto con los medios actuales. En este casoRoberto tiene como llave publica los puntos P y B = sP donde P es un puntode orden elevado, siendo s la llave privada presentara s.

Alicia conoce la informacion publica de Roberto ya que la puede obtener desu certificado digital por ejemplo. Para enviar Alicia un dato, usualmente unacadena correspondiente a una clave simetrica de a lo sumo unos cientos de bits,a Roberto debera realizar los siguientes pasos:

1. Descargarse la clave publica de Roberto.

2. Expresar su mensaje como un punto M ∈ E(Fq).

3. Elegir un entero k aleatorio y secreto con el que calcula M1 = kP .

4. Calcular M2 =M + kB.

5. Enviar a Roberto M1 y M2.

Roberto, tras recibir la informacion, procedera a calcular M apoyandose en que

M =M2 − sM1 = (M + kB)− s(kP ) =M.

De nuevo Eva, aun conociendoM1 yM2, le sera imposible calcular s a partirde B y P por lo que el mensaje estara a salvo.

5.3.3. Firma digital ElGamal

A pesar de que los mensajes estan cifrados en este caso Eva se podrıa ha-cer pasar por Alicia y enviar otro mensaje, es decir, con el metodo anteriorno podemos asegurar la identidad del emisor. Ademas el mensaje por internetpodrıa llegar danado debido, por ejemplo, a la distorsion de las senales, o inclusoAlicia podrıa negar que ella haya enviado el mensaje. Para paliar todos estosproblemas esta la firma digital y, en particular, el proceso de firma ElGamal.

Supongamos que de manera parecida a como realizamos la firma manuscrita,firmasemos un documento electronico anadiendo al documento simplemente lafirma de Alicia digitalizada. En este caso Eva podrıa copiar la firma de Alicia yanadirla a cualquier documento, con lo que no cumplirıamos los objetivos de lafirma digital. Por ello la firma digital requiere de unos pasos que hay que seguirminuciosamente.

Buscamos un metodo tal que sea sencillo verificar que una firma es valida,pero que sea practicamente imposible que otra persona se haga pasar por Alicia.Para ello Alicia debera anadir algun dato calculado a partir del mensaje y de suclave privada, de ese modo, se espera que nadie salvo Alicia, que dispone de laclave, sea capaz de calcular ese dato. Ademas usando la clave publica de Alicia

5.3. CRIPTOGRAFIA EN CURVAS ELIPTICAS 49

se deberıa poder comprobar que ese dato realmente se ha calculado usando laclave pridada de Alicia, es decir verificar la firma. Una solucion a este problemareside en la dificultad de resolver el logaritmo discreto.

Alicia primero elegira una curva elıptica E sobre un cuerpo finito Fq, escogidode manera que sea dificil calcular el logaritmo discreto. Tambien elegira lospuntos A y B = aA pertenecientes a la curva de modo que el orden de A, quedenotaremos por q, sea un primo suficientemente grande. Notar que, en estecaso, su clave privada sera a. Ademas, debera escoger una buena funcion hashque denotaremos por f . Recapitulando, la infomacion publica sera E, Fq, f , Ay B.

Para firmar un documento Alicia debe realizar los siguientes pasos:

1. Representar el resumen del documento como un entero m.

2. Elegir un numero aleatorio k tal que mcd(k, q) = 1 y calcular R = kA.

3. Calcular t ≡ k−1(m− af(R)) (mod q)

El mensage firmado es (m,R, t). Cabe observar que Alicia no trata de es-conder el mensaje ya que es parte de la firma, si lo quisiese ocultar puede optarpor encriptarlo.

Para que Roberto verifique la firma tambien debe realizar una serie de pasosque se detallan a continuacion.

1. Descargarse toda la informacion publica de Alicia.

2. Calcular V1 = f(R)B + tR y V2 = mA.

3. Si V1 = V2, se puede asegurar que la firma es correcta.

Es facil ver que si todo va bien V1 = V2 ya que

V1 = f(R)B + tR = f(R)aA+ (k−1(m− af(R)))kA

= f(R)aA+mA− f(R)aA = mA = V2.

5.3.4. Algoritmo de firma digital

El algoritmo de firma digital estandar esta basado en DSA (Digital SignatureAlgorithm), aunque existe una version mas reciente que utiliza curvas elıpticases ECDSA. Este algoritmo es una pequena variacion de ElGamal con algunasmodificaciones.

De nuevo Alicia quiere firmar un documentom. Alicia elige una cuva elıpticaE sobre un cuerpo finito Fq de manera que #E(Fq) = fr, donde r es un primogrande y f un entero pequeno (generalmente toma el valor 1, 2 o 4). Tambienescoge un punto G ∈ E(Fq) de orden r. Por ultimo, Alicia elige un enteroaleatorio y secreto a, de modo que Q = aG. En resumen, la informacion publicade Alicia es Fq, E, r, G y Q.

Para firmar el mensaje Alicia debe realizar los siguientes pasos:

50 CAPITULO 5. CRIPTOGRAFIA

1. Elegir un entero aleatorio k con 1 ≤ k < r y calcular R = kG = (x, y).

2. Calcular s ≡ k−1(m+ ax) (mod r).

3. La firma del documento viene dada por (m,R, s).

Para verificar la firma, Roberto tiene que realizar los siguientes pasos:

1. Calcular u1 = s−1m (mod r) y u2 = s−1x (mod r).

2. Calcular V = u1G+ u2Q.

3. La firma sera valida si V = R, pues:

V = u1G+ u2Q = s−1mG+ s−1xQ = s−1(mG+ xaG) = kG = R.

Para una mejor comprension del apartado realizaremos un pequeno ejemplode parte de los contenidos. Para ello nos ayudaremos de la herramienta en lıneade comandosOpenSSL con la que realizaremos un certificado que nos posibilitarafirmar y verificar la firma.

Comenzamos creandonos un par de claves con la curva predefinida P-192.

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-192 -pkeyopt

ec_param_enc:named_curve -out eckey.pem↪→

A continuacion mostramos una captura tanto de la clave privada como de lapublica.

Figura 5.3: Clave privada y publica de la curva P-192.

Con ayuda de la clave nos creamos el certificado con el siguiente comando:

openssl req -x509 -new -key eckey.pem -out certTFG.pem

Ademas, nos creamos un mensaje con un cierto texto y lo firmamos volcandola firma en otro fichero.

openssl pkeyutl -in Claro.txt -out Cifrado.txt -sign -inkey eckey.pem

Asimismo verificamos que la firma es correcta.

openssl pkeyutl -verify -in Claro.txt -sigfile Cifrado.txt -pubin -certin -inkey

certTFG.pem↪→

5.3. CRIPTOGRAFIA EN CURVAS ELIPTICAS 51

Figura 5.4: Informacion del certificado.

Capıtulo 6

Bitcoins

En este ultimo capıtulo del trabajo hablaremos de los Bitcoins como la repre-sentacion en la vida cotidiana de los conocimientos adquiridos. Antes de nadacabe dar una primera definicion sobre que son los Bitcoins.

Definicion 6.1 (Bitcoin). Bitcoin es una coleccion de conceptos y tecnologıasque forman un red que permite un nuevo sistema de pago con una monedacompletamente digital.

El sistema de dinero electronico Bitcoin nacio con la idea de descentralizarlos pagos entre usuarios, consiguiendo ası eliminar la necesidad de la presenciade instituciones financieras en las transacciones. Hablaremos ahora de todo elfuncionamiento del sistema de dinero Bitcoin y de la utilidad que adquieren lascurvas elıpticas en el.

6.1. Introduccion

Bitcoin es una moneda electronica junto con su protocolo y su software. Launion de todos esos componentes hace que los usuarios pueden tranferir Bitcoinssobre la red con lo que se permite comprar, vender o enviar dinero a personasu organizaciones.

Aparte, Bitcoin es una red distribuida (tecnologıa peer-to-peer), es decir,cada equipo puede actuar como un servidor para los demas, lo que permiteel acceso compartido a archivos y perifericos sin la necesidad de un servidorcentralizado. Esto hace que sean los propios usuarios del sistema los que regulenla emision de la moneda, acepten y denienguen transacciones.

6.1.1. Historia de Bitcoin

Curiosamente la identidad del creador o creadores no ha sido revelada, sinembargo, sabemos que la persona o grupo de personas que dieron origen a

53

54 CAPITULO 6. BITCOINS

esta divisa usaron el pseudonimo de ��Satoshi Nakamoto��, para preservar elanonimato y protegerse de posibles acciones contra ellos y Bitcoin.

El origen de esta moneda se remonta al 1 de noviembre de 2008 cuando seanuncio que se estaba desarrollando.

6.2. Conceptos generales

Para comenzar con la explicacion del sistema Bitcoin primero se requieretener una idea basica de los diferentes conceptos en los que el sistema se basa.Mas adelante ampliaremos las nociones aquı expuestas.

Direcciones Bitcoin

La direccion virtual de un usuario es donde se almacenan bitcoins y es usadapara realizar o recibir pagos. Un mismo usuario puede tener tantas direccionesBitcoin como necesite y se identifican con una clave publica.

No hay que olvidar que, al tratarse de una moneda electronica basada encriptografıa, cada usuario contara con una clave privada para firmar las transac-ciones y una clave publica para identificar su direccion y validar las firmas.

Participantes

En cuanto a los participantes que intervienen en la red, se pueden distinguirdos tipos de actores:

• Usuarios normales, los cuales compran y pagan bienes y servicios produ-ciendo las transacciones del sistema.

• Mineros, usuarios especializados que dedican potencia computacional paravalidar nuevas transacciones. Seran los que se encargen de crear el bloquede transacciones. Como los calculos que tienen son muy costosos se venrecompensados por ellos.

Monedero

Espacio virtual donde se almacenan y gestionan las direcciones Bitcoin deun usuario y los pagos que se realizan con ellas.

Transaccion

Es la informacion que confirma que un propietatio de bitcoins ha autorizadola transferencia de parte de ellos a otra dirreccion. Vamos a explicar como soncon un ejemplo. Supongamos que Alicia quiere enviar dinero a Bob, entoncesla transaccion ira firmada por la clave privada de Alicia. De esta forma la redBitcoin sabra a ciencia cierta que es Alicia la que envıa el dinero a Roberto.

6.3. SISTEMA BITCOIN Y PROTOCOLOS 55

Bloques

Conjunto de transacciones pendientes de confirmar sobre las cual se realizael denominado proceso de minerıa.

Cadena de bloques

Registro publico compuesto por bloques confirmados validados en orden cro-nologico.

Minerıa

Proceso que consiste en la realizacion de calculos matematicos para confirmartransacciones en la red Bitcoin. A traves de la minerıa se pueden crear nuevosbitcoins al mismo tiempo que se confirman transacciones.

6.3. Sistema Bitcoin y protocolos

Como sabemos Bitcoin es un sistema con gran complejidad que utiliza pa-ra su seguridad primitivas criptograficas. Para garantizar la consistencia delsistema se utilizan firmas digitales, hashes criptograficos, numeros aleatorios ynonces. Estos ultimos son numeros de un solo uso (number used once).

Uno de los pilares fundamentales de la criptografıa es la generacion de nume-ros aleatorios, tal es ası que los hackers se han centrado en buscar muchos ata-ques enfocados en averiguar como se generan los numeros aleatorios.

6.3.1. Direcciones y monederos

Una direccion Bitcoin se compone de un par de claves publica y privadaque utilizan ECDSA (Elliptic Curves Digital Signature Algorithm), es decir, seapoyan en el sistema de firma digital basada en curvas elıpticas.

La direccion se identifica con el hash de la clave publica, al que se anade unasuma de verificacion para detectar fallos accidentales protegiendo su integridad.Al estar identificada por la clave publica todas las operaciones que se realicencon esa direccion deben estar apoyadas por la utilizacion de la clave privadaasociada, permitiendo ası el proceso de firma-verificacion.

Por lo tanto los monederos son una agrupacion de pares de claves publicasy privadas.

6.3.2. Transacciones

Las transacciones son registros firmados digitalmente en los cuales se realizauna transferencia de bitcoins. En terminos generales, cada transaccion contieneuna o mas entradas, las cuales representan adeudos de una cuenta. Y por otraparte en la transaccion hay una o mas salidas, las cuales representan credito que

56 CAPITULO 6. BITCOINS

se anade a una cuenta. Las entradas y salidas no tienen porque sumar lo mismopero, sı que debe cumplirse que las salidas sumen un numero menor o igualque las entradas. Esa diferencia entre ellas representara la tasa de transaccion,que es un pequeno pago que recibira el minero por anadir la transaccion en lacadena de bloques. Esta recompensa es una manera de motivar a los mineros.

6.3.3. Cadena de bloques

La cadena de bloques de la red Bitcoin es una lista creada de forma colec-tiva con todas las transacciones que han sido confirmadas y validadas por lapropia red.

Cuando un nodo de la red consigue crear un nuevo bloque, lo retransmite alresto de nodos. El resto de bloques verifican que el bloque es correcto y solo enese caso lo anaden a su cadena y lo difunden.

La recepcion de un pago es casi instantanea con Bitcoin. Sin embargo hayun retraso de 10 minutos de media antes de que la red empiece a confirmar esatransaccion y la incluya en un bloque. Una confirmacion significa que hay unconsenso en la red en que los bitcoins recibidos no han sido enviados a alguienmas y son ahora de tu propiedad. Una vez que tu transaccion ha sido incluidaen un bloque, esta se ira quedando cada vez mas alejada de la cima de la pilaa medida que nuevas confirmaciones se van anadiendo. Esto consolidara eseconsenso sobre su validez y diminuira el riesgo de que se revoque.

6.4. Minerıa

Los nuevos bitcoins son generados por un proceso competitivo y descen-tralizado llamado ��minerıa��. Este proceso se basa en que los individuos sonpremiados por la red por sus servicios.

Esta recompensa puede recibirse por dos medios. Por un lado, Bitcoin tieneestablecido un numero limite de 21 millones de bitcoins y, hasta que se lleguea ese lımite, la generacion de cada nuevo bloque es recompensada con una can-tidad predefinida de bitcoins nuevos. Y por el otro lado, estarıan las tasas detransaccion.

Hay que tener en cuenta que, cuanta mas gente empiece a minar, la difi-cultad de encontrar bloques validos se incrementa automaticamente por la redpara asegurar que el tiempo promedio de encontrar un bloque es siempre de 10minutos. Como resultado, minar es una tarea muy competitiva donde ningunminero puede controlar por sı solo lo que es incluido en la cadena de bloques.

6.5. Conclusion sobre el sistema Bitcoin

Para terminar con este capıtulo conviene exponer un pequeno listado sobrelos pros y contras de la utilizacion del sistema Bitcoin, ademas de hacer unpequeno resumen a modo de conclusion.

6.5. CONCLUSION SOBRE EL SISTEMA BITCOIN 57

Dentro de las fortalezas podemos destacar el uso de incentivos, la utilizacionde criptografıa, la gran escalabilidad dependiente del numero de nodos de la redBitcoin y su transparencia. Como debilidades estan las posibles vulnerabilidadesque encierre al ser un sistema nuevo, el hecho que este en el punto de mira dehackers, el consumo de energıa y el anonimato bajo el que se pueden protegercriminales.

En resumen, Bitcoin es una moneda digital matematicamente protegida quese mantiene por la red. Las firmas digitales autorizan las transacciones indivi-duales, la propiedad pasa a traves de cadenas de transacciones y el orden enesas transacciones esta protegido por la cadena de bloques.

Al exigir que se resuelvan difıciles problemas matematicos para cada bloque,los posibles atacantes se enfrentan al resto de la red en una carrera computacio-nal que es improbable que ganen.

Bitcoin promete muchas ideas interesantes como el aislamiento frente a ungobierno, el anonimato y comisiones por transacciones muy bajas. Tambien tienemuchos retos, ya que actualmente es muy difıcil cambiar bitcoins a otras divisas,y ha sido mencionado como un refugio para la actividad ilegal y la evasion fiscal,por lo que los gobiernos podrıan tratar de prohibirlo. Tambien hay que decirque la carrera matematica que protege la cadena de bloques utiliza una cantidadsustancial de energıa electrica.

Apendice A

Codigo

A lo largo de la memoria hemos utilizado diferentes programas de ordenadory librerıas. En este apendice hablaremos de cada uno de ellos y explicaremos masconcretamente su funcionamiento. Ademas dispondra del codigo de los diferentesataques que hemos ido mencionando para cada uno de ellos.

A.1. Java

Para la utilizacion de las diferentes clases referidas a la criptografıa en curvaselıpticas en Java hemos tenido que importar la librerıa Bouncy Castle. En ellaencontrados clases como:

• ECCurve. Representara la clase que se corresponde con una curva elıptica.

• ECPoint. Clase con la que nos referimos a un punto de una determinadacurva elıptica.

• ECFieldElement. Sera la clase que determine el elemento de un cuerpo.

Para explicar mas concretamente como funcionan cada una de las clases nosayudaremos del codigo utilizado para la realizacion del metodo ρ de Pollard.

Metodo ρ de Pollard

En la porcion de codigo que se anade a continuacion podemos observar queuna curva viene determinada por un primo p (que determinara el orden delcuerpo Fp sobre el que esta definida la curva elıptica) y los valores A y B de laecuacion de Weierstrass.

Asimismo, la clase nos permitira crear puntos de una curva elıptica, sumarlosentre ellos y multiplicarlos. Por otra parte, tambien se puede acceder a cada unade sus componentes. Gracias a todos los metodos que poseen cada una de lasclases citadas, nos vemos en condiciones de implementar el metodo ρ de Pollard.

59

60 APENDICE A. CODIGO

1 private static ArrayList<ECPoint> puntos;

2 public static void main(String[] args)

3 {

4 ECCurve curvaEliptica = new ECCurve.Fp(new BigInteger("78341"), new

BigInteger("1"), new BigInteger("4"));↪→5 ECPoint P = curvaEliptica.createPoint(new BigInteger("0"), new

BigInteger("2"));↪→6 ECPoint Q = curvaEliptica.createPoint(new BigInteger("20563"), new

BigInteger("70190"));↪→7 puntos=new ArrayList<ECPoint>();

8 int coordP=1, coordQ=9, coordPM0=3, coordQM0=9, coordPM1=2, coordQM1=7,

coordPM2=6, coordQM2=8;↪→9 ECPoint P0=(P.multiply(new BigInteger(String.valueOf(coordP)))).add(

Q.multiply(new BigInteger(String.valueOf(coordQ))));↪→10 ECPoint M0=(P.multiply(new BigInteger(String.valueOf(coordPM0)))).add(

Q.multiply(new BigInteger(String.valueOf(coordQM0))));↪→11 ECPoint M1=(P.multiply(new BigInteger(String.valueOf(coordPM1)))).add(

Q.multiply(new BigInteger(String.valueOf(coordQM1))));↪→12 ECPoint M2=(P.multiply(new BigInteger(String.valueOf(coordPM2)))).add(

Q.multiply(new BigInteger(String.valueOf(coordQM2))));↪→13 int[]

coordPM={coordPM0,coordPM1,coordPM2},coordQM={coordQM0,coordQM1,coordQM2};↪→14 puntos.add(M0);

15 puntos.add(M1);

16 puntos.add(M2);

17 int j=0,i;

18 ArrayList<String> aparF=new ArrayList<String>();

19 ArrayList<Integer> coordPunto=new ArrayList<Integer>();

20

21 coordPunto.add(coordP);

22 coordPunto.add(coordQ);

23 ArrayList<ArrayList> listaCoord=new ArrayList<ArrayList>();

24 do

25 {

26 listaCoord.add(coordPunto);

27 aparF.add("(" + Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) + ", " +

Integer.parseInt( P0.normalize().getAffineYCoord().toString(), 16)

+ ")");

↪→↪→↪→

28 coordP=coordP+coordPM[Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) % 3];↪→29 coordQ=coordQ+coordQM[Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) % 3];↪→30 coordPunto=new ArrayList<Integer>();

31 coordPunto.add(coordP);

32 coordPunto.add(coordQ);

33 P0=funAl(P0);

34 System.out.println(++j + ": " + "("+Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) + ", " +

Integer.parseInt( P0.normalize().getAffineYCoord().toString(), 16)

+ ")");

↪→↪→↪→

35 }

36 while(!aparF.contains("(" +

Integer.parseInt(P0.normalize().getAffineXCoord().toString(), 16) + ",

" + Integer.parseInt( P0.normalize().getAffineYCoord().toString(), 16)

+ ")"));

↪→↪→↪→

A.2. SAGEMATH 61

37 i=aparF.indexOf("(" + Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) + ", " +

Integer.parseInt( P0.normalize().getAffineYCoord().toString(), 16) +

")");

↪→↪→↪→

38 listaCoord.add(coordPunto);

39 System.out.println("Se ha encontrado una coincidencia en los puntos :");

40 System.out.println(i + ": " + listaCoord.get(i).get(0) + "P + " +

listaCoord.get(i).get(1) + "Q" );↪→41 System.out.println(j + ": " + listaCoord.get(j).get(0) + "P + " +

listaCoord.get(j).get(1) + "Q" );↪→42 }

43 private static ECPoint funAl(ECPoint P0)

44 {

45 ECPoint fP0=null;

46 fP0=P0.add(puntos.get(Integer.parseInt(

P0.normalize().getAffineXCoord().toString(), 16) % 3));↪→47 return fP0;

48 }

A.2. SageMath

Las limitaciones de la librerıa Bouncy Castle nos han hecho tener que recurrira SageMath. Es por ello que en el caso del calculo del ındice hemos necesitadoayuda de dicho programa.

Calculo del ındice

1 h = 134418867;

2 p = 179424673;

3 R = Integers(p);

4 g = R(15);

5 tope = 70000;

6 max = 23;

7 orden = [0 for i in range(max)];

8 j = 0;

9 for i in range(max):

10 if (i+1).is_prime():

11 orden[i] = j;

12 j = j + 1;

13 np = j;

14 A=[];

15 temp = 0;

16 resto = R(1);

17 for i in range(1,tope):

18 resto = resto * g;

19 factores = list(factor(Integer(resto)));

20 ad = true; j = 0;

21 while (ad)and (j<len(factores)):

22 if factores[j][0]>max:

23 ad = false;

24 j=j+1;

25 if (ad) and (Integer(resto) != Integer(g)*Integer(temp)):

26 nuevafila = [0 for k in range(np)];

27 for j in range(len(factores)):

28 nuevafila[orden[factores[j][0]-1]] = factores[j][1];

62 APENDICE A. CODIGO

29 nuevafila.append(i);

30 A.append(nuevafila);

31 temp = resto;

32 B = matrix(A).echelon_form();

33 print(’Las ecuaciones que hemos obtenido son ’);

34 show(matrix(A))

35 print(’Al resolver el sistema obtenemos’);

36 show(B)

37 print ’Si observas que el sistema no es determinado entonces aumenta tope y

repite el proceso. Las entradas has de entenderlas modulo ’, p-1 ;↪→38 P = Primes(); primo = P.first();

39 for i in range(np):

40 print’Lg(’,primo,’)=’,B[i,np];

41 primo = P.next(primo);

42 i = 1;

43 cont = true;

44 resto = R(h);

45 while(i < tope) and cont:

46 resto = resto * g;

47 factores = list(factor(Integer(resto)));

48 cont = false; j = 0;

49 while not(cont) and (j<len(factores)):

50 if factores[j][0]>max:

51 cont = true;

52 j=j+1;

53 i = i + 1;

54 if i < tope:

55 sol = -i+1;

56 for j in range(len(factores)):

57 sol = sol + B[orden[factores[j][0]-1],np]*(factores[j][1]);

58 sol = sol%(p-1);

59 print ’Para i =’, i-1,’ se tiene que h*g^i se factoriza como ’, factores;

60 print;

61 print ’El logaritmos discreto de ’,h,’ en base ’,g,’ modulo ’,p,’ es ’, sol;

62 print;

63 else:

64 print ’No se ha podido resolver el problema. Por favor, aumenta el limite

tope’;↪→

Conclusion

A lo largo del trabajo hemos cumplido los objetivos propuestos tanto a nivelpersonal como a nivel academico. Respecto a los objetivos mencionados hemosconseguido demostrar el teorema de Hasse y entender el papel fundamental delas curvas elıpticas en un ambito tan importante como la criptografıa.

Ademas la realizacion del proyecto me ha ensenado mas cosas de las queyo esperaba. En primer lugar me he demostrado a mı misma que soy capaz desacar mis propias conclusiones a partir de un libro matematico. Encuentro quea lo largo de la carrera he conseguido abrir mi mente y ganar gran capacidad deabstracion, con lo que cada vez me es mas sencillo leer y entender las matemati-cas pese a que la mayorıa de textos no esten en castellano. Tambien he notadomejorıa respecto a mi manera de redactar escritos matematicos. En definitivahe crecido un poco mas como matematica y esa es la mejor aportacion de esteproyecto.

63

Bibliografıa

[1] Andreas M. Antonopoulos, Mastering Bitcoin, O’Reilly Media, 2014.

[2] Bouncy Castle, http://www.bouncycastle.org/, Consulta 2015.

[3] David Hook, Beginning Cryptography with Java, Paperback, 2005.

[4] Julio Jesus Rubio Garcıa, Apuntes de Seguridad Informatica, Universi-dad de La Rioja, 2014.

[5] Lauwrence C. Washington, Elliptic Curves, Number Theory and Cry-ptography, Taylor & Francis, 2003.

[6] Llorenc Huguet Rotger, Josep Rifa Coma Y Juan Gabriel Tena

Ayuso, Criptografıa concurvas elıpticas, Universitat Oberta de Catalunya,2009.

[7] Marıa del Pilar Benito Clavijo, Apuntes de Galois, 2014.

[8] OpenSSL, www.openssl.org/docs/apps/openssl.html, Consulta 2015.

65