Vous êtes sur la page 1sur 112

1

UNIVERSIDAD NACIONAL DE LA LIBERTAD


Facultad de Ciencias Fı́sicas y Matemáticas
Departamento de Informática

Álgebra universal para la Ciencia de la


Computación: Aplicación a la Criptografı́a

José A. Rodrı́guez Melquiades Teresa Bracamonte Nole


MsC. Ciencia de la Computación Ing. Informático

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

2. Algoritmos y Complejidad computacional 19


2.1. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. Complejidad computacional . . . . . . . . . . . . . . . . . . . . . 21
2.2.1. Análisis de algoritmos . . . . . . . . . . . . . . . . . . . . 22
2.2.2. Formalización del análisis de los algoritmos . . . . . . . . 23
2.2.3. Clases de problemas . . . . . . . . . . . . . . . . . . . . . 26
2.2.4. Complejidad computacional con enteros . . . . . . . . . . 28
2.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

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

3.7.1. Factorización de propósito especial . . . . . . . . . . . . . 53


3.7.2. Factorización de propósito general . . . . . . . . . . . . . 53
3.8. Residuo cuadrático . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.8.1. Residuo cuadrático y residuo no cuadrático . . . . . . . . 55
3.9. Problema de la raı́z cuadrada modulo n . . . . . . . . . . . . . . 58
3.9.1. Raı́z cuadrada cuando n un número primo . . . . . . . . . 58
3.9.2. Raı́z cuadrada cuando n un número compuesto . . . . . . 58

4. Criptosistemas basados en teorı́a de números 61


4.1. Cifrado por clave simétrica . . . . . . . . . . . . . . . . . . . . . 61
4.1.1. Cifrado por caracteres . . . . . . . . . . . . . . . . . . . . 61
4.1.2. Cifrado por bloque y flujo . . . . . . . . . . . . . . . . . 66
4.2. Cifrado por clave asimétrica . . . . . . . . . . . . . . . . . . . . . 75
4.2.1. Criptosistema non-secret de Cocks-Ellis . . . . . . . . . . 76
4.2.2. Criptosistema RSA . . . . . . . . . . . . . . . . . . . . . 77
4.2.3. Criptosistema de Rabin . . . . . . . . . . . . . . . . . . . 80
4.2.4. Encriptación probabilı́stica de un mensaje de un bit . . . 84
4.2.5. Encriptación probabilı́stica de un mensaje grande . . . . . 85
4.2.6. Criptosistema de Goldwasser-Micali . . . . . . . . . . . . 86
4.2.7. Criptosistema de Blum-Goldwasser . . . . . . . . . . . . 88
4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

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

6. Esquemas criptograficos basados en álgebra 107


6.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

7. Firmas digitales 109


7.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Índice de figuras

1.1. Comunicación entre dos entidades. . . . . .. . . . . . . . . . . . . . 8


1.2. Scytale. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 9
1.3. Máquina mecánica. . . . . . . . . . . . . .. . . . . . . . . . . . . . 10
1.4. Claude Shannon. . . . . . . . . . . . . . .. . . . . . . . . . . . . . 10
1.5. Diffie y Hellmann. . . . . . . . . . . . . .. . . . . . . . . . . . . . 10
1.6. Criptosistema fragil. . . . . . . . . . . . .. . . . . . . . . . . . . . 13
1.7. Criptosistema e = d. . . . . . . . . . . . .. . . . . . . . . . . . . . 13
1.8. Criptosistema e 6= d. . . . . . . . . . . . .. . . . . . . . . . . . . . 14
1.9. Principales aportes en criptosistema asimétrico. . . . . . . . . . . . . 15

2.1. Lugar de nacimiento de Al Khwarizmi. . . . . . . . . . . . . . . . . 20


2.2. Velocidad algoritmica. . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3. Alan M Turing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. S. Cook y R. Karp. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5. Modelo computacional RAM. . . . . . . . . . . . . . . . . . . . . . 23
2.6. Modelos computacional PRAM. . . . . . . . . . . . . . . . . . . . . 24
2.7. Comparación asintótica de los algoritmos A y B. . . . . . . . . . . . 26
2.8. Clases de problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.1. Carl F. Gauss. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 34


3.2. Riemann. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 34
3.3. Paul Erdos. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 35
3.4. Euclides. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 36
3.5. M. Agrawal, N. Kayal y N. Saxena. . . . . . . . . . . . . . . . . . . 44

4.1. Alfabeto y su equivalente numérico. . . . . . . . . . . . . . . . . . . 61


4.2. Emperador romano Julio César. . . . . . . . . . . . . . . . . . . . . 62
4.3. Cifrado usando la transformación del César. . . . . . . . . . . . . . . 62
4.4. Letras en texto cifrado usando la ecuación (4.5). . . . . . . . . . . . 65
4.5. Blaise de Vigenère. . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.6. Máquina de cifrado de Hill. . . . . . . . . . . . . . . . . . . . . . . 69
4.7. J. Daemen y V. Rijmen. . . . . . . . . . . . . . . . . . . . . . . . . 73
4.8. Hilbert Vernam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.9. R. Rivest, A. Shamir y L. Adleman. . . . . . . . . . . . . . . . . . . 78
4.10. Michael Rabin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.11. S. Goldwasser y S. Micali. . . . . . . . . . . . . . . . . . . . . . . . 87
4.12. M. Blum y S. Goldwasser . . . . . . . . . . . . . . . . . . . . . . . 88

5
6 ÍNDICE DE FIGURAS

5.1. Évariste Galois. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94


5.2. Niels Abel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.3. Sophus Lie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Capı́tulo 1

Introducción a la
criptografı́a

La criptologı́a se clasifica en criptografı́a y criptoanálisis, en este último caso


se refiere a la ciencia que analiza y rompe los criptosistemas. La criptografı́a a
su vez se clasifica en clásica y moderna. La criptografı́a moderna es simétrica
(clave privada) y asimétrica (clave pública).

Criptografı́a1 juega un rol crucial en la vida de la población actual mundial,


desde la Internet banking y comercio electrónico hasta email y los procesos
de negocios basados en la web. De acuerdo con el Oxford English Dictionary,
criptografı́a es la manera secreta de escribir usando letras o caracteres en un
sentido no ordinario, o por métodos de modo tal que el mensaje sea entendible
cuando se conozca la clave respectiva.[?]

Podemos resumir afirmando que la criptografı́a esta relacionado con la co-


municación en presencia de un intruso, y abarca diversos problemas tales como:
encriptación, autenticación, distribución de claves, etc. La siguiente figura mues-
tra como se produce el proceso de comunicación:

1 Es la ciencia que usa la matemática para encriptar y desencriptar los datos, es decir es la

ciencia de la seguridad de los datos.

7
8 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA

Figura 1.1: Comunicación entre dos entidades.

Observando la figura podemos notar las entidades que participan en un pro-


ceso de comunicación, donde Alicia escribe un mensaje m el cual a su vez es
encriptado usando la función encriptadora Ee ; el resultado de este proceso es
el mensaje encriptado(cifrado) c. El mensaje cifrado es remitido a través de
un canal inseguro hacia Bob, el cual a su vez aplicando la función desencrip-
tadora, Dd , a c obtiene el mensaje original m. En este proceso de transmisión
existe un tercer participante, denominado adversario, el cual en todo momento
deseará apoderarse el mensaje m.

La criptografı́a es pues el proceso de cifrar un mensaje con la finalidad de


asegurar la integridad del mismo. Pero para lograr tener exito en el proceso de
transferencia de mensajes, es necesario conocer los fundamentos básicos en el
cual se basan los diversos esquemas criptográficos existentes. Los fundamentos
teóricos son: Algoritmos, Complejidad computacional (clase de problemas P
y NP), Teorı́a de números, Álgebra, y últimamente Ecuaciones diferenciales
ordinarias, además de Números complejos.

1.1. Evolución historica de la criptografı́a


La criptografia tiene una grande y fascinante historia que empezó hace cien-
tos de años. Por ello los investigadores la han clasificado en dos etapas, cada
una de ellas con distintos rasgos o formas de asegurar la confidenciabilidad de
la información, de acuerdo con la etapa de desarrollo de los conocimientos.

1.1.1. Criptografı́a clásica


Los métodos eran tan simples que el proceso de encriptación se hacia usando
el lapiz y papel, o usando simples dispositivos mecánicos.

1. Egipto: En la antigua cultura egipcia, los primeros vestigios de cripto-


grafı́a se los han encontrado en los jeroglı́ficos. Los cientı́ficos creen que
estos son los primeros intentos para hacer comunicaciones secretas.
1.1. EVOLUCIÓN HISTORICA DE LA CRIPTOGRAFÍA 9

2. Mesopotamia: Las culturas Caldeo - Asiria tenian un tipo de escritura


cuyos mensajes eran plasmados en las famosas tablas de arcilla. Se cree
que en estas tablas los mesopotamios ocultaban la información.
3. Hebreos: Los antiguos hebreos hicieron uso de cifras monoalfabéticas
sencillas de sustitución, quizás comenzaron hace 500 - 600 años a.c.
4. Grecia: Las fuerzas armadas usaron un dispositivo llamado scytale trans-
position cipher, el cual era usado para cifrar sus mensajes. El matemático
Herodoto, segun se afirma, ocultaba sus mensajes en tablas de madera o
tatuados en la cabeza de los esclavos. Actualmente esta forma de ocultar
la información se llama estenografı́a.

Figura 1.2: Scytale.

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.1.2. Criptografı́a moderna


Como ya hemos afirmado, la criptografı́a tiene una larga y fascinante historia
que data desde los primeros pobladores humanos de la tierra. Sin embargo a
partir del siglo IXX gracias al desarrollo de la matemática y posteriormente a
la ciencia de la computación, los conceptos empiezan a formalizarse. En 1917
Gilbert Vernam propone un cifrado de teletipo, en el cual una clave previamente
preparada es conservada en una cinta perforada. Antes de la segunda guerra
mundial los métodos matemáticos empiezan a proliferar, en esta etapa destaca
el aporte de William F. Friedman quien aplicó técnicas estadı́sticas para el
desarrollo del criptoanálisis y el cifrado. Ya en la segunda guerra mundial la
criptografia y el criptoanálisis se basaron en la matemática.
Esta es la época en que se diseñarón máquinas de cifrado mecánicas y elec-
tromecánicas, con las cuales se lograron romper los mensajes cifrados.
10 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA

Figura 1.3: Máquina mecánica.

Se considera que el verdadero desarrollo empezó con Claude Shannon, quien


presentó su trabajo durante la segunda guerra mundial titulado communication
theory of secrety systems, asi como su libro mathematical theory of communica-
tion. Con estos trabajos Shannon establece las bases teóricas para la criptografı́a
y el criptoanálisis.

Figura 1.4: Claude Shannon.

En los años 1970 con dos avances importantes se inicio a la protección de


la información digital. Uno fué en 1976, cuando Diffie y Helmann presentan el
papers New directions in cryptography; el otro avance fué el desarrollo del Data
Encryption Standard - DES en 1977. En el primer aporte se introduce el con-
cepto de criptografı́a de clave pública, además de un método para el intercambio
de claves, cuya seguridad estuvo basado en la intratabilidad del problema del
logaritmo discreto.

Figura 1.5: Diffie y Hellmann.

En 1978 los investigadores Ronald Rivest, A. Shamir y L. Adleman descubren


que usando la intratabilidad del problema de la factorización de grandes números
1.2. ELEMENTOS PARTICIPANTES EN UN MODELO CRIPTOGRÁFICO11

enteros, es posible crear un criptosistema para encriptar. De este modo se da


continuidad al descubrimiento iniciado por Clifford Cocks en 1973; surge de este
modo el RSA. En 1985 el egipcio, de origen americano, Taher ElGamal presenta
otro criptosistema basado en el problema del logaritmo discreto.

1.2. Elementos participantes en un modelo crip-


tográfico
Los modelos criptográficos son aquellos que formalizan el proceso de encrip-
tación y desencriptación, por ello es conveniente fijar la notación estandar y el
contexto en el cual estan basados los criptosistemas.

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.

3. Fred: Es un falsificador que intentará falsificar la firma de Alicia sobre


los mensajes que serán remitidos para Bob.

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.

5. Peggy y Victor: Son entidades que participan en el proceso de firmas


digitales. Peggy (the prover) debe convencer a Victor (the verifier) de su
identidad.

1.2.2. Escenario básico


1. Alfabeto: Es un conjunto finito de caracteres a partir del cual se cons-
truirán las palabras, de acuerdo con las respectivas reglas de la gramática
establecida.
Por convención el alfabeto se denota por Σ, y el conjunto de palabras de
un lenguaje se denota por Σ∗ .

Ejemplos:
Σ = {a, b, ..., z },
Σ = {0, 1, ..., 9 },
Σ = {0, 1}
12 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA

2. Espacio de mensajes: Esta formado por una cadena de caracteres ob-


tenidos a partir del alfabeto. Por notación el espacio de mensajes se re-
presenta por M. Un elemento, m, de este espacio es llamado mensaje en
texto plano2 .
Ejemplo:
Considerando el alfabeto Σ = {a, b, ..., z }, sea M el siguiente espacio
de mensajes: El curso álgebra universal para ciencia de la computación
esta destinado para alumnos de Informática de la Universidad Nacional
de Trujillo. Los profesores orientan el curso a la criptografı́a, por ser fun-
damental para todo estudiante de ciencia de la computación, pues el tema
de la seguridad de la información es muy importante. El alumno queda sa-
tisfecho con los temas estudiados, por ello afirman Profesor jarm estamos
en el salón de clases. Profesora tbn estamos en el laboratorio esperándola.
Los mensajes en texto plano considerado son:
- jarm estamos en el salón de clases
- tbn estamos en el laboratorio esperándola.

3. Espacio de mensajes cifrados: Este espacio esta formado por texto


cifrado, es decir por mensajes a los cuales se les ha aplicado algun método
de cifrado, donde la notación considerada es C. Un elemento, c, de este
espacio es llamado mensaje cifrado3 .
Ejemplo:
Los mensajes en texto plano del ejemplo anterior al ser cifrados serán los
siguientes mensajes:
86144 20709 263085 211472 210174 211472 20709 134438
246055 107536 26 191160 94013 20709

4. Espacio de claves: Es un conjunto finito, donde sus elementos son cla-


ves para encriptar, e, y desencriptar, d, respectivamente. El espacio de
claves se denota por K. Las claves son construidas mediante algoritmos
generadores de claves.
Formalmente las claves se pueden expresar como funciones matematicas:
- Función encriptadora : Ee : M → C.
- Función desencriptadora: Dd : C → M .

5. Esquema criptográfico: Esta dado por las funciones para encriptar y


desencriptar de algun criptosistema, con la siguiente propiedad:
∀e ∈ K, ∃d ∈ K tal que Dd = Ee−1 , esto es Dd (Ee (m)) = m, ∀m ∈ M .

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

Figura 1.6: Criptosistema fragil.

En criptografı́a moderna las técnicas criptograficas se clasifican en dos gru-


pos, cada una de las cuales presentan métodos para encriptar, además ciertas
ventajas y desventajas. A continuación presentamos estos dos grupos.

1.2.3. Criptosistema simétrico


En este tipo de esquema, cada par (e,d) es computacionalmente ”fácil”de
determinar d a partir de e, asi como e a partir de d, esto es que e = d.

Figura 1.7: Criptosistema e = d.

La criptografı́a simétrica presenta tres clases:

1. Cifrado por caracteres: En este esquema, también llamado cifrado mo-


nográfico, cada carácter es cambiado mediante una sustitución. Conside-
rando que el alfabeto tiene 26 caracteres, entonces existen 26! posibles
14 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA

maneras para producir una transformación monográfica. En el presente


texto se estudian aquellas que estan basadas en la aritmética modular.
2. Cifrado por bloque: Es un esquema en el cual el mensaje en texto plano
se particiona en bloques de palabras de longitud fija sobre el alfabeto Σ,
para luego encriptar cada bloque en cierto tiempo.
3. Cifrado por flujo: Es un cifrado en el que se remite una palabra m =
m1 m2 . . ., usando un flujo de claves e1 e2 . . . en un texto cifrado c = c1 c2 . . ..
Además el descifrado se efectua usando la clave para desencriptar di , co-
rrespondiente a la clave encriptadora ei . Existe un criptosistema de clave
pública basada en el cifrado por flujo, es decir el conocido criptosistema
de Blum-Goldwasser.

1.2.4. Criptosistema asimétrico


En este criptosistema, también llamado de clave pública, se considera cual-
quier par (e,d) con la propiedad siguiente: Conocida una clave e que es compu-
tacionalmente inviable y dado un c ∈ C, entonces se desea encriptar m ∈ M
tal que Ee (m) = c. Esta propiedad significa que dado la clave para cifrar e, es
computacionalmente inviable obtener la clave de descifrado d.

Figura 1.8: Criptosistema e 6= d.

El siguiente cuadro muestra un resumen de los principales aportes en el


esquema de clave pública:
1.3. INVESTIGADORES QUE HAN APORTADO A LA CRIPTOGRAFÍA15

Figura 1.9: Principales aportes en criptosistema asimétrico.

En el capı́tulo 4 estudiaremos con mas detalle la criptografı́a simétrica y


asimétrica, es decir los principales métodos cifrado conocidos.

1.3. Investigadores que han aportado a la crip-


tografı́a
Consideramos, en la presente sección, rendir un homenaje a aquellas perso-
nas que con sus investigaciones han contribuido al desarrollo de esta área de
la ciencia de la computación. De acuerdo a lo establecido por Wikipedia, la
clasificación se hace considerando las etapas de desarrollo de la criptografı́a.

1.3.1. Antes del siglo XX


1. Charles Babbage: Matemático del siglo IXX

2. Leone Battista Alberti: Creador el método de sustitución polialfabeti-


ca, el cual es considerado como el primer diseño criptografico mecanico.

3. Julius Caesar: Polı́tico y general romano.


16 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA

4. Friedrich Kasiski: Publicó el primer ataque realizado al cifrado de Vi-


genere, y que actualmente es conocido como el Kasiski test.

5. Auguste Kerckhoffs: Hizo una contribución a los principios del cifrado.

6. Johannes Trithemius: Fué el primer investigador en describir tablas


que fuerón usados en la sustitución polialfabetica. Es considerado uno de
los pioneros de la estenografı́a.

1.3.2. Durante las guerras mundiales


1. Nigel de Grey: Jugo un rol importante en la desencriptación del telegrafo
de Zimmermann durante la primera guerra mundial.

2. Georges Painvin: Rompio el cifrado ADFGVX durante la primera gue-


rra mundial.

3. Marian Rejewski, Poland, Biuro Szyfrow: En 1932 solucionaron la


máquina enigma con plugboard, que fué el principal dispositivo de cifrado
usado por Alemania.

4. William F. Friedman: Introdujo métodos estadı́sticos en la criptografı́a.

5. John Joseph Rochefort: Contribuyó con el rompimiento del JN-25,


después del ataque al Pearl Harbor.

1.3.3. Creadores de algoritmos simétricos


1. Ross Anderson: Investigador de la Universidad de Cambridge y co-
inventor del cifrado de serpiente, con el Danes Lars Knudsen.

2. Paulo S.l. M. Barreto: Investigador de la Universidad de Sao Paulo,


que fué el co-inventor de la función hash Whirlpool.

3. Don Coppersmith: Co-inventor de los criptosistemas DES y MARS.

4. Joan Daemen: Investigador de origen belga quien es co-autor del cifrado


Rijndeal, el cual fué el Advanced Encryption Standard - AES. El otro
creador del Rijndeal es Vincent Rijmen.

5. Ronald L. Rivest: Investigador del MIT e inventor del RC ciphers series,


asi como el MD algorithm series.

6. Bruce Schneier: Inventor del Blowfish y co-inventor del Twofish.

7. Adi Shamir: De nacionalidad israeli, fué el inventor del secret sharing.

1.3.4. Creadores de algoritmos asimétricos


1. Leonard Adleman: Co-inventor del criptosistema RSA. Los otros crea-
dores fuerón Ronald L. Rivest y Adi Shamir.

2. David Chaum: Investigador del las firmas blind.


1.4. EJERCICIOS 17

3. Whitfield Diffie: Co-inventor del protocolo para el intercambio de claves


Diffie-Hellman. El otro co-inventor fué Martin Hellman.
4. Taher ElGamal: De nacionalidad egipcia, es el inventor del criptosistema
ElGamal, el cual esta basado en el problema del logaritmo discreto.
5. Shafi Goldwasser: Junto con Adi Shamir y Silvio Micali son los creadores
de la denominada zero-knowledge proofs.
6. Neal Koblitz: Creó en forma independiente la criptografı́a basada en
curvas elipticas. El otro creador, también independiente, fué Victor Miller.

7. Alfred Menezes: Co-inventor de la técnica para curvas elipticas MQV.


8. Michael Rabin: Es el creador del criptosistema del mismo nombre.

1.4. Ejercicios
18 CAPÍTULO 1. INTRODUCCIÓN A LA CRIPTOGRAFÍA
Capı́tulo 2

Algoritmos y Complejidad
computacional

En este capı́tulo se examinan los conceptos básicos de la teorı́a de la com-


plejidad computacional de los algoritmos. La utilidad de esta teorı́a esta en que
mediante ella es posible estimar el comportamiento computacional, teoricamente
hablando, del algoritmo en lo referido a la cantidad de operaciones realizadas1 ,
como el recurso memoria usado2 .
El capı́tulo empieza definiendo algoritmo para luego pasar a complejidad
computacional propiamente dicha, donde se comenta el análisis de algoritmos y
su formalización, además de las clases de problemas computacionales. Finaliza-
mos con la complejidad de los números enteros.

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.

Figura 2.1: Lugar de nacimiento de Al Khwarizmi.

Posteriormente se ha establecido que los algoritmos y la estructura de datos


forman el núcleo de la ciencia de la computación, pues ellos son los componentes
básicos de cualquier software. Por lo tanto, aprender algoritmos es importante
para quien desee desarrollar software de calidad.
Formalmente un algoritmo es una entidad matemática, el cual es indepen-
diente de un lenguaje de programación especı́fico, máquina o compilador; por
ello diseñar algoritmos, en algun sentido, es todo acerca de la teorı́a matemática
detras del diseño de buenos programas. La siguiente figura insinua el porque se
estudia el diseño de algoritmos.

Figura 2.2: Velocidad algoritmica.

De acuerdo con Dijkstra, un algoritmo corresponde a la descripción de un


patron de comportamiento, expresado en términos de un conjunto finito de ac-
ciones. El diccionario Houaiss de la lengua portuguesa define algoritmo como
un conjunto de reglas y procedimientos lógicos bien definidos, que conducen a
la solución de una problema en etapas. El diccionario Wester de la lengua ingle-
sa, afirma que un algoritmo es un procedimiento para solucionar un problema
matemático en una cantidad finita de pasos, el cual frecuentemente involucra la
2.2. COMPLEJIDAD COMPUTACIONAL 21

repetición de una operación. Los autores del libro Introduction to Algorithms


Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein, de-
finen algoritmo, informalmente, como aquel procedimiento computacional bien
definido que toma algun valor o un conjunto de valores, como su entrada; y
produce algun valor o conjunto de valores como su salida. Un algoritmo es pues,
una sucesión de pasos computacionales que transforman una entrada en una
salida.
Segun el problema que se tenga que solucionar, el disenãdor de algoritmos
tendrá que desidir que paradigma de algoritmo usar. Los paradigmas consi-
derados en ciencia de la computación son los siguientes: Dividir para vencer,
Programación dinámica, Algoritmos greedy y Algoritmos aproximados.

2.2. Complejidad computacional


Todo empezó con una máquina. En 1936, el matemático ingles Alan M. Tu-
ring desarrolló un modelo computacional teórico que lleva su nombre. Al igual
que los computadores que fueron desarrollados en los años 1940 y 1950, respec-
tivamente, la máquina de Turing también fué considerada un modelo compu-
tacional teórico.
Al poco tiempo del descubrimiento de la máquina de Turing, se descubrió que
su modelo básico falla en lo referido al conteo de la cantidad de tiempo o memoria
necesaria, para que un computador efectue su trabajo, es decir en la solución de
algun problema. La idea clave para medir el tiempo y espacio como una función,
denominada de complejidad, empezó a inicios de los años 1960 con Hartmanis
y Stearns. De este modo empezaba la complejidad computacional.
En los primeros dias de la complejidad, los investigadores intentaron crear
nuevas medidas para analizar los algoritmos. La primera noción de computación
eficiente fué la denominada clase de problemas que se ejecutan en tiempo po-
linomial, es decir la clase P. Este concepto posteriormente condujo a la clase
de problemas NP, en particular los NP-completos. Actualmente un problema
abierto es el tema de si P = NP. Existe un premio de un millón de dolares
americanos para quien sea capaz de demostrar al igualdad.

Figura 2.3: Alan M Turing.

El trabajo de Stephen Cook y Richard M. Karp, a inicios de los años 1970,


22 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL

mostró que una gran cantidad de problemas combinatorios y lógicos son NP-
completos.

Figura 2.4: S. Cook y R. Karp.

2.2.1. Análisis de algoritmos


El análisis de un algoritmo es para predecir los recursos que tal procedimien-
to requiere para obtener la solución respectiva. Los recursos son:

* Operaciones (complejidad de tiempo).

* Memoria (complejidad de espacio).

* Comunicación (complejidad de comunicación).

En el análisis de complejidad lo mas frecuente es la cantidad de operaciones que


hace un algoritmo durante su ejecución, es decir la complejidad de tiempo. Por
lo general, para un problema dado, se analizan diversos algoritmos candidatos
que solucionan el problema, de estos candidatos se selecciona el mas eficiente,
es decir que el análisis indica el candidato mas viable.
Analizar un algoritmo puede ser un descubrimiento, pues:

a. Como el comportamiento de un algoritmo puede ser diferente para ca-


da entrada, entonces es necesario resumir el comportamiento en fórmulas
facilmente entendibles.

b. Aunque generalmente se selecciona un solo modelo de máquina, es posible


enfrentarse a muchas opiniones, es decir cómo expresar nuestro análisis.

c. En el proceso de análisis se debe: Hallar un medio de expresión que sea


simple para escribir y manipular, mostrar las caracterı́sticas importantes
de los recursos que el algoritmo requiere, y suprimir detalles tediosos.

Para el análisis de algoritmos se requiere de conceptos matemáticos considerados


dentro de la matemática discreta, teorı́a de probabilidades, álgebra; asi como
cierta habilidad para identificar los términos mas significantes en una fórmula.
2.2. COMPLEJIDAD COMPUTACIONAL 23

2.2.2. Formalización del análisis de los algoritmos


Antes de analizar un algoritmo, lo primero que se debe tener en cuenta
es el modelo computacional donde funcionará el algoritmo, es cual incluya los
recursos que serán usados, además de los costos que implica su uso. En esta
subsección estudiaremos la dominación asintótica el cual es, teoricamente, la
representación gráfica de un algoritmo en el plano, donde el eje de las abcisas
representa la cantidad de información que el algoritmo recibirá, y el eje de las
ordenadas denota la cantidad de operaciones que se emplearán para la solución
de cierto problema.

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.

Figura 2.5: Modelo computacional RAM.

En el modelo RAM, el procesador busca una instrucción o un dato de


la memoria, donde una única instrucción es ejecutada cada vez en forma
secuencial. Cada operación ejecutada por el procesador, significa hacer
cálculos aritméticos, lógicos y acceso a la memoria, es decir significa un
costo de tiempo. Además cada operación y dato guardado en la memo-
ria, significa un costo de espacio.
(A.2) Modelo PRAM: Este modelo PRAM (Parallel Random Access Machine)
esta orientado para trabajar con máquinas paralelas en forma de clusters
o supercomputadores.
24 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL

Figura 2.6: Modelos computacional PRAM.

B. Dominación y tipos de notaciones asintóticas


El análisis de un algoritmo cuenta con algunas operaciones elementales, don-
de la medida de costo o medida de complejidad indica el crecimiento asintótico
de la operación considerada.
Definición: Una función f(n) domina asintóticamente a otra función g(n), si
existen las constantes c, n0 > 0 tal que, para n ≥ n0 se tiene |g(n)| ≤ c|f (n)|.
Tipos de notaciones asintóticas:
(a) Notación O3 : Dadas dos funciones f(n) y g(n), entonces se dice que g(n)
domina asintóticamente a f(n), sı́ existen constantes positivas c y n0 tal
que ∀n ≥ n0 , tenemos que 0 ≤ f (n) ≤ cg(n).
Por notación, f(n) = O(g(n)) indica que g(n) es el lı́mite superior. Cuando
la notación O se usa para expresar el tiempo de ejecución de un algoritmo
en el peor caso, entonces estaremos definiendo el lı́mite superior del tiempo
de ejecución de tal algoritmo para todas las entradas.

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

f (n) = θ(g(n)) ⇐⇒ f (n) = O(g(n)) y f (n) = Ω(g(n))

La importancia del estudio de las notaciones asintóticas esta en el hecho


de que permite comparar el comportamiento teorico, antes de implementar, de
los algoritmos; es decir que una vez obtenido la complejidad del algoritmo, el
resultado puede ser comparado con otros algoritmos, simplemente evalúando las
funciones de complejidad y dejando de lado las constantes de proporcionalidad.

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:

Figura 2.7: Comparación asintótica de los algoritmos A y B.

2.2.3. Clases de problemas


Los problemas intratables o difı́ciles son muy comunes en la naturaleza y en
las áreas del conocimiento. Por ello los problemas se clasifican fáciles y difı́ciles.
Para el primer caso estos problemas son resueltos por algorimos polinomiales, y
para el segundo caso los algoritmos de solución son exponenciales.
Ejemplos de algoritmos polinomiales, O(p(n)), donde p(n) es un polinomio,
tenemos los siguientes:
- Busca secuencial: O(n)
- Busca binaria: O(log n)
2.2. COMPLEJIDAD COMPUTACIONAL 27

- Ordenación por inserción, selección: O(n2 )


- Ordenación por Quicksort, ShellSort, mergesort: O(nlog n)
- Multiplicación de matrices: O(n3 ).
- etc.
Ejemplos de algoritmos exponenciales, O(cn ), c > 1 tenemos:
- Agente viajero: O(n!), donde n! ≤ nn = 2n log n.
- Problema de la mochila
- Problema clique,
- etc.
Teniendo en cuenta lo expresado anteriormente, existe una clasificación de los
problemas en dos tipos:
a) Clase P: Son aquellos problemas que pueden ser solucionados por al-
goritmos deterministas en tiempo polinomial, esto es que la clase P se
define como el conjunto de problemas de decisión concreto4 solucionables
en tiempo polinomial, es decir si existe un algoritmo que lo soluciona en
O(nk ).

Usando la teorı́a de los lenguajes formales, la clase de complejidad P


también se define por

P = {L ⊆ {0, 1}∗ : ∃ un algoritmo que decide L en tiempo polinomial}.

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.

Del punto de vista de los lenguajes, decir un lenguaje L ∈ N P si y sola-


mente existe un algoritmo de tiempo polinomial A, tal que
c
L = {w ∈ {0, 1}∗ : ∃ un certificado5 , |y| = O(|w| ) tq. A(w, y) = 1}

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.

Un problema B es NP-completo si se cumple que B ∈ NP y A ≤p B, ∀ A ∈


NP, respectivamente. Por lo tanto, con esta información podemos afirmar que
un problema es NP-completo, si se cumplen dos condiciones, dadas en 1972 por
Richard M. Karp, es decir:
4 Conjunto de instancias es el conjunto de palabras binarias.
5 Es una palabra escrito en binario.
28 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL

(1) Mostrar que B ∈ NP.

(2) Hallar un problema NP completo A, y probar que A ≤p B, esto es, descri-


bir la transformación f, mostrar que f puede ser transformado en tiempo
polinomial y mostrar que x ∈ A ⇔ f(x)∈ B.

Figura 2.8: Clases de problemas.

Existen muchos problemas NP-completos, que estan clasificados dentro de las


diversas áreas existentes en ciencia de la computación, tales como en geometrı́a
computacional, teorı́a de grafos, diseño de redes, base de datos, programación
matemática, lógica, autómatas y teorı́a de lenguajes, etc.
Algunos ejemplos para determinar la NP-completitud de ciertos problemas
NP son los siguientes:

- El problema de cubrimiento de vértices es NP-completo, pues el conocido


problema NP-completo llamado problema clique, se reduce en el cubri-
miento de vértices.

- El problema de ciclo hamiltoniano es NP-completo, pues el problema de


cubrimiento de vértices se reduce en el.

- El problema del agente viajero es NP-completo.

2.2.4. Complejidad computacional con enteros


Antes que sean inventados los computadores, los investigadores en matemáti-
cas hacian sus cálculos a mano o con dispositivos mecánicos. De una u otra
manera ellos solamente podian trabajar con números enteros pequeños, pues
trabajar con números grandes implicaba emplear mas tiempo con posibilidades
de cometer errores.
Cuando se tiene un problema y para tal problema se le ha diseñado un
algoritmo, entonces una preocupación inmediata es querer conocer la cantidad
de tiempo que tal algoritmo emplea para hallar la solución, en particular para un
problema de tipo numérico. Para tal efecto la medida a usar se dá en terminos
de operaciones bit.
Una operación bit significa la adición, sustracción o multiplicación de dos
dı́gitos binarios; asi como la división de un entero de dos bits por otro de un
bit. Por tanto la complejidad computacional de un algoritmo esta dado por la
2.2. COMPLEJIDAD COMPUTACIONAL 29

cantidad de operaciones bit necesarias para que un procedimiento algoritmico


se ejecute.
Ejemplo:
Para efectuar una operación especı́fica sobre un número entero, se requiere
a lo mas n3 + 8n2 log n operaciones bit. Entonces como 8n2 log n < n3 , se puede
concluir que para ejecutar tal operación se necesitarán menos de 9n3 operacio-
nes bit, para cada entero n. Finalmente como la cantidad de operaciones bit
requeridas es siempre menor que la constante 9 veces n3 , se concluye que la
complejidad es O(n3 ) operaciones bit.
Ejemplo:
Sobre el conjunto de los números enteros positivos se cumple que n4 +2n3 +5
es O(n4 ), pues n4 + 2n3 + 5 ≤ n4 + 2n4 + 5n4 = 8n4 , para ∀n ∈ Z + .

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

ab = (22n + 2n )A1 B1 + 2n (A1 − A0 )(B0 − B1 ) + (2n + 1)A0 B0 (2.1)

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 )

+(22 + 1)(01)2 (11)2

= (24 + 22 )(110)2 + 22 (10)2 (01)2 + (22 + 1)(11)2

= (1100000)2 + (11000)2 + (1000)2 + (1100)2 + (11)2

= (10001111)2
30 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL

A continuación formalizamos la estimación de la cantidad de operaciones bit


necesarias para multiplicar dos enteros de n-bits. Si M (n) denota la cantidad
de operaciones bit necesarias para multiplicar dos enteros de n-bits, entonces
desde la identidad (2.1) hallamos que

M (2n) ≤ 3M (n) + Cn, (2.2)

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

M (2k ) ≤ c(3k − 2k ), (2.3)

donde c = max{M (2), C}.


En efecto

1. Si k = 1, entonces M (2) ≤ c(31 − 21 ) = c = max{M (2), C}.


2. Por hipótesis inductiva, asumir que M (2k ) ≤ c(3k − 2k ) es válido.
3. Probaremos para k + 1. En efecto, por (2.2) tenemos:
M (2k+1 ) ≤ 3M (2k ) + C2k
≤ 3c(3k − 2k ) + C2k
≤ c3k+1 − c × 3 × 2k + C2k
≤ c(3k+1 − 2k+1 ).

Usando el resultado dado por (2.3) se puede demostrar el siguiente teorema:


Teorema 2.2: La multiplicación de dos enteros de n-bits puede ser ejecutado
en O(nlog2 3 ).
Prueba
De (2.3) tenemos:
M (n) = M (2log2 n ) ≤ M (2[log2 n]+1 )
≤ c(3[log2 n]+1 − 2[log2 n]+1 )
≤ 3c × 3[log2 n]
≤ 3c × 3log2 n = 3cnlog2 3 , pues 3log2 n = nlog2 3 .

Un caso particular el teorema anterior esta dado por el siguiente resultado:


Teorema 2.3: Sea ² > 0 un entero positivo, entonces existe un algoritmo para
multiplicar dos números enteros de n-bits usando O(n1+² ) operaciones bit.

Teorema 2.4: Existe un algoritmo para multiplicar dos enteros de n-bits usando
O(nlog2 n log2 log2 n) operaciones bit.

NOTA: log2 3 ≈ 1,585 < 2.


² = log2 3 − 1 ≈ 0,585

Un algoritmo convencional realiza la división de un número entero de 2n-bits


por otro de n-bits, usando O(n2 ) operaciones bits. Sin embargo la cantidad de
2.3. EJERCICIOS 31

operaciones bit necesarias para la división entera puede ser relacionado con la
cantidad de operaciones bits necesarias para la multiplicación entera.

Teorema 2.5: Existe un algoritmo para hallar el cociente q = a/b, cuando


se divide un número entero a de 2n-bit con otro entero b, que usa O(M(n))
operaciones bit, donde M(n) es la cantidad de operaciones bit necesarias para
multiplicar dos enteros de n-bits.

2.3. Ejercicios
32 CAPÍTULO 2. ALGORITMOS Y COMPLEJIDAD COMPUTACIONAL
Capı́tulo 3

Teorı́a de números

Desde tiempos remotos el hombre ha estado interesado en guardar sus des-


cubrimientos en hojas de papiros (en Egipto), hojas de papel o libros fisicamente
existentes. En tiempos actuales se tiene otro medio para guardar la información,
es decir, existe un computador en el cual la información es guardada en forma
digital. Tal información cuando es colocada en la Internet es accesada por di-
versas personas a las cuales se les da la facilidad para obtenerla; sin embargo
también existe información reservada para cierto grupo de personas, las cuales
solamente ellas deben conocerla; es decir se desea asegurar la información, en
otras palabras encriptarla. La encriptación va mas alla, pues es posible hacer
transacciones comerciales con movimiento de dinero via Internet.
La teorı́a de números contribuye mucho para la creación de los métodos de
encriptación, donde los números mas importantes son los enteros positivos, en
especial los números primos1 .

3.1. Qué es la teorı́a de números


Es la rama de la matemática que en general esta relacionada con el estudio
de las propiedades de los números y en particular con el estudio de los números
enteros. De acuerdo con los métodos usados esta teorı́a se subdivide en diversos
campos de estudio los cuales se clasifican en:
1 Teorı́a de números elemental: En esta teorı́a los números enteros son
estudiados sin el uso de las técnicas de otros campos de la matemática. Los
temas de estudio son la divisibilidad, el algoritmo de Euclides para hallar
el máximo común divisor, factorización de números enteros en números
primos, congruencia (concepto creado por Carls F. Gauss2 ), etc.

1 Estudiado hace 2500 años por los griegos.


2 (1777 - 1855) Llamado el principe de la matemática, con su libro Disquisitiones Arith-
meticae escrito en 1801 establece los fundamentos de la teorı́a de números moderna. Gauss
también trabajo en geometrı́a, álgebra, , análisis, astronomia y fı́sica matemática, pero su
preferencia era la teorı́a de números.

33
34 CAPÍTULO 3. TEORÍA DE NÚMEROS

Figura 3.1: Carl F. Gauss.

2 Teorı́a de números analı́tica: Para el estudio de los números enteros,


esta teorı́a emplea toda la máquinaria del cálculo y del análisis complejo.
Ejemplos tenemos el teorema del número primo y la hipótesis del Riemann
(actualmente es un problema abierto)

Figura 3.2: Riemann.

3 Teorı́a de números álgebraica: En esta teorı́a el concepto de número se


expande a los números algebraicos los cuales son raices de polinomios con
coeficientes racionales. Estos dominios contienen elementos que analogos
a los enteros, llamados enteros algebraicos.

4 Teorı́a de números geométrica: Tradicionalmente llamado geome-


trı́a de números, es aquella que incorpora todas las formas de geometrı́a.
Todo empezo con el teorema de Minkowski acerca de los puntos latice en
conjuntos convexos.
5 Teorı́a de números combinatoria: Estudia los denominados proble-
mas número-teóricos, los cuales involucran ideas combinatorias en sus for-
mulaciones o soluciones. El fundador de esta rama de la teorı́a de números
fue Paul Erdos3 . En este campo los métodos algebraicos y analı́ticos son
robustos.

3 (1913 - 1996) Matemático de nacionalidad hungara, muy famoso por sus elegantes demos-

traciones en problemas matematicos aparentemente no solubles, especialmente en teorı́a de


números. Fundo la matemática discreta y es considerado como uno de los matemáticos mas
productivos, mas 1500 papers producidos.
3.2. DIVISIBILIDAD 35

Figura 3.3: Paul Erdos.

6 Teorı́a de números computacional: Estudia los algoritmos mas rele-


vantes, tales como el algoritmo para testar la primalidad de los números
primos y la factorización de números enteros los mismos que son aplicados
en criptografia.

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;

Propiedad 1: ∀a, b, c, m, n ∈ Z se cumple

(a) a|a.

(b) Si a|b y b|c, entonces a|c.

(c) Si a|b y a|c, entonces a|(bx + cy), ∀x, y ∈ Z.

(d) Si a|b y b|a, entonces a = +b ó a = −b.

(e) Si a|b y b|c, entonces a|c.

(f) Si c|a y c|b, entonces c|(ma + nb.

Ejemplo
Si 11|66 y 66|198, entonces 11|198.

Definición (división): Si a y b ∈ Z, con b ≥ 1, entonces la división ordinaria de


a por b esta dada por la siguiente expresión:

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.

3.3. MCD, MCM y Números primos


En esta sección empezamos a estudiar el máximo comun divisor y mı́nimo
comun múltiplo de números enteros positivos, además del concepto central de la
teorı́a de números, es decir los números primos. Estos números descubiertos por
los antiguos griegos poseen propiedades importantes e interesantes que a pesar
de su antiguedad aun en nuestros dias continuan siendo investigados. Tal vez el
interes por continuar con esta investigación se debe al teorema que formuló el
matemático griego Euclides4 en su obra los Elementos, donde se demuestra que
existen infinitos números primos. La aplicación de estos números esta en los
criptosistemas.

Figura 3.4: Euclides.

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

3.3.1. Máximo común divisor (mcd)


El mcd de los números enteros a y b, esta dado por el número entero d ∈ Z + ,
si se cumple lo siguiente:

(a) d es un divisor común de a y b.

(b) Si c|a y c|b, entonces c|d.

Ejemplos

- mcd(12,15) = 15.

- mcd(0, 100) = 100.

Propiedad 3

(1) Si a y b ∈ Z + , entonces mcd(2a − 1, 2b − 1)= 2mcd(a,b) − 1

(2) Si a, b y c ∈ Z; a|bc y mcd (a, b)=1, entonces a|c.

(3) Si a, b y c ∈ Z; a|c, b|c y mcd(a, b)=1, entonces ab|c.

(4) Si a1 , . . . , an ∈ Z, no todos ceros, entonces el

mcd(a1 , . . . , an ) = mcd(a1 , . . . , an−2 , mcd(an−1 , an )). (3.1)

(5) Si a, b ∈ Z + , con a > b, entonces mcd(a, b) = mcd (b, a mod b).

Ejemplos

- Sean a = 3, b = 5. Entonces el mcd(23 − 1, 25 − 1) = 2mcd(3,5) − 1.

- mcd(18, 24, 36) = mcd(18, mcd(24,36)) = mcd(18, 12) = 6.

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)

Como todo algoritmo, en ciencia de la computación, conocer su complejidad


computacional es de vital importancia pues es necesario conocer el recurso que
38 CAPÍTULO 3. TEORÍA DE NÚMEROS

se empleará. A continuación se presenta un teorema debido a Gabriel Lamé5 .


Este teorema dá una estimación de la cantidad de divisiones que son necesarias
para hallar el mcd usando el algoritmo de Euclides.

Teorema 3.1: La cantidad de divisiones necesarias para hallar el mcd de dos


números enteros positivos usando el algoritmo de Euclides, no excede cinco veces
el número de dı́gitos decimales en el menor de los dos números enteros.

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−2 = rn−1 qn−1 + rn , 0 ≤ rn < rn−1

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−1 ≥ 2rn ≥ 2f2 = f3

rn−2 ≥ rn−1 + rn ≥ f3 + f2 = f4

rn−3 ≥ rn−2 + rn−1 ≥ f4 + f3 = f5


..
.

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

elasticidad e invento las coordenadas curvilineas. Hizo diversos descubrimientos en teorı́a de


números, incluyendo la estimación de la cantidad de pasos empleados por el algoritmo de
Euclides. Carl F. Gauss consideró a Lame como el matemático frances mas famoso de su
época.
3.3. MCD, MCM Y NÚMEROS PRIMOS 39

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. ♣

El siguiente resultado es una consecuencia del teorema de Lamé e informa


que el algoritmo de Euclides es eficiente:
Corolario 3.2: El mcd de dos números positivos a y b, on a > b, se encuentra
usando O((log2 a)3 ) operaciones bit.

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 ).

El algoritmo de Euclides presenta una variación denominada algoritmo de


Euclides extendido, el cual presentamos a continuación:

Algoritmo de Euclides Extendido


Es un método sistemático que sirve para hallar el mcd de dos números enteros
positivos, el cual es expresado como la combinación lineal de dos números enteros
x e y, es decir d = ax + by.

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

3.3.2. Mı́nimo común múltiplo (mcm)


El mcm de dos números enteros a y b esta dado por un el entero d ∈ Z + , si
se cumple lo siguiente:

(a) a|d y b|d.

(b) Si a|c y b|c, entonces d|c.

Ejemplos

- mcm(12,15) = 60.

- mcm(2, 100) = 100.

Propiedad 4

(1) Si a y b ∈ Z + , entonces mcm(a, b)= a × b/mcd(a, b)

(2) Si a1 , . . . , an ∈ Z, no todos ceros, entonces el

mcm(a1 , . . . , nn−1 , an ) = mcm(mcm(a1 , . . . , an−1 ), an ). (3.7)

Ejemplos

- 2; 5; 13; 101; 163, etc.

Ejemplos

- Sean a = 12, b = 15. Entonces el mcm(12, 15) = 12 × 15/mcd(12, 15) =


180/3 = 60.

- mcm(0, 100) = 0 × 100/mcd(0, 100) = 0.

- mcm(18, 24, 36) = mcm(mcm(18, 24),36) = mcm(72, 36) = 72.

3.3.3. Números primos


Un número primo es un entero positivo mayor que 1 que tiene dos divisores
enteros positivos, esto es que los divisores son el número mismo y la unidad.
Ejemplos
2; 5; 13; 101; 163, etc.
Un número entero positivo mayor que 1 que no es primo, es llamado número
compuesto.
Ejemplos

- 4 = 2 × 2;

- 111 = 3 × 37;

- 1001 = 7 × 11 × 13.
3.3. MCD, MCM Y NÚMEROS PRIMOS 41

A continuación presentamos dos resultados los cuales establecen que existen


infinitos números primos.

Lema 3.3: ∀1 6= a ∈ Z + tiene un divisor primo.

Teorema 3.4: Existen infinitamente muchos números primos.

Demostración
Supongamos que existe un cantidad finita de números primos
p1 , p2 , . . . , pn , donde n ∈ Z +

Sea Qn = p1 p2 . . . pn + 1 un entero obtenido multiplicando los n números primos


mas 1. Entonces por el lema 3.3, Q tiene al menos un divisor primo q.
Mostraremos por contradicción que q no es uno de los números primos dados
en pi , i = 1, 2, . . . , n.
En efecto
Si q = pj para algun número entero j con 1 ≤ j ≤ n, entonces Qn −
p1 p2 . . . pn = 1, pues q divide a ambos términos de esta ecuación. Por la pro-
piedad 1-f tenemos que q|1 lo cual es imposible pues los primos no dividen a
1. Por lo tanto q no es un número primo dado. Esta contradicción asegura la
existencia de infinitos números primos. ♣

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.

En siguiente resultado es de vital importancia, pues es útil para hallar todos


los números primos menores o iguales que un número entero positivo n. El
teorema origina el procedimiento llamado Sieve de Eratosthenes, cuyo creador
fué el matemático de la antigua grecia, llamado Eratosthenes6 .

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

en Atenas. Escribio sobre matemáticas, geografı́a, astronomı́a, historia, filosofı́a y literatura.


42 CAPÍTULO 3. TEORÍA DE NÚMEROS

- Múltiplos mayores de 2, son marcados con un cı́rculo rojo:

- Múltiplos mayores de 3, son marcados con un cı́rculo azul:

- Múltiplos mayores de 5, son marcados con un cı́rculo azul oscuro:

- Múltiplos mayores de 7, son marcados con un cı́rculo futzia:


3.3. MCD, MCM Y NÚMEROS PRIMOS 43

Finalmente, todos los números no marcados, distintos de 1, serán los números


primos buscados.

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.

Cómo estar seguro que un número de muchos dı́gitos es primo ?. Como


comentado anteriormente, esto se consigue
√ con las trial divisions del número n
por los primos que no excedan a la n. Si n no es divisible por cualquiera de
tales primos, entonces n será primo asi mismo. En consecuencia, una vez que se
ha determinado que n no es divisible por cualquier otro primo sin exceder su raı́z
cuadrada, entonces habremos demostrado que n es primo. Esta demostración es
llamada certificate of primality.

Desafortunadamente el uso de la trial division para producir un certificado


de primalidad es bastante ineficiente, en especial cuando el número n es grande,
es decir que usando el teorema del número primo es posible estimar la cantidad
de operaciones bit necesarios para mostrar que n es número primo por trial
divisions.

El teorema afirma que existe aproximadamente


√ √
n 2 n
√ = (3.8)
log n log n

de números primos que no exceden a n. Computacionalmente dividir n por
un entero m significa hacer O(log2 n × log2 m) operaciones bit. Por lo tanto, la
cantidad de operaciones bit necesarias para mostrar que n es número primo es
al menos µ √ ¶
2 n √
(c log2 n) = c n (3.9)
log n
donde log2 m se desprecia, pues es al menos 1.
44 CAPÍTULO 3. TEORÍA DE NÚMEROS

Nuevamente este método, para mostrar que n es número primo, es bien


ineficiente,
√ pues es necesario no solamente conocer todos los primos menores
que
√ n, sino que además es necesario hacer al menos una constante múltiple de
n operaciones bit.

Observación: Sabemos que un número entero, en un computador, es transfor-


mado en binario. Entonces la complejidad computacional de los algoritmos para
determinar cuando un entero es primo, se medirá en terminos de la cantidad de
dı́gitos binarios que tal número tiene. Por lo tanto, un número entero positivo
n, tendrá log2 n + 1 dı́gitos binarios. En consecuencia la notación asintótica O
estimará la complejidad de un algoritmo en términos de la cantidad de dı́gitos
binarios que tiene el número entero n, es decir en términos de log2 n.

Finalmente, notamos que el algoritmo usando la Trial division, usado para


determinar cuando n es un número primo, es exponencial en términos de la
n
cantidad de dı́gitos binarios de n ó en términos de log2 n, pues n = 2log2 2 . Esta
complejidad exponencial hace que el algoritmo sea inviable de ser usado.

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.

Figura 3.5: M. Agrawal, N. Kayal y N. Saxena.

Teorema (fundamental de la aritmética) 3.6: Todo 2 ≤ n ∈ Z se puede


factorizar y expresar como el producto de sus potencias primas.

n = pe11 pe22 . . . pekk , pi 6= pj , ei ∈ Z + (3.10)


3.4. CONGRUENCIA 45

Propiedad 5

(1) Si a = pe11 pe22 . . . pekk , y b = pf11 pf22 . . . pfkk , donde ei ≥ 0 y fi ≥ 0. Entonces


el
min{e1 ,f1 } min{e2 ,f2 } min{ek ,fk }
mcd(a, b) = p1 p2 . . . pk (3.11)
max{e1 ,f1 } max{e2 ,f2 } max{ek ,fk }
mcm(a, b) = p1 p2 . . . pk (3.12)

(2) Sean a, b ∈ Z. Estos enteros son llamados relativamente primos o copri-


mos, sı́ el mcd(a,b) = 1.

Ejemplos
mcd(27 33 54 72 113 173 , 24 35 52 72 112 133 ) = 24 33 52 72 112

mcm(27 33 54 72 113 173 , 24 35 52 72 112 133 ) = 27 35 54 72 113 133 173

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:

Definición (congruencia): Sean n ∈ Z + un número entero positivo, sean además


los enteros a, b ∈ Z. entonces a es congruente con b modulo n, sı́ n divide a
(a − b), es decir
a ≡ b(mod n) (3.13)

Ejemplos
22 ≡ 4(mod 9), pues 9|(22 − 4)

200 ≡ 2(mod 9), pues 9|(200 − 2)

13 no es conguente con 2 modulo 9.

Teorema 3.7: Sean a, b dos números enteros, entonces a ≡ b(mod n) si y sola-


mente existe un k ∈ Z tal que a = b + kn.

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.

(←) Si existe un k ∈ Z, con a = b + kn, entonces kn = a − b. Por lo tanto,


n|(a − b) y en consecuencia a ≡ b(mod n).
46 CAPÍTULO 3. TEORÍA DE NÚMEROS

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:

(1) a ≡ b(mod n) si y solamente a y b tienen el mismo residuo cuando se los


divide por n.

(2) Si a ≡ a1 (mod n) y b ≡ b1 (mod n), entonces son válidos las siguientes


afirmaciones: a + b ≡ a1 + b1 (mod n) y a × b ≡ a1 × b1 (mod n)

Teorema 3.8
Para todo a, b, c ∈ Z se cumple lo siguiente:

(1) a ≡ a(mod ).

(2) Si a ≡ b(mod n), entonces b ≡ a(mod n).

(3) Si a, b, c son números enteros con a ≡ b(mod n) y b ≡ c(mod n), entonces


a ≡ c(mod n)

Por el teorema 3.8, vemos que el conjunto de enteros se divide en n conjuntos


diferentes, llamados clase de congruencia módulo n. Cada conjunto contiene
enteros los cuales son mutuamente congruentes módulo n.

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

Teorema 3.10: Sean a, b, c y n números enteros, con n > 0 tal que si


mcd(c, n) = d y a × c ≡ b × c(mod n), entonces a ≡ b(mod nd ).
Demostración
Se deja para el lector.

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 ).

Corolario 3.11: Sean a, b, c y n números enteros, tal que n > 0, mcd(c, n) = 1


y a × c ≡ b × c(mod n), entonces a ≡ b(mod n).
Demostración
Se deja para el lector.

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)

Teorema 3.13: Sean a, b, k y n números enteros, tal que k > 0, n > 0,


a ≡ b(mod n), entonces ak ≡ bk (mod n).
Demostración
Como a ≡ b(mod n), por definición se cumple n|(a − b). Además como

ak − bk = (a − b)(ak−1 + ak−2 b + . . . + abk−2 + bk−1 )

vemos que (a − b)|(ak − bk ). Por lo tanto n|(ak − bk ), esto es por definición se


tiene que ak ≡ bk (mod n). ♣

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

Teorema 3.14: Sean a, b números enteros, con n1 , n2 , . . . nk números enteros


positivos; sean además las relaciones a ≡ b(mod n1 ), a ≡ b(mod n2 ) . . . , a ≡
b(mod nk ). Entonces a ≡ b(mod [n1 , n2 , . . . , nk ]), donde [n1 , n2 , . . . , nk ] es el
mcm de n1 , n2 , . . . , nk .
Demostración
Como por hipótesis a ≡ b(mod n1 ), a ≡ b(mod n2 ) . . . , a ≡ b(mod nk ),
entonces por definición n1 |(a − b), n2 |(a − b), . . ., nk |(a − b). Por tanto se cumple

[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 ]). ♣

Corolario 3.15: Sean a, b números enteros, con n1 , n2 , . . . nk números ente-


ros positivos donde cada par de ellos son primos relativos; sean además las
relaciones a ≡ b(mod n1 ), a ≡ b(mod n2 ) . . . , a ≡ b(mod nk ). Entonces a ≡
b(mod n1 n2 . . . nk )
Demostración
Se deja para el lector.

3.5. Enteros modulo n: Zn


Este conjunto especial de números enteros, se define como el conjunto de
enteros dado por {0, 1, . . . , n − 1}. Como en todo conjunto, en los Zn también
se pueden efectuar operaciones tales como adición, sustracción y multiplicación
modulo n. Su importancia está en que es muy usado en los criptosistemas crip-
tográficos.

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).

(3) Inverso multiplicativo


Dados los números enteros a y n > 0, el inverso multiplicativo de a modulo
n esta dado por el número entero y ∈ Zn , tal que a × y ≡ 1(mod n).

Es importante tener en cuenta que si y existe, entonces es único, y a es


llamado invertible. Por notación, el inverso de a se denota por a−1 .

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.

Algoritmo para el inverso multiplicativo

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.

Podemos notar que la división modular es posible, solamente si b es invertible


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 .

Algoritmo para exponenciación

Entrada: a ∈ Zn , k ∈ Z tal que 0 ≤ k < n,


con una representación binaria.
Salida : ak mod n
b ← 1;
SI (k = 0)
retornar (b)
A ← a;
SI (k0 = 1)
b ← a;
PARA (i = 1 : t)
A ← A2 mod n;
SI (ki = 1)
b ← Ab mod n;
FIN PARA;
retornar (b)

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 .

3.5.2. Grupo multiplicativo


Dado un número entero n > 0, el grupo multiplicativo de Zn esta dado por:

Zn∗ = {a ∈ Zn /mcd(a, n) = 1} (3.14)

Los siguientes resultados nos ayudan a entender mejor el grupo multiplicativo.

- Si n es un número primo, entonces Zn∗ = {a ∈ Zn /1 ≤ a ≤ n − 1}.

- 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

3.6. Función de Euler φ


Esta función tiene la propiedad de que su valor en un número entero n, esta
dado por el producto de los valores de la función de Euler φ en las potencias
primas que ocurren en la factorización de n. Una función con esta propiedad es
llamado multiplicativo.

A continuación se presentan dos definiciones muy importantes para la de-


mostración de los teoremas que también presentamos.
Definición (Función aritmética): Sea n ∈ Z + . Una función aritmética es aque-
lla función que esta definida para todo número entero positivo.

Definición (Función multiplicativa): Sean m, n números enteros positivos re-


lativamente primos. Una función aritmética f es llamada multiplicativa, si se
cumple f (mn) = f (m)f (n).
f es completamente multiplicativa, si f (mn) = f (m)f (n), ∀m, n ∈ Z + .

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).

Teorema 3.16: Si f es una función multiplicativa y si además n = pa1 1 pa2 2 . . . pas s


es la factorización prima del entero positivo n, entonces

f (n) = f (pa1 1 )f (pa2 2 ) . . . f (pas s )

Teorema 3.17: Sea p un número primo, entonces φ(p) = p − 1. Además, si


p ∈ Z + con φ(p) = p − 1, entonces p es primo.

Teorema 3.18: Sea p un número primo y a ∈ Z + , entonces φ(pa ) = pa − pa−1 .

Ejemplo
Sea p = 5 y a = 3, entonces φ(53 ) = 53 − 53−1 = 100.

Teorema 3.19: Sean m y n números enteros positivos relativamente primos,


entonces φ(mn) = φ(m)φ(n).

Ejemplo
Sea m = 5 y n = 3, entonces φ(5 × 3) = φ(5) × φ(3)
= (5 − 1) × (3 − 1)
=8

Teorema 3.20: Sean ai ∈ Z + , pj números primos,donde i, j = 1 . . . k, n =


pa1 1 pa2 2 . . . pakk . Entonces
1 1 1
φ(n) = n(1 − p1 )(1 − p2 ) . . . (1 − pk )
52 CAPÍTULO 3. TEORÍA DE NÚMEROS

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 )

= pa1 1 pa2 2 . . . pakk (1 − 1


p1 )(1 − 1
p2 ) . . . (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

Teorema 3.21: Sea 2 < n ∈ Z + , entonces φ(n) es par.

Un criptosistema asimétrico es seguro si esta basado en la intratabilidad7 de


ciertos problemas computacionales, tales como los problemas de la factorización
entera, la raı́z cuadrada modulo n, etc. En la siguiente sección estudiamos estos
problemas.

3.7. Problema de factorización entera


Por el teorema fundamental de la aritmética se sabe que cada número entero
positivo puede ser escrito como el producto de números primos. En la presente
sección nos centramos en este problema comentando los tipos de factorización los
cuales son importantes para la criptografı́a, pues es la base para la seguridad de
los criptosistemas RSA y de Rabin. El problema se establece del modo siguiente:
Dado un número entero n ∈ Z + , el problema es hallar la factorización de n
es factores primos, es decir
n = pe11 pe22 . . . pekk , con pi 6= pj , ∀i 6= j, ei ≥ 1

El problema de decidir cuando un número entero es compuesto o es primo, en


general es mas fácil que el problema de factorizar, por ello antes de factorizar
un número es mejor primero testar para comprobar si tal número es o no es
compuesto. La factorización no trivial de n es de la forma n = ab, donde 1 <
a < n y 1 < b < n, con a y b no necesariamente números primos. Si el valor de
n es grande, entonces es necesario contar con algoritmos que faciliten el trabajo
en dos etapas, es decir que primero se obtengan los factores a y b y luego testar
la primalidad de tales factores.
7 No se conocen las pruebas de sus complejidades computacionales, solamente se conocen

sus lı́mites inferiores.


3.7. PROBLEMA DE FACTORIZACIÓN ENTERA 53

De acuerdo a su comportamiento computacional, la literatura reporta diver-


sos algoritmos los cuales son clasificados en dos tipos a seguir:

3.7.1. Factorización de propósito especial


En este tipo de factorización el tiempo de ejecución de los algoritmos depen-
den de las propiedades de los factores de n. Los algoritmos conocidos son:

1. Algoritmo de división trial.

2. Algoritmo de Rho Pollard

3. Algoritmo de (p − 1) Pollard.

4. Algoritmo de curva elı́ptica.

El algoritmo de Rho Pollard es utilizado para hallar factores pequeños de cierto


número compuesto.
En efecto
Entrada: Un número entero n que no sea una potencia prima.
Salida : Factor no trivial d de n
a ← 2;
b ← 2;
PARA (i = 1, 2, . . .);
a ← a2 + 1 mod n;
b ← b2 + 1 mod n;
b ← b2 + 1 mod n;
d ← mcd(a − b, n);
SI (1 < d < n)
Retornar d;
SI (d = n)
Retornar Sin exito;
FIN PARA;

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.

3.7.2. Factorización de propósito general


En este tipo de factorización el tiempo de ejecución de los algoritmos depen-
den del tamaño de n.
54 CAPÍTULO 3. TEORÍA DE NÚMEROS

1. Algoritmo de quadratic sieve.


2. Algoritmo de number field sieve.
El método descrito mediante el algoritmo de Quadratic sieve creado por Carl
Pomerance en 1981, hizo posible por primera vez factorar números de mas cien
dı́gitos. Tuvo gran suceso cuando factorizó un entero de 129 dı́gitos, conocido
como RSA-129 cuya factorización fué considerado como un descubrimiento por
los creadores del RSA.

El algoritmo Quadratic sieve sigue los siguientes pasos:


Entrada: Un número entero compuesto n que
no sea una potencia prima.
Salida : Factor no trivial d.
Seleccionar el factor base {p1 , p2 , . . . , pt }, donde p1 = −1,
pj , j ≥ 2 es el j − 1 ésimo primo p, para el cual n es un
residuo cuadrático
√ modulo p;
Hallar m = b nc;
i ← 1;
MIENTRAS (i ≤ t + 1);
Hallar b = q(x) = (x + m)2 − n; //x = 0, ±1, ±2, . . .
Testar cuando b es pt -suave. Si no lo es, escoger nuevo x
e ir al paso anterior;
SI (b es bt -suave)
ai ← (x + m);
bi ← b;
vi ← (vi1 , vi2 , . . . , vit ), donde vij = eij mod 2, 1 ≤ j ≤ t;
FIN SI
i ← i + 1;
FIN MIENTRAS P
En Z2 hallar Qφ 6= T ⊆ {1, 2, . . . , t + 1} tal que i∈T vi = 0;
Hallar x = i∈T ai mod n;
PARA (j,P1 ≤ j ≤ t)
eij
lj = i∈T 2 ;
FIN QPARA
t l
y = j=1 pjj mod n;
SI (x ≡ ±y(mod n) P
En Z2 hallar φ 6= T ⊆ {1, 2, . . . , t + 1} tal que i∈T vi = 0;
Ir a computar otro x;
FIN SI
d = mcd(x − y, n);
Retornar d.

Qt e
El valor de b es llamado suave si se cumple que b = j=1 pj ij .

En la actualidad el mejor algoritmo para factorizar números enteros con mas


de 115 dı́gitos es el number field sieve, que inicialmente fué propuesto por J.M.
Pollard y mejorado posteriormente por Buhler, Lenstra y Pomerance. Su exito
lo tuvo cuando factorizó el número entero de 160 dı́gitos en el año 2003, conocido
como RSA-160.
3.8. RESIDUO CUADRÁTICO 55

3.8. Residuo cuadrático


Definimos el concepto de residuo cuadrático y algunas propiedades de los
residuos cuadráticos. Además se estudia el sı́mbolo de Legendre el cual ayuda a
decidir cuando un número es residuo cuadrático de p, asi como sus propiedades.
Asi mismo presentamos el criterio de Euler que nos permitirá determinar cuando
a es un residuo cuadrático modulo p.

3.8.1. Residuo cuadrático y residuo no cuadrático


Sean p un número primo impar, a un número entero relativamente primo
con p. Entonces tenemos la siguiente definición:

Definición (residuo cuadrático): Si n es un número entero impar, entonces a es


un residuo cuadrático de n, sı́ el mcd(a, n) = 1 y la congruencia x2 ≡ a(mod n)
tiene solución.
Podemos deducir que si la congruencia x2 ≡ a(mod n) no tiene solución,
entonces se dice que a no es residuo cuadrático de n.

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)

Por lo tanto, los residuos cuadráticos son: 1, 3, 4, 5, 9 y los residuos no cuadráti-


cos son: 2, 6, 7, 8, 10.

Lema 3.22: Sean p un número primo impar, a un entero no divisible por p.


Entonces la expresión x2 ≡ a(mod p) no tiene soluciones o tiene exactamente
dos soluciones incongruentes modulo p.

Teorema 3.23: Sea p un número primo impar, entonces existen exactamente


p−1
2 residuos cuadráticos de p y p−1 2 residuos no cuadráticos de p entre los
números enteros 1, 2, . . . , p − 1.

Definición (Sı́mbolo de Legendre): Sean p un número primo e impar, a un


número entero no divisible por p. Entonces el sı́mbolo de Legendre8 ( ap ) se
8 (1752 - 1833) Fué profesor de la École Militaire en Paris desde 1775 hasta 1780. En sus

memorias publicadas en 1785 discute la ley de la reciprocidad cuadrática. Legendre escribió el


libro texto Eléments de géométrie el cual fué usado por mas de cien años.
56 CAPÍTULO 3. TEORÍA DE NÚMEROS

define por.
µ ¶ ½
a 1 si a es residuo cuadrático de p.
=
p −1 si a no es residuo cuadrático de p.

De acuerdo con la definición anterior podemos notar que es posible tener un


conjunto de residuos cuadráticos, denotado por Qp , cuyo valor es 1.

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

El siguiente criterio, llamado criterio de Euler, sirve para decidir cuando un


número entero es un residuo cuadrático de un número primo:

Teorema 3.24: Sean p un número entero primo e impar, a un entero positivo


no divisible por p. Entonces
³ ´
a (p−1)/2
p ≡a mod p

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.

El sı́mbolo de Jacobi9 es una generalización del sı́mbolo de Legendre y es útil


para evaluar los sı́mbolos de Legendre asi como en la definición de un tipo de
números llamados pseudoprimos.

El siguiente algoritmo permite obtener el sı́mbolo de Jacobi:


9 (1804 - 1851) Carl Jacobi fue un matemático aleman perteneciente a una familia de

banqueros. Estudió en la Universidade de Berlin obteniendo su doctorado en 1825. En 1826


estuvo en la Universidad de Konigsberg. Hizo numerosos aportes en teorı́a números, análisis,
geometrı́a y mecánica. Tuvo mucho interes por la historia de la matemática.
3.8. RESIDUO CUADRÁTICO 57

jacobi(a, n)

Entrada: Un número entero n ≥ 3.


Un número entero a tal que 0 ≤ a < n.
Salida : Sı́mbolo de Jacobi.
SI (a = 0)
Retornar 0
SI (a = 1)
Retornar 1
a = 2e a1 ; //a1 es un número impar.
SI (e es par)
s ← 1;
CASO CONTRARIO
SI ((n ≡ 1(mod 8)) k (n ≡ 7(mod 8)))
s ← 1;
CASO CONTRARIO
SI ((n ≡ 3(mod 8)) k (n ≡ 5(mod 8)))
s ← −1;
SI ((n ≡ 3(mod 4)) & & (a1 ≡ 3(mod 4)))
s ← −s;
n1 ← n mod a1 ;
SI (a1 = 1)
Retornar s;
CASO CONTRARIO
Retornar (s, jacobi(n1 , a1 )).

Por lo estudiado anteriormente tenemos que existen los dos conjuntos si-
guientes:

Jn = {a ∈ Zn∗ / a tiene su sı́mbolo de Jacobi igual a 1}

Qn = { Conjunto de los residuos cuadráticos modulo n}

Por lo tanto podemos considerar dos casos:



1. Si n = p es primo, entonces es fácil decidir
¡ a ¢ cuando a ∈ Zn es un residuo
cuadrático modulo n, pues a ∈ Qn ⇐⇒ n = 1.

2. Si n = pq, donde p y q son números


³ ´primos impares y distintos, entonces:
Si a ∈ Jn , entonces a ∈ Qn ⇐⇒ ap = 1.

Finalmente podemos afirmar que si la factorización de n es conocida, entonces


el problema de los residuos cuadráticos se soluciona calculando el sı́mbolo de
Legendre.

Teorema 3.26: Existe un algoritmo de tiempo polinomial que computa el sı́mbo-


lo de Jacobi ( na ), siempre que n es un número impar grande mayor que 1 y a es
relativamente primo con n.
58 CAPÍTULO 3. TEORÍA DE NÚMEROS

3.9. Problema de la raı́z cuadrada modulo n


El problema de la raı́z cuadrada modulo n es muy usado en criptografı́a,
donde para hallar la raı́z se debe tener en cuenta que un número entero n es
primo o tal vez compuesto. Si n es primo, entonces la raı́z cuadrada módulo n
es fácilmente obtenida, pero si n es un número compuesto entonces hallar tal
raı́z es difı́cil ya que sus factores primos son desconocidos.

3.9.1. Raı́z cuadrada cuando n un número primo


El siguiente algoritmo encuentra la raı́z cuadrada usando O((log p)4 ) opera-
ciones bit:
Entrada: Un número entero primo e impar p ∈ Z.
a ∈ Z tal que 1 ≤ a ≤ p − 1;
Salida : Dos raı́ces cuadradas de a módulo p.
Hallar el sı́mbolo de Legendre ( ap );
SI (( ap ) = −1)
Retornar: a no tiene raı́z cuadrada;
Terminar.
Seleccionar números enteros b, aleatoriamente, tal que
1 ≤ b ≤ p − 1, hasta hallar un ( pb ) = −1);
Hallar p − 1 = 2s × t, donde t es impar;
Usar el algoritmo de inverso multiplicativo para hallar a−1 mod p;
Usar el algoritmo de exponenciación para hallar c ← bt y
(t+1)
r ← a 2 mod p;
PARA (i = 1 : s − 1)
s−i−1
d = (r2 a−1 )2 mod p;
SI (d ≡ −1(mod p)
r ← rc mod p;
FIN SI;
c ← c2 mod p;
FIN PARA;
Retornar (r, −r);

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.

3.9.2. Raı́z cuadrada cuando n un número compuesto


Para este caso se considera a n = pq, donde p y q son dos números primos
distintos e impares.

Decidir cuando a ∈ Zn∗ es un residuo cuadrático modulo un número entero


compuesto n, se cree que es un problema dificil. Por ello se hace uso del sı́mbolo
3.9. PROBLEMA DE LA RAÍZ CUADRADA MODULO N 59

que Jacobi ( na ) = −1 para decidir que a no es un residuo cuadrático. Por otro


lado, si ( na ) = 1 entonces decidir si a es un residuo cuadrático es un problema.

El siguiente algoritmo, efectua O((log p)3 ) operaciones bit, permite hallar


raı́ces modulo n cuando se conocen los primos p y q, respectivamente:
Entrada: Un número entero n y sus factores p y q.
a ∈ Qn ;
Salida : Cuatro raı́ces cuadradas de a módulo n.
Hallar las raı́ces r y −r de a modulo p;
Hallar las raı́ces s y −s de a modulo q;
Usar algoritmo de Euclides para hallar c y d tal que cp+dq = 1;
x ← (rdq + scp)mod n;
y ← (rdq − scp)mod n;
Retornar (±x mod n, ±y mod n);
60 CAPÍTULO 3. TEORÍA DE NÚMEROS
Capı́tulo 4

Criptosistemas basados en
teorı́a de números

En esta sección estudiamos criptosistemas de tipo simétrico y asimético que


utilizan teorı́a de números. En el primer caso nos referimos al cifrado por carac-
teres y al cifrado por bloque y flujo. Además comentamos el Data Encryption
Standard mas conocido con DES. Finalmente estudiamos algunos criposistemas
asimétricos reportados por la literatura especializada.

4.1. Cifrado por clave simétrica


4.1.1. Cifrado por caracteres
En este tipo de cifrado se estudian sistemas basados en la transformación de
cada letra del mensaje en texto plano en una letra diferente (o posiblemente la
misma), para producir el texto cifrado. Los métodos son llamados cifrado por
carácter o monográfico, pues cada carácter es cambiado mediante una sustitu-
ción; para tal efecto usaremos la sustitución dada en la siguiente figura

Figura 4.1: Alfabeto y su equivalente numérico.

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.

(S.1) Cifrado del César


Tuvo su origen con el emperador romano Julio César1 .

1 La versión mas moderna fue en los años 1970.

61
62CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

Figura 4.2: Emperador romano Julio César.

El proceso empieza transformando las letras del alfabeto en números, por


ello considerando a P como el equivalente numérico de una letra en el texto
plano, y C como el equivalente de la correspondiente letra en el texto cifrado,
tenemos la siguiente expresión denominada transformación del César:
C ≡ P + 3(mod 26), 0 ≤ C ≤ 25 (4.1)
Aplicando sucesivamente (4.1) en la figura 4.1, obtenemos la figura 4.6 dada a
continuación:

Figura 4.3: Cifrado usando la transformación del César.

Notamos que ahora ya tenemos un texto cifrado expresado en letras. A con-


tinuación presentamos el proceso que se sigue para encriptar y desencriptar un
texto.

Encriptación

Entrada: Mensaje en texto plano m.


Salida : Mensaje cifrado c.
Dividir m en bloques de cinco caracteres;
Convertir cada bloque a su equivalente numérico;
Usar la transformación del César C ≡ P + 3(mod 26);
Reemplazar el resultado obtenido por la transformación
del César por su equivalente numérico;
retornar (Retornar el texto cifrado.)

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

- tbnes tamos enell abora torio esper andol a

- 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

- weqhv wdprv hqhoo derud wrulr hvshu dqgro d

Ejemplo
Sea el siguiente mensaje: jarm estamos en el salon de clases. Al aplicar
el algoritmo obtenemos lo siguiente:

- jarme stamo senel salon decla ses

- 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

- mduph vwdpr vhqho vdorq ghfod vhv

Ejemplo
El mensaje me gusta algebra universal, al ser encriptado por el algoritmo
reporta:

ph jxvwd dojheud xqlyhuvdo

Desencriptación

Entrada: Mensaje en texto cifrado c.


Salida : Mensaje plano m.
Convertir cada bloque a su equivalente numérico;
Usar la transformación del César C ≡ P − 3(mod 26);
Cambiar los números obtenidos por los equivalentes en letras;
Concatenar los caracteres obtenidos;
retornar (Retornar el texto plano.)

Ejemplo
Sea el siguiente mensaje: mduphvwdprvhqhovdorqghfodvhv. Al aplicar el
algoritmo obtenemos lo siguiente:

- mduph vwdpr vhqho vdorq ghfod vhv


64CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

- 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

- jarme stamo senel salon decla ses


- jarm estamos en el salon de clases

(S.2) Transformación afin

Una transformación en general dada por

C ≡ aP + b(mod 26), 0 ≤ C ≤ 25 (4.2)

donde a y b son números enteros con mcd(a, 26) = 1 es llamado afin, cuando
a = 1.

Un análisis sobre el alfabeto de 26 caracteres establece que, usando la función


de Euler, es posible hacer un total de 12 elecciones para el entero a y 26 elecciones
para el número entero b; dando un total de 12 × 26 = 312 transformaciones
posibles. Uno de ellos, usando (4.2), esta dado por

C ≡ P (mod 26) (4.3)

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

P ≡ a−1 (C − b)(mod 26), 0 ≤ P ≤ 25 (4.4)

donde a−1 es la inversa de a modulo 26. Esta inversa se encuentra usando la


congruencia a−1 ≡ aφ(26)−1 = a11 (mod 26).

Sean a = 7 y b = 10 dos números enteros, usando (4.2) tenemos la siguiente


transformación encriptadora:

C ≡ 7P + 10(mod 26), 0 ≤ C ≤ 25 (4.5)

Para desencriptar, por (4.4), tenemos la transformación siguiente:

P ≡ 15(C − 10)(mod 26), 0 ≤ P ≤ 25 (4.6)

es decir, (4.6) equivale a

P ≡ 15C + 6(mod 26), 0 ≤ P ≤ 25 (4.7)

donde 15 es la inversa de 7 modulo 26.


4.1. CIFRADO POR CLAVE SIMÉTRICA 65

La siguiente figura muestra las correspondientes letras cifradas usando (4.5)

Figura 4.4: Letras en texto cifrado usando la ecuación (4.5).

En la figura notamos que, por ejemplo, en el texto plano la letra l corresponde


al número entero 11. En el texto cifrado al número 9 le corresponde la letra j,
pues 7 × 11 + 10 = 87, esto es que 87 ≡ 9(mod 26), siendo 9 el equivalente
numérico de j.

Encriptación

Entrada: Mensaje en texto plano m.


Salida : Mensaje cifrado c.
Dividir m en bloques de cinco caracteres;
Usar la transformación C ≡ 7P + 10(mod 26);
retornar (Retornar el texto cifrado.)

Ejemplo
Sea el siguiente mensaje: tbn estamos en el laboratorio esperandola. Al
aplicar el algoritmo obtenemos lo siguiente:

- tbnes tamos enell abora torio esper andol a

- 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

- nrxmg nkqeg mxmjj krezk nezoe mglmz kxfej k

En el mensaje podemos notar, por ejemplo, que al aplicar C ≡ 7P +10(mod 26),


con P = 19 (corresponde a la letra elegida t), obtenemos C ≡ 133 + 10(mod 26),
esto es C ≡ 143(mod 26), lo cual reporta un número 13, cuyo equivalente como
puede verse en el texto cifrado es n.

Ejemplo
El mensaje jarm estamos en el salon de clases, cuando es encriptado se
obtiene lo siguiente:

- jarme stamo senel salon decla ses


66CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

- ...
- vkzqm gnkqe gmxmj gkjex fmyjk gmg

Desencriptación

Entrada: Mensaje en texto cifrado c.


Salida : Mensaje plano m.
Usar la transformación P ≡ 15C + 6(mod 26);
Concatenar los caracteres obtenidos;
retornar (Retornar el texto plano.)

Ejemplo
Al mensaje encriptado nrxmgnkqegmxmjjkrezknezoemglmzkxfejk, aplicándo-
le el algoritmo desencriptador obtenemos lo siguiente:
- nrxmg nkqeg mxmjj krezk nezoe mglmz kxfej k

- tbnes tamos enell abora torio esper andol a


- tbn estamos en el laboratorio esperandola
En el mensaje c podemos notar, por ejemplo, que al aplicar P ≡ 15C+6(mod 26),
con C = 13 (corresponde a la letra elegida n), obtenemos P ≡ 195 + 6(mod 26),
esto es P ≡ 201(mod 26), lo cual reporta un número 19, cuyo equivalente como
puede verse en el texto plano es t.

4.1.2. Cifrado por bloque y flujo


El cifrado por caracteres es vulnerable, pues el estar basado en la frecuencia
de los caracteres en el texto cifrado lo hace débil ante los criptoanalistas. Ante
esta situación y para evitar la vulnerablidad, el uso de cifrados que sustituyen
por cada bloque del texto plano, de longitud especificada, un bloque de texto
cifrado de igual longitud, es la mejor alternativa. El cifrado por bloque también
es llamado poligráfico.

(S.3) Cifrado de Vigenère

Fué creado por el diplomático y criptólogo francés Blaise de Vigenère2 .

El método propuesto por Vigenère fué establece que en lugar de encriptar


cada caracter de un mensaje en texto plano de igual modo, mejor cambiarlo por
el cifrado de las letras de un modo diferente, es decir, la clave de un cifrado de
Vigenère consiste en la palabra e1 e2 . . . en , donde cada letra es cambiado por su
equivalente numérico k1 , k2 , . . ., kn .

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

Figura 4.5: Blaise de Vigenère.

Encriptación

Entrada: Mensaje en texto plano m.


Clave k.
Salida : Mensaje cifrado c.
Dividir m en bloques pi de longitud n;
Convertir cada bloque pi a su equivalente numérico;
Convertir cada caracter de k en su equivalente numérico;
Usar ci ≡ pi + ki (mod 26), 0 ≤ ci ≤ 25, i = 1, . . . , n;
retornar (Retornar el texto cifrado.)

Ejemplo
Sea el siguiente mensaje: m = millennium con la clave k = ytwok. Al
aplicar el algoritmo para encriptar, segun Vigenère obtenemos lo siguiente:

- El equivalente numérico de m y k es:


p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 = 12 8 11 11 4 13 13 8 20 12

k1 k2 k3 k4 k5 = 24 19 22 14 10

- c1 ≡ p1 + k1 (mod 26) =⇒ c1 ≡ 12 + 24(mod 26) =⇒ c1 = 10


c2 ≡ p2 + k2 (mod 26) =⇒ c2 ≡ 8 + 19(mod 26) =⇒ c2 = 1
c3 ≡ p3 + k3 (mod 26) =⇒ c3 ≡ 11 + 22(mod 26) =⇒ c3 = 7
c4 ≡ p4 + k4 (mod 26) =⇒ c4 ≡ 11 + 14(mod 26) =⇒ c4 = 25
c5 ≡ p5 + k5 (mod 26) =⇒ c5 ≡ 4 + 10(mod 26) =⇒ c5 = 14
c6 ≡ p6 + k6 (mod 26) =⇒ c6 ≡ 13 + 24(mod 26) =⇒ c6 = 11
c7 ≡ p7 + k7 (mod 26) =⇒ c7 ≡ 13 + 19(mod 26) =⇒ c7 = 6
c8 ≡ p8 + k8 (mod 26) =⇒ c8 ≡ 8 + 22(mod 26) =⇒ c8 = 4
c9 ≡ p9 + k9 (mod 26) =⇒ c9 ≡ 24 + 14(mod 26) =⇒ c9 = 8
c10 ≡ p10 + k10 (mod 26) =⇒ c10 ≡ 12 + 10(mod 26) =⇒ c10 = 22

- 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

- jarme stamo senel salon decla ses


- El equivalente numérico de m es:
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

- El equivalente numérico de k es:


5 0 19 8 12 1
- ...
- Mensaje encriptado: oakuqs yafwee seeaml tnwmol fsxa
Ejemplo
Sea el siguiente mensaje: m = tbn estamos en el laboratorio esperandola
con la clave k = fatima. Al aplicar el algoritmo para encriptar, segun Vigenère
obtenemos lo siguiente:
- tbnes tamos enell abora torio esper andol a
- ...
- Mensaje encriptado: ybgmet fmhaqn jleino wamwdi telxqr fnwwxa

Desencriptación

Entrada: Mensaje en texto cifrado c.


Clave k.
Salida : Mensaje en texto plano m.
Dividir c en bloques ci de longitud n;
Convertir cada bloque ci a su equivalente numérico;
Convertir cada caracter de k en su equivalente numérico;
Usar pi ≡ ci − ki (mod 26), 0 ≤ ci ≤ 25, i = 1, . . . , n;
retornar (Retornar el texto plano.)

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
- ...

- tbnest amosen ellabo ratori oesper andola


- tbn estamos en el laboratorio esperandola

(S.4) Cifrado de Hill

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.

Figura 4.6: Máquina de cifrado de Hill.

Encriptación

Entrada: Mensaje en texto plano m.


Salida : Mensaje cifrado c.
Dividir m en bloques de longitud dos. Si m no es de longitud
par, entonces de debe agregar una letra al final del mensaje;
Convertir cada bloque a su equivalente numérico;
Usar c1 ≡ 5p1 + 17p2 (mod 26), 0 ≤ c1 ≤ 25;
c2 ≡ 4p1 + 15p2 (mod 26), 0 ≤ c2 ≤ 25;
Reemplazar c1 , c2 obtenido por su equivalente en letras;
retornar (Retornar el texto cifrado.)

3 (1891 - 1961) Nació en Nueva York. Recibió su doctorado en matemáticas en 1926 en

la Universidad de Yale. Trabajó en la universidades de Montana, Princeton, Maine y Yale.


Hill tuvo interes por las aplicaciones de la matemática a las comunicaciones, por ello desa-
rrolló métodos para verificar la ocurrencia de números en el telegrafo, ası́ como un método
para encriptar.
70CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

Ejemplo
Sea el siguiente mensaje: tbn estamos en el laboratorio esperandola. Al
aplicar el algoritmo obtenemos lo siguiente:

- Texto plano dividido en bloques de longitud dos:


tb ne st am os en
el la bo ra to ri
oe sp er an do la

- Equivalente numérico del texto plano:


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

- Para cada bloque usar la transformación para encriptar, es decir:


c1 ≡ 5p1 + 17p2 (mod 26) =⇒ c1 ≡ 5 × 19 + 17 × 1(mod 26) =⇒ c1 = 8
c2 ≡ 4p1 + 15p2 (mod 26) =⇒ c2 ≡ 4 × 19 + 15 × 1(mod 26) =⇒ c2 = 13
c1 ≡ 5p1 + 17p2 (mod 26) =⇒ c1 ≡ 5 × 13 + 17 × 4(mod 26) =⇒ c1 = 3
c2 ≡ 4p1 + 15p2 (mod 26) =⇒ c2 ≡ 4 × 13 + 15 × 4(mod 26) =⇒ c2 = 8
..
.
c1 ≡ 5p1 + 17p2 (mod 26) =⇒ c1 ≡ 5 × 11 + 17 × 0(mod 26) =⇒ c1 = 3
c2 ≡ 4p1 + 15p2 (mod 26) =⇒ c2 ≡ 4 × 11 + 15 × 0(mod 26) =⇒ c2 = 18

- El resultado obtenido al aplicar la transformación de encriptación es:


8 13 3 8 23 19 22 24 12 14 7 3
25 25 3 18 9 6 7 16 21 0 13 6
8 12 7 11 23 11 13 13 19 14 3 18

- El equivalente en letras (del texto cifrado) es:


in di xt wy mo hd
zz ds jg hq va ng
im hl xl nn to ds

Desencriptación

Es un proceso inverso semejante a la encriptación, para ello se deben usar


las transformaciones:

p1 ≡ 17c1 + 5c2 (mod 26)

p2 ≡ 18c1 + 23c2 (mod 26)

Ejemplo
Sea el siguiente mensaje: indixtwymohdzzdsjghqvangimhlxlnntods. Al apli-
car el algoritmo respectivo obtenemos lo siguiente:
4.1. CIFRADO POR CLAVE SIMÉTRICA 71

- Dividiendo el texto cifrado en bloques de longitud dos:


in di xt wy mo hd
zz ds jg hq va ng
im hl xl nn to ds
- El equivalente numérico de cada bloque del texto cifrado es:
8 13 3 8 23 19 22 24 12 14 7 3
25 25 3 18 9 6 7 16 21 0 13 6
8 12 7 11 23 11 13 13 19 14 3 18
- Usando la transformación para desencriptar, obtenemos:
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
- El texto plano es:
tb ne st am os en
el la bo ra to ri
oe sp er an do la

(S.5) Data Encryption Standard - DES

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.

A pesar que el DEA no ha sido derrotado en el sentido de que no es fácilmente


atacado, sin embargo es vulnerable cuando se le somete a un análisis por la fuerza
bruta, es decir que mediante una busca exhaustiva sobre el DEA puede significar
que en menos de un dı́a se determinen las 256 posibles claves. Debido esta
debilidad el National Institute of Standards and Technology - NIST decidió no
certificar el DES para que sea usado después del año 1998.

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:

1. Ser de dominio público.


2. Ser un algoritmo de cifrado simétrico y soportar bloques de, como mı́nimo,
128 bits.
3. Las claves de cifrado podran ser de 128, 192 y 256 bits.
4. Ser implementable en hardware y en software.

Se presentarón los siguientes quince trabajos diferentes para tal convocatoria:


1. CAST-256 (Entrust Technologies, Inc.).
72CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

2. CRYPTON (Future Systems, Inc.).


3. DEAL (Richard Outerbridge, Lars Knudsen).
4. DFC (CNRS Centre National pour la Recherche Scientifique Ecole Nor-
male Superieure).
5. E2 (NTT Nippon Telegraph and Telephone Corporation).
6. FROG (TecApro International, S.A.).
7. HPC (Rich Schroeppel).
8. LOKI97 (Lawrie Brown, Josef Pieprzyk, Jennifer Seberry).
9. MAGENTA (Deutsche Telekom AG).
10. MARS (IBM).
11. RC6 (RSA Laboratories).
12. RIJNDAEL (John Daemen, Vincent Rijmen).
13. SAFER+ (Cylink Corporation).
14. SERPENT (Ross Anderson, Eli Biham, Lars Knudsen).
15. TWOFISH (Bruce Schneier, John Kelsey, Doug Whiting, David Wagner,
Chris Hall, Niels Ferguson).
En agosto de 1999 el NIST decidió como los 5 finalistas a: MARS, RC6, RIJN-
DAEL, SERPENT y TWOFISH. Estos algoritmos finalistas fueron sometidos a
una nueva evaluación más exhaustiva hasta el 15 de mayo del 2000. Durante los
dı́as 13 y 14 de abril de 2000 se discutierón los últimos análisis de los algoritmos
finalistas. El 15 de mayo del 2000 finalizó el periodo público de análisis. El 2
de octubre del mismo año mediante votación se eligió el algoritmo ganador del
concurso. El resultado fué el siguiente:
- MARS: 13 votos.
- RC6: 23 votos.
- RIJNDAEL: 86 votos.
- SERPENT: 59 votos.
- TWOFISH: 31 votos.
Con este resultado el NIST seleccionó como estandar para los Estados Unidos,
el trabajo presentado por los investigadores Joan Daemen4 y Vincent Rijmen5
4 (1965 -) Nace en Limburg, Belgica.En 1988 se gradua como Ing. electromecánico. Trabaja

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

del Laboratorio COSIC en K.U. Leuven en Belgica.

Figura 4.7: J. Daemen y V. Rijmen.

El algoritmo AES para encriptar es capaz de usar claves simétricas de 128,


192 y 256 bits, respectivamente, y bloques de 128 bits para desencriptar. La
complejidad del AES y el tamaño de las claves que soporta lo hace resistente a
ataques por la fuerza bruta por muchos años. El gobierno americano afirma que
el AES permanecerá seguro por al menos 20 años.

(S.6) Cifrado de Vernam

Sea la sucesión ki , i = 1, . . . , de elementos del espacio de claves K llamado


flujo de claves. Un cifrado por flujo es aquel que remite una palabra en texto
plano p1 p2 . . ., usando el flujo de claves ki en una palabra de texto cifrado
c1 c2 . . ., donde ci = Eki (pi ) es la función para encriptar. La desencripación esta
dado por pi = Edi (ci ), donde di es la clave para desencriptar

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.

Figura 4.8: Hilbert Vernam.

6 (1890 - 1960) Nació en Nueva York. Después de graduarse en el Worcester Polytechnic

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

Entrada: Mensaje en texto plano pi , i = 1 . . . m


expresado en bits.
Flujo de claves ki , i = 1 . . . m expresado en bits.
Salida : Mensaje cifrado c.
Usar la transformación Eki (pi ) ≡ ki + pi (mod 2), i = 1 . . . m;
retornar (Retornar el texto cifrado.)

Ejemplo
Sea el siguiente mensaje: m = 011110111 con el flujo de claves k =
110001111. Al aplicar el algoritmo para encriptar, obtenemos lo siguiente:

Ek1 (p1 ) ≡ k1 + p1 (mod 2) =⇒ Ek1 (p1 ) ≡ 1 + 0(mod 2) =⇒ Ek1 (p1 ) = 1


Ek2 (p2 ) ≡ k2 + p2 (mod 2) =⇒ Ek2 (p2 ) ≡ 1 + 1(mod 2) =⇒ Ek1 (p1 ) = 0
..
.
Ek9 (p9 ) ≡ k9 + p9 (mod 2) =⇒ Ek9 (p9 ) ≡ 1 + 1(mod 2) =⇒ Ek9 (p9 ) = 0

Por lo tanto el texto m cifrado es: 101111000.

(S.7) Cifrado Autoclave

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

Por tanto, el texto cifrado en forma numérica obtenido es: 4 11 21 3 20 1 .


Su equivalente en caracteres es: e l v d u b.

Para desencriptar un mensaje primero se debe conocer el valor de la clave


inicial, luego para determinar el primer caracter del texto plano usar la siguiente
transformación:
4.2. CIFRADO POR CLAVE ASIMÉTRICA 75

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

El texto plano en forma numérica obtenido es: 12 0 13 6 14. Su equivalente


en caracteres es: m a n g o .

4.2. Cifrado por clave asimétrica


Hasta hace poco tiempo el cifrado de la información estaba basada en la
técnica de clave simétrica, es decir que la clave secreta era compartida por las
entidades participantes (Alicia y Bob).

Esto cambio en los años 1970 cuando apareció la denominada criptografı́a


asimétrica o criptografı́a de clave pública, quien revolucionó la teorı́a y la prácti-
ca basada en la existencia de un tipo especial de función one way conocida como
trapdoor function. Fuerón James H. Ellis7 y Clifford C. Cocks8 de la agencia de
inteligencia britanica Government Communication Headquarters - GCHQ, quie-
nes descubrieron esta técnica llamada Non-secret encryption.

La literatura criptografica afirma que el cómo distribuir la clave fué el mayor


problema para los militares britanicos en los años 1960, por ello en 1969 Ellis
tuvo la idea de la conocida, actualmente, trapdoor function, es decir una función
one way el cual puede ser fácilmente invertida. Esta idea también la tuvieron,
años después, Whitfield Diffie, Martin Hellman y Merkle.

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-

bió la posibilidad del non-secret encryption.


8 (1950 - ) Matemático britanico y criptografo de la GCHQ quien invento el primer algoritmo

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

años despues por R. Rivest, A. Shamir y L. Adleman creadores del criptosistema


RSA.

4.2.1. Criptosistema non-secret de Cocks-Ellis


El criptosistema propuesto por Clifford Cocks fué una respuesta a la prueba
de existencia de Ellis de la posibilidad de una encriptación non-secret. Supon-
gamos que Alicia desea escribir a Bob un mensaje privado para ellos, entonces
el Criptosistema non-secret de Cocks-Ellis trabaja tal como se describe a conti-
nuación:
Generación de la claves

(1) Bob escoje dos números primos p y q, tal que p no divide a q − 1 y q no


divide a p−1. Después de esta elección Bob obtiene y hace pública la clave
n = pq.

(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).

(3) Bob nuevamente usa el algoritmo de Euclides extendido para hallar u y v


respectivamente, de modo que se cumpla up ≡ 1(mod q) y vq ≡ 1(mod p).
Su clave privada (trapdoor) estara dada por (p, q, x, y, u, v).

Encriptación

(1) Alicia divide un mensaje m en m1 , m2 , . . . mt , donde cada mi satisface


0 ≤ mi < n. Cada bloque es encriptado usando la transformación:

ci ≡ mni (mod n).

(2) Alicia remite cada bloque encriptado a Bob.

Desencriptación

(1) Bob recupera un bloque del mensaje como:

ai ≡ cyi (mod p).

bi ≡ cxi (mod q).

(2) Bob puede recuperar, nuevamente, un bloque del mensaje como:

upbi + vqai ≡ mi (mod n).

Ejemplo
Generación de la claves:

(1) Bob escoje dos números primos p = 5 y q = 7, tal que p no divide a q − 1


y q no divide a p − 1. Entonces la clave pública será n = pq = 35.
4.2. CIFRADO POR CLAVE ASIMÉTRICA 77

(2) Para poder desencriptar, Bob usa el algoritmo de Euclides extendido y


encuentra x = 5 e y = 3, pues 5 × 5 ≡ 1(mod 6) y 7 × 3 ≡ 1(mod 4).
(3) Bob nuevamente usa el algoritmo de Euclides y encuentra u = v = 3,
pues satisfacen 3 × 5 ≡ 1(mod 7) y 3 × 7 ≡ 1(mod 5). Su clave privada
(trapdoor) estara dada por (p, q, x, y, u, v) = (5, 7, 5, 3, 3, 3).
Encriptación:
(1) Alicia tiene el mensaje m = 10 el cual lo encripta del modo siguiente:

c ≡ 1035 (mod 35).

(2) Alicia remite c = 5 a Bob.


Desencriptación:
(1) Bob recupera el bloque del mensaje como:

a ≡ 53 (mod 5) =⇒ a = 0.

b ≡ 55 (mod 7) =⇒ b = 3.

(2) Bob puede recuperar, nuevamente, el mensaje como:

3 × 5 × 3 + 3 × 7 × 0 ≡ m(mod 35) =⇒ m = 10.

4.2.2. Criptosistema RSA


De acuerdo con la literatura digital (Wikipedia), el criptosistema de clave
pública RSA es un algoritmo asimétrico basado en bloques, que utiliza una cla-
ve pública y otra privada. La seguridad de este algoritmo radica en que no se
puede factorizar, rapidamente, un número grande en factores primos, es decir el
algoritmo esta basado el problema matemático llamado problema de la factori-
zación entera, el cual es de alta complejidad computacional. La formulación del
RSA es similar al criptosistema propuesto por Cocks-Ellis.

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.

9 (1948 - ) En 1969 estudió graduación en la Universidad de Yale, y doctorado en ciencia

de la computación en la Universidad de Stanford en 1974. Actualmente es profesor del MIT.


Ha trabajado en machine learning, algoritmos computacionales y diseño VLSI.
10 (1952 - ) Nació en Israel. En 1972 se graduo en la Universidad de Tel Aviv. Es doctor en

ciencia de la computación en el Weizmann Institute of Science, donde actualmente es profesor


en el departamento de matemática aplicada. Shamir ha contribuido mucho en criptografı́a.
11 (1945 - ) Es graduado en matemática y doctor en ciencia de la computación, estudiados

en la Universidad de California. Trabajó en el MIT. Actualmente trabaja en las áreas de com-


plejidad computacional, seguridad computacional, inmunologı́a y biologı́a molecular, además
de criptografı́a.
12 Massachusetts Institute of Technology.
78CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

Figura 4.9: R. Rivest, A. Shamir y L. Adleman.

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

(1) Bob recibe la clave pública de Alicia (n, e).


(2) Representa el mensaje en texto plano m, como un número entero en el
intervalo [0, n − 1].
(3) Computar c ≡ me mod( n).

(4) Remitir el texto cifrado c a Alicia.


4.2. CIFRADO POR CLAVE ASIMÉTRICA 79

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

Bob agrupa el mensaje representado numericamente en bloques de longi-


tud dos:
15 20 01 11 08 02 10 04
24 02 17 24 15 19 14 06
17 00 15 07 24 23
(3) Para cada bloque usando c ≡ me mod( n) obtenemos el texto cifrado, es
decir
c ≡ (1520)13 mod( 2537) =⇒ c = 95.
c ≡ (0111)13 mod( 2537) =⇒ c = 1648.
..
.
c ≡ (2423)13 mod( 2537) =⇒ c = 1084.

(4) Remitir el texto cifrado c a Alicia.


00 95 16 48 14 10 12 99
08 11 23 33 21 32 03 70
11 85 19 57 10 84
80CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

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.

Expresando los resultados obtenidos por sus equivalentes en letras, ten-


dremos el texto plano buscado.

4.2.3. Criptosistema de Rabin


Este criptosistema es asimétrico cuya seguridad esta basada en la compleji-
dad del problema de la factorización y el problema de la raı́z cuadrada modulo
un número compuesto n, tiene cierta similaridad con el RSA. El algoritmo de
este sistema criptográfico fué publicado en enero de 1979 por el investigador
de origen israeli Michael Oser Rabin13 , quien junto con Dana Scott ganarón el
premio A. Turing por su trabajo sobre autómatas no deterministas, el cual es
un concepto clave para la teorı́a de complejidad computacional, en particular
para describir las clases de complejidad P y NP.

Figura 4.10: Michael Rabin.

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

Jerusalen en 1953 y su Ph.D. en la Universidad de Princeton en 1956. Es un cientı́fico en


computación. En 1975 inventa el test de primalidad llamado Miller-Rabin, el cual determina
rápidamente si un número es primo o compuesto. En 1987 junto con Richard Karp crean el
algoritmo para busca de cadenas llamado algoritmo Rabin-Karp. Actualmente es profesor en
la Universidad de Harvard, asi como también en la Universidad Hebrea de Jerusalen.
4.2. CIFRADO POR CLAVE ASIMÉTRICA 81

(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:

(1) Bob recibe la clave pública de Alicia n = 91687.


(2) Suponiendo que los últimos seis bits del mensaje original son necesarios
antes de la encriptación, tenemos que para encriptar m0 = 1001111001
Bob reproduce los últimos seis bits de m0 para obtener el mensaje de 16
bits, esto es m = 1001111001111001 el cual equivale a 40569. Notamos
que m ∈ [0, 91686].
(3) Para encriptar m usamos c ≡ m2 mod( n), es decir
c ≡ (40569)2 mod( 91687), =⇒ c = 62111.

(4) Remitir el texto cifrado c = 62111 a Alicia.

Ejemplo
Desencriptar el mensaje cifrado obtenido en el ejemplo anterior.
En efecto
82CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

(1) Para recuperar m, usamos el algoritmo de las raı́ces, es decir


m1 = 69654 = 10001000000010110.
m2 = 22033 = 101011000010001.
m3 = 40569 = 1001111001111001.
m4 = 51118 = 1100011110101110.

(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 .

Cómo se puede encriptar en forma segura un mensaje de un bit ?


De acuerdo con la interrogante planteada, cualquier criptosistema asimétrico de-
terminista tal como RSA y Rabin no son garantı́a para asegurar la encriptación,
pues Eva podria verificar fácilmente cuando el criptosistema satisface c = Ee (0)
y c = Ee (1), pudiendo de este modo distinguir entre los dos mensajes. Entonces:
Qué se podria hacer ?.

Alicia y Bob, para encriptar, tendrı́an que hacer uso de la aleatoriabilidad. En


efecto, considerando el RSA ellos tendrı́an que asumir de que es difı́cil recuperar
el bit menos significante de un mensaje. Formalmente, el bit menos significante
es el llamado predicado hard core del RSA bajo la suposición del RSA.

Si Bob desea remitir un mensaje de un bit, entonces primero debe obtener


la clave pública de Alicia (n, e) y luego escoger un x ∈ Zn∗ , con la propiedad de
que el bit menos significante de x es m, m ∈ {0, 1}. Entonces Bob encripta x
usando c ≡ xe mod n y lo remite a Alicia. Alicia desencripta el mensaje de Bob
con su clave privada d, usando x ≡ cd mod n. Luego ella examina el bit menos
significante de x para comprobar si el mensaje es 0 o 1.

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.

Si Bob y Alicia son capaces de encriptar y desencriptar facilmente, significa


que los procedimientos son algoritmos (posiblemente probabilı́sticos) de tiempo
polinomial. Ante esta situación tenemos la siguiente interrogante: Cómo forma-
lizar el idea de que Eva hace una computación sobre un problema computacio-
nalmente intratable, cuando ella trata de desencriptar un mensaje interceptado
sin clave alguna?.
4.2. CIFRADO POR CLAVE ASIMÉTRICA 83

Supongamos que conocemos que P 6= N P y por tanto que un problema


NP-difı́cil no tiene un algoritmo de tiempo polinomial. Asumiendo que Alicia
y Bob usan un criptosistema donde la desencriptación para Eva es NP-difı́cil,
entonces: ésto es garantı́a que tal criptosistema de seguro ?. La respuesta es
no, pues como no existe un algoritmo de tiempo polinomial para un problema
particular, entonces no podemos asegurar que el problema siempre es difı́cil para
solucionarlo.

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 .

Qué significa negligible ?. Se necesita que la probabilidad de que Eva desencripte


sea tan pequeña como sea posible. Como Eva tiene el permiso de usar cualquier
algoritmo probabilı́stico de tiempo polinomial, entonces necesitamos asegurar-
nos qué, aun, si ella repite su ataque una cantidad polinomial de veces, no tenga
exito en su intento. Esto nos conduce a la siguiente definición:

Definición: Un función r : N → N es negligible, si para cualquier polinomio


1
p : N → N existe un número entero k0 tal que r(k) < p(k) , para k ≥ k0 .

De acuerdo con la definición anterior, una función negligible es mas pequeño


que el inverso de cualquier polinomio positivo, es decir p(k) ≥ 1, ∀k ≥ 1. Por
notación neg(.) denota una función B : {0, 1}∗ → {0, 1} negligible.

A continuación formalizamos la idea que una parte particular de información


relacionada con el mensaje le es dificil a Eva obtenerla desde un criptosistema.
En efecto
Un predicado es una question del tipo si o no, es decir un predicado es una
función
B : {0, 1}∗ → {0, 1}.
Informalmente, el predicado hard core de una función f one way, es un predica-
do que es difı́cil de computarlo cuando se dá f (x), pero es fácil de computarlo
cuando se conoce x. Si f es una función encriptadora, entonces esto correspon-
de a una cuestión que Eva no puede responder cuando solamente se tiene el
criptosistema, pero que puede responder cuando se le dá el mensaje.

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

Formalmente, un predicado B : {0, 1}∗ → {0, 1} es un predicado hard core


de una función f : {0, 1}∗ → {0, 1}∗ , si y solamente si
1. Existe un algoritmo probabilı́stico de tiempo polinomial que, dado x,
computa B(x).
2. Para cualquier algoritmo probabilı́stico A de tiempo polinomial y x ∈
{0, 1}k se cumple
1
P r[A(f (x)) = B(x)] ≤ 2 + neg(k).

Lema 4.1: Si B : {0, 1}∗ → {0, 1} es un predicado hard core de la función


f : {0, 1}∗ → {0, 1}∗ , entonces
|P r[B(x) = 0] − P r[B(x) = 1]| ≤ neg(k), ∀x ∈ {0, 1}k .

Por lo tanto, un predicado hard core es una función difı́cil de computar y la


salida es un bit.

El siguiente resultado valida el bit menos significante de un mensaje encrip-


tado usando el criptosistema RSA:
Teorema 4.2: Bajo la suposición del uso del RSA, el bit menos significante del
mensaje es un predicado hard core del criptosistema RSA.

Dada cualquier familia de funciones trapdoor fi : Di → Di con predicados


hard core Bi , entonces Alicia y Bob pueden encriptar un mensaje simple de un
bit, asi como mensajes mas grandes. En las siguientes subsecciones estudiaremos
cuatro esquemas de encriptación probabilistica.

4.2.4. Encriptación probabilı́stica de un mensaje de un bit


Generación de la claves
(1) Alicia selecciona una clave de longitud k y genera las claves pública y
privada expresada por (i, ti ).
(2) Alicia hace publico la clave i y mantiene en secreto la clave ti .
Encriptación
(1) Bob recibe la clave pública de Alicia i.
(2) Encripta el mensaje de un bit m ∈ {0, 1}, escogiendo un x ∈ Di con
Bi (x) = m.
(3) Bob remite el mensaje en texto cifrado dado por c = fi (x).
Desencriptación
(1) Alicia usa su clave privada ti y recupera x de c = fi (x).
(2) Alicia obtiene m = Bi (x).
La seguridad de este criptosistema es considerada como buena. Si Bob encripta
uno de dos posibles mensajes y los remite, entonces como m = Bi (x) es un
predicado hard core de fi , Eva no podrá conocer cual mensaje fué remitido con
probabilidad de exito significante mayor que 1/2.
4.2. CIFRADO POR CLAVE ASIMÉTRICA 85

4.2.5. Encriptación probabilı́stica de un mensaje grande


Generación de la claves

(1) Alicia selecciona una clave de longitud k y genera las claves pública y
privada expresada por (i, ti ).

(2) Alicia hace publico la clave i y mantiene en secreto la clave ti .

Encriptación

(1) Bob recibe la clave pública de Alicia i.

(2) Encripta el mensaje m de n bits, m ∈ {0, 1}n , escogiendo un x1 , x2 , . . . , xn ∈


Di con Bi (xj ) = mj , para 1 ≤ j ≤ n.

(3) Bob remite el mensaje en texto cifrado dado por c = (fi (x1 ), fi (x2 ), . . . , fi (xn )).

Desencriptación

(1) Alicia usa su clave privada ti y recupera cada xj a partir de fi (xj ).

(2) Alicia obtiene m = (Bi (x1 ), Bi (x2 ), . . . , Bi (xn )).

La siguiente pregunta nos hace reflexionar acerca de la seguridad: Cómo pode-


mos definir la seguridad para grandes mensajes ?.
En efecto
Cuando se encripta un simple bit, se dice que este proceso es seguro sı́ Eva
no conoce cual de los dos mensajes fueron remitidos con probabilidad de exito
significante mayor que 1/2. Esta idea extendida a mensajes mas grandes origina
el concepto de polinomialmente indistingible.

Informalmente, un criptosistema polinomialmente indistinguible equivale a


decir: Siempre que Eva presenta a Bob dos mensajes m1 y m2 de igual longitud,
y el encripta uno de tales mensajes, entonces Eva no podrá saber cual c es
una encriptación de m1 o una encriptación de m2 con probabilidad significante
mayor que 1/2. Estas consideraciones conducen al siguiente test de seguridad:

1. Bob selecciona una clave de longitud k.

2. Bob genera una clave pública y privada (e, d) de longitud requerida y la


publica como su clave e.

3. Eva produce dos mensajes m1 y m2 de longitud k en tiempo polinomial


probabilı́stica.

4. Bob elige, aleatoriamente, uno de tales mensajes, m ∈ {m1 , m2 } y los


encripta como c = Ee (m).

5. Bob remite c a Eva.

6. Eva reconoce cual de los dos mensajes fué encriptado por Bob.

7. Si el reconocimiento de Eva fué correcto, entonces tendrá exito. Caso con-


trario falla.
86CAPÍTULO 4. CRIPTOSISTEMAS BASADOS EN TEORÍA DE NÚMEROS

Se dice que un criptosistema de polinomialmente indistingible, si y solamente si


la probabilidad de tener exito en el test no es mayor de 1/2.

Teorema 4.3: El proceso de encriptación probabilı́stico para mensajes gran-


des, usando predicados hard core, produce un criptosistema polinomialmente
indistingible.

Formalmente un criptosistema es semanticamente seguro si Eva obtiene una


parte de la información, si ella es capaz de computar alguna función b : M →
{0, 1} tal que
½
1 Si m tiene información de Alicia.
b(m) =
0 Caso contrario.

En la definición de seguridad semantica se considera al mensaje involucrado


como razonable, esto significa que existe un algoritmo probabilı́stico de tiempo
polinomial que, dado una clave de cierta longitud y una clave pública, produce
mensajes.

Sea b : M → {0, 1}. Consideramos dos casos:

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).

Un criptosistema es llamado semanticamente seguro, si y solamente si para


cualquier función b : M → {0, 1}, la probabilidad de tener exito (cuando se
le da un criptosistema) en la conjetura de b()m por parte de Eva, es a lo mas
insignificante que cuando no se le da un criptosistema. El siguiente resultado se
debe a S. Goldwasser y a S. Micali, dado en 1984.

Teorema 4.4: Un criptosistema de clave pública es semanticamente seguro si y


solamente si el es polinomialmente indistingible.

4.2.6. Criptosistema de Goldwasser-Micali


Es el primer criptosistema probabilı́stico para el cifrado de clave pública,
creado en 1982 por Shafrira Goldwasser15 y Silvio Micali16 .

Este esquema es semanticamente seguro, sı́ se asume que el problema resi-


dualmente cuadrático es intratable.

15 (1958 - ) Nació en Nueva York, graduada en matemáticas en 1979 en la Carnegie Me-

llon University, con su maestria y doctorado en ciencia de la computación estudiado en la


Universidad de California, siendo su asesor el profesor Manuel Blum. Actualmente trabaja en
el MIT, perteneciendo al grupo de investigaciones en teorı́a de la computación. Sus áreas de
investigación son: Teorı́a de complejidad, criptografı́a y teorı́a números computacional.
16 (1954 - ) Investigador de origen italiano. En 1982 recibio su doctorado en la Universidad

de California, actualmente es profesor en el MIT y sus área de interes es seguridad de la


información.
4.2. CIFRADO POR CLAVE ASIMÉTRICA 87

Figura 4.11: S. Goldwasser y S. Micali.

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

(2) El mensaje m = m1 m2 . . . mt es recuperado.

Ejemplo

4.2.7. Criptosistema de Blum-Goldwasser


Es el criptosistema probabilı́stico mas eficiente y su poder es comparado
con el RSA. Este criptosistema fué creado en 1984 por Manuel Blum17 y Shafi
Goldwasser. Asumiento que el problema de la factorización entera es intratable,
entonces el criptosistema de Blum-Goldwasser es semanticamente seguro.

Figura 4.12: M. Blum y S. Goldwasser

Generación de la claves

(1) Alicia selecciona, aleatoriamente, dos números primos p y q grandes y


diferentes, tales que p ≡ 3(mod 4) y q ≡ 3(mod 4).

(2) Obtener n = pq.

(3) Usar el algoritmo de Euclides extendido para hallar a y b tal que ap + bq =


1.

(4) La clave pública de Alicia es n y la clave privada es (p, q, a, b).

Encriptación

(1) Bob recibe la clave pública de Alicia 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.

(3) x0 ← r2 mod n, donde r ∈ Zn∗ se elige aleatoriamente.


17 (1938 - ) Nació en Venezuela y es el único sudamericano que ha recibido el premio Turing

Award en 1995, por su contribución a la teorı́a de complejidad y su aplicación a la criptografı́a.


Blum estudió en el MIT graduándose en 1959, asi como obtuvo su maestria, en 1961, y su
doctorado en 1964 también en el MIT. Trabajó como profesor en la Universidad de California
hasta el 2000. Actualmente es profesor en ciencia de la computación en la Universidad de
Carnegie Mellon.
4.3. EJERCICIOS 89

(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

5.1. Qué es el Álgebra


El álgebra es la rama de la matemática que esta relacionado con el estudio
de la estructura, relación y cantidad. El termino álgebra deriva del libro titula-
do Kitab al-jabr w’al muquabala, cuya traducción es the compendious book on
calculation by completion and balancing. En este libro escrito por Al-kuarizmi,
se presentan operaciones simbolicas para la solución sistemática de ecuaciones
lineales y cuadráticas.
Junto con la geometrı́a, análisis, combinatoria y la teorı́a de números, el álge-
bra es una de las ramas principales de la matemática, clasificada como álgebra
elemental y álgebra abstracta, respectivamente

5.1.1. Álgebra elemental


Estudia las propiedades del sistema de los números reales, considerando cons-
tantes y variables.

5.1.2. Álgebra abstracta


Esta parte del álgebra se subdivide en
(a) Estructuras algebraicas: Estudia los grupos, anillos y campos axioma-
ticamente definidos.
(b) Álgebra lineal: Estudia las propiedades de los espacios vectoriales.
(c) Álgebra universal: Estudia las propiedades comunes de las estructuras
algebraicas.
(d) Teorı́a algebraica de números: Estudia las propiedades de los números
através de los sistemas algebraicos.
(e) Álgebra geométrica: Estudia los aspectos geométricos del álgebra. Este
tipo de álgebra se debe al matemático griego Euclides.
(f) Álgebra combinatoria: Estudia los métodos algebraicos que son usados
para el estudio de los problemas combinatorios.

91
92 CAPÍTULO 5. ÁLGEBRA ABSTRACTA

5.2. Modelos algebraicos


En álgebra abstracta, para estudiar las estructuras algebraicas es necesario
construir un modelo, a partir del cual se constuye todo su universo de estudio.
En este punto podemos establecer una analogı́a con los modelos computacionales
RAM y PRAM. Los modelos algebraicos son las operaciones n-arias, asi como
los semigrupos y monoides.

5.2.1. Operaciones n-arias


Dado un conjunto no vacio S, es posible establecer algun tipo de operación
en el. Este tipo de operación, en general es conocido como n-aria, donde n puede
ser 1, 2, ....
Sea S 6= φ un conjunto. Una operación monadic (unaria) ∗ sobre S, esta
dado por la aplicación
∗:S→S
a 7→ ∗(a) = c
Sea S 6= φ un conjunto. Una operación binaria ∗ sobre S, esta dado por una
aplicación de S x S hacia S, es decir
∗ : SxS → S
(a, b) 7→ ∗(a, b) = c

Propiedades de la operación binaria


1) Asociativa: a * (b * c) = (a * b) * c, ∀ a, b, c ∈ S.
2) Elemento identidad: ∃ e ∈ S tal que e * a = a * e = a, ∀ a ∈ S.
3) Elemento inverso: ∀ a ∈ S, ∃ a0 ∈ S tal que a0 * a = a * a0 = e.
4) Conmutatividad: a * b = b * a, ∀ a, b ∈ S.
Es posible hacer una generalización de las operaciones anteriormente presenta-
das, es decir una operación n-aria ∗ sobre S, esta dado por la aplicación:
∗ : SxSx...xS → S
(a, b, ...) 7→ ∗(a, b, ...) = c
Una vez conocida las operaciones n-arias, podemos establecer la estructura
algebraica (S, (∗1 , ∗2 , ..., ∗n )), como aquel que tiene una o mas operaciones n-aria
∗i , i = 1, ..., n definido sobre S. En una estructura algebraica las operaciones
n-arias tienen que satisfacer ciertas propiedades.

5.2.2. Semigrupos y monoides


Un semigrupo (S, *), consiste de un conjunto S 6= φ y una operación binaria
asociativa * sobre el conjunto S.
Ejemplos:
- Conjunto de los números naturales incluido 0: (N, +), (N, x).
- Conjunto de los números enteros : (Z, +), (Z, x).
5.3. ESTRUCTURAS ALGEBRAICAS 93

- Conjunto de los números racionales : (Q, +), (Q, x).

- Conjunto de los números reales : (R, +), (R, x).

- Conjunto de los números complejos : (C, +), (C, x).

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).

Un monoide (S, *), consiste de un conjunto S 6= φ y una operación binaria


asociativa * sobre el conjunto S, tal que S tiene una identidad.
Ejemplos:

- Conjunto de los números naturales incluido 0 : (N, +), (N, x).

- Conjunto de los números enteros : (Z, +), (Z, x).

- Conjunto de los números racionales : (Q, +), (Q, x).

- Conjunto de los números reales : (R, +), (R, x).

- Conjunto de los números complejos : (C, +), (C, x).

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.

5.3. Estructuras algebraicas


5.3.1. Grupos
La teorı́a de grupos es una rama del álgebra y presenta aplicaciones en la
fı́sica, quimica y ciencia de la computación. Los grupos han investigados desde
ya hace un buen tiempo. Algunos grupos son los siguientes:
94 CAPÍTULO 5. ÁLGEBRA ABSTRACTA

- 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.

Figura 5.1: Évariste Galois.

- Grupos abelianos: Creado por Abel2 , es un grupo llamado grupo conmuta-


tivo donde la aplicación de una operación no depende del orden. El grupo
abeliano generaliza la aritmética de la adición de enteros. Actualmente, la
teorı́a de grupos abelianos infinitos es una área de investigación actual.

El Premio Abel (Abel Prize) está destinado a los investigadores en ma-


temáticas. Fue propuesto en 1902 por el rey Oscar II de Suecia y Noruega,
sin embargo el plan se disolvió cuando el intento por unir los dos paises
fracazó en 1905. Los planes para un Premio Abel nuevamente se reabrio
en el 2000, y en 2001 el Gobierno de Noruega concedió 200 millones de
coronas noruegas (22 millones de dólares) para crear el nuevo premio.

Figura 5.2: Niels Abel.

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-

mio ax5 + bx4 + cx3 + dx2 + ex + f = 0, donde a 6= 0. Ingreso a la universidad en 1821.


5.3. ESTRUCTURAS ALGEBRAICAS 95

- 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.

Figura 5.3: Sophus Lie.

Historicamente existen tres raı́ces de la teorı́a de grupos: Teorı́a de ecuaciones


algebraicas, teorı́a de números y la geometrı́a. Entre los primeros investigadores
tenemos Leonard Euler, Karl Gauss, Lagrange, Evarist Galois y A. Cauchy.
Formalmente los grupos se definen del modo siguiente:
Definición(Grupo): Sea G un conjunto no vacio, entonces un grupo (G, *), don-
de * es una operación binaria, es aquel que satisface las siguientes propiedades:

- Asociativa: ∀ a, b, c ∈ G, se cumple a * (b * c) = (a * b) * c.

- Identidad: ∀ a ∈ G, ∃ e ∈ G, tal que e * a = a * e = a.

- Inversa: ∀ a ∈ G, ∃ a−1 ∈ G, tal que a−1 * a = a * a−1 = e.

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.

Definición(Producto directo): Sean (G1 , ∗1 ) y (G2 , ∗2 ) dos grupos. El producto


directo de dos grupos esta dado por:

G1 ⊗ G2 = {(a1 ,a2 ) / a1 ∈ G1 y a2 ∈ G2 },

donde * se define por (a1 , a2 )*(b1 , b2 ) = (a1 ∗1 b1 , a2 ∗2 b2 ).

La suma y el producto directo pueden ser extendidos a n grupos, esto es


G1 ⊕ G2 . . . ⊕ Gn y G1 ⊗ G2 . . . ⊗ Gn , respectivamente.

Un análisis sobre la teorı́a de grupos reporta lo siguiente:

1. Todo grupo tiene exactamente un elemento identidad.


3 (1842 - 1899) Nació en Noruega, en 1872 obtuvo su doctorado con la tesis On a class

of geometric transformations, creo la teorı́a de simetria continua aplicandolo al estudio de la


geometrı́a y las ecuaciones diferenciales.
96 CAPÍTULO 5. ÁLGEBRA ABSTRACTA

2. En cada grupo cada elemento tiene un inverso.


3. Leyes de cancelación:
3.1 Si ab = ac, entoncesw b = c.
3.2 Si ba = ca, entoncesw b = c.
4. (a−1 )−1 = a.
5. (a1 a1 . . . ak )−1 = a−1 −1 −1
k . . . a2 a1 .

6. Si a, b ∈ G, entonces las ecuaciones ax = b y xa = b tienen soluciones


únicas en el grupo G, las cuales estan dadas por x = a−1 b y x = ba−1 .
7. El producto directo G1 ⊗ G2 . . . ⊗ Gn es abeliano, sı́ cada grupo Gi es
abeliano.
8. Sea Gi , para i = 1, . . . n grupos. Entonces se cumple

|G1 ⊗ G2 . . . ⊗ Gn | = |G1 ||G2 | . . . |Gn |.

9. La identidad para G1 ⊗ G2 . . . ⊗ Gn es (e1 , e2 , . . . , en ), donde ei es la


identidad del grupo Gi .
10. La estructura de un grupo puede ser determinado por una regla simple o
por una tabla, en la cual se lista todos los productos.

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

[a] = {b ∈ Z/b mod n = a mod n}.

Para hallar la inversa a−1 de a ∈ Zn∗ , se debe usar el algoritmo de Euclides


extendido tal que d = mcd(a, n) = aa−1 + kn = 1.

En las siguientes tablas podemos ver los elementos de Z2 y Z3 , respectiva-


mente:
+ 0 1
0 0 1
1 1 0

+ 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

1. Si ϕ es un isomorfismo, entonces ϕ−1 es un isomorfismo.

2. El isomorfismo es una relación de equivalencia, es decir es reflexiva, simétri-


ca y transitiva.

3. Si ϕ : G → H es un homomorfismo, entonces ϕ(G) es un grupo.

4. Si p es un número primo, entonces solamente existe un grupo de orden p,


es decir (Zp , +) es un grupo.

5. Zm × Zn es isomorfo con Zmn si y solamente si m y n son primos relativos,


es decir existe una función ϕ : Zm × Zn → Zmn .

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

1. Z2 no es un subgrupo de Z4 , pues el grupo de operaciones no es la misma.

2. El conjunto de los números enteros impares, (Zi, +), no es un subgrupo


de (Z, +), pues Zi no es cerrado con respecto a la adición.

3. (N, +) no es un subgrupo de (Z, +), pues N no tiene inverso aditivo.

4. Los conjuntos {0}, {0, 3}, {0, 2, 4}, Z6 son subgrupos del grupo Z6 .

5. Los subconjuntos (Q - {0}, ×), (R - {0}, ×) y (C - {0}, ×) son subgrupos


multiplicativos de los grupo multiplicativos (Q, ×), (R, ×) y (C, ×).

Observación

a) Si G es un grupo y a ∈ G, entonces el conjunto (a) es un subgrupo de G.

b) Todo subgrupo de un grupo abeliano es abeliano.

c) Si H es un subgrupo de un grupo G, entonces


- El elemento identidad de H es el elemento identidad de G.
- El inverso (en H) de un elemento a ∈ H, es el inverso (en G) de a.
5.3. ESTRUCTURAS ALGEBRAICAS 99

d) Un subconjunto H del grupo G es un subgrupo de G, si y solamente si se


cumple:
- H 6= φ.
- Si a, b ∈ H, entonces ab ∈ H
- Si a ∈ H, entonces a−1 ∈ H.

e) Un subconjunto H del grupo G es un subgrupo de G, si y solamente si se


cumple:
- H 6= φ.
- Si a, b ∈ H, entonces ab−1 ∈ H.

f) La intersección de subgrupos de un grupo G, es un subgrupo de G.

g) La unión de subgrupos no es necesariamente un subgrupo.

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 ).

Definición(Anillo): Un anillo es una estructura (R, +, ×) que consiste de un


conjunto no vacio R que esta cerrado bajo las operaciones binarias + y × tal
que

- (R, +) es un grupo abeliano.

- Asociatividad con respecto a la operación producto, es decir ∀a, b, c ∈ R,


a × (b × c) = (a × b) × c.

- Distributividad, es decir ∀a, b, c ∈ R

a × (b + c) = a × b + a × c.

(a + b) × c = a × c + b × c.

Observación

a) Si la operación multiplicación es conmutativa, R es un anillo conmutativo.

b) Un anillo R es llamado anillo con unidad, sı́ existe una identidad u 6= 0


para la multiplicación; es decir

u × a = a × u = a, a ∈ R.

c) Un elemento m del anillo con unidad R es llamado unidad, sı́ m tiene


inverso multiplicativo; es decir

∃m−1 ∈ R tal que m × m−1 = m−1 × m = u

d) El conjunto de unidades en un anillo R forma un grupo llamado grupo de


unidades de R.
100 CAPÍTULO 5. ÁLGEBRA ABSTRACTA

Ejemplos

- (Z, +, ×) es un anillo conmutativo.


- (Zn , +, ×) es un anillo conmutativo, donde las operaciones adición y
multiplicación son ejecutadas mediante el modulo n.
- Sea Zn un anillo, Zn∗ = {a ∈ Zn /mcd(a, n) = 1} es un grupo de unidades.
- (Q, +, ×), (R, +, ×) y (C, +, ×) son anillos.

Homomorfismo e Isomorfismo de anillos


Sean (R, +, ×) y (S, +0 , ×0 ) dos anillos. La función definida por
φ : (R, +, ×) → (S, +0 , ×0 )
tal que ∀a, b ∈ R
- φ(a + b) = φ(a) +0 φ(b)
- φ(a × b) = φ(a) ×0 φ(b)
es llamado un homomorfismo de anillos.

Sean R y S dos anillos. Entonces la función φ : R → S es un isomorfismo de


anillos, sı́ ella es un homomorfismo de anillos biyectivo.

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.

5.3.3. Anillo de polinomios


Si R es un anillo, entonces podemos formar el anillo de polinomios R[x], el
cual consiste de todos los polinonios
f (x) = an xn + an−1 xn−1 + . . . + a1 x1 + a0
en la indeterminada x, con coeficientes en R, además de las operaciones adición
y multiplicación definidas de la manera usual.

Un polinomio constante, es el polinomio f (x) = a0 . Si a0 6= 0, entonces f (x)


es de grado 0. Si f (x) = 0, el grado del polinomio es indefinido, es decir ∞.

Formalmente, un anillo de polinomio sobre el anillo R consiste del conjunto


dado por
R[x] = {f (x)/f (x) es un polinomio sobre R en la variable x}
donde las operaciones se definen por:
Adición: n ≥ m
5.3. ESTRUCTURAS ALGEBRAICAS 101

(an xn + an−1 xn−1 + . . . + a1 x1 + a0 ) + (bm xm + bm−1 xm−1 + . . . + b1 x1 + b0 ) =


an xn + . . . + am+1 xm+1 + (an + bn )xn + . . . + (a1 + b1 )x1 + (a0 + b0 )
Multiplicación:
(an xn + . . . + a1 x1 + a0 )(bm xm + . . . + b1 x1 + b0 ) = cn+m xn+m + . . . c1 x1 + c0

donde ci = a0 bi + a1 bi−1 + . . . + ai b0 , para i = 0, 1, . . . , m + n.

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.

- (F − {0}, ×) es un grupo conmutativo.

Por notación F [x] denota un campo en la indeterminada x.

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:

g(x) = q(x)h(x) + r(x),

donde q(x) es el cociente y r(x) denota el residuo de la división entre polinomios.


Además se cumple que grad(r(x)) < grad(h(x)).

En teorı́a de números hemos estudiado la forma de obtener el resto y el


cociente de la división entre dos números, analogamente sucede para polinomios,
es decir que el resto se obtiene mediante r(x) = g(x) mod h(x), y el cociente
mediante q(x) = g(x) div h(x).

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

Definición(División): Sean g(x) y h(x) dos polinomios en F [x], entonces h(x)


divide a g(x), es decir h(x)|g(x), si g(x) mod h(x) = 0.

Definición(Congruencia): Sean g(x) y h(x) dos polinomios en F [x], entonces

g(x) ≡ h(x)(mod f (x)), si f (x)|(g(x) − h(x))


5.3. ESTRUCTURAS ALGEBRAICAS 103

Definición(Campo finito): Un campo finito es un campo F , el cual tiene una


cantidad finita de elementos. El orden de F esta dado por la cantidad de ele-
mentos de F .

Sea Zp un campo finito de orden p, entonces es posible extender el concepto


de mcd para el anillo de polinomio Zp [x].

Definición: Una operación Zp significa una adición, sustracción, multiplicación,


inversa o división en Zp .

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).

Entrada: g(x), h(x) ∈ Zp [x]


Salida : mcd (g(x), h(x))
MIENTRAS (h(x) 6= 0)
r(x) ← g(x) mod h(x);
g(x) ← h(x);
h(x) ← r(x);
FIN MIENTRAS
retornar (g(x))

Suponiendo que grad(g(x)) ≤ m y que grad(h(x)) ≤ m, entonces el algorit-


mo de Euclides se ejecuta en un tiempo de O(m2 (log p)2 ) operaciones bit.

El algoritmo de Euclides en Zp [x] puede ser extendido, de modo tal que el


mcd se expresa como la combinación lineal de los polinomios s(x) y t(x), es
decir

d(x) = g(x)s(x) + h(x)t(x)

El algoritmo de Euclides extendido se expresa por:


Entrada: g(x), h(x) ∈ Zp [x]
Salida : d = mcd(g(x), h(x))
SI (h(x) = 0)
d(x) ← g(x);
s(x) ← 1;
t(x) ← 0;
FIN SI
Retornar(d(x), s(x), t(x))
s2 (x) ← 1; s1 (x) ← 0;
t2 (x) ← 0; t1 (x) ← 1;
MIENTRAS (h(x) 6= 0)
q(x) ← g(x) div h(x);
r(x) ← g(x) − q(x)h(x);
s(x) ← s2 (x) − q(x)s1 (x);
t(x) ← t2 (x) − q(x)t1 (x);
104 CAPÍTULO 5. ÁLGEBRA ABSTRACTA

g(x) ← h(x); h(x) ← r(x);


s2 (x) ← s1 (x); s1 (x) ← s(x);
t2 (x) ← t1 (x); t1 (x) ← t(x);
FIN MIENTRAS
d(x) ← g(x); s(x) ← s2 (x); t(x) ← t2 (x);
retornar (d(x), s(x), t(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;

Como h(x) 6= 0, en la iteración 1:


q(x) ← x + 1;
r(x) ← x8 + x7 + x6 + x2 + 1;
s(x) ← 1;
t(x) ← x + 1;
g(x) ← x9 +x6 +x5 +x3 +x2 +1; h(x) ← x8 +x7 +x6 +x2 +1;
s2 (x) ← 0; s1 (x) ← 1;
t2 (x) ← 1; t1 (x) ← x + 1.

Como h(x) 6= 0, en la iteración 2:


q(x) ← x + 1;
r(x) ← x5 + x2 + x + 1;
s(x) ← x + 1;
t(x) ← x2 ;
g(x) ← x8 + x7 + x6 + x2 + 1; h(x) ← x5 + x2 + x + 1;
s2 (x) ← 1; s1 (x) ← x + 1;
t2 (x) ← x + 1; t1 (x) ← x2 .

Como h(x) 6= 0, en la iteración 3:


q(x) ← x3 + x2 + x + 1;
r(x) ← x3 + x + 1;
s(x) ← x4 ;
t(x) ← x5 + x4 + x3 + x2 + x + 1;
g(x) ← x5 + x2 + x + 1; h(x) ← x3 + x + 1;
s2 (x) ← x + 1; s1 (x) ← x4 ;
t2 (x) ← x2 ; t1 (x) ← x5 + x4 + x3 + x2 + x + 1.

Como h(x) 6= 0, en la iteración 4:


q(x) ← x2 + 1;
r(x) ← 0;
s(x) ← x6 + x4 + x + 1;
t(x) ← x7 + x6 + x2 + x + 1;
5.4. EJERCICIOS 105

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.

Finalmente como h(x) = 0, entonces hemos encontrado el mcd para los


polinomios dados inicialmente. La respuesta es d(x) = x3 + 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

[12] S. Gnesi. Formal Specification and Verification of Complex Systems. Notes


in Theoretical Computer Science 80(2003).
[13] Rob M. Hierons. Checking States and Transitions of a set of Communicating
Finite State Machines. Brunel University, October, 7, 2004.
[14] John E. Hopcroft, R. Motwani and J.D. Ullman. Introduction to Automata
Theory, Languages, and Computation. it 2nd ed. Addison-Wesley, 2001.
[15] Joost-Pieter Katoen. Principles of Model Checking. Formal Methods and
Tools Group, Lecture Notes, University of Twente, 2002.

[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.

[18] W. Peng and S. Purushothaman. Data flow analysis of communications


finite state machines. ACM Transactions on Programming Languages and
Systems, 13(3): 399-442, 1991.
[19] M.J. Quinn. Parallel Computing Theory and Practice. McGraw-Hill, 1994.

[20] Robert Sedgewick. Algorithms in Java, Third Edition. Addison Wesley,


2002.

[21] Thomas A. Sudkamp. Languages and Machines. An Introduction to the


Theory of Computer Science. Second Edition, Addison-Wesley, 1997.
[22] Andrew Tanenbaum. Networking Computers. Second Edition, Addison-
Wesley, 2000.
[23] W. Thomas. Automata on infinite objects. In Handbook of Theoretical
Computer Science, Vol. B. Elsevier, pp. 135-191, 1990.
[24] M.Y. Vardi. Nontraditional Applications of Automata Theory. Rice Uni-
versity, Dept. of Computer Science, 1994.
[25] P. Wolper and Bernard Boigelot. Verifying Systems with Infinite but Re-
gular State Spaces. Proc. of 10th International Conference on Computer-
Aided Verification, Vancouver, Lecture Notes in Computer Science,
Springer-Verlag, June, 1998.