Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Criptografía en Curvas Elípticas PDF
Criptografía en Curvas Elípticas PDF
Título
Autor/es
Director/es
Facultad
Grado en Matemáticas
Departamento
Curso Académico
2014-2015
Criptografía en curvas elípticas, trabajo fin de grado
de Iciar Sesma Lorea, dirigido por José María Pérez Izquierdo (publicado por la
Universidad de La Rioja), se difunde bajo una Licencia
Creative 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.
© El autor
© Universidad de La Rioja, Servicio de Publicaciones, 2015
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
Facultad de Ciencias, Estudios Agroalimentarios e Informática
Alumno:
Tutores:
i
Abstract
In this project, we are studying elliptic curves and their cryptographic appli-
cations, focusing, specifically, in the calculation of endomorphism degrees and
Hasse’s theorem. Both results will be very important because they will help us
to 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 key
to understand how Bitcoin, digital currency, works.
iii
Prefacio
v
vi PREFACIO
Objetivos
Uno de los objetivos a nivel personal es aplicar parte de los contenidos que
he aprendido en la carrera, en un nivel más abstracto, a la vida cotidiana. Por
ello hablé con mi tutor y decidimos que la relación de objetos matemáticos
bellos, como las curvas elı́pticas, con la seguridad de la información podı́a ser
una buena aplicación para ello.
También como meta está la demostración del teorema de Hasse, uno de
los principales teoremas en el estudio de las curvas elı́pticas, que más tarde
fue generalizado a curvas de género superior y que es una consecuencia de las
conjeturas de Weyl terminadas de probar por P. Deligne en 1974. Por ello en
la parte matemática todos los contenidos girarán en torno a la prueba de dicho
teorema.
Índice general
Resumen I
Abstract III
Prefacio V
1. Teorı́a básica 1
1.1. Plano proyectivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Polinomios homogéneos . . . . . . . . . . . . . . . . . . . 2
1.2. Curvas elı́pticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Estructura de grupo . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Suma de dos puntos . . . . . . . . . . . . . . . . . . . . . 5
1.3.2. Multipicación 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 torsión 15
2.1. Puntos de torsión . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2. Polinomios de división . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3. Emparejamiento de Weil . . . . . . . . . . . . . . . . . . . . . . . 18
vii
viii ÍNDICE GENERAL
5. Criptografı́a 41
5.1. Introdución a la criptografı́a . . . . . . . . . . . . . . . . . . . . . 41
5.1.1. Criptografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.1.2. Funciones hash . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.3. Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.4. Acuerdo de claves . . . . . . . . . . . . . . . . . . . . . . 43
5.2. Infraestructura de clave pública, PKI . . . . . . . . . . . . . . . . 44
5.2.1. Certificado digital . . . . . . . . . . . . . . . . . . . . . . 45
5.2.2. Firma digital . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3. Criptografı́a en curvas elı́pticas . . . . . . . . . . . . . . . . . . . 47
5.3.1. Intercambio de clave Diffie-Hellman . . . . . . . . . . . . 47
5.3.2. Cifrado de clave pública ElGamal . . . . . . . . . . . . . . 48
5.3.3. Firma digital ElGamal . . . . . . . . . . . . . . . . . . . . 48
5.3.4. Algoritmo de firma digital . . . . . . . . . . . . . . . . . . 49
6. Bitcoins 53
6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.1.1. Historia de Bitcoin . . . . . . . . . . . . . . . . . . . . . . 53
6.2. Conceptos generales . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3. Sistema Bitcoin y protocolos . . . . . . . . . . . . . . . . . . . . 55
6.3.1. Direcciones y monederos . . . . . . . . . . . . . . . . . . . 55
6.3.2. Transacciones . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.3. Cadena de bloques . . . . . . . . . . . . . . . . . . . . . . 56
6.4. Minerı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.5. Conclusión sobre el sistema Bitcoin . . . . . . . . . . . . . . . . . 56
A. Código 59
A.1. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
A.2. SageMath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Conclusión 62
Bibliografı́a 64
Capı́tulo 1
Teorı́a básica
i : A2K → P2K
(x, y) −→ (x : y : 1)
1
2 CAPÍTULO 1. TEORÍA BÁSICA
R(x : y : z)
f (x : y : z) = ,
Q(x : y : z)
donde R y Q polinomios homogéneos del mismo grado.
Cualquier polinomio del plano afı́n f (x, y) podemos convertirlo en un poli-
nomio homogéneo y viceversa. Simplemente teniendo en cuenta las siguientes
igualdades:
x y
F (x, y, z) = z n f ,
z z
f (x, y) = F (x, y, 1)
y = mx + b1 , y = mx + b2 ,
1.2. CURVAS ELÍPTICAS 3
y = mx + b1 z, y = mx + b2 z.
(x : mx : 0) = (1 : m : 0)
que reescribiendo será y12 = x3 + a2 x2 + a4 x + a6 con a2 , a4 , a6 ∈ K. Análoga-
a
mente, si la caracterı́stica no es 3, podemos realizar el cambio x1 = x + 32 y
conseguimos
y12 = x31 + Ax1 + B,
con A, B ∈ K.
Con ello podemos deducir que, si existen raı́ces múltiples, el discriminante será
cero, lo que significará que se trata de una curva singular.
y2 x 3 - 4 x - 2
y2 x 3 - 4 x - 1
y2 x 3 - 4 x
y2 x 3 - 4 x + 1
y2 x 3 - 4 x + 2
y2 x 3 - 4 x + 3
y2 x 3 - 4 x + 4
y2 x 3 - 4 x + 5
Lema 1.7 (Curva elı́ptica sobre un cuerpo de caracterı́stica 2). Sea K un cuerpo
cuya caracterı́stica es 2, entonces la ecuación de la curva elı́ptica tiene una de
las siguientes formas:
• Si a1 = 0 entonces y 2 + Ay = x3 + Bx + C donde A = 0 y A, B, C ∈ K.
-R
• Si x1 = x2 e y1 = y2 entonces P + Q = ∞
x3 = m2 − 2x1 3x21 + A
• Si P = Q e y1 = 0 entonces con m = .
y3 = m(x1 − x3 ) − y1 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 operación suma
constituyen un grupo abeliano cuyo elemento identidad es ∞ y por ello satisface
las siguientes propiedades:
1.4. El j-invariante
Al igual que la topologı́a utiliza la caracterı́stica de Euler para determinar
si dos superficies son distintas, en curvas elı́pticas hay un sı́mil que recibe el
nombre de j-invariante. La peculiaridad del j-invariante es que si dos curvas
elı́pticas poseen el mismo j-invariante, entonces son la misma curva y se puede
obtener una a partir de la otra con un cambio de variable. En caso de que los
j-invariantes de dos curvas sean distintos entonces se garantiza que no se trata
de 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
4A3
j(E) = 1728 .
4A3 + 27B 2
Cabe destacar que el denominador no se anulará porque representa el opuesto
del discriminante de la curva elı́ptica y se asume que no es cero y por lo tanto
que no trabajamos con curvas singulares.
Teorema 1.12. Sean E1 , E2 dos curvas elı́pticas dadas respectivamente por
y12 = x31 + A1 x1 + B1 e y22 = x32 + A2 x2 + B2 con j-invariantes j1 y j2 . Si j1 = j2
entonces existe μ = 0 ∈ K tal que
A2 = μ4 A1 , B2 = μ6 B1 .
1.5. Endomorfismos
Para alcanzar el objetivo de probar el teorema de Hasse debemos enten-
der claramente qué son y para qué sirven los endomorfismos. Esta sección nos
ayudará a tomar conciencia sobre dichas aplicaciones.
Antes de introducir la siguiente definición cabe destacar que en este trabajo
denotaremos K como la clausura algebraica de K.
Definición 1.13 (Endomorfismo de una curva elı́ptica). Un endomorfismo so-
bre una curva elı́ptica E es una aplicación α : 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 que
cumple que dados P1 , P2 ∈ E entonces
1. α(P1 + P2 ) = α(P1 ) + α(P2 ).
8 CAPÍTULO 1. TEORÍA BÁSICA
2. α(∞) = ∞.
Cualquier endomorfismo de una curva elı́ptica se puede expresar de manera
más sencilla. Para ello suponemos que tenemos una función racional de la curva
R(x, y) tal que
p1 (x) + p2 (x)y
R(x, y) =
p3 (x) + p4 (x)y
donde p1 (x), p2 (x), p3 (x), y p4 (x) son funciones polinómicas. Racionalizando el
denominador multiplicando por p3 (x) − p4 (x)y obtendrı́amos que
q1 (x) + q2 (x)y
R(x, y) = ,
q3 (x)
1. a = 0, b = 0 y (a, b) = ∞.
3. a ∈ r1 (S).
4. (a, b) ∈ α(E(K)).
Caso 1. Sea α = 0 separable y por tanto r1 (x) = 0 ⇒ p (x)q(x) − p(x)q (x) =
0. Veamos ahora que (a, b) presenta exactamente grado(α) preimágenes. Sea
(x1 , y1 ) ∈ E(K) tal que α((x1 , y1 )) = (a, b) entonces (x1 , y1 ) cumplirá
⎧
⎨ p(x1 ) = a,
q(x1 )
⎩
y1 r2 (x1 ) = b.
es separable si y solo si p s.
Definición 1.20 (Curva singular). Una curva singular es aquella que presenta
al menos un punto singular.
f (x − a, y − b) = f0 (x − a, y − b) + · · · + fm (x − a, y − b),
-1 1 2 3
-1
-2
-3
1.5
1.0
0.5
-0.5
-1.0
-1.5
Ahora bien, tanto en el nodo como en la cúspide, el punto (0, 0) causa pro-
blemas en el grupo. Lo curioso será que, dejando fuera del grupo el punto, el
resto de puntos singulares constuirán un nuevo grupo al que denotaremos por
1.6. CURVAS SINGULARES 13
Ens (K). Dicho grupo cumplirá la estructura de grupo de igual forma. Estudia-
remos qué ocurre en cada caso con un par de teoremas, comenzando por el caso
de la cúspide.
Ens (K) → K
x
(x, y) →
y
∞ → 0
Ens (K) ∼
= {u + αv | u, v ∈ K, u2 − av 2 = 1},
Puntos de torsión
y 2 = (x − e1 )(x − e2 )(x − e3 ),
15
16 CAPÍTULO 2. PUNTOS DE TORSIÓN
E[2] = {∞} ∼
= 0.
Al igual que como hemos hecho con el ejercicio anterior, se podrı́a proseguir
con 3-puntos de torsión y órdenes superiores y se podrı́a observar que se tiene
la conclusión 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 = pr n con p n . Entonces
E[n] ∼
= Z n ⊕ Z n o E[n] ∼
= Z n ⊕ Z n .
A raı́z de estudiar los diferentes isomorfismos que surgen entre los puntos de
torsión, se emplean dos nuevas nociones respectos a las curvas.
2.2. POLINOMIOS DE DIVISIÓN 17
Definición 2.3 (Tipos de curvas elı́pticas de caracterı́stica p). Sea E una curva
elı́ptica de caracterı́stica p:
∼ Zp
• se llama ordinaria si E[p] =
con
ψ0 = 0,
ψ1 = 1,
ψ2 = 2y,
ψ3 = 3x4 + 6Ax2 + 12Bx − A2 ,
ψ4 = 4y(x6 + 5Ax4 + 20Bx3 − 5A2 x2 − 4ABx − 8B 2 − A3 ).
El último corolario de esta sección 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 .
y
en (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 ) = 1
para todo T ∈ E[n], entonces S = ∞ y, análogamente, si en (S, T ) = 1
para 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 ecuación que define a E pertenecen a un
cuerpo finito Fq , entonces el afirmación 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 una
n-raı́z primitiva de la unidad.
Demostración. Suponemos que en (T1 , T2 ) = ζ con ζ d = 1, entonces en (T1 , dT2 ) =
en (T1 , T2 )d = ζ d = 1. Además en (T2 , dT2 ) = en (T2 , T2 )d = 1. Sea S ∈ E[n] en-
tonces S = aT1 + bT2 para ciertos enteros a y b, entonces
Este hecho se cumple para todo S, lo que implica que dT2 = ∞. Ası́ deducimos
que d será múltiplo del orden de T2 . Además T2 es parte de una base con lo
que 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 CAPÍTULO 2. PUNTOS DE TORSIÓN
Sea F un cuerpo finito y sea E una curva elı́ptica definida sobre F, entonces
existe un número finito de puntos (x, y) con x, y ∈ F y, por lo tanto, E(F) es
un grupo finito. En este capı́tulo trabajaremos con las curvas elı́pticas sobre
cuerpos finitos calculando su orden, que es el objetivo principal del trabajo.
Además en este capı́tulo se demostrará el teorema de Hasse.
Comenzamos con un ejemplo sencillo de cálculo de los puntos de una curva
elı́ptica sobre un cuerpo finito.
Ejemplo 2. Sea E la curva elı́ptica dada por y 2 = x3 + x + 4 sobre F5 . Calcula
todos sus puntos.
Para hallar todos sus puntos haremos una lista de los posibles valores que
puede tomar x, después calcularemos x3 + x + 4 (mód 5) y posteriormente rea-
lizaremos su raı́z cuadrada para ver qué valores puede tomar la coordenada y.
x x3 + x + 4 y Puntos
0 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 porque
la propiedad conmutativa se cumple en curvas elı́pticas. Por tanto puede ser
isomorfo a Z3 ⊕ Z3 o a Z9 . Para ver de cuál se trata calcularemos el orden de los
elementos. Si en algún momento encontramos un punto que tenga orden mayor
que tres es natural que se trata de Z9 .
Para comprobar si es o no cı́clico lo que hacemos es ejecutar un programa
que he creado escrito en Java utilizando las librerı́as de Bouncy Castle de las
cuales hablaremos más extensamente en el apéndice.
21
22 CAPÍTULO 3. CURVAS ELÍPTICAS 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);
(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 ) será isomorfo
a Z9 . En conclusión E(F5 ) es un grupo abeliano cı́clico de orden 9 y presenta
como generador a (0, 2).
También nos podrı́amos haber ayudado con SageMath introduciendo las si-
guientes órdenes.
1 F = Zmod(5)
2 E=EllipticCurve(F,[1,4])
3 show(E.points())
4 E.cardinality()
φ q : Fq → Fq ,
x → xq
φq (x, y) =(xq , y q ),
φ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).
Demostración. Para la demostración del lema emplearemos la ecuación general
de una curva elı́ptica, por lo tanto tendremos
y 2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 ,
Este hecho significa que (xq , y q ) cumple E y por tanto es solución, con lo que
hemos probado el primer punto del lema. Para probar segundo hay que recordar
que 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).
Proposición 3.3. Sea E una curva elı́ptica sobre Fq y sea n un entero positivo
mayor que 0, entonces
1. Ker(φnq − 1) = E(Fqn ),
2. φnq − 1 es un endomorfismo separable de manera que
grado(rΦq − s) = r2 q + s2 − rsa,
con a = q + 1 − #E(Fq ).
24 CAPÍTULO 3. CURVAS ELÍPTICAS SOBRE CUERPOS FINITOS
y y = x2 − C y y = x2 y y = x2 + C
x
x
#E(Fqn ) = q n + 1 − (αn + β n )
para todo n ≥ 1.
#E(Fqn ) = q n + 1 − (αn + β n ).
3.2. ÓRDENES DE GRUPOS 27
1 F = Zmod(5)
2 E = EllipticCurve(F,[1,4])
3 E.count_points(n=3)
... ...
√ √
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
1 Sea P ∈ E(Fq ), el orden de P es el menor entero positivo k tal que kP = ∞.
28 CAPÍTULO 3. CURVAS ELÍPTICAS 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 encontrará fuera del intervalo,
luego podemos concluir que m = 1 y #E(Fq ) = |P |.
es decir,
571 ≤ #E(F619 ) ≤ 669
. Y como uno de los puntos presentan orden 300, llegamos a la conclusión (apli-
cando el teorema de Lagrange) de que #E(F619 )=600 ya que el orden del punto
debe dividir al orden del grupo.
Ejemplo 5. Sea E una curva elı́ptica determinada por y 2 = x3 + 5x + 4 y
definida sobre F2017 . ¿Cuál será su orden?.
3.2. ÓRDENES DE GRUPOS 29
El orden de la curva debe ser múltiplo de 517, por tanto, aplicando el teorema
de Hasse que además nos dice que 1929 ≤ #E(F2017 ) ≤ 2107, deducimos que
#E(F103 ) = 2068.
De nuevo, junto con la hipótesis que resulta del teorema de Hasse, en este
caso 1587331 ≤ #E(F1589851 ) ≤ 1592373 y el teorema de Lagrange, concluimos
que #E(F1589851 ) = 1588809.
Capı́tulo 4
31
32 CAPÍTULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO
⎛ ⎞
0 1 1 0 0 0 0 0 0 1
⎜ 5 2 0 2 1 0 0 0 1 5472 ⎟
⎜ ⎟
⎜ 4 0 0 0 0 1 0 0 2 18636 ⎟
⎜ ⎟
⎜ 3 5 0 3 1 0 0 0 1 19490 ⎟
⎜ ⎟
⎜ 6 3 0 0 1 0 2 1 0 20083 ⎟
⎜ ⎟
⎜ 0 0 3 1 1 0 1 0 1 27955 ⎟
⎜ ⎟
⎜ 6 0 0 0 0 3 0 1 1 31151 ⎟
⎜ ⎟
⎜ 2 3 0 1 0 1 0 0 2 32654 ⎟
⎜ ⎟
⎜ 5 1 0 2 0 3 1 0 0 39884 ⎟
⎜ ⎟
⎜ 4 2 0 0 0 1 3 0 0 41980 ⎟
⎜ ⎟
⎜ 1 0 1 0 1 2 0 2 1 45753 ⎟
⎜ ⎟
⎜ 4 2 0 0 0 0 0 3 0 53314 ⎟
⎜ ⎟
⎜ 0 0 0 2 1 2 1 1 0 54485 ⎟
⎜ ⎟
⎜ 2 6 0 0 1 0 0 0 1 59164 ⎟
⎜ ⎟
⎝ 11 0 3 2 1 0 0 0 0 59264 ⎠
2 5 0 1 0 0 0 3 0 67332
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
Por lo que,
Este algoritmo recibe este nombre porque los puntos iP se calculan añadiendo
P a (i−1)P (paso pequeño), mientras que el punto Q−jmP se calcula sumando
−mP a Q − (j − 1)mP (paso gigante).
(0, 2), (51, 12), (28, 33), (32, 30), (25, 13), (56, 30), (18, 48), (57, 49).
(45, 17), (47, 27), (53, 10), (52, 54), (56, 30), (28, 26), (41, 51), (46, 31), (1, 37)
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 }
P4
Pi = P j P5
P2
P10 P6
P1 P9 P7
P8
P0
Se puede observar que la figura 4.1 muestra una apariencia similar a la letra
ρ y por ello recibe dicho nombre.
36 CAPÍTULO 4. EL PROBLEMA DEL LOGARITMO DISCRETO
Mi = ai P + bi Q.
Finalmente, definimos
f (g) = g + Mi si g ∈ Si .
Por último elegimos enteros aleatorios a0 y b0 para calcular P0 = a0 P + b0 Q,
que será el punto de inicio de nuestro camino. Mientras calculamos los sucesivos
puntos Pj debemos almacenar cómo están expresados en términos de sumandos
de P y Q. Cuando encontremos una coincidencia tendremos entonces
Pj 0 = u j 0 P + v j 0 Q = u i 0 P + v i 0 Q = P i 0 ,
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 lo
que
u i − uj 0 q
k≡ 0 (mód ).
v j 0 − v i0 d
P0 = 1P + 9Q,
M0 = 3P + 9Q,
M1 = 2P + 7Q,
M2 = 6P + 8Q.
f : E(F78341 ) → E(F78341 )
(x, y) → f (x, y) = (x, y) + Mi ,
donde i vendrá dada por i ≡ x (mód 3), considerando x como un entero tal que
0 ≤ x < 78341. Además 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).
con lo que no habrá puntos de orden p en E(Fqn ) para todo n ≥ 1. Ademas, como
Fq = ∪n≥1 Fqn , significará que no encontraremos puntos de orden p en E(Fq ).
En el otro caso suponemos que a ≡ 0 (mód p). La recurrencia implica que
sn+1 = asn (mód p) para todo n ≥ 1. Por ello, como s1 = a, tendremos que
sn = an (mód p) para todo n ≥ 1. Ası́,
Además, por el pequeño teorema de Fermat, sabemos que ap−1 ≡ 1 (mód p).
En resumen, tenemos E(Fqp−1 ) cuyo orden es divisible por p, es decir, por el
teorema de Cauchy para grupos finitos, existe un punto de orden p, luego no es
supersingular.
Por último, para acabar de demostrar el lema, tendremos que
φ2q + q = 0.
k = k0 + k1 q + k2 q 2 + · · · + k r q r ,
con 0 ≤ ki < q.
4.4. CURVAS SUPERSINGULARES 39
Criptografı́a
5.1.1. Criptografı́a
La criptografı́a fue inicialmente una rama de las matemáticas aunque actual-
mente tiene gran peso en la informática. La criptografı́a, entre otros objetivos,
hace uso de métodos y técnicas para cifrar un mensaje o archivo por medio de
un algoritmo, usando una o más claves. Su objetivo es pues diseñar, implemen-
tar e implantar sistemas dotándolos de alguna de seguridad. Por tanto, algunas
de las propiedades de las que se ocupa la criptografı́a son:
41
42 CAPÍTULO 5. CRIPTOGRAFÍA
1. Debe ser improbable que aparezcan colisiones (en los casos de aplicación
necesariamente existirán colisiones, pero deben ser poco frecuentes).
Además a las funciones hash se les puede añadir una propiedad más, exi-
giendo que sean criptográficas. Con ello se impone que a partir del dato hash
sea difı́cil encontrar la preimagen, es decir, la función hash no debe tener una
inversa fácil de calcular.
5.1.3. Cifrado
El cifrado es un método que permite a través de una clave de cifrado au-
mentar la seguridad de un mensaje o archivo de manera que sea difı́cil leerlo si
la persona no conoce la clave de descifrado.
Según como sean las claves de cifrado y de descifrado, podemos hablar de:
Algunos de los métodos de cifrado simétrico más populares son DES (Data
Encryption Standard ) y AES (Advanced Encryption Standard ), mientras que
en el cifrado asimétrico encontramos métodos como Diffie-Hellman, ElGamal y
RSA (nombrada ası́ por sus creadores:Rivest, Shamir y Adleman).
siendo un protocolo no autenticado, provee las bases para varios protocolos au-
tenticados. Su seguridad radica en la extrema dificultad de calcular logaritmos
discretos en un grupo finito.
5. Alicia y Roberto además habrán acordado publicamente qué bits les in-
teresa extraer de abP para obtener la clave.
Bitcoins
En este último capı́tulo del trabajo hablaremos de los Bitcoins como la repre-
sentación en la vida cotidiana de los conocimientos adquiridos. Antes de nada
cabe dar una primera definición sobre qué son los Bitcoins.
6.1. Introducción
Bitcoin es una moneda electrónica junto con su protocolo y su software. La
unión de todos esos componentes hace que los usuarios pueden tranferir Bitcoins
sobre la red con lo que se permite comprar, vender o enviar dinero a personas
u organizaciones.
Aparte, Bitcoin es una red distribuida (tecnologı́a peer-to-peer ), es decir,
cada equipo puede actuar como un servidor para los demás, lo que permite
el acceso compartido a archivos y periféricos sin la necesidad de un servidor
centralizado. Esto hace que sean los propios usuarios del sistema los que regulen
la emisión de la moneda, acepten y denienguen transacciones.
53
54 CAPÍTULO 6. BITCOINS
Direcciones Bitcoin
La dirección virtual de un usuario es donde se almacenan bitcoins y es usada
para realizar o recibir pagos. Un mismo usuario puede tener tantas direcciones
Bitcoin como necesite y se identifican con una clave pública.
No hay que olvidar que, al tratarse de una moneda electrónica basada en
criptografı́a, cada usuario contará con una clave privada para firmar las transac-
ciones y una clave pública para identificar su dirección y validar las firmas.
Participantes
En cuanto a los participantes que intervienen en la red, se pueden distinguir
dos tipos de actores:
Monedero
Espacio virtual donde se almacenan y gestionan las direcciones Bitcoin de
un usuario y los pagos que se realizan con ellas.
Transacción
Es la información que confirma que un propietatio de bitcoins ha autorizado
la transferencia de parte de ellos a otra dirrección. Vamos a explicar cómo son
con un ejemplo. Supongamos que Alicia quiere enviar dinero a Bob, entonces
la transacción irá firmada por la clave privada de Alicia. De esta forma la red
Bitcoin sabrá 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 realiza
el denominado proceso de minerı́a.
Cadena de bloques
Registro público compuesto por bloques confirmados validados en orden cro-
nológico.
Minerı́a
Proceso que consiste en la realización de cálculos matemáticos para confirmar
transacciones en la red Bitcoin. A través de la minerı́a se pueden crear nuevos
bitcoins al mismo tiempo que se confirman transacciones.
6.3.2. Transacciones
Las transacciones son registros firmados digitalmente en los cuales se realiza
una transferencia de bitcoins. En términos generales, cada transaccion contiene
una o más entradas, las cuales representan adeudos de una cuenta. Y por otra
parte en la transaccion hay una o más salidas, las cuales representan crédito que
56 CAPÍTULO 6. BITCOINS
se añade a una cuenta. Las entradas y salidas no tienen porqué sumar lo mismo
pero, sı́ que debe cumplirse que las salidas sumen un número menor o igual
que las entradas. Esa diferencia entre ellas representará la tasa de transacción,
que es un pequeño pago que recibirá el minero por añadir la transacción en la
cadena de bloques. Esta recompensa es una manera de motivar a los mineros.
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 son
premiados por la red por sus servicios.
Esta recompensa puede recibirse por dos medios. Por un lado, Bitcoin tiene
establecido un número limite de 21 millones de bitcoins y, hasta que se llegue
a ese lı́mite, la generación de cada nuevo bloque es recompensada con una can-
tidad predefinida de bitcoins nuevos. Y por el otro lado, estarı́an las tasas de
transacción.
Hay que tener en cuenta que, cuanta más gente empiece a minar, la difi-
cultad de encontrar bloques válidos se incrementa automáticamente por la red
para asegurar que el tiempo promedio de encontrar un bloque es siempre de 10
minutos. Como resultado, minar es una tarea muy competitiva donde ningún
minero puede controlar por sı́ solo lo que es incluido en la cadena de bloques.
Código
A.1. Java
Para la utilización de las diferentes clases referidas a la criptografı́a en curvas
elı́pticas en Java hemos tenido que importar la librerı́a Bouncy Castle. En ella
encontrados clases como:
• ECCurve. Representará la clase que se corresponde con una curva elı́ptica.
Para explicar más concretamente cómo funcionan cada una de las clases nos
ayudaremos del código utilizado para la realización del método ρ de Pollard.
Método ρ de Pollard
En la porción de código que se añade a continuación podemos observar que
una curva viene determinada por un primo p (que determinará el orden del
cuerpo Fp sobre el que está definida la curva elı́ptica) y los valores A y B de la
ecuación de Weierstrass.
Asimismo, la clase nos permitirá crear puntos de una curva elı́ptica, sumarlos
entre ellos y multiplicarlos. Por otra parte, también se puede acceder a cada una
de sus componentes. Gracias a todos los métodos que poseen cada una de las
clases citadas, nos vemos en condiciones de implementar el método ρ de Pollard.
59
60 APÉNDICE A. CÓDIGO
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 recurrir
a SageM ath. Es por ello que en el caso del cálculo del ı́ndice hemos necesitado
ayuda de dicho programa.
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’;
Conclusión
A lo largo del trabajo hemos cumplido los objetivos propuestos tanto a nivel
personal como a nivel académico. Respecto a los objetivos mencionados hemos
conseguido demostrar el teorema de Hasse y entender el papel fundamental de
las curvas elı́pticas en un ámbito tan importante como la criptografı́a.
Además la realización del proyecto me ha enseñado más cosas de las que
yo esperaba. En primer lugar me he demostrado a mı́ misma que soy capaz de
sacar mis propias conclusiones a partir de un libro matemático. Encuentro que
a lo largo de la carrera he conseguido abrir mi mente y ganar gran capacidad de
abstración, con lo que cada vez me es más sencillo leer y entender las matemáti-
cas pese a que la mayorı́a de textos no estén en castellano. También he notado
mejorı́a respecto a mi manera de redactar escritos matemáticos. En definitiva
he crecido un poco más como matemática y esa es la mejor aportación de este
proyecto.
63
Bibliografı́a
65