Как стать автором
Обновить

Комментарии 11

Интересно, а подброс монетки является истинным или псевдослучайным генератором? Можно ли реализовать его на физическом движке?

Человек бросает монетку со всегда разным усилием. Рискну предположить что робот будет делать это более предсказуемым образом. Но надо бы проверить :-)

Не забудьте учитывать влияние атмосферы (если подкидывать достаточно высоко)

я пару недель назад генерировал пин код. 4-мя монетками.
Хотел сгенерировать сгенерировать ещё 256 бит ключ. Но возникла проблема с его записью. Я хотел бакап по схеме шамира и поленился делать его руками.

Предполагаю, что из-за многих факторов воздействия подбрасывание монетки считается истинным генератором. Но вряд ли кто-то будет столько ее подбрасывать. А реализовать на физическом движке можно ГПСБ, где закодировать состояния монетки 0 и 1.

Подброс монеты относится к движению, описываемому нелинейной динамикой. Так называется такое движение, где бесконечно малое изменение начальных условий ведёт к конечному (не бесконечно малому) изменению траектории движения. Такое движение описывается теорией хаоса. Ну как описывается - почти никак. Есть 2 аттрактора - орёл и решка и монетка закончит свое движение в одном из этих аттракторов. А в каком именно, это науке неизвестно. Примерно так описывает теория хаоса бросок монетки. И лучшего мат аппарата для его описания описания пока не придумано.

И на компьютере смоделировать невозможно. Ну то есть можно, но на очень коротком временном интервале, т.к. с увеличением времени моделирования необходимо будет нелинейно повышать точность задания начальных условий всей системы. Хотите смоделировать движение в пределах секунды - задайте начальные условия с относитеной погрешностью 1/100. Хотите смоделировать 5 секунд - задайте с относительной погрешностью (1/10^100)

уже достаточно давно есть генераторы, которые можно назвать ГИСЧ и они не громоздки от слова совсем.

Например в контроллерах Marvell используется генератор на основе внутреннего термистора, с него снимаются показания температуры, берутся самые низкие разряды (тепловой шум) и на основе этого делается начальный seed, размером в 128 бит. Далее таким же образом получается еще 128 бит для ключа. Прелесть в том, что получение этих чисел делается один раз при старте контроллера.

После чего с помощью алгоритма AES-CTR искомый seed заворачивается нашим ключом и вуаля - у нас есть 128 бит высокорандомного мусора. Так как AES-CTR используется для своей работы предыдущий результат и вносит дополнительную информацию за счет собственно CTR, то далее можно очень быстро нагенерить кучу случайной неповторяющейся информации.

Такие генераторы и правда используются в качестве современного ГСЧ, но, как вы написали выше, они высчитывают значение только единожды для задания начального значения, а далее генерация использует какой-то криптостойкий алгоритм генерации псевдослучайных чисел.

Если бы мы постоянно получали случайные 128 бит в качестве нового случайного числа, то тогда получили бы аппартаный источник случайных чисел, который и понимается под ГИСЧ в статье. Но сейчас такие генераторы используются для задания начального значения с хорошим значением энтропии. Позже можно генерировать кучу псевдослучайной информации, но благодаря криптостойкому ГПСЧ и хорошему источнику начальных значений мы не отличим эту кучу от случайной.

Да в последних поколениях интеловских процов внутри уже есть гисч, без всяких доп модулей и контроллеров. Но не любой софт его использует.

По сути не всегда ГИСЧ и нужен. Вся прелесть использования ГПСЧ в воспроизводимости, а зачастую именно она нужна в той или иной степени.

Насколько мне известно, в RDRAND была найдена уязвимость, поэтому его стали меньше использовать в качестве ГИСЧ. А так да, сейчас много где есть аппаратные ГСЧ, но не факт, что там прям истинно рандомные значения... (к примеру температура на продолжительном отрезке времени может не меняться, а значит не будет меняться и начальное значение)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории