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
- Procesadores Arrandale (excepto Celeron, Pentium, Core i3, Core i5-4XXM)
- 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.
- Todos los i5, i7, Xeon e i3-2115C únicamente
AMD
Varios procesadores AMD admiten instrucciones AES:
- Procesadores Jaguar y más nuevos
- Procesadores Puma y más nuevos
- Procesadores de "equipo pesado"
- Procesadores de bulldozer
- Procesadores Piledriver
- Procesadores Steamroller
- Procesadores de excavadoras y más nuevos
- Procesadores basados en Zen (y posteriores)
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:
- AMD Geode LX procesadores
- VIA , usando VIA PadLock
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
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:
- Cifrado de disco completo FileVault 2 de Apple en macOS 10.10+
- Software NonStop SSH2 , NonStop cF SSL Library y BackBox VTC en HPE Tandem NonStop OS L-series
- API de criptografía: próxima generación (CNG) (requiere Windows 7)
- API de cifrado de Linux
- HotSpot de Java 7
- Servicios de seguridad de red (NSS) versión 3.13 y superior (utilizados por Firefox y Google Chrome )
- Marco criptográfico de Solaris en Solaris 10 en adelante
- API OpenCrypto de FreeBSD (controlador aesni (4))
- OpenSSL 1.0.1 y superior
- GnuTLS
- Libsodio
- VeraCrypt
- Ir al lenguaje de programación
- BitLocker
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
- Extensiones vectoriales avanzadas (AVX)
- Conjunto de instrucciones CLMUL
- Conjunto de instrucciones FMA (FMA3, FMA4)
RDRAND