Со стандартной установкой Ubuntu 12.04, как собирается энтропия для /dev/random
.
Является ли установка достаточно умной, чтобы настроить любое доступное поколение аппаратного обеспечения, будут ли по умолчанию использовать пользовательские источники, такие как клавиатурные прерывания?
Редактировать: Просто, чтобы было ясно, я смотрю для конкретной конфигурации, которая поставляется с установкой (или как ее найти), я не смотрю, как это может быть сделано в теории.
Это - сложный вопрос. Я отвечу путем заключения в кавычки из немногих источников.
Linux символьные специальные файлы/dev/random и/dev/urandom (существующий начиная с Linux 1.3.30) предоставляют интерфейс генератору случайных чисел ядра. Файл/dev/random имеет основное устройство номер 1 и незначительный номер устройства 8. Файл/dev/urandom имеет основное устройство номер 1 и незначительный номер устройства 9.
, генератор случайных чисел собирает экологический шум из драйверов устройств и других источников в энтропийный пул. Генератор также сохраняет оценку числа битов шума в энтропийном пуле. От этого энтропийного пула создаются случайные числа.
В ядре значения по умолчанию Ubuntu 12.04 3.11 .
От wiki
ядро Linux генерирует энтропию от синхронизаций клавиатуры, движений мыши и синхронизаций IDE и делает случайные символьные доступные данные к другим процессам операционной системы через специальные файлы/dev/random и/dev/urandom. Эта возможность была представлена в версии 1.3.30.
Linux , Когда считано,/dev/random устройство только возвратит случайные байты в предполагаемом числе битов шума в энтропийном пуле./dev/random должен подойти для использования, для которого нужна очень высококачественная случайность, такая как шифр Вернама или генерация ключей. То, когда энтропийный пул пуст, читает из/dev/random, заблокируется, пока дополнительный экологический шум не собран.
Кавычка от random
источники, от ядра 3.11.10.10
* Theory of operation
* ===================
*
* Computers are very predictable devices. Hence it is extremely hard
* to produce truly random numbers on a computer --- as opposed to
* pseudo-random numbers, which can easily generated by using a
* algorithm. Unfortunately, it is very easy for attackers to guess
* the sequence of pseudo-random number generators, and for some
* applications this is not acceptable. So instead, we must try to
* gather "environmental noise" from the computer's environment, which
* must be hard for outside attackers to observe, and use that to
* generate random numbers. In a Unix environment, this is best done
* from inside the kernel.
*
* Sources of randomness from the environment include inter-keyboard
* timings, inter-interrupt timings from some interrupts, and other
* events which are both (a) non-deterministic and (b) hard for an
* outside observer to measure. Randomness from these sources are
* added to an "entropy pool", which is mixed using a CRC-like function.
* This is not cryptographically strong, but it is adequate assuming
* the randomness is not chosen maliciously, and it is fast enough that
* the overhead of doing it on every interrupt is very reasonable.
* As random bytes are mixed into the entropy pool, the routines keep
* an *estimate* of how many bits of randomness have been stored into
* the random number generator's internal state.
Да достаточно умно использовать основанные на пользователе источники , но можно настроить больше, если Вы хотите.
существуют ядра со случайными генераторами, которые имеют больше энтропийных источников таких включая шум на аудиовходах и других как видео, цензорах вентиляторов, и т.д. Посмотрите здесь , если интересный в аудио энтропии. Я надеюсь, что Вы найдете ядра других собой.
, Но /dev/random
должен быть достаточно для большинства задач по умолчанию.
Также читает этот вопрос на stackoverflow
Истинная случайность прибывает из материального мира, не из детерминированных генераторов псевдослучайного числа. Ядро Linux собирает случайные синхронизации и добавляет информацию к ее энтропийному пулу. Я рекомендовал бы войти в источники ядра
, Входная энтропия относится к вызов функции: add_interrupt_randomness (irq) обработчики, зарегистрированный SA_SAMPLE_RANDOM, синхронизирующий между прерываниями, является источником шума, add_keyboard_randomness (scancode) и add_mouse_randomness (mouse_data) ===> все эти функции, называют add_timer_randomness ()
Выходная энтропия: пространство Ядра: [get_random_bytes (buf, число)] (Относятся к LXR => linux/drivers/char/random.c), Пространство пользователя:/dev/random/dev/urandom
Относится к LXR => linux/drivers/char/random.c