以下、各実施形態について図面を参照して説明する。なお、異なる図面において同一の符号を付した要素は、同一または相応する要素を示すものとする。
<1.第1実施形態>
[1−1.構成概要]
図1は、メモリ情報保護システム(単に「メモリシステム」とも称する)1Aの外観構成を示す図である。
図1に示されるように、メモリ情報保護システム1Aは、情報処理装置10Aとメモリ装置20Aとを有している。
メモリ装置20Aは、所定のアプリケーションをコンピュータ上で実施するための種々のデータ(情報)を記憶(格納)している。このメモリ装置20Aは、例えばカードまたはカートリッジのような態様を有し、情報処理装置10Aに脱着自在に構成されている。
情報処理装置10Aは、装着されたメモリ装置20Aからデータを読み出し、当該データに基づいてアプリケーションソフトウェア(プログラム)を取得する。そして、情報処理装置10Aは、当該アプリケーションソフトウェアを実行して、上記所定のアプリケーションを実施する。このような情報処理装置10Aには、例えば、パーソナルコンピュータ(パソコン)、PDA(Personal Digital Assistant)のような情報端末装置が含まれる。また、メモリ装置20Aに記憶されたデータがコンピュータゲーム(単に「ゲーム」とも称する)のゲームプログラムを取得するためのデータである場合は、情報処理装置10Aは、据置型ゲーム機または携帯ゲーム機等のゲーム装置本体として機能する。
ここで、情報処理装置10Aが、ゲームプログラムを実行するゲーム装置本体として機能する場合を一例にして、メモリ情報保護システム1Aの動作概要を説明する。図2は、ゲームシステムとして動作するメモリ情報保護システム1Aの動作概要を示す図である。
メモリ情報保護システム1Aは、ゲームの進行状況に応じてゲームプログラムを順次に取得するとともに、取得したゲームプログラムを実行することによって、アプリケーションとしてのゲームを継続して実施する。
具体的には、図2に示されるように、メモリ情報保護システム1Aは、ゲームの進行状況の第1段階では、Aデータ(後述の主データ)および当該Aデータと対となるaデータ(後述の対データ)を用いて、第1段階で使用するゲームプログラムPAを取得するための取得情報(プログラム取得情報)GAを生成する。そして、メモリ情報保護システム1Aは、生成されたプログラム取得情報GAに基づいてゲームプログラムPAを取得し、取得した当該ゲームプログラムPAを実行して第1段階におけるゲームを実施可能にする。
また、ゲームの進行状況の第2段階では、メモリ情報保護システム1Aは、Eデータおよび当該Eデータと対のeデータを用いて、第2段階で使用するゲームプログラムPEを取得するためのプログラム取得情報GEを生成する。そして、メモリ情報保護システム1Aは、生成されたプログラム取得情報GEに基づいてゲームプログラムPEを取得し、取得した当該ゲームプログラムPEを実行して第2段階におけるゲームを実施可能にする。また同様に、ゲームの進行状況の第3段階では、メモリ情報保護システム1Aは、Bデータおよび当該Bデータと対のbデータを用いて、第3段階で使用するゲームプログラムPBを取得するためのプログラム取得情報GBを生成する。そして、メモリ情報保護システム1Aは、生成されたプログラム取得情報GBに基づいてゲームプログラムPBを取得し、取得した当該ゲームプログラムPBを実行して第3段階におけるゲームを実施可能にする。
このように、ゲームシステムとしてのメモリ情報保護システム1Aは、ゲームの進行に応じて、対となる2つのデータを用いてプログラム取得情報を順次に生成し、プログラム取得情報に基づいてゲームプログラムを順次に取得する。そして、取得したゲームプログラムを順次に実行して、ゲームの継続実施を実現させる。
[1−2.機能ブロック]
次に、メモリ情報保護システム1Aの機能構成について説明する。図3は、第1実施形態に係るメモリ情報保護システム1Aの機能構成を示すブロック図である。図4は、主データに含まれる対データ取得情報の内容を示す図である。
図3に示されるように、メモリ情報保護システム1Aを構成する情報処理装置10Aは、制御部100Aと、情報処理装置10Aをメモリ装置20Aと電気的に接続させるためのインターフェース(I/F)110とを備えている。
制御部100Aは、マイクロコンピュータとして構成され、主にCPU、RAMおよびROM等(いずれも不図示)を備えている。
制御部100Aは、ROMに格納されたプログラムを読み出し、当該プログラムをCPUで実行することによって、各種機能を実現する。
具体的には、制御部100Aは、ROMに格納されたプログラムの実行によって、実行制御部101を機能的に実現する。
実行制御部101は、CPUによるアプリケーションソフトウェアの実行を制御する。また、実行制御部101は、アプリケーションを起動する(立ち上げる)際には、起動用の初期アプリケーションソフトウェアをメモリ装置20A(例えば、メモリ装置20Aの第1記憶部200)から読み出して、当該初期アプリケーションソフトウェアをCPUに実行させ、アプリケーションを開始させる。
また、制御部100Aでは、ROMに格納された上記プログラムの実行によって、或いは実行制御部101の制御に従いアプリケーションソフトウェアをCPUで実行することによって、主データ取得部102、対データ取得部103およびソフトウェア取得部104が機能的に実現されることになる。
主データ取得部(第1データ取得部)102は、アプリケーションソフトウェアを取得するための取得情報(「ソフトウェア取得情報」とも称する)の生成に用いる主データ(「第1データ」または「第1情報」とも称する)をメモリ装置20Aから読み出して、取得する機能を有している。具体的には、主データ取得部102は、主データを出力させるための主データ出力コマンドをメモリ装置20Aに対して発行することによって、メモリ装置20Aから主データを取得する。
対データ取得部(第2データ取得部)103は、メモリ装置20Aから、主データと対となる対データ(「第2データ」または「第2情報」とも称する)を取得する機能を有している。具体的には、対データ取得部103は、メモリ装置20Aから取得された主データに含まれる対データ取得情報に基づいて、対データ取得コマンドを発行することによって、メモリ装置20Aから対データを取得する。対データ取得情報の内容については後述する。
なお、本明細書では、第1データを主データと称し、第2データを対データと称するが、ここでの「主」、「対」は説明の便宜上のものであり、データの内容、データの大きさ等に依って呼称されるものではない。
ソフトウェア取得部104は、メモリ装置20Aから取得した主データおよび当該主データと対の対データを用いて、アプリケーションソフトウェアを取得する機能を有している。具体的には、ソフトウェア取得部104は、アプリケーションソフトウェアを取得するためのソフトウェア取得情報を、主データおよび当該主データと対の対データを用いて生成する。そして、当該ソフトウェア取得情報に基づいてメモリ装置20Aからアプリケーションソフトウェアを取得する。このようにしてソフトウェア取得部104によって取得されたアプリケーションソフトウェアは、実行制御部101の制御に従って、CPUで実行されることになる。
一方、メモリ情報保護システム1Aを構成するメモリ装置20Aは、記憶手段としての第1記憶部200および第2記憶部210と、セキュリティ部220とを備えている。
第1記憶部200は、マスクROMのような不揮発性の記憶部であって、アプリケーションソフトウェアを取得するために用いる主データ201を複数記憶している。図3には、主データとして、A主データ、B主データ、C主データ等が記憶されている態様が示されている。
これら各主データには、対となる対データを取得するための対データ取得情報が含まれている。図4に示されるように、対データ取得情報には、対データの読出方法(図4ではa対データの読出方法)に関する情報(「対データの読出情報」とも称する)が含まれている。対データの読出情報には、対データの格納先を示す読出アドレスが含まれる。また、1つの対データが複数のアドレスに分散して格納されている場合は、複数の読出アドレスに加えて、読出順序を示す読み出し手順に関する情報が、対データ読出情報として含まれていてもよい。
また対データ取得情報には、対データ生成方法に関する情報(「対データの生成情報」とも称する)が含まれていてもよい。対データの生成方法に関する情報としては、例えば、対データを生成するための復号鍵または対データを生成する際のビットシフト情報等を例示することができる。
また、第1記憶部200は、アプリケーションソフトウェア202を複数記憶している。図3には、アプリケーションソフトウェア202として、Aアプリケーションソフトウェア、Bアプリケーションソフトウェア、Cアプリケーションソフトウェアが記憶されている態様が示されている。
なお、図3では、説明簡単化のために、A→B→C・・・と順序通りに記憶された主データおよびアプリケーションソフトウェアを例示したが、各主データおよびアプリケーションソフトウェアの記憶順序は、アプリケーションの進行に対してランダムであることが好ましい。
第1記憶部200は、情報処理装置10Aから発行された主データ出力コマンドを受けて、出力対象となる主データ201を出力する。例えば、A主データが出力対象であった場合は、当該A主データが出力され、B主データが出力対象であった場合は、当該B主データが出力されることになる。
なお、当該第1記憶部200は、マスクROMに限定されず、フラッシュメモリ、EP−ROMまたはハードディスク(HD)等であってもよい。
第2記憶部210は、フラッシュメモリのような書き換え可能な不揮発性の記憶部であって、対データ211を記憶している。
図3では、対データ211として、A主データと対のa対データ、B主データと対のb対データ、C主データと対のc対データ等が記憶されている態様が示されている。第2記憶部210は、セキュリティ部220の制御に従って、対データ211を出力する。
また、第2記憶部210は、出力順序情報212をも記憶している。出力順序情報212は、アプリケーションの進行に応じて定められる、各対データの出力順序(読出順序)に関する情報であり、メモリ装置20Aの製造時に第2記憶部210に予め格納されている。当該出力順序情報212は、セキュリティ部220の制御に従ってセキュリティ部220に出力される。
なお、図3では、説明簡単化のために、a→b→c・・・と順序通りに記憶された対データを例示したが、各対データの記憶順序はアプリケーションの進行に対してランダムであることが好ましい。
セキュリティ部220は、読出制御部(出力制御部)221を有し、第2記憶部210に格納された対データの出力制御を行う。
具体的には、読出制御部221は、情報処理装置10Aから入力される対データの出力コマンドを解析して、出力対象の対データを特定する。そして、読出制御部221は、第2記憶部210から得た出力順序情報212に基づいて、対データの出力順序が正しいか否か(妥当か否か)を判定する。対データの出力順序が正しかった場合は、読出制御部221は、出力対象の対データを第2記憶部210から読み出して、当該対データを情報処理装置10Aに出力する。一方、対データの出力順序が正しくなかった場合は、読出制御部221は、出力対象の対データを出力せずに、他の対データまたはダミーデータを出力する。なお、他の対データまたはダミーデータを出力する態様に代えて、データを全く出力しない態様としてもよい。
このように、メモリ装置20Aでは、セキュリティ部220を介してしか第2記憶部210にアクセス出来ない構成が採用され、セキュリティ部220は、第2記憶部210に記憶された対データの出力制御を行う。
[1−3.メモリ情報保護システム1Aの動作]
次に、メモリ情報保護システム1Aの動作について説明する。図5は、メモリ情報保護システム1Aの動作を示すフローチャートである。図5では、左側に情報処理装置10Aの動作を示すフローチャート、右側にメモリ装置20Aの動作を示すフローチャートがそれぞれ示されている。図6は、ソフトウェア取得情報の内容を示す図である。
メモリ情報保護システム1Aの動作開始前には、メモリ装置20Aが情報処理装置10Aに装着されて、それぞれのインターフェースが電気的に接続される。そして、情報処理装置10Aの電源投入に応じて、情報処理装置10Aが起動されるとともに、電源がメモリ装置20Aに供給されて、システムとしての動作が開始される。
図5に示されるように、情報処理装置10Aでは、電源が投入されると、実行制御部101によって、初期アプリケーションソフトウェアがメモリ装置20Aから読み出される(ステップSP101)。
ステップSP102では、実行制御部101が、初期アプリケーションソフトウェアをCPUに実行させ、アプリケーションを開始させる。
ステップSP103では、主データ取得部102によって、メモリ装置20Aに記憶されている主データが取得される。
起動後に最初に取得すべき主データの情報は、初期アプリケーションソフトウェアに組み込まれている。具体的には、初期アプリケーションソフトウェアには、最初に取得すべき主データの取得命令が組み込まれており、初期アプリケーションソフトウェアの実行によって、主データの取得命令が発行される。主データ取得部102は、当該取得命令を受けて取得対象となる主データの出力コマンド(出力要求)をメモリ装置20Aに対して発行する。当該出力コマンドを受けたメモリ装置20Aは、取得対象の主データを情報処理装置10Aに対して出力する。情報処理装置10Aは、このようにして取得した主データを、内部のRAMに一旦格納する。
次のステップSP104では、ステップSP103で取得した主データと対となる対データが取得される。対データの取得は、主データに含まれる対データ取得情報に基づいて、対データ取得部103によって行われる。
具体的には、対データ取得部103は、対データ取得情報に含まれる対データの読出情報に基づいて、メモリ装置20Aに対して対データの出力コマンド(出力要求)を発行する。対データの出力コマンドは、取得対象となる対データの読出アドレスを含んだ出力命令であり、当該出力コマンドを受けたメモリ装置20Aは、取得対象の対データを情報処理装置10Aに対して出力する。
情報処理装置10Aから読み出された対データが対データとしては利用できない不完全な状態であった場合(例えば、読み出された対データが暗号化されている場合)は、対データ取得部103は、対データ取得情報に含まれる対データの生成情報を用いて、対データとして利用可能な完全な状態の対データを生成する。
ステップSP105では、ソフトウェア取得部104によって、ソフトウェア取得情報の生成が行われる。ソフトウェア取得情報の生成態様としては、種々の態様を例示することができる。
例えば、主データおよび対データがいずれもソフトウェア取得情報の一部であり、2つを組み合わせるとソフトウェア取得情報になる場合、ソフトウェア取得部104は、主データと対データとを単純に組み合わせて、ソフトウェア取得情報を生成することになる。
また、主データの一部に暗号化されたデータ(暗号データ)が含まれ、当該暗号データを対データを用いて復号化すれば、主データ全体がソフトウェア取得情報になる場合、ソフトウェア取得部104は、鍵情報としての対データを用いて暗号データを復号化してソフトウェア取得情報を生成することになる。
図6に示されるように、ソフトウェア取得情報には、アプリケーションソフトウェアの読出方法に関する情報(「アプリケーションソフトウェアの読出情報」とも称する)が含まれている。アプリケーションソフトウェアの読出情報には、アプリケーションソフトウェアの格納先を示す読出アドレスが含まれる。また、1つのアプリケーションソフトウェアが複数のアドレスに分散して格納されている場合は、複数の読出アドレスに加えて、読出順序を示す読み出し手順に関する情報が、アプリケーションソフトウェアの読出情報として含まれていてもよい。
またソフトウェア取得情報には、アプリケーションソフトウェアの生成方法に関する情報(「アプリケーションソフトウェアの生成情報」とも称する)が含まれていてもよい。アプリケーションソフトウェアの生成方法に関する情報としては、例えば、アプリケーションソフトウェアを生成するための復号鍵またはアプリケーションソフトウェアを生成する際のビットシフト情報等を例示することができる。
なお、ソフトウェア取得情報の生成方法に関する情報(ソフトウェア取得情報の生成情報)は、初期アプリケーションソフトウェア、主データまたは対データに含まれており、ソフトウェア取得部104は、ソフトウェア取得情報の生成情報に従ってソフトウェア取得情報の生成動作を実行する。
動作説明(図5)に戻って、ステップSP106では、アプリケーションソフトウェアが取得される。アプリケーションソフトウェアの取得は、ステップSP105で生成されたソフトウェア取得情報に基づいて、ソフトウェア取得部104によって行われる。
具体的には、ソフトウェア取得部104は、ソフトウェア取得情報に含まれるアプリケーションソフトウェアの読出情報に基づいて、メモリ装置20Aに対してアプリケーションソフトウェアの出力コマンド(出力要求)を発行する。アプリケーションソフトウェアの出力コマンドは、取得対象となるアプリケーションソフトウェアの読出アドレスを含んだ出力命令であり、当該出力コマンドを受けたメモリ装置20Aは、取得対象のアプリケーションソフトウェアを情報処理装置10Aに対して出力する。
情報処理装置10Aから読み出されたアプリケーションソフトウェアがソフトウェアとしては利用できない不完全な状態であった場合は、ソフトウェア取得部104は、ソフトウェア取得情報に含まれるアプリケーションソフトウェアの生成情報を用いて、アプリケーションソフトウェアとして利用可能な完全な状態のアプリケーションソフトウェアを生成する。
ステップSP107では、ステップSP106で取得されたアプリケーションソフトウェアが、実行制御部101の制御に従ってCPUで実行される。
アプリケーションソフトウェアの実行中に、情報処理装置10Aの動作を終了させる終了動作が実行された場合は、情報処理装置10Aの動作は終了する(ステップSP108)。
一方、情報処理装置10Aの動作が継続され、ユーザの操作等によってアプリケーションが進行すると、動作工程は、ステップSP103に移行される。
繰り返し処理となるステップSP103では、主データ取得部102によって、メモリ装置20Aから次の主データが取得される。アプリケーションの進行に対応した次に取得すべき主データの情報は、実行中のアプリケーションソフトウェア(ステップSP106で取得されたアプリケーションソフトウェア)に組み込まれている。すなわち、アプリケーションが進行すると、アプリケーションソフトウェアの実行によって、次に取得すべき主データの取得命令が発行される。そして、主データ取得部102は、当該取得命令を受けて取得対象となる主データの出力コマンドをメモリ装置20Aに対して発行する。
以降のステップSP104〜ステップSP108では、上記と同様の処理が実行される。すなわち、ステップSP104では、対データが取得され、ステップSP105では主データと対データとを用いてアプリケーションの進行に対応した次のアプリケーションソフトウェアを取得するためのソフトウェア取得情報が生成される。次のステップSP106では、生成されたソフトウェア取得情報に基づいて、新たなアプリケーションソフトウェアが取得される。そして、ステップSP107では、取得された新たなアプリケーションソフトウェアが実行される。
このように、情報処理装置10Aでは、アプリケーションが終了するまで、ステップSP103からステップSP108の各動作工程が繰り返し実行される。これにより、情報処理装置10Aは、アプリケーションの進行に応じたアプリケーションソフトウェアを取得するためのソフトウェア取得情報を、主データおよび対データを用いて順次に生成する。そして、順次に生成されたソフトウェア取得情報に基づいてアプリケーションソフトウェアを順次に取得し、アプリケーションソフトウェアを順次に実行することになる。
一方、メモリ装置20Aでは、電源供給が開始されると、情報処理装置10AのステップSP101に対応した動作が実行され、第1記憶部200から初期アプリケーションソフトウェアが出力される(ステップSP201)。
次のステップSP202では、情報処理装置10AのステップSP103に対応した動作が実行され、主データの出力コマンドの発行を受けて、出力対象の主データ201が第1記憶部200から出力される。
そして、ステップSP203〜ステップSP206では、情報処理装置10AのステップSP104に対応した動作、すなわち対データの出力動作が実行される。
具体的には、ステップSP203では、情報処理装置10Aから発行された対データの出力コマンドが、セキュリティ部220の読出制御部221によって解析される。この出力コマンドの解析によって、出力対象の対データが特定される。
ステップSP204では、読出制御部221によって、対データの出力順序が妥当(適切)か否かが判定される。対データの出力順序の妥当性判断は、例えば、既に出力済みの対データに関する出力履歴情報およびステップSP203で出力対象として特定された対データと、第2記憶部210から得られる出力順序情報212とを比較することによって行うことができる。なお、出力履歴情報を用いて出力順序の妥当性判断を行う場合は、セキュリティ部220は、対データを出力する度に出力履歴情報を更新(生成)して第2記憶部210に格納しておけばよい。
ステップSP204において、対データの出力順序が妥当であると判断された場合、動作工程は、ステップSP205に移行される。ステップSP205では、読出制御部221によって、対データの出力が適切に行われる。すなわち、出力対象の対データがメモリ装置20Aから出力される。
一方、ステップSP204において、対データの出力順序が妥当でないと判断された場合、動作工程は、ステップSP206に移行される。ステップSP206では、読出制御部221によって、対データの出力が適切に行われない。すなわち、読出制御部221は、出力対象の対データを出力せずに、出力対象の対データとは異なる他のデータを出力する。或いは、読出制御部221は、データを全く出力しない。
ステップSP205が終了すると、動作工程は、ステップSP207に移行される。
次のステップSP207では、情報処理装置10AのステップSP106に対応した動作が実行され、アプリケーションソフトウェアの出力コマンドの発行を受けて、出力対象のアプリケーションソフトウェアが第1記憶部200から出力される。
ステップSP207が終了すると、動作工程は、上記のステップSP202に移行され、主データの出力コマンドを受けると、出力対象の主データが第1記憶部200から出力される。ここで出力される主データは、アプリケーションの進行状況に対応した新たな主データであり、情報処理装置10Aは、当該新たな主データを取得する。
以降のステップSP203〜ステップSP207では、上記と同様の処理が実行される。すなわち、ステップSP203では、対データの出力コマンドが解析され、ステップSP204では、対データの出力順序が妥当か否かが判定される。そして、判定結果に応じた対データの出力が行われる(ステップSP205,ステップSP206)。ステップSP207では、アプリケーションソフトウェアの出力コマンドの発行を受けて、出力対象のアプリケーションソフトウェアが出力される。
このように、メモリ装置20Aでは、アプリケーションが終了するまで、情報処理装置10Aの動作に対応して、ステップSP202からステップSP207の各工程が繰り返し実行されることになる。
以上のように、メモリ情報保護システム1Aは、アプリケーションソフトウェアを実行する情報処理装置10Aと、記憶した情報を情報処理装置10Aに供給するメモリ装置20Aとを備えている。そして、情報処理装置10Aは、アプリケーションソフトウェアの取得に用いる主データ201を取得する主データ取得部102と、主データ201と対となる対データ211を、メモリ装置20Aから取得する対データ取得部103と、主データ201および当該主データ201と対の対データ211を用いて、アプリケーションソフトウェアを取得するソフトウェア取得部104と、ソフトウェア取得部104によって取得されたアプリケーションソフトウェアを情報処理装置10Aに実行させて、アプリケーションを実施させる実行制御部101とを有している。
このようなメモリ情報保護システム1Aによれば、メモリ装置20Aに記憶されているデータを単に抜き出しただけでは、アプリケーションソフトウェアを得ることができないため、アプリケーションソフトウェアの複製が困難になる。
また、メモリ情報保護システム1Aでは、アプリケーションの進行に応じてアプリケーションの進行状況に対応した、対となる2つのデータを順次に取得し、当該2つのデータを用いて、アプリケーションの進行状況に対応したアプリケーションソフトウェアを順次に取得する。そして、取得したアプリケーションソフトウェアを順次に実行して、アプリケーションの継続実施を実現する。このため、アプリケーションを進行させない限り、アプリケーションの進行順序に沿ったアプリケーションソフトウェアを順次に得ることができないので、メモリ装置20Aに記憶されているデータを単に抜き出しただけでは、アプリケーションソフトウェアの複製が一層困難になる。
また、主データに対する対データを取得するためには、主データを解析して主データに含まれる対データ取得情報を得て、当該対データ取得情報に基づいて対データを特定する必要がある。このため、メモリ装置20Aに記憶されているデータを単に抜き出しただけでは、主データに対する対データの特定が困難であり、無断で複製を行う複製者は、アプリケーションソフトウェアを取得することができない。また仮に主データに対する対データの特定ができたとしても、アプリケーションソフトウェアの複製に、多大な時間を要することになるので、メモリ装置20Aの複製品が出回るまでの期間を稼ぐことができる。
また、メモリ情報保護システム1Aでは、対データの出力順序がアプリケーションの進行に応じた適切な順序でない場合は、対データが適切に出力されない。このため、対データを取得するためには、アプリケーションを進行させて正しい順序で対データを取得することが必要になるので、無断複製者は、逆アセンブルによってメモリ装置20Aを複製することが困難となる。
<2.第2実施形態>
次に、第2実施形態について説明する。上記第1実施形態では、主データおよび対データを用いてソフトウェア取得情報が常に生成されていたが、ソフトウェア取得情報を常に生成する態様に限定されない。第2実施形態では、主データおよび対データを用いて、ソフトウェア取得情報以外の他の情報も生成される態様を例示する。なお、主データおよび対データを用いて生成される情報の種類が増える点以外は、第2実施形態のメモリ情報保護システム1Bは、第1実施形態のメモリ情報保護システム1Aとほぼ同様の構造および機能を有している。このため、メモリ情報保護システム1Bにおいて、メモリ情報保護システム1Aと共通する部分については同じ符号を付して説明を省略する。
[2−1.構成]
本実施形態のメモリ情報保護システム1Bでは、主データおよび対データを用いて外部データ取得情報が生成される。外部データ取得情報には、ソフトウェア取得情報或いは新たな主データの取得情報(「主データ取得情報」とも称する)を得るための情報が含まれている。
ここで、情報処理装置10Bが、ゲームプログラムを実行するゲーム装置本体として機能する場合を一例にして、メモリ情報保護システム1Bの動作概要を説明する。図7は、ゲームシステムとして動作するメモリ情報保護システム1Bの動作概要を示す図である。
情報処理装置10Bは、ゲームの進行状況に応じてゲームプログラムを順次に取得するとともに、取得したゲームプログラムを実行することによって、アプリケーションとしてのゲームを継続して実施する。
具体的には、図7に示されるように、情報処理装置10Bは、ゲームの進行状況の第1段階では、A主データおよび当該A主データと対のa対データを用いて、外部データ取得情報GS1を生成する。そして、情報処理装置10Bは、外部データ取得情報GS1に基づいて、外部データUD1をメモリ装置20Bから取得する。図7では、ここで取得された外部データUD1が、E主データ取得情報DEである場合が例示されている。この場合、情報処理装置10Bは、当該E主データ取得情報DEに基づいてE主データをメモリ装置20Bから取得する。
次に、情報処理装置10Bは、E主データおよびe対データを用いて、外部データ取得情報GS2を生成する。そして、情報処理装置10Bは、外部データ取得情報GS2に基づいて、外部データUD2をメモリ装置20Bから取得する。図7では、ここで取得された外部データUD2が、JゲームプログラムPJである場合が例示されている。この場合、情報処理装置10Bは、取得した当該JゲームプログラムPJを実行して第1段階におけるゲームを実施可能にする。
また、ゲームの進行状況の第2段階では、情報処理装置10Bは、JゲームプログラムPJの実行によりB主データを取得し、さらにb対データを取得する。そして、情報処理装置10Bは、B主データおよびb対データを用いて、外部データ取得情報GS3を生成する。そして、情報処理装置10Bは、外部データ取得情報GS3に基づいて、外部データUD3をメモリ装置20Bから取得する。図7では、ここで取得された外部データUD3が、F主データ取得情報DFである場合が例示されている。この場合、情報処理装置10Bは、当該F主データ取得情報DFに基づいてF主データをメモリ装置20Bから取得する。
次に、情報処理装置10Bは、F主データおよびf対データを用いて、外部データ取得情報GS4を生成する。そして、情報処理装置10Bは、外部データ取得情報GS4に基づいて、外部データUD4をメモリ装置20Bから取得する。図7では、ここで取得された外部データUD4が、KゲームプログラムPKである場合が例示されている。この場合、情報処理装置10Bは、取得した当該KゲームプログラムPKを実行して第2段階におけるゲームを実施可能にする。
このように、ゲームシステムとしてのメモリ情報保護システム1Bでは、ゲームの進行に応じて、対となる2つのデータを用いて外部データ取得情報を順次に生成し、外部データ取得情報に基づいて外部データを取得する。取得された外部データがゲームプログラムである場合は、当該ゲームプログラムを実行して、ゲームの継続実施を実現させる。取得された外部データが主データ取得情報である場合は、当該主データ取得情報に基づいて新たな主データを取得し、新たな外部データ取得情報を生成する。そして新たな外部データ取得情報に基づいて新たな外部データを取得する。このような対となる2つのデータを用いた外部データの取得動作は、外部データとしてゲームプログラムが取得されるまで繰り返し実行されることになる。
以下では、メモリ情報保護システム1Bについてさらに詳述する。図8は、第2実施形態に係るメモリ情報保護システム1Bの機能構成を示すブロック図である。
図8に示されるように、メモリ情報保護システム1Bを構成する情報処理装置10Bは、制御部100Bにおいて、制御部100B内のROMに格納されたプログラムを実行することによって、実行制御部101を機能的に実現する。また、制御部100Bでは、ROMに格納された上記プログラムの実行によって、或いは実行制御部101の制御に従いアプリケーションソフトウェアをCPUで実行することによって、主データ取得部102、対データ取得部103および外部データ取得部105が機能的に実現されることになる。
主データ取得部(第1データ取得部)102は、メモリ装置20Bに記憶されている、主データ(「第1データ」または「第1情報」とも称する)を読み出して、取得する機能を有している。
対データ取得部(第2データ取得部)103は、メモリ装置20Bから、主データと対となる対データ(「第2データ」または「第2情報」とも称する)を取得する機能を有している。
外部データ取得部105は、メモリ装置20Bから取得した主データおよび当該主データと対の対データを用いて、情報処理装置10Bの外部から外部データを取得する機能を有している。
具体的には、外部データ取得部105は、主データおよび当該主データと対の対データを用いて外部データ取得情報を生成する。外部データ取得情報は、アプリケーションの実施に用いる外部データを取得するための情報であり、外部データ取得情報には、例えば、外部データの格納先を示す読出アドレスが含まれている。
そして、外部データ取得部105は、当該外部データ取得情報に基づいてメモリ装置20Bから外部データを取得する。ここでは、外部データとして、アプリケーションソフトウェア或いは次に取得すべき新たな主データの主データ取得情報が取得される。
外部データとしてアプリケーションソフトウェアが取得された場合は、当該アプリケーションソフトウェアは、実行制御部101の制御に従って、CPUで実行されることになる。これにより、情報処理装置10Bでは、アプリケーションが実施される、或いはアプリケーションが継続して実施されることになる。
また、外部データとして新たな主データの主データ取得情報が取得された場合は、主データ取得部102は、当該主データ取得情報に基づいて、主データ出力コマンドをメモリ装置20Bに対して発行することによって、メモリ装置20Bから新たな主データを取得する。
このように、外部データ取得部105は、主データおよび対データを用いてアプリケーションソフトウェア或いは主データ取得情報を取得する。なお、外部データ取得部105は、外部データとしてアプリケーションソフトウェアを最終的に取得するように機能することから、当該外部データ取得部105は、ソフトウェア取得部とも称される。
一方、メモリ情報保護システム1Bを構成するメモリ装置20Bは、記憶手段としての第1記憶部200および第2記憶部210と、セキュリティ部220とを備えている。
第1記憶部200は、マスクROMのような不揮発性の記憶部であって、アプリケーションソフトウェアを取得するために用いる主データ201を複数記憶している。図8には、主データとして、A主データ、B主データ、およびC主データ等が記憶されている態様が示されている。
これら各主データには、対となる対データを取得するための対データ取得情報が含まれている。対データ取得情報の内容は、図4を参照して上述した内容と同様であり、対データ取得情報には、対データの読出情報、対データの生成情報等が含まれる。
また、第1記憶部200は、アプリケーションソフトウェア202を複数記憶している。図8には、アプリケーションソフトウェア202として、Aアプリケーションソフトウェア、Bアプリケーションソフトウェア、およびCアプリケーションソフトウェア等が記憶されている態様が示されている。
また、第1記憶部200は、次に取得すべき新たな主データを取得する際に用いる主データ取得情報203をも複数記憶している。図8には、主データ取得情報203として、B主データを取得する際に用いるB主データ取得情報、およびC主データを取得する際に用いるC主データ取得情報等が記憶されている態様が示されている。
第1記憶部200に記憶されたアプリケーションソフトウェア202および主データ取得情報203は、上述の外部データに相当する。
なお、図8では、説明簡単化のために、A→B→C・・・と順序通りに記憶された主データ201、アプリケーションソフトウェア202、主データ取得情報203を例示したが、各主データ、各アプリケーションソフトウェア、各主データ取得情報の記憶順序はアプリケーションの進行に対してランダムであることが好ましい。またさらに、主データ、アプリケーションソフトウェア、および主データ取得情報は、第1記憶部200内で互いに区分されることなく、混在して記憶されていてもよい。
第1記憶部200は、情報処理装置10Bから発行されたデータの出力コマンドを受けて、出力対象となるデータを出力する。例えば、出力コマンドがA主データの出力コマンドであった場合は、出力対象のA主データが出力される。また、出力コマンドがCアプリケーションソフトウェアの出力コマンドであった場合は、出力対象のCアプリケーションソフトウェアが出力されることになる。また、出力コマンドがB主データの取得情報の出力コマンドであった場合は、出力対象のB主データの取得情報が出力されることになる。
第2記憶部210は、フラッシュメモリのような書き換え可能な不揮発性の記憶部であって、対データ211を記憶している。
図8では、対データ211として、A主データと対のa対データ、B主データと対のb対データ、C主データと対のc対データ等が記憶されている態様が示されている。第2記憶部210は、セキュリティ部220の制御に従って、対データ211を出力する。
また、第2記憶部210は、出力順序情報212をも記憶している。出力順序情報212は、アプリケーションの進行に応じて定められる、各対データの出力順序(読出順序)に関する情報であり、メモリ装置20Bの製造時に第2記憶部210に予め格納されている。当該出力順序情報212は、セキュリティ部220の制御に従ってセキュリティ部220に出力される。
なお、図8では、説明簡単化のために、a→b→c・・・と順序通りに記憶された対データを例示したが、各対データの記憶順序はアプリケーションの進行に対してランダムであることが好ましい。
セキュリティ部220は、読出制御部(出力制御部)221を有し、第2記憶部210に格納された対データの出力制御を行う。
具体的には、読出制御部221は、情報処理装置10Bから入力される対データの出力コマンドを解析して、出力対象の対データを特定する。そして、読出制御部221は、第2記憶部210から得た出力順序情報212に基づいて、対データの出力順序が正しいか否かを判定する。対データの出力順序が正しかった場合は、読出制御部221は、出力対象の対データを第2記憶部210から読み出して、当該対データを情報処理装置10Bに出力する。一方、対データの出力順序が正しくなかった場合は、読出制御部221は、出力対象の対データを出力せずに、他の対データまたはダミーデータを出力する。なお、他の対データまたはダミーデータを出力する態様に代えて、データを全く出力しない態様としてもよい。
このように、メモリ装置20Bでは、セキュリティ部220を介してしか第2記憶部210にアクセス出来ない構成が採用され、セキュリティ部220は、第2記憶部210に記憶された対データの出力制御を行う。
[2−2.メモリ情報保護システム1Bの動作]
次に、メモリ情報保護システム1Bの動作について説明する。図9は、メモリ情報保護システム1Bの動作を示すフローチャートである。図9では、左側に情報処理装置10Bの動作を示すフローチャート、右側にメモリ装置20Bの動作を示すフローチャートがそれぞれ示されている。図10は、外部データ取得情報の内容を示す図である。
メモリ情報保護システム1Bの動作開始前には、メモリ装置20Bが情報処理装置10Bに装着されて、それぞれのインターフェースが電気的に接続される。そして、情報処理装置10Bの電源投入に応じて、情報処理装置10Bが起動されるとともに、電源がメモリ装置20Bに供給されて、システムとしての動作が開始される。
図9に示されるように、情報処理装置10Bでは、電源が投入されると、実行制御部101によって、初期アプリケーションソフトウェアがメモリ装置20Bから読み出される(ステップSP111)。
ステップSP112では、上記ステップSP102と同様、実行制御部101が、初期アプリケーションソフトウェアをCPUに実行させ、アプリケーションを開始させる。
ステップSP113では、上記ステップSP103と同様、主データ取得部102によって、メモリ装置20Bに記憶されている主データが取得される。
起動後に最初に取得すべき主データの情報は、初期アプリケーションソフトウェアに組み込まれている。具体的には、初期アプリケーションソフトウェアには、最初に取得すべき主データの取得命令が組み込まれており、初期アプリケーションソフトウェアの実行によって、主データの取得命令が発行される。主データ取得部102は、当該取得命令を受けて取得対象となる主データの出力コマンドをメモリ装置20Bに対して発行する。当該出力コマンドを受けたメモリ装置20Bは、取得対象の主データを情報処理装置10Bに対して出力する。情報処理装置10Bは、このようにして取得した主データを、内部のRAMに一旦格納する。
次のステップSP114では、上記ステップSP104と同様、ステップSP113で取得した主データと対となる対データが取得される。対データの取得は、主データに含まれる対データ取得情報に基づいて、対データ取得部103によって行われる。
具体的には、対データ取得部103は、対データ取得情報に含まれる対データの読出情報に基づいて、メモリ装置20Bに対して対データの出力コマンドを発行する。対データの出力コマンドは、取得対象となる対データの読出アドレスを含んだ出力命令であり、当該出力コマンドを受けたメモリ装置20Bは、取得対象の対データを情報処理装置10Bに対して出力する。
情報処理装置10Bから読み出された対データが対データとしては利用できない不完全な状態であった場合は、対データ取得部103は、対データ取得情報に含まれる対データの生成情報を用いて、対データとして利用可能な完全な状態の対データを生成する。
ステップSP115では、外部データ取得部105によって、外部データ取得情報の生成が行われる。外部データ取得情報の生成態様としては、種々の態様を例示することができる。
例えば、主データおよび対データがいずれも外部データ取得情報の一部であり、2つを組み合わせると外部データ取得情報になる場合、外部データ取得部105は、主データと対データとを単純に組み合わせて、外部データ取得情報を生成することになる。
また、主データの一部に暗号化された暗号データが含まれ、当該暗号データを対データを用いて復号化すれば、主データ全体が外部データ取得情報になる場合、外部データ取得部105は、鍵情報としての対データを用いて暗号データを復号化して外部データ取得情報を生成することになる。
図10に示されるように、外部データ取得情報には、外部データの読出方法に関する情報(「外部データの読出情報」とも称する)が含まれている。外部データの読出情報には、外部データの格納先を示す読出アドレスが含まれる。また、1つの外部データが複数のアドレスに分散して格納されている場合は、複数の読出アドレスに加えて、読出順序を示す読み出し手順に関する情報が、外部データの読出情報として含まれていてもよい。
また外部データ取得情報には、外部データの生成方法に関する情報(「外部データの生成情報」とも称する)が含まれていてもよい。外部データの生成方法に関する情報としては、例えば、外部データを生成するための復号鍵または外部データを生成する際のビットシフト情報等を例示することができる。
なお、外部データの生成方法に関する情報(外部データの生成情報)は、初期アプリケーションソフトウェア、主データまたは対データに含まれており、外部データ取得部105は、外部データの生成情報に従って外部データの生成動作を実行する。
動作説明(図9)に戻って、ステップSP116では、外部データが取得される。外部データの取得は、ステップSP115で生成された外部データ取得情報に基づいて、外部データ取得部105によって行われる。
具体的には、外部データ取得部105は、外部データ取得情報に含まれる外部データの読出情報に基づいて、メモリ装置20Bに対して外部データの出力コマンド(出力要求)を発行する。外部データの出力コマンドは、取得対象となる外部データの読出アドレスを含んだ出力命令であり、当該出力コマンドを受けたメモリ装置20Bは、取得対象の外部データを情報処理装置10Bに対して出力する。
情報処理装置10Bから読み出された外部データが不完全な状態であった場合は、外部データ取得部105は、外部データ取得情報に含まれる外部データの生成情報を用いて、利用可能な完全な状態の外部データを生成する。
ステップSP117では、ステップSP116で取得された外部データが、アプリケーションソフトウェアであるか否かが判定される。外部データがアプリケーションソフトウェアでないと判定される場合、すなわち、外部データが主データ取得情報である場合は、動作工程は、ステップSP113に移行される。そして、主データ取得部102によって、当該主データ取得情報に基づいてメモリ装置20Bから新たな主データが取得される。
一方、ステップSP117において、外部データがアプリケーションソフトウェアであると判定される場合、動作工程は、ステップSP118に移行される。
ステップSP118では、ステップSP116で取得されたアプリケーションソフトウェアが、実行制御部101の制御に従ってCPUで実行される。
アプリケーションソフトウェアの実行中に、情報処理装置10Bの動作を終了させる終了動作が実行された場合は、情報処理装置10Bの動作は終了する(ステップSP119)。
一方、情報処理装置10Bの動作が継続され、ユーザの操作等によってアプリケーションが進行すると、動作工程は、ステップSP113に移行される。
繰り返し処理となるステップSP113では、主データ取得部102によって、メモリ装置20Bから次の主データが取得される。アプリケーションの進行に対応した次に取得すべき主データの情報は、実行中のアプリケーションソフトウェアに組み込まれている。すなわち、アプリケーションが進行すると、アプリケーションソフトウェアの実行によって、次に取得すべき主データの取得命令が発行される。そして、主データ取得部102は、当該取得命令を受けて取得対象となる主データの出力コマンドをメモリ装置20Bに対して発行する。
以降のステップSP114〜ステップSP119では、上記と同様の処理が実行される。すなわち、ステップSP114では、対データが取得され、ステップSP115では主データと対データとを用いてアプリケーションの進行に対応した次のアプリケーションソフトウェアを取得するための外部データ取得情報が生成される。次のステップSP116では、生成された外部データ取得情報に基づいて、新たな外部データが取得される。そして、ステップSP117では、取得された新たな外部データがアプリケーションソフトウェアであるか否かが判定される。新たな外部データが主データ取得情報である場合は、動作工程は、ステップSP113に移行される。一方、新たな外部データがアプリケーションソフトウェアである場合は、動作工程は、ステップSP118に移行される。ステップSP118では、取得された新たなアプリケーションソフトウェアが実行され、アプリケーションが継続して実施されることになる。
このように、情報処理装置10Bでは、アプリケーションが終了するまで、ステップSP113からステップSP119の各動作工程が繰り返し実行される。これにより、情報処理装置10Bは、アプリケーションの進行に応じて、順次に取得される主データおよび対データを用いて外部データ取得情報を順次に生成する。そして、情報処理装置10Bは、順次に生成された外部データ取得情報に基づいて外部データを順次に取得する。取得される外部データは、アプリケーションソフトウェアおよび主データ取得情報のうちいずれか一方であり、外部データとしてアプリケーションソフトウェアが取得された場合は、当該アプリケーションソフトウェアを実行して、アプリケーションを継続実施させる。外部データとして主データ取得情報が取得された場合は、当該主データ取得情報に基づいて次の主データが取得されることになる。
一方、メモリ装置20Bでは、電源供給が開始されると、情報処理装置10BのステップSP111に対応した動作が実行され、第1記憶部200から初期アプリケーションソフトウェアが出力される(ステップSP211)。
次のステップSP212では、上記ステップSP202と同様、情報処理装置10BのステップSP113に対応した動作が実行され、主データの出力コマンドの発行を受けて、出力対象の主データ201が第1記憶部200から出力される。
そして、ステップSP213〜ステップSP216では、情報処理装置10BのステップSP114に対応した動作、すなわち対データの出力動作が実行される。
具体的には、ステップSP213では、上記ステップSP203と同様、情報処理装置10Bから発行された対データの出力コマンドが、セキュリティ部220の読出制御部221によって解析される。この出力コマンドの解析によって、出力対象の対データが特定される。
ステップSP214では、上記ステップSP204と同様、読出制御部221によって、対データの出力順序が妥当か否かが判定される。対データの出力順序の妥当性判断は、例えば、既に出力済みの対データに関する出力履歴情報およびステップSP213で出力対象として特定された対データと、第2記憶部210から得られる出力順序情報212とを比較することによって行うことができる。なお、出力履歴情報を用いて出力順序の妥当性判断を行う場合は、セキュリティ部220は、対データを出力する度に出力履歴情報を更新(生成)して第2記憶部210に格納しておけばよい。
ステップSP214において、対データの出力順序が妥当であると判断された場合、動作工程は、ステップSP215に移行される。ステップSP215では、上記ステップSP205と同様、読出制御部221によって、対データの出力が適切に行われる。すなわち、出力対象の対データがメモリ装置20Bから出力される。
一方、ステップSP214において、対データの出力順序が妥当でないと判断された場合、動作工程は、ステップSP216に移行される。ステップSP216では、上記ステップSP206と同様、読出制御部221によって、対データの出力が適切に行われない。すなわち、読出制御部221は、出力対象の対データを出力せずに、出力対象の対データとは異なる他のデータを出力する。或いは、読出制御部221は、データを全く出力しない。
ステップSP215が終了すると、動作工程は、ステップSP217に移行される。
次のステップSP217では、情報処理装置10BのステップSP116に対応した動作が実行され、外部データの出力コマンドの発行を受けて、出力対象の外部データが第1記憶部200から出力される。すなわち、出力対象の外部データがアプリケーションソフトウェアであった場合は、当該アプリケーションソフトウェアが出力され、出力対象の外部データが主データ取得情報であった場合は、当該主データ取得情報が出力されることになる。
ステップSP217が終了すると、動作工程は、上記のステップSP212に移行され、主データの出力コマンドを受けると、出力対象の主データが第1記憶部200から出力される。ここで出力される主データは、新たな主データであり、情報処理装置10Bは、当該新たな主データを取得する。
以降のステップSP213〜ステップSP217では、上記と同様の処理が実行される。すなわち、ステップSP213では、対データの出力コマンドが解析され、ステップSP214では、対データの出力順序が妥当か否かが判定される。そして、判定結果に応じた対データの出力動作が行われる(ステップSP215,ステップSP216)。ステップSP217では、外部データの出力コマンドの発行を受けて、出力対象の外部データが出力される。
このように、メモリ装置20Bでは、アプリケーションが終了するまで、情報処理装置10Bの動作に対応して、ステップSP212からステップSP217の各工程が繰り返し実行されることになる。
以上のように、アプリケーションの進行のために情報処理装置10Bが外部から取得する外部データに、アプリケーションソフトウェアと主データ取得情報とを混在させることによれば、上記第1実施形態のように、外部データとしてアプリケーションソフトウェアを常に出力する場合に比べて、アプリケーションソフトウェアの取得手順がより複雑化するので、アプリケーションソフトウェアの取得がより困難となる。すなわち、アプリケーションソフトウェアの複製が一層困難になる。
<3.変形例>
以上、この発明の実施の形態について説明したが、この発明は、上記に説明した内容に限定されるものではない。
例えば、上記第1実施形態では、主データ201およびアプリケーションソフトウェア202が第1記憶部200に記憶されている態様を示したが、これに限定されない。図11は、変形例に係るメモリ情報保護システム1Cの構成を示す図である。図12は、変形例に係るメモリ情報保護システム1Dの構成を示す図である。
具体的には、図11に示されるように、変形例に係るメモリ情報保護システム1Cでは、主データ201およびアプリケーションソフトウェア202は、メモリ装置20Cの第2記憶部210に記憶されている。このように、上記第1実施形態のメモリ装置20Aにおいて、第1記憶部200に記憶されていた主データ201、アプリケーションソフトウェア202および初期アプリケーションソフトウェア等は、第2記憶部210に記憶される態様であってもよい。なお、このようなメモリ情報保護システム1Cでは、記憶手段は、第2記憶部210のみとなる。
なお、上記第2実施形態のメモリ情報保護システム1Bに対しても、図11に示されるメモリ情報保護システム1Cの思想は適用される。すなわち、メモリ装置20Bにおいて、第1記憶部200に記憶されていた主データ201、アプリケーションソフトウェア202、主データ取得情報および初期アプリケーションソフトウェア等が、第2記憶部210に記憶される態様であってもよい。
また、図12に示されるように、変形例に係るメモリ情報保護システム1Dでは、主データ201およびアプリケーションソフトウェア202は、メモリ装置20D以外の外部の記憶装置に記憶されている。このように、上記第1実施形態のメモリ装置20Aにおいて、第1記憶部200に記憶されていた主データ201、アプリケーションソフトウェア202および初期アプリケーションソフトウェア等は、メモリ装置20D以外の外部の記憶装置に記憶される態様であってもよい。なお、メモリ情報保護システム1Dでは、記憶手段は、第2記憶部210のみとなる。
この場合、情報処理装置10Aは、ネットワークを介して主データ201、アプリケーションソフトウェア202および初期アプリケーションソフトウェアを取得することになる。例えば、記憶装置がサーバである場合は、情報処理装置10Aは、インターネットを介して所望の主データ、所望のアプリケーションソフトウェア、および初期アプリケーションソフトウェアをダウンロードする。
なお、上記第2実施形態のメモリ情報保護システム1Bに対しても、図12に示されるメモリ情報保護システム1Dの思想は適用される。すなわち、メモリ装置20Bにおいて、第1記憶部200に記憶されていた主データ201、アプリケーションソフトウェア202、主データ取得情報および初期アプリケーションソフトウェア等が、メモリ装置20D以外の外部の記憶装置に記憶される態様であってもよい。
また、上記実施形態におけるセキュリティ部220の動作は、ROMおよびRAM等が接続されたCPUにおいて所定のプログラムを実行して実現される態様であってもよく、或いは、論理回路を用いてハードウェアとして実現される態様であってもよい。