Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
invención posterior del criptosistema de clave pública RSA por Rivest, Shamir,
y Adleman en 1978 son eventos decisivos en la larga historia de las comunicaciones secretas.
Es difícil sobreestimar la importancia de los criptosistemas de clave pública y sus esquemas de
firma digital asociados en el mundo moderno de computadoras e Internet. Este libro
proporciona una introducción a la teoría de la criptografía de clave pública y las ideas
matemáticas subyacentes
Esa teoría, La criptografía de clave pública se basa en muchas áreas de las matemáticas,
incluidas teoría de números, álgebra abstracta, probabilidad y teoría de la información. Cada
de estos temas se presenta y desarrolla con suficiente detalle para que esto
prerrequisito es un primer curso en álgebra lineal. Por otro lado, los alumnos
Con una base matemática más sólida puede pasar directamente a la criptografía.
aplicaciones y todavía tiene tiempo para temas avanzados como la curva elíptica
Entre las muchas facetas de la criptografía moderna, este libro elige concentrarse
principalmente en criptosistemas de clave pública y esquemas de firma digital.
bien preparado para futuros estudios en criptografía, pero habrá adquirido un verdadero
Se basa la criptografía.
Los temas tratados en este libro incluyen el intercambio de claves Diffie-Hellman, discreto
pruebas de conocimiento cero, efectivo digital, AES, etc.) y sirve para dirigir al lector hacia
áreas para su posterior estudio.
Recursos electrónicos: el lector interesado encontrará material adicional y una lista de erratas
en la página de inicio de Criptografía matemática:
www.math.brown.edu/~jhs/MathCryptoHome.html
Esta página web incluye muchos de los ejercicios numéricos del libro, lo que permite al lector
cortarlos y pegarlos en otros programas, en lugar de tener que volver a escribirlos.
Ningún libro está libre de errores o no puede ser mejorado. Estaríamos encantados de recibir
comentarios, buenos o malos, y correcciones de nuestros lectores. Puede enviarnos un correo
a
mathcrypto@math.brown.edu
individuos por probar este libro y por las muchas correcciones y sugerencias útiles que ellos y
sus estudiantes proporcionaron: Liat Berdugo, Alexander
Collins, Samuel Dickman, Michael Gartner, Nicholas Howgrave-Graham, SuIon Ih, Saeja Kim,
Yuji Kosugi, Yesem Kurt, Michelle Manes, Victor Miller, David Singer, William Whyte. Además,
nos gustaría agradecer a los muchos estudiantes de la Universidad Brown que tomaron Math
158 y nos ayudaron a mejorar la exposición de este libro.
las siguientes personas para las correcciones y sugerencias que se han incorporado a la
segunda edición: Stefanos Aivazidis, Nicole Andre, John B. Baena, Carlo Beenakker, Robert
Bond, Reinier Broker, Campbell Hewett, Rebecca Constantine, Stephen Constantine,
Christopher Davis, Maria Fox , Steven Galbraith, Motahhareh Gharahi, David Hartz, Jeremy
Huddleston, Calvin Jongsma, Maya Kaczorowski, Yamamoto Kato, Jonathan Katz, Chan-Ho Kim,
Ariella Kirsch, Martin M. Lauridsen, Kelly McNeilly, Ryo Masuda, Shahab Mirzadeh, Kenneth
Ribet, Jeremy Roach, Hemlal Sahum, Ghassan Sarkis, Frederick Schmitt, Christine Schwartz,
Wei Shen, David Singer, Michael Soltys, David Spies, Bruce Stephens, Paulo Tanimoto, Patrick
Vogt, Ralph Wernsdorf, Sebastian Welsch, Ralph Wernsdorf, Edward White, Pomona College
Math 113 (Spring 2009), Universidad de California en
Jill Pipher
Joseph H. Silverma
Introducción
Introducción
documento.
de este libro es presentar al lector una variedad de temas matemáticos al mismo tiempo que
integra las matemáticas en una descripción de la criptografía de clave pública moderna.
Durante miles de años, todos los códigos y cifras se basaron en la suposición de que las
personas que intentan comunicarse, los llaman Bob y Alice, comparten una clave secreta que
su adversario, la llaman Eva, no posee. Bob usa la clave secreta para cifrar su mensaje, Alice
usa la misma clave secreta para descifrar el mensaje, y la pobre Eva, que no conoce la clave
secreta, no puede realizar el descifrado. Una desventaja de estos criptosistemas de clave
privada es que Bob y Alice necesitan intercambiar la clave secreta antes de comenzar.
Las ventajas de un criptosistema de clave pública son múltiples. Por ejemplo, Bob puede enviar
a Alice un mensaje cifrado incluso si nunca antes han estado en contacto directo. Pero aunque
la criptografía de clave pública es un concepto teórico fascinante, no está del todo claro cómo
se podría crear un criptosistema de clave pública. Resulta que los criptosistemas de clave
pública pueden basarse en problemas matemáticos difíciles. Más precisamente, uno busca un
problema matemático que inicialmente es difícil de resolver, pero que se vuelve fácil de
resolver si conoce alguna información adicional. Por supuesto, los criptosistemas de clave
privada no han desaparecido. De hecho, son más importantes que nunca, ya que tienden a ser
significativamente más eficientes que los criptosistemas de clave pública. Por lo tanto, en la
práctica, si Bob quiere enviar un mensaje largo a Alice, primero usa un criptosistema de clave
pública para enviar a Alice
la clave para un criptosistema de clave privada, y luego usa el criptosistema de clave privada
para encriptar su mensaje. Los criptosistemas de clave privada modernos más eficientes, como
DES y AES, confían en su seguridad en la aplicación repetida de varias operaciones de mezcla
que son difíciles de mezclar sin la clave privada. Por lo tanto, aunque el tema de la criptografía
de clave privada es de importancia teórica y práctica, la conexión con ideas matemáticas
fundamentales fundamentales es mucho menos pronunciada que con los criptosistemas de
clave pública. Por esa razón, este libro se concentra casi exclusivamente en criptografía de
clave pública, especialmente en criptosistemas de clave pública y digital.
firmas
La criptografía matemática moderna se basa en muchas áreas de las matemáticas, incluida
especialmente la teoría de números, el álgebra abstracta (grupos, anillos, campos), la
probabilidad, la estadística y la teoría de la información, por lo que los requisitos previos para
estudiar el tema pueden parecer formidables. Por el contrario, los requisitos previos para leer
este libro son mínimos, porque nos tomamos el tiempo para presentar cada tema matemático
requerido con la suficiente profundidad como sea necesario. Así, este libro proporciona un
tratamiento autónomo de la criptografía matemática para
El lector con antecedentes matemáticos limitados. Y para aquellos lectores que han tomado un
curso en, digamos, teoría de números o álgebra abstracta o probabilidad, sugerimos revisar
brevemente las secciones relevantes a medida que se alcanzan y luego pasar directamente a
las aplicaciones criptográficas.
Este libro no pretende ser una fuente integral de todas las cosas criptográficas. En primer
lugar, como ya se señaló, nos concentramos en la criptografía de clave pública. Pero incluso
dentro de este dominio, hemos optado por buscar una pequeña selección de temas a una
profundidad matemática razonable, en lugar de proporcionar una descripción más superficial
de una gama más amplia de temas. Creemos que cualquier lector que haya dominado el
material de este libro no solo estará bien preparado para futuros estudios en criptografía, sino
que habrá adquirido una comprensión real de los principios matemáticos subyacentes sobre
los cuales
Se basa la criptografía. Sin embargo, esto no significa que los temas omitidos no sean
importantes. Simplemente significa que hay un límite en la cantidad de material que se puede
incluir en un libro (o curso) de longitud razonable. Como en cualquier texto, el la elección de
temas particulares refleja los gustos e intereses de los autores. Para conveniencia del lector, el
capítulo final contiene una breve encuesta de áreas para estudio adicional.
Una guía de temas matemáticos: este libro incluye una cantidad significativa de material
matemático sobre una variedad de temas que son útiles en criptografía.
La siguiente lista está diseñada para ayudar a coordinar los temas matemáticos que cubrimos
con temas que la clase o el lector pueden haber estudiado.
Congruencias, primos y campos finitos - Sectas. 1.2, 1.3, 1.4, 1.5, 2.10.4
Audiencia prevista y requisitos previos: este libro proporciona una introducción independiente
a la criptografía de clave pública y a las matemáticas subyacentes que se requieren para la
asignatura. Es adecuado como texto para estudiantes universitarios avanzados y estudiantes
de posgrado principiantes. Proporcionamos suficiente material de fondo para que el libro
pueda usarse en cursos para estudiantes sin
exposición previa a álgebra abstracta o teoría de números. Para las clases en las que los
estudiantes tienen una formación más sólida, se puede omitir el material matemático básico,
dejando tiempo para algunos de los temas más avanzados.
Los prerrequisitos formales para este libro son pocos, más allá de una instalación con
álgebra de secundaria y, en cap. 6, geometría analítica. El cálculo elemental se usa aquí y allá
de una manera menor, pero no es esencial, y el álgebra lineal se usa de manera pequeña en el
Capítulo. 3 y más extensamente en el cap. 7. No se asume ningún conocimiento previo para
temas matemáticos como la teoría de números, el álgebra abstracta y la teoría de probabilidad
que juegan un papel fundamental en la criptografía moderna. Están cubiertos en detalle según
sea necesario. Sin embargo, debe enfatizarse que este es un libro de matemáticas con su
parte de definiciones formales y teoremas y pruebas. Por lo tanto, se espera que el lector
tenga un cierto nivel de sofisticación matemática. En particular, los estudiantes que hayan
tomado previamente un curso de matemáticas basado en pruebas encontrarán el material más
fácil que aquellos sin esos antecedentes. Por otro lado, el tema de la criptografía es tan
atractivo que este libro es un buen texto para un curso de introducción a las pruebas, con el
entendimiento de que el instructor deberá cubrir el material más lentamente para que los
estudiantes tengan tiempo de sentirse cómodos con las matemáticas basadas en pruebas.
Programa sugerido: este libro contiene considerablemente más material del que pueden cubrir
cómodamente los estudiantes principiantes en un curso de un semestre.
Sin embargo, para los estudiantes más avanzados que ya han tomado cursos de teoría de
números y álgebra abstracta, debería ser posible hacer la mayor parte del material restante.
Sugerimos cubrir la mayoría de los temas en Chaps. 1–4, posiblemente omitiendo algunos de
los temas más técnicos, el material opcional sobre el cifrado Vig`enere y la sección sobre teoría
de anillos, que no se utiliza hasta mucho más adelante en el libro. Los siguientes tres capítulos
sobre teoría de la información (Capítulo 5), curvas elípticas (Capítulo 6) y retículas (Capítulo 7)
son en su mayoría independientes entre sí, por lo que el instructor tiene la opción de cubrir
uno o dos
Cubra las sectas. 3.1–3.5 y 3.9–3.10. Opcionalmente, cubra las Sectas más sofisticadas
matemáticamente. 3.6–3.8, que trata con números lisos, tamices y el cálculo del índice.
Cubra las sectas. 5.1, 5.3 y 5.4. Opcionalmente, cubra las secciones matemáticamente más
sofisticadas sobre el método ρ de Pollard (sección 5.5), la teoría de la información (sección
5.6) y la teoría de la complejidad (sección 5.7). El material en el cifrado Vigen`ere en la sección.
5.2 ilustra muy bien el uso de estadísticas en el criptoanálisis, pero está algo alejado del
camino principal.
Cubra las sectas. 6.1–6.4. Cubra otras secciones según lo permita el tiempo, pero tenga en
cuenta que
Capítulo 7. Enrejados y criptografía. Cubra las sectas. 7.1–7.8. (Si el tiempo es corto, uno puede
omitir una o ambas Secciones. 7.1 y 7.2.) Cubra cualquiera de las Sectas. 7.13–7.14 en el
algoritmo de reducción de celosía LLL o Sectas. 7.9–7.11 en el criptosistema NTRU, o ambos,
según lo permita el tiempo. (Las secciones de NTRU requieren el material en
Creemos que es útil para los estudiantes obtener una apreciación de los orígenes de su
materia, por lo que hemos dispersado un puñado de secciones en todo el libro que contienen
algunos breves comentarios sobre la historia de la criptografía. Los instructores que quieran
pasar más tiempo en matemáticas pueden omitir estas secciones sin afectar la narrativa
matemática.
Cap. 4, mientras que el material en las firmas de la curva elíptica está cubierto en la breve
sección. 6.4.3. Las dos secciones sobre firmas basadas en celosía de la primera edición se han
reescrito ampliamente y ahora aparecen como Sect. 7.12.
• Se han reescrito o ampliado varias explicaciones para mayor claridad, especialmente en los
capítulos. 5–7.
Capítulo 1
Una introducción a la criptografía
1.1 Cifrados de sustitución simple
Mientras Julio César examina la batalla que se desarrolla desde su puesto avanzado de la
colina, un mensajero agotado y desaliñado irrumpe en su presencia y le entrega una hoja de
pergamino que contiene galimatías:
jsjrdkfqqnslgfhpgwjfpymwtzlmnrrnsjsyqzhnzx
En unos instantes, Julius envía una orden para que una unidad de reserva de aurigas corra
alrededor del flanco izquierdo y explote una brecha momentánea en la formación del
oponente.
jsjrdkfqqnslgfhpgwjfpymwtzlmnrrnsjsyqzhnzx
Enemigo cayendo hacia atrás. Avance inminente. Lucius Queda una peculiaridad menor que
debe abordarse. ¿Qué sucede cuando Julius encuentra una letra como d? No hay una letra que
aparece antes de cinco letras en el alfabeto d. La respuesta es que debe terminar hasta el final
del alfabeto. Por lo tanto, d se reemplaza por y, ya que y es seguido por z, a, b, c, d.
alfabeto abcd ... xyz alrededor de un círculo, en lugar de en una línea. Si un segundo círculo
alfabeto se coloca entonces dentro del primer círculo y el círculo interior se hace girar cinco
letras, como se ilustra en la Fig. 1.1, la disposición resultante se puede utilizar para fácilmente
cifrar y descifrar mensajes de César. Para descifrar una carta, sólo tiene que encontrar en la
rueda interior y leer la letra de texto plano correspondiente de la rueda exterior. Para cifrar,
invierta este proceso: busque la letra de texto sin formato en
la rueda exterior y lea la letra de texto cifrado de la rueda interior. Y tenga en cuenta que si
construye una rueda de cifrado cuya rueda interior gira, entonces ya no está restringido a
cambiar siempre exactamente por cinco letras. Las ruedas de cifrado de este tipo se han
utilizado durante siglos.
Aunque los detalles de la escena anterior son totalmente ficticios, y en todo caso es poco
probable que un mensaje a un general romano habría sido escrito en Inglés moderno (!), Hay
evidencia de que César empleó este método a principios de la criptografía, la cual es a veces
llamado el cifrado César en su honor. También se refiere a veces como un cifrado de
desplazamiento, ya que cada letra del alfabeto se desplaza hacia arriba o hacia abajo. La
criptografía, la metodología para ocultar el contenido de los mensajes, proviene de las
palabras raíz griegas kryptos, que significa oculto, 3 y graphikos, que significa escritura. El
estudio científico moderno de criptografía a veces se denomina criptología.
letra. Sin embargo, si Bob encripta un mensaje para Alice4 usando un cifrado César y permite
que el mensaje encriptado caiga en manos de Eve, a Eve le tomará muy poco tiempo
descifrarlo. Todo lo que necesita hacer es probar cada uno de los 26 turnos posibles.
Bob puede hacer que su mensaje sea más difícil de atacar usando un esquema de reemplazo
más complicado. Por ejemplo, podría reemplazar cada aparición de a por z y cada aparición de
z por a, cada aparición de b por y y cada aparición de y por b, y así sucesivamente,
intercambiando cada par de letras c ↔ x ,. . . , m ↔ n.
asignando a cada letra de texto plano en el dominio una letra de texto cifrado diferente en el
rango. (Para que sea más fácil distinguir el texto sin formato del texto cifrado, escribimos el
texto sin formato con letras minúsculas y el texto cifrado con letras mayúsculas). Tenga en
cuenta que para que el descifrado funcione, la función de cifrado debe tener la propiedad de
que no van dos letras de texto sin formato. a la misma letra de texto cifrado. Se dice que una
función con esta propiedad es uno a uno o inyectiva.
Una forma conveniente de describir la función de cifrado es crear una tabla escribiendo el
alfabeto de texto sin formato en la fila superior y colocando cada letra de texto cifrado debajo
de la letra de texto sin formato correspondiente.
Ejemplo 1.1. En la tabla 1.1 se proporciona una tabla de cifrado de sustitución simple. El
alfabeto de texto cifrado (las letras mayúsculas en la fila inferior) es una permutación elegida al
azar de las 26 letras del alfabeto. Para cifrar el mensaje de texto sin formato Cuatro puntajes y
hace siete años, juntamos las palabras, buscamos cada letra de texto sin formato en la tabla de
cifrado y escribimos la correspondiente letra de texto cifrado a continuación.
¡Poner los saltos de palabra apropiados y algunos signos de puntuación revela una solicitud
urgente!
Por lo tanto, hay más de 1026 cifrados de sustitución simple diferentes. Cada tabla de cifrado
asociada se conoce como clave.
Supongamos que Eve intercepta uno de los mensajes de Bob y que ella intenta descifrarlo
intentando cada cifrado de sustitución simple posible. El proceso de descifrar un mensaje sin
conocer la clave subyacente se llama criptoanálisis. Si Eve (o su computadora) es capaz de
verificar un millón de alfabetos cifrados por segundo, todavía le tomaría más de 1013 años
probarlos a todos.5 Pero se estima que la edad del universo es del orden de 1010 años. Por lo
tanto, Eve casi no tiene posibilidades de descifrar el mensaje de Bob, lo que significa que el
mensaje de Bob es seguro y que no tiene nada de qué preocuparse. 6 ¿O sí? Es hora de una
lección importante en el lado práctico de la ciencia de criptografía:
A pesar de la gran cantidad de cifrados de sustitución simples posibles, en realidad son
bastante fáciles de descifrar, y de hecho muchos periódicos y revistas los presentan como un
compañero del crucigrama diario. La razón por la que Eva puede criptoanalizar fácilmente un
cifrado de sustitución simple es que las letras en el idioma inglés (o cualquier otro idioma
humano) no son aleatorias. Para tomar un ejemplo extremo, la letra q en inglés está casi
siempre seguida de la letra u. Más útil es el hecho de que ciertas letras como e y t aparecen
con mucha más frecuencia que otras letras como f y c. La tabla 1.3 enumera las letras con sus
frecuencias típicas en texto en inglés. Como puede ver, la letra más frecuente es e, seguida de
t, a, o y n.
Por lo tanto, si Eve cuenta las letras en el mensaje cifrado de Bob y hace una tabla de
frecuencias, es probable que la letra más frecuente represente e, y que t, a, o, y n aparezcan
entre las siguientes letras más frecuentes. De esta manera, Eve puede probar varias
posibilidades y, después de una cierta cantidad de prueba y error, descifrar el mensaje de Bob
es poco probable que los mensajes cortos coincidan exactamente con los porcentajes de la
tabla 1.3. Todo lo que podemos decir es que entre las letras de texto cifrado L, D, G, Y y S es
probable que aparezcan varias de las letras de texto claro t, a, o, n y r.
que son pares de letras consecutivas La Tabla 1.6a enumera los bigrams que aparecen con
mayor frecuencia en inglés, y la Tabla 1.6b enumera los bigrams de texto cifrado que aparecen
con mayor frecuencia en nuestro mensaje. El texto cifrado bigrams LO y OJ aparecen con
frecuencia. Ya hemos adivinado que J = e, y en base a su frecuencia, sospechamos que L es
probable que represente una de las letras t, a, o, n o r. Como los dos bigrams ingleses más
frecuentes son th y he, hacemos las identificaciones provisionales
LO = th y OJ = he.
escribir la supuesta letra de texto sin formato debajo de la correspondiente letra de texto
cifrado.
En este punto, podemos mirar los fragmentos de texto sin formato e intentar adivinar algunas
palabras comunes en inglés. Por ejemplo, en la segunda línea vemos los tres bloques.
Recuerde que las letras más comunes en inglés (Tabla 1.3) son, en orden decreciente de
frecuencia,
e, t, a, o, n, r, i, s, h.
Ahora es una cuestión simple completar las pocas letras restantes y poner los saltos de palabra
apropiados, las mayúsculas y la puntuación para recuperar el texto sin formato:
El escritor afirmó con una expresión momentánea, una contracción de un músculo o una
mirada, para comprender los pensamientos más íntimos de un hombre. Sus conclusiones
fueron tan infalibles como tantas proposiciones de Euclides. Sus resultados serían tan
sorprendentes para los no iniciados que, hasta que se enteren de los procesos por los cuales
llegó a ellos, podrían considerarlo como un nigromante.
El conjunto de enteros se denota con el símbolo Z. Los enteros se pueden sumar, restar y
multiplicar de la manera habitual, y satisfacen todas las reglas habituales de aritmética (ley
conmutativa, ley asociativa, ley distributiva, etc.). El conjunto de enteros con sus reglas de
suma y multiplicación son un ejemplo de un anillo. Ver sección 2.10.1 para más información
sobre la teoría de los anillos.
dividir un número entero por otro. Por ejemplo, no podemos dividir 3 entre 2, ya que no hay
un número entero que sea igual a 3/2. Esto lleva al concepto fundamental de divisibilidad.
Definición. Deje a y b ser enteros con b = 0. Decimos que b divide a, o que a es divisible por b,
si hay un entero c tal que
a = bc.
escribe b| a.
Ejemplo 1.2. Tenemos 847 | 485331, ya que 485331 = 847 · 573. Por otro lado, 355 259943, ya
que cuando tratamos de dividir 259943 por 355, obtenemos un resto de 83. Más
precisamente, 259943 = 355 · 732 + 83, entonces 259943 no es un múltiplo exacto de 355.
Observación 1.3. Observe que cada entero es divisible por 1. Los enteros que son divisibles por
2 son los enteros pares, y los enteros que no son divisibles por 2 son los enteros impares.
Prueba. Dejamos la prueba como ejercicio para el lector; ver ejercicio 1.6
Definición. Un divisor común de dos enteros a y b es un entero positivo d que los divide a
ambos. El mayor divisor común de a y b es, como su nombre lo indica, el mayor entero positivo
d tal que d|a y d|b si. El máximo común divisor de a y b se denota Mcd (a, b). Si no hay
posibilidad de confusión, a veces también se denota por (a, b). (Si a y b son ambos 0, entonces
gcd (a, b) no está definido).
Es un hecho curioso que un concepto tan simple como el máximo divisor(gcd) común tiene
muchas aplicaciones. Pronto veremos que existe un método rápido y eficiente para calcular el
máximo divisor común de dos enteros, un hecho que tiene consecuencias poderosas y de largo
alcance.
Una forma de verificar que esto es correcto es hacer listas de todos los divisores positivos de
748 y de 2024.
Divisores de 748 = {1, 2, 4, 11, 17, 22, 34, 44, 68, 187, 374, 748},
Divisores de 2024 = {1, 2, 4, 8, 11, 22, 23, 44, 46, 88, 92, 184, 253,506, 1012, 2024}.
Al examinar las dos listas, vemos que la entrada común más grande es 44. Incluso a partir de
este pequeño ejemplo, está claro que este no es un método muy eficiente. Si alguna vez
necesitamos calcular los mayores divisores comunes de grandes números, tendremos que
encontrar un enfoque más eficiente.
La clave para un algoritmo eficiente para calcular los mayores divisores comunes es la división
con el resto, que es simplemente el método de "división larga" que aprendió en la escuela
primaria. Por lo tanto, si ayb son enteros positivos y si intentas dividir a por b, obtendrás un
cociente q y un resto r, donde el resto r es menor que b. Por ejemplo,
230 = 17 · 13 + 9,
Definición. (División con resto) Deje a y b ser enteros positivos.Luego decimos que a dividido
por b tiene cociente q y resto r si
a = b · q + r con 0 ≤ r <b.
Los valores de q y r están determinados únicamente por a y b; ver ejercicio 1.14. Supongamos
ahora que queremos encontrar el máximo común divisor de a y b.
Si d es cualquier divisor común de a y b, entonces está claro a partir de la ecuación. (1.1) que d
es también un divisor de r. (Ver Proposición 1.4 (c).) De manera similar, si e es un divisor
común de byr, entonces (1.1) muestra que e es un divisor de a. En otras palabras, los divisores
comunes de a y b son los mismos que los divisores comunes de byr; por lo tanto
Repetimos el proceso, dividiendo b por r para obtener otro cociente y resto, digamos
b = r · q + r con 0 ≤ r <r.
Entonces, el mismo razonamiento muestra que mcd (b, r) = mcd (r, r).
Continuando con este proceso, los restos se vuelven cada vez más pequeños, hasta que
finalmente obtenemos un resto de 0, en cuyo punto el valor final mcd (s, 0) = s es igual al mcd
de ay b.
Ilustramos con un ejemplo y luego describimos el método general, que se conoce con el
nombre de algoritmo euclidiano.
Ejemplo 1.6. Calculamos gcd (2024, 748) usando el algoritmo euclidiano, que no es más que
una división repetida con el resto. Observe cómo los valores de b y r en cada línea se
convierten en los nuevos valores de a y b en la línea siguiente:
Teorema 1.7 (El algoritmo euclidiano). Deje a y b ser enteros positivos con a ≥ b. El siguiente
algoritmo calcula gcd (a, b) en un número finito de pasos.
(2) Conjunto i = 1.
Prueba. El algoritmo euclidiano consiste en una secuencia de divisiones con resto como se
ilustra en la figura 1.2 (recuerde que establecemos r0 = a y r1 = b).
Los valores de ri están disminuyendo estrictamente, y tan pronto como llegan a cero, el
algoritmo termina, lo que demuestra que el algoritmo termina en un finito numero de pasos.
Además, en cada iteración del Paso 3 tenemos una ecuación de la forma
ri − 1 = ri · qi + ri + 1.
Por lo tanto, mcd (ri − 1, ri) = mcd (ri, ri + 1) para todo i = 1, 2, 3, .... (1.2)
Pero la ecuación (1.2) dice que esto es igual a mcd (r0, r1), es decir, a mcd (a, b), que completa
la prueba de que el último resto distinto de cero en el algoritmo euclidiano es igual al máximo
divisor común de a y b .
Queda por estimar la eficiencia del algoritmo. Notamos arriba que dado que los valores de ri
están disminuyendo estrictamente, el algoritmo termina y, de hecho, dado que r1 = b,
ciertamente termina en la mayoría de los pasos b. Sin embargo, este límite superior está lejos
de la verdad. Afirmamos que después de cada dos iteraciones del Paso 3, el valor de ri se
reduce al menos a la mitad. En otras palabras:
Caso I: ri + 1 ≤ 1/2ri
Sabemos que los valores de ri están disminuyendo estrictamente, por lo que ri + 2 <ri + 1 ≤
1/2ri.
Caso II: ri + 1> ½ ri
Ahora hemos demostrado nuestra afirmación de que ri + 2 <1/2 ri para todo i. Usando esta
desigualdad repetidamente, encontramos que
r2k + 1 <1/2 r2k − 1 <1/4 r2k − 3 <1/8 r2k − 5 <1/6 r2k − 7 <··· <(1/(2 ^ k))*r1 = (1/(2 ^ k))* b.
Observación 1.8. Demostramos que el algoritmo euclidiano aplicado a ayb con estimación
puede ser algo mejorado. Se ha demostrado que el algoritmo euclidiano no requiere más de
1.45 log2 (b) +1.68 iteraciones, y que el número promedio de iteraciones para a y b elegidas al
azar es aproximadamente 0,85 log2 (b) +0,14; ver [66].
Observación 1.9. Una forma de calcular cocientes y residuos es por mucho tiempo división,
como hicimos en la página 12. Puede acelerar el proceso usando una calculadora simple. El
primer paso es dividir a por b en tu calculadora, lo que dará un número real. Tire la parte
después del punto decimal para obtener el cociente q. Entonces el resto r se puede calcular
como
r = a - b · q.
Si solo necesita el resto, puede tomar la parte decimal (a veces también llamada parte
fraccional) de a / b y multiplicarla por b. Continuando con nuestro ejemplo, la parte decimal de
a / b ≈ 86.57697748 es 0.57697748, y multiplicar por b = 27573 da
Ejemplo 1.10. Recuerde que en el ejemplo 1.6 usamos el algoritmo euclidiano para calcular el
mcd (2024, 748) de la siguiente manera:
Dejamos a = 2024 yb = 748, entonces la primera línea dice que
528 = a - 2b.
En otras palabras,
así que hemos encontrado una manera de escribir gcd (a, b) como una combinación lineal de a
y b usando coeficientes enteros.
En general, siempre es posible escribir gcd (a, b) como una combinación lineal entera de a y b,
un resultado de sonido simple con muchas consecuencias importantes.
Teorema 1.11 (Algoritmo euclidiano extendido). Deje a y b ser positivo enteros Entonces la
ecuación
au + bv = mcd (a, b)
siempre tiene una solución en los enteros u y v. (Consulte el ejercicio 1.12 para obtener un
algoritmo eficiente para encontrar una solución).
Si (u0, v0) es una solución única, entonces cada solución tiene la forma
Prueba. Mire hacia atrás en la figura 1.2, que ilustra el algoritmo euclidiano paso a paso.
Podemos resolver la primera línea para r2 = a - b · q1 y sustituirla en la segunda línea para
obtener
El punto clave es que r4 = a · u + b · v, donde u y v son enteros. No importa que las expresiones
para u y v en términos de q1, q2, q3 sean bastante desordenadas. Continuando de esta
manera, en cada etapa encontramos que ri es la suma de un múltiplo entero de a y un múltiplo
entero de b. Finalmente, llegamos a rt = a · u + b · v para algunos enteros u y v. Pero rt = gcd (a,
b), que completa la prueba de la primera parte del teorema. Dejamos la segunda parte como
ejercicio (Ejercicio 1.11).
Definición. Deje a y b ser enteros. Decimos que ayb son primos si gcd (a, b) = 1.
Au + Bv = mcd (A, B)
puede reducirse al caso de números primos relativamente dividiendo ambos lados mcd (A, B).
Así
−7 · 46 + 19 · 17 = 1.
En el ejemplo 1.10 explicamos cómo sustituir los valores de Algoritmo euclidiano para resolver
au + bv = gcd (a, b). Ejercicio 1.12 describe un algoritmo eficiente orientado a la computadora
para calcular u y v. Si ayb son primos, ahora describimos una versión más conceptual de este
procedimiento de sustitución. Primero ilustramos con el ejemplo a = 73 y b = 25. El algoritmo
euclidiano da
73 = 25 · 2 + 23
25 = 23 · 1+ 2
23 = 2 · 11 + 1
2= 1 · 2+ 0
1.3 Aritmética modular
Es posible que haya encontrado "aritmética de reloj" en la escuela primaria, donde después de
llegar a 12, el siguiente número es 1. Esto lleva a ecuaciones de aspecto extraño como
6 + 9 = 3 y 2 - 3 = 11.
Parecen extraños, pero son ciertos usando la aritmética del reloj, ya que, por ejemplo, las 11
en punto son 3 h antes de las 2 en punto. Entonces, lo que realmente estamos haciendo es
calcular 2 - 3 = −1 y luego agregar 12 a la respuesta. Del mismo modo, 9 h después de las 6 en
punto son las 3 en punto, ya que 6 + 9 - 12 = 3.
Definición. Sea m ≥ 1 un número entero. Decimos que los enteros ayb son congruentes módulo
m si su diferencia a - b es divisible por m. Nosotros escribimos
a ≡ b (mod m)
para indicar que ayb son congruentes módulo m. El número m se llama módulo.
Nuestros ejemplos de reloj pueden escribirse como congruencias usando el módulo m = 12:
6 + 9 = 15 ≡ 3 (mod 12) y 2 - 3 = −1 ≡ 11 (mod 12).
a ≡ 0 (mod m)
son los números que son divisibles por m, es decir, los múltiplos de m.
La razón por la que la notación de congruencia es tan útil es que las congruencias se
comportan de manera muy similar a las igualdades, como lo indica la siguiente proposición.
(b) Supongamos primero que mcd (a, m) = 1. Luego, el teorema 1.11 nos dice que podemos
encontrar enteros u y v que satisfagan au + mv = 1. Esto significa que au - 1 = −mv es divisible
por m, entonces por definición, au ≡ 1 (mod m). En otras palabras, podemos tomar b = u.
Para la otra dirección, suponga que a tiene un módulo inverso m, digamos a · b ≡ 1 (mod m).
Esto significa que ab - 1 = cm para algún número entero c. Se deduce que gcd (a, m) divide
ab - cm = 1, entonces gcd (a, m) = 1. Esto completa la prueba de que a tiene un módulo inverso
m si y solo si gcd (a, m) = 1. Queda por demostrar que el inverso es único módulo m.
Incluso podemos trabajar con fracciones a / d módulo m siempre que el denominador sea
relativamente primo para m. Por ejemplo, podemos calcular 5/7 módulo 11 observando
primero que 7 · 8 ≡ 1 (mod 11), entonces 7−1 ≡ 8 (mod 11). Entonces 5
Observación 1.15. En los ejemplos anteriores fue fácil encontrar inversos módulo m por ensayo
y error. Sin embargo, cuando m es grande, es más difícil calcular un a − 1 módulo m. Tenga en
cuenta que demostramos que existen inversas utilizando el algoritmo euclidiano extendido
(Teorema 1.11). Para calcular realmente los u y v que aparecen en la ecuación au + mv = gcd (a,
m), podemos aplicar el algoritmo euclidiano directamente como lo hicimos en el ejemplo 1.10,
o podemos usar el método de caja algo más eficiente descrito al final de la sección anterior, o
podemos usar el algoritmo dado en el ejercicio 1.12.En cualquier caso, dado que el algoritmo
euclidiano toma como máximo 2 iteraciones log2 (b) + 2 para calcular gcd (a, b), solo se
necesita un pequeño múltiplo de pasos log2 (m) para calcular un módulo a− 1 m.
a = m · q + r con 0 ≤ r <m.
Esto muestra que a ≡ r (mod m) para algún entero r entre 0 y m - 1, por lo que si queremos
trabajar con enteros módulo m, es suficiente usar los enteros 0 ≤ r <m. Esto solicita la siguiente
definición.
Z / mZ = {0, 1, 2, ..., m - 1}
La Figura 1.4 ilustra el anillo Z / 5Z dando tablas de suma y multiplicación completas módulo 5.
Definición. La Proposición 1.13 (b) nos dice que a tiene un módulo inverso m si y solo si gcd (a,
m) = 1. Los números que tienen inversas se llaman unidades. Denotamos el conjunto de todas
las unidades por
Observe que si a1 y a2 son unidades módulo m, entonces también lo es a1a2. (¿Ves por qué
esto es cierto?) Entonces, cuando multiplicamos dos unidades, siempre obtenemos una
unidad. Por otro lado, si agregamos dos unidades, a menudo no obtenemos una unidad.
dado que cada número entre 1 y 6 es relativamente primo para 7. Las tablas de multiplicación
para (Z / 24Z) ∗ y (Z / 7Z) ∗ se ilustran en la Fig. 1.5. En muchos de los criptosistemas que
estudiaremos, es importante para saber cuántos elementos hay en el grupo de unidades
módulo m. Esta cantidad es lo suficientemente ubicua como para darle un nombre.
Definición. La función phi de Euler (también conocida a veces como función totient de Euler) es
la función φ (m) definida por la regla
Luego, un cifrado de desplazamiento con desplazamiento k toma una letra de texto sin
formato correspondiente al número p y la asigna a la letra de texto cifrado correspondiente al
número p + k mod 26. Observe cómo el uso de la aritmética modular, en este caso módulo 26,
simplifica la descripción del cifrado de turno. La cantidad de turno sirve como clave de cifrado
y clave de descifrado. El cifrado viene dado por la fórmula.
(Letra de texto cifrado) ≡ (Letra de texto sin formato) + (Clave secreta) (mod 26),
y el descifrado funciona cambiando en la dirección opuesta, (Letra de texto sin formato) Letter
(Letra de texto cifrado) - (Clave secreta) (mod 26).
luego
Está claro que gA ≡ gA (mod N), pero si A es grande, este algoritmo es completamente poco
práctico. Por ejemplo, si A ≈ 21000, ¡el algoritmo ingenuo tomaría más tiempo que la edad
estimada del universo! Claramente, si ha de ser útil, necesitamos encontrar una mejor manera
de calcular gA (mod N).
La idea es usar la expansión binaria del exponente A para convertir.El cálculo de gA en una
sucesión de cuadrados y multiplicaciones. Un ejemplo aclarará la idea, después de lo cual
daremos una descripción formal del método.
Ejemplo 1.18. Supongamos que queremos calcular 3218 (mod 1000). El primer paso es escribir
218 como una suma de potencias de 2,
ya que cada número en la secuencia es el cuadrado del anterior. Además, dado que solo
necesitamos estos valores del módulo 1000, nunca necesitamos almacenar más de tres dígitos.
.
La tabla 1.8 enumera las potencias de 3 módulos 1000 hasta Crear la Tabla 1.8 requiere
Tenga en cuenta que las cantidades a0, a1, ..., ar se calcularon en el Paso 2. Por lo tanto, el
producto (1.4) se puede calcular buscando los valores de ai cuyo exponente Ai es 1 y luego
multiplicándolos. Esto requiere como máximo otras r multiplicaciones.
Tiempo de ejecución. Se necesita como máximo 2r multiplicaciones módulo N para calcular gA.
Como A ≥ 2r, vemos que se necesitan como máximo 2 log2 (A) multiplicaciones9 módulo N
para calcular gA. Por lo tanto, incluso si A es muy grande, digamos A ≈ 21000, es fácil para una
computadora hacer aproximadamente 2000 multiplicaciones necesarias para calcular 2A
módulo N.
Definición. Un entero p se llama primo si p ≥ 2 y si los únicos enteros positivos que dividen p
son 1 y p.
Por ejemplo, los primeros diez primos son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, mientras que el
centésimo milésimo es 1299709 y el millonésimo es 15485863. Hay infinitos primos, un hecho
que era conocido en la antigua Grecia y aparece como un teorema en los Elementos de
Euclides. (Ver ejercicio 1.28.)
Proposición 1.19. Sea p un número primo y suponga que p divide el producto ab de dos
enteros a y b. Entonces p divide al menos uno de a y b.
Asumiendo, p divide el producto ab, y ciertamente p divide pbv, entonces p divide ambos
términos en el lado izquierdo de (1.5). Por lo tanto, divide el lado derecho, lo que muestra que
p divide b y completa la prueba de la Proposición 1.19.
Para probar la declaración más general, escribimos el producto como a1 (a2 ··· an) y aplicamos
la primera declaración con a = a1 y b = a2 ··· an. Si p|a1, hemos terminado. De lo contrario, p|
a2 ··· an, así que escribiendo esto como a2 (a3 ··· an), la primera declaración nos dice que p |
a2 o p| a3 ··· an. Continuando de esta manera, eventualmente debemos encontrar algún ai
que sea divisible por p.
Como aplicación de la Proposición 1.19, demostramos que cada entero positivo tiene una
factorización esencialmente única como producto de números primos.
Teorema 1.20 (El teorema fundamental de la aritmética). Deje que a ≥ 2 sea un número
entero. Entonces a puede factorizarse como un producto de números primos
Además, aparte de reorganizar el orden de los números primos, esta factorización en poderes
primarios es única.
Proposición 1.19. (Para ver un ejemplo de una situación en la que la factorización única no es
verdadera, consulte la zona E descrita en [137, Capítulo 7]).
Así, por la forma general de la Proposición 1.19, encontramos que p1 divide uno del qi
Reorganizando el orden del qi si es necesario, podemos suponer que p1 | q1. Pero p1 y q1 son
primos, por lo que debemos tener p1 = q1. Esto nos permite cancelarlos desde ambos lados de
(1.6), lo que produce
Por ejemplo, la factorización de 1728 es 1728 = 26 · 33, entonces ord2 (1728) = 6, ord3 (1728) = 3
y ordp (1728) = 0 para todos los primos p ≥5.
Tenga en cuenta que este producto tiene sentido, ya que ordp (a) es cero para todos, pero
finitamente muchos primos. Es útil ver ordp como una función
Esta función tiene una serie de propiedades interesantes, algunas de las cuales se describen en
el ejercicio 1.31.
Ahora observamos que si p es un número primo, entonces cada módulo de número distinto de
cero p tiene un módulo inverso multiplicativo p. Esto significa que cuando hacemos módulo
aritmético a primo p, no solo podemos sumar, restar, multiplicar, sino que también podemos
dividir por números distintos de cero, tal como podemos hacerlo con números reales. Esta
propiedad de los números primos es lo suficientemente importante como para que la
declaremos formalmente como una proposición.
Proposición 1.21. Deja que p sea primo. Entonces, cada elemento distinto de cero a en Z / pZ
tiene un inverso multiplicativo, es decir, hay un número b que satisface ab ≡ 1 (mod p).
Prueba. Esta proposición es un caso especial de la Proposición 1.13 (b) que usa el módulo
primo p, ya que si a ∈ Z / pZ no es cero, entonces mcd (a, p) = 1.
Observación 1.22. El algoritmo euclidiano extendido (Teorema 1.11) nos brinda un método
computacional eficiente para calcular a − 1 mod p. Simplemente resolvemos la ecuación
au + pv = 1 en enteros u y v,
En otras palabras, cuando el elemento 0 se elimina de Z / pZ, los elementos restantes son
unidades y se cierran bajo multiplicación.
El campo Z / pZ de los enteros módulo p solo tiene finitamente muchos elementos. Eso
es un campo finito y a menudo se denota por Fp. Por lo tanto, Fp y Z / pZ son realmente solo
dos notaciones diferentes para el mismo objeto.10 De manera similar, escribimos F ∗ p
indistintamente para el grupo de unidades (Z / pZ) ∗. Los campos finitos son de importancia
fundamental en toda la criptografía y, de hecho, en todas las matemáticas. Observación 1.23.
Aunque Z / pZ y Fp se usan para denotar el mismo concepto, la igualdad de elementos se
expresa de manera algo diferente en las dos configuraciones. Para a, b ∈ Fp, la igualdad de a y
b se denota por a = b, mientras que para a, b ∈ Z / pZ, la igualdad de a y b se denota por el
módulo de equivalencia p, es decir, a ≡ b (mod pag).
Hay números p - 1 en esta lista, y afirmamos que todos son diferentes. Para ver por qué, tome
dos de ellos, diga ja mod p y ka mod p, y suponga que son iguales. Esto significa que
Por lo tanto, p divide el producto (j - k) a. La Proposición 1.19 nos dice que p divide a j - k o p
divide a. Sin embargo, hemos asumido que p no divide a, por lo que concluimos que p divide j -
k. Pero tanto j como k están entre 1 y p - 1, por lo que su diferencia j - k está entre - (p - 2) y p -
2. Solo hay un número entre - (p - 2) y p - 2 que es divisible por p, ¡y ese número es cero! Esto
prueba que j - k = 0, lo que significa que ja = ka. De este modo, hemos demostrado que los
números p - 1 en la lista (1.8) son todos diferentes. También son distintos de cero, ya que 1, 2,
3, ..., p - 1 y a no son divisibles por p.
Para recapitular, hemos demostrado que la lista de números (1.8) consiste en p - 1 números
distintos entre 1 y p - 1. Pero solo hay p - 1 números distintos entre 1 y p - 1, por lo que la lista
de números ( 1.8) simplemente debe ser la lista de los números 1, 2, ..., p - 1 en un orden
confuso.
Ahora considere lo que sucede cuando multiplicamos todos los números a, 2a, 3a,. . . , (p − 1) a
en la lista (1.8) y reduzca el módulo del producto p. Esto es lo mismo que multiplicar todos los
números 1, 2, 3, ..., p - 1 módulo p, por lo que obtenemos una congruencia a · 2a · 3a ··· (p - 1)
a ≡ 1 · 2 · 3 ··· (p - 1) (mod p).
Hay p - 1 copias de una que aparece en el lado izquierdo. ¡Factorizamos esto y usamos la
notación factorial (p - 1)! = 1 · 2 ··· (p - 1) para obtener
¡Finalmente, podemos cancelar (p - 1)! desde ambos lados, ya que no es divisible por p.
(Estamos utilizando el hecho de que Fp es un campo, por lo que se nos permite dividir por
cualquier número distinto de cero). Esto produce
ap − 1 ≡ 1 (mod p), que completa la prueba del "pequeño" teorema de Fermat.11
Ejemplo 1.25. El número p = 15485863 es primo, por lo que el pequeño teorema de Fermat
(Teorema 1.24) nos dice que
Por lo tanto, sin hacer ningún cálculo, sabemos que el número 215485862 - 1, un número que
tiene más de dos millones de dígitos, es un múltiplo de 15485863. Observación 1.26. El
pequeño teorema de Fermat (Teorema 1.24) y el algoritmo de potencia rápida (Sección 1.3.2)
nos proporcionan un método razonablemente eficiente para calcular inversos módulo p, a
saber,
Ejemplo 1.27. Calculamos el inverso del módulo 7814 17449 de dos maneras. Primero,
7814u + 17449v = 1.
No obtuvimos el valor 1, por lo que parece que el pequeño teorema de Fermat no es cierto
para m. Que nos dice eso? Si m fuera primo, entonces el pequeño teorema de Fermat dice que
habríamos obtenido 1. Por lo tanto, el hecho de que no obtuvimos 1 prueba que el número m
= 15485207 no es primo.
El pequeño teorema de Fermat nos dice que si a es un número entero no divisible por p,
entonces ap − 1 ≡ 1 (mod p). Sin embargo, para cualquier valor particular de a, puede haber
potencias más pequeñas de a que sean congruentes con 1. Definimos el orden de un módulo p
como el exponente más pequeño k ≥ 1 tal que.
Proposición 1.29. Sea p un primo y sea un entero no divisible por p. Supongamos que an ≡ 1
(mod p). Entonces el orden de un módulo p divide n.En particular, el orden de a divide p - 1.
Prueba. Sea k el orden de un módulo p, por lo que, por definición, ak =1 (mod p), y k es el
exponente positivo más pequeño con esta propiedad. Se nos da que an ≡ 1 (mod p). Dividimos
n por k para obtener
n = kq + r con 0 ≤ r <k.
Luego
congruente con 1 nos dice que r debe ser igual a 0. Por lo tanto, n = kq, entonces k divide a n.
Finalmente, el pequeño teorema de Fermat nos dice que ap − 1 ≡ 1 (mod p), por lo que k divide
p - 1.
El pequeño teorema de Fermat describe una propiedad especial de las unidades (es decir, los
elementos distintos de cero) en un campo finito. Concluimos esta sección con una breve
discusión de otra propiedad que es bastante importante tanto teórica como prácticamente.
Teorema 1.30 (Teorema de la raíz primitiva). Sea p un número primo. Entonces existe un
elemento g ∈ F ∗ p cuyas potencias dan a cada elemento de F ∗ p, es decir
Prueba. Ver [137, Capítulo 20] o uno de los textos [35, 52, 59, 100, 111].
Ejemplo 1.31. El campo F11 tiene 2 como raíz primitiva, ya que en F11
Ahora hemos visto varios ejemplos diferentes de cifrados, todos los cuales tienen una serie de
características en común. Bob quiere enviar un mensaje secreto a Alice. Utiliza una clave
secreta k para codificar su mensaje de texto sin formato my convertirlo en un texto cifrado c.
Al recibir c, usa la clave secreta k para descifrar c y reconstituir m. Para que este procedimiento
funcione correctamente, tanto Alice como Bob deben poseer copias de la clave secreta k, y si
el sistema debe proporcionar seguridad, entonces su adversario Eve no debe saber k, no debe
ser capaz de adivinar k, y debe no ser capaz de recuperar m de c sin saber k. En esta sección
formulamos la noción de un criptosistema en términos matemáticos abstractos. Hay muchas
razones por las cuales esto es deseable. En particular, nos permite resaltar similitudes y
diferencias entre diferentes sistemas, al tiempo que proporciona un marco dentro del cual
podemos analizar rigurosamente la seguridad de un sistema criptográfico contra varios tipos
de ataques.
Volviendo a Bob y Alice, observamos que deben compartir el conocimiento de la clave secreta
k. Usando esa clave secreta, pueden cifrar y descifrar mensajes, por lo que Bob y Alice tienen el
mismo conocimiento (o simétrico) y habilidades. Por esta razón, los cifrados de este tipo se
conocen como cifrados simétricos. Matemáticamente, un cifrado simétrico utiliza una clave k
elegida de un espacio (es decir, un conjunto) de posibles claves K para cifrar un mensaje de
texto sin formato m elegido de un espacio de posibles mensajes M, y el resultado del proceso
de cifrado es un texto cifrado c perteneciente a un espacio de posibles textos cifrados C. Así, el
cifrado puede verse como una función
e: K × M → C
cuyo dominio K × M es el conjunto de pares (k, m) que consta de una clave ky un texto sin
formato my cuyo rango es el espacio de los textos cifrados C. De manera similar, el descifrado
es una función
d: K × C → M.
Por supuesto, queremos que la función de descifrado "deshaga" los resultados de la función
de cifrado. Matemáticamente, esto se expresa por la fórmula
A veces es conveniente escribir la dependencia de k como un subíndice. Luego, para cada tecla
k, obtenemos un par de funciones
ek: M→ C y dk: C−→ M que satisfacen la propiedad de descifrado dk ek (m) = m para todos los
m ∈M
En otras palabras, para cada tecla k, la función dk es la función inversa de la función ek. En
particular, esto significa que ek debe ser uno a uno, ya que si ek (m) = ek (m), entonces
m = dk ek (m) = dk ek (m) = m.
Para Alice y Bob es más seguro asumir que Eve conoce el método de encriptación que se está
empleando. En términos matemáticos, esto significa que Eva conoce las funciones e y d. Lo que
Eve no sabe es la clave particular k que están usando Alice y Bob. Por ejemplo, si Alice y Bob
usan un cifrado de sustitución simple, deberían suponer que Eve es consciente de este hecho.
Esto ilustra una premisa básica de la criptografía moderna llamada principio de Kerckho, que
dice que la seguridad de un criptosistema debería depender solo del secreto de la clave, y no
del secreto del algoritmo de cifrado en sí. Si (K, M, C, e, d) es un cifrado exitoso, debe tener las
siguientes propiedades:
1. Para cualquier tecla k ∈Ky texto sin formato m ∈M, debe ser fácil calcular el texto cifrado
ek (m).
2. Para cualquier tecla k ∈K y texto cifrado c ∈C, debe ser fácil calcular el texto sin formato dk
(c).
3. Dado uno o más textos cifrados c1, c2, ..., cn ∈Cifrado usando la tecla k ∈K, debe ser muy
difícil calcular cualquiera de los textos claros correspondientes dk (c1), ..., dk (cn) sin
conocimiento de k.
Aquí hay otra propiedad que es deseable, aunque más difícil de lograr.
4. Dado uno o más pares de textos claros y sus correspondientes textos cifrados, (m1, c1), (m2,
c2), ..., (mn, cn), debe ser muy difícil descifrar cualquier texto cifrado c que no esté en la lista
dada sin saber k. Esta propiedad se llama seguridad contra un ataque de texto sin formato
conocido.
Aún mejor es lograr la seguridad al tiempo que permite al atacante elegir los textos claros
conocidos.
5. Para cualquier lista de textos simples m1, ..., mn ∈Mosenados por el adversario, incluso con
el conocimiento de los correspondientes textos cifrados ek (m1), ..., ek (mn), es muy difícil
descifrar cualquier texto cifrado c eso no está en la lista dada sin saber k. Esto se conoce como
seguridad contra un ataque de texto sin formato elegido. nótese bien En este ataque, el
adversario puede elegir m1, ..., mn, en lugar de un ataque de texto simple conocido, donde el
atacante recibe una lista de pares de texto claro / texto cifrado que no elige.
Ejemplo 1.33. El cifrado de sustitución simple no tiene la Propiedad 4, ya que incluso un solo
par de texto sin formato / texto cifrado (m, c) revela la mayor parte de la tabla de cifrado. De
manera similar, el cifrado Vigen`ere discutido en la Sección 5.2 tiene la propiedad de que un
par de texto sin formato / texto cifrado revela inmediatamente la palabra clave utilizada para
el cifrado. Por lo tanto, tanto la sustitución simple como los cifrados Vigen`ere son vulnerables
a los ataques de texto sin formato conocidos. Vea el ejercicio 1.43 para un ejemplo adicional.
En nuestra lista de propiedades deseables para un sistema criptográfico, hemos dejado abierta
la pregunta de qué se entiende exactamente por las palabras "fácil" y "difícil". Diferimos una
discusión formal de esta pregunta profunda a la Sección 5.7; véanse también las secciones 2.1
y 2.6. Por ahora, consideramos informalmente que "fácil" significa computable en menos de un
segundo en una computadora de escritorio típica y "difícil" significa que toda la potencia
informática del mundo requeriría varios años (al menos) para realizar el cálculo.
Es conveniente ver claves, textos simples y textos cifrados como números y escribir esos
números en forma binaria. Por ejemplo, podríamos tomar cadenas de 8 bits, 15 que dan
números del 0 al 255, y usarlas para representar las letras del alfabeto a través de
Por lo tanto, cuando vea la frase "Chinche de cama", su computadora verá la lista de bits
0100001001100101011001000010000001100010011101010110011100101110.
Con el uso de un esquema de codificación, un texto sin formato o texto cifrado puede verse
como una secuencia de bloques binarios, donde cada bloque consta de 8 bits, es decir, de una
secuencia de ocho unos y ceros. Un bloque de 8 bits se llama byte. Para la comprensión
humana, un byte a menudo se escribe como un número decimal entre 0 y 255, o como un
número hexadecimal de dos dígitos (base 16) entre 00 y FF. Las computadoras a menudo
operan en más de 1 byte a la vez. Por ejemplo, un procesador de 64 bits funciona con 8 bytes a
la vez.
Aquí m0, m1, ..., mB − 1 son cada uno 0 o 1. De manera similar, identificamos el espacio clave
K y el espacio de texto cifrado C con conjuntos de enteros correspondientes a cadenas de bits
de un cierto tamaño de bloque. Por conveniencia de notación, denotamos los tamaños de
bloque para claves, textos simples y textos cifrados por Bk, Bm y Bc. No necesitan ser lo
mismo. Por lo tanto, hemos identificado K, M y C con conjuntos de enteros positivos
K = {k ∈ Z: 0≤ k <2Bk}
, M = {m ∈ Z: 0≤ m <2Bm},
C = {c ∈ Z: 0 ≤ c <2Bc}.
Una pregunta importante surge de inmediato: ¿qué tan grandes deberían hacer Alice y Bob el
conjunto K, o equivalentemente, qué tan grandes deberían elegir el tamaño de bloque clave
Bk? Si Bk es demasiado pequeño, entonces Eve puede verificar cada número de 0 a 2Bk −1
hasta que encuentre la clave de Alice y Bob. Más precisamente, dado que se supone que Eve
conoce el algoritmo de descifrado d (principio de Kerckho ff), toma cada k ∈K y lo usa para
calcular dk (c). Suponiendo que Eve pueda distinguir entre textos claros válidos e inválidos,
eventualmente recuperará el mensaje. Este ataque se conoce como un ataque de búsqueda
exhaustivo (también conocido como ataque de fuerza bruta), ya que Eve busca
exhaustivamente a través del espacio clave. Con la tecnología actual, una búsqueda exhaustiva
se considera inviable si el espacio tiene al menos 280 elementos. Por lo tanto, Bob y Alice
deberían elegir definitivamente Bk ≥ 80. Para muchos criptosistemas, especialmente los
criptosistemas de clave pública que forman el núcleo de este libro, existen refinamientos en el
exhaustivo ataque de búsqueda que reemplazan efectivamente el tamaño del espacio con su
raíz cuadrada. Estos métodos se basan en el principio de que es más fácil encontrar objetos
coincidentes (colisiones) en un conjunto que encontrar un objeto particular en el conjunto.
Describimos algunos de estos ataques de encuentro en el medio o colisión en las Secciones 2.7,
5.4, 5.5, 7.2 y 7.10. Si los ataques de encuentro en el medio están disponibles, entonces Alice y
Bob deberían elegir Bk ≥ 160.
Antes de descender aún más en un pantano de teoría y notación, hacemos una pausa para dar
una descripción matemática de algunas cifras simétricas elementales.
Sea p primo grande, 17 digamos 2159 <p <2160. Alice y Bob toman su
el espacio clave K, el espacio de texto sin formato M y el espacio de texto cifrado C son el
mismo conjunto,
satisfaciendo 1 ≤ k <p, y deciden usar la función de cifrado ek definida por ek (m) ≡ k · m (mod
p). (1.9)
Aquí queremos decir que ek (m) se establece igual al entero positivo único entre 1 yp que es
congruente con k · m módulo p. El descifrado correspondiente
la función dk es
calcule k en menos de 2 log2 p + 2 pasos. Por lo tanto, encontrar k de k cuenta como "fácil" en
el mundo de la criptografía.
Está claro que Eve tiene dificultades para adivinar k, ya que hay aproximadamente 2160
posibilidades entre las que elegir. ¿También es difícil para Eve recuperar k si conoce el texto
cifrado c? La respuesta es sí, aún es difícil. Tenga en cuenta que la función de cifrado
ek: M - → C
es sobreyectivo (sobre) para cualquier elección de clave k. Esto significa que para cada c ∈ C y
cualquier k ∈ K existe un m ∈ M tal que ek (m) = c. Además, cualquier texto cifrado dado
puede representar cualquier texto sin formato, siempre que el texto sin cifrar esté encriptado
por una clave apropiada. Matemáticamente, esto puede reformularse diciendo que dado
cualquier texto cifrado c ∈ C y cualquier texto simple m ∈ M, existe una clave k tal que ek (m)
= c. Específicamente, esto es cierto para la clave
Esto muestra que el cifrado de Alice y Bob tiene las Propiedades 1–3 como se enumeran en la
página 38, ya que cualquiera que conozca la clave k puede cifrar y descifrar fácilmente, pero es
difícil descifrarlo si no conoce el valor de k. Sin embargo, este cifrado no tiene la Propiedad 4,
ya que incluso un solo par de texto sin formato / texto cifrado (m, c) le permite a Eve recuperar
la clave privada k usando la fórmula (1.10)
También es interesante observar que si Alice y Bob definen su función de cifrado como una
simple multiplicación de enteros ek (m) = k · m sin módulo de reducción p, entonces su cifrado
todavía tiene las Propiedades 1 y 2, pero la Propiedad 3 falla. Si Eve intenta descifrar un solo
texto cifrado
(moderadamente) difícil tarea de factorizar un gran número. Sin embargo, si logra adquirir
varios textos cifrados c1, c2, ..., cn, entonces hay una buena posibilidad de que
mcd (c1, c2, ..., cn) = mcd (k · m1, k · m2, ..., k · mn)
es igual a k o un pequeño múltiplo de k. Tenga en cuenta que es una tarea fácil calcular el
máximo común divisor.
Por lo tanto, incluso un solo par de texto sin formato / texto cifrado es suficiente para revelar
la clave, por lo que la función de cifrado ek dada por (1.9) no tiene la Propiedad 4 en la página
38.
ejemplo, dado que la suma es más eficiente que la multiplicación, existe un cifrado
"suma-módulo-p" dado por
que no es más que el cambio o el cifrado César que estudiamos en la Secta. 1.1. Otra variante,
llamada cifrado afín, es una combinación del cifrado de desplazamiento y el cifrado de
multiplicación. La clave para un cifrado afín consiste en dos enteros k = (k1, k2) y el cifrado y
descifrado se definen por
El cifrado afín tiene una generalización adicional llamada cifrado de Hill, en el que el texto sin
formato m, el texto cifrado c y la segunda parte de la clave k2 se reemplazan por vectores de
columna que consisten en n números módulo p. Se considera que la primera parte de la clave
k1 es una matriz n-por-n con entradas enteras mod p. El cifrado y el descifrado están dados
nuevamente por (1.11), pero ahora la multiplicación k1 · m es el producto de una matriz y un
vector, y k 1 es la matriz inversa de k1modulo p. Tanto el cifrado afín como el cifrado Hill son
vulnerables a los ataques de texto sin formato conocidos; véanse los ejercicios 1.43. y 1.44.
Ejemplo 1.34. Como se señaló anteriormente, la suma es generalmente más rápida que la
multiplicación, pero hay otra operación básica de la computadora que es incluso más rápida
que la suma. Se llama exclusivo o y se denota por XOR o ⊕. En el nivel más bajo, XOR toma dos
bits individuales β ∈ {0, 1} y β ∈ {0, 1} y produce
ek (m) = k ⊕ my dk (c) = k ⊕ c.
Aquí K, M y C son los conjuntos de todas las cadenas binarias de longitud B, o equivalente, el
conjunto de todos los números entre 0 y 2B - 1.
Desafortunadamente, requiere una clave que sea tan larga como el texto sin formato, lo que la
hace demasiado engorrosa para la mayoría de las aplicaciones prácticas. Y si k se usa para
cifrar más de un texto sin formato, entonces Eve podrá aprovechar el hecho de que
c ⊕ c = (k ⊕ m) ⊕ (k ⊕ m) = m ⊕ m
Hemos llegado, por fin, a la pregunta fundamental sobre la creación de cifrados simétricos
seguros y eficientes. ¿Es posible utilizar una sola clave relativamente corta k (por ejemplo, que
consta de 160 bits aleatorios) para enviar de manera segura y eficiente mensajes largos
arbitrariamente? Aquí hay una posible construcción.
R: K × Z - → {0, 1}
2. Dada una secuencia arbitrariamente larga de enteros j1, j2, ..., jn y dados todos los valores R
(k, j1), R (k, j2), ..., R (k, jn), it es dificil de determinar k.
3. Dada cualquier lista de enteros j1, j2, ..., jn y todos los valores
Si pudiéramos encontrar una función R con estas tres propiedades, podríamos usarla para
convertir una clave inicial k en una secuencia de bits
R (k, 1), R (k, 2), R (k, 3), R (k, 4), ..., (1.13)
y luego podríamos usar esta secuencia de bits como la clave para un pad de una sola vez como
se describe en el Ejemplo 1.34.
cifrados simétricos
El segundo enfoque es construir R usando una función cuya inversión eficiente es un problema
matemático bien conocido que se cree que es difícil.
Este enfoque proporciona una base teórica mucho más satisfactoria para un cifrado simétrico,
pero desafortunadamente, todas las construcciones conocidas de este tipo son mucho menos
eficientes que las construcciones ad hoc y, por lo tanto, son menos atractivas para aplicaciones
del mundo real.
Si Alice y Bob desean intercambiar mensajes utilizando un cifrado simétrico, primero deben
acordar mutuamente una clave secreta k. Esto está bien si tienen la oportunidad de reunirse
en secreto o si pueden comunicarse una vez por un canal seguro. Pero, ¿qué pasa si no tienen
esta oportunidad y si cada comunicación entre ellos es monitoreada por su adversario Eva? ¿Es
posible que Alice y Bob intercambien una clave secreta en estas condiciones?
La primera reacción de la mayoría de las personas es que no es posible, ya que Eve ve toda la
información que intercambian Alice y Bob. La brillante idea de Diffie y Hellman18 fue que, bajo
ciertas hipótesis, es posible. La búsqueda de soluciones eficientes (y comprobables) para este
problema, que se llama criptografía de clave pública (o asimétrica), forma una de las partes
más interesantes de la criptografía matemática y es el enfoque principal de este libro.
criptografía. Alice compra una caja fuerte con una ranura estrecha en la parte superior y la
coloca en un lugar público. Todos en el mundo pueden examinar la caja fuerte y ver que está
hecha de forma segura. Bob escribe su mensaje a Alice en un trozo de papel y lo desliza a
través de la ranura en la parte superior de la caja fuerte. Ahora solo una persona con la llave
de la caja fuerte, que presumiblemente significa solo Alice, puede recuperar y leer el mensaje
de Bob. En este escenario, la clave pública de Alice es la caja fuerte, el algoritmo de cifrado es
el proceso de colocar el mensaje en la ranura, y el
El algoritmo de descifrado es el proceso de abrir la caja fuerte con la clave. Tenga en cuenta
que esta configuración no es descabellada; Se utiliza en el mundo real. Por ejemplo, la ranura
de depósito nocturno en un banco tiene esta forma, aunque en la práctica la "ranura" debe
estar bien protegida para evitar que alguien inserte unas pinzas largas y delgadas y extraiga los
depósitos de otras personas.
Una característica útil de nuestro criptosistema "seguro con una ranura", que comparte con los
criptosistemas de clave pública reales, es que Alice necesita colocar solo una caja fuerte en una
ubicación pública, y luego todos en el mundo pueden usarla repetidamente
para enviar mensajes encriptados a Alice. Alice no necesita proporcionar una caja fuerte
separada para cada uno de sus corresponsales. Y tampoco es necesario que Alice abra la caja
fuerte y elimine el mensaje de Bob antes de que alguien como Carl o Dave lo use para enviar
un mensaje a Alice.
Ahora estamos listos para dar una formulación matemática de un cifrado asimétrico. Como de
costumbre, hay espacios de claves K, textos simples M y textos cifrados C.
k = (kpriv, kpub),
llamada la clave privada y la clave pública, respectivamente. Para cada clave pública kpub hay
una función de cifrado correspondiente
ekpub: M - → C,
y para cada clave privada kpriv hay una función de descifrado correspondiente
dkpriv: C - → M.
Estos tienen la propiedad de que si el par (kpriv, kpub) está en el espacio clave K, entonces
dkpriv
Si un cifrado asimétrico debe ser seguro, debe ser difícil para Eve calcular la función de
descifrado dkpriv (c), incluso si conoce la clave pública kpub.
Tenga en cuenta que bajo esta suposición, Alice puede enviar kpub a Bob usando un canal de
comunicación inseguro, y Bob puede enviar el texto cifrado ekpub (m), sin preocuparse de que
Eve pueda descifrar el mensaje. Para descifrar fácilmente, es necesario conocer la clave
privada kpriv, y presumiblemente Alice es la única persona con esa información. La clave
privada a veces se llama
La información de la trampilla de Alice, porque proporciona una trampilla (es decir, un acceso
directo) para calcular la función inversa de ekpub. El hecho de que las claves de cifrado y
descifrado kpub y kpriv sean diferentes hace que el cifrado sea asimétrico, de ahí su apodo.
Es bastante intrigante que Diffie y Hellman hayan creado este concepto sin encontrar un
candidato para un par real de funciones, aunque propusieron un método similar por el cual
Alice y Bob pueden intercambiar de forma segura una pieza aleatoria de datos cuyo valor
inicialmente no se conoce uno. Describimos el método de intercambio de claves de Diffie y
Hellman en la Secta. 2.3 y luego continúe para discutir una serie de cifrados asimétricos,
incluido Elgamal (Sección 2.4), RSA
(Sección 3.2), Goldwassser – Micali (Sección 3.10), ECC (Sección 6.4), GGH (Sección 7.8) y NTRU
(Sección 7.10), cuya seguridad depende de la presunta dificultad de una variedad de diferentes
matemáticas problemas.
Observación 1.35. En la práctica, los cifrados asimétricos tienden a ser considerablemente más
lentos que los cifrados simétricos como DES y AES. Por esa razón, si Bob necesita enviar a Alice
un archivo grande, primero podría usar un cifrado asimétrico para enviarle la clave a un cifrado
simétrico, que luego usaría para transmitir el archivo real.