haveged linux что это

Содержание

Synopsis

Description

In Linux, the hardware events that are the ultimate source of any random number sequence are pooled by the /dev/random device for later distribution via the device interface. The standard mechanism of harvesting randomness for the pool may not be sufficient to meet demand, especially on those systems with high needs or limited user interaction. Haveged provides a daemon to fill /dev/random whenever the supply of random bits in /dev/random falls below the low water mark of the device.

Haveged also provides a direct file system interface to the collection mechanism that is also useful in other circumstances where access to the dev/random interface is either not available or inappropriate.

In either case, haveged uses HAVEGE to maintain a 1M pool of random bytes consumed by the interface. The principle inputs to havaged 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.

Although CISC architectures appear insensitive to tuning parameters, there is no guarantee that manual tuning of the algorithm may not be required under some circumstances. The output of the HAVEGE random number generator should be verified on any installation before the haveged is put into production.

Options

n = 1 Display configuration info and terminate.

Diagnostics

Cannot fork into the background

Could not open sample file for writing.

Could not write data to the sample file.

Unable to read /proc/sys/kernel/random/poolsize

Invalid data or instruction cache size.

Could not open /dev/random for read-write.

to write to /proc/sys/kernel/random/write_wakeup_threshold

Источник

Пакет: haveged (1.9.1-5+deb9u1)

Ссылки для haveged

Ресурсы Debian:

Исходный код haveged:

Сопровождающий:

Внешние ресурсы:

Подобные пакеты:

источник энтропии на основе алгоритма HAVEGE

haveged — служба энтропии, работающая в пользовательском пространстве, которая не зависит от стандартных механизмов сбора случайных данных в системный пул энтропии. Это важно в системах с высокими энтропийными потребностями или ограниченным взаимодействием с пользователем (например, в серверах).

haveged использует HAVEGE (HArdware Volatile Entropy Gathering and Expansion) для поддержания пула из миллиона случайных байтов, используемого для пополнения /dev/random, когда традиционные источники не дают достаточно данных и число случайных бит в /dev/random опускается ниже предельного уровня.

Более подробную информацию о HAVEGE можно найти по адресу: http://www.irisa.fr/caps/projects/hipsor/

Теги: Реализовано на: C, Пользовательский интерфейс: Демон, Роль: Программа, Область: scope::utility, security::cryptography

Другие пакеты, относящиеся к haveged

Загрузка haveged

Загрузить для всех доступных архитектур
Архитектура Размер пакета В установленном виде Файлы
amd64 32,6 Кб 76,0 Кб [список файлов]
arm64 32,4 Кб 76,0 Кб [список файлов]
armel 33,9 Кб 79,0 Кб [список файлов]
armhf 32,9 Кб 71,0 Кб [список файлов]
i386 32,7 Кб 75,0 Кб [список файлов]
mips 32,8 Кб 76,0 Кб [список файлов]
mips64el 32,7 Кб 81,0 Кб [список файлов]
mipsel 32,9 Кб 76,0 Кб [список файлов]
ppc64el 32,7 Кб 124,0 Кб [список файлов]
s390x 32,5 Кб 80,0 Кб [список файлов]

Эта страница также доступна на следующих языках (Как установить язык по умолчанию):

Чтобы сообщить о проблеме, связанной с веб-сайтом, отправьте сообщение (на английском) в список рассылки debian-www@lists.debian.org. Прочую контактную информацию см. на странице Debian Как с нами связаться.

Источник

Использование простого демона энтропии Haveged

Кратко об энтропии и случайных данных

Алгоритм Linux PRNG (Linux pseudo random number generator, генератор псевдослучайных чисел Linux, ГСЧ) разработан специально для генерирования случайностей из аппаратных прерываний. Аппаратные (или внешние) прерывания – это события, исходящие от внешних источников, – клавиатуры, мыши, I/O диска или сети, – в произвольный момент. Случайность, созданная PRNG, в основном необходима для функционирования механизмов шифрования (SSL/TLS), но этим сфера её применения не ограничивается. Даже простые программы (например, виртуальные карточные игры) зависят от энтропии.

В Linux есть два общих устройства: /dev/random и /dev/urandom. Случайность создаётся инструментом /dev/random (он предназначен для блокирования) и ожидает соответствующего уровня энтропии для своего вывода. Если энтропия находится на достаточном уровне, /dev/urandom произведёт такой же уровень случайности; однако /dev/urandom продолжит генерировать случайные данные (поскольку является неблокирующим устройством) даже если пул энтропии иссякает. Это может привести к снижению качества случайностей и увеличивает шансы повтора предыдущих данных. Снижение уровня энтропии очень опасно для производственного сервера, особенно если этот сервер выполняет криптографические функции. Для примера предположим, что существует облачный сервер, на котором запущены следующие демоны (все они используют SSL/TLS или блочные шифры):

Если какому-либо из этих демонов понадобится случайность в тот момент, когда энтропия иссякла, он перейдёт в режим ожидания, что может вызвать чрезмерные задержки в работе приложения. И это ещё не всё: многие современные приложения в такой ситуации могут либо обратиться к собственным случайным данным, созданным при инициализации программы, либо использовать /dev/urandom, чтобы избежать блокирования, что станет причиной снижения надежности случайных данных. Это может отрицательно повлиять на безопасность соединений и увеличивает шансы криптографической атаки.

Пользовательское решение для заполнения пулов энтропии

Linux уже предоставляет довольно качественные случайные данные при помощи вышеописанного ПО, но поскольку автономные компьютеры обычно не имеют клавиатуры или мыши, генерируемая на них энтропия гораздо ниже, поскольку создаётся диском или I/O сети. Очень немногие автономные машины имеют специальное аппаратное обеспечение для ГСЧ, поэтому существует несколько пользовательских решений для создания дополнительной энтропии при помощи аппаратных прерываний, т.к. некоторые устройства (например, звуковые и видеокарты) создают больше так называемого «шума», чем жёсткий диск. К сожалению, даже это не решает проблему виртуальных серверов. Но тут на помощь приходит инструмент haveged. Основанный на алгоритме HAVEGE (а ранее – на его библиотеке), haveged позволяет генерировать случайные данные, руководствуясь изменениями во времени выполнения кода на процессоре. Так как обработать один и тот же блок кода в течение точно такого же времени почти невозможно (даже в той же среде на том же оборудовании), сроки выполнения одной или нескольких программ отлично подходят для генерации случайных данных. Инструмент haveged создаёт источник случайных данных с учетом различий в счётчика времени процессора (TSC) после неоднократного выполнения цикла. Сначала может показаться, что в конечном итоге он может создать предсказуемые данные; одна из целей данного руководства – опровергнуть это заблуждение.

Установка haveged в Debian/Ubuntu

Установить haveged в Debian или Ubuntu можно при помощи простой команды:

# apt-get install haveged

Примечание: Если этот пакет недоступен из репозитория, придётся скомпилировать его из исходников (об этом – в отдельном разделе руководства).

После установки пакета можно просто отредактировать конфигурационный файл, расположенный в /etc/default/haveged; установите следующие опции (если они не установлены по умолчанию):

В завершение настройте автоматический запуск программы:

# update-rc.d haveged defaults

Установка haveged в RHEL/CentOS/Fedora

Чтобы установить haveged в системы RHEL или CentOS, нужно добавить репозиторий EPEL, руководствуясь инструкциями официального сайта.

Примечание: Пользователям Fedora не нужно добавлять EPEL.

Установив и включив EPEL, установите haveged при помощи команды:

# yum install haveged

Пользователи Fedora могут сразу запустить эту команду. Как правило, стандартные настройки не нуждаются в редактировании, потому просто настройте автоматический запуск haveged при загрузке системы:

# chkconfig haveged on

Установка haveged из исходного кода

Не все системы имеют доступ к предварительно упакованным двоичным файлам haveged. В таком случае нужно использовать tarball исходного кода. На самом деле, это довольно просто. Сначала нужно посетить страницу загрузки и выбрать последний релиз тарбола (на момент написания статьи это 1.7). Загрузив тарбол, распакуйте его в текущий рабочий каталог.

# tar zxvf /path/to/haveged-x.x.tar.gz

Теперь можно скомпилировать и установить его:

По умолчанию haveged устанавливается с префиксом /usr/local, потому нужно добавить в /etc/rc.local (или аналог в вашей системе) следующее, чтобы настроить автоматический запуск программы при загрузке системы:

Примечание: В случае необходимости отредактируйте путь.

Запустите ту же команду вручную как root, чтобы запустить демон без перезагрузки системы (или же просто перезапустите систему, если вы используете Windows-подобную систему).

Тестирование энтропии и качества случайных данных

После установки haveged пул энтропии системы будет заполнен случайными данными. Однако невозможно достичь надежного уровня безопасности, если слепо доверять установке, потому следует протестировать сгенерированные случайные данные. В этой проверке применяется метод FIPS-140, используемый rngtest и доступный в большинстве основных дистрибутивов Linux под разными именами, одно из которых – rng-tools:

На экране появится следующий вывод:

rngtest 2-unofficial-mt.14
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: 20000032
rngtest: FIPS 140-2 successes: 999
rngtest: FIPS 140-2 failures: 1
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: 1
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.139; avg=22.274; max=19073.486)Mibits/s
rngtest: FIPS tests speed: (min=19.827; avg=110.859; max=115.597)Mibits/s
rngtest: Program run time: 1028784 microseconds

Небольшое количество неудачных результатов допускается в любом генераторе случайных чисел, но в среднем hovered выдаёт 998-1000 успешных чисел.

Чтобы протестировать доступную энтропию, запустите команду:

Демон haveged заполнит пул энтропии, как только значение доступных битов приблизится к 1024. Таким образом, хотя это число будет колебаться, оно не опустится ниже 1000 или около того, если только вы не используете слишком много случайных данных (для генерации ключей SSH, и т.д.).

Источник

Пакет: haveged (1.9.14-1)

Ссылки для haveged

Ресурсы Debian:

Исходный код haveged:

Сопровождающие:

Внешние ресурсы:

Подобные пакеты:

источник энтропии на основе алгоритма HAVEGE

haveged — служба энтропии, работающая в пользовательском пространстве, которая не зависит от стандартных механизмов сбора случайных данных в системный пул энтропии. Это важно в системах с высокими энтропийными потребностями или ограниченным взаимодействием с пользователем (например, в серверах).

haveged использует HAVEGE (HArdware Volatile Entropy Gathering and Expansion) для поддержания пула из миллиона случайных байтов, используемого для пополнения /dev/random, когда традиционные источники не дают достаточно данных и число случайных бит в /dev/random опускается ниже предельного уровня.

Более подробную информацию о HAVEGE можно найти по адресу: http://www.irisa.fr/caps/projects/hipsor/

Теги: Реализовано на: C, Пользовательский интерфейс: Демон, Роль: Программа, Область: scope::utility, security::cryptography

Другие пакеты, относящиеся к haveged

Загрузка haveged

Загрузить для всех доступных архитектур
Архитектура Размер пакета В установленном виде Файлы
alpha (неофициальный перенос) 39,2 Кб 95,0 Кб [список файлов]
amd64 38,7 Кб 90,0 Кб [список файлов]
arm64 38,2 Кб 90,0 Кб [список файлов]
armel 39,1 Кб 89,0 Кб [список файлов]
armhf 38,3 Кб 81,0 Кб [список файлов]
hppa (неофициальный перенос) 38,4 Кб 86,0 Кб [список файлов]
i386 39,0 Кб 89,0 Кб [список файлов]
ia64 (неофициальный перенос) 42,0 Кб 108,0 Кб [список файлов]
m68k (неофициальный перенос) 38,2 Кб 85,0 Кб [список файлов]
mips64el 38,6 Кб 92,0 Кб [список файлов]
mipsel 38,6 Кб 87,0 Кб [список файлов]
ppc64 (неофициальный перенос) 39,2 Кб 126,0 Кб [список файлов]
ppc64el 39,4 Кб 126,0 Кб [список файлов]
riscv64 (неофициальный перенос) 37,7 Кб 87,0 Кб [список файлов]
s390x 38,1 Кб 90,0 Кб [список файлов]
sh4 (неофициальный перенос) 39,8 Кб 86,0 Кб [список файлов]
sparc64 (неофициальный перенос) 37,8 Кб 97,0 Кб [список файлов]
x32 (неофициальный перенос) 38,5 Кб 89,0 Кб [список файлов]

Эта страница также доступна на следующих языках (Как установить язык по умолчанию):

Чтобы сообщить о проблеме, связанной с веб-сайтом, отправьте сообщение (на английском) в список рассылки debian-www@lists.debian.org. Прочую контактную информацию см. на странице Debian Как с нами связаться.

Источник

How to Setup Additional Entropy for Cloud Servers Using Haveged

By Salvatore LaMendola

Published on June 6, 2013

Brief Introduction to Entropy and Randomness

The Linux pseudo random number generator (PRNG) is a special device that generates randomness from hardware interrupts (keyboard, mouse, disk/network I/O) and other operating system sources. This randomness is used mostly for encryption like SSL/TLS, but also has many other uses. Even something as simple as a program to roll a pair of virtual dice depends on entropy for good quality randomness.

When Entropy Pools Run Dry

There are two general random devices on Linux: /dev/random and /dev/urandom. The best randomness comes from /dev/random, since it’s a blocking device, and will wait until sufficient entropy is available to continue providing output. Assuming your entropy is sufficient, you should see the same quality of randomness from /dev/urandom; however, since it’s a non-blocking device, it will continue producing “random” data, even when the entropy pool runs out. This can result in lower quality random data, as repeats of previous data are much more likely. Lots of bad things can happen when the available entropy runs low on a production server, especially when this server performs cryptographic functions. For example, let’s say you have a cloud server running the following daemons (all using SSL/TLS or block ciphers):

Should any of these daemons require randomness when all available entropy has been exhausted, they may pause to wait for more, which can cause excessive delays in your application. Even worse, since most modern applications will either resort to using its own random seed created at program initialization, or to using /dev/urandom to avoid blocking, your applications will suffer from lower quality random data. This can affect the integrity of your secure communications, and can increase the chance of cryptanalysis on your private data.

The Userland Solution for Populating Entropy Pools

Linux already gets very good quality random data from the aforementioned hardware sources, but since a headless machine usually has no keyboard or mouse, there is much less entropy generated. Disk and network I/O represent the majority of entropy generation sources for these machines, and these produce very sparse amounts of entropy. Since very few headless machines like servers or cloud servers/virtual machines have any sort of dedicated hardware RNG solution available, there exist several userland solutions to generate additional entropy using hardware interrupts from devices that are “noisier” than hard disks, like video cards, sound cards, etc. This once again proves to be an issue for servers unfortunately, as they do not commonly contain either one. Enter haveged. Based on the HAVEGE principle, and previously based on its associated library, haveged allows generating randomness based on variations in code execution time on a processor. Since it’s nearly impossible for one piece of code to take the same exact time to execute, even in the same environment on the same hardware, the timing of running a single or multiple programs should be suitable to seed a random source. The haveged implementation seeds your system’s random source (usually /dev/random) using differences in your processor’s time stamp counter (TSC) after executing a loop repeatedly. Though this sounds like it should end up creating predictable data, you may be surprised to view the FIPS test results in the bottom of this article.

Installing haveged on Debian/Ubuntu

You can easily install haveged on Debian and Ubuntu by running the following command:

Should this package not be available in your default repositories, you will need to compile from source (see below)

Once you have the package installed, you can simply edit the configuration file located in /etc/default/haveged, ensuring the following options are set (usually already the default options):

Finally, just make sure it’s configured to start on boot:

Installing haveged on RHEL/CentOS/Fedora

To install haveged on RHEL/CentOS (skip this step for Fedora), you first need to add the EPEL repository by following the instructions on the official site.

Once you’ve installed and enabled the EPEL repo (on RHEL/CentOS), you can install haveged by running the following command:

Fedora users can run the above yum install command with no repository changes. The default options are usually fine, so just make sure it’s configured to start at boot:

Installing from Source

On systems where there simply isn’t any pre-packaged binary available for haveged, you will need to build it from the source tarball. This is actually much easier than you might expect. First, you will visit the download page and choose the latest release tarball (1.7a at the time of this writing). After downloading the tarball, untar it into your current working directory:

Now you compile and install:

By default, this will install with a prefix of /usr/local, so you should add something similar to the following to /etc/rc.local (or your system’s equivalent) to make it automatically start on boot (adjust the path if necessary):

Run the same command manually (as root) to start the daemon without rebooting, or just reboot if you’re a Windows-kinda-guy.

Testing Availability of Entropy & Quality of Random Data

After some very minimal installation/configuration work, you should now have a working installation of haveged, and your system’s entropy pool should already be filling up from the randomness it produces. Security wouldn’t be security if you blindly trusted others and their claims of effectiveness, so why not test your random data using a standard test? For this test, we’ll use the FIPS-140 method used by rngtest, available in most or all major Linux distributions under various package names like rng-tools:

You should see output similar to the following:

A very small amount of failures is acceptable in any random number generator, but you can expect to see 998-1000 successes very often when using hovered.

To test the amount of available entropy, you can run the following command:

The idea of haveged is to fill this pool back up whenever the available bits gets near 1024. So while this number will fluctuate, it shouldn’t drop below 1000 or so unless you’re really demanding lots of randomness (SSH key generation, etc).

Источник

Операционные системы и программное обеспечение