Nano Hash - криптовалюты, майнинг, программирование

Является ли /dev/random действительно случайным?

Например, можно ли с его помощью сгенерировать ключ одноразового блокнота?
Кроме того, каковы его источники и как с его помощью сгенерировать случайное число между x и y ?

12.04.2011

  • Я не знаю точно, поэтому я не буду указывать это как ответ, но статья в Википедии (en.wikipedia.org/wiki//dev/random) в этом отношении довольно ясно: /dev/random должен подходить для использования, требующего случайности очень высокого качества, например, одноразового блокнота или генерации ключей. - тогда как /dev/urandom нет 12.04.2011
  • @Alexander Gessier Так что я должен просто поверить Википедии на слово? 12.04.2011
  • Вы также можете использовать ссылки внизу статьи в Википедии, чтобы получить: kernel.org/doc/man-pages/online/pages/man4/random.4.html 12.04.2011
  • Википедия просто цитирует справочную страницу. 12.04.2011
  • В статье в Википедии есть ссылка на PDF-файл, в котором сообщается об исследовании /dev/random. 12.04.2011
  • Обратите внимание, что комментарии на справочной странице /dev/random подверглись критике со стороны многих (хотя и не всех) людей, которые знают, что делают: sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers 13.05.2015

Ответы:


1

Единственная вещь в этой вселенной, которую можно считать истинной, — это та, что основана на квантовых эффектах. Типичным примером является радиоактивный распад. Для некоторых атомов можно быть уверенным только в периоде полураспада, но нельзя быть уверенным, какое ядро ​​распадется следующим.

Насчет /dev/random - зависит от реализации. В Linux в качестве источников энтропии используются:

Ядро Linux генерирует энтропию из таймингов клавиатуры, движений мыши и таймингов IDE и делает случайные данные символов доступными для других процессов операционной системы через специальные файлы /dev/random и /dev/urandom.

Вики

Это означает, что он лучше, чем алгоритмические генераторы случайных чисел, но и не идеален. Энтропия не может быть распределена случайным образом и может быть смещена.

Это была философия. Практика такова, что в Linux /dev/random достаточно случайна для подавляющего большинства задач.

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

Есть интересный сайт, где можно получить настоящие случайные числа, сгенерированные радиоактивным распадом.

12.04.2011
  • хорошо, в зависимости от того, как вы определяете random, даже это не является действительно случайным. 24.04.2014
  • @Pacerier, если вы определяете случайность как тост с арахисовым маслом и джемом, тогда да, это не совсем случайно. По любому другому осмысленному определению это так. 24.04.2014
  • это неправильно. Вам не нужны квантовые эффекты для истинной случайности, например, классические модели турбулентности не менее верны, чем квантовые теории (первые менее фундаментальны, но это не имеет значения: мы знаем, что современные (квантовые) теории также не являются теорией всего (есть ограничения)). 30.07.2015
  • @ J.F.Sebastian Я могу ошибаться, но, насколько я понимаю, есть разница между очень случайным и действительно случайным. Турбулентность, проблема трех тел и все эти системы в высшей степени хаотичны, но на самом деле они не случайны. 03.08.2015
  • @ Андрей: я хочу сказать, что турбулентность не просто очень случайна, она действительно случайна. Например, у него есть приятное свойство: независимо от того, как много вы знаете о системе; вы не сможете предсказать конкретный результат. Вы можете убедить меня в обратном с помощью математики и/или измерений. 03.08.2015
  • @ J.F.Sebastian детерминированная (не случайная) система - это система, в которой результат полностью зависит от начальных параметров. Случайный - это когда результат может быть разным для одних и тех же начальных параметров. Хаотическая система — это система, в которой малейшее изменение исходных параметров приводит к экстремальным вариациям результатов. Эти системы очень трудно решить аналитически. Насколько я понимаю, турбулентность - это детерминированная система, но в то же время чрезвычайно хаотичная, что практически означает, что в общем случае результат не может быть просчитан. 03.08.2015
  • @Andrey: с математической стороны: прочитайте о конечном времени взрыва для трехмерных уравнений Навье – Стокса (уравнения - один из способов моделирования турбулентности) - это открытая проблема. Гипотеза о том, что вся случайность в турбулентности может быть объяснена явлением хаоса (детерминированного, но непредсказуемого из-за вариаций начальных условий), не доказана. Я не знаю детерминированных (в деталях, а не статистических) моделей турбулентности без краев. С точки зрения физики (что вы можете измерить): турбулентность случайна. 03.08.2015
  • @ J.F.Sebastian, не могли бы вы предоставить какие-либо доказательства того, что турбулентность действительно случайна (а не просто непредсказуема)? 03.08.2015
  • @ Андрей: любое доказательство - любой эксперимент, связанный с турбулентностью. 04.08.2015
  • @ JFSebastian, это абсолютно не доказательство в каком-либо значимом смысле. 04.08.2015
  • @ Андрей: единственное доказательство, которое имеет значение, - это измерения. Если вы не можете измерить это; это не физика. 04.08.2015
  • @ J.F.Sebastian, это выглядит ооочень случайно, это тоже не физика. 04.08.2015
  • @Андрей: бред. Существует множество полезных моделей статистической физики (их предсказания хорошо согласуются с эмпирическими данными). Все модели ошибочны, некоторые полезны. Их полезность не зависит от того, являются ли лежащие в их основе (более фундаментальные) модели детерменистическими или нет. Этот аргумент не имеет отношения к тому, что Бог не играет в кости, теореме Белла и т. д. 04.08.2015
  • @ JFSebastian есть очень четкое определение того, что является детерминированным, а что недетерминированным (случайным). Тот факт, что система непредсказуема, не делает ее автоматически недетерминированной (случайной). Вам нужно доказать, что результат системы будет другим для идентичных входных данных. Если вы не можете доказать, что вы можете это предположить, но для действительного предположения у вас также должны быть веские причины. Вы в основном приравниваете непредсказуемое к случайному, потому что непредсказуемое выглядит случайным 04.08.2015
  • @Андрей: ты повторяешься. Я понимаю, что вы имеете в виду под детерминированным, непредсказуемым, случайным в этом контексте. Это не влияет на мой аргумент: если вы не можете это измерить; это не физика 04.08.2015
  • @ J.F.Sebastian Я не вижу смысла в этом разговоре. У вас должны быть веские причины считать систему недетерминированной. Если вы не предоставите эти аргументы в пользу турбулентности, я не вижу причин полагать, что она недетерминирована. Ваша фраза об измерениях и физике настолько общая, что я ее не понимаю. Вы можете измерить турбулентность, систему трех тел, ядерный распад, шар, катящийся по склону, и все же все эти системы очень различны по своей природе. 04.08.2015
  • @ Андрей: очевидно, я говорю об измерении разницы между физическим явлением, которое является действительно случайным или просто непредсказуемым, используя ваши термины. О чем еще мы говорим? 04.08.2015
  • @J.F.Sebastian и Андрей Я нашел эту старую биржу занимательной и интересной. Спасибо 22.02.2017
  • Для протокола согласен с Андреем. Физика без измерений — это физика, просто она называется теоретической, а не экспериментальной физикой. Если бы в конце концов было обнаружено, что непредсказуемость турбулентности возникает исключительно из-за квантовых эффектов, тогда да, это настоящая случайность. В противном случае, если оно возникает в результате сложных классических взаимодействий, оно не является случайным. И вот в чем разница между теоретиком и эмпириком: если турбулентность вечно неразрешимо хаотична, это было бы так же хорошо, как случайность для всех практических целей, но теоретик все равно справедливо сказал бы, что не случайна. 22.02.2017
  • @ J.F.Sebastian Я согласен с тем, что без теории всего мы не можем категорически исключить открытие, которое могло бы предсказать радиоактивный распад. Но она удовлетворяет гораздо более сильному фундаментальному стандарту случайности, чем турбулентность. В наших моделях Вселенной нет инструментов, которые могли бы хотя бы приблизиться к ее взлому. 22.02.2017

  • 2

    Строго говоря, /dev/random не является действительно полностью случайным. /dev/random питается от аппаратных источников, которые предполагаются в некотором роде непредсказуемыми; затем он смешивает такие данные, используя функции (в основном хеш-функции), которые также предполагаются односторонними. Таким образом, «истинная случайность» /dev/random связана с присущей функциям микширования безопасностью, безопасность которой гарантирована не более, чем безопасность любого другого криптографического примитива, в частности PRNG, скрытого в /dev/urandom.

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

    Разница в безопасности между этими двумя подходами не имеет смысла, если вы не предполагаете, что «классические» криптографические алгоритмы могут быть взломаны, и вы используете один из очень немногих информационно-теоретических алгоритмов (например, OTP или раскрытие секрета Шамира< /а>); и даже в этом случае /dev/random можно считать более безопасным, чем /dev/urandom, только если функции смешивания по-прежнему считаются односторонними, что не совместимо с идеей, что классический криптографический алгоритм может быть взломан. Так что на практике и даже в теории нет никакой разницы. Вы можете использовать выходные данные /dev/urandom для одноразового пароля, и они не будут нарушены из-за какой-либо внутренней структуры /dev/urandom — фактическое управление полученным потоком будет слабым местом (особенно долговременное хранение). С другой стороны, у /dev/random есть вполне реальные практические проблемы, а именно то, что он может блокироваться в несвоевременные моменты. Это действительно утомительно, когда автоматическая установка ОС блокируется (на несколько часов!), потому что генерация ключей SSH-сервера настаивает на использовании /dev/random и без необходимости останавливается из-за энтропии.

    Есть много приложений, которые читают /dev/random как своего рода ритуал, как будто это «лучше», чем /dev/urandom, вероятно, на кармическом уровне. Это совершенно неправильно, особенно когда alea используется с классическими криптографическими алгоритмами (например, для генерации открытого ключа SSH-сервера). Не делай этого. Вместо этого используйте /dev/urandom, и вы проживете дольше и счастливее. Даже для одноразового блокнота.

    (Просто для полноты картины есть особенность /dev/urandom, реализованная в Linux: он никогда не будет блокироваться, даже если он вообще не накопил никакой энтропии с момента предыдущей загрузки. Дистрибутивы избегают этой проблемы, создавая " случайное начальное число» во время установки с /dev/random и использование этого начального числа при каждой загрузке для инициализации PRNG, используемого /dev/urandom; новое случайное начальное число создается немедленно для следующей загрузки. Это гарантирует, что /dev/urandom всегда работает с достаточно большим внутренним начальным числом. Реализация FreeBSD /dev/urandom будет блокироваться до тех пор, пока не будет достигнут заданный порог энтропии, что является более безопасным.)

    12.04.2011
  • @thomas-pornin: Неправда. Посмотрите на слайд 63 из slideshare.net/astamos/cloud-computing-security. для краткой заметки. По сути, в виртуальной машине вполне вероятно, что энтропия будет недостаточной по сравнению с клонированным образом, если не будут приняты меры. 27.05.2011
  • @jwilkins будет ли вывод RNG двух виртуальных машин фактически несвязанным, как только они получат хотя бы один бит входной энтропии, который отличается? (В том же смысле, что если я изменю какой-либо отдельный бит файла, хэш этого файла должен быть совершенно не связан с тем, что было раньше?) Если да, проблема с виртуальной машиной ограничивается только первыми несколькими моментами после загрузки/ клонировать, прежде чем состояния RNG расходятся? 29.04.2015
  • Чтобы задать тот же вопрос по-другому, предположим, что у меня есть две CSPRNG, использующие один и тот же алгоритм. Генератор A содержит (X, 0), где X — 256+ битов энтропии. Генератор B содержит (X, 1), где X точно такой же, как и для генератора A. Существует ли какая-либо атака, которая позволила бы мне предсказать вывод B, учитывая вывод A? 29.04.2015

  • 3

    /dev/random будет блокироваться, если в пуле энтропии недостаточно случайных данных, а /dev/urandom — нет. Вместо этого /dev/urandom вернется к PRNG (документы ядра). Из тех же документов:

    Генератор случайных чисел [пул энтропии] собирает окружающий шум от драйверов устройств и других источников в пул энтропии.

    Таким образом, /dev/random не является алгоритмическим, как PRNG, но может и не быть «по-настоящему случайным». Движения мыши и время нажатия клавиш, как правило, следуют шаблонам и могут использоваться для эксплойтов. но вам придется сопоставить риск с вашим вариантом использования.

    Чтобы получить случайное число между x и y с помощью /dev/random, при условии, что вас устраивает 32-битное целое число, вы можете посмотреть, как Java класс java.util.Random делает это (nextInt()), подставляя соответствующий код для чтения из /dev/random вместо метода nextBytes().

    12.04.2011
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование