Как отключить источник энтропийного пула Linux - PullRequest
2 голосов
/ 09 сентября 2011

Как отключить источники энтропии?

Вот небольшая справка о том, что я пытаюсь сделать. Я создаю небольшое устройство RNG, которое общается с моим компьютером через USB. Я хочу, чтобы это был единственный используемый источник энтропии. Я буду использовать rngd, чтобы добавить свое устройство в качестве источника энтропии.

Ответы [ 4 ]

4 голосов
/ 09 сентября 2011

Быстрый ответ: «Вы не делаете».

Никогда не удаляйте источники энтропии.Разработчики генератора случайных чисел подстроили его так, чтобы любые новые случайные биты просто смешивались с текущим состоянием.

Наличие нескольких источников энтропии никогда не ослабляет выходной сигнал генератора случайных чисел, только усиливает его.

Единственная причина, по которой я могу подумать, чтобы устранить источник энтропии, заключается в том, что он высасывает процессорное или настенное время, которое вы не можете себе позволить.Я нахожу это крайне маловероятным, но если это так, то единственный вариант - взлом ядра.Что касается взлома ядра, это должно быть довольно просто.Просто закомментируйте все вызовы функций add _ * _ randomness () в исходном коде ядра (сами функции находятся в drivers / char / random.c).Вы можете просто закомментировать содержимое функций, но в этом случае вы пытаетесь сэкономить время, и минимальное время, необходимое для дополнительного вызова функции, может быть слишком большим.

0 голосов
/ 11 февраля 2013

Дополнительное примечание, слишком большое для комментария:

В зависимости от настроек rngd может доминировать в пуле энтропии ядра, предоставляя так много данных, так часто, что другие источники энтропии в основном игнорируется или теряется. Не делайте этого, если вы не доверяете источнику rngd случайных данных в конечном итоге.

0 голосов
/ 09 сентября 2011

Одним из решений является запуск отдельного экземпляра Linux на виртуальной машине.

0 голосов
/ 09 сентября 2011

Я подозреваю, что вам нужен быстрый генератор случайных чисел.

Редактировать Я должен был прочитать вопрос лучше

В любом случае, frandom поставляется с полным архивом для модуля ядра, чтобы вы могли узнать, как построить свой собственный модуль вокруг вашего USB-устройства. Возможно, вы даже можете сделать так, чтобы он заменял / смещал / dev / urandom, чтобы произвольные приложения работали с ним вместо / dev / urandom (конечно, при наличии достаточных разрешений вы могли просто переименовать узлы устройства и «обмануть» большинство приложений).


Вы можете посмотреть на http://billauer.co.il/frandom.html,, который реализует это.

  • Не достаточно ли / dev / urandom?
    • Дискуссии о необходимости более быстрого запуска и падения генератора случайных чисел в ядре с 1996 года (о котором я знаю). Мое мнение таково, что / dev / frandom так же необходим, как / dev / zero, который просто создает поток нулей. Общее противоположное мнение обычно говорит: делай это в пространстве пользователя.
  • В чем разница между / dev / frandom и / dev / erandom?
    • В начале я написал / dev / frandom. Затем оказалось, что одним из преимуществ этого пакета является то, что он сохраняет энтропию ядра. Но / dev / frandom потребляет 256 байтов случайных данных ядра (которые, в свою очередь, могут потреблять некоторую энтропию) каждый раз, когда открывается файл устройства, для заполнения генератора случайных чисел. Поэтому я сделал / dev / erandom, который использует внутренний генератор случайных чисел для заполнения. «F» во фрэндоме означает «быстрый», а «E» - «экономический»: / dev / erandom вообще не использует энтропию ядра.
  • Как быстро это?
    • Зависит от вашего компьютера и версии ядра. Тесты последовательно показывают в 10-50 раз быстрее, чем / dev / urandom.
  • Будет ли оно работать на моем ядре?
    • Скорее всего, если> 2,6
  • Это стабильно?
    • С момента выпуска первоначальной версии осенью 2003 года, по крайней мере, 100 человек попробовали ее (возможно, намного больше) на системах i686 и x86_64. Отчеты об успешных испытаниях поступили, и жалоб нет. Так что да, это очень стабильно. Что касается случайности, то также не было никаких жалоб.
  • Как генерируются случайные данные?
    • frandom основан на алгоритме шифрования RC4, который считается безопасным и используется несколькими приложениями, включая SSL. Давайте начнем с того, как работает RC4: он берет ключ и генерирует поток псевдослучайных байтов. Фактическое шифрование - это операция XOR между этим потоком байтов и потоком данных в виде открытого текста.
    • Теперь к frandom: каждый раз, когда открывается / dev / frandom, отдельный псевдослучайный поток инициализируется с помощью 2048-битного ключа, который выбирается путем выполнения чего-то эквивалентного чтению ключа из / dev / urandom. Псевдослучайный поток - это то, что вы читаете из / dev / frandom.
    • frandom - это просто RC4 со случайным ключом, без XOR в конце.
  • генерирует ли frandom хорошие случайные числа?
    • Из-за своего происхождения случайные числа не могут быть слишком плохими. Если бы они были, RC4 ничего бы не стоил. Что касается тестирования: данные, непосредственно "скопированные" из / dev / frandom, были протестированы с помощью набора тестов "Diehard", разработанного Джорджем Марсалья. Все тесты пройдены, что считается хорошим показателем.
  • Можно ли использовать frandom для создания одноразовых планшетов (криптология)?
    • frandom никогда не предназначался для криптографических целей, и при этом не уделялось особого внимания атакам. Но есть очень мало места для атаки на модуль, и поскольку модуль основан на RC4, мы имеем следующий факт: использование данных из / dev / frandom в качестве одноразовой площадки эквивалентно использованию алгоритма RC4 с 2048- битовый ключ, чтение из / dev / urandom.

Итог: вероятно, нормально использовать frandom для криптографических целей. Но не надо. Это не было намерением.

...