Подтвердить что ты не робот

Какой тип генератора случайных чисел используется в игровой индустрии казино?

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

EDIT: Связанные вопросы:

4b9b3361

Ответ 1

Для игровых приложений для казино я считаю, что рассадка алгоритма является самой важной частью, чтобы убедиться, что все загруженные игры не проходят через одну и ту же последовательность или небольшой набор предсказуемых последовательностей. То есть источником энтропии, ведущей к семени для начального положения, является критическая вещь. Помимо этого, любой генератор случайных чисел хорошего качества, где каждая битная позиция, имеющая вероятность 50/50, равна 1/0, а период относительно длинный, будет достаточным. Например, что-то вроде Mersenne twister PRNG обладает такими свойствами.

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

Однако в случае игры в казино вы (или должны) не иметь видимости фактических чисел, генерируемых под капотом. Каждый раз, когда генерируется случайное число - скажем, 32-битное число - этот номер будет использоваться, например, mod 52 для алгоритма перетасовки колоды.... нет, где в этом процессе вы не знаете, какие числа были генерируемый алгоритмом для перетасовки этой колоды. То есть, большинство бит "случайности" просто выбрасывается, и даже те, которые используются, у вас нет видимости. Поэтому нет способа перепроектировать состояние.

Возвращаясь к истинному источнику энтропии, чтобы засеять весь процесс, это сложная часть. См. Запись в Wikipedia entropy для некоторых отправных точек при использовании методов.

Как и в стороне, если вы хотите получить криптографические последовательности случайных чисел из "обычного" алгоритма, простой подход состоит в том, чтобы последовательно принимать несколько случайных чисел, объединять их вместе, а затем запускать что-то вроде MD5 или SHA-1 на них и результат такой же случайный, а также криптографически безопасный. То есть вы просто создали свой собственный "безопасный" генератор случайных чисел.

Ответ 2

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

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

Pokerroom.com используется только для использования Java SecureRandom (они, вероятно, все еще делают, но я не мог найти информацию на своем сайте). Это в основном достаточно хорошо, но оно страдает от степени свободы проблемы.

Большинство реализаций RNG на складе (например, Mersenne Twister) не имеют достаточных степеней свободы, чтобы иметь возможность генерировать все возможные перетасовки колоды из 52 карт из заданного начального состояния (это то, что я пытался объяснить в предыдущее сообщение в блоге).

РЕДАКТИРОВАТЬ: Я отвечал в основном в отношении онлайн-покер-румов и казино, но те же соображения относятся к физическим видео-покерным и видео-слотам в казино реального мира.

Ответ 3

Мы использовали Protego R210-USB TRNG (и версию, отличную от usb, до этого) в качестве случайных генераторов семян в приложениях для казино, с java.security.SecureRandom наверху. У нас была Шведская национальная лаборатория судебной медицины провела отдельный аудит R210 и прошла без ошибок.

Ответ 4

Вероятно, вам нужен криптографически безопасный псевдослучайный генератор. Существует много вариантов. Например, Google "Blum-Blum-Shub".

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

Безопасность генераторов часто измеряется в отношении параметра безопасности. В случае BBS это размер модуля. Это ничем не отличается от других криптографических материалов. Например, RSA защищен только тогда, когда ключ достаточно длинный.

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

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

Ответ 5

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

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

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

Ответ 7

Я полагаю, что в настоящее время для приложений и оффшорных азартных игр все-таки есть что-то, но все эти другие ответы неполны, по крайней мере, для лицензированных машин Nevada Gaming Control Board, которые, как мне кажется, изначально связаны с вопросом.

Технические спецификации для RNG, лицензированных в Неваде для целей игры, изложены в Правиле 14.040 (2).

По состоянию на 24 мая 2012 года здесь приведено краткое описание правил, которым должен следовать RNG:

  • Статические семена нельзя использовать. Вы должны засеять RNG с использованием миллисекундного источника времени или другого истинного источника энтропии, который не имеет внешнего считывания в любом месте на машине. (Это помогает уменьшить частоту атак "магического числа" ).
  • RNG должен продолжать генерировать числа в своей последовательности не менее 100 раз в секунду, когда игра не воспроизводится. (Это помогает избежать временных атак).
  • Выходы RNG нельзя использовать повторно; они должны использоваться ровно один раз, если вообще, а затем выброшены.
  • Мультисистемные шкафы должны использовать отдельный RNG и отдельный семенной материал для каждой игры.
  • Игры, в которых используются RNG для помощи в выборе номеров от имени игрока (например, Lotto Quick Pick), должны использовать отдельный RNG для этого процесса.
  • Игры не должны откатывать RNG, пока они не понадобятся в игре. (т.е. вам нужно подождать, пока игрок не захочет заниматься или вращаться перед генерированием RNG).
  • RNG должен пройти тест на квадратный максимум в 95%, основанный на 10000 испытаниях, в отличие от системного теста. Он должен вывести предупреждение, если этот тест завершился неудачно, и он должен отключить воспроизведение, если он не работает дважды подряд.
  • Он должен помнить и иметь возможность сообщать о последних 10 результатах теста, как описано в 7.
  • Каждый возможный исход игры должен быть генерируемым RNG. В качестве примера pessimal линейные конгруэнтные генераторы фактически не генерируют каждый возможный выход в своем диапазоне, поэтому они не очень полезны для игр.

Кроме того, ваш дизайн машины должен быть представлен игровой комиссии, и его необходимо одобрить, что дорого и требует много времени. Есть несколько сторонних компаний, которые специализируются на аудите вашего нового RNG, чтобы убедиться, что он случайный. Gaming Laboratories публикует еще более строгий набор стандартов, чем делает Nevada. Они более подробно описывают ограничения аппаратных RNG а Неваде, в частности, нравится видеть основные RNG, которые она ранее одобрила. Это может стать очень дорогостоящим, поэтому многие разработчики предпочитают лицензировать существующий ранее одобренный RNG для новых игровых проектов.

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

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

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