Estoy usando makepasswd
para generar un montón de contraseñas aleatorias en una VM.
Después de la actualización a Stretch/Debian 9, el script genera una o dos contraseñas y se detiene, o ninguna.
Parece que lleva bastante tiempo generar otra contraseña nuevamente.
Primera vez que lo llamo:
makepasswd
ndmBXpfp3
Genera inmediatamente una cadena aleatoria como se esperaba.
Segunda vez:
makepasswd
Y sigue ahí esperando... y esperando.
Respuesta1
Parece makepasswd
que se pasó de utilizar una API de openssl para generar números (pseudo)aleatorios a utilizar hoy en día una API basada en /dev/random
.
El problema es que las máquinas virtuales y las IoT (pueden) tener poca actividad y no generan suficiente entropía para satisfacer el script/ makepasswd
beber de/dev/random
Si bien intenté encontrar una opción para beber números aleatorios /dev/urandom
, no tiene ninguna.
Así que acabo de obtener una versión antigua de makepasswd
, ya que es un script en Perl, y apunté al script /opt/bin/makepasswd
en mi sistema; y el script ahora funciona como de costumbre generando las +100 contraseñas que necesito en segundos.
Como se puede ver en la fuente:
Nuevo makepasswd
:
my $buf = $RNG->bytes($bytes);
Viejo makepasswd
:
my $buf = Crypt::OpenSSL::Random::random_pseudo_bytes($bytes);
Curiosamente, los datos y la versión cerca de los derechos de autor no han cambiado, lo que me desvió por un tiempo.
En ambos:
$Program = 'makepasswd';
$Version = '1.10';
$Author = 'Rob Levin <[email protected]>';
$Date = "Monday, 7 April 1999 at 22:56 (UCT)";
$Copyright = '1997-1999';
Sin embargo, desdechangelog.Debian.gz
Convert from Crypt::OpenSSL::Random to Bytes::Random::Secure (closes:
#792535).
-- Colin Watson <[email protected]> Thu, 16 Jul 2015 11:45:20 +0100
Respuesta2
Otra solución alternativa, en lugar de modificar las fuentes de makepasswd, es instalar el demonio haveged
para acelerar el proceso de generación de claves. Para instalarlo:
sudo apt-get install haveged
Después de instalarlo, makepasswd
también funciona como debería.
El haveged
demonio ahora es necesario en máquinas virtuales e iOT (por ejemplo, Raspberry) donde la entropía esnormalmentebajo.
De Debian man haveged
:
NOMBRE
haveged
: genera números aleatorios y alimenta el dispositivo aleatorio de Linux.DESCRIPCIÓN
haveged
genera un flujo impredecible de números aleatorios recopilados de los efectos indirectos de eventos de hardware en el estado oculto del procesador (cachés, predictores de ramas, tablas de traducción de memoria, etc.) utilizando el algoritmo HAVEGE (recolección y expansión de entropía volátil de hardware). El algoritmo opera en el espacio del usuario, no se requiere ningún privilegio especial para acceder al sistema de archivos al flujo de salida.Linux agrupa la aleatoriedad para la distribución mediante las interfaces
/dev/random
y/dev/urandom
del dispositivo. Los mecanismos estándar para llenar el/dev/random
grupo pueden no ser suficientes para satisfacer la demanda de sistemas con grandes necesidades o interacción limitada del usuario. En esas circunstancias,haveged
se puede ejecutar como un demonio privilegiado para llenar el/dev/random
grupo siempre que el suministro de bits aleatorios/dev/random
caiga por debajo de la marca de nivel bajo del dispositivo.