makepasswd не работает должным образом в Debian Stretch

makepasswd не работает должным образом в Debian Stretch

Я использую его makepasswdдля генерации набора случайных паролей в виртуальной машине.

После обновления до Stretch/Debian 9 скрипт либо генерирует один или два пароля и останавливается, либо не генерирует вообще.

Похоже, что на генерацию нового пароля уходит довольно много времени.

Первый раз звоню:

makepasswd
ndmBXpfp3

Как и ожидалось, он немедленно генерирует случайную строку.

Второй раз:

makepasswd

И он продолжает ждать... и ждать.

решение1

Похоже, makepasswdчто использование API openssl для генерации (псевдо)случайных чисел было изменено на использование API на основе /dev/random.

Проблема в том, что виртуальные машины и интернет вещей (могут) иметь низкую активность и не генерировать достаточно энтропии для выполнения сценария/ makepasswdвыпивания/dev/random

Хотя я и пытался найти опцию, позволяющую ему пить случайные числа из /dev/urandom, у него ее не было.

Поэтому я просто скачал старую версию makepasswd, так как это скрипт Perl, и указал скрипту путь к /opt/bin/makepasswdмоей системе; теперь скрипт работает как обычно, генерируя +100 нужных мне паролей за считанные секунды.

Как видно из источника:

Новый makepasswd:

 my $buf = $RNG->bytes($bytes);

Старый makepasswd:

 my $buf = Crypt::OpenSSL::Random::random_pseudo_bytes($bytes);

Интересно, что данные и версия рядом с авторскими правами не были изменены, что на некоторое время сбило меня с толку.

В обоих случаях:

$Program        = 'makepasswd';
$Version        = '1.10';
$Author         = 'Rob Levin <[email protected]>';
$Date           = "Monday, 7 April 1999 at 22:56 (UCT)";
$Copyright      = '1997-1999';

Однако, изchangelog.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

решение2

Другим альтернативным решением, вместо изменения исходников makepasswd, является установка демона havegedдля ускорения процесса генерации ключей. Чтобы установить его:

sudo apt-get install haveged

После установки makepasswdтоже работает как надо.

Демон havegedтеперь требуется в виртуальных машинах и устройствах Интернета вещей (например, Raspberry), где энтропияобычнонизкий.

Из Debian man haveged:

ИМЯ
haveged- Генерация случайных чисел и передача их на случайное устройство Linux.

DESCRIPTION
haveged генерирует непредсказуемый поток случайных чисел, собранных из косвенных эффектов аппаратных событий на скрытое состояние процессора (кэши, предикторы ветвлений, таблицы трансляции памяти и т. д.) с использованием алгоритма HAVEGE (HArdware Volatile Entropy Gathering and Expansion). Алгоритм работает в пространстве пользователя, для доступа файловой системы к выходному потоку не требуется специальных привилегий.

Linux собирает случайность для распределения интерфейсами устройств /dev/randomи /dev/urandom . Стандартные механизмы заполнения /dev/randomпула могут быть недостаточными для удовлетворения спроса на системах с высокими потребностями или ограниченным взаимодействием с пользователем. В таких обстоятельствах haveged может быть запущен как привилегированный демон для заполнения /dev/randomпула всякий раз, когда запас случайных битов в /dev/randomпадает ниже нижней отметки устройства.

Связанный контент