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

D. Miguel Vzquez Fernndez 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).............................................. 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............................................................................. 4. Aspectos en la Implementacin............................................................................................. 4.1 Funcin Seleccin de clave...................................................................................... 4.2 Funcin de expansin de clave................................................................................. 4.3 Desarrollo del Algoritmo.......................................................................................... 19 19 22 23 25 27 29 31 35 37 39 40 43 46 48 52 54 56 58 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................................................................................................. 82 82 90 91 93

VI

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

Algoritmo Criptogrfico AES para proteccin de datos

b)

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 diferentes plataformas. en

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 H X L de grado n con coeficientes en F p , y defnase Fq = F p @ X D < f HT L >, donde F p @ X D denota el anillo de todos los polinomios con coeficientes en F p , < f H X L > denota el ideal generado por f H X L, y la barra diagonal indica el anillo cociente (definido de forma similar al grupo cociente). El polinomio f H X 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 GFHk L. (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 < (1)

20

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. Se va a ver un ejemplo de multiplicacin de polinomios: (4)

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:

(5)

25

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

c 0 = a 0 .b 0 , 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 c 6 = a 3 .b 3 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 d HxL: d HxL = aHxL bHxL = d3 x3 + d2 x2 + d1 x + d0 donde: 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 . Tambien puede expresarse en una matriz de estados de la siguiente manera: d0 y i a0 i j z j j z j j z j j z j d a1 1 j z j j z j = j z j j z j j j a2 d2 z j j z j j z z j j k d3 { k a3 a3 a0 a1 a2 a2 a3 a0 a1 a1 y i b0 y z z zj j z j z z j z a2 z b 1 z j z z j z . z j z. z j zj j b2 z z a3 z z j z zj z z a0 { k b3 { (7)

(8)

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

29

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

Algoritmo Criptogrfico AES para proteccin de datos

d)

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. a00 i j j j j a10 j j j j j a20 j j j k a30 a01 a11 a21 a31 a02 a12 a22 a32 a03 y z z z a13 z z z z. z a23 z z z 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. k00 i j j j j k10 j j j j j k20 j j j k k30 k01 k11 k21 k31 k02 k12 k22 k32 k03 y z z z k13 z z z z. z k23 z z z 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: Cada byte es considerado como un elemento del GFH28 L que genera el polinomio

1.

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 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 74 3A 2C 1D ED 16 79 83 DE FB 0C 0B 7A B1 5B

1
01 B4 6E 45 FE 5C 5E B7 7E 6A 7C E0 28 07 0D 23

2
8D AA 5A 92 37 05 AF 97 7F 32 2E 1F 2F AE D6 38

3
F6 4B F1 6C 67 CA D3 85 80 6D C3 EF A3 63 EB 34

4
CB 99 55 F3 2D 4C 49 10 96 D8 8F 11 DA C5 C6 68

5
52 2B 4D 39 31 24 A6 B5 73 8A B8 75 D4 DB 0E 46

6
7B 60 A8 66 F5 87 36 BA BE 84 65 78 E4 E2 CF 03

7
D1 5F C9 42 69 BF 43 3C 56 72 48 71 0F EA AD 8C

8
E8 58 C1 F2 A7 18 F4 B6 9B 2A 26 A5 A9 94 08 DD

9
4F 3F 0A 35 64 3E 47 70 9E 14 C8 8E 27 8B 4E 9C

A
29 FD 98 20 AB 22 91 D0 95 9F 12 76 53 C4 D7 7D

B
C0 CC 15 6F 13 F0 DF 06 D9 88 4A 3D 04 D5 E3 A0

C
B0 FF 30 77 54 51 33 A1 F7 F9 CE BD 1B 9D 5D CD

D
E1 40 44 BB 25 EC 93 FA 02 DC E7 BC FC F8 50 1A

E
E5 EE A2 59 E9 61 21 81 B9 89 D2 86 AC 90 1E 41

F
C7 B2 C2 19 09 17 3B 82 A4 9A 62 57 E6 6B B3 1C

Tabla de inversos multiplicativos en hexadecimal. Figura 6

40

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

2.

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.

y0 y i 1 i j z j z j j z j j z j1 y 1 j z j z z j j j j j z j j z j1 y 2 j z j z z j j j j j z j j z j1 j z y 3 j z z j j j j j z j = j z j1 j z j y4 z z j j j j j z j j z j0 j z j y5 z z j j j j j z j j z j0 j z j y6 z z j j j j j z j z j 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

x0 y i 1 y 1yi j z j z z j z j z z j z j z j z x 1 j z z j z 1z 1 j z z j z j z z j z j z z j z j z z j z x 2 j z j z 1z 0 j z z j zj z z j z j z z j z j z z j z j z j z x 1z 0 3 j z z j zj z z j z j z z j z . + j z z j z. j z j 0z 0 j x4 z z j zj j z z z z z zj j z j z j z j z z j 0z 1 j x5 z z j zj j z z z z j z z j z j z j z j z z j 0z 1 j x6 z z j zj j z z z z z zj j z 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

Algoritmo Criptogrfico AES para proteccin de datos

0 0 1 2 3 4 5 6 7 8 9 A B C D E F
63 CA B7 04 09 53 D0 51 CD 60 E0 E7 BA 70 E1 8C

1
7C 82 FD C7 83 D1 EF A3 0C 81 32 C8 78 3E F8 A1

2
77 C9 93 23 2C 00 AA 40 13 4F 3A 37 25 B5 98 89

3
7B 7D 26 C3 1A ED FB 8F EC DC 0A 6D 2E 66 11 0D

4
F2 FA 36 18 1B 20 43 92 5F 22 49 8D 1C 48 69 BF

5
6B 59 3F 96 6E FC 4D 9D 97 2A 06 D5 A6 03 D9 E6

6
6F 47 F7 05 5A B1 33 38 44 90 24 4E B4 F6 8E 42

7
C5 F0 CC 9A A0 5B 85 F5 17 88 5C A9 C6 0E 94 68

8
30 AD 34 07 52 6A 45 BC C4 46 C2 6C E8 61 9B 41

9
01 D4 A5 12 3B CB F9 B6 A7 EE D3 56 DD 35 1E 99

A
67 A2 E5 80 D6 BE 02 DA 7E B8 AC F4 74 57 87 2D

B
2B AF F1 E2 B3 39 7F 21 3D 14 62 EA 1F B9 E9 0F

C
FE 9C 71 EB 29 4A 50 10 64 DE 91 65 4B 86 CE B0

D
D7 A4 D8 27 E3 4C 3C FF 5D 5E 95 7A BD C1 55 54

E
AB 72 31 B2 2F 58 9F F3 19 0B E4 AE 8B 1D 28 BB

F
76 C0 15 75 84 CF A8 D2 73 DB 79 08 8A 9E DF 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 S HxL. (20)

donde S ' HxL representa la matriz de estado resultante de esta etapa, S HxL 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

Algoritmo Criptogrfico AES para proteccin de datos

S '0,C y i 02 i j z j z j j z j j j S ' j 01 j z 1,C z j j z j j z = j j z j j j S '2,C z j z j j z j 01 j z j z j k S '3,C { k 03

03 02 01 01

01 03 02 01

S0,C y 01 y i j z z j z z j z z j S 01 z j z 1,C z z j z z j z . . z j z z j z S 03 z j z 2, C z j z z z zj j z 02 { k S3,C {

(21)

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

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: 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 c7 4f 3c

Partiendo

de

la

clave

dada,

se

obtienen

los

valores

para

w0 ,

w1 ,

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

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. 09 cf 4f 3c cf 4f 3c 09

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

S Box

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

ab 09 f7 cf 15 4 f 88 3 c

a0 88 fa 54 fe 2 c 17 b1

23 2 a a3 6 c 39 76 39 05

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

Algoritmo Criptogrfico AES para proteccin de datos

Ejemplo.

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 S-box 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

Algoritmo Criptogrfico AES para proteccin de datos

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

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 S HxL 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

Algoritmo Criptogrfico AES para proteccin de datos

0 0 1 2 3 4 5 6 7 8 9 A B C D E F
52 7C 54 08 72 6C 90 D0 3A 96 47 FC 1F 60 A0 17

1
09 E3 7B 2E F8 70 D8 2C 91 AC F1 56 DD 51 E0 2B

2
6A 39 94 A1 F6 48 AB 1E 11 74 1A 3E A8 7F 3B 04

3
D5 82 32 66 64 50 00 8F 41 22 71 4B 33 A9 4D 7E

4
30 9B A6 28 86 FD 8C CA 4F E7 1D C6 88 19 AE BA

5
36 2F C2 D9 68 ED BC 3F 67 AD 29 D2 07 B5 2A 77

6
A5 FF 23 24 98 B9 D3 0F DC 35 C5 79 C7 4A F5 D6

7
38 87 3D B2 16 DA 0A 02 EA 85 89 20 31 0D B0 26

8
BF 34 EE 76 D4 5E F7 C1 97 E2 6F 9A B1 2D C8 E1

9
40 8E 4C 5B A4 15 E4 AF F2 F9 B7 DB 12 E5 EB 69

A
A3 43 95 A2 5C 46 58 BD CF 37 62 C0 10 7A BB 14

B
9E 44 0B 49 CC 57 05 03 CE E8 0E FE 59 9F 3C 63

C
81 C4 42 6D 5D A7 B8 01 F0 1C AA 78 27 93 83 55

D
F3 DE FA 8B 65 8D B3 13 B4 75 18 CD 80 C9 53 21

E
D7 E9 C3 D1 B6 9D 45 8A E6 DF BE 5A EC 9C 99 0C

F
FB CB 4E 25 92 84 06 6B 73 6E 1B F4 5F EF 61 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 d HxL = 0 B x3 + 0 D x2 + 09 x + 0 E , que es el inverso de cHxL. De forma matemtica: S HxL = d HxL S ' HxL. (22)

donde S HxL 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. S '0,C y i 0 e i j z j j z j j z j j z S ' j 09 j z 1, C j j z j j z = j j z j j j S '2,C z j z j j z j0d j z j z j k S '3,C { k 0 b 0b 0e 09 0d 0d 0b 0e 09 09 0d 0b 0e S0,C y i y j z z j z z j z z j z S z j z 1, C z j z z.j z . z j z z j z z S j z 2, C z j z z z zj j z { 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. 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) (24)

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

66

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

Algoritmo Criptogrfico AES para proteccin de datos

Ejemplo.

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

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

6.

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

al actual Proyecto cabra resear:

80

Proyecto Fin de Carrera

Algoritmo Criptogrfico AES para proteccin de datos

a)

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 3 Pruebas

Fase 4 Interfaz de Usuario

Fase 5 Conclusin

Fase 1.1 Bsqueda de Documentacin

Fase 1.2 Organizacin de documentacin

Paquetes de trabajo. Figura 17

83

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) Coste Unitario

P.1

tem

Concepto

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 Fundamentos Matemticos: Campos finitos GF(2^8), Suma Y multiplicacion en GF(2^8), Jefe de Proyecto Analista/Programador Especificaciones del Algoritmo: Funciones de Cifrado, Funciones de Descifrado, Jefe de Proyecto Analista/Programador Desarrollo Inf. Desarrollo Inf. Desarrollo Inf. Desarrollo Inf. 0,04 0,21 0,04 0,20 7.847,53 5.762,31 7.847,53 5.762,31 288,40 1.210,09 274,66 1.152,46 Desarrollo Inf. Desarrollo Inf. 0,03 0,15 7.847,53 5.762,31 206,00 864,35

P.1.1.1

Desarrollo Inf. Desarrollo Inf. Desarrollo Inf. Desarrollo Inf.

0,04 0,20 0,04 0,25

7.847,53 5.762,31 7.847,53 5.762,31

274,66 1.152,46 343,33 1.440,58

P.1.1.2

P.1.1.3

P.1.1.4

P.1.1.5

Desarrollo del Algoritmo Jefe de Proyecto Analista/Programador

P.1.1.6

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 Subtotal 1 8.919,53

3 P.1.3.1 P.1.3.2 P.1.3.3

Equipamiento y Licencias Licencia de Mathematica V. 5.2 para Windows Licencia de Windows XP PC AddLink Sw. Cientfico Microsoft Iberica Hewlett Packard 1 1 1 1.585,00 285,24 1.138,29 1.585,00 285,24 1.138,29 Subtotal 3 3.008,53

4 P.1.4.1

Ingeniera y Direccin del Proyecto Ingeniera y Direccin del Proyecto

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 2.959,50

TOTAL COSTE DIRECTO 6 Incrementos e IVA Gastos Generales Beneficio Industrial

14.887,56

Desarrollo Inf. Desarrollo Inf.

13% 6%

14.887,56 14.887,56

1.935,38 893,25 17.716,20

TOTAL IMPORTE SIN IVA IVA 16% 17.716,20 TOTAL EUROS 2.834,59

20.550,79

109

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 Nk es el nmero de columnas (formadas cada una de ella por 32 bytes) que forman

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-BOX Caja 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) matriz seguida por la suma de un vector.

Consiste en la multiplicacin de una

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

Algoritmo Criptogrfico AES para proteccin de datos

[DES99]

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

Algoritmo Criptogrfico AES para proteccin de datos

[MENE96]

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

Algoritmo Criptogrfico AES para proteccin de datos

[WILL99]

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] [15]

http://www.cacr.math.uwaterloo.ca/hac/ http://www.aes.nist.gov/aes

117