¿Cuáles son las diferencias de rendimiento (para cliente y servidor) entre DHE y ECDHE en TLS?

6

Mi pregunta es sobre el rendimiento del cliente y del servidor para (EC) DHE. Tengo dificultades para comprender esta imagen (que se basa en los números del libro de Ivan Ristic" SSL y TLS ").

Comencemos con la tercera fila "RSA 2048, DHE 2048". Puedo entender que los tiempos de cómputo del cliente y del servidor son diferentes porque crear una firma es diferente a verificarla.

Entiendo que ECDHE es más rápido que DHE y, por lo tanto, los números en la segunda fila son más pequeños que los de la tercera fila.

Mis preguntas son:

  1. El esfuerzo para DHE y ECDHE es idéntico para el cliente y el servidor, ¿no?
  2. ¿Por qué el tiempo de cálculo del cliente para "RSA 2048, ECDHE 256" es más pequeño que el del servidor, mientras que para "RSA 2048, DHE 2048" es al revés?
pregunta HorstKevin 23.02.2017 - 14:20
fuente

2 respuestas

2

DHE utiliza aritmética modular para calcular el secreto compartido. ECDHE utiliza curvas algebraicas para generar la clave, por lo que tiene menores requisitos de computación, almacenamiento y memoria.

DHE es considerablemente más lento que ECDHE. Si quieres algunos números reales aquí están:

Key exchange    Parameters               Transactions/sec
DHE-RSA         1024-bit RSA key,
                1024-bit DH parameters        347.64

ECDHE-RSA       1024-bit RSA key,
                192-bit ECDH parameters       612.25


DHE-RSA         1776-bit RSA key, 
                1776-bit DH parameters        97.62

ECDHE-RSA       1776-bit RSA key,
                192-bit ECDH parameters       349.53

Como puede ver, la penalización de rendimiento para DHE aumenta mucho más al aumentar el número de bits. Si realmente quiere lo mejor de ambos mundos, puede usar ECDHE-ECDSA y ambos tienen secreto y eficiencia.

Aquí puede encontrar otros resultados independientes que deberían proporcionarle información relevante. info.

El esfuerzo no es en absoluto idéntico. El cliente nunca es un problema. Solo notará las diferencias de rendimiento en el servidor (porque hay un servidor y muchos posibles clientes de negociación, así que solo en el caso de 1 cliente y 1 servidor el esfuerzo será igual).

-EDIT-

Entonces, para concluir: 1. Sí para un cliente. No para más clientes concurrentes, por razones obvias. 2. Ambas suposiciones son incorrectas. En máquinas idénticas, el tiempo de cálculo será similar en ambos casos.

    
respondido por el Overmind 08.03.2017 - 10:41
fuente
0

RSA tiene un desafortunado desequilibrio en el esfuerzo de cálculo que necesitan el cliente y el servidor.

El servidor debe hacer más trabajo al descifrar la oferta de los clientes porque normalmente el exponente público se elige mucho más pequeño en los certificados de servidor. El módulo privado 'd' no puede ser demasiado pequeño (Boneh & Durfee: Cryptanalysis de RSA con clave privada d menos de N ^ 0.292 ).

Esto tiene el efecto de que el cliente necesita realizar solo unas pocas multiplicaciones modulares y puede utilizar la optimización de la cuadratura y la multiplicación, mientras que el servidor debe hacer la exponenciación con el gran exponente privado.

Afortunadamente, el servidor tiene más conocimiento sobre la clave privada, por lo que puede usar la optimización del Teorema del Resto Chino (CRT), puede dividir la costosa exponenciación con el módulo n en dos. El costo de hacer una exponenciación modular aumenta por el cubo del número de bits en el módulo. Hacer dos cálculos de exponenciación ( mod p y mod q ) es, por lo tanto, más eficiente ( detalles ). Pero todavía es mucho más trabajo que el cliente tiene que hacer. Y luego el servidor también debe realizar el cegamiento RSA para protegerse contra los ataques de tiempo

(Actualmente no estoy seguro de por qué es al revés para DHE o ECDHE. Para EC, creo que está relacionado con la necesidad de verificar los parámetros en la curva)

    
respondido por el eckes 27.04.2017 - 23:00
fuente

Lea otras preguntas en las etiquetas