Допустим, я хочу получить гигабайт или около того случайных данных из / dev / random, подходящих для одноразовой записи (так что / dev / urandom отсутствует.) Как мне заполнить мой / dev / random достаточной энтропией, чтобы сделать это? Я ищу конкретные команды и программы для этого. Я не хочу ничего покупать. Я использую Arch Linux, если это имеет значение.
arch-linux
random
PyRulez
источник
источник
Here — type something:
, а затем измеряет интервалы времени между нажатиями клавиш с более высокой точностью, чем может контролировать человек?Ответы:
Две программы, которые могут увеличить пул энтропии, не требуя дополнительного оборудования,
rng-tools
иhaveged
.rng-tools
использует RNG, доступные в современных процессорах и чипсетах,haveged
использует современную случайность процессора (поведение кеша и т. д.). Оба доступны в Arch, и в вики Arch есть интересная страница, где их обсуждают. Я не пытался использовать их для создания гигабайта данных, но это должно быть возможно за разумное время.Вы явно исключаете покупку чего-либо, но для полноты картины в LWN есть интересная статья об энтропии с NeuG , которая включает в себя обсуждение
haveged
и другие различные подходы. Вы можете купить плату STM8S, способную работать с NeuG менее чем за 10 долларов, или FST-01 за 35 долларов.источник
К сожалению, / dev / random также не подходит для использования в одноразовых планшетах, по крайней мере, не в виде одноразовых планшетов (с доказуемыми гарантиями безопасности), которые большинство людей представляют, когда думают или внедряют одноразовые планшеты. Большая часть информации, приведенной ниже, обобщена из (очень длинной) статьи на http://www.2uo.de/myths-about-urandom/
Проблема в том, что / dev / random не является действительно случайным; он использует CSPRNG для генерации своего вывода. Фактически, / dev / random использует точно такой же CSPRNG, что и / dev / urandom. Единственное отличие состоит в том, что / dev / random блокирует, если его внутренняя оценка энтропии недостаточна.
Слово «оценка» в предыдущем предложении является ключевым. Большинство людей считают, что эта оценка всегда точна и точна, но на самом деле она не совсем точна. В тот момент, когда оценка неверна, вы теряете все доказуемые гарантии безопасности одноразового планшета, и все, что у вас остается, - это вычислительная безопасность - не лучше, чем если бы вы использовали / dev / urandom!
Немного неправильная оценка энтропии не делает вашу одноразовую площадку немного небезопасной. Доказываемая гарантия безопасности одноразовой накладки - все или ничего.
Предпосылка этого вопроса заключается в том, что проблемы с / dev / random можно «исправить», добавив больше энтропии. К сожалению, это предположение неверно. Вредоносный источник энтропии гораздо хуже, чем вообще никакой энтропии, потому что источники энтропии часто имеют доступ к внутренним данным и могут тайно экспортировать эти данные, используя выходные данные ГСЧ - см. Http://blog.cr.yp.to/20140205-entropy .html для полного обсуждения (слишком долго, чтобы подвести итог здесь). В частности, аппаратный источник энтропии (как рекомендовано в нескольких других ответах) является очень плохим выбором с точки зрения безопасности, так как это оборудование имеет первостепенное значение для совершения злонамеренных действий, и оно по сути непригодно для использования.
источник
Похоже, компонент HW - лучшая идея. Есть некоторые генераторы HW, но вы должны доверять им по мере их появления.
Два, вероятно, хороших решения - заставить компонент создавать шум; два основных решения, по-видимому, - это температурный сдвиг и шум лавин, создаваемый диодом (см. http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html ).
Поскольку такие компоненты, как гироскоп и акселерометр, стали более разумными, заставить их работать с максимальной чувствительностью и использовать их значение LSB также может быть хорошим решением, но AFAIK никто так не проверял.
Забавно, так как есть много бумаги о том, как НЕ делать ГСЧ, но нет открытой и проверенной реализации HW
источник
Вы можете использовать pycsprng.py . Криптографически безопасно? Я не совсем уверен, но я хотел бы некоторого рецензирования.
python pycsprng.py | pv | dd of=data.file bs=1024 count=1000
Канал к не
pv
является обязательным и поможет вам узнать, сколько данных было передано.Вы можете обнаружить, что большие размеры блоков (bs) увеличивают производительность. Вы должны будете отрегулировать счетчик, чтобы не создавать слишком большой файл, если вы увеличиваете размер блока.
источник
/dev/urandom
...pycsprng.py
буквально сценарий 10 SLOC, который получает случайность отos.urandom
. Документы говорят, что «возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений [...] В UNIX-подобных системах это будет запрашивать/dev/urandom
» . Это действительно так (хотя это устаревший источник), и Security.SE говорит, что это нормально для криптографии .То, что вы получаете от аналогового канала микрофона, когда вы не подключаете микрофон, обычно просто статично. Передайте через bzip2, например, для отбеливания, смешайте его с другим источником случайности (urandom или другое гнездо для микрофона), возможно, передайте результат через openssl для хорошей меры, и то, что вы получите, должно быть довольно случайным.
Однако было бы трудно доказать какие-либо жесткие и быстрые свойства безопасности относительно случайности результата.
источник
Если вы используете ядро Linux 2.6.9 или новее на процессоре amd64 / x86_64, в виртуальной или физической среде, вы можете попробовать ncomputers.org/pandom - генератор истинных случайных чисел, который обеспечивает энтропию 8 КиБ / с 64 бит / 64 бит через
/dev/random
источник
Чтобы сгенерировать 100 МБ аппаратных случайных данных, вы можете:
Запишите 20 минут аудио (96 кГц, 16 бит, моно) со встроенным микрофоном вашего компьютера (доступно на ноутбуке). Вы получите файл WAV ~ 220 МБ.
Откажитесь от бесполезных битов и перемешайте биты двоичных данных (много способов сделать это) с некоторой математикой
Экспортируйте перемешанные биты как двоичный файл размером ~ 100 МБ
Вот статья об этом: Попытка генерировать истинную энтропию и случайные данные со звуком (и встроенным микрофоном вашего компьютера) .
источник