(57)【特許請求の範囲】
【請求項１】
パラメータ群が記憶されるパラメータ記憶部と、
当該パラメータ群の各パラメータが記憶される前記パラメータ記憶部内の実アドレスと、当該パラメータにアクセスするために指定する仮想アドレスと、を対応付けるアドレス変換テーブルを記憶するテーブル記憶部と、
指定された仮想アドレスを入力として、前記アドレス変換テーブルを参照して、前記パラメータ記憶部の実アドレスを取得するアドレス取得部と、
指定された仮想アドレスに対する読書き要求を受信すると、前記アドレス取得部を制御して、当該仮想アドレスに対応する実アドレスを取得し、前記パラメータ記憶部の当該取得した実アドレスに対して読書きを行う読書き部と、
前記アドレス変換テーブルを所定のタイミングで更新し、さらに、各仮想アドレスを指定した際に、更新前の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、更新後の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを更新する更新部と、
を備える、ことを特徴とする記憶処理装置であって、
前記記憶処理装置はネットワークを介して情報提供サーバに接続されており、
前記アドレス変換テーブルを前記情報提供サーバから受信するテーブル受信部をさらに備え、
前記更新部は、前記受信したアドレス変換テーブルによって、前記アドレス変換テーブルを更新する、
ことを特徴とする記憶処理装置。
【請求項２】
請求項１に記載の記憶処理装置であって、
前記更新部が、当該アドレス変換テーブルと、当該実アドレスに記憶されるデータとを更新すると、更新される直前に前記テーブル記憶部に記憶されていたアドレス変換テーブルと、自己を識別する記憶処理装置識別情報と、を前記情報提供サーバに返信する返信部、
をさらに備える、ことを特徴とする記憶処理装置。
【請求項３】
請求項２に記載の記憶処理装置であって、
前記返信部は、前記アドレス変換テーブルに代えて、更新される直前に前記テーブル記憶部に記憶されていた当該アドレス変換テーブルに所定のハッシュ関数を適用した結果を、前記情報提供サーバに返信する、
ことを特徴とする記憶処理装置。
【請求項４】
請求項２に記載の記憶処理装置であって、
前記テーブル受信部は、前記情報提供サーバから、アドレス変換テーブルに対応付けられるテーブル識別情報をさらに受信し、
前記返信部は、前記自己を識別する記憶処理装置識別情報に変えて、前記受信したテーブル識別情報を前記情報提供サーバに返信する、
ことを特徴とする記憶処理装置。
【請求項５】
請求項１に記載の記憶処理装置であって、
前記パラメータ記憶部は不揮発性記憶媒体であり、前記テーブル記憶部は揮発性記憶媒体である、
ことを特徴とする記憶処理装置。
【請求項６】
ネットワークを介して記憶処理装置に接続された情報提供サーバであって、
前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶する候補記憶部と、
前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルを送信するテーブル送信部と、
当該アドレス変換テーブルと、当該アドレス変換テーブルの送信先の前記記憶処理装置を識別する記憶処理装置識別情報と、を対応付けて記憶する送信情報記憶部と、
前記記憶処理装置から返信されたアドレス変換テーブルと、送信元の前記記憶処理装置を識別する記憶処理装置識別情報と、を受信する受信部と、
前記送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合はデータの改ざんがあった、と判定する判定部と、
を備える、
ことを特徴とする情報提供サーバ。
【請求項７】
請求項６に記載の情報提供サーバであって、
前記受信部は、前記アドレス変換テーブルに代えて、前記アドレス変換テーブルに所定のハッシュ関数を適用した結果を前記記憶処理装置から受信し、
前記判定部は、前記送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルに所定のハッシュ値関数を適用した結果と、受信したハッシュ値と、を比較し、両者が一致した場合はデータの改ざんがなく、両者が一致しない場合はデータの改ざんがあった、と判定する、
ことを特徴とする情報提供サーバ。
【請求項８】
ネットワークを介して記憶処理装置に接続された情報提供サーバであって、
前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶し、当該アドレス変換テーブルのそれぞれに対して、当該アドレス変換テーブルを識別するテーブル識別情報を記憶する候補記憶部と、
前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルと、対応するテーブル識別情報と、を送信するテーブル送信部と、
前記記憶処理装置から返信されたアドレス変換テーブルと、対応するテーブル識別情報と、を受信する受信部と、
当該テーブル識別情報に対応するアドレス変換テーブルを前記候補記憶部から取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合データの改ざんがあった、と判定する判定部と、
を備える、
ことを特徴とする情報提供サーバ。
【請求項９】
パラメータ記憶部と、テーブル記憶部と、アドレス取得部と、読書き部と、テーブル受信部と、更新部と、を備える、ネットワークを介して情報提供サーバに接続された記憶処理装置の動作方法であって、
前記パラメータ記憶部が、パラメータ群を記憶するパラメータ記憶工程と、
前記テーブル記憶部が、当該パラメータ群の各パラメータが記憶される前記パラメータ記憶部内の実アドレスと、当該パラメータにアクセスするために指定する仮想アドレスと、を対応付けるアドレス変換テーブルを記憶するテーブル記憶工程と、
前記アドレス取得部が、指定された仮想アドレスを入力として、前記アドレス変換テーブルを参照して、前記パラメータ記憶部の実アドレスを取得するアドレス取得工程と、
前記読書き部が、指定された仮想アドレスに対する読書き要求を受信すると、前記アドレス取得部を制御して、前記パラメータ記憶部の、当該仮想アドレスに対応する実アドレスを取得し、前記パラメータ記憶部の当該取得した実アドレスに対して読書きを行う読書き工程と、
前記テーブル受信部が、前記アドレス変換テーブルを前記情報提供サーバから受信するテーブル受信工程と、
前記更新部が、前記受信したアドレス変換テーブルによって、前記アドレス変換テーブルを所定のタイミングで更新し、さらに、各仮想アドレスを指定した際に、更新前の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、更新後の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを更新する更新工程と、
を備える、ことを特徴とする記憶処理装置の動作方法。
【請求項１０】
候補記憶部と、テーブル送信部と、送信情報記憶部と、受信部と、判定部と、を備える、ネットワークを介して記憶処理装置に接続された情報提供サーバの動作方法であって、
前記候補記憶部が、前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶する候補記憶工程と、
前記テーブル送信部が前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルを送信するテーブル送信工程と、
前記送信情報記憶部が、当該アドレス変換テーブルと、当該アドレス変換テーブルの送信先の前記記憶処理装置を識別する記憶処理装置識別情報と、を対応付けて記憶する送信情報記憶工程と、
前記受信部が、前記記憶処理装置から返信されたアドレス変換テーブルと、送信元の前記記憶処理装置を識別する記憶処理装置識別情報と、を受信する受信工程と、
前記判定部が、前記送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合はデータの改ざんがあった、と判定する判定工程と、
を備える、
ことを特徴とする、情報提供サーバの動作方法。
【請求項１１】
候補記憶部と、テーブル送信部と、受信部と、判定部と、を備える、ネットワークを介して記憶処理装置に接続された情報提供サーバの動作方法であって、
前記候補記憶部が、前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶し、当該アドレス変換テーブルのそれぞれに対して、当該アドレス変換テーブルを識別するテーブル識別情報を記憶する候補記憶工程と、
前記テーブル送信部が、前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルと、対応するテーブル識別情報と、を送信するテーブル送信工程と、
前記受信部が、前記記憶処理装置から返信されたアドレス変換テーブルと、対応するテーブル識別情報と、を受信する受信工程と、
前記判定部が、当該テーブル識別情報に対応するアドレス変換テーブルを前記候補記憶部から取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合データの改ざんがあった、と判定する判定工程と、
を備える、
ことを特徴とする、情報提供サーバの動作方法。
【請求項１２】
ネットワークを介して情報提供サーバに接続されたコンピュータを、記憶処理装置として機能させるプログラムであって、
前記プログラムは、前記コンピュータを、
パラメータ群が記憶されるパラメータ記憶部、
当該パラメータ群の各パラメータが記憶される前記パラメータ記憶部内の実アドレスと、当該パラメータにアクセスするために指定する仮想アドレスと、を対応付けるアドレス変換テーブルを記憶するテーブル記憶部、
指定された仮想アドレスを入力として、前記アドレス変換テーブルを参照して、前記パラメータ記憶部の実アドレスを取得するアドレス取得部、
指定された仮想アドレスに対する読書き要求を受信すると、前記アドレス取得部を制御して、当該仮想アドレスに対応する実アドレスを取得し、前記パラメータ記憶部の当該取得した実アドレスに対して読書きを行う読書き部、
前記アドレス変換テーブルを前記情報提供サーバから受信するテーブル受信部、
前記受信したアドレス変換テーブルによって、前記アドレス変換テーブルを所定のタイミングで更新し、さらに、各仮想アドレスを指定した際に、更新前の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、更新後の前記アドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを更新する更新部、
として機能させる、
ことを特徴とするプログラム。
【請求項１３】
ネットワークを介して記憶処理装置に接続されたコンピュータを、情報提供サーバとして機能させるプログラムであって、
前記プログラムは、前記コンピュータを、
前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶する候補記憶部、
前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルを送信するテーブル送信部、
当該アドレス変換テーブルと、当該アドレス変換テーブルの送信先の前記記憶処理装置を識別する記憶処理装置識別情報と、を対応付けて記憶する送信情報記憶部、
前記記憶処理装置から返信されたアドレス変換テーブルと、送信元の前記記憶処理装置を識別する記憶処理装置識別情報と、を受信する受信部、
前記送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合はデータの改ざんがあった、と判定する判定部、
として機能させる、
ことを特徴とするプログラム。
【請求項１４】
ネットワークを介して記憶処理装置に接続されたコンピュータを、情報提供サーバとして機能させるプログラムであって、
前記プログラムは、前記コンピュータを
前記記憶処理装置の実アドレスと、前記実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶し、当該アドレス変換テーブルのそれぞれに対して、当該アドレス変換テーブルを識別するテーブル識別情報を記憶する候補記憶部、
前記記憶処理装置へ所定のタイミングで当該アドレス変換テーブルと、対応するテーブル識別情報と、を送信するテーブル送信部、
前記記憶処理装置から返信されたアドレス変換テーブルと、対応するテーブル識別情報と、を受信する受信部、
当該テーブル識別情報に対応するアドレス変換テーブルを前記候補記憶部から取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合データの改ざんがあった、と判定する判定部、
として機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの不正な書き換えを抑制する記憶処理装置、情報提供サーバ、動作方法、ならびにコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、ゲーム装置においては、各種数値パラメータを用いてゲームの状態が表現されている。このような数値パラメータには、プレイヤーが操作するキャラクターの体力やレベル等の各種の能力値、クリアした面の数や過去のスコア履歴など、種々のものがある。数値パラメータは、典型的には、メモリカードやハードディスクなど、ユーザのゲーム装置がローカルに保有する不揮発性記憶媒体に記録される。このように外部メモリに数値パラメータを保存する形態は、ネットワーク対戦型のゲームでも広く採用されている。
【０００３】
一方、数値パラメータを、自己に有利なように改変する不正行為（チート行為）が頻繁に行われている。数値パラメータの不正な書き換えは、特に複数のユーザが対戦するネットワークゲームなどで問題となっている。このような不正行為を検出するための数値記録装置は、例えば、特許文献１に開示されている。
【特許文献１】特開２００６−７２８２５号公報
【０００４】
特許文献１に記載の技術によると、保存すべきｆｌｏａｔ型の数値をｄｏｕｂｌｅ型に昇格変換（アップキャスト）して外部メモリに記憶する。ロードする場合は、外部メモリから読み出したｄｏｕｂｌｅ型数値をｆｌｏａｔ型降格変換（ダウンキャスト）する。そして、同じ指数部を有するｄｏｕｂｌｅ型の数値はｆｌｏａｔ型の数値と比較して、２２９の冗長度を有するという点を利用して、降格変換した結果をさらに昇格変換した値と、外部記憶から読み出した結果を比較し、異なると、不正があった旨の報告を行う。
【０００５】
この方法は、全てのロード時に、不正の有無のチェックが行われるため、不正の検出には有効であるが、計算負荷も多くなる。一方、ゲーム機などのように、計算資源が限られた環境で、計算負荷をかけずに、不正行為を抑制する方法が求められている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、以上のような課題を解決するためのもので、データの不正な書き換えを抑制する記憶処理装置、情報提供サーバ、動作方法、ならびに、コンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の第１の観点に係る記憶処理装置は、パラメータ記憶部と、テーブル記憶部と、アドレス取得部と、読書き部と、更新部と、を備える。
【０００８】
パラメータ記憶部は、パラメータ群を記憶する。パラメータ記憶部としては後述するように例えばメモリカード等の不揮発性記憶媒体を想定しており、ゲームの種々のプレイ状態を記憶する。例えば、プレイヤーが操作する各キャラクタのレベルなどの能力値、保持するお金やアイテム、そしてクリアしたステージなど、様々な情報がパラメータとして記憶される。即ち、どのパラメータがどのアドレスに記憶されるかが一度把握されると、そのアドレスのデータを書き換えることで容易に不正を行うことが可能となる。例えば、不正にキャラクタのレベルを書き換えれば、経験を積むことなく、瞬時に高いレベルを有するキャラクタとすることが可能となる。
【０００９】
テーブル記憶部は、当該パラメータ群の各パラメータが記憶されるパラメータ記憶部内の実アドレスと、当該パラメータにアクセスするために指定する仮想アドレスと、を対応付けるアドレス変換テーブルを記憶する。
【００１０】
即ち、本実施の形態においては、不成行為者が、パラメータがメモリカード上のどの位置に記憶されるのかを簡単に推定できないようにするため、パラメータ記憶部にアクセスするために指定する仮想アドレスと、パラメータがパラメータ記憶部内に記憶される実アドレスとが異なる。そして、仮想アドレスと実アドレスの対応付けはテーブル記憶部に保存されるアドレス変換テーブルに記憶される。
【００１１】
なお、パラメータ記憶部は、１バイト単位で管理され、パラメータ記憶部内のデータにアクセスするための仮想アドレスもバイト単位で指定可能である。そして、テーブル記憶部には、各仮想アドレスに対応付けて、実アドレスが記憶される。
【００１２】
アドレス取得部は、指定された仮想アドレスを入力として、アドレス変換テーブルを参照して、パラメータ記憶部の実アドレスを取得する。即ち、アドレス取得部はアドレス変換テーブルが異なると、同じ仮想アドレスに対して、異なる実アドレスを取得する。
【００１３】
読書き部は、指定された仮想アドレスに対する読書き要求を受信すると、アドレス取得部を制御して、当該仮想アドレスに対応する実アドレスを取得し、パラメータ記憶部の当該取得した実アドレスに対して読書きを行う。
【００１４】
即ち、読書き部は、不揮発性記憶媒体であるパラメータ記憶部に対してゲーム状態をセーブしたり、ロードする処理において、パラメータ記憶部に実際に読書きする部分を担う。これらセーブやロード処理においては、仮想アドレスを指定したアクセス要求が読書き部に対して発行される。読書き部は指定された仮想アドレスに対応付けられた実アドレスに対し、実際の読書きを行う。
【００１５】
更新部はアドレス変換テーブルを所定のタイミングで更新し、さらに、各仮想アドレスを指定した際に、更新前のアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、更新後のアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを更新する。
【００１６】
即ち、更新部によってアドレス変換テーブルが更新されると、同じ仮想アドレスに対してアクセスを行っても、読書き部が実際にアクセスする実アドレスが異なる。所定のタイミングで、パラメータが保存されるパラメータ記憶部内の実アドレスを変化させれば、容易にどの実アドレスにどのパラメータが記憶されているかを推定し難くなり、不正にデータを書き換えることも困難となる。ただし、データの整合性を維持するために、同じ仮想アドレスに対してアクセスした場合、アドレス変換テーブルを更新する前と、後で、同じ内容のデータが得られるように、更新部がパラメータ記憶部のデータを入れ替える。
【００１７】
このように、本発明に係る記憶処理装置は、データアクセス時にアドレス変換処理を行うことで、パラメータ記憶部に記憶される各データの位置を容易に不正行為者に把握されないようにすることが可能である。また、アドレス変換テーブルを所定のタイミングで更新することによって、容易に不正行為者に把握されないように、さらに、工夫している。
【００１８】
更新部は、所定のタイミングで、実アドレスと仮想アドレスとの対応付けをランダムに入れ替えて、アドレス変換テーブルを更新するようにしてもよい。即ち、更新部はアドレス変換テーブルを自前で生成するようにしてもよい。
【００１９】
記憶処理装置はネットワークを介して情報提供サーバに接続されており、受信部はアドレス変換テーブルを情報提供サーバから受信するテーブル受信部をさらに備えるようにしてもよい。即ち、本記憶処理装置がネットワーク接続可能なゲーム機などに接続されている場合を想定して、アドレス変換テーブルをネットワークを介して接続された情報提供サーバから受信してもよい。
【００２０】
更新部は、受信したアドレス変換テーブルによって、アドレス変換テーブルを更新するようにしてもよい。即ち、更新部は、情報提供サーバから送信されたアドレス変換テーブルをテーブル記憶部に保存して、新たなアドレス変換テーブルとする。
【００２１】
記憶処理装置は、返信部をさらに備えるようにしてもよい。そして、更新部が、当該アドレス変換テーブルと、当該実アドレスに記憶されるデータとを更新すると、返信部は、更新される直前にテーブル記憶部に記憶されていたアドレス変換テーブルと、自己を識別する記憶処理装置識別情報と、を情報提供サーバに返信するようにしてもよい。
【００２２】
ここで、情報提供サーバ側は、新しいアドレス変換テーブルを記憶処理装置に送ると、記憶処理装置側でアドレス変換テーブルが不正に書き換えられていないかどうかを判定するために、記憶処理装置から古いアドレス変換テーブルを送信してもらう。そして、情報提供サーバは、送信されたテーブルと、当該情報提供サーバが記憶処理装置へ送信したアドレス変換テーブルと、を比較して、両テーブルが異なれば不正な書き込みが行われたと判断する。
【００２３】
このとき、情報提供サーバは自分がどの記憶処理装置にどのアドレス変換テーブルを送信したかを記憶しておかなければ、記憶処理装置から送られてきたアドレス変換テーブルと比較できない。よって、情報提供サーバは、アドレス変換テーブルと、当該アドレス変換テーブルを送信した先の記憶処理装置の識別情報と、を対応付けて記憶する。そして、情報提供サーバが、記憶された記憶処理装置の識別情報から、記憶処理装置に送信した変換テーブルを参照できるように、記憶処理装置の返信部はアドレス変換テーブルと、自己を識別する記憶処理装置識別情報とを情報提供サーバへ送信する。
【００２４】
返信部は、アドレス変換テーブルに代えて、更新される直前にテーブル記憶部に記憶されていた当該アドレス変換テーブルに所定のハッシュ関数を適用した結果を、情報提供サーバに返信するようにしてもよい。即ち、新しいアドレス変換テーブルが情報提供サーバから送られてくると、返信部は、古いアドレス変換テーブル自体ではなく、古いアドレス変換テーブルに所定のハッシュ関数を適用した結果を送信する。そして、当該古いアドレス変換テーブルが不正に書き換えられていないかどうかを情報提供サーバ側でハッシュ値を比較して判定してもらう。
【００２５】
テーブル受信部は、情報提供サーバから、アドレス変換テーブルに対応付けられるテーブル識別情報をさらに受信し、返信部は、自己を識別する記憶処理装置識別情報に変えて、受信したテーブル識別情報を情報提供サーバに返信するようにしてもよい。即ち、上述したように、情報提供サーバ側で、どのアドレス変換テーブルをどの記憶処理装置に送信したかを管理するのではなく、記憶処理装置側で、どのアドレス変換テーブルが情報提供サーバから送信されたかを、管理してもよい。
【００２６】
一方、情報提供サーバ側は、保有する複数のアドレス変換テーブルに対して、当該テーブルを識別するテーブル識別情報を記憶すればよい。記憶処理装置の返信部がアドレス変換テーブルとテーブル識別情報とを情報提供サーバに送信すれば、情報提供サーバ側は、テーブル識別情報に基づいて、どの変換テーブルを当該記憶処理装置に送信したかが把握できる。これにより、情報提供サーバ側で、当該記憶処理装置に送信したアドレス変換テーブルと、当該記憶処理装置から送信されたアドレス変換テーブルとの比較が可能となり、アドレス変換テーブルに対する不正な書き換みの有無を判定することができる。
【００２７】
なお、記憶処理装置において、パラメータ記憶部は不揮発性記憶媒体であり、テーブル記憶部は揮発性記憶媒体である。即ち、前述したように、パラメータ記憶部は、ゲームでよく利用される、メモリカードなどを想定している。
【００２８】
一方、情報提供サーバがアドレス変換テーブルを提供する場合、記憶処理装置は必要に応じて情報提供サーバにアドレス変換テーブルを再送信してもらえば事足りるため、テーブル記憶部には、揮発性記憶媒体が採用される。
【００２９】
ただし、記憶処理装置が自前でアドレス変換テーブルを作成する場合は、電源を投入した際に、電源を切る前のアドレス変換テーブルを回復する必要がある。よって、実行時は、テーブル記憶部として、ＲＡＭなどの不揮発性記憶媒体が利用され、電源を切る際には、メモリカードなどの不揮発性記憶媒体が採用される。
【００３０】
本発明の他の観点に係る情報提供サーバは、ネットワークを介して記憶処理装置に接続された情報提供サーバであって、候補記憶部と、テーブル送信部と、送信情報記憶部と、受信部と、判定部と、を備える。
【００３１】
ここで、候補記憶部は、記憶処理装置の実アドレスと、実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶する。即ち、情報提供サーバは、前述のアドレス変換テーブルを記憶処理装置に提供するために、候補記憶部に複数のアドレス変換テーブルを記憶する。
【００３２】
テーブル送信部は、記憶処理装置へ所定のタイミングで当該アドレス変換テーブルを送信する。上述したように、テーブル送信部は、候補記憶部の中からアドレス変換テーブル１つを選択し、記憶処理装置へ送信する。記憶処理装置側は、送信されたアドレス変換テーブルを新たなアドレス変換テーブルとする。
【００３３】
送信情報記憶部は、当該アドレス変換テーブルと、当該アドレス変換テーブルの送信先の記憶処理装置を識別する記憶処理装置識別情報と、を対応付けて記憶する。
【００３４】
記憶処理装置について説明した際にも触れたが、情報提供サーバは、記憶処理装置側でアドレス変換テーブルが不正に書き換えられていないかどうかを判定するために、記憶処理装置からアドレス変換テーブルを送信してもらう。情報提供サーバは、送信されたテーブルと、当該情報提供サーバが記憶処理装置へ送信したアドレス変換テーブルと、を比較して、両テーブルが異なれば不正な書き込みが行われたと判断する。よって、自分がどの記憶処理装置にどのアドレス変換テーブルを送信したかを記憶しておくために、情報提供サーバは、送信情報記憶部にアドレス変換テーブルと、当該アドレス変換テーブルを送信した先の記憶処理装置の識別情報と、を対応付けて記憶する。
【００３５】
受信部は、記憶処理装置から返信されたアドレス変換テーブルと、送信元の記憶処理装置を識別する記憶処理装置識別情報と、を受信する。そして、判定部は、送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合はデータの改ざんがあった、と判定する。
【００３６】
即ち、本来のアドレス変換テーブルを、自作したテーブルで置き換えることによってデータの書き換えを行うような不正行為を、アドレス変換テーブルの書き換えを判定することで発見することが可能となる。
【００３７】
受信部は、アドレス変換テーブルに代えて、アドレス変換テーブルに所定のハッシュ関数を適用した結果を記憶処理装置から受信するようにしてもよい。即ち、受信部は、記憶処理装置から、アドレス変換テーブルにハッシュ関数を適用した値と、当該記憶処理装置の識別情報を受信するようにしてもよい。
【００３８】
そして、判定部は、送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルに所定のハッシュ値関数を適用した結果と、受信したハッシュ値と、を比較し、両者が一致した場合はデータの改ざんがなく、両者が一致しない場合はデータの改ざんがあった、と判定するようにしてもよい。
【００３９】
即ち、アドレス変換テーブル自体を比較せずに、記憶処理装置から受信されたハッシュ値と、当該記憶処理装置に送信したアドレス変換テーブルにハッシュ関数を適用した結果とを比較することによって、アドレス変換テーブルに対する不正の有無を判断するようにしてもよい。なお、テーブル自体ではなく、ハッシュ値を送信することで、ネットワークのトラフィックを減らすことが可能となる。
【００４０】
このように、アドレス変換テーブルを情報提供サーバ側が提供することで、記憶処理装置側で不正にアドレス変換テーブルへの書き込みがあった場合でも、情報提供サーバ側で不正を発見することが可能となる。
【００４１】
本発明の他の観点に係る情報提供サーバは、ネットワークを介して記憶処理装置に接続された情報提供サーバであって、上記情報提供サーバ同様に、候補記憶部と、テーブル送信部と、受信部と、判定部と、を備える。
【００４２】
候補記憶部は、記憶処理装置の実アドレスと、実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶し、当該アドレス変換テーブルのそれぞれに対して、当該アドレス変換テーブルを識別するテーブル識別情報を記憶する。テーブル送信部は、記憶処理装置へ所定のタイミングで当該アドレス変換テーブルと、対応するテーブル識別情報と、を送信する。
【００４３】
また、受信部は、記憶処理装置から返信されたアドレス変換テーブルと、対応するテーブル識別情報と、を受信する。そして、判定部は、当該テーブル識別情報に対応するアドレス変換テーブルを候補記憶部から取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両者が一致しない場合データの改ざんがあった、と判定する。
【００４４】
即ち、上記情報提供サーバと異なる点は、送信情報記憶部を有しない点である。本情報提供サーバは、どの記憶処理装置にどのアドレス変換テーブルを送信したかを記憶しない代わりに、アドレス変換テーブルのそれぞれを識別するテーブル識別情報を備える。テーブル送信部は、このテーブル識別情報を、アドレス変換テーブルと共に、記憶処理装置に送信する。
【００４５】
一方、記憶処理装置側は、アドレス変換テーブルに不正な書き換えがなかったかどうかを情報提供サーバ側で判定してもらうために、アドレス変換テーブルを識別する識別情報を、アドレス変換テーブルと共に送信する。情報提供サーバ側では受信部がこの情報を受信すると、判定部が、テーブル識別情報に基づいて比較対象の正しいアドレス変換テーブルを取得し、不正な書き込みの有無を判定する。
【００４６】
本発明の他の観点に係る動作方法は、パラメータ記憶部と、テーブル記憶部と、アドレス取得部と、読書き部と、更新部と、を備える記憶処理装置の動作方法であって、以下の工程を備える。
【００４７】
パラメータ記憶工程では、パラメータ記憶部が、パラメータ群を記憶する。
テーブル記憶工程では、テーブル記憶部が、当該パラメータ群の各パラメータが記憶されるパラメータ記憶部内の実アドレスと、当該パラメータにアクセスするために指定する仮想アドレスと、を対応付けるアドレス変換テーブルを記憶する。
アドレス取得工程では、アドレス取得部が、指定された仮想アドレスを入力として、アドレス変換テーブルを参照して、パラメータ記憶部の実アドレスを取得する。
【００４８】
読書き工程では、読書き部が、指定された仮想アドレスに対する読書き要求を受信すると、アドレス取得部を制御して、パラメータ記憶部の、当該仮想アドレスに対応する実アドレスを取得し、パラメータ記憶部の当該取得した実アドレスに対して読書きを行う。
更新工程では、更新部が、アドレス変換テーブルを所定のタイミングで更新し、さらに、各仮想アドレスを指定した際に、更新前のアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、更新後のアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを更新する。
【００４９】
本発明の他の観点に係る動作方法は、候補記憶部と、テーブル送信部と、送信情報記憶部と、受信部と、判定部と、を備える、ネットワークを介して記憶処理装置に接続された情報提供サーバの動作方法であって、以下の工程を備える。
【００５０】
候補記憶工程では、候補記憶部が、記憶処理装置の実アドレスと、実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶する。
テーブル送信工程では、テーブル送信部が記憶処理装置へ所定のタイミングで当該アドレス変換テーブルを送信する。
送信情報記憶工程では、送信情報記憶部が、当該アドレス変換テーブルと、当該アドレス変換テーブルの送信先の記憶処理装置を識別する記憶処理装置識別情報と、を対応付けて記憶する。
【００５１】
受信工程では、受信部が、記憶処理装置から返信されたアドレス変換テーブルと、送信元の記憶処理装置を識別する記憶処理装置識別情報と、を受信する。
判定工程では、判定部が、送信情報記憶部を参照して、受信した当該記憶処理装置識別情報に対応づけられたアドレス変換テーブルを取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両テーブルが一致しない場合はデータの改ざんがあった、と判定する。
【００５２】
本願発明の他の観点に係る動作方法は、候補記憶部と、テーブル送信部と、受信部と、判定部と、を備える、ネットワークを介して記憶処理装置に接続された情報提供サーバの動作方法であって、
候補記憶部が、記憶処理装置の実アドレスと、実アドレスのそれぞれにアクセスするために指定する仮想アドレスとを対応付けるアドレス変換テーブルを複数記憶し、当該アドレス変換テーブルのそれぞれに対して、当該アドレス変換テーブルを識別するテーブル識別情報を記憶する候補記憶工程と、
テーブル送信部が、記憶処理装置へ所定のタイミングで当該アドレス変換テーブルと、対応するテーブル識別情報と、を送信するテーブル送信工程と、
受信部が、記憶処理装置から返信されたアドレス変換テーブルと、対応するテーブル識別情報と、を受信する受信工程と、
判定部が、当該テーブル識別情報に対応するアドレス変換テーブルを候補記憶部から取得し、当該アドレス変換テーブルと、受信したアドレス変換テーブルと、を比較し、両テーブルが一致した場合はデータの改ざんがなく、両者が一致しない場合データの改ざんがあった、と判定する判定工程と、
を備える、
ことを特徴とする。
【００５３】
本発明の他の観点に係るプログラムは、コンピュータを、上記の記憶処理装置、および、上記の情報提供サーバとして機能させるように構成する。
【００５４】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記録媒体に記録することができる。上記プログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記録媒体は、当該コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５５】
本発明によると、データの不正な書き換えを抑制する記憶処理装置、情報提供サーバ、動作方法、およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５６】
以下に本発明の実施の形態を説明する。以下では、理解を容易にするため、ゲーム装置に本発明が適用される実施の形態を説明するが、各種のコンピュータ、ＰＤＡ、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施の形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと等しいものに置換した実施形態を採用することが可能であるが、これらの実施の形態も本発明の範囲に含まれる。
【００５７】
（実施形態）
図１は、本発明の実施形態の１つに係る記憶処理装置が実現される典型的なゲーム装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００５８】
ゲーム装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory) １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４ と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７ と、ＤＶＤ（Digital Versatile Disk）−ＲＯＭドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、を備える。
【００５９】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、ゲーム装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の記憶処理装置が実現される。
【００６０】
ＣＰＵ １０１は、ゲーム装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
【００６１】
ＲＯＭ １０２は、電源投入直後に実行されるＩＰＬ（Initial Program Loader）を記憶する。このＩＰＬをＣＰＵ １０１が実行することにより、ＤＶＤ−ＲＯＭに記録されたプログラムがＲＡＭ １０３に読み出され、ＣＰＵ １０１による実行が開始される。
また、ＲＯＭ １０２にはゲーム装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００６２】
ＲＡＭ １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータ等が保持される。
【００６３】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００６４】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、例えばチャット通信のログのデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記憶することができる。
【００６５】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、前述のようにゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出す。読み出されたデータはＲＡＭ１０３等に一時的に記憶される。
【００６６】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００６７】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００６８】
また、３次元仮想空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から３次元仮想空間に配置されたポリゴンを俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００６９】
さらに、ＣＰＵ １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ＲＯＭ １０２に記録されているが、ＤＶＤ−ＲＯＭに記録された専用のフォント情報を利用することも可能である。
【００７０】
ＮＩＣ １０９は、ゲーム装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものである。ＮＩＣ １０９は、例えばＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格に準拠するものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ １０１との仲立ちを行うインターフェイス（図示せず）により構成される。
【００７１】
インターネット内のＳＮＴＰサーバにＮＩＣ １０９を介して接続し、ここから情報を取得することによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、ＳＮＴＰサーバと同様の機能を果たすように構成設定してもよい。
【００７２】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００７３】
このほか、ゲーム装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ １０２、ＲＡＭ １０３、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００７４】
なお、本実施の形態に係る記憶処理装置は、ゲーム装置１００や、携帯式のゲーム装置上に実現されるが、一般的なコンピュータ上に実現することもできる。一方、本実施の形態に係る情報提供サーバ３００は、通常一般的なコンピュータ上に実現されるが、ゲーム装置１００を情報提供サーバ３００として利用してもよい。一般的なコンピュータは、上記ゲーム装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭ ドライブ、および、ＮＩＣを備え、ゲーム装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラではなく、キーボードやマウスなどを入力装置として利用する。そして、プログラムをインストールした後に、そのプログラムを実行させると、記憶処理装置や情報提供サーバとして機能させることができる。
【００７５】
以下では、注記しない限り、記憶処理装置２００、および情報提供サーバ３００について、図１に示したゲーム装置１００により説明を加える。記憶処理装置２００、および情報提供サーバ３００は、必要に応じて適宜一般的なコンピュータの要素に置換することができ、これらの実施の形態も本発明の範囲に含まれる。
【００７６】
図２は、本実施の形態に係る記憶処理装置２００と情報提供サーバ３００の概要構成を示す模式図である。なお、図２では、理解を容易にするため、記憶処理装置２００と情報提供サーバ３００を１つずつ示しているが、典型的には、図３に示すように、情報提供サーバ３００に対して、1つ以上の記憶処理装置２００が通信ネットワーク１０を介して接続された構成を有する。以下本図を参照してまず、記憶処理装置２００から説明する。
【００７７】
記憶処理装置２００は、データの不正な書き換えを抑制する装置であり、典型的には、ゲーム端末等に適用される。記憶処理装置２００は、図２に示すように、パラメータ記憶部２０１、テーブル記憶部２０２、アドレス取得部２０３、読書き部２０４、そして更新部２０５、テーブル受信部２０６、返信部２０７等を備える。
以下に記憶処理装置２００の各構成要素について説明する。
【００７８】
パラメータ記憶部２０１は、上述したように、ゲームの状態を表現する種々のパラメータを記憶する。パラメータ記憶部２０１は典型的には、メモリカードなどの外部メモリ１０６、即ち、不揮発性記憶装置から構成される。パラメータ記憶部２０１に記憶されるパラメータ群は、適宜後述の読書き部２０４等によってアクセスされる。
【００７９】
テーブル記憶部２０２は、パラメータ記憶部２０１に保存されている各種パラメータデータにアクセスするための仮想アドレスと、パラメータ記憶部２０１内の実際にパラメータデータが保存されている実アドレスと、を対応付けるアドレス変換テーブルを記憶する。典型的にはＲＡＭ １０３などの揮発性記憶装置がテーブル記憶部２０２として機能する。
【００８０】
アドレス取得部２０３は、仮想アドレスを入力として、テーブル記憶部２０２に記憶されたアドレス変換テーブルを参照して、当該アドレスに対応する実アドレスを取得する。ＣＰＵ １０１、ＲＡＭ １０３、などが協働して動作することにより、アドレス取得部２０３として機能する。
【００８１】
読書き部２０４は、上述したように、パラメータ記憶部２０１に対してゲーム状態をセーブしたり、ロードする処理において、パラメータ記憶部２０１に実際にアクセスする部分を担う。セーブやロード処理の実行は、典型的には、プレイヤーがインターフェイス１０４を介して接続された入力装置を操作して指示する。そして、当該指示に応答して、ゲームプログラム中のセーブ／ロードプログラムがＲＡＭ １０３に展開され、ＣＰＵ１０１は、展開されたプログラムにしたがって、セーブ／ロード処理を実行する。これらセーブ／ロード処理においては、仮想アドレスを指定したアクセス要求が読書き部２０４に対して発行される。読書き部２０４は指定された仮想アドレスに対応付けられた実アドレスを、アドレス変換テーブルを参照して取得し、当該実アドレスに対し、実際の読書きを行う。このように、ＣＰＵ １０１、ＲＡＭ １０３、などが協働して動作することにより、読書き部２０４として機能する。
【００８２】
テーブル受信部２０６は、情報提供サーバ３００からアドレス変換テーブル等を受信する。ＮＩＣ１０９などが、テーブル受信部２０６として機能する。
【００８３】
更新部２０５は、テーブル受信部２０６が受信した新たなアドレス変換テーブルで、テーブル記憶部２０２内に記憶されたアドレス変換テーブルを上書きして更新する。また、アドレス変換テーブルが変わっても、データの整合性を保つために、即ち、同じ仮想アドレスを指定したときに、同じデータにアクセスできるように、更新部２０５はパラメータ記憶部２０１のデータを入れ替える。整合性維持の詳細については動作説明部分にて後述する。このように、ＣＰＵ １０１、ＲＡＭ １０３、などが協働して、更新部２０５として機能する。
【００８４】
返信部２０７は、新たに情報提供サーバ３００からアドレス変換テーブルを受信すると、次の処理を行う。即ち、アドレス変換テーブルに対して不正な書き込みがあったかどうかを情報提供サーバ３００に判定してもらうために、情報提供サーバ３００にアドレス変換テーブルや自分を識別するための識別情報を送信する。このように、ＣＰＵ １０１、ＲＡＭ １０３、ＮＩＣ１０９などが協働して、返信部２０７として機能する。
【００８５】
次に、情報提供サーバ３００について、同じく図２を参照して説明する。なお、ここでは、情報提供サーバ３００は、記憶処理装置２００とは別のゲーム装置１００によって情報提供サーバ３００を実現するものとして説明する。
【００８６】
候補記憶部３０１は、記憶処理装置２００に送信するために複数のアドレス変換テーブルを記憶する。アドレス変換テーブルは、例えば、予め作成してハードディスクなどの外部メモリ１０６に記憶しておき、起動時に、ＲＡＭ １０３などに読み込まれて利用するようにしてもよい。このように、ＣＰＵ １０１、ＲＡＭ １０３、外部メモリ１０６などが協働して候補記憶部３０１として機能する。
【００８７】
テーブル送信部３０２は、所定のタイミングで、例えば、所定の時間間隔で、あるいは、所定の時刻で、記憶処理装置２００に候補記憶部３０１に記憶される複数のアドレス変換テーブルの中から１つを送信する。複数の中からどのアドレス変換テーブルを送信するかは、例えばランダムに選択すればよい。このように、ＣＰＵ １０１、ＲＡＭ １０３、ＮＩＣ １０９などが協働して、テーブル送信部３０２として機能する。
【００８８】
送信情報記憶部３０３は、図９に示すように、テーブル送信部３０２の送信したアドレス変換テーブルと、その送信先の記憶処理装置２００を対応付けて記憶する。例えば、候補記憶部３０１は、アドレス変換テーブルに対応付けて当該テーブルを識別するテーブル識別番号を記憶させてもよい。そして、送信情報記憶部３０３は、当該テーブル識別情報と、送信した先の記憶処理装置２００を識別する識別情報とを対応付けて記憶する。送信情報記憶部３０３の内容は、ハードディスクなどの外部メモリ１０６に記憶され、適宜ＲＡＭ １０３を介してアクセスされる。このように、ＣＰＵ １０１、ＲＡＭ １０３、外部メモリ１０６が協働して、送信情報記憶部３０３として機能する。
【００８９】
受信部３０４は、記憶処理装置２００から、アドレス変換テーブルと、当該記憶処理装置２００を識別する識別情報を受信する。このように、ＮＩＣ１０９が、主に受信部３０４として機能する。
【００９０】
判定部３０５は、受信部３０４から受信したアドレス変換テーブルに不正な書き込みがなかったどうかを、候補記憶部３０１に記憶されたアドレス変換テーブルと比較することで判定する。動作の詳細は後述するが、判定部３０５は、候補記憶部３０１を参照するため、ＣＰＵ １０１、ＲＡＭ １０３、などが協働して候補記憶部３０５として機能する。
【００９１】
以上のような構成を有する記憶処理装置２００、および情報提供サーバ３００の動作をについて以下に説明する。
【００９２】
（アドレス変換テーブルの更新）
図４は、記憶処理装置２００が、情報提供サーバ３００の送信したアドレス変換テーブルを、自分のアドレス変換テーブルとして更新するフローを示す図である。
【００９３】
まず、情報提供サーバ３００のテーブル送信部３０２は所定のタイミング（例えば、所定の時間間隔、所定の時刻、あるいは、記憶処理装置２００がネットワークに接続され、情報提供サーバ３００に信号を送信したタイミングでもよい）で、候補記憶部３０１の中から、例えばランダムに１つアドレス変換テーブルを選択する（ステップＳ１０１）。そして、当該テーブルを記憶処理装置２００に送信する（ステップＳ１０２）。
【００９４】
ここで、記憶処理装置２００の識別情報（例えばシリアル番号）は予めプレイヤーによって情報提供サーバ３００に登録されているものとする。あるいは、記憶処理装置２００には、情報提供サーバ３００のネットワークアドレスをＲＯＭ １０２などに記憶させておき、初めて通信ネットワーク１０に接続した際に、必ず自己の記憶処理装置識別情報を情報提供サーバ３００に送信するようにしてもよい。そして受信した情報提供サーバ３００は、これをハードディスクなどの外部メモリ１０６に記憶させてもよい。情報提供サーバのテーブル送信部３０２は、各登録されている記憶処理装置２００のそれぞれに対して、所定のタイミングでアドレス変換テーブルを送信する。
【００９５】
送信情報記憶部３０３はステップＳ１０１で選択されたアドレス変換テーブルを識別するテーブル識別情報と、当該アドレス変換テーブルの送信先の記憶処理装置の識別情報とを、対応付けて記憶する（ステップＳ１０３）。なお、ステップＳ１０３はステップＳ１０２と並行して行っても、Ｓ１０２の前に行ってもかまわない。
【００９６】
次いで、記憶処理装置２００のテーブル受信部２０６が、アドレス変換テーブルを受信する（ステップＳ１２１）と、更新部２０５は当該受信されたテーブルをＲＡＭ １０３へ一時的に記憶させる（ステップＳ１２２）。そして、同じ仮想アドレスを指定した際に、現在テーブル記憶部２０２に記憶されているアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータと、新しく受信したアドレス変換テーブルを参照して得られる実アドレスに記憶されるデータとが一致するように、実アドレスに記憶されるデータを入れ替える（ステップＳ１２３）。
【００９７】
図５にパラメータ記憶部２０１内のデータを入れ替える様子を示す。古いアドレス変換テーブルをＡ、新たなアドレス変換テーブルをＢ、とする。このとき、例えば仮想アドレス０を指定すると、テーブルＡを参照した場合、実アドレス１が取得され、パラメータ記憶部２０１内の実アドレス１に記憶された０ｘ０１が読み出される（０ｘは１６進を意味する）。一方、同じように仮想アドレス０を指定しても、テーブルＢを参照した場合、実アドレスｎが得られる。したがって、データを入れ替えた後のパラメータ記憶部２０１’のアドレスｎには、データを入れ替える前のパラメータ記憶部２０１のアドレス１に記憶されるデータ、０ｘ０１が記憶されるようにパラメータ記憶部２０１内データを入れ替える必要がある。
【００９８】
同様に、テーブルＡを参照して、仮想アドレス１を参照すると、実アドレスｎが、そしてテーブルＢを参照して、仮想アドレス１を参照すると、実アドレス０がそれぞれ取得される。したがって、パラメータ記憶部２０１’の実アドレス０には、パラメータ記憶部２０１の実アドレスｎに記憶されるデータ０ｘ１２が記憶されるようにデータが入れ替えられる。
全てのデータを同じ要領で入れ替えると、図５の下部に示すようなデータ構成を有するパラメータ記憶部２０１’が得られる。なお、データの入替処理を実行中は、パラメータ記憶部２０１に対するデータの読書きは行わない。
【００９９】
実アドレスのデータの入替えが終了すると、更新部２０５はステップＳ１２２でＲＡＭ １０３に一時記憶された新たなテーブルをテーブル記憶部２０２に保存して（ステップＳ１２４）、アドレス変換テーブルの更新処理を終える。
【０１００】
（アドレス変換テーブルに対する不正行為の判定）
記憶処理装置２００は、自己の有するアドレス変換テーブルを情報提供サーバ３００に送信すると、情報提供サーバ３００は、当該テーブルに不正な書き換えがあったかどうか判定する。この不正判定の処理を図６を参照して説明する。
【０１０１】
ステップＳ１２４でテーブル記憶部２０２に新たなアドレス変換テーブルを保存すると、記憶処理装置２００の返信部２０７は、古いアドレス変換テーブルと、自己を識別する記憶処理装置識別情報と、を情報提供サーバ３００へ送信する（ステップＳ２０１）。なお、更新部２０５は新たなアドレス変換テーブルをテーブル記憶部２０２に保存する際に、古いアドレス変換テーブルをＲＡＭ １０３に一時的に記憶させ、更新部２０５はこのＲＡＭ １０３に記憶されたテーブルを送信するものとする。
【０１０２】
次いで、情報提供サーバ３００の受信部３０４は、返信部２０７から送信されたデータを受信する（ステップＳ２２１）と、判定部３０５は、送信情報記憶部３０３を参照して、受信された記憶処理装置識別情報に対応付けられるテーブル識別情報を取得する。そして、取得したテーブル識別情報に対応付けられるアドレス変換テーブルを取得する（ステップＳ２２２）。判定部３０５は当該取得されたアドレス変換テーブルと、ステップＳ２２１）で記憶処理装置から受信したアドレス変換テーブルとを比較する（ステップＳ２２３）。両テーブルが一致すれば（ステップＳ２２４；Ｙｅｓ）、判定部３０５は、記憶処理装置２００におけるアドレス変換テーブルの不正な書き換えはなかったと判定し（ステップＳ２２５）処理を終了する。一方、両者が一致しなかった場合（ステップＳ２２６；Ｎｏ）、不正な書き換えがあったと判定し、例えば、当該記憶処理装置識別情報を有する記憶処理装置へ、警告を出すなどの、対応処置を行う。
【０１０３】
（データの読出し）
上記のように更新されるアドレス変換テーブルを用いて、データの読出しを行う場合の処理について、図７を参照して説明する。
【０１０４】
記憶処理装置２００が電源を投入され、且つメモリカードなどの外部メモリ１０６が差し込まれた状態で、プレイヤーがコントローラ１０５などの操作部を操作して、パラメータ記憶部２０１に記憶されたパラメータ群をロードするように指示したとする。ＣＰＵ １０１は指示に従って、上述したように、ロードプログラムを実行し、ロード処理が開始される。
【０１０５】
記憶処理装置２００のＣＰＵ １０１は、ロードプログラムに従って、まず、テーブル記憶部２０２にアドレス変換テーブルが記憶されているか否かを判断する（ステップＳ３０１）。本実施の形態に係る記憶処理装置２００においては、書き換えを困難にするために、アドレス変換テーブルはＲＡＭ １０３のみに記憶する。よって、電源が落とされると、テーブルの情報は消えてしまう。そのため、読出し処理が、電源を入れてから最初の読み出し処理である場合は、電源を切る前に利用していたアドレス変換テーブルを情報提供サーバ３００から受信する必要がある。
【０１０６】
アドレス変換テーブルがテーブル記憶部２０２に記憶されていないと判断された場合（ステップＳ３０１；Ｎｏ）、記憶処理装置２００の返信部２０７は、自己を識別する記憶処理装置識別情報を情報提供サーバ３００に送信する（ステップＳ３０２）。情報提供サーバ３００の受信部３０４は、記憶処理識別情報を受信する（ステップＳ３２１）。テーブル送信部３０２は、当該受信した記憶処理識別情報に対応付けて記憶されるテーブル識別情報によって特定されるアドレス変換テーブルを、候補記憶部３０１から取得する（ステップＳ３２２）。そして、当該特定されたテーブルを記憶処理装置２００へ送信する（ステップＳ３２３）。記憶処理装置のテーブル受信部２０６は、テーブルを受信（ステップ３０３）して、テーブル記憶部２０２に記憶する（ステップＳ３０４）。
なお、ステップＳ３０１でＹｅｓと判断された場合、処理はステップＳ３０５へと進む。
【０１０７】
次いで、記憶処理装置２００のＣＰＵ １０１はパラメータそれぞれの記憶された仮想アドレス、およびデータ長を指定して、読み出し要求を読書き部２０４に送信する（ステップＳ３０５）。読書き部２０４は、アドレス取得部２０３を制御して、当該仮想アドレスに対応する実アドレスを取得する（ステップＳ３０６）。読書き部２０４は、取得された実アドレスに記憶されるデータを読み出す（ステップＳ３０７）。全てのパラメータの読出しが終了するまで、ステップＳ３０５〜Ｓ３０７が繰り返される。
【０１０８】
例えば、アドレス変換テーブルの更新の処理にて説明したように、図５に示したアドレス変換テーブルＡを保有していたときに、仮想アドレス０に記憶されたデータを指定して読み出し要求を発行すると、実アドレス１が取得され、パラメータ記憶部２０１内の実アドレス１に記憶された０ｘ０１が読み出される（０ｘは１６進を意味する）。
【０１０９】
次に、例えば、アドレス変換テーブルＡを参照したときに、仮想アドレス１を指定してshort型（即ち保存に２バイト必要）データを読み出したいとする。この場合、ロードプログラムにおいては、仮想アドレス１から２バイト長データを読み出したいという読出し要求を読書き部２０４に発行する。読み出し要求を受け取ると、読書き部２０４は、アドレス取得部を制御して、仮想アドレス１と、仮想アドレス２に対応する実アドレスｎ、および、実アドレス０を取得する。そして、実アドレスｎおよび０のそれぞれに記憶されているデータ（０ｘ１２および０ｘ００）を取得し、正しいバイトオーダに並べて２バイト長データとして返す。例えば、バイトオーダがビッグエンディアンであれば、０ｘ１２が上位バイト、０ｘ００が下位バイトとなり、０ｘ１２００（即ち十進数で４６０８）が得られる。
【０１１０】
同様にｎバイト必要なデータは開始アドレスからｎ−１までの仮想アドレスにのそれぞれに対応する実アドレスのデータを取得し、正しいバイトオーダに並べて、ｎバイト長のデータとして返す。
【０１１１】
（データの書込み）
記憶処理装置２００が電源を投入され、且つメモリカードなどの外部メモリ１０６が差し込まれた状態で、プレイヤーがコントローラ１０５などの操作部を操作して、ゲームの状態を表現する各種パラメータをパラメータ記憶部２０１にセーブするように指示したとする。ＣＰＵ １０１は指示に従って、セーブプログラムを実行する。
【０１１２】
記憶処理装置２００のＣＰＵ １０１は、セーブプログラムに従って、まず、読み出し処理のステップＳ３０１と同様に、テーブル記憶部２０２にアドレス変換テーブルが記憶されているか否かを判断する（ステップＳ４０１）。そして変換テーブルがテーブル記憶部２０２に記憶されていないと判断された場合、ステップＳ３０２、Ｓ３２１〜Ｓ３２３、Ｓ３０２〜Ｓ３０４と同様の処理である、ステップＳ４０２、Ｓ４２１〜Ｓ４２３、Ｓ４０２〜Ｓ４０３を実行して、アドレス変換テーブルを情報提供サーバ３００から受信する。
【０１１３】
次いで、記憶処理装置２００のＣＰＵ １０１はパラメータそれぞれを記憶する仮想アドレス、データ長、および書き込むべきデータを指定して、書込み要求を読書き部２０４に送信する（ステップＳ４０５）。読書き部２０４は、アドレス取得部２０３を制御して、当該仮想アドレスに対応する実アドレスを取得する（ステップＳ４０６）。読書き部２０４は、読み出し時とは逆の要領で、指定されたバイト数をまたがって実アドレスを取得し、書き込むべきデータをバイト毎に分割して、対応する実アドレスに書き込んでいく（ステップＳ４０７）。全てのパラメータの書込みが終了するまで、ステップＳ４０５〜Ｓ４０７が繰り返される。
【０１１４】
このように、上記実施の形態は、アドレス変換テーブルを採用し、これを所定のタイミングで更新することによって、パラメータがメモリカード上のどの位置に記憶されるのかを推定しにくくする。これにより、不正なパラメータの書き換えを抑制することが可能となる。上記実施の形態では、不揮発性記憶媒体であるパラメータ記憶部に対する読書きを、仮想アドレスを指定して行っているが、揮発性記憶媒体に本手法を適用しても同様の抑制効果が得られる。
【０１１５】
以上、本発明の実施の形態について説明したが、本発明は、上述した実施形態に限定されず、種々の変形および応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１１６】
例えば、上記実施の形態においては、アドレス変換テーブルを１つのみ使用したが、ゲーム毎、あるいは各ゲームで作成される保存ファイル毎にアドレス変換テーブルを用意してもよい。
【０１１７】
また、上記実施の形態においては、１つの情報提供サーバに対して、複数の記憶処理装置が接続されている例を示したが、複数の情報提供サーバを用意して、それぞれの情報提供サーバに複数の記憶処理装置を接続するようにしてもよい。この場合、各記憶処理装置のそれぞれはどの情報提供サーバからアドレス変換テーブルを受信するかは一意に決定され、アドレス変換テーブルに対する不正の有無の判定も、当該記憶処理装置に割り当てられた情報提供サーバが行うようにすればよい。
【０１１８】
また、上記実施の形態では、情報提供サーバ側で、送信情報記憶部を備えることで、どの記憶処理装置にどのアドレス変換テーブルを送信したかを管理して、アドレス変換テーブルに対する不正行為の判定を行った。しかし、そうではなく、記憶処理装置側で、どのアドレス変換テーブルを利用したかを記憶させてもよい。
【０１１９】
即ち、情報提供サーバ側は、送信情報記憶部を備えない。代わりに、テーブル送信部はアドレス変換テーブルとともに、当該アドレス変換テーブルを識別するテーブル識別情報を記憶処理装置に送信する。なお、テーブル識別情報は、候補記憶部等に記憶されているものとする。
【０１２０】
一方、記憶処理装置側では、受信したテーブル識別情報をＲＡＭ １０３などに一時記憶する。また、電源を落とす場合は、ＲＡＭ １０３ から、カードメモリなどの不揮発性記憶媒体にテーブル識別情報を移行する。返信部は、アドレス変換テーブルと共に、記憶したテーブル識別情報を、情報提供サーバへ送信する。そして、情報提供サーバ側は、例えば、受信したテーブル識別情報に対応付けられるアドレス変換テーブルを候補記憶部から取得し、取得されたアドレス変換テーブルを記憶処理装置から受信したものとを比較すればよい。
【０１２１】
また、上記実施の形態では、記憶処理装置は、不正書込みの判定のため、アドレス変換テーブル自体を情報提供サーバに送信した。そうではなく、テーブル送信部は、アドレス変換テーブルに所定のハッシュ関数を適用した結果（ハッシュ値）を情報提供サーバに送信してもよい。ハッシュ値を送信することで、アドレス変換テーブル自体を送信するよりも通信コストを軽減することができる。情報提供サーバ側は、例えば、図６のステップＳ２２１〜２２３に代えて、ハッシュ値と記憶処理装置識別情報を受信し、取得したアドレス変換テーブルのハッシュ値を求め、両ハッシュ値を比較すればよい。なお、ハッシュ関数は例えばＭＤ５など、既存のものを利用すればよい。
【０１２２】
また、上記実施の形態では、情報提供サーバが記憶処理装置に対してアドレス変換テーブルを提供した。そうではなく、記憶処理装置自体がアドレス変換テーブルを生成するようにしてもよい。例えば、図１０に示すように、記憶処理装置２００’を、テーブル受信部や返信部を備えない構成にする。そして、更新部２０５’が、所定のタイミング（例えば、定時、あるいは所定の時間間隔）でアドレス変換テーブルをランダムに入れ替えて更新する。後は、図４に示すステップＳ１２２〜Ｓ１２４と同様の処理を行い、テーブル更新処理を実行する。
【０１２３】
ただし、このように、記憶処理装置が自前でアドレス変換テーブルを生成する場合は、電源を投入した際に、電源を切る前のアドレス変換テーブルの内容を回復する必要がある。よって、実行時は、テーブル記憶部として、ＲＡＭなどの不揮発性記憶媒体を利用し、電源を切る際には、メモリカードなどの不揮発性記憶媒体にテーブル記憶部の内容を移行する必要がある。
【図面の簡単な説明】
【０１２４】
【図１】本発明の実施の形態に係る記憶処理装置等が実現される典型的なゲーム装置の概要構成を示す模式図である。
【図２】本実施の形態に係る記憶処理装置、および、情報提供サーバの概要構成を示すブロック図である。
【図３】本実施の形態で想定している記憶処理装置、および、情報提供サーバの接続例を示す図である。
【図４】本実施の形態に係るアドレス変換テーブルの更新処理を説明するフロー図である。
【図５】アドレス変換テーブルの更新時に、パラメータ記憶部内のデータの入れ替えを行った例を説明するフロー図である。
【図６】本実施の形態に係る不正行為の判定処理を説明するフロー図である。
【図７】本実施の形態に係る読出し処理を説明するフロー図である。
【図８】本実施の形態に係る書込み処理を説明するフロー図である。
【図９】本実施の形態に係る送信情報記憶部の構成例を示した図である。
【図１０】本発明の他の実施の形態に係る記憶処理装置の概要構成示すブロック図である。
【符号の説明】
【０１２５】
１００  ゲーム装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
２００  記憶処理装置
２０１  パラメータ記憶部
２０２  テーブル記憶部
２０３  アドレス取得部
２０４  読書き部
２０５  更新部
２０６  テーブル受信部
２０７  返信部
３００  情報提供サーバ
３０１  候補記憶部
３０２  テーブル送信部
３０３  送信情報記憶部
３０４  テーブル送信部
３０５  判定部
【図１】
0004554660.tif 000002
【図２】
0004554660.tif 000003
【図３】
0004554660.tif 000004
【図４】
0004554660.tif 000005
【図５】
0004554660.tif 000006
【図６】
0004554660.tif 000007
【図７】
0004554660.tif 000008
【図８】
0004554660.tif 000009
【図９】
0004554660.tif 000010
【図１０】
0004554660.tif 000011