AES128

8
AES128 -Implementación en C para el cifrado y descifrado RESUMEN Este informe de aplicación describe el algoritmo AES y el uso de una implementación C sugerido para el cifrado y descifrado AES con MSP430. INTRODUCCIÓN El estándar de cifrado avanzado (AES) fue anunciado por el Instituto Nacional de Estándares y Tecnología (NIST) en noviembre de 2001. [1] Es el sucesor de Data Encryption Standard (DES), que no puede ser considerado como seguro por más tiempo, debido a su corta clave con una longitud de sólo 56 bits. Para determinar qué algoritmo seguiría DES, NIST llamó a diferentes propuestas de algoritmos en una especie de competencia. La mejor de todas las sugerencias se convertiría en el nuevo AES. En la ronda final de esta competencia el algoritmo Rijndael, llamado así por sus inventores belgas Joan Daemen y Vincent Rijmen, ganó debido a su seguridad, facilidad de implementación, y bajos requerimientos de memoria. Existen tres versiones diferentes de AES. Todos ellos tienen una longitud de bloque de 128 bits, mientras que la longitud de la clave se le permite ser 128, 192 o 256 bits. En este informe de aplicación, se discute sólo una longitud de clave de 128 bits. 1.1. CONCEPTO BÁSICO DEL ALGORITMO

description

AES128

Transcript of AES128

AES128 -Implementacin en C para el cifrado y descifrado RESUMEN Este informe de aplicacin describe el algoritmo AES y el uso de una implementacin C sugerido para el cifrado y descifrado AES con MSP430.INTRODUCCINEl estndar de cifrado avanzado (AES) fue anunciado por el Instituto Nacional de Estndares y Tecnologa (NIST) en noviembre de 2001. [1] Es el sucesor de Data Encryption Standard (DES), que no puede ser considerado como seguro por ms tiempo, debido a su corta clave con una longitud de slo 56 bits. Para determinar qu algoritmo seguira DES, NIST llam a diferentes propuestas de algoritmos en una especie de competencia. La mejor de todas las sugerencias se convertira en el nuevo AES. En la ronda final de esta competencia el algoritmo Rijndael, llamado as por sus inventores belgas Joan Daemen y Vincent Rijmen, gan debido a su seguridad, facilidad de implementacin, y bajos requerimientos de memoria. Existen tres versiones diferentes de AES. Todos ellos tienen una longitud de bloque de 128 bits, mientras que la longitud de la clave se le permite ser 128, 192 o 256 bits. En este informe de aplicacin, se discute slo una longitud de clave de 128 bits.1.1. CONCEPTO BSICO DEL ALGORITMO El algoritmo AES consta de diez rondas de cifrado, como se puede ver en la Figura 1. En primer lugar la clave de 128 bits se expande en once llamadas teclas redondas, cada una de ellas 128 bits de tamao. Cada ronda incluye una transformacin utilizando la clave de cifrado correspondiente para garantizar la seguridad de la encriptacin.

Despus de una ronda inicial, durante el cual la primera ronda es clave XOR con el texto plano (operacin AddRoundKey), nueve rondas igualmente estructuradas siguen. Cada ronda consta de las siguientes operaciones: Bytes Sustitutos Filas Shift Columnas Mix Aadir clave ronda La dcima ronda es similar a las rondas uno a nueve, pero el paso de las columnas de la mezcla se omite. En las siguientes secciones, se explican estas cuatro operaciones.1.2. ESTRUCTURA DE DATOS DE CLAVES Y DE ENTRADA Tanto la clave y los datos de entrada (tambin denominados como el estado) se estructuran en una matriz de 4x4 de bytes. La Figura 2 muestra cmo los datos de clave y de entrada de 128 bits se distribuyen en las matrices de bytes.

1.3. BYTES SUSTITUTOS (SUBBYTES OPERACIN) La operacin SubBytes es una sustitucin no lineal. Esta es una razn importante para la seguridad del AES. Hay diferentes formas de interpretar la operacin SubBytes. En este informe de aplicacin, es suficiente considerar los SubBytes paso como una bsqueda en una tabla. Con la ayuda de esta tabla de consulta, los 16 bytes de estado (los datos de entrada) se sustituyen por los correspondientes valores que se encuentran en la tabla (ver Figura 3).

1.4. ROTACIN DE FILAS (SHIFTROWS OPERACIN) Como implica su nombre, la operacin ShiftRows procesa diferentes filas. Se realiza una rotacin simple con un diferente ancho de rotacin. La segunda fila de los datos de entrada de bytes 4x4 (el Estado) se desplaza una posicin de byte a la izquierda en la matriz, la tercera fila se desplaza dos posiciones de bytes a la izquierda, y la cuarta fila se desplaza tres posiciones de bytes a la izquierda. La primera fila no se cambia. La Figura 4 ilustra el funcionamiento de ShiftRows.

1.5 MIX COLUMNAS (MIXCOLUMNS OPERACIN) Probablemente la ms compleja operacin desde una perspectiva de implementacin de software es el paso MixColumns. El mtodo de trabajo de MixColumns se puede ver en la Figura 5.

En oposicin a la operacin ShiftRows, que trabaja en las filas de la matriz de estado 4x4, la operacin MixColumns procesa columnas. En principio, slo una multiplicacin de la matriz debe ser ejecutada. Para hacer esta operacin reversible, no se utilizan la suma y la multiplicacin de costumbre. En AES, se utilizan las operaciones de campo de Galois. Este documento no entra en los detalles matemticos, slo es importante saber que en un campo de Galois, una adicin corresponde a un XOR y una multiplicacin de un equivalente ms complejo. El hecho de que hay muchos casos de 01 en la matriz multiplicacin de la operacin MixColumns hace que este paso fcilmente computable.1.6 AGREGAR CLAVE RONDA (ADDROUNDKEY OPERACIN) La operacin es simple AddRoundKey. Los bytes correspondientes de los datos de entrada y la clave ampliada se XOR (ver Figura 6).

1.7 DE AMPLIACIN DE TECLAS (KEYEXPANSION OPERACIN) Como se mencion anteriormente, Keyexpansion se refiere al proceso en el que los 128 bits de la llave original se expanden en once teclas redondas de 128 bits. Para calcular tecla redonda (n + 1) de la llave redonda (n) se llevan a cabo estos pasos: 1. Calcular la nueva primera columna de la clave siguiente ronda como se muestra en la Figura 7:

En primer lugar todos los bytes de la vieja cuarta columna tienen que ser sustituido mediante la operacin SubBytes. Estos cuatro bytes se desplazan verticalmente por una posicin de byte y luego XOR a la antigua primera columna. El resultado de estas operaciones es la nueva primera columna. 2. Las columnas 2 a 4 del duplicado de la llave redonda se calculan como se muestra: [Nueva segunda columna] = [nueva primera columna] XOR [antigua segunda columna] [Nueva tercera columna] = [nueva segunda columna] XOR [vieja tercera columna] [Nueva cuarta columna] = [nueva tercera columna] XOR [antiguo cuarta columna] La figura 8 ilustra el clculo de las columnas 2-4 de la nueva clave ronda.