Red de conocimiento informático - Material del sitio web - Cómo optimizar el rendimiento de HTTPS en el lado móvil

Cómo optimizar el rendimiento de HTTPS en el lado móvil

La popularidad de los sitios web HTTPS ha hecho que todos presten más atención a la optimización del rendimiento de HTTPS. En general, la optimización de HTTPS solo se puede realizar en la PC, pero el efecto en el lado móvil no es ideal. El año pasado, Google aceleró el rendimiento de HTTPS en el lado móvil y agregó un nuevo conjunto de cifrado TLS para el navegador Chrome en la plataforma Android: ChaCha20-Poly1305, que es un conjunto de cifrado lanzado especialmente para dispositivos móviles con el fin de brindar mejor seguridad y rendimiento. .

La siguiente es una captura de pantalla de la información cifrada después de abrir el sitio web de Google Japón en el navegador Chrome del iPhone.

WildDog WildDog es totalmente compatible con el conjunto de cifrado ChaCha20-Poly1305 de mayor rendimiento y mayor eficiencia energética en dispositivos móviles.

La siguiente es una captura de pantalla del mensaje cifrado después de abrir el sitio web de WildDog en el navegador Chrome.

Para comprender mejor ChaCha20-Poly1305, es necesario presentar brevemente el cifrado simétrico y AES-NI.

Cifrado simétrico y AES-NI

Cifrado simétrico

Durante el protocolo de enlace HTTPS, la clave de cifrado simétrico se negocia mediante cifrado asimétrico y luego se utiliza el cifrado simétrico Cifrar el contenido de los datos de ambas partes comunicantes. El impacto del cifrado asimétrico en el rendimiento del servidor es enorme y el cifrado asimétrico se puede acelerar mediante métodos como la recuperación de sesión. Los algoritmos de cifrado asimétrico comunes incluyen RSA, ECDHE, etc.

Después de negociar la clave de cifrado simétrico, todas las comunicaciones de contenido de datos en HTTPS se cifrarán mediante cifrado simétrico. El cifrado simétrico se divide en cifrado de flujo y cifrado de paquetes.

Los algoritmos de cifrado de flujo comunes incluyen RC4 y ChaCha20-Poly1305.

Los algoritmos de cifrado de paquetes comunes incluyen AES-CBC y AES-GCM.

RC4 ya no se utiliza debido a graves vulnerabilidades de seguridad, y AES-CBC es vulnerable a ataques BEAST y LUCKY13.

Para conocer los riesgos de seguridad, consulte los artículos relacionados en ssllabs:

AES-NI

AES-GCM resuelve los problemas de seguridad del cifrado simétrico, pero plantea dudas sobre el rendimiento. . Por lo tanto, surgió AES-NI (Nueva instrucción del estándar de cifrado avanzado). AES-NI es una extensión de la arquitectura x86 de los microprocesadores Intel y AMD que acelera por hardware el rendimiento de AES. Actualmente, el soporte de CPU para AES-NI es muy común en servidores y PC.

Resultados de la prueba: después de activar AES-NI en el servidor, el rendimiento aumentó entre 5 y 8 veces, lo que es básicamente consistente con los datos oficiales publicados por Intel.

Método de prueba:

Puede realizar pruebas utilizando OpenSSL u otras bibliotecas SSL porque todas las bibliotecas SSL admiten AES-128-GCM.

OpenSSL AES-NI = APAGADO

# OPENSSL_ia32cap=" ~0x200000200000000″ velocidad de openssl -elapsed -evp aes-128-gcm

OpenSSL AES-NI = ON

# openssl speed -elapsed -evp aes-128-gcm

Con respecto al conjunto de instrucciones AES-NI, le recomendamos que consulte "Intel Advanced Encryption Standard (AES)" escrito por Shay Gueron Conjunto de instrucciones" (2010).

¿Cuáles son las ventajas de ChaCha20-Poly1305?

Por qué Google está lanzando un nuevo conjunto de cifrado y dándole prioridad para todos los navegadores Chrome móviles:

ChaCha20-Poly1305 evita todos los ataques y agujeros de seguridad existentes;

p >

ChaCha20-Poly1305 está optimizado para su uso con chips ARM, que se utilizan mucho en dispositivos móviles. Después de la optimización, aprovecha al máximo las instrucciones vectoriales ARM, que pueden cifrar y descifrar más rápido en dispositivos móviles y ahorrar consumo de energía;

Ahorra más ancho de banda, la salida de Poly1305 es de 16 bytes y HMAC -SHA1 tiene 20 bytes, lo que ahorra un 16 % del consumo general.

Conozca los beneficios de usar ChaCha20-Poly1305 en dispositivos móviles con datos de pruebas del mundo real.

Prueba 1:

En dispositivos que admiten la extensión AES-NI, los beneficios de rendimiento del cifrado AES son claros. El cifrado simétrico más utilizado, AES-128-GCM, funciona casi cinco veces mejor que ChaCha20-Poly1305.

Dado que ChaCha20-Poly1305 no es compatible actualmente con OpenSSL nativo, las pruebas se realizaron compilando el código fuente de LibreSSL (el código fuente más reciente).

Método de prueba:

Ingrese al directorio LibreSSL compilado y use el siguiente comando para probar.

./apps/openssl/openssl speed -elapsed -evp chacha

./apps/openssl/openssl speed -elapsed -evp aes-128-gcm

./apps/openssl/openssl velocidad -elapsed -evp aes-256-gcm

./apps/openssl/openssl velocidad -elapsed -evp aes-128-cbc

. /apps/openssl/openssl speed -elapsed -evp aes-256-cbc

Prueba 2:

Rendimiento de ChaCha20-Poly1305 en dispositivos móviles que no admiten la extensión AES-NI Aproximadamente 3 veces mayor que AES-GCM.

El uso más razonable del cifrado simétrico es utilizar preferentemente el paquete de cifrado AES-128-GCM en dispositivos que admitan AES-NI y en dispositivos móviles que no admitan AES-NI (especialmente dispositivos con ARM arquitectura) utilizan preferentemente el conjunto de cifrado ChaCha20-Poly1305.

Tres formas de implementar ChaCha20-Poly1305 para Nginx

La versión oficial de OpenSSL actualmente no es compatible con ChaCha20-Poly1305, por lo que no puede usar la versión local de OpenSSL. Preste mucha atención al OpenSSL oficial.

Hay tres métodos principales para implementar ChaCha20-Poly1305 en Nginx:

Usar LibreSSL (la rama de bifurcación OpenSSL de OpenBSD);

Utiliza la bifurcación BoringSSL OpenSSL de Google;

Utiliza parches OpenSSL proporcionados por CloudFlare.

Estos tres métodos principales se han implementado con éxito en servidores y se han probado con tráfico, y cada uno tiene sus pros y sus contras.

El método de implementación específico, la configuración de Nginx, los errores que se pueden encontrar durante el proceso de implementación y las soluciones involucran demasiado contenido. El contenido relevante es el siguiente:

Nginx compila e instala BoringSSL

Nginx compila e instala Instalar LibreSSL

Nginx compila e instala el parche OpenSSL proporcionado por CloudFlare

Las siguientes son las ventajas y desventajas de estos tres métodos que he resumido. Bienvenido a agregar. .

LibreSSL

El método de compilación e instalación es el más sencillo.

El equipo de OpenBSD ha limpiado y reconstruido minuciosamente el código OpenSSL, haciéndolo mucho más ligero;

p >

Se lanzó la versión estable y la solución de problemas es mucho más oportuna que el equipo de OpenSSL.

BoringSSL

Admite la función del conjunto de cifrado de igual preferencia, que creo que es muy interesante y se presentará en una publicación de blog posterior.

Carece de un compilador con; Nginx Friendly, propenso a errores, requiere al menos dos modificaciones del código fuente;

No admite la función de grapado OCSP. Es interesante que los ingenieros de Google afirmaron en su blog que OCSP Stapling está defectuoso y no es compatible actualmente, pero no descartan la posibilidad de admitirlo en el futuro. Teniendo en cuenta que el navegador Chrome no utiliza OCSP de forma predeterminada, se puede ver que Google tiene emociones encontradas sobre OCSP.

Parche OpenSSL

El proceso de compilación e instalación es más complicado;

OpenSSL en sí es pesado, tiene muchos problemas de seguridad y requiere actualizaciones frecuentes de versión;

p>

La estabilidad necesita mayor verificación.

Actualmente, el sitio web WildDog utiliza LibreSSL para resolver el nuevo rendimiento de aceleración móvil y ahorro de energía. Si tiene preguntas, desea comunicarse más o encuentra problemas al usar ChaCha20-Poly1305, no dude en comunicarse. no dude en contactarnos. Finalmente, se adjunta una captura de pantalla de los resultados de la evaluación del sitio web de Wild Dog (www.wilddog.com) en ssllabs.