(57)【要約】本発明は、ゲーム特定プラットフォームのためのアーキテクチャ（１００）及び方法を提供し、ゲームコード及びその他のデータの安全な格納及び検証を特徴とし、コンピュータ化賭博ゲームシステム及び／又はネットワークシステムと安全にデータを交換することができ、更に、単純かつ容易に管理できるようにこれを行う。本発明は、Nevada Gaming Regulations Commission又はその他の規制監督官庁による等して、プルーフ又は承認されたゲームプログラムコードを特定することができる。本発明は、これら及びその他の機能を設けるに当たり、乱数を暗号化し、暗号化した乱数を格納し、乱数及びカジノゲームデータ集合をハッシュして第１ビットストリングを発生し、第１ビットストリングを格納する。
2005523668.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ化賭博ゲーム装置であって、
プロセッサと、メモリと、乱数発生器と、不揮発性記憶装置とを有し、前記コンピュータ化賭博ゲームを制御するように動作可能なコンピュータ化ゲームコントローラと、
格納されているゲームデータと、
認証プログラムと、
を備え、
前記認証プログラムがゼロ知識プルーフシーケンスを検証可能である
ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、ゲーム制御を認証することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項３】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、格納されているゲームデータを検証することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項４】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、格納されているゲームデータを調べて、格納されているカジノゲームデータを認証することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項５】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、格納されているゲームデータを認証する際、ａ）秘密を与え、ｂ）Ｎ回の繰り返しを行い、ｃ）Ｎ個の乱数を発生し、ｄ）前記乱数を数学的関数を用いて処理することによって、秘密の存在のプルーフのＮ個のランダム順列を、前記乱数から発生し、ｅ）関数Ｖ=Ｓ2 mod Ｎとして秘密の存在のプルーフを実行し、Ｎ個のランダム順列及びゲームデータＤを一方向ハッシュ関数にかけて、１及び０のランダムシーケンスを得て、ｆ）各ビットを用いて判断を行い、各判断が異なる関連付けに至り、前記ランダムシーケンスの各ビットが前記一方向ハッシュ関数によって生成され、ｇ）このステップの結果を、前記ランダム順列における対応する要素と共に格納し、
前記手順のステップｄ）及びｅ）を繰り返すことによって、全てのステップを適正に完了し、正常に実行することによって、前記ゲーム装置におけるデータ集合Ｄを認証する、
ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項６】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゲームデータを不揮発性記憶装置に格納し、１組のランダム順列と共にハッシュし、得られた値を用いてゼロ知識プルーフシーケンスを完了することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項７】
請求項６記載のコンピュータ化賭博ゲーム装置において、前記得られた値は、前記ゲームデータ及び前記ランダム順列を一方向ハッシュ関数によってハッシュした結果であることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項８】
請求項６記載のコンピュータ化賭博ゲーム装置において、ハッシュは、回路内有効性判断部において行われることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項９】
請求項４記載のコンピュータ化賭博ゲーム装置において、前記プログラムは、ｉ）前記ゼロ知識プルーフシーケンスに対する前記格納されている応答が正しい場合、前記カジノゲームデータ集合を確認し、ｉｉ）前記ゼロ知識プルーフシーケンスに対する前記格納されている応答が正しくない場合、前記カジノゲームデータ集合を不良と識別する、ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１０】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記カジノゲームデータ集合及び少なくとも１つのランダム順列を、キー依存ハッシュ関数でハッシュする、ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１１】
請求項４記載のコンピュータ化賭博ゲーム装置において、前記カジノゲームデータ集合及び少なくとも１つのランダム順列を、キー依存ハッシュ関数でハッシュする、ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１２】
請求項４記載のコンピュータ化賭博ゲーム装置において、前記コンピュータ化されたゲームコントローラ上で実行する連続実行プログラムスレッドにおいて、前記ゲームプログラムをランダムアクセスメモリにロードした後に、前記ゲームデータを乱数でハッシュし、ゼロ知識応答を、ゼロ知識プルーフ応答に関する格納されているデータと比較する、ことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１３】
請求項４記載のコンピュータ化賭博ゲーム装置において、ゼロ知識プルーフシーケンスにおいて少なくとも１つの応答が正しくない場合、前記コンピュータ化賭博ゲームシステムをチルト状態にすることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１４】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記コンピュータ化賭博ゲーム装置の一部をなす不揮発性メモリに前記ゲームデータを格納することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１５】
請求項４記載のコンピュータ化賭博ゲーム装置において、システムハンドラアプリケーションが、暗号関数をロードし実行し、続いて該暗号関数を用いて、他のゲームデータを不揮発性記憶装置から安全にロードするようにしたことを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１６】
請求項４記載のコンピュータ化賭博ゲーム装置において、該装置は更に、非対話式ＺＫＰ認証手順の情報を暗号化する際に用いられる秘密キーに対応する公開キーを格納する不揮発性メモリを備えていることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１７】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記コンピュータ化されたゲームコントローラは、汎用コンピュータであることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１８】
請求項１記載のコンピュータ化賭博ゲーム装置において、該装置は更に、前記コンピュータ化賭博ゲーム装置をネットワーク状コンピュータに接続するネットワークインターフェースを備えていることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項１９】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記ゲームをプレイするプロセスにおいて、検証は、ゼロ知識プルーフプロセスが正しく完了したことを検証することから成ることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２０】
請求項１記載のコンピュータ化賭博ゲーム装置において、前記認証プログラムは、ゼロ知識プルーフシーケンスの検証部分のみを含み、ネットワークを通じて、離れたプルーフ側と対話することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２１】
請求項１９記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、前記格納されているゲームデータを認証することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２２】
請求項２０記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、ネットワークを通じて得た応答を検証することによって、前記格納されているゲームデータを認証することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２３】
請求項２０記載のコンピュータ化賭博ゲーム装置において、前記ゼロ知識プルーフシーケンスは、ネットワークを通じて離れた検証側を特定することを特徴とするコンピュータ化賭博ゲーム装置。
【請求項２４】
コンピュータ化賭博ゲーム装置上でデータを保護する方法であって、
ゼロ知識プルーフを用いて、メモリに格納されているゲームデータを検証することから成るプロセスによって、コンピュータ化ゲーム装置の動作中にゲームデータを検証する
ことから成ることを特徴とする方法。
【請求項２５】
請求項２３記載の方法において、前記ゲームデータが認証されることを特徴とする方法。
【請求項２６】
請求項２４記載の方法において、前記ゲームデータは、カジノゲームデータから成ることを特徴とする方法。
【請求項２７】
請求項２４記載の方法において、検証中に送信されるデータに対してハッシングを実行することを特徴とする方法。
【請求項２８】
請求項２４記載の方法において、キー依存ハッシュ関数を用いてハッシングを行うことを特徴とする方法。
【請求項２９】
請求項２４記載の方法において、送信又は格納する前に、ＺＫＰプロトコルにおいて用いられるデータに対して暗号化を実行することを特徴とする方法。
【請求項３０】
請求項２４記載の方法において、回路内有効性判断部においてハッシングを行うことを特徴とする方法。
【請求項３１】
命令が格納されている機械読み取り可能媒体であって、前記命令を実行すると、コンピュータ化賭博ゲーム装置に、
乱数を発生させ、
前記乱数を数学的関数で処理して、得られた値を供給させ、
前記得られた値をカジノゲームデータ集合でハッシュして、第１の得られた積を生成させ、
前記得られた値及び前記得られた積を格納させる、
ように動作可能であることを特徴とする機械読み取り可能媒体。
【請求項３２】
請求項３１記載の機械読み取り可能媒体において、該媒体は更に、前記乱数及び前記得られた積を関連付ける命令を備えていることを特徴とする機械読み取り可能媒体。
【請求項３３】
請求項３１記載の機械読み取り可能媒体において、一方向ハッシュ関数を用いてハッシングを行うことを特徴とする機械読み取り可能媒体。
【請求項３４】
請求項３２記載の機械読み取り可能媒体において、一方向ハッシュ関数を用いてハッシングを行うことを特徴とする機械読み取り可能媒体。
【請求項３５】
請求項３２記載の機械読み取り可能媒体において、一方向ハッシュ関数を用いてハッシングを行うことを特徴とする機械読み取り可能媒体。
【請求項３６】
コンピュータ化賭博ゲーム装置であって、
プロセッサと、メモリ及び不揮発性記憶装置と、乱数発生器と、ゲームプログラムコードとを有し、前記不揮発性記憶装置に、乱数の数学的処理によって得られた値と、得られた積、又は対応する乱数と関連する前記得られた値を格納した、コンピュータ化ゲームコントローラと、
不揮発性記憶装置に格納されている認証プログラムであって、実行すると、前記得られた積、又は対応する乱数に関連付けられた前記得られた値の関連を生成する手段によって、不揮発性記憶装置内にある前記ゲームプログラムが変化していないことを検証し、前記関連が同一であることを検証する、認証プログラムと、
を備えていることを特徴とするコンピュータ化賭博ゲーム装置。
【請求項３７】
請求項３６記載の方法において、前記ハッシングは、一方向ハッシュ関数であるハッシュ関数を用いて実行することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コンピュータ化した賭博ゲームシステムに関し、更に特定すれば、コンピュータ化した賭博ゲームシステムにおいてセキュリティを確保するための基本として、ゼロ知識プルーフ(zero knowledge proofs:ここではＺＫＰとも呼ぶ）を用いた認証技法の使用に関する。
【背景技術】
【０００２】
運任せのゲーム(game of chance)は、何千年もの間人々によって楽しまれており、最近その人気が高まりかつ広がっている。殆どの娯楽の形態と同様、プレーヤは、多種多様のゲーム及び新たなゲームを行って楽しむ。新たなゲームを行うことが、「ゲーム（賭博）」の興奮に加わる。当技術分野では周知であり、ここでも用いるのであるが、「ゲーム」及び「ゲームデバイス」という用語は、ある形態の賭博を伴い、プレーヤは実際の通貨であれ、あるいは対価(value)の何らかの等価物、例えば、トークン又はクレジットであれ、対価の賭けを行わなければならないことを示す。
【０００３】
運任せのゲームの１つにスロットマシンがある。従来、スロットマシンは、プレーヤが、何らかの対価、例えば、通貨、ハウストークン(house token)、認められた与信(established credit)、あるいは通貨又はクレジットのその他の表示を賭けるように構成されている。賭けが行われた後、プレーヤはスロットマシンを作動させ、ランダム事象を起こさせる。プレーヤが、特定のランダム事象が起こることに賭けた場合、プレーヤには対価が払い戻される。標準的なデバイスでは、複数のリールを回転させ、最終的に停止させて、ある形態の指標、例えば、数値又はシンボルのランダムな組み合わせを表示する。この表示が、予め選択されている複数の当たりの組み合わせ(winning combination)の１つを含む場合、機械は金を払い戻し通路に放出するか、又はプレーヤが勝った額だけ与信額(credit meter)を増分させる。例えば、あるプレーヤが最初に特定の額面のコインを２つ賭け、そのプレーヤが払い戻しを得た場合、このプレーヤは、賭けたのと同じ額面のコインで、賭けた額と同じ数又はその倍数を受けることができる。
【０００４】
賭博デバイスにおいて払い戻しを決定するために行うことができる事象のランダムな表示を生成するには、多くの異なるフォーマットがある。標準的又は本来のフォーマットは、３つのリールを用い、リールの面上にシンボルを分散させていた。３つのリールを回転させたとき、これらは最終的に１つずつ順番に停止し、３つのシンボルの組み合わせを表示する（例えば、３つのリール、及び単一の払い戻しラインを、シンボルが表示されるエリアの中央における行として用いる）。リールの各々の上にシンボルをしかるべく分散し変化させることにより、所定の当たりの組み合わせを、数学的に所定の確率で、ランダムに発生することができる。予め選択した当たりの結果の各々に特定の確率を明確に規定することによって、あらゆる個々の組み合わせに対する払い戻し額、及び胴元(house)に対する賭博の戻り率(percentage return)を管理する正確なオッズを容易に制御することができる。
【０００５】
３つのリールを有する純粋なスロットマシンから徐々に発展した他のフォーマットのゲーム装置は、ビデオゲーム装置の開発によって、劇的に増大した。回転したり停止したりしてランダムにシンボルを表示するホイール又はリールのような機械的要素だけを有する代わりに、ビデオゲーム装置、ならびにハードウェア及びソフトウェアにおいて急速に高められた洗練性により、新たな刺激的なゲーム装置の急増が可能となった。初期のビデオ装置は、プレーヤが同じゲームしかプレイしたがらないであろうとの考えから、単に機械式スロットマシンを真似たり又は模擬したに過ぎなかった。ドローポーカーやケノー(Keno)のような新たなゲームをプレイするビデオゲーム装置の使用により、ゲーム装置には未開発の多くのフォーマットが未だ存在することが認識され始めた。今日のカジノは、数百もの異なる種類のゲーム装置を有する場合もあり、プレイにも等しい数だけの大きな違いがある。装置は、単一の払い戻しラインを備えた伝統的な３リールのスロットマシン、３リールビデオスロットマシンのビデオシミュレーションから、ランダムに配したライン、分散支払い(scatter pays)、又は単一画像払い戻し(single image payout)を含む、２０以上の異なる支払いラインの選択がある、５リール、５列のシミュレーションスロットマシンまで、様々なものが考えられる。ゲームのプレイにおけるフォーマットの多様性に加えて、ボーナスプレイ、ボーナス賞、及び先送り積み立て(progressive jackpot)が導入され、大きな成功を収めている。ボーナスは、本来のゲームのプレイとは全く異なるゲームのプレイに付随する場合もあり、競馬のビデオディスプレイにおいてボーナスの資格があるプレーヤにランダムに割り当てられる個々の馬に対する賭け、ホイール（又はそのシミュレーション）上に固定額のボーナス払い戻しを設けたランダムホイールの回転、又は仮想ディーラの代わりに開いたカードよりも値が高いランダムなカードを選択する試み等がある。
【０００６】
このような、別個のボーナスという特徴を有するゲーム装置の例には、米国特許第５，８２３，８７４号、５，８４８，９３２号、５，８６３，０４１号、英国特許第２２０１８２１Ａ号、第２２０２９８４Ａ号、及び第２０７２３９５Ａ号、ならびにドイツ国特許第ＤＥ４０１４４７７Ａ１号が含まれる。これらの特許の各々は、ボーナスラウンドをプレイする際、かなり微妙な違いがある。英国特許第２２０１８２１Ａ号、及びドイツ国特許第ＤＥ３７００８６１Ａ１号に記載されているゲーム装置では、リール形式のゲームセグメントにおいて勝利の結果を最初に達成した後に、与えられる金額又は追加のゲームを決定するために第２のセグメントが約束されている。第２セグメントのゲームプレイは、賞が表面にリストアップされている回転ホイール（例えば、コインの数又は追加のゲーム回数）、及び賞の値が付いたホイールのセグメントを指し示す回転矢を用いる。プレーヤは、停止ボタンを押し、矢は値の１つを指し示す。明細書は、ホイール及び矢（複数の矢）を停止させる際に恐らく習熟度が関係すること、そして連動するコンピュータが回転可能な数値のランダムな選択を行い、追加の勝利ゲーム(winning game)における結果を判定することの双方を示し、第２ゲームセグメントにおけるランダムな選択のあるレベルを示す。米国特許第５，８２３，８７４号及び第５，８４８，９３２号は、ゲームデバイスについて記載しており、これは、ランダムに選択した指標の組み合わせを表示するための第１の標準的ゲームユニットであって、前記表示される指標は、リール、リールの指標、プレイングカードの指標、及びその組み合わせから成る群から選択される、第１の標準的ゲームユニットと、前記第１の標準的ゲームユニットによる指標の少なくとも１つの選択表示に対応して、少なくとも１つの信号を発生する手段と、機械的ボーナスインディケータの少なくとも１つの認識可能な指標を与える手段であって、前記認識可能な指標が、複数の可能なボーナスの内少なくとも１つを示す、手段とを備えており、前記与える手段が、前記第１の標準的ゲームユニットに動作的に接続され、前記信号に応答して作動可能となる。実際、第２ゲームイベントは、ルーレットホイール、又はポインティングエレメントを有するホイールのような、機械的なボーナスインディケータを模擬する。
【０００７】
ビデオ端末は、ゲームデバイスの別の形態である。ビデオ端末は、直ちに払い戻しが受けられるのではなく、償還チケットが発行されることを除いて、従来のスロットマシン又はビデオマシンと同様に動作する。
【０００８】
大量の市販の電子ビデオゲーム装置は、業界内において標準化されておらず、また単一の製造業者から入手可能な装置の販売ライン(commercial line)においてでさえも必ずしも標準化されていない。この均一化又は標準化の欠如に対する理由の１つに、今日まで業界で用いられていたオペレーティングシステムが原始的であることがあげられる。その結果、プログラマは、多くの場合、個々の各装置が実行する各機能毎に、コードを作成しなければならない。今日まで、本発明の譲受人の前には、少なくとも部分的に使用中のオペレーティングシステムの実用性及び互換性の制限のために、既存の機器（再利用可能なコードのモジュールのような機構を含む）を変換する万能的なオペレーティングシステムを作成することに成功した製造業者は知られていない。新たなゲームが作成されると、通常では最初から新たなハードウェア及びソフトウェアが作成される。
【０００９】
乱数発生に伴うコードと、コードのバランスから乱数ストリングに適用されるアルゴリズムとを分離する万能ゲームエンジンを作成する試みが、少なくとも１回なされている。Carlsonの米国特許第５，７０７，２８６号はこのような装置について記載している。この特許権者は、モジュラーコードが有効であることは認めていたが、ＲＮＧ及び転送アルゴリズムをモジュール状にすることしか想起しなかった。
【００１０】
標準的なオペレーティングシステムがないために、市場においてシステムの価格が作為的に高止まりする要因となっている。様々に製造されたビデオゲームシステムにおいて、標準化されていない独自のハードウェアインターフェースを用いることが、これを助長する要因である。異なるハードウェア、異なるアクセスコード、異なるピン結合、ピンの結合のための異なるハーネス、種々のピンから得られる異なる機能、ならびにシステム内にあるその他の種々の異なる構成のために、当技術分野においてどの標準も作成の進展が妨げられてきた。これは、装置の製造業者にとっては不利である。何故なら、各システムに合うゲームは単一の製造業者によってのみ提供され、システム全体は直ぐに時代遅れとなる可能性があるので、市場は、単なる交換用ソフトウェア及びハードウェアではなく、ユニット全体を購入しなければならないからである。また、競合は、異なるハードウェア上でプレイできる１つのゲームを容易に提供することができない。この問題に対する解決策が、１９９９年９月２４日に出願され、連番第０９／４０５，９２１号を割り当てられた、Video Gaming Apparatus for Wagering with Universal Computerized Controller and I/O Interface for Unique Architecture（独自のアーキテクチャのための万能コンピュータ化コントローラ及びＩ／Ｏインターフェースを有する賭博用ビデオゲーム装置）という本出願人の同時係属中の特許出願にて提示されている。その内容は、ここで引用したことにより、本願明細書にも含まれることとする。
【００１１】
コンピュータ化したゲームシステムの発明において、共通の即ち万能のビデオ賭博ゲームコントローラを含み、このゲームコントローラに殆ど変更を加えることなく広範囲のビデオゲーム装置に設置することができる場合、ゲームシステム内部にある多くの構成要素及び対応するゲームソフトウェアの標準化が可能となる。このようなシステムは、種々のゲーム及びゲーム装置の種類に対応するという唯一の要求に合わせて特定的に作成した機能及び機構を有することが望ましく、更に、効率的に、確実に、そしてコスト効率的にこれを行うことが望ましい。
【００１２】
万能オペレーティングシステムと、コインホッパ(coin hopper)、モニタ、紙幣確認装置(bill validator)等の非標準機械デバイスとの間で通信を可能にすることに加えて、セキュリティ機構を設けて、オペレーティングシステムが、ゲームコード及びその他のデータが動作中に変化しなかったことを検証できるようにすることが望ましい。
【００１３】
Alcorn et al.の米国特許第５，６４３，０８６号は、ハッシング及び暗号化技法を用いて、ＤＣ−ＲＯＭ、ＲＡＭ、ＲＯＭ、又はその他のデバイスのような大容量記憶装置に格納されているアプリケーション又はゲームプログラムを認証可能なゲームシステムについて記載している。大容量記憶装置は、ゲームマシン内に配置することができ、あるいはゲームマシン外部にあってもよい。この検証技法は、したがって、実行中のコードにおいて生じた変化は全く検出しない。何故なら、これは、ＲＡＭにロードされる前の、大容量記憶装置内にあるコードを検査するからである。認証システムは、ディジタル署名の使用を拠り所とし、暗号化及び解読プロセスの前にデータ集合全体のハッシングを行うことを示唆する。また、Alcorn et al.の米国特許第６，１０６，３９６号及びAlcorn et al.の米国特許第６，１４９，５２２号も参照のこと。
【００１４】
２００１年９月７日に出願され、"ENCRYPTION IN A SECURE COMPUTERIZED GAMING SYSTEM"（安全なコンピュータ化ゲームシステムにおける暗号化）と題する米国特許出願第０９／９４９，０２１号は、暗号化／認証システムを開示しており、コンピュータ化ゲームコントローラが、プロセッサと、メモリ、と不揮発性記憶装置とを有し、コンピュータ化賭博ゲームを制御するように動作可能であり、不揮発性記憶装置にゲームデータが格納されており、不揮発性記憶装置に格納されているゲームデータを動作中に検証する。加えて、ゲームシステムが開示されており、不揮発性メモリと、不揮発性メモリに格納されている暗号化制御ファイルであって、順序情報を与える１組のプログラムファイルネームと、各プログラムファイルに一意のメッセージ認証コードと、メッセージ認証コードキーとを含む、暗号化制御ファイルと、ゲームコントローラであって、ゲームシステムの動作中に、暗号化制御ファイルを解読し、ゲームプログラムファイルを認証するように動作する、ゲームコントローラと、ゲームシステムインターフェースを介して、ゲームコントローラと通信状態にあるゲームシステムデバイスとを備えている。
【００１５】
このシステムは、更に、メッセージ認証コードプロセスがメモリに格納されており、ゲームコントローラは、１組のプログラムファイルを認証する際、１組のプログラムファイル及びメッセージ認証コードキーを用いてメッセージ認証プロセスを適用し、１組の相補メッセージ認証コードを供給し、制御ファイルからのメッセージ認証コードを相補メッセージ認証コードと比較する。加えて、このシステムは、リードオンリメモリに格納されているメッセージ認証プロセスを有することもできる。また、認証が可能なゲームデータ集合を準備する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体も開示されており、ゲームデータ集合を供給し、このゲームデータ集合に一意のメッセージ認証コードを決定し、ゲームデータ集合及びメッセージ認証コードを格納することから成る。更に、ゲームシステムにおいて用いられるゲームを認証する方法を実行するコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体も開示されており、暗号化された制御ファイルを受け取り、この暗号化された制御ファイルを解読して制御ファイルを供給し、制御ファイルは、順序付け情報を与える１組のプログラムファイルネームと、各プログラムファイルに一意のメッセージ認証コードを含む１組のメッセージ認証コードと、メッセージ認証コードキーとを含み、元の制御ファイルを用いて、ゲームの認証を検証することから成る。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
なおも望まれているのは、ゲームコード及びその他のデータの安全な格納及び検証を特徴とし、コンピュータ化賭博ゲームシステム上で安全にゲームコードを変更することができ、ゲームマシンの動作中にコードが変化していないことを検証することができる、ゲーム特定プラットフォームを提供する代替アーキテクチャ及び方法である。
ゲーム装置のセキュリティの分野では、更に、Nevada Gaming Regulation Commission、New Jersey Gaming Regulations Commission又はその他の規制監督官庁のような、種々のゲーム規制委員会等によって、ゲームプログラムコードが特定可能であることを、プルーフ又は承認されることが望まれている。
【課題を解決するための手段】
【００１７】
ここに論ずる本発明は、ゲームコード及びその他のデータの安全な格納及び検証を特徴とし、コンピュータ化賭博ゲームシステム及び／又はネットワークシステムと安全にデータを交換することができ、更に、単純かつ容易に管理できるようにこれを行う、賭博ゲーム特定プラットフォームのためのアーキテクチャ及び方法を提供する。本発明の実施形態の中には、州のゲーム規制委員会又はその他の規制監督官庁によってプルーフ又は承認されたゲームプログラムコードを特定できるものもある。本発明は、これら及びその他の機能を設けるにあたって、暗号化、モジュロ算術(modulo arithmetic)、ハッシュ関数、及びその他の暗号方法を用いる。これらの暗号構築ブロックは、対話的に適用されたときには、識別を行う方法を作成する際に共に用いられ、非対話的に適用されたときには、ゲームデータ集合に対する認証を行う方法を作成する際に用いられる。
【００１８】
数学的システムでは、対話式プルーフは、非公式に２者間のプロトコルとして認められており、一方を「プルーフ側」(prover)と呼び、他者にある事実をプルーフしようとする。他方のことを「検証側」(verifier)と呼ぶ。対話式プルーフは、大抵の場合、質問−応答プロトコルの形態を取り、プルーフ側及び検証側がメッセージを交換し、検証側が、プロトコルの最後で「受け入れ」又は「拒絶」のいずれかを出力する。その理論的関心の他に、対話式プルーフは、暗号及びコンピュータセキュリティにおいて、特定や認証のような応用も多少行われている。これらの状況では、プルーフする事実は、常にではないが大抵の場合、プルーフ側の秘密キーのようなプルーフ側の同一性に関する。
【００１９】
対話式プルーフでは、以下の特性を有することが、特に暗号に応用する場合には有用である。
・完全性−検証側は、事実が真であり、プルーフ側及び検証側双方がプロトコルにしたがう場合、プルーフを受け入れる。
・健全性−検証側は、事実が偽であり、検証側がプロトコルに従う限り、プルーフを拒絶する。
・ゼロ知識−検証側は、検証側がプロトコルに従わなくても（プルーフ側が行う限り）、プルーフ側なしではもはや学習することはできないという、プルーフ側からプルーフされる事実に関して、何も学習しない（それが正しいことを除く）。対話式ゼロ知識プルーフでは、検証側は、後になっても、事実を誰にもプルーフすることはできない。（全ての対話式プルーフがこの特性を有する訳ではない。）
【００２０】
ゼロ知識プルーフにおける典型的なラウンド又は構築ブロックは、プルーフ側からの「コミットメント」(commitment)メッセージ、それに続く検証側からの質問、次いでプルーフ側からの質問に対する応答で構成されている。プロトコルは、多くのラウンドの度に繰り返すことができる。全てのラウンドにおけるプルーフ側の応答に基づいて、検証側は、プルーフを受け入れるか又は拒絶するか判断する。
【００２１】
好適な実施形態では、本発明は、ゲーム装置に格納されているゲームデータ集合を認証する方法を提供する。対話式プルーフ方法を、ゲームデータ集合及びプルーフ側からのコミットメントメッセージ（複数のメッセージ）双方の一方向ハッシュと組み合わせて適用することにより、ゲームデータ集合は、プルーフ側から発したものであることを認証することができる。これを行うには、ハッシュ値をプルーフ側への１組のランダムな質問と解釈し、これらを用いて、対話式プルーフを完成させる。検証側が居合わせる必要はない。これを非対話式ゼロ知識プルーフと呼ぶ。これは、対話式プルーフの要素全てを含み、それに加えて、このように解釈したハッシュ値も含む。各質問／応答対を、ゲームデータ集合と共に記録し格納して、ディジタル「認証検印」を備える。
【発明を実施するための最良の形態】
【００２２】
以下の記載では、"Applied Cryptography"（応用暗号法）、 Second Edition. John Wiley & Sons, Inc. 1996. ISBN 0-471-12845-7において、Bruce Schneierがどのようにゼロ知識プルーフを説明しているかについて、簡潔に述べる。ゼロ知識プルーフの機能は、通常、応答イベントに関して論じられ、図６に示すような洞穴図(cave diagram)が論述には有用なツールである。Ｃ及びＤで示す２点間の扉は、秘密キー又は合い言葉を用いなければ開錠できないと仮定する。ある者（プルーフ側）が扉を開錠するための秘密を知っており、彼らは、ゼロ知識プルーフを用いることによって観察者に秘密を実際に暴露する必要なく、彼らがこの秘密を知っていることを観察者（検証側）に説得できると仮定しなければならない。（ゼロ知識という言葉は、プルーフを行うことによって秘密の知識を漏らすことはできず、したがって理論上単一の繰り返しは永遠に続き得るという事実から来ている。）
【００２３】
単一のゼロ知識プルーフは、以下のように進めることができる。観察者及び扉の開錠に対する秘密を有する人が、図の地点Ａにて開始する。秘密を有する人は、洞穴に入り図の地点Ｃ又は地点Ｄに達する。秘密を有する人が適所に収まった後、彼らは観察者に、図における地点Ｂに移動するように要求する。
【００２４】
次いで、観察者は、１又は０のいずれかをランダムに選択する。観察者が０を選択すると、秘密を有する人は図の左側から出てきて、観察者が１を選択すると、その人は図の右側から出てくるように、予め手配されている。観察者は、秘密を有する人が地点Ｃ又は地点Ｄに落ちついた後、数値をランダムに選択する。その結果、観察者は、１００％の確率で結果が成功となり得る唯一の方法は、秘密を知っていると主張する人が本当にどのようにして扉を開くかを知っているか否かであることがわかる。
【００２５】
尚、人が実際には秘密を知らない場合、観察者が乱数を選択した後に、彼らがなおも正しい経路で洞穴から出てくることができる確率は、正に５０％であることを注意しておく。したがって、ゼロ知識プルーフをｎ回繰り返すことによって、人が実際には秘密を知らない場合に、正しい結果を有し続ける確率は１／（２n）である。ゼロ知識プルーフを１０回繰り返す場合、人がプロトコルを「騙す」ことができる確率は、１／１０２４となる。
【００２６】
注意すべき第２点は、何回プロトコルを繰り返しても、観察者は、ドアを開く秘密は何かについて正確な本質の知識を得られないということである。秘密を知っている人は、プロトコルを十分な回数だけ単に繰り返すことによって、彼らが本当に秘密をいずれかのレベルの確信度で知っていることを、観察者にプルーフすることができる。
【００２７】
したがって、ゼロ知識プルーフに対する主要な要素は、１）正確な値又は本質を暴露することなく実証することができる秘密、２）特定の選択又は問題に対するコミットメント(commitment)、３）コミットメント後に選択したランダムビット、及び４）どのビットが選択されたかには係わらずプロトコルを完成させることができる能力、である。コミットメントが選択されたランダムビットと一致しない場合、秘密が知られていないならば、１００％の確率でプロトコルを完成するのに成功するのは不可能でなければならない。ゼロ知識プルーフの多数回の繰り返しを互いに連鎖することによって、秘密を知らない者が、ランダムビットが選択される前に、正しい選択を憶測する（明言する）確率を低下させることができる。
【００２８】
例１：ゼロ知識プルーフプロトコルのグラフを用いた実施態様
数学を用いてゼロ知識プルーフを実施するには、解くことが困難な既知の問題に基づいてプルーフを行わなければならない。ここでは、２つの別個の実施態様を示すが、ＺＫＰに基づくプロトコルを設計するには多くの方法が可能である。
ゼロ知識プルーフプロトコルの１つの可能な実施態様は、グラフ理論の数学分野に基づいている。図３に示すようなグラフは、エッジ（図における線）によって接続された頂点（図における円）の集合である。各エッジ（図における線）は２つの頂点（図における円）を接続する。
【００２９】
特定のグラフにおいて、経路に沿ってグラフの頂点全てを１回だけ接続し、元の頂点にて終了する経路が存在する場合、その経路は「ハミルトニアンサイクル」として知られている。図では、経路２−４−６−５−１−９−８−３−１０−７−２がハミルトニアンサイクルである。ハミルトニアンサイクルは、過度に大きなグラフでは、解くのが難しい問題である。パスが既にわかっていなければ、過度に大きなグラフにおいてハミルトンサイクルを発見するために要する時間は、数学的に、グラフ内の頂点の数の二乗となる。
【００３０】
非常に大きなグラフについて解く場合の別の難しい問題は、頂点及びエッジの数が同一の２つのグラフは、同一か又は同形かをプルーフすることである。即ち、グラフをランダムに再配列し、グラフの全ての頂点に異なる連番を付けた場合、予め両グラフの頂点間のマッピングを知らなければ、得られた２つのグラフは、頂点の付番だけが異なることをプルーフするのは非常に難しい。
【００３１】
特定の過度に大きなグラフに対するハミルトンサイクルがわかっている（グラフを最初から作成する場合、最も可能性が高い）と仮定する。これは秘密である。その秘密のゼロ知識プルーフの単一の繰り返しは次のようになる。
１）プルーフ側は元のグラフを公開する。プルーフ側は、ハミルトニアンサイクルを知っており、それをプルーフできると述べる。
２）プルーフ側は、グラフをランダムに再配列し、全ての頂点に番号をふりなおす。
３）プルーフ側は、新たなグラフの解にコミットする。対称暗号、公開キー暗号化、又は一方向ハッシュ関数を用いても、秘密を暴露することなく、秘密にコミットする暗号方法がいくつかある。新たなグラフにコミットするという所望の目標がこのステップで達成されるのである限り、このステップでどれを用いるかは問題ではない。
４）検証側は、ランダムビット０又は１を選択する。
ａ）選択したビットが０であった場合、プルーフ側は、新たなグラフは古いグラフの同形であることを示す。
ｂ）選択したビットが１であった場合、プルーフ側は、新たなグラフのハミルトンサイクルを示す。
【００３２】
尚、このプロトコルのラウンド毎に、詐欺師(cheater)が元のグラフのハミルトンサイクルを本当に知らなかった場合、彼らは、検証側が、ステップ２においてコミットする前に、ステップ４において０又は１のどちらを選択しようとするか、予測しようとしなければならない。詐欺師が、０が選択されると予期した場合、彼らはランダムに元のグラフを再配列するが、１が代わりに選択された場合、新たなグラフにおいてハミルトンサイクルを発見することはできない。何故なら、彼らは元の秘密を知らなかったからである。詐欺師が、１が選択されると予測した場合、彼らは、元のグラフと同じ数の頂点及びエッジを有し、ハミルトンサイクルを含む新たなグラフを生成することができるが、彼らは、０が代わりに選択されると、２つのグラフが同形であることをプルーフするために、頂点のマッピングを行うことはできない。加えて、新たなグラフは元のグラフに対してランダムであり、２つの解の内１つのみがゼロ知識プルーフの繰り返し毎に与えられるので、元の秘密について漏れる情報はない。プロトコルは何回でも繰り返すことができ、繰り返す毎に、誰かが全ての段階についてランダムビットの推測に成功することができる確率が低下する。
【００３３】
例２：因数分解、二乗、及びモジュロ算法を用いたゼロ知識プルーフプロトコル
このプロトコルは、San Diegoのカリフォルニア大学からBennett Yeeによって公開された、ゼロ知識プルーフに関する、インターネットに公開された論文に基づいている。
２つの大きな素数があり、その積を仮にｎと呼ぶと仮定する。２つの素数に対して十分大きな値が選択された場合、この数を因数分解することは、計算上実行不可能になる。加えて、いずれの数値にしても、ｎを法とするその数値の二乗根を求めることは、等しく計算上実行不可能である。ｎを因数分解することは、ｎを法とする数値の二乗根を取ることと同等であることが示されている。
【００３４】
この実施態様では、プルーフ側は乱数ｓを選択する。数値ｓは、秘密となる。以下のステップは、この実施態様のためのゼロ知識プルーフプロトコルを記述する。
プルーフ側は、v=s2 mod nの値を公開する。ｎを法とするこの値の二乗根（上を参照）を計算するのは数学的に非常に難しいので、秘密は安全であり続ける。
プルーフ側は乱数ｒを取り上げる。
プルーフ側は、値x=r2 mod nにコミットし、この値を検証側に送る。検証側は、乱数０又は１のいずれかを選択する。
ａ）選択したビットが０であった場合、プルーフ側はy=rを検証側に送り、検証側は、ｎを法とするｙ２が、プルーフ側がステップ３においてコミットした値v=r2 mod nに一致するか否か確認する。
ｂ）選択したビットが１であった場合、プルーフ側はy=rを検証側に送り、検証側は、ｎを法とするｙ2がｘｖの値に一致するか否か確認するためにチェックする。
【００３５】
尚、詐欺師が秘密を知らなかった場合、彼らがプロトコルを完成するのに成功できる確率は５０％に過ぎない。詐欺師が、０が選択されることを予測した場合、１が実際に選択されなかったならば、彼らはプロトコルに従い、成功することができる。１が選択された場合には、秘密ｓは知られていないので、y=rsを検証側に供給することはできない。一方、詐欺師が、１が選択されることを予測した場合、実際に０が選択されなかったならば、いずれかの乱数ｔを選択し、x=t2/vを検証側に送ることができる。０が選択された場合、分母においてｎを法とするｒの二乗根を計算することはできない。
この場合でも、秘密を検証側に暴露することなく、このゼロ知識プルーフプロトコルを何回でも繰り返すことができる。繰り返し毎に、秘密を知らない誰かがプロトコルを騙すことに成功できる確率は低下する。
【００３６】
ここに、１２８ビットの数値を用いて、このプロトコルがどのようなものであるかという一例を示す。
Secret=f9cf9d9c913ff1e9e4016b82d8adb982
n=8a6e1cb89987536b69489be07d1dbaed
v=3350297dae721eb9b0349a9077b8eb4a
Random=packet 1:5d01ccb060927e1ef668eca2102f4b17
Random=packet 2:272ebbdda90aac88eeb2d65ff7057b8f
Random=packet 3:c4316e0269f7b70b6706402be50c528
Random=packet 4:63bd6f7e8df0cc73bc579a5b35384f17
Random=packet 5:3700b3e7260d44706ecdb97eaeec21a2:
Solution to packet 1:2ad979b57773d541e7cbe71e0125fa63 (Random bit=0)
Solution to packet 2:710f20caa81dfdchb7db7b33ba1aa4d9 (Random bit=1)
Solution to packet 3:cfcd56096c6a3a8d3badeab7fc6861f (Random bit=0)
Solution to packet 4:798222fa75a54d9679718109f16b93bf (Random bit=1)
Solution to packet 5:75b088975c0e7c920f0fac9d84880f7b (Random bit=0)
…
そして、パケットはこのように永遠に続き、ラウンド毎に、外部のペテン師(impostor)が人工的にパケットを生成できる確率が低下していく。
【００３７】
ここまでの説明の要点は、ゼロ知識プルーフが何を意味するかについて説明し、ＺＫＰに基づくプロトコルがどのようなものかという例をいくつか示すことであった。以下に続く章では、どのようにゼロ知識プルーフプロトコルを適応させれば、カジノゲームデータ集合及びゲームデータの認証ならびにゲームプログラムに使用することが可能になるかについて説明する。
【００３８】
ハッシュ関数とは、可変長ビットストリングを取り、それから、より短い、固定長の指紋ビットストリング(fingerprint bit string)を計算する関数である。このハッシュ値は、コンピュータサイエンスにおいて多くの目的に用いることができる。
一方向ハッシュ関数は、特殊なハッシュ関数であり、特定の入力に対する結果を予測できないような方法で、可変長ビットストリングからハッシュを計算する。ビットのストリングを発生し変更することは非常に難しいので、所望の値にハッシュする。
【００３９】
一方向ハッシュ関数の出力を用いることによって、いずれのゼロ知識プルーフアルゴリズムでも、認証を実行するように適応させることができる。これをどのように行うかを確認するために、あらゆるゼロ知識プルーフに基づくアルゴリズムは、繰り返し毎に、１）正確な値や本質を暴露することなく実証することができる秘密、２）特定の選択又は問題（ランダム順列）に対するコミットメント、３）コミットメントの後に選択したランダムビット、及び４）どのビットが選択されたかには関係なく、プロトコルを完成することができる能力を含むことを思い出すこと。先に挙げた例の１つにおいて、秘密は、ハミルトンサイクル問題に対するグラフの頂点の付番であり、２番目の例では選択したビットストリングであった。双方の場合において、秘密は、各ゼロ知識プルーフの前にランダム順列を発生することによって、不明瞭になった。各例におけるゼロ知識プルーフの一部は、検証側によって適切なランダムビットが選択された場合に、プルーフ側がランダムな順序を解明するためにある。
【００４０】
図５を参照すると、データ集合を一方向ハッシュ関数の入力として、秘密の存在のプルーフ、及びゼロ知識プルーフの各ラウンドからのランダム順列と共に用いられた場合、生成されるハッシュ値は、データ集合だけでなく、ＺＫＰの困難な問題に対するランダムなコミットメント（元の問題のランダム順列と記述することもできる）にも依存することがわかる。次に、このハッシュ値は、その入力から得られるランダムビットストリングとして用いることができる。言い換えると、ゼロ知識プルーフを検証側のランダムな１又は０の選択と対話的に行う代わりに、一方向ハッシュ関数からこのハッシュ値を構成する１及び０のパターンを用いて、ＺＫＰプロトコルを非対話的に完成することができる。ハッシュ値の結果を予測することは不可能であるので、プルーフ側は、ゼロ知識プルーフ毎に困難な問題を解く準備をしなければならず、彼らがこれを１００％確実に行うことができる唯一の方法は、彼らが秘密を知ることである。
【００４１】
このようにランダムハッシュ値が用意されていれば、秘密の知識を有する者だけが、ゼロ知識プルーフに対する答えを生成できることを示すことができる。ＺＫＰラウンドを完了すると、データ集合は、秘密を所有するソースから来たものとして認証されたことになる。
【００４２】
加えて、この一連のステップに続いて得られる結果は、入力の信憑性の指示を与える点では同様であるが、当技術分野においてディジタル署名として知られているものとは実質的に異なる。最低でも、ＺＫＰシーケンスに従う又は実行するために暗号化（大抵の場合、署名の固有部分）は不要である（しかし、秘密の存在の初期プルーフを公開してこの技法の柔軟性を高めるために、選択肢として暗号化を用いることはできる）。暗号化ハッシュ値から成る伝統的なディジタル署名は、ビットアレイ全体におけるビットの順序を拠り所とする。ＺＫＰシーケンス及びプロセスでは、知識の繰り返しのランダム順列／プルーフを再配置し、除去し、あるいはシーケンスのどこにでも、知識又はビットの追加のランダム順列／プルーフを補充することができ、列全体の完全性は同一のままである。（実際、これは、手順を完了した後に行うことができ、秘密を知る必要なく、繰り返しを除去することができる。）対照的に、典型的な署名は、ビットパターンが並べ替えられたり、シーケンスのいずれかの部分で追加のビットが加えられたり、除去されると、無効になる。ＺＫＰと伝統的なディジタル署名との間の別の違いは、伝統的なディジタル署名では一意のハッシュ値／署名関係が標準であるのに対して、ＺＫＰにおいて用いられているランダム順列では、無限数の等しく有効なビットパターンが可能であることである。
【００４３】
ゲームマシン上でのゼロ知識プルーフ認証の実施態様
この章は、ゲームシステムの提供業者及びゲームの提供業者がどのようにしてゼロ知識プルーフを用いて、ゲームマシン上で認証を実施できるのかについて示す。例２からの数学的実施態様を用いると、プルーフ側は、ｖを秘密キーで暗号化することによって、又は、ＯＳ  ＥＰＲＯＭ上等で、ゲームデータ集合から別個にそれを放出することによって、値v=s2 mod nを公開する。公開キーを用いることによってこれを解読することができるが、ｎを法とする二乗根を解くことが数学的に難しいために、秘密は安全に保持されることを注記しておく。以前に述べたように、暗号化は、この技法に対して偶発的であり、この場合、書き込み可能な媒体に格納されたときに、値ｖを変更できないようにするためにのみ用いられる。
【００４４】
ＺＫＰシリーズを発生するときが来たなら、ゲームデータ集合を、値ｖ及び多数のランダム順列と共にハッシュする。直前の章において説明したように、一旦ランダムなハッシュ値を計算したなら、ハッシュ値のビットを、ゼロ知識プルーフに対する解のためのランダムな選択として用いる。解は、暗号化されないで、ランダムなコミットメント(commitment)と並んで格納される。尚、認証はファイル毎に行うことができ、あるいは個々のゲームデータ集合各々からのハッシュの排他的論理和を取れば空間を節約でき、その場合、ファイルの集合全体を直ちにハッシュし検証できることを注記しておく。別の実施形態では、各個々のゲームデータ集合からのハッシュ値を組み合わせ、新たなデータ集合を形成し、ＺＫＰプロセスを用いて認証できるようにすることも可能である。
【００４５】
ゲームにおいてゲームデータ集合を認証するときが来たなら、ｖの値を、解読によって再現する。次いで、ランダムなコミットメント及びｖの値を含めて、ゲームデータ集合（複数の集合）のハッシュを実行する。次に、ランダムビット毎にゼロ知識プルーフが正しいことを検証することによって、ＺＫＰ解をチェックする。ハッシュ値におけるビット毎に解が正しい場合、ゲームデータ集合（複数の集合）は本物であると見なされる。
【００４６】
ＺＫＰ認証方法の変形
この方法には、述べるに値する２つの重要な変形がある。第１に、別個のハードウェアによってハッシングを容易に行うことができ、その場合、ハッシングは非常に素早く行われる。一旦ハッシングが完了したなら、ＺＫＰプロトコルの残りは、ソフトウェアシステムによって完成する。
第２に、ゲームデータ集合を、例えば、サーバからダウンロードする場合、ＺＫＰプロトコルは、対話式プロトコルとして用いることができる。この場合、ハッシュ値は乱数源として用いられず、ランダムハッシュ値には不要となる。何故なら、ＺＫＰプルーフのステップは、検証側が１又は０をランダムに選択する例で説明したように進められるからである。
【００４７】
３番目の変形は、メッセージ認証コードを一方向ハッシュ関数の代わりに用いることである。メッセージ認証コードは、キーに依存する一方向ハッシュ関数である。この変形は、プロトコルと共に動作すると、柔軟性を高める異なる方法で用いることができる、ランダムビットストリングに、ハッシュ値を付加的に依存させる。この変形は、本願と同一日に出願し、弁理士の整理番号ＰＡ０６７０．ａｐ．ＵＳを付した同時係属中の米国特許出願に記載されている。この出願の内容は、この引用により、そしてこの中で引用された参照事項により、本願にも含まれることとする。
【００４８】
以下に続く本発明の実施形態の詳細な説明では、一部をなす添付図面を参照する。図面には、例示の意味で、本発明を実施可能な具体的な見本の実施形態が示されている。これらの実施形態は、当業者が本発明を実施できるように、十分詳細に記載されており、その他の実施形態も利用することができ、論理的、機械的、電気的、及びその他の変更は、本発明の精神又は範囲から逸脱することなく可能であることは言うまでもない。したがって、以下の詳細な説明は、限定的な意味で解釈するのではなく、本発明の範囲は、添付した特許請求の範囲によってのみ規定されることとする。
【００４９】
種々の実施形態において、本発明は、万能オペレーティングシステムのためのアーキテクチャ及び方法を提供する。これらは、ゲームコード及びその他のデータの安全な格納及び検証を特徴とし、コンピュータ化賭博ゲームシステムと安全にデータを交換することができ、しかも単純かつ簡単に管理できるように、それを行うことができる。本発明の実施形態の中には、Nevada Gaming Commission, New Jersey Gaming Commission又はその他の規制監督官庁等により、プルーフ又は承認されたものとして、ゲームプログラムコードを特定することができるものもある。本発明は、暗号化、乱数、及びハッシュ関数、ならびにここで紹介し論ずるその他の暗号方法の使用によって、これら及びその他の機能を提供する。
【００５０】
この開示の目的上「ハッシュ関数」とは、可変のキャラクタ又はテキストストリングから、通常では固定長の一意のデータストリングを発生する種類の関数のことである。発生するデータストリングは、通常、テキストストリングよりは遥かに短いが、異なるテキストストリングからハッシュ関数によって同じ数値が生成されることがあり得ない程度の長さである。又はッシュ関数において用いられる式は、異なるテキストストリングが同じハッシュ値を生成することがあり得ないように選択されなければならない。
ハッシュデータストリングは、一般には「メッセージダイジェスト」と呼ばれている。メッセージダイジェストは、今後の使用のために格納することができ、又は、暗号化してから、例えば、不揮発性メモリに格納することもできる。
【００５１】
ハッシュ関数は、多くの場合、データレコードをハッシュして、データベース内の各データレコードに対応する一意の数値を生成する際に用いられ、ハッシュ値を再生するために、サーチストリングに適用することができる。次いで、ハッシュ値はインデックスキーとして用いることができ、データベース全体を探索して、要求されたデータを求める必要性を廃することができる。ハッシュ関数の一部は、一方向ハッシュ関数として知られており、このような関数では、所与のハッシュ値を生成するテキストストリングを導出するのは非常に難しいが、テキストストリングからハッシュ値を生成するのは比較的容易であることを意味する。これによって、テキストストリングの内容を修正し、同じハッシュ値を生成する現実可能性を確実になくす。適した一方向ハッシュ関数の一例は、１６０ビットＳＨＡハッシュ（セキュアハッシングアルゴリズム）である。ファイルサイズには関係なく、ハッシュ値の長さは１６０ビットとなる。
【００５２】
このような関数は、所与のキャラクタストリングをハッシュし、第１ハッシュ値を生成するために用いることができる。第１ハッシュ値は、後に、同じキャラクタストリングから導出した第２ハッシュ値と比較し、キャラクタストリングが変わっていないことの確証を得ることができる。キャラクタストリングが改変されている場合、同じハッシュ関数によって生成されたハッシュ値は異なる。第１ハッシュ値の完全性は、ディジタル署名の使用というような、他の暗号方法の使用によって、改変から保護することができる。
【００５３】
ディジタル署名は、電子文書又はキャラクタストリングに署名するために用いられ、ストリングキャラクタが署名以来改変されていないことの確証を得る。ディジタル署名は、通常では、キャラクタストリングに、別の文書には再使用できない、忘れ得ない署名を意図的に署名したこと、及び署名した文書は改変不可能であることを示すために用いられる。ディジタル署名機構又は方法は、これらの基準を満たすように、通常では、複雑な数学的暗号技法を用いることによって、設計されている。
【００５４】
一例は、公開キー／秘密キー暗号システムを用いて文書に署名することである。公開キー／秘密キーシステムでは、ユーザは１対のキーを有し、文書を暗号化又は解読するために交互に用いることができる。公開キーは、そのキーが実際にキー所有者に属することを正当に保証するように公開又は分配され、秘密キーは厳格に秘密に保持される。ある者が、ある種の人でなければ読めないキャラクタストリングを送りたい場合、キャラクタストリングを暗号化し、その後、意図した読み手の公開キーを用いて送る。こうして、キャラクタストリングは、意図した読み手の秘密キーを用いてキャラクタストリングを解読することによってのみ、目視可能となる。
【００５５】
しかしながら、文書が発信元によって作成された本物の文書であることを事実上保証するが、本質的にだれでもそれを読むことができるように、ユーザがキャラクタストリングを送りたい場合、ユーザは、彼の秘密キーでこれを暗号化することによって文章に署名してから送ることができる。こうすると、通常では広く流通している署名者の公開キーで、誰でも文書を解読でき、これによって、キャラクタストリングがキー対の所有者によって署名されたことを検証することができる。この実施形態の例は、ディジタル署名の要件を満たしており、キャラクタストリングに、他の文書では再使用できない、忘れ得ない署名で意図的に署名し、署名した文書が改変できないことの確証が得られる。
【００５６】
大きなコンピュータプログラム又は長いテキスト文書のような大きなキャラクタストリングの暗号化では、暗号化及び解読にかなりの時間量が必要となり得るので、ディジタル署名の実施形態の中には、一方向ハッシュ関数を実施するものもある。このような実施形態の１つでは、署名者は、公知の一方向ハッシュアルゴリズムを用いて、キャラクタストリングのためにハッシュ値を作成し、彼の秘密キーを用いてこのハッシュ値を暗号化する。次に、文書及び署名したハッシュ値は受信側に送られ、受信側では、同じハッシュ関数をキャラクタストリング上で実行し、得られたハッシュ値と、署名したハッシュ値を署名者の公開キーで解読することによって生成したハッシュ値とを比較する。かかる方法では、用いるハッシュ関数及び暗号化アルゴリズムが適当な強さであれば、非常に優れたセキュリティが得られる。
【００５７】
公開キー／秘密キーシステムによるデータの暗号化は、ディジタル署名の生成ばかりではなく、送信又は格納に先立つデータの暗号化にも有用であり、あるいは他の用途においてデータを安全又は秘密に保持するにも有用である。同様に、対称暗号化技法は、同じ単一の秘密キーの暗号化及び解読を拠り所とし、このような用途に適用することができる。例えば、ネットワークサーバとコンピュータ化賭博ゲーム装置との間でのプログラムデータの送信は、対称暗号化技法によって確保することができ、一方ゲーム装置において受信したプログラムデータは、実行前にハッシュ関数及び公開キー暗号法を採用したディジタル署名によって、規制監督官庁によって承認されたものとして、検証することができる。
【００５８】
その他の暗号化方法及び方式も存在し、同様に本発明にしたがって使用可能である。ＤＥＳ（データ暗号化標準）のような一部の対称暗号化方法及び単一キーの秘匿性を拠り所とするその変種は、ここに記載する方法が公開キーとのキー対を必要とするために、適応させることができない場合もある。ＲＳＡ及びDiffie-Hellmanのようなその他の種々の暗号化方法は、公開／秘密キー方法に準じおり、これらの方法に使用可能である。ＭＤ５又はＳＨＡのような種々のハッシュ関数を用いることもでき、これらが十分に非可逆性であり一方向ハッシュ関数とみなせる限り、本発明に係る多くの態様において有用である。種々の暗号化方法も様々な程度のセキュリティを備えており、突破が比較的容易なものから、突破が非常に難しいものまである。これら種々の程度のセキュリティは、種々の確率度で暗号化したデータを忘れられないように、読み出しできないように、などとすることができる種々の程度のセキュリティを含み、本願に係る暗号化方法の範囲にはいると見なすこととする。種々の暗号化方法が存在し、今後も開発されることが予期され、それらの全ては、本発明に係る態様の一部で採用可能な可能性があり、本発明の範囲に該当するものとする。
【００５９】
図１は、ゲームシステムにおいて通常見られる種々の構成要素、及び本発明に応じてこれらをどのように用いるかについて例示する、ゲームシステム１０１０の一例を示す。このゲームシステムにおけるユーザインターフェースデバイスは、押しボタン１０１、ジョイスティック１０２、及びプルアーム(pull arm)１０３を含む。賭博に対する掛け金(credit)は、コイン又はトークンスロット１０４、紙幣受取器やカードリーダのようなデバイス１０５、又はその他の掛け金入力デバイスによって確立することができる。カードリーダ１０５が、ユーザがゲームを完了したときに、ユーザのカードに掛け金情報を記録する機能を設けることもでき、掛け金はコイントレイ１０６又はその他の掛け金返却デバイスによって戻すこともできる。ビデオ画面１０７のようなデバイスによって、ユーザに情報を提供する。ビデオ画面１０７は、陰極線管（ＣＲＴ）、液晶表示（ＬＤＣ）パネル、プラズマディスプレイ、発行ダイオード（ＬＥＤ）ディスプレイ、又はコンピュータ化ゲームコントローラの制御の下で視覚画像を生成するその他の表示装置とすることができる。また、ボタン１０１をプルーフすると、ゲームのいずれの時点においてもゲームシステムに有効な入力を供給するために用いたのはどのボタンかを示すことができる。更に別の光又は他の視覚インディケータも、ゲーム情報を示したり、ゲームユーザになりそうな人の注意を引く等の他の目的のために設けることができる。サウンドはスピーカ１０８によって供給され、更にゲームステータスを示すため、ゲームユーザになりそうな人の注意を引くため、又はその他の目的のために、コンピュータ化ゲームコントローラの制御の下で用いることができる。
【００６０】
更に、ゲームシステム１００は、コンピュータ化ゲームコントローラ１１１及び配線ハーネス１１３を通じて接続されているＩ／Ｏインターフェース１１２を備えている。万能ゲームコントローラ１１１は、種々のゲームシステムユーザインターフェースアセンブリのインターフェース要件に準拠するようにそのハードウェアやソフトウェアを設計する必要はなく、一旦設計すれば、種々のゲームシステムをＩ／Ｏインターフェース１１２を介して制御することができる。Ｉ／Ｏインターフェース１１２は、万能コンピュータ化ゲームコントローラの入力／出力を、種々のゲームシステム内部にあるインターフェースアセンブリに適正にインターフェースするように設計されている。
【００６１】
実施形態の中には、万能ゲームコントローラ１１１は、標準的なＩＢＭパーソナルコンピュータと互換性のある（ＰＣ互換）コンピュータとしたものもある。万能ゲームコントローラの更に別の実施形態は、埋め込みコントローラボード又はモジュラーコンピュータシステムのような汎用コンピュータシステムから成る。このような実施形態の例は、ＰＣ／１０４バスを有するＰＣ互換コンピュータを含む。これは、モジュラーコンピュータシステムの一例であり、ＰＣのソフトウェア及びハードウェアの互換性を保持しつつ、小型サイズ及び低消費電力を特徴としている。万能ゲームコントローラは、種々のプログラムコードを万能コントローラにロードすることによって、多種多様なゲームを実施するために必要な機能を全て備え、ゲーム開発、及び種々のゲームシステムにおいて用いるために顧客に配送する共通のプラットフォームを提供する。本発明に係る他の万能コンピュータ化ゲームコントローラは、種々のゲームシステムソフトウェアに対応可能ないずれかの汎用コンピュータを含むことができ、ゲームアプリケーションにおいてコスト効率性のために最適化した万能コントローラや、種々のゲームソフトウェアをロードし実行する機能を保持しつつ、他の特殊目的エレメントを含むものがある。
【００６２】
更に別の実施形態では、セキュリティ機構を有する万能コントローラは、進行型コントローラやプレーヤ追跡システムのようなネットワーク状インラインシステムを含む、他の用途にも用いることができる。また、本発明は、キオスクディスプレイや、ビデオディスプレイ上にピクチャインピクチャ構造を作成するために用いることもできる。
【００６３】
実施形態の中には、万能コンピュータ化ゲームコントローラを、カスタム化したＬｉｎｕｘカーネルのようなゲーム特定用途カーネルを有するオペレーティングシステムを実行するコンピュータとしたものもある。別の実施形態では、コードのシステムハンドラアプリケーションレイヤがカーネル内で実行し、共通ゲーム機能性を更にプログラマに提供する。このような実施形態におけるゲームプログラムは、したがって、全てのコードの一部に過ぎず、システムハンドラアプリケーションレイヤ及びカーネルを拠り所として、共通に用いられる賭博機能を提供する。更に別の実施形態は、種々のレベルのアプリケーションコードを有し、数層のゲーム特定コード層を含む実施形態から、オペレーティングシステムやカーネルが無くても実行し、それ自体のコンピュータシステム管理機能を提供する単一層のゲームソフトウェアまでの範囲がある。
【００６４】
図２は、本発明の種々の実施形態において用いるような、コンピュータ化賭博ゲーム装置の一部をなす、選択した品目に接続されているネットワーク状コンピュータを示す。コンピュータ化ゲームコントローラ２０１は、プロセッサ２０２、メモリ２０３、及び不揮発性メモリ２０４を有する。不揮発性メモリの一例は、大容量フラッシュデバイス（以後、「フラッシュディスク」）である。フラッシュディスクは、読み書きしつつ、電源を落とした後でもディスクに格納した情報を保持するという利点がある。実施形態の一部のコンピュータ化ゲームコントローラに取り付けられているのは、大容量記憶デバイス２０５、及びネットワークインターフェースアダプタ２０６である。ネットワークインターフェースアダプタは、ネットワーク接続部２０８を介して、ネットワーク状コンピュータ２０７に取り付けられている。図２の種々の構成要素は、本発明の実施形態の範囲内に存在し、種々の構成要素が連動する様子を示すために図示した。
【００６５】
本発明のコンピュータ化賭博ゲームコントローラは、コンピュータ化賭博ゲームを制御するように動作可能であり、更に、種々の実施形態では暗号化を用いてデータセキュリティを設けるように動作可能である。実施形態の一部におけるコンピュータ化ゲームコントローラ２０１は、ＩＢＭ  ＰＣ互換コンピュータのような汎用コンピュータである。ゲームコントローラは、Ｌｉｎｕｘ又はMicrosoft Windows（登録商標）のようなオペレーティングシステムを実行し、更に別の実施形態では、オペレーティングシステムを修正して、コンピュータ化ゲーム装置内で実行するようにしている。また、コンピュータ化ゲームコントローラは、ゲームコードも実行する。これは、実行の前に、ハードディスクドライブのような大容量記憶装置、あるいはフラッシュメモリ又はＥＰＲＯＭメモリのような不揮発性メモリ２０４のいずれかからメモリ２０３にロードすることができるゲームコードも実行する。実施形態の中には、コンピュータ化ゲームコントローラ２０１は、暗号化機能をメモリ２０３にロードし、これらの機能は後に実行され、他のゲームシステムデータを大容量記憶装置２０５から安全にロードする。
【００６６】
更に別の実施形態では、コンピュータ化ゲームコントローラは、ネットワーク接続部２０８及びネットワークインターフェースアダプタ２０６を介して、ネットワーク状コンピュータ２０７とデータを交換する。ネットワーク接続部を介して交換されるデータは、本発明の実施形態の一部では暗号化されており、交換されるデータのセキュリティを確保する。種々の実施形態において交換されるデータは、ゲームプログラムデータ、コンピュータ化ゲーム装置報告データ、コンピュータ化ゲーム装置の動作を制御するコマンドを備えたデータ、及びその他のコンピュータ化ゲーム装置データから成る。このようなデータの交換において暗号化を採用したことにより、ある程度のセキュリティが得られ、このようなデータが改変されたり、改竄されないことの確証を得る。
【００６７】
本発明は、暗号法を採用し、種々の実施形態において、ハッシュ関数、対称暗号化、及び公開キー／秘密キー暗号化を含み、これによって、コンピュータ化ゲームシステムが利用し、本発明にしたがって暗号化によって保護されたデータが改変や改竄されないというある程度の信頼度が得られる。本発明の範囲内に入るデータは、オペレーティングシステム又はゲームプログラムデータのようなプログラム、掛け金又はその他のゲーム状態データのようなコンピュータ化ゲームマシンステータスデータ、コンピュータ化ゲーム装置の動作を制御する制御命令データ、及びその他のコンピュータ化ゲームマシンデータを含むが、これらに限定されるのではない。
【００６８】
認証プログラムの本質的な目的は、メモリ内に格納されているデータが、転化(corrupt)、侵害(violate)、改変(alter)、又はその他の方法でメモリ内に置かれた元のデータから変化されていないことについて、ほぼ絶対的な保証を与えることである。したがって、認証プログラムの全ては、第１組のカジノゲームデータ情報を供給し、これと現在の１組のカジノゲームデータを比較することができるように動作しなければならない。種々の公知の認証プログラムにおける変形では、元のデータに異なる扱いをしたり、異なる形態のデータを比較したり、異なる暗号化技法を用いたり、カジノゲームデータ集合を表す、異なる格納データ形式（例えば、署名、省略ビットストリング等）を形成したり、別のステップを実行したり他の機構を用いるが、基盤となる目的は同一のままである。情報の元のキャッシュは、後に元のデータ（その内容及び／又は状態）の証拠（データ）を現在の状態及び／又はデータの内容に関するデータと比較することによって、同一であり続けていることを示さなければならない。これら比較の方法の変形が望ましいのは、変形はセキュリティの侵害を思いとどまらせるのに役立ち、異なるプログラムであれば、それらを回避するために異なる努力や技法を必要とするからである。多種多様の異なる認証システムを設けることによって、いずれの単一システムの侵害も複雑化する。
【００６９】
一実施形態では、連番第０９／５２０，４０５を有し、２０００年３月８日に出願された、Computerized Gaming System, Method and Apparatusの同時係属中の出願に記載されているオペレーティングシステムが、ゲームアプリケーションに特定した「供給オブジェクト」のライブラリと協動する。この開示の目的上、「共有オブジェクト」とは、ゲームのための特定の機構集合又は動作シーケンスを定義するゲームの自立機能ユニットとして定義する。本発明のゲームマシンの個性(personality)及び挙動は、オペレーティングシステムがコールし実行する特定の共有オブジェクト集合によって定義される。単一のゲームの中では、多数の共有オブジェクトが動的にロードされ、実行される場合がある。この定義は、通常ＡＰＩを多数のプログラムに供給する、従来の共有オブジェクトの意味とは対照的である。ＡＰＩとは、アプリケーションプログラミングインターフェースであり、機能のライブラリを含む。
【００７０】
一実施形態では、特定のアプリケーションのための共有オオブジェクト及びそれらの対応する署名が、フラッシュメモリ又はＥＰＲＯＭに格納される。共有オブジェクトがコールされると、これらはＲＡＭ内にコピーされ、頻度の高い周期でハッシュされる。共有オブジェクトはフラッシュメモリからハッシュされ、ＲＡＭにロードされ、次いでＲＡＭからハッシュされてもよい。Ｌｉｎｕｘ、Unix（登録商標）又はその他の同様のシステムを利用すると、ＲＡＭ内におけるデータの位置を突き止められるという利点がある。ＲＡＭにおけるデータ検証には、データがロード又は再ロードされるときではなく、エラーが発生したときにそれを捕獲できるという別の利点がある。このため、機械の誤動作に基づくジャックポット等の払い戻しを回避することによって、カジノはばく大な金額を支払わなくて済む。ハッシングはバッチプロセスであるので、プロセスは連続的ではない。しかしながら、ハッシングが、例えば、１０秒というような、比較的短い時間しか要さない場合、プロセスはそれ自体を繰り返し、ＲＡＭ内のデータ検証を実際に連続的にすることができる。２００１年９月１０日に出願した米国特許出願第１０／３１８，３６９号（既に引用したことによって本願に含まれることとした）の主題と同様であり、この明細書においても記載した内部検証デバイスは、ハッシング速度を高める機構を設け、そのデバイスは、本発明の実施に用いることができる。
【００７１】
ゲームプログラム共有オブジェクトのコード検証について以上詳しく説明したが、ハッシュ関数及び署名を利用したコード検証は、Ｌｉｎｕｘカーネルの認証、カーネルに対するモジュール状変更、オペレーティングシステム、ゲーム状態データ、乱数発生データ等の検証にも適用することができる。
【００７２】
種々の実施形態において、選択したデータに、当該データの完全性を確保するために検証されるディジタル署名で署名することによって、暗号化で保護することが余り好ましくない場合もある。実施形態の中には、データ署名は、選択したデータに署名者の秘密キーで署名し、データが、対応する公開キーを用いてでないと解読できないようにすることから成るものもある。意図した署名者のみが彼の秘密キーを知っており、他の秘密キーで暗号化した文書は、意図した署名者の公開キーでは解読できないので、意図した署名者の公開キーでデータの解読に成功すると、データが署名されていた、即ち、意図した署名者によって暗号化されていたことに、ある程度の確信度が得られる。
【００７３】
しかし、公開キー／秘密キー暗号化アルゴリズムは、通常、大量のデータを暗号化するために比較的長い時間を要するので、実施形態によっては、暗号化アルゴリズムを更に効率を高めて用い、一方向ハッシュ関数からのハッシュ値のようなデータの一意の特性を暗号化することもある。このような実施形態では、署名者は、署名するデータのために、一方向ハッシュ関数によって参照ハッシュ値を導出し、得られたハッシュ値を彼の公開キーで暗号化する。一方向ハッシュ関数は、通常、公開キー／秘密キーアルゴリズムよりもはるかに素早くデータに適用することができ、そのため、データ全体を処理するには、公開キー／秘密キーアルゴリズムよりもハッシュ関数を用いる方が望ましい。本発明の実施形態によっては、乱数とカジノゲームデータ集合とを組み合わせたビットストリングの暗号化を用いる場合、ハッシュ値のみを公開キー／秘密キー暗号化によって暗号化すればよく、大量のデータに署名し検証するために必要となる時間を大幅に短縮することができる。署名を検証するには、意図する署名者の公開キーによってハッシュ値を解読し、解読した基準ハッシュ値を、同じデータの新たに計算したハッシュ値と比較する。基準ハッシュ値が新たに計算したハッシュ値と一致した場合、署名したデータは、それに署名されて以来、改変されていないことに、ある程度の確信度が存在する。
【００７４】
ディジタル署名を用いる実施形態の中には、秘密キーが、コンピュータ化賭博ゲームシステムにおけるデータの完全性を確保する責務がある規制監督官庁又はその他の機関のそれである場合がある。例えば、Nevada Gaming Regulations Commissionは、彼らの秘密キーを用いて、このようなゲームシステムにおいて用いられるデータに署名を適用し、署名したデータを承認したことを保証する場合がある。このような実施形態は、これらのシステムにおいて実行するゲームコードが承認され、承認以来改変されていないことの確証を得るのに有用であり、ゲーム運営者即ち所有者及び規制委員会双方にセキュリティを与えることになる。他の実施形態では、ディジタル署名は、ゲームコード製造業者又は設計者のそれであり、ゲームコードは、署名以来、その元の状態から改変されていないことを保証する。
【００７５】
前述のシステムにおける基準ハッシュ値又は公開キーの安全な格納は重要である。何故なら、データの完全性を検証するために用いられる基準ハッシュ値又は公開キーも改変できる場合、データは一層簡単に改竄できるからである。この理由のために、基準ハッシュ値、公開キー、又はその他の暗号化キーデータを書き込み不可のメモリに格納する。実施形態によっては、不揮発性メモリは、改変できないプログラマブルメモリであり、新たな暗号化キーデータを必要とする毎に、不揮発性メモリの交換が必要となる。このような実施形態では、データを改変するためには、不揮発性メモリ２０４を物理的に取り外して交換しなければならず、ある程度のアクセスセキュリティが得られ、不揮発性メモリ及びその内容の同一性の視覚的検証が可能となる。
【００７６】
更に別の実施形態では、暗号化キーデータを大容量記憶装置に格納する。別の実施形態では、暗号化関数に埋め込まれた暗号化キーデータの格納、ハードディスクドライブ大容量記憶装置の安全な区域への格納、又は暗号化キーデータを保護するための他のセキュリティ方法の使用を含む。
【００７７】
本発明の実施形態の中には、これらの認証及び暗号化方法は、ネットワークを通じたコンピュータ化ゲームシステムの通信にも適用されるものもある。ネットワークを通じて伝達されるデータは、本発明の種々の実施形態では、ハッシュ関数によって検証され、公開キー／秘密キー暗号化の使用によって検証され、対称暗号化の使用によって検証され、前述の乱数暗号化手順の使用と類似した又はこれと同一のプロセスによって検証され、あるいはディジタル署名又はチャフィング(chaffing)のようなその他の暗号技法の使用によって検証される。また、種々のキー交換又はキーネゴシエーション(key negotiation)が存在し、本発明の実施形態の中には、ネットワーク状のコンピュータ化ゲームシステムに、暗号化キーについて他のネットワーク状コンピュータシステムと公開状態で同意し、その後ネットワーク上で安全に通信するためにこの暗号化キーを用いることができるようにする機能を設ける。
【００７８】
このようなネットワーク通信方法は、本発明において、コンピュータ化賭博ゲームシステムと他のネットワーク化コンピュータシステムとの間における安全なデータ交換を行うために利用される。例えば、本発明の実施形態の中には、コンピュータ化賭博ゲームの動作のある態様を制御する制御コマンドをネットワークを通じて安全に送る場合がある。このようなコマンドは、選択したコンピュータ化賭博ゲームシステム上で払い戻しのオッズを増加させること、又は選択した日時において選択したコンピュータ化賭博ゲームシステム上で実行するゲームプログラムを変更することを含む場合がある。実施形態の中には、コンピュータ化賭博ゲームが、会計データのようなゲームデータを、暗号化によって、ネットワーク状コンピュータに安全に報告する場合もある。本発明の更に別の実施形態では、賭博ゲームプログラムデータを、ネットワークを通じてコンピュータ化賭博ゲームシステムに安全に送信することによって、物理的に各コンピュータ化賭博ゲームシステムにアクセスせずに、新たな賭博ゲームをシステムに供給する安全な方法を提供する。
【００７９】
認証及び暗号化方法が提供するセキュリティの度合いは、通常、ハッカーが暗号を破るために費やそうとする手間や費用に依存するので、本発明の実施形態の中には、暗号化キーの交換を採用する場合もある。２５、５０、６０、８０、１００、１２０、１２８、１５６、１８０又はそれ以上のキャラクタによる乱数発生を用いることによって、ハッカーがコードにアクセスする能力を超える容量を備えることは明らかである。これは、特に、乱数発生が個々のマシンに対し一意であり、ゲームの各プレイ又は立ち上げ(boot-up)に対しても一意とすることができる場合に当てはまる。実施形態の中には、所定の時間期間だけディジタル署名を有効とするものもあり、更に別の実施形態では有効期限を関連付け、その後はもはや用いることができないようにするものもある。このような方法は、ある時間期間だけゲームの使用許諾を与え、その後は、データ検証に用いられる暗号化キーの期限切れのために、適正に検証されないようにする、本発明の種々の実施形態においても用いることができる。ハッシュ関数が生成するハッシュ値は、通常、ハッシュされるデータに全面的に依存するので、基準ハッシュ値の期限切れ及び交換を組み込んだ本発明の実施形態では、修正データの再発行により異なるハッシュ値を生成することも必要となる。例えば、細かいバグの修正、新たな機構の追加、又はゲームプログラムを構成するデータのその他の小さな変更で、編集したプログラムデータをハッシュする際に異なる基準ハッシュ値を生成するには十分であり、更新したデータに対応する更新した基準ハッシュ値が得られる。
【００８０】
別の実施形態は、種々のコンピュータ化ゲーム及びゲーム製作者間で種々のキーを用い、暗号化キーを破るのに成功することの危険性、したがってその価値を低下させる。例えば、一実施形態では、ゲーム製作者はそのコンピュータ化賭博ゲームの顧客毎に異なるディジタル署名を採用することによって、単一のゲームシステム上において暗号化キーを破っても、その影響は限られた数のゲームにしか及ばないことを保証する。別の実施形態では、規制監督官庁が、周期的に、ゲームに署名する際に用いるキーを変更し、データに署名するために用いるキーのハッキングに成功しても、限られた特定可能な数のゲームだけに、くい止められるようにする。キーの交換及び期限切れという方針には多くの変形が存在し、その全てが本発明の範囲内に該当するものと見なすことは、当業者には自明であろう。
【００８１】
本発明は、ゲームコード及びその他のデータの安全な格納及び検証を特徴とし、コンピュータ化賭博ゲームシステム及び／又はネットワークシステムと安全にデータを交換することができ、更に、単純かつ容易に管理できるようにこれを行う、賭博ゲーム特定プラットフォームのためのアーキテクチャ及び方法を提供する。本発明の実施形態の中には、Nevada Gaming Commission又はその他の規制監督官庁によってプルーフ又は承認されたゲームプログラムコードを特定できるものもある。本発明は、これら及びその他の機能を設けるにあたって、暗号化、ハッシュ関数、及びその他の暗号方法を用いる。
【００８２】
図８は、本発明の実施形態の一例を示すブロック図である。この図を参照すると、背景が強調された四角で囲まれた要素は、ＺＫＰを使用する前に公開され、認証のためにＺＫＰを用いるときにゲームデータ集合と共に格納され、又は対話的にＺＫＰを行うときにネットワークを通じて転送されたものを示す。べた塗りの四角は、ゼロ知識プルーフの質問フェーズよりも前に発生した情報から成る。右側の模様付四角は、ランダムな質問に基づくプルーフを完了する情報を取り囲み、図では、段階毎にランダムビットとして示されている。
【００８３】
対話的にＺＫＰを行う場合、各ランダム順列を受信した後にランダムビットを選択する。非対話的にＺＫＰを行う場合、ゲームデータ集合、ならびにランダム順列及び秘密の存在のプルーフの何らかの組み合わせからランダムビットを導出する。
準備シーケンスの一部として、繰り返しを実行する前に、
１）秘密、及び秘密の存在のプルーフを生成する。これは１回行う。秘密は、１回生成したなら、変更できない。秘密の存在のプルーフは、次の特性を有する。これは秘密に一意であり、その存在のプルーフから秘密を解明することは非常に難しい。秘密は、書き込み不可の媒体上のＯＳ  ＥＰＲＯＭ上に格納しなければならないが、あるいは公開／秘密キーを用いて暗号化し、秘密キーがわからなければ、秘密を変更できないようにしてもよい。このステップは、対話式及び非対話式ＺＫＰプロトコル双方に共通である。尚、ＰＫＩを用いた暗号化は、本方法の必要な部分ではないことを注記しておく。
対話式ＺＫＰを実行する場合：
この手順は、ネットワークを通じて、又は「生の」データ交換が頻繁に行われるその他の種類の環境において実行することができる。
【００８４】
２）乱数を発生し、これから、秘密の存在のプルーフのランダム順列を発生する。秘密の存在のプルーフのランダム順列は、ランダム順列から用いられた乱数を再現することが非常に困難であるようでなければならない。
３）ランダム順列を検証側に与える（コミットする）。（検証側も秘密の存在のプルーフを有しているはずである）。
４）検証側は１又は０を選択する。
５）１又は０のどちらが選択されたかに応じて、次の内の１つを実行する。
ａ．０が選択された場合、ランダム順列を生成した際に用いた乱数を明示する。
ｂ．１が選択された場合、乱数と秘密とを組み合わせることによって動作は秘密を知っていることを暴露し、ランダム順列が乱数にどのように関係するかを、秘密の存在のプルーフが元の秘密にどのように関係するかに関連付けられることを示すことができるようにする。
６）ステップ２ないし５を、必要な回数繰り返す。ステップ毎に、ごまかしの確率が１／２ずつ低下する。
【００８５】
非対話式ＺＫＰにおいて、データ集合Ｄを認証する準備のために行われる、１つのデータ（Ｄ）の認証では、ステップ１におけるように秘密を準備した後に、以下のステップを実行する。
２）何回繰り返しを行うのか決定する。この数値をＮと呼ぶ。
３）Ｎ個の乱数を発生する。これらの数から、秘密の存在のプルーフのＮ個のランダム順列を発生する。
４）秘密の存在のプルーフ、Ｎ個のランダム順列、及びデータＤ（例えば、カジノゲームデータ、カジノゲームデータ集合等）を、一方向ハッシュ関数にかけて、１及び０のランダムシーケンスを得る。
５）ランダムシーケンスの各ビットを、対話式プロトコルのステップ５に適用する。
このステップの結果を、ランダム順列と共に格納する。
【００８６】
ゲームデバイスにおけるデータ集合Ｄの認証
上記非対話式手順のステップ４及び５を繰り返し、全てのステップが適正に完了し成功したことを検証する。完成したプルーフの存在によって、ハッシュ値（１及び０のランダムシーケンス）を発生する際に用いたデータ集合Ｄの信憑性を保証する。
ゼロ知識プルーフを用いてゲーム装置においてカジノゲームデータを認証する他の実施形態を記述する別の代替方法は、次の通りである。
ａ）最初のステップでは、乱数を選択する。このステップは、いずれの方法によっても実行することができ、好ましくは、乱数発生器（通常賭博ゲーム装置と連動する乱数発生プログラムでもよい）又はその他のいずれかの方法を用いる。この乱数は、ＺＫＰ「秘密」である（ＺＫＰ認証プロセスの他の実施形態の手順において先に説明した「秘密」と同様と考えればよい）。
【００８７】
ｂ）数学的関数（元の数学的関数）を通じて乱数を供給し、第２の異なる数又は値を生成する。第２の異なる数又は値を発生する際、第２の異なる数を挿入して、その結果乱数が得られる一意の数式、アルゴリズム又はプロセスが得られないようにする。このような関数の一例がr2 mod nであり、ｒは乱数、ｎは２つの素数の積である。得られた値を計算することは非常に容易であるが、結果から元の値ｒにさかのぼることは非常に難しい。
ｃ）第２の数をゲーム装置のプロセッサに保存する。この数は誰にでも配布することができる。何故なら、これを逆に辿っていっても秘密を得ることはできないからである。
ｄ）検証システムを用いて処理を行うには追加の情報が必要となる。とりわけ必要なのは、元の数学的関数にかけることによって「種々の第２の数」を生成する多数の乱数である。多数のこれら「種々の第２の数」（処理済みの数）は、装置上に格納してもよく、あるいはＺＫＰプルーフを用意する時点で発生してもよい。これらは、装置内のメモリにゲームデータ集合と共に格納される。格納した数全て（これらは処理済みの数である）とゲームデータ集合とを、ハッシュ関数を通じて供給し、１及び０のランダムパターンのシーケンス（ＳＲＰ）を生成する（このＳＲＰは、ハッシュ値としては用いないが、一連の１及び０である）。このＳＲＰの最初のビット（０又は１）を取り込み、最初のビットが０であれば、第１の判断を行う。最初のビットが１であれば、第２の判断を行う。判断ビットが０であれば、最初の乱数（次いで、その後関連する判断ビットが０である乱数の各々）を取り込み、最初の処理済み乱数を、その値に導いた乱数と関連付ける（隣り合わせて並べる）という判断が可能である。判断ビットが１の場合、最初の処理済み乱数を元の秘密と乗算し（積を形成する）、次いでこの積を、そのビットと対応する処理済みの乱数と関連付けるという第２の判断が可能である。
【００８８】
これは、処理した乱数の各々に、所望の乱数の数と同じ回数だけ、ＳＲＰ内のビット数を限度として行う。これは、ＳＲＰに加算し、より大きな数を用いるか又は全く新しいランダム順列の集合を生成し、そしてプロセスを繰り返すことによって、できるだけ頻繁にそしてできるだけ長く行うことができる。
その結果、メモリ上に格納されるのは（例えば、コンパクトフラッシュ（登録商標）又はその他のメモリ）、ランダムな処理した数、及びそれらの関連である。続いて、コンピュータ化ゲームデバイスにおいて、１及び０のパターンを再度発生することによって、認証を行うことができる。この再発生は、元のゲームデータ集合及び格納した処理済みの乱数と共に、ＳＲＰをハッシュ関数にかけることによって行うことができる。１及び０のパターンを再発生したとき、関連をチェックして、これらが１及び０のパターンとどの程度一致するか確認する。一連のゼロ知識プルーフがＮビット全てについて正しく全体的に完了した場合、認証は再度確定する。
【００８９】
本発明の構成要素は、マイクロプロセッサ、プログラマブルロジック、又は状態機械によるハードウェア、ファームウェア、あるいは所与のデバイス内におけるソフトウェアで実現することができる。２００１年９月１０日に出願した同時係属中の予備出願第１０／３１８，３６９号に記載されている内部制御検証装置を用いると、ハッシングの速度を高めることもできる。好適な一実施形態では、本発明の１つ以上の構成要素はソフトウェアの形態を取る。本発明の構成要素は、１つ以上のコンピュータ読み取り可能媒体上のソフトウェアとして備えることもできる。ここで用いる場合、コンピュータ読み取り可能媒体という用語は、あらゆる種類のフロッピディスク、ハードディスク、ＤＣ−ＲＯＭ、フラッシュメモリ、リードオンリメモリ（ＲＯＭ）、及びランダムアクセスメモリ（ＲＡＭ）を含むと定義する。加えて、ゲームシステム１００は、マイクロプロセッサに埋め込まれ、特注の装置ハードウェア及び／又は専用の信号目的ハードウェアを組み込んだシステム／装置を採用することができる。
【００９０】
１つの態様において、ゲームシステムは、ゲーム制御システム、ゲームシステムインターフェース、及びゲームシステムデバイスを含むことができる。ゲーム制御システムは、コンピュータ又はコントローラ、揮発性メモリ、及び不揮発性メモリを含む。コントローラは、メモリ及び不揮発性ＲＡＭ（ＮＶＲＡＭ）を含む。１つの態様では、メモリはランダムアクセスメモリである。１つの態様では、ランダムアクセスメモリはダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。不揮発性ランダムアクセスメモリは、停電時にメモリ内に格納されているデータを保持するバッテリバックアップを含む。一実施形態では、ＮＶＲＡＭ３０８を用いて、スロットマシンのリール設定値、払い戻し率、及び掛け金のような、重要なゲームデータを格納する。
【００９１】
一実施形態では、プログラムメモリは、読み出し／書き込み可能な不揮発性メモリである。１つの態様では、書き込み可能メモリはフラッシュメモリとするとよい。１つの適した不揮発性メモリは、数社の商用供給業者から入手可能な、「コンパクトフラッシュ（登録商標）」という商標で市販されている。本発明との使用に適したその他の不揮発性メモリは、本願を読んだ後には、当業者には明白となろう。
【００９２】
不揮発性メモリは、ゲームデータ集合を格納するために用いることができる。ゲームデータ集合は、ゲーム特定コード又はゲームプログラムファイルを含むと定義する。ゲーム特定コードの例には、ゲームコード、ゲームデータ、ゲームサウンド、ゲームグラフィックス、ゲームコンフィギュレーションファイル、又はその他のゲーム特定ファイルが含まれる。ゲーム特定コード又はプログラムファイルは、ゲームシステム上で実行する特定の種類のゲームを対象とし、ブラックジャック、ポーカ、ビデオスロットマシン、又はリールスロットマシン等がある。一実施形態では、不揮発性メモリは、ＥＥＰＲＯＭのような読み出し専用メモリ（ＲＯＭ）である。不揮発性メモリは、ゲームシステムのオペレーティングコードを格納するために用いられる。ゲームシステムの起動又は動作時に、ゲームシステムのオペレーティングコード及びゲームデータ集合はメモリ、好ましくは揮発性メモリに転送され、コントローラが高速でアクセスしてゲームシステムを動作させる。ゲームシステムの動作中には、コントローラは、ゲームシステムの動作のために、ゲームシステムを介してゲームシステムデバイスとインターフェースする。ゲームシステムインターフェースは、ネットワークインターフェース、ネットワークコンピュータ、及びネットワーク接続を含むことができる。これらについては、既にこの中で詳細に述べた。ゲームシステムデバイスは、押しボタン、ジョイスティック、プルアーム、トークン又はスロットデバイス、コイントレイ、ビデオ画面及びスピーカのような、機械的デバイス、電気的デバイス、ハードウェア、ソフトウェア、又はビデオデバイスを含むことができる。これらについては、既にこの中で詳細に述べた。
【００９３】
１つの態様では、本発明において用いるハッシュ関数はＳＨＡハッシュ関数とすることができる。他の適したハッシュ関数には、ＭＤ５、ＳＮＥＦＲＵ、ＨＡＶＡＬ及びＮ−ＨＡＳＨが含まれる。本発明による検証プロセスに用いて好適な他のハッシュ関数は、本願を読んだ後では、当業者には明白となろう。ハッシュ出力又はメッセージ値は、記憶システムに格納される。記憶システムは、ＲＡＭ又はＶＲＡＭに格納されているメッセージダイジェスト、あるいはゲームシステムの一部であるその他の適した記憶システムを含むことができる。
【００９４】
ゲームシステムの動作中、ゲームデータ集合を連続的に検証し、ゲームデータ集合において変化が生じていないことを判断するようにしてもよい。１つの態様では、ゲームデータ集合は、一度に１ファイル又はデータ部分集合ずつ検証する。即ち、ゲームシステムの動作中、プログラムファイルをハッシュ関数に適用する。このハッシュ関数は、ハッシュ関数と同一である。ハッシュ関数のハッシュ出力を、システムに格納されている対応のハッシュ出力と比較する。一致しない場合、ゲームはエラーモードに入り、終了するか、これに加えて／あるいはゲーム担当者に通知する。一致した場合、ゲームデータ集合の次のプログラムファイルを同様に検証する。このように、ゲームシステムの動作中、ゲームデータ集合を連続的に検証する。別の態様では、ゲームデータ集合の検証は、本発明の検証プロセスを用い、所望の時間間隔で、又はゲームシステム上でプレイされる各ゲームの開始というような、所望のイベントの開始時に行うこともできる。
【００９５】
本発明によるゲームシステムは、認証可能なゲームデータ集合を用意し、ゲームシステムにおいて用いられるゲームを認証する、他に例を見ないシステム及び方法を提供する。ゲームシステムは、プログラムファイルを含むゲーム集合が、意図的又は意図せずに、改変されていないことを確実に検証するプロセスを含む。改変されていた場合、ゲームシステム上でプレイするゲームの結果が変わってしまう。１つの態様では、本発明は、ゲームシステムの動作中にゲームシステムの連続的な検証を行う。
【００９６】
以上特定的な実施形態について例示し説明したが、同じ目的を達成すると考えられるいずれの構成でも、ここに示した特定的な実施形態の代わりに採用できることは当業者には認められよう。本願は、本発明のあらゆる改造や変形も、その範囲に含むこととする。本発明は、特許請求の範囲、及びその均等物の最大範囲によってのみ限定されることとする。
【図面の簡単な説明】
【００９７】
【図１】本発明の数個の実施形態を実施する際に用いることができるような、コンピュータ化賭博ゲーム装置を示す図である。
【図２】本発明の数個の実施形態に係る、コンピュータ化賭博ゲーム装置の一部を構成するある構成要素に接続された、ネットワーク状コンピュータの図を示す。
【図３】例の１つの説明に用いるグラフを示す。
【図４】ゼロ知識プルーフプロセスの説明において補助する尖塔図(pinnacle)を示す。
【図５】ゼロ知識プルーフの多数の実施形態の１つを試験するフローチャートを示す。
【図６】ゼロ知識プルーフ定理を説明するための洞穴図を示す。
【図１】
2005523668.tif 000003
【図２】
2005523668.tif 000004
【図３】
2005523668.tif 000005
【図４】
2005523668.tif 000006
【図５】
2005523668.tif 000007
【図６】
2005523668.tif 000008
【国際調査報告】
2005523668.tif 000009