Si se usa ECDH-RSA
para el intercambio de claves, esto es lo que sucede:
El servidor tiene su parámetro público ECDH
incrustado dentro de su certificado. El cliente genera su parámetro público ECDH
, extrae el parámetro público ECDH
del servidor y genera el secreto compartido ECDH
. Este secreto se usa entonces como el secreto de premaster.
Si se usa el intercambio de claves RSA
, esto es lo que sucede:
El servidor tiene su clave pública incrustada dentro de su certificado. El cliente genera el secreto de premaster, lo cifra con la clave pública del servidor y lo envía al servidor.
Ninguno de los conjuntos de cifrado ofrece Perfect Forward Secrecy, ¿cuál es la ventaja de utilizar un conjunto de cifrado basado en ECDH-RSA
sobre un RSA
one?
Hice algunas evaluaciones, utilizando 2048 -bit RSA keys y 256 -bit ECDH key. En la tabla a continuación, presento la cantidad de instrucciones de CPU (en millones) utilizadas por el cliente y el servidor para realizar el intercambio de claves con cada algoritmo:
+--------+------+----------+
| | RSA | ECDH-RSA |
+--------+------+----------+
| Client | 4.5 | 54.5 |
| Server | 75.5 | 27.5 |
+--------+------+----------+
Esto significa que en un intercambio de claves RSA
, el cliente usa 4.5 millones de instrucciones de CPU, mientras que el servidor usa 75.5 millones de instrucciones de CPU. De manera similar, en un intercambio de claves ECDH-RSA
, el cliente usa 54.5 millones de instrucciones de CPU, mientras que el servidor usa 27.5 millones de instrucciones de CPU.
Si elevamos el nivel de seguridad a 7680 -bit RSA keys y 409 -bit ECDH keys, obtenemos los siguientes resultados:
+--------+------+----------+
| | RSA | ECDH-RSA |
+--------+------+----------+
| Client | 15.5 | 89.5 |
| Server | 1503 | 44.5 |
+--------+------+----------+
En RSA
, el costo del lado del servidor aumenta abruptamente. Esto puede explicarse por el hecho de que el servidor utilizará una clave RSA privada muy grande para descifrar el secreto del maestro de maestro. Observe cómo ahora el servidor utiliza 1503 millones ( es decir 1.5 mil millones) de ciclos de CPU para realizar un intercambio de claves RSA
.
Como no se ofrece seguridad adicional cuando se usa ECDH-RSA
, las principales ventajas que pude encontrar están relacionadas con los costos y no benefician a ambas partes:
-
El costo total es mucho menor cuando se eleva el nivel de seguridad.
-
Ayuda a "igualar los costos", para minimizar las diferencias de uso de recursos entre los pares.
-
Hay un aumento menor en los costos totales a medida que aumenta el nivel de seguridad. Esto trae ventajas al servidor (especialmente para niveles de seguridad más altos).
Sin embargo, el cliente siempre está en una desventaja de costos cuando se usa el intercambio de claves ECDH-RSA
en lugar de RSA
. Suponiendo que soy un usuario egoísta que navega por la web, ¿no tendría más sentido para mí preferir siempre el intercambio de claves RSA
?