Conjunto de Instrucciones AES

El Conjunto de instrucciones del Advanced Encryption Standard, también llamado Conjunto de instrucciones AES o directamente AES-NI (del inglés Advanced Encryption Standard New Instructions), es una extensión al conjunto de instrucciones de arquitecturas x86-64 especialmente diseñadas para implementar etapas relacionadas con el uso del algoritmo AES.[1] A veces hay que habilitar esta funcionalidad en la BIOS.[1]

Esta instrucciones están orientadas a poder ser implementadas por hardware especialmente diseñado, normalmente integrado en el propio procesador, para mejorar así la velocidad en la ejecución de AES. Así se puede conseguir un rendimiento entre 3 y 10 veces superior al obtenido utilizando implementaciones software en CPUs.[2] Además, debido a que las instrucciones de cifrado y descifrado se realizan íntegramente en hardware, sirve para mejorar la resistencia a los ataques de canal lateral de las aplicaciones que utilizan cifrado y descifrado utilizando AES (AES).

Historia

Intel anunció AES-NI en 2008 y en 2010 lanzó los primeros Intel Core que incluyeron por primera vez las instrucciones AES-NI (arquitectura Westmere).[2][3] Estas instrucciones implementaban las etapas más complejas y computacionalmente más costosas del algoritmo AES usando una implementación vectorial en hardware, permitiendo de esta manera acelerar la ejecución de este algoritmo.[2] AMD anunció y lanzó soporte a AES-NI en 2010, empezando con Bulldozer.[3] Actualmente todos los nuevos procesadores de Intel, AMD y ARM que salen al mercado, excepto los de gama más baja basados en ARM, son compatibles con AES-NI.[1]

Instrucciones

Este conjunto de instrucciones está compuesto por 6 instrucciones de las que 4 instrucciones se usan para el cifrado/descifrado y las 2 restantes se utilizan en la etapa de generación de claves.[2]

En concreto las instrucciones son:[2]

  • AESENC: Ejecuta una ronda de cifrado
  • AESENCLAST: Instrucción para la última ronda de cifrado
  • AESDEC: Instrucción para una ronda de descifrado
  • AESDECLAST: Instrucción para la última ronda de descifrado
  • AESKEYGENASSIST: Usada para generar claves para las rondas de cifrado.
  • AESIMC: Convierte las claves de cifrado a un formato válido para el descifrado.

Inicialmente y por defecto usa 128 bits, pero existen versiones más recientes capaces de tratar bloques de 256 y 512 bits.[2]

Referencias

  1. Por qué tu servidor NAS debe tener aceleración de cifrado por hardware.Sergio De Luz. redeszone.net 22 de junio de 2021
  2. Implementación eficiente en GPGPUs de la prueba de trabajo RandomX de la criptomoneda Monero. Julen Suárez. Universidad del País Vasco. 2020
  3. pfSense 2.5 and AES-NI. Jim Thompson. netgate.com 1 de mayo de 2017
Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.