Ese archivo no depende de ningún certificado o clave privada. Tampoco es secreto. Incluso se puede compartir entre varios servidores que no necesariamente confían o ni siquiera se conocen entre sí.
El archivo dh1024.pem
contiene parámetros Diffie-Hellman . El intercambio de claves DH es un algoritmo jugado en un grupo finito ; a saber, enteros modulo a prime p . Para un DH exitoso:
- Hay parámetros conocidos p (un gran primo) y g (un entero convencional en el rango de 2 a p-2 , conocido como el generador ).
- Party A genera un valor secreto aleatorio a , calcula ga mod p , y se lo envía a la parte B .
- Party B genera un valor secreto aleatorio b , calcula gb mod p , y se lo envía a la parte A .
- Party A calcula ( g b ) a mod p (elevando el valor recibido de B a su exponente secreto a ).
- computador B ( g a ) b mod p (elevando el valor recibido de A a su exponente secreto b ).
La magia de DH es que tanto A como B terminan con el mismo valor, que el intruso no puede volver a calcular a partir de los dos valores que se enviaron a través de los cables.
En todo esto, los valores de p y g son los "parámetros" y deben ser conocidos por ambas partes; Pero no son secretos. La seguridad está garantizada siempre y cuando:
-
p es lo suficientemente grande (al menos 1024 bits; podría decirse que 2048 bits sería mejor).
-
p no se generó con una "estructura especial" que hace más fácil logaritmo discreto .
-
g genera un subgrupo de enteros modulo p cuyo tamaño es un múltiplo de un primo suficientemente grande (el orden de g módulo p es el entero más pequeño r ≥ 1 tal que gr mod p = 1; se requiere que el mayor divisor principal de r tenga una longitud de al menos 160 bits, preferiblemente 256 bits o más).
Todo el mundo podría usar los mismos parámetros; pero muchas personas prefieren generar sus propios parámetros, solo para asegurarse de que sus parámetros no fueron "cocinados". Esto es lo que hace build-dh
. El archivo resultante ( dh1024.pem
) contiene p y g , pero nada más. Estos valores no son secretos. No dependen de ningún elemento externo, ni certificado, clave privada o cualquier otra cosa.