Extensiones del conjunto de instrucciones que aceleran las operaciones AES
Un conjunto de instrucciones AES (Advanced Encryption Standard) es un conjunto de instrucciones que están diseñadas específicamente para realizar operaciones de cifrado y descifrado AES de manera eficiente. Estas instrucciones se encuentran normalmente en procesadores modernos y pueden acelerar enormemente las operaciones AES en comparación con las implementaciones de software. Un conjunto de instrucciones AES incluye instrucciones para la expansión de claves , el cifrado y el descifrado utilizando varios tamaños de clave (128 bits, 192 bits y 256 bits).
El conjunto de instrucciones a menudo se implementa como un conjunto de instrucciones que pueden realizar una sola ronda de AES junto con una versión especial para la última ronda que tiene un método ligeramente diferente.
Cuando AES se implementa como un conjunto de instrucciones en lugar de como software, puede tener una seguridad mejorada, ya que se reduce su superficie de ataque de canal lateral . [1]
Procesadores con arquitectura x86
AES-NI (o Intel Advanced Encryption Standard New Instructions ; 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. [2]
Una versión más amplia de AES-NI, las instrucciones AVX-512 Vector AES (VAES) , se encuentra en AVX-512 . [3]
Instrucciones
Intel
Los siguientes procesadores Intel admiten el conjunto de instrucciones AES-NI: [5]
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 , presentado en 2011, tiene instrucciones a nivel de usuario que implementan rondas AES. [13] Estas instrucciones se suman a los comandos de cifrado de nivel superior. La arquitectura de procesador ARMv8-A , anunciada en 2011, que incluye los ARM Cortex-A53 y A57 (pero no los procesadores v7 anteriores como los Cortex A5, 7, 8, 9, 11, 15 [ cita requerida ] ) también tiene instrucciones a nivel de usuario que implementan rondas AES. [14]
CPU x86 que ofrecen interfaces de aceleración que no son AES-NI
Las CPU VIA x86 y AMD Geode utilizan en su lugar un procesamiento AES acelerado basado en controladores. (Consulte Crypto API (Linux) ).
Los siguientes chips, si bien admiten la aceleración de hardware AES, no admiten AES-NI:
Arquitectura ARM
La información de programación está disponible en el Manual de referencia de arquitectura ARM ARMv8, para el perfil de arquitectura ARMv8-A (Sección A2.3 "La extensión criptográfica Armv8") . [20]
Marvell Kirkwood fue el núcleo integrado de una gama de SoC de Marvell Technology . Estas CPU SoC (ARM, mv_cesa en Linux) utilizan procesamiento AES acelerado basado en controlador. (Consulte Crypto API (Linux) ).
- Arquitectura ARMv8-A
- Las extensiones criptográficas ARM son compatibles opcionalmente con los núcleos ARM Cortex-A30/50/70
- Aceleradores/motores de hardware criptográficos
Arquitectura RISC-V
Las extensiones del conjunto de instrucciones criptográficas escalares y vectoriales para la arquitectura RISC-V fueron ratificadas respectivamente en 2022 y 2023, lo que permitió a los procesadores RISC-V implementar aceleración de hardware para AES, GHASH , SHA-256 , SHA-512 , SM3 y SM4 .
Antes de que las instrucciones específicas de AES estuvieran disponibles en RISC-V, varios chips RISC-V incluían coprocesadores AES integrados. Algunos ejemplos son:
- RISC-V de doble núcleo de 64 bits Sipeed-M1 compatible con AES y SHA256. [26]
- El ESP32 -C basado en arquitectura RISC-V (así como el ESP32 basado en Xtensa [27] ) admite AES, SHA, RSA, RNG, HMAC, firma digital y XTS 128 para flash. [28]
- Bouffalo Labs BL602/604 32-bit RISC-V admite varias variantes AES y SHA. [29]
Arquitectura POWER
Desde Power ISA v.2.07 , las instrucciones vcipher
implementan vcipherlast
una ronda de AES directamente. [30]
Arquitectura IBM z
Los procesadores mainframe IBM z9 o posteriores admiten AES como instrucciones AES ECB/CBC de código de operación único (KM, KMC) a través del hardware CryptoExpress de IBM. [31] Por lo tanto, estas versiones AES de instrucción única son más fáciles de usar que las de Intel NI, pero no se pueden ampliar para implementar otros algoritmos basados en funciones de redondeo AES (como las funciones hash Whirlpool y Grøstl ).
Otras arquitecturas
- Atmel XMEGA [32] (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 [33] Todos los procesadores Cavium Octeon MIPS basados en tienen soporte de hardware para varios algoritmos criptográficos, incluido AES utilizando 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". [34] 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. [35] [36] [ verificación fallida ] [ se necesita una mejor fuente ]
Software de soporte
La mayoría de los compiladores modernos pueden emitir instrucciones AES.
Una gran cantidad de software de seguridad y criptografía admite el conjunto de instrucciones AES, incluida la siguiente infraestructura central notable:
Aplicación más allá de AES
Un uso marginal del conjunto de instrucciones AES implica usarlo en cifrados de bloques con una S-box de estructura similar , utilizando isomorfismo afín para convertir entre los dos. SM4 , Camellia y ARIA se han acelerado utilizando AES-NI. [52] [53] [54] Las nuevas instrucciones de campo Galois (GFNI) AVX-512 permiten implementar estas S-boxes de una manera más directa. [55]
Se han construido nuevos algoritmos criptográficos para utilizar específicamente partes del algoritmo AES, de modo que el conjunto de instrucciones AES se pueda utilizar para aumentar la velocidad. La familia AEGIS, que ofrece cifrado autenticado , funciona al menos al doble de velocidad que AES. [56] AEGIS es un "finalista adicional para aplicaciones de alto rendimiento" en la Competencia CAESAR . [57]
Véase también
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 conocida como registro SSE) en los bits X[127:96] para y X[63:32] para solamente. Se utilizan dos sustituciones S-box AES paralelas y en AES-256 y 2 subexpresiones y se utilizan en AES-128, AES-192, AES-256.
Referencias
- ^ "Securing the Enterprise with Intel AES-NI" (PDF) . Intel Corporation . Archivado (PDF) del original el 2013-03-31 . Consultado el 2017-07-26 .
- ^ "Red de software de Intel". Intel. Archivado desde el original el 7 de abril de 2008. Consultado el 5 de abril de 2008 .
- ^ "Referencia de programación de extensiones y características futuras del conjunto de instrucciones de la arquitectura Intel". Intel . Consultado el 16 de octubre de 2017 .
- ^ Shay Gueron (2010). "Libro blanco sobre el conjunto de instrucciones del estándar de cifrado avanzado (AES) de Intel" (PDF) . Intel . Consultado el 20 de septiembre de 2012 .
- ^ "Búsqueda avanzada de especificaciones de productos Intel". Intel ARK .
- ^ Shimpi, Anand Lal. "Revisión de Sandy Bridge: Intel Core i7-2600K, i5-2500K y Core i3-2100 probados".
- ^ "Comparación de especificaciones de productos Intel".
- ^ "Soporte AES-NI en TrueCrypt (problema Sandy Bridge)". 27 de enero de 2022.
- ^ "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. Comuníquese con el OEM para obtener el BIOS que incluye la última actualización de la 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)".
- ^ "Siguiendo las 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). "SPARC T4 OpenSSL Engine". Oracle . Consultado el 20 de septiembre de 2012 .
- ^ Richard Grisenthwaite (2011). "ARMv8-A Technology Preview" (PDF) . ARM. Archivado desde el original (PDF) el 2018-06-10 . Consultado el 20 de septiembre de 2012 .
- ^ "Especificaciones técnicas de la familia de procesadores AMD Geode LX". AMD.
- ^ "VIA Padlock Security Engine". VIA. Archivado desde el original el 15 de mayo de 2011. Consultado el 14 de noviembre de 2011 .
- ^ ab Aceleradores de hardware criptográficos en OpenWRT.org
- ^ "Procesadores VIA Eden-N". VIA. Archivado desde el original el 11 de noviembre de 2011. Consultado el 14 de noviembre de 2011 .
- ^ "Procesadores VIA C7". VIA. Archivado desde el original el 19 de abril de 2007. Consultado el 14 de noviembre de 2011 .
- ^ "Manual de referencia de arquitectura Armv8, para el perfil de arquitectura Armv8-A". ARM. 22 de enero de 2021.
- ^ "Estado del controlador del sistema de seguridad/motor de cifrado". sunxi.montjoie.ovh .
- ^ "Aceleración criptográfica de Linux en un i.MX6" (PDF) . Linux Foundation. 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 del Snapdragon 805 tiene certificación FIPS 140-2". Qualcomm .
- ^ "RK3128 - Wiki de Rockchip". Wiki de Rockchip . Archivado desde el original el 28 de enero de 2019. Consultado el 2 de mayo de 2018 .
- ^ "Análisis en profundidad del Samsung Exynos 7420: el interior de un moderno SoC de 14 nm". AnandTech .
- ^ "Ficha técnica del Sipeed M1 v1.1" (PDF) . kamami.pl . 2019-03-06 . Consultado el 2021-05-03 .
- ^ "Ficha técnica de la serie ESP32" (PDF) . www.espressif.com . 2021-03-19 . Consultado el 2021-05-03 .
- ^ "El procesador WiFi y BLE RISC-V ESP32-C3 es compatible pin a pin con ESP8266". CNX-Software . Consultado el 22 de noviembre de 2020 .
- ^ "BL602-Bouffalo Lab (Nanjing) Co., Ltd". www.bouffalolab.com . Archivado desde el original el 2021-06-18 . Consultado el 2021-05-03 .
- ^ "Power ISA versión 2.07 B" . Consultado el 7 de enero de 2022 .
- ^ "Criptografía del IBM System z10". IBM. Archivado desde el original el 13 de agosto de 2008. Consultado el 27 de enero de 2014 .
- ^ "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 procesadores OCTEON de núcleo único y doble basados en MIPS64 de la industria, orientados a las redes inteligentes de próxima generación". Archivado desde el original el 2017-12-07 . Consultado el 2016-09-17 .
- ^ P. Schmid y A. Roos (2010). "Analización del rendimiento de AES-NI". Tom's Hardware . Consultado el 10 de agosto de 2010 .
- ^ T. Krovetz, W. Dai (2010). "¿Cómo obtener 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 de 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 NonStop cF SSL" . Consultado el 9 de abril de 2020 .
- ^ "Opción de cifrado de cinta BackBox H4.08" . Consultado el 9 de abril de 2020 .
- ^ "Instrucciones del 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 para NSS en sistemas Sandy Bridge". 2012-05-02 . Consultado el 2012-11-25 .
- ^ "Guía de administración del sistema: Servicios de seguridad, Capítulo 13 Solaris Cryptographic Framework (Descripción general)". Oracle. Septiembre de 2010. Consultado el 27 de noviembre de 2012 .
- ^ "Notas de la versión de FreeBSD 8.2". FreeBSD.org. 24 de febrero de 2011. 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. "Revisión de Clarkdale: Intel Core i5 661, i3 540 e i3 530". www.anandtech.com . Consultado el 26 de junio de 2020 .
- ^ "Firewall de almacenamiento inteligente Bloombase StoreSafe".
- ^ "Vormetric Encryption agrega compatibilidad con la tecnología de aceleración Intel AES-NI". 15 de mayo de 2012.
- ^ 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 de bloque: Implementaciones rápidas en arquitectura x86-64 (PDF) (M.Sc.). Universidad de Oulu . pp. 33, 42. Consultado el 22 de junio de 2017 .
- ^ Yoo, Tae-Hee; Kivilinna, Jussi; Cho, Choong-Hee (2023). "Aceleración basada en AVX del algoritmo de cifrado de bloques ARIA". Acceso IEEE . 11 : 77403–77415. Código Bib : 2023IEEEA..1177403Y. doi : 10.1109/ACCESS.2023.3298026 .
- ^ Kivilinna, Jussi (19 de abril de 2023). "camellia-simd-aesni". GitHub .
Los procesadores x86-64 más nuevos también admiten las nuevas instrucciones de campo Galois (GFNI), que permiten implementar Camellia s-box de una manera más sencilla y ofrecen un rendimiento aún mejor.
- ^ Wu, Hongjun; Preneel, Bart. "AEGIS: Un algoritmo de cifrado autenticado rápido (v1.1)" (PDF) .
- ^ Denis, Frank. "La familia AEGIS de algoritmos de cifrado autenticados". cfrg.github.io .
Enlaces externos
- Instrucciones del estándar de cifrado avanzado de Intel (AES-NI)
- Documento técnico sobre el conjunto de instrucciones AES (2,93 MiB, PDF) de Intel