Un grupo DH se define por un módulo principal y un generador. El módulo principal es un poco caro de generar, por lo que OpenSSH no lo hará de forma general. En su lugar, sshd
, al recibir una conexión, utilizará uno de los grupos en los archivos /etc/ssh/moduli
. Ese archivo contiene módulos pre-generados de varios tamaños. Puede usar el que se proporciona con OpenSSH o generar el suyo propio con ssh-keygen
; vea la página de manual (no hay ningún problema de seguridad al usar el mismo grupo que otras personas, pero sin embargo, para algunos Por razones psicológicas, algunos administradores de sistemas experimentan una sensación de mayor seguridad cuando generan sus propios módulos).
El proceso de selección real es, en el código fuente de OpenSSH, en la función choose_dh()
en el archivo dh.c
. En términos generales, si el cliente desea al menos min bits, a lo sumo max bits, y preferiblemente n bits, entonces el servidor elegirá entre los módulos en el rango min..max ; intentará obtener el módulo más pequeño que exceda de n y, si no hay ninguno, el módulo más grande que tiene (aún en el rango min..max , por supuesto ). Si el servidor encuentra varios módulos de la misma longitud "óptima", selecciona uno al azar. Si el servidor no conoce ningún módulo en el rango min..max , la conexión falla.
El /etc/ssh/moduli
predeterminado, al menos en mi servidor, parece tener módulos de tamaño de 1023 a 8191 bits.