DHE de 1024 bits vs RSA de 2048 bits

9

Actualmente con apache / mod_ssl, si DHE está habilitado, se utilizará una clave efímera de 1024 bits. Encontré la siguiente cita en blog de Adam Langley :

  

Lo ideal sería que el grupo DH coincida o supere el tamaño de la clave RSA, pero el DHE de 1024 bits es posiblemente mejor que el RSA directo de 2048 bits, por lo que puede hacerlo si lo desea.

Por lo tanto, parece que aboga por algo como DHE-RSA-AES256-SHA con claves DH efímeras de 1024 bits sobre AES256-SHA con una clave RSA de 2048 bits. Según tengo entendido, el DH de 1024 bits (efímero o no) es de seguridad comparable al RSA de 1024 bits. ¿Por qué haría tal recomendación? ¿Valora tanto el secreto a futuro que ofrece DHE?

    
pregunta safsaf32 23.09.2013 - 14:03
fuente

2 respuestas

16

La pregunta tiene dos caras:

  • Perfect Forward Secrecy : mediante el uso de una suite de cifrado "DHE", realmente encripta los datos con respecto a una clave privada DH que nunca se almacena en ningún disco . Para cualquier sesión SSL dada, el cifrado se puede descifrar si el atacante realiza un cifrado de la clave pública utilizada para el cifrado (DH para un conjunto de cifrado DHE, RSA para un conjunto de cifrado RSA), o si el atacante Roba una copia de la clave privada. La última aparición es en realidad mucho más probable en la práctica para un conjunto de cifrado basado en RSA; y el objetivo de PFS es eliminar esa amenaza.

  • RSA vs Diffie-Hellman: por el momento, los mejores métodos conocidos para romper RSA y DH implican la solución de dos problemas difíciles, factorización de enteros y logaritmo discreto respectivamente. Sucede que para ambos problemas, el algoritmo más rápido conocido es el Tamiz de campo de número general (aunque inicialmente es un algoritmo de factorización, un variante de GNFS se puede aplicar a logaritmo discreto). Para complejidad asintótica , RSA y DH son por lo tanto de una dureza equivalente cuando el módulo DH tiene el mismo tamaño que el módulo RSA.

    Sin embargo, en términos prácticos, DH es un poco más difícil. GNFS incluye varias fases, las dos principales son el tamiz y luego la reducción lineal . Para un módulo grande, la reducción lineal se convierte en el cuello de botella debido al tamaño total de la matriz. Para un tamaño de módulo dado, obtendrá el mismo número de elementos en las dos matrices (la de RSA y la de DH), pero los elementos de la matriz son bits simples en el caso de RSA, vs enteros módulo p en el caso de DH. Por lo tanto, la matriz DH es más grande.

    No hará que n -bit DH sea "difícil" como 2n -bit RSA, sin embargo. Si miramos los registros, vemos 768 bits para RSA, 530 bits para DH; y el caso DH utilizó menos potencia bruta. Además, no está completamente justificado comparar la dureza de 1024 bits DH con la dureza de 2048 bits RSA, ya que ambos están en la zona "no se puede romper".

Un resumen de todo esto es así: mientras que 1024 bits DH es algo más fuerte (teóricamente) que 1024 bits RSA, la diferencia es leve (por ejemplo, 1024 bits DH es como RSA de 1200 bits como máximo). Pero en términos prácticos , el riesgo de robo de clave privada, para una clave no efímera, reduce el riesgo criptoanalítico de cualquier RSA o DH de 1024 bits o más; en ese sentido, PFS es imprescindible y DHE con una clave DH de 1024 bits es mucho más seguro que los conjuntos de cifrado basados en RSA, independientemente del tamaño de la clave RSA.

    
respondido por el Tom Leek 23.09.2013 - 15:08
fuente
5

Concuerda con todo lo que dijo Tom Leek, pero algunos puntos más a considerar:

  • el mod_ssl reciente admite parámetros DH mayores que 1024 y los anteriores pueden ser parcheados: enlace (actualizado)

  • si necesita (o desea) cumplir con los requisitos del gobierno de EE. UU., el NIST Special Pub 800-57 (en csrc.nist.gov) a partir del mes pasado requiere un mínimo de 2048 para los algoritmos basados en enteros RSA, DSA y DH (versus 224 ECC, y hash y 112 simétricos).

  • si (puede) tener clientes Java, el Java Suncle (muy común), y creo que también OpenJDK (estrechamente vinculado), hasta el actual 7, no maneja DH en 1024 bits. Para ser exactos, implementa los tamaños DSA originales (FIPS 186-0) de P 512 a 1024 por 64 y Q 160, no las mejoras 2048 / 224,256 y 3072/256 de FIPS 186-3, y por ningún motivo impone los mismos límites en DH. He visto una entrada de bugs.java.com que dice que esto se solucionará en Java 8, pero Google no lo encuentra. Ver también enlace OTOH Suncle Java 7 (y 6 si agrega un proveedor de ECC) implementa ECDH correctamente y, por defecto, le da preferencia a las suites de ECDHE sobre DHE, por lo tanto, si su servidor admite DH-2048 y ECDH, está bien. (Para clientes web en general, ECDH P-256 parece mejor.)

respondido por el dave_thompson_085 06.02.2014 - 08:34
fuente

Lea otras preguntas en las etiquetas