El conjunto de instrucciones del Estándar de Cifrado Avanzado ( AES ) es un conjunto de instrucciones diseñado específicamente para realizar operaciones de cifrado y descifrado AES de manera eficiente. Estas instrucciones se encuentran habitualmente en los procesadores modernos y pueden acelerar considerablemente las operaciones AES en comparación con las implementaciones por software. El conjunto de instrucciones AES incluye instrucciones para la expansión de claves , el cifrado y el descifrado utilizando claves de diferentes tamaños (128 bits, 192 bits y 256 bits).
El conjunto de instrucciones se implementa a menudo 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 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. [ 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 ]
- Procesadores con sede en Westmere , específicamente:
- Procesadores Westmere-EP (también conocido como modelo de servidor DP Gulftown Xeon serie 5600 )
- Procesadores Clarkdale (excepto Core i3 , Pentium y Celeron )
- Procesadores Arrandale (excepto Celeron, Pentium, Core i3, Core i5 -4XXM)
- Procesadores Sandy Bridge :
- Procesadores Ivy Bridge
- Todos los i5, i7, Xeon e i3-2115C [ 10 ] solamente
- Procesadores Haswell (todos excepto i3-4000m, [ 11 ] Pentium y Celeron)
- Procesadores Broadwell (todos excepto Pentium y Celeron)
- Procesadoras de Silvermont/Airmont (todas excepto Bay Trail-D y Bay Trail-M)
- Procesadores Goldmont (y posteriores)
- Procesadores Skylake (y posteriores)
AMD
Varios procesadores AMD son compatibles con las instrucciones AES:
- Procesadores de "equipos pesados"
- Procesadores de excavadoras [ 12 ]
- Procesadores Piledriver
- Procesadoras de rodillos de vapor
- Procesadores de excavadoras y más nuevos
- Procesadores Jaguar y más recientes
- Procesadores Puma y más nuevos
- Procesadores basados en Zen (y posteriores)
Aceleración de hardware en otras arquitecturas
La compatibilidad con AES mediante instrucciones de procesador no privilegiadas también está disponible en los procesadores SPARC más recientes ( T3 , T4 , T5 , M5 y posteriores) y en los procesadores ARM más recientes . El procesador SPARC T4 , presentado en 2011, cuenta con instrucciones de 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 el Cortex A5, 7, 8, 9, 11 y 15 ), también cuenta con instrucciones de nivel de usuario que implementan rondas AES. [ 14 ]
Procesadores x86 que ofrecen interfaces de aceleración no AES-NI.
Las CPU VIA x86 y AMD Geode utilizan en su lugar un manejo AES acelerado basado en controladores. (Véase la API de criptografía (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 la arquitectura ARMv8, para el perfil de arquitectura ARMv8-A (Sección A2.3 "La extensión criptográfica de Armv8") . [ 20 ]
El Marvell Kirkwood era el núcleo integrado de una gama de SoC de Marvell Technology . Estas CPU SoC (ARM, mv_cesa en Linux) utilizan un manejo AES acelerado basado en controladores. (Véase Crypto API (Linux) ).
- Arquitectura ARMv8-A
- Las extensiones criptográficas de ARM son compatibles opcionalmente con los núcleos ARM Cortex-A30/50/70.
- Aceleradores/motores de hardware criptográfico
- Allwinner
- A10, A20, A30, A31, A80, A83T, H3 y A64 utilizando el sistema de seguridad [ 21 ]
- Broadcom
- BCM5801/BCM5805/BCM5820 utilizando el procesador de seguridad [ 17 ]
- Semiconductores NXP
- i.MX6 en adelante [ 22 ]
- Qualcomm
- Snapdragon 810 en adelante [ 23 ]
- chip de roca
- Serie RK30xx en adelante [ 24 ]
- Samsung
- Serie Exynos 7 en adelante [ 25 ]
- Allwinner
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 la aceleración por 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:
- El Sipeed-M1 de 64 bits y doble núcleo RISC-V admite AES y SHA256. [ 26 ]
- ESP32 -C basado en la arquitectura RISC-V (así como ESP32 basado en Xtensa [ 27 ] ), admite AES, SHA, RSA, RNG, HMAC, firma digital y XTS 128 para memoria flash. [ 28 ]
- El procesador RISC-V de 32 bits BL602/604 de Bouffalo Labs admite varias variantes de AES y SHA. [ 29 ]
Arquitectura POWER
Desde Power ISA v.2.07 , las instrucciones vcipherimplementan vcipherlastdirectamente una ronda de AES. [ 30 ]
Arquitectura IBM z
Los procesadores de mainframe IBM z9 o posteriores admiten AES como instrucciones AES ECB/CBC de un solo código de operación (KM, KMC) a través del hardware CryptoExpress de IBM . [ 31 ] Por lo tanto, estas versiones AES de una sola instrucción son más fáciles de usar que las de Intel NI, pero es posible que no se puedan extender para implementar otros algoritmos basados en funciones de ronda 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 cuentan con soporte de hardware para varios algoritmos criptográficos, incluido AES.
- Cavium Octeon MIPS [ 33 ] Todos los procesadores basados en Cavium Octeon MIPS tienen soporte de hardware para varios algoritmos criptográficos, incluido AES mediante 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 ]
Software de soporte
La mayoría de los compiladores modernos pueden generar instrucciones AES.
Muchos programas de seguridad y criptografía son compatibles con el conjunto de instrucciones AES, incluyendo la siguiente infraestructura central destacada:
- El cifrado de disco completo FileVault 2 de Apple en macOS 10.10+
- NonStop SSH2 , NonStop cF SSL Library y BackBox VTC Software en HPE Tandem NonStop OS L-series [ 37 ] [ 38 ] [ 39 ]
- API de criptografía: próxima generación (CNG) (requiere Windows Vista SP2 o Windows 7 ) [ 40 ]
- API criptográfica de Linux
- Punto de acceso Java 7
- Servicios de seguridad de red (NSS) versión 3.13 y superior [ 41 ] (utilizados por Firefox y Google Chrome )
- Marco criptográfico de Solaris [ 42 ] en Solaris 10 y versiones posteriores
- API OpenCrypto de FreeBSD (controlador aesni(4)) [ 43 ]
- OpenSSL 1.0.1 y superior [ 44 ]
- GnuTLS [ 45 ]
- Libsodio [ 46 ]
- VeraCrypt [ 47 ]
- Lenguaje de programación Go [ 48 ]
- BitLocker [ 49 ]
- Bloombase [ 50 ]
- Vormétrico [ 51 ]
Aplicación más allá de AES
Un uso marginal del conjunto de instrucciones AES implica su uso en cifrados de bloques con una caja S de estructura similar , utilizando una transformación afín para convertir entre ambos. SM4 , Camellia y ARIA se han acelerado utilizando AES-NI. [ 52 ] [ 53 ] [ 54 ] Las instrucciones AVX-512 Galois Field New Instructions (GFNI) permiten implementar estas cajas S de una manera más directa. [ 55 ]
Se han desarrollado nuevos algoritmos criptográficos para utilizar específicamente partes del algoritmo AES, de modo que el conjunto de instrucciones AES pueda emplearse para acelerar el proceso. La familia AEGIS, que ofrece cifrado autenticado , funciona al menos al doble de rápido que AES. [ 56 ] AEGIS es un "finalista adicional para aplicaciones de alto rendimiento" en la competición 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] paray X[63:32] parasolamente. Dos sustituciones paralelas de la caja S de AESyse utilizan en AES-256 y 2 subexpresionesyse utilizan en AES-128, AES-192, AES-256.
Referencias
- ↑ "Protegiendo la empresa con Intel AES-NI" (PDF) . Intel Corporation . Archivado (PDF) del original el 31 de marzo de 2013. Consultado el 26 de julio de 2017 .
- ↑ "Red de software de Intel" . Intel. Archivado del original el 7 de abril de 2008. Consultado el 5 de abril de 2008 .
- ↑ "Referencia de programación de extensiones del conjunto de instrucciones y funciones futuras de la arquitectura Intel" . Intel . Consultado el 16 de octubre de 2017 .
- ↑ Shay Gueron (2010). "Documento técnico 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. "Análisis de Sandy Bridge: Prueba de los procesadores Intel Core i7-2600K, i5-2500K y Core i3-2100" . Archivado del original el 6 de enero de 2011.
- ↑ "Comparación de especificaciones de productos Intel" .
- ↑ "Soporte para AES-NI en TrueCrypt (problema de Sandy Bridge)" . 27 de enero de 2022.
- ↑ "Algunos productos pueden admitir las nuevas instrucciones AES con una actualización de la configuración del procesador, en particular, los i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Póngase en contacto con el fabricante del equipo original (OEM) para obtener la BIOS que incluye la última actualización de la configuración del procesador" .
- ↑ "Especificaciones del producto Procesador Intel Core i3-2115C (3M de caché, 2,00 GHz)" .
- ↑ "Especificaciones del producto Procesador Intel Core i3-4000M (3M de caché, 2,40 GHz)" .
- ↑ "Siguiendo las instrucciones" . AMD. 22 de noviembre de 2010. Archivado del original el 26 de noviembre de 2010. Consultado el 4 de enero de 2011 .
- ↑ Dan Anderson (2011). "Motor OpenSSL SPARC T4" . Oracle . Consultado el 20 de septiembre de 2012 .
- ↑ Richard Grisenthwaite (2011). "ARMv8-A Technology Preview" (PDF) . ARM. Archivado del original (PDF) el 10 de junio de 2018. Consultado el 20 de septiembre de 2012 .
- ↑ "Especificaciones técnicas de la familia de procesadores AMD Geode LX" . AMD.
- ↑ "Motor de seguridad de candado VIA" . VIA. Archivado del original el 15 de mayo de 2011. Consultado el 14 de noviembre de 2011 .
- 1 2 Aceleradores de hardware criptográficos en OpenWRT.org
- ↑ "Procesadores VIA Eden-N" . VIA. Archivado del original el 11/11/2011 . Consultado el 14/11/2011 .
- ↑ "Procesadores VIA C7" . VIA. Archivado del original el 19 de abril de 2007. Consultado el 14 de noviembre de 2011 .
- ↑ "Manual de referencia de la arquitectura Armv8, para el perfil de arquitectura Armv8-A" . ARM. 22 de enero de 2021.
- ↑ "Estado del controlador del sistema de seguridad/motor criptográfico" . sunxi.montjoie.ovh .
- ↑ "Aceleración criptográfica de Linux en un i.MX6" (PDF) . Linux Foundation. Febrero de 2017. Archivado del original (PDF) el 26 de agosto de 2019. Consultado el 2 de mayo de 2018 .
- ↑ "El módulo criptográfico del Snapdragon 805 cuenta con la certificación FIPS 140-2" . Qualcomm .
- ↑ "RK3128 - Wiki de Rockchip" . Wiki de Rockchip . Archivado del original el 28/01/2019 . Consultado el 02/05/2018 .
- ↑ "Análisis en profundidad del Samsung Exynos 7420: Un SoC moderno de 14 nm" . AnandTech . Archivado del original el 30 de junio de 2015.
- ↑ "Hoja de datos Sipeed M1 v1.1" (PDF) . kamami.pl . 2019-03-06 . Consultado el 2021-05-03 .
- ↑ "Hoja de datos de la serie ESP32" (PDF) . www.espressif.com . 19 de marzo de 2021. Consultado el 3 de mayo de 2021 .
- ↑ "El procesador ESP32-C3 WiFi y BLE RISC-V 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 del original el 18 de junio de 2021. Consultado el 3 de mayo de 2021 .
- ↑ "Power ISA Versión 2.07 B" . Consultado el 7 de enero de 2022 .
- ↑ "Criptografía del sistema IBM z10" . IBM. Archivado del 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 la industria de procesadores OCTEON basados en MIPS64 de núcleo simple y doble dirigidos a redes inteligentes de próxima generación" . Archivado del original el 7 de diciembre de 2017. Consultado el 17 de septiembre de 2016 .
- ↑ P. Schmid y A. Roos (2010). "Análisis 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++ . Recuperado el 11 de agosto de 2010 .
- ↑ "Pruebas de rendimiento de Crypto++ 5.6.0 en Pentium 4" . Sitio web de Crypto++ . 2009. Archivado del 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 09/04/2020 .
- ↑ "Instrucciones del estándar de cifrado avanzado de Intel (AES-NI)" . Intel. 2 de marzo de 2010. Archivado del original el 7 de julio de 2010. Consultado el 11 de julio de 2010 .
- ↑ "Mejoras de AES-NI para NSS en sistemas de Sandy Bridge" . 2 de mayo de 2012. 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)" . Oracle. Septiembre de 2010. Consultado el 27 de noviembre de 2012 .
- ↑ "Notas de la versión 8.2 de FreeBSD" . FreeBSD.org. 24 de febrero de 2011. Archivado del original el 12 de abril de 2011. Consultado el 18 de diciembre de 2011 .
- ↑ OpenSSL: Interfaz web de 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 por hardware" . www.veracrypt.fr
- ↑ "aes - El lenguaje de programación Go" . golang.org . Consultado el 26 de junio de 2020 .
- ↑ Shimpi, Anand Lal. "Análisis de Clarkdale: Intel Core i5 661, i3 540 y i3 530" . www.anandtech.com . Consultado el 26 de junio de 2020 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Cortafuegos de almacenamiento inteligente Bloombase StoreSafe" .
- ↑ "El cifrado Vormetric añade 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 usar para implementar el estándar de cifrado chino SM4" . GitHub .
- ↑ Kivilinna, Jussi (2013). Cifrados de bloques: implementaciones rápidas en la arquitectura x86-64 (PDF) (tesis de maestría). Universidad de Oulu . págs. 33, 42. Recuperado 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 bibliográfico : 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 recientes también admiten las instrucciones Galois Field New Instructions (GFNI), que permiten implementar la s-box de Camellia de una manera más directa y ofrecen un rendimiento aún mejor.
- ↑ Wu, Hongjun; Preneel, Bart (2016-09-15). "AEGIS: Un algoritmo de cifrado autenticado rápido (v1.1)" (PDF) .
- ↑ Denis, Frank. "La familia AEGIS de algoritmos de cifrado autenticado" . 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
- Arquitectura X86
- Instrucciones X86
- Tecnologías AMD
- Estándar de cifrado avanzado
- aceleración de hardware
- Extensiones del conjunto de instrucciones