Professional Documents
Culture Documents
Trujillo - PERU
2009
2
Prefacio
Índice general
1. Introducción a la criptografı́a 7
1.1. Evolución historica de la criptografı́a . . . . . . . . . . . . . . . . 8
1.1.1. Criptografı́a clásica . . . . . . . . . . . . . . . . . . . . . . 8
1.1.2. Criptografı́a moderna . . . . . . . . . . . . . . . . . . . . 9
1.2. Elementos participantes en un modelo criptográfico . . . . . . . . 11
1.2.1. Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2. Escenario básico . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3. Criptosistema simétrico . . . . . . . . . . . . . . . . . . . 13
1.2.4. Criptosistema asimétrico . . . . . . . . . . . . . . . . . . . 14
1.3. Investigadores que han aportado a la criptografı́a . . . . . . . . . 15
1.3.1. Antes del siglo XX . . . . . . . . . . . . . . . . . . . . . . 15
1.3.2. Durante las guerras mundiales . . . . . . . . . . . . . . . 16
1.3.3. Creadores de algoritmos simétricos . . . . . . . . . . . . . 16
1.3.4. Creadores de algoritmos asimétricos . . . . . . . . . . . . 16
1.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3. Teorı́a de números 33
3.1. Qué es la teorı́a de números . . . . . . . . . . . . . . . . . . . . . 33
3.2. Divisibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3. MCD, MCM y Números primos . . . . . . . . . . . . . . . . . . . 36
3.3.1. Máximo común divisor (mcd) . . . . . . . . . . . . . . . . 37
3.3.2. Mı́nimo común múltiplo (mcm) . . . . . . . . . . . . . . . 40
3.3.3. Números primos . . . . . . . . . . . . . . . . . . . . . . . 40
3.4. Congruencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5. Enteros modulo n: Zn . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5.1. Operaciones en Zn . . . . . . . . . . . . . . . . . . . . . . 48
3.5.2. Grupo multiplicativo . . . . . . . . . . . . . . . . . . . . . 50
3.6. Función de Euler φ . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.7. Problema de factorización entera . . . . . . . . . . . . . . . . . . 52
3
4 ÍNDICE GENERAL
5. Álgebra abstracta 91
5.1. Qué es el Álgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.1.1. Álgebra elemental . . . . . . . . . . . . . . . . . . . . . . 91
5.1.2. Álgebra abstracta . . . . . . . . . . . . . . . . . . . . . . 91
5.2. Modelos algebraicos . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.2.1. Operaciones n-arias . . . . . . . . . . . . . . . . . . . . . 92
5.2.2. Semigrupos y monoides . . . . . . . . . . . . . . . . . . . 92
5.3. Estructuras algebraicas . . . . . . . . . . . . . . . . . . . . . . . 93
5.3.1. Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.3.2. Anillos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.3.3. Anillo de polinomios . . . . . . . . . . . . . . . . . . . . . 100
5.3.4. Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5
6 ÍNDICE DE FIGURAS
Introducción a la
criptografı́a
1 Es la ciencia que usa la matemática para encriptar y desencriptar los datos, es decir es la
7
8 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA
5. Roma: Roma fué un paı́s de la antiguedad muy poderoso, por ello era
necesario tener un tipo de método para encriptar muy seguro, esto los
llevó a crear el criptosistema llamado el cifrado del Cesar.
1.2.1. Entidades
1. Alicia y Bob: Son las identidades centrales en el proceso de comunica-
ción, Alicia necesita remitir un mensaje secreto a Bob y el para leerlo debe
conocer la clave de desencriptación.
2. Eva: Es una villana que actua como una entidad pasiva, es decir escucha
todas las comunicaciones entre Alicia y Bob. Eva lee cualquier mensaje
que no este correctamente encriptado e incluso puede hacer confundir a
Alicia y a Bob; esto es convencer, por ejemplo, a Alicia que escriba un
texto que a Eva le convenga. Eva no puede alterar el mensaje.
4. Mallory: Es el mas villano, pues actua como una entidad activa con deseos
de hacer daño, puede alterar un mensaje de acuerdo a su conveniencia.
También se le denomina el hombre que esta en el centro.
Ejemplos:
Σ = {a, b, ..., z },
Σ = {0, 1, ..., 9 },
Σ = {0, 1}
12 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA
Un criptosistema es denominado frágil, sı́ una tercera entidad, Eva, puede recu-
perar el texto plano a partir del texto cifrado. Si todas las claves posibles son
probadas para conocer cual de ellas esta siendo usada por las entidades en su
comunicación, entonces decimos que el criptosistema se quiebra; esto se obtiene
mediante una busca exaustiva. Por ello es preferible que el espacio de claves sea
bien grande, para que de este modo la busca sea computacionalmente inviable.
2 plaintext.
3 ciphertext.
1.2. ELEMENTOS PARTICIPANTES EN UN MODELO CRIPTOGRÁFICO13
1.4. Ejercicios
18 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA
Capı́tulo 2
Algoritmos y Complejidad
computacional
2.1. Algoritmos
De acuerdo con Papadimitroi, dos ideas cambiaron el mundo. En 1448, en la
ciudad alemana de Mainz, Johann Gutenberg descubrió una manera de imprimir
libros. Esto significó que el intelecto humano se difundió y que la ciencia y
tecnologı́a crecieron exponencialmente. Muchos historiadores dicen que esto se
debio a la tipografı́a, otros afirman que la clave del desarrollo no fué la tipografı́a,
sino los algoritmos.
El sistema decimal, creado en la India 600 a.c., fué una revolución en el ra-
zonamiento cuantitativo, es decir que usando solamente diez sı́mbolos se pueden
representar compactamente grandes números. Sin embargo difundir tales ideas
de los indués llevó mucho tiempo, siendo las barreras para tal difusión los idio-
mas, distancia e ignorancia. El medio decisivo para la difusión del conocimiento
fué un libro escrito en Arabe, siglo IX, por una persona que vivio en Baghdad
(actualmente la capital de Irak). Al Khwarizmi fue tal personaje que creo méto-
dos básicos para la adición, multiplicación y división de números, incluido la
raı́z cuadrada. Tales procedimientos fueron precisos, no ambiguos, mecánicos,
eficientes y correctos. Es decir fueron los algoritmos.
1 Complejidad de tiempo.
2 Complejidad de espacio.
19
20 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL
Abu Ja’Far Mohammed lbn Musa Al Khwarizmi (780 - 850 a.c.) fué un
astrónomo y matemático arabe, miembro de la denominada casa de la sabiduria
el cual era una academia de cientı́ficos de Baghdad. El nombre de Al Khwarizmi
significa de la ciudad de Khwarizmi, actualmente es la ciudad llamada Khiva.
Sus biografos afirman que Al Khwarizmi escribió diversos libros de matemáti-
cas, astronomı́a y geografı́a. El término álgebra fué introducido en Europa a
través de sus trabajos y proviene del arabe al-jabr, el cual es parte del tı́tulo
de su libro Kitab al-jabr w’al muquabala. En su libro, Al Khwarizmi describe
procedimientos para realizar las operaciones aritméticas. Los autores europeos
usarón una adaptación latina de su nombre, hasta que finalmente llegaron a la
palabra algoritmo.
mostró que una gran cantidad de problemas combinatorios y lógicos son NP-
completos.
A. Modelos computacionales
Los modelos considerados en ciencia de la computación son:
(A.1) Modelo RAM: En el modelo RAM (Random Access Machine) las ins-
trucciones son ejecutadas una después de la otra, con operaciones no con-
currentes.
Ejemplo:
Algoritmo de ordenación por inserción, en el peor caso, presenta una
complejidad O(n2 ).
3 Fué creado por Paul Bachmann en 1892. Esta notación algunas es llamada el sı́mbolo de
Landau, pues fué Edmund Landau quien lo usó en su trabajo de estimación de funciones en
teorı́a de números. Posteriormente, esta notación fué popularizada por Donald Knuth en el
análisis de algoritmos.
2.2. COMPLEJIDAD COMPUTACIONAL 25
(b) Notación Ω: Dadas dos funciones f(n) y g(n), entonces se dice que g(n)
es el lı́mite inferior, sı́ existen constantes positivas c y n0 tal que ∀n ≥ n0 ,
tenemos que 0 ≤ cg(n) ≤ f (n).
El lı́mite inferior se denota por f(n) = Ω(g(n)). Cuando la notación Ω se
usa para expresar el tiempo de ejecución de un algoritmo en el mejor caso,
entonces estaremos definiendo el lı́mite inferior del tiempo de ejecución de
tal algoritmo para todas las entradas.
Ejemplo:
Algoritmo de ordenación por inserción, en el mejor caso, presenta una
complejidad Ω(n).
(c) Notación θ: Dadas dos funciones f(n) y g(n), se dice que f(n) = θ(g(n)),
sı́ existen constantes positivas c1 , c2 y n0 tal que ∀n ≥ n0 , tenemos que
0 ≤ c1 g(n) ≤ f (n) ≤ c2 g(n).
Ejemplo:
n2
Muestre que 2 − 3n = θ(n2 )
En efecto
Por definición
n2
c1 n2 ≤ − 3n ≤ c2 n2 , ∀n ≥ n0
2
Dividiendo por n2 , tenemos:
1 3
c1 ≤ − ≤ c2
2 n
1
Por lo tanto, se verifica el resultado para c1 = 14 , c2 = 12 , con n0 = 7.
26 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL
Teorema 2.1: Para todo par de funciones g(n) y f(n), se cumple lo siguiente
Ejemplo:
Un procedimiento algoritmico con complejidad computacional O(n), es mejor
que otro procedimiento con tiempo computacional O(n2 ).
Ejemplo:
Un algoritmo A emplea 100n unidades de tiempo para ser ejecutado, otro
algoritmo B emplea 2n2 . Entonces un análisis en estos dos resultados nos in-
dica que para n < 50, el programa B es mejor en tiempo de ejecución que
A. La situación se revierte cuando n > 51. Graficamente tenemos el siguiente
comportamiento:
b) Clase NP: Son aquellos problemas que pueden ser resueltos por algo-
ritmos no deterministas (heurı́sticas, algoritmos aproximados) en tiempo
polinomial, es decir son aquellos problemas cuya solución puede ser veri-
ficada en tiempo polinomial.
Un caso especial de los problemas NP son los llamados NP-completos, los cuales
son muy importantes por la cantidad de aplicaciones que tienen. Una definición
muy importante para obtener problemas NP-completo a partir de otros proble-
mas NP-completos, es la llamada reducción o transformaciones. Un problema
A es reducible en otro problema B, A ≤p B, si un algoritmo para B sirve
para solucionar el problema A. Es decir, si existe un algoritmo de tiempo po-
linomial que mapea cada instancia x ∈ A en una instancia f (x) ∈ B tal que
x ∈ A ⇔ f (x) ∈ B.
Usando la notación asintótica O se nota que para sumar o restar dos núme-
ros enteros de n-bits, se necesitarán O(n) operaciones bit; para multiplicar dos
enteros de n-bits del modo convencional, se emplean O(n2 ) operaciones bit.
Sorprendentemente existen algoritmos mas veloces para multiplicar grandes
números enteros. Para desarrollar tal algoritmo primero considerar la multi-
plicación de enteros de 2n-bits, por ejemplo a = (a2n−1 a2n−2 . . . a1 a0 ) y b =
(b2n−1 b2n−2 . . . b1 b0 ). Estos números se pueden escribir como:
a = 2n A1 + A0 y b = 2n B1 + B0
donde
A1 = (a2n−1 a2n−2 . . . an+1 an ) A0 = (an−1 an−2 . . . a1 a0 )
B1 = (b2n−1 b2n−2 . . . bn+1 bn ) B0 = (bn−1 bn−2 . . . b1 b0 )
La identidad
es usada para hallar el producto de a con b, para tal efecto se requiere que se
ejecuten tres multiplicaciones de enteros de n-bits, esto es A1 B1 , (A1 −A0 )(B0 −
B1 ) y A0 B0 , como también ciertas adiciones.
Ejemplo:
Multiplicar (1101)2 con (1011)2 .
En efecto
(1101)2 = 22 (11)2 + (01)2 y (1011)2 = 22 (10)2 + (11)2 . Usando la identidad
anterior hallamos lo siguiente:
(1101)2 (1011)2 = (24 + 22 )(11)2 (10)2 + 22 ((11)2 − (01)2 )((11)2 − (10)2 )
= (10001111)2
30 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL
donde C es una constante, pues cada una de las tres multiplicaciones de enteros
de n-bits emplea M (n) operaciones bit, mientras que la cantidad de adiciones
y movimientos necesarias para computar ab mediante la identidad (2.1), no
depende de n y cada una de tales operaciones emplea O(n) operaciones bit.
De (2.2), por inducción matemática, se muestra que
Teorema 2.4: Existe un algoritmo para multiplicar dos enteros de n-bits usando
O(nlog2 n log2 log2 n) operaciones bit.
operaciones bit necesarias para la división entera puede ser relacionado con la
cantidad de operaciones bits necesarias para la multiplicación entera.
2.3. Ejercicios
32 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL
Capı́tulo 3
Teorı́a de números
33
34 CAPÍTULO 3. TEORÍA DE NÚMEROS
3 (1913 - 1996) Matemático de nacionalidad hungara, muy famoso por sus elegantes demos-
3.2. Divisibilidad
La divisibilidad de entre dos enteros es un tema básico en la teorı́a de núme-
ros.
Definición (divisibilidad): Sean los números a 6= 0, b ∈ Z. Entonces a es divi-
sible por b, si ∃ c ∈ Z tal que b = ac. Por notación a|b.
Ejemplos
13|182; −3|33;
(a) a|a.
Ejemplo
Si 11|66 y 66|198, entonces 11|198.
a = qb + r, donde 0 ≤ r < b
Observación:
Sean los números a, b ∈ Z, con b 6= 0. Entonces r = a mod b = a − bba/bc y
q = a div b = ba/bc.
36 CAPÍTULO 3. TEORÍA DE NÚMEROS
Ejemplos
3; −12; 21; 342; −1113 son divisibles por 3.
Ejemplo
214/6. Entonces q = 214 div 6 = b214/6c = b35,666c = 35
r = 214 mod 6 = 214 − 6b214/6c = 4
Ejemplo
114/7. Entonces q = −17
r = 5, pues −114 = (−17)(7) + 5
Ejemplos
11 mod 4 = 3; 22 mod 5 = 2
Propiedad 2
c ∈ Z es comun divisor de a y b, si se cumple que c|a y c|b.
4 (350 ac.) Poco se conoce sobre su vida, en Los elementos (colección de 13 libros) Euclides
presenta una introducciı́on a la geometrı́a en el plana y sólida, asi como la teorı́a de números.
El famoso algoritmo de Euclides esta en el libro VII, y la prueba de la existencia de infinitos
números primos esta en el libro IX.
3.3. MCD, MCM Y NÚMEROS PRIMOS 37
Ejemplos
- mcd(12,15) = 15.
Propiedad 3
Ejemplos
Algoritmo de Euclides
Es un método sistemático que sirve para hallar el mcd de dos números enteros
positivos. El método fué creado por el matemático de origen griego llamado
Euclides y fué escrito en la obra Los Elementos.
Entrada: a, b ∈ Z + , con a ≥ b
Salida : mcd(a, b)
MIENTRAS (b 6= 0)
r ← a mod b;
a ← b;
b ← r;
FIN MIENTRAS
retornar (a)
Demostración
Cuando se aplica el algoritmo de Euclides con los números a = r0 y b = r1 ,
con a > b, se obtiene la siguiente sucesión de ecuaciones:
r0 = r1 q1 + r2 , 0 ≤ r2 < r1
r1 = r2 q2 + r3 , 0 ≤ r3 < r2
..
.
rn−1 = rn qn
Observando las ecuaciones anteriores, notamos que se han realizado n divisiones,
donde los coeficientes son qi ≥ 1, para i = 1, . . . , n − 1 y qn ≥ 2, pues rn < rn−1 .
Por lo tanto tenemos:
rn ≥ 1 = f2
rn−2 ≥ rn−1 + rn ≥ f3 + f2 = f4
r2 ≥ r3 + r4 ≥ fn−1 + fn−2 = fn
b = r1 ≥ r2 + r3 ≥ fn + fn−1 = fn+1
De este modo, para que existan n divisiones usadas por el algoritmo de Euclides,
debemos tener
b ≥ fn+1 (3.2)
√
(1+ 5)
Usando el resultado fn > αn−2 , para n ≥ 3, donde α = 2 , obtenemos
¡ √ ¢
n−1 1+ 5
fn+1 > α , n ≥ 2, α = . (3.3)
2
5 (1795 - 1870) Se graduó en la École Polytechnique, estudio la teorı́a matemática de la
Por lo tanto, usando la transitividad entre (3.2) y (3.3) obtenemos b > αn−1 .
Como log10 α > 51 , entonces tenemos
n−1
log10 b > (n − 1) log10 α > (3.4)
5
En consecuencia
n − 1 < 5 log10 b (3.5)
Sea b un entero con k dı́gitos decimales, de modo que
b < 10k (3.6)
Aplicando logaritmo a (3.6) obtenemos log10 b < k. Reemplazando este último
resultado en (3.5) obtenemos n − 1 < 5k, pues k ∈ Z. Es decir n ≤ 5k. ♣
Demostración
Por el teorema (3.1) sabemos que para hallar el mcd(a, b) es necesario O(log2 a)
divisiones, donde cada operación usa O((log2 a)2 ) operaciones bit. Por lo tanto,
por las operaciones de notación asintótica, tenemos O((log2 a)3 ).
Entrada: a, b ∈ Z + , con a ≥ b
Salida : d = mcd(a, b)
SI (b = 0)
d ← a; x ← 1; y ← 0;
FIN SI
retornar (d, x, y)
x1 ← 0; x2 ← 1;
y1 ← 1; y2 ← 0;
MIENTRAS (b > 0)
q ← b ab c; r ← a − qb;
x ← x2 − qx1 ; y ← y2 − qy1 ;
a ← b; b ← r;
x2 ← x1 ; x1 ← x;
y2 ← y1 ; y1 ← y;
FIN MIENTRAS
d ← a; x ← x2 ; y ← y2 ;
retornar (d, x, y)
Ejemplo
mcm(252, 198) = 18, pues d = 18 = 4 × 252 − 5 × 198.
40 CAPÍTULO 3. TEORÍA DE NÚMEROS
Ejemplos
- mcm(12,15) = 60.
Propiedad 4
Ejemplos
Ejemplos
- 4 = 2 × 2;
- 111 = 3 × 37;
- 1001 = 7 × 11 × 13.
3.3. MCD, MCM Y NÚMEROS PRIMOS 41
Demostración
Supongamos que existe un cantidad finita de números primos
p1 , p2 , . . . , pn , donde n ∈ Z +
Nuestro interes por conocer los números primos radica en ellos son funda-
mentales para los criptosistemas tal como el RSA, para tal efecto hacer un test
de primalidad que distingue números enteros primos de los números compuestos
es importante. El test de primalidad básico es el llamado trial division, el cual
establece lo siguiente: Un número entero n es primo, √si y solamente si n no es
divisible por cualquier otro primo que no exceda a la n.
Teorema 3.5: Si n es un √
número entero compuesto, entonces n tiene un factor
primo que no excede a la n.
Demostración
Como n es un número compuesto, entonces
√ n = ab, donde a y b son enteros
√
con 1 <√a √
≤ b < n. Debemos tener a ≤ n, pues caso contrario b ≥ a > n
y ab > n n = n. Por el lema 3.3, a debe tener un divisor primo, el cual por
propiedad√1-e también es √
un divisor de n, el cual a su vez se nota que es menor
o igual a n, esto es a ≤ n. ♣
Ejemplo √
Sea n = 10. Entonces como 100 = 10, los primos menores que 10 son los
siguientes: 2, 3, 5 y 7, respectivamente. A continuación se presenta, graficamente,
el procedimiento de Eratosthenes aplicado a los primos menores que 10:
6 (276 - 194 a.c.) Nació en Cyrene,colonia al este de Egipto. estudio en escuela de Platon
Desde hace cientos de años, los matemáticos han sentido el deseo de hallar el
número primo mas grande, que el actual primo conocido; por ello quien descubra
tal número primo se hace famoso, al menos por un tiempo, ingresando de este
modo al libro de los records. El investigador Mersenne afirma que el número
primo mas grande se calcula mediante la fórmula 2p − 1, siendo p un número
primo. Por ello, actualmente el mayor primo conocido esta dado por: 224036583 −
1.
Ejemplo
Determinar cuando un número entero de 200 dı́gitos es primo, usando la
trial division, significa gastar billones de años en un computador veloz.
Las investigaciones para probar cuando un número entero es primo han ido
en aumento,³ asi por ´ ejemplo en 1975, G.L. Miller desarrolla un algoritmo el
5
emplea O (log n) de operaciones bit. En 1983 L. Adleman, C. Pomerance
³ ´
c log log log n
y R. Rumely desarrollan un algoritmo el cual emplea O (log n)
operaciones bit. En el año 2002 el profesor hindú M. Agrawal y sus alumnos
N. Kayal y N. Saxena anuncian el desarrollo de un algoritmo que produce un
certificado
³ de´ primalidad para un número entero n. El algoritmo anunciado usa
12
O (log n) operaciones bit.
Propiedad 5
Ejemplos
mcd(27 33 54 72 113 173 , 24 35 52 72 112 133 ) = 24 33 52 72 112
Ejemplo
Los pares 6 y 35 son números coprimos, analogamente lo son 25 y 42 respec-
tivamente.
3.4. Congruencia
Este aporte matemático que hace posible trabajar con las relaciones de di-
visibilidad, inventado por el matemático escoces Karls F. Gauss, es útil para la
criptografı́a. Formalmente se lo define del modo siguiente:
Ejemplos
22 ≡ 4(mod 9), pues 9|(22 − 4)
Demostración
(→) Si a ≡ b(mod n), entonces n|(a − b). Esto significa, por definición, que
existe un k ∈ Z con kn = a − b, de modo que a = b + kn.
Ejemplo
19 ≡ −2(mod 7), pues existe un k = 3 tal que 19 = −2 + 3 × 7
Propiedad 6
Para todo a, a1 , b, b1 , c ∈ Z se cumple lo siguiente:
Teorema 3.8
Para todo a, b, c ∈ Z se cumple lo siguiente:
(1) a ≡ a(mod ).
Ejemplo
Sea n = 4. Entonces las cuatro congruencias módulo 4 estan dado por:
. . . ≡ −8 ≡ −4 ≡ 0 ≡ 4 ≡ 8 . . . (mod 4)
. . . ≡ −7 ≡ −3 ≡ 1 ≡ 5 ≡ 9 . . . (mod 4)
. . . ≡ −6 ≡ −2 ≡ 2 ≡ 6 ≡ 10 . . . (mod 4)
. . . ≡ −5 ≡ −1 ≡ 3 ≡ 7 ≡ 11 . . . (mod 4)
Teorema 3.9: Sean a, b y n números enteros, con n > 0 tal que a ≡ b(mod n),
entonces se tienen los siguientes casos:
(1) a + c ≡ b + c(mod n)
(2) a − c ≡ b − c(mod n)
(3) a × c ≡ b × c(mod n)
Demostración
Se deja para el lector.
Ejemplo
19 ≡ 3(mod 8), entonces por el teorema (3.9) se cumple:
- 19 + 7 ≡ 3 + 7(mod 8)
- 19 − 7 ≡ 3 − 7(mod 8)
- 19 × 2 ≡ 3 × 2(mod 8)
3.4. CONGRUENCIA 47
Ejemplo
Como 50 ≡ 20(mod 15), mcd(10, 15) = 5 y 50 × 10 ≡ 20 × 10(mod 15),
entonces de acuerdo con el teorema se cumple 50 ≡ 20(mod 15
5 ).
Ejemplo
Como mcd(1, 3) = 1 y 5 × 1 ≡ 2 × 1(mod 3), entonces de acuerdo con el
corolario se cumple 5 ≡ 2(mod 3).
Teorema 3.12: Sean a, b, c,d y n números enteros, tal que n > 0, a ≡ b(mod n)
y c ≡ d(mod n), entonces entonces se cumple
(1) a + c ≡ b + d(mod n)
(2) a − c ≡ b − d(mod n)
(3) a × c ≡ b × d(mod n)
Demostración
Se deja para el lector.
Ejemplo
Como 13 ≡ 3(mod 5) y 7 ≡ 2(mod 5), entonces por el teorema 3.12 se
cumple
- 13 + 7 ≡ 3 + 2(mod 5)
- 13 − 7 ≡ 3 − 2(mod 5)
- 13 × 7 ≡ 3 × 2(mod 5)
Ejemplo
Sean k = 3 y 7 ≡ 2(mod 5), entonces por el teorema se cumple 73 ≡
3
2 (mod 5).
48 CAPÍTULO 3. TEORÍA DE NÚMEROS
[n1 , n2 , . . . , nk ]|(a − b)
De este último resultado podemos deducir que se cumple por definición de con-
gruencia a ≡ b(mod [n1 , n2 , . . . , nk ]). ♣
3.5.1. Operaciones en Zn
(1) Adición
Sean a, b ∈ Zn , la adición modular se define por
½
a+b a+b<n
(a + b)mod n =
a+b−n a + b ≥ n
Ejemplo
Sea el conjunto Z15 = {0, 1, . . . , 14}. La adición de los números 6 ∈ Z15
y 9 ∈ Z15 esta dado por 0 ∈ Z15 , pues por definición de los Zn se tiene que
6 + 9 ≡ 0(mod 15).
Ejemplo
Sea el conjunto Z25 = {0, 1, . . . , 24}. La adición de los números 13 ∈ Z25
y 16 ∈ Z25 esta dado por 4 ∈ Z25 , pues por definición se tiene que 13 + 16 ≡
4(mod 25).
3.5. ENTEROS MODULO N: ZN 49
(2) Multiplicación
Siendo a, b ∈ Zn , la multiplicación modular se efectua simplemente multi-
plicándolos como si fueran números enteros comunes, para luego coger el resto
de la división de tal producto por n.
Ejemplo
Sea el conjunto Z25 = {0, 1, . . . , 24}. La multiplicación de 13 por 16 es 8,
pues 13 × 16 ≡ 8(mod 25).
Ejemplo
En Z9 = {0, 1, . . . , 8} los elementos invertibles son 1, 2, 4, 5, 7, 8, pues por
ejemplo el inverso de 4 es 7 ya que 4 × 7 ≡ 1(mod 9). Análogamente, el inverso
de 7 es 4, pues 7 × 4 ≡ 1(mod 9).
Propiedad 7
Sea a ∈ Zn , entonces a es invertible si y solamente si el mcd(a, n) = 1.
Ejemplo
Sea Z9 = {0, 1, . . . , 8}, entonces 2 es invertible, pues el mcd(2, 9) = 1.
Análogamente lo es 4, pues el mcd(4, 9) = 1.
Entrada: a ∈ Zn
Salida : Existencia del inverso
Hallar x e y tal que ax + ny = d
SI (d > 1)
Inverso no existe;
CASO CONTRARIO;
retornar (x)
(4) División
Sean a, b ∈ Zn . La división de a por b modulo n esta dado por el producto
de a con b−1 modulo n.
Ejemplo
Sea Z9 = {0, 1, . . . , 8} el conjunto de los números enteros modulo 9,
entonces considerando 3 ∈ Z9 y 4 ∈ Z9 tenemos que 3 ÷ 4(mod 9) = 3, pues
como 4−1 = 7 entonces tenemos que 3 × 7(mod 9) = 3.
50 CAPÍTULO 3. TEORÍA DE NÚMEROS
(5) Exponenciación
La exponenciación modular es otra operación básica muy util para la cripto-
grafı́a. El siguiente algoritmo emplea una representación binaria de un número
entero k de modo que k = k0 20 + k1 21 + . . . + kt 2t , donde cada ki es de la forma
binaria, esto es ki = {0, 1}.
Ejemplo
Sea Z9 = {0, 1, . . . , 8} un conjunto de números enteros modulo 9. Enton-
ces 5 ∈ Z9 se puede representar por 5 = 1 × 20 + 0 × 21 + 1 × 22 .
Ejemplo
Sea Z1234 = {0, 1, . . . , 1233}, donde a = 5 ∈ Z1234 y k = 596. Entonces
El algoritmo reporta 5596 mod( 1234) = 1013, donde 596 = 0 × 20 + 0 × 21 + 1 ×
22 + 0 × 23 + 1 × 24 + 0 × 25 + 1 × 26 + 0 × 27 + 0 × 28 + 1 × 29 .
- El orden de Zn∗ esta dado por la cantidad de elementos que posee, es decir
|Zn∗ |.
Ejemplo
Sea Z9 = {0, 1, . . . , 8}, entonces Z9∗ = {1, 2, 4, 5, 7, 8}. Análogamente en
Z5 = {0, 1, . . . , 4}, se tiene el siguiente grupo multiplicativo Z5∗ = {1, 2, 3, 4}.
3.6. FUNCIÓN DE EULER φ 51
Ejemplo
La función constante f (n) = 1, ∀n es completamente multiplicativa, pues
f (mn) = 1,f (m) = 1 = f (n).
Ejemplo
La función identidad g(n) = n, ∀n es completamente multiplicativa, pues
g(mn) = mn = g(m)g(n).
Ejemplo
Sea p = 5 y a = 3, entonces φ(53 ) = 53 − 53−1 = 100.
Ejemplo
Sea m = 5 y n = 3, entonces φ(5 × 3) = φ(5) × φ(3)
= (5 − 1) × (3 − 1)
=8
Demostración
Como φ es una función multiplicativa, entonces por el teorema 3.16 tenemos
que
φ(n) = φ(pa1 1 )φ(pa2 2 ) . . . φ(pakk )
Además por el teorema 3.18 tenemos que
a a a −1 a 1
φ(pj j ) = pj j − pj j = pj j (1 − pj )
para j = 1, 2, . . . , k.
ak
Por lo tanto: φ(n) = pa1 1 (1 − 1 a2
p1 )p2 (1 − 1
p2 ) . . . pk (1 − 1
pk )
1 1 1
= n(1 − p1 )(1 − p2 ) . . . (1 − pk )
Ejemplo
φ(720) = φ(24 32 51 ) = 720(1 − 21 )(1 − 31 )(1 − 15 ) = 40
3. Algoritmo de (p − 1) Pollard.
Los algoritmos Rho Pollard y (p − 1) Pollard, creados en 1974 por J.M. Po-
llard, tienen como caracterı́stica su lentitud para factorizar problemas difı́ciles,
a menos que los números a factorizar tengan propiedades especiales.
Ejemplo
Sea n = 455459 un número entero, al aplicar el algoritmo se obtiene el
factor 743. El otro factor se obtiene al dividir n entre el factor reportado por el
algoritmo, es decir 613.
Ejemplo
Sea n = 8051 un número entero, el algoritmo reporta el factor no trivial 97.
El otro factor es 83.
Qt e
El valor de b es llamado suave si se cumple que b = j=1 pj ij .
Ejemplo
Sea n = 11. Entonces para determinar que enteros son residuos cuadráticos
de 11, debemos computar los cuadrados de los números enteros 1, 2, . . . , 10, es
decir
x2 ≡ a(mod m) =⇒ 12 ≡ 1(mod 11)
x2 ≡ a(mod m) =⇒ 22 ≡ 4(mod 11)
x2 ≡ a(mod m) =⇒ 32 ≡ 9(mod 11)
x2 ≡ a(mod m) =⇒ 42 ≡ 5(mod 11)
x2 ≡ a(mod m) =⇒ 52 ≡ 3(mod 11)
x2 ≡ a(mod m) =⇒ 62 ≡ 3(mod 11)
x2 ≡ a(mod m) =⇒ 72 ≡ 5(mod 11)
x2 ≡ a(mod m) =⇒ 82 ≡ 9(mod 11)
x2 ≡ a(mod m) =⇒ 92 ≡ 4(mod 11)
x2 ≡ a(mod m) =⇒ 102 ≡ 1(mod 11)
define por.
µ ¶ ½
a 1 si a es residuo cuadrático de p.
=
p −1 si a no es residuo cuadrático de p.
Ejemplo
Considerando el ejemplo anterior tenemos los siguientes sı́mbolos de Legen-
dre: ¡1¢ ¡3¢ ¡4¢ ¡5¢ ¡9¢
11 = 11 = 11 = 11 = 11 = 1
¡ 2
¢ ¡ 6
¢ ¡ 7
¢ ¡ 8
¢ ¡ 10 ¢
11 = 11 = 11 = 11 = 11 = −1
Ejemplo ¡5¢
Sean p = 23 y a = 5 Entonces 23 = −1, pues por el criterio de Euler se
tiene:
¡5¢ (23−1)/2
¡5¢
23 ≡ 5 mod 23 =⇒ 23 = −1
Por lo tanto a = 5 no es un residuo cuadrático de 23.
Teorema 3.25: Sea p un número entero primo e impar, sean además a, b dos
enteros no divisibles por p. Entonces
³ ´ ³ ´
1. Si a ≡ b(mod p), entonces ap = pb .
³ ´³ ´ ³ ´
a b ab
2. p p = p .
³ ´
a2
3. p = 1.
jacobi(a, n)
Por lo estudiado anteriormente tenemos que existen los dos conjuntos si-
guientes:
Ejemplo
Sean los números p = 23 y a = 4. Entonces las raices son r = ±2.
Ejemplo
Sean los números enteros p = 101 y a = 80. Las raices reportadas por el
algoritmo anterior son r = ±79.
Criptosistemas basados en
teorı́a de números
En la figura anterior podemos notar que existen 26! posibles maneras di-
ferentes para producir una transformación monogáfica. Estudiaremos aquellas
basadas en la teorı́a de números.
61
62CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
Encriptación
Ejemplo
Sea el siguiente mensaje: tbn estamos en el laboratorio esperandola. Al
aplicar el algoritmo obtenemos lo siguiente:
4.1. CIFRADO POR CLAVE SIMÉTRICA 63
- 19 1 13 4 18 19 0 12 14 18 4 13 4 11 11
0 1 14 17 0 19 14 17 8 14 4 18 15 4 17
0 13 3 14 11
0
- 22 4 16 7 21 22 3 15 17 21 7 16 7 14 14
3 4 17 20 3 22 17 20 11 17 7 21 18 7 20
3 16 6 17 14
3
Ejemplo
Sea el siguiente mensaje: jarm estamos en el salon de clases. Al aplicar
el algoritmo obtenemos lo siguiente:
- 9 0 17 12 4 18 19 0 12 14 18 4 13 4 11
18 0 11 14 13 3 4 2 11 0 18 4 18
- 12 3 20 15 7 21 22 3 15 17 21 7 16 7 14
21 3 14 17 16 6 7 5 14 3 21 7 21
Ejemplo
El mensaje me gusta algebra universal, al ser encriptado por el algoritmo
reporta:
Desencriptación
Ejemplo
Sea el siguiente mensaje: mduphvwdprvhqhovdorqghfodvhv. Al aplicar el
algoritmo obtenemos lo siguiente:
- 12 3 20 15 7 21 22 3 15 17 21 7 16 7 14
21 3 14 17 16 6 7 5 14 3 21 7 21
- 9 0 17 12 4 18 19 0 12 14 18 4 13 4 11
18 0 11 14 13 3 4 2 11 0 18 4 18
donde a y b son números enteros con mcd(a, 26) = 1 es llamado afin, cuando
a = 1.
donde a = 1 y b = 0, respectivamente.
Si las relaciones entre el texto plano y el texto cifrado esta descrito por (4.2),
entonces la relación inversa se expresa mediante
Encriptación
Ejemplo
Sea el siguiente mensaje: tbn estamos en el laboratorio esperandola. Al
aplicar el algoritmo obtenemos lo siguiente:
- 19 1 13 4 18 19 0 12 14 18 4 13 4 11 11
0 1 14 17 0 19 14 17 8 14 4 18 15 4 17
0 13 3 14 11 0
- 13 17 23 12 6 13 10 16 4 6 12 23 12 9 9
10 17 4 25 10 13 4 25 14 4 12 6 11 12 25
10 23 5 4 9 10
Ejemplo
El mensaje jarm estamos en el salon de clases, cuando es encriptado se
obtiene lo siguiente:
- ...
- vkzqm gnkqe gmxmj gkjex fmyjk gmg
Desencriptación
Ejemplo
Al mensaje encriptado nrxmgnkqegmxmjjkrezknezoemglmzkxfejk, aplicándo-
le el algoritmo desencriptador obtenemos lo siguiente:
- nrxmg nkqeg mxmjj krezk nezoe mglmz kxfej k
2 (1523 - 1596) Recibio una exelente educación. A los 17 años fué llevado a la corte francesa
y a los 22 aõs fué secretario del Duke de Never. En 1549 estuvo en Roma como diplomático,
donde empieza a leer diversos libros de criptografı́a de la época. Fué autor de mas de 20
libros, siendo el mas conocido Traicté des Chiffres escrito en 1585. En este libro discute sobre
el cifrado poli-alfabetico e introduce diversas variaciones.
4.1. CIFRADO POR CLAVE SIMÉTRICA 67
Encriptación
Ejemplo
Sea el siguiente mensaje: m = millennium con la clave k = ytwok. Al
aplicar el algoritmo para encriptar, segun Vigenère obtenemos lo siguiente:
k1 k2 k3 k4 k5 = 24 19 22 14 10
- kbhzolgeiw
Ejemplo
Sea el siguiente mensaje: m = jarm estamos en el salon de clases con
la clave k = fatima. Al aplicar el algoritmo para encriptar, segun Vigenère
obtenemos lo siguiente:
68CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
Desencriptación
Ejemplo
Sea el siguiente mensaje cifrado: c = ffflbcvfx con la clave k = zorro. Al
aplicar el algoritmo para desencriptar obtenemos lo siguiente:
- El equivalente numérico de c y k es:
c1 c2 c3 c4 c5 c6 c7 c8 c9 = 5 5 5 11 1 2 21 5 23
k1 k2 k3 k4 k5 = 25 14 17 17 14
- p1 ≡ c1 − k1 (mod 26) =⇒ p1 ≡ 5 − 25(mod 26) =⇒ p1 = 6
p2 ≡ c2 − k2 (mod 26) =⇒ p2 ≡ 5 − 14(mod 26) =⇒ p2 = 17
p3 ≡ c3 − k3 (mod 26) =⇒ p3 ≡ 5 − 17(mod 26) =⇒ p3 = 14
p4 ≡ c4 − k4 (mod 26) =⇒ p4 ≡ 11 − 17(mod 26) =⇒ p4 = 20
p5 ≡ c5 − k5 (mod 26) =⇒ p5 ≡ 1 − 14(mod 26) =⇒ p5 = 13
p6 ≡ c6 − k6 (mod 26) =⇒ p6 ≡ 2 − 25(mod 26) =⇒ p6 = 3
p7 ≡ c7 − k7 (mod 26) =⇒ p7 ≡ 21 − 14(mod 26) =⇒ p7 = 7
p8 ≡ c8 − k8 (mod 26) =⇒ p8 ≡ 5 − 17(mod 26) =⇒ p8 = 14
p9 ≡ c9 − k9 (mod 26) =⇒ p9 ≡ 23 − 17(mod 26) =⇒ p9 = 6
4.1. CIFRADO POR CLAVE SIMÉTRICA 69
- groundhog
Ejemplo
Sea el siguiente mensaje cifrado: c = ybgmetfmhaqnjleinowamwditelxqrfnww-
xa con la clave k = fatima. Al aplicar el algoritmo para desencriptar obtenemos
lo siguiente:
- ybgmet fmhaqn jleino wamwdi telxqr fnwwxa
- ...
Es otro tipo de cifrado por bloque creado por Lester S. Hill3 , quien considera
que cada bloque de dos letras en texto plano debe ser reemplazado por otro
bloque, también de dos letras, en texto cifrado.
Encriptación
Ejemplo
Sea el siguiente mensaje: tbn estamos en el laboratorio esperandola. Al
aplicar el algoritmo obtenemos lo siguiente:
Desencriptación
Ejemplo
Sea el siguiente mensaje: indixtwymohdzzdsjghqvangimhlxlnntods. Al apli-
car el algoritmo respectivo obtenemos lo siguiente:
4.1. CIFRADO POR CLAVE SIMÉTRICA 71
El cifrado por bloque mas importante que ha sido usado para aplicaciones
comerciales, y por los gobiernos de los paises desarrollados durante los últimos
20 años, ha sido el Data Encryption Algorithm - DEA el cual fué estandarizado
en 1977 como parte del DES. El DEA es un tipo de algoritmo para cifrado, que
encripta bloques de 64 bits usando una clave de también 64 bits.
En febrero del año 1997 el NIST anunció que se empezaba a buscar el sucesor
para el DES, esto es buscaba un Advanced Encryption Standard - AES. El 12
de septiembre de ese año se formalizó la convocatoria, en la cual se establecian
las siguientes condiciones para los algoritmos candidatos:
con grupo de investigación COSIC, donde diseña cifrados por bloque y flujo, asi como en las
funciones de hash. En 1995 se gradua como doctor.
5 (1970 - ) Nació en Bruselas, Belgica. En 1993 se gradua como Ing. electrónico en la
Universidad de Leuven. En 1997 se gradua como doctor con su tesis Cryptanalysis and design
of iterated block ciphers en el Laboratorio ESAT/COSIC de la Universidad de Leuven. Trabaja
como colaborador del Dr. Joam Daemen, de donde uno de los proyectos realizados origina
el algoritmo Rijndael. Entre 2001 - 2003 fué profesor visitante en el Institute for Applied
Information Processing and Communications de la Universidad de Tecnologı́a en Austria;
entre los años 2004 - 2007 trabaja a dedicación exclusiva en la misma universidad. Desde
octubre del 2007 es profesor asociado en la Universidad de Leuven, trabajando nuevamente
en el laboratorio COSIC.
4.1. CIFRADO POR CLAVE SIMÉTRICA 73
El cifrado de Vernam fué propuesto por Gilbert Vernam6 en 1917 para usarlo
en la encriptación y desencriptación de mensajes remitidos mediante telégrafo.
Institute trabajó en AT & T, donde desarrolla un método para transmitir mediante teletipo,
el primer sistema de criptografı́a automatizada y segura. También desarrolló una técnica
para encriptar imágenes digitales. Vernam patentó 65 inventos relacionados con criptografı́a
y sistemas de comunicación.
74CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
Encriptación
Ejemplo
Sea el siguiente mensaje: m = 011110111 con el flujo de claves k =
110001111. Al aplicar el algoritmo para encriptar, obtenemos lo siguiente:
Es otro tipo de cifrado por flujo creado Vigenère, el cual usa una clave inicial
especial. Este tipo de cifrado usa la siguiente transformación:
ci ≡ pi + ki (mod 26),
donde pi es el equivalente numérico del iésimo caracter del texto plano. Analo-
gamente lo es ci en el texto cifrado. En lo referido al flujo de claves ki es el
equivalente numérico respectivo. La clave inicial se denota por k1 = s, siendo s
el equivalente numérico.
Ejemplo
Dado el mensaje hermit, con la clave inicial x (cuyo equivalente numérico
es 23) y el flujo de claves 7, 4, 17, 12 y 8, respectivamente. Encriptar el mensaje.
En efecto
El equivalente numérico del mensaje esta dado por: 7 4 17 12 8 19. Al usar
la transformación encriptadora obtenemos lo siguiente:
c1 ≡ p1 + k1 (mod 26) =⇒ c1 ≡ 7 + 23(mod 26) =⇒ c1 = 4
c2 ≡ p2 + k2 (mod 26) =⇒ c2 ≡ 4 + 7(mod 26) =⇒ c2 = 11
..
.
c6 ≡ p6 + k6 (mod 26) =⇒ c6 ≡ 19 + 8(mod 26) =⇒ c6 = 1
p1 ≡ c1 − s(mod 26)
A continuación para obtener los siguientes caracteres del texto plano usar:
p2 ≡ c2 − p1 (mod 26)
p3 ≡ c3 − p2 (mod 26)
..
.
pi−1 ≡ ci−1 − pi−2 (mod 26)
pi ≡ ci − pi−1 (mod 26)
Ejemplo
Dado el mensaje encriptado rmntu con la clave inicial f (cuyo equivalente
numérico es 5), desencriptar el mensaje.
En efecto
El equivalente numérico del mensaje encriptado esta dado por: 17 12 13 19 20.
Al usar la transformación desencriptadora obtenemos lo siguiente:
p1 ≡ c1 − s(mod 26) =⇒ p1 ≡ 17 − 5(mod 26) =⇒ p1 = 12
p2 ≡ c2 − p1 (mod 26) =⇒ p2 ≡ 12 − 12(mod 26) =⇒ p2 = 0
p3 ≡ c3 − p2 (mod 26) =⇒ p3 ≡ 13 − 0(mod 26) =⇒ p3 = 13
p4 ≡ c4 − p3 (mod 26) =⇒ p4 ≡ 19 − 13(mod 26) =⇒ p4 = 6
p5 ≡ c5 − p4 (mod 26) =⇒ p5 ≡ 20 − 6(mod 26) =⇒ p5 = 14
En 1973 el joven investigador Clifford Cocks hizo una simple solución del
problema iniciado por Ellis. El aporte hecho por Cocks fué redescubierto muchos
7 (1924 - 1997) Ingeniero y matemático quien en 1970 cuando trabaja en la GCHQ, conci-
en 1973, ahora conocido como RSA. Su trabajo no fué reconocido, inicialmente, como tal pues
fué considerado como información clasificada. Cocks permaneció como desconocido hasta 1997.
76CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
(2) Para poder desencriptar, Bob usa el algoritmo de Euclides para hallar los
números x e y, de modo que satisfaga la relación px ≡ 1(mod q − 1) y
qy ≡ 1(mod p − 1).
Encriptación
Desencriptación
Ejemplo
Generación de la claves:
a ≡ 53 (mod 5) =⇒ a = 0.
b ≡ 55 (mod 7) =⇒ b = 3.
El algoritmo fue creado en 1977 por Ronald Rivest9 , Adi Shamir10 y Leonard
Adleman11 en el MIT12 y patentado por el MIT en 1983 en Estados Unidos con
el número 4.405.829. Esta patente expiró el 21 de septiembre de 2000.
Generación de la claves
(1) Alicia genera, aleatoriamente y del mismo tamaño, dos números primos
grandes y diferentes p y q, respectivamente.
(2) n = pq.
(3) φ = (p − 1)(q − 1).
(4) Seleccionar, aleatoriamente, un número entero e tal que mcd(e, φ) = 1,
con 1 < e < φ.
(5) Usar el algoritmo de Euclides extendido para hallar el número entero d
tal que ed ≡ 1(mod φ), donde 1 < d < φ.
(6) La clave pública de Alicia es (n, e) y la clave privada es d.
Encriptación
Desencriptación
(1) Para recuperar m, Alicia usa la transformación m ≡ cd mod( n).
Ejemplo
Generar las claves pública y privada:
(1) Alicia genera p = 43 y q = 59, respectivamente.
(2) n = 43 × 59 = 2537.
(3) φ = (43 − 1)(59 − 1) = 2436.
(4) Seleccionar e = 13, pues mcd(13, 2436) = 1 y además 1 < e = 13 < 2436.
(5) Usando el algoritmo de Euclides extendido se obtiene d = 937, pues 13 ×
d ≡ 1(mod 2436) con 1 < 937 < 2436.
(6) La clave pública de Alicia es (n, e) = (2537, 13) y la clave privada es
d = 937.
Ejemplo
Sea el texto plano siguiente: m = public key cryptography. Para encriptar
m seguimos los siguientes pasos:.
(1) Bob recibe la clave pública de Alicia (n, e) = (2537, 13).
(2) Usando la tabla dada en la figura 4.1 representamos numericamente el
mensaje m:
public : 15 20 1 11 8 2
key : 10 4 24
cryptography : 2 17 24 15 19 14 6 17 0 15 7 24
Ejemplo
Desencriptar el mensaje cifrado obtenido en el ejemplo anterior.
Alicia ha recibido un mensaje encriptado, para leer el contenido ella debe
aplicar el algoritmo de descifrado.
(1) Para cada bloque del texto cifrado, Alicia usará m ≡ cd mod( n), es decir
m ≡ (0095)937 mod( 2537) =⇒ m = 1520.
m ≡ (1648)937 mod( 2537) =⇒ m = 0111.
..
.
m ≡ (1084)937 mod( 2537) =⇒ m = 2423.
Generación de la claves
(1) Alicia genera, aleatoriamente dos números primos grandes, del mismo ta-
maño y diferentes p y q, respectivamente.
13 (1931 - ) Nacio en Breslau, Alemania, recibio su M.Sc. en la Universidad Hebrea de
(2) n = pq.
(3) La clave pública de Alicia es n y la clave privada es (p, q).
Encriptación
(1) Bob recibe la clave pública de Alicia n.
(2) Representa el mensaje en texto plano m, como un número entero en el
intervalo [0, n − 1].
(3) Computar c ≡ m2 mod( n).
(4) Remitir el texto cifrado c a Alicia.
Desencriptación
(1) Para recuperar m, Alicia usa el algoritmo para encontrar las raı́ces m1 ,
m2 , m3 y m4 .
(2) Como el mensaje remitido por Bob esta en una de las raı́ces, Alicia debe
decidir en cual de tales raı́ces esta el mensaje m.
Ejemplo
Generar las claves pública y privada:
(1) Alicia genera p = 277 y q = 331, respectivamente.
(2) n = 277 × 331 = 91687.
(3) La clave pública de Alicia es n = 91687 y la clave privada es (p, q) =
(277, 331).
Ejemplo
Sea el texto plano dado en binario por m0 = 1001111001. Para encriptar m0
seguimos los siguientes pasos:
Ejemplo
Desencriptar el mensaje cifrado obtenido en el ejemplo anterior.
En efecto
82CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
(2) Alicia evalua las raı́ces obtenidas y observa que en el mensaje m3 existe
una redundancia. Por lo tanto, el mensaje original m0 esta en m3 .
Para que Eva pueda conocer el mensaje, ella tendrı́a que conocer el bit menos
significante; pero como este bit es un predicado hard core del RSA, entonces Eva
no tendrá exito siendo su probabilidad signicante mayor de 1/2.
Lo siguiente nos ayuda a entender ciertos conceptos muy útiles para los
criptosistemas probabilı́sticos:
La complejidad teorica entre los problemas fáciles con respecto a Alicia -
Bob y los problemas difı́ciles con respecto a Eva, constituyen la base de la
criptografı́a moderna. Esto supone que Eva tendrá un lı́mite en cuanto a sus
capacidades computacionales. Además es un error suponer que cualquier lı́mite
de la capacidad computacional de Eva no efectará a Alicia y a Bob. Esto nos
conduce a la siguiente suposición:
Alicia, Bob y Eva solamente pueden ejecutar computaciones
probabilisticas en tiempo polinomial.
Otra interrogante razonable es: Eva nunca sera capaz de desencriptar cual-
quier criptosistema ?. La respuesta es no pues si Eva simplemente conjetura o
intenta adivinar, entonces existe una pequeña posibilidad que este haciendo lo
correcto.
Para nuestro interes, es posible que Alicia y Bob esten tranquilos pues usan
un criptosistema con el siguiente nivel de seguridad:
Si Eva usa cualquier algoritmo probabilı́stico de tiempo
polinomial, entonces la probabilidad que ella desencripte
correctamente un mensaje aleatorio es negligible14 .
Como un predicado solamente tiene dos valores posibles, entonces Eva siem-
pre tendrá un chance del 50 % para responder correctamente B(x), aun sin co-
nocer acerca de B(x), x o f (x). Decir que un predicado es difı́cil de computar,
significa que es inviable hacerlo.
14 Insignificante.
84CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
(1) Alicia selecciona una clave de longitud k y genera las claves pública y
privada expresada por (i, ti ).
Encriptación
(3) Bob remite el mensaje en texto cifrado dado por c = (fi (x1 ), fi (x2 ), . . . , fi (xn )).
Desencriptación
6. Eva reconoce cual de los dos mensajes fué encriptado por Bob.
1. No hay criptosistema: Eva dá su clave pública a Bob y le cuenta que Alicia
ha elegido un mensaje m de longitud k. Pedimos a Eva que conjeture
acerca de b(m).
2. Hay criptosistema: Eva dá su clave publica a Bob y le cuenta que Alicia
ha elegido un mensaje m de longitud k. Pero en este caso damos a Eva el
criptosistema c = Ee (m) y le preguntamos que conjeture b(m).
Generación de la claves
(1) Alicia selecciona, aleatoriamente, dos números primos p y q grandes, dife-
rentes y del mismo tamaño.
(2) Obtener n = pq.
(3) Seleccionar un y ∈ Zn tal que:
(3.1) y no es residuo cuadrático módulo n.
(3.2) El sı́mbolo de Jacobi ( ny ) = 1.
(4) La clave pública de Alicia es (n, y) y la clave privada es (p, q).
Encriptación
(1) Bob recibe la clave pública de Alicia (n, y).
(2) Representa el mensaje en texto plano m, como una palabra binaria m =
m1 m2 . . . mt de longitud t.
(3) PARA (i = 1 : t)
Escoger aleatoriamente un x ∈ Zn∗ .
SI (mi = 1)
ci ← yx2 mod n
CASO CONTRARIO
ci ← x2 mod n
FIN SI
FIN PARA
(4) Remitir el texto cifrado c = (c1 , c2 , . . . , ct ) a Alicia.
Desencriptación
Para recuperar m, Alicia hace lo siguiente:
(1) PARA (i = 1 : t)
Hallar los sı́mbolos de Legendre ei = ( cpi );
SI (ei = 1)
mi ← 0;
CASO CONTRARIO
mi ← 1;
FIN SI
FIN PARA
88CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
Ejemplo
Generación de la claves
Encriptación
(2) Sean los números k = blog nc y h = blog kc, entonces Bob representa
el mensaje como una palabra m = m1 m2 . . . mt , donde cada mi es una
palabra binaria de longitud h.
(4) PARA (i = 1 : t)
xi ← x2i−1 mod n.
Sean pi los h bits menos significativos de xi .
ci ← pi ⊕ mi .
FIN PARA
(5) xt+1 ← x2t mod n.
(4) Remitir el texto cifrado c = (c1 , c2 , . . . , ct , xt+1 ) a Alicia.
Desencriptación
Para recuperar m, Alicia hace lo siguiente:
(1) d1 ← ( p+1
4 )
t+1
mod( p − 1).
(2) d2 ← ( q+1
4 )
t+1
mod( q − 1).
(3) u ← xdt+1
1
mod p.
(4) v ← xdt+1
2
mod q.
(5) x0 ← (vap + ubq) mod n.
(6) PARA (i = 1 : t)
xi ← x2i−1 mod n.
Sean pi los h bits menos significativos de xi
mi ← pi ⊕ ci .
FIN PARA
(7) Retornar el mensaje m = m1 m2 . . . mt .
Ejemplo
4.3. Ejercicios
90CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS
Capı́tulo 5
Álgebra abstracta
91
92 CAPÍTULO 5. ÁLGEBRA ABSTRACTA
Ejemplo:
Sean C 6= φ, C C = {f : C → C} el conjunto de todas las funciones. Entonces
siendo ◦ la operación composición de funciones, tenemos que (C C , ◦) es un
semigrupo, pues se cumple:
- g ∈ C C y h ∈ C C . Entonces g ◦ h ∈ C C .
- Si g, h, j ∈ C C . Entonces (g ◦ h) ◦ j = g ◦ (h ◦ j).
Ejemplo:
Dado un grafo, el conjunto de arcos (camino) basados en un vértice fijo v,
forma un monoide bajo la operación binaria concatenación, donde el camino
nulo es la identidad.
Ejemplo:
Sea R2x2 el conjunto de matrices reales de orden 2. Entonces (R2x2 , *), donde
la operación binaria se define por A * B = A - 2B, no es un monoide.
Ejemplo:
El par dado por (N, -), no es un monoide.
- Teorı́a de Galois: Creado por Evarist Galois1 . Esta teorı́a proporciona una
conexión entre la teorı́a de campos y la teorı́a de grupo, pues ciertos pro-
blemas de la teorı́a de campos pueden ser reducidos a la teorı́a de grupos
para un mejor entendimiento. Además Galois fué el primer investigador
que uso el término grupo, usándolo para describir las simetrias de las
ecuaciones que se satisfacen por las soluciones para una ecuación polino-
mial, es decir demostró que las soluciones de una ecuación polinomial son
governadas por un grupo.
1 (1811 - 1832) Matemático frances quien determinó las condiciones necesarias y suficientes
para que un polinomio sea solucionable por radicales. Publicó tres papers, en los dos primeros
establece los fundamentos de la teorı́a de Galois, y en el tercer paper dedicado a la teorı́a de
números, establece el concepto de campo finito. Murio en un duelo a la edad de 20 años.
2 (1802 - 1829) Matemático noruego, quien demostró que es imposible solucionar el polino-
- Grupos de Lie: Creado por el matemático Sophus Lie3 . Este tipo de grupos
es importante para el estudio de la ecuaciones diferenciales y las varieda-
des. Actualmente se los esta usando en criptografı́a.
- Asociativa: ∀ a, b, c ∈ G, se cumple a * (b * c) = (a * b) * c.
Algunas caracterı́sticas especiales hacen que los grupos tengan nombres propios,
es decir, si a * b = b * a, ∀ a, b ∈ G, entonces G es llamado grupo abeliano o
conmutativo. Si en un grupo la operación binaria fuese la operación adición o
multiplicación, entonces los grupos son llamados grupo aditivo y grupo multi-
plicativo, respectivamente. Además, si |G| es finito, entonces (G, *) también es
finito.
G1 ⊗ G2 = {(a1 ,a2 ) / a1 ∈ G1 y a2 ∈ G2 },
Ejemplo
Los conjuntos Z, Q, R y C, con la operación adición son grupos los cuales
tiene al número 0 como su identidad, y el inverso aditivo es −a.
Ejemplo
El conjunto de los números complejos modulo 1, es decir {eiθ = cosθ +
i senθ/0 < θ < 2π} es un grupo con la operación multiplicación, siendo su
identidad eiθ = 1, y la inversa (eiθ )−1 = e−iθ .
Ejemplo
Los conjuntos R − {0}, Q − {0} y C − {0} con la operación multiplicación
son grupos, donde la identidad y la inversa estan dados por 1 y a1 , donde a 6= 0,
respectivamente.
Ejemplo
El conjunto de los números reales positivos R+ con la operación multiplica-
ción son grupos, donde la identidad 1 y la inversa a1 , donde a 6= 0.
Ejemplo
El conjunto de las funciones biyectivas f : S → S con la operación compo-
sición de funciones es un grupo, donde la identidad esta dado por la función
i : S → S, con i definida por i(s) = s, ∀s ∈ S y la inversa se define por
f −1 (y) = s ⇐⇒ f (s) = y.
Ejemplo
El conjunto de las matrices reales M mn con la operación adición de matrices
es un grupo, donde la identidad esta dado por la matriz nula, y la inversa aditiva
−A, respectivamente.
5.3. ESTRUCTURAS ALGEBRAICAS 97
Ejemplo
El conjunto de los números enteros modulo n, denotado por Zn , con la
operación (a + b)mod n es un grupo,donde la identidad es 0.
Ejemplo
El grupo multiplicativo Zn∗ con la operación ab mod n es un grupo, donde la
identidad esta dado por 1.
En los dos últimos ejemplos, los elementos de estos grupos son vistos como
clases de equivalencia, donde tal clase se define como
+ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1
Homomorfismo de grupos
0
Sean los grupos (G,∗) y (H, ∗ ), respectivamente, entonces la función dada
por
0
ϕ : G → H, definida por ϕ(a ∗ b) = ϕ(a) ∗ ϕ(b), ∀a, b ∈ G.
es un homomorfismo de grupos.
Isomorfismo de grupos
Sean G y H dos grupos. Entonces la función ϕ : G → H es un isomorfismo,
si ϕ es un homomorfismo biyectivo.
Ejemplo:
Sean dos grupos
µ· (R2×2
¸¶, +) y (R, +) respectivamente, entonces f : R
2×2
→R
a b
definida por f = b + c es un homomorfismo.
c d
En efecto
Sean A y B dos matrices de orden 2, tal que
µ· ¸ · ¸¶ µ· ¸¶
a b a0 b0 a + a0 b + b0
f (A + B) = f + =f
c d c0 d0 c + c0 d + d0
98 CAPÍTULO 5. ÁLGEBRA ABSTRACTA
µ· ¸¶ µ· 0 ¸¶
a b a b0
= b+b0 +c+c0 = (b+c)+(b0 +c0 ) = f +f
c d c0 d0
= f (A) + f (B).
Observación
Subgrupo
Sea (G, ∗) un grupo. Un subgrupo de G esta dado por un subconjunto
H ⊆ G tal que (H, ∗) es un grupo con la misma operación del grupo G. Si H es
un sugrupo de G y H 6= G, entonces H es llamado subgrupo propio de G.
Ejemplos
Los siguientes conjuntos son subgrupos aditivos (Z, +), (Q, +), (R, +) y (C,
+), respectivamente.
Ejemplos
4. Los conjuntos {0}, {0, 3}, {0, 2, 4}, Z6 son subgrupos del grupo Z6 .
Observación
5.3.2. Anillos
La teorı́a de anillos es útil para el razonamiento acerca de una amplia clase de
interesantes estructuras algebraicas. Intuitivamente, un anillo es un estructura
algebraica que tiene dos operaciones, es decir un anillo esta dado por (R, ∗, ∗0 ).
a × (b + c) = a × b + a × c.
(a + b) × c = a × c + b × c.
Observación
u × a = a × u = a, a ∈ R.
Ejemplos
Ejemplo
La función φ : R → S definido por φ(a) = a mod n es un homomorfismo de
anillos.
Ejemplo
Si R y S son anillos, entonces φ : R → S definido por φ(a) = 0, ∀a ∈ R es
un homomorfismo de anillos.
Ejemplo
Sea Z2 [x] un anillo de polinomios, entonces tenemos las siguientes operacio-
nes:
(x3 + x1 + 1) + (x2 + x1 ) = x3 + x2 + 1.
(x3 + x1 + 1)(x2 + x1 ) = x5 + x4 + x3 + x.
Ejemplo
En el anillo de polinomios Z6 [x] tenemos las siguientes operaciones:
(2x + 1) + (3x + 1) = 5x + 2.
(2x + 1)(3x + 1) = 6x2 + 2x + 3x + 1 = 5x + 1.
Polinomios irreducibles
Sea f (x) ∈ R[x] un polinomio de grado n. f (x) es irreducible sobre R si
tal polinomio no puede ser escrito como el producto de otros dos polinomios en
R[x], donde cada uno de ellos es de grado positivo y menores que n. Es decir
f (x) 6= f1 (x)f2 (x)
Ejemplo
Todos los polinomios de grado 1 son irreducibles en R[x], pues ningun poli-
nomio de la forma
f (x) = a1 x + a0 , con a1 6= 0
puede descomponerse en el producto de dos polinomios.
Ejemplo
No todo polinomio de grado 2 es irreducible en R[x]. Siendo f (x) = a2 x2 +
a1 x1 + a0 un polinomio, entonces
1) Si a21 − 4a2 a0 < 0, entonces f (x) es irreducible.
2) Si a21 − 4a2 a0 ≥ 0, entonces f (x) es reducible.
Observación:
a) Si R es un anillo, entonces [x] también es un anillo.
b) Si R es un anillo conmutativo, entonces R[x] también lo es.
c) Si R es un anillo con unidad, entonces R[x] tiene al polinomio constante,
f (x) = 1, como unidad.
102 CAPÍTULO 5. ÁLGEBRA ABSTRACTA
5.3.4. Campos
Un campo es un anillo conmutativo en el cual no todos los elementos tienen
inversos multiplicativos, es decir un campo (F, +, ×) es tal que
- (F, +, ×) es un anillo.
Ejemplo
Los conjuntos de números (Q, +, ×), (R, +, ×) y (C, +, ×) son campos.
Ejemplo
Sea Zn = {0, 1, . . . , n − 1}, con n primo. Entonces Zn es un campo con las
operaciones adición y multiplicación modular.
División de polinomios
Si g(x), h(x) ∈ F [x], con h(x) 6= 0, entonces la división g(x) ÷ h(x) produce
lo siguiente:
Ejemplo
En Z5 tenemos los polinomios g(x) = 3x4 + 2x3 + 2x + 1 y h(x) = x2 + 2.
El cociente esta dado por:
q(x) = 3x2 + 2x + 4
y el resto por
r(x) = 3x + 3.
Ejemplo
En Z2 tenemos los polinomios g(x) = x6 + x5 + x3 + x2 + x + 1 y h(x) =
x + x3 + 1. La división de g(x) y h(x) nos permite obtener:
4
q(x) = x2
y el resto por
r(x) = x3 + x + 1
Algoritmo de Euclides
Sean g(n), h(x) dos polinomios no nulos en Zp [x]. El mcd de g(x) y h(x)
esta dado por el polinomio monic de mayor grado en Zp [x], el cual divide a g(x)
y h(x).
Ejemplo:
En Z2 [x] tenemos los polinomios g(x) = x10 + x9 + x8 + x6 + x5 + x4 + 1 y
h(x) = x9 + x6 + x5 + x3 + x2 + 1, respectivamente. Al aplicar el algoritmo de
Euclides Extendido se tienen los resultados siguientes:
s2 (x) ← 1; s1 (x) ← 0;
t2 (x) ← 0; t1 (x) ← 1;
g(x) ← x3 + x + 1; h(x) ← 0;
s2 (x) ← x4 ; s1 (x) ← x6 + x4 + x + 1;
t2 (x) ← x5 +x4 +x3 +x2 +x+1; t1 (x) ← x7 +x6 +x2 +x+1.
5.4. Ejercicios
106 CAPÍTULO 5. ÁLGEBRA ABSTRACTA
Capı́tulo 6
Esquemas criptograficos
basados en álgebra
6.1. Ejercicios
107
108CAPÍTULO 6. ESQUEMAS CRIPTOGRAFICOS BASADOS EN ÁLGEBRA
Capı́tulo 7
Firmas digitales
7.1. Ejercicios
109
110 CAPÍTULO 7. FIRMAS DIGITALES
Bibliografı́a
[1] P.A. Abdulla and B. Jonsson. Verifying program with unreliable channels.
In Proceedings of the 8th IEEE Symposium on Logic in Computer Science,
1993.
[2] P.A. Abdulla and B. Jonsson. Undecidable verification problems for pro-
grams with unreliable channels. In Proc. ICALP-94, volume 820 of Lecture
Notes in Computer Science, pages 316-327. Springer-Verlag, 1994.
[3] R. Alur, R.K. Brayton, T.A. Henzinger, S. Qadeer and S.K.Rajamani.
Partial-Order Reduction in Symbolic State Space Exploration. Proceedings
of the 9th International Conference on Computer-aided Verification, 1997.
[4] R. Alur, C. Courcoubetis, and D. Dill. Model-checking in dense real-time.
Information and Computation, 104(1): 2-34, May 1993.
[5] R. Alur, S. Chaudhuri, K. Etessami and P. Madhusudan. On-the-fly
Reachability and Cycle Detection for Recursive State Machines. Univer-
sity of Pennsylvania, USA, 2005.
[6] B. Boigelot and P. Wolper. Symbolic verification with periodic sets. In Proc.
6th Conference on Computer Aided Verification, volume 818 of Lecture
Notes in Computer Science, pages 55-67, Stanford, June 1994. Springer-
Verlag.
[7] J.G. Brookshear. Computer Science. An Overview. Addison-Wesley Iberoa-
mericana S.A., 1995.
[8] G. Cécé, A. Finkel, and S. Purushothaman. Unreliable channels are easier
to verify than perfect channels. Information and Computation, 124(3): 20-
31, 1996.
[9] T.H. Cormen, CH. E. Leiserson and R.L. Rivest. Introduction to ALGO-
RITHMS.Second Edition, The MIT Press, Cambridge, Massachusetts Lon-
don, England, McGraw-Hill Book Company, 2001.
[10] E.M. Clarke, E.A. Emerson and A.P. Sistla. Automatic verification of finite-
state concurrent systems using temporal logic specifications: a practical
approach. ACM Transactions on Programming Languages and Systems,
8(2): 244-263, January 1986.
[11] P. Godefroid and D.E. Long. Symbolic Protocol Verification with Queue
BDDs. In Proceedings of the 11th IEEE Symposium on Logic in Computer
Science, New Brunswick, July 1996.
111
112 BIBLIOGRAFÍA
[16] J.K. Pachl. Protocol description and analysis based on a state transition
model with channel expressions. In Proc. 7th IFIP WG 6.1 Internatio-
nal Symposium on Protocol Specification, Testing, and Verification, North-
Holland, 1987.
[17] Dana Petcu. Parallel Explicit State Reachability Analysis and State Space
Construction. Institute e-Austria Timisoara and Computer Science Depart-
ment, Wertern University of Timisoara, Romania, 2004.