Lo que influye en la velocidad de la página php representada mediante el cifrado [cerrado]

0

He creado una aplicación web que utiliza las funciones openssl_private_decrypt() .

La representación de una página con 15 mensajes encriptados con estas funciones lleva mucho más tiempo que los que están sin. (3-4 veces)

La aplicación se ejecuta en un VPS simple con 1024 mb de RAM y 2.5 gHz (1core).

Si quiero acelerar el proceso de cifrado / descifrado; ¿Qué es lo mejor para actualizar? RAM o CPU? ¿Qué define la velocidad de los procesos de encriptación?

    
pregunta stUrb 28.01.2014 - 19:10
fuente

2 respuestas

2

Si debo creer en la documentación (una noción audaz) , la función openssl_private_decrypt() realiza descifrado simétrico con RSA, utilizando OpenSSL (la biblioteca) para el trabajo criptográfico real. En su VPS, puede ejecutar el siguiente comando para evaluar OpenSSL:

openssl speed rsa

Esto le dará la velocidad de las operaciones de claves públicas y privadas de RSA en su máquina. En el mío, obtengo 833.7 operaciones de clave privada por segundo para una clave de 2048 bits; 15 llamadas sucesivas apenas serían perceptibles. Sin embargo, su VPS podría ser considerablemente más débil que mi 3.1 GHz E3 Xeon. Además, es posible que haya utilizado una clave privada de gran tamaño (el tiempo de cálculo es mayormente cúbico en el tamaño de la clave). Si el punto de referencia muestra que la velocidad de descifrado RSA es el problema, entonces puede hacer lo siguiente:

  1. Usa una tecla más pequeña. El tamaño normal de la clave RSA es de 2048 bits; no hay necesidad de ir más allá de eso (2048 bits son suficientes para la seguridad de, al menos, los 30 próximos años). Ya no se recomiendan 1024 bits, aunque esto todavía no se puede romper (se puede hacer con la tecnología existente, pero supondrá la construcción de una máquina dedicada bastante costosa). Si tiene poca energía de la CPU, es posible que desee probar un término medio, por ejemplo. una clave de 1536 bits. NO ir por debajo de 1024 bits.

  2. Agrega una CPU más grande. RAM no es relevante. Tener más CPU ayuda solo para el procesamiento paralelo, es decir, varios usuarios que acceden al servidor simultáneamente.

  3. Haz otra cosa. No describe el contexto de uso, pero lo más probable es que si necesita realizar un descifrado de 15 RSA en una sola página, entonces está haciendo algo mal. Por ejemplo, supongo que puede haber notado que el cifrado RSA funciona solo hasta un tamaño limitado (117 bytes para una clave RSA de 1024 bits), y que podría haber decidido cifrar un mensaje más largo dividiéndolo en bloques largos de 117 bytes y aplicando RSA en cada uno de ellos por separado. Este camino lleva al sufrimiento. No hagas eso Haz cifrado híbrido (pero si tengo que decirte eso, entonces no sabes lo suficiente para hacer algo seguro todavía) .

(Cada vez que veo lo que hace PHP con crypto, me llena de temor, repugnancia y una sensación de inminente muerte. Las personas que pueden diseñar una función llamada openssl_public_decrypt() para "descifrar datos con la clave pública" son personas que aparentemente escuchó antes de 1993, pero no se molestó en verificar si la ciencia había progresado de alguna manera en los últimos 20 años. ¿Está seguro de que desea usar esas herramientas para cualquier cosa que requiera seguridad real?)

    
respondido por el Tom Leek 28.01.2014 - 20:21
fuente
1

Las velocidades mejoradas de la CPU ayudarán técnicamente, pero probablemente no tanto como esperes o desees. Especialmente en la actualidad, ya que la mayoría de las mejoras de rendimiento se realizan al agregar núcleos a los chips, en lugar de aumentar los ciclos de reloj.

Las operaciones en cifrado asimétrico suelen ser mucho, mucho más lentas que sus contrapartes en cifrado simétrico. Por esta razón, los cifrados asimétricos se utilizan con frecuencia con el fin de intercambiar de forma segura claves simétricas secretas, que luego pueden ser utilizadas por ambos lados para cifrar y descifrar datos en masa. Es posible que desee investigar esta posibilidad.

Otra opción es ejecutar las tareas de descifrado en paralelo. Probablemente tenga al menos cuatro núcleos en su servidor, pero una página PHP típica solo usará uno de ellos para renderizarlo. Si esos descifrados son completamente independientes entre sí, pueden ejecutarse en múltiples núcleos simultáneamente, lo que le brinda un aumento considerable del rendimiento para "gratis".

    
respondido por el Stephen Touset 28.01.2014 - 19:18
fuente

Lea otras preguntas en las etiquetas