Conjunto de Instrucciones AES

Extensión del conjunto de instrucciones x86

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

editar

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

editar

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

editar
  1. a b c Por qué tu servidor NAS debe tener aceleración de cifrado por hardware.Sergio De Luz. redeszone.net 22 de junio de 2021
  2. a b c d e f 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. a b pfSense 2.5 and AES-NI. Jim Thompson. netgate.com 1 de mayo de 2017