Categorias: Todos - cifrado - seguridad - pseudocódigo - expansión

por Jose Alejandro Sebastian Valdivia Cabello 4 anos atrás

342

Estándar de cifrado avanzado

El Estándar de Cifrado Avanzado (AES) es un algoritmo de cifrado que utiliza el esquema de claves de Rijndael para la expansión de la clave. El proceso de cifrado incluye varias etapas.

Estándar de cifrado avanzado

Estándar de cifrado avanzado

Descripción del cifrado

Etapa fina
AddRoundKey
ShiftRows
Subbytes
Pseudocódigo
Rondas:

4. AddRoundKey — cada byte del «state» es combinado con la clave «round»; cada clave «round» se deriva de la clave de cifrado usando una iteración de la clave.

3. MixColumns — operación de mezclado que opera en las columnas del «state», combinando los cuatro bytes en cada columna usando una transformación lineal.

2. ShiftRows — en este paso se realiza una transposición donde cada fila del «state» es rotada de manera cíclica un número determinado de veces.

1. SubBytes — en este paso se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla de búsqueda.

Etapa inicial:

1.AddRoundKey

Expansión de la clave usando el esquema de claves de Rijndael.
La mayoría de los cálculos del algoritmo AES se hacen en un campo finito determinado
Estrictamente hablando, AES no es precisamente Rijndael (aunque en la práctica se los llama de manera indistinta) ya que Rijndael permite un mayor rango de tamaño de bloques y longitud de claves; AES tiene un tamaño de bloque fijo de 128 bits y tamaños de llave de 128, 192 o 256 bits, mientras 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.

Ataques de canal lateral

En octubre de 2005, Adi Shamir y otros dos investigadores presentaron un artículo demostrando varios ataques de tiempos de caché7 contra AES. Uno de los ataques obtuvo una clave de AES entera después de tan solo 800 escrituras, en 65 milisegundos. Este ataque requiere que el atacante pueda ejecutar programas en el mismo sistema que realiza el cifrado de AES.
En abril de 2005, Daniel J. Bernstein anunció un ataque temporizado de caché4 que solía romper un servidor a medida que usaba el cifrado AES para OpenSSL. Este servidor fue diseñado para dar la mayor cantidad de información acerca de los tiempos de ejecución como fuera posible, y el ataque requería cerca de 200 millones de ficheros de texto en claro. Se dice que el ataque no es práctico en implementaciones del mundo real;5 Bruce Schneier llamó a esta investigación un "bonito ataque de tiempos".6
Los ataques de canal lateral no atacan al cifrador en sí, sino a las implementaciones del cifrador en sistemas que revelan datos inadvertidamente.

Seguridad

Algunos criptógrafos muestran preocupación sobre la seguridad del AES
En el contexto criptográfico se considera "roto" un algoritmo si existe algún ataque más rápido que una búsqueda exhaustiva (ataque por fuerza bruta). De modo que un ataque contra el AES de llave de 128 bits que requiera 'solo' 2120 operaciones sería considerado como un ataque que "rompe" el AES aun tomando en cuenta que por ahora sería un ataque irrealizable. Hasta el momento, tales preocupaciones pueden ser ignoradas. El ataque de fuerza bruta más largamente publicitado y conocido ha sido contra una clave de 64 bits RC5 por distributed.net.
El riesgo es que se puede encontrar alguna manera de mejorar los ataques y de ser así, el cifrado podría ser roto.
Ellos sienten que el margen entre el número de rondas especificado en el cifrador y los mejores ataques conocidos es muy pequeño
El método más común de ataque hacia un cifrador por bloques consiste en intentar varios ataques sobre versiones del cifrador con un número menor de rondas. El AES tiene 10 rondas para llaves de 128 bits, 12 rondas para llaves de 192 bits, y 14 rondas para llaves de 256 bits. Hasta 2005, los mejores ataques conocidos son sobre versiones reducidas a 7 rondas para llaves de 128 bits, 8 rondas para llaves de 192 bits, y 9 rondas para llaves de 256 bits (Ferguson et al, 2000).
En junio de 2003, el gobierno de los Estados Unidos anunció que el AES podía ser usado para información clasificada:
" El diseño y la fuerza de todas las longitudes de clave del algoritmo AES (es decir, 128, 192 y 256) son suficientes para proteger la información clasificada hasta el nivel SECRETO. La información de SECRETO SUPERIOR requerirá el uso de las longitudes de clave 192 o 256. la implementación de AES en productos destinados a proteger los sistemas de seguridad nacional y / o la información debe ser revisada y certificada por la NSA antes de su adquisición y uso. 1 "
Hasta 2005, no se ha encontrado ningún ataque exitoso contra el AES. La Agencia de Seguridad Nacional de los Estados Unidos (NSA) revisó todos los finalistas candidatos al AES, incluyendo el Rijndael, y declaró que todos ellos eran suficientemente seguros para su empleo en información no clasificada del gobierno de los Estados Unidos

Implementaciones

-Rijndael Inspector: programa hecho en Flash para cifrar y descifrar utilizando AES-128
-Evolsystem: ejemplo de algoritmo de cifrado AES - Rijndae
-Biblioteca GPL Nettle que también incluye una implementación de AES
-Código fuente con licencia GPL del algoritmo optimizado de Rijndael en C
-Implementación de AES de dominio público de D.J. Bernstein
-Implementación de AES de dominio público de Pablo Barreto escrita en C
-Implementación de AES por Brian Gladman con licencia BSD
-Una calculadora de AES que muestra valores intermedios en Javascript