(57)【特許請求の範囲】
【請求項１】
取り込んだデータに基づいて処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段として、前記コンピュータを機能させる、情報処理プログラム。
【請求項２】
正当性を判断可能な判断可能データを含む前記所定のデータを生成する所定データ生成手段、および
前記入力手段によって入力された所定のデータに含まれる判断可能データの正当性を判断する正当性判断手段として、前記コンピュータをさらに機能させ、
前記検証データ算出手段は、前記正当性判断手段によって正当であることが判断されたとき、前記検証データを算出する、請求項１記載の情報処理プログラム。
【請求項３】
前記実行手段は、前記処理データをパラメータとして用いて、所定の処理を行う、請求項１または２記載の情報処理プログラム。
【請求項４】
前記判断可能データは、前記情報処理装置固有の情報である、請求項２記載の情報処理プログラム。
【請求項５】
前記正当性判断手段は、前記入力手段によって入力された所定のデータに含まれる情報処理装置固有の情報が、前記入力手段によって入力された所定のデータと処理データとの出力元である情報処理装置固有の情報であれば、正当であると判断する、請求項４記載の情報処理プログラム。
【請求項６】
前記情報処理装置固有の情報は、前記情報処理装置のＭＡＣアドレスを含む、請求項４または５記載の情報処理プログラム。
【請求項７】
前記情報処理装置固有の情報は、前記所定のデータの生成時の日時情報を含む、請求項４または５記載の情報処理プログラム。
【請求項８】
前記正当性判断手段は、前記入力手段によって入力された所定のデータに含まれる日時情報が、前記入力手段によって以前入力された所定のデータに含まれる日時情報に一致するものが存在しなければ、正当であると判断する、請求項７記載の情報処理プログラム。
【請求項９】
前記情報処理装置固有の情報は、前記実行手段によって行われる処理を認識可能な処理固有情報を含む、請求項４ないし８のいずれかに記載の情報処理プログラム。
【請求項１０】
前記正当性判断手段は、さらに、前記入力手段によって入力された所定のデータに含まれる処理固有情報が、前記実行手段によって行われる処理を示すものであれば、正当であると判断する、請求項９記載の情報処理プログラム。
【請求項１１】
前記所定のデータは、ランダムに変化する値をさらに含む、請求項４ないし１０のいずれかに記載の情報処理プログラム。
【請求項１２】
前記所定の一方向関数は、ハッシュ関数である、請求項１ないし１１のいずれかに記載の情報処理プログラム。
【請求項１３】
前記情報処理装置は、ネットワークに接続され、
前記出力手段は、前記ネットワーク上の他の情報処理装置に対して、前記所定のデータと前記処理データとを送信する送信手段を含み、
前記入力手段は、前記ネットワーク上の他の情報処理装置から、前記所定のデータと前記処理データとを受信する受信手段を含む、請求項１ないし１２のいずれかに記載の情報処理プログラム。
【請求項１４】
取り込んだデータに基づいて処理を行う情報処理装置であって、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段を備える、情報処理装置。
【請求項１５】
取り込んだデータに基づいて処理を行う情報処理装置の情報処理方法であって、
（ａ）所定の一方向関数を用いて、所定のデータから処理データを算出し、
（ｂ）前記所定のデータと、前記ステップ（ａ）によって算出された処理データとを外部に出力し、
（ｃ）外部から所定のデータと処理データとを入力し、
（ｄ）前記所定の一方向関数を用いて、前記ステップ（ｃ）によって入力された所定のデータから検証データを算出し、そして
（ｅ）前記ステップ（ｃ）によって入力された処理データと、前記ステップ（ｄ）によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う、情報処理方法。
【請求項１６】
取り込んだデータに基づいて処理を行う情報処理装置を少なくとも２つ備える情報処理システムであって、
各々の前記情報処理装置は、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段とを備える、情報処理システム。
【請求項１７】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項１８】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを他のゲーム装置に出力する出力手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項１９】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項２０】
取り込んだデータに基づいて処理を行うゲーム装置であって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲーム装置。
【請求項２１】
取り込んだデータに基づいて処理を行うゲーム装置であって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを他のゲーム装置に出力する出力手段を備える、ゲーム装置。
【請求項２２】
取り込んだデータに基づいて処理を行うゲーム装置であって、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲーム装置。
【請求項２３】
取り込んだデータに基づいて処理を行うゲーム装置のゲーム制御方法であって、
（ａ）所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出し、
（ｂ）前記所定のデータと、前記ステップ（ａ）によって算出された処理データとを外部に出力し、
（ｃ）外部から、ランダムに変化する値を含む所定のデータと処理データとを入力し、
（ｄ）前記所定の一方向関数を用いて、前記ステップ（ｃ）によって入力された所定のデータから検証データを算出し、そして
（ｅ）前記ステップ（ｃ）によって入力された処理データと、前記ステップ（ｄ）によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う、ゲーム制御方法。
【請求項２４】
取り込んだデータに基づいて処理を行うゲーム装置を少なくとも２つ備えるゲームシステムであって、
各々の前記ゲーム装置は、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関し、特にたとえば、取り込んだデータに基づいて処理を行う、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関する。
【背景技術】
【０００２】
この種の情報処理装置の一例が特許文献１に開示されている。この特許文献１の対戦相手決定システムでは、運営用コンピュータは、ネットワークゲーム大会における参加者を受け付け、参加者受付を終了すると、対戦相手を決定し、各参加者に対戦相手を通知し、ゲーム開始の指示データを各対戦者に送信する。ゲーム・プレイ中は、運営者用コンピュータをサーバとして使用することなく、つまり運営者用コンピュータを介在させることなく、参加者のコンピュータ間でデータを送受信して、ゲームを進行させる。
【特許文献１】特開２００１−１５７７８２［A63F 13/12, G06F 13/00］
【発明の概要】
【発明が解決しようとする課題】
【０００３】
最近、コンピュータゲームにおけるチート行為やデータの改変が横行しており、ネットワーク経由でネットワークゲームを行う際に、通常ではあり得ないようなデータに改変された対戦相手データを受信してゲームを行ってしまうことが多発していた。したがって、特許文献１に開示された対戦相手決定システムのように、単に、参加者を受け付けて、対戦相手を決定し、その後、参加者同士のコンピュータ間でゲームを進行させる場合には、改変されたデータの使用を防止するのが困難である。このため、改変されたデータを受信した側のコンピュータではゲームバランスが崩れてしまい、当該コンピュータを使用するプレイヤのゲームに対する興味を薄れさせていた。
【０００４】
それゆえに、この発明の主たる目的は、新規な、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムを提供することである。
【０００５】
また、この発明の他の目的は、データの改変を行われることなく他装置とデータをやり取りできる、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムを提供することである。
【課題を解決するための手段】
【０００６】
第１の発明は、取り込んだデータに基づいて処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他の情報処理装置や情報処理装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いて所定の処理を行う。
【０００７】
第１の発明によれば、処理データが正当である場合に、当該処理データを用いて所定の処理を行うので、改変されたデータを用いて処理が実行されるのを防止することができる。このため、データの改変自体を防止することもできる。つまり、データの改変を行われることなく他装置とデータをやり取りすることができる。
【０００８】
第２の発明は、第１の発明に従属し、所定データ生成手段、および正当性判断手段として、コンピュータをさらに機能させる。所定データ生成手段は、正当性を判断可能な判断可能データを含む所定のデータを生成する。正当性判断手段は、入力手段によって入力された所定のデータに含まれる判断可能データの正当性を判断する。検証データ算出手段は、正当性判断手段によって正当であることが判断されたとき、検証データを算出する。
【０００９】
第２の発明によれば、所定のデータに含まれる判断可能データの正当性をさらに判断するので、改変されたデータを用いて処理が実行されるのをより高度に防止することができる。
【００１０】
第３の発明は、第１または第２の発明に従属し、実行手段は、処理データをパラメータとして用いて、所定の処理を行う。ただし、処理データに基づいて算出したパラメータが用いられてもよい。
【００１１】
第３の発明によれば、処理データをパラメータとして用いるので、パラメータの改変を防止することができる。
【００１２】
第４の発明は、第２の発明に従属し、判断可能データは、情報処理装置固有の情報である。
【００１３】
第４の発明によれば、情報処理装置固有の情報を判断可能データとして用いるので、所定のデータまたは判断可能データが他の情報処理装置で生成された不当なデータであるかどうかを容易に判断することができる。
【００１４】
第５の発明は、第４の発明に従属し、正当性判断手段は、入力手段によって入力された所定のデータに含まれる情報処理装置固有の情報が、入力手段によって入力された所定のデータと処理データとの出力元である情報処理装置固有の情報であれば、正当であると判断する。たとえば、情報処理装置固有の情報は、情報処理装置のＩＤのような出力元を示す情報である。
【００１５】
第５の発明によれば、出力元を示す情報を情報処理装置固有の情報として用いるので、その正当性を簡単に判断することができる。
【００１６】
第６の発明は、第４または第５の発明に従属し、情報処理装置固有の情報は、情報処理装置のＭＡＣアドレスを含む。
【００１７】
第６の発明によれば、情報処理装置固有の情報として、ＭＡＣアドレスを用いるので、新たに何らかの情報を割り当てる必要が無く、情報処理装置固有の情報の正当性を簡単に判断することができる。
【００１８】
第７の発明は、第４または第５の発明に従属し、情報処理装置固有の情報は、所定のデータの生成時の日時情報（年月日および時分秒の情報）を含む。所定のデータの生成時が完全に一致することは稀であると考えられるからである。
【００１９】
第７の発明によれば、所定のデータの生成時の日時情報を用いても、情報処理装置固有情報の正当性を判断することができる。
【００２０】
第８の発明は、第７の発明に従属し、正当性判断手段は、入力手段によって入力された所定のデータに含まれる日時情報が、入力手段によって以前入力された所定のデータに含まれる日時情報に一致するものが存在しなければ、正当であると判断する。ただし、日時情報が重複すると、正当性判断手段は、不当であると判断する。
【００２１】
第８の発明によれば、所定のデータに含まれる日時情報を比較するだけなので、正当性を簡単に判断することができる。
【００２２】
第９の発明は、第４ないし第８の発明のいずれかに従属し、情報処理装置固有の情報は、実行手段によって行われる処理を認識可能な処理固有情報を含む。たとえば、処理固有情報としては、プログラムやソフトウェアのタイトルが該当する。
【００２３】
第９の発明によれば、実行手段によって行われる処理を認識可能な処理固有情報を情報処理装置固有の情報として用いても、その正当性を判断することができる。
【００２４】
第１０の発明は、第９の発明に従属し、正当性判断手段は、さらに、入力手段によって入力された所定のデータに含まれる処理固有情報が、実行手段によって行われる処理を示すものであれば、正当であると判断する。
【００２５】
第１０の発明によれば、実行手段によって行われる処理を示す処理固有情報であるかどうかを判断するだけなので、情報処理装置固有の情報の正当性を簡単に判断することができる。
【００２６】
第１１の発明は、第４ないし第１０の発明のいずれかに従属し、所定のデータは、ランダムに変化する値をさらに含む。たとえば、ランダムに変化する値は、乱数や疑似乱数である。
【００２７】
第１１の発明によれば、所定のデータはランダムに変化する値を含むので、同じ情報処理装置であっても、可変的に処理データを算出することができる。
【００２８】
第１２の発明は、第１ないし第１１の発明のいずれかに従属し、所定の一方向関数は、ハッシュ関数である。
【００２９】
第１２の発明によれば、ハッシュ関数によって処理データを算出するので、処理データから所定のデータを知ることがほとんど不可能であり、データの改変を防止することができる。
【００３０】
第１３の発明は、第１ないし第１２の発明のいずれかに従属し、情報処理装置は、ネットワークに接続される。出力手段は、ネットワーク上の他の情報処理装置に対して、所定のデータと処理データとを送信する送信手段を含む。入力手段は、ネットワーク上の他の情報処理装置から、所定のデータと処理データとを受信する受信手段を含む。
【００３１】
第１３の発明によれば、通信により、所定のデータと処理データとをやり取りすることができる。
【００３２】
第１４の発明は、取り込んだデータに基づいて処理を行う情報処理装置であって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う。
【００３３】
第１５の発明は、取り込んだデータに基づいて処理を行う情報処理装置の情報処理方法であって、（ａ）所定の一方向関数を用いて、所定のデータから処理データを算出し、（ｂ）所定のデータと、ステップ（ａ）によって算出された処理データとを外部に出力し、（ｃ）外部から所定のデータと処理データとを入力し、（ｄ）所定の一方向関数を用いて、ステップ（ｃ）によって入力された所定のデータから検証データを算出し、そして（ｅ）ステップ（ｃ）によって入力された処理データと、ステップ（ｄ）によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う、情報処理方法である。
【００３４】
第１６の発明は、取り込んだデータに基づいて処理を行う情報処理装置を少なくとも２つ備える情報処理システムであって、各々の情報処理装置は、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う。
【００３５】
第１４−第１６の発明においても、第１の発明と同様に、データの改変を行われることなく他装置とデータをやり取りすることができる。
【００３６】
第１７の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。このゲームプログラムの発明では、所定のデータは、ランダムに変化する値を含むので、所定のデータから生成される処理データは毎回変化される。
【００３７】
第１８の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、処理データ算出手段と、出力手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを他のゲーム装置に出力する。したがって、ランダムに変化する値を含む所定のデータと処理データとを取り込んだ他のゲーム装置では、所定の一方向関数を用いて、所定のデータから検証データを算出する。そして、他のゲーム装置は、たとえば、取り込んだ処理データと算出した検証データとが一致するかどうかを判断し、それらが一致すれば、その処理データを用いてゲーム処理を実行する。
【００３８】
第１９の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、入力手段と、検証データ算出手段と、ゲーム実行手段として、コンピュータを機能させる。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う。
【００３９】
第２０の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他のゲーム装置やゲーム装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。
【００４０】
第２１の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、処理データ算出手段と、出力手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを他のゲーム装置に出力する。
【００４１】
第２２の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。たとえば、所定のデータと処理データとは、他のゲーム装置や記録媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う。
【００４２】
第２３の発明は、取り込んだデータに基づいて処理を行うゲーム装置のゲーム制御方法であって、（ａ）所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出し、（ｂ）所定のデータと、ステップ（ａ）によって算出された処理データとを外部に出力し、（ｃ）外部から、ランダムに変化する値を含む所定のデータと処理データとを入力し、（ｄ）所定の一方向関数を用いて、ステップ（ｃ）によって入力された所定のデータから検証データを算出し、そして（ｅ）ステップ（ｃ）によって入力された処理データと、ステップ（ｄ）によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う、ゲーム制御方法である。
【００４３】
第２４の発明は、取り込んだデータに基づいて処理を行うゲーム装置を少なくとも２つ備えるゲームシステムであって、各々のゲーム装置は、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ラムダに変化する値を含む所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他のゲーム装置やゲーム装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。
【００４４】
第１７−第２４の発明においても、第１の発明と同様に、データの改変を行われることなく他装置とデータをやり取りすることができる。
【発明の効果】
【００４５】
この発明によれば、入力された処理データと入力された所定のデータから一方向関数を用いて算出した検証データとが一致するかどうかを判断し、一致する場合に、その処理データを用いて所定の処理を行うので、改変されたデータの使用を防止することができる。これによって、データの改変を防止することができる。つまり、データの改変を行われることなく他装置とデータをやり取りすることができる。
【００４６】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００４７】
【図１】図１はこの発明の一実施例であるゲーム装置の外観図であり、開状態における正面を示す。
【図２】図２はゲーム装置の外観図であり、（Ａ）が閉状態における上面を示し、（Ｂ）が閉状態における左側面を示し、（Ｃ）が閉状態における正面を示し、（Ｄ）が閉状態における右側面を示し、（Ｅ）が閉状態における背面を示し、（Ｆ）が閉状態における下面を示す。
【図３】図３は３Ｄ調整スイッチの動作を説明するための図解図である。
【図４】図４はゲーム装置の電気的構成の一例を示すブロック図である。
【図５】図５は図４の電気的構成の要部（立体ＬＣＤとＳｏＣの一部とで構成される立体ＬＣＤ制御部）を示すブロック図である。
【図６】図６は視差バリア方式による３Ｄ／２Ｄ表示の原理を説明するための図解図であり、（Ａ）が視差バリアＯＮ状態（３Ｄ表示）を示し、（Ｂ）が視差バリアＯＦＦ状態（２Ｄ表示）を示す。
【図７】図７は図１に示すゲーム装置を用いたゲームシステムの例を示す図解図である。
【図８】図８は２台のゲーム装置で実行される認証処理の概略を説明するための図解図である。
【図９】図９は生成用データの具体例を示す図解図である。
【図１０】図１０は図４に示したメインメモリのメモリマップの例を示す図解図である。
【図１１】図１１は送信側のゲーム装置のＣＰＵの認証処理を示すフロー図である。
【図１２】図１２は受信側のゲーム装置のＣＰＵの認証処理を示すフロー図である。
【図１３】図１３は受信側のゲーム装置のＣＰＵの正当性の判断処理を示すフロー図である。
【発明を実施するための形態】
【００４８】
図１および図２には、本発明の一実施例であるゲーム装置１０の外観が示される。ゲーム装置１０は、折り畳み式のゲーム装置であり、図１は開状態におけるゲーム装置１０の正面を示し、図２（Ａ）〜図２（Ｆ）は閉状態におけるゲーム装置１０の上面，左側面，前面，右側面，背面および下面を示している。
【００４９】
ゲーム装置１０は、図１に示されるように、互いに回動可能に連結された上側ハウジング１０Ａおよび下側ハウジング１０Ｂを備え、上側ハウジング１０Ａの正面には、裸眼３Ｄ表示に対応した立体ＬＣＤ１２、内側カメラ１８ａ、３Ｄ調整スイッチ２０、３Ｄランプ２０Ａ、ならびに左右のスピーカ２２ａおよび２２ｂなどが設けられる。下側ハウジング１０Ｂの正面には、タッチパネル１６付きの下ＬＣＤ１４、Ａ，Ｂ，Ｘ，Ｙボタン２４ａ−２４ｄ、十字キー（ボタン）２４ｇ、ホーム，セレクト，スタートボタン２４ｈ−２４ｊ、電源ボタン２４ｋ、アナログパッド２６、およびマイク３０が設けられる。
【００５０】
また、図２（Ａ）に示されるように、ゲーム装置１０の上面（図１に示した上側ハウジング１０Ａの裏面）には、３Ｄ撮影に対応した左右の外側カメラ１８ｂおよび１８ｃが設けられる。また、図２（Ｃ）に示されるように、ゲーム装置１０の前面には、ヘッドホン端子３６、および電源ランプ４２ａなどが設けられる。また、図２（Ｂ）、図２（Ｅ）および図２（Ｄ）に示されるように、ゲーム装置１０の左側面から背面に跨ってＬボタン２４ｅが設けられ、右側面から背面に跨ってＲボタン２４ｆが設けられる。また、ゲーム装置１０の左側面には、音量調整スイッチ３２およびＳＤカードスロット３４などがさらに設けられ、ゲーム装置１０の右側面には、無線スイッチ２８、無線ランプ４２ｂなどがさらに設けられる。上述の３Ｄ調整スイッチ２０は、この右側面から露見している。また、ゲーム装置１０の背面には、赤外線受発光部４０などがさらに設けられる。そして、図２（Ｅ）および図２（Ｆ）に示されるように、ゲーム装置１０の背面から下面に跨ってゲームカードスロット３８が設けられる。
【００５１】
立体ＬＣＤ１２は、視差バリア（パララックスバリア）方式による３Ｄ液晶（図６参照）であり、裸眼で立体視が可能な画像（裸眼立体視画像）を表示する。立体ＬＣＤ１２では、液晶による視差バリアをＯＦＦすることで、平面画像の表示も可能である。なお、視差バリア方式に限らず、凹凸付のシート（レンチキュラレンズ）を利用するレンチキュラ方式や、その他の裸眼３Ｄ方式を採用してもよい。
【００５２】
内側カメラ１８ａは平面画像（２Ｄ画像）を撮影し、外側カメラ１８ｂおよび１８ｃは立体視画像（３Ｄ画像）を撮影する。プレイヤを撮影した２Ｄまたは３Ｄの画像は、ゲームプログラムのようなアプリケーションプログラムへの画像入力として利用可能である。この場合、ゲームプログラムは、画像認識を行うことで、プレイヤの顔や手の動き、視線方向（眼球の向き）などを検出し、検出結果に応じた処理を実行する。内側カメラ１８ａによる２Ｄ画像はまた、下ＬＣＤ１４に表示可能であり、外側カメラ１８ｂおよび１８ｃによる３Ｄ画像はまた、立体ＬＣＤ１２に表示可能である。
【００５３】
３Ｄ調整スイッチ２０は、立体ＬＣＤ１２の表示に関して、３Ｄおよび２Ｄの間の切り替えを手動で行い、さらには、３Ｄでの立体感の手動調整をも行うためのスライドスイッチであり、たとえば図３のように動作する。３Ｄの立体感は、この実施例では、スライダＳｄが上端にあるとき最大（Ｓｄ＝１）であり、スライダＳｄを下げるに従って減少し、下端にあるとき最小（Ｓｄ＝０）となる。そして、スライダＳｄを下端まで下げきると、３Ｄから２Ｄに切り替わる。
【００５４】
なお、詳細な説明は省略するが、このような３Ｄの立体感の変化は、仮想空間内に配置された左右の仮想カメラ（図示せず）の間の距離（カメラ間距離Ｄ）を変化させることによって実現される。つまり、３Ｄ調整スイッチ２０の動作に応じて、カメラ間距離Ｄが調整される。そして、カメラ間距離Ｄは、こうして手動調整されるだけでなく、ゲームプログラムによる自動調整も受ける。
【００５５】
３Ｄランプ２０Ａは、立体ＬＣＤ１２の表示状態を示すランプであり、３Ｄでは点灯し、２Ｄでは消灯する。なお、単に点灯よび消灯するだけでなく、３Ｄの程度（立体感の大小）に応じて輝度や色を変化させてもよい。
【００５６】
タッチパネル１６や、Ａ，Ｂ，Ｘ，Ｙボタン２４ａ−２４ｄ、十字キー（ボタン）２４ｇ、ホーム，セレクト，スタートボタン２４ｈ−２４ｊ、あるいはアナログパッド２６への操作は、ゲームプログラムへのタッチ／ボタン／パッド入力として利用される。電源ボタン２４ｋは、ゲーム装置１０の電源をオン／オフするために用いられる。電源ランプ４２ａは、電源のオン／オフと連動して点灯／消灯する。
【００５７】
マイク３０は、プレイヤの発話音声や環境音などを音声データに変換する。音声データは、ゲームプログラムへの音声入力として利用可能である。この場合、ゲームプログラムは、音声認識を行うことで、プレイヤの発話音声を検出し、検出結果に応じた処理を実行する。マイク３０による音声データはまた、ＮＡＮＤ型フラッシュメモリ４８（図４参照）などに記録可能である。
【００５８】
スピーカ２２ａおよび２２ｂは、ゲーム音声やマイク音声などを出力する。ヘッドホン端子３６には、図示しないヘッドホンが接続される。音量調整スイッチ３２は、スピーカ２２ａおよび２２ｂの音量またはヘッドホン端子３６の出力を調整するためのスライドスイッチである。
【００５９】
ＳＤカードスロット３４には、カメラ画像やマイク音声などを保存するためのＳＤメモリカード（図示せず）が装着され、ゲームカードスロット３８には、ゲームプログラムなどが格納されたゲームカード（図示せず）が装着される。赤外線受発光部４０は、他のゲーム装置との間での赤外線（ＩＲ）通信に利用される。
【００６０】
図４には、ゲーム装置１０の電気的構成が示される。ゲーム装置１０は、ＣＰＵ、ＧＰＵ、ＶＲＡＭおよびＤＳＰなどで構成されたＳｏＣ(System-on-a-Chip)４４を含む。ＳｏＣ４４には、上述した立体ＬＣＤ１２、下ＬＣＤ１４、内側カメラ（Ｉｎカメラ）１８ａ、左右の外側カメラ（ＯＣＡＭ−ＬおよびＯＣＡＭ−Ｒ）１８ｂおよび１８ｃ、Ａ，Ｂ，Ｘ，Ｙ，Ｌ，Ｒボタン２４ａ−２４ｆ、十字ボタン２４ｇ、ＳＤカードスロット３４、ゲームカードスロット３８、および赤外線受発光部（ＩＲ）４０が接続される。ＳｏＣ４４にはまた、マイコン５６を介して、上述した３Ｄ調整スイッチ（３Ｄ Ｖｏｌ）２０、３Ｄランプ２０Ａ、ホーム，セレクト，スタートボタン２４ｈ−２４ｊ、電源ボタン（Ｐｏｗｅｒ）２４ｋ、無線スイッチ（ＷｉＦｉ）２８、音量調整スイッチ（音量Ｖｏｌ）３２，および電源，無線ランプ４２ａ，４２ｂが接続される。ＳｏＣ４４にはさらに、ＩＦ回路５８を介して、上述したタッチパネル１６、左右のスピーカ２２ａおよび２２ｂ、アナログパッド２６、マイク（Ｍｉｃ）３０およびヘッドホン端子３６が接続される。
【００６１】
また、ＳｏＣ４４には、上述した以外の要素として、無線モジュール４６、ＮＡＮＤ型フラッシュメモリ４８およびメインメモリ５０が接続される。無線モジュール４６は、無線ＬＡＮに接続する機能を有する。したがって、図示は省略するが、ゲーム装置１０は、他のゲーム装置１０やコンピュータと直接またはネットワークを介して通信することができる。ＮＡＮＤ型フラッシュメモリ４８は、カメラ画像，マイク音声など保存用のデータを記憶する。メインメモリ５０は、ＳｏＣ４４に作業領域を提供する。すなわち、メインメモリ５０には、ゲームなどのアプリケーションで用いられる各種のデータやプログラムが記憶され、ＳｏＣ４４はメインメモリ５０に記憶されたデータやプログラムを利用して作業を行う。
【００６２】
マイコン５６には、電源管理ＩＣ５２および加速度センサ５４が接続される。電源管理ＩＣ５２はゲーム装置１０の電源管理を行い、加速度センサ５４はゲーム装置１０の３軸方向の加速度を検出する。加速度センサ５４の検出結果は、ゲームプログラムへの動き入力として利用可能である。この場合、ゲームプログラムは、検出結果に基づいてゲーム装置１０自体の動きを計算し、計算結果に応じた処理を実行する。また、マイコン５６は、ＲＴＣ（リアルタイムクロック）５６ａを含み、ＲＴＣ５６ａで時間をカウントしてＳｏＣ４４に供給する。
【００６３】
図５には、立体ＬＣＤ１２とＳｏＣ４４の一部とで構成される立体ＬＣＤ制御部１２Ａが示される。立体ＬＣＤ１２は、ＬＣＤコントローラ１２ａ、バリア液晶１２ｂおよび上ＬＣＤ１２ｃを含む。バリア液晶１２ｂは、図６（Ａ）に示されるように、縦（列）方向に伸びる複数の液晶スリットを含み、バックライトからの光を複数の液晶スリットで交互に遮ることによって、右目および左目に上ＬＣＤ１２ｃの異なる列の画素を通過した光が見えるようにする。上ＬＣＤ１２ｃは、下ＬＣＤ１４と同様、普通の（２Ｄ表示用の）液晶でよい。ＬＣＤコントローラ１２ａは、ＧＰＵ４４ｂひいてはＣＰＵ４４ａの制御下で、上ＬＣＤ１２ｃに描画を行い、かつバリア液晶１２ｂ（への印加電圧）をＯＮ／ＯＦＦする。バリア液晶１２ｂをＯＦＦすると、図６（Ｂ）に示されるように、右目および左目には、上ＬＣＤ１２ｃのどの列の画素を通過した光も見えるようになる。
【００６４】
なお、図５には、立体ＬＣＤ１２に対応して、ＬＣＤコントローラ１２ａ、ＧＰＵ４４ｂおよびＶＲＡＭ４４ｃが設けられるように示してあるが、当然に、下ＬＣＤ１４に対応して、ＬＣＤコントローラ、ＧＰＵおよびＶＲＡＭが設けられている。図５を参照して分かるように、下ＬＣＤ１４に対応するＧＰＵもまた、ＣＰＵ４４ａと信号を送受信可能に接続され、下ＬＣＤ１４に対応するＧＰＵとＶＲＡＭとは信号を送受信可能に接続される。そして、ＣＰＵ４４ａ、下ＬＣＤ１４に対応するＧＰＵ、およびＶＲＡＭのそれぞれが、下ＬＣＤ１４に対応するＬＣＤコントローラと信号を送受信可能に接続され、このＬＣＤコントローラに下ＬＣＤ１４が接続されるのである。
【００６５】
たとえば、電源ボタン２４ｋがオンされ、ゲーム装置１０の電源がオンされると、ゲーム装置１０が起動され、図示しないメインメニュー画面が下ＬＣＤ１４に表示される。メインメニュー画面では、ゲーム装置１０で実行可能な仮想ゲームなどのアプリケーションの実行を指示することができる。また、仮想ゲームの種類によっては、２台以上のゲーム装置１０との間で通信することにより、仮想ゲーム（通信ゲーム）をプレイすることもできる。
【００６６】
図７（Ａ）および図７（Ｂ）は、通信ゲームをプレイする場合のゲームシステム１００の例を示す。図７（Ａ）に示すゲームシステム１００は、２台のゲーム装置１０を含み、その２台のゲーム装置１０間で直接通信が行われる。図示は省略するが、３台以上のゲーム装置１０を用いてゲームシステム１００（ネットワーク）が構成されてもよい。かかる場合には、いずれか１台のゲーム装置１０が親機として機能し、他のゲーム装置１０が子機として機能する。たとえば、親機のゲーム装置１０が、通信ゲームに参加する子機のゲーム装置１０を募集し、子機のゲーム装置１０の参加の申し込みを受け付けて、対戦相手のゲーム装置１０を決定する。対戦相手のゲーム装置１０が決定されると、親機のゲーム装置１０と対戦相手としての子機のゲーム装置１０との間で、通信ゲームが実行される。
【００６７】
また、図７（Ｂ）に示すゲームシステム１００は、２台以上のゲーム装置１０を含み、各ゲーム装置１０はインターネットのようなネットワーク１０４を介してサーバ１０２に接続される。たとえば、サーバ１０２は、マッチングサーバとして機能し、各ゲーム装置１０からの参加を受け付け、対戦相手のゲーム装置１０を決定する。対戦相手が決定され、通信プレイ（通信ゲーム）が開始されると、対戦相手のゲーム装置１０同士で、ネットワーク１０４を介して通信が行われる。ただし、かかる場合にも、いずれか１台のゲーム装置１０が親機として機能し、他のゲーム装置１０が子機として機能する。
【００６８】
ただし、通信ゲームが開始された後であっても、サーバ１０２を介して通信ゲームを進行させるようにしてもよい。かかる場合には、サーバ１０が親機として機能し、通信ゲームを行う各ゲーム装置１０が子機として機能する。また、かかる場合には、たとえば、対戦相手の各ゲーム装置１０から操作データがネットワーク１０４を介してサーバ１０２に送信され、サーバ１０２でゲーム処理が実行され、その結果についてのデータが上記の対戦相手の各ゲーム装置１０に送信される。ただし、サーバ１０２は、各ゲーム装置１０でゲーム処理が実行されたデータを受信して、それらを統合し、統合した結果についてのデータを各ゲーム装置１０に送信するようにしてもよい。
【００６９】
このようなゲーム装置１０では、通信ゲームの開始に先立って、各プレイヤが使用するプレイヤキャラクタが選択されるのが一般的である。かかる場合には、プレイヤ自身がプレイヤキャラクタを選択したり、コンピュータ（親機としてのゲーム装置１０のＣＰＵ４４ａ）がプレイヤキャラクタを選択したりする。このとき、プレイヤキャラクタの個性（属性）に関するデータ（ゲームデータ）が通信ゲームをプレイするゲーム装置１０間でやり取りされる。
【００７０】
しかし、最近では、通常ではあり得ない改変がなされたゲームデータを受信して通信ゲームをプレイしてしまうことが多発している。これは、イベント会場で知り合ったプレイヤやサーバ１０２によってマッチングされた対戦相手が改変されたデータを使用していることを判断することができないからである。このため、改変されたゲームデータを受信した側のゲーム装置１０では、ゲームバランスを崩されてしまい、当該ゲーム装置１０のプレイヤのような不正を行っていないプレイヤのゲームに対する興味を薄れさせていた。
【００７１】
そこで、この実施例では、通信ゲームの開始に先立って、改変されたゲームデータであるかどうかを判断し、つまりゲームデータの正当性を判断し、正当であることが判断された場合にのみ、通信ゲームを行うようにしてある。
【００７２】
まず、図８を用いて、２台のゲーム装置１０間で実行されるゲームデータの正当性を判断するための認証処理の概略について説明することにする。ただし、通信ゲームへの参加予定のゲーム装置１０が３台以上である場合には、親機のゲーム装置１０と、各子機のゲーム装置１０との間で、それぞれ認証処理が実行される。
【００７３】
ここでは、２台のゲーム装置１０のうち、一方のゲーム装置１０を「ゲーム装置Ａ」と呼び、他方のゲーム装置１０を「ゲーム装置Ｂ」と呼ぶことにする。図８に示すように、ゲーム装置Ａは、まず、生成用データを生成し、ハッシュ値データを算出する。ここで、生成用データは、ゲーム装置Ａ固有の情報（装置固有情報）についてのデータ（ユニークデータ）と、改変可能な値のデータとを含む。この実施例では、装置固有情報は、ゲーム装置ＡのＭＡＣアドレスである。また、改変可能な値としては、乱数が用いられる。ただし、疑似乱数を用いてもよい。
【００７４】
生成用データは、所定のビット数のレジスタで構成され、上述した装置固有情報についてのユニークデータおよび乱数についてのデータ（乱数データ）を直列に並べることにより生成される。たとえば、図９（Ａ）に示すように、生成用データは、９６ビット（４ビット×２４）のレジスタで構成される。ただし、図９（Ａ）では、４ビット（１／２オクテット）のまとまりで１つの四角枠を示してある。これは、ユニークデータおよび乱数データに対応する英数字を１６進数（０−９およびＡ−Ｆ）で表すためである。
【００７５】
図９（Ａ）に示すように、最上位ビットを含む先頭の四角枠から順にＭＡＣアドレスの英数字に対応するデータ値が記憶され、それに続いて乱数の英数字に対応するデータ値が最下位ビットを含む末尾の四角枠まで記憶される。図９（Ａ）（図９（Ｂ）も同じ）に示す例では、ＭＡＣアドレスが“３２：５４：２Ａ：６Ｆ：Ｃ５：０１”であり、乱数が“５Ａ３４ＦＢＤ２９０Ｃ６”である。
【００７６】
ただし、後述するように、受信側の認証処理では、生成用データからユニークデータを抽出して、その正当性を判断するため、生成用データのうちの読み出すビットおよびその順番は予め決められている。したがって、図９（Ａ）に示すように、ＭＡＣアドレスおよび乱数の英数字に対応するデータ値を直列に並べる必要は無く、複雑に並べることもできる。たとえば、図９（Ｂ）に示すように、ＭＡＣアドレスの英数字に対応するデータ値と乱数の英数字に対応するデータ値とを、先頭の四角枠に含まれる４ビットのまとまり毎に、交互に記憶するようにしてもよい。かかる場合には、先頭の四角枠を含む奇数番目の四角枠に含まれる４ビットのデータ値を先頭から順に取り出すことにより、ユニークデータを抽出することができる。
【００７７】
図８に戻って、このように生成された生成用データを用いて、ハッシュ関数で演算することにより、ハッシュ値のデータ（ハッシュ値データ）が算出される。この実施例では、一方向関数の例としてハッシュ関数を用いるようにしてあるが、ＳＨＡ−１、ＳＨＡ−２５６、ＭＤ５を用いることもできる。また、素因数分解や離散対数のような一方向関数を用いるようにしてもよい。算出されたハッシュ値データは、通信ゲームにおいて、自機についてのパラメータとして用いられる。ただし、後述するように、ハッシュ値データは、パラメータを算出するために用いられることもある。
【００７８】
この実施例では、パラメータによって、プレイヤキャラクタの個性ないし属性が決定される。したがって、この実施例では、生成用データに乱数データを含めるようにしてある。これは、生成用データをユニークデータのみで生成した場合には、装置固有情報としてＭＡＣアドレスのように固定の情報を用いると、毎回同じ個性のプレイヤキャラクタが生成されてしまうことになり、仮想ゲームが単調になってしまうおそれがあるからである。ただし、パラメータによって、プレイヤキャラクタの種類が決定されることもある。
【００７９】
このように、ハッシュ値データをパラメータとして用いるのは、このハッシュ値データから元の生成用データを知ることがほとんど不可能であり、不正なゲームデータ（パラメータ）が生成されるのを防止するためである。つまり、データの改変を防止するためである。
【００８０】
また、生成された生成用データと算出されたハッシュ値データとは、ゲーム装置Ｂに送信される。たとえば、このとき送信されるデータ（送信データ）は、ヘッダ情報を含み、これに続くフィールドに、生成用データおよびハッシュ値データが含まれる。ヘッダ情報は、たとえば、通信ゲームにおける自己の識別情報（通信ゲームにおけるＩＤまたは／およびＭＡＣアドレス）、接続情報（ＩＰアドレス）、ゲーム装置（プレイヤ）の名称、仮想ゲームの識別情報（ゲームタイトル）、および現在時刻（年月日を含む）の情報などを含む。
【００８１】
ゲーム装置Ｂは、ゲーム装置Ａから送信された生成用データとハッシュ値データとを受信（取得）し、生成用データに含まれるユニークデータを抽出して、その正当性を判断する。この実施例では、装置固有情報は、ＭＡＣアドレスであり、ＭＡＣアドレスは、上述したように、送信データのヘッダ情報にも含まれる。このため、正当性の判断においては、ヘッダ情報に含まれるＭＡＣアドレスと、ユニークデータに対応するＭＡＣアドレスとが一致するかどうかを判断するようにしてある。この場合、それら２つのＭＡＣアドレスが一致すれば、ユニークデータは正当であると判断されるが、一致しなければ、ユニークデータは不当であると判断される。
【００８２】
ただし、送信データのヘッダ情報は改変可能であり、改変された不正な生成用データが送信される可能性もある。したがって、この実施例では、２つのＭＡＣアドレスが一致する場合の当該ＭＡＣアドレスをリスト（通信可能リスト）に記憶しておき、ユニークデータの正当性を判断する際には、まず、ユニークデータに対応するＭＡＣアドレスが、通信可能リストに記憶されたＭＡＣアドレスと一致するか否かを判断するようにしてある。これは、複数のゲーム装置１０でＭＡＣアドレスが一致することは基本的には有り得ないためである。受信した生成用データに含まれるユニークデータに対応するＭＡＣアドレス（送信データのヘッダ情報に含まれるＭＡＣアドレスでも可）が、通信可能リストに記憶されたＭＡＣアドレスと一致する場合には、それらは改変等された不正な生成用データであると判断される。したがって、一旦通信可能リストに登録されたＭＡＣアドレスであっても、後に同じＭＡＣアドレスを含む生成用データを受信した場合には、つまり後に生成用データが不当であることが判明した場合には、通信可能リストから削除される。
【００８３】
ユニークデータが正当である場合には、ゲーム装置Ｂは、さらに、受信した生成用データを用いて、ハッシュ関数で演算することによりハッシュ値データを算出する。ただし、ゲーム装置Ａおよびゲーム装置Ｂで使用されるハッシュ関数は同じである。そして、ゲーム装置Ｂは、受信したハッシュ値データと、算出したハッシュ値データとが等しいかどうかを判断する。ゲーム装置Ｂは、それら２つのハッシュ値データが等しい場合には、生成用データが正当であると判断して、その後の通信ゲームにおいて、受信したハッシュ値データを対戦相手（ここでは、ゲーム装置Ａ）のパラメータとして使用する。一方、それら２つのハッシュ値データが等しくない場合には、ゲーム装置Ｂは、生成用データが不当であると判断する。
【００８４】
ユニークデータまたは生成用データが不当であると判断された場合には、通信ゲームは行われない。このとき、ゲーム装置Ｂは、改変等された不正なデータであり、通信ゲームをプレイしない旨を示すメッセージを下ＬＣＤ１４（立体ＬＣＤ１２でも可）に表示したり、その旨を示す音（効果音、音楽）をスピーカ２２ａ、２２ｂから出力したり、その両方を実行したりする。
【００８５】
また、ユニークデータおよび生成用データの両方が正当である場合には、ゲーム装置Ａとゲーム装置Ｂとを入れ替えて、上述したような処理が実行される。このような認証処理が、親機とすべての子機との間で実行され、ユニークデータおよび生成用データの両方が正当であると判断された複数のゲーム装置１０の間で、通信ゲームが開始される。たとえば、親機は、通信可能リストに記載されたＭＡＣアドレスを有する子機を通信ゲームに参加可能であると判断し、参加可能な子機との間で通信ゲームを開始する。このとき、各子機は、親機から他の子機についての接続情報およびハッシュ値データを受信（取得）する。したがって、通信ゲームを行うゲーム装置１０の各々では、ハッシュ値データがパラメータとして使用され、プレイヤキャラクタの個性（属性）が決定される。ただし、自機で算出したハッシュ値データは、自機のプレイヤキャラクタについて使用され、他機で算出されたハッシュ値データは、当該他機のプレイヤキャラクタについて使用される。
【００８６】
たとえば、プレイヤキャラクタの個性ないし属性としては、当該プレイヤキャラクタの強さ（攻撃力、守備力、体力など）、素早さ、魅力、肌の色、大きさおよび成長率などが該当する。たとえば、ハッシュ値が小さい場合にはプレイヤキャラクタは弱く、ハッシュ値が大きい場合にはプレイヤキャラクタは強い。
【００８７】
また、たとえば、数１に従って、ハッシュ値を用いてパラメータが生成（算出）されることもある。ただし、プレイヤキャラクタの経験値に代えて、プレイヤないしプレイヤキャラクタのレベルを用いてもよい。また、ａおよびｂは定数であり、それぞれがハッシュ値に応じて変化される。
【００８８】
［数１］
パラメータ＝ａ×（経験値）＋ｂ
したがって、同じプレイヤキャラクタが選択された場合であっても、ハッシュ値や経験値の違いによって、異なる個性ないし属性を設定することができる。
【００８９】
図１０は図４に示したメインメモリ５０のメモリマップ５００の例を示す図解図である。図１０に示すように、メインメモリ５０は、プログラム記憶領域５０２およびデータ記憶領域５０４を含む。プログラム記憶領域５０２には、この実施例の情報処理プログラム（ゲームプログラムを含む）が記憶され、ゲームプログラムは、メイン処理プログラム５０２ａ、通信プログラム５０２ｂ、生成用データ生成プログラム５０２ｃ、ハッシュ値データ算出プログラム５０２ｄおよび正当性判断プログラム５０２ｅなどで構成される。
【００９０】
メイン処理プログラム５０２ａは、仮想ゲームのメインルーチンを処理するためのプログラムである。通信プログラム５０２ｂは、他のゲーム装置１０やコンピュータと通信するためのプログラムである。生成用データ生成プログラム５０２ｃは、装置固有情報と乱数とから生成用データを生成するためのプログラムである。
【００９１】
ハッシュ値データ算出プログラム５０２ｄは、生成用データ生成プログラム５０２ｃに従って生成した生成用データや他のゲーム装置１０から受信した生成用データを用いて、ハッシュ関数で演算することにより、ハッシュ値データを算出するためのプログラムである。正当性判断プログラム５０２ｅは、受信した生成用データおよびそれに含まれるユニークデータの正当性を判断するためのプログラムである。
【００９２】
図示は省略するが、プログラム記憶領域５０２には、バックアッププログラムや音出力プログラムなども記憶される。バックアッププログラムは、ゲームデータ（途中データや結果データ）を、ＮＡＮＤ型フラッシュメモリ４８、ゲームカードまたはＳＤカードに保存（セーブ）するためのプログラムである。音出力プログラムは、効果音、音声（擬声音）、音楽（ＢＧＭ）などのゲームに必要な音を出力するためのプログラムである。
【００９３】
データ記憶領域５０４には、自機生成用データ５０４ａ、自機ハッシュ値データ５０４ｂ、他機生成用データ５０４ｃ、他機第１ハッシュ値データ５０４ｄ、他機第２ハッシュ値データ５０４ｅ、および通信許可リストデータ５０４ｆが記憶される。
【００９４】
自機生成用データ５０４ａは、自機のゲーム装置１０で生成用データ生成プログラム５０２ｃに従って生成された生成用データである。自機ハッシュ値データ５０４ｂは、自機のゲーム装置１０でハッシュ値データ算出プログラム５０２ｄに従って、自機生成用データ５０４ａを用いて算出されたハッシュ値データである。
【００９５】
他機生成用データ５０４ｃは、他のゲーム装置１０から受信した生成用データである。つまり、他機生成用データ５０４ｃは、他のゲーム装置１０で生成された自機生成用データに相当する。他機第１ハッシュ値データ５０４ｄは、他のゲーム装置１０から受信したハッシュ値データである。つまり、他機第１ハッシュ値データ５０４ｄは、他のゲーム装置１０で算出された自機ハッシュ値データに相当する。他機第２ハッシュ値データ５０４ｅは、ハッシュ値データ算出プログラム５０２ｄに従って、他機生成用データ５０４ｃを用いて算出されたハッシュ値データである。
【００９６】
なお、図１０では、簡単のため省略するが、他機第１ハッシュ値データ５０４ｄ（または、他機第２ハッシュ値データ５０４ｅ）は、通信ゲームをプレイするゲーム装置１０の総数−１に相当する数だけ記憶される。
【００９７】
また、詳細な説明は省略するが、他機生成用データ５０４ｃ、および他機第２ハッシュ値データ５０４ｅ（または、他機第１ハッシュ値データ５０４ｄ）は、認証処理が終了すると、メインメモリ５０から削除される。
【００９８】
通信許可リストデータ５０４ｆは、通信することが許可されたゲーム装置１０についてのＭＡＣアドレスを記載したリストについてのデータである。親機のゲーム装置１０は、この通信許可リストに基づいて、通信ゲームへの参加者を確定する。
【００９９】
図示は省略するが、データ記憶領域５０４には、ゲームプログラムの実行に必要な他のデータが記憶されたり、カウンタ（タイマ）やフラグが設けられたりする。
【０１００】
図１１および図１２は、通信ゲームの本編の開始に先立って実行される認証処理（送信側と受信側）を示すフロー図である。図１１は、送信側のゲーム装置１０（上述したゲーム装置Ａに相当する）についての認証処理であり、図１２は、受信側のゲーム装置１０（上述したゲーム装置Ｂに相当する）についての認証処理である。
【０１０１】
図１１に示すように、送信側のゲーム装置１０のＣＰＵ４４ａは認証処理を開始すると、ステップＳ１で、ユニークデータと乱数データとから自機生成用データ５０４ａを生成する。ただし、このとき、ＣＰＵ４４ａは、ユニークデータを作成するととともに、乱数データを発生させる。そして、ＣＰＵ４４ａは、上述したように、ユニークデータと乱数データとをビットに並べて、自機生成用データを生成する。次のステップＳ３では、ステップＳ１で作成した自機生成用データ５０４ａをデータ記憶領域５０４ａに保存（記憶）する。
【０１０２】
続いて、ステップＳ５では、自機生成用データ５０４ａを用いてハッシュ関数で演算することにより、自機ハッシュ値データ５０４ｂを生成する。次のステップＳ７では、ステップＳ５で生成した自機ハッシュ値データ５０４ｂをデータ記憶領域５０４に保存する。そして、ステップＳ９で、自機生成用データ５０４ａと自機ハッシュ値データ５０４ｂとを受信側のゲーム装置１０に送信して、処理を終了する。ただし、ステップＳ９では、自機生成用データ５０４ａおよび自機ハッシュ値データ５０４ｂの複製が、他のゲーム装置１０（ここでは、受信側のゲーム装置１０）のような外部の装置などに送信（出力）される。
【０１０３】
一方、図１２に示すように、受信側のゲーム装置１０のＣＰＵ４４ａは、認証処理を開始すると、ステップＳ２１で、他機生成用データ５０４ｃと他機第１ハッシュ値データ５０４ｄとを読み込む。ただし、他機生成用データ５０４ｃは、上述したように、送信側のゲーム装置１０のＣＰＵ４４ａが送信した自機生成用データに相当する。他機第１ハッシュ値データ５０４ｄもまた、上述したように、送信側のゲーム装置１０のＣＰＵ４４ａが送信した自機ハッシュ値データに相当する。つまり、他機生成用データ５０４ｃと他機第１ハッシュ値データ５０４ｄとは、他のゲーム装置１０（ここでは、送信側のゲーム装置１０）のような外部の装置などから入力される。
【０１０４】
続くステップＳ２３では、他機生成用データ５０４ｃからユニークデータを抽出し、ステップＳ２５で、後述する正当性の判断処理（図１３参照）を実行する。つまり、ステップＳ２５では、ステップＳ２３で抽出されたユニークデータの正当性が判断されるのである。そして、ステップＳ２７で、ユニークデータが正当かどうかを判断する。
【０１０５】
ステップＳ２７で“ＮＯ”であれば、つまりユニークデータが不当であれば、ステップＳ３５に進む。一方、ステップＳ２７で“ＹＥＳ”であれば、つまりユニークデータが正当であれば、ステップＳ２９で、他機第２ハッシュ値データ５０４ｅを算出する。ここでは、ＣＰＵ４４ａは、他機生成用データ５０４ｃを用いてハッシュ関数で演算することにより、他機第２ハッシュ値データ５０４ｅを算出し、データ記憶領域５０４に記憶する。そして、ステップＳ３１で、他機第１ハッシュ値データ５０４ｄと他機第２ハッシュ値データ５０４ｅとが一致するかどうかを判断する。つまり、他機生成用データ５０４ｃ自体の正当性が判断されるのである。
【０１０６】
ステップＳ３１で“ＹＥＳ”であれば、つまり他機第１ハッシュ値データ５０４ｄと他機第２ハッシュ値データ５０４ｅとが一致すれば、他機生成用データ５０４ｃが正当であると判断し、ステップＳ３３で、通信許可リストに登録して、処理を終了する。つまり、ステップＳ３３では、受信側のゲーム装置１０のＣＰＵ４４ａは、他機生成用データ５０４ｃに含まれるユニークデータに対応するＭＡＣアドレスを、通信許可リストに記録（追加）する。一方、ステップＳ３１で“ＮＯ”であれば、つまり他機第１ハッシュ値データ５０４ｄと他機第２ハッシュ値データ５０４ｅとが一致しなければ、他機生成用データ５０４ｃが不当であると判断し、ステップＳ３５で、不当を通知して、処理を終了する。つまり、ステップＳ３５では、受信側のゲーム装置１０のＣＰＵ４４ａは、上述したように、下ＬＣＤ１４（立体ＬＣＤ１２でもよい）に、送信側のゲーム装置１０との通信ゲームをプレイすることができない旨のメッセージを表示したり、その旨を示す音をスピーカ２２ａ、２２ｂから出力したり、或いは、それらの両方を実行したりする
図１３は、図１２のステップＳ２５に示した正当性の判断処理を示すフロー図である。図１３に示すように、受信側のゲーム装置１０のＣＰＵ４４ａは、正当性の判断処理を開始すると、ステップＳ５１で、他機生成用データ５０４ｃから抽出したユニークデータに対応するＭＡＣアドレスが通信許可リストに登録されているかどうかを判断する。
【０１０７】
ステップＳ５１で“ＹＥＳ”であれば、つまり抽出したユニークデータに対応するＭＡＣアドレスが通信許可リストに登録されている場合には、ステップＳ５３で、当該ＭＡＣアドレスと同じＭＡＣアドレスを通信許可リストから削除して、ステップＳ５９に進む。
【０１０８】
一方、ステップＳ５１で“ＮＯ”であれば、つまり抽出したユニークデータに対応するＭＡＣアドレスが通信許可リストに登録されていない場合には、ステップＳ５５で、ヘッダ情報に含まれているＭＡＣアドレスと、抽出したユニークデータに対応するＭＡＣアドレスとが一致するかどうかを判断する。
【０１０９】
ステップＳ５５で“ＹＥＳ”であれば、つまり２つのＭＡＣアドレスが一致すれば、ステップＳ５７で、抽出したユニークデータが正当であると判断して、図１２に示した受信側の認証処理にリターンする。一方、ステップＳ５５で“ＮＯ”であれば、つまり２つのＭＡＣアドレスが一致しなければ、ステップＳ５９で、抽出したユニークデータが不当であると判断して、図１２に示した受信側の認証処理にリターンする。
【０１１０】
この実施例によれば、ユニークデータおよび生成用データの正当性を判断し、正当な生成用データを用いて一方向関数のハッシュ関数で算出したハッシュ値をパラメータとして使用したり、そのハッシュ値に基づいて算出したパラメータを使用したりするので、改変されたゲームデータを用いて通信ゲームをプレイするのを防止することができる。このため、ゲームデータの改変自体も防止することができる。
【０１１１】
なお、この実施例では、ユニークデータおよび生成用データの両方の正当性を判断するようにしてあるが、少なくとも生成用データの正当性を判断すれば、改変されたゲームデータを用いて通信ゲームをプレイすることを防止することができる。
【０１１２】
また、この実施例では、装置固有情報としてＭＡＣアドレスを用いるようにしたがこれに限定される必要はない。他の例として、現在時刻（年月日を含む）の情報、ゲーム装置に登録された名称、仮想ゲームのタイトルやソフトウェアのシリアル番号などのゲームプログラムのシグネチャ、サーバへのログインＩＤ（通信ゲームにおけるＩＤ）、タッチペンを用いて入力されたサイン（座標の集合または軌跡）、操作入力の履歴、ゲーム装置に設けられた加速度センサで検出された加速度データの履歴、カメラから得られる情報（たとえば、画像データから得られる明るさの情報）、ゲーム装置でプレイヤによって作成されたキャラクタについての情報（性別、肌の色、髪型、眼・眉毛・鼻および口の形・大きさ・位置、身長、体型などの情報）が用いられてもよい。また、ゲーム装置がＧＰＳ機能を備える場合には、その位置情報を装置固有情報として用いることもできる。
【０１１３】
この場合、通信ゲームにおけるＩＤ、仮想ゲームの識別情報（ゲームタイトル）または現在時刻（年月日を含む）の情報のように、ヘッダ情報に含まれる内容を装置固有情報として使用する場合には、図１３に示した正当性の判断処理と同様の処理が実行される。ただし、仮想ゲームの識別情報を装置固有情報として使用する場合には、ステップＳ５５において、当該仮想ゲームの識別情報が示す仮想ゲームが受信側のゲーム装置のＣＰＵで実行されるものかどうかを判断するようにしてもよい。この場合、受信側のゲーム装置のＣＰＵで実行される仮想ゲームであれば、“ＹＥＳ”と判断され、受信側のゲーム装置のＣＰＵで実行されない仮想ゲームであれば、“ＮＯ”と判断される。
【０１１４】
一方、操作入力の履歴や加速度データの履歴のように、ヘッダ情報に含まれない内容を装置固有情報として使用する場合には、通信可能リストに記憶されているかどうかのみによって、正当性の判断処理が実行される。かかる場合には、ステップＳ５５の処理は削除される。
【０１１５】
また、この実施例では、装置固有情報として、ＭＡＣアドレスのみを用いるようにしてあるが、ＭＡＣアドレスおよび上記の他の例のうちのいずれか２つ以上が用いられてもよい。
【０１１６】
さらに、この実施例では、ゲーム装置間で認証処理を実行する場合についてのみ説明したが、これに限定される必要はない。たとえば、図７（Ｂ）に示したゲームシステムにおいて、サーバが、各ゲーム装置から生成用データおよびハッシュ値データを受信して、図１２に示した受信側の認証処理を実行し、それらの正当性を判断し、正当であると判断された生成用データおよびハッシュ値データを送信してきたゲーム装置同士をマッチングするようにしてもよい。
【０１１７】
また、この実施例では、無線通信により、生成用データおよびハッシュ値データを送受信するようにしたが、これに限定される必要はない。有線により通信してもよい。また、通信によらず、ゲームカードやＳＤカードに、生成用データおよびハッシュ値データをセーブデータとして記憶しておき、そのようなゲームカードやＳＤカードを介して、生成用データおよびハッシュ値データをやり取りしてもよい。かかる場合には、イベント会場などにおいて、そのイベントの主催者等が用意したＰＣなどのコンピュータ（上述の実施例のゲーム装置でもよい）にゲームカードやＳＤカードを装着し、そのゲームカードやＳＤカードから生成用データおよびハッシュ値データを入力する。続いて、そのコンピュータで図１２に示した受信側の認証処理を実行させることにより、ゲームカードやＳＤカードに記憶された生成用データおよびハッシュ値データの正当性を判断するようにしてもよい。そして、正当性の判断結果に応じて、イベントへの参加の可否が決定される。
【０１１８】
さらに、この実施例では、携帯型のゲーム装置についてのみ説明したが、通信機能を備える据置型のゲーム装置を用いることもできる。たとえば、出願人が製造および販売するニンテンドーＷｉｉ（登録商標）にも適用することができる。かかる場合には、装置固有情報（ユニークデータ）として、コントローラで検出される加速度データや角速度データの履歴またはコントローラで指示した位置（座標）の履歴を用いることができる。
【０１１９】
さらにまた、この実施例では、情報処理装置の一例としてゲーム装置のみについて説明したが、通信機能を有したり、ＳＤカードのような媒体を着脱できたりすることにより、生成用データおよびハッシュ値データをやり取りすることができれば、他の情報処理装置（ゲーム機のほか、たとえばＰＣ，ＰＤＡ，携帯電話機，ＴＶ，電子フォトフレーム，音楽／映像プレイヤ，各種情報家電など）を用いることができる。ただし、ゲーム装置以外の他の情報処理装置を用いる場合には、ハッシュ値（パラメータ）を変化させる必要がない場合もある。かかる場合には、乱数のようなランダムに変化する値を用いず、装置固有情報（ユニークデータ）だけで生成用データを生成してもよい。
【０１２０】
また、この実施例に示したゲーム装置の構成に限定される必要はない。たとえば、ＬＣＤは１つでもよいし、タッチパネルは設けなくてもよい。また、タッチパネルを２つのＬＣＤ上に設けるようにしてもよい。
【符号の説明】
【０１２１】
１０  …ゲーム装置
１２  …立体ＬＣＤ
１２ａ  …ＬＣＤコントローラ
１２ｂ  …バリア液晶
１２ｃ  …上ＬＣＤ
１４  …下ＬＣＤ
１６  …タッチパネル
１８ａ−１８ｃ  …カメラ（内側，外側左，外側右）
２０  …３Ｄ調整スイッチ（３Ｄ Ｖｏｌ）
２０Ａ  …３Ｄランプ
３０  …マイク
２４ａ−２４ｋ  …ボタン（キー）
２６  …アナログパッド
４４  …ＳｏＣ
４４ａ  …ＣＰＵ
４４ｂ  …ＧＰＵ
４４ｃ  …ＶＲＡＭ
５０  …メインメモリ
５４  …加速度センサ
Ｓｄ  …スライダ
ＩＣＬ，ＩＣＲ  …仮想カメラ（左，右）
【図１】
0005706173.tif 000002
【図２】
0005706173.tif 000003
【図３】
0005706173.tif 000004
【図４】
0005706173.tif 000005
【図５】
0005706173.tif 000006
【図６】
0005706173.tif 000007
【図７】
0005706173.tif 000008
【図８】
0005706173.tif 000009
【図９】
0005706173.tif 000010
【図１０】
0005706173.tif 000011
【図１１】
0005706173.tif 000012
【図１２】
0005706173.tif 000013
【図１３】
0005706173.tif 000014