Logo Studenta

Algoritmo-de-encriptaciAn-simA-trico-que-procesa-bloques-de-192-bits--con-llaves-de-cifrado-de-192-bits--empleando-los-teoremas-factorial-y-JV

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO POLITÉCNICO NACIONAL
CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓ MPUTO
 
 
AALLGGOORRIITTMMOO DDEE E
BBLLOOQQUUEESS DDEE 119922 BB
EEMMPPLLEEAANNDD
TTEESSIISS QQUUEE PPAARR
TT
ING. JOSÉ JESÚS SOTO SÁNCHEZ
Dr
M. en C. ROLANDO FLORES CARAPIA
 
México, Distrito Federal
 
 
 
INSTITUTO POLITÉCNICO NACIONAL
CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓ MPUTO
 
 EENNCCRRIIPPTTAACCIIÓÓNN SSIIMMÉÉTTRRIICCOO QQUUEE
BBIITTSS,, CCOONN LLLLAAVVEESS DDEE CCIIFFRRAADDOO
DDOO LLOOSS TTEEOORREEMMAASS FFAACCTTOORRIIAALL
 
 
RRAA OOBBTTEENNEERR EELL GGRRAADDOO DDEE MMAAEE
TTEECCNNOOLLOOGGÍÍAA DDEE CCÓÓMMPPUUTTOO 
 
 
PRESENTA: 
ING. JOSÉ JESÚS SOTO SÁNCHEZ 
 
 
DIRECTORES: 
Dr. VICTOR MANUEL SILVA GARCÍA 
M. en C. ROLANDO FLORES CARAPIA 
, Distrito Federal Junio
INSTITUTO POLITÉCNICO NACIONAL 
CENTRO DE INNOVACIÓN Y DESARROLLO TECNOLÓGICO EN CÓ MPUTO 
EE PPRROOCCEESSAA 
OO DDEE 119922 BBIITTSS,, 
LL YY JJVV 
EESSTTRRÍÍAA EENN 
Junio de 2010
 
 
 
 
CARTA CESION DE DERECHOS 
 
En la Ciudad de México el día 21 de junio del año 2010, el que suscribe José Jesús Soto 
Sánchez, alumno del Programa de Maestría en Tecnología de Cómputo con número de 
registro B081750, adscrito al Centro de Innovación y Desarrollo Tecnológico en Cómputo, 
manifiesta que es autor intelectual del presente trabajo de Tesis bajo la dirección del Dr. 
Víctor Manuel Silva García y del M. en C. Rolando Flores Carapia; cede los derechos del 
trabajo intitulado “Algoritmo de encriptación simétrico que procesa bloques de 192 bits, 
con llaves de cifrado de 192 bits, empleando los teoremas Factorial y JV” al Instituto 
Politécnico Nacional para su difusión, con fines académicos y de investigación. 
 
Los usuarios de la información no deben reproducir el contenido textual, gráficas o datos 
del trabajo sin el permiso expreso del autor y/o director del trabajo. Este puede ser 
obtenido escribiendo a la siguiente dirección: jsotos0801@ipn.mx. Si el permiso se otorga, 
el usuario deberá dar el agradecimiento correspondiente y citar la fuente del mismo. 
 
 
 
 
 
 
JOSÉ JESÚS SOTO SÁNCHEZ 
 
 
INSTITUTO POLITÉCNICO NACIONAL 
SECRETARÍA DE INVESTIGACIÓN Y POSGRADO 
 
 
4 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
 
RESUMEN 
 
El presente trabajo documenta el diseño de un algoritmo de encriptación simétrico que 
procesa bloques de 192 bits, con llaves de cifrado de 192 bits, empleando los teoremas 
Factorial y JV. 
 
 
 
 
 
5 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
ABSTRACT 
 
The present work documents the design of a symmetric encryption algorithm that 
processes blocks of 192 bits, with cipher keys of 192 bits, using the Factorial and JV 
theorems. 
 
 
 
 
 
6 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
AGRADECIMIENTOS 
 
Le agradezco Dr. Víctor Manuel Silva García por sacarle brillo a esta piedra; por creer que este 
fuereño tenía el potencial adecuado para estudiar un posgrado. Gracias por dejarme ser parte de 
sus desarrollos matemáticos y por explicarme los conceptos cuando no los entendía; por hacerme 
un espacio en su agenda y por dejarme ser su pupilo. El tiempo invertido y sus enseñanzas valen 
oro, no tengo como pagarle. 
Maestro Rolando Flores Carapia, gracias por despertar al programador que todos llevamos dentro, 
hacía tiempo que no me sentía tan contento programando, es difícil volver a comenzar después de 
atravesar por desilusiones, pero Usted logró que volviese a enamorarme de las interminables 
líneas de código y que pasara horas de desvelo viendo cómo iba quedando el ansiado algoritmo 
simétrico. 
Agradezco a los docentes integrantes del jurado sus observaciones a este trabajo escrito, han 
logrado que sea una mejor persona y un mejor profesionista. Dra. Magdalena Marciano Melchor, 
M. en C. Eduardo Rodríguez Escobar, M. en C. Mauricio Olguín Carbajal, Dr. Edgar Alfredo Portilla 
Flores. 
Mi amada Esmeralda, gracias por sacrificar tu tiempo para dejar que terminara mi tesis. Gracias 
por las incontables tazas de café que me diste cuando me veías absorto frente a la “compu” y las 
llamadas a comer cuando ya todos estaban a la mesa. Gracias por el apoyo que me has dado 
desde que iniciamos esta aventura profesional y por el cuidado que le has dado a nuestros hijos 
cuando papá estaba “desconectado de la realidad”. Espero restituírtelo todo pronto. 
Sarita, mi nena, gracias por el tiempo que has pasado a mi lado, viendo como papá programaba, 
leía o tecleaba palabras (interminables) en su laptop. Gracias por quedarte dormida en mis brazos 
y hacerme levantar de la mesa para llevarte a la cama, para después, regresar al escritorio y 
pensar lo afortunado que soy por tenerte a mi lado. 
Caleb, gracias por dejarme trabajar cuando estuviste en cama, aunque ya sabes que no nos gusta 
verte así. Gracias por jugar con tus hermanos cuando me veías concentrado en el escritorio y por 
acompañarme a las revisiones de tesis en aquellas maratónicas travesías en metro al CIDETEC. 
Te agradezco Ángel por tu cariño, me encanta cargarte y darte vueltas, aunque casi me quedo sin 
espalda; que aburrida sería la vida sin tus interrupciones para jugar en medio de las lecturas 
interminables o las líneas de código indescifrables. 
 
 
 
 
7 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
Te sigo sorprendiendo José Jesús, a que no sabías que se podía conectar un monitor externo a la 
laptop para redactar, programar (en tu caso jugar) más rápido, ya ves que papá sigue estando a la 
vanguardia (o al menos eso creo); claro que no será por mucho tiempo, pues ya me das la vuelta 
en Age of Empires. Gracias por hacer que siga pensando que estoy un paso delante de ti. 
Mamá, Papá, gracias por dejarme soñar y estar allí para compartir esos sueños. 
Elizabeth y David, gracias por cuidar mi corazón y el de mi familia, los quiero. Dios les bendiga. 
Lic. Mónica I. Bernal, gracias por brindarme la oportunidad de faltar los viernes al trabajo para 
emprender ese sueño que parecía inalcanzable, ahora vemos los resultados de “aquella locura”. 
Ing. Georgina Acevedo, gracias por dejar que el hijo del cónsul cambiara mi vida, y me diera otra 
perspectiva de las cosas. Échale ganas, sí se puede! 
José David, gracias por dejar que Sheryl Crow estuviese conmigo en esas duras horas de 
redacción y lectura. 
Gabriel, gracias por toda la información electrónica que me brindaste, fue aprovechada al máximo. 
Dios, que sería de mí si no me hubieras alcanzado… 
Agradezco a todas las personas que de forma directa o indirecta han contribuido para el logro de 
esta meta profesional. 
Agradezco al Consejo Mexiquense de Ciencia y Tecnología (COMECyT) su apoyo económico para 
realizar estos estudios de posgrado; espero no haber defraudado su expectativa para conmigo. 
 
 
 
 
8 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
CCOONNTTEENNIIDDOO 
 
ÍÍNNDDIICCEE DDEE FFIIGGUURRAASS ...................................................................................................................... 10 
IINNTTRROODDUUCCCCIIÓÓNN ........................................................................................................................... 11 
OOBBJJEETTIIVVOO GGEENNEERRAALL .....................................................................................................................14 
OOBBJJEETTIIVVOOSS PPAARRTTIICCUULLAARREESS ........................................................................................................... 14 
MMEETTAASS PPLLAANNTTEEAADDAASS .................................................................................................................... 14 
JJUUSSTTIIFFIICCAACCIIÓÓNN ............................................................................................................................. 15 
CCAAPPÍÍTTUULLOO II................................................................................................................................... 16 
EESSQQUUEEMMAASS DDEE EENNCCRRIIPPTTAACCIIÓÓNN SSIIMMÉÉTTRRIICCAA ((LLLLAAVVEE PPRRIIVVAADDAA)) ........................................................ 16 
CCOONNSSTTRRUUCCCCIIÓÓNN DDEE PPEERRMMUUTTAACCIIOONNEESS PPSSEEUUDDOOAALLEEAATTOORRIIAASS ((AALLGGOORRIITTMMOOSS SSIIMMÉÉTTRRIICCOOSS DDEE 
BBLLOOQQUUEESS)) .................................................................................................................................... 18 
REDES DE SUSTITUCIÓN PERMUTACIÓN XOR ........................................................................... 21 
EL PARADIGMA DE CONFUSIÓN-DIFUSIÓN ............................................................................... 24 
ESTÁNDAR DE ENCRIPTACIÓN DE DATOS (DATA ENCRYPTION STANDARD - DES) ...................... 28 
ESTÁNDAR AVANZADO DE ENCRIPTACIÓN (AES) ...................................................................... 29 
CCAAPPÍÍTTUULLOO IIII .................................................................................................................................. 31 
DDEESSCCRRIIPPCCIIÓÓNN DDEE DDEESS ................................................................................................................... 31 
DDEESSCCRRIIPPCCIIÓÓNN DDEE TTRRIIPPLLEE--DDEESS........................................................................................................ 35 
DDEESSCCRRIIPPCCIIÓÓNN DDEE AAEESS ................................................................................................................... 36 
CCAAPPÍÍTTUULLOO IIIIII ................................................................................................................................. 48 
FFUUNNDDAAMMEENNTTOOSS MMAATTEEMMÁÁTTIICCOOSS .................................................................................................. 48 
TEOREMA JV ............................................................................................................................ 50 
TEOREMA FACTORIAL .............................................................................................................. 52 
DDIISSEEÑÑOO DDEELL AALLGGOORRIITTMMOO SSIIMMÉÉTTRRIICCOO PPRROOPPUUEESSTTOO ....................................................................... 55 
CCAAPPÍÍTTUULLOO IIVV ................................................................................................................................ 61 
 
 
9 Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
AANNÁÁLLIISSIISS DDEE RREESSUULLTTAADDOOSS DDEELL AALLGGOORRIITTMMOO PPRROOPPUUEESSTTOO ............................................................. 61 
CCOONNCCLLUUSSIIOONNEESS............................................................................................................................ 75 
TTRRAABBAAJJOO AA FFUUTTUURROO ..................................................................................................................... 77 
RREEFFEERREENNCCIIAASS ............................................................................................................................... 79 
GGLLOOSSAARRIIOO .................................................................................................................................... 81 
AANNEEXXOO 11 ...................................................................................................................................... 84 
 
 
 
1
0 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
ÍÍNNDDIICCEE DDEE FFIIGGUURRAASS 
 
1. Red de Sustitución-Permutación (23) 
2. Función f del algoritmo DES (32) 
3. Esquema de llaves del algoritmo DES (33) 
4. Llaves débiles para el algoritmo DES (16 bits), expresadas en hexadecimal (34) 
5. Llaves semidébiles para el algoritmo DES (16 bits), expresadas en hexadecimal (34) 
6. Representación de Triple-DES (35) 
7. SubBytes( ) aplica las cajas-S a cada byte del arreglo State (41) 
8. S-Box: valores de sustitución por cada byte xy (en formato hexadecimal) (42) 
9. ShiftRows( ) corrimientos cíclicos en los últimos tres renglones del arreglo State (43) 
10. MixColumns( ) opera en el arreglo State columna por columna (44) 
11. AddRoundKey( ); opera cada columna del arreglo State con una llave a través de una 
operación XOR (45) 
12. Algoritmo de mezclado de la información (57) 
13. Ronda 16 del algoritmo simétrico propuesto (57) 
14. Bits utilizados en cada ronda para obtener las 17 llaves requeridas (59) 
15. Biblioteca en C++ para manejo de números grandes (61) 
16. Permutaciones sobre 128 y 192 posiciones (65) 
17. Cifrado de una cadena de 192 bits (67) 
18. Descifrado del mensaje original (68) 
19. Cifrado y creación del archivo de texto (69) 
20. Lectura del archivo de texto y descifrado (70) 
21. Cifrado y creación del archivo de texto, datos nuevos (71) 
22. Lectura del archivo de texto y descifrado, datos nuevos (72) 
 
1
1 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
IINNTTRROODDUUCCCCIIÓÓNN 
 
El secreto es el corazón de la criptografía
mantener la información de manera 
modernas son transformaciones matemáticas (algoritmos), las cuales 
como números o elementos algebraicos en un espacio y sufren una transformación de 
“mensajes con significado” a “mensajes 
significado” y una entrada al algor
“ininteligible” a menudo se conoce como 
Para restablecer la información, una transformación de cifrado debe ser reversible y la 
transformación que permite efectuar esto se conoce con el nombre de
Convencionalmente, los algoritmos de cifrado (encripta
(desencriptación) son parametriz
un algoritmo de descifrado más la descripción en el formato de mensajes y 
un sistema criptográfico, también 
Los algoritmos de encriptación modernos incorporan una secuencia de permutaciones y 
sustituciones, así como operaciones
(operaciones binarias lógicas excluyentes). Se denominan simétricos porque utilizan 
llaves que sirven para llevar a cabo el encriptamiento y a su vez, el proceso inverso, 
denominado desencriptamiento. Estos algoritmos pueden encriptar una cantidad 
específica (longitud fija de bits) 
datos” y suelen ser cadenas 
Al momento de elaboración de este trabajo existen 
por bloques: Data Encryption Standard
han sido considerados Estándares Internacionales 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
El secreto es el corazón de la criptografía. Encriptar (cifrar) es una práctica que permite 
mantener la información de manera secreta. Las técnicas de encriptación (
modernas son transformaciones matemáticas (algoritmos), las cuales 
como números o elementos algebraicos en un espacio y sufren una transformación de 
“mensajes con significado” a “mensajes ininteligibles”. Un mensaje en la región “con 
significado” y una entrada al algoritmo de cifrado es llamado texto claro
a menudo se conoce como texto cifrado o encriptado (1)
información, una transformaciónde cifrado debe ser reversible y la 
ite efectuar esto se conoce con el nombre de
Convencionalmente, los algoritmos de cifrado (encriptación) y de descifrado 
) son parametrizados por llaves criptográficas. Un algoritmo de cifrado y 
un algoritmo de descifrado más la descripción en el formato de mensajes y 
un sistema criptográfico, también denominado criptosistema (1). 
de encriptación modernos incorporan una secuencia de permutaciones y 
uciones, así como operaciones o-exclusiva, XOR, denotada por el símbolo
lógicas excluyentes). Se denominan simétricos porque utilizan 
llevar a cabo el encriptamiento y a su vez, el proceso inverso, 
denominado desencriptamiento. Estos algoritmos pueden encriptar una cantidad 
(longitud fija de bits) de un mensaje, al cual se le conoce como “bloque de 
en ser cadenas de 64 ó 128 bits. 
momento de elaboración de este trabajo existen dos algoritmos modernos de cifrado 
ption Standard (DES) y Advanced Encryption Standard (
han sido considerados Estándares Internacionales y usados en un principio para encriptar 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
es una práctica que permite 
encriptación (cifrado) 
modernas son transformaciones matemáticas (algoritmos), las cuales tratan los mensajes 
como números o elementos algebraicos en un espacio y sufren una transformación de 
Un mensaje en la región “con 
texto claro , la salida 
(1). 
información, una transformación de cifrado debe ser reversible y la 
ite efectuar esto se conoce con el nombre de descifrado . 
ción) y de descifrado 
Un algoritmo de cifrado y 
un algoritmo de descifrado más la descripción en el formato de mensajes y llaves forman 
de encriptación modernos incorporan una secuencia de permutaciones y 
denotada por el símbolo 
lógicas excluyentes). Se denominan simétricos porque utilizan 
llevar a cabo el encriptamiento y a su vez, el proceso inverso, 
denominado desencriptamiento. Estos algoritmos pueden encriptar una cantidad 
, al cual se le conoce como “bloque de 
modernos de cifrado 
ption Standard (AES) que 
y usados en un principio para encriptar 
 
 
1
2 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
datos no confidenciales (que no representaban riesgos de seguridad nacional para el 
Gobierno de los Estados Unidos de Norteamérica). El primero de ellos, surge en 1977, 
gracias al algoritmo desarrollado por Horst Feistel (LUCIFER) para la empresa IBM (2) y 
fue ampliamente utilizado para llevar a cabo transacciones monetarias en los bancos de 
E.U.A. Hasta que en 1998 (3) se anuncio que DES había sido “roto” por un ataque de 
fuerza bruta en 4.5 días con una computadora que contenía 17 tarjetas madre con 64 
procesadores y era capaz de procesar 90 billones de llaves cada segundo, quedando 
fuera de la norma. Por tanto, surge la necesidad de incrementar la seguridad en el 
algoritmo de cifrado, puesto que DES se encargaba de cifrar bloques de 64 bits con llaves 
de 56 bits. En este contexto, en el año 2000 surge AES, un algoritmo desarrollado por los 
criptógrafos de origen Belga Daemen y Rijmen, el cual encripta bloques de 128 bits, 
usando llaves de 128, 192 y 256 bits. 
El objetivo de este trabajo es diseñar e implementar en software un algoritmo simétrico 
que sea capaz de cifrar bloques de 192 bits con llaves de 192 bits, empleando los 
teoremas Factorial (4) y JV (5); ambos desarrollados por el Dr. Víctor Manuel Silva García 
en el Centro de Innovación y Desarrollo Tecnológico en Cómputo (CIDETEC) 
perteneciente al Instituto Politécnico Nacional (IPN) de la ciudad de México, los cuales 
brindarán un nivel de seguridad aceptable, al menos 21182, debido a que propone usar 
permutaciones variables (y no fijas) en el mezclado de la información. 
En el capítulo I el lector encontrará información referente a los sistemas de encriptación 
que utilizan la misma llave para efectuar su trabajo, así como información referente con 
las Redes de Sustitución-Permutación (Substitution Permutation Network, SPN) que son 
utilizadas en el proceso de mezclado de la información. 
El capítulo II abarca lo referente a los criptosistemas Data Encryption Standard (DES), 
Triple-DES y Advanced Encryption Standard (AES), que son las normas internacionales, 
utilizados para procesar información bancaria y no confidencial, entre otras aplicaciones. 
 
 
 
1
3 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
El capítulo III expone los teoremas JV y Factorial, que son las bases matemáticas para 
manipular números del orden 10215 (128!-1), frente a números del orden 10356 (192!-1), 
permitiendo ahorrar tiempo y recursos computacionales cuando se desarrolla software. Al 
mismo tiempo, describe el algoritmo que permite procesar bloques de datos de 192 bits 
utilizando llaves del mismo tamaño, así como el algoritmo para generar las llaves usando 
la función de expansión de llaves del estándar AES-192. 
El último de los capítulos que conforman este escrito, analiza los resultados del algoritmo 
propuesto y enuncia las conclusiones a las que llegó el que suscribe; además, se 
formulan propuestas, que servirán como base para continuar investigando en este campo 
de la seguridad informática. 
 
 
 
1
4 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
OOBBJJEETTIIVVOO GGEENNEERRAALL 
 
Diseñar e implementar en software un algoritmo de encriptación simétrico que procese 
bloques de 192 bits, utilizando llaves de cifrado de 192 bits, empleando los teoremas 
Factorial y JV con objeto de operar números del orden 10215 en la construcción de 
permutaciones variables en lugar de números del orden de 10356 y así reducir el número 
de operaciones de cómputo, buscando aumentar la seguridad en el cifrado de datos. 
 
OOBBJJEETTIIVVOOSS PPAARRTTIICCUULLAARREESS 
 
- Diseñar un algoritmo de mezclado de la información, utilizando bloques de 192 bits 
utilizando el teorema Factorial y JV. 
- Diseñar un algoritmo de programa de llaves (key schedule) de 192 bits. 
 
MMEETTAASS PPLLAANNTTEEAADDAASS 
 
- Diseñar e implementar en lenguaje C++ un algoritmo de encriptación simétrico que 
procese bloques de 192 bits, con llaves de cifrado de 192 bits. 
- Generar las pruebas y resultados del algoritmo de encriptación cifrando 
información en una pc y descifrando en otra, así como llevar a cabo una 
descripción de un criptoanálisis por búsqueda exhaustiva de llaves. 
 
 
1
5 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
JJUUSSTTIIFFIICCAACCIIÓÓNN 
 
Partiendo del hecho que los algoritmos actuales de cifrado que son simétricos, en 
particular el estándar internacional hasta finales del siglo XX, DES, utilizan permutaciones 
fijas para llevar a cabo el mezclado de la información. En este trabajo se propone el 
diseño de un algoritmo simétrico de cifrado para bloques de 192 bits, con permutaciones 
variables, para lo cual se utilizan los teoremas JV y Factorial. El que las permutaciones 
sean variables permite incrementar de manera importante la complejidad computacional 
de los algoritmos simétricos. Ahora bien, para construir permutaciones variables utilizando 
los teoremas mencionados anteriormente se procede de la siguiente manera: se proponen 
tres números enteros positivos no mayores a 128!-1, usando el teorema JV se asocia a 
cada uno de ellos una permutación de 128 posiciones; una vez que se obtienen 3 
permutaciones de esta índole, se procede a la construcción deuna permutación sobre 
192 posiciones utilizando el teorema Factorial, dicha permutación se utiliza en el algoritmo 
para la generación de las llaves y para llevar a cabo el proceso de mezclado de la 
información, logrando con esto un ahorro de recursos computacionales, porque si se 
construye la permutación de forma directa sobre cadenas de 192 posiciones usando el 
teorema JV, se operarían con números del orden de 10356, mientras que con el uso del 
teorema Factorial antes mencionado se trabajarían con números del orden de 10215. 
Por último, el ahora estándar internacional AES comúnmente utiliza llaves de 128 bits, 
brindando un nivel aceptable de seguridad, dado que es resistente a ataques conocidos a 
la fecha; con respecto a un ataque de fuerza bruta se requerirán al menos 2128 búsquedas 
para encontrar una llave que sea utilizada para descifrar un mensaje, lo cual por el 
momento no es factible. En este trabajo se propone el uso de llaves de 192 bits, 
incrementando la seguridad un nivel de al menos 21182 debido al empleo de permutaciones 
variables y no fijas. 
 
 
1
6 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
CCAAPPÍÍTTUULLOO II 
EESSQQUUEEMMAASS DDEE EENNCCRRIIPPTTAACCIIÓÓNN SSIIMMÉÉTTRRIICCAA ((LLLLAAVVEE PPRRIIVVAADDAA)) 
 
De acuerdo con los autores Menezes, Oorschot y Vanstone, un esquema de cifrado 
simétrico puede utilizar llaves privadas o llaves públicas (6). El enfoque en este trabajo 
será en los algoritmos de cifrado por bloque (block cipher) que utilizan llaves privadas. Un 
algoritmo de cifrado simétrico por bloque es una función donde se mapean n-bits de un 
texto plano (plaintext block) en n-bits de un texto encriptado (ciphertext block); n es 
llamada la longitud del bloque (blocklength). Esto puede verse como un simple cifrador de 
sustitución con un tamaño de carácter grande (largo). La función es parametrizada por 
una k-bit llave K, tomando valores de un subconjunto k (el espacio de llaves o esquema 
de llaves, Key Schedule) de un conjunto de todos los k-bits vectores Vk. Se asume y es 
deseable en la medida de lo posible, que todas las llaves sean generadas aleatoriamente. 
Una vez más, conforme a lo escrito por Menezes, Oorschot y Vanstone (6), para lograr un 
desencriptado único, la función para encriptar debe ser uno a uno (esto es, invertible). 
Para un n-bit texto claro, un n-bit texto cifrado y una llave fija, la función es una biyección. 
Cada llave potencialmente define una biyección diferente. 
Como se ha mencionado en la parte introductoria del trabajo, se llama esquema de 
encriptación simétrico porque la llave que se utiliza para llevar a cabo la encriptación es la 
misma que se utiliza para la desencriptación. 
Diferentes autores utilizan letras distintas para representar los elementos que intervienen 
en los algoritmos de cifrado, sin embargo, en esencia y sintácticamente, un criptosistema 
consiste en: (1) 
 
 
1
7 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
• Un espacio de mensajes planos M: un conjunto de cadenas de caracteres sobre 
algún alfabeto, 
• Un espacio de mensajes cifrados C: un conjunto de posibles mensajes cifrados, 
• Un espacio de llaves de encriptación K: un conjunto de posibles llaves de 
encriptación, y un espacio de llaves de desencriptación K´: un conjunto de posibles 
llaves de desencriptación, 
• Un algoritmo eficiente de generación de llaves G: N → K x K´ 
• Un algoritmo eficiente de encriptación E: M x K → C 
• Un algoritmo eficiente de desencriptación D: C x K´ → M. 
La mayoría de los algoritmos de cifrado simétricos se apoyan en los conceptos de 
confusión y difusión (que serán explicados posteriormente), los cuales se combinan para 
dar lugar a los denominados algoritmos de cifrado de producto (7). Estas técnicas 
consisten básicamente en partir el mensaje en cadenas de tamaño fijo (bloques) y aplicar 
la función de cifrado a cada uno de ellos. 
Lo que se hace en la mayoría de los algoritmos de cifrado simétricos es intercalar la 
confusión (sustituciones simples) y la difusión (permutaciones). Esta combinación se 
conoce como cifrado de producto. La mayoría de los algoritmos se basan en diferentes 
capas de sustituciones y permutaciones, estructura que se llama Red de Sustitución-
Permutación. Además, también se pueden intercalar operaciones binarias XOR para 
mezclar la información y brindar un nivel de seguridad mayor que efectuar alguna de 
estas operaciones por sí solas. 
 
 
 
1
8 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
CCOONNSSTTRRUUCCCCIIÓÓNN DDEE PPEERRMMUUTTAACCIIOONNEESS PPSSEEUUDDOOAALLEEAATTOORRIIAASS 
((AALLGGOORRIITTMMOOSS SSIIMMÉÉTTRRIICCOOSS DDEE BBLLOOQQUUEESS)) 
 
Como se ha mencionado anteriormente, los algoritmos de cifrado actuales incorporan una 
secuencia de permutaciones, sustituciones y operaciones XOR (8). El diseño común en 
este tipo de algoritmos es hacerlo a través de iteraciones (repeticiones). Un ejemplo 
clásico de un algoritmo de cifrado iterativo es aquel que requiere la especificación de una 
“función ronda” (vuelta) y un “esquema de llaves” (Key Schedule), donde la encriptación 
de un texto en claro será llevada a través de Nr rondas similares. 
Se define una llave, K, como la secuencia aleatoria de bits de una longitud específica. K 
es utilizada para construir las Nr rondas de llaves (también denominadas sub-llaves), las 
cuales se denotan como K1, K2, … , KNr. El conjunto de sub-llaves (K1, K2, … , KNr), es el 
denominado esquema de llaves. 
La función que define las rondas, denominada f, tiene dos argumentos de entrada: una 
llave de inicio (Kr) y un bloque de entrada (el cual se denota por wr-1). El próximo estado 
está definido como wr = f (wr-1,Kr). 
 
El estado inicial, w0, esta dado por el texto en claro, x. El texto encriptado, y, está definido 
cuando todas las Nr rondas se han completado. Por tanto, las operaciones de cifrado 
están dadas como sigue: 
 
w0 � x 
w1 � f (w0, K1) 
w2 � f (w1, K2) 
. . . 
. . . 
 
 
1
9 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
. . . 
wNr-1 � f (wNr-2, KNr-1) 
wNr � f (wNr-1, KNr) 
y � wNr. 
 
Para que el descifrado sea posible, la función f debe ser inyectiva (esto es, uno a uno), 
definida de dominio a contradominio. Cuando el contradominio se vuelve el dominio y el 
dominio original se vuelve contradominio, se puede decir que existe una función f-1 con la 
propiedad de sobreyectividad: 
f-1(f(w,y),y)=w 
para todas las w e y. El proceso de descifrado se ve de manera inversa, como sigue: 
wNr � y 
wNr-1 � f-1(wNr, KNr) 
. . . 
. . . 
. . . 
w1 � f-1(w2, K2) 
w0 � f-1(w1, K1) 
x � w0. 
 
Por otro lado, la definición de una Red de Sustitución-Permutación (Substitution 
Permutation Network, SPN), es un tipo especial de algoritmo de encriptación iterativo con 
un par de pequeños cambios. Supongamos que l y m son enteros positivos. Se tiene un 
texto en claro y un texto encriptado, ambos deberán ser cadenas de longitud (l)(m) (esto 
es, (l)(m) se denomina la longitud del bloque del algoritmo de cifrado). Una SPN está 
construida por dos componentes, los cuales se denotan por πs y πp. 
πs: {0; 1}
l � {0; 1}l 
es una permutación; 
πp : {1,…,(l)(m)} � {1,…,(l)(m)} 
 
 
 
2
0 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
también es una permutación. La permutación πs es llamada S-box (la letra "S" denota 
“sustitución"). Ésta esutilizada para reemplazar r bits con un conjunto diferente de r bits. 
πp, por otro lado, es usada para permutar (l)(m) bits. 
 
Las Redes de Sustituciones-Permutaciones tienen características muy atractivas. 
Primero, su diseño es simple y muy eficiente, se puede implementar en hardware y 
software. En software, una S-box es usualmente implementada como una matriz 
cuadrada de n-renglones por n-columnas. En implementaciones de hardware, se requiere 
usar S-box relativamente pequeñas (8). 
 
Los estándares de cifrado de bloques, DES y AES cifran bloques de datos de 64 y 128 
bits respectivamente, utilizando llaves de 56 (DES) y 128, 192, 256 (AES) bits. 
 
Para que un algoritmo de cifrado por bloques sea considerado “bueno”, debe ser capaz de 
soportar los ataques denominados “búsquedas de llaves por fuerza bruta o búsqueda 
exhaustiva” (9). Se debe observar que la finalidad de un algoritmo de cifrado por bloques 
es que permanezca irrompible en una cantidad de tiempo razonable (digamos por 
ejemplo, 20 años utilizando la tecnología disponible al momento). 
2
1 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
REDES DE SUSTITUCIÓN 
 
Una Red de Sustitución-Permutación consiste de 
última de ellas, la cual es ligeramente diferente), 
seguida por una permutación usando 
aplica una llave a través de una operación binaria
De acuerdo con el autor Stinson
y permutaciones (πp). 
Sean l, m y Nr enteros positivos, sea 
{1,…,(l)(m)} � {1,…,(l)(m)} una permutación también. Sean 
subconjunto de ({0; 1}lm)Nr+1
inicial. Desde el esquema de llaves
un texto plano x utilizando el siguiente algoritmo:
Algoritmo SPN (x, πs, πp, (
w0 � x 
for r � 1 to Nr – 1 
 ur � wr-1 Kr 
 for i � 1 to m 
 do vr <i> � π
 wr � (vrπp(1), …., v
r
π
u Nr � w Nr-1 K Nr 
for i � 1 to m 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
CIÓN PERMUTACIÓN XOR 
Permutación consiste de Nr rondas. En cada ronda (salvo la 
última de ellas, la cual es ligeramente diferente), se realizan m sustituciones usando 
permutación usando πp. Antes de cada operación de sustitución, se 
una llave a través de una operación binaria XOR (8). 
De acuerdo con el autor Stinson (8), se describirá una SPN, basada en sustituciones (
enteros positivos, sea πs: {0; 1}
l � {0; 1}l una permutación, y 
} una permutación también. Sean P=C= {0; 1
Nr+1 todas las posibles llaves que son obtenidas de una llave K 
esquema de llaves (K1, K2, … , KNr+1), se llevará a cabo la encriptación de 
utilizando el siguiente algoritmo: 
, (K1, K2, … , KNr+1)) 
πs (u
r
<i>) 
πp(lm)) 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
rondas. En cada ronda (salvo la 
sustituciones usando πs, 
Antes de cada operación de sustitución, se 
se describirá una SPN, basada en sustituciones (πs) 
una permutación, y πp : 
0; 1}lm , y sea K un 
todas las posibles llaves que son obtenidas de una llave K 
a cabo la encriptación de 
2
2 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 do v Nr<i> � πs (u Nr<i>
y � vNr K Nr+1 
output (y) 
En el algoritmo anterior, ur 
es la salida de las cajas-
permutación πp , y entonces 
ronda kr+1 (a esto se le conoce como 
permutación πp no se aplica. El algoritmo para encriptación también se utiliza para 
desencriptar, claro está, sufriendo algunas modificaciones en el esquema de llaves y en 
las cajas-S, debido a que 
inversas. 
La figura 1, representa una red de sustitución
plano, x) en 3 rondas, contiene 4 cajas de sustitución y utiliza 4 llaves de 16 bits
como resultado un texto cifrado, 
 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
<i>) 
 representa la entrada a las cajas-S (S-boxes
-S en la ronda r. wr es obtenida a partir de 
, y entonces ur+1 es construida desde wr con una operación XOR en la 
(a esto se le conoce como ronda de mezclado de llaves). En la última ronda, la 
no se aplica. El algoritmo para encriptación también se utiliza para 
, sufriendo algunas modificaciones en el esquema de llaves y en 
debido a que para llevar a cabo la desencriptación se utilizan 
La figura 1, representa una red de sustitución-permutación que procesa 16 bits (texto 
) en 3 rondas, contiene 4 cajas de sustitución y utiliza 4 llaves de 16 bits
como resultado un texto cifrado, y, de longitud 16 (bits). 
 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
boxes) en la ronda r, y vr 
es obtenida a partir de vr aplicando la 
con una operación XOR en la 
). En la última ronda, la 
no se aplica. El algoritmo para encriptación también se utiliza para 
, sufriendo algunas modificaciones en el esquema de llaves y en 
para llevar a cabo la desencriptación se utilizan sus funciones 
que procesa 16 bits (texto 
) en 3 rondas, contiene 4 cajas de sustitución y utiliza 4 llaves de 16 bits, para dar 
2
3 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
 
Figura 1. Red de Sustitución-Permutación 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
 
2
4 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
EL PARADIGMA DE CONFUSIÓN-DIFUSIÓN 
 
Un concepto importante cuando se habla de criptografía es el llamado índice de 
coincidencia (index of coincidence) definido por W.F. Friedman (14) (15) (16), el cual 
indica la probabilidad de que dos letras (caracteres) seleccionadas al azar del texto 
cifrado sean idénticas. Este concepto es importante porque ayuda a determinar el tipo de 
algoritmo de cifrado que se utiliza al encriptar un texto: mono-alfabético o poli-alfabético. 
Cabe aclarar al lector que, un algoritmo de cifrado mono-alfabético es aquel en el que sólo 
hay un alfabeto de cifrado, lo cual a su vez significa que se encripta siguiendo la misma 
transformación. Por ejemplo, el algoritmo César cambia siempre una letra A por una D, 
así el descifrado se da sustituyendo la letra D por la A. Por otro lado, en un algoritmo poli-
alfabético, hay más de un alfabeto de cifrado, lo que a su vez significa que, la relación 
entre el texto cifrado y el texto plano es una sustitución variable, lo que dificulta encontrar 
dicha relación para descifrar un texto cifrado. 
Ahora bien, de acuerdo con el autor Richard A. Mollin (14), se sabe que el índice de 
coincidencia para un algoritmo de cifrado mono-alfabético es de 0.065 y el índice de 
coincidencia para un algoritmo poli-alfabético esta en el rango de 0.0385 a 0.065, 
tomando en cuenta el alfabeto de letras del idioma inglés. Además, para llaves de longitud 
grande el índice de coincidencia para algoritmos de cifrado poli-alfabéticos deberá ser 
cercano a 0.0385. 
Siguiendo el orden de ideas anteriores, para cualquier lenguaje como el inglés o español, 
los cuales contienen un alfabeto de 26 letras (27 en español, tomando en cuenta la ñ), en 
el cual cada letra tiene la misma frecuencia de aparición, tenemos que el índice de 
coincidencia es aproximadamente: 26(1/26)2=0.038. 
Por otro lado, de acuerdo con el autor Schneier (16) la Teoría de la Información define la 
cantidad de información contenida en un mensaje como elmínimo número de bits 
 
 
2
5 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
necesarios para codificar todos los posibles significados del mensaje, asumiendo que 
todos los mensajes tienen la misma probabilidad. 
Formalmente, la cantidad de información en un mensaje, M, es medido a través de la 
entropía del mensaje, denotado por H(M). Por ejemplo, la entropía de un mensaje 
indicando el día de una semana es ligeramente menor a 3 bits. En general, la entropía de 
un mensaje medido en bits es log 2n, donde n es el número de posibles significados 
(codificaciones). Se asume que cada codificación tiene la misma probabilidad. La entropía 
de un mensaje también mide la incertidumbre, esto es, el número de bits pertenecientes al 
mensaje claro necesarios para ser recobrado cuando el mensaje es convertido en 
mensaje cifrado. 
En el mismo orden de ideas, la frecuencia de un lenguaje esta dado por r=H(M)/N, donde 
N es la longitud del mensaje. La frecuencia del lenguaje Inglés toma varios valores entre 
1.0 bits/carácter y 1.5 bits/carácter, para valores grandes de N. Shannon decía que la 
entropía depende de la longitud del texto. Específicamente él indicó una frecuencia de 
2.3bits/carácter para 8 trozos de caracteres. Por otro lado, Thomas Cover utilizando 
técnicas de estimación encontró que la entropía era de 1.3 bits/carácter. Ahora bien, la 
frecuencia absoluta de un lenguaje es el máximo número de bits que pueden ser 
codificados en cada carácter, asumiendo que cada carácter tiene la misma probabilidad 
de aparición. Si hay L caracteres en un lenguaje, la frecuencia absoluta está dada por 
R=log 2L. Esto último representa la máxima entropía de los caracteres de forma individual. 
Para el lenguaje Inglés (español), con 26 letras, la frecuencia absoluta es log226, 
aproximadamente 4.7bits/carácter. A partir de las ideas expuestas anteriormente, se 
puede deducir que los lenguajes naturales son altamente redundantes. 
Ahora bien, la redundancia de un lenguaje, denotado por D, se define como: D=R-r. Por 
tanto, la redundancia para el lenguaje inglés es 4.7bits/carácter menos 1.3 bits/carácter, lo 
que representa 3.4 bits/carácter. Dicho en otras palabras, cada carácter del lenguaje 
Inglés acarrea 3.4 bits de información redundante. Lo cual es muy cercano al lenguaje 
Español. 
 
 
2
6 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
En un mensaje en código ASCII, se tiene que hay 1.3 bits de información por byte 
perteneciente al mensaje. Esto significa que 6.7 bits representan información redundante, 
por consecuencia se tiene una redundancia de 0.84 bits de información por bit de texto 
ASCII, y una entropía de 0.16 bits de información por bit de texto ASCII. 
Ahora bien, Shannon también concluyó que la entropía de un criptosistema es una 
medida del tamaño del número de llaves posibles, K, y que esto se podía representar con 
la fórmula H(K)=log2 K. Así, para un criptosistema con longitud de 64 bits en sus llaves, se 
tiene que la entropía del criptosistema es de 64 bits; para un criptosistema de 128 bits en 
sus llaves, la entropía del criptosistema es de 128 bits. En general, mientras más grande 
sea la entropía del criptosistema, más difícil será vulnerarlo por búsqueda exhaustiva de 
llaves. 
Para el algoritmo propuesto, que utiliza llaves de 192 bits, la entropía del criptosistema 
sería de 192 bits. 
Bien, la definición que dio Shannon a la distancia de unicidad, U, es una aproximación de 
la cantidad de texto cifrado, tal que la suma de la información real (entropía) en el 
correspondiente texto plano más la entropía de las llaves de cifrado sea igual al número 
de bits utilizados en el texto cifrado. Dicho de otra forma, para los criptosistemas 
simétricos, la distancia de unicidad está definida como la entropía del criptosistema divida 
por la redundancia del lenguaje. U=H(K) / D. La distancia de unicidad entre más grande 
mejor. Esto es, entre mayor sea la distancia de unicidad, más robusto será el 
criptosistema y más difícil de vulnerar. 
Por otra parte, si una persona lee un mensaje en el que faltan algunas letras, 
normalmente puede reconstruirlo. Esto sucede porque casi todos los símbolos de un 
lenguaje natural contiene información que se puede extraer de los símbolos alrededor 
(información que, en la práctica, se está enviando dos o más veces), o en otras palabras, 
porque el lenguaje natural es redundante. Puesto que tenemos mecanismos para definir 
la cantidad de información que presenta un suceso, se puede intentar medir el exceso de 
información (redundancia) de un lenguaje (7). 
 
 
2
7 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
Ahora bien, existen dos técnicas básicas para ocultar la redundancia en un texto claro, a 
saber, la confusión y la difusión. Estos conceptos a pesar de su antigüedad resultan de un 
gran valor en criptografía moderna. 
La confusión trata de ocultar la relación entre el texto claro y el texto cifrado, dicha 
relación se da a partir de la llave, K, empleada, puesto que si no existiera jamás 
podríamos descifrar los mensajes. El mecanismo más simple de confusión es la 
sustitución, que consiste en cambiar cada ocurrencia de un símbolo en el texto claro por 
otro. La sustitución puede ser tan simple o tan compleja como uno desee (7). 
La difusión diluye la redundancia del texto claro repartiéndola a lo largo de todo el texto 
cifrado. El mecanismo más elemental para llevar a cabo una difusión es la transposición, 
que consiste en cambiar de sitio elementos individuales del texto claro (7), dicho con otras 
palabras, una difusión se logra usando permutaciones. 
 
 
2
8 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
ESTÁNDAR DE ENCRIPTACIÓN DE DATOS (DATA ENCRYPTION STANDARD 
- DES) 
 
La Federal Information Processing Standards Publication Series (FIPS PUB) 
perteneciente al Instituto Nacional de Estándares y Tecnología (National Institute of 
Standards and Technology NIST) es la serie oficial de publicaciones relacionados con 
estándares y normas adoptadas y promulgadas bajo la provisión de la sección 5131 de la 
Acta de Reforma de la Dirección de Tecnologías de la Información de 1996 (Publicación 
de Ley 104-106) y de la Acta de Seguridad en Cómputo de 1987 (Publicación de Ley 100-
235) de los Estados Unidos. Estos mandatos de ley han proporcionado a la Secretaría de 
Comercio y al NIST importantes responsabilidades para mejorar la utilización y dirección 
de los sistemas de cómputo y los sistemas relacionados con las telecomunicaciones en el 
Gobierno Federal. El NIST, a través de su Laboratorio de Tecnologías de la Información, 
provee liderazgo, asistencia técnica y coordinación de Gobierno que permite desarrollar 
estándares y normas en estas áreas (10). 
Cuando DES se utiliza en conjunto con el estándar X9.52 del American National 
Standards Institute (ANSI), provee una descripción completa de los algoritmos para la 
encriptación y desencriptación de información en código binario. La Encriptación de datos 
significa convertirlos a una forma initeligible llamada cifrado. Desencriptar datos significa 
convertir los datos cifrados a su forma original, llamado texto plano. DES describe ambas 
operaciones, las cuales están basadas en un número binario llamado llave (key) (10). 
Una llave DES consiste de 64 dígitos binarios, bits (“0”s, “1”s), de los cuales 56 bits son 
generados aleatoriamente y usados directamente por el algoritmo. Los restantes 8 bits, no 
son utilizados por el algoritmo y pueden serusados para la detección de errores. Los 
usuarios autorizados para accesar a un sistema de cómputo que cifre datos con DES, 
deben poseer la llave que fue usada para encriptar, para utilizarla en reversa y poder 
llevar a cabo el proceso de desencriptación (10). 
 
 
2
9 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
La seguridad criptográfica de los datos depende de la seguridad provista por las llaves 
utilizadas al encriptar y desencriptar los datos. 
Los datos pueden ser recuperados desde el algoritmo solamente utilizando la misma llave 
utilizada para el proceso de encriptación. Puede ser posible determinar la llave de cifrado 
llevando a cabo un ataque exhaustivo de fuerza bruta, el cual consiste en adivinar la llave 
que fue utilizada para llevar a cabo el proceso de encriptación, probando llaves a través 
de un diccionario de llaves. 
 
ESTÁNDAR AVANZADO DE ENCRIPTACIÓN (AES) 
 
En Enero de 1997, el Instituto Nacional de Estándares y Tecnología de los Estados 
Unidos (United States’ National Institutte of Standards and Technology, NIST) formulaba 
el anuncio para desarrollar un nuevo algoritmo de cifrado simétrico como el nuevo 
estándar para reemplazar al algoritmo DES. El nuevo algoritmo debería llamarse Estándar 
Avanzado de Encriptación (Advanced Encription Standard, AES). A diferencia del proceso 
cerrado que se llevó a cabo para el diseño de DES, un comunicado público fue 
formalmente hecho en Septiembre de 1997 para el diseño del algoritmo AES. Este 
anuncio estipulaba que AES debería ser un algoritmo de encriptación simétrico sin 
clasificar, de carácter público; debería soportar (como mínimo) tamaños de bloque de 128 
bits, llaves de 128, 192 y 256 bits, y debería tener una fortaleza de cifrado al nivel de triple 
DES pero debería ser más eficiente. Además, el algoritmo, de ser seleccionado, debería 
estar disponible para todo el mundo de forma libre (1). 
El 20 de agosto de 1998, NIST anunció un grupo de 15 algoritmos candidatos para 
convertirse en el estándar AES. Estos algoritmos habían sido analizados por miembros de 
la comunidad criptográfica alrededor del mundo. Se solicitaron comentarios públicos como 
revisión inicial para los 15 algoritmos candidatos (el periodo para emitir los comentarios 
 
 
3
0 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
públicos iniciales fue denominado primer ronda). La primer ronda finalizó el 15 de abril de 
1999. Usando los análisis y comentarios recibidos, NIST seleccionó cinco algoritmos 
finalistas. Los algoritmos seleccionados fueron: MARS, RC6, Rijndael, Serpent y Twofish. 
Estos algoritmos finalistas fueron sometidos a una segunda ronda de análisis con mayor 
profundidad. Ésta segunda ronda de análisis se cerró el 15 de mayo del año 2000. El 2 de 
octubre de ese mismo año, NIST anunció que se había seleccionado el algoritmo Rijndael 
para ser el próximo Estándar Avanzado de Encriptación (1). 
Rijndael fue diseñado por dos criptógrafos de origen Belga: Joan Daemen y Vincent 
Rijmen (3). 
 
 
 
3
1 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
CCAAPPÍÍTTUULLOO IIII 
 
DDEESSCCRRIIPPCCIIÓÓNN DDEE DDEESS 
 
El algoritmo simétrico DES es el más conocido y tiempo atrás, utilizado mundialmente. Se 
basa en el algoritmo LUCIFER, desarrollado por IBM a principios de los setenta, y fue 
adoptado como estándar por el Gobierno de los Estados Unidos en 1976, para efectuar 
comunicaciones no clasificadas (7). 
El algoritmo DES codifica bloques de 64 bits empleando llaves de 56 bits. Es una Red de 
Feistel de 16 rondas, más dos permutaciones, una que se aplica al principio, IP, y otra 
que se aplica al final, denominada permutación inversa, IP-1. 
La función f, se compone de una permutación de expansión, E, que convierte el bloque de 
32 bits correspondiente, en uno de 48 bits. Después realiza una operación XOR con el 
valor K i, también de 48 bits, aplica ocho sustituciones de 6 bits de entrada por 4 bits de 
salida, y efectúa una nueva permutación, P, para dar una salida parcial de 32 bits. 
La figura 2 representa la función f del algoritmo DES. 
 
3
2 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
 
Se calculan un total de 16 llaves, 
permutación inicial, PC1, sobre la llave de 64 bits, y resultando una nueva cadena de 56 
bits, la cual se parte en dos cadenas de 28 bits, llevando a cabo desplazamientos a la 
izquierda de cada una de las dos m
segunda permutación, PC2
iésima llave, K i. Los desplazamientos a la izquierda son de dos bits, salvo para las rondas 
1, 2, 9 y 16, en las que se desplaza
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
un total de 16 llaves, K i, una para cada ronda, efectuando primero una 
, sobre la llave de 64 bits, y resultando una nueva cadena de 56 
bits, la cual se parte en dos cadenas de 28 bits, llevando a cabo desplazamientos a la 
izquierda de cada una de las dos mitades resultantes, y realizando finalmente una 
PC2, de 48 bits en cada ronda, para dar como resultado una 
. Los desplazamientos a la izquierda son de dos bits, salvo para las rondas 
1, 2, 9 y 16, en las que se desplaza sólo un bit. El lector debe observar que la llave inicial 
Figura 2. Función f del algoritmo DES 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
, una para cada ronda, efectuando primero una 
, sobre la llave de 64 bits, y resultando una nueva cadena de 56 
bits, la cual se parte en dos cadenas de 28 bits, llevando a cabo desplazamientos a la 
itades resultantes, y realizando finalmente una 
, de 48 bits en cada ronda, para dar como resultado una 
. Los desplazamientos a la izquierda son de dos bits, salvo para las rondas 
sólo un bit. El lector debe observar que la llave inicial 
3
3 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
tiene en principio 64 bits, pero una vez procesada por el algoritmo se ignoran ocho de 
ellos, quedando llaves de 56 bits.
La figura 3, muestra al lector la forma en que se calcula el esquema de lla
 
 
 
Para desencriptar basta con usar el mismo algoritmo empleando las llaves, 
inverso. 
 
Figura 3. Esquema de llaves del algoritmo DES
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
tiene en principio 64 bits, pero una vez procesada por el algoritmo se ignoran ocho de 
ellos, quedando llaves de 56 bits. 
La figura 3, muestra al lector la forma en que se calcula el esquema de lla
Para desencriptar basta con usar el mismo algoritmo empleando las llaves, 
 
Figura 3. Esquema de llaves del algoritmo DES 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
tiene en principio 64 bits, pero una vez procesada por el algoritmo se ignoran ocho de 
La figura 3, muestra al lector la forma en que se calcula el esquema de llaves. 
 
Para desencriptar basta con usar el mismo algoritmo empleando las llaves, K i, en orden 
 
 
3
4 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
El algoritmo DES presenta algunas llaves débiles. En general, todos aquellos valores de 
la llave que conducen a una secuenciainadecuada de K i serán poco recomendables. 
Distinguiremos entre llaves débiles, que son aquellas que generan un conjunto de 
dieciséis valores iguales de K i, y llaves semidébiles que generan dos valores diferentes de 
K i, cada uno de los cuales aparece ocho veces (7). La figura 4, muestra llaves débiles y la 
figura 5, llaves semidébiles. 
Llave Llave tras aplicar PC1 
0101010101010101 
1F1F1F1F0E0E0E0E 
E0E0E0E0F1F1F1F1 
FEFEFEFEFEFEFEFE 
0000000 0000000 
0000000 FFFFFFF 
FFFFFFF 0000000 
FFFFFFF FFFFFFF 
 
 
Llave Llave tras aplicar PC1 
01FE01FE01FE01FE 
FE01FE01FE01FE01 
1FE01FE00EF10EF1 
E01FE01FF10EF10E 
01E001E001F101F1 
E001E001F101F101 
1FFE1FFE0EFE0EFE 
FE1FFE1FFE0EFE0E 
011F011F010E010E 
1F011F010E010E01 
E0FEE0FEF1FEF1FE 
FEE0FEE0FEF1FEF1 
AAAAAAA AAAAAAA 
5555555 5555555 
AAAAAAA 5555555 
5555555 AAAAAAA 
AAAAAAA 0000000 
5555555 0000000 
AAAAAAA FFFFFFF 
5555555 FFFFFFF 
0000000 AAAAAAA 
0000000 5555555 
FFFFFFF AAAAAAA 
FFFFFFF 5555555 
 
 
Figura 4. Llaves débiles para el algoritmo DES (16 bits), expresadas en hexadecimal 
Figura 5. Llaves semidébiles para el algoritmo DES (16 bits), expresadas en hexadecimal 
3
5 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
DDEESSCCRRIIPPCCIIÓÓNN DDEE TTRR
 
El algoritmo Triple-DES se llama así porque c
DES con diferentes llaves al mensaje original. Se puede hacer ya que el algoritmo DES no 
presenta estructura de grupo 
estructura: 
Es decir, se codifica con la sub
K1. La llave resultante es la concatenación de 
figura 6, muestra gráficamente el proceso que sigue Triple
 
 
 
 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
RRIIPPLLEE--DDEESS 
DES se llama así porque consiste en aplicar varias veces el algoritmo 
DES con diferentes llaves al mensaje original. Se puede hacer ya que el algoritmo DES no 
presenta estructura de grupo (7). El algoritmo Triple-DES responde a la siguiente 
C = Ek
1
 (E
-1
K
2
 (Ek
1
 (M) ) ). 
Es decir, se codifica con la sub-llave K1, se decodifica con K2 y volvemos a codificar con 
. La llave resultante es la concatenación de K1 y K2, con una longitud de 112 bits.
figura 6, muestra gráficamente el proceso que sigue Triple-DES. 
 
Figura 6. Representación de Triple-DES 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
onsiste en aplicar varias veces el algoritmo 
DES con diferentes llaves al mensaje original. Se puede hacer ya que el algoritmo DES no 
responde a la siguiente 
y volvemos a codificar con 
, con una longitud de 112 bits. La 
 
 
 
3
6 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
DDEESSCCRRIIPPCCIIÓÓNN DDEE AAEESS 
 
De acuerdo con el Instituto Nacional de Estándares y Tecnología (NIST) en su Publicación 
(FIPS PUB 197) (11), se describirá el algoritmo AES. 
El Estándar Avanzado de Encriptación (AES) es un algoritmo que se utiliza para proteger 
datos electrónicos. Es un algoritmo simétrico que procesa bloques de datos permitiendo 
encriptar y desencriptar información. Este algoritmo es capaz de usar llaves de 128, 192 y 
256 bits para encriptar y desencriptar bloques de 128 bits. 
AES puede ser implementado en software o hardware. La implementación puede 
depender de factores como la tecnología utilizada o el ambiente de programación. 
El estándar se considera efectivo para su aplicación desde el 26 de mayo de 2002. El 
lector debe referirse al glosario, al final del trabajo para comprender los términos y 
acrónimos que se utilizan en la definición del algoritmo. 
Como ya se ha mencionado, las entradas y salidas del algoritmo AES consisten de 
secuencias de 128 bits, a los cuales se les conoce como bloques de datos. El algoritmo 
que permite calcular las llaves (Cipher Key) utiliza bloques de datos de 128, 192 o 256 
bits. 
La unidad básica de procesamiento del algoritmo AES son los bytes (conjunto de 8 bits). 
En este caso, un mensaje de 128 bits (texto plano o texto cifrado) es un segmento de 16 
bytes. Representado por: 
x = x0, x1, x2, …, x15. 
Y una llave quedaría representada como: 
K = k0, k1, k2, …, k15. 
 
 
3
7 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
Las estructuras de datos que representan estas entradas quedan definidas por matrices 
cuadradas de 4 renglones por 4 columnas, de la siguiente manera: 
 
 x0 x4 x8 x12 
x = x1 x5 x9 x13 
 x2 x6 x10 x14 
 x3 x7 x11 x15 
 
 k0 k4 k8 k12 
K = k1 k5 k9 k13 
 k2 k6 k10 k14 
 k3 k7 k11 k15 
 
De forma similar al algoritmo DES (incluso de forma similar a la mayoría de algoritmos 
simétricos modernos), el algoritmo Rijndael (AES) comprende un número de iteraciones 
de transformaciones denominadas “rondas”. En el caso de mensajes de entrada de 128 
bits y llaves del mismo tamaño se iteran 10 rondas. Para el caso de ocupar llaves de 192 
bits se iteran 12 rondas, para el caso de llaves de 256 bits se iteran 14 rondas. La tabla 
siguiente resume la información descrita. 
 
 Key Length 
(Nk words) 
Block Size 
(Nb words) 
Number of Rounds 
(Nr) 
AES-128 4 4 10 
AES-192 6 4 12 
AES-256 8 4 14 
 
 
 
3
8 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
Una ronda en el algoritmo queda denotada por: 
Round (State, RoundKey). 
Aquí State es un arreglo bidimensional, que define palabras de 32 bits y representa 
entradas y salidas al mismo tiempo. Gráficamente se representa como: 
 
 s0,0 s0,1 s0,2 s0,3 
State = s1,0 s1,1 s1,2 s1,3 
 s2,0 s2,1 s2,2 s2,3 
 s3,0 s3,1 s3,2 s3,3 
 
RoundKey es una operación XOR que se realiza con las columnas del arreglo State y las 
llaves (palabras de 32 bits) definidas en el esquema de llaves (Key Expansion). La 
ejecución de una ronda causa que los elementos del arreglo State cambien su valor. Para 
el proceso de encriptación, la primera ronda toma los datos de entrada del texto plano 
(Plaintext) y los coloca en el State acomodados por columnas. 
Las operaciones que se efectúan en una ronda (a diferencia de la última) quedan 
definidas en el siguiente orden: 
Round(State, RoundKey) { 
 SubBytes(State); 
 ShiftRows(State); 
 MixColumns(State); 
AddRoundKey(State, RounKey); 
} 
 
 
3
9 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
La ronda final es diferente con respecto a las anteriores en que se omite la función 
MixColumns( ); quedando de la siguiente manera. 
FinalRound(State, RoundKey) { 
 SubBytes(State); 
 ShiftRows(State); 
 AddRoundKey(State, RoundKey); 
} 
Para llevar a cabo el proceso de descifrado se procede de manera inversa: 
Round-1(State, RoundKey) { 
 InvShiftRows(State); 
 InvSubBytes(State); 
 AddRoundKey(State, RoundKey); 
 InvMixColumns(State); 
} 
Y la ronda final, 
FinalRound-1(State, RounKey) { 
 InvShiftRows(State); 
 InvSubBytes(State); 
 AddRoundKey(State, RoundKey); 
} 
En este punto, se describirán las funciones internas que se procesan en el algoritmo de 
cifrado Rijndael. 
 
 
 
4
0 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
Función SubBytes( ) 
La función SubBytes( ) es una transformación no lineal de bytes, llamada sustitución, que 
opera independientemente cada byte en el arreglo State usando una caja (tabla) de 
sustitución (S-Box). Esta S-Boxes invertible y se muestra de forma gráfica 
posteriormente. 
Cualquier byte diferente de 0’s, que pertenecen al campo finito GF(28) inverso, descrito en 
el FIPS-197 es sustituido por la siguiente transformación: 
[b’] = [A] x [b] + [c], 
La matriz A, queda definida como: 
 1 0 0 0 1 1 1 1 
 1 1 0 0 0 1 1 1 
 1 1 1 0 0 0 1 1 
A = 1 1 1 1 0 0 0 1 
 1 1 1 1 1 0 0 0 
 0 1 1 1 1 1 0 0 
 0 0 1 1 1 1 1 0 
 0 0 0 1 1 1 1 1 
Y el vector c, queda definido como: 
 1 
 1 
 0 
c = 0 
 0 
 1 
 1 
 0 
 
4
1 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
Por tanto, se tiene que la representación matricial de 
como sigue: 
b’0 
b’1 
b’2 
b’3 =
b’4 
b’5 
b‘6 
b’7 
 
La figura 7 ilustra el efecto de la función SubBytes( ) sobre el arreglo State.
 
 
 
Figura 7. 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
Por tanto, se tiene que la representación matricial de 
[b’] = [A] x [b] + [c], 
 1 0 0 0 1 1 1 1 b0 1 
 1 1 0 0 0 1 1 1 b1 1 
 1 1 1 0 0 0 1 1 b2 0 
= 1 1 1 1 0 0 0 1 x b3 + 0 
 1 1 1 1 1 0 0 0 b4 0 
 0 1 1 1 1 1 0 0 b5 1 
 0 0 1 1 1 1 1 0 b6 1 
 0 0 0 1 1 1 1 1 b7 0 
ilustra el efecto de la función SubBytes( ) sobre el arreglo State.
 
. SubBytes( ) aplica las cajas-S a cada byte del arreglo State 
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
 
 
 
 
 
 
ilustra el efecto de la función SubBytes( ) sobre el arreglo State. 
 
 
 
 
4
2 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
La S-Box usada en la función SubBytes( ) es presentada en formato hexadecimal en la 
figura 8. Por ejemplo, si s1,1 = {85}, entonces el valor de sustitución que se debe calcular, 
debe determinarse por, el renglón “8”, columna “5” en la caja-S. Esta operación dará como 
resultado s’1,1={97}. 
 
 y 
 0 1 2 3 4 5 6 7 8 9 a b c d e f 
 
 
 
 
 
 
 
x 
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db 
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 
b e7 c8 37 6d 8d d5 4e a9 6c 56 fa ea 65 7a ae 08 
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a 
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e 
e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df 
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16 
 
 
Figura 8. S-Box: valores de sustitución por cada byte xy (en formato hexadecimal) 
4
3 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
Función ShiftRows( ) 
 
En la función ShiftRows( ), los bytes de las tres últimas filas (renglones) en el arreglo 
State son rotadas cíclicamente sobre diferentes corrimientos. El renglón 0 no se altera en 
esta función. 
Específicamente la función ShiftRows( ) procede de la siguiente manera:
s’r,c = sr,(c+shift(r,Nb))modNb
Donde el valor de corrimiento, s
shift(1,4)=1; shift(2,4)=2; shift(3,4)=3.
Esquemáticamente (figura 9
 
Figura 9. ShiftRows( ) corrimientos cíclicos en los últimos tres renglones del arreglo State
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
En la función ShiftRows( ), los bytes de las tres últimas filas (renglones) en el arreglo 
son rotadas cíclicamente sobre diferentes corrimientos. El renglón 0 no se altera en 
Específicamente la función ShiftRows( ) procede de la siguiente manera:
r,(c+shift(r,Nb))modNb; para 0 < r < 4 y 0 < c < Nb,
el valor de corrimiento, shift(r,Nb) depende del número de renglón, r, como sigue:
hift(1,4)=1; shift(2,4)=2; shift(3,4)=3. (Recordar que Nb
(figura 9), se representan los corrimientos de la siguiente manera:
 
 
ShiftRows( ) corrimientos cíclicos en los últimos tres renglones del arreglo State
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
En la función ShiftRows( ), los bytes de las tres últimas filas (renglones) en el arreglo 
son rotadas cíclicamente sobre diferentes corrimientos. El renglón 0 no se altera en 
Específicamente la función ShiftRows( ) procede de la siguiente manera: 
, 
hift(r,Nb) depende del número de renglón, r, como sigue: 
Nb=4). 
se representan los corrimientos de la siguiente manera: 
 
ShiftRows( ) corrimientos cíclicos en los últimos tres renglones del arreglo State 
4
4 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
Función MixColumns( ) 
 
Esta función opera sobre cada columna del arreglo State. Así que, como el arreglo State 
es una matriz de 4x4, la función MixColumns(
considerada como un polinomio sobre el campo GF(2
un polinomio fijo a(x), dado por:
Matricialmente se representa de la siguiente manera:
 
La figura 10, ilustra la función MixColumns( ).
 Figura 10. MixColumns( ) opera en el arreglo State columna por columna
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
Esta función opera sobre cada columna del arreglo State. Así que, como el arreglo State 
es una matriz de 4x4, la función MixColumns( ) se repite 4 veces. 
considerada como un polinomio sobre el campo GF(28), y multiplicada módulo x
, dado por: 
a(x) = {03} x3 + {01} x2 + {01} x + {02} 
Matricialmente se representa de la siguiente manera: 
s’0,c 02 03 01 01 s0,c 
s’1,c = 01 02 03 01 x s1,c 
s’2,c 01 01 02 03 s2,c 
s’3,c 03 01 01 02 s3,c 
, ilustra la función MixColumns( ). 
 MixColumns( ) opera en el arreglo State columna por columna
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
Esta función opera sobre cada columna del arreglo State. Así que, como el arreglo State 
) se repite 4 veces. Cada columna es 
), y multiplicada módulo x4+1 con 
 
MixColumns( ) opera en el arreglo State columna por columna 
4
5 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
 
 
Función AddRoundKey( )
 
En la función AddRoundKey( ), una llave 
operada con cada columna del arreglo State con una operación XOR bit a bit hasta 
completar el tamaño del bloque de datos (128 bits).
 
Gráficamente la función AddRoundKey(
 
 
 
 
Figura 11. AddRoundKey( ); opera cada columna del arreglo State con una llave a través de una operación XOR
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV
Función AddRoundKey( ) 
En la función AddRoundKey( ), una llave wl+c del esquema de llaves (Key Expansion) es 
operada con cada columna del arreglo State con una operación XOR bit a bit hasta 
completar el tamaño del bloque de datos (128 bits). 
Gráficamente la función AddRoundKey( ), queda representada en la figura 11
 
AddRoundKey( ); opera cada columna del arreglo State con una llave a través de una operación XOR
 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llavesde cifrado de 
192 bits, empleando los teoremas Factorial y JV 
del esquema de llaves (Key Expansion) es 
operada con cada columna del arreglo State con una operación XOR bit a bit hasta 
ueda representada en la figura 11. 
 
AddRoundKey( ); opera cada columna del arreglo State con una llave a través de una operación XOR 
 
 
4
6 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
Key Expansion 
 
El algoritmo AES toma una llave K, y realiza una rutina denominada Key Expansion para 
generar un esquema de llaves (key schedule). La rutina Key Expansion genera un total de 
Nb(Nr+1) palabras: el algoritmo requiere un conjunto inicial de Nb palabras, y cada una 
de las Nr rondas requieren Nb palabras de un bloque de llave (key data). El esquema de 
llaves (key Schedule) consiste de un arreglo lineal de palabras de 4-bytes, denotadas [wi], 
con i en el rango 0 ≤ i < Nb(Nr+1). 
El algoritmo en pseudo-código se presenta a continuación: 
KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk) 
begin 
word temp 
i = 0 
 
while (i < Nk) 
w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) 
i = i+1 
end while 
 
i = Nk 
 
while (i < Nb * (Nr+1)] 
temp = w[i-1] 
if (i mod Nk = 0) 
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] 
else if (Nk > 6 and i mod Nk = 4) 
temp = SubWord(temp) 
end if 
w[i] = w[i-Nk] xor temp 
i = i + 1 
end while 
end 
 
 
 
 
4
7 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
SubWord( ) es una función que toma una palabra de entrada (4-byte) y le aplica la 
sustitución S-Box a cada uno de los 4-bytes, produciendo una palabra de salida. La 
función RotWord( ) toma una palabra [a0,a1,a2,a3] como entrada, realiza una permutación 
cíclica y regresa la palabra [a1,a2,a3,a0]. La ronda constante Rcon[i] , contiene los valores 
dados por [xi-1,{00},{00},{00}], con xi-1 potencias de x (x es denotada como {02}) en el 
campo GF(28) (11). 
Como el lector puede apreciar en el pseudo-código, las primeras Nk palabras de la llave a 
expandir son tomadas de la llave inicial (Cipher Key). Cada palabra siguiente, w[i] , es 
operada a través de un XOR con la palabra anterior, w[i-1] ; continua así para las todas 
las posiciones de la palabra. Para las palabras que corresponden con las posiciones que 
son múltiplos de Nk, una transformación es aplicada a w[i-1] antes de la operación XOR, 
seguida de una operación XOR con el arreglo constante Rcon[i] . Dicha transformación 
consiste de un corrimiento cíclico de los bytes en una palabra (RotWord( ) ), seguida de 
una sustitución de todos los bytes en la palabra (SubWord( ) ). 
Cabe resaltar que la rutina para expandir una llave de 256 bits (Nk=8) es ligeramente 
diferente de las rutinas para expandir llaves de 128 y 192 bits. Si Nk=8 e i-4 es múltiplo de 
Nk, entonces SubWord( ) se aplica a la palabra w[i-1] antes de la operación XOR. 
 
 
 
 
4
8 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
CCAAPPÍÍTTUULLOO IIIIII 
 
FFUUNNDDAAMMEENNTTOOSS MMAATTEEMMÁÁTTIICCOOSS 
 
Una permutación de un conjunto de objetos distintos es una ordenación de esos objetos 
(12). Es bien sabido que el número de permutaciones de un conjunto de n elementos 
distintos se calcula a través del factorial de dicho número de elementos, (n!). Por tanto, si 
tuviésemos un conjunto de 8 elementos, podríamos calcular el número de permutaciones 
existentes, el cual sería 8!= 40,320. 
Imagine el lector trabajar con cadenas de 192 posiciones, se tendrían 192! permutaciones 
posibles de ser utilizadas, esto es 3.54x10356 aproximadamente, pero, calcularlas todas y 
asignarles un número para utilizar posteriormente una de ellas es imposible en este 
momento, dado que para cadenas de 8 posiciones, habrá 40,320 permutaciones; para 
cadenas de 10 posiciones habrá 3,628,800 permutaciones; para cadenas de 20 
posiciones se tienen 2,432,902,008,176,640,000 permutaciones, y crecen más rápido que 
cualquier función del tipo f(n)=an. 
La pregunta sería, ¿se puede diseñar un algoritmo que sea capaz de asignar a un número 
entero positivo una de las n! permutaciones en un número razonable de pasos?, todavía 
más, cada vez que se desee esconder información (encriptar), ¿se podrá utilizar una 
permutación diferente, esto es, variable y no fija?. En el caso del algoritmo DES, siempre 
se utiliza una permutación fija (conocida), la cual permite a los criptoanalistas tratar de 
romper el algoritmo realizando un análisis diferencial, dado que dicha permutación ha 
quedado publicada en el documento que define el funcionamiento del criptosistema. 
 
 
4
9 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
En este punto, se puede plantear la siguiente pregunta con objeto optimizar recursos de 
cómputo: ¿habrá manera de construir una permutación de 192 posiciones a partir de 
permutaciones más pequeñas?. Y por último, ¿se podrá implementar el algoritmo para 
encriptar bloques de 192 bits, utilizando llaves del mismo tamaño en un programa de 
cómputo que sea capaz de manejar números tan grandes como 128! para calcular las 
permutaciones variables y no fijas?. 
Al trabajar con números que representen cadenas de 192 bits, se habla de operar 
números del orden de 10356 aproximadamente, mientras que trabajar con números que 
representen cadenas de 128 bits, se habla de números del orden de 10215 
aproximadamente, lo cual representa ahorro de recursos computacionales (4), puesto que 
10215 es 10141 veces más pequeño que 10356; (10356/10215=10141). 
Si fuera posible controlar la permutación a utilizar para llevar a cabo el proceso de 
mezclado de la información, se complicaría el proceso de ataque al algoritmo, porque 
quedaría oculta la permutación utilizada en el proceso de cifrado. 
Se expondrán dos teoremas que proporcionarán las bases matemáticas para brindar 
respuestas a los cuestionamientos planteados anteriormente. 
 
 
 
5
0 
Algoritmo de encriptación simétrico que procesa bloques de datos de 192 bits, con llaves de cifrado de 
192 bits, empleando los teoremas Factorial y JV 
 
 
TEOREMA JV 
 
Antes de enunciar el teorema JV, se darán ciertas condiciones matemáticas que servirán 
para dar formalidad al enunciado. De acuerdo con el autor del teorema (5), se tiene que: 
Dados dos números enteros positivos n, m tales que, 0 ≤ n ≤ m!-1, utilizando el algoritmo 
para la División Euclidiana, el número n puede escribirse como sigue: 
n = C0(m-1)! + C1(m-2)! + C2(m-3)! + … + Cm-2(1)! (1) 
Observe el lector que n pertenece al conjunto Nm = { n є N | 0 ≤ n ≤ m! - 1} y (m-1)!, (m-2)!, 
…,1! son considerados valores fijos. 
Por otro lado, se puede comprobar que: 
0 ≤ Ci < (m-i), donde 0 ≤ i ≤ (m-2); (2) 
Lo anterior significa que, los valores de los Ci son cocientes cuando se realizan divisiones 
entre (m-1)!, (m-2)!,…,1!; a su vez cada Ci es menor que su respectiva (m-i) constante. 
Una vez calculados los valores de C0, C1, C2, …, Cm-2, se está en condiciones de construir 
el siguiente algoritmo: 
Paso 0. Se define un arreglo en orden creciente de la siguiente manera: X[0]=0, X[1]=1, 
X[2]=2, X[3]=3, …, X[m-1]=m-1. 
Paso 1. Usando la expresión 2, se tiene que C0 < m; por tanto, X[C0] es uno de los 
elementos del arreglo dado en el paso 0. X[C0] se elimina del arreglo y un nuevo arreglo 
se define desde X[0] hasta X[m-2]. 
Paso 2. De nuevo, usando la expresión 2, se tiene que C1 < m-1; por tanto, X[C1] es uno 
de los elementos de el arreglo definido en el paso 1. Continuando con el orden

Otros materiales