Está en la página 1de 127

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TCNICA SUPERIOR DE INGENIERA (ICAI)


INGENIERO EN INFORMTICA

PROYECTO FIN DE CARRERA

EL ALGORITMO CRIPTOGRFICO
AES PARA PROTECCIN DE DATOS

AUTOR:
Madrid

D. Miguel Vzquez Fernndez


Septiembre de 2007

Autorizada la entrega del proyecto del alumno:

D. Miguel Vzquez Fernndez


Madrid, 3 de septiembre de 2007

EL DIRECTOR DEL PROYECTO

Fdo.: Dr. D. Francisco Javier Rodrguez Gmez

V B del Coordinador de Proyectos

Fdo.: D. David Contreras Brcena

Fecha: / /

UNIVERSIDAD PONTIFICIA COMILLAS


ESCUELA TCNICA SUPERIOR DE INGENIERA (ICAI)
INGENIERO EN INFORMTICA

PROYECTO FIN DE CARRERA

EL ALGORITMO CRIPTOGRFICO AES


PARA PROTECCIN DE DATOS

AUTOR:

D. Miguel Vzquez Fernndez

DIRECTOR:

Dr. D. Francisco Javier Rodrguez Gmez

El Algoritmo Criptogrfico AES para


Proteccin de Datos

Agradecimientos
A mi familia, por mostrarme su apoyo y su ayuda, animndome y protegindome. Por
ensearme y dedicarme su gran esfuerzo para que todo esto fuera posible.

A mi Director y gran amigo, Francisco Javier Rodrguez Gmez, por su paciencia y


ayuda. Por todos los valores enseados y su gran dedicacin en todo momento.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Resumen
En el presente Proyecto se presentan unos estudios sobre el estndar de cifrado para
proteccin de datos, el algoritmo criptogrfico AES, basado en el algoritmo Rijndael,
pretendiendo analizar y estudiar las bases matemticas de este algoritmo, as como su
implementacin y su aplicacin grfica para una mejor comprensin.

De esta manera el principal objetivo consistir en desarrollar una descripcin de los


fundamentos matemticos y los mtodos o algoritmos numricos que cumplan con unas
condiciones especificadas utilizadas por el algoritmo.

A su vez se har una amplia investigacin de dichas condiciones especficas de los


elementos principales como son la clave, el cifrado y el descifrado, complementada con una
amplia documentacin para una mejor comprensin y entendimiento.

Para comprobar y demostrar estos objetivos se ha desarrollado una serie de cdigos y


aplicaciones que ayudarn a su mejor entendimiento y su integracin en las diferentes aplicaciones
prcticas del mundo real.

Este Proyecto tambin sirve para demostrar y comprobar cmo mediante el procesamiento
matemtico, numrico y simblico, la importancia que este campo tiene en una disciplina tan
importante como es el de la seguridad y la proteccin de datos, tan significativo en nuestros das,
donde hay muchsimas posibilidades de acceso a una misma informacin.

La mayor importancia y motivacin de este Proyecto reside en el gran inters que ha

II

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

despertado el mundo de la codificacin, la proteccin de datos, la seguridad y la importancia que


estos campos tienen y tendrn en un futuro muy prximo en el mundo de la informtica y las
comunicaciones. Mxime cuando se observa que estas disciplinas tecnolgicas evolucionan a
pasos agigantados y se requieren teoras matemticas ms seguras.

III

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Abstract
This project presents a study about the Standard for an encrypted protection of data, AES
the advanced cryptographic algorithm, which is based on the Rijndael algorithm. It is intended to
analyze and to study the mathematical bases of this algorithm, at the same time as the
implementation and the graphical application for a better understanding.

In this connection, the main objective will consist in developing a description of the
mathematical foundations and the methods or numerical algorithms that meet specific conditions
used by the algorithm.

Also, such specific conditions- key, encrypted and decrypted will be subject to a large
investigation which will be complemented with the full documentation for its better
comprehension and understanding.

To test and substantiate such objectives, a series of codes and applications have been
developed in order to help its understanding and its integration into practical applications in the
real world.

This project also pretends to test and show, the importance of mathematical, numerical
and symbolic process knowledge in the field of security and the data protection discipline, key
knowledge in today world with many ways to access information

The importance and motivation of this project respond to the significant interest that the
world of codification, data protection and information security currently have. Moreover, greater

IV

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

interest are expected in the near future, in everything related to the world of communications and
computer science, as this technological discipline evolve at a rapid pace that requires very secure
mathematical developments.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

ndice
ndice......................................................................................................................................... VI
1. Introduccin........................................................................................................................... 2
1.1. Historia.................................................................................................................... 5
1.2 Objetivos del Proyecto............................................................................................. 17
2. Fundamentos Matemticos....................................................................................................
2.1. Campos Finitos GF(2^8).........................................................................................
2.2 Suma en GF(2^8).....................................................................................................
2.3 Multiplicacion en GF(2^8).......................................................................................
2.4 Multiplicacion de polinomios de 4 bytes en GF(2^8)..............................................

19
19
22
23
25

3. Especificacin del Algoritmo................................................................................................


3.1 Estructura del Algoritmo..........................................................................................
3.2 Descripcin del proceso de cifrado..........................................................................
3.3 Funciones utilizadas para el cifrado.........................................................................
3.3.1 Funcin AddRoundKey..............................................................................
3.3.1.1 Clculo de las subclaves...............................................................
3.3.2 Funcin ByteSub........................................................................................
3.3.3 Funcin ShiftRow.......................................................................................
3.3.4 Funcin MixColumns.................................................................................
3.3.5 Funcin KeySchedule.................................................................................
3.3.6 Ejemplo Explicativo del Algoritmo de cifrado..........................................
3.4 Descripcin del proceso de descifrado.....................................................................
3.4.1 Funcin utilizada para el descifrado...........................................................
3.5 Ejemplo de Cifrado y Descifrado.............................................................................

27
29
31
35
37
39
40
43
46
48
52
54
56
58

4. Aspectos en la Implementacin.............................................................................................
4.1 Funcin Seleccin de clave......................................................................................
4.2 Funcin de expansin de clave.................................................................................
4.3 Desarrollo del Algoritmo..........................................................................................

65
65
65
69

5. Aplicaciones del algoritmo en la proteccion de datos........................................................... 75


6. Conclusiones y lneas futuras................................................................................................ 79
7. Desarrollo de la aplicacin....................................................................................................
7.1. Ciclo de vida............................................................................................................
7.2. Identificacin de necesidades..................................................................................
7.3. Anlisis de requisitos...............................................................................................
7.4. Arquitectura tcnica.................................................................................................

VI

82
82
90
91
93

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

7.5. Diseo de la interfaz de usuario.............................................................................. 94


8. Valoracin econmica y planificacin.................................................................................. 105
8.1. Introduccin............................................................................................................. 105
8.2. Tcnicas de estimacin de costes....................................................................................... 105
8.3. Planificacin temporal del proyecto........................................................................ 108
8.4. Costes del proyecto.................................................................................................. 108
9. Apndice y Glosario.............................................................................................................. 110
Bibliografa................................................................................................................................ 113

CD-ROM con el Proyecto Fin de Carrera y la estructura de archivos de la Aplicacin Informtica.

VII

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

El Algoritmo Criptogrfico AES para


Proteccin de Datos

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

1. Introduccin
Se puede definir la Criptografa como la ciencia que utiliza las matemticas como
motor de trabajo a la hora de codificar y decodificar datos. De esta manera los datos o
informacin est almacenada y puede ser enviada entre usuarios de forma segura.

La Criptografa abarca muchos campos, tales como revisin de integridad, firmas


digitales, autenticacin, etc. El campo central, sin embargo, es el cifrado, la tecnologa
que permite mantener la confidencialidad de los datos.

Conviene hacer notar que la palabra Criptografa slo hace referencia al uso de
cdigos, por lo que no engloba a las tcnicas que se usan para romper dichos cdigos,
conocidas en su conjunto como Criptoanlisis. En cualquier caso ambas disciplinas estn
ntimamente ligadas; debe tenerse en cuenta que cuando se disea un sistema para cifrar
informacin, hay que tener muy presente su posible criptoanlisis. Finalmente, el trmino
Criptologa, aunque no est recogido an en el Diccionario, se emplea habitualmente para
agrupar Criptografa y Criptoanlisis.

Existen dos tipos fundamentales de criptosistemas:

Criptosistemas simtricos o de clave privada: Son aqullos que emplean la misma


clave k tanto para cifrar como para descifrar. Presentan el inconveniente de que, para ser
empleados en comunicaciones, la clave k debe estar tanto en el emisor como en el
receptor, lo cual plantea la situacin de elegir cmo transmitir la clave de forma segura.

Criptosistemas asimtricos o de clave pblica: Estos emplean una doble clave

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Hk p , kP L. k p se conoce como clave privada y kP se conoce como clave pblica. Una de


ellas sirve para la transformacin E de cifrado y la otra para la transformacin D de
descifrado. En muchos casos son intercambiables, esto es, si se emplea una para cifrar la
otra sirve para descifrar y viceversa. Estos criptosistemas deben cumplir adems que el
conocimiento de la clave pblica k p no permita calcular la clave privada kP Ofrecen un
abanico superior de posibilidades, pudiendo emplearse para establecer comunicaciones
seguras por canales inseguros puesto que nicamente viaja por el canal la clave
pblica, o para llevar a cabo autentificaciones.

En la prctica se emplea una combinacin de estos dos tipos de criptosistemas,


puesto que los segundos presentan el inconveniente de ser computacionalmente mucho
ms costosos que los primeros. En el mundo real se codifican los mensajes (largos)
mediante algoritmos simtricos, que suelen ser muy eficientes, y luego se hace uso de la
criptografa asimtrica para codificar las claves simtricas (cortas).

Hoy da hay un excelente desarrollo de las tecnologas de cifrado en organismos


gubernamentales altamente secretos que cuentan con enormes recursos y miles de
personas.

Conviene hacer una breve resea histrica el NIST en 1977, Instituto Nacional de
Estndares y Tecnologa comenz el proceso de eleccin de un estndar de cifrado
avanzado que sustituyera el algoritmo DES mediante una convocatoria pblica que
garantizara una gran seguridad, mayor que la proporcionada por los algoritmos ya
existentes. El concurso const de tres rondas de mbito eliminatorio dependientes de las
caractersticas presentadas anteriormente.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

El AES (Advanced Encryption Standard) es probablemente un algoritmo de


cifrado de los ms utilizados hoy en da pues es seguro y eficiente, de hecho es el estndar
de cifrado elegido por el Instituto Nacional de estndares y tecnologa como estndar de
proceso de informacin federal.

El crecimiento explosivo de la informtica y la convergencia entre ordenadores y


comunicaciones, hacen pensar que los algoritmos de cifrado correspondern al cdigo
ejecutable ms popular en el futuro. Tiene aplicaciones en los negocios por Internet,
correo electrnico, dinero electrnico (tarjetas de crdito, tarjetas inteligentes), llaveros
electrnicos, chips de seguridad contra robos de coches, registros pblicos. Todas esas
aplicaciones requieren el cifrado de cierta informacin. Ms an, en un mundo donde
todos los ordenadores estn interconectados entre s y todo puede ser accedido por todos,
los sistemas operativos del futuro cifrarn todos los ficheros que guardan en el disco duro
de manera automtica para una mayor seguridad y eficacia.

En el presente proyecto se presentan el estudio del estndar de cifrado para


proteccin de datos algoritmo AES (Advanced Encryption Standard), basado en el
algoritmo criptogrfico Rinjdael, pretendiendo analizar y estudiar las bases matemticas
de este algoritmo, as como su implementacin prctica con una interfaz de usuario para
una mejor comprensin del mismo.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

1.1. Historia
Se puede empezar por ver el resumen bsico de la evolucion del estndar de cifrado
en los ultimos aos y posteriormente se detallar el proceso o procesos de evolucin.

En 1999 DES, cuya longitud de clave era un tanto corta y poda ser un tanto
comprometida, fue sustituido por TDES o TDEA, que triplicaba la clave.

Finalmente en 2001 apareci AES basado en el algoritmo RINJDAEL, que fue el


algoritmo ganador del concurso convocado por NIST pues cumpla las caractersticas
requeridas perfectamente, garantizando la seguridad hasta los siguientes 20 aos.

En el ao 1997, el Instituto Nacional de Estndares y Tecnologa de EEUU


(NIST), emprende un proceso abierto para la seleccin de un nuevo algoritmo de cifrado
(AES), que sustituya al antiguo estndar de cifrado (DES).

Este algoritmo es til no slo para proteger la informacin del Gobierno EE. UU.,
sino que tambin se espera que sea utilizado masivamente por el sector privado, y que sea
adoptado por el resto de pases, incluso Europa, ya que es un algoritmo pblico. Las
caractersticas principales del nuevo algoritmo recaen en la: rapidez, seguridad, eficiencia y
facilidad de implementacin.

a)

Concurso pblico AES

En 1997, el Instituto Nacional de Estndares y Tecnologa de EEUU (NIST)


inicia los primeros pasos para la consolidacin de un Estndar de Cifrado Avanzado (AES),
que pueda permitir proteger los datos confidenciales del gobierno, as como la informacin

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

sensible de los ciudadanos.

El objetivo principal era desarrollar una especificacin que permitiese


encontrar un algoritmo de cifrado que sustituya al obsoleto DES (inseguro actualmente
debido a su pequea clave de 56 bits que permite ataques por fuerza bruta en tiempos
razonables, con mquinas especficas).

Los siguientes criterios de evaluacin y requisitos mnimos de aceptacin


fueron especificados:

1. El algoritmo debe ser pblico y estar:

a) Disponible gratuitamente.

b) Disponible bajo trminos consistentes con la poltica de patentes del Instituto


Nacional Americano de Estndares (American National Standards Institute, ANSI)

2. Debe ser un algoritmo de cifrado en bloque simtrico.

3. Debe estar diseado de manera que se pueda aumentar la longitud de clave segn
las necesidades.

4. Debe ser implementable tanto en HW como en SW.

Los algoritmos que cumplieran esos requisitos seran juzgados de acuerdo con
algunos de los siguientes factores:

Seguridad.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Eficiencia computacional.

Requisitos de memoria.

Adecuacin HW y SW.

Simplicidad de diseo.

Flexibilidad.

Los algoritmos que se presentaron a este concurso adems tenan que soportar
obligatoriamente una longitud de bloque de 128 bits como mnimo, y una longitud de clave
de 128, 192 y 256 bits, al margen de cualesquiera otras longitudes posibles.

La intencin de este estndar es que sea robusto, por lo menos, hasta la mitad del
presente siglo. Aunque los ltimos avances tericos en computacin cuntica hacen temer
que en un plazo breve, si se construyesen estos ingenios, los problemas numricos hoy
considerados irresolubles en un tiempo razonable, como la factorizacin o los logaritmos
discretos, se podrn resolver mucho ms rpido, tirando por tierra la seguridad de los
algoritmos criptogrficos con longitudes de claves actuales.

En otras palabras, asumiendo las velocidades previstas, una mquina cuntica


tardara el mismo tiempo en realizar una bsqueda exhaustiva en un espacio de claves de
256 bits que un ordenador digital actual en un espacio de claves de 128 bits.

Al soportar el estndar claves hasta 256 bits, en un futuro cuando se construyan


estos ingenios se podr dotar de la misma seguridad que hoy da se dara con la clave de

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

128 bits, pero utilizando claves de 256 bits, con la gracia de utilizar el mismo algoritmo. En
el caso, de criptografa asimtrica este problema de aumentar la longitud de las claves, se
podra solucionar utilizando Curvas Elpticas ya que al necesitar de una clave ms
pequea que otros algoritmos, como por ejemplo RSA, para ofrecer la misma seguridad,
aunque aumentramos su clave todava su longitud serarazonable para una transmisin.

NIST, propuso que cualquier organizacin, institucin o persona pudiera participar


de forma activa en este concurso, ya fuera presentando algoritmos, o enviando informes o
pruebas de cualquier tipo para poner en evidencia las caractersticas de cualquier de los
algoritmos candidatos.

Para llevar a cabo la seleccin se propone crear dos rondas de seleccin:

En la primera ronda se deben selecciona los 5 algoritmos mejores, que cumplan


las especificaciones iniciales.

Y en una segunda ronda se decidir el algoritmo algoritmos ganadores.

Para llevar a cabo estas rondas de seleccin, se convocan tres Conferencias, en


distintos lugares del mundo, en las que los algoritmos candidatos, puedan ser probados,
comentados y revisados con lupa por todo el mundo que lo desee.

Durante todo el desarrollo del proceso AES, todos los algoritmos y criterios de
diseo estn disponibles de forma pblica y abierta, por lo que el escrutinio al que han sido
sometidos todos los finalistas ha sido enorme, acorde con la importancia del nuevo AES.
Todos los participantes han contribuido al proceso, analizando las posibles vulnerabilidades
de sus competidores.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Se aceptaron quince candidatos durante la Primera Conferencia de Candidato que


fueron:

CAST-256 Entust Technologies, Inc. (C. Adams).

CRYPTION Future Systems, Inc. (Chae Hoon Lim).

DEAL L. Knudsen, R. Outerbridge.

DFC CNRS-Ecole Normale Superiere (S. Vaudenay).

E2 NTT Nippon Telegraph and Telephone Corporation (M. Kanda).

FROG TecApro International S.A. (D. Georgoudis, Leroux, Chaves).

HPC R. Schoeppel.

LOKI97 L. Brown, J. Pieprzyk, J.Seberry.

MAGENTA Deutshe Telekom AG (K. Huber).

MARS IBM (Nevenko Zunic).

RC6 RSA Laboratories (Rivest, M. Robshaw, Sidney, Yin).

Rijndael Joan Daemen, Vicent Rijmen.

SAFER+ Cylink Corporation (L. Chen).

SERPENT R. Anderson, E. Biham, L. Knudsen.

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

TWOFISH B.Schneier, J.Kelsey, D.Whiting, D.Wagner, C. Hall, N. Ferguson.

La segunda conferencia de Candidatos a AES, se celebr para discutir los resultados


de las numerosas pruebas y criptoanlisis realizados por la comunidad criptogrfica
mundial sobre los quince candidatos iniciales.

Basndose en estos comentarios y anlisis, NIST seleccion cinco candidatos


finalistas.

Los cinco algoritmos seleccionados para la siguiente ronda seran:

MARS.

RC6.

RIJNDAEL.

SERPENT.

TWOFISH.

Los asistentes presentaron nuevos documentos de evaluacin y criptoanlisis de los


ltimos cinco candidatos.

Por fin, el 2 de octubre de 2000, el NIST anunci el algoritmo ganador: Rijndael


propuesto por los belgas Vicent Rijmen y Joan Daemen.

Los motivos para seleccionar a RIJNDAEL, fue su buena combinacin de


seguridad-velocidad-eficiencia, sencillez y flexibilidad.

10

Proyecto Fin de Carrera

b)

Algoritmo Criptogrfico AES para proteccin de datos

Comparativa de los algorimtos finalistas

En este apartado se pretende exponer los resultados obtenidos por los cinco
algoritmos finalistas, en algunos aspectos importantes, como seguridad, rapidez

en

diferentes plataformas.

1.

Seguridad.

La seguridad de los algoritmos, fue el aspecto ms importante que se tuvo en cuenta


en la segunda ronda del proceso de seleccin del NIST, para probar la seguridad de cada
algoritmo se lanzaron varios ataques a cada algoritmo, estos ataques han sido llevados a
cabo, tanto por los autores de algoritmos rivales, como por cualquier otra persona que
enviara la documentacin pertinente al NIST.

En cualquiera de los casos, segn los ataques publicados, los resultados obtenidos
en cada algoritmo fueron:

MARS: parece tener un margen de seguridad elevado. MARS recibi


crticas basadas en su complejidad, la cual puede haber obstaculizado su anlisis de
seguridad durante el proceso de desarrollo del AES.

RC6: parece tener un margen de seguridad adecuado. Sin embargo, RC6


recibi alguna crtica debido a su bajo margen de seguridad respecto al que ofrecieron otros
finalistas. Por otro lado, RC6 ha sido elogiado por su simplicidad, la cual ha facilitado su
anlisis de seguridad durante el tiempo especificado en el proceso de desarrollo del AES.

RIJNDAEL: parece tener un margen de seguridad adecuado. El margen

11

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

de seguridad es un poco difcil de medir, debido a que el nmero de rondas cambia con el
tamao de la clave. Rijndael recibi crticas sobre su margen de seguridad, ya que es de los
ms bajos, entre los finalistas, y que su estructura matemtica puede conducir a ataques. Sin
embargo, su estructura es bastante simple, esto ha facilitado su anlisis de seguridad
durante el tiempo especificado en el proceso de desarrollo del AES.

SERPENT: parece tener un margen de seguridad alto. Serpent tambin


tiene una estructura simple, que ha facilitado su anlisis de seguridad durante el tiempo
especificado de desarrollo del AES.

TWOFISH: parece tener un margen de seguridad alto. El concepto de


margen de seguridad tiene menos significado para este algoritmo que para los dems
finalistas. La dependencia de las S-cajas de Twofish en solo K/2 bits de entropa en el caso
de clave K-bits ha producido algunas especulaciones acerca de que Twofish puede ser
sensible a un ataque divide y vencers, aunque tal ataque no ha sido comprobado. Twofish
ha recibido alguna crtica por su complejidad, haciendo difcil su anlisis durante el tiempo
establecido en el proceso de desarrollo del AES.

2.

Velocidad.

La

realizacin

de

SW

de

MARS,

RC6

SERPENT

no

varan

significativamente para los tres tamaos de clave de AES. Para Rijndael y Twofish, sin
embargo, la configuracin de la clave es lgicamente, ms lento para claves de 192 bits que
para claves de 128 bits, y ms lento todava para claves de 256 bits, aunque en estos casos
ofrecen una compensacin en el incremento de la seguridad.

12

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Comportamiento de la velocidad en varias plataformas.

Hay mucha informacin sobre la velocidad de los algoritmos finalistas, en una gran
variedad de plataformas. Las plataformas para las que se han hecho las pruebas son
procesadores de 32 bits (implementaciones en C y Java), procesadores de 64 bits (C y
ensambladores), procesadores de 8 bits (C y ASM), tarjetas smartcard de 32 bits (ARM), y
Procesadores de Seal Digital (DSP).

A continuacin, se muestran los diferentes resultados obtenidos en cada plataforma,


para los 5 algoritmos finalistas, tanto para cifrar como para descifrar:
PROCESO DE CIFRADO

Leyenda: A: Intel Pentium II, C. B: Linux/GCC-2.7.2.2/Pentium 133 Mhz MMX,C. C: Intel Pentium III 600
Mhz, C. D: Apple G4 PowerPC, C. E: Intel Pentium II/III, C. F: Intel Pentium Pro 200, Symantec Visual Caf 2.5 a,
Java G: Intel Pentium Pro 200, JDK 1.3, Java H: UltraSPARC-1, JDK 1.2, Java I: HP PA-RISC. ASM J: HP IA-64, C
K:Compaq Alpha 21164a 500 Mhz, C. L: Compag Alpha 21264,C M: SGI 300 Mhz R12000.C N: Motorola 6805 CPU
core. C O: Z80 CPU+coprocesor.

13

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Velocidad de cifrado para diferentes plataformas.


Figura 1
PROCESO DE DESCIFRADO.
Leyenda B: Linux/GCC-2.7.2.2/Pentium 133 Mhz MMX,C. C: Intel Pentium III 600 Mhz, C. D: Apple G4
PowerPC, C. E: Intel Pentium II/III, C. F: Intel Pentium Pro 200, Symantec Visual Caf 2.5 a, Java G: Intel Pentium Pro
200, JDK 1.3, Java H: UltraSPARC-1, JDK 1.2, Java I: HP PA-RISC. ASM J: HP IA-64, C K: Compaq Alpha 21164a

14

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

500 Mhz, C. L: Compag Alpha 21264,C M: SGI 300 Mhz R12000.C N: Motorola 6805 CPU core. C O: Z80
CPU+coprocesor.

15

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Velocidad de descifrado para diferentes plataformas.


Figura 2

16

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

1.2 Objetivos del Proyecto


El proyecto se propuso inicialmente para cumplir y desarrollar con unos objetivos
que se han finalizado en su totalidad. El nimo que ha gobernado todo el proyecto ha sido
predominantemente formativo y explicativo pues la principal

intencin ha sido la de

conseguir un software o aplicacin que junto con un trabajo de estudio e investigacin


pudiera explicar y dotar de ciertos conocimientos escasos en el mbito de la Criptografa
moderna en clave pblica y del propio algoritmo AES.

A continuacin, se comentan los objetivos del proyecto y en qu nivel se han visto


satisfechos.

Realizar un software sobre Windows que permita realizar el cifrado y

descifrado de bloques de texto aplicando el algoritmo AES. Sin duda este ha sido el trabajo
ms complejo, tanto por la bsqueda del algoritmo como su correcta implementacin y su
puesta en funcionamiento.

Realizar un estudio detallado del algoritmo propuesto, es decir, los

principales elementos de los que est formado, las bases matemticas que lo fundamentan y
sobre las que se basa, las transformaciones o funciones que hay que llevar a cabo, as como
entender por qu en unos casos es preferible utilizar una longitud de clave en lugar de otra,
aunque en principio persigan obtener el mismo resultado. Por lo tanto, s que se encuentran
diferencias en el modo de actuacin, y por consiguiente el algoritmo ser ms adecuado
para ciertos problemas en funcin de la naturaleza de los parmetros de entrada, ya que se
abordar con mtodos especficos para cada tipo de parmetros.

17

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Proponer y realizar casos de prueba que servirn como ejemplos de

utilizacin de los distintos casos explicativos del algoritmo, es decir, centrar los ejemplos
en las partes bsicas y fundamentales del funcionamiento y de sus principales elementos
como son las claves y los bloques de entrada, o texto a cifrar y descifrar proporcionando
una serie de problemas resueltos con su pertinente explicacin para la mejor comprensin
de su funcionamiento.

Desarrollar una interfaz grfica de usuario para la aplicacin. Este objetivo

se ha visto modificado durante la realizacin del proyecto. Para ello se haba utilizado el
paquete de criptografa basado en Java llamado Crypto, as como el propio algoritmo AES
tambin llamado RIJNDAEL, algoritmo de libre distribucin, pero por una serie de
problemas y fallos del algoritmo su sustituy por el lenguaje C++. La interfaz permite
ejecutar el algoritmo de manera fcil y sencilla para el usuario, ya que se puede utilizar
incluso sin tener grandes conocimientos del tema criptogrfico. Y adems, se ha
conseguido una aplicacin de manejo sencillo que se espera que pueda tener un buen uso
didctico e inteligible.

18

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

2. Fundamentos Matemticos
En este apartado se van a definir las operaciones matemticas bsicas que se van a
utilizar tanto en el cifrado como para descifrado de un cdigo con el algoritmo Rijndael,
as como algunos conceptos referentes al tratamiento de polinomios.

2.1. Campos Finitos GF(28)


En lgebra abstracta, un cuerpo finito, campo finito o campo de Galois (llamado
as por variste Galois) es un cuerpo que contiene un nmero finito de elementos. Los
cuerpos finitos son importantes en teora de nmeros, geometra algebraica, teora de
Galois, y Criptografa.

Dado que todo cuerpo de caracterstica 0 contiene a los racionales y es por lo tanto
infinito, todos los campos finitos tienen caracterstica prima, y por lo tanto, su tamao (o
cardinalidad) es de la forma pn , para p primo y n > 0 entero (pues el campo es un
espacio vectorial sobre el subcuerpo de cardinalidad p generado por el elemento 1). No es
en general cierto, sin embargo, que todo cuerpo de caracterstica prima sea finito.

Para un primo p, los enteros mdulo p forman un cuerpo de p elementos,


denotado por Z p , Z (pues su grupo aditivo es isomorfo al grupo cclico de p elementos),
F p , o GFH pL; en algunos casos se usa Z p , aunque esta notacin es evitada por teoristas de
los nmeros, pues puede crear confusin con el anillo de los nmeros p - dicos. Todo
cuerpo con p elementos es isomorfo a ste.

19

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Si q = pn es una potencia de un primo, existe (salvo isomorfismo) exactamente un


campo con q elementos, denotado por Fq o GFHqL. Se puede construir como sigue:
encuntrese un polinomio irreducible f HX L de grado n con coeficientes en F p , y defnase
Fq = F p @X D f HTL >, donde F p @X D denota el anillo de todos los polinomios con
coeficientes en F p , f HX L > denota el ideal generado por f HX L, y la barra diagonal
indica el anillo cociente (definido de forma similar al grupo cociente). El polinomio f HX L
se puede hallar factorizando X q - X sobre F p . El campo Fq contiene a (una copia de) F p
como subcampo.

En este algoritmo todos los bytes se interpretan como elementos de un cuerpo


finito. Concretamente, se representan mediante Campos de Galois que se representan
como GFHkL. (Galois Field).

Los campos de Galois son muy interesantes en Criptografa, gracias a que existe
un inverso aditivo y multiplicativo que permite cifrar y descifrar en el mismo cuerpo Zk ,
eliminando as los problemas de redondeo o truncamiento de valores si tales operaciones
de cifrado y descifrado se hubiesen realizado en aritmtica real.

En nuestro caso, interesa utilizar una aritmtica en mdulo p sobre polinomios de


grado m, siendo p un nmero primo. Este campo de Galois queda representado como:
GFH pm L, en donde los elementos de GFH pm L se representan como polinomios con
coeficientes en Z p de grado menor que m, es decir:
GFH pm L = 8l0 + l1 x + l2 x2 + ... + lm-1 xm-1 ; l0 , l1 , l2 , ..., lm-1 Z p <

20

(1)

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Cada elemento de GFH pm L es un resto mdulo pHxL, donde pHxL es un polinomio


irreducible de grado m, esto es, que no puede ser factorizado en polinomios de grado menor
que m.
En el caso del algoritmo Rijndael, sern interesantes los campos del tipo GFH2m L
puesto que los coeficientes en este caso sern los restos del mdulo 2, es decir, 0 y 1, lo que
permite una representacin binaria. Por lo tanto, cada elemento del campo se representa con
m bits y el nmero de elementos ser 2m .
Por ejemplo, para el campo GFH23 L sus elementos son:
0, 1, x, x + 1, x2 + 1, x2 + x, x2 + x + 1,

que son precisamente todos los restos de un polinomio de grado m - 1 = 2.

En el caso del algoritmo Rijndael, se definen operaciones a nivel de byte, en el


campo GFH28 L.

Un byte b consiste de los bits b7 b6 b5 b4 b3 b2 b1 b0 ; si se considera como un


polinomio con coeficientes en 80, 1<, se tiene el polinomio:
b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0 .

(2)

Por ejemplo, un byte con el valor hexadecimal 23, en binario 00100011,


corresponde con el polinomio: x5 + x + 1.

21

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

2.2 Suma en GF(28)


En GF( pm ) hay que considerar que las operaciones matemticas sobre los
coeficientes se hacen en mdulo p con lo cual en GF(2m ) se reducen los resultados de los
coeficientes de forma que tanto la suma como la resta se realizan utilizando un OR
exclusivo (XOR), esto es as porque coeficientes iguales darn como suma o resta un 0 y
coeficientes diferentes darn un 1.

Por tanto, para sumar dos polinomios, basta con aplicar la funcin XOR, a cada
elemento de los polinomios, dos a dos. La funcin XOR de dos bits, produce los siguientes
resultados:
00 = 0
10 = 1
01 = 1
11 = 0

(3)

Por tanto, para sumar dos polinomios, basta con aplicar la funcin XOR, a cada
elemento de los polinomios, dos a dos. La funcin XOR de dos bits, produce los siguientes
resultados.
1. Vase un ejemplo de suma de dos polinomios de tamao byte.
A = 5716 = 0101 0111
B = 8316 = 1000 0011.
Expresados en polinomios dentro de GF(28 ) sern:
A = 0101 0111 = x6 + x4 + x2 + x + 1
B = 1000 0011 = x7 + x + 1.

22

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Sumando:
A + B = Hx6 + x4 + x2 + x + 1L + Hx7 + x + 1L mod 2
A + B = Hx7 + x6 + x4 + x2 + 2 x + 2L mod 2
A + B = x7 + x6 + x4 + x2 mod 2 = 1101 0100 = D416

El mismo resultado se obtiene utilizando XOR:


A + B = H0101 0111L H1000 0011L = 1101 0100 = D416
A + B = 857< 883< = 8D4<

2.3 Multiplicacion en GF(28)


En la multiplicacin en GFH2m L, es posible que el resultado contenga elementos que
estn fuera del cuerpo del polinomio (potencias iguales o mayores que m) por lo que se
deben reducir los exponentes mediante un polinomio pHxL necesariamente irreducible y
grado m.
Para GFH28 L (el que utiliza el algoritmo Rijndael), el grado del polinomio
irreducible ser 8 (m = 8). Este polinomio irreducible (es irreducible porque sus nicos
divisores son el uno y el mismo polinomio) se representa por mHxL.

Para el algoritmo Rijndael, el polinomio irreductible es:


mHxL = x8 + x4 + x3 + x + 1.

(4)

Se va a ver un ejemplo de multiplicacin de polinomios:

23

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

2. Multiplicacin de los polinomios que representan los nmeros


A = 5716 = 0101 0111
B = 8316 = 1000 0011.
Expresados en polinomios dentro de GF(28 ) sern:
A = 0101 0111 = x6 + x4 + x2 + x + 1
B = 1000 0011 = x7 + x + 1.
Sea mHxL = x8 + x4 + x3 + x + 1 x8 = x4 + x3 + x + 1.
A * B = Hx6 + x4 + x2 + x + 1L * Hx7 + x + 1L mod 2
A * B = Hx13 + x11 + x9 + x8 + 2 x7 + x6 + x5 + x4 + x3 + 2 x2 + 2 x + 1L mod 2
A * B = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1.
Este resultado hay que reducirlo por mHxL = x8 + x4 + x3 + x + 1 (Obsrvese cmo
x13 , x11 , x9 , x8 estn fuera del cuerpo de 8 bits). Operando se tiene,
A * B = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1
x13 = x5 * x8 = x5 * Hx4 + x3 + x + 1L = x9 + x8 + x6 + x5
x13 = x * Hx4 + x3 + x + 1L + Hx4 + x3 + x + 1L + x6 + x5
x13 = Hx5 + x4 + x2 + xL + Hx4 + x3 + x + 1L + x6 + x5
x13 mod 2 = x6 + x3 + x2 + 1
x11 = x3 * x8 = x3 * Hx4 + x3 + x + 1L

24

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

x11 mod 2 = x7 + x6 + x4 + x3
x9 = x * x8 = x * Hx4 + x3 + x + 1L
x9 mod 2 = x5 + x4 + x2 + x

De donde
A * B = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

Reemplazando los clculos anteriores en la expresin:


A * B = Hx6 + x3 + x2 + 1L + Hx7 + x6 + x4 + x3 L +
Hx5 + x4 + x2 + xL + Hx4 + x3 + x + 1L + x6 + x5 + x4 + x3 + 1 mod 2
A * B = x7 + x6 + 1 = 1100 0001 = C116
O lo que es lo mismo:
857< 883< = 8C1<.

2.4 Multiplicacion de polinomios de 4 bytes en


GF(28)
Dados dos polinomios de cuatro trminos aHxL y bHxL, el resultante de la
multiplicacin de ambos polinomios ser cHxL, lo que se expresa de la siguiente forma:
aHxL = a3 x3 + a2 x2 + a1 x + a0
bHxL = b3 x3 + b2 x2 + b1 x + b0
cHxL = aHxL.bHxL = c6 x6 + c5 x5 + c4 x4 + c3 x3 + c2 x2 + c1 x + c0 .
donde:

25

(5)

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

c0 = a0 .b0 ,
c1 = a1 .b0 a0 .b1 ,
c2 = a2 .b0 a1 .b1 a0 .b2 ,
c3 = a3 .b0 a2 .b1 a1 .b2 a0 .b3 ,
c4 = a3 .b1 a2 .b2 a1 .b3
c5 = a3 .b2 a2 .b3
c6 = a3 .b3
El resultado cHxL no representa una palabra de 4 bytes, asi que hay que reducir cHxL a
un polinomio de mdulo menor que 4. Para el algoritmo Rijndael, se utilizar el polinomio
reductor x4 + 1.
La notacion para la multiplicacin de polinomios es

Si se reduce a grado menor que 4, se define el polinomio dHxL:


dHxL = aHxL bHxL = d3 x3 + d2 x2 + d1 x + d0

(7)

d0 = a0 .b0 a3 .b1 a2 .b2 a1 .b3


d1 = a1 .b0 a0 .b1 a3 .b2 a2 .b3
d2 = a2 .b0 a1 .b1 a0 .b2 a3 .b3
d4 = a3 .b0 a2 .b1 a1 .b2 a0 .b3 .

(8)

donde:

Tambien puede expresarse en una matriz de estados de la siguiente manera:


ij d0 yz ij a0
jj zz jj
jj d1 zz jj a1
jj zz = jj
jj d zz jj a
jjj 2 zzz jjj 2
k d3 { k a3

a3
a0
a1
a2

a2
a3
a0
a1

a1 y i b0 y
zz jj zz
a2 zzzz jjjj b1 zzzz
z.j z.
a3 zzzz jjjj b2 zzzz
zj z
a0 { k b3 {

(9)

26

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3. Especificacin del Algoritmo


Se definen los principales requisitos del algoritmo criptogrfico AES.

a)

Ser pblico.

b)

Ser un algoritmo de cifrado en bloque simtrico, es decir, el algoritmo utiliza un

mtodo criptogrfico que usa una misma clave para cifrar y para descifrar mensajes. Las
dos partes que se comunican han de ponerse de acuerdo sobre la clave a usar, de esta
manera una vez que ambas partes tienen acceso a esta clave, el remitente cifra un mensaje
usndola, lo enva al destinatario, y ste lo descifra con la misma clave.

c)

Estar diseado de manera que se pueda aumentar la longitud de clave segn las

necesidades, de manera que las claves podrn variar siempre y cuando el tamao sea
mltiplo de 4 bytes. Las longitudes de clave utilizadas por defecto sern 128 bits, 192 bits y
256 bits.

d)

A su vez est diseado para que el tamao de los bloques de datos tambin sea

variable dentro del mismo rango y con las mismas restricciones, es decir, bloques de datos
cuyo tamao sea mltiplo de 4 bytes.

e)

Su diseo tambin especifica que el algoritmo opere a nivel de byte, de manera que

estos sean interpretados como elementos de un cuerpo de Galois GFH28 L.

f)

Ser implementable tanto en hardware como en software.

g)

Estar disponible gratuitamente, o bien disponible bajo trminos consistentes con la

27

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

poltica de patentes del Instituto Nacional Americano de Estndares (American National


Standards Institute, ANSI).

En el siguiente grfico se puede ver una idea bsica del funcionamiento de


cualquier algoritmo criptogrfico, en nuestro caso el algoritmo AES, simplemente como
ayuda para posteriores explicaciones ms concretas.

Algoritmo criptogrfico de cave simtrica.


Figura 3

28

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.1 Estructura del Algoritmo


La estructura del algoritmo Rijndael est formado por un conjunto de rondas,
entendiendo por rondas un conjunto de iteraciones de cuatro funciones matemticas
diferentes e invertibles.

Por tanto, el algoritmo se basa en aplicar un nmero de rondas determinado a una


informacin en claro para producir una informacin cifrada. La informacin generada por
cada funcin es un resultado intermedio, que se conoce como Estado, o si se prefiere
Estado Intermedio.

El algoritmo representa el Estado como un matriz rectangular de bytes, que posee


cuatro filas y Nb columnas. Siendo el nmero de columnas Nb en funcin del tamao del
bloque:
Nb = tamao del bloque utilizado en bits 32.

(10)

De esta manera, si se tiene un bloque con 128 bits se tendra una matriz de cuatro
filas y Nb = 128 32 = 4 columnas quedando una matriz de forma:
a00
a10
a20
a30

a01
a11
a21
a31

a02
a12
a22
a32

a03
a13
a23
a33

(11)

La clave del sistema se representa con una estructura anloga a la del Estado, es
decir, se representa mediante una matriz rectangular de bytes de cuatro filas y Nk columnas.
Siendo el nmero de columnas Nk en funcin del tamao de la clave:
Nk = tamao de la clave en bits 32.

29

(12)

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

De esta manera, al igual que ocurra con el tamao del bloque, si se tiene una clave
con 128 bits se dispondra de una matriz de cuatro filas y Nr = 128 32 = 4 columnas,
quedando una matriz de forma:
k00
k10
k20
k30

k01
k11
k21
k31

k02
k12
k22
k32

k03
k13
k23
k33

(13)

El nmero de iteraciones o vueltas de las cuatro transformaciones sobre la


informacin, o mejor dicho sobre la matriz de Estado Intermedio depende de la versin del
algoritmo que se utilice. Los autores definen que para tamaos de bloques y claves entre
128 y 256 bits (con incrementos de 32 bits) el nmero de vueltas Nr es determinado por la
siguiente expresin:
Nr = mxHNk , Nb L + 6.

(14)

De manera simplemente informativa se ver cmo quedaran las rondas para cada
uno de los posibles resultados, siendo la primera columna el tamao de la clave y la
primera fila el tamao del bloque:
Clave bloque Nb = 4 H128 bitsL Nb = 6 H192 bitsL Nb = 8 H256 bitsL
Nk = 4 H128 bitsL
10
12
14
Nk = 6 H192 bitsL
12
12
14
Nk = 8 H256 bitsL
14
14
14
Tabla 1

30

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.2 Descripcin del proceso de cifrado


Despus de ver la visin general del algoritmo, se va a profundizar en cmo se
utiliza para cifrar informacin. Grficamente el proceso de cifrado se puede ver de la
siguiente manera:

Cifrado del algoritmo AES.


Figura 4
Se puede ver en el grfico que el proceso de cifrado consiste en la aplicacin de
cuatro funciones matemticas invertibles sobre la informacin que se desea cifrar. Las
transformaciones se realizan de forma reiterativa para cada ronda o vuelta definida.

31

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Las funciones matemticas realizadas son:

a)

Funcin AddRoundKey.

Es la primera transformacin que se ejecuta, es una suma XOR entre el texto plano
y la clave.

b)

Funcin ByteSub.

La

transformacin

ByteSub,

es

una

sustitucin

no

lineal,

que

opera

independientemente en cada byte de la matriz. Cada byte del bloque de entrada es invertido
sobre GFH28 L y luego sufre una transformacin afn. La operacin completa puede
realizarse mediante una matriz de sustitucin, conocida con el nombre de S-Box. La
transformacin ByteSub por medio del uso de dicha matriz, consiste en tomar el elemento
(byte) de la matriz A de cuatro filas por cuatro columnas, en formato hexadecimal. Dicho
nmero se transforma en el subndice necesario para extraer un valor de la matriz S-box.

c)

Funcin ShiftRow.

A continuacin de ByteSub, se aplica la transformacin ShiftRow. En la misma, los


bytes de las tres ltimas filas son desplazados cclicamente en distintas cantidades o
posiciones (offsets). En la primera fila el offset es nulo, es decir, que la fila no se desplaza.
En la segunda fila, el desplazamiento es de un byte hacia la izquierda, en la tercera es de
dos bytes y en la ltima es de tres bytes, tambin hacia la izquierda.

32

Proyecto Fin de Carrera

d)

Algoritmo Criptogrfico AES para proteccin de datos

Funcin MixColumn.

Se trata de la transformacin siguiente a ShiftRow. MixColumns opera columna por


columna de la matriz, tomando a cada una como un polinomio de grado tres. Es decir, que
las columnas son consideradas como polinomios en el campo y cada una es multiplicada
por una fila de la siguiente matriz Ref(x).

En esencia, la informacin a cifrar se va transformando en la matriz de Estado.


Esta matriz de Estado se introduce al cifrador, y sufre una primera transformacin, en la
ronda inicial, que consiste en una operacin or-exclusiva (AddRoundKey) entre una
Subclave generada y la matriz de Estado. A continuacin, a la matriz de Estado resultante
se le aplican cuatro transformaciones invertibles, repitindose este proceso Nr - 1 veces, en
lo que se conoce como Ronda Estndar. Finalmente, se le aplica una ltima ronda o vuelta
a la matriz de Estado resultante de las Nr - 1 rondas anteriores, aplicando las funciones
ByteSub, ShiftRow y AddRoundKey en este orden. El resultado de la ronda final produce el
bloque cifrado deseado.

En la figura se puede observar la evolucin del cifrador, y cmo entra en juego la


clave del usuario generando subclaves que se utilizan para cada ronda.

Posteriormente, se va a profundizar en cada una de las funciones que configuran el


algoritmo cifrador Rijndael para comprender mejor su funcionamiento.
El codigo utilizado para el procedimiento de cifrado es el indicado a continuacin.

33

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Procedimiento para cifrar


int rijndaelEncrypt
Hunsigned char a@4D@4D, unsigned char rk@10 + 1D@4D@4DL
8
Encryption of one block
int r, BC, ROUNDS, i, j, k;
int B@8D, X@8D, Y@8D, XE;
BC = 4;
ROUNDS = 10;
KeyAddition Ha, rk@0D, BCL;
for Hr = 1; r < ROUNDS; r ++L
8
Substitution Ha, S, BCL;
ShiftRow Ha, 0, BCL;
MixColumn Ha, BCL;
KeyAddition Ha, rk@rD, BCL;
gotoxy H6, 5L;
printf H"CT@"L; printf H"%d", rL; printf H"D = "L;
for Hi = 0; i < 4; i ++L
for Hj = 0; j < 4; j ++L
printf H"%02X ", a@jD@iDL;
getchar HL;
<
Substitution Ha, S, BCL;
ShiftRow Ha, 0, BCL;
KeyAddition Ha, rk@ROUNDSD, BCL;
printf H"\n\n\n"L;
printf H"Cipher Text CT = "L;
for Hi = 0; i < 4; i ++L
for Hj = 0; j < 4; j ++L
printf H"%02X ", a@jD@iDL;
gotoxy H60, 24L;
printf H"Press Enter...."L;
getchar HL;
clrscr HL;
return 0;
<

34

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3 Funciones utilizadas para el cifrado


En esta seccin se da la descripcin detallada del algoritmo AES.

Primero, recordar que AES trabaja con bloques de datos de 128 bits y longitudes de
claves de 128, 192, 256 bit. Adems AES tiene 10, 12 14 vueltas respectivamente. Cada
vuelta de AES consiste en la aplicacin de una ronda estndar, que consiste en cuatro
transformaciones bsicas. La ltima ronda es especial y consiste de tres operaciones
bsicas, aadiendo siempre una ronda inicial. Por otro lado, se tiene el programa de claves
o extensin de la clave.

Recordar que AES interpreta el bloque de entrada de 128 bits, como una matriz
4 x 4 de entradas de bytes. Si el bloque es de 192 bits se agregan dos columnas ms, y si es
de 256 se agregan cuatro columnas ms.

De esta manera el bloque de datos, suponiendo que se dispone de un bloque de 128


bits, es de la manera siguiente:
a00 a10 a20 a30 a01 a11 a21 a31 a02 a12 a22 a32 a03 a13 a23 a33 .

(15)

Los cuatro primeros bytes conforman la primera columna. As con los siguientes
grupos de cuatro bytes se irn completando las diferentes columnas de manera que se queda
una matriz de la siguiente manera.
ij a00
jj
jj a10
jj
jj a
jjj 20
k a30

a01
a11
a21
a31

a02
a12
a22
a32

a03 y
zz
a13 zzzz
z.
a23 zzzz
z
a33 {

(16)

35

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

De esta misma manera se obtendrn las matrices respectivas para los bloques de
192 y 256 bits, siendo las matrices de 6 de 8 columnas, respectivamente.

De esta manera la clave, suponiendo se tiene como ejemplo una de 128 bits, es de la
manera indicada:
k00 k10 k20 k30 k01 k11 k21 k31 k02 k12 k22 k32 k03 k13 k23 k33 .

(17)

Los cuatro primeros bytes conforman la primera columna y los siguientes grupos de
cuatro bytes irn completando las diferentes columnas de manera que se queda una matriz
de la siguiente manera.
ij k00
jj
jj k10
jj
jj k
jjj 20
k k30

k01
k11
k21
k31

k02
k12
k22
k32

k03 y
zz
k13 zzzz
z.
k23 zzzz
z
k33 {

(18)

A partir de esta matriz combinada, con las funciones que se pasa a explicar en los
siguientes apartados, se obtendr una descripcin detallada del algoritmo. Las funciones
que se explicarn tienen un propsito fijo y preciso:

AddRoundKey o etapa de adicin de clave.

SubByte o sustituciones de bytes.

ShiftRows o estapa de desplazamiento de filas.

MixColumns o etapas de mezcla de columnas.

KeySchedule o expansin de clave.

Para el mejor entendimiento de estas etapas se muestra un ejemplo en el apartado

36

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3.6 Ejemplo especificativo, adems de la explicacin de cada una de ellas en cada


apartado especfico.

3.3.1 Funcin AddRoundKey


En esta funcin, etapa o tratamiento se procede a realizar un XOR byte a byte entre
la matriz de estado o matriz intermedia y la matriz de la clave o subclave, dependiendo de
la ronda en la que se encuentre.

Matriz de estado XOR Matriz Clave


Figura 5
De esta manera toma la matriz @ai j D y @ki j D y aplicando el XOR da como resultado
la matriz @ai j ki j D.

Una vez acaba la funcin MixColumns, se vuelve a a proceder con esta funcin de
AddRoundKey, crendose de nuevo un estado intermedio 1 pero en la siguiente ronda, o
bien de estar en la ltima ronda se crear el bloque de salida.

37

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

En este caso la matriz utilizada para realizar el XOR es la matriz de subclave, que
se explicar en el siguiente subapartado.

El cdigo utilizado para esta funcin es el siguiente:


Funcin que efecta la transformacin AddRoundKey
void KeyAddition
Hunsigned char a@4D@4D, unsigned char rk@4D@4D, unsigned char BCL
8
int i, j;
for Hi = 0; i < 4; i ++L
for Hj = 0; j < BC; j ++L
a@iD@jD ^= rk@iD@jD;
<

38

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3.1.1 Clculo de las subclaves


Basndose en el principio de la criptografa moderna, mediante el cual se establece
que la seguridad de un algoritmo slo debe depender de la clave utilizada, se utilizan
diferentes subclaves Ki tanto en el cifrado como en el descifrado para que el resultado del
algoritmo dependa de una informacin externa al sistema: la clave del usuario.

Estas subclaves (RoundKeys) se derivan de la clave principal K mediante el uso de


dos funciones: una de expansin y otra de seleccin.

Siendo n el nmero de rondas que aplique el algoritmo, el nmero total de bits para
subclaves que se necesitan para todas las rondas es igual a el tamao del bloque utilizado
multiplicado por n + 1. Tambin se puede ver como 4 Hn + 1L * Nb bytes. Es decir, por
ejemplo, para un tamao de bloque de 128 bits y 10 vueltas, se necesitan 1408 bits de
subclaves: H128 * 11 = 1408 bitsL.

Por tanto, lgicamente, el nmero de claves que se generan depende del nmero de
rondas empleadas HNr L.

39

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3.2 Funcin ByteSub


En esta funcin, etapa o tratamiento se procede a realizar una sustitucin no lineal
que se aplica a cada byte de la matriz de estado de forma independiente, generando un
nuevo byte, es decir, a cada elemento de la matriz de estado se le sustituye por otro byte
que depende del primero mencionado. Esta sustitucin se lleva a cabo utilizando unas
tablas o matrices S-Box invertibles.

Esta sustitucin tiene dos apartados o transformaciones:

1.

Cada byte es considerado como un elemento del GFH28 L que genera el polinomio

irreducible mHxL = x8 + x4 + x3 + x + 1 y sustituido por su inversa multiplicativa. El valor


cero en este caso no vara pues no tiene recproco.

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

00

01

8D

F6

CB

52

7B

D1

E8

4F

29

C0

B0

E1

E5

C7

74

B4

AA

4B

99

2B

60

5F

58

3F

FD

CC

FF

40

EE

B2

3A

6E

5A

F1

55

4D

A8

C9

C1

0A

98

15

30

44

A2

C2

2C

45

92

6C

F3

39

66

42

F2

35

20

6F

77

BB

59

19

1D

FE

37

67

2D

31

F5

69

A7

64

AB

13

54

25

E9

09

ED

5C

05

CA

4C

24

87

BF

18

3E

22

F0

51

EC

61

17

16

5E

AF

D3

49

A6

36

43

F4

47

91

DF

33

93

21

3B

79

B7

97

85

10

B5

BA

3C

B6

70

D0

06

A1

FA

81

82

83

7E

7F

80

96

73

BE

56

9B

9E

95

D9

F7

02

B9

A4

DE

6A

32

6D

D8

8A

84

72

2A

14

9F

88

F9

DC

89

9A

FB

7C

2E

C3

8F

B8

65

48

26

C8

12

4A

CE

E7

D2

62

0C

E0

1F

EF

11

75

78

71

A5

8E

76

3D

BD

BC

86

57

0B

28

2F

A3

DA

D4

E4

0F

A9

27

53

04

1B

FC

AC

E6

7A

07

AE

63

C5

DB

E2

EA

94

8B

C4

D5

9D

F8

90

6B

B1

0D

D6

EB

C6

0E

CF

AD

08

4E

D7

E3

5D

50

1E

B3

5B

23

38

34

68

46

03

8C

DD

9C

7D

A0

CD

1A

41

1C

Tabla de inversos multiplicativos en hexadecimal.


Figura 6

40

Proyecto Fin de Carrera

2.

Algoritmo Criptogrfico AES para proteccin de datos

Despus se aplica la siguiente transformacin afn en GFH28 L, siendo x0 , x1 , ..., x7

los bits del byte correspondiente, y a su vez y0 , y1, ..., y7 los bits del byte correspondiente al
resultado.

ij y0 yz i 1
jj zz jj
jj y1 zz jj 1
jjj zzz jjj
jj y2 zz jj 1
jjj zzz jjj
jj y3 zz jj 1
jjj zzz = jjj
jj zz jj 1
jjj y4 zzz jjj
jj zz jj 0
jjj y5 zzz jjj
jj zz jj
jjj y6 zzz jjj 0
j z
k y7 { k 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

1
0
0
0
1
1
1
1

1
1
0
0
0
1
1
1

1
1
1
0
0
0
1
1

1 y ij x0 yz i 1 y
zz jj zz jj zz
1 zzzz jjjj x1 zzzz jjjj 1 zzzz
zj z j z
1 zzzz jjjj x2 zzzz jjjj 0 zzzz
zj z j z
1 zzzz jjjj x3 zzzz jjjj 0 zzzz
z.j z + j z.
0 zzzz jjjj x4 zzzz jjjj 0 zzzz
zj z j z
0 zzzz jjjj x5 zzzz jjjj 1 zzzz
z jj zz j z
0 zzzz jjj x6 zzz jjjj 1 zzzz
z jj zz j z
1 { k x7 { k 0 {

(19)

El resultado final de estas dos transformaciones se puede expresar en una tabla de


sustitucin denominada S-Box aplicada a cada byte, sabiendo que este est expresado en
forma hexadecimal, de manera que el elemento ms a la izquierda deber situarse en la
columna amarilla y el elemento ms a la derecha deber colocarse en la fila azul, siendo el
resultado final el lugar donde coincidan o se unan.

41

Proyecto Fin de Carrera

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Algoritmo Criptogrfico AES para proteccin de datos

63

7C

77

7B

F2

6B

6F

C5

30

01

67

2B

FE

D7

AB

76

CA

82

C9

7D

FA

59

47

F0

AD

D4

A2

AF

9C

A4

72

C0

B7

FD

93

26

36

3F

F7

CC

34

A5

E5

F1

71

D8

31

15

04

C7

23

C3

18

96

05

9A

07

12

80

E2

EB

27

B2

75

09

83

2C

1A

1B

6E

5A

A0

52

3B

D6

B3

29

E3

2F

84

53

D1

00

ED

20

FC

B1

5B

6A

CB

BE

39

4A

4C

58

CF

D0

EF

AA

FB

43

4D

33

85

45

F9

02

7F

50

3C

9F

A8

51

A3

40

8F

92

9D

38

F5

BC

B6

DA

21

10

FF

F3

D2

CD

0C

13

EC

5F

97

44

17

C4

A7

7E

3D

64

5D

19

73

60

81

4F

DC

22

2A

90

88

46

EE

B8

14

DE

5E

0B

DB

E0

32

3A

0A

49

06

24

5C

C2

D3

AC

62

91

95

E4

79

E7

C8

37

6D

8D

D5

4E

A9

6C

56

F4

EA

65

7A

AE

08

BA

78

25

2E

1C

A6

B4

C6

E8

DD

74

1F

4B

BD

8B

8A

70

3E

B5

66

48

03

F6

0E

61

35

57

B9

86

C1

1D

9E

E1

F8

98

11

69

D9

8E

94

9B

1E

87

E9

CE

55

28

DF

8C

A1

89

0D

BF

E6

42

68

41

99

2D

0F

B0

54

BB

16

Tabla de sustitucin S - Box.


Figura 7
El cdigo utilizado para esta funcin es el indicado, a continuacin.
Funcin que efecta la transformacin SubBytes
void Substitution
Hunsigned char a@4D@4D, unsigned char box@256D, unsigned char BCL
8
int i, j;
for Hi = 0; i < 4; i ++L
for Hj = 0; j < BC; j ++L
a@iD@jD = box@a@iD@jDD;
<

42

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3.3 Funcin ShiftRow


En esta funcin, etapa o tratamiento se procede a realizar un desplazamiento a la
izquierda cclicamente de las filas que conforman la matriz de estado actual, es decir, rotar
los bytes de las filas de la matriz de estado resultante de la transformacin anterior a la
izquierda.

Cada fila se desplaza un nmero de posiciones diferentes, este nmero de vueltas o


rotaciones depender del tamao del bloque Nb , explicado en la estructura del algoritmo.

De forma grfica, en un bloque de 128, quedara de la siguiente manera:

Matrices de Estado S y S .
Figura 8
La primera fila que en este caso es la fila0 queda igual.

La segunda fila desplaza un byte, como se muestra en las figuras siguientes.

43

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Figura 9
La tercera columna desplaza dos bytes circularmente.

Figura 10

44

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Finalmente la cuarta fila desplaza 3 bytes circularmente.

Figura 11

45

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

El cdigo utilizado para esta funcion se escribe as:


Funcin que efecta la transformacin ShiftRows void ShiftRow
Hunsigned char a@4D@4D, unsigned char d, unsigned char BCL
8unsigned char tmp@4D;
int i, j;
for Hi = 1; i < 4; i ++L
8for Hj = 0; j < BC; j ++L
tmp@jD = a@iD@Hj + shifts@HHBC 4L >> 1LD@iD@dDL % BCD;
for Hj = 0; j < BC; j ++L
a@iD@jD = tmp@jD;
<
<

3.3.4 Funcin MixColumns


En esta funcin, etapa o tratamiento se procede sobre los bytes de una misma
columna de la matriz de estado resultante de la tranformacion anterior.

Las columnas son tratadas como polinomios, cuyos coeficientes pertenecen a


GFH28 L.
La transformacin consiste en multiplicar las columnas en mdulo x4 + 1 por el
polinomio cHxL = 03 x3 + 01 x2 + 01 x + 02 . De forma matemtica se expresa:
S HxL = cHxL SHxL.

(20)

donde S ' HxL representa la matriz de estado resultante de esta etapa, SHxL representa la matriz
de estados de entrada.

Esta frmula para comprenderla ms fcilmente se puede expresar en forma


matricial de la siguiente manera.

46

Proyecto Fin de Carrera

ij S '0,C yz ij 02
jj
z
jj S '1,C zzz jjjj 01
jj
zz = jj
jj
z
jj S '2,C zzz jjjj 01
jj
zz j
k S '3,C { k 03

Algoritmo Criptogrfico AES para proteccin de datos

03
02
01
01

01
03
02
01

01 y ij S0,C yz
zz j
z
01 zzzz jjjj S1,C zzzz
zz.
z.jj
03 zzzz jjj S2,C zzz
zz
z jj
02 { k S3,C {

De forma grfica, en un bloque de 128, quedara de la siguiente manera:

Figura 12
El cdigo utilizado en esta funcion es el que se muestra a continuacin.
Funcin que efecta la transformacin MixColumns
void MixColumn Hunsigned char a@4D@4D, unsigned char BCL
8
unsigned char b@4D@4D;
int i, j;
for Hj = 0; j < BC; j ++L
for Hi = 0; i < 4; i ++L
b@iD@jD = mul H2, a@iD@jDL ^ mul
H3, a@Hi + 1L % 4D@jDL ^ a@Hi + 2L % 4D@jD ^ a@Hi + 3L % 4D@jD;
for Hi = 0; i < 4; i ++L
for Hj = 0; j < BC; j ++L
a@iD@jD = b@iD@jD;
<

47

(21)

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.3.5 Funcin KeySchedule


Aunque Rijndael est diseado para manejar muchos casos de longitudes de claves
y de bloques, finalmente el algorirmo AES definido en el estndar determina que solo se
permiten los casos de bloques de 128 bits, y longitudes de claves de 128, 192 y 256.

Por otra parte la longitud de 128 bits, garantiza la seguridad del sistema hasta
despus del ao 2030, por lo que en este proyecto se considera slo el caso de claves de
128 bits, aunque los algoritmos pueden ser extendidos fcilmente a los casos restantes.
La clave se expande a una matriz de 4 filas y Nb HNr + 1L columnas:

El cdigo utilizado para la extensin de clave se muestra a continuacin.

48

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

KeyExpansion Hbyte key@4 NkD word@Nb HNr + 1LDL


8
For Hi = 0; i < Nk; i ++L
8
w@iD = Hkey@4 iD, key@4 i + 1D, key@4 i + 2D, key@4 i + 3DL;
<
For Hi = Nk; i < Nb; i ++L
8
temp = w@i 1D;
if Hi % Nk == 0L
temp = SubByte HRotByte HtempLL ^ Rcon@i NkD;
w@iD = w@i NkD ^ temp;
<
...
<

En nuestro caso Nb = Nk = 4,y Nr = 10.

El primer For que nos encontramos lo que quiere decir es que las primeras 4
columnas de la extensin son la clave original.
3. Se toma como ejemplo un vector de prueba para el caso 128 bits.
Clave:

Partiendo

2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 c7 4f 3c

de

la

clave

dada,

se

obtienen

los

valores

para

w0 ,

w2 y w3 , quedando de la siguiente manera :


w0 =2b7e1516, w1 =28aed2a6, w2 =abf71588, w3 =09c74f3c

Si se observa el cdigo y si se ejecuta, se tendra como resultado del primer For:


For Hi = 0; i < Nk; i ++L
8
w@iD = Hkey@4 iD, key@4 i + 1D, key@4 i + 2D, key@4 i + 3DL;
<

49

w1 ,

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

W0 W1 W2 W3

2b
7e
15
16

28
ae
d2
a6

ab 09
f7 cf
15 4 f
88 3 c

Continuando con la ejecucin del cdigo, para nuestro caso, se tendran bloques de
4 filas y 4 columnas, y por lo tanto 10 rondas. De esta manera se puede observar, tambin
en nuestro caso, que si i es multiplo de 4 se sigue un procedimiento espacial.
For Hi = Nk; i < Nb; i ++L
8
temp = w@i 1D;
if Hi % Nk == 0L
temp = SubByte HRotByte HtempLL ^ Rcon@i NkD;
w@iD = w@i NkD ^ temp;
<

En la primera ronda se pasar a calcular W @4D, como ya se cit con anterioridad. Al


al ser mltiplo de 4 se sigue un procedimiento especial aplicando una serie de operaciones:

1.- RotByte, es una rotacin circular de el byte ms arriba de la columna temporal:


en este caso es la columna formada por W @3D.
cf
09
cf
4f

4f
3c
3c
09
2.- SubByte, es la substitucin de byte, de acuerdo con la tabla ya conocida S-Box.
cf
4f
3c
09

S Box

8a
84
eb
01

50

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

3.- Temp XOR Rcon[4/4]: se aplica un XOR entre el Temp, es decir la columna que
sale de las anteriores operaciones, y el Rcon@i Nk D, en este caso resulta:
temp RCon@i NkD

cf
4f
3c
09

01
00
xor
00
00

8b
84
eb
01

4.- Por ltimo se tiene otro XOR de la columna temporal con W @i - 4D, en este caso
W @0D.
temp w@i 4D

8b
84
eb
01

2b
7e
xor
=
15
16

a0
fa
fe
17

De esta manera, despus de esta ronda la clave quedara de la manera siguiente:


W0 W1 W2 W3 W4

2b
7e
15
16

28
ae
d2
a6

ab 09
f7 cf
15 4 f
88 3 c

a0
fa
fe
17

Las sigientes rondas hasta llegar a calcular W @8D, no siguen el procedimiento


especial explicado hasta ahora y simplemente realizar la ltima operacin en la que se
realizar un XOR del temp, que como se sabe es la columna anterior W @i - 1D, y W @i - 4D.
De esta forma se obtiene W @5D, W @6D, W @7D.

51

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

W @5D = W @4D XOR W @1D


W @6D = W @5D XOR W @2D
W @7D = W @6D XOR W @3D

Tras estas 3 rondas la clave tendr la forma:


W0

W1 W2 W3

W4 W5

W6 W7

2b
7e
15
16

28
ae
d2
a6

a0 88
fa 54
fe 2 c
17 b1

23 2 a
a3 6 c
39 76
39 05

ab 09
f7 cf
15 4 f
88 3 c

En la ronda en la que se pasar a calcular W @8D ocurrir como en W @4D, como ya se


cit con anterioridad al ser mltiplo de 4 se sigue un procedimiento especial.

Todas estas operaciones hasta rellenar las 44 columnas de las que est compuesta la
clave en este caso.

3.3.6 Ejemplo Explicativo del Algoritmo de cifrado


Para una mejor comprensin se va a pasar a exponer un ejemplo explicativo en el que
se vea cmo acta cada una de estas funciones sobre una clave y un bloque de datos,
teniendo en cuenta que la ejecucion de las funciones es la siguiente:

AddRoundKeyByteSubShiftRowsMixColumnsAddRoundKey.

52

Proyecto Fin de Carrera

Ejemplo.

Algoritmo Criptogrfico AES para proteccin de datos

Se aplica el algoritmo criptogrfico AES con los siguientes datos:

Bloque de datos: 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34
Clave:
2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 c7 4f 3c.
Se aplica
32 88
i
j
j
j
43 5 a
j
j
j
j
j
j f6 30
j
j
k a8 8 d

la funcin AddKey.
31 e0 y i 2 b 28
z j
j
z
j
31 37 z
7 e ae
z
j
z
j
z
j

z
j
z
j
15 d2
98 07 z
z j
z j
j
a2 34 { k 16 a6

ab
f7
15
88

09 y i 19 a0 9 a e9 y
z
z j
j
j
z
z
3 d f4 c6 f8 z
c7 z
j
z
z
j
z
z
z.
z=j
j
j
z
z
4fz
e3 e2 8 d 48 z
j
z
z
j
z
z
z
z j
3 c { k be 2 b 2 a 08 {

bloque de entrada Clave = Estado Intermedio 1


Para cada elemento del bloque de entrada se realiza una operacion XOR con su
equivalente en posicion del bloque de la clave.

Se aplica la funcin ByteSub.


19 a0 9 a e9 y
d4
i
i
j
z
j
j
z
j
j
z
j
3
d
f4
c6
f8
27
j
z
j
j
z
j
z
j
S box j
j
z
j
j
z
j
e3
e2
8
d
48
11
j
z
j
j
z
j
j
z
j
k be 2 b 2 a 08 {
k ae

e0
bf
98
f1

b8 1 e y
z
z
b4 41 z
z
z
z.
z
5 d 52 z
z
z
z
e5 30 {

Estado Intermedio 1 fiS-boxfi Estado Intermedio 2


Para cada elememto se realizan dos operaiones, realmente equivalente a buscar en
la tabla denominada S-BOX los dos digitos que forman cada elemento y se obtiene el
byte a sustituir.
Funcin ShiftRows.
d4 e0 b8 1 e y i d4
i
j
z
j
z j
j bf
j
j 27 bf b4 41 z
z j
j
j
z
j
z
j
j
j
z
j
j
z
j5d
11
98
5
d
52
j
z
j
z j
j
j
z
j
k ae f1 e5 30 { k 30

e0
b4
52
ae

b8
41
11
f1

1ey
z
z
27 z
z
z
z.
z
98 z
z
z
z
e5 {

Estado Intermedio 2 Estado Intermedio 3


Dependiendo del numero de fila en el que se encuentre se realiza uno dos o n
desplazamientos (corriendo los elementos hacia la izquierda).

53

Proyecto Fin de Carrera

Aplicacin de
d4 e0 b8
i
j
j
j
bf b4 41
j
j
j
j
j
j 5 d 52 11
j
j
k 30 ae f1

Algoritmo Criptogrfico AES para proteccin de datos

la funcin MixColumns.
1 e y i 04 e0 48 28 y
z j
z
j
z
j
z
27 z
66 cb f8 06 z
z
j
z
z
j
z
z
z
j
z
j
z.
z
j
98 z
z j
j 81 19 d3 26 z
z
z
z j
z
e5 { k e5 9 a 7 a 4 c {

Estado Intermedio 3 Estado Intermedio 4


Se
realiza
una
operacion
S HxL =cHxL SHxL
donde
3
2
cHxL = 03 x + 01 x + 01 x + 02, S y S' seran la matriz resultado y la matriz de entrada
respectivamente.

3.4 Descripcin del proceso de descifrado


El proceso de descifrado es muy similar al cifrado, slo hay que hacer el proceso
inverso, es decir, invertir el orden de todas las operaciones realizadas, y hacer las
transformaciones inversas.

Durante el proceso de cifrado, se ha comentado como se realizara el proceso


inverso de cada transformacin, as que en este apartado nicamente se realizar una
descripcin esquemtica del algoritmo de descifrado.

Destacar que en este proceso, las subclaves utilizadas, van desde la ltima generada
en el proceso de cifrado hasta la primera (que corresponder con bytes de la clave elegida
para cifrar).

De forma grfica:

54

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Proceso de descifrado en AES.


Figura 13
El cdigo utilizado para el procedimiento de descifrado es el que a continuacin se
muestra.

55

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Procedimiento para descifrar


int rijndaelDecrypt

Hunsigned char a@4D@4D, unsigned char rk@10 + 1D@4D@4DL


8
int r, BC, ROUNDS;
BC = 4;
ROUNDS = 10;
KeyAddition Ha, rk@ROUNDSD, BCL;
Substitution Ha, Si, BCL;
ShiftRow Ha, 1, BCL;
ROUNDS 1 ordinary rounds
for Hr = ROUNDS 1; r > 0; r L
8
KeyAddition Ha, rk@rD, BCL;
InvMixColumn Ha, BCL;
Substitution Ha, Si, BCL;
ShiftRow Ha, 1, BCL;
<
KeyAddition Ha, rk@0D, BCL;
return 0;
<

3.4.1 Funcin utilizada para el descifrado


Como se ha mencionado en los apartados anteriores las funciones matemticas
utilizadas eran invertibles, de esta forma a la hora de descifrar sern las inversas las
funciones utilizadas.

La funcin AddRoundKey desempea la misma funcin salvo que en vez de


empezar en la primera ronda empezar por la ltima y acabar por la primera.

La funcin Inv-ByteSub realizar la aplicacion inversa de la correspondiente S-box


correspondiente a cada byte de la matriz de estado. De esta manera se obtiene otra tabla con
los valores inversos a los valores de la tabla S-box

56

Proyecto Fin de Carrera

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Algoritmo Criptogrfico AES para proteccin de datos

52

09

6A

D5

30

36

A5

38

BF

40

A3

9E

81

F3

D7

FB

7C

E3

39

82

9B

2F

FF

87

34

8E

43

44

C4

DE

E9

CB

54

7B

94

32

A6

C2

23

3D

EE

4C

95

0B

42

FA

C3

4E

08

2E

A1

66

28

D9

24

B2

76

5B

A2

49

6D

8B

D1

25

72

F8

F6

64

86

68

98

16

D4

A4

5C

CC

5D

65

B6

92

6C

70

48

50

FD

ED

B9

DA

5E

15

46

57

A7

8D

9D

84

90

D8

AB

00

8C

BC

D3

0A

F7

E4

58

05

B8

B3

45

06

D0

2C

1E

8F

CA

3F

0F

02

C1

AF

BD

03

01

13

8A

6B

3A

91

11

41

4F

67

DC

EA

97

F2

CF

CE

F0

B4

E6

73

96

AC

74

22

E7

AD

35

85

E2

F9

37

E8

1C

75

DF

6E

47

F1

1A

71

1D

29

C5

89

6F

B7

62

0E

AA

18

BE

1B

FC

56

3E

4B

C6

D2

79

20

9A

DB

C0

FE

78

CD

5A

F4

1F

DD

A8

33

88

07

C7

31

B1

12

10

59

27

80

EC

5F

60

51

7F

A9

19

B5

4A

0D

2D

E5

7A

9F

93

C9

9C

EF

A0

E0

3B

4D

AE

2A

F5

B0

C8

EB

BB

3C

83

53

99

61

17

2B

04

7E

BA

77

D6

26

E1

69

14

63

55

21

0C

7D

Tabla inversa a S - Box.


Figura 14
La funcin Inv-ShiftRow ser inversa a la funcin ShiftRow en la que en vez de
desplazar las filas de la matriz hacia la izquierda se desplazarn a la derecha, el mismo
nmero de posiciones que se hubieran desplazado con anterioridad.

Por ltimo la funcin Inv-MixColumns ser la inversa de la funcin MixColumns


en la que se deber operar sobre los bytes de una misma columna, considerando las
columnas como polinomios con coeficientes en GFH28 L, que sern multiplicados por el
polinomio dHxL = 0 B x3 + 0 D x2 + 09 x + 0 E , que es el inverso de cHxL. De forma
matemtica:
SHxL = dHxL S ' HxL.

(22)

donde SHxL representa la matriz de estado resultante de esta etapa, y S ' HxL representa la
matriz de estados de entrada.

57

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Esta frmula para comprenderla ms fcilmente se puede expresar en forma


matricial de la siguiente manera.
ij S '0,C yz ij 0 e
jj
z
jj S '1,C zzz jjjj 09
jj
zz = jj
jj
z
jj S '2,C zzz jjjj 0 d
jj
zz j
k S '3,C { k 0 b

0b
0e
09
0d

0d
0b
0e
09

09
0d
0b
0e

yz ijj S0,C yzz


zz jj S zz
zz jj 1,C zz
z.
zzz.jjj
zz jj S2,C zzzz
zz jj
zz
{ k S3,C {

(23)

3.5 Ejemplo de Cifrado y Descifrado


Para una mejor comprensin de los apartados anteriores, que incluye el proceso de
el cifrado y el descrifrado, se propone el siguiente ejemplo. Sean los datos siguientes:

Nb = Nk = 4, Nr = 10.

Entrada:

00112233445566778899aabbccddeeff

Clave:

000102030405060708090a0b0c0d0e0f

Cifrado
Se ha de tener en cuenta que los estados que se repiten en cada una de las rondas
corresponden a las distintas funciones o etapas que se llevan a cabo, es decir, las distintas
transformaciones:

Funcin AddRoundKey corresponde al estado_1.

Funcin ByteSub corresponde al estado_2.

Funcin ShiftRow corresponde al estado_3.

Funcin MixColumn corresponde al estado_4.

58

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Ronda[0]. Entrada
00112233445566778899aabbccddeeff
Ronda[0]. Lista_Claves
000102030405060708090a0b0c0d0e0f
Ronda[1]. Estado_1
00102030405060708090a0b0c0d0e0f0
Ronda[1]. Estado_2
63cab7040953d051cd60e0e7ba70e18c
Ronda[1]. Estado_3
6353e08c0960e104cd70b751bacad0e7
Ronda[1]. Estado_4
5f72641557f5bc92f7be3b291db9f91a
Ronda[1]. Lista_Claves
d6aa74fdd2af72fadaa678f1d6ab76fe
Ronda[2]. Estado_1
89d810e8855ace682d1843d8cb128fe4
Ronda[2]. Estado_2
a761ca9b97be8b45d8ad1a611fc97369
Ronda[2]. Estado_3
a7be1a6997ad739bd8c9ca451f618b61
Ronda[2]. Estado_4
ff87968431d86a51645151fa773ad009
Ronda[2]. Lista_Claves
b692cf0b643dbdf1be9bc5006830b3fe
Ronda[3]. Estado_1
4915598f55e5d7a0daca94fa1f0a63f7
Ronda[3]. Estado_2
3b59cb73fcd90ee05774222dc067fb68
Ronda[3]. Estado_3
3bd92268fc74fb735767cbe0c0590e2d
Ronda[3]. Estado_4
4c9c1e66f771f0762c3f868e534df256
Ronda[3]. Lista_Claves
b6ff744ed2c2c9bf6c590cbf0469bf41
Ronda[4]. Estado_1
fa636a2825b339c940668a3157244d17

59

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Ronda[4]. Estado_2
2dfb02343f6d12dd09337ec75b36e3f0
Ronda[4]. Estado_3
2d6d7ef03f33e334093602dd5bfb12c7
Ronda[4]. Estado_4
6385b79ffc538df997be478e7547d691
Ronda[4]. Lista_Claves
47f7f7bc95353e03f96c32bcfd058dfd
Ronda[5]. Estado_1
247240236966b3fa6ed2753288425b6c
Ronda[5]. Estado_2
36400926f9336d2d9fb59d23c42c3950
Ronda[5]. Estado_3
36339d50f9b539269f2c092dc4406d23
Ronda[5]. Estado_4
f4bcd45432e554d075f1d6c51dd03b3c
Ronda[5]. Lista_Claves
3caaa3e8a99f9deb50f3af57adf622aa
Ronda[6]. Estado_1
c81677bc9b7ac93b25027992b0261996
Ronda[6]. Estado_2
e847f56514dadde23f77b64fe7f7d490
Ronda[6]. Estado_3
e8dab6901477d4653ff7f5e2e747dd4f
Ronda[6]. Estado_4
9816ee7400f87f556b2c049c8e5ad036
Ronda[6]. Lista_Claves
5e390f7df7a69296a7553dc10aa31f6b
Ronda[7]. Estado_1
c62fe109f75eedc3cc79395d84f9cf5d
Ronda[7]. Estado_2
b415f8016858552e4bb6124c5f998a4c
Ronda[7]. Estado_3
b458124c68b68a014b99f82e5f15554c
Ronda[7]. Estado_4
c57e1c159a9bd286f05f4be098c63439
Ronda[7]. Lista_Claves

60

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

14f9701ae35fe28c440adf4d4ea9c026
Ronda[8]. Estado_1
d1876c0f79c4300ab45594add66ff41f
Ronda[8]. Estado_2
3e175076b61c04678dfc2295f6a8bfc0
Ronda[8]. Estado_3
3e1c22c0b6fcbf768da85067f6170495
Ronda[8]. Estado_4
baa03de7a1f9b56ed5512cba5f414d23
Ronda[8]. Lista_Claves
47438735a41c65b9e016baf4aebf7ad2
Ronda[9]. Estado_1
fde3bad205e5d0d73547964ef1fe37f1
Ronda[9]. Estado_2
5411f4b56bd9700e96a0902fa1bb9aa1
Ronda[9]. Estado_3
54d990a16ba09ab596bbf40ea111702f
Ronda[9]. Estado_4
e9f74eec023020f61bf2ccf2353c21c7
Ronda[9]. Lista_Claves
549932d1f08557681093ed9cbe2c974e
Ronda[10]. Estado_1
bd6e7c3df2b5779e0b61216e8b10b689
Ronda[10]. Estado_2
7a9f102789d5f50b2beffd9f3dca4ea7
Ronda[10]. Estado_3
7ad5fda789ef4e272bca100b3d9ff59f
Ronda[10]. Lista_Claves
13111d7fe3944a17f307a78b4d2b30c5
Ronda[10]. Salida
69c4e0d86a7b0430d8cdb78070b4c55a

Descifrado
Al igual que ocurre en el cifrado, se debe tener presente que los estados que se
repiten en cada una de las rondas corresponden a las distintas funciones o etapas que se
llevan a cabo, es decir, las distintas transformaciones: en esta caso inversas a las del cifrado.

61

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Funcin AddRoundKey corresponde al estado_1.

Funcin Inv-ByteSub corresponde al estado_2.

Funcin Inv-ShiftRow corresponde al estado_3.

Funcin Inv-MixColumn corresponde al estado_4.


Ronda[0]. entrada
69c4e0d86a7b0430d8cdb78070b4c55a
Ronda[0]. Lista_Claves
13111d7fe3944a17f307a78b4d2b30c5
Ronda[1]. Estado_1
7ad5fda789ef4e272bca100b3d9ff59f
Ronda[1]. Estado_2
7a9f102789d5f50b2beffd9f3dca4ea7
Ronda[1]. Estado_3
bd6e7c3df2b5779e0b61216e8b10b689
Ronda[1]. Lista_Claves
549932d1f08557681093ed9cbe2c974e
Ronda[1]. Estado_4
e9f74eec023020f61bf2ccf2353c21c7
Ronda[2]. Estado_1
54d990a16ba09ab596bbf40ea111702f
Ronda[2]. Estado_2
5411f4b56bd9700e96a0902fa1bb9aa1
Ronda[2]. Estado_3
fde3bad205e5d0d73547964ef1fe37f1
Ronda[2]. Lista_Claves
47438735a41c65b9e016baf4aebf7ad2
Ronda[2]. Estado_4
baa03de7a1f9b56ed5512cba5f414d23
Ronda[3]. Estado_1
3e1c22c0b6fcbf768da85067f6170495
Ronda[3]. Estado_2
3e175076b61c04678dfc2295f6a8bfc0

62

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Ronda[3]. Estado_3
d1876c0f79c4300ab45594add66ff41f
Ronda[3]. Lista_Claves
14f9701ae35fe28c440adf4d4ea9c026
Ronda[3]. Estado_4

c57e1c159a9bd286f05f4be098c63439

Ronda[4]. Estado_1
b458124c68b68a014b99f82e5f15554c
Ronda[4]. Estado_2
b415f8016858552e4bb6124c5f998a4c
Ronda[4]. Estado_3
c62fe109f75eedc3cc79395d84f9cf5d
Ronda[4]. Lista_Claves
5e390f7df7a69296a7553dc10aa31f6b
Ronda[4]. Estado_4
9816ee7400f87f556b2c049c8e5ad036
Ronda[5]. Estado_1
e8dab6901477d4653ff7f5e2e747dd4f
Ronda[5]. Estado_2
e847f56514dadde23f77b64fe7f7d490
Ronda[5]. Estado_3
c81677bc9b7ac93b25027992b0261996
Ronda[5]. Lista_Claves
3caaa3e8a99f9deb50f3af57adf622aa
Ronda[5]. Estado_4
f4bcd45432e554d075f1d6c51dd03b3c
Ronda[6]. Estado_1
36339d50f9b539269f2c092dc4406d23
Ronda[6]. Estado_2
36400926f9336d2d9fb59d23c42c3950
Ronda[6]. Estado_3
247240236966b3fa6ed2753288425b6c
Ronda[6]. Lista_Claves
47f7f7bc95353e03f96c32bcfd058dfd
Ronda[6]. Estado_4
6385b79ffc538df997be478e7547d691
Ronda[7]. Estado_1
2d6d7ef03f33e334093602dd5bfb12c7

63

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Ronda[7]. Estado_2
2dfb02343f6d12dd09337ec75b36e3f0
Ronda[7]. Estado_3

fa636a2825b339c940668a3157244d17

Ronda[7]. Lista_Claves
b6ff744ed2c2c9bf6c590cbf0469bf41
Ronda[7]. Estado_4
4c9c1e66f771f0762c3f868e534df256
Ronda[8]. Estado_1
3bd92268fc74fb735767cbe0c0590e2d
Ronda[8]. Estado_2
3b59cb73fcd90ee05774222dc067fb68
Ronda[8]. Estado_3
4915598f55e5d7a0daca94fa1f0a63f7
Ronda[8]. Lista_Claves
b692cf0b643dbdf1be9bc5006830b3fe
Ronda[8]. Estado_4
ff87968431d86a51645151fa773ad009
Ronda[9]. Estado_1
a7be1a6997ad739bd8c9ca451f618b61
Ronda[9]. Estado_2
a761ca9b97be8b45d8ad1a611fc97369
Ronda[9]. Estado_3
89d810e8855ace682d1843d8cb128fe4
Ronda[9]. Lista_Claves
d6aa74fdd2af72fadaa678f1d6ab76fe
Ronda[9]. Estado_4
5f72641557f5bc92f7be3b291db9f91a
Ronda[10]. Estado_1 6353e08c0960e104cd70b751bacad0e7
Ronda[10]. Estado_2 63cab7040953d051cd60e0e7ba70e18c
Ronda[10]. Estado_3 00102030405060708090a0b0c0d0e0f0
Ronda[10]. Lista_Claves
000102030405060708090a0b0c0d0e0f
Ronda[10]. Salida
00112233445566778899aabbccddeeff

64

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

4. Aspectos en la Implementacin
4.1 Funcin Seleccin de clave
La funcin de seleccin simplemente toma consecutivamente de la secuencia
obtenida por la funcin de expansin de clave bytes que va asignado a cada subclave Ki.
para formar bloques del mismo tamao que la matriz de estado. Es decir, coge Nb * 4 bytes
para cada vuelta.

La generacin de la claves (expansin de clave) para el proceso de descifrado se


hace forma idntica al proceso de cifrado. La diferencia reside en la funcin de seleccin de
clave. En el proceso de descifrado se toman bytes de la lista de claves desde los valores
finales hasta llegar a los iniciales, que es la propia clave de usuario. Es decir, la ltima
subclave que se utiliz para cifrar, ser la primera que se utilizar para descifrar.

4.2 Funcin de expansin de clave


La funcin de expansin de clave permite generar bytes tiles como subclaves a
partir de la clave de sistema K. Esta funcin de expansin se puede describir como un array
lineal, denominado W , de palabras de cuatro bytes y con una longitud de Nb * HNr + 1L.

Las primeras Nk palabras de este array contienen la clave de cifrado, ya que la clave
del usuario se transforma tal cual al array W , mientras que el resto de palabras se van
generando a partir de estas primeras Nk palabras.

65

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Ejemplo de subclaves y clave de expansin.


Figura 15
Se observa cmo la funcin de expansin de clave depende del valor de Nk . Ante
este hecho los autores definieron dos versiones para esta funcin, una para Nk menor o
igual que 6 y otra para Nk mayor 6, por motivos de seguridad.

Para las palabras con Nk menor o igual que 6 cuyo valor de i que no sea multiplo de
Nk las subclaves se calculan como:
W HiL = W Hi Nk L XOR W H i 1 L.

(24)

Para todo valor de i que sea multiplo de Nk se calculan como:


W HiL = W Hi NkL XOR @ByteSubHRotByte@W Hi - 1LDL XOR RconHi NkLD.

(25)

El funcionamiento para Nk > 6 es igual que para Nk menor o igual que 6, salvo
cuando el valor de la variable i satisface que i mod Nk = 4. En este caso las palabras de
subclaves se calculan como:
W HiL = W Hi NkL XOR ByteSub HW @i - 1DL.

66

(26)

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Una vez conocido el funcionamiento de la funcin de expansin de clave,vese,para


finalizar con la explicacinde la funcin un ejemplo real de generacin de bytes de
subclaves para un algoritmoRijndaelcon clave de 128 bits.

67

Proyecto Fin de Carrera

Ejemplo.

Algoritmo Criptogrfico AES para proteccin de datos

Se selecciona la clave de usuario.

Clave= 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c HNk = 4L.


Se transforman a las cuatro primeras posiciones del array la clave del usuario:

W[0]=2b 7e 15 16
W[1]=28 ae d2 a6
W[2]=ab f7 15 88
W[3]=09 cf 4f 3c
A partir de este momento se empieza a generar bytes de subclaves.

Calcular W[4]:

i=4 (i mltiplo de Nk)

temp= W[3] = 09 cf 4f 3c

Se aplica funcin de rotacin Rot temp = cf 4c 3c 09

Se aplica funcin ByteSub ByteSub (temp) = 8a 84 eb 01

Rcon[4/4]=Rcon[1]= [ x0,{00},{00},{00}] =[{01},{00},{00},{00}]

temp= Rcon[1]temp =8a 84 eb 01 01 00 00 00 = 8b 84 eb 01

W[4] = W[0] temp = 2b 7e 15 16 8b 84 eb 01 = a0 fa fe 17

Siguiendo todos los criterios descritos en esta funcin se podran generar todos los
bytes de subclaves necesarios para la versin del algoritmo con la que se trabajar.

68

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

4.3 Desarrollo del Algoritmo

/* Rijndael code August 01


* rijndael-alg-ref.c v2.0 August '99
* Reference ANSI C code
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
/* Definicin de funciones */
int rijndaelKeySched (unsigned char k[4][4], unsigned char rk[10+1][4][4]);
int rijndaelEncrypt (unsigned char a[4][4], unsigned char rk[10+1][4][4]);;
int rijndaelDecrypt (unsigned char a[4][4], unsigned char rk[10+1][4][4]);
/* Definicin de los Logaritmos de todos los elementos de GF(2^8) base 3 */
unsigned char Logtable[256] = {
0, 0, 25, 1, 50, 2, 26, 198, 75, 199, 27, 104, 51, 238, 223, 3, 100, 4, 224, 14, 52, 141,
129, 239, 76, 113, 8, 200, 248, 105, 28, 193,125, 194, 29, 181, 249, 185, 39, 106, 77,
228, 166, 114, 154, 201, 9, 120, 101, 47, 138, 5, 33, 15, 225, 36, 18, 240, 130, 69,
53, 147, 218, 142, 150, 143, 219, 189, 54, 208, 206, 148, 19, 92, 210, 241, 64, 70,
131, 56, 102, 221, 253, 48, 191, 6, 139, 98, 179, 37, 226, 152, 34, 136, 145, 16, 126,
110, 72, 195, 163, 182, 30, 66, 58, 107, 40, 84, 250, 133, 61, 186, 43, 121, 10, 21,
155, 159, 94, 202, 78, 212, 172, 229, 243, 115, 167, 87, 175, 88, 168, 80, 244, 234,
214, 116, 79, 174, 233, 213, 231, 230, 173, 232, 44, 215, 117, 122, 235, 22, 11, 245,
89, 203, 95, 176, 156, 169, 81, 160, 127, 12, 246, 111, 23, 196, 73, 236, 216, 67, 31,
45, 164, 118, 123, 183, 204, 187, 62, 90, 251, 96, 177, 134, 59, 82, 161, 108, 170,
85, 41, 157, 151, 178, 135, 144, 97, 190, 220, 252, 188, 149, 207, 205, 55, 63, 91,
209, 83, 57, 132, 60, 65, 162, 109, 71, 20, 42, 158, 93, 86, 242, 211, 171, 68, 17,
146, 217, 35, 32, 46, 137, 180, 124, 184, 38, 119, 153, 227, 165, 103, 74, 237, 222,
197, 49, 254, 24, 13, 99, 140, 128, 192, 247, 112, 7};
/* Definicin de los potencias de todos los elementos de GF(2^8) base 3 */
unsigned char Alogtable[256] = {
1, 3, 5, 15, 17, 51, 85, 255, 26, 46, 114, 150, 161, 248, 19, 53, 95, 225, 56, 72, 216,
115, 149, 164, 247, 2, 6, 10, 30, 34, 102, 170, 229, 52, 92, 228, 55, 89, 235, 38, 106,
190, 217, 112, 144, 171, 230, 49, 83, 245, 4, 12, 20, 60, 68, 204, 79, 209, 104, 184,
211, 110, 178, 205, 76, 212, 103, 169, 224, 59, 77, 215, 98, 166, 241, 8, 24, 40, 120,
136, 131, 158, 185, 208, 107, 189, 220,
127, 129, 152, 179, 206, 73, 219, 118,
154, 181, 196, 87, 249, 16, 48, 80, 240, 11, 29, 39, 105, 187, 214, 97, 163, 254, 25,
43, 125, 135, 146, 173, 236, 47, 113, 147, 174, 233, 32, 96, 160, 251, 22, 58, 78,
210, 109, 183, 194, 93, 231, 50, 86, 250, 21, 63, 65, 195, 94, 226, 61, 71, 201, 64,
192, 91, 237, 44, 116, 156, 191, 218, 117, 159, 186, 213, 100, 172, 239, 42, 126,
130, 157, 188, 223, 122, 142, 137, 128, 155, 182, 193, 88, 232, 35, 101, 175, 234,
37, 111, 177, 200, 67, 197, 84, 252, 31, 33, 99, 165, 244, 7, 9, 27, 45, 119, 153, 176,
203, 70, 202, 69, 207, 74, 222, 121, 139, 134, 145, 168, 227, 62, 66,
198, 81,
243, 14, 18, 54, 90, 238, 41, 123, 141, 140, 143, 138, 133, 148, 167, 242, 13, 23, 57,
75, 221, 124, 132, 151, 162, 253, 28, 36, 108, 180, 199, 82, 246, 1};
/* Definicin de la S-caja */
unsigned char S[256] = {

69

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130,
201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147,
38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5,
154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214,
179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76,
88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81,
163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19,
236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42,
144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211,
172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234,
101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189,
139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225,
248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137,
13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22};
/* Definicin de la S-caja inversa (para el descifrado) */
unsigned char Si[256] = {
82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57,
130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166,
194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178,
118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164,
92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167,
141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6,
208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65,
79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231,
173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197,
137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219,
192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39,
128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156,
239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43,
4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125};
/* Definicin de los valores de la funcin rcon */
unsigned long rcon[30] = {
0x01,0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,
0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef,
0xc5, 0x91, };
/* Definicin de los valores desplazamiento correspondiente a cada caso
de longitud del bloque o de cifrado y descifrado */
static unsigned char shifts[3][4][2] = {
0, 0,
1, 3,
2, 2,
3, 1,
0, 0,
1, 5,
2, 4,
3, 3,
0, 0,
1, 7,
3, 5,
4, 4
};
/* Funcin que multiplica dos elementos del campo finito GF(2^8)
usando las tablas Logtable[ ] y Alogtable[ ] */
unsigned char mul(unsigned char a, unsigned char b)

70

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

{
if (a && b)
return Alogtable[(Logtable[a] + Logtable[b])%255];
else return 0;
}
/* Funcin que efecta la transformacin AddRoundKey */
void KeyAddition(unsigned char a[4][4], unsigned char rk[4][4], unsigned char BC)
{
int i, j;
for(i = 0; i < 4; i++)
for(j = 0; j < BC; j++)
a[i][j] ^= rk[i][j];
}
/* Funcin que efecta la transformacin ShiftRows */
void ShiftRow(unsigned char a[4][4], unsigned char d, unsigned char BC)
{
unsigned char tmp[4];
int i, j;
for(i = 1; i < 4; i++)
{
for(j = 0; j < BC; j++)
tmp[j] = a[i][(j + shifts[((BC - 4) >> 1)][i][d]) % BC];
for(j = 0; j < BC; j++)
a[i][j] = tmp[j];
}
}
/* Funcin que efecta la transformacin SubBytes */
void Substitution(unsigned char a[4][4], unsigned char box[256], unsigned char BC)
{
int i, j;
for(i = 0; i < 4; i++)
for(j = 0; j < BC; j++)
a[i][j] = box[a[i][j]] ;
}
/* Funcin que efecta la transformacin MixColumns */
void MixColumn(unsigned char a[4][4], unsigned char BC)
{
unsigned char b[4][4];
int i, j;
for(j = 0; j < BC; j++)
for(i = 0; i < 4; i++)
b[i][j] = mul(2,a[i][j])^ mul(3,a[(i + 1) % 4][j])^ a[(i + 2) % 4][j]
^ a[(i + 3) % 4][j];
for(i = 0; i < 4; i++)
for(j = 0; j < BC; j++)
a[i][j] = b[i][j];
}
/* Funcin que efecta la transformacin MixColumns para el descifrado */
void InvMixColumn(unsigned char a[4][4], unsigned char BC)
{
unsigned char b[4][4];
int i, j;
for(j = 0; j < BC; j++)
for(i = 0; i < 4; i++)
b[i][j] = mul(0xe,a[i][j])^ mul(0xb,a[(i + 1) % 4][j])
^ mul(0xd,a[(i + 2) % 4][j])^ mul(0x9,a[(i + 3) % 4][j]);
for(i = 0; i < 4; i++)

71

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

for(j = 0; j < BC; j++)


a[i][j] = b[i][j];
}
/* Funcin que genera la extencin de la clave K*/
int rijndaelKeySched (unsigned char k[4][4], unsigned char W[10+1][4][4])
{
/* Calculate the necessary round keys the number of calculations depends
on keyBits and blockBits*/
int KC, BC, ROUNDS, s;
int i, j, t, rconpointer = 0;
unsigned char tk[4][4];
KC = 4;
BC = 4;
ROUNDS = 10;
for(j = 0; j < KC; j++)
for(i = 0; i < 4; i++)
tk[i][j] = k[i][j];
t = 0;
/* copy values into round key array */
for(j = 0; (j < KC) && (t < (ROUNDS+1)*BC); j++, t++)
for(i = 0; i < 4; i++)
W[t / BC][i][t % BC] = tk[i][j];
while (t < (ROUNDS+1)*BC) /* while not enough round key material
calculated */
{
for(i = 0; i < 4; i++)
tk[i][0] ^= S[tk[(i+1)%4][KC-1]];
tk[0][0] ^= rcon[rconpointer++];
for(j = 1; j < KC; j++)
for(i = 0; i < 4; i++)
tk[i][j] ^= tk[i][j-1];
/******* copias la subclave r esima en el arreglo W **********/
for(j = 0; (j < KC) && (t < (ROUNDS+1)*BC); j++, t++)
for(i = 0; i < 4; i++)
{
W[t / BC][i][t % BC] = tk[i][j];
};
}
return 0;
}
/* Procedimiento para cifrar */
int rijndaelEncrypt (unsigned char a[4][4], unsigned char rk[10+1][4][4])
{
/* Encryption of one block*/
int r, BC, ROUNDS,i,j,k;
int B[8],X[8],Y[8],XE;
BC = 4;
ROUNDS = 10;
KeyAddition(a,rk[0],BC);
for(r = 1; r < ROUNDS; r++)
{
Substitution(a,S,BC);
ShiftRow(a,0,BC);
MixColumn(a,BC);
KeyAddition(a,rk[r],BC);
gotoxy(6,5);
printf("CT[");printf("%d",r);printf("] = ");

72

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

for(i = 0; i < 4; i++)


for(j = 0; j < 4; j++)
printf("%02X ",a[j][i]);
getchar();
}
Substitution(a,S,BC);
ShiftRow(a,0,BC);
KeyAddition(a,rk[ROUNDS],BC);
printf("\n\n\n");
printf("Cipher Text CT = ");
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
printf("%02X ",a[j][i]);
gotoxy(60,24);
printf("Press Enter....");
getchar();
clrscr();
return 0;
}
/* Procedimiento para descifrar */
int rijndaelDecrypt (unsigned char a[4][4], unsigned char rk[10+1][4][4])
{
int r, BC, ROUNDS;
BC = 4;
ROUNDS = 10;
KeyAddition(a,rk[ROUNDS],BC);
Substitution(a,Si,BC);
ShiftRow(a,1,BC);
/* ROUNDS-1 ordinary rounds*/
for(r = ROUNDS-1; r > 0; r--)
{
KeyAddition(a,rk[r],BC);
InvMixColumn(a,BC);
Substitution(a,Si,BC);
ShiftRow(a,1,BC);
}
KeyAddition(a,rk[0],BC);
return 0;
}
/* Ejemplo para cifrar y descifrar a A[][] con la clave clave[][] */
int main ()
{
unsigned char clave[4][4]={
0x00,0x04,0x08,0x0c,
0x01,0x05,0x09,0x0d,
0x02,0x06,0x0a,0x0e,
0x03,0x07,0x0b,0x0f};
unsigned char A[4][4]={
0x00,0x04,0x08,0x0c,
0x01,0x05,0x09,0x0d,
0x02,0x06,0x0a,0x0e,
0x03,0x07,0x0b,0x0f};
unsigned char clave[4][4]={
0x2b,0x28,0xab,0x09,
0x7e,0xae,0xf7,0xcf,
0x15,0xd2,0x15,0x4f,

73

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

0x16,0xa6,0x88,0x3c};
unsigned char A[4][4]={
0x32,0x88,0x31,0xe0,
0x43,0x5a,0x31,0x37,
0xf6,0x30,0x98,0x07,
0xa8,0x8d,0xa2,0x34};
unsigned char W[10+1][4][4];
int s,i,j;
memset(W,0,sizeof(W));
rijndaelKeySched (clave,W);
rijndaelEncrypt (A,W);
printf(" Cipher Text ");
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
printf("%02X ",A[j][i]);
printf("\n\n\n");
printf(" In the decipher procces, we apply the inverse transformations.\n");
printf(" \n\n");
rijndaelDecrypt (A,W);
printf("\n");
printf(" Decipher Text ");
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
printf("%02X ",A[j][i]);
gotoxy(50,24);
printf("Press Enter to End");
getchar();
return 0;
}

74

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

5. Aplicaciones del algoritmo en la


proteccion de datos
En este apartado se mostrarn diferentes aplicaciones en las que se utiliza el
algoritmo AES o Rijndael para ver su importancia y expansin que como ya se sabe abarca
campos tan importantes como los negocios por Internet, correo electrnico, dinero
electrnico (tarjetas de crdito, tarjetas inteligentes), llaveros electrnicos, chips de
seguridad contra robos de coches, registros pblicos, etc.
Creacin de un sistema para codificar las comunicaciones mviles a travs de
Internet
Ingenieros alemanes del Instituto Fraunhofer (SIT) han desarrollado un sistema
para codificar las telecomunicaciones mviles sobre VoIP, es decir, a traves de internet.
Esto puede dar el impulso definitivo a la convergencia de los mviles con WiFi e Internet.

El prototipo se basa en la aplicacin J2ME (Plataforma Java) y utiliza un algoritmo


Advanced Encryption Standard (AES) para codificar un canal reservado para las
comunicaciones mviles a travs de IP. De esta manera puede analizar protocolos
criptogrficos

las

cualidades

de

funcionamiento

de

los

telfonos

mviles,

independientemente de la calidad de la seal, lo que garantiza una comunicacin segura a


travs de Internet.

75

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Aplicacin AES en las redes IEEE 802.11i, WPA2 o redes Wireless Lan
El estndar IEEE 802.11i, tambin conocido como WPA2, es una mejora al
estndar 802.11 que especifica mecanismos de seguridad para las redes inalmbricas. El
estndar fue ratificado y reemplazado por el protocolo WPA, que haba sido introducido
previamente por la alianza WiFi como solucin a las inseguridades de WEP.

WPA2 802.11i hace uso del estndar de cifrado avanzado (AES) para
proporcionar autentificacin de origen, integridad y confidencialidad a la red mediante el
cifrado en los propios routers.

76

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Utimaco - SafeGuard PrivateCrypto

Utimaco es el principal proveedor mundial de seguridad profesional de TI. Ofrecen


soluciones que protegen la informacin electrnica de las empresas y los gobiernos frente
al acceso no autorizado y garantizan que los procesos y procedimientos en el mbito
electrnico se cumplan en todos los casos y se mantengan confidenciales.

La divisin de seguridad de dispositivos personales proporciona tecnologas y


soluciones para la seguridad mvil en las reas de autenticacin de alto nivel, incluidas
tcnicas biomtricas, cifrado y verificaciones de integridad, y la divisin de seguridad de
transacciones se especializa en soluciones de seguridad para aplicaciones electrnicas de
negocios, gubernamentales y de pagos por Internet.

Las principales caractersticas de seguridad y Criptografia que utiliza esta empresa


se basa en un cifrado seguro comprobado (algoritmoAES de 256 bits). Este algoritmo
protege la valiosa informacin de su compaa y su informacin personal, protege los
archivos en contra de accesos no autorizados y realiza un intercambio seguro de datos que
no requiere una infraestructura comn.

77

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

DWL-7100AP, Punto de acceso inalmbrico a 108Mbps

Punto de acceso inalmbrico multimodo que responde a los estndares 802.11a,


802.11b y 802.11g, con un rendimiento 15 veces superior, que incorpora mecanismos
adicionales de seguridad, tales como Wi-Fi Protected Access (WPA), Advanced Encryption
Standard (AES) y 802.1x. Servidor DHCP.

Mdem DWL - 7100 AP.


Figura 16

78

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

6. Conclusiones y lneas futuras


A lo largo de la elaboracin del presente proyecto se ha tratado con numerosos
conceptos y mtodos matemticos, quedando demostrado que las matemticas y la teora de
nmeros son la base principal de los criptosistemas utilizados en la actualidad y en concreto
de este algoritmo. Las conclusiones que se obtienen del presente proyecto son las siguientes:

1.

La Criptografa, tanto antigua como moderna, debe su base, integridad y eficacia a

las matemticas, que hacen posible el intercambio de mensajes de manera que slo puedan
ser ledos por las personas a quienes van dirigidos. La aritmtica modular, los campos
finitos, y otro gran nmero de mtodos matemticos son slo algunos ejemplos en los que
se apoyan los algoritmos de codificacin y descodificacin.

2.

El algoritmo AES o algoritmo Rijndael, al contrario que su predecesor DES, es

rpido tanto en software como en hardware, es relativamente fcil de implementar, y


requiere poca memoria. Es un cifrado por bloques no una red de Sustitucin/Permutacin.
Como nuevo estndar de cifrado, se est utilizando actualmente a gran escala, es decir es
uno de los ms potentes y ms utilizados tanto a nivel individual como a nivel mundial, por
su gran seguridad y estabilidad.

3.

El algoritmo AES tiene los niveles de seguridad con claves de 80, 112, 128, 192, y

256 bits. Usar claves de 80 bits ser seguro hasta el ao 2010, claves de 112 bits hasta el
ao 2020, y de 128 bits posteriormente. Aunque esta seguridad puede reducirse por el modo
de operacin de los algoritmos en consideracin. Para 80 bits de seguridad AES, es

79

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

equivalente a 1024 bits de RSA, y 163 de ECDSA.

4.
128,

En la actualidad y con la tecnologa conocida atacar un sistema por fuerza bruta de


192,

256

bits

de

clave

como el

algoritmo

Rijndael

es

impracticable

computacionalmente.

5.

La Criptografa ha ido adaptndose a nuestros das, orientndose fundamentalmente

a las aplicaciones informticas. En el estado actual de AES caben mencionar que son
numerosas las aplicaciones que han asumido ese algorimto criptogrfico en sus esquemas.
Entre las aplicaciones prcticas en diversas reas estn:

a)

La proteccin de las comunicaciones digitales: Internet, TV digital,

comunicaciones mviles, redes de datos (IPSec) y de voz.

b)

La transferencia de documentos EDI (Electronic Data Interchange) y el

comercio electrnico EC (Electronic Commerce). Transferencia de dinero por banca,


denominada EFT (Electronic Funds Transfer).

c)

Garantizar la seguridad y proteccin del software.

d)

La mensajera militar en la red de mando y control (S/MIME).

e)

En la aplicacin del DNI digital, con la firma digital, y en la firma digital de

documentos.

6.

Como lneas futuras de anlisis e investigacin y como mejora posible a introducir

al actual Proyecto cabra resear:

80

Proyecto Fin de Carrera

a)

Algoritmo Criptogrfico AES para proteccin de datos

Introduccin y desarrollo de las funciones del algoritmo AES mediante las

tcnicas de la Criptografa de Curvas Elpticas (CCE), como variante de la Criptografa


simtrica o de clave privada basada en las matemticas de las Curvas Elpticas. Esta
metodologa puede ser ms rpida y usar claves ms cortas pero ms seguras que el mtodo
de AES.

b)

Una lnea de investigacin en el criptoanlisis eficiente en el futuro son los

ataques llamados algebraicos que en nuestros das no son operables, sin embargo, se
presume sean realidad en un futuro no lejano.

81

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

7. Desarrollo de la aplicacin
7.1 Ciclo de vida
Existen diferentes paradigmas de ciclo de vida, dependientes de la naturaleza del
proyecto a acometer, en este caso la metodologa o paradigma a seguir elegida ha sido una
mezcla entre el modelo lineal o en cascada y el modelo incremental o evolutivo. De esta
manera se comienza a desarrollar una etapa inicial donde se satisfagan una serie de
requisitos para partir de una base estable y bien fundada. Una vez que cada etapa es
finalizada, se proceder a realizar un documento revisado, validado y aprobado, de forma
que se pueda ir evolucionando fase a fase de forma incremental, sirviendo esta ltima como
aproximacin y documentacin de partida para la siguiente etapa o paquete de trabajo. Es el
tipo de metodologa ms lgico para aplicar a este proyecto, pues la parte de programacin
consiste en el diseo y aplicacin del algoritmo y en la mayora dependen una de otra, pues
para entender ciertas partes del algoritmo es necesario asentar ciertos conocimientos
anteriores. Esta forma es la ms apropiada para avanzar lo ms correcta y especficamente
posible.

El estudio y divisin de las partes del proyecto se ha realizado en bloques,


siguiendo un orden razonable, apropiado para cada una de las partes para una mejor
cimentacin de los conceptos, siendo el resultado:
1.- Estudio de los Campos de Galois GFH28 L.

2.- Especificacin del algoritmo basado en el cifrado, el descifrado, las funciones

82

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

que intervienen en estas dos operaciones y la importancia de la clave.

3.- Aspectos en la implementacin como la longitud de la clave, las restricciones de


la clave o la parametrizacin en la longitud de la clave as como el tamao del bloque.

Para poner en prctica el ciclo de vida evolutivo y en cascada se ha optado por


recurrir a una metodologa de fases, tareas o paquetes. Consiste en especificar una serie de
etapas de trabajo en cuyo contenido se clasifican los pasos necesarios para poder ir
evolucionando a lo largo del proyecto.

A continuacin, se muestra un grafico de dichas etapas de trabajo para una mejor


visualizacin y entendimiento.

.
Algoritmo AES Para
Proteccin de Datos

Fase 0
Gestin

Fase 1
Conceptos
Generales

Fase 2
Codificacin de
Algoritmos

Fase 1.1
Bsqueda de
Documentacin

Fase 1.2
Organizacin de
documentacin

Paquetes de trabajo.
Figura 17

83

Fase 3
Pruebas

Fase 4
Interfaz de
Usuario

Fase 5
Conclusin

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 0.- Gestin

Definicin: Lo que se asignar al paquete de gestin se basa principalmente en la


vigilancia y bien hacer del proyecto. Esta fase no va a realizarse en un periodo de tiempo
continuo y determinado. Bsicamente las actividades desarrolladas consisten en una serie de
reuniones y entrevistas repartidas a lo largo de todo el proyecto con el fin de vigilar la
correcta realizacin del proyecto, tanto en contenidos como en correspondencia con el
tiempo estipulado del mismo. De tal forma que en esta fase se incluir todo el trabajo que
tenga que ver con el seguimiento del correcto funcionamiento del proyecto.

Entradas: Entregables del proyecto en distintas fases o versiones de realizacin as


como las oportunas revisiones tanto documentales como de la planificacin temporal y
econmica.

Salidas: Las entradas revisadas, corregidas o modificadas en el caso en el que sea


oportuno dicha operacin.
Fase 1.- Conceptos Generales

Antes de entrar en la fase que llevar el gran peso del proyecto ser necesario
prepararla convenientemente. Para este fin se han establecido esta fase que a su vez esta
dividida en dos subfases imprescindibles a la hora de la creacion del proyecto pues sern la
base o cimientos sobre los que se funde el presente proyecto.

Las subfases comprenden tanto la bsqueda, como la organizacin y estudio de la


informacin.

84

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 1.1.- Bsqueda de Documentacin

Definicin: En esta fase concretamente se ocupa de buscar toda informacin que


sea de ayuda para llevar a cabo el proyecto, tanto datos puros que ayuden directamente,
como todo tipo de informacin anexa que permita adquirir un alto grado de comprensin de
la tarea que se va a llevar a cabo.

Esta bsqueda se ha realizado tanto en bibliotecas como publicaciones


especializadas, y dado el carcter didctico y de investigacin del proyecto, se ha dado
especial importancia a las nuevas fuentes de informacin, como Internet, ya que se las
considera, un buen banco de nuevas investigaciones.

Entradas: En este apartado las entradas bsicas vienen de las primeras entrevistas o
reuniones, para conocer por dnde se debe encaminar la bsqueda informacin, de forma
ms especfica y detallada, para no perder tiempo e ir a lo que realmente es importante.
Propiamente hablando no es una entrada pues no se realiza ningn tipo de conversin de
informacin aunque s es de gran ayuda.

Salidas: Como salida se obtiene una buena recopilacin de documentacin


debidamente catalogada, seleccionada y fundada bajo un orden de inters y calidad de
contenidos.

85

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 1.2.- Organizacin de Documentacin

Definicin: Junto con la siguiente fase, este apartado es uno de los que ms peso
tienen a la hora del desarrollo del proyecto.

Del apartado anterior se ha obtenido un nmero abundante de documentacin y


junto a ella los pseudocdigos apropiados del algoritmo, que se implanta y sobre el que se
basa el proyecto. En esta fase se seleccionan aquellos pseudocdigos ms elegantes que se
haya encontrado o aqullos que por su estructura sean interesantes desde un punto de vista
original o educativo. De la misma manera se selecciona y estudia la correspondiente
documentacin para formar y fundar unos documentos sobre los conceptos fundamentales
necesarios y apropiados para realizar una ilustracin y

explicacin lo ms clara e

instructiva posible. En el caso de no disponer de pseudocdigos completos, se


cumplimentarn por cuenta propia, gracias a los conceptos aprendidos, para poder alcanzar
el resultado final deseado.

Entradas: Documentacin recopilada en la fase anterior Fase 1.1.

Salidas: Documentacin perfectamente fundada, detallada y clara, junto con una


seleccin o un grupo pseudocdigos a implantar en posteriores etapas.

86

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 2.- Codificacin de algoritmos

Definicin: Esta fase es, junto con la subfase anterior, la fase con mayor
peso dentro del presente proyecto, igual que cualquier proyecto de este mbito. Aqu se
pasan los pseudocdigos al lenguaje de programacin escogido, en este caso a la plataforma
Java J2EE que finalmente se sustituy por el lenguaje C++. Estos cdigos son el
fundamento y punto central de todo el proyecto, ya que sern los que permitirn explicar el
funcionamiento y la importancia del algoritmo.

Entradas: Pseudocdigos seleccionados.

Salidas: Algoritmo codificados y funcionando.

Fase 3.- Pruebas

Definicin: Es otro punto o fase importante, punto fundamental del proyecto que
permite, una vez desarrollado el algoritmo AES, llevarlo a examen para comprobarlo y ver
los posibles errores o problemas mediante la aplicacin de ejemplos sobre el algoritmo y
hacer una idea de las principales aplicaciones o funcionamientos de la aplicacin.

Entradas: Los cdigos y ejemplos para su posterior verificacin.

Salidas: Algoritmo probado y sin errores, listo para ser implantado como motor del
software.

87

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 4.- Creacin de la interfaz de usuario

Definicin: Junto con la codificacin del algoritmo, el diseo y la creacin de la


interfaz de usuario son el punto fuerte de este proyecto, como anteriormente se cita.

Se debe tener en cuenta que la interfaz permita interactuar de forma fcil y sencilla,
es decir, que sirva, tanto para personas que estn familiarizadas con el algoritmo y el propio
mundo de la Criptografa, como para personas que no tengan esos conocimientos
adquiridos. De esta forma se intenta que el proyecto y el trabajo realizado no queden
ocultos sino que en un futuro sean de utilidad.

Entradas: La propia estructura del proyecto y el algoritmo que cumple con esta
estructura, ya que sirven de base para hacer el estudio de cmo enfocar la interfaz a los
usuarios.

Salidas: Interfaz grfica para el usuario en funcionamiento.

88

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Fase 5.- Conclusiones

Definicin: En esta fase se redactan las conclusiones del proyecto. Se intentar que
no tengan un nivel muy avanzado y que sean de fcil comprensin con un lenguaje
adaptado a personas que no necesariamente tengan que estar muy preparadas en el campo
de la Criptografa y Teora de Nmeros. El contenido de estas conclusiones es la
perspectiva del tema en tiempo presente, la gran importancia adquirida hasta ahora y la que
adquirir con el tiempo, as como una posible visualizacin de lneas futuras acerca de la
evolucin de la proteccin de datos, de la Criptografa y en particular de este algoritmo que
se presenta.

Entradas: Toda la informacin generada a lo largo del proyecto.

Salidas: El apartado de conclusines del proyecto.

89

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

7.2. Identificacin de necesidades


El objetivo principal del presente proyecto es desarrollar una aplicacin que
proporcione una herramienta que permita al usuario sumergirse en el mundo de la
Criptografa y en este caso conocer y adquirir los conocimientos oportunos del nuevo
estndar de cifrado avanzado, como es AES o el algoritmo Rijndael. Utilizar el algoritmo
de una manera rpida y cmoda, consecuencia de una aplicacin informtica grfica basada
en sistema de ventanas, donde la interaccin es ms sencilla.

En lo referente al alcance del proyecto, la aplicacin se limitar a dar un resultado


en funcin de los datos de entrada y una clave introducida. El gran pilar del alcance se
encuentra dentro de la documentacin donde se explican cada una de las funciones, rutinas
o algoritmos que se llevan a cabo a la hora de cifrar y descifrar texto, es decir, el detalle de
cada una de las funciones que estn disponibles para la operacin de cifrar, el detalle de las
funciones inversas, propias de la operacin del descifrado. Cada parte o porcin del cdigo
que en su unin forman el algoritmo criptogrfico. En ningn caso la aplicacin
proporcionar alternativas en el punto de que los datos de entrada propuestos no sean
vlidos. Adems, como se ha mencionado a lo largo del proyecto, si los datos de entrada
son demasiado grandes como para poder tratarse computacionalmente en la mquina donde
se est ejecutando la aplicacin, el resultado ser que el sistema no ser capaz de
proporcionar una respuesta.

La tipologa de usuario final abarca prcticamente todas las posibles como bien se
define en el punto 7.1 Ciclo de vida en el apartado Fase 4, aunque vaya dirigida
inicialmente a personas que se encuentren ligadas con el mundo de la Criptografa. Un tema

90

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

de inters general, seguido por la explicacin de cada uno de los mtodos y funciones
matemticas utilizadas a la hora de desarrollar los algoritmos e incorporarlos a una interfaz
de usuario muy intuitiva, hace que no existan barreras de tipo tcnico por las que usuarios
no introducidos en la materia puedan usar y entender la herramienta. El hecho de que la
seguridad sea un tema de actualidad y la transicin histrica de la Criptografa se centre en
el envo de mensajes de forma secreta entre un emisor y un receptor, hace de este proyecto
una aplicacin interesante para sus usuarios sean o no expertos en el tema. Por ello se
espera que el rango de usuarios finales sea amplio, desde estudiantes y profesores hasta
interesados en la materia.

Respecto a las restricciones o problemtica que puedan afectar a la planificacin del


proyecto, se puede situar como principal los periodos de tiempo y sus cumplimientos en el
que deben desarrollarse. Segn el diagrama de Gantt mostrado ms adelante, el plazo de
ejecucin ha sido de ocho o nueve meses aproximadamente. Otras restricciones que
surgieron fueron los anlisis de diversas funciones y mtodos matemticos de difcil
entendimiento por la poca documentacin disponible y encontrada.

7.3. Anlisis de requisitos


Los siguientes requisitos identificados para esta aplicacin son de carcter
funcional, puesto que atienden a caractersticas propias de las funciones de Criptografa y
del algoritmo en cuestin.

RF001. Representacin de un cuerpo finito o campo de Galois del tipo GFH28 L.

RF002. Representacin y clculo de las operaciones de suma y multiplicacin en GFH28 L.

91

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

RF003. Representacin de un bloque de datos como una matriz de estado de 4 filas y Nb


columnas, dependientes del tamao de dicho bloque (128, 192, 256 bits).

RF004. Representacin de la clave, al igual que el bloque de texto, como una matriz de 4
filas y Nk columnas, dependientes del tamao de dicha clave (128, 192, 256 bits).

RF005. Clculo de operaciones XOR entre los bloques de texto y las claves.

RF006. Representacin y establecimiento de las matrices de sustitucin tanto para el


cifrado como para el descifrado.

RF007. Calcular el nmero de rondas necesarias para llevar acabo el algoritmo de cifrado o
de descifrado.

RF008. Calcular el texto cifrado despus de aplicar las funciones necesarias para el cifrado.

RF009. Calcular el texto descifrado despus de aplicar las funciones necesarias para el
descifrado.

RF010. Comprobar los resultados de aplicar el algoritmo sobre el mismo texto aplicando
diferentes valores de clave.

RF011. Comprobar los resultados de aplicar el algoritmo sobre el mismo texto aplicando
diferentes longitudes de clave.

92

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

7.4. Arquitectura tcnica


La arquitectura precisa para esta aplicacin es la bsica de PC, sin requerir
caractersticas especficas adicionales.

Es imprescindible tener instalado un software para la compilacin y contruccin del


proyecto en el lenguaje C++, por ejemplo el Visual .Net o el visual C++ 6.0, aunque la
aplicacion lleva consigo un ejecutable llamado AESTool que no necesitara de ingun
software necesario para su ejecucin

Tambien es necesario un compilador Borland C++ versin 4.5 para la


comprobacin y detalle de las rondas del algoritmo sobre una clave inventada,
funcionamiento propio de un router.

93

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

7.5. Diseo de la interfaz de usuario


Como se ha mencionado en la introduccin del ciclo de vida, la interfaz de usuario
se desarrolla de forma evolutiva, al igual que todo el desarrollo de este proyecto. Esta
manera de trabajar presenta como ventajas poder obtener resultados parciales a medida que
se completan los algoritmos y, en caso de tener que realizar modificaciones, stas son ms
fciles de localizar y resolver.

La prioridad que se ha establecido a la hora de desarrollar la interfaz de usuario es


que sobre todo sea sencilla e intuitiva. Como antes se ha indicado, est sobre todo pensado
para el mbito docente y por tanto el grado de conocimiento del usuario no tiene
necesariamente que ser avanzado.

Primero se presentan los elementos propios que componen la aplicacin:

Texto sin cifrar: es una caja de texto, donde se introduce el texto que se
quiere cifrar.

Clave: es una caja de texto, en este caso solo se podr introducir caracteres
hexadecimales, es decir, dgitos del 0 al 9 y caracteres de la A a la F.

Texto Cifrado: es una caja de texto, donde aparecer el resultado de cifrar


un texto, o bien, donde se introduzca un texto en hexadecimal para descifrarlo.

Texto Descifrado: es una caja de texto, donde aparecer el resultado de


descifrar un texto cifrado en hexadecimal.

Adems de estos elementos existen otros que son lo botones que realizarn la

94

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

operacin que su nombre indica.

Cifrar: botn que cifrar el texto de entrada.

Descifrar: botn que descifrar el texto en hexadecimal introducido.

Limpiar: botn que limpia las cajas de texto.

Por Defecto: botn que introduce unos valores por defecto en las cajas de
texto, nicamente para poner ejemplos de forma rapida

A continuacin se presentan unos ejemplos del funcionamiento de la interfaz de


usuario.

Al iniciar la aplicacin aparecer la siguiente visual, en la que se puede comenzar a


interactuar, o bien cifrando un texto de entrada, o bien descifrando un texto en hexadecimal
que ya haya sido cifrado, teniendo siempre en cuenta la clave que se haya utilizado, pues
como se ver en uno de estas pantallas puede ocurrir un error de descifrado si la clave
introducida para descifrar no es la correcta.

95

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla Inicial.
Figura 18
Pantalla inicial lista para introducir el texto a cifrar o descifrar en el lugar adecuado
en cada caso, es decir, en las correspondientes cajas de texto, junto con la clave,
imprescindible para realizar las operaciones antes especificadas.

96

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla con ejemplo de cifrado.


Figura 19
Pantalla inicial con el texto listo para cifrar, junto con la clave, a la espera de que el
botn de cifrar sea pulsado para que el texto se codifique.

97

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla con el texto cifrado.


Figura 20
Pantalla tras la operacin de cifrado que muestra el resultado de cifrar el texto de
entrada junto con la clave, en la caja de texto cifrado.

98

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla con ejemplo de descifrado.


Figura 21
Pantalla inicial con el texto listo para descifra, junto con la clave,a la espera de que
el botn de descifrar sea pulsado para que el texto se descodifique.

99

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla con el texto descifrado.


Figura 22
Pantalla tras la operacin de descifrado que muestra el resultado de descifrar el
texto de entrada cifrado junto con la clave, en la caja de texto cifrado y muestra la solucion
en la caja de texto descifrado.

100

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla cuando se pulsa el botn Limpiar.


Figura 23
Pantalla tras pulsar el botn de limpiar donde se borraran los resultados intermedios
que puedan quedar entre una y otra operacion.

101

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla con ejemplo de descifrado errneo.


Figura 24
Pantalla tras la operacin de descifrado que muestra el resultado de descifrar el
texto de entrada cifrado junto con una clave errone, es decir, una clave que no corresponde
con la clave con la que se cifr el texto, de esta manera en la caja de texto donde se muestra
el resultado se observa una serie de caracteres sin ningn sentido.

102

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla Men.
Figura 25

103

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Pantalla Acerca del Autor.


Figura 26

104

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

8. Valoracin econmica y
planificacin
8.1. Introduccin
En este apartado se detalla la valoracin econmica o anlisis de costes de cada
una de las actividades que comprenden la realizacin y puesta en funcionamiento del
proyecto.

El proyecto se ha descompuesto en actividades y tareas, indicadas en la valoracin


econmica.

8.2. Tcnicas de estimacin de costes


Las diferentes actividades o tareas que componen el proyecto y que se han
incluido en este anlisis de costes se detallan a continuacin.
1.

Especificaciones y Desarrollo Software


Esta tarea se ha dividido en dos grandes fases debido a su gran peso e importancia

dentro del proyecto.

En primer lugar, aparece las especificaciones o fase de requisitos. Esta tarea


incluye las fases de especificacin de requisitos, del anlisis funcional de las necesidades
que se quieren alcanzar y de lo que ya se tiene junto con sus objetivos asi como un plan de
pruebas que serviran de gua.

En segundo lugar se tiene la fase de desarrollo del software. Esta fase es sin duda
la que ha supuesto ms coste, en trminos de tiempo, y la que distingue nuestro

105

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

presupuesto del de otro proyecto que comprenda el mismo mbito o sea del mismo tipo.

Para cada una de las fases anteriores se resean los costes directos, expresados en
meses/hombre (meses completos dedicados para cada actividad), necesarios para
acometer cada una de ellas, indicndose la categora del realizador: Jefe de Proyecto o
Analista/Programador. La actividad del Jefe de Proyecto se ha estimado en un 17,5%
respecto de la actividad del Analista/Programador.

Por ltimo, cabe destacar que no debe haber confusin con el significado de los
costes unitarios aqu expresados. Estos costes representan la valoracin econmica que
hara la empresa por poner a cargo de este proyecto a dicho Jefe de Proyecto o Analista en
su caso.
2.

Instalacin, Pruebas e Integracin del Software


En este apartado se recogen los costes directos de las actividades de integracin y

de pruebas del software en el entorno de desarrollo y en el de explotacin, incluidos los


gastos adicionales, tales como los desplazamientos y las dietas. Estos costes han sido
calculados del mismo modo que en el apartado anterior.
3.

Equipamiento y Licencias Software


Costes de todo el equipamiento e infraestructura, si fuera necesario. As mismo, se

han de especificar en este apartado las licencias necesarias para el entorno de explotacin,
es decir, las licencias necesarias de los programas que se van a utilizar y que servirn de
herramientas para el desarrollo de la aplicacin.

Para la implementacin de este software es necesario una licencia para el lenguaje

106

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

numrico y simblico de Mathematica, en concreto de la versin 5.2 aqu utilizada, as


como la licencia para poder explotar el lenguaje de programacion C++ y disponer de un
PC. Como la venta de estos software ser con toda seguridad a una persona jurdica, no se
contempla en este presupuesto la adquisicin de dichas plataformas hardware, debido a
que en los tiempos presentes cualquier empresa o persona jurdica dispone de un PC,
hacindose slo referencia a la licencia del programa Mathematica.
4.

Apoyo logstico (Formacin)


En este concepto se ampara la formacin a impartir a los posibles operadores y

administradores del sistema a implantar. Se incluye en la formacin la entrega de toda la


documentacin necesaria para el curso de formacin.
5.

Incrementos e IVA
Se parte de la suma de las partidas (1), (2), (3), y (4) formando el Coste Directo

del proyecto. A este Coste Directo se le aplican los Gastos Generales H13 %L y el
Beneficio Industrial H6 %L. La suma de los conceptos de Coste Directo, Gastos Generales
y Beneficio Industrial constituyen el Total Importe sin IVA.
A este importe se le sumarn los impuestos correspondientes como IVA H16 %L,
para la Pennsula y Baleares, IGIC H5 %L para las islas Canarias o IPSI H0 %L para Ceuta y
Melilla.

Total proyecto

La suma del Total Importe sin IVA ms la partida de

Incrementos e IVA

determinan el importe total del desarrollo, implantacin y puesta en servicio del proyecto.

107

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

8.3. Planificacin temporal del proyecto


En el diagrama de Gantt de actividades siguiente se reflejan las tareas e hitos ms
importantes para el desarrollo y ejecucin de este proyecto Fin de Carrera, as como la
planificacin temporal final dedicada a cada uno de ellos.

8.4. Costes del proyecto


En funcin de lo explicado en el apartado de tcnicas de estimacin de costes y de
la planificacin vista en el apartado anterior, se proceder a calcular los costes estimados
del presente proyecto.

El importe total del proyecto asciende a 20.550,79 (VEINTE MIL


QUINIENTOS CINCUENTA EUROS CON SETENTA Y NUEVE CNTIMOS),
impuestos incluidos.

El detalle de cada una de las partidas vistas en el apartado anterior, se expresa en


la tabla siguente:

108

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

ALGORITMO AES PARA PROTECCIN DE DATOS


Suministrador/
Empresa

Unidad
(Meses/
Hombre)

Desarrollo Inf.
Desarrollo Inf.

0,04
0,20

7.847,53
5.762,31

274,66
1.152,46

Desarrollo Inf.
Desarrollo Inf.

0,04
0,25

7.847,53
5.762,31

343,33
1.440,58

Jefe de Proyecto
Analista/Programador

Desarrollo Inf.
Desarrollo Inf.

0,03
0,15

7.847,53
5.762,31

206,00
864,35

Jefe de Proyecto
Analista/Programador

Desarrollo Inf.
Desarrollo Inf.

0,04
0,21

7.847,53
5.762,31

288,40
1.210,09

Jefe de Proyecto
Analista/Programador

Desarrollo Inf.
Desarrollo Inf.

0,04
0,20

7.847,53
5.762,31

274,66
1.152,46

Desarrollo del Interfaz y aplicacin grafica


Jefe de Proyecto
Analista/Programador

Desarrollo Inf.
Desarrollo Inf.

0,04
0,24

7.847,53
5.762,31

329,60
1.382,95

tem

P.1.1.1

P.1.1.2

P.1

Concepto

Coste Unitario

Coste Total

Total por
partidas

Especificaciones y Desarrollo Software


1. Especificaciones
Especificacin de Requisitos y Anlisis Funcional
Jefe de Proyecto
Analista/Programador
Plan de pruebas
Jefe de Proyecto
Analista/Programador
2. Desarrollo software

P.1.1.3

P.1.1.4

P.1.1.5

P.1.1.6

Fundamentos Matemticos:
Campos finitos GF(2^8),
Suma Y multiplicacion en GF(2^8),

Especificaciones del Algoritmo:


Funciones de Cifrado,
Funciones de Descifrado,

Desarrollo del Algoritmo

Subtotal 1
3

Equipamiento y Licencias

P.1.3.1

Licencia de Mathematica V. 5.2 para Windows

P.1.3.2
P.1.3.3

Licencia de Windows XP
PC

AddLink Sw.
Cientfico

1.585,00

1.585,00

Microsoft Iberica
Hewlett Packard

1
1

285,24
1.138,29

285,24
1.138,29
Subtotal 3

4
P.1.4.1

8.919,53

Ingeniera y Direccin del Proyecto


Ingeniera y Direccin del Proyecto

3.008,53

Desarrollo Inf.
Subtotal 4

5
P.1.5.1

Apoyo Logstico (Formacin)


Formacin aplicacin Ajuste de Funciones
(Curso de 6 horas a 8 personas)

Desarrollo Inf.

2.959,50

2.959,50
Subtotal 7

TOTAL COSTE DIRECTO


6

Incrementos e IVA
Gastos Generales
Beneficio Industrial

Desarrollo Inf.
Desarrollo Inf.

13%
6%

14.887,56
14.887,56

16%

17.716,20
TOTAL EUROS

109

14.887,56

1.935,38
893,25

TOTAL IMPORTE SIN IVA


IVA

2.959,50

17.716,20

2.834,59
20.550,79

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

9. Apndice y Glosario
AES (Advanced Encryption Standard). Algoritmo Estndar de Cifrado Avanzado.

Array Conjunto o agrupacin de variables del mismo tipo cuyo acceso se realiza por
ndices.

Bit

Dgito del sistema de numeracin binario que puede tomar los valores 0 1.

Bloques (Block)

Secuencia de dgitos binarios que forman parte de la entrada, la salida,

el estado, y la clave. La longitud de una secuencia es el nmero de bits que contiene. Los
bloques tambin son interpretados como las series de bytes.

Byte

Grupo de 8 bits tratados como una entidad simple, es decir como una palabra o bien

como un vector de 8 bits.

Cifrado Inverso (Inverse Cipher) Serie de las transformaciones que convierten el texto
cifrado en el texto de entrada inicial sin cifrar mediante la utilizacin de la clave.

Cipher Series Nmero de transformaciones necesarias que convierte el texto de entrada en


un texto cifrado utilizando una clave especifica para el cifrado de Cifra.

Clave de Cifrado (Cipher Key)

Clave secreta usada por la funcin de Extensin

Clave para generar un juego de claves; se puede ver como una matriz de vectores o matriz
de cuatro filas y Nk columnas. K es su representacion a lo largo del algoritmo.

Estado (State Intermediate) Es el resultado intermedio de cada una de las funciones del

110

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

cifrado o descifrado, se ve como una matriz de cuatro filas y Nb columnas.

Key Expansion

Rutina de ampliacin de la clave que genera una serie Round Key a

partir de la clave adicional.


Nb

Nb es el nmero de columnas (formadas cada una de ella por 32 bytes) que forman

la matriz de estado Estado, por lo que variar su nmero dependiendo del tamao del
bloque.
Nb = tamao del bloque utilizado en bits 32.
Nk es el nmero de columnas (formadas cada una de ella por 32 bytes) que forman

Nk

la matriz de la clave, y de la misma manera variar su nmero dependiendo del tamao de


la clave.
Nk = tamao del bloque utilizado en bits 32.
Nr

Nr es el nmero de iteraciones o vueltas de las cuatro transformaciones sobre la

informacin, o mejor dicho sobre la matriz de Estado Intermedio. Su valor depender de la


versin del algoritmo que se utilice.
Nr = mx HNk , Nb L + 6.

Palabra (Word)

Un grupo de 32 bits tratado como una entidad sola o como 4 bytes.

Rijndael

Algoritmo Criptogrfico base del Estndar de Cifrado Avanzado (AES).

Round Key

Valores obtenidos a partir de la clave de cifrado mediante el uso de la

funcin o rutina Key Expansion, que se aplica tanto para el cifrado como para el descifrado.

111

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

S-BOXCaja o matriz de sustitucin usada en la funcin ByteSub o substitucin de bytes y


en la funcin de Extensin Clave para realizar una a una la substitucin de cada byte.

Texto Cifrado (Ciphertext) Salida de datos cifrados, es decir, resultado del cifrado del
bloque o texto de entrada o bien datos de entrada a la hora de realizar el inverso al cifrado,
es decir, datos de entrada a la hora de realizar el descifrado.

Texto Plano (Plaintext)

Entrada de datos a la hora de cifrar, es decir, texto que se

quiere cifrar, pero al igual que ocurre con el texto cifrado o Ciphertext, tambin es el texto
de salida o resultado de la funcin inversa al cifrado, el descifrado.

Transformacin Afn (Affine Transformation)

Consiste en la multiplicacin de una

matriz seguida por la suma de un vector.

XOR Operacin OR exclusivo y su representacion es

Multiplicacin de dos polinomios (cada uno con grado 4) mdulo x4 + 1.

Campo de multiplicacin Finita.

112

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

Bibliografa
[AES01]

Fernoso Santos, Pablo; Fernndez Daz, Jos M,


Guerrero Fresneda, Vicente.
Algoritmos de Seguridad de ltima generacin: Algoritmo AES.
Proteccin de la Informacin. (24/4/2001).
Ingeniera Tcnica en Electrnica Industrial. Escuela Politcnica, UAH.

[AMG00]

lvarez Maran, Gonzalo.


El nuevo estndar de ciftrado.
Revista Criptonomicn n34 (2000).

[CCSFe]

Martnez, Fernando.
Criptografa de clave secreta.
Matemtica Aplicada II.

[CSS01]

Lucena Lpez, Manuel Jos.


Criptografa y Seguridad en Computadores. 3 Edicin
(Versin 1.00) Junio 2001.

[COUPIE02] Nicolas Courtois, Josef Pieprzyk.


Cryptanalysis of Block Ciphers with Overdefined Systems of Equations.
ASIACRYPT 2002.

113

Proyecto Fin de Carrera

[DES99]

Algoritmo Criptogrfico AES para proteccin de datos

Muoz Muoz, Alfonso.


Estudio del Algoritmo Criptogrfico: Data Encryption Standard (DES)
Sistemas de Telecomunicacin. EUITT-UPM.

[FSE00]

Niels Ferguson, John Kelsey, Stefan Lucks, Bruce Schneier.


Improved Cryptanalysis of Rijndael.
FSE 2000.

[FUST00]

Fster Sabater, Amparo; de la Gua Martnez, Dolores y otros.


Tcnicas Criptogrfica de proteccin de datos. 2 edicin.
Ed. Ra-Ma. Madrid, 2000.

[JNIST00]

James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr,


Morris Dworkin, James Foti, Edward Roback.
Report on the Development of the Advanced Encryption Standard
2000, NIST Website: http://aes.nist.gov/aes.

[LUCE07]

Lucena Lpez, Manuel J.


Criptografa y Seguridad en Computadores.
4 Edicin. Versin 0.7.3. 2007.

[MATE05]

Mateos Salmador, Andrs. Proyecto Fin de Carrera:


Algoritmos para la Criptografa de Clave Pblica.
Dirigido por el Dr. Fco. Javier Rodrguez Gmez.
Universidad Pontificia Comillas. Madrid, 2005.

114

Proyecto Fin de Carrera

[MENE96]

Algoritmo Criptogrfico AES para proteccin de datos

A. Menezes, P. Van Oorschot, and S. Vanstone,


Handbook of Applied Cryptography,
CRC Press, 1996. http://www.cacr.math.uwaterloo.ca/hac/

[PAST01]

Pastor Franco, Jos; Sarasa Lpez, Miguel ngel;


Salazar Riao, Jos Luis;
Criptografa Digital, Fundamentos y Aplicaciones.
2 edicin.

[PRO02]

Joan Daemen, Vincent Rijmen


AES Proposal: Rijndael

[RIJN02]

Joan Daemen and Vincent Rijmen.


The Design of Rijndael: AES The Advanced Encryption Standard.
Springer-Verlag, 2002.

[ROME04]

Romero Luezas, Rafael. Proyecto Fin de Carrera:


Criptografa Asimtrica de Clave Pblica.
Dirigido por el Dr. Fco. Javier Rodrguez Gmez.
Universidad Pontificia Comillas. Madrid, 2004.

[SEI02]

Rami Aguirre, Jorge.


Seguridad Informtica. Libro Electrnico en diapositivas
Madrid, Febrero 2002.

115

Proyecto Fin de Carrera

[WILL99]

Algoritmo Criptogrfico AES para proteccin de datos

Stallings, Williams.
Cryptography and Network Security: Principles and Practice.
Second Edition. Prentice Hall, New Jersey, 1999.

URLs
[1]

http://csrc.nist.gov/CryptoToolkit/aes/

[2]

http://www.williamstallings.com

[3]

http://www.kriptopolis.com/

[4]

http://www.esat.kuleuven.ac.be/~rijmen/rijndael/

[5]

http://es.wikipedia.org

[6]

http://www.htmlweb.net/seguridad/cripto/cripto_2.html

[7]

http://gaussianos.com/criptografia-cifrado-de-clave-publica-i/

[8]

http://www.google.com/

[9]

http://www.lawebdelprogramador.com/

[10]

http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

[11]

http://www.koders.com/java

[12]

http://www.cs.ucdavis.edu/~rogaway/ocb/ocb-java/Rijndael.java

116

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

[13]

http://www.tendencias21.net/

[14]

http://www.cacr.math.uwaterloo.ca/hac/

[15]

http://www.aes.nist.gov/aes

117

También podría gustarte