Источники энтропии для Linux

Предположим, что я хочу получить гигабайт случайных данных из / dev / random, подходящий для одноразовой панели (так что / dev / urandom отсутствует.) Как я могу засеять / dev / random с достаточной энтропией для этого? Я ищу конкретные команды и программы для этого. Я не хочу ничего покупать. Я использую Arch Linux, если это имеет значение.

  • Переименовывать файлы случайным образом, но без повторения
  • Произвольно скопируйте определенное количество определенного типа файла из одного каталога в другой
  • Как заполнить файл потоком из / dev / urandom с указанным числом строк?
  • Как создавать случайные IP-адреса
  • Создание уникальных номеров Функция RANDOM OS X
  • Изменение имени хоста на рабочем столе Linux Mint до случайного значения во время загрузки
  • Четыре случайных слова из списка с Perl!
  • Как я могу перетасовать страницы из pdf-файла в случайном порядке?
  • 6 Solutions collect form web for “Источники энтропии для Linux”

    К сожалению, / dev / random также не подходит для использования в одноразовой клавиатуре, по крайней мере, это не одноразовая панель (с гарантируемыми гарантиями безопасности), которую большинство людей воображают, когда думают или реализуют одноразовые прокладки. Большая часть приведенной ниже информации обобщается из (очень длинной) статьи на http://www.2uo.de/myths-about-urandom/

    Проблема в том, что / dev / random не является действительно случайным; он использует CSPRNG для генерации своего вывода. Фактически, / dev / random использует тот же самый CSPRNG как / dev / urandom. Единственное различие заключается в том, что / dev / random блоки, если его внутренняя оценка энтропии недостаточна.

    Слово «оценка» в предыдущем предложении является ключевым. Большинство людей думают, что эта оценка всегда точная и совершенная, но на самом деле это совсем не так. В тот момент, когда оценка ошибочна, вы теряете все доказуемые гарантии безопасности одноразового пэда, и все, что у вас осталось – это вычислительная безопасность – не лучше, чем если бы вы использовали / dev / urandom!

    Получение оценки энтропии просто немного неправильно не делает вашу одноразовую площадку немного ненадежной. Доказанная гарантия безопасности одноразовой панели – это все или ничего.

    Предпосылка этого вопроса заключается в том, что проблемы с / dev / random могут быть «исправлены» путем добавления большей энтропии. К сожалению, эта предпосылка неверна. Злоумышленный источник энтропии намного хуже, чем энтропия вообще, потому что энтропийные источники часто имеют доступ к внутренним данным и могут тайно экспортировать эти данные, используя выход RNG – см. http://blog.cr.yp.to/20140205-entropy .html для полного обсуждения (слишком долго, чтобы обобщить здесь). В частности, аппаратный источник энтропии (как рекомендовано несколькими другими ответами) является очень плохим выбором с точки зрения безопасности, поскольку это аппаратное обеспечение находится в выгодном положении для совершения вредоносных действий, и оно по сути несовместимо.

    Похоже, что компонент HW – лучшая идея. Там есть какая-то HW-генераторная микросхема, но вы должны доверять им, когда они приходят.

    Два, вероятно, хорошего решения – заставить компонент создавать шум; два основных решения, по-видимому, являются смещением температуры и шумом avanche, созданным с помощью диода (см. http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )

    Поскольку такие компоненты, как гироскоп и акселерометр, стали более разумными, что делает их работу с наивысшей чувствительностью и использование их значения LSB также может быть хорошим решением, но AFAIK никто не проверял.

    Забавно, поскольку есть много документов о НЕ делать RNG, но не реализация HW открыта и проверена

    Две программы, которые могут увеличить энтропийный пул, не требуя дополнительного оборудования, являются rng-tools и haveged . rng-tools использует RNG, доступные в современных процессорах и haveged микросхем, использует современные haveged (поведение кэша и т. д.). Оба доступны в Arch, и у Arch wiki есть интересная страница, в которой они обсуждаются. Я не пытался использовать их для генерации гигабайта данных, но это должно быть возможным в разумный промежуток времени.

    Вы явно исключаете покупку чего-либо, но только для полноты в LWN есть интересная статья об энтропии с NeuG , которая включает в себя обсуждение haveged и различных других подходов. Вы можете купить плату STM8S, способную работать NeuG менее чем за 10 долларов США, или FST-01 за 35 долларов США.

    Вы можете использовать pycsprng.py . Криптографически безопасно? Я не совсем уверен, но мне нужен какой-то экспертный обзор.

    python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

    Труба в pv является необязательной, и она просто поможет вам узнать, сколько данных было передано.

    Вы можете обнаружить, что больший размер блока (bs) увеличивает производительность. Вам придется настроить счетчик, чтобы не создавать слишком большой размер файла, если увеличить размер блока.

    То, что вы получаете от аналогового канала микрофона, когда вы не подключаете микрофон, обычно просто статично. Труба, которая через bzip2, например, для отбеливания, смешивает ее с другим источником случайности (урандом или другим гнездом для микрофона), возможно, может получить результат через openssl для хорошей оценки, а то, что вы получаете, должно быть довольно случайным.

    Однако было бы трудно доказать какие-либо жесткие и быстрые свойства безопасности в отношении случайности результата.

    Если вы используете linux kernel 2.6.9 или новее на процессоре amd64 / x86_64, виртуальной или физической среде, вы можете попробовать ncomputers.org/pandom генератор случайных чисел, который предлагает энтропию 8 KiB / s с 64 ubits / 64 бит через /dev/random

    выход образца

    Linux и Unix - лучшая ОС в мире.