Curvas Elípticas y Criptografía
Curvas Elípticas y Criptografía
i
Índice general
1. Introducción a la criptografı́a 1
1.1. Breve reseña histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Nociones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
5. Curvas Elı́pticas 13
5.1. Definición y propiedades básicas . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2. Curvas elı́pticas en cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . 16
5.2.1. Curvas Elı́pticas sobre Fp . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2.2. Reducción módulo p . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ii
Capı́tulo 0 – ÍNDICE GENERAL Franco Golfieri
9. Conclusiones 29
A. Teorı́a de Cuerpos 30
A.1. Nociones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
C. Geometrı́a proyectiva 34
Bibliografı́a 36
iii
Capı́tulo 1
Introducción a la criptografı́a
La criptografı́a de claves públicas fue concevida en 1976 por Whitfield Diffie y Martin
Hell-man. La primera realización práctica fue en 1977 cuando Ron Rivest, Adi Shamir y
Len Adleman propusieron su conocido método llamado RSA, en el cual la seguridad está
basada en la dificultad de facotirizar un entero en primos.
La criptografı́a en curvas elı́pticas fue descubierta en 1985 por Neal Koblitz y Victor
Miller. El método de criptografı́a en curvas elı́pticas son mecanismos de claves públicas que
proveeen la misma funcionalidad qu el método de RSA.
Los textos planos y cifrados son partidos en unidades de mensaje. Una unidad de mensaje
puede ser un conjunto de 2 caracteres, 3 caracteres, o cualquier otra cantidad de los mismos.
1
Capı́tulo 1 – Introducción a la criptografı́a Franco Golfieri
Una transformación de encriptación es una función que toma unidades de mensaje de texto
plano y nos devuelve unidades de mensje de texto cifrado. Es decir, es una función f que va
desde el conjunto P de todas las posibles unidades de mensaje de texto plano al conjunto C
de todas las posibles unidades de mensaje de texto cifrado. Asumimos que esta función f es
biyectiva. La transformación de descifrado es la función f −1 .
El sistema
f f −1
P−
→ C −−→ P
es llamado un criptosistema.
Ejemplo 1.2.1. Supongamos que estamos usando un alfabeto de N letras a las cuales las
asociamos en algún orden a los números 0, 1, . . . , N − 1. Sea b ∈ Z fijo. Decimos que una
transformación de desplazamiento es una función de encriptación f definida en cada unidad
de mensaje (que en nuestro caso serı́an unidades de 1 letra) como f (P ) ≡ P + b (mod N ).
Julio Caesar usaba este tipo de encriptación de mensaje tomando N = 26 y b = 3. Para
descifrar este mensaje simplemente tomamos la función inversa f −1 (C) ≡ C − b (mod N ).
Luego si queremos por ejemplo encriptar la palabra “CURVA” usando nuestro alfabeto de
28 letras (las 27 de nuestro alfabeto y el espacio), asociandolas a los números 0, 1, . . . , 28 en
su respectivo orden y usando una transformación de desplazamiento con b = 6 nos queda el
mensaje cifrado 9 2 25 3 7 que si lo asociamos con sus letras correspondientes nos queda el
mensaje cifrado “IBXCG”.
Otra forma de asociar nuestro espacio de texto plano a un grupo (Z/nZ), que es el que
se recomienda usar, es agrupando el mensaje en bloques de k letras. Supongamos que que
queremos enviar un mensaje en nuestro alfabeto de 28 caracteres, las 27 letras y el espacio.
Supongamos que queremos enviar el mensaje “NOS VEMOS MAÑANA” y queremos agrupar
los mensajes en bloques de 5. Luego nos quedarı́a “NOStV”, ”“EMOSt”, “MAÑAN” y
“AXXXX”; donde t simboliza el espacio y el caracter X al final que no corresponde a ninguna
letra, es decir que nuestro mensaje termina en la A (para evitar confusión podrı́amos agregar
un caracter m ás que sea el que asociemos a los espacios en blanco (pero a fines prácticos no
va a ser necesario). Ahora transformamos cada letra de cada bloque módulo 28 y luego al
conjunto de 5 números correspondientes a cada bloque lo miro como si estuviese en base 28
y lo transformo a base decimal. El bloque “NOStV” nos queda entonces transformado en:
Notar que el valor entero al cual asociamos cada bloque va a ser siempre menor a 285 .
Por lo que para la transformación de texto plano a un grupo (Z/nZ) sea inyectiva vamos a
necesitar que n ≥ 285 . En general, si deseamos asociar nuestro espacio de textos planos a un
grupo de la forma Z/nZ, y deseamos que el mensaje de nuestro alfabeto de N caracteres se
2
Capı́tulo 1 – Introducción a la criptografı́a Franco Golfieri
Notar además que de esta forma al agrupar los mensajes en bloques de k letras, el grupo
en el cual trabajaremos es de orden N k , por lo que mientrás más grande sea k, mayor orden
tendrá el grupo y más dificil será descfirar los mensajes en los métodos que describiremos en
los próximos capı́tulos.
3
Capı́tulo 2
Aunque los criptosistemas de clave privada son adecuados para ciertas ocasiones, tienen
las siguientes desventajas que los hacen vulnerables en ciertas ocasiones:
4
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
Distribución de la Clave: Como se mencionó, los dos usarios tienen que seleccionar
una clave en secreto antes de poder comunicarse mediante una via insegura. Cualquier
via por la cual se acuerde intercambiar la clave puede no ser siempre tan segura.
No hay una firma posible: Una firma digital es el anlogo digital a una firma a mano.
Esto es, una firma digital permite al receptor del mensaje convencerse a si mismo
y a una tercera persona de que el mensaje fue enviado por quienes esperaban. En
un criptosistema de clave privada, tanto A como B tienen la misma capacidad de
encriptación y desencriptación, por lo que B no puede convencer a un tercero de que
le mensaje recibido de A fue de hecho enviado por A.
Hasta ahora vimos ejemplos en los cuales solo se necesitaba una clave k para poder
calcular fk y fk−1 . Sin embargo, aun conociendo k, no siempre es facil computar fk−1 . Por
eso es que generalmente vamos a necesitar de dos claves. Una clave sera la que llamaremos
clave de cifrado y la denotaremos por kE ; esta clave servira para encriptar el mensaje, es
decir kE pertenece a los parametros que parametrizan la familia de funciones que usamos
para encriptar el mensaje. La otra clave sera la que llamaremos clave de descifrado que
5
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
denotaremos por kD ; esta clave servirá para descifrar el mensaje, es decir kD pertenece a
los parametros que parametrizan la familia de funciones que usamos para desencriptar el
mensaje. Vale decir fk−1
E
= gkD , con gkD la funcion que desencripta el mensaje.
Los sitemas de clave públicas, a diferencia de los de clave privada, son sistemas criptográfi-
cos en los cuales la clave de cifrado KE , los conjuntos C y P y el método para encriptar son
conocidos. Es decir, A hace pública la clave de cifrado KE,A y el método de cifrado para que
los demás puedan enviarle mensajes cifrados con esta información. La clave radica en que la
función que se utiliza para encriptar el mensaje es una función trampa de una via, entonces
aún conociendo KE,A y el método de encriptación fA , es dificil de calcular su inversa fA−1 ya
que para eso se precisa de la clave de decifrado KD , clave que solo va a poseer A. De esta for-
ma se solucionan los problema presentados en los criptosistemas de clave privada. En efecto,
ya no es necesario transmitir de forma privada una clave para poder comunicarse y soluciona
también el problema de autentificación cuando se asume que C = P. Si A desea enviarle a B
un mensaje m firmado, simplemente le envı́a a B el mensaje fB (m) y el valor s = fA−1 (m).
Ahora, cualquiera puede verificar que m = fA (s) usando la clave pública kA , pero solo A pue-
de calcular s. Por lo tanto el valor s sirve como una firma de A para el mensaje m. Si se desea
que la firma sea secreta, es decir que el único que sepa que el mensaje fue enviado por A sea B,
se envı́a el mensaje fB (m) junto con la firma fB (s), dicha firma solo va a poder ser descifra-
da por B, y una vez descifrada B le aplica fA para verificar que el mensaje fue enviado por A.
Presentaremos en los próximos capı́tulos, los criptosistemas de clave pública más conocidos.
Estos son, los basados en la factorización de enteros y los basados en el problema de logaritmo
discreto. Primero los veremos como criptosistemas en los cuales P = Q = G con G grupo
cı́clico y finalmente los veremos como criptosistemas sobre los grupos que generan las curvas
elı́pticas.
6
Capı́tulo 3
Problemas de factorización en
primos
7
Capı́tulo 3 – Problemas de factorización en primos Franco Golfieri
La clave de este método está en que para calcular un inverso multiplicativo de e módulo
φ(n) se debe calcular φ(n) primero. Calcular φ(n) equivale a conocer su factorización, es
decir equivale a encontrar p y q, y como mencionamos en el Apéndice appendix B no existe
un algoritmo de tiempo polinomial capaz de factorizar en primos un entero. Por lo que
calcular la función de descifrado es extramadamente complicada, lo cual convierte a nuestra
función de cifrado en una función trampa de una vı́a.
Seguido de esto elegimos arbitrariamente un entero a tal que 1 < a < n. Luego calcula-
mos (a, n). Si (a, n) > 1 tenemos que es un divisor no trivial de n, y estamos. Si (a, n) = 1
calculamos D = (ak − 1, n). Si 1 < D < n, luego D es un divisorn o trivial de n y estamos.
Si D = 1, volvemos a repetir el proceso manteniendo a pero eligiendo un entero B más
grande. Si D = n mantenemos k pero cambiamos al entero a.
8
Capı́tulo 4
Definición 4.1.1. Sea G un grupo, y sean x, y ∈ G tal que x tiene orden finito. El problema
de logaritmo discreto, es el problema de determinar un entero m ≥ 1 tal que
xm = y
9
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
Notar que este esquema se basa en el intercambio de claves planteado por Diffie-Hellman.
Solo evade el hecho de que A tenga que enviarle algo a B haciendo la clave de A pública.
4.2.1. Babystep-Giantstep
Sea G un grupo y x, y ∈ G tal que el orden de x es n. Supongamos que queremos resolver
el problema de logaritmo discreto y = xm . Luego el algoritmo Babystep-Giantstep consta de
los siguientes pasos.
√
Paso 1: Sea N = d ne. Tomamos la siguiente lista
x, x2 , . . . , xN
A dichos elementos los llamaremos babysteps.
yz, yz 2 , . . . , yz N
A dichos elementos los llamaremos giantsteps.
10
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
Notar que hay varias formas de ver que existe alguna coincidencia entre las listas de los
pasos 1 y 2. Por ejemplo calcular los elementos del paso 1 toma O(N ln N ) pasos mientras
que chequear si algún elemento del paso 2 coincide con alguno de esta lista toma O(logN )
√ √
pasos. Por lo que el algoritmo toma O( n(ln n)2 ) = O( n).
4.2.2. Index-Calculus
Sea G un grupo y x, y ∈ G tal que el orden de x es n. Supongamos que queremos
resolver el problema de logaritmo discreto y = xm El algoritmo Index-Calculus consiste de
los siguientes dos pasos.
11
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
no sea tan grande en el Paso 1) y que al mismo tiempo la propoción de elementos de G que
se factorizan en Γ sea grande (de tal forma que la cantidad de intentos para generar 4.1 y
4.2 no sea grande). De momento tales especificaciones son solo conocidas para algunos grupos.
Para los grupos F∗p , con p primo, podemos elegir Γ como los primeros t primos. Para
generar la relación 4.1, expresamos xs como su entero equivalente módulo p. Y tratamos de
factorizar dicho entero en Γ diviendo por prueba y error. Para un valor apropiado de t, la
complejidad de este este método para este caso es de Lp [2, 1/2], por lo tanto es un método
de tiempo subexponencial (ver B.1), a diferencia que el método Babystep-Giantstep que era
exponencial.
Para los grupos F∗pn , con p primo, presentamos a los elementos de Fpn como polinomios
en Fp [x] de grado a lo sumo n − 1. El conjunto Γ es luego tomado como el conjunto de
polinomios irreducibles de grado a lo sumo una cota preestablecida b. Para generar la relación
4,1, expresamos a xs como un polinomio de a lo sumo grado n − 1, y tratamos de factorizarlo
en Fp [x] como producto de polinomios en Fp . Para el caso p = 2 se sabe que el algoritmo
tiene tiempo subexponencial L2n [c, 1/3] con c constante menor que 2.
12
Capı́tulo 5
Curvas Elı́pticas
El objetivo de este capı́tulo no es profundizar a fondo sobre las curvas elı́pticas sino hablar
de sus propiedades más importantes que luego aplicaremos hacia el estudio del criptoanálisis.
Para una aproximación más general sobre la misma ver [3].
Al momento de decir que C es una curva sobre un cuerpo K nos referimos a que C es una
curva cuya ecuación es de la forma F (X1 , . . . , Xn ) = 0 con F ∈ K[X1 , . . . , Xn ]. Denotaremos
por C(K) al el conjunto de puntos (x1 , . . . , xn ) ∈ K n que satisfacen la ecuación de la curva
y si E|K es una extensión de cuerpos de K (ver Apéndice A) denotaremos por C(E) al
conjunto de puntos (x1 , . . . , xn ) ∈ E n tal que satisfacen la ecuación de la curva.
Definición 5.1.1. Sea K un cuerpo y C una curva sobre K dada por la ecuación F (x1 , . . . , xn ) =
0 con F ∈ K[x1 , . . . , xn ]. Decimos que la curva C es singular si existe un elemento
(x1 , . . . , xn ) ∈ C(K) (donde K es una clausura algebraica de K) en el cual se anulen todas
las derivadas parciales del polinomio F , es decir un punto que satisfaga ∇F (x1 , . . . , xn ) = 0
En caso contrario se dice que la curva es no singular
Con las definiciones previas podemos definir correctamente a las curvas elı́pticas.
y 2 = x3 + ax + b, a, b ∈ K (5.1)
junto con otro punto O que llaremos punto en el infinito.
Si char(K) = 2 una curva elı́ptica será una curva no singular cuya ecuación sea de alguna
de las siguientes dos formas y 2 + cy = x3 + ax + b o y 2 + xy = x3 + ax2 + b junto con el punto
en el infinito O y si charK = 3 una cuya ecuación sea de la forma y 2 = x3 + ax2 + bx + c.
13
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
Definición 5.1.3. Definimos el discriminante de una curva elı́ptica con ecuación de la forma
5.1 como el discriminante del polinomio x3 + ax + b que en este caso resulta ser −(4a3 + 27b2 ).
Notar que pedirle a nuestra curva que sea singular equivale a que las raices del polinomio
x3 + ax + b sean distintas, lo cual equivale a que su discriminante sea distinto de 0, es decir
a que −(4a3 + 27b2 ) 6= 0.
Hasta ahora no hemos hablado mucho del punto en el infinito O. A fines prácticos
podemos pensar a un punto en el infinito como el punto en el cual dos rectas paralelas se
intersecan. De esta forma cualquier dos pares de rectas en el lano afı́n se intersecarán en un
único punto y por cada dirección tendremos un punto en el infinito distinto. El conjunto de
puntos en el infinito se llama recta en el infinito y tomamos a nuestro punto en el infinito
O como el correspondiente a las rectas con pendiente infinita, es decir las rectas verticales.
Luego la recta que une O con cualquier punto (x, y) ∈ K 2 es la recta vertical que pasa por
(x, y). Para un análisis más profundo de esto ver Apéndice C.
De momento vamos a pensar a nuestra curva elı́ptica sobre R. El conjunto E(R) puede lu-
cir de alguna de las siguientes dos formas, dependiendo cuantas raices reales tenga x3 +ax+b.
Figura 5.1: Curva Elı́ptica con una com- Figura 5.2: Curva Elı́ptica con dos com-
ponente real ponentes reales
(Ver Apéndice C para una justificación de por qué tiene sentido definir ası́ dichas sumas).
14
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
Sean ahora P y Q dos puntos en E(R) tal que Q = 6 −P y trazamos la recta que une dichos
puntos y obtenemos un tercer punto de intersección de la recta con E(R). La existencia
de dicho punto se debe a que si y = cx + d es la ecuación de la recta que une P con Q,
reemplazando en la ecuación de la curva elı́ptica tendremos que (cx + d)2 = x3 + ax + b, luego
despejando e igualando a 0 tendremos un polinomio de grado 3 con dos raices reales (Las
primeras coordenadas de P y Q), por lo que su tercera raiz también será real. Denotemos a
dicho punto por P ∗ Q. Luego trazamos la recta que une P ∗ Q con O, es decir trazamos la
recta vertical que pasa por P ∗ Q y obtenemos el segundo punto de intersección de dicha
recta con E(R). A dicho punto lo llamaremos P + Q.
Claramete por como definimos la suma y por como se define al punto del infinito O se
cumple que O es el neutro de E(R) y cada elemento (x, y) ∈ E(R) tiene su opuesto aditivo,
vale decir (x, −y). Para ver la asociatividad hace falta algunos resultados de geometrı́a
proyectiva (Ver [12]). Además claramente dicha suma va a ser conmutativa. Por lo tanto,
con la suma establecida, E(R) resulta un grupo abeliano.
Demos ahora explicitamente las fórmulas para clacular la suma de dos puntos P = (x1 , y1 )
y Q = (x2 , y2 ). Sea P ∗ Q = (x3 , y3 ). Luego, por como describimos a la operación suma,
P + Q = (x3 , −y3 ). Asumamos primero que x1 = 6 x2 . Luego la ecuación de la recta que une
P con Q es
y2 − y1
y = λx + ν, donde λ = y ν = y1 − λx1 = y2 − λx2
x2 − x1
Para obtener el tercer punto de intersección de dicha recta con la curva elı́ptica
y 2 = x3 + ax + b simplemente resolvemos la ecuación y 2 = (λx + ν)2 = x3 + ax + b.
Resolviendo nos queda que x3 = λ2 − x1 − x2 e y3 = λx3 + ν.
Si x1 = x2 e y1 = −y2 tendremos que dicha suma va a ser O por como definimos la suma.
Resta por ver el caso en el cual queremos sumar un punto consigo mismo, es decir el caso en
el que P = Q (podemos obviar el caso en el que y1 = y2 = 0 ya que está incluido en el caso
15
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
anterior). En ese caso tendremos que repetir el procedimiento anterior con la rectaendice
tangente en P . Resolviendo queda que en este caso que
E : F (x, y) = 0
con coeficientes en Fp y preguntarnos por soluciones (x, y) ∈ F2p .
Definición 5.2.1. Denotamos al conjunto de puntos racionales de una curva elı́ptica C
sobre Fp como
16
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
Como observamos en el teorema anterior, la mitad de los elementos de F∗p son residuos
cuadráticos y la otra mida no. Ahora sustituimos los diferentes valores x = 0, 1, . . . , p − 1
en y 2 = f (x). Si los valores de f (x) estuvieran distribuidos aleatoriamente sobre las raices
primitivas y sobre las no raices priitivas uno esperarı́a que haya aproximadamente 1+2· p−12 =
p + 1 soluciones (ya que por cada x tal que f (x) es un residuo cuadrático tenemos dos
posibles valores de y). Esta observación se formaliza en el siguiente teorema
Del Teorema De Hasse podemos deducir que existe un único θp ∈ [0, π] tal que
√
#E(Fp ) = p + 1 − 2 p cos(θp )
Teorema 5.2.5. (Sato-Tate) Sea E una curva elı́ptica sobre Fp sin multiplicación compleja.
Luego, siendo θp el descripto arriba y 0 ≤ α < β ≤ π tenemos que
β
#{p|p es primo , p ≤ n, α ≤ θp ≤ β}
Z
1
lı́m = sen2 (θ)dθ (5.3)
n→∞ #{p|p es primo , p ≤ n} 2π α
Es decir, que los valores #E(Fp ) estarán distribuidos en el intervalo [0, π] mediante la
distribución sen2 . Este resultado será de importancia en el capı́tulo chapter 6.
Sea q un elemento p-ı́ntegro escrito de la forma q = pn u/v. Al ser p-ı́ntegro tenemos que
n ≥ 0. Luego podemos construir un momorfismo de anillos entre los elementos p-ı́ntegros de
Q y Fp de la siguiente forma:
17
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
ß
u/v mod p si n = 0
rp (q) =
0 si n > 0
Está bien definida, pues como (v, p) = 1 entonces v tiene inverso módulo p. Llamamos a
dicha función rp la reducción módulo p de un elemento p-ı́ntegro.
Sea p primo. Luego para todo q ∈ Q existe un entero m tal que kmqkp ≤ 1. En efecto,
supontamos que kqkp = p−k . Si k ≥ 0, entonces q ya serı́a p-ı́ntegro. Si k < 0 me tomo
m = pk+i para cualquier i ∈ N0 y se cumple que mq es p−ı́ntegro. En particular tomando
i = 0 puedo tomar un representante de norma p-ádica 1.
Ep : y 2 = x3 + rp (a)x + rp (b)
Además, se puede definir una reducción de los puntos en E(Q) a los puntos de Ep (Fp ).
Definamos φp : P2 (Q) → P2 (Fp ) como
De esta forma, viendo a las curvas elı́pticas en forma proyectiva, φ induce una aplicación
de E(Q) a Ep (Fp ). Dicha aplicación termina siendo un morfismo de grupos.
Observación 5.2.7. Multiplicando por una constante podemos pensar a nuestra curva
elı́ptica E con coeficientes enteros. Luego Ep es no singular si y solo si (p, ∆E ) = 1 con ∆E
el discriminante de E.
18
Capı́tulo 6
Sea M ∈ N tal que cada bloque de nuestro mensaje en texto plano se puede asociar a un
entero m con 0 ≤ m < M . 1 . Luego para incrustar nuestro mensaje en texto plano en una
curva elı́ptica, basta incrustar Z/M Z sobre la misma.
Supongamos que queremos que la probabilidad de fallar a la hora de asociar m, con
0 ≤ m < M , a una curva elı́ptica dada sea menor que q. Y sea κ tal que 2−κ < q.
Escogemos un primo p tal que p > M κ. Luego es posible escribir todos los enteros l con
1 ≤ l ≤ M κ de forma única como l = mκ + j con 0 ≤ m < M y 1 ≤ j ≤ κ. Como M κ < p,
1
Segun lo visto al final del Capı́tulo chapter 1 basta con tomar M ≥ N k donde N era la cantidad de
letras de nuestro alfabeto y k la longitud de los bloques en los cuales queremos partir al mismo
19
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
Vamos a poder incrustar nuestro entero m en una curva elı́ptica dada Ea,b : y 2 = x3 +ax+b
sobre Fp de la siguiente forma. Para cada j con 1 ≤ j ≤ κ, denotamos a x(j) como
x(j) = mκ + j. Queremos ver si x(j) es la coordenada x de algún punto en la curva elı́ptica
Ea,b (Fp ). Observamos que tales x(j) eran elementos distintos en Fp . Computamos f (x) y
observamos si es un residuo cuadrático módulo p ; vimos en el Teorema 5.2.3 que hay un
50 % de probabilidades de que lo sea. Si es un residuo cuadrático encontramos un y ∈ Fp tal
que y 2 = f (x) y por lo tanto tenemos nuestro punto Pm = (x, y). Si f (x) no es un residuo
cuadrático módulo p, incrementamos el valor de j en 1 y probamos de nuevo. Como tenemos
κ enteros x(j) = mκ + j, la probabilidad de que fallemos en asociarle a m un punto Pm en
la curva es aproximadamente 2−κ .
mκ ≤ x − 1 ≤ mκ + (κ − 1),
entonces
x−1 κ−1
m≤ ≤m+ <m+1
κ κ
lo que significa que m, y por lo tanto nuestro texto plano, puede ser recuperado de Pm
como m = b x−1
κ c.
Describiremos primero los pasos del algoritmo, luego se explicará el porqué de cada uno
y finalmente porqué el algoritmo funciona y que ventajas se obtiene del mismo.
20
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
Paso 3: Sea b = y12 − x31 − ax1 mód n, y E la curva cúbica dada por la ecuación
Paso 5: Escogemos Y
k= pk p
p≤B
p primo
Paso 6: calculamos Ç å
ak bk
kP = ,
d2k d3k
Expliquemos porqué este algoritmo funciona. El paso 1 es simplemente para verificar que
ni 2 ni 3 dividan a n, pues al después querer ver la curva del paso 3 en Fp con p divisor de
n, necesitamos que p =6 2, 3 ya que en este caso las curvas elı́pticas tienen la forma descrita
en el paso 3. En el paso 4 pedimos que (4a3 + 27b3 , n) = 1 pues de esta forma el discrimante
de Ep (Fp ) (con p divisor de n y Ep la reducción de E módulo p) será distinto de 0 (ver
Observación 5.2.7) y por lo tanto la curva será no singular. Luego Ep será una curva elı́ptica
sobre Fp . En el paso 6 es claro kP va a quedar de esa forma por la forma de la ecuación de
la curva elı́ptica.
Supongamos que tenemos la curva E y el entero k que elegimos satisface que #E(Fp )|k.
Luego cada elemento de Ep (Fp ) tiene orden un divisor de k. En particular si tomamos
nuestro punto P = (x1 , y1 ) ∈ E(Q) del paso 3, lo reducimos módulo p y usamos que dicha
reducción es un morfismo, tenemos que
21
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
kP
› = kP
‹= O
‹
Caso 1: (x2 −x1 , n) = 1. En este caso x2 −x1 tiene inverso en Z/nZ, por lo cual podemos
calcular a Q3 módulo n
Caso 2: 1 < (x2 − x1 , n) < n. En este caso no podemos hayar a Q3 pero (x2 − x1 , n) ya
serı́a un divisor propio de n, y estamos.
3x2 + 2ax + b
λ= (mod n)
2y
Luego deberı́amos ver si existe inverso de y módulo n, y realizamos los mismos 3 pasos
mencionados anteriormente.
Notar que si pudimos calcular kP haciendo las cuentas módulo n no llegamos a ninguna
información respecto a algún divisor de n. Justamente vamos a llegar a algún tipo de
información cuando se rompa el algoritmo, es decir cuando no se pueda calcular kP . De
› 6= O
hecho si llegamos a algún valor de kP visto en módulo n, kP ‹ (donde kP
› representa
la reducción de kP módulo algún primo p que divida a n). Y como mencionamos antes,
› = O.
obtenı́amos información cuando kP ‹ Luego si podemos calcular kP módulo n tendremos
que repetir todo el proceso eligiendo una nueva curva E.
Mostraremos ahora porqué este algoritmo termina, y cuales son los valores B y C que
deberı́amos tomar. Notar que si #E(Fp ) ≤ C para algún primo p|n y todos los divisores que
dividen a #E(Fp ) son menor iguales a B entonces #E(Fp ) dividirá a k . Luego por lo que
2
Como Z/nZ no es un cuerpo, Ep (Z/nZ) no es precisamente un grupo. Sin embargo tomamos a Ep (Z/nZ)
como el conjunto de puntos en en (Z/nZ)2 que satisfacen la ecuación de la curva elı́ptica.
22
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
mencionamos antes habremos encontrando un divisor de n si es que (dk , n) < n. Por el teore-
√
ma de Hasse 5.2.4, #E(Fp ) = p + 1 − εp con |εp | ≤ 2 p. Luego para garantizar #E(Fp ) ≤ C
basta con tomar un C tal que C ≥ p + 1 − εp . Aunque no sabemos el valor de p sabemos que
√ √ √ √ √
todo divisor p de n cumple que p ≤ n. Luego p + 1 − εp ≤ n + 1 + 2 p ≤ n + 1 + 2 4 n.
√ √
Luego tomando C = d n + 1 + 2 4 ne nos aseguraremos siempre que #E(Fp ) ≤ C.
Veamos ahora cual es la probabilidad de que #E(Fp ) no tenga divisores primos mayores a
B. Por lo mencionado en la sección §5.2 sobre el Teorema de Sato-Tate #E(Fp ) se distribuye
de forma medianamente uniforme (más precisamente con distribución sen2 ) en el intervalo
√ √
[p + 1 − 2 p, p + 1 + 2 p] para todo divisor p de n. Luego la probabilidad de que #E(Fp )
no tenga divisores primos mayores a B equivale a calcular la probabilidad de que un número
aproximadamente de la misma longitud de p no tenga divisores primos mayores a B. Dicha
probabilidad es u−u con u = ln p/ ln B (Ver [5] 148-150 para más detalles al respecto).
Por lo que dicha probabilidad será más cercana a 1 si B es grande, aunque esto haga que
se necesiten más pasos para calcular kP . Por lo que B debe elegirse de forma tal que se
minimize el tiempo de ejecución y que dicha probabilidad mencionada sea óptima.
√
Lenstra probó que la complejidad del algoritmo es de O e (1+ε) ln n ln ln n (Ver [7]).
23
Capı́tulo 7
En el caso de curvas elı́pticas sobre Fp , Semaev [10], propuso usar como Γ al conjunto de
puntos cuya absisa sea pequeña como entero. Sin embargo, la suma definida en curvas elı́ptias
24
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
tiende a ser incompatible a la hora de trabajar con dichos puntos. Como consecuencia, no hay
una forma eficiente de elegir a Γ, por lo que no es conveniente trabajar con Index-Calculus
para resolver los ECDLP.
Los algoritmos más rápidos para resolver los ECDLP son todos algoritmos de tiempo
exponencial, razón primordial para querer trabajar con criptosistemas sobre curvas elı́pticas.
Sin embargo Menezes, Okamoto y Vanstone [8] sugirieron usar los denominados Weil Pairing
para reducir el ECDLP a un DLP en Fpn . Dichos Weil Pairing van a ser formas bilineales
que, debido a sus propiedades, nos va a permitir asociar ciertos puntos de Fpn con puntos de
Fpn de forma tal que nos permita hacer la reducción de ECDLP a DLP.
Definición 7.2.1. Sea G grupo y m ∈ Z. Definimos a G[m] como G[m] = {x ∈ G|mx = 0}.
Dicho subconjunto termina siendo un subgrupo de G y lo llamaremos el m−subgrupo de
torsión de G.
E[m] ∼
= Z/mZ × Z/mZ
Este último teorema nos dice que E[m] es un Z/mZ - módulo libre de rango 2. Por lo
que siempre podremos tomar dos elementos de E[m] que lo generen como Z/mZ - módulo.
Definición 7.2.3. SeaP E una curva elı́ptica sobre K. Un divisor D es una suma de puntos
de E de la forma D = P ∈E(K) nP P P , donde nP ∈ Z y nP = 0 para todos salvo un número
finito. El grado de D es el entero P ∈E(K) nP . Los divisores de grado 0 forma un subgrupo
de E(K) denotado por D0 .
Sea f ∈ K(E)∗ . Para cada P ∈ E(K) definimos vP (f ) como n > 0 si P es una raiz de
P n de f , −n si1P es un polo de orden n de f y 0 en caso contrario. Asociamos
oren el divisor
0 . Un divisor D se
P ∈E(K) v P (f )P a f , y lo denotamos por (f ). Se verifica que (f ) ∈ D
∗
P f ∈ K(E) . Se puede verificar que D es un divisor
dice principal si D =P(f ) para algún
principal si y solo si nP = 0 y nP P = 0
1
Notar que, por la forma de f , tendrá a lo sumo una cantidad finita de polos y raices. Luego dicho divisor
está bien definido.
25
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
Definición 7.2.4. Sea m un entero coprimo con q y sean P, Q ∈ E[m]. Sean A, B ∈ D0 tal
que A ∼ P , B ∼ Q y tal que A y B tengan soportes disjuntos. Sean fA , fB ∈ K(E) tal que
(fA ) = mA y (fB ) = mB 2 . Luego definimos el Weil Pairing de P y Q como
fA (B)
em (P, Q) =
fB (A)
Proposición 7.2.5. El Weil Pairing em es bilineal
Proposición 7.2.8. (Algoritmo MOV) Sea E una curva elı́ptica sobre Fq . Sean P, Q ∈ E(Fq )
con P de orden N , y d el grado de incrustación de N en Fq . Asumiendo que (q − 1, N ) = 1,
existe un algoritmo de tiempo polinomial que reduce el ECDLP de P y Q (es decir, el
problema de encontrar m ∈ Z tal que Q = mP ) a un problema DLP en F∗qd .
eN (Q, T ) = eN (P, T )m
en Fqd , luego obtenemos el valor m que resuelve nuestro ECDLP .
Para una prueba sobre el tiempo de ejecución ver [13] pag. 387
2
Dichas funciones fA y fB existen al ser mA y mB divisores principales (al serlo A y B).
26
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
Luego probamos que para resolver un ECDLP basta con resolver un DLP ya que, al ser
la reducción de tiempo polinomial, no afecta a la complejidad del mismo.
De todos modos, vimos en §4.2.2 que los DLP en F2p o F2m tenı́an solución de tiempo
subexponencial, por lo que no querrı́amos reducir nuestro ECDLP a un DLP en dichos cuerpos.
Existen un tipo particular de curvas elı́pticas, las llamadas curvas elı́pticas supersingulares,
las cuales al plantearse su ECDLP se reduce, mediante el algoritmo descripto, a un DLP en
Fp2 . Con lo que evitando tomar dichas curvas tenderı́amos a reducir nuestro problema a un
DLP en el cual no se conocen algoritmos de tiempo subexponencial que los resuelvan.
27
Capı́tulo 8
No se conoce algún algoritmo capaz de factorizar todos los enteros en tiempo polinomial.
Aunque se sospecha que dicho algoritmo no existe.
No existe algoritmo subexponencial que resuelva el problema de logaritmo discreto en
curvas elı́tpticas.
28
Capı́tulo 9
Conclusiones
29
Apéndice A
Teorı́a de Cuerpos
Definición A.1.2. Sea K un cuerpo. Diremos que una extensión C|K es una clausura
algebraica si es una extensión algebraica y es algebraicamente cerrada. Esto último es, todo
f ∈ C[X] tiene todas sus raices en C.
a c ad + bc a c ac
+ = y · =
b d bd b d bd
Teorema A.1.5. Si K un cuerpo finito de caracterı́sitca p entonces K es de orden pn con
n el grado de K como F -espacio vectorial donde F es el subcuerpo primo de K.
Teorema A.1.7. Si K y K 0 son dos cuerpos finitos tal que tienen el mismo orden entonces
K∼= K 0.
30
Apéndice B
B.1. La notación de O y o
Definición B.1.1. Sean f y g dos funciones definidas para los naturales mayores iguales
a un cierto n0 ∈ N y que van a valores reales. Supongamos que además son positivas para
todo n ≥ n0 y que existe C > 0 tal que f (n) ≤ Cg(n). Luego decimos que f = O(g).
Definición B.1.2. Llamaremos algoritmo a un procedimiento paso por paso para realizar
cálculos.
A la hora de hablar del computo de un algoritmo nos referimos a que tiene complejidad
O(g(n)) si f = O(g), donde f (n) indica la cantidad de operaciones necesarias para realizar
mi algoritmo en función de n.
En general se usará una buena cota g para nuestra función f , de esta forma nos dará
una buena idea de como crece f - Elegiremos usualmente a g como funciones logarı́tmicas,
polinomios o productos de estas. Veamos el siguiente ejemplo.
√
Ejemplo B.1.3. Si f (n) = n n nos gustarı́a aproximarla por una funcón g como menciona-
mos arriba. Luego la función g, con las caracterı́sticas que mecionamos que tenı́a que tener,
que aproxima mejor por encima a f es g(n) = n2 . En efecto f (n) no puede ser acotada por
√
alguna función en la cual se involucre polinomios, teniendo en cuenta que n y n crecen
√
más rápido que cualquier función polinómica, y el mejor polinomio que aproxima a n es n.
√
Como n n ≤ n2 tenemos que f = O(n2 )
Observación B.1.4. Se puede realizar la misma definición de B.1.1 para funciones f y g
definidas en Nm a valores reales positivos.
Definamos ahora la notación o(n).
Definición B.1.5. Sean f y g dos funciones definidas de los positivos a los positivos .
Diremos que f (n) = o(g(n)) si
f (n)
lı́m =0
n→∞ g(n)
31
Capı́tulo B – Complejidad del cómputo de un Algoritmo Franco Golfieri
Cuando hablamos del tiempo de estimación (o complejidad) que se requiere para realizar
un algoritmo nos referimos a un estimador de la cantidad de operaciones de bits requeridas
para realizarlo.
Por lo tanto el tiempo de estimación para calcular la suma de dos números naturales n y
m es aproximadamente máx(ln(n), ln(m)) (recordad que la cantidad de bits de un número
natural n es 1 + blog2 (n)c). Luego la complejidad de calcular la suma de dos números
naturales es de O(máx(ln n, ln m).
Algoritmo 2 ean a > b dos números enteros. Luego el algoritmo de Euclides para
calcular el máximo común divisor entre ambos tiene complejidad de O(ln2 a).
32
Capı́tulo B – Complejidad del cómputo de un Algoritmo Franco Golfieri
Por otro lado tenemos los algoritmos de tiempo exponencial, que como su nombre lo
indica van a ser algoritmos de complejidad O(2ck ) con c constante y k la longitud en bits
del entero al cual le aplicamos el algoritmo. Estos algoritmos, al ser exponenciales, serán
demasiado ineficientes, incluso si c es chico. Un ejemplo de algoritmo de tiempo exponencial,
en el cual se basa el criptoanálisis RSA, es el algoritmo de factorizar un entero en primos.
Observación B.2.2. Si nuestro algoritmo tiene complejidad O(nc ) con c > 0 constante,
entonces será de tiempo exponencial. En efecto nc = 2c log2 (n) , y al ser log2 (n) la cantidad
de bits tenemos que es exponencial.
Por último entre medio de los algoritmos de tiempo exponencial y los algoritmos de
tiempo polinomial tenemos los de tiempo sub-exponencial. Dichos problemas son mucho más
tratables que los de tiempo exponencial, por los que serán los primeros se busquen a la hora
de tratar con algoritmos en los cuales solo se conocen soluciones de tiempo exponenciales.
Dichos algoritmos son los que tienen complejidad O(2o(k) ) donde k es la cantidad de bits del
input.
Otra forma en la que se definen los algoritmos de tiempo subexponencial son que tienen
tiempo de complejidad
α 1−α
Ä ä
Ln [c, α] = O e(c+o(1))(ln n) (ln ln n) (B.1)
donde n es el tamaño del input, c una constante y α ∈ (0, 1). Ambas definiciones son
equivalentes.
33
Apéndice C
Geometrı́a proyectiva
Es claro que φ está bien definida y que ambas son recı́procas. Luego al plano proyectivo
podemos verlo como los puntos del plano afı́n más los puntos del proyectivo en los cuales
Z = 0. Estos puntos forman una recta que es la que llamaremos recta en el infinito. Si [A, B, 0]
es un punto en la recta del infinito podemos pensarlo como las direcciones de las rectas
del plano Pafin con pendiente B/A si A = 6 0 o de las rectas verticales si A = 0. Toda curva
f (x, y) = aij xi y j = 0 de grado n del plano afin puede pensarse como una curva homogenea
i,j
F (X, Y, Z) de grado n en el plano proyectivo de la forma F (X, Y, Z) = aij X i Y j Z n−i−j .
P
i,j
Notar que F (X, Y, 1) = f (X, Y ). Luego si C : y 2 = x3 + ax + b es una curva elı́ptica tenemos
que su ecuación homogénea es C : Y 2 Z = X 3 + aXZ 2 + bZ 3 . Notar que su intersección
con la recta en el infinito va a ser entonces el punto [0, 1, 0], y eso es independiente de los
valores a y b. Observar que este punto [0, 1, 0] es justamente el punto que habı́amos tomado
como neutro del grupo descrito por la curva elı́ptica. Es decir nuestra curva elı́ptica en el
proyectivo será simplemente la curva elı́ptica vista en el plano afı́n más el punto [0, 1, 0].
En el plano proyectivo si pasará que toda recta corte a mi curva elı́ptica en tres puntos
(contados con multiplicidad). Notar además que dicho punto es un punto de inflexión. En
34
Capı́tulo C – Geometrı́a proyectiva Franco Golfieri
35
Bibliografı́a
[1] Diffie, W. and Helmman, M. E., A public key cryptosystem and a signature scheme
based on discrete logarithms IEEE Transactions on Information Theory, Vol. 22, 1976.
[2] Enge, A., Elliptic curves and their applications to cryptography: an introduction, Springer
Science & Business Media. Science & Business Media., 2012.
[3] Knapp, Anthony W., Elliptic curves, Princeton University Press, Vol. 40, 1992.
[4] Menezes, A. J., Elliptic curve public key cryptosystems, Springer Science & Business
Media., Vol. 234, 2012.
[5] Koblitz N., A course in Number Theory and Cryptography, 2nd Edition, Springer Science
& Business Media., Vol. 114, 1994.
[6] Koblitz, N., Algebraic aspects of cryptography, Springer Science & Business Media., Vol.
3, 2012.
[7] Lenstra Jr, H.W , Factoring integers with elliptic curves, Annals of mathematics, 649-673,
1987.
[8] Menezes,A.J., Okamoto, T. and Vanstone, S.A. Reducing elliptic curve logarithms to
logarithms in a finite field, eIEEE Trans. Inform. Theory, 39(5):1639–1646, 1993.
[9] Schoof, R., Counting points on elliptic curves over finite fields, J. Théor. Nombres
Bordeaux, 7(1):219–254. Les Dix-huitièmes Journées Arithmétiques , 1995.
[10] Semaev, I.A., Summation polynomials and the discrete logarithm problem on elliptic
curves, ePrint Archive: Report 2004/031, 2004.
[11] Shemanske, T. R., Modern Cryptography and Elliptic Curves, American Mathematical
Soc., Vol. 83, 2017.
[12] Silverman, Joseph H. and Tate, John Torrence, Rational points on elliptic curves,
Springer, Vol. 9, 1992.
[13] Silverman, The Arithmetic of Elliptic Curves, Springer Science & Business Media, Vol.
106, 2009.
36