Conjunto de instrucciones AES - AES instruction set

Un conjunto de instrucciones estándar de cifrado avanzado ahora está integrado en muchos procesadores. El propósito del conjunto de instrucciones es mejorar la velocidad y la seguridad de las aplicaciones que realizan el cifrado y el descifrado mediante el estándar de cifrado avanzado (AES).

A menudo se implementan como instrucciones que implementan una sola ronda de AES junto con una versión especial para la última ronda que tiene un método ligeramente diferente.

La superficie de ataque del canal lateral de AES se reduce cuando se implementa en un conjunto de instrucciones, en comparación con cuando AES se implementa solo en software.

procesadores de arquitectura x86

AES-NI (o las nuevas instrucciones del estándar de cifrado avanzado de Intel ; AES-NI ) fue la primera implementación importante. AES-NI es una extensión de la arquitectura del conjunto de instrucciones x86 para microprocesadores de Intel y AMD propuesta por Intel en marzo de 2008.

Instrucciones

Instrucción Descripción
AESENC Realice una ronda de un flujo de cifrado AES
AESENCLAST Realice la última ronda de un flujo de cifrado AES
AESDEC Realice una ronda de un flujo de descifrado AES
AESDECLAST Realice la última ronda de un flujo de descifrado AES
AESKEYGENASSIST Ayudar en la generación de claves redondas AES
AESIMC Asistir en columnas de mezcla inversa AES

Intel

Los siguientes procesadores Intel admiten el conjunto de instrucciones AES-NI:

  • Procesadores basados ​​en Westmere , específicamente:
    • Procesadores Westmere-EP (también conocido como modelo de servidor DP de la serie Gulftown Xeon 5600)
    • Procesadores
    Clarkdale (excepto Core i3, Pentium y Celeron)
  • Procesadores Arrandale (excepto Celeron, Pentium, Core i3, Core i5-4XXM)
  • Procesadores Sandy Bridge :
    • Escritorio: todos excepto Pentium, Celeron, Core i3
    • Móvil: todos los Core i7 y Core i5. Varios proveedores han enviado configuraciones de BIOS con la extensión desactivada; se requiere una actualización del BIOS para habilitarlos.
  • Procesadores Ivy Bridge
    • Todos los i5, i7, Xeon e i3-2115C únicamente
  • Procesadores Haswell (todos excepto i3-4000m, Pentium y Celeron)
  • Procesadores Broadwell (todos excepto Pentium y Celeron)
  • Procesadores Silvermont / Airmont (todos excepto Bay Trail-D y Bay Trail-M)
  • Procesadores Goldmont (y posteriores)
  • Procesadores Skylake (y posteriores)
  • AMD

    Varios procesadores AMD admiten instrucciones AES:

    Aceleración de hardware en otras arquitecturas

    El soporte AES con instrucciones de procesador sin privilegios también está disponible en los últimos procesadores SPARC ( T3 , T4 , T5 , M5 y posteriores) y en los últimos procesadores ARM . El procesador SPARC T4 , introducido en 2011, tiene instrucciones a nivel de usuario que implementan rondas AES. Estas instrucciones se suman a los comandos de cifrado de nivel superior. La arquitectura del procesador ARMv8-A , anunciada en 2011, incluidos los procesadores ARM Cortex-A53 y A57 (pero no los procesadores v7 anteriores como Cortex A5, 7, 8, 9, 11, 15) también tienen instrucciones a nivel de usuario que implementan rondas AES . En agosto de 2012, IBM anunció que la próxima arquitectura Power7 + tendría soporte AES. Los comandos en estas arquitecturas no son directamente equivalentes a los comandos AES-NI, pero implementan una funcionalidad similar.

    Los procesadores de mainframe IBM z9 o posteriores admiten AES como instrucciones de código de operación único (KM, KMC) AES ECB / CBC a través del hardware CryptoExpress de IBM. Por lo tanto, estas versiones de AES de una sola instrucción son más fáciles de usar que las de Intel NI, pero no pueden extenderse para implementar otros algoritmos basados ​​en funciones de ronda AES (como las funciones hash Whirlpool y Grøstl ).

    Compatible con CPU x86

    Las CPU VIA x86 , AMD Geode y Marvell Kirkwood (ARM, mv_cesa en Linux) utilizan el manejo AES acelerado basado en controladores. (Consulte Crypto API (Linux)) .

    Los siguientes chips, aunque admiten la aceleración de hardware AES, no son compatibles con AES-NI:

    Arquitectura ARM

    La información de programación está disponible en el Manual de referencia de la arquitectura ARM ARMv8, para el perfil de la arquitectura ARMv8-A (Sección A2.3 "La extensión criptográfica Armv8") .

    • Arquitectura ARMv8-A
      • Extensiones criptográficas ARM admitidas opcionalmente en núcleos ARM Cortex-A30 / 50/70
    • Aceleradores / motores de hardware criptográfico
      • Allwinner
        • A10, A20, A30, A31, A80, A83T, H3 y A64 usando el sistema de seguridad
      • Broadcom
        • BCM5801 / BCM5805 / BCM5820 usando el procesador de seguridad
      • Semiconductores NXP
        • i.MX6 en adelante
      • Qualcomm
        • Snapdragon 805 en adelante
      • Rockchip
        • Serie RK30xx en adelante
      • Samsung
        • Exynos 3 series en adelante

    Arquitectura RISC-V

    Si bien la arquitectura RISC-V no incluye instrucciones específicas de AES, varios chips RISC-V incluyen coprocesadores AES integrados. Ejemplos incluyen:

    • Sipeed-M1 de doble núcleo RISC-V 64 bits admite AES y SHA256.
    • ESP32 -C basado en arquitectura RISC-V (así como ESP32 basado en Xtensa), compatible con AES, SHA, RSA, RNG, HMAC, firma digital y XTS 128 para flash.
    • Bouffalo Labs BL602 / 604 32-bit RISC-V es compatible con varias variantes de AES y SHA.

    Otras arquitecturas

    • Atmel XMEGA (acelerador en chip con ejecución paralela, no una instrucción)
    • Los procesadores SPARC T3 y posteriores tienen soporte de hardware para varios algoritmos criptográficos, incluido AES.
    • Cavium Octeon MIPS Todos los procesadores basados ​​en Cavium Octeon MIPS tienen soporte de hardware para varios algoritmos criptográficos, incluido AES que utiliza instrucciones especiales del coprocesador 3.

    Rendimiento

    En AES-NI Performance Analyzed , Patrick Schmid y Achim Roos encontraron "resultados impresionantes de un puñado de aplicaciones ya optimizadas para aprovechar la capacidad AES-NI de Intel". Un análisis de rendimiento utilizando la biblioteca de seguridad Crypto ++ mostró un aumento en el rendimiento de aproximadamente 28.0 ciclos por byte a 3.5 ciclos por byte con AES / GCM en comparación con un Pentium 4 sin aceleración.

    Software de apoyo

    La mayoría de los compiladores modernos pueden emitir instrucciones AES.

    Gran parte del software de seguridad y criptografía admite el conjunto de instrucciones AES, incluida la siguiente infraestructura central notable:

    Un uso marginal del conjunto de instrucciones AES implica su uso en cifrados de bloque con una caja S de estructura similar , usando isomorfismo afín para convertir entre los dos. SM4 y Camellia se han acelerado utilizando AES-NI.

    Ver también

    Notas

    Referencias

    enlaces externos