Вы находитесь на странице: 1из 100

Wolfgang Willems

Ismael Gutiérrez Garcı́a

Barranquilla, Colombia
Willems, Wolgang

Una introducción a la criptografía de clave pública / Wolfgang


Willems, Ismael Gutierréz García. -- Barranquilla: Ediciones Uninorte,
2010, 2a edición.

ix, 88 p. 16 x 24 cm

ISBN: 978-958-741-053-2
Incluye referencias bibliográficas (p. 79-80) e índice.

1. Criptografía de clave pública. I. Gutiérrez García, Ismael. II. Tít.

005.82 W699 22 ed.


(CO-BrUNB : 84187)

www.uninorte.edu.co
Km 5 vía a Puerto Colombia, A.A. 1569
Barranquilla (Colombia)

© Ediciones Uninorte, 2010


© Wolfgang Willems, Ismael Gutiérrez García, 2010

Primera edición, 2008


Segunda edición (e-book), 2010

Coordinación editorial
Zoila Sotomayor O.
Editor
Ismael Gutiérrez García
Diseño de portada
Joaquín Camargo Valle
Procesos técnicos digitales
Munir Kharfan De los Reyes
Corrección de textos
Mercedes Castilla

Hecho en Colombia
Made in Colombia
A Elena
Los autores

Prof. Dr. Wolfgang Willems


Realizó sus estudios de Diploma en Matemáticas, Doctorado en
Matemáticas y Habilitación en la Universidad Johannes Gutenberg
de Mainz (Alemania), bajo la dirección del prestigioso Grupo teóri-
co Prof. Dr. B. Huppert. Posteriormente recibe la posición de Pro-
fesor en la Universidad Otto von Guericke de Magdeburg. Actual-
mente se desempeña como decano de la Facultad de Matemáticas
de esa misma institución. Es autor de múltiples textos y artículos
publicados en revistas internacionales.

Dr. Ismael Gutiérrrez García


Es Licenciado en Matemáticas y Física de la Universidad del Atlán-
tico. Magister en Matemáticas de la Universidad del Valle y Doctor
en Matemáticas de la Universidad Johannes Gutenberg de Mainz
(Alemania). Actualmente es profesor asociado de la Universidad del
Norte (Barranquilla - Colombia).
Índice general

1 Criptosistemas de clave pública 1


1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Conceptos básicos y seguridad . . . . . . . . . . . . . . . . . 3
1.3 Criptografía de clave pública . . . . . . . . . . . . . . . . . . 7
1.4 Signaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Funciones Hash . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Esquemas de compartimentación de secretos . . . . . . . . . . 23
1.7 Algoritmos para pruebas de primalidad . . . . . . . . . . . . . 25
1.8 Factorización de números enteros . . . . . . . . . . . . . . . 29
1.9 El logaritmo discreto . . . . . . . . . . . . . . . . . . . . . . 38

2 Fundamentos matemáticos 45
2.1 Elementales sobre teoría de grupos . . . . . . . . . . . . . . . 45
2.2 Teoría elemental de números . . . . . . . . . . . . . . . . . . 50
2.3 Cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4 Curvas elípticas . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.5 Curvas de Edwards . . . . . . . . . . . . . . . . . . . . . . . 71

A Algoritmos y complejidad 75
A.1 La O-notación . . . . . . . . . . . . . . . . . . . . . . . . . . 75

vii
.
Prólogo

En los tiempos actuales tanto en el sector público como en el privado se inter-


cambia una cantidad enorme de datos a través de un canal, por ejemplo, como
la Internet. Algunos de estos deben ser protegidos contra lectores ilegales po-
tencialmente alteradores. Se puede pensar, por ejemplo, en el banco en casa
(Homebanking) o en un e-mail confidencial o también en televisión cerrada
(Pay-TV). Otros ejemplos similares son las firmas electrónicas de documen-
tos, digamos un contrato de compra por Internet. De estos y otros problemas
se ocupa la criptografía, en la cual los procedimientos de clave pública hoy por
hoy juegan un papel central.
El presente libro tiene su origen en un cursillo desarrollado por el primer
autor en marzo de 2007 en la Universidad del Norte. Este se ha pensado como
una introducción a la criptografía de clave pública y suministra algunas de las
ideas y métodos esenciales. Los conceptos presentados aquí también forman
parte del libro [17], el cual será publicado por la editorial alemana Birkhaeuser.
En este punto deseamos agradecer a la Universidad del Norte y al Ser-
vicio Alemán de Intercambio Académico (DAAD) por el generoso apoyo
económico. El primer autor desea agradecer a la Facultad de Ciencias Básicas
y al Departamento de Matemáticas de la Universidad del Norte por el caluroso
y amigable acogimiento durante su estadía en Barranquilla en marzo de 2007.

ix
.
Prólogo a la segunda edición

En esta segunda edición se presentan algunas pequeñas modificaciones de la


primera. Además de algunas correcciones de escrituras, en la sección 2.5 se
presenta una introducción a las curvas de Edwards. Contrario a lo que sucede
con las curvas elípticas, la fórmula de adición de dos puntos de estas curvas se
describe de manera unificada; en consecuencia, al utilizar un side channel at-
tack para resolver el problema del logaritmo discreto, este resulta infructuoso.

Barranquilla y Magdeburg, abril de 2009.

xi
.
Capítulo 1

Criptosistemas de clave
pública

Contenido

1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Conceptos básicos y seguridad . . . . . . . . . . . . . . 3
1.3 Criptografía de clave pública . . . . . . . . . . . . . . . 7
1.4 Signaturas . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Funciones Hash . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Esquemas de compartimentación de secretos . . . . . . 23
1.7 Algoritmos para pruebas de primalidad . . . . . . . . . 25
1.8 Factorización de números enteros . . . . . . . . . . . . 29
1.9 El logaritmo discreto . . . . . . . . . . . . . . . . . . . 38

1.1 Introducción
Etimológicamente hablando, el origen de la palabra criptografía procede del
griego κρμπτ oζ (kryptos) = secreto; γραφ
ιν (graphein) = escribir, es de-
cir, el arte de escribir de manera secreta. No es difícil suponer que desde la
Antigüedad hasta hoy el manejo de información ha sido de vital importancia
para la humanidad.

1
2 Willems/Gutiérrez

Hoy, en la era de la información, la necesidad de ocultar datos relevantes


se ha incrementado hasta convertir la criptografía en una herramienta funda-
mental para el manejo de información de forma segura en cualquier campo de
trabajo, sea éste informático, privado, como el banco en casa (Homebanking),
empresarial o de seguridad nacional, entre otros. Pero en muchas ocasiones no
es fácil implementar mecanismos para garantizar que el flujo de información
sea íntegro y confidencial.
Es importante anotar que los inicios de una formulación clara, sistemática
y concreta de los conceptos involucrados fueron presentados por primera vez
en 1949 en el seminal articulo de C. E. Shannon1 titulado Communication
theory of secrecy systems [12], no obstante la antigüedad de esta ciencia.
La criptografía ha tenido un gran desarrollo en las últimas décadas, por lo
tanto, es natural que múltiples de estas facetas no pueden ser presentadas en
este trabajo, y que sea necesario limitarnos a algunos de sus aspectos esen-
ciales.
La criptografía de clave pública o asimétrica fue creada como una alternativa
para evitar la dificultad del intercambio de claves que presentaban los métodos
originales, usualmente denominados simétricos. El hecho de tener disponible
una clave pública, por ejemplo, en algún directorio como el telefónico garan-
tiza que las personas involucradas en la comunicación omitan el intercambio
de claves, lo cual no deja de ser un factor de riesgo en la confiabilidad de la
información.
De manera general podemos plantear el problema así: supongamos que una
fuente emite un mensaje y que se dispone de un canal confiable para transmi-
tirlo, y que posteriormente llega a un receptor según se muestra en la figura.

Transmisor Canal Receptor

Enemigo

El interrogante central es el siguiente: ¿Cómo proteger la información envia-


da de enemigos? Antes de presentar una respuesta a este es necesario estable-
cer los diversos o diferentes tipos de enemigos.
Enemigos pasivos. Estos solo desean leer la información, al igual que los
que capturan de manera ilegal la señal de la televisión por cable o satelital, por
1
Claude Elwood Shannon (1916-2001). Matemático e ingeniero eléctrico, trabajó para AT &
T Bell Telephones, Profesor en el MIT, Cambridge (Massachusetts). Teoría de la Información,
inteligencia artificial. Inventor del bit.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 3

ejemplo.
Enemigos activos. Estos no solo desean leer la información, sino también
alterarla, como los que intervienen cuentas bancarias a través de la Internet u
otro medio.
Para tener una aproximación a la respuesta al interrogante anterior, la idea
es entonces transformar el mensaje original en otro que no pueda ser leíble.
Para ello se necesitan elementos muy diversos de las matemáticas, por ejem-
plo, teoría de números, curvas algebraicas (elípticas, hipercríticas), cuerpos
finitos, algoritmos y teoría de la probabilidad. Un interesante panorama sobre
criptografía de clave pública se encuentra en [9].

1.2 Conceptos básicos y seguridad


Para fijar la notación que utilizaremos, iniciamos esta sección con un ejemplo.
Alicia desea enviar un mensaje a Bob, el cual solo puede ser leído por este.
A partir del mensaje original, usualmente llamado texto plano (plain text),
de manera adecuada se obtiene una transformación de este, el texto cifrado
(cipher text), con el cual una tercera persona sin elementos adicionales nada
podría hacer. Este procedimiento es usualmente denominado cifrado. El texto
cifrado es enviado de Alicia a Bob y este debe estar en condiciones de inver-
tirlo. Es decir, Bob a partir del texto cifrado deberá obtener el mensaje original,
lo cual llamaremos descifrado.
Presentamos a continuación una definición formal de los conceptos anterio-
res.

1.2.1 Definición. Entenderemos por un criptosistema K una terna (P, C, S)


de conjuntos finitos
P, los textos planos
C, los textos cifrados
S, las claves
unidos con funciones de cifrado
es : P −→ C para todo s ∈ S
y con funciones de descifrado
ds : C −→ P para todo s ∈ S.
Además, debe verificarse que:
ds (es (x)) = x, para todo x ∈ P y para todo s ∈ S.
En particular, se tiene que es es inyectiva para todo s ∈ S.

1.2. Conceptos básicos y seguridad


4 Willems/Gutiérrez

1.2.2 Ejemplo. Sean K un cuerpo, P = C = Kn y S = Sym(n) el grupo


simétrico de grado n. Sean x = (x1 , . . . , xn ) ∈ P y π ∈ Sym(n). Entonces
definimos la función de cifrado

eπ (x) := (xπ(1) , . . . , xπ(n) ) =: y

y la función de descifrado está dada por

dπ (y) := eπ−1 (y)

En el ejemplo de arriba (de Alicia y Bob) podemos imaginarnos dos esce-


narios diferentes:

1. Alicia, utilizando un camino secreto, transmite a Bob la clave s em-


pleada por ella, así que cuando él use posteriormente la función ds po-
drá leer el mensaje original. La clave utilizada s se mantendrá en secreto
mientras que las funciones ds y es , en general, son conocidas. En esta
situación estamos en presencia de un intercambio de clave, cuya seguri-
dad debe garantizarse de cualquier manera. Tales procedimientos son
denominados con frecuencia simétricos.

2. Bob suministra de manera pública la clave s y la respectiva función de


cifrado es . Es decir, cualquier persona tiene acceso a ellas, de modo que
se le puede enviar un mensaje. Así, Alicia y cualquier persona podrían
utilizarlas. La función de descifrado ds es mantenida por Bob en secreto
y no es posible, de manera eficiente, calcularla a partir de la función es .
Este procedimiento es llamado asimétrico o también de clave pública.

Hasta los años setenta del siglo pasado solo existieron procedimientos del
primer tipo. Una de las grandes dificultades de estos procedimientos estaba en
que para obtener una seguridad alta en el cifrado, era necesario que las claves
fuesen casi del mismo tamaño que los mensajes. Por otro lado, se requería el
intercambio de claves, lo cual significaba un aumento en los niveles de inse-
guridad.
Las aplicaciones de la criptografía moderna se mueven en la actualidad más
y más hacia los dominios de la electrónica, en especial los relacionados con
los negocios que necesitan cifrar a diario una gran cantidad de datos.
Pensemos en la televisión cerrada, por ejemplo, Direct-TV: señal que no
puede verse a menos que se pague una cierta cantidad de dinero. También
podemos pensar en un banco en casa. En este caso, un tercero no puede tener
acceso ni a la lectura ni a la manipulación de las transacciones. Estas son solo
dos de las múltiples situaciones en las que un cifrado es indispensable. Tanto

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 5

las cantidades de datos como las situaciones en las que un procedimiento de


cifrado es necesario, crecen de manera continua. En estos ejemplos, los pro-
cedimientos simétricos exigirán muchas claves de tal manera que la adminis-
tración y distribución de ellas solas sería apenas realizable. Esto significa,
en cierto modo, una dependencia de los procedimientos del segundo tipo, los
cuales necesitan un número menor de claves sin que se haga obligatorio el
intercambio de claves en el plano privado con un sorprendente buen resul-
tado. Pero con respecto a la seguridad tienen la desventaja que el cifrado y
descifrado, contrario al los procedimientos simétricos, necesitan mucho más
tiempo. Si se busca un punto de mejor aprovechamiento, existen los denomi-
nados procedimientos híbridos mediante los cuales la información es cifrada
con el uso de un procedimiento simétrico y la clave que se necesita para ello
se intercambia utilizando un procedimiento de clave pública, lo que garantiza
una mayor seguridad.
Como siempre se pasa al plano práctico, es necesario decidir entre la rapi-
dez de algoritmos para el cálculo de es y ds y la seguridad del procedimiento.
Para los procedimientos simétricos, la decisión depende del secreto de la clave
utilizada y no del secreto del algoritmo para cifrar o descifrar. Para los proce-
dimientos de clave pública, esta se fundamenta en el secreto de la función de
descifrado.
En la práctica, los textos claros se presentan con probabilidad conocida. Por
consiguiente, supondremos que sobre el conjunto P de los  textos claros está
dada un distribución de probabilidad P . Esto es, P (x) ≥ 0 y x∈P P (x) = 1.
Con P (x|y) notaremos la probabilidad condicionada de que x ∈ P es el texto
claro dado un texto cifrado y ∈ C.

1.2.3 Definición. (Shannon, 1947) Un criptosistema K se denomina perfec-


tamente seguro, si la aparición de un texto cifrado es independiente de los
textos claros. Esto es, P (x|y) = P (x), para todo x ∈ P y para todo y ∈ C.

Para un texto cifrado dado, la seguridad perfecta significa que todos los tex-
tos claros tienen la misma probabilidad de ser su correspondiente. Esta condi-
ción sería deseada por todos, sin duda.
Supongamos que un criptosistema K es perfectamente seguro y que P (x) >
0, para todo x ∈ P. La condición ds es (x) = x, para todo x ∈ P implica la
inyectividad de es y se sigue de inmediato que |P| ≤ |C|. Sea y ∈ C. Entonces
la seguridad perfecta trae como consecuencia que 0 < P (x) = P (x|y), para
todo x ∈ P. Con ello, para un x fijo existe s ∈ S tal que es (x) = y, es decir, la
función ϕ : S −→ C, definida por ϕ(s) = es (x) es sobreyectiva. Esto implica

1.2. Conceptos básicos y seguridad


6 Willems/Gutiérrez

que |S| ≥ |C|. En total, la seguridad perfecta trae como consecuencia que

|P| ≤ |C| ≤ |S|

Por lo tanto, es obligatorio tener por lo menos el mismo número de claves


como de textos claros. Los procedimientos clásicos para seguridad perfecta
suministran el ejemplo conocido como One Time Pad.

1.2.4 Ejemplo. (One Time Pad). Sea K = Z2 y n ∈ N. Definamos P = C =


S = Kn . Este n es elegido lo suficientemente grande, de tal manera que todos
los mensajes considerados tengan una longitud digital menor o igual a n.
Para enviar un mensaje x ∈ P a Bob, Alicia elige una clave arbitraria s ∈
S y envía es (x) = x + s a Bob. Si este de alguna manera secreta puede
intercambiar con Alicia la clave s, entonces dado que (x + s) + s = x, Bob
puede leer el mensaje x.

Mensaje x ⊕ Canal ⊕ (x + s) + s = x
x+s
s s

1.2.5 Teorema. El One Time Pad es perfectamente seguro si todas las claves
1
son utilizadas con la misma probabilidad |S| .

D EMOSTRACIÓN . Al inicio observemos que para un x ∈ P arbitrario y


y ∈ C existe un único s ∈ S de tal manera que es (x) = y, en efecto, s := x+y.
Esto significa que la probabilidad P (x, y) para la aparición conjunta de x y y
(x)
es igual a P|S| . Si se suma sobre x para un y fijo, se tiene que la probabilidad
1
para la ocurrencia de y, notada con Q(y) es |S| . En conclusión tenemos que

P (x, y) P (x)
P (x|y) = = |S| = P (x),
Q(y) |S|

lo cual demuestra la perfección en la seguridad. 


El One Time Pad tiene seguridad perfecta, lo cual es naturalmente intere-
sante. No obstante, presenta la desventaja que las claves que deben intercam-
biarse tienen la misma longitud que los mensajes. En los campos privado y
económico, el simple manejo y administración de una cantidad en extremo
grande de claves, como resultado de la necesidad de muchos textos claros,
representaría un problema apenas soluble.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 7

En este punto estamos entonces obligados a recurrir a procedimientos con


pocas claves, lo que incluye la posibilidad de no ser perfectamente seguros,
sino solo a nivel computacional.

1.2.6 Definición. Un criptosistema se denomina computacionalmente se-


guro, cuando no es posible calcular con eficiencia la función de descifrado
ds sobre la base del conocimiento de es , para algún s ∈ S, utilizando todos los
algoritmos conocidos y todos medios computacionales, en un tiempo justifica-
ble.

Es claro que en un estricto sentido matemático esta no es una definición. En


un tiempo justificable significa que un descifrado por parte de una persona no
autorizada no puede ser realizado, en todo caso, no mientras la información se
pueda mantener secreta. El lapso de tiempo depende naturalmente de los algo-
ritmos y de la eficiencia del computador, de tal manera que el procedimiento
de tiempo a tiempo debe ser adaptado.

1.3 Criptografía de clave pública


Para los procedimientos simétricos, y antes de cifrar el mensaje, es obligatorio
el intercambio de la clave privada entre quien envía el mensaje y quien lo
recibe.
A causa de las enormes redes de comunicación con las cuales hoy día se
tienen que intercambiar datos cifrados, el intercambio de claves privadas origi-
na un problema insuperable: apenas logra el mantenimiento del secreto. Cada
mensaje requiere un nuevo intercambio de claves, lo que implica un retraso.
Por lo tanto, para tener una seguridad más alta en el proceso de cifrado se
fuerza a tener una clave más grande, es decir, un costo altísimo.
En 1976, W. Diffie y M. Hellman han diagnosticado el modo de evitar por
completo el intercambio de claves y, no obstante, cifrar mensajes computa-
cionalmente seguros. La idea que ellos han presentado en el trabajo [5] sug-
iere el hoy denominado procedimiento de clave pública. Esta idea, que ha
cambiado de manera revolucionaria la criptografía, resulta ser muy sencilla:
Cada participante en una red de comunicación suministra de manera pública
su propia clave B y la correspondiente función de cifrado eB . Esta puede ser
colocada en un libro, como el directorio telefónico. La función de descifrado
dB se conserva secreta y, además, esta no puede ser calculada a partir de eB
por otra persona, en un tiempo justificable. Alicia desea enviar un mensaje x
a Bob, así que ella encuentra en el directorio telefónico bajo Bob la función

1.3. Criptografía de clave pública


8 Willems/Gutiérrez

de cifrado eB y envía eB (x). Con esto, dado que tiene dB , Bob puede luego
calcular dB (eB (x)) = x.
Presentamos ahora una formalización de lo anterior.

1.3.1 Definición. Sean X y Y conjuntos.

1. Una función inyectiva f : X −→ Y se denomina una función de una


vía (one way function) si f es fácil de calcular, pero su función inversa
f −1 : Im(f ) −→ X sin información adicional, no puede calcularse en
un tiempo justificable.

2. Una función de una vía f se llama una trampa (trap door) si f −1 :


Im(f ) −→ X puede ser calculada eficientemente, conociendo alguna
información adicional.

Similar a las situaciones anteriores, esta no es en sentido estricto una defini-


ción. No obstante, el concepto de función de una vía puede formalizarse de
manera exacta utilizando teoría de la complejidad y máquinas de Turing2 , pero
la existencia de una función de este tipo no ha sido demostrada hasta hoy.
Además, la definición anterior depende de la eficiencia del computador.

1.3.2 Definición. Un criptosistema K se denomina un criptosistema de clave


pública, si todas las funciones de cifrado ek , con s ∈ S, son funciones tram-
pas.
Los criptosistemas de clave pública son entonces computacionalmente se-
guros. Como dijimos antes, hasta el momento no se conoce función alguna
para la cual la propiedad de ser función de una vía o trampa se pueda de-
mostrar.
Las funciones de una vía son vistas hoy como potenciación de elementos con
un orden grande en un grupo o también como la multiplicación de números
enteros grandes.

1.3.3 Ejemplos. (Funciones de una vía).

1. Cálculo del logaritmo discreto. Para n ∈ N, denotemos con Zn el


grupo de las clases de equivalencias determinadas por la relación de con-
gruencia módulo n (modn). Sea G = g un grupo cíclico de orden n.
2
Alan Mathison Turing (Londres, 1912 - 1954). Matemático británico que estudió en el
King’s College y en la Universidad de Princeton. En 1936 publicó On Computable Numbers,
contribuyendo con esta obra a la lógica matemática. Aquí introdujo el concepto teórico de un
dispositivo de cálculo que hoy se conoce como la máquina de Turing.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 9

Entonces la función
f : Zn −→ G,
definida por f (x) = gx es una biyección. La inversa de esta función se
nota con logg (y) y la llamaremos el logaritmo discreto. Es decir, si y =
gx , entonces se verifica que x = logg (y). Para n suficientemente grande
la función f es vista como una función de una vía. Como grupos cíclicos
podemos elegir, por ejemplo, el grupo multiplicativo de un cuerpo finito
K, los puntos de una curva elíptica, que forman un grupo abeliano o
también la variedad de Jacobi de una curva hiperelíptica. Las elecciones
deben tomarse con cuidado, de tal manera que los algoritmos conocidos
no puedan calcular el logaritmo discreto en un tiempo justificable. Por
ejemplo, si G = Z∗p y g es un generador de G, entonces p debe ser
tomado por lo menos con una longitud de 1024 bits y p−1 no puede tener
solo divisores primos pequeños. Esto último se evita si tomamos a p
como un número primo seguro grande, es decir, de la forma p = 2q+1,
donde q también es un número primo. Para curvas elípticas se reduce
sustancialmente el tamaño de n. El orden del elemento g puede ser de
160 bits.

2. Factorización de números grandes. Para números enteros grandes, en


general, no es posible calcular en un tiempo justificable su descomposi-
ción en factores primos. La factorización de un número n = pq, donde
p y q son números primos aproximadamente del mismo grande y n tiene
1024 o mejor 2048 bits, no es realizable en un tiempo aceptable. En-
tonces, la multiplicación de números primos grandes se puede ver como
una función de una vía. Este hecho es el fundamento del procedimiento
criptográfico conocido como RSA, el cual consideraremos enseguida.
Como en el caso del logaritmo discreto, existen situaciones naturales en
las que se puede factorizar de manera rápida, digamos si p − 1 y q − 1
tienen solo divisores primos pequeños, lo cual es evitable si se toman de
nuevo números primos seguros.

En 1978, Rivest, Shamir y Adleman presentaron lo que hoy se conoce como


procedimiento criptográfico RSA, cuya seguridad reside en la dificultad para
factorizar. Este pertenece al grupo de los procedimientos de clave pública, en
los cuales la clave privada no puede ser intercambiada. Este procedimiento fue
utilizado anteriormente en dominios importantes del servicio secreto británico.
(Ver por ejemplo [13], que contiene un agradable desarrollo histórico de la
criptografía)

1.3. Criptografía de clave pública


10 Willems/Gutiérrez

1.3.4 Procedimiento criptográfico RSA. Bob elige dos números primos


grandes p = q, define n = pq y calcula ϕ(n) = ϕ(p)ϕ(q), donde ϕ de-
nota la función de Euler. Él elige 1 < e < ϕ(n) con mcd(e, ϕ(n)) = 1, es
decir, estos son primos relativos y luego determina 1 < d < ϕ(n), (usando el
algoritmo de Euclides extendido; ver sección 2.2) de tal manera que
ed ≡ 1 mod ϕ(n).
Como clave pública Bob divulga (n, e) y mantiene a d como clave privada, es
decir, secreta. Alicia puede ahora enviar un mensaje que consta de símbolos
tomados de Zn , usando la función de cifrado
eB : Zn −→ Zn ,
definida por
eB (x) ≡ xe mod n
Bob puede entonces develar el mensaje si utiliza la función de descifrado dB :
Zn −→ Zn definida por
dB (y) ≡ y d mod n,
puesto que se verifica el siguiente teorema:

1.3.5 Teorema. dB (eB (x)) = x, para todo x ∈ Zn .


D EMOSTRACIÓN . Para obtener el resultado, tenemos que demostrar que
x ≡ xed mod n, para 0 = x ∈ Zn . Para ello consideramos dos casos.
Caso 1. p  x y q  x. Dado que ed = 1 + zϕ(n), para algún z ∈ Z adecuado,
se tiene que
dB (eB (x)) ≡ xed mod n
≡ x(x ϕ(n) z
) mod n
≡ x mod n (Teorema de Euler, ver 2.2.10).

Caso 2. p | x y q  x. (El otro caso es similar). Dado que ϕ(n) = ϕ(p)ϕ(q)


tenemos:
dB (eB (x)) ≡ x(xϕ(n) )z mod q
≡ x(x ϕ(q) zϕ(p)
  ) mod q
≡1
≡ x mod q.
Por otro lado, p | (xed − x). Entonces n = pq | (xed − x), lo cual
significa que xed ≡ x mod n. 

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 11

Una persona no autorizada, que solo conoce la clave pública (n, e), nece-
sita, además, el número d para descifrar un mensaje. Este se calcula a partir
de la congruencia de ≡ 1 mod ϕ(n). Si se desea calcular d directamente
usando esta congruencia, es necesario conocer ϕ(n), lo cual es equivalente a
la factorización de n en los número primos p y q. En efecto:
• Si conocemos la factorización n = pq, entonces también

ϕ(n) = (p − 1)(q − 1)

• Si n y ϕ(n) son conocidos, entonces los números p y q podemos calcu-


larlos como soluciones de la ecuación cuadrática

x2 − (n + 1 − ϕ(n))x + n = x2 − (p + q)x + pq = (x − p)(x − q).

Podemos incluso demostrar que a partir del solo conocimiento de d es


factible calcular los dos factores p y q con una probabilidad alta. Dicho de
forma burda, lo anterior afirma que la determinación de d tiene aproximada-
mente el mismo grado de dificultad que la factorización de n.
El procedimiento criptográfico RSA exige números primos grandes. Cómo
encontrar tales números, lo consideraremos en la sección 1.7. El número e
se elige de manera arbitraria y se prueba su primalidad con ϕ(n) por medio
del algoritmo de Euclides. El algoritmo extendido de Euclides suministra de
manera rápida los coeficientes de Bézout x, y ∈ Z, tales que se verifica

xe + yϕ(n) = 1.

Entonces podemos elegir

d ≡ x mod ϕ(n).

El cifrado x −→ xe mod n y el descifrado lo calculamos de manera eficiente


así:
Repetición del cuadrado. Escribimos e como un número 2-adico, es decir,

e = a0 + 2a1 + 22 a2 + · · · + 2k ak ,

donde cada aj ∈ {0, 1}. Entonces


k
xe = xa0 (x2 )a1 (x4 )a2 · · · (x2 )ak .

Notemos que siempre se está elevando al cuadrado y luego se multiplica por


los valores aj . Dado que los números llegan a ser grandes de manera rápida,
en cada paso calculamos módulo n, lo cual es suficiente para el descifrado.

1.3. Criptografía de clave pública


12 Willems/Gutiérrez

1.3.6 Ejemplo. Mostramos ahora el procedimiento RSA en un ejemplo “pe-


queño". Bob elige n = 133 = 7 · 19 y calcula ϕ(n) = 6 · 18 = 108. Él
hace pública la clave (n, e) = (133, 5). Al utilizar el algoritmo extendido de
Euclides obtiene
1 = 2 · 108 − 43 · 5.
Su clave secreta es −43 = 65 mod 108. Si Alicia desea enviar a Bob el
número 7 como mensaje, entonces ella para cifrarlo utiliza la clave pública
e = 5, obteniendo
75 = 16807 ≡ 49 mod 133.
Bob descifra el número recibido 49 utilizando su clave privada d = 65 así
4965 ≡ 7 mod 133.

Aplicaciones del RSA en la práctica. El procedimiento criptográfico RSA


se encuentra hoy presente como solución al manejo seguro de datos en mucho
productos. A continuación mostramos algunos de estos.
SSH (Secure Shell). Este es un protocolo de la red con el cual no solo pode-
mos entrar, sino ejecutar programas en un computador situado, por ejem-
plo, en una ciudad lejana. Este hace posible una auténtica y segura
conexión entre computadores sobre un canal inseguro. El procedimiento
RSA solo se utiliza para lograr la conexión. Para el cifrado de la comu-
nicación propia se utilizan procedimientos simétricos rápidos, por ejem-
plo, AES (Advanced Encryption Standard, ver capítulo 12 en [14]). Esto
significa que el SSH utiliza un cifrado híbrido.
SSL (Secure Socket Layer). Este es un protocolo de cifrado desarrollado por
Netscape para la transmisión de datos en Internet, que es utilizado por
todos las conexiones https en la Web.
PGP (Pretty Good Privacy). Este es un paquete de software desarrollado por
Phil Zimmermann para uso privado, con el cual se pueden cifrar men-
sajes electrónicos. Este es un procedimiento híbrido como SSH. Para el
intercambio de claves, en sus primeros años se utilizó el RSA; desde fi-
nales del 2002 se usa el procedimiento de ElGamal, que consideraremos
a continuación.
Mientras el procedimiento RSA fundamenta la dificultad sobre la factori-
zación de números grandes, el procedimiento de ElGamal, introducido en
1985, aprovecha la dificultad del cálculo del logaritmo discreto para funda-
mentar el cifrado.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 13

1.3.7 Procedimiento criptográfico de ElGamal. Bob elige un número primo


grande p, para el cual el logaritmo discreto en Z∗p no es soluble en un tiempo
justificable. Él elige un generador del grupo cíclico Z∗p , digamos α y un a ∈ N,
con 1 ≤ a ≤ p − 2. Luego calcula β = αa mod p. Como clave pública, Bob
suministra la terna (p, α, β) y mantiene en secreto el número a.
Alicia desea enviar a Bob el mensaje x ∈ Zp = P. Para ello elige un k
arbitrario, con 2 ≤ k ≤ p − 2 y cifra a x con la pareja (y1 , y2 ) ∈ Zp × Zp = C,
donde
y1 ≡ αk mod p y y2 ≡ xβ k mod p.
Bob descifra esta pareja de la siguiente manera

(y1 , y2 ) −→ y2 (y1a )−1 mod p.

No es difícil verificar que este descifrado suministra el mensaje original que se


envió. En efecto,

y2 (y1a )−1 ≡ (xβ k )(αak )−1 mod p


k k −1
≡ (xβ )(β ) mod p
≡ x mod p.

En el procedimiento de ElGamal el mensaje x se oculta mediante la multi-


plicación de este con β k mod p. Si se pudiese resolver de manera eficiente el
logaritmo discreto en Z∗p , entonces se podría determinar k a partir de y1 ≡ αk
mod p y también x a partir de y2 .

1.3.8 Ejemplo. Consideremos una vez más un ejemplo “pequeño". Sea p =


2 · 53 + 1 = 107. Dado que

253 ≡ 106 ≡ −1 mod 107,

se tiene que 2 tiene orden 106 en el grupo cíclico Z∗107 y, por lo tanto, es un
generador. Bob elige a = 51 y calcula

β = 251 mod 107 = 80 mod 107.

Como clave pública Bob presenta la terna (p, α, β) = (107, 2, 80) y mantiene
a = 51 en secreto. Alicia desea enviar a Bob x = 83 y para ello elige k = 17.
Ella envía

y1 ≡ 2k ≡ 104 mod 107 = 104 y y2 ≡ xβ k ≡ 74 mod 107 = 74.

1.3. Criptografía de clave pública


14 Willems/Gutiérrez

Bob calcula

y2 (y1a )−1 ≡ 74 · (10451 )−1 mod 104 ≡ 83 mod 107 = 83,

obteniendo así el mensaje x = 83.

Tanto el procedimiento criptográfico RSA como ElGamal condicionan a un


costo múltiple en comparación con los procedimientos simétricos. Por lo tanto,
no es razonable encriptar mensajes largos utilizando tales procedimientos. En
este punto, las dos partes en comunicación se ponen de acuerdo en una clave
común que determina el procedimiento simétrico de cifrado. La clave se in-
tercambia bajo un procedimiento lento, pero seguro, y el intercambio propio
de la información ocurre sobre un procedimiento simétrico poco seguro, pero
rápido. Diffie y Hellman han propuesto en [5] para el intercambio de claves el
siguiente procedimiento:

1.3.9 El intercambio de claves de Diffie-Hellman (1976). Sean G un grupo


y g ∈ G de orden n públicos. Alicia y Bob desean intercambiar una clave
común para un procedimiento simétrico. Es decir, alguna potencia de g como
sigue:

1. Alicia elige un a ∈ {2, . . . , n − 1} cualquiera y envía ga a Bob.

2. Bob elige un b ∈ {2, . . . , n − 1} y envía gb a Alicia y calcula (ga )b =


gab .

3. Alicia calcula (gb )a = gba .

La clave secreta acordada es entonces gab = gba . La seguridad de este inter-


cambio de claves depende de la solubilidad del logaritmo discreto.

Una persona no autorizada puede, por ejemplo, interceptar el canal y tener


acceso a ga y gb . Si el intruso está en condiciones de resolver de manera
eficiente el logaritmo discreto, entonces puede encontrar a y b y así obtener la
clave gab . Hasta el momento, se desconoce si para un intruso es equivalente
el problema de calcular la clave secreta común, descrito con anterioridad en el
protocolo Diffie-Hellman, y el cálculo del logaritmo discreto. Si G es el grupo
determinado por los puntos de una curva elíptica, entonces la equivalencia
anterior es cierta, como han demostrado Boneh y Lipton en [3].
Un protocolo de intercambio de claves de esta naturaleza deja abierta la pre-
gunta central sobre autenticidad. ¿De dónde sabe Alicia que la clave recibida
proviene en efecto de un intercambio con Bob y no de un intruso, llamémoslo

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 15

Óscar, que ha intervenido el canal entre Alicia y Bob? Alicia intercambia en-
tonces, sin saberlo, mensaje con Óscar utilizando la clave común gao y este a
su vez con Bob al usar gbo . Así go es la clave para Óscar. Él puede también
falsificar información de Alicia y de Bob sin que los dos lo noten.
Este problema de autenticidad se resuelve hoy a través de instancias confia-
bles, que puedan expedir certificados para la clave del usuario. Ahora bien, es-
tas dependen del problema de si se va a utilizar la clave directa para una comu-
nicación o si sólo desea ponerse de acuerdo para reciprocar información, con
el intercambio de una clave común como en el protocolo de Diffie-Hellman.
La última situación, grosso modo, no designa gab como clave común, sino que
la entidad que certifica suministra gc , donde c ∈ {2, . . . , n − 1} y gc depende
de Alicia y Bob. Bob y Alicia utilizan la clave gc que se les asignó para el
intercambio de la información. Más información sobre estos protocolos puede
encontrarse en [14].

1.3.10 Ejercicios. 1. Sean a, b ∈ Z. Demuestre que


(a) La congruencia ax ≡ b mod n tiene solución si y sólo si d =
mcd(a, n) es un divisor de b.
(b) Existen exactamente d soluciones 0 ≤ x ≤ n − 1.
(c) Las soluciones se pueden determinar con el algoritmo de Euclides.
En particular, el logaritmo discreto puede resolverse de manera eficiente
en el grupo aditivo Zn .

1.4 Signaturas
Las signaturas son firmas digitales que con frecuencia son indispensables en
muchos mensajes electrónicos. Pensemos, por ejemplo, en un contrato de com-
pra, en una transacción bancaria, una autorización de recaudo o en un e-mail
importante. Para el esbozo de tal protocolo de signaturas debemos considerar
lo siguiente:
• La firmas digitales no se pueden adjuntar al final del mensaje, de lo
contrario, de manera fácil se pueden cortar y reemplazar con una falsa.
• Cada copia de un mensaje firmado digitalmente es idéntica al original.
• Tal como sucede con la firma manual, cuando, por ejemplo, se le com-
para con la que aparece en la tarjeta de crédito, cualquiera debería estar
en condiciones de verificar su autenticidad. Por lo tanto, debería estar
disponible y de manera pública un algoritmo de verificación.

1.4. Signaturas
16 Willems/Gutiérrez

Estos son solo algunos de los problemas que plantean las signaturas digitales.

1.4.1 Definición. Un esquema de signatura es una terna (P, S, K) de con-


juntos finitos

P, los mensajes (en general, los textos planos)


S, las signaturas
K, las claves

con las siguientes condiciones:


Para cada k ∈ K, existen funciones

sigk : P −→ S

verk : P × S −→ {falso, verdadero},


donde

verdadero, si sigk (x) = s, x ∈ P, s ∈ S
verk (x, s) =
falso, en otro caso.

La signatura sigk suministra la firma bajo un mensaje y con la verificación


verk se prueba. En las aplicaciones, hay un requerimiento para que todas las
funciones de verificación sean públicas. Además, un enemigo no debe tener
posibilidad alguna para falsificar una firma. Es decir, sólo el firmante del men-
saje x puede suministrar la firma s, para la cual verk (x, s) es verdadera.

1.4.2 Esquema de signatura RSA. Sea n = pq, como en el procedimiento


criptográfico RSA, el producto de dos números primos distintos p y q. Además,
Alicia posee como clave pública (n, e) y la privada d, con ed ≡ 1 mod ϕ(n).
Ahora ella desea firmar el mensaje x ∈ Zn = P. Para esto ella calcula

sig(x) = xd mod n ∈ S = Zn

Como función de verificación suministra



verdadero, si x ≡ se mod n
verk (x, s) =
falso, en otro caso.

Notemos que cualquiera puede seguir la verificación, ya que e es conocida al


ser dada como clave pública por Alicia. Si de la verificación surge que x ≡ se
mod n, entonces, se sigue que

s ≡ sde ≡ xd mod n,

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 17

ya que la potenciación con d en Zn (Zn x → xd ∈ Zn ) es inyectiva. Esto


es, la firma no pertenece al mensaje x, por lo tanto, es falsa.
Además, para este procedimiento debe garantizarse la autenticidad de la
clave pública, digamos a través de un certificado de una organización confia-
ble, ya que de lo contrario Óscar, el malo, podría suplantar la firma de Alicia
en un mensaje enviado a Bob que se vería como emitido y firmado por aquella.
Ahora podemos considerar el procedimiento de ElGamal para introducir sig-
naturas.

1.4.3 Esquema de signatura ElGamal. Como en el procedimiento criptográ-


fico de ElGamal, sea p un número primo, para el cual el problema del logaritmo
discreto no puede resolverse en un tiempo justificable. Sea α un generador de
Z∗p y β = αa , para algún a ∈ {2, . . . , p − 2}. Alicia posee la clave pública
(p, α, β). Si desea firmar un mensaje x ∈ Zp = P, entonces elige de manera
arbitraria 1 ≤ k ≤ p − 2, el cual es primo relativo con p − 1 y firma de acuerdo
con la siguiente función:

Zp x −→ sig(x) = (s1 , s2 ) ∈ Zp × Zp−1 = S,

donde s1 = αk mod p y s2 = (x − as1 )k−1 mod (p − 1). Como función


de verificación hace público

verdadero, si β s1 ss12 ≡ αx mod p
verk (x, s1 , s2 ) =
falso, en otro caso.

Presentamos a continuación algunas observaciones.


1. Notemos que en la signatura existe el factor k−1 mod (p − 1), porque
mcd(k, p − 1) = 1.

2. Si (s1 , s2 ) es la signatura de x, entonces se verifica que


−1
β s1 ss12 ≡ αas1 αk(x−as1 )k ≡ αx mod p.

Esto nos dice que si la signatura es auténtica, es decir, de Alicia, en-


tonces Bob puede chequear si el mensaje x no proviene de ella.

3. El número aleatorio k debe permanecer en secreto, de lo contrario, Óscar


puede calcular
a = (x − ks2 )s−1
1 mod p,
si conoce x y su signatura sig(x) = (s1 , s2 ), es decir, Óscar conocería
la clave secreta de Alicia.

1.4. Signaturas
18 Willems/Gutiérrez

4. Para cada signatura debe elegirse un factor k diferente. De otra manera,


Óscar podría calcularlo con facilidad. En efecto, supongamos que Alicia
firma dos mensajes x = x con el mismo k. Entonces
β s1 ss12 ≡ αx mod p,
s 
β s1 s12 ≡ αx mod p.
Por lo tanto,
 s −s2
αx−x ≡ s12 mod p.
Óscar hace la suposición s1 = αk mod p, entonces
x−x 
α ≡ αk(s2 −s2 ) mod p.
En consecuencia,
x − x ≡ k(s2 − s2 ) mod (p − 1),
es decir,
k = (x − x )(s2 − s2 )−1 .
Óscar puede entonces calcular k si conoce x, x , sig(x) y sig(x ). Con-
secuentemente, usando 3 tendría a, la clave privada de Alicia.
5. Supongamos que Óscar desea falsificar la signatura de Alicia en el men-
saje x. Si hace una suposición para s1 , entonces debe computar s2 .
Dado que β s1 ss12 ≡ αx mod p, está él más o menos obligado a resolver
el logaritmo discreto
s2 = logs1 αx β −s1 .
Si, por el contrario, fija a s2 , entonces debe encontrar s1 con la ayuda de
β s1 ss12 ≡ αx mod p.
Para este cálculo no es conocido un algoritmo eficiente.
Un lector atento debe constatar que las signaturas, cuando se usa RSA, tienen
la misma longitud que el mensaje y que para la signatura de ElGamal se nece-
sita el doble de la longitud. Esto ocasiona un gasto enorme (en tiempo y espa-
cio de memoria), deseable de reducir. Para ello introduciremos en la próxima
sección las Hash-funciones.

1.4.4 Ejercicios. Alicia posee la clave pública (p, α, β) = (107, 2, 80). Como
función de verificación para la signatura de ElGamal suministra
ver(x, s1 , s2 ) = verdadero ⇔ 80s1 ss12 ≡ 2x mod 107.
Alicia firma el mensaje x con (9, 93). ¿Cuáles de los siguientes mensajes
x = 10, x = 83, x = 17 de seguro no son de Alicia?

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 19

1.5 Funciones Hash


Las funciones Hash (resumen) transforman conjuntos “grandes" en conjuntos
“pequeños". Estas se utilizan no solo para las signaturas, sino también en
múltiples aplicaciones, por ejemplo, en la detección de virus o pruebas gene-
rales que controlan la integridad de la información. Notaremos con Z∞ 2 el
conjunto de todas las cadenas de bits de cualquier longitud, pero finita.

1.5.1 Definición. Una función h : Z∞2 −→ Z2 , con n ∈ N fijo se denomina


n

un función Hash. h(x) se llama usualmente la huella digital de x.

Una función Hash hace de un mensaje x de longitud cualquiera, una con


longitud finita y fija dada de antemano. Tales funciones son, sin duda, no
inyectivas. Es decir, existen x, x ∈ Z∞  
2 , x = x con h(x) = h(x ).
Si en lugar de usar el mensaje x utilizamos h(x) para firmarlo, entonces
estamos en presencia del siguiente problema. Si firmamos mediante h(x), en-
tonces tenemos firmados simultáneamente todos los mensajes x , con h(x) =
h(x ). Por lo tanto, en las aplicaciones criptográficas se hace necesario escoger
la función Hash con cuidado. En la práctica debería ser imposible encontrar
colisiones, es decir, x = x con h(x) = h(x ).

1.5.2 Definición. Una función Hash h se llama resistente a colisiones, si


computacionalmente, es decir, en tiempo justificable, es imposible encontrar
dos mensajes diferentes x = x , con las mismas huellas digitales, esto es,
h(x) = h(x ).

Entonces, un problema interesante es construir funciones Hash resistentes a


colisiones.

1.5.3 Teorema. Sea p un número primo seguro, es decir, p = 2q + 1, con q


un número primo. Sea además α un generador de Zp y β ∈ Z∗p cualquiera.
Consideremos ahora la función f : Zq × Zq −→ Zp definida por

f (x1 , x2 ) = αx1 β x2 mod p.

Por lo tanto, si es posible encontrar en un tiempo razonable una colisión, en-


tonces el logaritmo discreto logα β puede ser computado eficientemente.

D EMOSTRACIÓN . Sean x = (x1 , x2 ) y x = (x1 , x2 ) con f (x) = f (x ).


Entonces
 
αx1 β x2 ≡ αx1 β x2 mod p.

1.5. Funciones Hash


20 Willems/Gutiérrez

Es decir,
 
αx1 −x1 ≡ β x2 −x2 mod p.
Sea β = αk , con 0 ≤ k ≤ p − 2. Entonces tenemos
 
αx1 −x1 ≡ αk(x2 −x2 ) mod p,

lo cual implica que

x1 − x1 ≡ k(x2 − x2 ) mod (p − 1). (1.1)

Podemos suponer que 0 ≤ x2 , x2 ≤ q − 1, por lo tanto, |x2 − x2 | < q. Dado


que p − 1 = 2q, se tiene que d := mcd(p − 1, x2 − x2 ) ∈ {1, 2}.
Si d = 1, entonces la ecuación (1.1) tiene la única solución

k = (x1 − x1 )(x2 − x2 )−1 mod p.

Si d = 2, entonces la ecuación (1.1) tiene dos soluciones, digamos k y k (ver



ejercicios 1.3.10). Verifique cuál de las dos implica α = β k o α = β k . 
Consideremos los elementos en Zp , respectivamente en Zq en su re-
presentación binaria. Entonces, por el teorema anterior podemos tomar

2 −→ Z2 .
f : Zm n

Asumamos que r := m − n ≥ 2. Por ejemplo, si q = 11 y p = 2q + 1 = 23,


entonces r = 8 − 5 = 3.

1.5.4 Construcción de una función Hash. Sean x ∈ Z∞ 2 una cadena de bits


de cualquier longitud. Denotemos con l(x) la longitud binaria de x.

Paso 1. Coloque al inicio de la cadena la cantidad mínima de ceros, de tal


manera que la longitud de esta sea divisible por r.

Paso 2. Al final de esta cadena resultante, ponga r ceros. Denote esta cadena
con y.

Paso 3. Añada a esta cadena una nueva, la cual se obtiene de la siguiente


manera: Escriba l(x) en forma binaria y agregue el mínimo número de
ceros al inicio, de tal forma que la longitud de esta sea divisible por r−1.

Paso 4. Divida la cadena resultante en subcadenas de longitud r − 1 e intro-


duzca al inicio de cada segmento un uno y agregue esta sucesión al final
de y.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 21

Entonces a partir de x obtenemos una secuencia

x1 · · · xt ,

donde l(xj ) = r, para j = 1, . . . , t. El valor Hash de x se obtiene por iteración


de la siguiente manera:
Sea h0 := (0 . . . , 0) ∈ Zn2 . Para 1 ≤ i ≤ t definimos recursivamente

hi := f (hi−1 , xi )

y definimos h(x) := ht . Notemos que l(hi−1 , xi ) = n + r = m y f está


definida para este vector.

1.5.5 Ejemplo. Sea r = 3 y x = 1011110. Notemos que l(x) = 7. La


sucesión x1 · · · xt se obtiene de la siguiente manera.
Paso 1. 001011110 (Longitud divisible por r = 3, se introducen ceros).

Paso 2. 001011110000 (Introducir r ceros al final).

Paso 3. 7 = 111 (Representación binaria de l(x)). Agregamos un cero al


inicio de tal manera que la longitud sea divisible por 2. Se obtiene 0111.

Paso 4. 101111 (Llenamos los segmentos con unos).


Con esto tenemos para x1 · · · xt la cadena

001011110000101111.

1.5.6 Lema. Sean x = x sucesiones binarias de longitud finita y sean


x1 · · · xt y x1 · · · xt las correspondientes sucesiones binarias con las cuales
iteradamente se calculan h(x) y h(x ). Si t < t , entonces existe un 0 ≤ i < t
tal que xt−i = xt −i .
D EMOSTRACIÓN . Sean l = l(x) y l = l(x ) las longitudes de x y x ,
respectivamente, y sean s y s el número de palabras xi y xi correspondientes
después de introducir r ceros (pasos 3. y 4.) en las representaciones binarias
de l y l , respectivamente. Esto es

x = x1 · · · xa−1 0 ·
· · 0 xa+1 · · · xt (1.2)
  
r s

x = x1 · · · xa −1 0 ·


· · 0 xa +1 · · · xt (1.3)
  
r
s

1.5. Funciones Hash


22 Willems/Gutiérrez

Caso 1. s = s . Existen dos posibilidades:

1. s < s . Entonces se tiene xa = 0 · · · 0 (en (1.2)). En la misma


posición como un xa +i = 0 · · · 0 en (1.3).
2. s > s . Similar al anterior.

Caso 2. s = s , l(x) = l(x ). Entonces xa+1 · · · xt = xa +1 · · · xt .

Caso 3. s = s , l(x) = l(x ). Existe alguna diferencia delante de los r ceros.

1.5.7 Teorema. La función Hash construida arriba de manera iterada es re-


sistente a colisiones si el logaritmo discreto en Z∗p no puede ser computado en
un tiempo justificable.
D EMOSTRACIÓN . Sea (x, x ) una colisión para h. Es decir, x = x con
h(x) = h(x ). Sean x1 · · · xt y x1 · · · xt las correspondientes sucesiones bina-
rias con las cuales iteradamente se calculan h(x) y h(x ). Sin perder generali-
dad, sea t ≤ t .
Supongamos que existe un 0 ≤ i < t de tal forma que ht−i = ht −i , pero
ht−i−1 = ht −i−1 . Esto suministra

f (ht−i−1 , xt−i ) = ht−i = ht −i = f (ht −i−1 , xt −i )

una colisión para f , ya que ht−i−1 = ht −i−1 .


Sea ahora ht−i = ht −i , para todo 0 ≤ i ≤ t. Por el lema 1.5.6 existe un
0 ≤ i < t tal que
xt−i = xt −i .
Obtenemos entonces otra colisión para f , ya que

f (ht−i−1 , xt−i ) = ht−i = ht −i = f (ht −i−1 , xt −i ).

Hemos demostrado que a partir de una colisión para h es fácil encontrar una
para f . Pero, por hipótesis, una colisión no puede ser calculada eficientemente.
Entonces no se puede encontrar una colisión para h. 
Las funciones Hash utilizadas en la práctica, por ejemplo, la SHA-1 (Secure
Hash Algorithm 1) son construidas iteradamente similares como en 1.5.4. Una
de las signaturas estándar diseñadas en 1995 por NIST (National Institute of
Standards and Technology) utiliza la función Hash SHA-1, una serie de bits de
longitud 160. En febrero de 2005, Xiaoyun Wang, Yiqun Lisa Yin y Hongbo
Yu demostraron que la búsqueda de colisiones en la SHA-1 puede ser exitosa,
contrario a lo que en teoría se esperaba. Con posterioridad se ha utilizado el
SHA-256 que tiene longitud 256 bits en lugar de 160.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 23

1.6 Esquemas de compartimentación de secretos


La compartimentación de secretos tiene como motivación central el re-
conocimiento de situaciones donde existe una clave secreta que permite el ac-
ceso a información sobre actividades muy importantes. Si la persona que tiene
la clave la pierde o elimina los archivos donde esta se encuentra, entonces la
información privilegiada se pierde. Por eso es necesario buscar la forma de
evitar tal situación.
Problema: Consideremos, por ejemplo, un banco con una caja fuerte.
Supongamos que existen tres personas que poseen una llave para abrirla. Pero
una de ellas no confía en alguna de las otras personas. Entonces, para abrir la
caja fuerte son necesarias dos de las tres llaves.
En términos teóricos, un secreto S es conocido únicamente cuando t de n
secretos se pueden juntar, o cuando el secreto S se divide en n partes, de
tal manera que solo mediante el conocimiento de t partes se pueda calcular.
Matemáticamente podemos describir la situación de la siguiente manera:

1.6.1 Definición. Sean t, n ∈ N, con t ≤ n. Un esquema de (t, n)-umbral es


un método para dividir una clave entre un conjunto P de n participantes, de
tal forma que cualesquiera t participantes pueden calcular la clave, pero t − 1
participantes no pueden hacerlo.
El ejemplo de la caja fuerte de un banco es un ejemplo de un esquema de
(2, 3)-umbral. Estos protocolos de compartimentación de secretos fueron dise-
ñados de manera independiente por Blakley [2] y A. Shamir [11] en 1979.

1.6.2 Esquema (t, n)-umbral de Shamir. Supongamos que existe un reparti-


dor de claves, digamos D, que escoge un número primo p, de tal forma que
p ≥ n + 1. Él elige x1 , . . . , xn ∈ Zp , distintos dos a dos y asocia cada xi a
una persona Pi ∈ P. Los valores xi son públicos.
Función distribuidora de partes. Supóngase que D desea partir la clave
K ∈ P.
1. Él escoge arbitrariamente a1 . . . , at−1 ∈ Zp .

2. Él calcula para 1 ≤ i ≤ n los valores yi = k(xi ), donde


t−1
k(x) = K + aj xj ∈ Zp [x].
j=1

3. Él suministra el fragmento yi a la persona Pi por cada i.

1.6. Esquemas de compartimentación de secretos


24 Willems/Gutiérrez

Para verificar que el esquema de Shamir es efectivamente un esquema de


(t, n)-umbral, debemos demostrar las siguientes afirmaciones:

1. Cualesquiera t personas pueden computar la clave K.

2. Cualesquiera t − 1 personas no pueden determinar K.

D EMOSTRACIÓN .

1. Sean Pi1 , . . . , Pit las t personas. Entonces xi1 , . . . , xit están dados. Pre-
sentamos dos métodos diferentes:

(a) Resolución de un sistema de ecuaciones lineales: para obtener la


clave K = a0 = k(0), podemos solucionar
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 xi1 x2i1 · · · xt−1
i1 a0 yi1
⎜ 1 xi2 x2i2 · · · xt−1 ⎟⎜ a1 ⎟ ⎜ yi2 ⎟
⎜ i2 ⎟⎜ ⎟ ⎜ ⎟
⎜ .. .. ⎟⎜ .. ⎟=⎜ .. ⎟
⎝ . . ⎠⎝ . ⎠ ⎝ . ⎠
1 xit x2it ··· xt−1
it at−1 yit

La primera matriz, que notaremos con X, es de Vandermonde, por


lo tanto, invertible,
 ya que todos los xij son distintos dos a dos y
det(X) = 1≤j<k≤t(xij − xik ) ∈ Z∗p . Entonces el sistema lineal
tiene solución única en Ztp .
(b) Interpolación de Lagrange3 : se cumple que


t  x − xi
k(x) = yij k
∈ Zp [x].
xij − xik
j=1 k=j
1≤k≤t

Claramente k(xij ) = yij , para j = 1, . . . , t. Lo único que necesi-


tamos del polinomio es


t  xik
K = a0 = k(0) = yij .
xik − xij
j=1 k=j

3
J OSEPH -L OUIS DE L AGRANGE (1736-1813). Matemático francés. La lectura de una obra
del astrónomo inglés Edmund Halley despertó su interés por la matemáticas y tras un año de
incesante trabajo era ya un matemático consumado. Escribió numerosos artículos sobre cálculo
integral y las ecuaciones diferenciales generales del movimiento de tres cuerpos sometidos a
fuerzas de atracción mutuas.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 25

2. Supongamos que un grupo de t − 1 personas desean determinar la clave


K. Tomando el sistema de ecuaciones lineales que se presenta en la
parte 1, podemos obtener un sistema de t − 1 ecuaciones en t indetermi-
nadas. Supongamos cualquier valor para K = a0 . Entonces podemos
resolver el sistema de ecuaciones lineales
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 xi1 x2i1 · · · xt−1
i1 a0 yi1
⎜ 1 xi2 x2i2 · · · xt−1 ⎟ ⎜ a1 ⎟ ⎜ yi ⎟
⎜ i2 ⎟⎜ ⎟ ⎜ 2 ⎟
⎜ .. .. ⎟ ⎜ .. ⎟ = ⎜ .. ⎟ ,
⎝ . . ⎠⎝ . ⎠ ⎝ . ⎠
1 xit−1 x2it−1 · · · xt−1it−1 at−1 yit

con k(0) = a0 = K, únicamente para yij = k(yij ), con j = 1, . . . , t−1.


Entonces no podemos excluir algún valor de K. Así todos estos K son
por igual buenos.

1.6.3 Ejemplo. Sean p = 17, t = 3 y n = 4. Asociemos xi := i2 a cada


participante Pi , con i = 1, . . . , 4. Supongamos que los participantes de P =
{P1 , P3 , P4 } reúnen sus fragmentos yi , que son 7, 10 y 16 respectivamente.
Escribamos el polinomio en la forma

k(x) = a0 + a1 x + a2 x2 ∈ Z17 [x].

Calculando k(1), k(9) y k(16) obtenemos el siguiente sistema de ecuaciones


lineales

a0 + a1 + a2 = 7
a0 + 9a1 + 4a2 = 10
a0 − a1 + a2 = −1

La solución del sistema es

(a0 , a1 , a2 ) = (7, 4, −4).

Entonces la clave compartida es 7.

1.7 Algoritmos para pruebas de primalidad


El procedimiento criptográfico RSA necesita el conocimiento de números pri-
mos grandes. En esta sección abordamos la pregunta, cómo estos pueden
conseguirse. Existen muchos procedimientos para probar si un número na-
tural dado n es primo o no. Podemos, por ejemplo, usar la caracterización de
números primos dada por el teorema de Wilson.

1.7. Algoritmos para pruebas de primalidad


26 Willems/Gutiérrez

1.7.1 Teorema. (Wilson) 4 Un número natural n es un número primo si y solo


si (n − 1)! ≡ −1 mod n.

D EMOSTRACIÓN . Supongamos que n es un número primo. La expresión


(n − 1)! es el producto de todos los elementos del grupo Z∗n . En este producto,
con cada a ∈ Z∗n , aparece a−1 ∈ Z∗n y podemos juntar las pareja aa−1 = 1,
con excepción de los a ∈ Z∗n para los cuales se verifica que a2 = 1. Por otro
lado, la ecuación x2 = 1 tiene en Z∗n solamente las soluciones ±1 y se tiene
así la conclusión.
Recíprocamente, supongamos que n no es un número primo, sino que admite
un divisor 1 < q < n. Entonces (n − 1)! también es divisible por q, por lo
tanto, no es primo relativo con n. Pero −1 es primo relativo con n, lo que es
una contradicción. 
Evidentemente, esta caracterización requiere el cálculo de (n − 1)! mod n,
que para números grandes no se puede realizar. Los algoritmos tienen un
tiempo de ejecución exponencial, de tal manera que el cálculo es sencillamente
muy grande.
Solo hasta el 2002 Agrawal, Kayal y Saxena han presentado un algoritmo
con tiempo de ejecución polinomial, el cual decide si un número natural n
es primo o no. En correspondencia con sus inventores, hoy es denominado
algoritmo AKS.
Diferentes autores han logrado mejoramientos del tiempo de ejecución, obte-
niendo tiempos de orden O((ln n)6+ ), con
> 0 arbitrario. No obstante, to-
dos son hasta el momento impracticables para n suficientemente grande. El
AKS es el único algoritmo con tiempo de ejecución polinomial que puede pro-
bar si un número natural n dado es en realidad un número primo o no. Por
su complejidad no lo trataremos aquí y remitimos al lector a [1]. Una versión
mejorada de las ideas de Lenstra puede encontrarse en [17].
Tanto la prueba de primalidad usando el teorema de Wilson como la del algo-
ritmo AKS son determinísticas, es decir, podemos decidir de manera defini-
tiva, si n es o no un número primo. Ninguno de los procedimientos determinís-
ticos conocidos son, sin lugar a dudas, practicables para n grande. En lugar
de estos, podemos recurrir a pruebas pro-babilísticas de primalidad. Estas
son rápidas, pero solo nos dicen que n es con una alguna probabilidad
un
número primo. Si 0 <
< 1, entonces n es primo con una alta probabilidad y
podemos, por ejemplo, utilizarlo en el procedimiento criptográfico RSA.

4
John Wilson (1741-1793). Estuvo activo muy pocos años en el Peterhouse College in
Cambridge; más adelante, se dedicó principalmente a la jurídica y al álgebra.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 27

Recordemos el pequeño teorema de Fermat5 (ver 2.2.9): si p es un número


primo, entonces para cada a ∈ Z, con mcd(a, p) = 1 se verifica que ap−1 ≡ 1
mod p.
Test de Fermat. Dado n ∈ N, verifique para 2 ≤ a < n, con mcd(a, n) = 1
si an−1 ≡ 1 mod n.

Observaciones sobre el test de Fermat. Sea n ∈ N.

1. Si an−1 ≡ 1 mod n, entonces con certeza n no es un número primo.

2. Puede suceder que an−1 ≡ 1 mod n, para todo a con mcd(a, n) = 1 y,


sin embargo, n no es un número primo. Tales números son denominados
números de Carmichael6 .

3. A. Korselt7 presentó una caracterización sencilla de los números de


Carmichael (ver [17], p. 105). En 1994, Alford, Granville y Pom-
merence demostraron que existe un número infinito de números de
Carmichael. Este resultado requiere un estudio profundo en teoría
analítica de números. En consecuencia, tenemos que para infinitos
números naturales n ∈ N el test de Fermat no puede decidir si n es
un número primo o no.

4. El número de Carmichael más pequeño es 561. Demostramos ahora que


561 es un número de Carmichael. En efecto, n = 561 = 3 · 11 · 17. Sea
a ∈ Z, con mcd(a, n) = 1. Por el pequeño teorema de Fermat se sigue
que:

a2 ≡ 1 mod 3, a10 ≡ 1 mod 11 y a16 ≡ 1 mod 17.

Dado 560 = 2 · 280 = 10 · 56 = 16 · 35, tenemos que:

a560 ≡ 1 mod 3, a560 ≡ 1 mod 11, y a560 ≡ 1 mod 17.

Por lo tanto, a560 ≡ 1 mod 561.

El próximo test está basado en el siguiente hecho:


5
Pierre Fermat (Toulouse, 1601-1665). Jurista y matemático destacado, cuyos principales
trabajos se encuentran en la teoría de números.
6
Robert Daniel Carmichael (Urbana-Champaign, 1879-1967). Escribió libros de texto sobre
teoría de la relatividad, teoría de números, teoría de grupos, análisis diofantino y cálculo.
7
Alwin Reinhold Korselt (1864 - 1947). Alemán, docente de escuela secundaria. La mayo-
ría de sus trabajos se orientaron a preguntas relevante en matemática elemental, en particular
geometía y teoría de números.

1.7. Algoritmos para pruebas de primalidad


28 Willems/Gutiérrez

1.7.2 Lema. Sea p un número primo impar y a ∈ Z, con mcd(a, p) = 1. Si


r
p − 1 = 2s t, con 2  t, entonces at ≡ 1 mod p o a2 t ≡ −1 mod p, para
algún 0 ≤ r < s.
D EMOSTRACIÓN . Por el pequeño teorema de Fermat tenemos que:
(p−1) (p−1)
p | (ap−1 − 1) = (a 2 + 1)(a 2 − 1).

Por lo tanto,
(p−1) (p−1)
p | (a 2 + 1) o p | (a 2 − 1).
(p−1) r
1. Si p | (a 2 + 1), entonces a2 t ≡ −1 mod p con r = s − 1.
(p−1)
2. Si p | (a 2 − 1), entonces procedemos por inducción sobre s. 

Sea n un número impar y escribamos n − 1 = 2s t, con 2  t. Llamaremos


a a ∈ {2, · · · , n − 1} un testigo para la composición de n si at ≡ 1 mod n
r
y a2 t ≡ −1 mod n, para todo 0 ≤ r < s. Podemos demostrar, utilizando
argumentos de la teoría de números, que

|{a | 1 ≤ a < n, mcd(n, a) = 1, a es un testigo}| ≥ 34 ϕ(n). (1.4)

Ver proposición V. 1.7 en [8].

1.7.3 Test de Miller-Rabin. Supongamos que deseamos determinar si un


número grande impar n ∈ N dado es un número primo o compuesto.

1. Elija de manera arbitraria e independiente k números 2 ≤ a ≤ n − 1.

2. Determine con el algoritmo de Euclides mcd(a, n). Si mcd(a, n) = 1,


entonces n es compuesto.

3. Pruebe si bajo el a elegido se encuentra un testigo para la composición.


Con el primer encuentro se finaliza el algoritmo y n no es un número
primo. Si no es posible encontrar tal número a, entonces el algoritmo
termina con fallido.

Observaciones sobre el test de Miller-Rabin. Si el test de Miller-Rabin fi-


naliza con fallido, entonces n tiene la apariencia de un número primo, pero no
necesariamente lo es. La probabilidad de que para un número compuesto n el
test de Miller-Rabin termine con fallido es menor que ( 14 )k , por (1.4). Si se
escoge k muy grande, entonces la probabilidad de que n sea un primo es alta,
sobre la base que el test de Miller-Rabin termine con fallido.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 29

Un test de primalidad probabilístico menos efectivo que el de Miller-Rabin


es el de Solovay-Strassen. Este se fundamenta en el teorema de Euler 2.2.13.
Sea n ∈ N impar dado. Llamaremos de nuevo a ∈ {2, . . . , n − 1} un testigo
para la composición de n si se verifica que
n−1  
a 2 ≡ na mod n,
a
aquí n denota el símbolo de Jacobi8 (ver 2.2.18).

1.7.4 Test de Solovay-Strassen. Sean n ∈ N impar dado y k ∈ N. Esco-


jamos de manera arbitraria e independiente k números a ∈ {2, . . . , n − 1},
con mcd(a, n) = 1 hasta encontrar (si es posible) un testigo para la composi-
ción de n. Si tal número existe, entonces n es compuesto. De otra manera,
finaliza el algoritmo con output fallido.
Observaciones sobre el test de Solovay-Strassen. Como en el test de Miller-
Rabin, podemos demostrar otra vez que un testigo para la composición existe
si n es compuesto. La probabilidad de que para un número compuesto n el test
de Solovay-Strassen termine con fallido es menor que ( 12 )k . Por lo tanto, otra
vez, si k es grande, entonces la probabilidad de que n sea primo es alta cuando
el test de Solovay-Strassen termina con fallido.

1.7.5 Ejercicios.
1. Demuestre, utilizando el test de Miller-Rabin, que n = 383, con proba-
bilidad mayor o igual a 1 − ( 14 )5 ≈ 0.999, es un número primo.
2. Elija ahora en 1 en lugar de Miller-Rabin el test de Solovay-Strassen.

1.8 Factorización de números enteros


La seguridad del procedimiento criptográfico RSA depende con fuerza del pro-
blema de factorizar n = pq, con p y q números primos muy grandes. Bajo un
algoritmo de factorización, entenderemos un algoritmo que suministra un di-
visor no trivial para un número compuesto. Son conocidos muchos algoritmos
de este tipo y deseamos tratar con exactitud algunos de estos.
Si deseamos factorizar un número n, entonces deberíamos asegurar, uti-
lizando alguno de los procedimientos de la sección anterior, que n es un
número compuesto; en caso contrario, los algoritmos de factorización no nos
conducirán a meta alguna.
8
Carl Gustav Jacobi (1804-1851). Königsberg, Berlín. Teoría de números, funciones elípti-
cas, ecuaciones diferenciales parciales, determinantes y mecánica analítica.

1.8. Factorización de números enteros


30 Willems/Gutiérrez

1.8.1 El (p − 1)-método de Pollard. Sea 2  n ∈ N un número que se desea


factorizar. Para esto efectúe los siguientes pasos:

1. Escoja B ∈ N y 2 ≤ a < n con mcd(a, n) = 1 (de lo contrario,


habremos terminado).

2. Calcule aB := (((a2 )3 · · · )B mod n ≡ aB! mod n.

3. Determine d := mcd(aB − 1, n).

4. Si 1 < d < n, entonces d es un divisor propio de n y podemos parar. En


caso contrario, elíjase otro B u otro a o ambos y comience de nuevo en
el paso 2.

Algunas observaciones sobre el (p − 1)-método de Pollard.



1. Supongamos que p es un número primo y p | n. Sea p − 1 = si=1 pαi i ,
con primos pi distintos dos a dos y αi > 0. Supongamos que pαi i ≤ B,
para todo i. Entonces p − 1 | B!. Dado que p | n, el pequeño teorema
de Fermat asegura que

aB ≡ aB! ≡ 1 mod p.

Por lo tanto, p | d = mcd(aB − 1, n). Si d = n, entonces tenemos un


caso excepcional y se hace necesario arrancar con un B más grande o
con otro a.

2. El (p − 1)-método de Pollard trabaja con eficiencia si todos los pαi i son


pequeños. Es decir, pαi i ≤ B, para i = 1, . . . , s.

3. En consecuencia, para el método criptográfico RSA, escogeremos n =


pq, donde p − 1 y q − 1 contienen ambos números primos grandes. Por
ejemplo, escojamos p y q como números primos seguros. Es decir, de la
forma p = 2p1 + 1 y q = 2q1 + 1, con p1 y q1 números primos.

1.8.2 Ejercicios.

1. Utilice un sistema algebraico de computación y programe el (p − 1)-


método de Pollard.

2. Calcule un divisor no trivial de 998198809301.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 31

Como hemos anotado, el (p − 1)-método de Pollard estaría adelante para


procedimientos de factorización, si p − 1 tiene solo divisores primos pequeños,
es decir, si el grupo Z∗p no tiene elementos con órdenes un número primos
grandes. Podemos evitar esta desventaja, como demostró Lenstra en 1982, si
reemplazamos el grupo Z∗p por el grupo asociado a una curva elíptica. Aquí
tenemos muchas posibilidades para la elección de la curva, lo cual se refleja
en su orden. A través de esto, es posible evitar elementos con órdenes primos
grandes.
En lo que sigue describiremos el algoritmo de Lenstra utilizando curvas elíp-
ticas (ver sección 2.4). Para ello necesitamos el concepto de reducción de una
curva. Para un número primo p, sea a : Z −→ Zp el homomorfismo de anillos,
que a cada x ∈ Z asigna x := x mod p. Esto es, x −→ x = x mod p.

1.8.3 Definición. Supongamos que está dada una curva elíptica

E0 : y 2 = x3 + ax + b,

con a, b ∈ Z. Sea además p = 2, 3 un número primo con p  4a3 + 27b2 .


Entonces
E p : y 2 = x3 + ax + b

define una curva elíptica sobre el cuerpo Zp , la cual llamaremos la reducción


mod p de E.

La curva E0 es considerada sobre el cuerpo Q. Un punto P = (x, y) sobre


la curva tiene, por lo tanto, coordenadas en Q. Si los denominadores de x y y
son primos relativos con p, entonces estos puntos son invertibles módulo p y
podemos formar los puntos P = (x, y). Naturalmente, el punto P está sobre
la curva reducida módulo p, es decir, Ep . Ahora sucede lo siguiente:
Si P1 y P2 son dos puntos sobre la curva E0 , entonces el punto P3 = P1 +
P2 también pertenece a la curva E0 , y podemos calcular las coordenadas de
P3 utilizando la fórmula de adición desarrollada en la sección sobre curvas
elípticas (ver el teorema 2.4.11).
Si los denominadores de las coordenadas de P1 y P2 son primos relativos
con p, entonces existen P 1 y P 2 y, por lo tanto, podemos calcular otra vez
Q = P 1 + P 2 , pero en general Q no coincide con P 3 . Esto se debe sencilla-
mente a que no podemos formar P 3 , cuando las coordenadas de P3 tienen
denominadores que son divisibles por p. Esto es precisamente lo que se
aprovecha en el siguiente algoritmo.

1.8. Factorización de números enteros


32 Willems/Gutiérrez

1.8.4 Algoritmo de Lenstra sobre curvas elípticas. Supongamos que está


dado un número compuesto n ∈ N con 2, 3  n. Para determinar un divisor no
trivial de n, procedemos de la siguiente manera:
1. Elegimos una curva elíptica
E0 : y 2 = x3 + ax + b,
sobre Q, con a, b ∈ Z y mcd(4a3 + 27b2 , n) = 1. Elijamos, además, un
punto P = (α, β) sobre E0 , con α, β ∈ Z.
Procedemos en concreto de la siguiente forma: fijamos arbitrariamente
α, β ∈ Z y definimos b := β 2 − α3 − aα. Así P = (α, β) está sobre la
curva E0 . Luego calculamos d := mcd(4a3 + 27b2 , n). Si 1 = d < n,
entonces hemos encontrado un factor no trivial de n.
Si d = n, entonces iniciamos otra vez el proceso con una nueva curva
elíptica, de tal manera que podamos suponer que d = 1.
2. Intentamos ahora calcular múltiplos de P mod n, es decir,
2P mod n, 3P mod n, . . . , kP mod n.
Las coordenadas de 2P, 4P, . . . se calculan directamente a partir de la
fórmula de adición. Sus valores pertenecen a Q. Deseamos ahora
leer estos valores módulo n, es decir, tomarlos como elementos de
Zn = {0, 1, . . . n − 1}, para ello es necesario que los denominadores
que aparezcan sean invertibles módulo n. Este es el caso exacto cuando
estos son primos relativos con n. Sean z ∈ Z uno de tales denomina-
dores y d = mcd(z, n).
Si 1 < d < n, entonces hemos encontrado un diviso no trivial de n y
el proceso termina. Si d = 1, entonces intentamos calcular el próximo
múltiplo de P módulo n. Si se presenta la excepción d = n, entonces se
debe iniciar con otra curva o con otro punto sobre esta.
Antes de examinar la eficiencia del algoritmo, consideremos un ejemplo para
aclarar los pasos del procedimiento de Lenstra.

1.8.5 Ejemplo. Sea n = 1739 = 37 · 47.


1. Escogemos a = α = 1 y β = −1. Entonces P = (1, −1) = (x1 , y1 ) y
b = β 2 − α3 − aα = −1. Entonces, la curva está dada por
E : y 2 = x3 + x − 1.
Es claro que mcd(4a3 + 27b2 , n) = mcd(31, n) = 1.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 33

2. Calculamos al inicio 2P mod 1739. Escribamos P = (x1 , y1 ) y 2P =


P + P = (x3 , y3 ), entonces la fórmula de adición nos suministra que
 
3x21 +a 2
x3 = 2y1 − 2x1 = 2

y  
3x21 +a
y3 = 2y1 (x1 − x3 ) − y1 = 3.

Por lo tanto, 2P = (2, 3). Definamos Q := 2P mod 1739 = (2, 3) =


(x1 , y1 ) y calculemos 4P = Q + Q = (x3 , y3 ). Tenemos entonces
 
3x21 +a 2
x3 = 2y1 − 2x1
 13 2
= 6 −4
52
= 62

y
 
3x21 +a
y3 = 2y1 (x1 − x3 ) − y1
 2

= 13
6 2 − 562 − 3
= − 37
63

2
Con esto se tiene que 4P = ( 562 , − 37
63
). Dado que 612 ≡ 628 mod 1739
y 613 ≡ 1264 mod 1739, tenemos que R = 4P mod 1739 =
(49, 185). Para el cálculo de 8P = R + R aparece y1 = 185 en el
denominador y con

mcd(y1 , n) = mcd(185, 1739) = 37,

hemos encontrado un factor no trivial de 1739.

Observaciones sobre el método de Lenstra.

1. Supongamos que pudiésemos calcular kP mod n. Si p es un número


primo con p | n, entonces Q = kP mod p es un punto sobre la curva
reducida módulo p, es decir, Ep . Además, Q = O ya que para el cálculo
de Q al utilizar 2P, 3P, . . . todos los denominadores que aparecen no
son divisibles por p. (Observemos que para dos puntos P1 y P2 la suma
P1 + P2 da como resultado O, si y solo si 0 = x2 − x1 o 0 = y1 .) Con

1.8. Factorización de números enteros


34 Willems/Gutiérrez

esto la curva Ep tiene un elemento de orden mayor que k. Por otro lado,
por el teorema de Hasse9 (ver el teorema 2.4.13) se verifica que

|E p | ≤ p + 1 + p.

Esto trae como consecuencia que para k suficientemente grande no


podremos calcular kP mod n, es decir, en el cálculo de 2P mod n,
3P mod n . . ., aparece en algún momento un denominador z con
mcd(z, n) = 1.

2. De 1 se sigue que el método de Lenstra nos conduce a una factorización,


si existe un número primo p, de tal forma que |Ep | tiene solo divisores
pequeños. En este caso se verifica para muchos puntos y pequeños k que
kP mod p = O, de tal manera que kP mod n no se puede calcular y así
encontramos un divisor no trivial de n. Si para todo número primo p | n
el orden |Ep | de Ep tiene un divisor primo grande, entonces podemos
iniciar con otra curva elíptica. Esa posibilidad de elección no está dada
cuando se utiliza el (p − 1)-método de Pollard.

3. Si n = pq, con p ≈ n y p, q números primos, entonces el tiempo
de ejecución esperado para determinar p o q es Ln [ 12 , 1], por lo tanto,
subexponencial. (Ver A.1.5).

Algunos algoritmos de factorización, en particular el método de Dixon y su


mejoramiento encontrado por C. Pommerance, se fundamentan en una sencilla
idea, la cual presentamos enseguida. El algoritmo de Pommerance se conoce
hoy como el tamiz cuadrático y forma parte de los procedimientos más efec-
tivos.
Idea de la factorización:
Sea n ∈ N dado. Si podemos encontrar x, y ∈ Z con

(i) x ≡ ±y mod n

(ii) x2 ≡ y 2 mod n,

entonces d = mcd(x ± y, n) es un divisor no trivial de n.


D EMOSTRACIÓN . De (ii) se sigue que n | x2 − y 2 = (x − y)(x + y) y de
(i) tenemos que
n  (x + y) y n  (x − y).
9
Helmut Hasse (1898-1979). Matemático alemán. Entre 1917 y 1918 estudió en Kiel, luego
ingresó a Göttingen, donde fue alumno de Edmund Landau, Hilbert, Emmy Noether y Hecke.
Sus principales trabajos fueron en álgebra y teoría de números.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 35

Por lo tanto, d = mcd(x ± y, n) es un divisor no trivial de n. 


El problema se reduce entonces a encontrar x, y ∈ Z que satisfagan (i) y (ii).

1.8.6 Algoritmo de Dixon. Sea n ∈ N compuesto, con 2  n ∈ N dado. Inten-


tamos encontrar un divisor no trivial de n. Para ello efectuamos los siguientes
pasos:

1. Elegimos b ∈ N y un conjunto F (b) = {p1 , . . . , pb }, donde cada pj es


un número primo y estos son distintos dos a dos. El conjunto F (b) es
usualmente denominado una base de factores.

2. Sea c ∈ N, elegido de tal manera que sea un poco más grande que b,
digamos c = b + 10. Para 1 ≤ j ≤ c determinemos xj ∈ N de tal forma
que
αj αj
x2j = p1 1 · · · pb b mod n,
es decir, x2j puede factorizarse módulo n en la base de factores F (b).

3. Para 1 ≤ j ≤ c definamos aj = (αj1 mod 2, . . . , αjb mod 2) ∈ Zb2 y


buscamos un subconjunto C ⊆ {1, . . . , c} tal que

aj = (0, . . . , 0) ∈ Zb2 .
j∈C

  
4. Definamos x := j∈C xj y y := bi=1 pβi i , con βi := 1
2 j∈C αji ,
entonces del paso 2 se sigue que x2 ≡ y 2 mod n.
Si x ≡ ±y mod n, entonces mcd(x ± y, n) suministra un divisor no
trivial de n. En caso contrario, inicie con una nueva base de factores o
con un nuevo C.

Algunas observaciones sobre el método de Dixon.

1. Es usual elegir como base de factores los primeros b números primos


impares. Para ello se hace necesario que b no sea muy pequeño, ya que,
de lo contrario, apenas podríamos encontrar x2j , el cual, módulo n, debe
factorizarse en F (b). Por otro lado, b no debería ser muy grande, ya que
de lo contrario, el paso 2 sería muy dispendioso. Una buena elección
para b está en un orden de magnitud de Ln [ 12 , 12 ].

2. La determinación de xj en el paso 2 no es trivial. Simultáneo con las


elecciones casuales existe un método, el cual se fundamenta en la des-
composición en fracciones continuas. No lo consideraremos aquí, pero

1.8. Factorización de números enteros


36 Willems/Gutiérrez

el lector interesado puede remitirse a la sección 22 de [7]. El proce-


dimiento propuesto por Dixon forma parte de los más eficientes méto-
dos de factorización cuando ejecutamos el paso 2 con el método tamiz
cuadrático, el cual trataremos más adelante.

3. El paso 3 no significa otra cosa que la solución de un sistema de ecua-


ciones lineales. Para resolverlo se tiene:
⎛ ⎞
a1
⎜ ⎟
(z1 , . . . , zc ) ⎝ ... ⎠ = (0, . . . , 0) sobre Z2
ac

o equivalentemente
⎛ ⎞
α11 mod 2 · · · α1b mod 2
⎜ .. .. ⎟
(z1 , . . . , zc ) ⎝ . . ⎠ = (0, . . . , 0).
αc1 mod 2 · · · αcb mod 2

Este sistema de ecuaciones lineales tiene una solución no trivial


(z1 , . . . , zc ), ya que el número de variables es mayor que el número
de ecuaciones.

4. El algoritmo tiene tiempo esperado de ejecución Ln [2, 12 ], por lo tanto,


subexponencial.

Como mencionamos antes, el paso 2 en el método de Dixon requiere un poco


de tacto. Definamos

f (x) = (x + m)2 − n para x = 0, 1, 2, . . .



con m =  n, entonces tenemos c distintas x por determinar, de tal forma
que f (x) pueda factorizarse en la base de factores F (b). Para ello podemos
aprovechar la observación que subyace en el método del tamiz.

1.8.7 Lema. Sea p un número primo. Si f (x) = 0 mod p, entonces se ve-


rifica que f (x ± p) = 0 mod p. Es decir, si x es un cero de f módulo p,
entonces también son ceros de f módulo p todos los elementos de la clase
lateral x + pZ.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 37

D EMOSTRACIÓN . Se verifica que:

f (x ± p) = ((x ± p) + m)2 − n
= (x ± p)2 + 2(x ± p)m + m2 − n
≡ x2 + 2xm + m2 − n mod p
≡ f (x) mod p
≡ 0 mod p 

1.8.8 El método del tamiz cuadrático. Sea n ∈ N impar dado. Para la de-
terminación de un divisor no trivial de n utilizamos el método de Dixon y
efectuamos el paso 2 de la siguiente manera:

1. Elegimos una base de factores F (b) como en método de Dixon, pero con
p1 = −1.

2. Definimos f (x) = (x + m)2 − n, con m =  n.

3. Elegimos s ∈ N y definimos S := {0, ±1, . . . , ±s}, denominándolo


intervalo del tamiz.

4. Para cada número primo p ∈ F (b) buscamos x ∈ {0, . . . , p − 1} con


f (x) = 0 mod p. Puede pasar que no existe tal x (este es el caso
cuando n no es un cuadrado módulo p) o que existen exactamente dos,
que denotaremos con x1p , x2p .

5. Del lema anterior se verifica para todo

x ∈ (x1p + pZ) ∪ (x2p + pZ),

que f (x) = 0 mod p. Para este x, que pertenece al intervalo del tamiz,
determinamos la p-potencia máxima pex que divide a f (x).

6. Si de esta manera no se encuentran suficientes x, de tal forma f (x)


pueda ser factorizado por completo en F (b), entonces agrandamos el
intervalo del tamiz S o elegimos una nueva base de factores.

Algunas observaciones sobre el método del tamiz cuadrático.

1. A raíz de la representación de f (x), en la base de factores tenemos que


admitir solo aquellos números primos p, para los cuales n módulo p sea
un cuadrado.

1.8. Factorización de números enteros


38 Willems/Gutiérrez

2. Una buena elección para la longitud del tamiz s está en un orden de


magnitud de Ln [ 12 , 12 ]. En tal caso, el tiempo de ejecución esperado está
en un orden de magnitud de Ln [1, 12 ], es decir, subexponencial.

3. Si n es el producto de dos números primos igualmente grandes, como


en el procedimiento criptográfico RSA, entonces para la determinación
de los números primos es, por regla general, más eficiente el método del
tamiz cuadrático que el método de curvas elípticas de Lenstra.

1.8.9 Ejercicios. (El método Rho de Pollard).

1. Mediante un sistema algebraico de computación programe el siguiente


procedimiento para determinar un divisor no trivial de n ∈ N.

(a) Defina f (x) = x2 + 1 mod n.


(b) Elija x0 con 0 ≤ x0 ≤ n − 1.
(c) Calcule recursivamente xj := f (xj−1 ) mod n, para j = 1 . . . , k,
donde k se ha elegido fijo.
(d) Para j = 0, 1 . . . , calcule dj = mcd(xk − xj , n) hasta encontrar
un dj con 1 < dj < n.

(El nombre del método procede del siguiente diagrama: Si p es un divi-


sor de dj , entonces xk ≡ xj mod p.)
xj+1

xj

xk−1
x1
x0

2. Con el método Rho de Pollard factorice 998198809301.

1.9 El logaritmo discreto


Sea G un grupo (escrito multiplicativamente) y g ∈ G de orden n = o(g). Si
h ∈ g, es decir, h = gx , donde x ∈ {0, 1, . . . , n − 1} está determinado de
manera única por h, entonces llamaremos al hallazgo de

x = logg h,

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 39

el problema del logaritmo discreto, de manera abreviada PLD. El número x


se denomina el logaritmo discreto de h con respecto a la base g. Una simple
prueba de cuando gx , para x = 0, 1, 2, . . . es igual a h, alcanza de manera
rápida su límite, para n creciente. Una reducción del gasto de memoria nos
conduce al siguiente algoritmo:

1.9.1 El algoritmo Baby-step Giant-step de Shanks. Sea m =  n,
donde n = o(g), para algún elemento g en el grupo G. Sea, además, h ∈ g.
Para calcular logg h procedemos de la siguiente manera:
Baby-step: calculemos el conjunto

B = {(hg−r , r) | 0 ≤ r ≤ m}

y almacenamos sus elementos. Si B tiene un elemento de la forma (1, r) =


(hg−r , r), entonces h = gr , es decir, r = logg h. Si no es el caso, entonces
procedemos como sigue.
Giant-step: para j = 1, . . . , m − 1 buscamos en B una pareja (hg−r , r), de
tal forma que
hg−r = gmj .

Entonces logg h = mj + r con 0 ≤ r ≤ m − 1. Tenemos en cuenta que una


de tales parejas existe.

No solo el tiempo de ejecución, sino también la memoria necesitada son



del orden O( n), es decir, exponencial. Menores tiempos de ejecución los
obtenemos con el siguiente algoritmo, siempre que en la descomposición en
factores primos de n solamente aparezcan primos pequeños.

1.9.2 El algoritmo de Pohlig-Hellman. Sea G un grupo y g ∈ G un elemento


de orden n. Sea, además, h ∈ g, es decir, h = gx , con 0 ≤ x < n. Suponga-
mos que la descomposición en factores primos de n es conocida, digamos


s
n= pei i
i=1

con pi distintos dos a dos y ei > 0. (Para ello podemos utilizar los resultados
de la sección 1.8) Para la determinación del logaritmo discreto x = logg (h)
procedemos de la siguiente manera:

1. Calculamos xi = x mod pei i , para i = 1, . . . , s.

1.9. El logaritmo discreto


40 Willems/Gutiérrez

2. Resolvemos las congruencias simultáneas

x ≡ xi mod pei i , para i = 1, . . . , s,

con 0 ≤ x < n. Con esto, solo falta calcular los xi del paso 1. Para un
i ∈ {1, . . . , s} fijo, escribimos

i −1
e
x mod pei i = xi = aj pji ,
j=0

con 0 ≤ aj ≤ pi − 1 determinados unívocamente. Determinamos uno


tras otro a0 , a1 , . . . , aei −1 de la siguiente manera:
n
• Determinación de a0 : para ello definimos gi = g pi . Dado que gi
es un elemento de orden pi , tenemos que
n n
x
h pi = g pi = gix = gixi = gia0 .

El número a0 lo determinamos al comparar 1, gi , gi2 , . . . , gipi −1 con


n
h pi .
• Determinación de a1 : definamos h1 = hg−a0 , entonces tenemos
n n x−a0
p2 (x−a0 )
p2
= gia1 .
i pi
h1 = g i = gi

Tal como procedimos para a0 , al comparar los gij (j = 0, . . . pi −1)


n
p2
i
con h1 obtenemos el valor de a1 .

De esta manera, calculamos todos los ak (k = 0, . . . , ni − 1), mientras defini-


mos
k−1
hk = hg−a0 −a1 pi −···−ak−1 pi ,
n
pk+1
calculamos hk i
y comparamos estos con gij , para j = 0, 1, . . . , pi − 1.

1.9.3 Ejemplo. Sea G = Z∗1999 . Verificamos que g = 3 es un generador de


G. Sea h = 1996. Calculamos ahora el logaritmo discreto logg h utilizando el
algoritmo de Pohlig-Hellman.
Se cumple que n = o(3) = 1998 = 2 · 33 · 37 = p1 · p32 · p3 .

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 41

• Cálculo de x1 = x mod 2 = a0 : Dado que


1998
g1 = 3 2 mod 1999 = −1

y
1998 1998
h 2 mod 1999 ≡ 1996 2 mod 1999 = 1,
tenemos que a0 = 0 = x1 .

• Cálculo de x2 = x mod 33 = a0 + 3a1 + 32 a2 : Dado que


1998
g2 = 3 3 mod 1999 = 808

y
1998 1998
h 3 mod 1999 ≡ 1996 3 mod 1999 = 808,
se sigue que a0 = 1. Además, se verifica que h1 = hg−1 = 1998 y
1998 1998
h1 9 mod 1999 ≡ 1998 9 mod 1999 = 1,

es decir, a1 = 0. Finalmente, con h2 = h1 = 1998 obtenemos la


congruencia
1998
h2 27 mod 1999 = 1,
por lo tanto, a2 = 0 y con ello x2 = 1.
1999
• Cálculo de x3 = x mod 37 = a0 : Ahora tenemos que g3 = 3 37

mod 1999 = 1309 y


1998 1998
h 27 mod 1999 ≡ 1996 37 mod 1999 = 1309,

por lo tanto, a0 = 1 = x3 .
Entonces x1 = 0, x2 = 1 y x3 = 1, teniendo así para resolver las congruencias
simultáneas

x ≡ 0 mod 2
x ≡ 1 mod 33
x ≡ 1 mod 37,

con 0 ≤ x < 1998. La solución es



3
x≡ xi yi ≡ y2 + y3 mod 1998,
i=1

1.9. El logaritmo discreto


42 Willems/Gutiérrez

con
y2 = ((2 · 37)−1 mod 33 ) · (2 · 37) = 1702
y3 = ((2 · 33 )−1 mod 37) · (2 · 33 ) = 1296.
Se sigue entonces que logg h = x = 1702 + 1296 mod 1998 = 1000.

Observaciones sobre el algoritmo de Pohlig-Hellman.


 √
1. El algoritmo de Pohlig-Hellman necesita O( sj=1 ei (log n+ pi )) mul-
tiplicaciones en el grupo. Este puede ser utilizado de manera eficiente,
cuando los divisores primos pi de n son pequeños. En este caso, pode-
mos encontrar la descomposición en factores primos de n que se necesita
para el algoritmo.

2. Si n = p es un número primo, entonces el tiempo de ejecución es igual



al algoritmo Baby-step Giant-step, esto es, O( n).

Terminemos esta sección discutiendo el método Index-Calcǔlus, que tiene


similitud con el método del tamiz para la factorización de números enteros
(ver sección 1.8). Este método puede utilizarse en algunos casos, es decir, no
es aplicable en todos los grupos. Sin embargo, puede utilizarse en aplicaciones
donde el grupo multiplicativo de un cuerpo finito es de gran importancia. Su
tiempo de ejecución es subexponencial. Para presentar una representación ele-
mental, nos limitaremos al cuerpo primo K = Zp , con p un número primo.

1.9.4 El método del Index-Calcǔlus. Sea p un número primo y g un ge-


nerador del grupo cíclico Z∗p . Sea, además, a ∈ Z∗p , digamos a = gx con
0 ≤ x < p − 1. Para la determinación del logaritmo discreto x = logg a
procedemos de la siguiente manera

1. Elegimos un b ∈ N y un conjunto F (b) = {p1 , . . . , pb }, donde los pi


son números primos distintos dos a dos y p ∈
/ F (b). Este conjunto lo
denominaremos de nuevo base de factores.

2. Determinamos los logaritmos discretos xi = logg pi , para todo elemento


pi ∈ F (b)

3. Mediante una elección arbitraria intentamos encontrar un elemento y ∈


{0, 1, . . . , p − 1}, de tal manera que agy pueda factorizarse completa-
mente en F (b). Es decir,

agy = pe11 . . . peb b mod p.

Capítulo 1. Criptosistemas de clave pública


Una introducción a la criptografía de clave pública 43

Dado que
b
gx+y = agy = pe11 . . . peb b ≡ gx1 e1 · · · gxb eb ≡ g j=1 xj ej
mod p

se tiene que

b
x≡ xj ej − y mod p − 1.
j=1

Observaciones sobre el método del Index-Calcǔlus

1. Para la determinación del logaritmo discreto para los elementos de la


base de factores (paso 2) podemos proceder más o menos así: Elegimos
un zk arbitrario en {1, . . . , p − 1} e intentamos factorizar gzk mod p en
F (b), es decir,
ek ek
gzk = p1 1 · · · pb b mod p.
Esto es equivalente a

zk = ek1 logg p1 + · · · + ekb logg pb mod p − 1.

Si podemos encontrar c ≈ b + 10 ecuaciones, entonces tenemos para los


logaritmos discretos logg pi el sistema de ecuaciones
⎛ ⎞ ⎛ ⎞⎛ ⎞
z1 e11 · · · e1b logg p1
⎜ .. ⎟ ⎜ .. .. ⎟ ⎜ .. ⎟
⎝ . ⎠≡⎝ . . ⎠⎝ . ⎠ mod p − 1.
zc ec1 · · · ecb logg pb

La dificultad consiste aquí en la condición que obliga a resolver el sis-


tema de ecuaciones mod p − 1 para las variables logg pi . Utilizando el
teorema sobre congruencias simultáneas, es suficiente encontrar solu-
ciones módulo todas las potencias de primos q l que aparecen en la des-
composición en factores primos de p − 1. Para l = 1, podemos utilizar
el algoritmo de Gauss en el cuerpo Zq . Como podemos encontrar solu-
ciones para l = 1, es considerado en el primer ejercicio.

2. Para una óptima elección de b (tamaño de la base de factores) el tiempo


de ejecución para el cuerpo primo Zp es igual a Lp [c, 12 ], con una cons-
tante positiva c, es decir, subexponencial.

3. El método del Index-Calcǔlus expuesto anteriormente funciona con pe-


queñas modificaciones en campos finitos arbitrarios.

1.9. El logaritmo discreto


44 Willems/Gutiérrez

1.9.5 Ejercicios.

1. Sea A una matriz cuadrada con entradas en Z y sea p un número primo.


Para cada vector b con entradas enteras, sea el sistema de ecuaciones
Ax ≡ b mod p, con x un vector con entradas enteras soluble. Indique
cómo puede encontrarse una solución explícita con entradas en Z del
sistema Ax ≡ b mod pl , para l ∈ N.
Sugerencia: Si Ax ≡ b mod pl , entonces se hace la aproximación
A(x + py) ≡ b mod pl+1 .

2. Calcule el logaritmo discreto log3 1996 en Z∗1999 , mediante el algoritmo


Baby-step Giant-step, utilizando un sistema algebraico computacional.

Capítulo 1. Criptosistemas de clave pública


Capítulo 2

Fundamentos matemáticos

Contenido
2.1 Elementales sobre teoría de grupos . . . . . . . . . . . . 45
2.2 Teoría elemental de números . . . . . . . . . . . . . . . 50
2.3 Cuerpos finitos . . . . . . . . . . . . . . . . . . . . . . . 60
2.4 Curvas elípticas . . . . . . . . . . . . . . . . . . . . . . 63
2.5 Curvas de Edwards . . . . . . . . . . . . . . . . . . . . 71

2.1 Elementales sobre teoría de grupos


Introducimos en esta sección el concepto de grupo y demostramos algunos
resultados importantes para temas posteriores.

2.1.1 Definición. Sea G un conjunto no vacío y asumamos que a cada par


(x, y) ∈ G × G está asociado un único x · y ∈ G, esto es, sobre G está definida
una operación binaria “ · ”. (En lo sucesivo escribiremos sencillamente xy en
lugar de x · y). El par (G, ·) o simplemente G se denomina un grupo si se
verifican:
(G1) Para todo x, y, z ∈ G se cumple x(yz) = (xy)z. (Propiedad asocia-
tiva).

(G2) Existe un elemento e ∈ G tal que xe = ex = x, para todo x ∈ G.


(Existencia de un elemento neutro o módulo).

45
46 Willems/Gutiérrez

(G3) Para cada x ∈ G existe un único y ∈ G tal que xy = yx = e.


(Existencia del inverso).

Si para cada x, y ∈ G se cumple, además, que xy = yx, entonces diremos


que G es un grupo abeliano o conmutativo. Es muy usual escribir los grupos
abelianos de forma aditiva. Es decir, escribiremos x + y en lugar de xy. Si
G es un conjunto finito, entonces el número de elementos de G lo llamaremos
orden de G y lo notaremos con |G|.

Ejemplo. Los conjuntos de los números enteros Z y de los números reales R


son grupos abelianos con respecto a la suma usual, además, R∗ = R \ {0}
también lo es con respecto a la multiplicación.
Consideramos ahora subconjuntos de un grupo G para los cuales al restrin-
girles la operación, la estructura de grupo se transmite.

2.1.2 Definición. Sea G un grupo y U un subconjunto no vacío de G. Diremos


que U es un subgrupo de G, si y solo si, para todo u, v ∈ U se verifica que
uv −1 ∈ U . La notación usual es U ≤ G o U < G, si U = G.

Ejemplo. Los subgrupos de (Z, +) son de la forma nZ = {nz | z ∈ Z}, con


n ∈ Z fijo.
Sea G un grupo y U ≤ G. Para g, h ∈ G definamos:

g ∼U h :⇔ g−1 h ∈ U.

No es difícil verificar que ∼U define una relación de equivalencia sobre G y la


clase de equivalencia de g ∈ G tiene la forma

gU = {gu | u ∈ U }.

Llamaremos a gU la clase lateral izquierda de g con respecto a U . Estas


inducen una partición sobre G, esto es:

 ∅ si h ∈
/ gU
G= gU y gU ∩ hU = (2.1)
gU si h ∈ gU
g∈G

De manera similar, la relación de equivalencia g ∼U h :⇔ gh−1 ∈ U suminis-


tra las clases laterales derechas U g de g con respecto a U . Dado que gU = U
si y solo si g ∈ U , se tiene que U aparece siempre en la descomposición (2.1).
En general se verifica que gU = hU si y solo si g−1 h ∈ U y no siempre se
cumple que gU = U g.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 47

Si tomamos de cada clase lateral izquierda gU exactamente un representante


y con estos elementos formamos un conjunto T , entonces se tiene la siguiente
descomposición en clases disjuntas de G.


G= tU (2.2)
t∈T

2.1.3 Definición. Sea G un grupo y U ≤ G.

1. La descomposición (2.2) se denomina la descomposición de G en clases


laterales con respecto a U . Además, T se denomina un transversal
izquierdo de U en G. También se denomina un sistema de represen-
tantes para las clases laterales. Similarmente se define el concepto de
transversal derecho.

2. Si T es finito, entonces |T | se llamará el índice de U en G y lo notaremos


con |G : U |. Si el índice no es finito, entonces escribiremos |G : U | =
∞.

2.1.4 Ejercicios. Sea G un grupo finito y U, V ≤ G.

1. Demuestre que el conjunto de todas las clases laterales izquierdas de


U en G y el conjunto de todas las clases laterales derechas de U en G
tienen el mismo número de elementos.
|U | |V |
2. Sea U V := {uv | u ∈ U, v ∈ V }. Demuestre que |U V | = |U ∩V |

3. Sea G = Sym(3) el grupo simétrico de grado 3, es decir, el conjunto de


todas las biyecciones de X = {1, 2, 3} en sí mismo con la composición
de funciones como operación.

(a) Sea U = {(1), (13)}. Demuestre que U ≤ Sym(3).


(b) Si g = (12), demuestre que gU = U g.

2.1.5 Teorema. (Lagrange) Sea G un grupo y U ≤ G. Entonces se verifica


que |G| = |G : U | |U |. En particular, si G es un grupo finito, entonces se
verifica que |U | y |G : U | son divisores de |G|.

D EMOSTRACIÓN . Esto se sigue inmediatamente de la descomposición de


G dada en (2.2), ya que |tU | = |U |. 

2.1. Elementales sobre teoría de grupos


48 Willems/Gutiérrez

2.1.6 Definición. Sea G un grupo y g ∈ G. Definimos el orden de g, notado


con o(g) como el número natural más pequeño k (si existe) tal que gk = 1. Si
tal número no existe, entonces definimos o(g) := ∞. Un elemento de orden 2
se denomina usualmente una involución.
El siguiente teorema nos permite determinar de manera explícita el orden de
la potencia de un elemento de un grupo dado.

2.1.7 Teorema. Sean G un grupo y g ∈ G, con o(g) = n.

1. Se verifica que gm = 1 si y solo si n|m. Además, g =


{1, g, . . . , gn−1 }.

2. Para k ∈ N0 se verifica que o(gk ) = n


mcd(n,k)

3. Si G es finito, entonces g|G| = 1, para todo g ∈ G.

D EMOSTRACIÓN . Por definición g = {gn | n ∈ Z}.

1. Supongamos que gm = 1. Al usar de nuevo la división con resto tene-


mos que m = nq + r donde 0 ≤ r < n. Entonces tenemos:

1 = gm = (gn )q gr = gr .

Por la minimalidad de n se tiene que r = 0 y así m = nq. Entonces


n | m.
Recíprocamente, si n | m, entonces m = nq y se sigue que gm =
gnq = (gn )q = 1. Resta demostrar que todos los elementos en g =
{1, g, · · · , gn−1 } son distintos dos a dos.
Supongamos que gi = gj con 0 ≤ i ≤ j < n, entonces gj−i = 1 y se
tiene n | (j − i), lo cual se verifica solo si j − i = 0. Es decir, i = j.
nk
2. Sea m := mcd(n, k). Es evidente que n divide a m. Entonces
nk n
1 = g m = (gk ) m

De 1 se sigue que o(gk ) | mn


. Sea t := o(gk ). Entonces (gk )t = 1. Es
decir, n | kt y, por supuesto, mn
| kt
m . Entonces m | t y en conclusión
n
n
t = o(gk ) = mcd(n,k) .

3. Por el teorema de Lagrange se tiene que o(g) | |G|. El resto se sigue de


1. 

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 49

En el siguiente lema se presentan condiciones para las cuales se verifica que


el orden de un producto de elementos de un grupo, con órdenes finitos, es el
producto de los respectivos órdenes.

2.1.8 Lema. Sea G un grupo, g, h ∈ G con órdenes finitos tales que gh = hg


y mcd(o(g), o(h)) = 1. Entonces o(gh) = o(g)o(h).
D EMOSTRACIÓN . La dejamos como ejercicio. 

2.1.9 Definición. Un grupo G se denomina cíclico si existe g ∈ G, tal que

G = {gn | n ∈ Z}.

El elemento g es llamado un generador de G. Usaremos la notación G = g.

2.1.10 Ejemplos.
1. El grupo aditivo de los números enteros es cíclico e infinito. Como
elementos generadores se tiene solo a 1 o −1.

2. Si |G| es un número primo, entonces G es cíclico, ya que 1 = o(g) | |G|


implica que o(g) = |G|.
Los grupos cíclicos poseen una propiedad interesante: Si G = g, entonces
para todo número natural con d | |G| se tiene que existe U ≤ G, tal que
|U | = d.

2.1.11 Teorema. Sea G = g un grupo cíclico. Si |G| = n, entonces para


cada divisor d de n existe un único subgrupo con d elementos, concretamente
n
Ud := g d  y estos son todos los subgrupos de G.
D EMOSTRACIÓN . Definamos c := nd y Ud := gc . Del lema 2.1.7 se sigue
que
o(gc ) = mcd(n,c)
n n
= mcd(n, n = d
) d

Entonces |Ud | = |gc |


= = d. Sea V ≤ G con |V | = d. Sea v =
o(gc )
ga ∈ V . Por el teorema de Lagrange se sigue que o(v) | |V | = d, por lo tanto,
v d = gad . Del teorema 2.1.7 se sigue que n = o(g) | ad, es decir, a = nd b, para
n
algún b ∈ Z. Con esto tenemos que v ∈ g d  = Ud . Una simple comparación
de los órdenes nos asegura que V = Ud . 

2.1.12 Lema. Sea G = g. Si |G| = n < ∞, entonces los generadores de G


son los elementos de la forma gk , con mcd(k, n) = 1.

2.1. Elementales sobre teoría de grupos


50 Willems/Gutiérrez

D EMOSTRACIÓN . G = gk  si y solo si o(gk ) = n. Del lema 2.1.7 se


n
tiene que esto es equivalente a decir que mcd(n,k) = n. Lo cual significa que
mcd(n, k) = 1. 

2.1.13 Ejercicios.

1. Demostrar el teorema 2.1.8.

2. Sea G un grupo cíclico, digamos G = g con |G| = rs y mcd(r, s) =


1. Demuestre que existen U, V ≤ G tales que G = U V , U ∩ V = 1,
|U | = r y |V | = s.

2.2 Teoría elemental de números


Iniciamos esta sección considerando el algoritmo de Euclides1 . Este es
un método muy efectivo para calcular el máximo común divisor entre dos
números. Una de sus principales fortalezas es que no se necesita calcular los
divisores ni los factores de los números, por lo cual el tiempo de ejecución es
corto. El fundamento de este algoritmo es la propiedad siguiente:

2.2.1 Algoritmo de Euclides. Sean m, n ∈ N y m < n. Entonces se veri-


fica que m | n o el mcd(m, n) se produce del resto no nulo rs del siguiente
esquema de la división con resto:

n = q1 m + r1 , donde q1 , r1 ∈ N, 0 < r1 < m


m = q2 r1 + r2 , donde q2 , r2 ∈ N, 0 < r2 < r1
r1 = q3 r2 + r3 , donde q3 , r3 ∈ N, 0 < r3 < r2
..
.
rs−2 = qs rs−1 + rs , donde qs , rs ∈ N, 0 < rs < rs−1
rs−1 = qs+1 rs , donde qs+1 ∈ N.

D EMOSTRACIÓN . Dado que los ri son estrictamente decrecientes, se veri-


fica que qi = 0 y que el algoritmo se estaciona después de un número finito
de pasos. Si x ∈ N es un divisor de m y n, entonces también lo es de r1 ,
y también de r2 , y, finalmente, de rs . Si recíprocamente es x un divisor de
1
Euclides (330-275 a.C.). Matemático griego. Poco se conoce a ciencia cierta de él, pese a
ser el matemático más famoso de la Antigüedad. Es probable que se educara en Atenas, lo que
explicaría su buen conocimiento de la geometría elaborada en la escuela de Platón, aunque no
parece que estuviera familiarizado con las obras de Aristóteles.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 51

rs , entonces también lo es de rs−1 , de rs−2 y, por último, de m y n. Esto


demuestra que rs = mcd(m, n). 
El algoritmo de Euclides también nos suministra un método para determinar
dos números enteros x, y tales que mcd(m, n) = nx + my. Este método
consiste en ir despejando el residuo de la última división, con lo cual nos da
el número mcd(m, n) hacia atrás, hasta alcanzar los valores m y n del inicio.
Este procedimiento para determinar x y y también es denominado Algoritmo
extendido de Euclides.

2.2.2 Teorema. Sean m, n ∈ N. Entonces existen x, y ∈ Z tales que

mcd(m, n) = xn + ym

D EMOSTRACIÓN . Sea m ≤ n. Si m | n, entonces tenemos que


mcd(m, n) = 0n + 1m. Supongamos entonces que m  n. Leemos ahora
el algoritmo de Euclides desde abajo y obtenemos:

mcd(m, n) = rs
= rs−2 − qs rs−1
= rs−2 − qs (rs−3 − qs−1 rs−2 )
= (1 + qs qs−1 )rs−2 − qs rs−3
..
.
= xn + ym

con x, y ∈ Z adecuados. Estos números x, y calculados de esta manera son


usualmente denominados coeficientes de Bézout2 . 

2.2.3 Definición. Sea n ∈ N. Definamos sobre el conjunto Z la siguiente


relación:
x ≡ y mod n ⇔ n | (y − x).
Podemos verificar que esta relación, denominada congruencia módulo n, es
una relación de equivalencia.

2.2.4 Teorema. (Congruencias simultáneas) Sean n1 , . . . , ns ∈ N con


mcd(ni , nj ) = 1, para i = j. Sean a1 , . . . , as ∈ Z cualesquiera dados. En-
tonces existe un x ∈ Z tal que x ≡ ai mod ni , para i = 1, . . . , s. Además,
cada dos soluciones son congruentes mod n1 · · · ns .
2
Etienne Bézout (1730-1783). Nació en París. Enseñó matemáticas para estudiantes ofi-
ciales de la marina y artillería. Trabajó, además, en Geometría algebraica.

2.2. Teoría elemental de números


52 Willems/Gutiérrez

D EMOSTRACIÓN . Definamos N := n1 · · · ns y ni := nNi . Entonces se


verifica que mcd(ni , ni ) = 1. Por otro lado, por el teorema 2.2.2 existe xi , de
tal manera que xi ni ≡ 1 mod ni .

Definamos ahora x = si=1 yi ni , con yi = ai xi mod ni . Dado que ni |
nj , para j = i se sigue que

x ≡ yi ni ≡ ai xi ni ≡ ai mod ni .

Sea, además, z ≡ ai mod ni para todo i. Entonces tenemos que x − z ≡ 0


mod ni , es decir, ni | x − z. Como los ni son distintos dos a dos, se tiene que
n1 · · · ns | x − z, por lo tanto, x ≡ z mod n1 · · · ns .

Ejercicio. Encuentre x ∈ Z con x ≡ 1 mod 2, x ≡ 2 mod 3, x ≡ 3


mod 5, x ≡ 4 mod 7.
Es usual denotar el conjunto cociente inducido por la relación de equivalen-
cia, es decir, el de las clases con Zn o también con Z/nZ. Si para x ∈ Z
denotamos con [x] su clase de equivalencia, entonces tenemos:

[x] = {y ∈ Z | y ≡ x mod n}
= {y ∈ Z | y − x = nz, para algún z ∈ Z}
= {x + nz | z ∈ Z}
= x + nZ.

Por otro lado, notemos que:

x + nZ = y + nZ ⇔ (x − y) + nZ = nZ
⇔ (x − y) ∈ nZ
⇔ n|(x − y).

Por lo tanto,
Zn = {j + nZ | j = 0, 1, . . . , n − 1}

y se tiene que |Zn | = n, ya que j + nZ = i + nZ, para i = j y, además,


i, j ∈ {0, 1 . . . , n − 1}.
En lo que sigue demostramos que sobre el conjunto Zn podemos definir una
suma y una multiplicación con propiedades deseables.

2.2.5 Lema. Sean a, b, c, d ∈ Z. Si a ≡ b mod n y c ≡ d mod n, entonces


(a + c) ≡ (b + d) mod n y ac ≡ bd mod n.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 53

D EMOSTRACIÓN . La dejamos como ejercicio. 


El lema anterior demuestra que las operaciones (adición y multiplicación)

[x] + [y] = [x + y] (2.3)

[x][y] = [xy], (2.4)


sobre Zn están bien definidas.
En el siguiente teorema demostramos que existe un subconjunto de Z∗n que
adquiere la estructura de grupo con respecto a la multiplicación.

2.2.6 Teorema. El conjunto Un = U (Zn ) := {[x] | x ∈ Z, mcd(x, n) = 1}


es un grupo abeliano con respecto a la multiplicación. Un consta exactamente
de los elementos de Zn , que tienen un inverso multiplicativo en Zn . Usual-
mente Un es denominado el grupo de las unidades de Zn .

D EMOSTRACIÓN . Sean [x], [y] ∈ En . Entonces mcd(x, n) = 1 =


mcd(y, n) y se tiene que mcd(xy, n) = 1. Es decir, [x][y] ∈ En . La aso-
ciatividad y la conmutatividad son claras, además, el módulo es [1].
Sea ahora [x] ∈ En . Buscamos [y] ∈ En de tal manera que [x][y] = [1].
Dado que mcd(x, n) = 1, se tiene que existen α, β ∈ Z tales que αx+βn = 1
(ver 2.2.2). Es decir, αx ≡ 1 mod n. Tomemos y := α y notemos que
mcd(α, n) = 1, lo cual demuestra que [y] ∈ En y [x][y] = [1].
Recíprocamente, sea [0] = [x] ∈ Zn con [x][y] = [1]. Supongamos que
1 = d = mcd(x, n) | n. Dado que [x] = [0], se tiene que d < n. Si n = dk y
x = dl, con k, l ∈ Z, entonces se sigue que

[k][x] = [kx] = [kdl] = [0],

es decir, [k] = [k][x][y] = [0], lo cual contradice la afirmación 1 < k < n. 

2.2.7 Definición. Una tripla (R, +, ·), donde (R, +) es un grupo abeliano y
· : A × A −→ A se denominará un anillo con unidad si se verifican las
siguientes propiedades:

1. (Asociatividad del producto.) Para todo x, y, z ∈ R, (x·y)·z = x·(y·z).

2. (Unidad.) Existe un elemento 0 = 1 ∈ R tal que 1 · x = x · 1 = x, para


todo x ∈ R.

3. (Distributividad.) Para todo x, y, z ∈ R, x · (y + z) = x · y + x · z y


(y + z) · x = y · x + z · x.

2.2. Teoría elemental de números


54 Willems/Gutiérrez

Si además se verifica que xy = yx, para todo x, y ∈ R, entonces el anillo


se llamará conmutativo. Un anillo conmutativo con unidad se denomina un
cuerpo, si para todo 0 = x ∈ R, existe y ∈ R tal que x · y = y · x = 1.

2.2.8 Teorema. Sea n ∈ N.

1. El conjunto Zn con la suma y multiplicación definidas en (2.3) y (2.4)


es un anillo conmutativo.

2. Zn es un cuerpo si y solo si n es un número primo.

D EMOSTRACIÓN .

1. La dejamos como ejercicio.

2. Se sigue del teorema 2.2.6. 

Ejercicio. Calcule el inverso de [7] en el grupo multiplicativo del cuerpo Z317 .


Sugerencia: Use el teorema 2.2.2.
El número de primos relativos con n que están entre 1 y n está dado por la
función ϕ de Euler3 , es decir, ϕ(n) = |Un |.
Para cada n ∈ N, se define

ϕ(n) = |Un |

Si p es un número primo y m ∈ N, entonces se cumple que

ϕ(pm ) = pm − pm−1 = pm−1 (p − 1).

En particular, ϕ(p) = p − 1 y Up = U (Zp ) = Z∗p .


Por otro lado,si mcd(m, n) = 1, entonces ϕ(mn) = ϕ(m)ϕ(n). Por lo
tanto, de n = si=1 pei i , con p1 , . . . , ps , primos distintos dos a dos, se sigue
que
 s
ϕ(n) = (pi − 1)piei −1 .
i=1

2.2.9 El pequeño teorema de Fermat. Si p es un número primo, entonces


para cada a ∈ Z, con mcd(a, p) = 1 se verifica que ap−1 ≡ 1 mod p.
3
Leonard Euler (1707-1783). Matemático suizo. Destacado en el campo de la teoría de las
ecuaciones diferenciales lineales, las funciones trigonométricas y logarítmicas. En el álgebra
obtuvo resultados destacados, como el de la reducción de una ecuación cúbica a una bicuadrada
y el de la determinación de la constante que lleva su nombre. También se ocupó de la teoría de
números. Fue considerado el matemático más prolífico de la historia.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 55

D EMOSTRACIÓN . Podemos tomar a como elemento del grupo multiplica-


tivo Z∗p . Este grupo tiene orden p − 1 y por el teorema 2.1.7 se verifica que

ap−1 = a|Zp | ≡ 1 mod p, para todo a con p  a. 
Una generalización del teorema de Fermat es el siguiente resultado, que
hemos utilizado en el procedimiento criptográfico RSA (ver 1.3.4).

2.2.10 Teorema. (Euler) Sea n ∈ N, con n ≥ 2. Entonces para todo a ∈ Z


con mcd(a, n) = 1 se verifica que

aϕ(n) ≡ 1 mod n,

donde ϕ denota la función de Euler.

D EMOSTRACIÓN . Se sigue inmediatamente del hecho que el grupo multi-


plicativo U (Zn ) := {[x] | x ∈ Z, mcd(x, n) = 1} tiene orden ϕ(n). 
Si p es un primo impar y n ∈ Z, con mcd(n, p) = 1, entonces la congruencia

x2 ≡ n mod p (2.5)

tiene ninguna o exactamente dos soluciones que se diferencian solo en el signo.


Si la congruencia (2.5) tiene por lo menos una solución, decimos que n es un
resto cuadrático mod p o simplemente un cuadrado mod p. En otro caso
decimos que n no es un cuadrado mod p.

  Sean p un primo impar y a ∈ Z. Definimos el símbolo de


2.2.11 Definición.
Legendre np de la siguiente manera:
4


  ⎨ 0, si p | a
a
= 1, si a es un cuadrado mod p y p  a
p ⎩
−1, si a no es un cuadrado mod p.

2.2.12 Ejemplo. Sea p un primo impar. Entonces


  
−1 (p−1) 1, si p ≡ 1 mod 4
= (−1) 2 =
p −1, si p ≡ 3 mod 4.
4
Adrien-Marie Legendre (1752-1833). Matemático francés. Fue educado en el colegio
Mazarin en París. De 1775 a 1780 enseñó con Laplace en la Escuela Militar. En 1782 de-
terminó la fuerza de atracción para ciertos sólidos de revolución al introducir una serie infinita
de polinomios Pn , la cual es conocida ahora como Polinomios de Legendre. Su campo princi-
pal de trabajo fue las funciones elípticas. En su famoso libro Elementos de Geometría (1794)
dio una prueba simple de que π es irracional.

2.2. Teoría elemental de números


56 Willems/Gutiérrez

D EMOSTRACIÓN . La condición x2 ≡ −1 mod p es equivalente a la condi-


ción que Z∗p tiene un elemento de orden 4. Si Z∗p tiene un elemento de orden 4,
entonces por el teorema de Lagrange se verifica que 4 | |Z∗p | = p − 1.
Recíprocamente, si 4 | (p − 1), entonces Z∗p posee un elemento de orden 4,
ya que Z∗p es cíclico (ver teorema 2.3.1). 

2.2.13 Teorema. (Euler). Sea p un número primo impar. Entonces para todo
a∈Z (p−1)
 
a 2 ≡ ap mod p. (2.6)

D EMOSTRACIÓN . Si p | a, entonces ambos lados de la igualdad (2.6) son


cero mod p. Por lo tanto, podemos suponer p  a. Por el teorema 2.2.9 se tiene
que ap−1 ≡ 1 mod p, por tanto
(p−1)
a 2 ≡ ±1 mod p.
(p−1)
Por otro lado, si a ≡ b2 mod p, entonces a 2 = bp−1 ≡ 1 mod p. Sean
a un elemento no cuadrado y g un generador de Z∗p . Entonces se cumple que
a = gk mod p, con k impar, por lo tanto
(p−1) (p−1)
a 2 = gk 2 ≡ 1 mod p,
(p−1)
k(p−1)
ya que (p − 1)  2 . Con esto se tiene que a 2 ≡ −1 mod p. 

2.2.14 Teorema. Sea p un número primo impar. Entonces


  
2 (p2 −1) 1, si p ≡ ±1 mod 8
= (−1) 8 =
p −1, si p ≡ ±3 mod 8.

p−1
D EMOSTRACIÓN . Consideremos las siguientes 2 congruencias:

p − 1 ≡ 1(−1)1 mod p
2 ≡ 2(−1) 2
mod p
p − 3 ≡ 3(−1) 3
mod p
..
.
p−1
p−1 p−1
p− 2 ≡ 2 (−1)
2 mod p
p−1
p−1 p−1
2 ≡ 2 (−1)
2 mod p.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 57

Multipliquemos ahora miembro a miembro estas congruencias. Notemos que


cada entero del lado izquierdo es un número par. Entonces obtenemos

p−1 
p−1   p−1  p2 −1
2 2
2 ! ≡ 2 ! (−1) 8 mod p.
 p−1 
Dado que 2 ! ≡ 0 mod p, a partir de estas congruencias obtenemos que

p−1 p2 −1
2 2 ≡ (−1) 8 mod p.
p−1  
Si se utiliza el teorema de Euler 2.2.13 tenemos que 2 2 ≡ 2p mod p y
como cada uno de estos miembros es 1 o −1, se verifica la igualdad de dichos
miembros dado que p > 2, lo cual completa la prueba. 

2.2.15 Teorema. (Ley de reciprocidad cuadrática). Si p y q son primos im-


pares distintos, entonces
   
p (p−1) (q−1) q
= (−1) 2 2 .
q p

D EMOSTRACIÓN . Ver [7], página 91. 


Enumeremos ahora algunas propiedades del símbolo de Legendre.

2.2.16 Lema. Sean p un número primo impar, a, b ∈ Z.


   
1. Si a ≡ b mod p, entonces ap = pb
    
ab a b
2. p = p p
   
ab2 a
3. Si mcd(b, p) = 1, entonces p = p

D EMOSTRACIÓN .

1. Esto se sigue de la siguiente equivalencia


 
a
p = 1 ⇔ a es un cuadrado mod p
⇔ b esun cuadrado mod p
⇔ b
p = 1.

2.2. Teoría elemental de números


58 Willems/Gutiérrez

2. Con el uso del teorema 2.2.13 tenemos:


  (p−1)
ab
p ≡ (ab) 2
(p−1) (p−1)
≡ a
  b 
2 2

≡ a
p
b
p mod p

    
ab a b
Dado que p > 2, se sigue que p = p p .

3. Para establecer esta propiedad es suficiente observar que


 2  2
b b
p = p =1

y luego aplicar 2.

2.2.17 Ejemplos. A continuación usamos los resultados anteriores para cal-


cular algunos números de Legendre
 17 
1. Calcular 59 .
Solución. Al usar la ley de reciprocidad tenemos
 17   59   59 
59 = (−1)8·28 17 = 17

y cuando aplicamos el lema 2.2.16 y el teorema 2.2.14, obtenemos


 59     3  2 3
8 2
17 = 17 = 17 = 17 = 1.

 7

2. Calcular 101 .
Solución. Nuevamente con la ley de reciprocidad tenemos
   101  3 7 1
7
101 = (−1)6·50 7 = 7 = (−1)1·3 3 =− 3 = −1.

El símbolo de Legendre fue extendido por C. Jacobi5 . A tal extensión se le


conoce como símbolo de Jacobi, y que presentamos a continuación.
5
Carl Gustav Jacobi (1804-1851). Königsberg, Berlín.Sus trabajos principales fueron en
Teoría de números, ecuaciones diferenciales parciales, determinantes y mecánica.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 59

2.2.18 Definición. Sea n un entero impar y n = pe11 · · · perr su descomposición


en factores primos diferentes. Definimos el símbolo de Jacobi para a ∈ Z
como sigue:
a  r  e i
a
= ,
n pi
i=1
 
a
donde pi es el símbolo de Legendre.

Si n es un número primo, entonces el símbolo de Jacobi coincide con el de


Legendre. De las propiedades del símbolo de Legendre se siguen inmediata-
mente las siguientes propiedades:

2.2.19 Lema. Sean a, b ∈ Z y m, n ∈ N impares y mcd(m, n) = 1.


   
1. na = nb , si a ≡ b mod n
  a b
2. abn = n n
n (n−1) (m−1) 
m

3. m = (−1) 2 2
n
Sin embargo, notemos la diferencia que existe entre los símbolos
 a  de Legen-
dre y Jacobi. Si a es un cuadrado mod n, entonces
a se sigue que n = 1, pero
el recíproco es, en general, falso. Esto es, de n = 1 no siempre podemos in-
ferir que a es un cuadrado mod n. Por ejemplo, el número 2 no es un cuadrado
mod 3 ni tampoco
 lo es mod 5; por lo tanto, no es un cuadrado mod 15, sin
2
embargo 15 = 1.

2.2.20 Ejemplos. A continuación calculamos algunos símbolos de Jacobi.


Utilizaremos solamente el lema 2.2.19, pero no haremos uso de la descom-
posición en factores primos que establece la definición 2.2.18. Notemos que si
n es un número grande, entonces su descomposición no es conocida.
 
1. Calcular 219
383 .
Solución:
 219         2 2  41 
= − 383 = − 164 = − 4·41 = − 219
383  41 
219  14 
219  2  7 
219  41  219  −1 
= − 219 = − 41 = − 41 41 = − 7 = − 7
= −(−1) = 1.
 35 
2. Calcular 1683 .
Solución:
 35   1683   33   35  2
1683 =− 35 =− 35 =− 33 =− 25 = −1.

2.2. Teoría elemental de números


60 Willems/Gutiérrez

2.3 Cuerpos finitos


En 2.2.8 hemos demostrado que Zp para un número primo p es un cuerpo con
p elementos. Para los planteamientos criptográficos en el capítulo 1 esencial-
mente han aparecido solo estos cuerpos.
A pesar de que lo hemos utilizado en repetidas ocasiones, hasta el momento
no hemos demostrado el hecho que el grupo multiplicativo de Zp es cíclico.
Es decir, que Z∗p = α es generado por un α adecuado. Este resultado se
verifica en general para cualquier cuerpo finito K y la demostración aun en el
caso especial K = Zp no resulta sencilla. Deseamos, no obstante, presentar
una demostración de este hecho de manera general.
Sea K un cuerpo finito con |K| = q. Del lema 2.1.7 se sigue que

aq−1 = 1

para todo 0 = a ∈ K. Con ello podemos afirmar que todo a ∈ K∗ es una raíz
del polinomio
f (x) = xq−1 − 1 ∈ K[x].

2.3.1 Teorema. Sea K un cuerpo finito. Entonces el grupo multiplicativo K∗


de K es cíclico, es decir, es generado por algún elemento.
D EMOSTRACIÓN . Sea

q − 1 = pe11 . . . pess

la descomposición en factores primos de q−1, con pi números primos distintos


dos a dos. Supongamos que para todo i = 1, . . . , s existe un elemento ai ∈ K∗
con
pei i | o(ai ).
Mientras tomemos una potencia adecuada de ai , podemos suponer que

o(ai ) = pei i .

Definamos ahora a = a1 . . . as , entonces del lema 2.1.8 se sigue que a tiene


orden n, por lo tanto, es un generador de K∗ .
Con esto podemos suponer que existe un i, digamos i = 1, de tal forma que

o(a) | p1e1 −1 pe22 . . . pess =: k < q − 1

para todo a ∈ K∗ . En particular, por el teorema 2.1.7 se verifica que

ak = 1

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 61

para todo a ∈ K∗ . Esto nos dice que el polinomio

g(x) = xk − 1 ∈ K[x]

tiene en el cuerpo K exactamente q − 1 > k raíces. Es conocido que un


polinomio de grado n sobre K tiene a lo más n raíces, es decir, tenemos una
contradicción. Con esto está demostrado el teorema. 

2.3.2 Definición. Sea K un cuerpo. Si existe un número natural n, tal que

n1 = 1 + ·
· · + 1 = 0,
n−veces

entonces llamaremos al más pequeño de tales n ∈ N, la característica de K y


la notaremos con Char(K). Si no existe tal número, entonces se dice que K
tiene característica cero y escribiremos Char(K) = 0.

2.3.3 Lema. La característica de un cuerpo es cero o un número primo.

D EMOSTRACIÓN . Sea K un cuerpo con Char(K) = 0. Entonces se verifica


que Char(K) = n ∈ N. Supongamos que este número no es primo. Entonces
existen r, s ∈ N con 1 < r, s < n tales que n = rs. Entonces se sigue que

0 = n1 = (r1)(s1).

En todo cuerpo se verifica que el producto de dos números es cero si y solo si


por lo menos alguno de los dos es cero. Con lo cual se tendría que r1 = 0 o
s1 = 0, lo cual contradice la minimalidad de n con tal propiedad. 

2.3.4 Teorema. Si K es un cuerpo finito, entonces se verifica que |K| = pn ,


para algún número primo p y algún natural n. El número primo p es la carac-
terística de K.

D EMOSTRACIÓN . Dado que |K| es finito, existen números naturales s < t,


con s1 = t1. Es decir, (t − s)1 = 0. Se sigue de esto que la característica de
K es necesariamente un número primo p. El conjunto

K0 := {s1 | s = 0, 1, . . . , p − 1} ⊆ K

es en sí un cuerpo, con respecto a las restricciones de las operaciones suma


y multiplicación definidas sobre K. Esto es, K0 es un subcuerpo de K. En
particular, K es un espacio vectorial sobre K0 y dado que K es finito, se tiene

2.3. Cuerpos finitos


62 Willems/Gutiérrez

que éste es de dimensión finita n sobre K0 . Por lo tanto, |K| = |K0 |n = pn .




Para la construcción de un cuerpo finito K, con |K| = pn , utilizaremos el


hecho que para todo n ∈ N y para todo número primo p existe un polinomio
irreducible f (x) ∈ Zp [x] (ver [17], teorema 2.2.14).

2.3.5 Teorema. Sea p un número primo y n ∈ N. Sea, además, f (x) ∈ Zp [x]


un polinomio irreducible de grado n. Entonces

K = Zp [x]/f Zp [x]

es un cuerpo con |K| = pn .


D EMOSTRACIÓN . Tal cual como en Zn = Z/nZ se tiene también que K es
un anillo conmutativo, si definimos

(g + f K[x]) + (h + f K[x]) = g + h + f K[x]

y
(g + f K[x]) · (h + f K[x] = gh + f K[x],
para g, h ∈ K[x]. Para demostrar que K es un cuerpo, permanece para de-
mostrar únicamente que
0 = h + f K[x]
tiene un inverso en K. Dado que f es irreducible, la afirmación 0 = h+f K[x],
significa que
mcd(h, f ) = 1.
Por otro lado, los algoritmos de Euclides y Euclides extendido no solo se veri-
fican en Z, sino también en F[x], donde F es un cuerpo cualquiera (ver ejerci-
cios). Por lo tanto, existen polinomios a, b ∈ Zp [x] con

ah + bf = mcd(h, f ) = 1.

Es decir que

(a + f Zp [x])(h + f Zp [x]) = ah + f Zp [x] = 1 + f Zp [x].

Con lo cual se tiene que a + f Zp [x] es el inverso de h + f Zp [x].


Por último, resta por demostrar que |K| = pn . Esto procede inmediatamente
del hecho que K es un espacio vectorial sobre Zp con la base

{xi + f Zp[x] | i = 0, 1, . . . , n − 1},

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 63

es decir,
dimZp K = n,

de donde se sigue enseguida que |K| = pn . 

2.3.6 Observaciones.

1. Si K es un cuerpo finito, entonces |K| = pn para algún número primo p


y un n ∈ N. Además, K se puede describir como en el teorema anterior,
es decir, este es en particular único, salvo isomorfía. (ver [17], p. 128)

2. En cuerpos primos K = Zp podemos calcular con números enteros


módulo p. En el caso |K| = pn con n > 1, los elementos de K son
polinomios en Zp [x] y podemos efectuar cálculos módulo un polinomio
irreducible f ∈ Zp [x].

2.3.7 Ejercicios.

1. Demuestre que el algoritmo de Euclides y el algoritmo extendido de


Euclides se verifican en K[x], donde K es un cuerpo. Sugerencia: Sean
f, g ∈ K[x]. El primer paso en el algoritmo de Euclides dice que f =
hg + r, con h, r ∈ K[x], donde grad(r) < grad(g).

2. Construya un cuerpo con 4 elementos.

3. Con ayuda de Maple construya un cuerpo con 27 elementos.

2.4 Curvas elípticas


Las curvas elípticas juegan un papel central en la criptografía de clave pública
cuya seguridad está fundamentada en el cálculo del logaritmo discreto. Tam-
bién se utilizan en la factorización de números enteros (Algoritmo de Lenstra,
ver 1.8.4).

2.4.1 Definición. Sea K un cuerpo. Un polinomio f ∈ K[x, y] se denomina


una curva afín, plana. El conjunto

V (f ) := {P = (a, b) | a, b ∈ K, f (P ) = f (a, b) = 0},

se denomina imagen de la curva o puntos sobre la curva.

2.4. Curvas elípticas


64 Willems/Gutiérrez

2.4.2 Definición. Sean f una curva. P ∈ V (f ) se denomina un punto singu-


lar, si se verifica que
∂f ∂f
∂x (P ) = 0 = ∂y (P ).

Si V (f ) no tiene puntos singulares, entonces V (f ) o f se llamará suave.

Nota. Si P = (a, b) es un punto no singular (también llamado regular),


entonces
∂f ∂f
∂x (P )(x − a) + ∂y (P )(y − b) = 0

es la ecuación de la tangente a f en P .
Consideremos ahora algunos ejemplos de curvas planas y sus imágenes so-
bre K = R.

∂f
2.4.3 Ejemplo. (La parábola de Neil.) Sea f = x3 −y 2 . Entonces ∂x = 3x2 ,
∂f
∂y = −2y y se tiene que (0, 0) es el único punto singular.
y

O x

Figura 2.1: f = x3 − y 2

2.4.4 Ejemplo. Sea f = x3 − x− y 2 . Notemos que ∂f ∂f


∂x = 3x − 1, ∂y = −2y.
2

Si P = (a, b) es un punto singular, entonces b = 0 y 3a2 = 1.


La igualdad 0 = f (a, b) = a3 − a suministra a3 = a = 3a3 = 0, una
contradicción. Es decir, V (f ) es suave.
y

O x

Figura 2.2: f = x3 − x − y 2

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 65

∂f ∂f
2.4.5 Ejemplo. Sea f = x2 − y. Entonces ∂x = 2x, ∂y = −1 y se tiene que
V (f ) es suave.
y

O x
Figura 2.3: f = x2 − y

2.4.6 Ejemplo. Sea f = x3 + x2 − y 2 . Podemos verificar con facilidad que


(0, 0) en el único punto singular.
y

O x

Figura 2.4: f = x3 + x2 − y 2

2.4.7 Lema. Sean a, b ∈ K y 4a3 + 27b2 = 0. Entonces f (x) = x3 + ax+ b ∈


K[x] no tiene raíces múltiples.
D EMOSTRACIÓN . Supongamos que α ∈ K es una raíz múltiple de f en
donde K denota la cerradura algebraica de K. Entonces

f (α) = 0 = f  (α).

Además,
(α3 + aα)2 = α6 + 2aα4 + a2 α2 = (−b)2 = b2 ,
ya que f (α) = α3 + aα + b = 0. Por lo tanto,

27α6 + 2 · 27aα4 + 27a2 α2 = 27b2 ,

de donde se sigue, dado que f  (α) = 0 = 3α2 + a, que

−4a3 = −a3 + 2 · 3aa2 − 9a3 = 27b2 ,

2.4. Curvas elípticas


66 Willems/Gutiérrez

una contradicción. 
Por razones de simplicidad, consideraremos solamente curvas elípticas
definidas sobre cuerpos con características diferentes 2 y 3.

2.4.8 Definición. Sea K un cuerpo, con Char(K) = 2, 3.

1. Sea x3 + ax + b ∈ K[x] sin raíces múltiples. Entonces, llamaremos a

x3 + ax + b − y 2 = f (x, y) ∈ K[x, y],

una curva elíptica sobre K. La ecuación E : y 2 = x3 + ax + b se


denomina ecuación de Weierstrass6 .

2. A los elementos del conjunto

{(x, y) | x, y ∈ K, y 2 = x3 + ax + b} ⊆ K × K

los llamaremos puntos K-racionales sobre la curva E. Como vimos en


el lema anterior, la condición 4a3 + 27b2 = 0 asegura que las tres raíces
del polinomio x3 + ax + b son distintas dos a dos. En otras palabras,
que la curva no tiene singularidades.

2.4.9 Observación. En general, es decir, en característica arbitraria una curva


elíptica se describe por

f (x, y) = x3 + ax2 + bx + c − y 2 − dxy − ey ∈ K[x, y],

donde f no tiene singularidades. En característica distinta de dos o tres pode-


mos efectuar un cambio de variables y obtener una expresión más sencilla, de
la forma
f (x, y) = x3 + ax + b − y 2 .

2.4.10 Lema. Toda curva elíptica es suave, es decir, no tiene singularidades.


D EMOSTRACIÓN . Supongamos que P = (α, β) es un punto singular sobre
la curva elíptica x3 + ax + b − y 2 = f (x, y). Entonces

∂f
0= (P ) = 3α2 + a (2.7)
∂x
6
Karl Weierstrass (1815-1897). Matemático alemán. En 1839 ingresó a la Academia
de Teología y Filosofía de Münster, donde encontró la inspiración matemática de manos de
Christof Guderman. Recibió el doctorado honorífico de la Universidad de Königsberg y en
1856 fue aceptado como profesor asociado en la Universidad de Berlín.

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 67

∂f
0= (P ) = −2β (2.8)
∂y
Dado que Char(K) = 2, se tiene que β = 0. Entonces

0 = f (α, β) = f (α, 0) = α3 + aα + b

Del lema 2.4.7 se sigue que α es una raíz múltiple de x3 + ax + b lo que es


contradictorio. 
Los puntos de una curva elíptica tienen la propiedad interesante, de poder
sumarlos, si adicionamos un punto especial llamado punto al infinito, diga-
mos O, que representa el módulo. De esta forma obtenemos una estructura de
grupo abeliano, la cual notaremos con E(K).
Si K = R, el cuerpo de los números reales, entonces la suma podemos
describirla geométricamente como sigue.
y

(P + Q)

P
O x
Q

−(P + Q)

Figura 2.5: E : y 2 = x(x − 1)(x + 2)

Para P = Q, sea −(P + Q) el tercer punto de corte de la recta que pasa por
P y Q, con la curva E (ver gráfico). Si P = Q, entonces −(P + Q) = P + P ,
el segundo punto de intersección de la curva E con la recta tangente a E en el
punto P = Q. La existencia de este punto está garantizada por la condición
4a3 + 27b2 = 0. El punto P + Q se tiene mediante una reflexión con respecto
al eje x.
Para las aplicaciones criptográficas necesitamos fórmulas explícitas para la
adición de puntos sobre la curva, que exponemos a continuación.

2.4. Curvas elípticas


68 Willems/Gutiérrez

2.4.11 Teorema. Sea E : y 2 = x3 + ax + b una curva elíptica sobre el cuerpo


K. Entonces

E(K) = {(x, y) | x, y ∈ K, y 2 = x3 + ax + b} ∪ {O}

alcanza la estructura de grupo abeliano, con módulo O, si definimos:


Sean Pi = (xi , yi ) ∈ E(K), para i = 1, 2. Entonces P3 = P1 + P2 =
(x3 , y3 ) se obtiene como sigue:
1. Si P2 = ±P1 , donde −P1 = (x1 , −y1 ), entonces se verifica que
y1 −y2
(1) x3 = λ2 − x1 − x2 , y3 = λ(x1 − x3 ) − y1 , con λ = x1 −x2 .

2. Si P2 = P1 , entonces se cumple que

(2) x3 = λ2 − 2x1 , y3 = λ(x1 − x3 ) − y1 , con λ = 3x1 +a


2y1 .

(Si y1 = 0, entonces P1 + P2 = O)
No presentaremos la prueba de este resultado. En su demostración, la pro-
piedad asociativa es la única que necesita cálculos un poco largos. Para una
prueba detallada veamos por ejemplo [15].
Por razones criptográficas, es usual estar interesados en curvas elípticas so-
bre cuerpos finitos. Si K es un cuerpo finito, entonces E(K) es naturalmente
un grupo abeliano finito. En particular, cada punto de E(K) tiene orden finito.

2.4.12 Ejemplo. Sea K = Z5 el cuerpo con 5 elementos. Consideremos la


curva elíptica
E : y 2 = x3 − 2x,
sobre K. Cuando se reemplaza en la ecuación de Weierstrass, tenemos direc-
tamente que:

E(K) = {(0, 0), (1, ±2), (2, ±2), (3, ±1), (4, ±1)} ∪ {O}.

Por lo tanto, es E(K) un grupo abeliano con 10 elementos. La fórmula de la


suma (1) suministra, por ejemplo,

(1, 2) + (3, 1) = (0, 0).

Sea P = (1, 2), entonces

P +P = (4, 1),
P +P +P +P = (2, −1),
P +P +P +P +P = (1, 3).

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 69

Esto demuestra que P no tiene orden ni 2 ni 5. Dado que el orden de cualquier


elemento divide el orden del grupo, se tiene que el orden de P divide a 10. Por
lo tanto, P debe tener orden 10. En particular se tiene que E(K) es un grupo
cíclico.

Si deseamos utilizar E(K) en un procedimiento criptográfico, cuya seguri-


dad dependa del cálculo del logaritmo discreto, entonces necesitamos explíci-
tamente un elemento que tenga orden grande. Si E(K) = ap, con p un número
primo grande y a un factor pequeño, entonces el problema de encontrar tal ele-
mento resulta fácil.
La determinación de uno de estos grupos es, sin duda, un problema muy
difícil. El siguiente teorema suministra información sobre qué tan grande es
la curva elíptica, en particular, establece un límite para los órdenes de los ele-
mentos de esta.

2.4.13 Teorema. (H. Hasse). Si E(K) es una curva elíptica sobre el cuerpo K
con q elementos, entonces se verifica que
√ √
q + 1 − 2 q ≤ |E(K)| ≤ q + 1 + 2 q.

D EMOSTRACIÓN . Ver, por ejemplo, [15], p. 91. 

2.4.14 Ejemplo. Consideremos otra vez la curva elíptica de arriba y 2 = x3 −


2x sobre el cuerpo Z5 . El teorema de Hasse nos dice que para cualquier curva
elíptica sobre K se verifica
√ √
|E(K)| ≤ q + 1 + 2 q = 6 + 2 5 = 10.472.

Por lo tanto, |E(K)| ≤ 10. En el ejemplo anterior se obtuvo para esta curva
que |E(K)| = 10. Esto asegura, además, que el orden de un elemento de una
curva elíptica sobre Z5 no puede ser mayor que 10. Para encontrar un elemento
de orden grande en E(K), es necesario que |K| sea grande.

2.4.15 Ejemplo. Consideramos ahora la curva elíptica

E : y 2 = x3 + x − 1

sobre el cuerpo K = Z37 . En el ejemplo 1.8.5 hemos utilizado esta curva para
la factorización de n = 37 · 47.

2.4. Curvas elípticas


70 Willems/Gutiérrez

El teorema de Hasse nos suministra que |E(K)| ≤ 50. Al utilizar, por ejem-
plo, Maple (msolve(x3 + x − 1 = y 2 , 37) obtenemos

E(K) = {(0, 31), (0, 6), (1, 1), (1, 36), (2, 3), (2, 34), (4, 17), (4, 20),
(6, 6), (6, 31), (7, 4), (7, 33), (8, 1), (8, 36), (9, 16), (9, 21),
(10, 11), (10, 26), (11, 3), (11, 34), (12, 0), (13, 10), (13, 27),
(16, 2), (16, 35), (18, 15), (18, 22), (20, 8), (20, 29), (23, 4),
(23, 33), (24, 3), (24, 34), (26, 10), (26, 27), (27, 5), (27, 32),
(28, 1), (28, 36), (29, 16), (29, 21), (31, 6), (31, 31), (35, 27),
(35, 10), (36, 16), (36, 21), O}

Es decir, se cumple que |E(K)| = 48 = 24 · 3. Sea P una involución en


E37 , es decir, P 2 = O = P , o también P = −P . Dado que

(x, y) = P = −P = −(x, y) = (x, −y)

se sigue que y = 0, esto es, P = (x, 0). De la tabla de arriba deducimos que
P = (12, 0) es la única involución.
Si utilizamos un poco de teoría de grupos, con esto se sigue que E37 es un
grupo cíclico (ver ejercicios).
Las curvas elípticas sobre cuerpos finitos no siempre son grupos cíclicos
(ver ejercicios), sin embargo, no distan mucho de estas. Podemos demostrar
que si esta no es cíclica, entonces resulta ser un producto directo de dos grupos
cíclicos.
En 1985 R. Schoof ha expuesto en [10] un algoritmo eficiente, con el cual
se puede calcular de manera explícita el número |E(K)|. Para comprender
este algoritmo, necesitamos unos conocimientos muy profundos sobre curvas
elípticas que no podemos exponer aquí. Más sobre curvas elípticas podemos
encontrar en [15] y [16].

2.4.16 Ejercicios.

1. Demuestre que E(K) en el último ejemplo es cíclico.

2. Considere la curva elíptica y 2 = x3 + x + 1 sobre el cuerpo K = Z5 .

(a) Determine |E(K)|.


(b) Demuestre que E(K) es cíclico de orden 9.

3. Considere la curva elíptica y 2 = x3 − x sobre el cuerpo K = Z11 .

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 71

(a) Determine |E(K)|.


(b) Demuestre que E(K) no es cíclico.
(c) Demuestre que E(K) tiene un subgrupo de orden 4, el cual posee
3 involuciones. Es decir, un 4-grupo de Klein.

2.5 Curvas de Edwards


En el teorema 2.4.11 demostramos que el doblado de un punto sobre una curva
elíptica, es decir, sumar un punto con sí mismo, satisface una regla de adición
diferente a la adición de dos puntos distintos. El costo de ejecución de estos
dos procedimientos son distintos y puede exteriorizarse en diferentes tempos
de ejecución o en diferentes consumos de energía. Estas diferencias pueden
medirse físicamente y con posterioridad pueden ser utilizadas para averiguar
cuál de los dos cálculos está realizando el computador. Naturalmente, esto
tiene consecuencias para la seguridad del cálculo del logaritmo discreto sobre
una curva elíptica.
Un intruso sobre un criptosistema que pueda apropiarse de este hecho es
usualmente denominado side channel attack.
En 2007 H. Edwards presentó en [6] una nueva ecuación para muchas curvas
elípticas, en lugar de la ecuación de Weierstrass (ver 2.4.8), con la cual pode-
mos describir de manera unificada la adición de dos puntos sobre la curva. Un
side channel attack, como el descrito anteriormente, resultaría ineficaz.

2.5.1 Definición. Sea K un cuerpo con característica distinta de 2. Una


ecuación de la forma

Ed : x2 + y 2 = 1 + dx2 y 2 , (2.9)

donde d no es un cuadrado en K, se denomina una curva de Edwards sobre


K. Llamaremos a

Ed(K) = {(x, y) | x, y ∈ K, x2 + y 2 = 1 + dx2 y 2 } (2.10)

el conjunto de puntos K-racionales de la curva de Edwards.


Sobre el conjunto Ed(K) definimos una adición de la siguiente manera
 
x1 y2 + y1 x2 y1 y2 − x1 x2
(x1 , y1 ) + (x2 , y2 ) = , . (2.11)
1 + dx1 x2 y1 y2 1 − dx1 x2 y1 y2
Si K = R, entonces la curva de Edwards x2 + y 2 = 1 − 30x2 y 2 tiene la
siguiente forma

2.5. Curvas de Edwards


72 Willems/Gutiérrez

Figura 2.6: Ed : x2 + y 2 = 1 − 30x2 y 2

2.5.2 Lema. Para cualquier par de puntos sobre Ed(K) la adición está
definida. Es decir, si (x1 , y1 ), (x2 , y2 ) ∈ Ed(K), entonces se verifica que
1 + dx1 x2 y1 y2 = 0.

Una demostración de este resultado podemos encontrarla en [17], p. 91.

Para esta adición, podemos calcular directamente que:

1. La operación + es conmutativa.

2. (0, 1) ∈ Ed(K) y, además, para todo (x, y) ∈ Ed(K) se verifica que


(x, y) + (0, 1) = (x, y). Es decir, (0, 1) es elemento neutro.

3. Para todo (x, y) ∈ Ed(K) se tiene que (x, y) + (−x, y) = (0, 1). Es
decir, (−x, y) es inverso para (x, y).

4. Ed(K) tiene a lo más 3 involuciones. El punto (0, −1) es siempre un


involución sobre la curva. Si la ecuación x2 = −1 tiene una solución
√ K, entonces√existen dos involuciones más, concretamente éstas son
en
( −1, 0) y (− −1, 0).

5. (1, 0) tiene orden 4.

Podemos demostrar, como veremos a continuación, que Ed(K) con esta adi-
ción es un grupo abeliano. En esencia solo presenta alguna dificultad la prueba
de la propiedad asociativa de la suma.

2.5.3 Teorema. Sean Char(K) = 2, d ∈ K2 y e = 1 − d ∈ K2 . Es decir, d y


e no son cuadrados en K. Sea, además,

Ed : x2 + y 2 = 1 + dx2 y 2

Capítulo 2. Fundamentos matemáticos


Una introducción a la criptografía de clave pública 73

una curva de Edwards y E la curva elíptica

v 2 = u3 + ( 4e − 2)u2 + u.

Entonces se cumple que Ed(K) ∼


= E como grupo abeliano.
D EMOSTRACIÓN .[Bosquejo].

1. E es una curva elíptica. Para ello es necesario demostrar que u3 + ( 4e −


2)u2 + u =: f (u) no tiene raíces múltiples.
Las raíces de f (u) son √
2 −4
0, −a± 2 a ,
donde a = 4e − 2. Si fuese a2 = 4, entonces a = ±2, es decir, 4e = 0,
una contradicción o 4e = 4, es decir, 1 = e = 1 − d, entonces d = 0, lo
cual también es contradictorio.

2. La función α : Ed(K) −→ E definida por

(0, 1) −→ O
(0, −1) −→ (0, 0)
 
1 + y 2e(1 + y)
(x, y) −→ , =: (u, v), para x = 0
1 − y (1 − y)x

es un isomorfismo.
Observemos que, si x = 0, entonces y = 1. En efecto, para y = 1
se tiene que x2 + 1 = 1 + dx2 , es decir, d ∈ K2 , lo cual contradice
la condición impuesta a d. Con esto podemos afirmar que (u, v) está
definido y, además, pertenece a E(K). Por lo tanto, α está definida
sobre todo el conjunto Ed(K).
La función inversa β : E −→ Ed(K) definida por

O −→ (0, 1)
(0, 0) −→ (0, −1)
 
2eu u − 1
(u, v) −→ , =: (x, y), para v = 0 y u = −1.
v u+1

Se verifica que (x, y) ∈ Ed(K), siempre que (x, y) esté definido.

e ) ∈
Si u = −1, entonces v 2 = 4( 1−e / K2 , ya que 1 − e = d ∈
/ K2 , lo
cual es contradictorio.

2.5. Curvas de Edwards


74 Willems/Gutiérrez


−a± a2 −4
Si v = 0, entonces u = 0 o u = 2 , con a = 4
e − 2. Por lo tanto
β(0, 0) está definido.
Podemos demostrar que a2 − 4 ∈ / K2 . Notemos que a2 − 4 = (a −
2)(a + 2). Además, a + 2 = 4e ∈ K2 y a − 2 = 4e − 4 ∈/ K2 . Con esto
podemos afirmar que (x, y) siempre está definido y β ◦ α es la función
identidad sobre el conjunto Ed(K).
La prueba que α es un homomorfismo de grupos requiere más trabajo,
lo cual no deseamos demostrar.

2.5.4 Observaciones.
1. Si e no es un cuadrado en K, entonces Ed(K) es, además, un grupo
abeliano. Por lo tanto, tenemos que reemplazar en el teorema 2.5.3 la
curva elíptica por una curva elíptica helicoidal o espiralada.

2. El grupo E(K) de los puntos K-racionales de una curva elíptica sobre


K puede ser en el mejor de los casos isomorfo al grupo de los puntos
K-racionales de una curva de Edwards, si E(K) tiene un elemento de
orden 4. Este no es siempre el caso.

2.5.5 Ejercicios.
1. Sea K = Z5 . Entonces 2 ∈
/ K2 . Sea

Ed : x2 + y 2 = 1 + 2x2 y 2 .

Demuestre que

(a) Ed(K) = {(1, 0), (4, 0), (0, ±1), (2, ±2), (3, ±2)}.
(b) Ed(K) es un grupo cíclico.
(Observemos que aquí no es aplicable el teorema 2.5.3, ya que
e = 1 − 2 = −1 ∈/ K2 )
2. Sea K = Z5 y E : y 2 = x3 − x2 − x una curva elíptica sobre el cuerpo
K. Demuestre que
(a) E(K) = {(0, 0), (1, ±1), (2, ±1), (3, ±1)} ∪ {O}.
(b) Ed(K) es un grupo cíclico. Por lo tanto, del ejercicio 1 se sigue
que E(K) ∼
= Ed(K).
3. Halle un cuerpo K y una curva elíptica E de tal forma que E(K) ∼
=
Ed(K) para toda curva de Edwards Ed sobre el cuerpo K.

Capítulo 2. Fundamentos matemáticos


Capítulo A

Algoritmos y complejidad

Contenido

A.1 La O-notación . . . . . . . . . . . . . . . . . . . . . . . 75

Entenderemos por tiempo de ejecución de un algoritmo, el tiempo que este


necesita para el cálculo de un resultado. Este tiempo en esencia se determina
con base en el número de operaciones entre bits que el algoritmo deba eje-
cutar. En la práctica, a menudo hay interés en tener algoritmos eficientes, es
decir, rápidos. Por ejemplo, nadie desea esperar mucho tiempo para escuchar
la música cuando se inicia un CD. Es decir, la decodificación debería ser lo
más rápida posible.
Contrario a esta situación, también estamos interesados en problemas en los
que se hace necesario que todos los algoritmos conocidos sean muy lentos. Por
ejemplo, supongamos que se envía un mensaje encriptado utilizando el proce-
dimiento RSA o ElGamal, entonces solo se tiene certeza de una alta seguridad,
cuando no existe un algoritmo eficiente que pueda factorizar grandes números
o para calcular el logaritmo discreto. El tiempo de ejecución debe ser en estos
casos muy largo.

A.1 La O-notación
Para presentar de manera cualitativa el tiempo de ejecución necesitamos la
denominada O-notación.

75
76 Willems/Gutiérrez

A.1.1 Definición. Sean f, g : N −→ R+ funciones definidas de N hasta el


conjunto de los números reales no negativos. Escribiremos f = O(g), si exis-
ten 0 < c ∈ R y n0 ∈ N, tal que

f (n) ≤ cg(n),

para todo n ≥ n0 .

Para n suficientemente grandes, los valores de f podemos evaluarlos uti-


lizando la función g. Esta notación toma especial sentido cuando la función g
es muchísimo más sencilla que f y esencialmente no crece más rápido que f .
Por ejemplo:
n2 − 3n + 4 = O(n2 ),
dado que n2 − 3n + 4 ≤ n2 , para n ≥ 2. La expresión f (n) = O(n2 ) nos dice
que con una duplicación de n, el valor de f (n) se cuadruplica. La O-notación
contiene información cualitativa sobre las funciones.

A.1.2 Definición. Sea n ∈ N. Definimos (y notamos) la longitud l(n) de n


como el número de bits en la representación binaria de n, es decir,
 n
l(n) = 1 + log2 n = 1 + ln ln 2 = O(ln n).

Ejemplos. 7 = 111. Entonces l(7) = 3 y 13 = 1011, por lo tanto, l(13) =


4. El costo necesario para que un computador corra un algoritmo lo podemos
medir mediante la realización de las operaciones entre bits. Supongamos que
se desea sumar dos números naturales m y n, con m ≤ n y l(n) = k. Entonces
el computador efectúa a lo más k operaciones entre bits. Esto implica que el
costo está acotado por l(n) = O(ln n). La multiplicación de n con m es a
lo más O(k2 ) = O((ln n)2 ). En este sentido podemos analizar algoritmos y
calcular su costo.

A.1.3 Definición. Se dice que un algoritmo tiene tiempo de ejecución poli-


nomial, si existe d ∈ N tal que la ejecución del algoritmo necesita a lo más
O(kd ) operaciones entre bits, si la entrada total en binario es de longitud k.

En este sentido, las operaciones estándar, como suma, resta, multiplicación y


división, tienen tiempo de ejecución polinomial. Pero otras, que en las aplica-
ciones utilizan algoritmos, por ejemplo, el algoritmo de Euclides para calcular
el máximo común divisor de dos números, también son polinomiales.
Es importante anotar que el hecho que un algoritmo tenga tiempo de recor-
rido polinomial, no necesariamente significa que el algoritmo sea rápido. En

Capítulo A. Algoritmos y complejidad


Una introducción a la criptografía de clave pública 77

efecto, en la definición de la notación O nada se dice sobre el factor c, que en


ella aparece. Este en esencia determina el coeficiente principal del polinomio
que suministra el número de operaciones entre bits. Si este es muy grande,
entonces el algoritmo puede posiblemente tener un recorrido muy largo.
Si necesitamos un algoritmo rápido para la solución de un problema, en-
tonces este debería ser de la clase de los algoritmos polinomiales. Si deseamos,
por el contrario, que todos los algoritmos conocidos para la solución de un pro-
blema (digamos, por ejemplo, el cálculo del logaritmo discreto en un cifrado)
sean muy lentos, entonces estos deberían estar lo más lejos posible de los poli-
nomiales. Estos deberían, si fuese posible, tener tiempo de ejecución expo-
nencial. Es decir, el costo debería tener magnitud de orden O(eck ), donde k
es nuevamente la longitud de la entrada total y 0 < c ∈ R.

A.1.4 Ejemplo. Supongamos que se desea factorizar un número natural n.


Entonces podemos proceder de manera ingenua de la siguiente manera. In-
tentamos encontrar divisores de n, dividiendo de manera sucesiva a n, entre

números menores o igual que n. El tiempo de ejecución de este algoritmo es
 1 
O n 2 +ε , donde ε > 0 puede ser elegido de manera arbitraria. En el sentido
de la definición de arriba, se tiene que este es exponencial, ya que
 1   1   1 
O n 2 +ε = O e( 2 +ε) ln n = O e(ln 2)( 2 +ε) log2 n .

Para una apreciación cualitativa de los tiempos de recorrido entre polinomia-


les y exponenciales podemos utilizar las L-funciones.

A.1.5 Definición. Para 0 < c ∈ R y 0 ≤ α ≤ 1 definimos sobre N la L-


función mediante
 α 1−α 
Ln [c, α] = O ec(ln n) (ln ln n) .

Notemos que en la definición del logaritmo natural podemos reemplazar ln


por loga , con cualquier a > 1, en particular por log2 , el cual mide la longitud
binaria de la entrada.
Supongamos que un algoritmo para una entrada de n el tiempo de ejecución
Ln [c, α].

1. Si α = 1, es decir, Ln [c, 1] = O(ec ln n ) = O(nc ), entonces el tiempo


de ejecución es exponencial.

2. Si α = 0, es decir, Ln [c, 0] = O(ec ln ln n ) = O((ln n)c ), entonces se


presenta tiempo de ejecución polinomial.

A.1. La O-notación
78 Willems/Gutiérrez

La función Ln [c, α] describe los tiempos de recorrido que se encuentran


entre polinomial y exponencial.

A.1.6 Definición. Diremos que el tiempo de ejecución de un algoritmo es


subexponencial, si 0 < α < 1.

Capítulo A. Algoritmos y complejidad


Bibliografía & Referencias

[1] AGRAWAL , M.; K AYAL , N. AND S AXENA , N. Primes is in P. Annals of


Mathematics, 160, pp. 781-793, 2004.

[2] B LAKLEY, R. Safeguarding cryptographic keys. Proceeding of the Na-


tional Computer Conference (NCC), 1979, AFIPS Conference Proceedings,
Vol. 48, pp. 313-317, 1979.

[3] B ONEH , D. AND L IPTON , R.J. Algorithms for black-box fields and their
application in cryptography, Proceedings Crypto’96, LNCS 1109, Springer
Verlag, pp. 283-297.

[4] B UCHMANN , J. Introduction to Cryptography. Springer-Verlag, UTM,


2002.

[5] D IFFIE , W. AND H ELLMAN , M.E. New directions in cryptography. IEEE


Trans. Inform. Theory 22, pp. 644-654, 1976.

[6] E DWARDS , H. A normal form for elliptic curves, Bulletin Am. Math. Soc.,
p.p. 393-422, 2007.

[7] F ORSTER O. Algorithmische Zahlentheorie, Vieweg: Lehrbuch Math,


1996.

[8] KOBLITZ , N. A Couse in Number Theory and Cryptography, Berlin:


Springer, GTM No. 114, 1998.

[9] L ENSTRA , A. Computacional Methods in public key cryptography


Disponible: http://www.win.tue.nl/∼klenstra

[10] S CHOOF, R. Elliptic curves over finite fields and the computation of
square roots mod p. Mathematics of Computations Vol 44, pp. 483-494,
1985.

79
80 Willems/Gutiérrez

[11] S HAMIR A. How to share a secret. Communication of the ACM. Vol. 22,
No. 11, p.p. 612-613, 1979.

[12] S HANNON , C. Communication theory of secrecy systems. Communica-


tion theory of secrecy systems. Bell Syst. Tech. J. 28, pp. 656-715, 1949.

[13] S INGH , S. The Code Book: The Science of Secrecy from Ancient Egypt
to Quantum Cryptography. B & T, 2000.

[14] WÄTJEN , D. Kryptographie. Spektrum Lehrbuch, 2004.

[15] WASHINGTONG , L. Elliptic curves: Number theory and Cryptography.


Chapmann & Hall/CRC, 2003.

[16] W ERNER , A. Elliptische Kurven in der Kryptographie, Berlin: Springer-


Verlag, 2002.

[17] W ILLEMS , W. Codierungstheorie und Kryptographie. Basel:


Birkhaeuser Verlag, 2008.

Bibliografía & Referencias


Índice de nombres

Adleman, L. 10
Agrawal, M. 28
Alford, W. 29
Bézout, E. 12, 53
Blakley, R. 24
Boneh, D. 15
Carmichael, R. 28
Diffie, W. 8, 14, 15
Dixon, J. 36, 37, 38
Edwards, H. 73
ElGamal, T. 13, 14, 18
Euclides 12, 52, 53
Euler, L. 10, 30, 56, 57, 58
Fermat, P. 28, 57
Granville, A. 29
Hasse, H. 35, 71, 72
Hellman, M. 8, 14, 15, 41
Hongbo, Y. 24
Jacobi, C. 60, 61
Kayal, N. 28
Korselt, A. 29
Lagrange, J. 26, 49, 50, 51
Legendre, A. 57, 59
Lenstra, H. W. 32, 33, 36, 66
Lipton, R. J. 15
Miller, G. 30
Pollard, J. 32, 36, 40

81
82 Willems/Gutiérrez

Pommerence, C. 29, 36
Pohlig, S. 41, 42
Rabin, M. 30
Rivest, R. 10
Saxena, N. 28
Shanks, D. 41
Schoof, R. 73
Shannon, C. 2, 5
Shamir, A. 10, 24
Solovay, R. 30
Strassen, V. 30
Turing, A. 8
Weierstrass, K. 68, 71
Wilson, J. 27
Xiaoyun, W. 24
Yiqun, L. Y. 24
Zimmermann, P. 13

Bibliografía & Referencias


Índice alfabético

(p − 1)-método de Pollard, 30 Criptosistema, 3


(t, n)-umbral, 23 computacionalmente seguro, 7
de Shamir, 24 de clave pública, 8
O-notación, 75 perfectamente seguro, 5
Índice, 47 Cuerpo, 54
Baby-step-Giant-step, 39 Cuerpos finitos, 60
One Time Pad, 6 Curva de Edwards, 71
Curva elíptica, 31, 66
AKS, 26
ecuación de Weierstrass, 66
Algoritmo
reducción, 31
exponencial, 77
suave, 64
polinomial, 76
Curvas elípticas, 63
subexponencial, 78
tiempo de ejecución, 75 Descifrado, 3
Algoritmo de Dixon, 35
Algoritmo de Euclides, 50 Ecuación de Weierstrass, 66
extendido, 51 El método Rho de Pollard, 38
Algoritmo de Lenstra, 32 Esquema de signatura, 16
Algoritmo de Pohlig-Hellman, 42 ElGamal, 17
Anillo con unidad, 53 RSA, 16
Anillo conmutativo, 54
Factorización de números grandes, 9
Base de factores, 35, 42
Función
cifrado, 3 ϕ de Euler, 54
Clase lateral derecha, 47 de cifrado, 3
Clase lateral izquierda, 47 de descifrado, 3
Coeficientes de Bézout, 51 de una vía, 8
Colisiones, 19 trampa, 8
Congruencia módulo n, 51 Hash, 19
Congruencias simultáneas, 51 resistente a colisiones, 19

83
84 Willems/Gutiérrez

Grupo, 45 singular, 64
abeliano, 46 Puntos
cíclico, 49 K-racionales, 66
conmutativo, 46
generador, 49 Repetición del cuadrado, 11
orden de un, 46 Resto cuadrático, 55
RSA, 9
Huella digital, 19
Símbolo de Jacobi, 59
Intercambio Símbolo de Legendre, 55
de Diffie y Hellman, 14 Side channel attack, 71
Intervalo del tamiz, 37 SSH, 12
Involución, 48 SSL, 12
Subgrupo, 46
Ley de reciprocidad cuadrática, 57
Logaritmo discreto, 8, 39 Teorema de Euler, 55, 56
Baby-step, 39 Teorema de Hasse, 69
Giant-step, 39 Teorema de Wilson, 26
Test de Fermat, 27
Método de Test de Miller-Rabin, 28
Dixon, 35 Test de Solovay-Strassen, 29
Index-Calcǔlus, 43 Texto cifrado, 3
Lenstra, 32 Texto plano, 3
tamiz cuadrático, 37 Transversal derecho, 47
Número de Carmichael, 27 Transversal izquierdo, 47

Orden de un elemento, 48

Pequeño teorema de Fermat, 55


PGP, 12
Problema del logaritmo discreto, 39
Procedimiento
de ElGamal, 12
Procedimientos
asimétricos, 4
de clave pública, 4
híbridos, 5
simétricos, 4
Punto
al infinito, 67
regular, 64

ÍNDICE ALFABÉTICO
En esta era de la información, la
necesidad de ocultar datos
relevantes se ha incrementado hasta
convertir a la criptografía en una
herramienta fundamental en
cualquier campo de trabajo, sea este
informático, privado, empresarial o
de seguridad nacional. Este texto
tiene su origen en un curso dictado
por el profesor Wolfgang Willems
(Universidad de Magdeburg,
Alemania) en la Universidad del
Norte y su contenido será de
especial interés para investigadores
en álgebra, estudiantes de
ingeniería de sistemas y electrónica.

Вам также может понравиться