- Se basa en un algoritmo llamado Rijndael
- Es un esquema de cifrado por bloques
§ Cifrado
en bloques: La información a cifrar se divide en bloques de longitud fija
(8,16, ... bytes) y luego se aplica el algoritmo de cifrado a cada bloque
utilizando una clave secreta.
§ AES
es uno de los algoritmos más populares usados en criptografía simétrica(sistemas
de clave secreta o de clave privada)
§ Los
sistemas simétricos utilizan la misma clave para encriptar y desencriptar.
AES toma
como elemento básico al byte (8 bits) y ve a los bytes como elementos del campo
finito de Galois o GF(28).
Es un
algoritmo de cifrado por bloques, los datos se dividen en segmentos de 16 bytes
(128 bits) y cada segmento se puede ver como un bloque o matriz de 4x4 bytes al
que se le llama estado.
AES vs Rijndael
0
Rijndael permite un mayor rango de tamaño
de bloques y longitud de claves además
de que Rijndael puede ser especificado
por una clave que sea múltiplo de 32 bits, con un mínimo de 128 bits y un
máximo de 256 bits.
0
AES tiene un tamaño de bloque fijo de 128
bits y tamaños de llave de 128, 192 o 256 bits.
El número de
rondas de AES depende
de los bits que quieran utilizar
como muestra la sigueinte tabla:
Por ejemplo:
Si tenemos una clave
de 128 bit , en el cifrado AES se
realizaran 10 rondas
incluyendo la ronda inicial y
la ronda
final y se realizara lo siguiente:
1)
Tenemos un
bloque de 128 bits
y una clave K
2)
Con el
bloque se realizara
la matriz llamada estado
y se aplicara un XOR con la clave k, celda a celda.
3)
La
matriz resultante del paso
2) nos
servirá para aplicarle
la operación de SubBytes
4)
La
matriz resultante de
aplicar SubBytes será necesaria
para aplicarle al operación ShiftRows
y esta misma servirá para
aplicarle al operación MixColumns.
5)
Una
vez que tengamos
la matriz resultante de los pasos anteriores
será necesario obtener una subclase,
la cual se obtendrá como sigue:
¿Cuál es
la subclave?
Para
calcular la primera columna de la subclave se toma la última columna de la
subclave anterior (en este caso la clave inicial) y se aplica una operación
llamada Rotword que consiste en realizar una rotación del primer byte
hacia el último lugar en la columna.
A
la columna resultante, se aplica una operación llamada SubBytes que
remplaza cada byte de la columna ya rotada por un byte almacenado en una tabla
llamada S-Box, para obtener la transformación S-Box de un byte se toman los
primeros 4 bits como el índice de la fila de la tabla y los segundos 4 como
índice de la columna de la tabla.
Al
resultado se le aplica un XOR byte a byte con la columna 4 posiciones atrás (en
este caso la primer columna de la clave inicial) y un XOR byte a byte con una
columna de una tabla RCON, por ser la primer subclave la que estamos
calculando se toma la primer columna de la tabla RCON, para las siguientes
subclaves se toma la próxima columna no utilizada de esta tabla.
Para
calcular las tres columnas siguientes se hace un XOR entre la columna anterior
y la columna de cuatro posiciones atrás.
Y
se procede de la misma forma para calcular las siguientes subclaves. Al
finalizar se tendrán 10 subclaves, cada una de estas subclaves se aplica en una
de las rondas de operaciones.
6) Ya
que obtuvimos la subclave
se realiza un XOR
de la matriz MixColumn con la subclave y se
realizan las siguientes rondas
desde la operación de subytes
nuevamente .
7)
Al
llegar a la Ronda fina la matriz
resultante del paso 6) se le
aplica nuevamente la operación SubBytes
.
8)
A la matriz
resultante del paso 7) se le
aplica la operación ShiftRows y
finalmente a la resultante de este paso
se le aplica un XOR con la
subclave final.
Operaciones:
SubBytes:
Cada byte de la matriz de estado se remplaza por otro valor de acuerdo a la
tabla de sustitución de bytes S-Box.
ShiftRows:
En cada fila de la matriz SubBytes, a excepción de la primera, se rotan
circularmente hacia la izquierda los bytes, en la segunda fila se rotan una
posición, en la tercera dos posiciones y en la cuarta tres posiciones.
MixColumns:
A cada columna de la matriz ShiftRows se le aplica una transformación lineal,
esto es multiplicarlo por una matriz predeterminada en el campo GF.
c1= (d4 * 02) XOR (bf * 03) XOR (5d)
XOR (30)
Se debe realizar la suma hexadecimal de los
operadores una vez sustituidos
por sus valores correspondientes en la tabla L.
El
resultado de la suma debe ser sustituido por su valor correspondiente en la
tabla llamada "tabla E", ese será el resultado final. Si la suma
hexadecimal fuera mayor a FF, hay que restarle FF tantas veces hasta que el
resultado sea menor o igual a FF.
Algoritmo
de descifrado
El
proceso de descifrado aplica las mismas operaciones que el cifrado pero de
forma inversa utilizando las mismas subclaves generadas en orden inverso,
además se utiliza una matriz distinta en la operación MixColumns que es la
inversa de la transformación lineal aplicada en el proceso de cifrado.
Referencias:
http://es.wikipedia.org/wiki/Advanced_Encryption_Standard
http://www.fup.edu.co/investigacion/fupcric/images/pdf/aes.pdfhttp://sedici.unlp.edu.ar/bitstream/handle/10915/4210/Documento_completo.pdf?sequence=1
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/4-criptografia-simetrica-o-de-clave-secreta/43-aes-advanced-encryption-standard/434-aplicacion-del-algoritmo-caso-practico
No hay comentarios:
Publicar un comentario