Страница 1 из 3
генератор случайных чисел
Добавлено: 27 сен 2018, 15:21
Olej
Дело известное: /dev/ramdom
И это очень широко используется, даже если вы и не занимаетесь вовсе сложным математическим моделированием, система использует это для криптографирования, SSL/SSH ключей, при майнинге криптовалют и во многих других вещах...
Но гораздо менее известно (и мне тоже) что в качестве
задатчика для генератора могут использоваться самые разные источники, начиная от софтверных (это плохо), до аппаратных или полу-аппаратных.
Проверить что там у вас используется (и какого качества) можно выяснить так:
Код: Выделить всё
[olej@dell 09]$ rngd -ld
Unable to open file: /dev/hwrng
Failed to init entropy source 0: Hardware RNG Device
Unable to open file: /dev/tpm0
Failed to init entropy source 1: TPM RNG Device
Failed to init entropy source 2: Intel RDRAND Instruction RNG
Available entropy sources:
Вот так - у меня на ноутбуке нет аппаратных источников.
Обнаружилось это при анализе сервисов ОС:
Код: Выделить всё
[olej@dell 09]$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● NetworkManager-wait-online.service loaded failed failed Network Manager Wait Online
● rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
2 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
Код: Выделить всё
[olej@dell 09]$ sudo systemctl status rngd.service
[sudo] пароль для olej:
● rngd.service - Hardware RNG Entropy Gatherer Daemon
Loaded: loaded (/usr/lib/systemd/system/rngd.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2018-09-27 12:37:55 EEST; 1h 13min ago
Main PID: 774 (code=exited, status=1/FAILURE)
сен 27 12:37:50 dell.localdomain systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
сен 27 12:37:50 dell.localdomain rngd[774]: Failed to init entropy source 0: Hardware RNG Device
сен 27 12:37:50 dell.localdomain rngd[774]: Failed to init entropy source 1: TPM RNG Device
сен 27 12:37:50 dell.localdomain rngd[774]: Failed to init entropy source 2: Intel RDRAND Instruction RNG
сен 27 12:37:50 dell.localdomain rngd[774]: can't open any entropy source
сен 27 12:37:50 dell.localdomain rngd[774]: Maybe RNG device modules are not loaded
сен 27 12:37:55 dell.localdomain systemd[1]: rngd.service: Main process exited, code=exited, status=1/FAILURE
сен 27 12:37:55 dell.localdomain systemd[1]: rngd.service: Unit entered failed state.
сен 27 12:37:55 dell.localdomain systemd[1]: rngd.service: Failed with result 'exit-code'.
Re: генератор случайных чисел
Добавлено: 27 сен 2018, 15:25
Olej
Olej писал(а):
Но гораздо менее известно (и мне тоже) что в качестве задатчика для генератора могут использоваться самые разные источники, начиная от софтверных (это плохо), до аппаратных или полу-аппаратных.
Описано это интересно и внятно здесь:
Случайные числа в Linux(RNG) или как «наполнить» /dev/random и /dev/urandom.
В частности:
Havegd
В основе лежит алгоритм HAVAGE который генерирует энтропию на основе счётчиков и состояний процессора. В силу сложного, многоуровневого устройства процессоров, один и тот же код всегда выполняется за разное время и это не постоянство является основой для алгоритма HAVAGE.
На практике, это user space демон который как и rngd наполняет пул энтропии ядра через ioctl интерфейс /dev/random. при этом не нуждается в источнике энтропии как rngd.
Для centos пакет доступен из epel.
Re: генератор случайных чисел
Добавлено: 27 сен 2018, 15:30
Olej
Olej писал(а):
В частности:
...
Для centos пакет доступен из epel.
Но интереснее то, что:
Код: Выделить всё
[olej@dell 09]$ dnf list Havege*
Последняя проверка окончания срока действия метаданных: 17:38:56 назад, Ср 26 сен 2018 20:46:40.
Имеющиеся пакеты
haveged.i686 1.9.1-8.fc27 fedora
haveged.x86_64 1.9.1-8.fc27 fedora
haveged-devel.i686 1.9.1-8.fc27 fedora
haveged-devel.x86_64 1.9.1-8.fc27 fedora
Код: Выделить всё
[olej@dell 09]$ dnf info haveged
Имя : haveged
Версия : 1.9.1
Выпуск : 8.fc27
Архитектура : x86_64
Размер : 69 k
Источник : haveged-1.9.1-8.fc27.src.rpm
Репозиторий : fedora
Краткое опис : A Linux entropy source using the HAVEGE algorithm
URL : http://www.irisa.fr/caps/projects/hipsor/
Лицензия : GPLv3+
Описание : A Linux entropy source using the HAVEGE algorithm
:
: Haveged is a user space entropy daemon which is not dependent upon the
: standard mechanisms for harvesting randomness for the system entropy
: pool. This is important in systems with high entropy needs or limited
: user interaction (e.g. headless servers).
:
: Haveged uses HAVEGE (HArdware Volatile Entropy Gathering and Expansion)
: to maintain a 1M pool of random bytes used to fill /dev/random
: whenever the supply of random bits in /dev/random falls below the low
: water mark of the device. The principle inputs to haveged are the
: sizes of the processor instruction and data caches used to setup the
: HAVEGE collector. The haveged default is a 4kb data cache and a 16kb
: instruction cache. On machines with a cpuid instruction, haveged will
: attempt to select appropriate values from internal tables.
Код: Выделить всё
[olej@dell 09]$ sudo dnf install haveged
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 0:40:06 назад, Чт 27 сен 2018 13:49:34.
Зависимости разрешены.
===================================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
===================================================================================================================================
Установка:
haveged x86_64 1.9.1-8.fc27 fedora 69 k
Результат транзакции
===================================================================================================================================
Установка 1 Пакет
Объем загрузки: 69 k
Объем изменений: 189 k
Продолжить? [д/Н]: y
Загрузка пакетов:
haveged-1.9.1-8.fc27.x86_64.rpm 188 kB/s | 69 kB 00:00
-----------------------------------------------------------------------------------------------------------------------------------
Общий размер 91 kB/s | 69 kB 00:00
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
Подготовка : 1/1
Установка : haveged-1.9.1-8.fc27.x86_64 1/1
Запуск скриптлета: haveged-1.9.1-8.fc27.x86_64 1/1
Running as unit: run-r75ba53c29fdb4cbb8f3ef7762b643a07.service
Проверка : haveged-1.9.1-8.fc27.x86_64 1/1
Установлено:
haveged.x86_64 1.9.1-8.fc27
Re: генератор случайных чисел
Добавлено: 27 сен 2018, 15:33
Olej
Olej писал(а):
Но интереснее то, что:
Код: Выделить всё
[olej@dell 09]$ sudo systemctl status haveged
● haveged.service - Entropy Daemon based on the HAVEGE algorithm
Loaded: loaded (/usr/lib/systemd/system/haveged.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:haveged(8)
http://www.issihosts.com/haveged/
[olej@dell 09]$ sudo systemctl start haveged
[olej@dell 09]$ sudo systemctl status haveged
● haveged.service - Entropy Daemon based on the HAVEGE algorithm
Loaded: loaded (/usr/lib/systemd/system/haveged.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-09-27 14:30:58 EEST; 3s ago
Docs: man:haveged(8)
http://www.issihosts.com/haveged/
Main PID: 7236 (haveged)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/haveged.service
└─7236 /usr/sbin/haveged -w 1024 -v 1 --Foreground
сен 27 14:30:58 dell.localdomain systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm.
сен 27 14:30:58 dell.localdomain haveged[7236]: haveged: ver: 1.9.1; arch: x86; vend: GenuineIntel; build: (gcc 7.1.1 ITV); collect
сен 27 14:30:58 dell.localdomain haveged[7236]: haveged: cpu: (L4 VC); data: 32K (L2 L4 V); inst: 32K (L2 L4 V); idx: 22/40; sz: 32
сен 27 14:30:58 dell.localdomain haveged[7236]: haveged: tot tests(BA8): A:1/1 B:1/1 continuous tests(B): last entropy estimate 8.
сен 27 14:30:58 dell.localdomain haveged[7236]: haveged: fills: 0, generated: 0
Тест:
Код: Выделить всё
[olej@dell 09]$ cat /dev/random | rngtest -c100
rngtest 6
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rngtest: starting FIPS tests...
rngtest: bits received from input: 2000032
rngtest: FIPS 140-2 successes: 100
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 0
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=1.103; avg=11.139; max=16.288)Mibits/s
rngtest: FIPS tests speed: (min=42.105; avg=74.821; max=85.917)Mibits/s
rngtest: Program run time: 196864 microseconds
Теперь всё летает "в лёт"!
Устанавливаю на постоянкку (в автозагрузку):
Код: Выделить всё
[olej@dell 09]$ sudo systemctl enable haveged
Created symlink /etc/systemd/system/multi-user.target.wants/haveged.service → /usr/lib/systemd/system/haveged.service.
Re: генератор случайных чисел
Добавлено: 01 окт 2018, 20:04
Olej
Olej писал(а):
Но гораздо менее известно (и мне тоже) что в качестве задатчика для генератора могут использоваться самые разные источники, начиная от софтверных (это плохо), до аппаратных или полу-аппаратных.
И это очень и очень варьируется от одного оборудования к другому.
Вот как это выглядит (странно для меня
) на процессорной платформе Xeon:
Код: Выделить всё
[olej@xenix ~]$ inxi -c
CPU: Quad Core Intel Xeon L5420 (-MCP-) speed/min/max: 2000/2003/2499 MHz
Kernel: 4.18.10-200.fc28.x86_64 x86_64 Up: 5h 24m Mem: 3536.4/7909.2 MiB (44.7%)
Storage: 223.61 GiB (61.5% used) Procs: 270 Shell: bash 4.4.23 inxi: 3.0.24
Код: Выделить всё
[olej@xenix ~]$ rngd -l
Entropy sources that are available but disabled
4: NIST Network Entropy Beacon
Available and enabled entropy sources:
5: JITTER Entropy generator
И тест генератора - и по скорости и по качеству:
Код: Выделить всё
[olej@xenix ~]$ time cat /dev/random | rngtest -c10
rngtest 6
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rngtest: starting FIPS tests...
rngtest: bits received from input: 200032
rngtest: FIPS 140-2 successes: 10
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 0
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=15.020; avg=16.780; max=13980.852)Kibits/s
rngtest: FIPS tests speed: (min=116.302; avg=119.358; max=121.487)Mibits/s
rngtest: Program run time: 11641222 microseconds
real 0m11,644s
user 0m0,004s
sys 0m0,015s
Re: генератор случайных чисел
Добавлено: 15 сен 2019, 18:35
Olej
Энтропия (качество) генератора (-ов) случайных чисел оказывается чрезвычайно важным в процессах криптографирования, в частности, при обработке паролей пользователей в Linux, в /etc/shadow - см.
теневые пароли.
Re: генератор случайных чисел
Добавлено: 09 янв 2020, 14:34
Olej
Возвращаемся в тему в связи с:
сложность паролей в системе
Удалённый реальный VDS, виртуальный сервер под KVM...
Код: Выделить всё
root@277938:~# cat /proc/sys/kernel/random/entropy_avail
1018
Мало!
И непонятно вот:
Код: Выделить всё
root@277938:~# rngd -ld
-bash: rngd: команда не найдена
Re: генератор случайных чисел
Добавлено: 09 янв 2020, 14:37
Olej
Olej писал(а): ↑09 янв 2020, 14:34
И непонятно вот:
Теперь понятно:
Код: Выделить всё
root@277938:~# apt-file search rngtest
ns2-examples: /usr/share/doc/ns2/examples/tcl/test/test-output-rng/rngtest.gz
rng-tools: /usr/bin/rngtest
rng-tools: /usr/share/man/man1/rngtest.1.gz
rng-tools-debian: /usr/bin/rngtest
rng-tools-debian: /usr/share/man/man1/rngtest.1.gz
rng-tools5: /usr/bin/rngtest
rng-tools5: /usr/share/man/man1/rngtest.1.gz
Но тут присутствуют 2 пакета!:
Код: Выделить всё
root@277938:~# aptitude show rng-tools
Пакет: rng-tools
Версия: 2-unofficial-mt.14-1+b2
Состояние: не установлен
Приоритет: необязательный
Раздел: utils
Сопровождающий: Henrique de Moraes Holschuh <hmh@debian.org>
Архитектура: amd64
Размер в распакованном виде: 124 k
Зависит: libc6 (>= 2.14), udev (>= 0.053) | makedev (>= 2.3.1-77)
Конфликтует: intel-rng-tools
Заменяет: intel-rng-tools
Предоставляет: intel-rng-tools
Предоставляется: rng-tools-debian (2-unofficial-mt.14-3)
Описание: Daemon to use a Hardware TRNG
The rngd daemon acts as a bridge between a Hardware TRNG (true random number generator) such as the ones in some Intel/AMD/VIA chipsets, and the kernel's PRNG
(pseudo-random number generator).
It tests the data received from the TRNG using the FIPS 140-2 (2002-10-10) tests to verify that it is indeed random, and feeds the random data to the kernel entropy
pool.
This increases the bandwidth of the /dev/random device, from a source that does not depend on outside activity. It may also improve the quality (entropy) of the
randomness of /dev/random.
A TRNG kernel module such as hw_random, or some other source of true entropy that is accessible as a device or fifo, is required to use this package.
This is an unofficial version of rng-tools which has been extensively modified to add multithreading and a lot of new functionality.
Метки: interface::daemon, network::server, role::program
Код: Выделить всё
root@277938:~# aptitude show rng-tools5
Пакет: rng-tools5
Версия: 5-4
Состояние: не установлен
Приоритет: необязательный
Раздел: utils
Сопровождающий: Michael Stone <mstone@debian.org>
Архитектура: amd64
Размер в распакованном виде: 87,0 k
Зависит: libc6 (>= 2.14), libgcrypt20 (>= 1.8.0)
Конфликтует: rng-tools
Описание: Daemon to use a Hardware TRNG
The rngd daemon acts as a bridge between a Hardware TRNG (true random number generator) such as the ones in some Intel/AMD/VIA chipsets, and the kernel's PRNG
(pseudo-random number generator).
It tests the data received from the TRNG using the FIPS 140-2 (2002-10-10) tests to verify that it is indeed random, and feeds the random data to the kernel entropy
pool.
This increases the bandwidth of the /dev/random device, from a source that does not depend on outside activity. This may improve the behavior of systems which
experience low values in /proc/sys/kernel/random/entropy_avail It may also improve the quality (entropy) of the randomness of /dev/random.
A TRNG kernel module such as hw_random, or some other source of true entropy that is accessible as a device or fifo, is required to use this package. It will take
advantage of the RDRAND and RDSEED instructions included in some Intel & AMD CPUs.
Re: генератор случайных чисел
Добавлено: 09 янв 2020, 14:56
Olej
Olej писал(а): ↑09 янв 2020, 14:37
Но тут присутствуют 2 пакета!:
Не стал разбираться с расширениями процессора и командами RDRAND и RDSEED...
Код: Выделить всё
root@277938:~# apt install rng-tools
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
liblockfile1 lockfile-progs m4 procmail sendmail-base sendmail-cf sensible-mda
Для их удаления используйте «apt autoremove».
Следующие НОВЫЕ пакеты будут установлены:
rng-tools
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 43,1 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 124 kB.
Пол:1 http://mirror.timeweb.ru/debian buster/main amd64 rng-tools amd64 2-unofficial-mt.14-1+b2 [43,1 kB]
Получено 43,1 kB за 0с (643 kB/s)
Выбор ранее не выбранного пакета rng-tools.
(Чтение базы данных … на данный момент установлено 42708 файлов и каталогов.)
Подготовка к распаковке …/rng-tools_2-unofficial-mt.14-1+b2_amd64.deb …
Распаковывается rng-tools (2-unofficial-mt.14-1+b2) …
Настраивается пакет rng-tools (2-unofficial-mt.14-1+b2) …
Job for rng-tools.service failed because the control process exited with error code.
See "systemctl status rng-tools.service" and "journalctl -xe" for details.
invoke-rc.d: initscript rng-tools, action "start" failed.
● rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated)
Active: failed (Result: exit-code) since Thu 2020-01-09 14:53:18 MSK; 54ms ago
Docs: man:systemd-sysv-generator(8)
Process: 2649 ExecStart=/etc/init.d/rng-tools start (code=exited, status=1/FAILURE)
янв 09 14:53:17 277938.local systemd[1]: Starting rng-tools.service...
янв 09 14:53:17 277938.local rng-tools[2649]: Starting Hardware RNG entropy gatherer daemon: (Hardware RNG device inode not found)
янв 09 14:53:17 277938.local rng-tools[2649]: /etc/init.d/rng-tools: Cannot find a hardware RNG device to use.
янв 09 14:53:18 277938.local systemd[1]: rng-tools.service: Control process exited, code=exited, status=1/FAILURE
янв 09 14:53:18 277938.local systemd[1]: rng-tools.service: Failed with result 'exit-code'.
янв 09 14:53:18 277938.local systemd[1]: Failed to start rng-tools.service.
Обрабатываются триггеры для man-db (2.8.5-2) …
Обрабатываются триггеры для systemd (241-7~deb10u2) …
Не помогает!
Нет аппаратного источника!
Код: Выделить всё
root@277938:~# apt remove rng-tools
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
liblockfile1 lockfile-progs m4 procmail sendmail-base sendmail-cf sensible-mda
Для их удаления используйте «apt autoremove».
Следующие пакеты будут УДАЛЕНЫ:
rng-tools
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
После данной операции объём занятого дискового пространства уменьшится на 124 kB.
Хотите продолжить? [Д/н] y
(Чтение базы данных … на данный момент установлено 42722 файла и каталога.)
Удаляется rng-tools (2-unofficial-mt.14-1+b2) …
Обрабатываются триггеры для man-db (2.8.5-2) …
Re: генератор случайных чисел
Добавлено: 14 май 2021, 14:38
Olej
Olej писал(а): ↑09 янв 2020, 14:34
Возвращаемся в тему в связи с
Сервер
DELL PowerEdge R420
Код: Выделить всё
olej@R420:~$ rngd -ld
Команда «rngd» не найдена, но может быть установлена с помощью:
sudo apt install rng-tools # version 5-1ubuntu2, or
sudo apt install rng-tools-debian # version 2.1
sudo apt install rng-tools5 # version 5-4
Код: Выделить всё
olej@R420:~$ sudo apt install rng-tools
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
rng-tools
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 23,8 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 111 kB.
Пол:1 http://mirror.mirohost.net/ubuntu focal/universe amd64 rng-tools amd64 5-1ubuntu2 [23,8 kB]
Получено 23,8 kB за 0с (207 kB/s)
Выбор ранее не выбранного пакета rng-tools.
(Чтение базы данных … на данный момент установлено 353777 файлов и каталогов.)
Подготовка к распаковке …/rng-tools_5-1ubuntu2_amd64.deb …
Распаковывается rng-tools (5-1ubuntu2) …
Настраивается пакет rng-tools (5-1ubuntu2) …
Created symlink /etc/systemd/system/dev-hwrng.device.wants/rng-tools.service → /lib/systemd/system/rng-tools.service.
Обрабатываются триггеры для man-db (2.9.1-1) …
Обрабатываются триггеры для systemd (245.4-4ubuntu3.6) …
Код: Выделить всё
olej@R420:~$ rngd
Unable to open file: /dev/tpm0
can't open any entropy source
Maybe RNG device modules are not loaded
Код: Выделить всё
olej@R420:~$ systemctl status rng-tools
● rng-tools.service - Add entropy to /dev/random 's pool a hardware RNG
Loaded: loaded (/lib/systemd/system/rng-tools.service; enabled; vendor preset: enabled)
Active: inactive (dead)
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: read error
мая 14 14:56:25 R420 rngd[110791]: No entropy sources working, exiting rngd
мая 14 14:56:25 R420 systemd[1]: rng-tools.service: Succeeded.
Почему так не понимаю...