Recomendaría que las personas dejen de usar pwgen: su principal interés era generar "contraseñas recordables por humanos", pero mostró múltiples vulnerabilidades al hacer exactamente eso. Y usarlo para generar cadenas completamente aleatorias tampoco es tan útil.
Escribí un artículo detallado sobre ese mismo tema, pero básicamente, lo esencial es usar el programa de dados (o, si te gustan los dados, el sistema de dados real ) o xkcdpass . Para generar contraseñas fuertes y memorables, generalmente uso dados con el siguiente archivo de configuración:
[diceware]
caps = off
delimiter = "-"
wordlist = en_eff
Ejemplos:
$ diceware
turkey-eligibly-underwire-recite-lifter-wasp
$ diceware
lend-rubdown-cornflake-tint-shawl-ozone
$ diceware
syndrome-ramp-cresting-resolved-flinch-veneering
$ diceware
alto-badass-eclipse-surplus-rudder-quit
Apago las mayúsculas y los espacios porque generan ruidos audibles distintos que un atacante podría aprovechar. El -
delimitador es un mal menor: sería mejor no usar ningún separador y la en_eff
lista de palabras está especialmente diseñada para ese propósito. Pero me resulta más fácil comunicar y compartir contraseñas cuando tienen algún separador.
Para generar una contraseña completamente aleatoria, uso la siguiente función de shell:
# secure password generator or, as dkg puts it:
# high-entropy compact printable/transferable string generator
# a password generator would be pwqgen or diceware
pwg() {
ENTROPY=${1:-20} # in bytes
# strip possible newlines if output is wrapped and trailing = signs as they add nothing to the password's entropy
head -c $ENTROPY /dev/random | base64 | tr -d '\n='
echo
}
Lo menciono porque creo que es importante memorizar menos contraseñas y en lugar de depender de un gestor de contraseñas para almacenar grandes cadenas que son difíciles de adivinar. En el artículo mencionado anteriormente y en la revisión de mi administrador de contraseñas se explican más detalles sobre la razón detrás de esas opciones .