Si openssl
usa una gran cantidad de CPU, entonces no está bloqueado esperando "entropía". OpenSSL es realmente sensato a ese respecto, y utiliza un PRNG criptográficamente seguro para extender una inicial inicial en tantos bits como sea necesario .
Cuando utiliza dhparam
, OpenSSL no solo genera parámetros DH; También quiere afirmar su estatus social, teniendo cuidado de usar para el módulo el llamado "prime prime", que es inútil para la seguridad pero requiere mucho más esfuerzo computacional. Un "primo fuerte" es un primo p tal que ( p -1) / 2 también es primo. El algoritmo de primera generación se ve así:
- Genera un entero impar aleatorio p .
- Probar si p es primo. Si no, haz un bucle.
- Probar si ( p -1) / 2 es primo. Si no, haz un bucle.
Los enteros aleatorios impares de 4096 bits tienen una probabilidad aproximada de 1/2000 para ser primos, y como ambos p y ( p -1) / 2 deben ser primos, esto necesitará en promedio generar y probar la primalidad de 4 millones de números primos impares. Esto está destinado a tomar algún tiempo.
Cuando se pasa de 2048 bits a 4096 bits, la densidad de los primos fuertes se divide entre 4, y las pruebas de primalidad también serán aproximadamente 4 veces más lentas, por lo que si la generación de un módulo DH de 2048 bits toma 1 hora en promedio , la misma máquina con el mismo software utilizará un promedio de 16 horas para un módulo DH de 4096 bits. Esto es solo promedios ; Cada generación individual puede ser más rápida o más lenta, dependiendo de tu suerte.
La solución razonable sería agregar la opción -dsaparam
.
openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
Esta opción indica a OpenSSL que produzca parámetros DH "similares a DSA ( p es tal que p -1 es un múltiplo de un primo más pequeño q , y el generador tiene un orden multiplicativo q ). Esto es considerablemente más rápido porque no necesita anidar las pruebas de primalidad y, por lo tanto, solo se generarán y probarán miles, no millones, de candidatos.
Por lo que saben los académicos, los parámetros similares a DSA para DH son igualmente seguros; no hay una ventaja real de usar "primos fuertes" (la terminología es tradicional y en realidad no implica alguna fuerza adicional).
De manera similar, también puede usar un módulo de 2048 bits, que ya está muy lejos en la "zona de no se puede romper". El módulo de 4096 bits hará que los cálculos de DH sean más lentos (lo cual no es un problema real para una VPN; estos ocurren solo al inicio de la conexión), pero en realidad no mejorarán la seguridad.
Hasta cierto punto, un módulo de 4096 bits puede atraer a los auditores, pero es poco probable que los auditores estén muy impresionados con una Raspberry-Pi, que es demasiado barata de todos modos.