Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 12 ноя 2018, 20:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: генератор случайных чисел
Непрочитанное сообщениеДобавлено: 27 сен 2018, 15:21 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Дело известное: /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'.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: генератор случайных чисел
Непрочитанное сообщениеДобавлено: 27 сен 2018, 15:25 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Но гораздо менее известно (и мне тоже) что в качестве задатчика для генератора могут использоваться самые разные источники, начиная от софтверных (это плохо), до аппаратных или полу-аппаратных.

Описано это интересно и внятно здесь: Случайные числа в Linux(RNG) или как «наполнить» /dev/random и /dev/urandom.

В частности:
Цитата:
Havegd
В основе лежит алгоритм HAVAGE который генерирует энтропию на основе счётчиков и состояний процессора. В силу сложного, многоуровневого устройства процессоров, один и тот же код всегда выполняется за разное время и это не постоянство является основой для алгоритма HAVAGE.

На практике, это user space демон который как и rngd наполняет пул энтропии ядра через ioctl интерфейс /dev/random. при этом не нуждается в источнике энтропии как rngd.

Для centos пакет доступен из epel.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: генератор случайных чисел
Непрочитанное сообщениеДобавлено: 27 сен 2018, 15:30 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
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


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: генератор случайных чисел
Непрочитанное сообщениеДобавлено: 27 сен 2018, 15:33 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
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.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: генератор случайных чисел
Непрочитанное сообщениеДобавлено: 01 окт 2018, 20:04 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Но гораздо менее известно (и мне тоже) что в качестве задатчика для генератора могут использоваться самые разные источники, начиная от софтверных (это плохо), до аппаратных или полу-аппаратных.

И это очень и очень варьируется от одного оборудования к другому.
Вот как это выглядит (странно для меня :-o ) на процессорной платформе 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


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.083s | 15 Queries | GZIP : On ]