Приложение Б Генератор случайных чисел ядра
Приложение Б
Генератор случайных чисел ядра
В ядре Linux реализован генератор случайных чисел, который теоретически может генерировать истинно случайные числа. Генератор случайных чисел собирает в пул энтропии шумы внешней среды, которые поступают из драйверов устройств. Этот пул доступен как в ядре, так и для пользовательских процессов в качестве источника данных, которые не только случайны внутри системы, но и недетерминированы для внешних источников атак. Такие случайные числа используются различными внешними приложениями, особенно для целей криптографии.
Истинно случайные числа отличаются от псевдослучайных чисел, которые генерируются библиотечными функциями языка С. Псевдослучайные числа создаются с помощью детерминированных функций. Хотя такие функции и могут генерировать последовательности чисел, которые обладают некоторыми свойствами истинно случайных чисел, тем не менее такие числа только статистически случайны. Псевдослучайные числа являются детерминированными, потому что если известно хотя бы одно число последовательности, то можно определить и все остальные. Если известно так называемое порождающее число последовательности (seed), то обычно по нему определяется и вся последовательность. Для приложений, которые требуют истинно случайных чисел, как, например, криптография, псевдослучайные числа обычно не подходят.
В отличие от псевдослучайных чисел, истинно случайные числа не зависят от той функции, которая используется для их генерации. Более того, если известен некоторый член последовательности истинно случайных чисел, то внешний наблюдатель не сможет определить, какие числа будет выдавать генератор в будущем, т.е. такой генератор — недетерминированный.
Физический термин энтропия — это мера беспорядка и случайности в любой системе. Энтропия измеряется в единицах энергии на единицу температуры (Джоуль на градус Кельвина). Когда Клод Шеннон (Claude Shennon)[98], создатель информационной теории, искал термин для представления случайности информации, великий математик Джон фон Нейман (John von Neumann)[99] предложил ему использовать термин энтропия, потому что никто толком не понимает, что за этим понятием кроется. Шеннон согласился, и сегодня это звучит как энтропия Шеннона. Некоторые ученые считают, что такое двойное название только вносит путаницу, и когда речь идет об информации, то используют термин неопределенность. Разработчики ядра, наоборот, считают, что "энтропия" — это "круто", и поддерживают использование данного термина.
При рассмотрении генераторов случайных чисел понятие энтропии Шеннона является очень важным. Эта характеристика измеряется в битах на символ. Высокое значение энтропии означает, что в последовательности символов мало полезной (точнее, предсказуемой) информации и много случайного "мусора". Ядро поддерживает пул энтропии, который пополняется данными, возникающими в результате недетерминированных событий, связанных с аппаратными устройствами. В идеале, этот пул содержит полностью случайные данные. Для того чтобы иметь представление о значении энтропии пула, ядро постоянно вычисляет меру неопределенности данных в пуле. По мере того как ядро добавляет данные в пул, оно оценивает меру случайности добавляемых данных. И наоборот, по мере того как данные извлекаются из пула, ядро уменьшает значение оценки энтропии. Соответствующая количественная характеристика называется оценкой энтропии. Если значение оценки энтропии становится равным нулю, то ядро может отказаться выполнять запрос по считыванию данных из пула.
Генератор случайных чисел ядра был предложен в версии 1.3.30 и находится в файле drivers/char/random.c.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Приложение 4 Дерево параметров настройки ядра
Приложение 4 Дерево параметров настройки ядра В этом приложении приведено дерево настроек ядра Linux с настройками, используемыми по умолчанию в дистрибутиве Red Hat Linux 7.2. Используемые соглашения:• [*] – вкомпилировано в ядро;• [ ] – не компилируется;• <M> – вынесено в
6. Генератор идей
6. Генератор идей В разных сферах уже существует что-то, сделанное за клиента, генератор идей – 101 идея по организации детского праздника, 101 идея продающего текста, 101 способ сбросить лишний вес. Почему генератор идей так привлекателен? Потенциальный клиент знает: если
4. Генератор идей
4. Генератор идей «15 идей, как провести классный праздник», «Два лучших способа раскрутки сайтов» – то, что можно сразу начать
Генератор Колпитца
Генератор Колпитца Чтобы описать генератор Колпитца или генератор Хартли, зачастую используется одна и та же схема (рис. 8.16), где Z1, Z2 и Z3 представляют собой полные сопротивления. Условие установления колебаний при этом задается уравнениемZ1 + Z2 + Z3 = 0. Рис. 8.16. Базовая схема
KPT Orb-It (Генератор сфер)
KPT Orb-It (Генератор сфер) Эффект, который создает этот фильтр, может пригодиться нечасто, однако в некоторых случаях он будет незаменим. Представьте себе, например, сцену под водой, где нужно добавить пузырьки воздуха (рис. 8.46), или поверхность стола, на котором рассыпаны
5.28. Генерирование случайных чисел
5.28. Генерирование случайных чисел Если вас устраивают псевдослучайные числа, вам повезло. Именно они предоставляются в большинстве языков, включая и Ruby.Метод rand из модуля Kernel возвращает псевдослучайное число x с плавающей точкой, отвечающее условиям x >= 0.0 и x < 1.0.
11.6. Генерация случайных чисел
11.6. Генерация случайных чисел ПроблемаТребуется сгенерировать несколько случайных чисел в формате с плавающей точкой в интервале значений [0.0, 1.0) при равномерном их распределении.РешениеСтандарт C++ предусматривает наличие C-функции библиотеки этапа исполнения rand,
6.5.4. Устройства генерирования случайных чисел
6.5.4. Устройства генерирования случайных чисел Специальные устройства /dev/random и /dev/urandom предоставляют доступ к средствам генерирования случайных чисел, встроенным в ядро Linux.Большинство аналогичных программных функций, например функция rand() стандартной библиотеки языка С,
Генерация случайных чисел
Генерация случайных чисел Прежде всего, давайте опишем, что мы понимаем под случайным числом (random number). Без четкого определения термина мы будем неуверенно себя чувствовать при разработке и реализации генератора случайных чисел.Будет ли число 2 случайным числом? Просто
Выводы по алгоритмам генерации случайных чисел
Выводы по алгоритмам генерации случайных чисел В предыдущем разделе были рассмотрены несколько достаточно простых генераторов случайных чисел. Наилучшие последовательности чисел позволяют получить два последних генератора, но, к сожалению, они выдвигают жесткие
Другие распределения случайных чисел
Другие распределения случайных чисел Если случайные числа используются для моделирования некоторого процесса, то вы можете обнаружить, что все рассмотренные выше генераторы случайных чисел не позволяют решить поставленную задачу. Это вызвано равномерным
Пример 9-23. Генерация случайных чисел
Пример 9-23. Генерация случайных чисел #!/bin/bash# $RANDOM возвращает различные случайные числа при каждом обращении к ней.# Диапазон изменения: 0 - 32767 (16-битовое целое со знаком).MAXCOUNT=10count=1echoecho "$MAXCOUNT случайных чисел:"echo "-----------------"while [ "$count" -le $MAXCOUNT ] # Генерация 10 ($MAXCOUNT) случайных
НОВОСТИ: Цепь случайных совпадений?
НОВОСТИ: Цепь случайных совпадений? Автор: Киви БердРазразившийся в Греции скандал вокруг перехвата сотовой связи ключевых политических фигур страны по своим масштабам, пожалуй, не знает себе равных не только в Европе, но и во всем мире. Вкратце суть произошедшего
У11.9 Генерация случайных чисел
У11.9 Генерация случайных чисел Напишите класс, реализующий алгоритм получения псевдослучайных чисел, основанный на последовательности: ni = f(ni - 1), где функция f задана, а начальное значение n0 определяется клиентом класса. Функция не должна иметь побочных эффектов.