Intel AES-NI ¿qué es esto en el BIOS? Uso de las nuevas instrucciones de cifrado Intel® AES en Android

En el mundo moderno, el cifrado se utiliza en casi todas partes, tanto para proteger información especialmente importante en áreas especiales (sector de defensa, banca, etc.) como en dispositivos domésticos: ordenadores, teléfonos inteligentes, televisores. Además, el alcance de la criptografía se amplía cada año y el volumen de datos cifrados transmitidos (almacenados) crece.

Al mismo tiempo, el cifrado de datos aumenta significativamente la carga computacional en los dispositivos que lo implementan, por lo que no es sorprendente que las operaciones criptográficas se transfieran cada vez más al nivel de hardware (a menudo en forma de coprocesadores criptográficos especiales o tarjetas de expansión). . En los últimos años, las instrucciones de cifrado también se han implementado ampliamente directamente en las unidades centrales de procesamiento de las principales marcas de PC de consumo y dispositivos móviles.

Usando cifrado

A medida que la electrónica y la automatización penetran en todas las áreas de nuestras vidas, aumenta la necesidad de proteger los datos transmitidos y limitar el acceso a los componentes clave. Casi todas las computadoras, tabletas y teléfonos inteligentes, enrutadores, electrodomésticos inteligentes, automóviles, etc. modernos utilizan activamente el cifrado. Por ejemplo, se utilizan algoritmos criptográficos:

  • al conectarse a la mayoría de los tipos de redes de datos inalámbricas (Wi-Fi, Bluetooth, etc.);
  • en comunicaciones móviles;
  • Los sistemas operativos móviles (iOS, Android) cifran los datos de los dispositivos para protegerlos contra el acceso no autorizado;
  • El almacenamiento seguro de contraseñas requiere ciertas características criptográficas (es decir, la mayoría de los dispositivos con capacidades de contraseña utilizan cifrado);
  • las tarjetas bancarias, cajeros automáticos y terminales de pago siempre están protegidos criptográficamente;
  • Las criptomonedas se basan en los principios del cifrado.

Cada vez más organizaciones y personas se dan cuenta de la importancia de utilizar el cifrado para proteger los datos. Así, gracias a los esfuerzos conjuntos de muchas empresas, en particular Google, la proporción de tráfico HTTP cifrado aumentó del 30% a principios de 2014 al 70% a principios de 2018.

Al mismo tiempo, cualquier cifrado es una transformación de datos matemáticamente compleja y requiere recursos informáticos adicionales del hardware. Dependiendo del escenario de procesamiento de datos, la introducción del cifrado puede reducir varias veces el rendimiento general (la cantidad de datos procesados ​​por unidad de tiempo).

Algoritmos de cifrado

Existe una gran cantidad de algoritmos criptográficos. Sería técnicamente difícil apoyarlos a todos.

Sin embargo, algunos algoritmos se utilizan con mucha más frecuencia que otros. Esto se debe al hecho de que muchos algoritmos se consideran obsoletos o no lo suficientemente seguros, otros resultan ser computacionalmente complejos innecesariamente y también hay otras razones.

Entre los algoritmos de bloques simétricos, en primer lugar, debe destacarse [ (Estándar de cifrado avanzado). Este algoritmo fue seleccionado como estándar nacional de EE. UU. basándose en los resultados de una competencia. AES es el principal algoritmo de cifrado simétrico en muchos protocolos y tecnologías (TLS, Wi-Fi, Bluetooth (a partir de la versión 4.0), GPG, IPsec, Bitlocker (cifrado del sistema de archivos de Windows), LUKS (cifrado del sistema de archivos de Linux), Microsoft Office, muchos programas -archivadores (WinZip, 7-zip), etc.).

Los algoritmos de hash criptográficos también se utilizan ampliamente. Debido a que el algoritmo MD5 fue reconocido como inseguro, los algoritmos más comunes en la actualidad son la serie SHA, principalmente SHA-1 y SHA-2, que también son estándares FIPS de EE. UU. Con el tiempo, serán reemplazados por el algoritmo SHA-3, que resultó ganador del concurso correspondiente en 2012.

Los algoritmos de clave pública incluyen RSA, DSA y Diffe-Hellman.

Las últimas generaciones de procesadores de la arquitectura x86 más común (fabricados por Intel y AMD) implementan instrucciones especiales para acelerar los cálculos utilizando algoritmos AES y SHA-1, SHA-2 (256 bits).

instrucciones de intel

AES

En 2008, Intel propuso nuevos comandos para la arquitectura x86, que agregaron soporte de hardware para el algoritmo de cifrado AES simétrico. Actualmente, AES es uno de los algoritmos de cifrado de bloques más populares. Por lo tanto, la implementación de hardware debería conducir a un mayor rendimiento de los programas que utilizan este algoritmo de cifrado.

El conjunto de nuevas instrucciones se denomina AES-NI (AES New Instrucciones) y consta de cuatro instrucciones para el cifrado AES

  • AESENC- Realizar una ronda de cifrado AES,
  • AESENCLAST- Realizar la ronda final de cifrado y descifrado AES
  • AESDEC- Realizar una ronda de descifrado AES,
  • AESDECLASTO- Realizar la ronda final de descifrado AES

y dos instrucciones más para trabajar con una clave AES:

  • AESIMC- Columnas de mezcla inversa,
  • AESKEYGENASSIST- Contribuir a la generación de la clave redonda AES.

Como antes, las instrucciones son del tipo SIMD, es decir, del tipo Single Instrucción Multiple Data. Se admiten las tres claves del modo AES (con longitudes de clave de 128, 192 y 256 bits con 10, 12 y 14 pasos de sustitución y permutación).

El uso de estas instrucciones acelera las operaciones de cifrado varias veces.

sha

  • Westmere:
    • Westmere-EP (Xeon 56xx)
  • Clarkdale (excepto Core i3, Pentium y Celeron)
  • Arrandale (excepto Celeron, Pentium, Core i3, Core i5-4XXM)
  • Puente de arena:
    • todas las computadoras de escritorio excepto Pentium, Celeron, Core i3
    • Móvil: Core i7 y Core i5 solamente
  • Ivy Bridge (solo i5, i7, Xeon e i3-2115C)
  • Haswell (todos excepto i3-4000m, Pentium y Celeron)
  • Broadwell (todos excepto Pentium y Celeron)
  • Silvermont/Airmont (todos excepto Bay Trail-D y Bay Trail-M)
  • Goldmont
  • Skylake
  • Lago Kaby
  • Lago del Café
  • Excavadora
  • martinete
  • Apisonadora
  • Excavador
  • Jaguar

Las instrucciones SHA son compatibles con los procesadores Intel a partir de la arquitectura Goldmont (2016), los procesadores AMD, a partir de la arquitectura Zen (2017).

Otros procesadores

Los procesadores de uso general de otras arquitecturas y fabricantes también suelen incluir soporte para instrucciones criptográficas especiales.

Así, el soporte para el algoritmo AES se implementa en los procesadores:

La arquitectura ARM también tiene un conjunto de instrucciones para algoritmos SHA:

  • SHA1C: acelerador de actualización de hash SHA1, elija
  • SHA1H - Rotación fija SHA1
  • SHA1M: acelerador de actualización de hash SHA1, mayoría
  • SHA1P: acelerador de actualización de hash SHA1, paridad
  • SHA1SU0: acelerador de actualización de programación SHA1, primera parte
  • SHA1SU1 - Acelerador de actualización de programación SHA1, segunda parte
  • SHA256H - Acelerador de actualización de hash SHA256
  • SHA256H2 - Acelerador de actualización de hash SHA256, parte superior
  • SHA256SU0 - Acelerador de actualización de programación SHA256, primera parte
  • SHA256SU1 - Acelerador de actualización de programación SHA256, segunda parte

Intel Westmere de 32 nm agrega soporte de aceleración AES: ¿es realmente necesario?

Hoy en día, la seguridad es un tema importante, pero sólo los profesionales la consideran importante. Sin embargo, si la seguridad se convierte en un elemento de marketing o en una característica de rendimiento, entonces empresas como Intel comienzan a promoverla activamente. AES o Advanced Encryption Standard está certificado por la Administración de Seguridad Nacional (NSA) de EE. UU. y el gobierno de EE. UU., así como por muchas otras autoridades. La generación de procesadores Intel de doble socket de 32 nm promete mejoras significativas en el rendimiento de cifrado y descifrado AES gracias a nuevas instrucciones (solo procesadores Core i5 de doble núcleo). Decidimos evaluar los beneficios en la vida real y comparamos un procesador Core i5-661 de doble núcleo con las nuevas instrucciones AES con un procesador Core i7-870 de cuatro núcleos, que no admite aceleración de cifrado.

Haga clic en la imagen para ampliar.

En realidad, el cifrado se utiliza mucho más intensamente de lo que los usuarios suelen notar. Todo comienza con sitios en Internet que contienen información confidencial, como datos personales de los usuarios, o sitios que contienen información confidencial sobre transacciones, todos los cuales utilizan cifrado TLS o SSL. Del mismo modo se pueden proteger servicios como VoIP, mensajería instantánea y correo electrónico. Las redes privadas virtuales (VPN) son otro ejemplo que probablemente sea muy popular. El cifrado también afecta a áreas sensibles como los pagos electrónicos. Sin embargo, TLS/SSL son protocolos de comunicación criptográfica y AES, que Intel está acelerando a partir de la nueva generación de procesadores de 32 nm, es un estándar de cifrado de propósito general. Se puede utilizar para cifrar archivos individuales, contenedores de datos y archivos, o incluso cifrar particiones y unidades enteras, ya sea una memoria USB o un disco duro del sistema. AES se puede ejecutar en software, pero también existen productos acelerados por hardware, ya que el cifrado y descifrado suponen una carga computacional bastante pesada. Soluciones como TrueCrypt o Microsoft BitLocker, que forma parte de Windows Vista o Windows 7 Ultimate, pueden cifrar particiones enteras sobre la marcha.

Si cree o no que hay datos confidenciales en su sistema depende de lo que quiera decir con esos datos, así como de su nivel de comodidad personal. Además, la seguridad siempre implica la estrategia correcta y la precisión en el almacenamiento de datos confidenciales. Nunca debes ignorar datos como los datos de tu pasaporte o el número y fecha de caducidad de tu tarjeta bancaria. O incluso el PIN de tu teléfono.

Una cosa es segura: es mejor ser cuidadoso y prudente que al revés, sobre todo porque esto no requiere mucho esfuerzo. El enfoque de Intel para agregar aceleración AES no cubre todas las aplicaciones y escenarios de cifrado, solo el estándar más popular, y lo obtendrá todo de forma gratuita en todos los futuros procesadores de escritorio de 32 nm para el extremo principal o superior. Pero, ¿las nuevas instrucciones de AES realmente proporcionan mejoras de rendimiento significativas en escenarios de cifrado típicos o se trata más bien de un esfuerzo de marketing? Vamos a ver.

¿Qué es AES?

AES significa "Estándar de cifrado avanzado" y es el estándar de cifrado simétrico más popular en el mundo de la TI. El estándar funciona con bloques de 128 bits y admite claves de 128, 192 o 256 bits (AES-128, AES-192 y AES-256). Muchas utilidades de cifrado, incluido TrueCrypt, admitieron el algoritmo AES desde el principio de su existencia. Pero el factor más importante en el éxito de AES, por supuesto, es su adopción por parte del gobierno de EE. UU. en 2002, y como estándar para proteger datos clasificados en 2003.

Cifrar datos usando AES

El cifrado AES se basa en un sistema de sustitución de permutación, lo que significa que se realizan una serie de operaciones matemáticas en los datos para crear un conjunto de datos significativamente modificado (cifrado). La información inicial es texto y la clave se encarga de realizar operaciones matemáticas. Las operaciones pueden ser tan simples como desplazamiento de bits o XOR, o más complejas. Un pase se puede descifrar fácilmente, razón por la cual todos los algoritmos de cifrado modernos se basan en múltiples pases. En el caso de AES, son 10, 12 o 14 pases para AES-128, AES-192 o AES-256. Por cierto, las claves AES pasan por el mismo procedimiento que los datos de usuario, es decir, son una clave de ronda cambiante.

El proceso funciona con matrices de 4x4 de bytes individuales, también llamadas cajas: las cajas S se usan para sustituciones, las cajas P se usan para permutaciones. Las sustituciones y permutaciones se realizan en diferentes etapas: las sustituciones funcionan dentro de las llamadas cajas y las permutaciones cambian información entre cajas. S-box funciona según un principio complejo, es decir, incluso si cambia un solo bit de entrada, esto afectará a varios bits de salida, es decir, las propiedades de cada bit de salida dependen de cada bit de entrada.

El uso de pases múltiples proporciona un buen nivel de cifrado, pero debe cumplir con los criterios de difusión y confusión. La dispersión se realiza mediante una combinación en cascada de transformaciones S-box y P-box: al cambiar solo un bit en el texto de entrada, S-box modificará la salida de varios bits y P-box propagará esto de forma pseudoaleatoria. efecto en múltiples S-boxes. Cuando decimos que un cambio mínimo en los insumos produce un cambio máximo en la producción, estamos hablando de un efecto de bola de nieve.

¿Qué tan seguro es el cifrado AES?

Últimamente se ha debatido mucho sobre los llamados hacks que evitan la necesidad de ejecutar una búsqueda avanzada de fuerza bruta para encontrar la clave de descifrado correcta. Tecnologías como los ataques XSL y los ataques a claves relacionadas se discuten con bastante intensidad, pero con poco éxito. La única forma funcional de romper el cifrado AES es mediante el llamado ataque de canal lateral. Para lograr esto, el ataque debe ocurrir solo en el sistema host que ejecuta el cifrado AES y debe encontrar una manera de obtener información de sincronización de caché. En este caso, puede realizar un seguimiento del número de ciclos de la computadora hasta que se complete el proceso de cifrado.

Por supuesto, todo esto no es tan fácil, ya que necesita acceso a la computadora y acceso suficiente para analizar el cifrado y el derecho a ejecutar el código. Ahora probablemente comprenda por qué los “agujeros” en el sistema de seguridad que permiten a un atacante obtener esos derechos, incluso si suenan completamente absurdos, deben cerrarse lo más rápido posible. Pero no nos perdamos en nuestros pensamientos: si obtiene acceso a la computadora de destino, recuperar la clave AES es cuestión de tiempo, es decir, ya no es una tarea que requiere mucha mano de obra para las supercomputadoras y que requiere enormes recursos informáticos.

AES dentro de Intel

En este punto, las instrucciones AES integradas en la CPU están empezando a tener sentido, independientemente de los posibles beneficios de rendimiento. Desde una perspectiva de seguridad, el procesador puede procesar instrucciones AES en forma encapsulada, lo que significa que no requiere ninguna de las tablas de búsqueda necesarias para un ataque de canal lateral.



CONTENIDO

Chicos, un regalo para todos. Estamos hablando de algo como Intel AES-NI, esto se puede encontrar en el BIOS, pero ¿qué es? Lo descubriremos. Entonces encontré el sitio web oficial de Intel, donde está escrito que Intel AES-NI es un determinado conjunto de comandos de cifrado que complementa el algoritmo del Estándar de cifrado avanzado (AES) y acelera el proceso de cifrado de datos en Intel Xeon (estos son servidores ) y procesadores Intel Core (hogar normal).

Intel AES-NI incluye siete comandos nuevos y le permite proteger el tipo de datos con un mayor nivel de seguridad. En principio, todo está claro, Intel AES-NI es una especie de cifrado nuevo, pero ¿por qué una persona común y corriente lo necesita? Intentaré averiguarlo...

Sí, es decir, AES-NI realiza algunos aspectos de AES a nivel de hardware, es decir, directamente en el proceso mismo. Bueno, ahora entiendo un poco. Es decir, AES-NI mejora el rendimiento de AES y acelera el tipo. Debería cifrarse más rápido, lo único que no entiendo es ¿qué está cifrado? ¿Está cifrado el disco en Windows o se creará un archivo WinRAR más rápido? Esto es lo que no puedo entender todavía. Pero encontré algunas aclaraciones sobre este tema, eche un vistazo:

Es decir, el cifrado BitLocker debería ser más rápido. Pero con respecto a las transacciones en Internet, no lo entiendo muy bien. ¿Significa esto que el procesador puede participar en el cifrado de las conexiones a Internet? Debido a que todo el proceso de transacción generalmente está encriptado, incluso se utiliza el protocolo HTTPS para esto...

En resumen chicos, creo que lo entiendo todo. Existe algo llamado AES, ¿verdad? ¿Qué es esto? Este es un algoritmo de cifrado de bloques simétrico, en resumen, una tontería. Pero ese no es el punto. Entiendo que en algunos programas se usa AES, ¿es lógico? Aquí tienes. Pero la opción Intel AES-NI simplemente acelera el algoritmo AES, ¿sabes? Porque esta opción funciona a nivel de hardware directamente en el proceso.

Entonces la pregunta es: ¿vale la pena activar Intel AES-NI para que algo se cifre más rápido? Sí, resulta que este es exactamente el caso. También leí que los programas para cifrado de discos pueden usar Intel AES-NI, por ejemplo uno de esos programas es PGPdisk.

Chicos, encontré una imagen muy interesante que muestra la ventaja de usar AES-NI, miren:

Bueno, en realidad la diferencia se nota...

Entonces, ¿qué conclusión podemos sacar? Intel AES-NI es un tipo de cosa que está integrada en el propio procesador; de hecho, son una especie de instrucciones y estas instrucciones ayudan al algoritmo AES a funcionar más rápido. El algoritmo en sí puede ser utilizado por diferentes programas y, con la ayuda de Intel AES-NI, estos programas harán su trabajo más rápido =)

Bueno chicos, este es el elemento Intel AES-NI en el BIOS:

Chicos, ahora hemos descubierto qué es Intel AES-NI, pero si algo anda mal, no lo regañen demasiado. ¡Buena suerte para ti y que seas feliz!

Traducimos... Traducir chino (simplificado) chino (tradicional) inglés francés alemán italiano portugués ruso español turco

Desafortunadamente, no podemos traducir esta información en este momento; inténtelo nuevamente más tarde.

Introducción

Este artículo describe la compatibilidad con las nuevas instrucciones de cifrado estándar Intel® AES (Intel® AES-NI) en Android: qué es, cómo usarlas y cómo medir el rendimiento. También describe un modelo de uso y ejemplos en combinación con dos escenarios de cifrado que demuestran el uso de instrucciones Intel AES-NI. Los desarrolladores experimentados pueden omitir las primeras cuatro partes de este artículo e ir directamente a la última parte para familiarizarse con los casos de uso. Es posible que los desarrolladores menos experimentados quieran leer el artículo completo.

Nuevas instrucciones de cifrado AES (Intel AES-NI)

Las instrucciones Intel AES-NI se propusieron en marzo de 2008 como una extensión del conjunto de instrucciones de arquitectura x86 para microprocesadores Intel y AMD. El propósito de este conjunto de instrucciones es aumentar la velocidad de las aplicaciones que realizan el cifrado y descifrado de datos AES.

Las instrucciones de Intel AES-NI se enumeran en la Tabla 1.

Tabla 1. Instrucciones Intel® AES-NI

Comprobando la compatibilidad con Intel AES-NI en Android

Puede verificar si Intel AES-NI es compatible con una plataforma en particular usando ID de CPU; comprobar el valor CPUID.01H:ECX.AESNI = 1. También puedes usar la función check_for_aes_instrucciones del ejemplo de la biblioteca Intel AES-NI.

Usando Intel AES-NI en Android

Puedes usar Intel AES-NI en Android de diferentes maneras:

  • escribir código C/C++ y usar código ensamblador directamente
  • utilizar una biblioteca de terceros existente, como OpenSSL*
  • utilice la API criptográfica Java* de Android Kitkat

Para compilar una biblioteca/aplicación nativa para x86 en el sistema operativo Android, debe preparar una cadena de herramientas independiente usando el comando hacer-independiente-toolchain.sh en el NDK de Android:

$NDK_PATH/build/tools/make-standalone-toolchain.sh –install-dir=$STANDALONE_TOOCHAIN_PATH –toolchain=x86-4.8 –platform=android-14 –ndk-dir=$NDK_PATH export PATH=$PATH:$STANDALONE_TOOCHAIN_PATH

Usando la biblioteca de compilación

La biblioteca está en la carpeta. intel_aes_lib. También se puede descargar desde . Utilice GCC versión 4.4 o posterior, lo que significa que la versión de NDK debe ser más reciente que NDK v3. (Aquí usamos android-ndk-r9 para realizar pruebas.)

archivo MAKE/shell No existe un script para crear versiones para Android. Para compilar, puedes cambiar el archivo. mk_lnx86.sh. El principal cambio es utilizar $STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc en lugar de GCC por defecto. También deberías utilizar los parámetros. pasar –D__ANDROID__.

Exportar CC=”$STANDALONE_TOOLCHAIN_PATH/bin/i686-linux-android-gcc –D__ANDROID__ --sysroot=$STANDALONE_TOOLCHAIN_PATH/sysroot -I$STANDALONE_TOOLCHAIN_PATH/sysroot/include”

Una vez compilado, puedes transferir el programa ejecutable binario a Android y probarlo. También puedes usar el código fuente directamente en tus aplicaciones o usar la biblioteca binaria generada en el NDK.

Usando OpenSSL

Muchas bibliotecas utilizan las instrucciones Intel AES-NI, como cripto++ polar SSL IPP OpenSSL y otros. (Usamos AbiertoSSL como referencia: instrucciones Intel AES-NI compatibles con OpenSSL desde la versión experimental 1.0).

A partir de Android 4.3, OpenSSL en AOSP tiene soporte para Intel AES-NI, por lo que solo necesitas compilar el código con la configuración deseada. También puedes descargarlo del sitio web oficial, compilarlo tú mismo y luego usar el archivo. *.a/*.así directamente en su proyecto.

1) Descargar: puede descargar OpenSSL desde http://www.openssl.org/source/. Actualmente en Android 4.2 openssl-1.0.1c y en Android 4.4 - openssl-1.0.1e.Debe utilizar la misma versión de OpenSSL que el sistema de destino.

(2) Compilación: ejecute el siguiente comando en la consola:

Cd $OPENSSL_SRC_PATH export CC=”$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc –mtune=atome –march=atom –sysroot=$STANDALONE_TOOCHAIN_PATH/sysroot” export AR=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ar exportar RANLIB=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ranlib ./Configurar android-x86 –DOPENSSL_IA32_SSE2 –DAES_ASM –DVPAES_ASM make

Después de esto el archivo libcrypto.a aparecerá en la carpeta de nivel superior. Para usar el archivo *.entonces ingresar " Configurar android-x86 compartido ***”.

(3) Utilice OpenSSL a través de NDK en un proyecto de Android: cree proyecto androide, declare la función relacionada con OPENSSL como nativo, luego usa el código en jni/*.c.

Después de esto necesitas copiar los archivos. *.a/*.así y un archivo de encabezado para el proyecto.

Mkdir jni/precompilado/ mkdir jni/include cp $OPENSSL_PATH/libcrypto.a jni/precompilado cp –L -rf $OPENSSL_PATH/include/openssl jni/include

Luego agregue la siguiente línea al archivo jni/Android.mk:

... LOCAL_MODULE:= estático LOCAL_SRC_FILES:= precompilado/libcrypto.a ... LOCAL_C_INCLUDES:= incluye LOCAL_STATIC_LIBRARIES:= estático –lcrypto...

Luego puede utilizar las funciones proporcionadas en OpenSSL para implementar su funcionalidad. cifrar/descifrar/SSL. Para usar Intel AES-NI, use la función de serie EVP_* como se muestra a continuación. Esto permitirá automáticamente que el módulo de hardware Intel AES-NI realice el cifrado y descifrado AES si la CPU lo admite.

//declarar EVP_CIPHER_CTX en, de;

//inicia EVP_CIPHER_CTX_init(&es); EVP_CIPHER_CTX_init(&de); EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL);

//descifrar y cifrar EVP_DecryptUpdate(&de, texto plano, &bytes_escrito, texto cifrado, len);

EVP_EncryptUpdate(&en, texto cifrado, &cipher_len, texto sin formato, len); //limpiar EVP_CIPHER_CTX_cleanup(&en); EVP_CIPHER_CTX_cleanup(&de); Entonces usa ndk-construcción para compilación. Ndk-compilación APP_ABI=x86

(4) Uso de Java Crypto API: en

kitkat android

Proveedor OpenSSL llamado “

AndroidOpenSSL

” es compatible con Intel AES-NI, por lo que puede utilizar javax.crypto.Cipher directamente. Cifrado cifrado = Cipher.getInstance(AES_ALGORITHM, “AndroidOpenSSL”); cifrado.init(*); Medición del desempeño javax.crypto.Cipher Medición del desempeño Herramientas de prueba

(1) Utilice herramientas OPENSSL. Equipo

abresl

como parte de OpenSSL, puede realizar muchas tareas. Se puede utilizar para medir el rendimiento mediante velocidad de apertura SL

. Por defecto

((cuando se construye con la opción AES_ASM) utilizará automáticamente la aceleración de hardware Intel AES-NI. También puede desactivar fácilmente la aceleración de hardware configurando una única variable de entorno: Programa Intel® MPM

deje de crear perfiles y luego guarde los datos del resultado. Los resultados se muestran como un resumen de texto o como un gráfico.

(4) Utilice la aplicación de prueba de la biblioteca Intel AES-NI, consulte. Poder habilitar o deshabilitar AESNI en BIOS en algunos proyectos de prueba como aes_gladman_subconjunto,para demostrar resultados de desempeño.

Resultados de la prueba

Ejecutamos [insertar programa] en una tableta Bay Trail con Android 4.4. Los resultados de nuestras pruebas muestran un rendimiento de cifrado y descifrado de 4 a 11 veces mejor, así como un ahorro de energía de más del 40 % cuando se utiliza Intel AES-NI.

Datos de prueba detallados

Hardware: BAYTRAIL_FFRD8 PR1, SO: ANDROID 4.4
MODO
(CBC/256)
Tamaño del archivo Intel® AES-NI habilitado Intel® AES-NI deshabilitado
Tiempo(s) sin E/STiempo(s) con E/STiempo(s) sin E/STiempo(s) con E/S
Cifrado351M2.89 15.4 14.59 25.61
56M0.48 2.35 2.63 4.55
Descodificación351M1.76 38.144 19.78 28.51
56M0.29 1.9 3.16 4.62

    Sin E/S de la tabla de arriba

    Cifrado: mejora del rendimiento de casi 5 veces, similar a OPENSSL
    Transcripción: aumento de casi 11 veces la productividad

    Con E/S de la tabla de arriba

    Cifrado: mejora del rendimiento de casi 1,9 veces
    Transcripción: aumento de casi el doble en la productividad

Casos de uso de Intel AES-NI

El algoritmo AES se utiliza ampliamente en diversos escenarios de seguridad de datos, como el cifrado de la transmisión de datos a través de una red, el cifrado de discos completos o archivos individuales. En todos estos escenarios, se puede utilizar Intel AES-NI siempre que la CPU admita las instrucciones requeridas. En la figura. La Figura 6 muestra una transmisión de datos típica en una red; Todos los datos transferidos entre usuarios y servidores se cifran después de la autenticación.

Figura 6. Transferencia de datos de red típica

Otro caso de uso típico es cifrar unidades enteras o cifrar archivos individuales cuando los usuarios necesitan guardar datos en el almacenamiento local. En la figura. La Figura 7 muestra todo el flujo de trabajo desde el usuario hasta el repositorio:

Figura 7. Flujo de trabajo de cifrado completo

Las instrucciones de hardware Intel AES-NI brindan alto rendimiento y ahorro de energía, lo cual es especialmente importante para dispositivos móviles como teléfonos inteligentes y tabletas. La gestión de dispositivos móviles (MDM) y la gestión de contenidos móviles (MCM) son factores críticos para las soluciones de seguridad empresarial. Esta sección describe Intel AES-NI en combinación con MDM y MCM.

Un buen ejemplo de MDM es cuando los administradores envían mensajes o comandos a los usuarios finales, pero todos los datos confidenciales enviados deben estar cifrados. La solución de software AES agota rápidamente la energía de la batería cuando los datos se transfieren con frecuencia, pero la solución Intel AES-NI utiliza soluciones de hardware que ahorran energía y mejoran el rendimiento. En la figura. La Figura 8 muestra un escenario típico en el que los administradores envían comandos a los usuarios mediante cifrado basado en Intel AES-NI. El flujo de trabajo implica cifrar comandos antes de enviarlos y descifrar datos para ejecutar comandos en los dispositivos del usuario final.

Figura 8. Intercambio de datos MDM mediante criptografía AES

Ejemplo de MCM: los usuarios acceden a datos confidenciales como documentos, imágenes, videos, etc. desde servidores corporativos. Estos datos transmitidos necesitan una protección fiable. Todos los datos deben cifrarse antes de enviarse a los usuarios finales; En los dispositivos de los usuarios, los datos también deben almacenarse en formato cifrado. En la figura. La Figura 9 muestra un flujo de trabajo típico de MCM de principio a fin cuando un usuario final lee y almacena datos. Las instrucciones Intel AES-NI admiten cifrado de 256 bits, lo que las convierte en una excelente solución de hardware para los requisitos de privacidad y seguridad de nivel empresarial.

Figura 9. Flujo de trabajo de MCM

Para habilitar la aceleración de hardware Intel AES-NI, los desarrolladores deben utilizar la programación NDK. En la figura. La Figura 10 muestra una relación típica entre las capas de aplicaciones de Android, el módulo de cifrado de Android y el módulo Intel AES-NI C/C++. La interfaz nativa de Java (JNI) se utiliza para vincular funciones C/C++ a funciones Java. Si la programación en el NDK es nueva para usted, consulte las referencias del NDK para obtener más información.

Figura 10. Relaciones típicas entre niveles.

Conclusión

Este artículo describe cómo utilizar las instrucciones Intel AES-NI para acelerar el cifrado en dispositivos Android. Muestra cómo los desarrolladores pueden utilizar código ensamblador, bibliotecas de terceros e Intel NDK para acelerar las aplicaciones y ahorrar energía. Se describen dos escenarios típicos de cifrado y descifrado de datos para ayudar a los desarrolladores a utilizar Intel AES-NI en sus aplicaciones.

Para obtener más información sobre las herramientas Intel®, los desarrolladores de Android pueden visitar los siguientes sitios: Intel® Developer Zone para Android.

Sobre los autores

Zhang Li es ingeniero de desarrollo de aplicaciones en la División de Relaciones con Desarrolladores del Grupo de Soluciones y Software Intel® (SSG) como parte del Equipo de Habilitación Móvil. Está involucrado en el soporte de aplicaciones de Android.

Yanqing Wang es ingeniero de desarrollo de aplicaciones en la División de Relaciones con Desarrolladores del Grupo de Soluciones y Software Intel® (SSG) como parte del Equipo de Habilitación Móvil. Sus responsabilidades incluyen la manejabilidad y seguridad de las soluciones empresariales. Tiene el estado Black Belt de Intel® Developer Zone (IDZ).

Materiales de referencia

Intel, el logotipo de Intel, Atom, Celeron, Core, Pentium y Xeon son marcas comerciales de Intel Corporation en los Estados Unidos y otros países.
*Otros nombres y marcas comerciales pueden ser propiedad de terceros.
© Intel Corporation, 2014. Todos los derechos reservados.

Intel Westmere de 32 nm agrega soporte de aceleración AES: ¿es realmente necesario?

Hoy en día, la seguridad es un tema importante, pero sólo los profesionales la consideran importante. Sin embargo, si la seguridad se convierte en un elemento de marketing o en una característica de rendimiento, entonces empresas como Intel comienzan a promoverla activamente. AES o Advanced Encryption Standard está certificado por la Administración de Seguridad Nacional (NSA) de EE. UU. y el gobierno de EE. UU., así como por muchas otras autoridades. La generación de procesadores Intel de doble socket de 32 nm promete mejoras significativas en el rendimiento de cifrado y descifrado AES gracias a nuevas instrucciones (solo procesadores Core i5 de doble núcleo). Decidimos evaluar los beneficios en la vida real y comparamos un procesador Core i5-661 de doble núcleo con las nuevas instrucciones AES con un procesador Core i7-870 de cuatro núcleos, que no admite aceleración de cifrado.


En realidad, el cifrado se utiliza mucho más intensamente de lo que los usuarios suelen notar. Todo comienza con sitios en Internet que contienen información confidencial, como datos personales de los usuarios, o sitios que contienen información confidencial sobre transacciones, todos los cuales utilizan cifrado TLS o SSL. Del mismo modo se pueden proteger servicios como VoIP, mensajería instantánea y correo electrónico. Las redes privadas virtuales (VPN) son otro ejemplo que probablemente sea muy popular. El cifrado también afecta a áreas sensibles como los pagos electrónicos. Sin embargo, TLS/SSL son protocolos de comunicación criptográfica y AES, que Intel está acelerando a partir de la nueva generación de procesadores de 32 nm, es un estándar de cifrado de propósito general. Se puede utilizar para cifrar archivos individuales, contenedores de datos y archivos, o incluso cifrar particiones y unidades enteras, ya sea una memoria USB o un disco duro del sistema. AES se puede ejecutar en software, pero también existen productos acelerados por hardware, ya que el cifrado y descifrado suponen una carga computacional bastante pesada. Soluciones como TrueCrypt o Microsoft BitLocker, que forma parte de Windows Vista o Windows 7 Ultimate, pueden cifrar particiones enteras sobre la marcha.

Si cree o no que hay datos confidenciales en su sistema depende de lo que quiera decir con esos datos, así como de su nivel de comodidad personal. Además, la seguridad siempre implica la estrategia correcta y la precisión en el almacenamiento de datos confidenciales. Nunca debes ignorar datos como los datos de tu pasaporte o el número y fecha de caducidad de tu tarjeta bancaria. O incluso el PIN de tu teléfono.

Una cosa es segura: es mejor ser cuidadoso y prudente que al revés, sobre todo porque esto no requiere mucho esfuerzo. El enfoque de Intel para agregar aceleración AES no cubre todas las aplicaciones y escenarios de cifrado, solo el estándar más popular, y lo obtendrá todo de forma gratuita en todos los futuros procesadores de escritorio de 32 nm para el extremo principal o superior. Pero, ¿las nuevas instrucciones de AES realmente proporcionan mejoras de rendimiento significativas en escenarios de cifrado típicos o se trata más bien de un esfuerzo de marketing? Vamos a ver.

¿Qué es AES?

AES significa "Estándar de cifrado avanzado" y es el estándar de cifrado simétrico más popular en el mundo de la TI. El estándar funciona con bloques de 128 bits y admite claves de 128, 192 o 256 bits (AES-128, AES-192 y AES-256). Muchas utilidades de cifrado, incluido TrueCrypt, admitieron el algoritmo AES desde el principio de su existencia. Pero el factor más importante en el éxito de AES, por supuesto, es su adopción por parte del gobierno de EE. UU. en 2002, y como estándar para proteger datos clasificados en 2003.

Cifrar datos usando AES

El cifrado AES se basa en un sistema de sustitución de permutación, lo que significa que se realizan una serie de operaciones matemáticas en los datos para crear un conjunto de datos significativamente modificado (cifrado). La información inicial es texto y la clave se encarga de realizar operaciones matemáticas. Las operaciones pueden ser tan simples como desplazamiento de bits o XOR, o más complejas. Un pase se puede descifrar fácilmente, razón por la cual todos los algoritmos de cifrado modernos se basan en múltiples pases. En el caso de AES, son 10, 12 o 14 pases para AES-128, AES-192 o AES-256. Por cierto, las claves AES pasan por el mismo procedimiento que los datos de usuario, es decir, son una clave de ronda cambiante.

El proceso funciona con matrices de 4x4 de bytes individuales, también llamadas cajas: las cajas S se usan para sustituciones, las cajas P se usan para permutaciones. Las sustituciones y permutaciones se realizan en diferentes etapas: las sustituciones funcionan dentro de las llamadas cajas y las permutaciones cambian información entre cajas. S-box funciona según un principio complejo, es decir, incluso si cambia un solo bit de entrada, esto afectará a varios bits de salida, es decir, las propiedades de cada bit de salida dependen de cada bit de entrada.

El uso de pases múltiples proporciona un buen nivel de cifrado, pero debe cumplir con los criterios de difusión y confusión. La dispersión se realiza mediante una combinación en cascada de transformaciones S-box y P-box: al cambiar solo un bit en el texto de entrada, S-box modificará la salida de varios bits y P-box propagará esto de forma pseudoaleatoria. efecto en múltiples S-boxes. Cuando decimos que un cambio mínimo en los insumos produce un cambio máximo en la producción, estamos hablando de un efecto de bola de nieve.

¿Qué tan seguro es el cifrado AES?

Últimamente se ha debatido mucho sobre los llamados hacks que evitan la necesidad de ejecutar una búsqueda avanzada de fuerza bruta para encontrar la clave de descifrado correcta. Tecnologías como los ataques XSL y los ataques a claves relacionadas se discuten con bastante intensidad, pero con poco éxito. La única forma funcional de romper el cifrado AES es mediante el llamado ataque de canal lateral. Para lograr esto, el ataque debe ocurrir solo en el sistema host que ejecuta el cifrado AES y debe encontrar una manera de obtener información de sincronización de caché. En este caso, puede realizar un seguimiento del número de ciclos de la computadora hasta que se complete el proceso de cifrado.

Por supuesto, todo esto no es tan fácil, ya que necesita acceso a la computadora y acceso suficiente para analizar el cifrado y el derecho a ejecutar el código. Ahora probablemente comprenda por qué los “agujeros” en el sistema de seguridad que permiten a un atacante obtener esos derechos, incluso si suenan completamente absurdos, deben cerrarse lo más rápido posible. Pero no nos perdamos en nuestros pensamientos: si obtiene acceso a la computadora de destino, recuperar la clave AES es cuestión de tiempo, es decir, ya no es una tarea que requiere mucha mano de obra para las supercomputadoras y que requiere enormes recursos informáticos.

AES dentro de Intel

En este punto, las instrucciones AES integradas en la CPU están empezando a tener sentido, independientemente de los posibles beneficios de rendimiento. Desde una perspectiva de seguridad, el procesador puede procesar instrucciones AES en forma encapsulada, lo que significa que no requiere ninguna de las tablas de búsqueda necesarias para un ataque de canal lateral.

Core i5 Clarkdale con soporte AES


Haga clic en la imagen para ampliar.
  • " Intel Core i5-661: pruebas del nuevo procesador según el diseño Clarkdale ";
  • " Intel Mobile Core i7, i5 e i3 (Arrandale): nuevos procesadores para portátiles ";
  • " Intel Core i3 e i5: pruebas de eficiencia de los nuevos procesadores de doble núcleo ".

Los procesadores en realidad marcan un cambio generacional, ya que no solo se trata de una transición a la siguiente tecnología de proceso (32 nm frente a 45 nm), sino que también estamos viendo la primera generación de CPU con soporte para múltiples instrucciones que aceleran el cifrado. Intel se refiere al complemento como Nuevas instrucciones AES. Constan de cuatro instrucciones para el cifrado AES (AESENC, AESENCLAST) y descifrado (AESDEC, AESDECLAST) más dos instrucciones más para trabajar con la clave AES (AESIMC, AESKEYGENASSIST). Como antes, las instrucciones son del tipo SIMD, es decir, del tipo Single Instrucción Multiple Data. Se admiten las tres claves AES (128, 192 y 256 bits con 10, 12 y 14 pasos de sustitución y permutación).

Dado que todas las instrucciones AES tienen una latencia fija que es independiente de los datos, es decir, el tiempo es fijo y no se requiere acceso a la memoria. Además, el modelo de programación es el mismo que el de otras instrucciones SSE del estándar SSE4 original. Por lo tanto, todos los sistemas operativos que admitan SSE podrán utilizar las nuevas instrucciones AES.

Tenga cuidado al elegir un procesador acelerado por AES, ya que hoy en día pocos modelos admiten las nuevas instrucciones. Los procesadores Core i3 de 32 nm de Clarkdale no admiten las instrucciones, pero la línea Core i5-600 de doble núcleo sí. Para los procesadores móviles, la situación es un poco más complicada: si los procesadores móviles Core i3 tampoco admiten la aceleración AES, entonces los procesadores de la línea Core i5-500 ya lo hacen. Sin embargo, hay un modelo Core i5-400 que carece de dicho soporte. Todo sería mucho más sencillo si Intel añadiera soporte para las nuevas instrucciones a todos los modelos.

Configuración de prueba

Configuración de hardware
Placa base (zócalo LGA1156) MSI H55M-ED55 (Rev. 1.0), chipset: H55, BIOS: 1.11 (04/01/2010)
Procesador Intel Intel Core i5-661 (32 nm, 3,33 GHz, 2 cachés L2 de 256 KB y caché L3 de 4 MB, TDP 87 W)
Memoria DDR3 (dos canales) 2x 2 GB DDR3-1600 (Corsair CMD4GX3M2A1600C8)
disco duro Solidata K5 SLC Flash SSD, SATA/300, caché de 64 MB
tarjeta de video Zotac Geforce GTX 260², GPU: GeForce GTX 260 (576 MHz), memoria: 896 MB DDR3 (1998 MHz), procesadores de flujo: 216, frecuencia de sombreado: 1242 MHz
unidad de potencia Alimentación y refrigeración de PC, silenciador 750EPS12V 750 W
Software y controladores del sistema
Sistema operativo Windows 7 Ultimate X64, actualizado el 11 de enero de 2010
Controlador del chipset Intel Utilidad de instalación de chipset Ver. 9.1.1.1025
Controlador de gráficos Nvidia Versión 8.16

Pruebas y configuraciones

Pruebas y configuraciones
7 cremalleras Versión 9.1 beta
1. Sintaxis "a -r -ptest -t7z -m0=LZMA2 -mx1 -mmt=8"
2. Sintaxis "a -r -ptest -t7z -m0=LZMA2 -mx9 -mmt=8"
3. Punto de referencia integrado
Punto de referencia: carga de trabajo THG
BitLocker Windows 7 integrado
Cifrar unidad RAM (330 MB)
Punto de referencia: carga de trabajo THG
winzip 14 Versión 14.0 Pro (8652)
Línea de comandos WinZIP versión 3
1. Sintaxis "-stest -ycAES256 -a -el -p -r"
2. Sintaxis "-stest -ycAES256 -a -e0 -p -r"
Punto de referencia: carga de trabajo THG
Pruebas sintéticas
Everest Versión: 5.3
Punto de referencia Zlib y AES
PCMark Vantage Versión: 1.00
Suite de comunicaciones
SiSoftware Sandra 2009 Versión: 2010.1.16.10
Aritmética del procesador, criptografía, ancho de banda de memoria

El principal competidor de nuestra revisión: el procesador Intel Core i7-870 de cuatro núcleos para LGA 1156. Haga clic en la imagen para ampliarla.
Nueva y eficiente: placa base MSI H55M-ED55. Haga clic en la imagen para ampliar.

Resultados de la prueba

SiSoftware Sandra 2009 SP3


Las pruebas ALU y MFLOPS no arrojaron ninguna sorpresa: el procesador de cuatro núcleos es casi el doble de rápido, a pesar de la velocidad más baja, como esperábamos.

Sin embargo, el resultado de la prueba de cifrado es completamente diferente: muestra que el procesador Core i5 Clarkdale con aceleración AES es hasta 3 veces más rápido que el Core i7-870 de cuatro núcleos.

Es por eso que los resultados de las pruebas de cifrado parecen tan buenos: el cifrado puro AES-256 se ejecuta más de seis veces más rápido en un procesador de doble núcleo acelerado por hardware.

La prueba de cifrado SHA-256 demuestra que esta función sólo acelera el algoritmo AES.

Prueba de comunicaciones PCMark Vantage

La prueba PCMark Vantage nos dice exactamente lo mismo: el resultado general de la suite de comunicaciones es un 50% más rápido en el nuevo procesador Clarkdale de doble núcleo de 32 nm en comparación con el Lynnfield de cuatro núcleos de 45 nm.

Y aquí está la razón.

Nuevamente: Intel solo aceleró el algoritmo AES. La compresión de datos no se beneficia de esto; la velocidad depende de la cantidad de núcleos y la frecuencia del reloj.

El descifrado del algoritmo AES también es bastante rápido.





Aquí hay otra prueba en la que el Clarkdale Core i5 de doble núcleo funciona bien gracias al soporte AES.

Bitlocker, Everest y WinZIP 14

Utilizamos la función de cifrado de unidad BitLocker integrada en el sistema operativo Windows 7 Ultimate, que también se basa en AES. Para evitar un cuello de botella en el almacenamiento, decidimos utilizar un disco de 330 MB de RAM, que puede mostrar la diferencia de rendimiento entre un Core i5-661 de doble núcleo con aceleración AES y un Core i7-870 de cuatro núcleos, que no admite aceleración de cifrado. . De hecho, la diferencia fue cercana al 50%, el cifrado tomó 7 segundos en el potente Core i7 de cuatro núcleos y el nuevo Core i5-661 de doble núcleo de 32 nm completó la misma tarea en solo 4 segundos.


La prueba de cifrado AES en el paquete Everest Ultimate Edition muestra un fantástico aumento de rendimiento, sin embargo, este sigue siendo un resultado más teórico.

A pesar de la compatibilidad con AES, WinZIP 14 funcionó más rápido en un procesador de cuatro núcleos debido a su mayor potencia. Sin embargo, el procesador de doble núcleo con aceleración de hardware AES aún funcionó bien, perdiendo sólo porque especificamos el nivel máximo de compresión. Elegimos este modo porque la mayoría de los usuarios lo elegirán a menos que haya algún motivo para reducir el nivel de compresión (por ejemplo, para comprimir una gran cantidad de datos más rápido).

Repetimos esta prueba con cifrado AES en WinZIP, pero el nivel de compresión era cero, es decir, WinZIP simplemente sobrescribió los archivos en un archivo comprimido. Y aquí vemos que el procesador de doble núcleo con aceleración AES en realidad supera al modelo de cuatro núcleos, que no tiene esa función.

7 cremalleras

Usamos una prueba de compresión de archivos ejecutada desde la línea de comando y nuevamente vemos que el procesador de cuatro núcleos es más rápido. Una vez más, la razón radica en el alto nivel de compresión. Repetimos la prueba con un nivel de compresión de archivos cero.

En este caso, vemos poco uso del Core i5-661 y de la función AES incorporada. El tiempo para agregar archivos al archivo es una quinta parte del tiempo con niveles de compresión altos, pero el procesador de cuatro núcleos aún sale ganando.

Como puede ver en los siguientes cuadros, más subprocesos dan como resultado un mayor rendimiento para 7-zip.



Conclusión

Nuestro análisis arrojó algunos resultados interesantes, pero también mostró que no todas las aplicaciones pueden beneficiarse inmediatamente de las seis nuevas instrucciones Intel AES, que fueron diseñadas para acelerar el cifrado y descifrado de los algoritmos AES-128, AES-192 y AES-256. Echamos un vistazo rápido a cómo funciona el estándar de cifrado simétrico y por qué también es importante para los usuarios cotidianos. Los resultados de las pruebas mostraron un rendimiento muy serio del Core i5-661 Clarkdale de doble núcleo, que comparamos con el Core i7-870 de cuatro núcleos. Las pruebas de PCMark Vantage y SiSoftware Sandra mostraron impresionantes mejoras de rendimiento gracias a la aceleración del hardware AES. Los resultados del Everest Ultimate son muy similares.

Sin embargo, todos los paquetes de prueba mencionados son sintéticos, lo que significa que normalmente muestran una diferencia mayor que la que se puede ver en la vida real. Por esta razón, también probamos 7-zip 9.1 Beta, BitLocker en Windows 7 Ultimate y WinZIP en la última versión 14 para ver qué beneficios obtendríamos en aplicaciones del mundo real. Debemos decir que no nos decepcionó: WinZIP 14 y Bitlocker dieron resultados que prácticamente repitieron los logros obtenidos en los paquetes de prueba sintéticos.

Pero una prueba del archivador beta 7-zip 9.1, que se supone que soporta las nuevas instrucciones de aceleración AES, no mostró una ventaja notable, o era demasiado pequeña, dando paso a la alta potencia de procesamiento del Core i7 de cuatro núcleos. -870 a 2,93 GHz, que está bastante cerca de la velocidad de reloj nominal de 3,33 GHz para el Core i5-661.

Al final, podemos confirmar que el enfoque de Intel ha dado sus frutos, aunque no podemos decir que todo el software que utiliza AES sea acelerado. Sin embargo, los beneficios de una seguridad más sólida persisten porque el cifrado y descifrado AES acelerado por hardware evita la posibilidad de un ataque de canal lateral, donde la clave AES se extrae husmeando en los sitios de acceso a la memoria (caché). Entonces nuestra conclusión será simple: estamos esperando que las nuevas instrucciones se conviertan en estándar para todos los procesadores.




Arriba