(57)【要約】 【課題】  乱数を使用する処理に不正がないか否かを認証するのに好適な乱数処理システム等を提供する。【解決手段】  乱数処理システム２０１の乱数使用装置２３１は、対象データを生成し、対象データのハッシュ値を送信し、これを受信した使用認証装置２５１は、乱数要求を受信し、乱数を発生させ、発生させた乱数を送信し、これを受信した乱数使用装置２３１は、受信した乱数を所定規則に基づいて対象データに使用して結果データを得て、対象データと結果データを送信し、これらを受信した使用認証装置２５１は、受信した対象データのハッシュ値と以前に受信したハッシュ値とが一致しない、もしくは、以前に発生された乱数を所定規則に基づいて受信した対象データに使用して得られる結果データと受信した結果データが一致しない場合、不正があった旨を報告する。【選択図】  図２
2006279542.tif 000002
【特許請求の範囲】
【請求項１】
乱数使用装置と、使用認証装置とを有する乱数処理システムであって、
（ａ）前記乱数使用装置は、
乱数の使用対象となるデータ（以下「対象データ」という。）を生成する対象データ生成部、
前記生成された対象データのハッシュ値を計算する使用側ハッシュ値計算部、
前記使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を前記使用認証装置に送信する乱数要求送信部
を備え、
（ｂ）前記使用認証装置は、
前記乱数使用装置から送信された乱数要求を受信する乱数要求受信部、
前記受信された乱数要求に応じて乱数を発生させる乱数発生部、
前記発生された乱数の値を指定する乱数応答を前記乱数使用装置に送信する乱数応答送信部
を備え、
（ｃ）前記乱数使用装置は、
前記使用認証装置から送信された乱数応答を受信する乱数応答受信部、
前記生成された対象データに対して前記受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成する使用側結果データ生成部、
前記生成された対象データと、前記生成された使用側結果データと、を指定するデータ通知を前記使用認証装置に送信するデータ通知送信部
をさらに備え、
（ｄ）前記使用認証装置は、
前記乱数使用装置から送信されるデータ通知を受信するデータ通知受信部、
前記受信されたデータ通知に指定される対象データのハッシュ値を計算する認証側ハッシュ値計算部、
前記受信された乱数要求に指定されるハッシュ値と前記認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、前記受信されたデータ通知に指定される使用側結果データと前記受信されたデータ通知に指定される対象データに対して前記発生された乱数の値を当該所定の規則により使用したときに生成されるべき使用結果のデータ（以下「認証側結果データ」という。）とが一致しない場合、当該乱数の使用に不正があった旨を報告する不正報告部
をさらに備える
ことを特徴とする乱数処理システム。
【請求項２】
請求項１に記載の乱数処理システムであって、
前記使用認証装置は、
前記受信されたデータ通知に指定される対象データに対して前記発生された乱数の値を当該所定の規則により使用した使用結果のデータを生成する認証側結果データ生成部
をさらに備え、
前記不正報告部は、前記認証側結果データ生成部により生成される使用結果のデータを、当該認証側結果データとして用いる
ことを特徴とする物。
【請求項３】
請求項１に記載の乱数処理システムであって、
当該所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義された規則であり、
前記使用認証装置は、
前記受信されたデータ通知に指定される対象データと、前記受信されたデータ通知に指定される使用側結果データとから、当該所定の規則により、当該対象データに使用された乱数の値を取得する乱数取得部
をさらに備え、
前記不正報告部は、前記乱数発生部により発生された乱数の値と前記乱数取得部により取得された乱数の値とが一致しない場合、当該使用側結果データと当該認証側結果データとが一致しないものとする
ことを特徴とする物。
【請求項４】
乱数使用装置と、複数の使用認証装置とを有する乱数処理システムであって、
（ａ）前記乱数使用装置は、
乱数の使用対象となるデータ（以下「対象データ」という。）を生成する対象データ生成部、
前記生成された対象データのハッシュ値を計算する使用側ハッシュ値計算部、
前記使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を前記複数の使用認証装置のそれぞれに送信する乱数要求送信部
を備え、
（ｂ）前記複数の使用認証装置のそれぞれは、
前記乱数使用装置から送信された乱数要求を受信する乱数要求受信部、
前記受信された乱数要求に応じて乱数を発生させる乱数発生部、
前記発生された乱数の値を指定する乱数応答を前記乱数使用装置に送信する乱数応答送信部
を備え、
（ｃ）前記乱数使用装置は、
前記複数の使用認証装置のそれぞれから送信された乱数応答を受信する乱数応答受信部、
前記生成された対象データに対して前記受信された複数の乱数応答のそれぞれに指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成する使用側結果データ生成部、
前記生成された対象データと、前記生成された使用側結果データと、を指定するデータ通知を前記複数の使用認証装置のそれぞれに送信するデータ通知送信部
をさらに備え、
当該所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義された規則であり、
（ｄ）前記複数の使用認証装置のそれぞれは、
前記乱数使用装置から送信されるデータ通知を受信するデータ通知受信部、
前記受信されたデータ通知に指定される対象データのハッシュ値を計算する認証側ハッシュ値計算部、
前記受信されたデータ通知に指定される対象データと、前記受信されたデータ通知に指定される使用側結果データとから、当該所定の規則により、当該対象データに使用された乱数の値のそれぞれのうち、当該使用認証装置から送信された乱数応答に指定されるべき乱数の値を取得する乱数取得部、
前記受信された乱数要求に指定されるハッシュ値と前記認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、前記乱数発生部により発生された乱数の値と前記乱数取得部により取得された乱数の値とが一致しない場合、当該乱数の使用に不正があった旨を報告する不正報告部
をさらに備える
ことを特徴とする物。
【請求項５】
請求項１から４のいずれか１項に記載の乱数処理システムであって、
当該対象データは、複数の項目の列からなり、
当該所定の規則は、当該対象データの複数の項目の列のうち当該乱数の値に対応する位置に配置される項目を、使用結果のデータとするものである
ことを特徴とする物。
【請求項６】
請求項１から４のいずれか１項に記載の乱数処理システムであって、
当該対象データは、複数の項目の列からなり、
当該所定の規則は、当該対象データの複数の項目の列の順序を当該乱数の値に基づいて入れ換えたものを、使用結果のデータとするものである
ことを特徴とする物。
【請求項７】
乱数使用装置と、使用認証装置とにより実行される乱数処理方法であって、当該乱数使用装置は、対象データ生成部、使用側ハッシュ値計算部、乱数要求送信部、乱数応答受信部、使用側結果データ生成部、データ通知送信部を備え、当該使用認証装置は、乱数要求受信部、乱数発生部、乱数応答送信部、データ通知受信部、認証側ハッシュ値計算部、不正報告部を備え、
（ａ）前記乱数使用装置において、
前記対象データ生成部が、乱数の使用対象となるデータ（以下「対象データ」という。）を生成する対象データ生成工程、
前記使用側ハッシュ値計算部が、前記生成された対象データのハッシュ値を計算する使用側ハッシュ値計算工程、
前記乱数要求送信部が、前記使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を前記使用認証装置に送信する乱数要求送信工程
を備え、
（ｂ）前記使用認証装置において、
前記乱数要求受信部が、前記乱数使用装置から送信された乱数要求を受信する乱数要求受信工程、
前記乱数発生部が、前記受信された乱数要求に応じて乱数を発生させる乱数発生工程、
前記乱数応答送信部が、前記発生された乱数の値を指定する乱数応答を前記乱数使用装置に送信する乱数応答送信工程
をさらに備え、
（ｃ）前記乱数使用装置において、
前記乱数応答受信部が、前記使用認証装置から送信された乱数応答を受信する乱数応答受信工程、
前記使用側結果データ生成部が、前記生成された対象データに対して前記受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成する使用側結果データ生成工程、
前記データ通知送信部が、前記生成された対象データと、前記生成された使用側結果データと、を指定するデータ通知を前記使用認証装置に送信するデータ通知送信工程
をさらに備え、
（ｄ）前記使用認証装置において、
前記データ通知受信部が、前記乱数使用装置から送信されるデータ通知を受信するデータ通知受信工程、
前記認証側ハッシュ値計算部が、前記受信されたデータ通知に指定される対象データのハッシュ値を計算する認証側ハッシュ値計算工程、
前記不正報告部が、前記受信された乱数要求に指定されるハッシュ値と前記認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、前記受信されたデータ通知に指定される使用側結果データと前記受信されたデータ通知に指定される対象データに対して前記発生された乱数の値を当該所定の規則により使用したときに生成されるべき使用結果のデータ（以下「認証側結果データ」という。）とが一致しない場合、当該乱数の使用に不正があった旨を報告する不正報告工程
をさらに備える
ことを特徴とする方法。
【請求項８】
コンピュータを、乱数の使用が使用認証装置によって認証される乱数使用装置として機能させるプログラムであって、
当該プログラムは、当該コンピュータを、
乱数の使用対象となるデータ（以下「対象データ」という。）を生成する対象データ生成部、
前記生成された対象データのハッシュ値を計算する使用側ハッシュ値計算部、
前記使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を前記使用認証装置に送信する乱数要求送信部、
前記使用認証装置から送信された乱数応答を受信する乱数応答受信部、
前記生成された対象データに対して前記受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成する使用側結果データ生成部、
前記生成された対象データと、前記生成された使用側結果データと、を指定するデータ通知を前記使用認証装置に送信するデータ通知送信部
として機能させることを特徴とするプログラム。
【請求項９】
コンピュータを、乱数使用装置における乱数の使用を認証する使用認証装置として機能させるプログラムであって、
当該プログラムは、当該コンピュータを、
前記乱数使用装置から送信された乱数要求を受信する乱数要求受信部、
前記受信された乱数要求に応じて乱数を発生させる乱数発生部、
前記発生された乱数の値を指定する乱数応答を前記乱数使用装置に送信する乱数応答送信部、
前記乱数使用装置から送信されるデータ通知を受信するデータ通知受信部、
前記受信されたデータ通知に指定される対象データのハッシュ値を計算する認証側ハッシュ値計算部、
前記受信された乱数要求に指定されるハッシュ値と前記認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、前記受信されたデータ通知に指定される使用側結果データと前記受信されたデータ通知に指定される対象データに対して前記発生された乱数の値を所定の規則により使用したときに生成されるべき使用結果のデータ（以下「認証側結果データ」という。）とが一致しない場合、当該乱数の使用に不正があった旨を報告する不正報告部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数を使用する処理に不正がないか否かを認証するのに好適な乱数処理システム、乱数処理方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、インターネット等のコンピュータ通信網を介したネットワークゲームを提供する技術が提案されている。このようなネットワークゲームについては、以下の文献に技術が開示されている。
【特許文献１】特許第３４９６１５０号
【０００３】
一般に、ゲームを提供する場合には、乱数を使用することが多い。したがって、ネットワークゲームを提供する際に、サーバで集中管理をするのではなく、ゲーム端末同士のピアツーピア通信を用いて対戦をさせるような場合には、いずれか（１つ以上）のゲーム端末で乱数を生成する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、麻雀やトランプ、花札などのゲームでは特に、乱数が正しく使用されているか否かが公正なプレイには不可欠となる。したがって、いずれかのゲーム端末で発生された乱数が不正なく使用されているかを確認する技術が強く求められている。
【０００５】
本発明は、上記のような課題を解決するためになされたもので、乱数を使用する処理に不正がないか否かを認証するのに好適な乱数処理システム、乱数処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００７】
本発明の第１の観点に係る乱数処理システムは、乱数使用装置と、使用認証装置とを有し、当該乱数使用装置は、対象データ生成部、使用側ハッシュ値計算部、乱数要求送信部、乱数応答受信部、使用側結果データ生成部、データ通知送信部を備え、当該使用認証装置は、乱数要求受信部、乱数発生部、乱数応答送信部、データ通知受信部、認証側ハッシュ値計算部、不正報告部を備え、以下のように構成する。
【０００８】
すなわち、乱数使用装置において、対象データ生成部は、乱数の使用対象となるデータ（以下「対象データ」という。）を生成し、使用側ハッシュ値計算部は、対象データのハッシュ値を計算し、乱数要求送信部は、使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を使用認証装置に送信する。
【０００９】
たとえば、トランプのカードの山からいずれか１枚を取る場合には、乱数の使用対象となるデータは、トランプのカードの山に入っているカードの集合、典型的には順序付けられたカードの列であり、これに乱数を使用すると、カードの列から乱数に対応する位置にあるカードが選択されることになる。そこで、山のカードの列については、乱数使用装置の対象データ生成部が生成するのである。
【００１０】
この場合、対象データ生成部は、トランプのカードの山をシャッフルするのに相当する作業を行っていることになる。
【００１１】
一方、このカードの列については、使用側ハッシュ値計算部がハッシュ値を計算する。このハッシュ値を用いて、カードの列に対する不正が行われていないことを、後で確認するのである。
【００１２】
そして、乱数要求送信部が計算されたハッシュ値を使用認証装置に送信することを契機として、使用認証装置側で乱数が生成される。
【００１３】
一方、使用認証装置において、乱数要求受信部は、乱数使用装置から送信された乱数要求を受信し、乱数発生部は、受信された乱数要求に応じて乱数を発生させ、乱数応答送信部は、発生された乱数の値を指定する乱数応答を乱数使用装置に送信する。
【００１４】
使用認証装置は、乱数使用装置の相手方として機能する装置であり、乱数要求に応じて乱数を、線形合同法、Ｍ系列、カオス乱数等種々の手法によって生成し、これを乱数応答に指定して乱数使用装置に返す。
【００１５】
なお、生成される乱数は、所定範囲の整数や浮動小数点数としても良いし、整数列（有効桁数の多い整数と実質的に等価である。）や文字列（整数列と実質的に等価である。）を採用することとしても良い。
【００１６】
上記のように、カードを１枚山から抜き取りたい場合を考えると、カードの山をシャッフルする側は、山からカードを１枚取る側である。そこで、このカードを取る作業においてチート行為が発生しないように、相手方（山からカードを１枚取る側でない側）に、「何枚目のカードを使うか」を指定させるのである。
【００１７】
さらに、乱数使用装置において、乱数応答受信部は、使用認証装置から送信された乱数応答を受信し、使用側結果データ生成部は、生成された対象データに対して受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成し、データ通知送信部は、生成された対象データと、生成された使用側結果データと、を指定するデータ通知を使用認証装置に送信する。
【００１８】
すなわち、使用認証装置から伝えられた乱数を用いて、対象データから使用結果データを生成し、対象データそのものと使用結果データを使用認証装置に送信するのである。
【００１９】
対象データが「シャッフルされたカードの山」に相当し、使用結果データが「そのカードの山から抜いたカード」に相当する。どのカードを抜くか、は、相手方から指示される。一方、カードを抜くまでは、シャッフルされたカードの山の様子は、相手方にはわからない。したがって、チート行為をできるだけ防止することができるのである。
【００２０】
これは、「○枚目のカードを使え」という指示にしたがって、山からカードを取って、ゲームに使用する。そして、使用の後、典型的には、ゲームが終了した後に、その局面での山の順序（に対応するハッシュ値）と抜いたカードとを相手方に知らせることに相当する。
【００２１】
最後に、使用認証装置において、データ通知受信部が、乱数使用装置から送信されるデータ通知を受信し、認証側ハッシュ値計算部が、受信されたデータ通知に指定される対象データのハッシュ値を計算し、不正報告部が、受信された乱数要求に指定されるハッシュ値と認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、受信されたデータ通知に指定される使用側結果データと受信されたデータ通知に指定される対象データに対して発生された乱数の値を当該所定の規則により使用したときに生成されるべき使用結果のデータ（以下「認証側結果データ」という。）とが一致しない場合、当該乱数の使用に不正があった旨を報告する。
【００２２】
結局、使用認証装置は、乱数使用装置から対象データのハッシュ値、対象データ、使用側結果データを受信することとなる。
【００２３】
使用認証装置側で対象データそのものからハッシュ値を計算して、これが、当初受信したハッシュ値と一致していれば、不正は行われていない、と期待できる。
【００２４】
また、対象データと乱数があれば、乱数使用装置側と同じ規則に基づいて、結果データを得ることができる。そこで、使用認証装置側でも同じ作業（もしくは、これと均等な作業）を行って、得られた対象データと、使用側対象データとが一致していれば、不正は行われていない、と期待できる。
【００２５】
このように、本発明では、乱数を使用する対象データは乱数使用側で生成させ、乱数を発生させる作業は使用認証装置側で行って両者に情報を分散させ、対象データのハッシュ値を使用して認証を行うこととしており、乱数を使用する処理に不正がないか否かを適切に認証することができる。
【００２６】
また、本発明の乱数処理システムにおいて、使用認証装置は、認証側結果データ生成部をさらに備え、以下のように構成する。
【００２７】
すなわち、認証側結果データ生成部は、受信されたデータ通知に指定される対象データに対して発生された乱数の値を当該所定の規則により使用した使用結果のデータを生成する。
【００２８】
一方、不正報告部は、認証側結果データ生成部により生成される使用結果のデータを、当該認証側結果データとして用いる。
【００２９】
本発明は、認証の第１の手法に係るものであり、ハッシュ値に基づいて対象データそのものの改変がされていないことを確認した後に、使用認証装置自身が生成した乱数を、乱数使用装置と同じ規則に基づいて、確認済みの対象データに直接適用して、同じ結果が得られるかどうかを調べるものである。
【００３０】
すなわち、上記の例でいえば、乱数使用装置から送信された「シャッフル済みのカードの山」から、自分が決めた「○○枚目」のカードを抜き取り、これが、乱数使用装置から送信された「抜いたカード」と一致しなければ、不正が発生した、とするものである。
【００３１】
本発明は、上記発明の好適実施形態に係るものであり、使用側と認証側で乱数と対象データに同じ規則を用いることで、乱数を使用する処理に不正がないか否かを容易に認証することができる。
【００３２】
また、本発明の乱数処理システムにおいて、当該所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義された規則であり、使用認証装置は、乱数取得部をさらに備え、以下のように構成する。
【００３３】
すなわち、乱数取得部は、受信されたデータ通知に指定される対象データと、受信されたデータ通知に指定される使用側結果データとから、当該所定の規則により、当該対象データに使用された乱数の値を取得する。
【００３４】
一方、不正報告部は、乱数発生部により発生された乱数の値と乱数取得部により取得された乱数の値とが一致しない場合、当該使用側結果データと当該認証側結果データとが一致しないものとする
【００３５】
本発明は、認証の第２の手法に係るものであり、ハッシュ値に基づいて対象データそのものに改変がされていないことを確認するのは、上記発明と同様である。
【００３６】
本発明においては、乱数を対象データに適用する規則の「逆関数」が存在することが前提となっている。すなわち、対象データと結果データがあれば、適用された乱数が得られるのである。
【００３７】
この場合には、確認済みの対象データと結果データから、乱数使用装置側で使用された乱数を得て、得られた乱数が自身が生成した乱数と一致するか否かにより、認証を行うのである。
【００３８】
すなわち、上記の例でいえば、乱数使用装置から送信された「シャッフル済みのカードの山」の中で、乱数使用装置から送信された「抜いたカード」が「○○枚目」かを調べる。自身が先に指定したものとこの「○○枚目」が一致しなければ、不正が発生した、とするものである。
【００３９】
本発明は、上記発明の好適実施形態に係るものであり、使用側と認証側で乱数と対象データに同じ規則を用いることで、乱数を使用する処理に不正がないか否かを容易に認証することができる。
【００４０】
本発明のその他の観点に係る乱数処理システムは、乱数使用装置と、複数の使用認証装置とを有し、以下のように構成する。
【００４１】
まず、乱数使用装置は、使用側ハッシュ値計算部、乱数要求送信部を備え、使用側ハッシュ値計算部は、乱数の使用対象となるデータ（以下「対象データ」という。）のハッシュ値を計算し、乱数要求送信部は、使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を複数の使用認証装置のそれぞれに送信する。
【００４２】
一方、複数の使用認証装置のそれぞれは、乱数要求受信部、乱数発生部、乱数応答送信部を備える。
【００４３】
ここで、乱数要求受信部は、乱数使用装置から送信された乱数要求を受信する。
【００４４】
一方、乱数発生部は、受信された乱数要求に応じて乱数を発生させる。
【００４５】
さらに、乱数応答送信部は、発生された乱数の値を指定する乱数応答を乱数使用装置に送信する。
【００４６】
これらの構成は、複数の使用認証装置がある点が相違するが、その他の構成は、上記発明に酷似している。
【００４７】
さらに、乱数使用装置は、乱数応答受信部、使用側結果データ生成部、データ通知送信部を備える。
【００４８】
ここで、乱数応答受信部は、複数の使用認証装置のそれぞれから送信された乱数応答を受信する。
【００４９】
一方、使用側結果データ生成部は、生成された対象データに対して受信された複数の乱数応答のそれぞれに指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成する。
【００５０】
さらに、データ通知送信部は、生成された対象データと、生成された使用側結果データと、を指定するデータ通知を複数の使用認証装置のそれぞれに送信する。
【００５１】
これらの構成は、複数の使用認証装置がある点と、これに伴ない、対象データに適用される乱数が複数である点が相違するが、その他の構成は、上記発明に酷似している。
【００５２】
たとえば、乱数使用装置側では、６５５３６個の項目からなる対象データから１つを選択するため、整数０〜６５５３５の一様乱数が欲しいものとする。使用認証装置が４台ある場合の規則を考える。上記の一様乱数の値は１６ビットで表現できるから、使用認証装置のそれぞれは、４ビットの乱数を発生させる。そして、その４ビットの乱数を所定の順序で並べることによって、整数０〜６５５３５の一様乱数を得る。そして、得られた乱数番目の項目を結果データとして利用するのである。このように、本発明では複数の使用認証装置から指定された複数の乱数を組み合わせて使用するのである。
【００５３】
一方、当該所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義された規則である。
【００５４】
上記の例でいえば、乱数値を１６ビットのビット列と見て、自身に対応する場所のビット列を得れば、ある使用認証装置から送信された４ビットの乱数がわかる。
【００５５】
さらに、複数の使用認証装置のそれぞれは、データ通知受信部、認証側ハッシュ値計算部、乱数取得部、不正報告部を備える。
【００５６】
ここで、データ通知受信部は、乱数使用装置から送信されるデータ通知を受信する。
【００５７】
一方、認証側ハッシュ値計算部は、受信されたデータ通知に指定される対象データのハッシュ値を計算する。
【００５８】
さらに、乱数取得部は、受信されたデータ通知に指定される対象データと、受信されたデータ通知に指定される結果データとから、当該所定の規則により、当該対象データに使用された乱数の値のそれぞれのうち、当該使用認証装置から送信された乱数応答に指定されるべき乱数の値を取得する。
【００５９】
そして、不正報告部は、受信された乱数要求に指定されるハッシュ値と認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、乱数発生部により発生された乱数の値と乱数取得部により取得された乱数の値とが一致しない場合、当該乱数の使用に不正があった旨を報告する。
【００６０】
各使用認証装置で対象データに不正がないかを確認するのは、上記発明と同様である。
【００６１】
次に、上記の例でいえば、６５５３６個の項目からなる対象データと、この中から選ばれた使用側結果データとから、使用された１６ビットの乱数の値を得る。そして、１６ビットの乱数から、自身の乱数認証装置に割り当てられるビット位置の４ビットを抜き出して、この４ビットの乱数が、先に自身が発生された値と一致しない場合に、不正が生じたものとするのである。
【００６２】
本発明によれば、乱数の発生と認証を複数の使用認証装置で分散させることができ、複数人のプレイヤーによってゲームが行われる場合などに、できるだけ作業の偏りが生じないようにして、不正を適切に検出することができるようになる。
【００６３】
また、本発明の乱数処理システムにおいて、当該対象データは、複数の項目の列からなり、当該所定の規則は、当該対象データの複数の項目の列のうち当該乱数の値に対応する位置に配置される項目を、使用結果のデータとするものであるように構成することができる。
【００６４】
上記のように、本発明は、複数のカードをシャッフルする作業とこのカードの山からいずれか１枚を選択する作業は乱数使用装置側で行い、何枚目を選択するかは使用認証装置側に委ねる実施形態に係るものである。
【００６５】
本発明は、上記発明の好適実施形態に係るものであり、本発明によれば、複数の項目からいずれかを選択するために乱数を使用する場合に、乱数の使用の不正があるか否かを適切に判断することができる。
【００６６】
また、本発明の乱数処理システムにおいて、当該対象データは、複数の項目の列からなり、当該所定の規則は、当該対象データの複数の項目の列の順序を当該乱数の値に基づいて入れ換えたものを、使用結果のデータとするものであるように構成することができる。
【００６７】
本発明は、一旦乱数使用装置側でカードをシャッフルした後、使用認証装置側から当該シャッフルの結果の「○○枚目と○○枚目を交換、○○枚目と○○枚目を交換、○○枚目と○○枚目を交換、……」（この交換の指示が、使用認証装置で発生された乱数と適用される規則に基づくものである。）のような指定をさせるものであり、カードの山をゲームの親と子で交替してシャッフルする形態に相当するものである。
【００６８】
本発明は、上記発明の好適実施形態に係るものであり、本発明によれば、複数の項目をランダムに並べ直すために乱数を使用する場合に、乱数の使用の不正があるか否かを適切に判断することができる。
【００６９】
本発明のその他の観点に係る乱数処理方法は、乱数使用装置と、使用認証装置とにより実行され、当該乱数使用装置は、対象データ生成部、使用側ハッシュ値計算部、乱数要求送信部、乱数応答受信部、使用側結果データ生成部、データ通知送信部を有し、当該使用認証装置は、乱数要求受信部、乱数発生部、乱数応答送信部、データ通知受信部、認証側ハッシュ計算部、不正報告部を有し、対象データ生成工程、使用側ハッシュ値計算工程、乱数要求送信工程、乱数要求受信工程、乱数発生工程、乱数応答送信工程、乱数応答受信工程、使用側結果データ生成工程、データ通知送信工程データ通知受信工程、不正報告工程を備え、以下のように構成する。
【００７０】
すなわち、乱数使用装置において、対象データ生成工程では、対象データ生成部が、乱数の使用対象となるデータ（以下「対象データ」という。）を生成し、使用側ハッシュ値計算工程では、使用側ハッシュ値計算部が、乱数の使用対象となるデータ（以下「対象データ」という。）のハッシュ値を計算し、乱数要求送信工程では、乱数要求送信部が、使用側ハッシュ値計算部により計算されたハッシュ値を指定する乱数要求を使用認証装置に送信する。
【００７１】
一方、使用認証装置において、乱数要求受信工程では、乱数要求受信部が、乱数使用装置から送信された乱数要求を受信し、乱数発生工程では、乱数発生部が、受信された乱数要求に応じて乱数を発生させ、乱数応答送信工程では、乱数応答送信部が、発生された乱数の値を指定する乱数応答を乱数使用装置に送信する。
【００７２】
さらに、乱数使用装置において、乱数応答受信工程では、乱数応答受信部が、使用認証装置から送信された乱数応答を受信し、使用側結果データ生成工程では、使用側結果データ生成部が、生成された対象データに対して受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータ（以下「使用側結果データ」という。）を生成し、データ通知送信工程では、データ通知送信部が、生成された対象データと、生成された使用側結果データと、を指定するデータ通知を使用認証装置に送信する。
【００７３】
そして、使用認証装置において、データ通知受信工程では、データ通知受信部が、乱数使用装置から送信されるデータ通知を受信し、認証側ハッシュ値計算工程では、認証側ハッシュ値計算部が、受信されたデータ通知に指定される対象データのハッシュ値を計算し、不正報告工程では、不正報告部が、受信された乱数要求に指定されるハッシュ値と認証側ハッシュ値計算部により計算されたハッシュ値とが一致しない、もしくは、受信されたデータ通知に指定される使用側結果データと受信されたデータ通知に指定される対象データに対して発生された乱数の値を当該所定の規則により使用したときに生成されるべき使用結果のデータ（以下「認証側結果データ」という。）とが一致しない場合、当該乱数の使用に不正があった旨を報告する。
【００７４】
本発明のその他の観点に係るプログラムは、コンピュータを上記の乱数使用装置もしくは使用認証装置として機能させ、コンピュータに上記の乱数使用装置にて実行される方法もしくは使用認証装置にて実行される方法を実行させるように構成する。
【００７５】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００７６】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００７７】
本発明によれば、乱数を使用する処理に不正がないか否かを認証するのに好適な乱数処理システム、乱数処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００７８】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００７９】
図１は、プログラムを実行することにより、本発明の乱数処理システムの乱数使用装置、ならびに、使用認証装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００８０】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、を備える。
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の表示装置が実現される。
【００８１】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００８２】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００８３】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００８４】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがレーシングゲームなどのゲーム実行の際に行う操作入力を受け付ける。
【００８５】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、レーシングゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、チャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００８６】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００８７】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００８８】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００８９】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００９０】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００９１】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００９２】
図２は、本発明の実施形態に係る乱数処理システムの概要構成を示す説明図である。以下、本図を参照して説明する。
【００９３】
乱数処理システム２０１は、乱数使用装置２３１と、使用認証装置２５１とを有し、両者はインターネット２７１を介して接続され、相互に通信可能となっている。乱数使用装置２３１および使用認証装置２５１は、上記の情報処理装置１００において、所定のプログラムを実行することにより、実現される。
【００９４】
なお、本発明は、１台の乱数使用装置２３１と１台の乱数認証装置２５１との組合せによって乱数処理システム２０１が構成される態様と、１台の乱数使用装置２３１と２台以上の乱数認証装置２５１との組合せによって乱数処理システム２０１が構成される態様とがありうるが、まず前者について述べた後、後者については、前者との相異点を中心に説明するものとする。
【００９５】
図３は、本実施形態に係る乱数処理システムにおける乱数使用装置２３１と使用認証装置２５１との通信の様子を示すシーケンス図である。以下、本図を参照して説明する。
【００９６】
また、理解を容易にするため、複数の項目からいずれか１つをランダムに選択したい場合を例としてあげて説明する。
【００９７】
まず、乱数使用装置２３１側で、乱数を使用する対象となる複数の項目を用意する。この複数の項目を「対象データ」と呼ぶ。対象データは、たとえばトランプの山からカードを１枚引く場合に、その山に含まれるカードを（適当な順で）順番に並べたものに相当する。
【００９８】
なお、対象データそのもの、上記の例でいえば、カードの並び順は、１枚カードを引くまでは、使用認証装置２５１には知らせないものとする。これにより、情報の分散を図る。
【００９９】
一方、対象データそのもの（カードの並び順）について不正がないようにするため、乱数を使用する前に、まず、対象データのハッシュ値を得て、このハッシュ値を指定した乱数要求を、乱数使用装置２３１から使用認証装置２５１に送信する（３０１）。
【０１００】
送信されたハッシュ値は、使用認証装置２５１で保存される。なお、使用認証装置２５１で、ハッシュ値から対象データ（カードの並び順）を復元することは極めて困難（事実上不可能）である。保存されたハッシュ値は、後に行う認証処理において利用される。
【０１０１】
なお、このハッシュ値を得るにあたっては、チェックサムやＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）値、ＭＤ５メッセージダイジェストアルゴリズムなどのほか、公開鍵暗号技術等に基づく電子署名・電子暗号技術で利用される各種の技術を適用することができる。
【０１０２】
さて、乱数要求を受信した使用認証装置２５１は、乱数を発生させて、これを指定する乱数応答を乱数使用装置２３１に送信する（３０２）。発生される乱数がどんなものであるかは、乱数使用装置２５１では予想できない。
【０１０３】
さらに、乱数使用装置２３１が乱数応答を受信すると、これに指定される乱数を用いて、複数の項目からいずれかを選択する。
【０１０４】
たとえば、複数の項目a[0]，a[1]，…，a[n-1]のn個であり、使用認証装置２５１に指定された乱数が０以上n未満の整数mである場合には、乱数を使用することによって、a[m]を選択する、という規則を採用するものとする。この、選択された項目が使用結果を表す「使用側結果データ」になる。
【０１０５】
さて、このようにして乱数が使用されたわけであるが、この使用が適正か否かを判断する必要がある。そこで、乱数使用装置２３１は、対象データ（複数の項目、たとえば、カードの並び順）と、使用側結果データ（選ばれた項目、たとえば、引かれたカード１枚）とを指定するデータ通知を、使用認証装置２５１に送信する（３０３）。
【０１０６】
使用認証装置２５１は、データ通知を受信すると、まず、これに指定される対象データのハッシュ値を計算する。
【０１０７】
そして、計算の結果得られたハッシュ値が、先に保存したハッシュ値と一致していなければ、不正が生じた旨を報告する。
【０１０８】
両者が一致している場合は、データ通知に指定される対象データに、自身が生成した乱数を、乱数使用装置２３１側と同じ規則を適用して、項目を得る。ここで得られる項目を「認証側結果データ」と呼ぶ。
【０１０９】
本来、データ通知に指定される使用側結果データと、ここで得られた認証側結果データとは、一致するはずである。したがって、両者が一致していなければ、不正が生じた旨を報告する。
【０１１０】
以下では、乱数使用装置２３１と、使用認証装置２５１とについて、さらに詳細に説明する。
【０１１１】
図４は、本実施形態に係る乱数使用装置と使用認証装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【０１１２】
まず、乱数使用装置２３１は、対象データ生成部２３２、使用側ハッシュ値計算部２３３、乱数要求送信部２３４、乱数応答受信部２３５、使用側結果データ生成部２３６、データ通知送信部２３７を備える。
【０１１３】
一方、使用認証装置２５１は、乱数要求受信部２５２、乱数発生部２５３、乱数応答送信部２５４、データ通知受信部２５５、認証側結果データ生成部２５６、不正報告部２５７を備える。
【０１１４】
図５は、本実施形態に係る乱数使用装置にて実行される乱数使用処理の制御の流れを示すフローチャートである。以下、上記の図と本図を適宜参照しつつ、説明する。
【０１１５】
まず、乱数使用装置２３１において、乱数使用処理が開始される。これは、たとえば、上記のように、ネットワークゲームにおいて、トランプのカードの山から一枚を抜いたり、トランプのカードの山をシャッフルしたり、などの処理が必要になる場合を考慮したものである。
【０１１６】
すると、乱数使用装置２３１の対象データ生成部２３２は、乱数の使用対象となるデータを生成する（ステップＳ５０１）。これが「対象データ」である。この作業は、トランプのカードの（最初の）山を作ることに相当する。
【０１１７】
したがって、対象データの生成そのものには乱数使用装置２３１で発生した乱数を適宜参照して、対象データそのものが使用認証装置２５１からはわからないようにすることが望ましい。このようにすると、使用認証装置２５１から見れば、相手方がトランプのカードを伏せたままシャッフルすることに相当する。
【０１１８】
上記の情報処理装置１００上に乱数使用装置２３１が実現される場合、生成される対象データは、ＲＡＭ  １０３に記憶されるのが典型的であり、対象データの生成では、ＣＰＵ  １０１が計算を行うので、ＣＰＵ  １０１がＲＡＭ  １０３等と共働して、対象データ生成部２３２として機能する。
【０１１９】
次に、乱数使用装置２３１の使用側ハッシュ値計算部２３３は、対象データのハッシュ値を計算する（ステップＳ５０２）。この作業は、トランプのカードの（最初の山）の順番をメモして、これを封筒に入れ、封印することに相当する。
【０１２０】
生成された対象データは、整数列、バイト列、文字列として見ることも可能である。ハッシュ値（封印の印影に相当する）を得るには、ある程度長いビット長のチェックサムやＣＲＣなどの他、ＭＤ５メッセージダイジェストアルゴリズムなど、電子署名処理等で利用されるアルゴリズムを用いることができる。
【０１２１】
また、対象データそのものの他、当該対象データのセッション番号（たとえば、トランプの場合には、現在の手番をゲーム開始から数えた番号をセッション番号とすることができる）と対象データとを組み合わせてハッシュ値を計算するなどしても良い。
【０１２２】
したがって、ＣＰＵ  １０１がＲＡＭ  １０３等と共働して、使用側ハッシュ値計算部２３３として機能する。
【０１２３】
さらに、乱数使用装置２３１の乱数要求送信部２３４は、使用側ハッシュ値計算部２３３により計算されたハッシュ値を指定する乱数要求を使用認証装置２５１に送信する（ステップＳ５０３）。
【０１２４】
以下の説明では、乱数要求には、ゲームにおけるセッション番号と、上記のハッシュ値とを指定することとする。上記のようにハッシュ値は封印の印影に相当し、不正が行われていないことを使用認証装置２５１で後に確認するために用いる。
【０１２５】
したがって、ＣＰＵ  １０１がＲＡＭ  １０３やＮＩＣ  １０９等と共働して、乱数要求送信部２３４として機能する。
【０１２６】
図６は、本実施形態に係る使用認証装置にて実行される使用認証処理の制御の流れを示すフローチャートである。以下、上記の図と本図を適宜参照しつつ、説明する。
【０１２７】
乱数使用装置２３１から乱数要求が送信されることを契機として、使用認証装置２５１において使用認証処理が開始される。
【０１２８】
まず、本処理が開始されると、使用認証装置２５１の乱数要求受信部２５２は、乱数使用装置２３１から送信された乱数要求を受信する（ステップＳ６０１）。
【０１２９】
したがって、ＣＰＵ  １０１がＲＡＭ  １０３やＮＩＣ  １０９等と共働して、乱数要求受信部２５２として機能する。
【０１３０】
次に、使用認証装置２５１の乱数発生部２５３は、乱数を発生させる（ステップＳ６０２）。乱数発生の手法としては、線形合同法、Ｍ系列やカオス乱数などの、種々の技術を適用することができる。
【０１３１】
また、生成される乱数は、所定範囲の整数や浮動小数点数としても良いし、整数列（有効桁数の多い整数と実質的に等価である。）や文字列（整数列と実質的に等価である。）を採用することとしても良い。
【０１３２】
したがって、ＣＰＵ  １０１が乱数発生部２５３として機能する。
【０１３３】
そして、乱数要求に指定されるセッション番号と、ハッシュ値と、ステップＳ６０２で発生させた乱数と、を対応付けて、ＲＡＭ  １０３やハードディスク等の外部記憶装置に記憶する（ステップＳ６０３）。
【０１３４】
さらに、使用認証装置２５１の乱数応答送信部２５４は、発生された乱数の値を指定する乱数応答を乱数使用装置２３１に送信する（ステップＳ６０４）。この際に、いずれの乱数要求に呼応するものかを明確にするため、先のセッション番号をさらに乱数応答に指定することとしても良い。
【０１３５】
したがって、ＣＰＵ  １０１が、乱数応答のパケットが一時的に記憶されるＲＡＭ  １０３やＮＩＣ  １０９と共働して、乱数応答送信部２５４として機能する。
【０１３６】
さて、このようにして、使用認証装置２５１から乱数応答が送信されると、処理の制御は、再び乱数使用装置２３１側に移る。
【０１３７】
さて、乱数使用装置２３１において、乱数応答受信部２３５は、使用認証装置２５１から送信された乱数応答を受信する（ステップＳ５０４）。
【０１３８】
したがって、ＣＰＵ  １０１が、ＲＡＭ  １０３やＮＩＣ  １０９と共働して、乱数応答受信部２３５として機能する。
【０１３９】
ついで、使用側結果データ生成部２３６は、生成された対象データに対して受信された乱数応答に指定される乱数の値を所定の規則により使用した使用結果のデータを生成する（ステップＳ５０５）。これが「使用側結果データ」である。
【０１４０】
さて、使用側結果データが生成された後は、適宜この使用側結果データを他の処理で利用等してゲームを進め、ゲームの決着が付いた後で、不正がなかったかどうかを認証するのであるが、これに備えて、セッション番号と、対象データと、使用側結果データと、を対応付けてＲＡＭ  １０３やハードディスクに保存する（ステップＳ５０６）。
【０１４１】
さて、受信された乱数応答には、使用認証装置２５１で発生された乱数が指定されている。対象データと、この乱数と、に所定の規則を適用することによって、使用側結果データを生成するのである。
【０１４２】
最も単純には、カードの列を表現する対象データから、乱数に指定される数番目のカードを取り出して、これを使用側結果データとする、という規則を適用することが考えられる。このような種々の規則については、後述する。
【０１４３】
したがって、ＣＰＵ  １０１がＲＡＭ  １０３等と共働して、使用側データ生成部２３６として機能する。
【０１４４】
そして、乱数の使用について不正がなかった旨を使用認証装置２５１に確認させるため、乱数使用装置２３１のデータ通知送信部２３７は、ステップＳ５０６でハードディスク等に記憶したセッション番号、対象データ、使用側結果データの組を指定したデータ通知をデータ通知を使用認証装置２５１に送信する（ステップＳ５０７）。
【０１４５】
したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３やハードディスク、ＮＩＣ  １０９等と共働して、データ通知送信部２３７として機能する。
【０１４６】
さて、乱数使用装置２３１からデータ通知が送信されると、制御はまた、使用認証装置２５１に移る。
【０１４７】
まず、使用認証装置２５１のデータ通知受信部２５５が、乱数使用装置２３１から送信されるデータ通知を受信する（ステップＳ６０５）。
【０１４８】
したがって、ＣＰＵ  １０１がＲＡＭ  １０３やＮＩＣ  １０９等を共働して、データ通知受信部２５５として機能する。
【０１４９】
次に、使用認証装置２５１の認証側結果データ生成部２５６が、受信されたデータ通知に指定される対象データのハッシュ値を計算する（ステップＳ６０６）。すなわち、認証側結果データ生成部２５６は、認証側ハッシュ値計算部として機能する。
【０１５０】
ハッシュ値の計算の手法は、乱数使用装置２３１と使用認証装置２５１とで共通のものとしておく。したがって、不正が行われていなければ、ステップＳ６０６で計算されるハッシュ値と、ステップＳ６０１で受信された乱数要求に指定されたハッシュ値とは、一致するはずである。
【０１５１】
そこで、ステップＳ６０３において、ＲＡＭ  １０３やハードディスクに記憶した情報のうち、受信されたデータ通知に指定されるセッション番号と同じセッション番号に対応付けられて記憶されているハッシュ値と乱数の値とを取得する（ステップＳ６０７）。
【０１５２】
さらに、ステップＳ６０７で取得されたハッシュ値と、ステップＳ６０６で計算されたハッシュ値とが、等しいか否かを判断する（ステップＳ６０８）。
【０１５３】
両者が等しくない場合（ステップＳ６０８；Ｎｏ）、使用認証装置２５１の不正報告部２５７は、乱数の使用に不正があった旨を報告して（ステップＳ６０９）、本処理を終了する。
【０１５４】
一方、両者が等しい場合（ステップＳ６０８；Ｙｅｓ）、使用認証装置２５１の認証側結果データ生成部２５６は、ステップＳ６０５にて受信されたデータ通知に指定される対象データに対して、ステップＳ６０７にて取得された乱数の値を当該所定の規則により使用して、使用結果のデータを生成する（ステップＳ６１０）。これが、「認証側結果データ」である。
【０１５５】
なお、対象データとセッション番号とを組み合わせた情報のハッシュ値を利用する場合には、ステップＳ６０９においても、同様に両者を組み合わせた情報のハッシュ値を求めるものとする。
【０１５６】
対象データに乱数の値を適用する規則は、乱数使用装置２３１と使用認証装置２５１とで同じものとしておけば、使用側結果データと認証側結果データとは一致するはずである。
【０１５７】
そこで、ステップＳ６０５において受信された使用側結果データと、ステップＳ６１０において生成された認証側結果データと、が一致するか否かを判断する（ステップＳ６１１）。
【０１５８】
両者が一致しない場合（ステップＳ６１１；Ｎｏ）、ステップＳ６０９に進む。
【０１５９】
一方、両者が一致する場合（ステップＳ６１１；Ｙｅｓ）、使用認証装置２５１は、乱数使用装置２３１における当該セッション番号の乱数の使用には不正がなかった旨を報告して（ステップＳ６１２）、本処理を終了する。
【０１６０】
図７は、本実施形態で使用される各種情報の様子を整理して示す説明図である。以下、本図を参照して説明する。
【０１６１】
まず、乱数使用装置２３１で生成される対象データ７０１と、そのときのセッション番号７０２と、をまとめた情報に対するハッシュ値７０３を計算して、セッション番号７０２とハッシュ値７０３をまとめた乱数要求７０４を生成する。
【０１６２】
乱数要求７０４を受信した使用認証装置２５１では、乱数を発生させて、発生された乱数７０５と、セッション番号７０２とをまとめた乱数応答７０６を生成する。
【０１６３】
乱数応答７０６を受信した乱数使用装置２３１では、対象データ７０１に対して当該乱数７０５を使用して使用側結果データ７０７を生成し、セッション番号７０２、対象データ７０１、使用側結果データ７０７をまとめたデータ通知７０８を生成する。
【０１６４】
データ通知７０８を受信した使用認証装置２５１では、上記のような処理を行って、認証を行うのである。
【０１６５】
このように、本実施形態では、乱数を使用する対象データは乱数使用側で生成させ、乱数を発生させる作業は使用認証装置２５１側で行って両者に情報を分散させ、対象データのハッシュ値を使用して認証を行うこととしており、乱数を使用する処理に不正がないか否かを適切に認証することができる。
【０１６６】
さて、上記の説明では、乱数使用装置２３１で生成したn個の項目a[0]，a[1]，…，a[n-1]からなる対象データに対して、使用認証装置２５１から送信された０以上n未満の整数乱数mを適用して、項目a[m]を結果データとして得る、という規則を利用していた。以下では、この他の種々の規則について説明する。
【０１６７】
まず第１には、使用認証装置２５１から送信された整数乱数mに対して、所定の関数f(・)をあらかじめ適用するものである。すなわち、m mod nは「mをnで割った余り」を表記するものとして、結果データとしてa[f(m) mod n]を採用するものである。
【０１６８】
所定の関数f(・)としては、たとえば、以下のようなものが考えられる。
（ａ）所定の定数を加算もしくは減算するもの。すなわちCを正または負の整数として、f(m) = m + Cを利用する。
（ｂ）所定の定数を乗算するもの。すなわち、整数Kに対して、f(m) = m × Kを利用する。整数Kは、nと素な整数であることが望ましく、典型的には奇数や素数を用いる。
（ｃ）送信された乱数が浮動小数点数xである場合に、これに対する関数として、f(x) = floor(x)  （切り捨て）もしくはf(x) = ceil(x)  （切上げ）を採用するもの。
（ｄ）上記（ａ）〜（ｃ）を適宜組み合わせるもの。
【０１６９】
このようにカードの山から１枚を抜くのに相当する形態のほか、カードの山そのものをシャッフルするのに相当する形態の規則を、以下で説明する。
【０１７０】
最も単純な規則は、n個の項目a[0]，a[1]，…，a[n-1]からなる対象データに対して、使用認証装置２５１では、整数列0，1，…，n-1をランダムに並べた順列b[0]，b[1]，…，b[n-1]を「乱数」として生成し、結果データとしてa[b[0]]，a[b[1]]，…，a[b[n-1]]を採用する、というものである。この場合、使用認証装置２５１では、整数列0，1，…，n-1をランダムに並べた順列を得るための種々のアルゴリズムを適用することができる。
【０１７１】
このほか、順列b[0]，b[1]，…，b[n-1]を乱数として返すのではなく、n個の項目a[0]，a[1]，…，a[n-1]の順序を入れ替えるための「種」を、使用認証装置２５１が乱数として返す、という手法も考えられる。この「種」を整数mとする。
【０１７２】
たとえば、適切な整数定数C，Kを用いた漸化式
c[0] = m；
c[i+1] = K×c[i] + C
により、整数数列c[0]，c[1]，c[2]，…を生成する。
【０１７３】
次に、
（０）a[c[0] mod n]とa[c[1] mod n]を交換し、
（１）a[c[2] mod n]とa[c[3] mod n]を交換し、……、
（ｊ）a[c[2×j] mod n]とa[c[2×j+1] mod n]を交換し、……、
（Ｎ）a[c[2×N-2] mod n]とa[c[2×N-1] mod n]を交換し、
のように、N回、項目同士の交換を行う。Nは十分に大きな定数であることが望ましいが、Nの値そのものを、使用認証装置２５１で指定することとしても良い。また、整数数列の先頭に所定の整数（十分に大きな定数）を加算したものをNとして用いることとし、それ以降を１つずつずらして上記のように適用することとしても良い。
【０１７４】
上記の漸化式は線形合同法と同様の手法を用いるものであるが、その他、Ｍ系列やカオス乱数を得るための漸化式など、種々の漸化式を適用することができる。
【０１７５】
これは、乱数使用装置２３１側でカードをシャッフルした後、使用認証装置２５１側から当該シャッフルの結果の「○○枚目と○○枚目を交換、○○枚目と○○枚目を交換、○○枚目と○○枚目を交換、……」（この交換の指示が、使用認証装置２５１で発生された乱数と適用される規則に基づくものである。）のような指定をさせるものであり、カードの山をゲームの親と子で交替してシャッフルする形態に相当するものである。
【実施例２】
【０１７６】
上記の実施形態では、使用認証装置２５１自身が生成した乱数を、乱数使用装置２３１と同じ規則に基づいて、確認済みの対象データに直接適用して、同じ結果が得られるかどうかを調べていた。
【０１７７】
本実施形態では、利用する規則に制限を加えるものとして、これとは異なる手法で、認証を行う。
【０１７８】
すなわち、当該所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義された規則を用いるのである。これは、いわゆる関数と逆関数の対応関係にあたるものである。
【０１７９】
すなわち、対象データと乱数から結果データを得ることができる一方で、その対象データとその結果データからその乱数を得ることができるような規則を採用するのである。
【０１８０】
上記実施例でいえば、対象データa[0]，a[1]，…，a[n-1]について、任意のi≠jについてa[i]≠a[j]が成立する場合には、結果データa[m]がわかっていれば、これを対象データa[0]，a[1]，…，a[n-1]のそれぞれに順に対比することによって、容易に乱数mを得ることができる。
【０１８１】
そこで、使用側結果データ生成部２３６にかえて乱数取得部を設けることとし（図示せず）、この乱数取得部は、受信されたデータ通知に指定される対象データと、受信されたデータ通知に指定される使用側結果データとから、当該所定の規則により、当該対象データに使用された乱数の値を取得するようにする。
【０１８２】
一方、不正報告部２５７は、乱数発生部２５３により発生された乱数の値と乱数取得部により取得された乱数の値とが一致しない場合、当該使用側結果データと当該認証側結果データとが一致しないものとするのである。
【実施例３】
【０１８３】
上記の実施形態では、使用認証装置２５１は１台であったが、本実施形態では、使用認証装置２５１として複数台を用いることとする。
【０１８４】
まず、乱数使用装置２３１と、複数の使用認証装置２５１のそれぞれと、が通信し合い、上記実施形態と同様に、乱数要求、乱数応答、データ通知の送受を行う。
【０１８５】
上記実施形態では、１台の使用認証装置２５１から送信された乱数応答に指定される乱数mを使用していたが、本実施形態では、複数の使用認証装置２５１から送信された乱数応答に指定される乱数を用いる。
【０１８６】
そこで、P台の使用認証装置２５１のj (0≦j<P-1)番目のものから、乱数r[j]が得られるものとする。
【０１８７】
この乱数r[0]，r[1]，…，r[P-1]から、上記実施形態における乱数mを生成し、乱数mを一意に乱数r[0]，r[1]，…，r[P-1]に分解することができるようにする。
【０１８８】
そして、対象データと結果データから、適用した乱数が確定できるような規則を選択する。
【０１８９】
このように設定すれば、j番目の使用認証装置２５１では、規則により得られた乱数mを分解して乱数r[j]を得て、これが自身の生成したものと一致するか否かにより、認証を行うことができる。
【０１９０】
上記のように、乱数使用装置２３１では、６５５３６個の項目からなる対象データから１つを選択するため、整数０〜６５５３５の一様乱数が欲しいものとする。使用認証装置２５１が４台ある場合の規則を考える。上記の一様乱数の値は１６ビットで表現できるから、使用認証装置２５１のそれぞれは、４ビットの乱数を発生させる。
【０１９１】
そして、その４ビットの乱数を所定の順序で並べることによって、整数０〜６５５３５の一様乱数を得る。そして、得られた乱数番目の項目を結果データとして利用するのである。
【０１９２】
所定の規則は、対象データと、これに対応する結果データとから、当該対象データに使用された乱数の値のそれぞれを得ることができるように定義されている。
【０１９３】
そこで、逆規則により得られた乱数値を１６ビットのビット列と見て、自身に対応する場所のビット列を得れば、ある使用認証装置２５１から送信された４ビットの乱数がわかる。
【０１９４】
そこで、この４ビットの乱数を調べることで、認証を行うのである。
【０１９５】
一般に、j番目の使用認証装置２５１が、０以上p[j]未満の整数乱数を生じさせる場合、
m = Σj=0P-1 (Πk=0j-1 p[k]) r[j]
のようにして乱数mを計算すれば、
r[j] = m mod (Πk=0j p[k])
によって、乱数mを乱数r[0]，r[1]，…，r[P-1]に一意に分解することができる。
【０１９６】
このようにして、各使用認証装置２５１が、自身の生成した乱数部分について認証を行うことにより、乱数の発生と認証を複数の使用認証装置２５１で分散させることができ、複数人のプレイヤーによってゲームが行われる場合などに、できるだけ作業の偏りが生じないようにして、不正を適切に検出することができるようになる。
【産業上の利用可能性】
【０１９７】
以上説明したように、本発明によれば、乱数を使用する処理に不正がないか否かを認証するのに好適な乱数処理システム２０１、乱数処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１９８】
【図１】本発明の乱数処理システムの乱数使用装置ならびに使用認証装置が実現される典型的な情報処理装置の概要構成を示す模式図である。
【図２】本発明の実施形態に係る乱数処理システムの概要構成を示す説明図である。
【図３】本実施形態に係る乱数処理システムにおける乱数使用装置と使用認証装置との通信の様子を示すシーケンス図である。
【図４】本実施形態に係る乱数使用装置と使用認証装置の概要構成を示す模式図である。
【図５】本実施形態に係る乱数使用装置にて実行される乱数使用処理の制御の流れを示すフローチャートである。
【図６】本実施形態に係る使用認証装置にて実行される使用認証処理の制御の流れを示すフローチャートである。
【図７】本実施形態で使用される各種情報の様子を整理して示す説明図である。
【符号の説明】
【０１９９】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
２０１  乱数処理システム
２３１  乱数使用装置
２３２  対象データ生成部
２３３  使用側ハッシュ値計算部
２３４  乱数要求送信部
２３５  乱数応答受信部
２３６  使用側結果データ生成部
２３７  データ通知送信部
２５１  使用認証装置
２５２  乱数要求受信部
２５３  乱数発生部
２５４  乱数応答送信部
２５５  データ通知受信部
２５６  認証側結果データ生成部
２５７  不正報告部
２７１  インターネット
７０１  対象データ
７０２  セッション番号
７０３  ハッシュ値
７０４  乱数要求
７０５  乱数
７０６  乱数応答
７０７  使用側結果データ
７０８  データ通知
【図１】
2006279542.tif 000003
【図２】
2006279542.tif 000004
【図３】
2006279542.tif 000005
【図４】
2006279542.tif 000006
【図５】
2006279542.tif 000007
【図６】
2006279542.tif 000008
【図７】
2006279542.tif 000009