Я бы порекомендовал людям прекратить использовать pwgen - его основным интересом было создание «запоминаемых паролей», но при этом он обнаружил множество уязвимостей. И использовать его для генерации совершенно случайных строк тоже не очень полезно.
Я написал подробную статью на эту тему, но, по сути, суть ее в том, чтобы использовать программу diceware (или, если вам нравится игра в кости, реальную систему diceware) или xkcdpass. Для генерации надежных запоминающихся паролей я обычно использую diceware со следующим файлом конфигурации:
[diceware]
caps = off
delimiter = "-"
wordlist = en_eff
Примеры:
$ 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
Я отключаю заглавные буквы и пробелы, потому что они генерируют различные слышимые шумы, которые могут быть использованы злоумышленником. -
разделитель является меньшим злом: было бы лучше не использовать любой разделитель и en_eff
словник специально созданным для этой цели. Но мне легче общаться и обмениваться паролями, когда у них есть какой-то разделитель.
Для генерации совершенно случайного пароля я использую следующую функцию оболочки:
# 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
}
Я упоминаю об этом, потому что считаю, что важно запоминать меньше паролей и вместо этого полагаться на менеджер паролей для хранения больших строк, которые трудно угадать. Более подробная информация о причинах такого выбора объясняется в вышеупомянутой статье и моем обзоре менеджеров паролей.