можно ли угадать генератор случайных чисел

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

Раньше в качестве «генераторов случайных чисел» часто использовали компьютерные алгоритмы. Это не совсем корректно, потому что результаты, хоть и с большим трудом и с помощью вычислительных машин, было возможно предсказать. Так, например, один умник из США смог обмануть систему и просчитать алгоритм какой-то игры на деньги.

В настоящее время среди генераторов случайных чисел можно выделить два типа: генераторы псевдослучайных чисел, и генераторов настоящих случайных чисел (названия импровизированные).

Псевдослучайные числа, как видно из названия, не совсем случайны: для их генерации не используются физические источники. Их генерируют с помощью сугубо математического алгоритма. Например, берётся некоторое число (допустим то, которое выпало на кубике), затем перемножается с ещё одним числом (выпавшем при очередном подбрасывании кубика), затем возводится в куб, из результата вычитается ещё одно число, выпавшее на кубике, из получившегося числа извлекается корень третьей степени и из результата берется одиннадцатая цифра после запятой. На первый взгляд кажется, что такое число невозможно предсказать, но на самом деле, если идеально рассчитать траекторию кубика, то можно предсказать и результат. Именно такой алгоритм и описывает работу генераторов псевдослучайных чисел, только вместо кубика используется, например, количество пользователей сайта в данный момент времени.

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

Таким образом, отвечая на вопрос, можно сказать, что для предсказания «случайного» числа, нужно понимать, с каким сайтом вы имеете дело. Если это очень старый сайт, то есть вариант понаблюдать за его поведением и результатами, и вывести алгоритм. Если это генератор псевдослучайных чисел, то можно попробовать понять, откуда сайт берёт первоначальные числа (как в примере с кубиком). Часто это количество запросов в каком-либо поисковике за единицу времени, либо количество посетителей сайта. Если речь о генераторе настоящих случайных чисел, то здесь с огромными усилиями можно лишь определить наиболее вероятный исход.

Источник

🌐 Можно ли взломать генератор случайных чисел?

Что такое генератор случайных чисел?

Генератор случайных чисел (ГСЧ) – это современный эквивалент бросания кубиков или тасования карт.

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

Когда дело доходит до игр казино, лотерей, розыгрышей и подобных игр, ГСЧ принимают форму блоков кода, скрытых в программном обеспечении, которое обеспечивает «шанс» в азартных играх.

Рандомные ГСЧ и псевдо ГСЧ

ГСЧ в играх казино и игровых автоматах на самом деле не рандомные, а скорее «псевдо».

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

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

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

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

Как и во всем, что связано с математикой, если есть уравнение, то оно вовсе не случайное.

Все н е так уж и случайно

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

Правда лишь в том, что большинство ГСЧ не случайны.

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

Именно эта полуслучайность фактически делает компьютерные ГСЧ уязвимыми для хакеров.

На самом деле есть еще одна причина, по которой ГСЧ может быть только полуслучайным.

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

Поскольку казино – это бизнес, которому необходимо получать прибыль, чтобы быть на плаву, ГСЧ должны быть запрограммированы соответствующим образом.

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

Итак, можно ли взломать ГСЧ?

Генераторы случайных чисел довольно сложны.

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

Вы должны быть полным идиотом, если думаете, что можете взломать Генератор случайных чисел.

Фактически, вам действительно нужна лишь небольшая часть информации, чтобы взломать этот код.

Поскольку ГСЧ – это в основном повторные вызовы функций для генерации «случайных» чисел, все, что вам нужно, это ключ к функции.

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

Это число, также известное как «начальное число», представляет собой начальное целое число, которое вставляется в ГСЧ, с которого начинается вся операция.

Как только вы нашли семя, весь алгоритм можно легко расшифровать.

Если хакер может заменить псевдослучайный бит предсказуемым способом, краткий ответ заключается в том, что безопасность ГСЧ полностью скомпрометирована (и обычно не обнаруживается).

Но, легче сказать, чем сделать.

Есть несколько ярких примеров успешного взлома ГСЧ различными способами.

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

Заключение

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

Однако нельзя сказать, что это легко.

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

Компании, использующие программное обеспечение ГСЧ, также применяют множество защитных стратегий, таких как шифрование, аппаратное обеспечение безопасности, потоковые шифры и сменные ключи.

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

Источник

Как устроены генераторы чисел?

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел

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

Существует много распространенных и достаточно примитивных примеров, на которых можно рассмотреть его устройство: подкидывание любой монеты, бросок игрального кубика и так далее.

Принцип устройства

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

Что такое случайность и как её создать?

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

Это можно объяснить более простым языком: в генераторе истинно случайных чисел просто нельзя выстроить порядок и зависимость выпадающих цифр. Допустим, если вы бросаете первый раз шестигранную игральную кость, то у вас может выпасть абсолютно любое число от 1 до 6 с одинаковой вероятностью 16,(6)%. И независимо от того, какая цифра выпала, она с аналогичной вероятностью может повторно выпасть при втором, сотом, тысячном бросках.

Псевдослучайность

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

Источник

Подробно о генераторах случайных и псевдослучайных чисел

Введение

Как отличить случайную последовательность чисел от неслучайной?

Чуть более сложный пример или число Пи

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел
Последовательность цифры в числе Пи считается случайной. Пусть генератор основывается на выводе бит представления числа Пи, начиная с какой-то неизвестной точки. Такой генератор, возможно и пройдет «тест на следующий бит», так как ПИ, видимо, является случайной последовательностью. Однако этот подход не является критографически надежным — если криптоаналитик определит, какой бит числа Пи используется в данный момент, он сможет вычислить и все предшествующие и последующие биты.
Данный пример накладывает ещё одно ограничение на генераторы случайных чисел. Криптоаналитик не должен иметь возможности предсказать работу генератора случайных чисел.

Отличие генератора псевдослучайных чисел (ГПСЧ) от генератора случайных чисел (ГСЧ)

Источники энтропии используются для накопления энтропии с последующим получением из неё начального значения (initial value, seed), необходимого генераторам случайных чисел (ГСЧ) для формирования случайных чисел. ГПСЧ использует единственное начальное значение, откуда и следует его псевдослучайность, а ГСЧ всегда формирует случайное число, имея в начале высококачественную случайную величину, предоставленную различными источниками энтропии.
Энтропия – это мера беспорядка. Информационная энтропия — мера неопределённости или непредсказуемости информации.
Можно сказать, что ГСЧ = ГПСЧ + источник энтропии.

Уязвимости ГПСЧ

Линейный конгруэнтный ГПСЧ (LCPRNG)

Распространённый метод для генерации псевдослучайных чисел, не обладающий криптографической стойкостью. Линейный конгруэнтный метод заключается в вычислении членов линейной рекуррентной последовательности по модулю некоторого натурального числа m, задаваемой следующей формулой:

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел

где a (multiplier), c (addend), m (mask) — некоторые целочисленные коэффициенты. Получаемая последовательность зависит от выбора стартового числа (seed) X0 и при разных его значениях получаются различные последовательности случайных чисел.

Для выбора коэффициентов имеются свойства позволяющие максимизировать длину периода(максимальная длина равна m), то есть момент, с которого генератор зациклится [1].

Пусть генератор выдал несколько случайных чисел X0, X1, X2, X3. Получается система уравнений

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел

Решив эту систему, можно определить коэффициенты a, c, m. Как утверждает википедия [8], эта система имеет решение, но решить самостоятельно или найти решение не получилось. Буду очень признателен за любую помощь в этом направлении.

Предсказание результатов линейно-конгруэнтного метода

Основным алгоритмом предсказания чисел для линейно-конгруэнтного метода является Plumstead’s — алгоритм, реализацию, которого можно найти здесь [4](есть онлайн запуск) и здесь [5]. Описание алгоритма можно найти в [9].
Простая реализация конгруэнтного метода на Java.

Отправив 20 чисел на сайт [4], можно с большой вероятностью получить следующие. Чем больше чисел, тем больше вероятность.

Взлом встроенного генератора случайных чисел в Java

Многие языки программирования, например C(rand), C++(rand) и Java используют LСPRNG. Рассмотрим, как можно провести взлом на примере java.utils.Random. Зайдя в исходный код (jdk1.7) данного класса можно увидеть используемые константы

Метод java.utils.Randon.nextInt() выглядит следующим образом (здесь bits == 32)

Результатом является nextseed сдвинутый вправо на 48-32=16 бит. Данный метод называется truncated-bits, особенно неприятен при black-box, приходится добавлять ещё один цикл в brute-force. Взлом будет происходить методом грубой силы(brute-force).

Пусть мы знаем два подряд сгенерированных числа x1 и x2. Тогда необходимо перебрать 2^16 = 65536 вариантов oldseed и применять к x1 формулу:

до тех пор, пока она не станет равной x2. Код для brute-force может выглядеть так

Вывод данной программы будет примерно таким:

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

И теперь в исходном коде заменим
crackingSeed.set(seed);
на
crackingSeed.set(getPreviousSeed(seed));

И всё, мы успешно взломали ГПСЧ в Java.

Взлом ГПСЧ Mersenne twister в PHP

Рассмотрим ещё один не криптостойкий алгоритм генерации псевдослучайных чисел Mersenne Twister. Основные преимущества алгоритма — это скорость генерации и огромный период 2^19937 − 1, На этот раз будем анализировать реализацию алгоритма mt_srand() и mt_rand() в исходном коде php версии 5.4.6.

Можно заметить, что php_mt_reload вызывается при инициализации и после вызова php_mt_rand 624 раза. Начнем взлом с конца, обратим трансформации в конце функции php_mt_rand(). Рассмотрим (s1 ^ (s1 >> 18)). В бинарном представление операция выглядит так:

10110111010111100111111001110010 s1
00000000000000000010110111010111100111111001110010 s1 >> 18
10110111010111100101001110100101 s1 ^ (s1 >> 18)
Видно, что первые 18 бит (выделены жирным) остались без изменений.
Напишем две функции для инвертирования битового сдвига и xor

Тогда код для инвертирования последних строк функции php_mt_rand() будет выглядеть так

Если у нас есть 624 последовательных числа сгенерированных Mersenne Twister, то применив этот алгоритм для этих последовательных чисел, мы получим полное состояние Mersenne Twister, и сможем легко определить каждое последующее значение, запустив php_mt_reload для известного набора значений.

Область для взлома

Если вы думаете, что уже нечего ломать, то Вы глубоко заблуждаетесь. Одним из интересных направлений является генератор случайных чисел Adobe Flash(Action Script 3.0). Его особенностью является закрытость исходного кода и отсутствие задания seed’а. Основной интерес к нему, это использование во многих онлайн-казино и онлайн-покере.
Есть много последовательностей чисел, начиная от курса доллара и заканчивая количеством времени проведенным в пробке каждый день. И найти закономерность в таких данных очень не простая задача.

Задание распределения для генератора псевдослучайных чисел

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

Треугольное распределение

Приведем пример генерации случайной величины с треугольным распределением [7] на языке C99.

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел

Экспоненциальное распределение

Тесты ГПСЧ

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

Одним из известных тестов является тест на следующий бит — тест, служащий для проверки генераторов псевдослучайных чисел на криптостойкость. Тест гласит, что не должно существовать полиномиального алгоритма, который, зная первые k битов случайной последовательности, сможет предсказать k+1 бит с вероятностью большей ½.

В теории криптографии отдельной проблемой является определение того, насколько последовательность чисел или бит, сгенерированных генератором, является случайной. Как правило, для этой цели используются различные статистические тесты, такие как DIEHARD или NIST. Эндрю Яо в 1982 году доказал, что генератор, прошедший «тест на следующий бит», пройдет и любые другие статистические тесты на случайность, выполнимые за полиномиальное время.
В интернете [10] можно пройти тесты DIEHARD и множество других, чтобы определить критостойкость алгоритма.

Источник

Про алгоритм случайных чисел на примере казино Вулкан

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

Особенности генераторов случайных чисел

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

Алгоритм онлайн-казино или рулетки писали тоже программисты и математики. А это значит, что они не хуже вас знают эту хитрость про псевдослучайные числа.

можно ли угадать генератор случайных чисел. Смотреть фото можно ли угадать генератор случайных чисел. Смотреть картинку можно ли угадать генератор случайных чисел. Картинка про можно ли угадать генератор случайных чисел. Фото можно ли угадать генератор случайных чисел

Онлайн-калькулятор для оценки шансов

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *