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. [ cita requerida ]
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. [1]
Instrucciones
Instrucción | Descripción [2] |
---|---|
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 [nota 1] |
AESIMC | Asistir en columnas de mezcla inversa AES |
Intel
Los siguientes procesadores Intel admiten el conjunto de instrucciones AES-NI: [3]
- Procesadores basados en Westmere , específicamente:
- Procesadores Sandy Bridge :
- Procesadores Ivy Bridge
- Todos los i5, i7, Xeon e i3-2115C [8] únicamente
- Procesadores Haswell (todos excepto i3-4000m, [9] 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. [11] 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 [ cita requerida ] ) también tienen instrucciones a nivel de usuario que implementan rondas AES. [12] En agosto de 2012, IBM anunció [13] 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. [14] Estas versiones AES de una sola instrucción son, por lo tanto, más fáciles de usar que las de Intel NI, pero no pueden extenderse para implementar otros algoritmos basados en funciones redondas 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 API de cifrado (Linux)) .
Los siguientes chips, aunque admiten la aceleración de hardware AES, no son compatibles con AES-NI:
- AMD Geode LX procesadores [15]
- VIA , utilizando VIA PadLock [16] [17]
- Procesadores VIA C3 Nehemiah C5P (Eden-N) [18]
- Procesadores VIA C7 Esther C5J [19]
Arquitectura ARM
La información de programación está disponible en ARM Architecture Reference Manual ARMv8, para el perfil de arquitectura ARMv8-A (Sección A2.3 "La Extensión Criptográfica Armv8") . [20]
- Arquitectura ARMv8-A
- Extensiones criptográficas ARM opcionalmente compatibles con núcleos ARM Cortex-A30 / 50/70
- Aceleradores / motores de hardware criptográfico
- Allwinner
- A10, A20, A30, A31, A80, A83T, H3 y A64 mediante el sistema de seguridad [21]
- Broadcom
- BCM5801 / BCM5805 / BCM5820 mediante el procesador de seguridad [17]
- Semiconductores NXP
- i.MX6 en adelante [22]
- Qualcomm
- Snapdragon 805 en adelante [23]
- Rockchip
- Serie RK30xx en adelante [24]
- Samsung
- Serie Exynos 3 en adelante [25]
- Allwinner
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. [26]
- ESP32 -C basado en arquitectura RISC-V (así como ESP32 basado en Xtensa [27] ), soporta AES, SHA, RSA, RNG, HMAC, firma digital y XTS 128 para flash. [28]
- Bouffalo Labs BL602 / 604 32-bit RISC-V es compatible con varias variantes de AES y SHA. [29]
Otras arquitecturas
- Atmel XMEGA [30] (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 [31] 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.
Actuación
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". [32] 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. [33] [34] [ verificación fallida ] [se necesita una mejor fuente ]
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 [35] [36] [37]
- API de criptografía: próxima generación (CNG) (requiere Windows 7) [38]
- API de cifrado de Linux
- HotSpot de Java 7
- Servicios de seguridad de red (NSS) versión 3.13 y superior [39] (utilizado por Firefox y Google Chrome )
- Marco criptográfico de Solaris [40] en Solaris 10 en adelante
- API OpenCrypto de FreeBSD (controlador aesni (4)) [41]
- OpenSSL 1.0.1 y superior [42]
- GnuTLS [43]
- Libsodio [44]
- VeraCrypt [45]
- Ir al lenguaje de programación [46]
- BitLocker [47]
Un uso marginal del conjunto de instrucciones AES implica su uso en cifrados de bloque con una caja S de estructura similar , utilizando isomorfismo afín para convertir entre los dos. SM4 y Camellia se han acelerado utilizando AES-NI. [48] [49]
Ver también
- Extensiones vectoriales avanzadas (AVX)
- Conjunto de instrucciones CLMUL
- Conjunto de instrucciones FMA (FMA3, FMA4)
RDRAND
Notas
- ^ La instrucción calcula 4 subexpresiones paralelas de expansión de clave AES en 4 palabras de 32 bits en una palabra cuádruple doble (también conocido como registro SSE) en bits X [127: 96] para y X [63:32] para solo. Dos sustituciones paralelas de AES S-box y se utilizan en AES-256 y 2 subexpresiones y se utilizan en AES-128, AES-192, AES-256.
Referencias
- ^ "Red de software Intel" . Intel. Archivado desde el original el 7 de abril de 2008 . Consultado el 5 de abril de 2008 .
- ^ Shay Gueron (2010). "Informe del conjunto de instrucciones del estándar de cifrado avanzado Intel (AES)" (PDF) . Intel . Consultado el 20 de septiembre de 2012 .
- ^ "Búsqueda avanzada de especificaciones de productos Intel" . Intel ARK .
- ^ Shimpi, Anand Lal. "La revisión de Sandy Bridge: Intel Core i7-2600K, i5-2500K y Core i3-2100 probado" .
- ^ "Comparación de especificaciones de productos Intel" .
- ^ "Soporte AES-NI en TrueCrypt (problema Sandy Bridge)" .
- ^ "Algunos productos pueden admitir nuevas instrucciones AES con una actualización de la configuración del procesador, en particular, i7-2630QM / i7-2635QM, i7-2670QM / i7-2675QM, i5-2430M / i5-2435M, i5-2410M / i5-2415M. Por favor póngase en contacto con el OEM para obtener el BIOS que incluye la última actualización de configuración del procesador " .
- ^ "Especificaciones del producto del procesador Intel Core i3-2115C (caché de 3 M, 2,00 GHz)" .
- ^ "Especificaciones del producto del procesador Intel Core i3-4000M (caché de 3 M, 2,40 GHz)" .
- ^ "Seguir instrucciones" . AMD. 22 de noviembre de 2010. Archivado desde el original el 26 de noviembre de 2010 . Consultado el 4 de enero de 2011 .
- ^ Dan Anderson (2011). "Motor SPARC T4 OpenSSL" . Oracle . Consultado el 20 de septiembre de 2012 .
- ^ Richard Grisenthwaite (2011). "Vista previa de la tecnología ARMv8-A" (PDF) . BRAZO. Archivado desde el original (PDF) el 10 de junio de 2018 . Consultado el 20 de septiembre de 2012 .
- ^ Timothy Prickett Morgan (2012). "Toda la salsa en el chip picante de Big Blue: Más sobre Power7 +" . El registro . Consultado el 20 de septiembre de 2012 .
- ^ "Criptografía IBM System z10" . IBM . Consultado el 27 de enero de 2014 .
- ^ "Especificaciones técnicas de la familia de procesadores AMD Geode LX" . AMD.
- ^ "Motor de seguridad de candado VIA" . VIA . Consultado el 14 de noviembre de 2011 .
- ^ a b Aceleradores de hardware criptográfico en OpenWRT.org
- ^ "Procesadores VIA Eden-N" . VÍA. Archivado desde el original el 11 de noviembre de 2011 . Consultado el 14 de noviembre de 2011 .
- ^ "Procesadores VIA C7" . VIA . Consultado el 14 de noviembre de 2011 .
- ^ "Arm Architecture Reference Manual Armv8, para perfil de arquitectura Armv8-A" . BRAZO. 22 de enero de 2021.
- ^ "Estado del controlador del sistema de seguridad / Crypto Engine" . sunxi.montjoie.ovh .
- ^ "Aceleración criptográfica de Linux en un i.MX6" (PDF) . Fundación Linux. Febrero de 2017. Archivado desde el original (PDF) el 26 de agosto de 2019 . Consultado el 2 de mayo de 2018 .
- ^ "El módulo criptográfico en Snapdragon 805 tiene certificación FIPS 140-2" . Qualcomm .
- ^ "RK3128 - Rockchip Wiki" . Wiki de Rockchip . Archivado desde el original el 28 de enero de 2019 . Consultado el 2 de mayo de 2018 .
- ^ "El Samsung Exynos 7420 Deep Dive - Dentro de un moderno SoC de 14nm" . AnandTech .
- ^ "Hoja de datos de Sipeed M1 v1.1" (PDF) . kamami.pl . 2019-03-06 . Consultado el 3 de mayo de 2021 .
- ^ "Hoja de datos de la serie ESP32" (PDF) . www.espressif.com . 2021-03-19 . Consultado el 3 de mayo de 2021 .
- ^ "El procesador ESP32-C3 WiFi y BLE RISC-V es compatible pin a pin con ESP8266" . Software CNX . Consultado el 22 de noviembre de 2020 .
- ^ "BL602-Bouffalo Lab (Nanjing) Co., Ltd" . www.bouffalolab.com . Consultado el 3 de mayo de 2021 .
- ^ "Uso del acelerador AES integrado de XMEGA" (PDF) . Consultado el 3 de diciembre de 2014 .
- ^ "Cavium Networks lanza la línea más amplia de la industria de procesadores OCTEON ™ basados en MIPS64® de núcleo único y doble que apuntan a redes inteligentes de próxima generación" . Archivado desde el original el 7 de diciembre de 2017 . Consultado el 17 de septiembre de 2016 .
- ^ P. Schmid y A. Roos (2010). "Rendimiento analizado AES-NI" . Hardware de Tom . Consultado el 10 de agosto de 2010 .
- ^ T. Krovetz, W. Dai (2010). "¿Cómo recibir llamadas AES rápidas?" . Grupo de usuarios de Crypto ++ . Consultado el 11 de agosto de 2010 .
- ^ "Puntos de referencia de Crypto ++ 5.6.0 Pentium 4" . Sitio web Crypto ++ . 2009. Archivado desde el original el 19 de septiembre de 2010 . Consultado el 10 de agosto de 2010 .
- ^ "Manual de referencia de NonStop SSH" . Consultado el 9 de abril de 2020 .
- ^ "Manual de referencia de la biblioteca SSL NonStop cF" . Consultado el 9 de abril de 2020 .
- ^ "Opción de cifrado BackBox H4.08Tape" . Consultado el 9 de abril de 2020 .
- ^ "Instrucciones estándar de cifrado avanzado de Intel (AES-NI)" . Intel. 2 de marzo de 2010. Archivado desde el original el 7 de julio de 2010 . Consultado el 11 de julio de 2010 .
- ^ "Mejoras de AES-NI a NSS en sistemas Sandy Bridge" . 2012-05-02 . Consultado el 25 de noviembre de 2012 .
- ^ "Guía de administración del sistema: servicios de seguridad, capítulo 13 Marco criptográfico de Solaris (descripción general)" . Oráculo. Septiembre de 2010 . Consultado el 27 de noviembre de 2012 .
- ^ "Notas de la versión de FreeBSD 8.2" . FreeBSD.org. 2011-02-24. Archivado desde el original el 12 de abril de 2011 . Consultado el 18 de diciembre de 2011 .
- ^ OpenSSL: Interfaz web CVS
- ^ "Backend criptográfico (GnuTLS 3.6.14)" . gnutls.org . Consultado el 26 de junio de 2020 .
- ^ "AES-GCM en libsodium" . libsodium.org .
- ^ "Aceleración de hardware" . www.veracrypt.fr .
- ^ "aes - El lenguaje de programación Go" . golang.org . Consultado el 26 de junio de 2020 .
- ^ Shimpi, Anand Lal. "La revisión de Clarkdale: Intel Core i5 661, i3 540 y i3 530" . www.anandtech.com . Consultado el 26 de junio de 2020 .
- ^ Saarinen, Markku-Juhani O. (17 de abril de 2020). "mjosaarinen / sm4ni: demostración de que las instrucciones AES-NI se pueden utilizar para implementar el estándar de cifrado chino SM4" . GitHub .
- ^ Kivilinna, Jussi (2013). Cifrados en bloque: implementaciones rápidas en la arquitectura x86-64 (PDF) (M.Sc.). Universidad de Oulu . págs. 33, 42 . Consultado el 22 de junio de 2017 .
enlaces externos
- Instrucciones estándar de cifrado avanzado de Intel (AES-NI)
- Documento técnico sobre el conjunto de instrucciones AES (2,93 MiB, PDF) de Intel