Monograf A
Monograf A
Monograf 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 18
5.1. Definición y propiedades básicas . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2. Curvas elı́pticas en cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . 22
5.2.1. Curvas Elı́pticas sobre Fp . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2.2. Reducción módulo p . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ii
Capı́tulo 0 – ÍNDICE GENERAL Franco Golfieri
9. Conclusiones 40
A. Teorı́a de Cuerpos 41
A.1. Nociones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
C. Geometrı́a proyectiva 47
Bibliografı́a 49
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
4
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
5
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
Hasta ahora vimos ejemplos en los cuales solo se necesitaba una cla-
ve 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 ne-
6
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
cesitar 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 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−1E
= gkD , con gkD la funcion que desencripta el
mensaje.
7
Capı́tulo 2 – Clave Pública vs Clave Privada Franco Golfieri
8
Capı́tulo 3
Problemas de factorización en
primos
9
Capı́tulo 3 – Problemas de factorización en primos Franco Golfieri
10
Capı́tulo 3 – Problemas de factorización en primos Franco Golfieri
11
Capı́tulo 4
xm = y
Llamaremos a dicho entero m el logaritmo discreto de y en base x y
lo denotaremos por m = logx y. A dicho problema lo llaremos por sus
siglas en ingles como DLP.
12
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
4.2.1. Babystep-Giantstep
13
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
x, x2 , . . . , xN
A dichos elementos los llamaremos babysteps.
yz, yz 2 , . . . , yz N
A dichos elementos los llamaremos giantsteps.
14
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
4.2.2. Index-Calculus
15
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
t
X
logx y = s + νi logx γi
i=1
y como todos los elementos del lado derecho son conocidos, resolve-
mos el problema de logaritmo discreto.
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 Γ di-
viendo 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.
16
Capı́tulo 4 – Problema del logaritmo discreto Franco Golfieri
17
Capı́tulo 5
Curvas Elı́pticas
18
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
y 2 = x3 + ax + b, a, b ∈ K (5.1)
junto con otro punto O que llaremos punto en el infinito.
19
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
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.
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 de-
finir ası́ dichas sumas).
20
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
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 in-
tersección de dicha recta con E(R). A dicho punto lo llamaremos P +Q.
y 2 − 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
21
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
22
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
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
mód p). Luego p|(a − b)(a + b), y como p es primo p|a − b o p|a + b. En
término de congruencia esto significa que a ≡ ±b mód p. Luego para
todo k ∈ {1, . . . , p−1 2
2 }, si a ≡ k
2
mód p entonces a ≡ b mód p. Por lo
2
tanto {k |k = 1, . . . , p−1
2 } son todos los residuos cuadráticos módulo p.
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
23
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
β
#{p|p es primo , p ≤ n, α ≤ θp ≤ β}
Z
1
lı́m = sen2 (θ)dθ (5.3)
n→∞ #{p|p es primo , p ≤ n} 2π α
24
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
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
25
Capı́tulo 5 – Curvas Elı́pticas Franco Golfieri
26
Capı́tulo 6
27
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
mκ ≤ x − 1 ≤ mκ + (κ − 1),
entonces
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
28
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
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.
29
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
30
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
kP
› = k Pe = O
e
donde Q e denota la reducción de Q ∈ E(Q) a Ep (Fp ). En otras pala-
bras, la reducción módulo p de kP es el punto el infinito de Ep (Fp ), por
lo que tendremos que p|dk . Luego p|(dk , n) y si (dk , n) < n tendremos
entonces un divisor propio de n.
31
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
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.
32
Capı́tulo 6 – Criptosistemas basados en curvas elı́pticas Franco Golfieri
33
Capı́tulo 7
34
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
Los algoritmos más rápidos para resolver los ECDLP son todos al-
goritmos de tiempo exponencial, razón primordial para querer trabajar
con criptosistemas sobre curvas elı́pticas. Sin embargo Menezes, Oka-
moto y Vanstone [8] sugirieron usar los denominados Weil Pairing para
reducir el ECDLP a un DLP en Fpn . Dichos Weil Pairing van a ser for-
mas 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.
35
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
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. Sea E una curva elı́ptica sobre
P K. Un divisor D
es una suma de puntos de E de la forma D = P ∈E(K) nP P , donde
nP ∈ Z y PnP = 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 .
Si la curva elı́ptica E está definida por f (x, y) ∈ K[X, Y ]. Llama-
remos al cuerpo de funciones raciones de E al cuerpo de fracciones de
K[X, Y ]/hf i, y lo denotaremos por K(E). Similarmente K(E) es el
cuerpo de fracciones de K[X, Y ]/hf i.
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.
36
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
np P es un divisor y f ∈ K(E)∗ Q
P
Si D = tal que D y (f ) tienen
soportes disjuntos, entonces definimos f (D) = P ∈E f (P )nP .
fA (B)
em (P, Q) =
fB (A)
Proposición 7.2.5. El Weil Pairing em es bilineal
Proposición 7.2.6. Si P y Q generan a E[m] como Z/mZ-módulo,
entonces em (P, Q) es una raı́z m-ésima de la unidad
Definición 7.2.7. Sea Fq un cuerpo finito, y N ≥ 1 un entero. Llama-
remos el grado de incrustación de N en Fq como el menor entero d ≥ 1
tal que q d ≡ 1 mód N .
Una vez habiendo ya enunciado todas estas propiedades y definicio-
nes, probaremos a continuación el algoritmo de reducción que habı́amos
mencionado.
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 .
Demostración. (Idea) Buscamos un entero m tal que Q = mP . Elegi-
mos un punto T ∈ E[N ] tal que P y T generen a E[N ] como Z/N Z
- módulo. Luego eN (P, Q) es una raı́z N -ésima de la unidad, y por la
definición del grado de incrustación tenemos que eN (P, T ) ∈ F∗qd . Por
la bilinealidad del Weil Pairing tenemos que
2
Dichas funciones fA y fB existen al ser mA y mB divisores principales (al serlo A y B).
37
Capı́tulo 7 – Problema del logaritmo discreto en curvas elı́pticas Franco Golfieri
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
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 parti-
cular 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.
38
Capı́tulo 8
39
Capı́tulo 9
Conclusiones
40
Apéndice A
Teorı́a de Cuerpos
a c ad + bc a c ac
+ = y · =
b d bd b d bd
41
Capı́tulo A – Teorı́a de Cuerpos Franco Golfieri
42
Apéndice B
B.1. La notación de O y o
43
Capı́tulo B – Complejidad del cómputo de un Algoritmo Franco Golfieri
√ √
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)
44
Capı́tulo B – Complejidad del cómputo de un Algoritmo Franco Golfieri
de O(máx(ln n, ln m).
45
Capı́tulo B – Complejidad del cómputo de un Algoritmo Franco Golfieri
mente pequeño.
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 exponen-
cial, 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 exponen-
ciales. Dichos algoritmos son los que tienen complejidad O(2o(k) ) donde
k es la cantidad de bits del input.
46
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 pun-
to en la recta del infinito podemos pensarlo como las direcciones de las
47
Capı́tulo C – Geometrı́a proyectiva Franco Golfieri
48
Bibliografı́a
49
Capı́tulo C – BIBLIOGRAFÍA Franco Golfieri
50