Jaki rodzaj generatora liczb losowych jest używany w branży gier kasynowych? [zamknięte]

Biorąc pod uwagę bardzo wysokie wymagania dotyczące nieprzewidywalności, aby zapobiec bankructwu kasyn, jaki algorytm generowania liczb losowych i schemat siewu jest zwykle używany w urządzeniach takich jak automaty do gier, Maszyny wideo poker itp.?

EDIT: powiązane pytania:

Author: Community, 2009-01-09

10 answers

W przypadku aplikacji do gier kasynowych, myślę, że siedzenie algorytmu jest najważniejszą częścią, aby upewnić się, że wszystkie gry "uruchomione" nie przebiegają przez tę samą sekwencję lub jakiś mały zestaw przewidywalnych sekwencji. Oznacza to, że źródłem entropii prowadzącej do zalążka dla pozycji wyjściowej jest rzecz krytyczna. Poza tym każdy generator liczb losowych dobrej jakości, w którym każda pozycja bitowa as Ma prawdopodobieństwo ~50/50 wynoszące 1/0, a okres jest stosunkowo długi, byłby wystarczający. Na przykład, coś w rodzaju Mersenne twister PRNG ma takie właściwości.

Używanie bezpiecznych kryptograficznie generatorów losowych staje się ważne tylko wtedy, gdy rzeczywisty wynik generatora losowego może być oglądany bezpośrednio. Na przykład, jeśli monitorowałeś każdą liczbę faktycznie wygenerowaną przez generator liczb - po obejrzeniu wielu liczb w sekwencji - za pomocą Nie-kryptograficznego generatora informacje o tej sekwencji mogą prowadzić do ustalenia informacji o wszystkich liczbach. stan wewnętrzny generatora. W tym momencie, jeśli wiesz, jak wygląda algorytm, będziesz w stanie przewidzieć przyszłe liczby, a to byłoby złe. Generator kryptograficzny uniemożliwia powrót inżynierii odwrotnej do stanu wewnętrznego, dzięki czemu przewidywanie przyszłych liczb staje się"niemożliwe".

Jednak w przypadku gry w kasynie, nie będziesz (lub nie powinieneś) mieć wglądu w rzeczywiste liczby generowane pod maską. Za każdym razem, gdy generowana jest losowa liczba-powiedzmy Numer 32 - bitowy-numer ten będzie wówczas używany np. mod 52 do tasowania talii algorithm....no gdzie w tym procesie masz pojęcie, jakie liczby były generowane przez algorytm do przetasowania tej talii. Oznacza to, że większość bitów "przypadkowości" jest po prostu wyrzucana, a nawet te używane, do których nie masz widoczności. Dlatego nie ma sposobu na inżynierię wsteczną stanu.

Powrót do prawdziwego źródła entropii do zalania całego procesu, czyli trudno część. Zobacz wpis w Wikipedii na temat entropii aby uzyskać kilka punktów początkowych na temat technik.

na marginesie, jeśli chcesz kryptograficznie sekwencji liczb losowych z "zwykłego" algorytmu, prostym podejściem jest wziąć kilka losowych liczb w sekwencji, połączyć je ze sobą, a następnie uruchomić coś takiego jak MD5 lub SHA-1 na nich, a wynik jest tak samo losowe, a także kryptograficznie bezpieczne. Oznacza to, że właśnie stworzyłeś swój własny" bezpieczny " generator liczb losowych.

 13
Author: Tall Jeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 13:32:15

Jest wiele rzeczy, które strony z Grami muszą wziąć pod uwagę przy wyborze / wdrażaniu RNG. Bez due dilligence, to może pójść spektakularnie źle .

Aby uzyskać licencję na prowadzenie strony z grami w określonej jurysdykcji zwykle wymaga, aby RNG został certyfikowany przez niezależną stronę trzecią. Testerzy zewnętrzni analizują kod źródłowy i przeprowadzają testy statystyczne (np. Diehard), aby upewnić się, że RNG zachowuje się losowo. Renomowany poker strony będą zazwyczaj zawierać szczegóły certyfikacji, że ich RNG został poddany (na przykład: strona RNG PokerStars).

Byłem zaangażowany w kilka projektów gier, a dla jednego z nich musiałem zaprojektować i wdrożyć część RNG, więc musiałem zbadać wszystkie te problemy. Większość witryn pokerowych użyje jakiegoś urządzenia sprzętowego do entropii, ale nie będą polegać tylko na sprzęcie. Zwykle będzie używany w połączeniu z pseudo-RNG (PRNG). Istnieją dwa główne powody to. Po pierwsze, sprzęt jest powolny, może tylko wyodrębnić pewną liczbę bitów entropii w danym okresie Czasu z dowolnego fizycznego procesu, który monitoruje. Po drugie, sprzęt zawodzi w nieprzewidywalny sposób, że oprogramowanie PRNGs nie.

Fortuna jest najnowocześniejszą technologią pod względem kryptograficznie silnych PRNG. Może być zasilany z jednego lub kilku źródeł zewnętrznych (np. sprzętowego RNG) i jest odporny na próby exploitów lub awarię sprzętu RNG. Jest to przyzwoity wybór dla witryn z Grami, choć niektórzy mogą twierdzić, że jest to przesada.

Pokerroom.com używali po prostu SecureRandom Javy (prawdopodobnie nadal tak robią, ale nie mogłem znaleźć szczegółów na ich stronie). Jest to w większości wystarczająco dobre, ale cierpi z powodu problemu stopni swobody.

Mersenne Twister) nie mają wystarczającej swobody, aby móc wygenerować każde możliwe przetasowanie 52-kartowej talii z danego inicjału stan (to jest coś, co próbowałem wyjaśnić w poprzedni wpis na blogu ).

EDIT: odpowiedziałem głównie w odniesieniu do pokoi pokerowych i kasyn online, ale te same względy dotyczą fizycznego pokera wideo i automatów wideo w kasynach świata rzeczywistego.

 14
Author: Dan Dyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-10 14:08:06

Używaliśmy PROTEGO R210-USB TRNG (a wcześniej nie-usb) jako generatorów nasion w aplikacjach kasynowych, z Javą.Ochrona.SecureRandom na górze. Zleciliśmy oddzielny audyt R210 szwedzkiemu Narodowemu Laboratorium Kryminalistycznemu, który przeszedł bez wad.

 5
Author: neu242,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-30 09:11:08

Prawdopodobnie potrzebujesz kryptograficznie bezpiecznego generatora pseudolosowego. Istnieje wiele wariantów. Google "Blum-Blum-Shub", na przykład.

Właściwości bezpieczeństwa tych pseudolosowych generatorów będą na ogół takie, że nawet jeśli atakujący może zaobserwować wielomianowo wiele wyjść z takich generatorów, nie będzie możliwe odgadnięcie następnego wyjścia z prawdopodobieństwem znacznie lepszym niż losowe zgadywanie. Również nie jest możliwe odróżnienie mocy takich generatorów od naprawdę przypadkowe kawałki. Zabezpieczenie utrzymuje się nawet wtedy, gdy atakujący zna wszystkie algorytmy i parametry (z wyjątkiem tajnego ziarna).

Bezpieczeństwo generatorów jest często mierzone w odniesieniu do parametru bezpieczeństwa. W przypadku kulek jest to wielkość modułu. To nie różni się od innych rzeczy kryptograficznych. Na przykład RSA jest bezpieczne tylko wtedy, gdy klucz jest wystarczająco długi.

Zauważ, że wyjście takich generatorów może nie być jednolite (w rzeczywistości może być daleko od jednolity w sensie statystycznym). Ale ponieważ nikt nie może odróżnić dwóch dystrybucji bez nieskończonej mocy obliczeniowej, Generatory te wystarczą w większości aplikacji, które wymagają naprawdę losowych bitów.

Należy jednak pamiętać, że te kryptograficznie bezpieczne Generatory pseudolosowe są zwykle powolne. Jeśli więc szybkość jest rzeczywiście problemem, mniej rygorystyczne podejścia mogą być bardziej istotne, takie jak korzystanie z funkcji hash, jak sugeruje Jeff.

 4
Author: PolyThinker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 04:49:31

Automaty Do Gier w kasynie generują losowe liczby w sposób ciągły z bardzo dużą prędkością i wykorzystują najnowsze wyniki, gdy użytkownik pociągnie za dźwignię (lub naciśnie przycisk), aby zakręcić bębnami.

Można użyć nawet prostego generatora. Nawet jeśli znasz zastosowany algorytm, nie możesz zaobserwować, gdzie w sekwencji jest, ponieważ prawie wszystkie wyniki są odrzucane. Jeśli w jakiś sposób wiesz, gdzie to jest w sekwencji, musisz mieć milisekundę lub lepszy czas, aby skorzystać z to.

Nowoczesne "mechaniczne maszyny bębnowe" używają PRNG i napędzają bębny za pomocą silników krokowych, aby symulować stary styl spin-and-brake.

 2
Author: Adrian McCarthy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-14 16:19:28

Kasyna nie powinny używać pseudolosowych generatorów liczb, powinny używać sprzętowych: http://en.wikipedia.org/wiki/Hardware_random_number_generator

 1
Author: FryGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 23:58:47

Przypuszczam, że w dzisiejszych czasach wszystko dotyczy aplikacji i hazardu offshore, ale wszystkie te inne odpowiedzi są niekompletne, przynajmniej w przypadku licencjonowanych maszyn Nevada Gaming Control Board, o czym myślę, że pytanie dotyczy pierwotnie.

Specyfikacje techniczne dla RNGs licencjonowanych w Nevadzie do celów gier są określone w Rozporządzenia 14.040(2).

Od 24 maja 2012 roku, oto podsumowanie zasad, których RNG musi przestrzegać:

  1. statyczne nasiona nie mogą być używane. Masz aby zasiać RNG za pomocą źródła czasu milisekundy lub innego źródła prawdziwej entropii, które nie ma zewnętrznego odczytu nigdzie na maszynie. (Pomaga to zmniejszyć częstość ataków "magiczną liczbą")
  2. RNG musi nadal generować liczby w sekwencji co najmniej 100 razy na sekundę, gdy gra nie jest rozgrywana. (Pomaga to uniknąć ataków czasowych)
  3. Wyjścia RNG nie mogą być ponownie użyte; muszą być użyte dokładnie raz, jeśli w ogóle, a następnie wyrzucone.
  4. Multi-system szafy muszą używać oddzielnego RNG i oddzielnego nasion dla każdej gry.
  5. Gry, które używają RNG do pomagania w wyborze liczb w imieniu gracza (takie jak Lotto Quick Pick), muszą używać oddzielnego RNG do tego procesu.
  6. gry nie mogą rzucać RNG, dopóki nie są rzeczywiście potrzebne w grze. gracz musi poczekać, aż gracz zdecyduje się rozdać lub zakręcić, zanim wygeneruje RNG.]}
  7. RNG musi przejść test chi-kwadrat 95% zaufania oparty na 10 000 próbach jako oddzielny system test. Musi wyświetlać ostrzeżenie, jeśli test się nie powiedzie, i musi wyłączyć odtwarzanie, jeśli nie powiedzie się dwa razy z rzędu.
  8. musi pamiętać i być w stanie przedstawić ostatnie 10 wyników testu, jak opisano w 7.
  9. każdy możliwy wynik gry musi być generowany przez RNG. Jako pesymistyczny przykład, liniowe Generatory kongruencyjne w rzeczywistości nie generują wszystkich możliwych wyników w swoim zakresie, więc nie są zbyt przydatne w grach.

DODATKOWO konstrukcja maszyny ma aby zostać przedłożonym Komisji Gier i musi zostać zatwierdzony, co jest kosztowne i zajmuje dużo czasu. Jest kilka Firm Zewnętrznych , które specjalizują się w audytowaniu twojego nowego RNG, aby upewnić się, że jest to losowe. Gaming Laboratories publikuje jeszcze bardziej surowy zestaw standardów niż Nevada robi. Wchodzą w znacznie więcej szczegółów na temat ograniczeń sprzętowych RNGs, A Nevada w szczególności lubi widzieć rdzeń rngs, który został wcześniej zatwierdzony. To może wszystkie są bardzo drogie, dlatego wielu deweloperów woli licencjonować istniejące wcześniej zatwierdzone RNG dla nowych projektów gier.

Oto zabawna lista ataków generatora liczb losowych , aby nie spać do późna w nocy.

Tylko dla super-nerdów: źródłem większości urządzeń USB jest zazwyczaj dioda avalanche. Jednak szum termiczny wytwarzany przez tego typu Diody nie jest kwantowo-losowy i można wpływać na losowość lawiny Diody poprzez znaczne obniżenie temperatury.

Na koniec ktoś powyżej zalecał użycie Twistera Mersenne ' a do generowania liczb losowych. Jest to zły pomysł, chyba że bierzesz dodatkową entropię z innego źródła. W przeciwieństwie do innych gier z serii, Twister jest bardzo przydatny w grach i grach kryptograficznych.

 1
Author: johnwbyrd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-17 21:37:03

Jeśli chcesz zrobić to poprawnie, musisz uzyskać fizyczny - ERNIE Brytyjski National savings number picker używa szumu strzałowego w neonowych tubach.

 0
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 03:08:46

Na pewno widziałem niemiecką maszynę hazardową, która nie mogła być uruchamiana komercyjnie po danej dacie, więc przypuszczam, że był to PNRG z looong one time Pad seed list.

 0
Author: lImbus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-20 19:05:59

Większość stron pokerowych używa sprzętowych generatorów liczb losowych. Będą również modyfikować wyjście, aby usunąć wszelkie odchylenia skalowania i często używają "garnków" liczb, które można "mieszać" za pomocą zdarzeń entropicznych (aktywność użytkownika, zdarzenia Serer we/wy itp.). Często wypadkowe liczby indeksują wstępnie wygenerowane talie (zaczynając od posortowanej listy kart).

 0
Author: Tim Ring,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-06 13:24:31