Advanced Encryption Standard (AES) es una especificación para el cifrado de datos electrónicos establecida por el Instituto Nacional de Estándares y Tecnología (NIST) de EE. UU. en 2001. AES se usa ampliamente hoy en día porque es mucho más fuerte que DES y triple DES a pesar de ser más difícil. para implementar.
Puntos para recordar
- AES es un cifrado de bloque.
- El tamaño de la clave puede ser de 128/192/256 bits.
- Cifra los datos en bloques de 128 bits cada uno.
Eso significa que toma 128 bits como entrada y genera 128 bits de texto cifrado como salida. AES se basa en el principio de red de sustitución-permutación, lo que significa que se realiza mediante una serie de operaciones vinculadas que implican el reemplazo y la mezcla de los datos de entrada.
Funcionamiento del cifrado:
AES realiza operaciones en bytes de datos en lugar de bits. Dado que el tamaño del bloque es de 128 bits, el cifrado procesa 128 bits (o 16 bytes) de los datos de entrada a la vez.
El número de rondas depende de la longitud de la clave de la siguiente manera:
- Clave de 128 bits – 10 rondas
- Clave de 192 bits – 12 rondas
- Clave de 256 bits – 14 rondas
Creación de llaves redondas:
se utiliza un algoritmo de programación de llaves para calcular todas las llaves redondas a partir de la llave. Entonces, la clave inicial se usa para crear muchas claves de ronda diferentes que se usarán en la ronda correspondiente del cifrado.
Cifrado:
AES considera cada bloque como una cuadrícula de 16 bytes (4 bytes x 4 bytes = 128) en una disposición de columna principal.
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]
Cada ronda consta de 4 pasos:
- subbytes
- ShiftRows
- Mezclar columnas
- Agregar clave redonda
La última ronda no tiene la ronda MixColumns.
SubBytes realiza la sustitución y ShiftRows y MixColumns realizan la permutación en el algoritmo.
SubBytes:
este paso implementa la sustitución.
En este paso, cada byte se sustituye por otro byte. Se realiza usando una tabla de búsqueda también llamada S-box. Esta sustitución se realiza de manera que un byte nunca se sustituye por sí mismo y tampoco por otro byte que sea un complemento del byte actual. El resultado de este paso es una array de 16 bytes (4 x 4) como antes.
Los siguientes dos pasos implementan la permutación.
ShiftRows:
este paso es tal como suena. Cada fila se desplaza un determinado número de veces.
- La primera fila no se desplaza.
- La segunda fila se desplaza una vez a la izquierda.
- La tercera fila se desplaza dos veces a la izquierda.
- La cuarta fila se desplaza tres veces a la izquierda.
(Se realiza un desplazamiento circular a la izquierda.)
[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | -> | b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]
MixColumns:
este paso es básicamente una multiplicación de arrays. Cada columna se multiplica con una array específica y, por lo tanto, la posición de cada byte en la columna cambia como resultado.
Este paso se salta en la última ronda.
[ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]
Agregar teclas redondas:
ahora la salida resultante de la etapa anterior se aplica con XOR con la tecla redonda correspondiente. Aquí, los 16 bytes no se consideran como una cuadrícula, sino como 128 bits de datos.
Después de todas estas rondas, se devuelven 128 bits de datos cifrados como salida. Este proceso se repite hasta que todos los datos a cifrar pasan por este proceso.
Descifrado:
las etapas de las rondas se pueden deshacer fácilmente, ya que estas etapas tienen un opuesto que, cuando se realiza, revierte los cambios. Cada 128 bloques pasa por las 10, 12 o 14 rondas, según el tamaño de la clave.
Las etapas de cada ronda en el descifrado son las siguientes:
- Agregar clave redonda
- Columnas de mezcla inversa
- ShiftRows
- Subbyte inverso
El proceso de descifrado es el proceso de cifrado realizado a la inversa, por lo que explicaré los pasos con diferencias notables.
MixColumns inversas:
este paso es similar al paso MixColumns en el cifrado, pero difiere en la array utilizada para realizar la operación.
[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]
Subbytes inversos:
el S-box inverso se utiliza como una tabla de búsqueda y mediante el cual se sustituyen los bytes durante el descifrado.
Resumen:
el conjunto de instrucciones AES ahora está integrado en la CPU (ofrece un rendimiento de varios GB/s) para mejorar la velocidad y la seguridad de las aplicaciones que usan AES para el cifrado y descifrado. Aunque han pasado 20 años desde su introducción, no hemos logrado descifrar el algoritmo AES, ya que es inviable incluso con la tecnología actual. Hasta la fecha la única vulnerabilidad permanece en la implementación del algoritmo.
Publicación traducida automáticamente
Artículo escrito por randomsapien y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA