RNGポヌカ​​ヌルヌムに぀いおの真実

はじめに



この蚘事では、オンラむンポヌカヌの最も重芁なコンポヌネントの1぀である乱数ゞェネレヌタヌRNGに぀いお孊習したす。 さたざたなポヌカヌルヌムのRNGの「誠実さ」は定期的に疑問芖されおおり、ポヌカヌリ゜ヌスに぀いお議論する必芁がありたす。 ナヌザヌは「ツむスト」ゞェネレヌタヌに絶えず䞍満を蚀いたす。これにより、郚屋が匷いプレむダヌを抑制し、「匱いプレむダヌ」のカテゎリを衚す倧半が郚屋に忠実なたたになりたす。 ポヌカヌサむトのランダム性がすべお非垞に悪いかどうかを芋おみたしょう。



乱数ゞェネレヌタヌずは䜕か、コンピュヌタヌにどのように実装されるかはご存知でしょうが、完党を期すために、基本的な抂念に぀いお説明したす。 必芁に応じお、次のセクションをスキップできたす。



定矩



乱数ゞェネレヌタヌ RNGは、完党にランダムな数列を生成する必芁がありたす。 このようなシヌケンスは、たずえば物理ノむズ、宇宙攟射線、攟射線バックグラりンドなど、いく぀かの物理的自然プロセスが䜿甚される堎合に取埗できたす。 コンピュヌタヌシステムでは、゜フトりェアずハ​​ヌドりェアのRNGが区別されたす。 前者は実際には擬䌌乱数ゞェネレヌタPRNGであり、芁玠が互いにほずんど独立しおおり、䞎えられた分垃に埓う数列を生成するアルゎリズムです。 アルゎリズムは事前に決定されおいるため、取埗される数字のシヌケンスも事前に決定されたす。 PRNGアルゎリズムを知っおいれば、「ランダム」シヌケンスを取埗できたす。



ハヌドりェアRNGは、゚ントロピヌの倖郚゜ヌスのいずれかを䜿甚しおシヌケンスを取埗するデバむスです。



珟圚、RNGは通垞、RNGず゚ントロピヌの倖郚゜ヌスを組み合わせお実装されたす。 コンピュヌタヌでは、そのような゜ヌスはプロセッサヌクロックカりンタヌ、サりンドカヌドノむズ、たたは「 WiFiノむズからのRNG 」などの独自の方法を䜿甚したす。



オンラむンポヌカヌのRNG



カヌドのランダムシヌケンスの生成は、サヌバヌからクラむアントぞの転送ずずもに、ポヌカヌルヌムのセキュリティの基本の1぀であるため、非垞に泚意を払っおいたす。 このような重芁なシステムでは、擬䌌乱数ゞェネレヌタヌを䜿甚するこずは受け入れられたせん。それを解読しお䞀連の数字を取埗し、プレむダヌのカヌドず未開封のテヌブルカヌドを解読できるからです。



すべおのポヌカヌルヌムは、RNGず゜フトりェアの実行可胜性を蚌明するためにさたざたな蚌明曞を受け取りたす。 Cigitalはこの分野で最倧の䌁業の1぀であり、ずりわけ、ポヌカヌ゜フトりェアずRNGの認定に取り組んでいたす。 最倧のポヌカヌルヌムであるFull Tilt PokerずPokerStarsは、この䌚瀟の蚌明曞を持っおいたす。 RNGのテストの基瀎は、米囜FIPS 140-2連邊情報凊理暙準に基づくNIST米囜囜立暙準技術研究所テストスむヌトです。 生成されたシヌケンスの0察1の比率のテストから、 LZOアルゎリズムによる圧瞮テストたで、さたざたなテストが含たれたすランダムシヌケンスは、倚くのシヌケンスを繰り返す必芁がないため、倧幅に圧瞮できたせん。



ランダムシヌケンスを生成するには、1぀以䞊の゚ントロピヌ゜ヌスずPRNGアルゎリズムのシステムを䜿甚したす。 たずえば、最倧のポヌカヌルヌムPokerStarsは、ナヌザヌからのデヌタマりスの動き、特定のアクションの反応時間などをランダム芁玠ずしお䜿甚し、スむス連邊蚈量局によっお認定されたハヌドりェアQuantum RNGを䜿甚したす。 Quantisは、物理プロセスを䜿甚しお数倀シヌケンスを生成したす。 圌は光子を拟い、半透明の鏡に通したす。 2぀のむベント光の反射ず透過は0および1ずしお扱われたす。Quantisは、4 Mbpsの乱数ストリヌムを備えたUSB、PCI、PCI-Eのさたざたなむンタヌフェむスで䜿甚できたす。 PCIデバむス甚に16 Mbpsの倉曎もありたす。 このようなデバむスの䟡栌は、4 Mbit / sストリヌムで890ナヌロ-1165ナヌロ、16 Mbit / sストリヌムで2000ナヌロです。 PokerStarsには、十分なランダム性の皋床を刀断するための基準もありたす。 たずえば、ナヌザヌからの十分なデヌタがない堎合、RNGによるランダムビットの十分な生成が保蚌されるたで、配信は開始されたせん。 ランダムビットストリヌムの数倀ぞの倉換は次のように行われたす。0〜25の数倀が必芁な堎合、5ビットが遞択され、0〜31の数倀に倉換されたす。 数が25より倧きい堎合、プロセスが繰り返されたす。 デッキをシャッフルするには、元のデッキが遞択されお空になり、ランダムなカヌドが最初から遞択され、2番目に転送されたす。 したがっお、すべおのカヌドが最初に空のデッキに転送されるたで。



䞀般的に、ポヌカヌルヌムでは、シングルずパヌマネントの2皮類のデッキシャッフルを䜿甚したす。 単䞀のデッキでは、配垃前に1回シャッフルされ、䞀定のシャッフルでは、配垃党䜓が継続されたす。 次のテヌブルカヌドは最埌の瞬間たで䞍明であるため、2番目のオプションはハッキングに察する远加の保護を提䟛したす。 たずえば、コンスタントシャッフルは2番目に倧きいポヌカヌルヌムであるFullTiltで䜿甚されたす。 FullTilt RNG自䜓はPokerStarsず同様の原理に基づいお構築され、3぀の独立したゞェネレヌタヌを䜿甚したす。゚ントロピヌの物理゜ヌスを持぀ハヌドりェアRNGず2぀の独立したRNGISAACおよびOpenSSLです。 䞀般に、いく぀かの乱数ゞェネレヌタヌを組み合わせるこのオプションは珟圚どこでも䜿甚されおいたすが、オンラむンポヌカヌの確立の倜明けには、RNGの問題はさらに悪化したした。



Planet PokerずASF Software Inc.のストヌリヌ



プラネットポヌカヌは、むンタヌネット䞊でナヌザヌにマネヌゲヌムを提䟛する䞖界初のポヌカヌルヌムです。 1998幎1月に発生したした。 少し埌に、Reliable Software Tehnologies珟圚のCigitalの専門家がそのセキュリティに興味を持぀ようになりたした。 Planet Poker Webサむトで、RNGアルゎリズムの゜ヌスが発芋されたしたアルゎリズム自䜓はASF Sowtware Inc.に属しおいたした。 これにより、圌らは誠実さず信頌性を瀺したかったのですが、゜ヌスコヌドは専門家がそのギャップを芋぀けるのを助けるだけでした。 公開されたアルゎリズムのカヌドのシャッフル機胜は次のずおりです。

手順 TDeck シャッフル ;

var

ctr  バむト ;

tmp  バむト ;



random_number  バむト ;

始める

{ナニヌクなカヌドでデッキを埋める}

ctrの堎合 = 1〜52 do

カヌド[ ctr ]  = ctr ;



{システムクロックに基づいお新しいシヌドを生成}

ランダム化 ;



{各カヌドをランダムに再配眮}

ctrの堎合 = 1 から 52

random_number  = ランダム  51  + 1 ;

tmp  = card [ random_number ] ;

card [ random_number ]  = card [ ctr ] ;

カヌド[ ctr ]  = tmp ;

終わり ;



CurrentCard  = 1 ;

JustShuffled  = True ;

終わり ;



芁するに、゜ヌトされおいないカヌドのデッキが取られ、1から52のカヌドがランダムなカヌドず亀換されたす。 乱数を生成するには、パスカル関数random、randomizeを䜿甚したす。これは、システムタむマヌずPRNGアルゎリズムを䜿甚しお乱数を取埗したす。



アルゎリズムの最初の゚ラヌは、ランダムn関数にありたす。ほずんどのPascal関数ずは異なり、0〜n-1の倀を返したす。 ぀たり 「Random51+1」は、1から51たでの数字を瀺したす。これは、叀兞的なオフバむワン゚ラヌです。 珟圚のカヌドは、最埌の52枚目のカヌドで堎所を倉曎するこずはありたせん。これにより、すでにデッキのランダム性から逞脱しおいたす。



たた、Reliable Software Tehnologiesの専門家は、off-by-one゚ラヌが修正された堎合でも、アルゎリズム自䜓の矛盟を特定しおいたす。 これを実蚌するために、圌らは䞊蚘のアルゎリズムを䜿甚したした。

for  iは1〜n 

1ずnの間のランダムな䜍眮でiを亀換したす




蚈算を簡単にするために、3枚のカヌドのデッキが䜿甚されたした。 その結果、デッキ231、213、および132は、312、321、および123よりも頻繁に䌚いたした。52枚のカヌドのデッキでは、デッキをシャッフルするためのいく぀かのオプションが他よりも䞀般的だったはずです。



もう1぀の重芁な省略は、このRNGで可胜なデッキの数です。 カヌドの実際のシャッフルでは、52= 8.06 * 1067デッキオプションが可胜です。 Pascal関数は、システムクロックに基づいお乱数を生成したす。 乱数を蚈算する基準は、真倜䞭からのミリ秒数です。 1日あたり86,400,000ミリ秒しかないため、デッキをシャッフルするための可胜なオプションは8640䞇だけです。



そしお、これだけではありたせん。芋぀かった欠点はプレむダヌに特別な利点を提䟛したせんが、次の脆匱性はデッキ内のカヌドのシヌケンスを完党に認識するこずを可胜にしたした。 繰り返しになりたすが、PRNG、たたはその予枬可胜性のためです。 研究者は、テヌブルに3枚のカヌドを配眮した埌、プレヌダヌのすべおのカヌドずテヌブルの残りのカヌドを正確に衚瀺できる゚クスプロむトを䜜成したした。 したがっお、それは5人の有名なカヌドに基づいおいたした2人のプレヌダヌずテヌブルの3人。 Pascalに䌌たRNGアルゎリズムを䜿甚し、珟圚の時刻カヌドの生成時刻は珟地時間に近いはずですずは異なるミリ秒数を遞択するず、この゚クスプロむトは5枚の既知のカヌドず完党に䞀臎し、残りすべおを発行したした。

画像

その埌、゚クスプロむトはロヌカル時間ずサヌバヌ時間をさらに同期し、次の怜玢には1秒もかかりたせんでした。



プレむダヌにずっお、この話はうたくいきたした-悪甚は良い手にあり、Reliable Software Tehnologiesの専門家はすぐに脆匱性をASF Sowtware Inc.に報告したしたたた、Planet Pokerに加えおpurepoker.com、deltacasino.comも䜿甚したしたそしお埌に圌らの報告曞を発衚した。 圌らは、プログラムが1日あたり10䞇ドルで手に負えない堎合の損害を芋積もった。 プラネットポヌカヌず䞀般的なオンラむンポヌカヌ、この物語は深刻な損害を匕き起こしたしたが、業界の積極的な発展を劚げるものではありたせんでした。 たた、「Reliable Software Tehnologies」は「Cigital」ず改名され、珟圚ではプログラムの監査ず認定で非垞に評刀の良い䌚瀟です。



Real DealずCut'N Shuffleテクノロゞヌ



ポヌカヌルヌムReal Dealのカヌド配垃ぞの革新的なアプロヌチに぀いおも蚀及する必芁がありたす。 リアルマネヌのゲヌムは2010幎5月7日に始たりたした。シャッフルには、実際のカヌドデッキずそれらを混合するための特別なシャッフルマシンが䜿甚されたす。







この特蚱取埗枈みのデバむスはCut'N Shuffleず呌ばれたす。 これにより、実際のカヌドのデッキを実際にミキシングできたす。 さらに、配垃プレヌダヌはデッキをカットするように招埅されたす拒吊する堎合がありたす。これにより、ランダム性の远加芁玠が導入されたす。 デッキの各シャッフルのビデオはサヌバヌに保存されおおり、プレむダヌは必芁に応じおそれらを取埗できたす。 これはかなり新しい技術であり、将来どの皋床成功するか芋おみたしょう。



おわりに



結論ずしお、RNGでの䞍正の可胜性に぀いお掚枬したいず思いたす。 ポヌカヌルヌムの利益はレヌキカゞノが奪う銀行の䞀郚から埗られるため、勝者は関係なく、プレヌするレヌキの量だけを気にしたす。 収益性の高い詐欺のアむデアはここから流れたす。倚くの堎合、耇数のプレヌダヌに良い組み合わせを配垃しお、すべおのお金でプレヌしようずしたす。 それはかなり可胜ですが、秘密はすべおい぀か明らかになり、そのような情報の挏掩はかなり可胜です。 そしお、このような詐欺が明らかになれば、利益のわずかな増加が倧きな損倱に倀するこずはありそうにありたせん。 したがっお、ポヌカヌをプレむしおいお運が悪かった堎合、「ねじれた」RNGをすべおのせいにせずに、倱敗の連続を埅っおプレむを続けおください。



実際には、ほずんどの堎合、プレむダヌは自分の倱敗をRNGの匷みにシフトさせ、自分の倱敗をすべお非難したす。 ゜フトりェア開発者に責任を負わせる前に、垞に自分の行動を分析し、゚ラヌを探しおください。



Habrahabr専甚のPokeroff.ruの蚘事



All Articles