メモリシステム、セキュリティメモリおよび情報保護方法
【課題】保護対象の情報の無断実施を抑制する技術を提供する。
【解決手段】ホストコンピュータ10に接続されるメモリシステム1に、プログラム22を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御する第1制御部20と、プログラム22の使用中におけるホストコンピュータ10の状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部31と、当該履歴情報と当該読み出し条件とに応じて第2記憶部31に格納されている重要情報をホストコンピュータ10に出力する第2制御部30を設ける。
【解決手段】ホストコンピュータ10に接続されるメモリシステム1に、プログラム22を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御する第1制御部20と、プログラム22の使用中におけるホストコンピュータ10の状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部31と、当該履歴情報と当該読み出し条件とに応じて第2記憶部31に格納されている重要情報をホストコンピュータ10に出力する第2制御部30を設ける。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置(例えば、半導体メモリなど)に格納された情報を保護する技術に関する。
【背景技術】
【0002】
従来より、ホストコンピュータに接続される記憶装置に記憶された保護対象の情報を不正な複製から保護する技術が知られている。例えば、そのような技術が特許文献1に記載されている。
【0003】
特許文献1には、ホストコンピュータと接続されるメモリシステムに、プログラムを格納した記憶装置(ROM)と、セキュリティ機能を備えたセキュリティチップとを設けている。そして、プログラムの一部を暗号化しておき、ホストコンピュータが当該プログラムの暗号を解読するために必要な複数の鍵データをセキュリティチップに格納する。このように構成することにより、ホストコンピュータは、セキュリティチップに格納された複数の鍵データを、セキュリティチップから正常に読み出さない限り、プログラムの実行が不可能となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−258850号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところが、特許文献1に記載された技術において、鍵データが特定された場合には、プログラムの解読が可能になり、プログラムを無断で実施される可能性があるという問題があった。
【0006】
本発明は、上記課題に鑑みてなされたものであり、保護対象の情報の無断実施を抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の課題を解決するため、請求項1の発明は、ホストコンピュータに接続されるメモリシステムであって、保護対象の情報を格納する第1記憶部と、前記第1記憶部に対するアクセスを制御する第1制御部と、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部と、前記履歴情報と前記読み出し条件とに応じて前記第2記憶部に格納されている重要情報を前記ホストコンピュータに出力する第2制御部とを備える。
【0008】
また、請求項2の発明は、請求項1の発明に係るメモリシステムであって、前記重要情報は、前記保護対象の情報を前記ホストコンピュータが使用するために使用する情報である。
【0009】
また、請求項3の発明は、請求項1または2の発明に係るメモリシステムであって、前記第2制御部は、前記ホストコンピュータからの状態遷移命令に応じて前記履歴情報を更新する。
【0010】
また、請求項4の発明は、保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する記憶部と、前記履歴情報と前記読み出し条件とに応じて前記記憶部に格納されている重要情報を前記ホストコンピュータに出力する制御部とを備える。
【0011】
また、請求項5の発明は、ホストコンピュータに接続されるメモリシステムに格納される保護対象の情報を保護する情報保護方法であって、読み出し条件に関連づけられた重要情報を格納する工程と、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報を記録する工程と、前記履歴情報と前記読み出し条件とに応じて重要情報を前記ホストコンピュータに出力する工程とを有する。
【発明の効果】
【0012】
請求項1ないし5に記載の発明は、保護対象の情報の使用中におけるホストコンピュータの状態の履歴情報と読み出し条件とに応じて重要情報をホストコンピュータに出力する。これにより、ホストコンピュータの状態の履歴に応じて重要情報が選択されるため、すべての重要情報を確実に読み出して複製するためには、発生しうるホストコンピュータの状態の履歴をすべて再現しなければならない。したがって、複製を作成することが困難となる。また、既存のホストコンピュータの設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。また、例えば、保護対象の情報ごとに変更できるので、一旦、セキュリティを破られても、容易に再構築できる。
【図面の簡単な説明】
【0013】
【図1】本発明に係るメモリシステムを備えるコンピュータシステムを示す図である。
【図2】第1の実施の形態における第2記憶部の記憶領域を例示する図である。
【図3】第1の実施の形態におけるセキュリティメモリの動作を示す流れ図である。
【図4】第1の実施の形態における読み出し条件テーブルを例示する図である。
【図5】第1の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図6】第1の実施の形態におけるプログラム進行処理を示す流れ図である。
【図7】第2の実施の形態における読み出し条件テーブルを例示する図である。
【図8】第3の実施の形態における状態履歴情報を例示する図である。
【図9】第3の実施の形態における読み出し条件テーブルを例示する図である。
【図10】第4の実施の形態における状態履歴情報を例示する図である。
【図11】第6の実施の形態における状態履歴情報を例示する図である。
【図12】第7の実施の形態における第2記憶部の記憶領域を例示する図である。
【図13】第7の実施の形態における状態特定情報を例示する図である。
【図14】第8の実施の形態における状態特定情報を例示する図である。
【図15】第9の実施の形態における状態特定情報を例示する図である。
【図16】第9の実施の形態における状態履歴情報を例示する図である。
【図17】第10の実施の形態における読み出し条件テーブルを例示する図である。
【図18】第11の実施の形態における第2記憶部の記憶領域を例示する図である。
【発明を実施するための形態】
【0014】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。
【0015】
<1. 第1の実施の形態>
図1は、本発明に係るメモリシステム1を備えるコンピュータシステムを示す図である。コンピュータシステムは、本発明に係るメモリシステム1と、一般的なコンピュータとしての機能を有するホストコンピュータ10とを備えている。
【0016】
メモリシステム1は、主に、ROM2と、セキュリティメモリ3とを備えている。本実施の形態におけるメモリシステム1は、ホストコンピュータ10のカードスロット(図示せず。)に対して着脱自在に構成されている。
【0017】
すなわち、メモリシステム1がホストコンピュータ10のカードスロットに装着されると、メモリシステム1とホストコンピュータ10とが電気的に接続され、メモリシステム1にホストコンピュータ10から電力が供給されて、メモリシステム1が動作可能な状態となる。一方、メモリシステム1がカードスロットから取り外されると、メモリシステム1は可搬性の記憶媒体として機能し、ユーザはメモリシステム1を自由に持ち運ぶことが可能となる。このようなメモリシステム1としては、例えば、メモリカードやゲームカセットが該当するがこれに限定されるものではない。
【0018】
図1に示すように、ROM2は、第1制御部20と、保護対象の情報であるプログラム22を格納する第1記憶部21とを備えている。本実施の形態におけるROM2は、一体型の半導体集積回路(ワンチップ構造の回路)としての構造を有している。
【0019】
第1制御部20は、ホストコンピュータ10からの要求に応じて、第1記憶部21に格納されている各種データを読み出してホストコンピュータ10に出力する機能を有している。また、第1制御部20は、ホストコンピュータ10との間で、第1記憶部21に格納されたデータ(保護対象の情報)に対するセキュリティ機能を提供する。第1制御部20が提供するセキュリティ機能としては従来より提案されている様々な手法を適宜採用できるため、以下では詳細な説明は省略する。なお、本発明においては、ROM2に対するセキュリティ機能は必須ではなく、第1制御部20が特にセキュリティ機能を提供しないものでもよい。
【0020】
第1記憶部21は、複数の不揮発性の記憶素子が規則的に配列した構造を有している。本実施の形態における第1記憶部21を構成する記憶素子は、ホストコンピュータ10によるデータの書き込みができない素子である。したがって、ROM2は、メモリシステム1においては、読み取り専用の記憶装置(例えば、マスクROMやEPROMなど)として構成されている。なお、第1記憶部21を構成する記憶素子は、読み書き可能な記憶素子が採用されてもよい。
【0021】
第1記憶部21には、主に、プログラム22が記憶される。ただし、プログラム22以外にも、第1制御部20がセキュリティ機能を提供するために必要な他のデータや様々なコンテンツに関する情報などが第1記憶部21に格納されていてもよい。
【0022】
プログラム22は、保護対象の情報であり、ホストコンピュータ10によって実行される。そして、プログラム22には、ホストコンピュータ10によって実行されるときの当該プログラム22の進行状況がマーカーコード等により定義されている。以下の説明では、プログラム22の進行状況として、当該プログラム22には、N個の状態(C1,C2,・・・,C(N−1),CN)が定義されているものとする(Nは2以上の自然数)。
【0023】
本実施の形態では、プログラム22を起動したときの初期状態を「C1」とする。そして、プログラム22を実行中に状態が変化(遷移)するときには、現在の状態と遷移先の状態との相対的な差がプログラム22を実行することによりホストコンピュータ10に通知されるものとする(そのようにプログラム22が記述されているものとする)。
【0024】
なお、本実施の形態における説明では、現在の状態を、「C0」と称し、直前の状態を「C−1」と称し、遷移先の状態を「C1」と称する。そして、この「C0」は、現在、ホストコンピュータ10がプログラム22におけるどの部分を実行しているかを示す情報であり、ホストコンピュータ10のその時点における状態を示す情報(状態情報)である。なお、当然のことであるが、本実施の形態における「C0」は、C1,・・・,CNのいずれかである。
【0025】
セキュリティメモリ3は、第2制御部30と、第2記憶部31とを備えている。本実施の形態におけるセキュリティメモリ3は、ROM2と同様に、一体型の半導体集積回路として構築されている。このように、第2制御部30と第2記憶部31とが単一の回路で構成されると、不正な複製を企図する者は、例えば、重要情報330を読み出すことが困難であり、セキュリティメモリ3を容易に制御、観測をすることができない。したがって、メモリシステム1のセキュリティ機能が向上する。
【0026】
第2制御部30は、セキュリティメモリ3におけるセキュリティ機能を提供するセキュリティ回路を構成している。第2制御部30は、ホストコンピュータ10からの要求に応じて、第2記憶部31に格納されている各種データを読み出してホストコンピュータ10に出力する機能と、第2記憶部31に各種データを格納する機能とを有している。すなわち、第2制御部30は、第2記憶部31に対するアクセスを制御する機能を有している。また、第2制御部30は、第2記憶部31に格納されている情報を管理する機能を有しているが、第2制御部30の機能および動作の詳細については、後述する。
【0027】
図2は、第1の実施の形態における第2記憶部31の記憶領域を例示する図である。第2記憶部31は、複数の不揮発性の記憶素子が規則的に配列した構造を有している。本実施の形態における第2記憶部31を構成する記憶素子は、ホストコンピュータ10によるデータの読み出しのみならず、データの書き込みも可能な記憶素子(例えば、フラッシュメモリ)である。したがって、セキュリティメモリ3は、メモリシステム1において、読み書き可能な記憶装置として構成されている。
【0028】
図2に示すように、第2記憶部31の記憶領域には、ユーザ領域32とセキュリティ領域33とが定義されている。
【0029】
ユーザ領域32は、セーブデータ130が格納される領域である。ユーザ領域32に対して、ホストコンピュータ10は、一般的なフラッシュメモリと同等のアクセス制御により、データの格納、消去、読み出しが可能である。
【0030】
また、セキュリティ領域33は、重要情報330、読み出し条件テーブル331、および、状態履歴情報332が格納される領域である。
【0031】
セーブデータ130は、ホストコンピュータ10において作成され、メモリシステム1に転送されて格納されるデータであり、主に、プログラム22の実行を、当該セーブデータ130が作成された時点から再開させるときに読み出されるバックアップ用のデータである。このように、セーブデータ130を格納することにより、本実施の形態におけるセキュリティメモリ3は、データセーブ用のバックアップメモリとしても兼用されている。なお、セーブデータ130は、プログラム22を中断する際に、ユーザの指示により作成されるが、ホストコンピュータ10が自動的に(ユーザの指示によらずに)作成してもよい。
【0032】
重要情報330は、プログラム22(保護対象の情報)をホストコンピュータ10が使用するために、ホストコンピュータ10によって使用される情報である。すなわち、ホストコンピュータ10がプログラム22を実行し、正常に進行させ続けるためには、少なくとも特定の時点において重要情報330が必要となるようにプログラム22が予め記述されている。このような重要情報330としては、例えば、プログラム22の一部が相当する。本実施の形態におけるコンピュータシステムでは、ホストコンピュータ10は、適切なタイミングで、メモリシステム1から重要情報330を読み出して取得しておかなければ、プログラム22を正常に進行させ続けることが不可能な状態に陥る。
【0033】
また、重要情報330は、出力ファイルを1つの単位とする情報の集合体である。すなわち、重要情報330には、1つ以上の出力ファイルが含まれている。1つの出力ファイルとは、ホストコンピュータ10がプログラム22を実行しているときの、ある時点で必要となる一塊の情報とする。
【0034】
読み出し条件テーブル331は、メモリシステム1(第2記憶部31)から重要情報330を読み出すための条件を定義する情報である。より詳細には、読み出し条件テーブル331には、重要情報330に含まれる各出力ファイルを読み出すための条件と、当該条件に合致したときに読み出される出力ファイルの格納アドレス(セキュリティ領域33のアドレス)とが関連づけられて格納されている。
【0035】
状態履歴情報332は、プログラム22(保護対象の情報)の使用中におけるホストコンピュータ10の状態が、これまでに、どのような経緯を経て遷移してきたかを示す情報である。
【0036】
本実施の形態では、すでに説明したように、ホストコンピュータ10の現在の状態は「C0」であり、C1,・・・,CNのいずれかである。ここで、プログラム22を実行中におけるホストコンピュータ10の「C0」が、プログラム22の正常な進行に関して、逆行することなく遷移するように定義されるならば、状態履歴情報332にはせいぜいN個の状態が記録されるだけである(状況によって遷移しない状態が存在するならばN個より少ない場合もあり得る。)。
【0037】
もちろん、このように状態(C1,・・・,CN)を定義してもよい。しかし、そのような遷移は、「C0」が単純にインクリメントされていくだけであるため、第三者に見破られる可能性が高まり、セキュリティ上、ふさわしいとはいえない。したがって、本実施の形態では、「C0」は、プログラム22の実行状況によっては、直前の「C−1」に対して逆行することもあれば、飛ばされる(あるいは遷移しない)こともあるものとして定義する。
【0038】
例えば、正常な遷移ルートであっても、「C1」、「C3」、「C5」、「C3」と遷移して最後に「CN」となって終了する場合や、「C2」、「C6」、「C3」と遷移して最後に「C4」となって終了する場合など、「C0」の遷移順序や遷移回数に制限がなく、あらゆるパターンが想定できるものとする。だだし、プログラム22において「C0」の遷移ルートに制限を設けない場合であっても、論理上の制限を設けることはもちろん可能である。例えば、プログラム22の実行上、二者択一的な状態をそれぞれ「C4」と「C5」と定義し、両方の状態を遷移したことが記録された場合には論理的に「異常」であると判定するなどである。
【0039】
本実施の形態に採用するように、状態(C0)の遷移ルートに制限を設けない場合において、現実に遷移した全ての状態を、その遷移順も含めて状態履歴情報332に記録することはもちろん可能である。しかし、そのように構成すると、状態履歴情報332のサイズが膨大になる懸念があり、第2記憶部31の記憶容量を圧迫するという問題が生じ得る。
【0040】
例えば、遊技中のユーザが物語りを先に進めるためのアイテムを見つけることができなくて、「C3」と「C4」とを延々と繰り返したりすると、状態履歴情報332には「C3」、「C4」、「C3」、「C4」・・・と無限に状態が記録されることになる。このような場合まで想定して、状態履歴情報332のための記憶領域を確保しておくのは現実的ではない。
【0041】
そこで、プログラム22の進行に伴って状態履歴情報332の容量が増大することを抑制するために、本実施の形態における状態履歴情報332のフォーマットは、直近の過去における4つの状態および「C0」のみを、遷移順に格納するフォーマットとして決定されている。すなわち、現在の状態である「C0」を含めて、最大で5つの状態のみが遷移順に格納されるフォーマット(C−4,C−3,C−2,C−1,Cn)を採用する。
【0042】
例えば、状態がC1→C2→C5→C3→C4→C7→C8→C3→C5と遷移し現在の状態(C0)が「C9」となっているとき、状態履歴情報332には「C7」、「C8」、「C3」、「C5」、「C9」が順番に記録され、それ以前の状態は削除されている。そして、その後、状態が「C9」から「C8」に遷移すると、当該状態履歴情報332から最古の記録である「C7」が削除され、新しく更新された状態履歴情報332は「C8」、「C3」、「C5」、「C9」、「C8」が順番に記録されたものとなる。
【0043】
これにより、本実施の形態では、状態履歴情報332を格納する領域(第2記憶部31の記憶領域)として、最大で、5つの状態を記録できる容量を確保しておけばよいことになる。なお、状態履歴情報332において、記録する過去の状態は、直近の4つに限定されるものではない。4つより少なくてもよいし、4つより多くてもよい。また、過去の状態を記録しないというフォーマットでもよい。ただし、セキュリティの強度的には、記録される状態の数が多い方が、状態履歴情報332に記録される状態の遷移パターンが増えるので好ましい。
【0044】
図1に戻って、ホストコンピュータ10は、制御部11、入力装置14、出力装置15およびインタフェース16を備えている。また、ホストコンピュータ10は、図示しないカードスロットを備えており、当該カードスロットにメモリシステム1を装着することが可能である。
【0045】
制御部11は、各種のデータの演算を行うとともにホストコンピュータ10が備える各種ハードウェアを制御するCPU12と、各種のデータを記憶する記憶部13とを備えている。これにより、ホストコンピュータ10は、一般的なコンピュータとしての構成および機能を備えている。
【0046】
ホストコンピュータ10の制御部11は、第1記憶部21に格納されているプログラム22を第1制御部20を介して記憶部13にロードしつつ、実行する機能を有している。
【0047】
また、制御部11は、メモリシステム1に対して、適宜、コマンドを発行する。制御部11が発行するコマンドとしては、特に、プログラム読み出しコマンド(以下、「コマンドRP」と称する。)、重要情報読み出しコマンド(以下、「コマンドRI」と称する。)、状態制御コマンド(以下、「コマンドCC」と称する。)、状態読み出しコマンド(以下、「コマンドRC」と称する。)がある。
【0048】
プログラム読み出しコマンド(コマンドRP)は、ROM2の第1制御部20に対して発行されるコマンドであり、第1記憶部21に格納されているプログラム22の一部を出力するように要求するコマンドである。プログラム22は、ホストコンピュータ10におけるプログラム22の進行状況(すなわち、現在の状態である「C0」)に応じて、適宜、第1記憶部21から読み出して実行する必要がある。
【0049】
したがって、ホストコンピュータ10の制御部11は、「C0」に対応したコマンドRPを第1制御部20に対して出力することにより、「C0」に応じた追加のプログラム22を第1記憶部21から記憶部13にロードする。これにより、追加で読み出されたプログラム22がホストコンピュータ10において実行可能となり、これを実行することによりプログラム22が進行する。
【0050】
なお、以下では、「C0」に対応したコマンドRPを「コマンドRPCn」と称する。すなわち、「C0」が「C1」である場合に発行されるコマンドRPは、「コマンドRPC1」であり、「C0」が「CN」である場合に発行されるコマンドRPは、「コマンドRPCN」である。
【0051】
重要情報読み出しコマンド(コマンドRI)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、第2記憶部31に格納されている重要情報330(より詳細には出力ファイル)を出力するように要求するコマンドである。
【0052】
状態制御コマンド(コマンドCC)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、状態履歴情報332に記録されている現在の状態である「C0」を変更するように要求するコマンドである。コマンドCCは、変更先(遷移先)の状態(C1)を示す情報(付加情報)とともに、第2制御部30に出力される。
【0053】
本実施の形態では、コマンドCCに付加される情報は、「C1」と「C0」との定義順における相対的な差で示した情報とする。例えば、「C0」が「C10」であった場合において、コマンドCCとともに伝達される付加情報が「+2」であれば「C1」は「C10」から2つ進んだ「C12」であることを意味し、付加情報が「−2」であれば「C1」は「C10」から2つ戻った「C8」であることを意味する。
【0054】
状態読み出しコマンド(コマンドRC)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、状態履歴情報332に記録されている現在の状態である「C0」を出力するように要求するコマンドである。
【0055】
なお、制御部11は、この他にも、セーブデータ130を第2記憶部31に格納するためのコマンド(コマンドWU)や、セーブデータ130を読み出すコマンド(コマンドRU)など、様々なコマンドを発行する機能を有しているが、詳細は省略する。
【0056】
記憶部13は、CPU12の一時的なワーキングエリアとして使用されるRAM(一般的には、高速アクセス可能な揮発性の記憶装置が採用される。)や、ホストコンピュータ10の起動プログラム(図示せず)等を格納しておく読み取り専用のROMなどのハードウェアから構成されている。
【0057】
入力装置14は、ホストコンピュータ10に各種の情報を入力するために設けられる装置である。入力装置14としては、例えば、コントローラ、キーボード、タッチパネル、各種ポインタ、ジョイスティック等が該当するが、これらのすべてを備えている必要はないし、これらと異なる装置を備えていてもよい。
【0058】
出力装置15は、ホストコンピュータ10の各種状態をユーザに通知するために出力する装置である。出力装置15としては、例えば、液晶パネル、LED、ランプ、スピーカ、プリンタ等が該当するが、これらのすべてを備えている必要はないし、これらと異なる装置を備えていてもよい。
【0059】
インタフェース16は、メモリシステム1とホストコンピュータ10とを電気的に接続する機能を提供する。すなわち、メモリシステム1は、ホストコンピュータ10の図示しないカードスロットに物理的に装着され、インタフェース16に電気的に接続される。
【0060】
以上が、メモリシステム1を含むコンピュータシステムの構成および機能の説明である。次に、コンピュータシステムの動作を説明しつつ、本実施の形態における情報保護方法について説明する。
【0061】
図3は、第1の実施の形態におけるセキュリティメモリ3の動作を示す流れ図である。セキュリティメモリ3は、起動中のホストコンピュータ10にメモリシステム1が装着された状態で動作する。なお、以下において、ROM2(第1制御部20)の動作については、従来の技術を適用することが可能であるため、適宜説明を省略する。
【0062】
メモリシステム1が動作中において、セキュリティメモリ3の第2制御部30は、ホストコンピュータ10からの各種コマンドを受け付けることが可能な状態となっている(ステップS1,S4,S7)。以下、第2制御部30がホストコンピュータ10からのコマンドを受け付けることが可能となっている状態を「待ち受け状態」と称する。ただし、第2制御部30が待ち受け状態において受け付けることが可能なコマンドは図3に示すものに限定されるものではない。
【0063】
待ち受け状態において、ホストコンピュータ10からコマンドCC(状態制御コマンド)が入力されると(ステップS1においてYes)、第2制御部30は、遷移先の状態である「C1」を特定する(ステップS2)。具体的には、この時点の状態履歴情報332を参照して、当該状態履歴情報332に記録されている「C0」と、コマンドCCの付加情報とに基づいて、新たに遷移する「C1」を特定する。
【0064】
次に、特定した新たに遷移する「C1」に基づいて状態履歴情報332を更新する(ステップS3)。具体的には、この時点の状態履歴情報332における「C−4」を「C−3」で上書きし、「C−3」を「C−2」で上書きし、「C−2」を「C−1」で上書きし、「C−1」を「C0」で上書きし、「C0」をステップS2で特定した「C1」で上書きする。なお、「C−4」をステップS2で特定した「C1」で上書きして、現在の状態を示すポインタを移動させてもよい。
【0065】
待ち受け状態において、ホストコンピュータ10からコマンドRC(状態読み出しコマンド)が入力されると(ステップS4においてYes)、第2制御部30は、状態履歴情報332を参照し、当該状態履歴情報332に記録されている「C0(現在の状態)」を読み出す(ステップS5)。そして、第2制御部30は、ステップS5において読み出した「C0」を、ホストコンピュータ10に向けて出力する(ステップS6)。
【0066】
待ち受け状態において、ホストコンピュータ10からコマンドRI(重要情報読み出しコマンド)が入力されると(ステップS7においてYes)、第2制御部30は、状態履歴情報332を読み出す(ステップS8)。
【0067】
次に、読み出し条件テーブル331を参照し(ステップS9)、ステップS8で読み出した状態履歴情報332と合致する読み出し条件が、読み出し条件テーブル331に存在するか否かを判定する(ステップS10)。
【0068】
状態履歴情報332と合致する読み出し条件が読み出し条件テーブル331に存在しない場合(ステップS10においてNo)、第2制御部30は、ホストコンピュータ10にダミーデータを出力する(ステップS11)。
【0069】
図2において図示を省略しているが、本実施の形態における第2記憶部31には、ダミーデータ(プログラム22を進行するために使用することのない情報)がいくつか準備されている。そして、ステップS10においてNoの場合、第2制御部30は、ダミーデータテーブル(図示せず)を参照する。ダミーデータテーブルには、各ダミーデータを読み出すための条件と、当該条件に合致したときに読み出されるダミーデータの格納アドレスとが関連づけられて格納されている。第2制御部30は、当該ダミーデータテーブルから選択したダミーデータをステップS11において出力する。
【0070】
なお、ダミーデータの読み出し条件は、例えば、乱数に応じたランダムな条件であってもよいし、「C0」であってもよい。すなわち、現在の状態に応じたダミーデータが選択され、出力されてもよい。また、本実施の形態では、ステップS11においてダミーデータを出力するが、その代わりに、エラーを返す、あるいは、以降の動作を限定する、もしくは、何も受け付けない等の処理を行ってもよい。また、ダミーデータは複数用意されているうちから選択されることが好ましいが、常に同じダミーデータが出力されてもよい。あるいは、ダミーデータは予め準備されるのではなく、出力する際に、乱数などによって生成されてもよい。
【0071】
一方、状態履歴情報332と合致する読み出し条件が読み出し条件テーブル331に存在する場合(ステップS10においてYes)、第2制御部30は、合致した読み出し条件に対応している格納アドレスを、読み出し条件テーブル331から取得する。そして、第2制御部30は、取得したアドレスで示されるセキュリティ領域33に格納されている重要情報330を読み出して、ホストコンピュータ10に出力する(ステップS12)。
【0072】
図4は、第1の実施の形態における読み出し条件テーブル331を例示する図である。図4に示すように読み出し条件テーブル331には、読み出し条件と、重要情報330の出力ファイル(J1,J2,J3,・・・)とが関連づけられている。なお、実際の読み出し条件テーブル331では、直接、出力ファイルが格納され関連づけられるのではなく、すでに説明したように、出力ファイルの格納アドレスが格納され関連づけられている。
【0073】
図4に示す例では、出力ファイルJ1および出力ファイルJ2は、いずれも「C0」が「C5」のときにセキュリティメモリ3が出力する重要情報330である。このように、セキュリティメモリ3は、「C0」が同じであっても、状態の遷移ルートの違い(本実施の形態では、直近の過去の4つの状態の違い)によって、異なる重要情報330を出力することができる。一方で、出力ファイルJ1の読み出し条件として5つのパターンが定義されており、異なる遷移ルートであっても、同じ重要情報330を出力することもできる。したがって、プログラム22の作り方の多様性が得られる。
【0074】
また、すでに説明したように、出力ファイルJ1については読み出し条件として5つのパターンが定義されており、出力ファイルJ2の読み出し条件として2つのパターンが定義されている。すなわち、状態履歴情報332において「C0」が「C5」となっている状況において、上記の7つのパターンのみが許容され、これ以外のパターンでは、いずれの出力ファイルの読み出し条件も合致しないことになる。そして、その場合は、ステップS11が実行され、ダミーデータが出力される。
【0075】
また、図4に示す例では、読み出し条件テーブル331において、「C0」が「C1」ないし「C4」のときに出力される重要情報330が定義されていない。したがって、図4に示す例では、例えば、状態履歴情報332において「C0」が「C3」のときに、コマンドRIが入力されると、遷移ルートにかかわらず、読み出し条件に合致せず、ダミーデータが出力されることになる。このように、「C0」がC1,・・・,CNのいずれである場合にも、必ず何らかの重要情報330が出力されるように定義する必要はない。
【0076】
以上が第1の実施の形態におけるセキュリティメモリ3の動作である。次に、ホストコンピュータ10の動作を説明する。
【0077】
図5は、第1の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、図5に示される各工程は、特に断らない限り、ホストコンピュータ10の制御部11により実行される工程を示す。
【0078】
電源が投入されると、ホストコンピュータ10は、まず、所定の初期設定を実行する(ステップS21)。ステップS21では、記憶部13のROMに記憶されている起動プログラムがCPU12により実行され、ホストコンピュータ10の初期画面が出力装置15に表示される。
【0079】
初期設定が終了すると、ホストコンピュータ10は、メモリシステム1が装着されているか否かを判定する(ステップS22)。そして、メモリシステム1を検出すると、ホストコンピュータ10は、メモリシステム1(セキュリティメモリ3)に対してコマンドRCを発行し、セキュリティメモリ3から「C0」を取得する。ここでは、どの状態からプログラム22の実行を開始するのかを決定するために「C0」が要求される。
【0080】
次に、取得した「C0」に応じて、ホストコンピュータ10がメモリシステム1(ROM2)にコマンドRPC0を発行し、ROM2からコマンドRPC0に応じたプログラム22(「C0」から開始するために必要なプログラム22)を記憶部13にロードする(ステップS23)。そして、ホストコンピュータ10は、ロードしたプログラム22を実行することにより、プログラム進行処理(ステップS24)を開始する。
【0081】
プログラム進行処理は、入力装置14からプログラム22の終了が指示されるまで、ステップS25においてNoと判定されることにより、継続される。ただし、プログラム22の終了は入力装置14からの指示に限定されるものではなく、他の方法で指示されてもよい。
【0082】
図6は、第1の実施の形態におけるプログラム進行処理を示す流れ図である。ホストコンピュータ10は、プログラム22を進行させつつ、プログラム22を進行させることにより検出される各種の状態を監視している(ステップS30,S32,S37)。ただし、ホストコンピュータ10が監視している状態は、図6に示されるものに限定されるものではない。
【0083】
プログラム進行処理において、プログラム22が進行することにより、状態遷移がされると(ステップS30においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドCCを発行する(ステップS31)。
【0084】
コマンドCCが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、遷移先の状態である「C1」に応じて、状態履歴情報332を更新する。このようにして、コンピュータシステムは、状態履歴情報332を管理する。
【0085】
プログラム進行処理において、新たに追加のプログラム22が要求されると(ステップS32においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドRCを発行する(ステップS33)。
【0086】
コマンドRCが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、状態履歴情報332を参照して、「C0」をホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、現在の状態「C0」を取得する(ステップS34)。
【0087】
このように、本実施の形態におけるホストコンピュータ10は、例えば、記憶部13に現在の状態である「C0」を保持したりしていないが、コマンドRCをセキュリティメモリ3に発行することにより、必要に応じて、「C0」を問い合わせることができる。
【0088】
次に、ホストコンピュータ10は、メモリシステム1(ROM2)に対して、ステップS34において取得した「C0」に対応するコマンドRPC0を発行する(ステップS35)。
【0089】
コマンドRPC0が発行されると、ROM2の第1制御部20が、ホストコンピュータ10の「C0」に応じたプログラム22の一部(追加のプログラム22)を第1記憶部21から読み出してホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、適切な、追加のプログラム22を取得する(ステップS36)。
【0090】
以降、ホストコンピュータ10は、ステップS36で取得したプログラム22を実行しつつ、プログラム進行処理を継続する。このように、ホストコンピュータ10は、新たなプログラム22が必要になるたびに、現在の状態である「C0」をメモリシステム1に通知して、必要なプログラム22を第1制御部20に要求し取得することができる。
【0091】
プログラム進行処理において、重要情報330が要求されると(ステップS37においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドRIを発行する(ステップS38)。
【0092】
コマンドRIが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、その時点の状態履歴情報332を用いて読み出し条件テーブル331を検索し、重要情報330から出力する出力ファイルを選択してホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、重要情報330(必要な出力ファイル)を取得する(ステップS39)。
【0093】
なお、コマンドRIが発行されたときの状態履歴情報332が、いずれの出力ファイルの読み出し条件とも一致しない場合、メモリシステム1からはダミーデータが出力される。したがって、この場合、ステップS39では、重要情報330を取得できていないことになるが、プログラム22を実行中のホストコンピュータ10はメモリシステム1から出力されたダミーデータが本来取得すべき重要情報330であるか否かを判定する術はない。したがって、ダミーデータを取得した場合も、ホストコンピュータ10は、そのままプログラム進行処理を継続する。そして、現実に重要情報330を使用する段階になって、初めて、ホストコンピュータ10はプログラム22の続行が不可能な状態に陥り、停止することになる。
【0094】
以上のように、第1の実施の形態におけるメモリシステム1は、ホストコンピュータ10に接続され、保護対象の情報としてのプログラム22を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御する第1制御部20と、プログラム22の使用中におけるホストコンピュータ10の状態の履歴情報(状態履歴情報332)と読み出し条件テーブル331によって読み出し条件に関連づけられた重要情報330とを格納する第2記憶部31と、状態履歴情報332と読み出し条件テーブル331における読み出し条件とに応じて第2記憶部31に格納されている重要情報330をホストコンピュータ10に出力する第2制御部30とを備える。
【0095】
これにより、ホストコンピュータ10の状態の履歴(状態履歴情報332)に応じて重要情報330が選択されるため、すべての重要情報330を確実に読み出して複製するためには、発生しうるホストコンピュータの状態の履歴(状態履歴情報332)をすべて再現しなければならない。したがって、プログラム22の不正な複製を作成することが困難となり、プログラム22の無断実施を抑制することができる。また、既存のホストコンピュータ10の設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。
【0096】
また、例えば、ゲームタイトルごとや改訂版ごとに頻繁に読み出し条件や定義される状態等を変更でき、不正な複製者は、その度に解析作業を行わなければならず、違法な複製品(海賊版)を製造するまでに一定以上の時間を要することとなる。特に、プログラム22がゲームソフトウェアなどである場合、発売開始直後から海賊版が流通すると正規版の売れ行きに大きな影響がでてしまうという特性がある。したがって、このような市場の製品においては、例え完全に海賊版の製造を防止できなくとも、発売開始から一定期間でも海賊版の出現を遅らせることができるならばその効果は大きいといえる。
【0097】
なお、重要情報330を、ホストコンピュータ10が使用することのない情報とし、単に、重要情報330を読み出すことができたか否かのみで、正常または異常を判定することも可能である。しかし、このように構成すると、常に重要情報330が読み出せたかのように振る舞うプログラム(例えば重要情報330を読み出すルーチンを削除したプログラムなど)に書き換えるだけで、実質的にプログラム22を実行することができる状態にされるおそれがある。しかし、重要情報330は、プログラム22をホストコンピュータ10が使用するために、ホストコンピュータ10によって現実に使用される情報であるため、第三者は、現実に、重要情報330を読み出さない限り、プログラム22の正常な実行が不可能な状態に陥る。したがって、セキュリティレベルが向上する。
【0098】
また、第2制御部30は、ホストコンピュータ10からの状態制御コマンドに応じて状態履歴情報332を更新する。したがって、複雑な処理や、特殊なハードウェアを用いることなく実現できる。
【0099】
なお、セキュリティ強化の側面からは、正常に読み出される重要情報330は、プログラム22を進行させるときに必ずホストコンピュータ10が使用する情報とし、これが読み出されていない限り、プログラム22が停止するように構成することが好ましい。しかし、読み出された重要情報330が、ホストコンピュータ10において必ず使用されなければならないわけではない。
【0100】
例えば、図4に示す例において、出力ファイルJ1および出力ファイルJ2は、ともに現在の状態である「C0」が「C5」のときに出力される重要情報330である。しかし、出力ファイルJ1が出力される状況では、出力ファイルJ1が取得されていなければプログラム22が停止するが、出力ファイルJ2が出力される状況では出力ファイルJ2が取得されていなくてもプログラム22が停止しないといった設計も可能である。すなわち、出力ファイルJ2が出力される状況とは、プログラム22の進行状況としては正常である(停止させる必要はない)が、特に、重要情報330は必要ないという状況として定義してもよい。
【0101】
もちろん、このような場合において、そもそも出力ファイルJ2を読み出し条件テーブル331に定義しないことも可能である。その場合は、上記状況においては、メモリシステム1からダミーデータが出力されることになり、ダミーデータが出力される状況が直ちに「異常」と判定する状況ではないことになる。
【0102】
逆に、上記のように出力ファイルJ2を使用しない情報とするならば、出力ファイルJ2はダミーデータであるとも言える。すなわち、重要情報330には、ホストコンピュータ10において使用されないダミーデータが含まれていてもよい。
【0103】
また、重要情報330はプログラム22を継続して進行させるときに使用される情報(例えば、プログラム22の一部。)として説明した。しかし、例えば、重要情報330の読み出しに失敗したときに出力されるダミーデータがプログラム22を停止させる情報として構成されていてもよい。すなわち、プログラム22をホストコンピュータ10が継続して使用するために必要となるのは「重要情報330が正常に読み出されることによって、正常な状態と判定されること」であって、取得された重要情報330が現実に使用されなければならないわけではない。ただし、セキュリティ強化の側面からは、すでに説明したように、正常に取得された重要情報330が、プログラム22を進行させる上で、使用されるように構成しておくことが好ましい。
【0104】
<2. 第2の実施の形態>
第1の実施の形態では、読み出し条件テーブル331における各出力ファイル(重要情報330)の読み出し条件は、いずれもホストコンピュータ10の状態の履歴情報(状態履歴情報332)の全体であった。しかし、履歴情報の一部を読み出し条件とすることも可能である。
【0105】
図7は、第2の実施の形態における読み出し条件テーブル331aを例示する図である。以下、第2の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0106】
図7において「*」は、どの状態に遷移していてもよいことを意味する、いわばワイルドカードとする。図7に示す例では、出力ファイルJ1の読み出し条件は、4回前の状態である「C−4」、3回前の状態である「C−3」および2回前の状態である「C−2」については「*」となっており、2回以上前においては、どのような状態に遷移していてもよい。ただし、出力ファイルJ1の読み出し条件においては、直前の状態である「C−1」が「C1」であり、かつ、現在の状態である「C0」が「C2」であることから、出力ファイルJ1は、「C0」が「C1」から「C2」に遷移したときに読み出される重要情報330として定義されている。
【0107】
このように、状態履歴情報332に、5つの状態が順次に記録されている場合でも、必ず、5つの状態を読み出し条件に使用しなければならないわけではない。図7に示す出力ファイルJ1,J2のように、直近の状態の遷移のみで選択するように構成してもよい。
【0108】
<3. 第3の実施の形態>
上記実施の形態におけるホストコンピュータ10の状態の履歴情報(状態履歴情報332)は、現在の状態を含めて、最大で5つの状態のみが遷移順に格納されるフォーマット(C−4,C−3,C−2,C−1,C0)であった。しかし、ホストコンピュータ10の状態の履歴情報は、このようなフォーマットに限定されるものではない。
【0109】
図8は、第3の実施の形態における状態履歴情報332aを例示する図である。以下、第3の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0110】
第3の実施の形態における状態履歴情報332aは、第1の実施の形態における状態履歴情報332に相当する情報であり、第2記憶部31のセキュリティ領域33に格納されている情報である。ただし、状態履歴情報332aのフォーマットは、状態履歴情報332のフォーマットとは異なっている。
【0111】
状態履歴情報332aでは、プログラム22において定義されているC1,・・・,CNが、それぞれ「0」、「1」、「2」のいずれかの値と関連づけられている。そして、「0」に関連づけられているものは、過去に遷移したことが「ない」ことを示している。また、「1」に関連づけられているものは、過去に遷移したことが「ある」ことを示している。さらに、「2」に関連づけられているものは、「C0」であることを示している。図8に示す例では、これまでに、「C2」、「C(N−1)」および「CN」には遷移したことがなく、「C1」および「C3」には遷移したことがあり、「C0」は「C(N−2)」である。
【0112】
このようなフォーマットの状態履歴情報332aの容量は、例えプログラム22が実行される過程で同じ状態の遷移が繰り返されたりしたとしても、第1の実施の形態と同様にほぼ一定であり、無限に増大したりはしない。
【0113】
第3の実施の形態における第2制御部30は、コマンドCCが発行されると、「2」を「1」に変更し、遷移先の状態である「C1」を特定して、特定した「C1」に関連づけられている値を「2」に変更する。例えば、図8に示す状態履歴情報332aについて、新たに、「C0」が「C3」に遷移したとすると、第2制御部30は、「C(N−2)」に関連づけられている「2」を「1」に書き換えるとともに、「C3」に関連づけられている「1」を「2」に書き換えることにより、状態履歴情報332aを更新する。
【0114】
また、ホストコンピュータ10がコマンドRCを発行すると、第2制御部30は、「2」に関連づけられている状態を現在の状態である「C0」として読み出し、ホストコンピュータ10に出力する。すなわち、第3の実施の形態における状態履歴情報332aにおいても、メモリシステム1は、適切に状態を管理することができるとともに、「C0」を特定して、コマンドRCに応じて出力できるように構成されている。
【0115】
図9は、第3の実施の形態における読み出し条件テーブル331bを例示する図である。第3の実施の形態では、状態履歴情報332aのフォーマットが第1の実施の形態における状態履歴情報332と異なり、履歴として記録されている状態の表現方法(フォーマット)が異なっている。したがって、読み出し条件テーブル331bに規定されている読み出し条件も第1の実施の形態における読み出し条件テーブル331とは異なっている。
【0116】
図9に示す例では、「C1」の欄は、「1」または「2」となっており、「0」が存在しない。すなわち、初期状態である「C1」を経由していない場合は、重要情報330が出力されないことを示している(ダミーデータが出力される)。このように、プログラム22の進行状況において、必須の状態を定義することもできる。
【0117】
また、重要情報330のうち、出力ファイルJ1は、「C0」が「C1」であり、他の状態に遷移したことがないという条件で読み出される。すなわち、出力ファイルJ1は初期状態で出力される重要情報330である。
【0118】
また、出力ファイルJ2は、「C1」に遷移したことがあり、「C0」が「C2」か、または「C3」のときに読み出される。すなわち、本実施の形態においても、異なる読み出し条件で、同じ重要情報330を出力することも可能である。
【0119】
さらに、図9に示す例では、図8に示す状態履歴情報332aのときには、出力ファイルJ4が出力されることも分かる。
【0120】
なお、本実施の形態では、読み出し条件テーブル331aにおいて「2」を用いることにより現在の状態である「C0」が何であるかを読み出し条件とした。しかし、状態履歴情報332aにおける「2」を、単に、すでに遷移したことのある状態とみなして「1」に読み替えるように構成してもよい。あるいは逆に、状態履歴情報332aにおける「2」を、未だ、進行が完了していない状態とみなして「0」に読み替えるように構成してもよい。
【0121】
以上のように、第3の実施の形態における状態履歴情報332aおよび読み出し条件テーブル331bを用いても、第1の実施の形態と同様の効果を得ることができる。
【0122】
特に、直近の遷移ルートではなく、どのイベントをすでに体験したかに応じて、出力する重要情報330を変化させたい場合には、第1の実施の形態よりも第3の実施の形態の方が適している。
【0123】
<4. 第4の実施の形態>
ホストコンピュータ10の状態の履歴情報において、過去の状態をビットで表現したフォーマットとすることも可能である。
【0124】
図10は、第4の実施の形態における状態履歴情報332bを例示する図である。以下、第4の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0125】
第4の実施の形態におけるプログラム22では、第1の実施の形態と同様に、プログラム22の進行状況を示す状態として、C1,・・・,CNが定義されている。そして、状態履歴情報332bには、N桁のビットで表現される過去の状態に、現在の状態である「C0」が付加されたフォーマットとなっている。
【0126】
そして、過去の状態は、1桁目(Bit 0)が「C1」に対応し、N桁目(Bit N-1)が「CN」に対応する。なお、図10に示す例は、第3の実施の形態において図8に示した状態と同一の状態を表現している。
【0127】
このように構成した場合も、上記実施の形態と同様の効果を得ることができる。
【0128】
<5. 第5の実施の形態>
第3の実施の形態では、1回でも過去に遷移したことのある状態は、状態履歴情報332aにおいて「1」が関連づけられ、その後「2」に戻ることはあっても、再び「0」に戻ることはない。しかし、状態履歴情報332aにおいて、一度、「1」に変更された状態について、再び「0」に戻ることを許容するように構成することも可能である。
【0129】
例えば、アイテムの所持状態に応じて重要情報330を変化させるようにプログラム22を設計する場合、アイテムを所持している状態を「1(所持)」、所持していない状態を「0(非所持)」と定義できる。このように定義すると、消費したアイテムについては、消費したとき(状態変更のとき)に、当該アイテムの状態を「0」に変更することになる。
【0130】
ところで、第5の実施の形態のように、アイテムの所持状況を状態履歴情報332aとして定義した場合において、ホストコンピュータ10からのコマンドRCに対して、「最新に状態が変化したアイテムを示す情報」を出力してもあまり意味がない。このような場合には、アイテムの入手状況一覧(すなわち、本実施の形態では状態履歴情報332a)そのものが現在の状態である「C0」を表現しているといえる。
【0131】
すなわち、プログラム22における「状態」の定義の仕方によっては、メモリシステム1は、当該状態の履歴情報(本実施の形態では状態履歴情報332a)の一部ではなく、当該履歴情報の全体をホストコンピュータ10に対して出力するようにしてもよい。
【0132】
<6. 第6の実施の形態>
ホストコンピュータ10の状態の履歴情報のフォーマットは、上記の実施の形態に示した状態履歴情報332,332a,332bに採用されたフォーマットに限定されるものではない。
【0133】
図11は、第6の実施の形態における状態履歴情報332cを例示する図である。以下、第6の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0134】
第6の実施の形態における状態履歴情報332cは、第1の実施の形態における状態履歴情報332に相当する情報であり、第2記憶部31のセキュリティ領域33に格納されている情報である。ただし、状態履歴情報332cのフォーマットは、状態履歴情報332のフォーマットと異なっている。
【0135】
状態履歴情報332cでは、プログラム22において定義されているC1,・・・,CNが、シーケンス番号(遷移した順番)と関連づけられるフォーマットを採用している。
【0136】
なお、状態履歴情報332cにおいて、シーケンス番号の初期値は「0」とする。したがって、状態履歴情報332cにおいて「0」が関連づけられている「状態」は、第3の実施の形態における状態履歴情報332aと同様に、過去に遷移したことがない「状態」を示している。
【0137】
第6の実施の形態における第2制御部30は、コマンドCC(状態制御コマンド)を受け付けると、まず、状態履歴情報332cに記録されているシーケンス番号を検索して最大値を取得し、取得した最大値に「1」を加えて新たなシーケンス番号を作成する。次に、例えば、第1の実施の形態と同様の手法で遷移先の状態である「C1」を特定し、作成した新たなシーケンス番号を当該「C1」に関連づける。
【0138】
例えば、図11に示す例において、次に、「C0」が「C4」に遷移し、コマンドCCが発行された場合には、「C4」に関連づけられているシーケンス番号が「2」から「11」に書き換えられる。
【0139】
第6の実施の形態における状態履歴情報332cにおいて、「C0」は最も大きなシーケンス番号に関連連れられている「状態」となる。したがって、第6の実施の形態における第2制御部30は、コマンドRCを受け付けると、状態履歴情報332cのシーケンス番号の最も大きい「状態」を検索して読み出し、「C0」としてホストコンピュータ10に出力する。図11に示す例では、コマンドRCに対して「C1」が出力される。
【0140】
第6の実施の形態における状態履歴情報332cでは、シーケンス番号の最大値により、遷移回数が記録されることになる。したがって、第6の実施の形態では、プログラム22の遷移回数を読み出し条件として、重要情報330を出力するように構成することができる。
【0141】
また、第6の実施の形態における状態履歴情報332cでは、シーケンス番号を比較することにより、いずれの「状態」が新しいかを判定できる。したがって、複数の「状態」において、直近の遷移順を再現できるので、これを読み出し条件として、重要情報330を出力することもできる。例えば、図11に示す例では、「C2」「C4」「C8」の直近の遷移順は「C4」→「C8」→「C2」であることがわかる(なお連続して遷移したか否かもわかる。)。そして、上記例に示したように「C4」に関連づけられているシーケンス番号が「2」から「11」に書き換えられた後には、直近の遷移順は「C8」→「C2」→「C4」に変化する。
【0142】
また、第6の実施の形態における状態履歴情報332cにおいて、シーケンス番号が「0」か否かを判定するとともに、シーケンス番号が最大値か否かを判定すれば、第3の実施の形態における状態履歴情報332aと同様の履歴フォーマットを抽出することが可能である。したがって、第6の実施の形態における状態履歴情報332cに対して、第3の実施の形態に示した読み出し条件テーブル331bを適用することも可能である。
【0143】
<7. 第7の実施の形態>
上記実施の形態では、プログラム22において定義されたC1,・・・,CNのすべてが、過去の状態としても記録対象となっていた。例えば、第1の実施の形態における状態履歴情報332には、直近の過去の4つの状態を記録するとして説明したが、この直近の過去の4つの状態として、すべてのC1,・・・,CNが記録対象であった。しかし、本発明は、このような実施の形態に限定されるものではない。
【0144】
図12は、第7の実施の形態における第2記憶部31の記憶領域を例示する図である。以下、第7の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0145】
第7の実施の形態における第2記憶部31では、セキュリティ領域33に、状態特定情報333が別途格納される。
【0146】
図13は、第7の実施の形態における状態特定情報333を例示する図である。
【0147】
状態特定情報333は、状態履歴情報332において、過去の状態として格納する必要がある状態を特定するための情報である。本実施の形態における状態特定情報333では、記録対象の状態を列挙するフォーマットとなっている。すなわち、図13に示す例では、「C1」、「C4」、および、「CN」のみが「過去の状態」としての記録対象であることを示している。
【0148】
第7の実施の形態における第2制御部30は、コマンドCCを受け付けると、第1の実施の形態におけるステップS2(図3)と同様に、遷移先の状態である「C1」を特定する。
【0149】
次に、第7の実施の形態における第2制御部30は、状態特定情報333を参照して、「C0」が、記録対象の状態であるか否かを確認する。すなわち、現在の状態である「C0」が、状態特定情報333に列挙されている「状態」に含まれているか否かを判定する。
【0150】
「C0」が記録対象の状態である場合、第7の実施の形態における第2制御部30は、第1の実施の形態と同様に、過去の状態についても書き換えを行う。すなわち、状態履歴情報332における「C−4」を「C−3」で上書きし、「C−3」を「C−2」で上書きし、「C−2」を「C−1」で上書きし、「C−1」を「C0」で上書きし、「C0」をステップS2で特定した「C1」で上書きする。
【0151】
一方、「C0」が記録対象の状態でない場合、第7の実施の形態における第2制御部30は、過去の状態については書き換えを行わない。すなわち、この場合には、現在の状態である「C0」のみが、遷移先の状態である「C1」に書き換えられて、状態履歴情報332が更新される。
【0152】
本実施の形態においても、「C0」は、コマンドCCが発行されるたびに書き換えられて、状態履歴情報332において管理される。したがって、例え、状態特定情報333に列挙されていない「C2」に状態が遷移したとしても、状態履歴情報332の「C0」には「C2」が記録される。
【0153】
このように構成することにより、本実施の形態においても、コマンドRCが発行されたときには、第1の実施の形態と同様に、第2記憶部31から「C0」が出力される。したがって、ホストコンピュータ10は、正常に「C0」をメモリシステム1から取得することができ、正常に追加のプログラム22を読み出すことができる。
【0154】
一方で、本実施の形態では、状態特定情報333に列挙されていない状態は、状態履歴情報332における過去の状態に記録されることはない。すでに説明したように、第三者による不正を抑制するためには、プログラム22の進行状況に応じて定義される「状態」の数は多い方がよい。しかし、このような「状態」が多数定義されると、プログラム22が進行するにつれて、頻繁に状態遷移が発生し、状態履歴情報332の容量が増大するおそれがある。
【0155】
しかし、第7の実施の形態におけるメモリシステム1では、過去の状態として記録する状態を特定するための状態特定情報333を第2記憶部31に格納しておき、状態履歴情報332を更新する際に第2制御部30が参照する。これにより、重要情報330を読み出すための条件として使用しない「状態」については、過去の状態として記録しないように構成することができる。
【0156】
本実施の形態では、状態履歴情報332における過去の状態は、「直近の過去の4つの状態」に限定されている。しかし、このような限定がない場合には、状態特定情報333を設けて、記録する過去の状態を予め取捨選択することによって、状態履歴情報332の容量の増大を大きく抑制することができる。
【0157】
<8. 第8の実施の形態>
過去の状態として記録する状態を特定するための情報は、第7の実施の形態に示しめした状態特定情報333に採用されたフォーマットに限定されるものではない。
【0158】
図14は、第8の実施の形態における状態特定情報333aを例示する図である。状態特定情報333aでは、過去の状態として記録する状態には「1」が関連づけられており、過去の状態として記録しない状態には「0」が関連づけられている。
【0159】
このようなフォーマットを採用した場合も、第7の実施の形態と同様の効果を得ることができる。
【0160】
<9. 第9の実施の形態>
過去の状態として記録する状態を特定するための情報は、第7および第8の実施の形態に示した状態特定情報333,333aにおいて採用されたフォーマットに限定されるものではない。
【0161】
図15は、第9の実施の形態における状態特定情報333bを例示する図である。第9の実施の形態における状態特定情報333bは、N桁のビットで表現される。すなわち、状態特定情報333bは、プログラム22において定義されている状態の数に対応する数のビットで表現され、各状態が一対一で各ビットに対応付けられる。
【0162】
第9の実施の形態では、1桁目(Bit 0)が「C1」に対応し、N桁目(Bit N-1)が「CN」に対応しているものとする。さらに、C1,・・・,CNのうち、過去の状態として記録する状態に対応するビットは「1」とし、過去の状態として記録しない状態に対応するビットは「0」とする。
【0163】
なお、図15に示す例では、表示を省略しているビットも含めて、「Bit 4」から「Bit N-2」まで、すべて「0」となっており、「C5」から「C(N−1)」までの状態は、過去の状態として記録しない状態として定義されているものとする。すなわち、図15に示す例は、第7の実施の形態において図13に示した例と同一の意味を有している。
【0164】
図16は、第9の実施の形態における状態履歴情報332dを例示する図である。第9の実施の形態における状態履歴情報332dは、3桁のビットで表現される過去の状態に、現在の状態である「C0」が付加されたフォーマットとなっている。
【0165】
状態履歴情報332dにおいて、過去の状態を格納するために必要なビット数は、状態特定情報333bにおいて「1」であったビットの数である。図15に示す例では、「1」であったビットは3つであるから、図16に示す状態履歴情報332dにおける過去の状態を表現するためのビット数は「3」となっている。
【0166】
ここで、過去の状態を表現する各ビットは、状態特定情報333bにおいて「1」であったビットのそれぞれに対応している。すなわち、状態特定情報333bにおいて「1」であった「Bit 0」、「Bit 3」、および、「Bit N-1」が、それぞれ状態履歴情報332dの過去の状態を表現する「Bit 0」、「Bit 1」、および、「Bit 2」に対応している。したがって、状態履歴情報332dにおいて過去の状態を表現する「Bit 0」、「Bit 1」、および、「Bit 2」は、それぞれプログラム22において定義されている「状態」のうちの「C1」、「C4」、および、「CN」に対応している。
【0167】
このように、過去の状態として記録する状態を特定するための情報(状態特定情報333b)をビットで表現したフォーマットとした場合も、上記実施の形態と同様の効果を得ることができる。
【0168】
<10. 第10の実施の形態>
上記実施の形態では、重要情報330を読み出すための条件に、現在の状態である「C0」を用いていた。しかし、「C0」ではなく、過去の状態のみを読み出し条件として重要情報330を読み出すこともできる。
【0169】
図17は、第10の実施の形態における読み出し条件テーブル331cを例示する図である。以下、第10の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0170】
図17に示すように、読み出し条件テーブル331cには、「C0」が定義されていない。このような読み出し条件テーブル331cを参照する場合、第2制御部30は、過去において「C1」、「C4」、および、「CN」に遷移したことがあるか否かで重要情報330(出力ファイル)を出力するか否かを判定することになる。例えば、図17に示す例では、「C1」に遷移したことがない場合には、重要情報330が読み出されることはないことを示している。
【0171】
なお、読み出し条件テーブル331cにおいて、読み出し条件をビットで表現するようにしてもよい。また、第10の実施の形態のように、読み出し条件として現在の状態である「C0」を用いない場合でも、状態履歴情報332には、現在の状態である「C0」は格納されており、現在の状態である「C0」は履歴としては管理される。
【0172】
<11. 第11の実施の形態>
上記実施の形態では、第1記憶部21からプログラム22を読み出すための指標となるホストコンピュータ10の状態と、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態とが同じであった(共通の指標を用いていた)。しかし、これらは互いに独立していてもよい。
【0173】
第11の実施の形態では、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態としては、上記実施の形態と同様に、C1,・・・,CNを定義する。一方で、第1記憶部21から、新たにプログラム22を追加して読み出すための指標となるホストコンピュータ10の状態として、M個の状態、PC1,・・・,PCMを定義する(Mは2以上の自然数)。
【0174】
図18は、第11の実施の形態における第2記憶部31の記憶領域を例示する図である。以下、第11の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0175】
第11の実施の形態における第2記憶部31では、セキュリティ領域33に、状態管理情報334が別途格納される。そして、状態管理情報334は、現在の状態である「PC0」を示す情報である。
【0176】
第11の実施の形態における第2制御部30は、ホストコンピュータ10からコマンドCC(第1の状態制御コマンド)を受け付けると、第1の実施の形態と同様に状態履歴情報332の「C0」を更新する。一方で、ホストコンピュータ10からコマンドCPC(第2の状態制御コマンド)を受け付けると、状態管理情報334の現在の状態「PC0」を更新する。
【0177】
さらに、第11の実施の形態における第2制御部30は、ホストコンピュータ10からコマンドRC(状態読み出しコマンド)を受け付けると、状態履歴情報332ではなく、状態管理情報334から現在の状態である「PC0」を読み出して、ホストコンピュータ10に対して出力する。
【0178】
以上のように、第11の実施の形態におけるメモリシステム1は、第1記憶部21からプログラム22を読み出すための指標となるホストコンピュータ10の状態と、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態とを互いに独立した状態として定義する。これにより、重要情報330を読み出すために管理している情報(状態履歴情報332)をホストコンピュータ10に対して秘匿することができる。
【0179】
なお、PC1,・・・,PCMについては、セキュリティメモリ3(第2記憶部31)に格納して管理せずに、記憶部13に格納するなどして、ホストコンピュータ10とROM2との間で管理するように構成してもよい。
【0180】
また、第11の実施の形態において定義した2種類の状態(C1,・・・,CN、およびPC1,・・・,PCM)を互いに組み合わせて、重要情報330の読み出し条件としてもよい。あるいは、3種類以上の状態を定義してもよい。
【0181】
<12. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0182】
例えば、上記実施の形態における第2記憶部31は一体形成の記憶装置として構成されている。しかし、第2記憶部31を複数の記憶装置から構成してもよい。その場合、例えば、状態履歴情報332やセーブデータ130のように更新が必要なデータを格納する記憶装置はデータの書き込みも可能な記憶素子を採用し、重要情報330や読み出し条件テーブル331のように更新不要なデータを格納する記憶装置はデータの書き込みができない記憶素子を採用するようにしてもよい。
【0183】
また、第1記憶部21と第2記憶部31とを単一の半導体集積回路として構成するようにしてもよい。すなわち、メモリシステム1を単一の半導体集積回路として構築してもよい。
【0184】
また、重要情報330を構成する1つの出力ファイルは、分割されて出力されてもよい。すなわち、ホストコンピュータ10において必要となるまでに、ホストコンピュータ10によって1つの出力ファイルを構成する全ての情報が取得されるならば、1つの出力ファイルを読み出すために必要な読み出し回数は、必ずしも1回でなくてよい。
【0185】
また、セキュリティメモリ3は、状態履歴情報332や、読み出し条件テーブル331等を、図示しない第2制御部30のRAMやバッファに読み出しておいて使用するようにしてもよい。
【0186】
また、状態履歴情報332,332a,332b,332c,332dを更新したときなどに、第2制御部30が、正常な履歴(正常な遷移ルート)であるか否かを判定するようにしてもよい。このようにして「異常」が検出されたときには、以後、重要情報330が読み出せないように構成してもよい。ただし、状態履歴情報332,332a,332b,332c,332dが異常であることが、第三者に分かりにくいように実装されることが好ましい。
【0187】
また、ホストコンピュータ10が発行する各種のコマンドは、第1制御部20および第2制御部30が解読できる暗号により暗号化されていてもよい。すなわち、本発明におけるセキュリティ機能は、他のセキュリティ機能と重複して実装されてもよい。
【0188】
また、上記実施の形態に示した各工程は、あくまでも例示であって、これに限定されるものではない。すなわち、同様の効果が得られるならば、各工程における処理内容や各工程の実行順は、適宜、変更されてもよい。
【0189】
また、ホストコンピュータ10の状態として定義した、C1,・・・,CNに、それぞれ何回遷移したかが分かるように状態履歴情報332に記録し、これを重要情報330を読み出すための読み出し条件としてもよい。例えば、「C2」に5回以上、「C4」に10回以上遷移し、かつ、「C3」には1回も遷移していないときに、重要情報330の出力ファイルJ5を出力するといった構成も可能である。
【符号の説明】
【0190】
1 メモリシステム
10 ホストコンピュータ
2 ROM
20 第1制御部
21 第1記憶部
22 プログラム
3 セキュリティメモリ
30 第2制御部
31 第2記憶部
32 ユーザ領域
33 セキュリティ領域
330 重要情報
331,331a,331b,331c 読み出し条件テーブル
332,332a,332b,332c,332d 状態履歴情報
333,333a,333b 状態特定情報
334 状態管理情報
【技術分野】
【0001】
本発明は、記憶装置(例えば、半導体メモリなど)に格納された情報を保護する技術に関する。
【背景技術】
【0002】
従来より、ホストコンピュータに接続される記憶装置に記憶された保護対象の情報を不正な複製から保護する技術が知られている。例えば、そのような技術が特許文献1に記載されている。
【0003】
特許文献1には、ホストコンピュータと接続されるメモリシステムに、プログラムを格納した記憶装置(ROM)と、セキュリティ機能を備えたセキュリティチップとを設けている。そして、プログラムの一部を暗号化しておき、ホストコンピュータが当該プログラムの暗号を解読するために必要な複数の鍵データをセキュリティチップに格納する。このように構成することにより、ホストコンピュータは、セキュリティチップに格納された複数の鍵データを、セキュリティチップから正常に読み出さない限り、プログラムの実行が不可能となる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−258850号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところが、特許文献1に記載された技術において、鍵データが特定された場合には、プログラムの解読が可能になり、プログラムを無断で実施される可能性があるという問題があった。
【0006】
本発明は、上記課題に鑑みてなされたものであり、保護対象の情報の無断実施を抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の課題を解決するため、請求項1の発明は、ホストコンピュータに接続されるメモリシステムであって、保護対象の情報を格納する第1記憶部と、前記第1記憶部に対するアクセスを制御する第1制御部と、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部と、前記履歴情報と前記読み出し条件とに応じて前記第2記憶部に格納されている重要情報を前記ホストコンピュータに出力する第2制御部とを備える。
【0008】
また、請求項2の発明は、請求項1の発明に係るメモリシステムであって、前記重要情報は、前記保護対象の情報を前記ホストコンピュータが使用するために使用する情報である。
【0009】
また、請求項3の発明は、請求項1または2の発明に係るメモリシステムであって、前記第2制御部は、前記ホストコンピュータからの状態遷移命令に応じて前記履歴情報を更新する。
【0010】
また、請求項4の発明は、保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する記憶部と、前記履歴情報と前記読み出し条件とに応じて前記記憶部に格納されている重要情報を前記ホストコンピュータに出力する制御部とを備える。
【0011】
また、請求項5の発明は、ホストコンピュータに接続されるメモリシステムに格納される保護対象の情報を保護する情報保護方法であって、読み出し条件に関連づけられた重要情報を格納する工程と、前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報を記録する工程と、前記履歴情報と前記読み出し条件とに応じて重要情報を前記ホストコンピュータに出力する工程とを有する。
【発明の効果】
【0012】
請求項1ないし5に記載の発明は、保護対象の情報の使用中におけるホストコンピュータの状態の履歴情報と読み出し条件とに応じて重要情報をホストコンピュータに出力する。これにより、ホストコンピュータの状態の履歴に応じて重要情報が選択されるため、すべての重要情報を確実に読み出して複製するためには、発生しうるホストコンピュータの状態の履歴をすべて再現しなければならない。したがって、複製を作成することが困難となる。また、既存のホストコンピュータの設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。また、例えば、保護対象の情報ごとに変更できるので、一旦、セキュリティを破られても、容易に再構築できる。
【図面の簡単な説明】
【0013】
【図1】本発明に係るメモリシステムを備えるコンピュータシステムを示す図である。
【図2】第1の実施の形態における第2記憶部の記憶領域を例示する図である。
【図3】第1の実施の形態におけるセキュリティメモリの動作を示す流れ図である。
【図4】第1の実施の形態における読み出し条件テーブルを例示する図である。
【図5】第1の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図6】第1の実施の形態におけるプログラム進行処理を示す流れ図である。
【図7】第2の実施の形態における読み出し条件テーブルを例示する図である。
【図8】第3の実施の形態における状態履歴情報を例示する図である。
【図9】第3の実施の形態における読み出し条件テーブルを例示する図である。
【図10】第4の実施の形態における状態履歴情報を例示する図である。
【図11】第6の実施の形態における状態履歴情報を例示する図である。
【図12】第7の実施の形態における第2記憶部の記憶領域を例示する図である。
【図13】第7の実施の形態における状態特定情報を例示する図である。
【図14】第8の実施の形態における状態特定情報を例示する図である。
【図15】第9の実施の形態における状態特定情報を例示する図である。
【図16】第9の実施の形態における状態履歴情報を例示する図である。
【図17】第10の実施の形態における読み出し条件テーブルを例示する図である。
【図18】第11の実施の形態における第2記憶部の記憶領域を例示する図である。
【発明を実施するための形態】
【0014】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。
【0015】
<1. 第1の実施の形態>
図1は、本発明に係るメモリシステム1を備えるコンピュータシステムを示す図である。コンピュータシステムは、本発明に係るメモリシステム1と、一般的なコンピュータとしての機能を有するホストコンピュータ10とを備えている。
【0016】
メモリシステム1は、主に、ROM2と、セキュリティメモリ3とを備えている。本実施の形態におけるメモリシステム1は、ホストコンピュータ10のカードスロット(図示せず。)に対して着脱自在に構成されている。
【0017】
すなわち、メモリシステム1がホストコンピュータ10のカードスロットに装着されると、メモリシステム1とホストコンピュータ10とが電気的に接続され、メモリシステム1にホストコンピュータ10から電力が供給されて、メモリシステム1が動作可能な状態となる。一方、メモリシステム1がカードスロットから取り外されると、メモリシステム1は可搬性の記憶媒体として機能し、ユーザはメモリシステム1を自由に持ち運ぶことが可能となる。このようなメモリシステム1としては、例えば、メモリカードやゲームカセットが該当するがこれに限定されるものではない。
【0018】
図1に示すように、ROM2は、第1制御部20と、保護対象の情報であるプログラム22を格納する第1記憶部21とを備えている。本実施の形態におけるROM2は、一体型の半導体集積回路(ワンチップ構造の回路)としての構造を有している。
【0019】
第1制御部20は、ホストコンピュータ10からの要求に応じて、第1記憶部21に格納されている各種データを読み出してホストコンピュータ10に出力する機能を有している。また、第1制御部20は、ホストコンピュータ10との間で、第1記憶部21に格納されたデータ(保護対象の情報)に対するセキュリティ機能を提供する。第1制御部20が提供するセキュリティ機能としては従来より提案されている様々な手法を適宜採用できるため、以下では詳細な説明は省略する。なお、本発明においては、ROM2に対するセキュリティ機能は必須ではなく、第1制御部20が特にセキュリティ機能を提供しないものでもよい。
【0020】
第1記憶部21は、複数の不揮発性の記憶素子が規則的に配列した構造を有している。本実施の形態における第1記憶部21を構成する記憶素子は、ホストコンピュータ10によるデータの書き込みができない素子である。したがって、ROM2は、メモリシステム1においては、読み取り専用の記憶装置(例えば、マスクROMやEPROMなど)として構成されている。なお、第1記憶部21を構成する記憶素子は、読み書き可能な記憶素子が採用されてもよい。
【0021】
第1記憶部21には、主に、プログラム22が記憶される。ただし、プログラム22以外にも、第1制御部20がセキュリティ機能を提供するために必要な他のデータや様々なコンテンツに関する情報などが第1記憶部21に格納されていてもよい。
【0022】
プログラム22は、保護対象の情報であり、ホストコンピュータ10によって実行される。そして、プログラム22には、ホストコンピュータ10によって実行されるときの当該プログラム22の進行状況がマーカーコード等により定義されている。以下の説明では、プログラム22の進行状況として、当該プログラム22には、N個の状態(C1,C2,・・・,C(N−1),CN)が定義されているものとする(Nは2以上の自然数)。
【0023】
本実施の形態では、プログラム22を起動したときの初期状態を「C1」とする。そして、プログラム22を実行中に状態が変化(遷移)するときには、現在の状態と遷移先の状態との相対的な差がプログラム22を実行することによりホストコンピュータ10に通知されるものとする(そのようにプログラム22が記述されているものとする)。
【0024】
なお、本実施の形態における説明では、現在の状態を、「C0」と称し、直前の状態を「C−1」と称し、遷移先の状態を「C1」と称する。そして、この「C0」は、現在、ホストコンピュータ10がプログラム22におけるどの部分を実行しているかを示す情報であり、ホストコンピュータ10のその時点における状態を示す情報(状態情報)である。なお、当然のことであるが、本実施の形態における「C0」は、C1,・・・,CNのいずれかである。
【0025】
セキュリティメモリ3は、第2制御部30と、第2記憶部31とを備えている。本実施の形態におけるセキュリティメモリ3は、ROM2と同様に、一体型の半導体集積回路として構築されている。このように、第2制御部30と第2記憶部31とが単一の回路で構成されると、不正な複製を企図する者は、例えば、重要情報330を読み出すことが困難であり、セキュリティメモリ3を容易に制御、観測をすることができない。したがって、メモリシステム1のセキュリティ機能が向上する。
【0026】
第2制御部30は、セキュリティメモリ3におけるセキュリティ機能を提供するセキュリティ回路を構成している。第2制御部30は、ホストコンピュータ10からの要求に応じて、第2記憶部31に格納されている各種データを読み出してホストコンピュータ10に出力する機能と、第2記憶部31に各種データを格納する機能とを有している。すなわち、第2制御部30は、第2記憶部31に対するアクセスを制御する機能を有している。また、第2制御部30は、第2記憶部31に格納されている情報を管理する機能を有しているが、第2制御部30の機能および動作の詳細については、後述する。
【0027】
図2は、第1の実施の形態における第2記憶部31の記憶領域を例示する図である。第2記憶部31は、複数の不揮発性の記憶素子が規則的に配列した構造を有している。本実施の形態における第2記憶部31を構成する記憶素子は、ホストコンピュータ10によるデータの読み出しのみならず、データの書き込みも可能な記憶素子(例えば、フラッシュメモリ)である。したがって、セキュリティメモリ3は、メモリシステム1において、読み書き可能な記憶装置として構成されている。
【0028】
図2に示すように、第2記憶部31の記憶領域には、ユーザ領域32とセキュリティ領域33とが定義されている。
【0029】
ユーザ領域32は、セーブデータ130が格納される領域である。ユーザ領域32に対して、ホストコンピュータ10は、一般的なフラッシュメモリと同等のアクセス制御により、データの格納、消去、読み出しが可能である。
【0030】
また、セキュリティ領域33は、重要情報330、読み出し条件テーブル331、および、状態履歴情報332が格納される領域である。
【0031】
セーブデータ130は、ホストコンピュータ10において作成され、メモリシステム1に転送されて格納されるデータであり、主に、プログラム22の実行を、当該セーブデータ130が作成された時点から再開させるときに読み出されるバックアップ用のデータである。このように、セーブデータ130を格納することにより、本実施の形態におけるセキュリティメモリ3は、データセーブ用のバックアップメモリとしても兼用されている。なお、セーブデータ130は、プログラム22を中断する際に、ユーザの指示により作成されるが、ホストコンピュータ10が自動的に(ユーザの指示によらずに)作成してもよい。
【0032】
重要情報330は、プログラム22(保護対象の情報)をホストコンピュータ10が使用するために、ホストコンピュータ10によって使用される情報である。すなわち、ホストコンピュータ10がプログラム22を実行し、正常に進行させ続けるためには、少なくとも特定の時点において重要情報330が必要となるようにプログラム22が予め記述されている。このような重要情報330としては、例えば、プログラム22の一部が相当する。本実施の形態におけるコンピュータシステムでは、ホストコンピュータ10は、適切なタイミングで、メモリシステム1から重要情報330を読み出して取得しておかなければ、プログラム22を正常に進行させ続けることが不可能な状態に陥る。
【0033】
また、重要情報330は、出力ファイルを1つの単位とする情報の集合体である。すなわち、重要情報330には、1つ以上の出力ファイルが含まれている。1つの出力ファイルとは、ホストコンピュータ10がプログラム22を実行しているときの、ある時点で必要となる一塊の情報とする。
【0034】
読み出し条件テーブル331は、メモリシステム1(第2記憶部31)から重要情報330を読み出すための条件を定義する情報である。より詳細には、読み出し条件テーブル331には、重要情報330に含まれる各出力ファイルを読み出すための条件と、当該条件に合致したときに読み出される出力ファイルの格納アドレス(セキュリティ領域33のアドレス)とが関連づけられて格納されている。
【0035】
状態履歴情報332は、プログラム22(保護対象の情報)の使用中におけるホストコンピュータ10の状態が、これまでに、どのような経緯を経て遷移してきたかを示す情報である。
【0036】
本実施の形態では、すでに説明したように、ホストコンピュータ10の現在の状態は「C0」であり、C1,・・・,CNのいずれかである。ここで、プログラム22を実行中におけるホストコンピュータ10の「C0」が、プログラム22の正常な進行に関して、逆行することなく遷移するように定義されるならば、状態履歴情報332にはせいぜいN個の状態が記録されるだけである(状況によって遷移しない状態が存在するならばN個より少ない場合もあり得る。)。
【0037】
もちろん、このように状態(C1,・・・,CN)を定義してもよい。しかし、そのような遷移は、「C0」が単純にインクリメントされていくだけであるため、第三者に見破られる可能性が高まり、セキュリティ上、ふさわしいとはいえない。したがって、本実施の形態では、「C0」は、プログラム22の実行状況によっては、直前の「C−1」に対して逆行することもあれば、飛ばされる(あるいは遷移しない)こともあるものとして定義する。
【0038】
例えば、正常な遷移ルートであっても、「C1」、「C3」、「C5」、「C3」と遷移して最後に「CN」となって終了する場合や、「C2」、「C6」、「C3」と遷移して最後に「C4」となって終了する場合など、「C0」の遷移順序や遷移回数に制限がなく、あらゆるパターンが想定できるものとする。だだし、プログラム22において「C0」の遷移ルートに制限を設けない場合であっても、論理上の制限を設けることはもちろん可能である。例えば、プログラム22の実行上、二者択一的な状態をそれぞれ「C4」と「C5」と定義し、両方の状態を遷移したことが記録された場合には論理的に「異常」であると判定するなどである。
【0039】
本実施の形態に採用するように、状態(C0)の遷移ルートに制限を設けない場合において、現実に遷移した全ての状態を、その遷移順も含めて状態履歴情報332に記録することはもちろん可能である。しかし、そのように構成すると、状態履歴情報332のサイズが膨大になる懸念があり、第2記憶部31の記憶容量を圧迫するという問題が生じ得る。
【0040】
例えば、遊技中のユーザが物語りを先に進めるためのアイテムを見つけることができなくて、「C3」と「C4」とを延々と繰り返したりすると、状態履歴情報332には「C3」、「C4」、「C3」、「C4」・・・と無限に状態が記録されることになる。このような場合まで想定して、状態履歴情報332のための記憶領域を確保しておくのは現実的ではない。
【0041】
そこで、プログラム22の進行に伴って状態履歴情報332の容量が増大することを抑制するために、本実施の形態における状態履歴情報332のフォーマットは、直近の過去における4つの状態および「C0」のみを、遷移順に格納するフォーマットとして決定されている。すなわち、現在の状態である「C0」を含めて、最大で5つの状態のみが遷移順に格納されるフォーマット(C−4,C−3,C−2,C−1,Cn)を採用する。
【0042】
例えば、状態がC1→C2→C5→C3→C4→C7→C8→C3→C5と遷移し現在の状態(C0)が「C9」となっているとき、状態履歴情報332には「C7」、「C8」、「C3」、「C5」、「C9」が順番に記録され、それ以前の状態は削除されている。そして、その後、状態が「C9」から「C8」に遷移すると、当該状態履歴情報332から最古の記録である「C7」が削除され、新しく更新された状態履歴情報332は「C8」、「C3」、「C5」、「C9」、「C8」が順番に記録されたものとなる。
【0043】
これにより、本実施の形態では、状態履歴情報332を格納する領域(第2記憶部31の記憶領域)として、最大で、5つの状態を記録できる容量を確保しておけばよいことになる。なお、状態履歴情報332において、記録する過去の状態は、直近の4つに限定されるものではない。4つより少なくてもよいし、4つより多くてもよい。また、過去の状態を記録しないというフォーマットでもよい。ただし、セキュリティの強度的には、記録される状態の数が多い方が、状態履歴情報332に記録される状態の遷移パターンが増えるので好ましい。
【0044】
図1に戻って、ホストコンピュータ10は、制御部11、入力装置14、出力装置15およびインタフェース16を備えている。また、ホストコンピュータ10は、図示しないカードスロットを備えており、当該カードスロットにメモリシステム1を装着することが可能である。
【0045】
制御部11は、各種のデータの演算を行うとともにホストコンピュータ10が備える各種ハードウェアを制御するCPU12と、各種のデータを記憶する記憶部13とを備えている。これにより、ホストコンピュータ10は、一般的なコンピュータとしての構成および機能を備えている。
【0046】
ホストコンピュータ10の制御部11は、第1記憶部21に格納されているプログラム22を第1制御部20を介して記憶部13にロードしつつ、実行する機能を有している。
【0047】
また、制御部11は、メモリシステム1に対して、適宜、コマンドを発行する。制御部11が発行するコマンドとしては、特に、プログラム読み出しコマンド(以下、「コマンドRP」と称する。)、重要情報読み出しコマンド(以下、「コマンドRI」と称する。)、状態制御コマンド(以下、「コマンドCC」と称する。)、状態読み出しコマンド(以下、「コマンドRC」と称する。)がある。
【0048】
プログラム読み出しコマンド(コマンドRP)は、ROM2の第1制御部20に対して発行されるコマンドであり、第1記憶部21に格納されているプログラム22の一部を出力するように要求するコマンドである。プログラム22は、ホストコンピュータ10におけるプログラム22の進行状況(すなわち、現在の状態である「C0」)に応じて、適宜、第1記憶部21から読み出して実行する必要がある。
【0049】
したがって、ホストコンピュータ10の制御部11は、「C0」に対応したコマンドRPを第1制御部20に対して出力することにより、「C0」に応じた追加のプログラム22を第1記憶部21から記憶部13にロードする。これにより、追加で読み出されたプログラム22がホストコンピュータ10において実行可能となり、これを実行することによりプログラム22が進行する。
【0050】
なお、以下では、「C0」に対応したコマンドRPを「コマンドRPCn」と称する。すなわち、「C0」が「C1」である場合に発行されるコマンドRPは、「コマンドRPC1」であり、「C0」が「CN」である場合に発行されるコマンドRPは、「コマンドRPCN」である。
【0051】
重要情報読み出しコマンド(コマンドRI)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、第2記憶部31に格納されている重要情報330(より詳細には出力ファイル)を出力するように要求するコマンドである。
【0052】
状態制御コマンド(コマンドCC)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、状態履歴情報332に記録されている現在の状態である「C0」を変更するように要求するコマンドである。コマンドCCは、変更先(遷移先)の状態(C1)を示す情報(付加情報)とともに、第2制御部30に出力される。
【0053】
本実施の形態では、コマンドCCに付加される情報は、「C1」と「C0」との定義順における相対的な差で示した情報とする。例えば、「C0」が「C10」であった場合において、コマンドCCとともに伝達される付加情報が「+2」であれば「C1」は「C10」から2つ進んだ「C12」であることを意味し、付加情報が「−2」であれば「C1」は「C10」から2つ戻った「C8」であることを意味する。
【0054】
状態読み出しコマンド(コマンドRC)は、セキュリティメモリ3の第2制御部30に対して発行されるコマンドであり、状態履歴情報332に記録されている現在の状態である「C0」を出力するように要求するコマンドである。
【0055】
なお、制御部11は、この他にも、セーブデータ130を第2記憶部31に格納するためのコマンド(コマンドWU)や、セーブデータ130を読み出すコマンド(コマンドRU)など、様々なコマンドを発行する機能を有しているが、詳細は省略する。
【0056】
記憶部13は、CPU12の一時的なワーキングエリアとして使用されるRAM(一般的には、高速アクセス可能な揮発性の記憶装置が採用される。)や、ホストコンピュータ10の起動プログラム(図示せず)等を格納しておく読み取り専用のROMなどのハードウェアから構成されている。
【0057】
入力装置14は、ホストコンピュータ10に各種の情報を入力するために設けられる装置である。入力装置14としては、例えば、コントローラ、キーボード、タッチパネル、各種ポインタ、ジョイスティック等が該当するが、これらのすべてを備えている必要はないし、これらと異なる装置を備えていてもよい。
【0058】
出力装置15は、ホストコンピュータ10の各種状態をユーザに通知するために出力する装置である。出力装置15としては、例えば、液晶パネル、LED、ランプ、スピーカ、プリンタ等が該当するが、これらのすべてを備えている必要はないし、これらと異なる装置を備えていてもよい。
【0059】
インタフェース16は、メモリシステム1とホストコンピュータ10とを電気的に接続する機能を提供する。すなわち、メモリシステム1は、ホストコンピュータ10の図示しないカードスロットに物理的に装着され、インタフェース16に電気的に接続される。
【0060】
以上が、メモリシステム1を含むコンピュータシステムの構成および機能の説明である。次に、コンピュータシステムの動作を説明しつつ、本実施の形態における情報保護方法について説明する。
【0061】
図3は、第1の実施の形態におけるセキュリティメモリ3の動作を示す流れ図である。セキュリティメモリ3は、起動中のホストコンピュータ10にメモリシステム1が装着された状態で動作する。なお、以下において、ROM2(第1制御部20)の動作については、従来の技術を適用することが可能であるため、適宜説明を省略する。
【0062】
メモリシステム1が動作中において、セキュリティメモリ3の第2制御部30は、ホストコンピュータ10からの各種コマンドを受け付けることが可能な状態となっている(ステップS1,S4,S7)。以下、第2制御部30がホストコンピュータ10からのコマンドを受け付けることが可能となっている状態を「待ち受け状態」と称する。ただし、第2制御部30が待ち受け状態において受け付けることが可能なコマンドは図3に示すものに限定されるものではない。
【0063】
待ち受け状態において、ホストコンピュータ10からコマンドCC(状態制御コマンド)が入力されると(ステップS1においてYes)、第2制御部30は、遷移先の状態である「C1」を特定する(ステップS2)。具体的には、この時点の状態履歴情報332を参照して、当該状態履歴情報332に記録されている「C0」と、コマンドCCの付加情報とに基づいて、新たに遷移する「C1」を特定する。
【0064】
次に、特定した新たに遷移する「C1」に基づいて状態履歴情報332を更新する(ステップS3)。具体的には、この時点の状態履歴情報332における「C−4」を「C−3」で上書きし、「C−3」を「C−2」で上書きし、「C−2」を「C−1」で上書きし、「C−1」を「C0」で上書きし、「C0」をステップS2で特定した「C1」で上書きする。なお、「C−4」をステップS2で特定した「C1」で上書きして、現在の状態を示すポインタを移動させてもよい。
【0065】
待ち受け状態において、ホストコンピュータ10からコマンドRC(状態読み出しコマンド)が入力されると(ステップS4においてYes)、第2制御部30は、状態履歴情報332を参照し、当該状態履歴情報332に記録されている「C0(現在の状態)」を読み出す(ステップS5)。そして、第2制御部30は、ステップS5において読み出した「C0」を、ホストコンピュータ10に向けて出力する(ステップS6)。
【0066】
待ち受け状態において、ホストコンピュータ10からコマンドRI(重要情報読み出しコマンド)が入力されると(ステップS7においてYes)、第2制御部30は、状態履歴情報332を読み出す(ステップS8)。
【0067】
次に、読み出し条件テーブル331を参照し(ステップS9)、ステップS8で読み出した状態履歴情報332と合致する読み出し条件が、読み出し条件テーブル331に存在するか否かを判定する(ステップS10)。
【0068】
状態履歴情報332と合致する読み出し条件が読み出し条件テーブル331に存在しない場合(ステップS10においてNo)、第2制御部30は、ホストコンピュータ10にダミーデータを出力する(ステップS11)。
【0069】
図2において図示を省略しているが、本実施の形態における第2記憶部31には、ダミーデータ(プログラム22を進行するために使用することのない情報)がいくつか準備されている。そして、ステップS10においてNoの場合、第2制御部30は、ダミーデータテーブル(図示せず)を参照する。ダミーデータテーブルには、各ダミーデータを読み出すための条件と、当該条件に合致したときに読み出されるダミーデータの格納アドレスとが関連づけられて格納されている。第2制御部30は、当該ダミーデータテーブルから選択したダミーデータをステップS11において出力する。
【0070】
なお、ダミーデータの読み出し条件は、例えば、乱数に応じたランダムな条件であってもよいし、「C0」であってもよい。すなわち、現在の状態に応じたダミーデータが選択され、出力されてもよい。また、本実施の形態では、ステップS11においてダミーデータを出力するが、その代わりに、エラーを返す、あるいは、以降の動作を限定する、もしくは、何も受け付けない等の処理を行ってもよい。また、ダミーデータは複数用意されているうちから選択されることが好ましいが、常に同じダミーデータが出力されてもよい。あるいは、ダミーデータは予め準備されるのではなく、出力する際に、乱数などによって生成されてもよい。
【0071】
一方、状態履歴情報332と合致する読み出し条件が読み出し条件テーブル331に存在する場合(ステップS10においてYes)、第2制御部30は、合致した読み出し条件に対応している格納アドレスを、読み出し条件テーブル331から取得する。そして、第2制御部30は、取得したアドレスで示されるセキュリティ領域33に格納されている重要情報330を読み出して、ホストコンピュータ10に出力する(ステップS12)。
【0072】
図4は、第1の実施の形態における読み出し条件テーブル331を例示する図である。図4に示すように読み出し条件テーブル331には、読み出し条件と、重要情報330の出力ファイル(J1,J2,J3,・・・)とが関連づけられている。なお、実際の読み出し条件テーブル331では、直接、出力ファイルが格納され関連づけられるのではなく、すでに説明したように、出力ファイルの格納アドレスが格納され関連づけられている。
【0073】
図4に示す例では、出力ファイルJ1および出力ファイルJ2は、いずれも「C0」が「C5」のときにセキュリティメモリ3が出力する重要情報330である。このように、セキュリティメモリ3は、「C0」が同じであっても、状態の遷移ルートの違い(本実施の形態では、直近の過去の4つの状態の違い)によって、異なる重要情報330を出力することができる。一方で、出力ファイルJ1の読み出し条件として5つのパターンが定義されており、異なる遷移ルートであっても、同じ重要情報330を出力することもできる。したがって、プログラム22の作り方の多様性が得られる。
【0074】
また、すでに説明したように、出力ファイルJ1については読み出し条件として5つのパターンが定義されており、出力ファイルJ2の読み出し条件として2つのパターンが定義されている。すなわち、状態履歴情報332において「C0」が「C5」となっている状況において、上記の7つのパターンのみが許容され、これ以外のパターンでは、いずれの出力ファイルの読み出し条件も合致しないことになる。そして、その場合は、ステップS11が実行され、ダミーデータが出力される。
【0075】
また、図4に示す例では、読み出し条件テーブル331において、「C0」が「C1」ないし「C4」のときに出力される重要情報330が定義されていない。したがって、図4に示す例では、例えば、状態履歴情報332において「C0」が「C3」のときに、コマンドRIが入力されると、遷移ルートにかかわらず、読み出し条件に合致せず、ダミーデータが出力されることになる。このように、「C0」がC1,・・・,CNのいずれである場合にも、必ず何らかの重要情報330が出力されるように定義する必要はない。
【0076】
以上が第1の実施の形態におけるセキュリティメモリ3の動作である。次に、ホストコンピュータ10の動作を説明する。
【0077】
図5は、第1の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、図5に示される各工程は、特に断らない限り、ホストコンピュータ10の制御部11により実行される工程を示す。
【0078】
電源が投入されると、ホストコンピュータ10は、まず、所定の初期設定を実行する(ステップS21)。ステップS21では、記憶部13のROMに記憶されている起動プログラムがCPU12により実行され、ホストコンピュータ10の初期画面が出力装置15に表示される。
【0079】
初期設定が終了すると、ホストコンピュータ10は、メモリシステム1が装着されているか否かを判定する(ステップS22)。そして、メモリシステム1を検出すると、ホストコンピュータ10は、メモリシステム1(セキュリティメモリ3)に対してコマンドRCを発行し、セキュリティメモリ3から「C0」を取得する。ここでは、どの状態からプログラム22の実行を開始するのかを決定するために「C0」が要求される。
【0080】
次に、取得した「C0」に応じて、ホストコンピュータ10がメモリシステム1(ROM2)にコマンドRPC0を発行し、ROM2からコマンドRPC0に応じたプログラム22(「C0」から開始するために必要なプログラム22)を記憶部13にロードする(ステップS23)。そして、ホストコンピュータ10は、ロードしたプログラム22を実行することにより、プログラム進行処理(ステップS24)を開始する。
【0081】
プログラム進行処理は、入力装置14からプログラム22の終了が指示されるまで、ステップS25においてNoと判定されることにより、継続される。ただし、プログラム22の終了は入力装置14からの指示に限定されるものではなく、他の方法で指示されてもよい。
【0082】
図6は、第1の実施の形態におけるプログラム進行処理を示す流れ図である。ホストコンピュータ10は、プログラム22を進行させつつ、プログラム22を進行させることにより検出される各種の状態を監視している(ステップS30,S32,S37)。ただし、ホストコンピュータ10が監視している状態は、図6に示されるものに限定されるものではない。
【0083】
プログラム進行処理において、プログラム22が進行することにより、状態遷移がされると(ステップS30においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドCCを発行する(ステップS31)。
【0084】
コマンドCCが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、遷移先の状態である「C1」に応じて、状態履歴情報332を更新する。このようにして、コンピュータシステムは、状態履歴情報332を管理する。
【0085】
プログラム進行処理において、新たに追加のプログラム22が要求されると(ステップS32においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドRCを発行する(ステップS33)。
【0086】
コマンドRCが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、状態履歴情報332を参照して、「C0」をホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、現在の状態「C0」を取得する(ステップS34)。
【0087】
このように、本実施の形態におけるホストコンピュータ10は、例えば、記憶部13に現在の状態である「C0」を保持したりしていないが、コマンドRCをセキュリティメモリ3に発行することにより、必要に応じて、「C0」を問い合わせることができる。
【0088】
次に、ホストコンピュータ10は、メモリシステム1(ROM2)に対して、ステップS34において取得した「C0」に対応するコマンドRPC0を発行する(ステップS35)。
【0089】
コマンドRPC0が発行されると、ROM2の第1制御部20が、ホストコンピュータ10の「C0」に応じたプログラム22の一部(追加のプログラム22)を第1記憶部21から読み出してホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、適切な、追加のプログラム22を取得する(ステップS36)。
【0090】
以降、ホストコンピュータ10は、ステップS36で取得したプログラム22を実行しつつ、プログラム進行処理を継続する。このように、ホストコンピュータ10は、新たなプログラム22が必要になるたびに、現在の状態である「C0」をメモリシステム1に通知して、必要なプログラム22を第1制御部20に要求し取得することができる。
【0091】
プログラム進行処理において、重要情報330が要求されると(ステップS37においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対してコマンドRIを発行する(ステップS38)。
【0092】
コマンドRIが発行されると、すでに説明したように、セキュリティメモリ3の第2制御部30が、その時点の状態履歴情報332を用いて読み出し条件テーブル331を検索し、重要情報330から出力する出力ファイルを選択してホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、重要情報330(必要な出力ファイル)を取得する(ステップS39)。
【0093】
なお、コマンドRIが発行されたときの状態履歴情報332が、いずれの出力ファイルの読み出し条件とも一致しない場合、メモリシステム1からはダミーデータが出力される。したがって、この場合、ステップS39では、重要情報330を取得できていないことになるが、プログラム22を実行中のホストコンピュータ10はメモリシステム1から出力されたダミーデータが本来取得すべき重要情報330であるか否かを判定する術はない。したがって、ダミーデータを取得した場合も、ホストコンピュータ10は、そのままプログラム進行処理を継続する。そして、現実に重要情報330を使用する段階になって、初めて、ホストコンピュータ10はプログラム22の続行が不可能な状態に陥り、停止することになる。
【0094】
以上のように、第1の実施の形態におけるメモリシステム1は、ホストコンピュータ10に接続され、保護対象の情報としてのプログラム22を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御する第1制御部20と、プログラム22の使用中におけるホストコンピュータ10の状態の履歴情報(状態履歴情報332)と読み出し条件テーブル331によって読み出し条件に関連づけられた重要情報330とを格納する第2記憶部31と、状態履歴情報332と読み出し条件テーブル331における読み出し条件とに応じて第2記憶部31に格納されている重要情報330をホストコンピュータ10に出力する第2制御部30とを備える。
【0095】
これにより、ホストコンピュータ10の状態の履歴(状態履歴情報332)に応じて重要情報330が選択されるため、すべての重要情報330を確実に読み出して複製するためには、発生しうるホストコンピュータの状態の履歴(状態履歴情報332)をすべて再現しなければならない。したがって、プログラム22の不正な複製を作成することが困難となり、プログラム22の無断実施を抑制することができる。また、既存のホストコンピュータ10の設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。
【0096】
また、例えば、ゲームタイトルごとや改訂版ごとに頻繁に読み出し条件や定義される状態等を変更でき、不正な複製者は、その度に解析作業を行わなければならず、違法な複製品(海賊版)を製造するまでに一定以上の時間を要することとなる。特に、プログラム22がゲームソフトウェアなどである場合、発売開始直後から海賊版が流通すると正規版の売れ行きに大きな影響がでてしまうという特性がある。したがって、このような市場の製品においては、例え完全に海賊版の製造を防止できなくとも、発売開始から一定期間でも海賊版の出現を遅らせることができるならばその効果は大きいといえる。
【0097】
なお、重要情報330を、ホストコンピュータ10が使用することのない情報とし、単に、重要情報330を読み出すことができたか否かのみで、正常または異常を判定することも可能である。しかし、このように構成すると、常に重要情報330が読み出せたかのように振る舞うプログラム(例えば重要情報330を読み出すルーチンを削除したプログラムなど)に書き換えるだけで、実質的にプログラム22を実行することができる状態にされるおそれがある。しかし、重要情報330は、プログラム22をホストコンピュータ10が使用するために、ホストコンピュータ10によって現実に使用される情報であるため、第三者は、現実に、重要情報330を読み出さない限り、プログラム22の正常な実行が不可能な状態に陥る。したがって、セキュリティレベルが向上する。
【0098】
また、第2制御部30は、ホストコンピュータ10からの状態制御コマンドに応じて状態履歴情報332を更新する。したがって、複雑な処理や、特殊なハードウェアを用いることなく実現できる。
【0099】
なお、セキュリティ強化の側面からは、正常に読み出される重要情報330は、プログラム22を進行させるときに必ずホストコンピュータ10が使用する情報とし、これが読み出されていない限り、プログラム22が停止するように構成することが好ましい。しかし、読み出された重要情報330が、ホストコンピュータ10において必ず使用されなければならないわけではない。
【0100】
例えば、図4に示す例において、出力ファイルJ1および出力ファイルJ2は、ともに現在の状態である「C0」が「C5」のときに出力される重要情報330である。しかし、出力ファイルJ1が出力される状況では、出力ファイルJ1が取得されていなければプログラム22が停止するが、出力ファイルJ2が出力される状況では出力ファイルJ2が取得されていなくてもプログラム22が停止しないといった設計も可能である。すなわち、出力ファイルJ2が出力される状況とは、プログラム22の進行状況としては正常である(停止させる必要はない)が、特に、重要情報330は必要ないという状況として定義してもよい。
【0101】
もちろん、このような場合において、そもそも出力ファイルJ2を読み出し条件テーブル331に定義しないことも可能である。その場合は、上記状況においては、メモリシステム1からダミーデータが出力されることになり、ダミーデータが出力される状況が直ちに「異常」と判定する状況ではないことになる。
【0102】
逆に、上記のように出力ファイルJ2を使用しない情報とするならば、出力ファイルJ2はダミーデータであるとも言える。すなわち、重要情報330には、ホストコンピュータ10において使用されないダミーデータが含まれていてもよい。
【0103】
また、重要情報330はプログラム22を継続して進行させるときに使用される情報(例えば、プログラム22の一部。)として説明した。しかし、例えば、重要情報330の読み出しに失敗したときに出力されるダミーデータがプログラム22を停止させる情報として構成されていてもよい。すなわち、プログラム22をホストコンピュータ10が継続して使用するために必要となるのは「重要情報330が正常に読み出されることによって、正常な状態と判定されること」であって、取得された重要情報330が現実に使用されなければならないわけではない。ただし、セキュリティ強化の側面からは、すでに説明したように、正常に取得された重要情報330が、プログラム22を進行させる上で、使用されるように構成しておくことが好ましい。
【0104】
<2. 第2の実施の形態>
第1の実施の形態では、読み出し条件テーブル331における各出力ファイル(重要情報330)の読み出し条件は、いずれもホストコンピュータ10の状態の履歴情報(状態履歴情報332)の全体であった。しかし、履歴情報の一部を読み出し条件とすることも可能である。
【0105】
図7は、第2の実施の形態における読み出し条件テーブル331aを例示する図である。以下、第2の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0106】
図7において「*」は、どの状態に遷移していてもよいことを意味する、いわばワイルドカードとする。図7に示す例では、出力ファイルJ1の読み出し条件は、4回前の状態である「C−4」、3回前の状態である「C−3」および2回前の状態である「C−2」については「*」となっており、2回以上前においては、どのような状態に遷移していてもよい。ただし、出力ファイルJ1の読み出し条件においては、直前の状態である「C−1」が「C1」であり、かつ、現在の状態である「C0」が「C2」であることから、出力ファイルJ1は、「C0」が「C1」から「C2」に遷移したときに読み出される重要情報330として定義されている。
【0107】
このように、状態履歴情報332に、5つの状態が順次に記録されている場合でも、必ず、5つの状態を読み出し条件に使用しなければならないわけではない。図7に示す出力ファイルJ1,J2のように、直近の状態の遷移のみで選択するように構成してもよい。
【0108】
<3. 第3の実施の形態>
上記実施の形態におけるホストコンピュータ10の状態の履歴情報(状態履歴情報332)は、現在の状態を含めて、最大で5つの状態のみが遷移順に格納されるフォーマット(C−4,C−3,C−2,C−1,C0)であった。しかし、ホストコンピュータ10の状態の履歴情報は、このようなフォーマットに限定されるものではない。
【0109】
図8は、第3の実施の形態における状態履歴情報332aを例示する図である。以下、第3の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0110】
第3の実施の形態における状態履歴情報332aは、第1の実施の形態における状態履歴情報332に相当する情報であり、第2記憶部31のセキュリティ領域33に格納されている情報である。ただし、状態履歴情報332aのフォーマットは、状態履歴情報332のフォーマットとは異なっている。
【0111】
状態履歴情報332aでは、プログラム22において定義されているC1,・・・,CNが、それぞれ「0」、「1」、「2」のいずれかの値と関連づけられている。そして、「0」に関連づけられているものは、過去に遷移したことが「ない」ことを示している。また、「1」に関連づけられているものは、過去に遷移したことが「ある」ことを示している。さらに、「2」に関連づけられているものは、「C0」であることを示している。図8に示す例では、これまでに、「C2」、「C(N−1)」および「CN」には遷移したことがなく、「C1」および「C3」には遷移したことがあり、「C0」は「C(N−2)」である。
【0112】
このようなフォーマットの状態履歴情報332aの容量は、例えプログラム22が実行される過程で同じ状態の遷移が繰り返されたりしたとしても、第1の実施の形態と同様にほぼ一定であり、無限に増大したりはしない。
【0113】
第3の実施の形態における第2制御部30は、コマンドCCが発行されると、「2」を「1」に変更し、遷移先の状態である「C1」を特定して、特定した「C1」に関連づけられている値を「2」に変更する。例えば、図8に示す状態履歴情報332aについて、新たに、「C0」が「C3」に遷移したとすると、第2制御部30は、「C(N−2)」に関連づけられている「2」を「1」に書き換えるとともに、「C3」に関連づけられている「1」を「2」に書き換えることにより、状態履歴情報332aを更新する。
【0114】
また、ホストコンピュータ10がコマンドRCを発行すると、第2制御部30は、「2」に関連づけられている状態を現在の状態である「C0」として読み出し、ホストコンピュータ10に出力する。すなわち、第3の実施の形態における状態履歴情報332aにおいても、メモリシステム1は、適切に状態を管理することができるとともに、「C0」を特定して、コマンドRCに応じて出力できるように構成されている。
【0115】
図9は、第3の実施の形態における読み出し条件テーブル331bを例示する図である。第3の実施の形態では、状態履歴情報332aのフォーマットが第1の実施の形態における状態履歴情報332と異なり、履歴として記録されている状態の表現方法(フォーマット)が異なっている。したがって、読み出し条件テーブル331bに規定されている読み出し条件も第1の実施の形態における読み出し条件テーブル331とは異なっている。
【0116】
図9に示す例では、「C1」の欄は、「1」または「2」となっており、「0」が存在しない。すなわち、初期状態である「C1」を経由していない場合は、重要情報330が出力されないことを示している(ダミーデータが出力される)。このように、プログラム22の進行状況において、必須の状態を定義することもできる。
【0117】
また、重要情報330のうち、出力ファイルJ1は、「C0」が「C1」であり、他の状態に遷移したことがないという条件で読み出される。すなわち、出力ファイルJ1は初期状態で出力される重要情報330である。
【0118】
また、出力ファイルJ2は、「C1」に遷移したことがあり、「C0」が「C2」か、または「C3」のときに読み出される。すなわち、本実施の形態においても、異なる読み出し条件で、同じ重要情報330を出力することも可能である。
【0119】
さらに、図9に示す例では、図8に示す状態履歴情報332aのときには、出力ファイルJ4が出力されることも分かる。
【0120】
なお、本実施の形態では、読み出し条件テーブル331aにおいて「2」を用いることにより現在の状態である「C0」が何であるかを読み出し条件とした。しかし、状態履歴情報332aにおける「2」を、単に、すでに遷移したことのある状態とみなして「1」に読み替えるように構成してもよい。あるいは逆に、状態履歴情報332aにおける「2」を、未だ、進行が完了していない状態とみなして「0」に読み替えるように構成してもよい。
【0121】
以上のように、第3の実施の形態における状態履歴情報332aおよび読み出し条件テーブル331bを用いても、第1の実施の形態と同様の効果を得ることができる。
【0122】
特に、直近の遷移ルートではなく、どのイベントをすでに体験したかに応じて、出力する重要情報330を変化させたい場合には、第1の実施の形態よりも第3の実施の形態の方が適している。
【0123】
<4. 第4の実施の形態>
ホストコンピュータ10の状態の履歴情報において、過去の状態をビットで表現したフォーマットとすることも可能である。
【0124】
図10は、第4の実施の形態における状態履歴情報332bを例示する図である。以下、第4の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0125】
第4の実施の形態におけるプログラム22では、第1の実施の形態と同様に、プログラム22の進行状況を示す状態として、C1,・・・,CNが定義されている。そして、状態履歴情報332bには、N桁のビットで表現される過去の状態に、現在の状態である「C0」が付加されたフォーマットとなっている。
【0126】
そして、過去の状態は、1桁目(Bit 0)が「C1」に対応し、N桁目(Bit N-1)が「CN」に対応する。なお、図10に示す例は、第3の実施の形態において図8に示した状態と同一の状態を表現している。
【0127】
このように構成した場合も、上記実施の形態と同様の効果を得ることができる。
【0128】
<5. 第5の実施の形態>
第3の実施の形態では、1回でも過去に遷移したことのある状態は、状態履歴情報332aにおいて「1」が関連づけられ、その後「2」に戻ることはあっても、再び「0」に戻ることはない。しかし、状態履歴情報332aにおいて、一度、「1」に変更された状態について、再び「0」に戻ることを許容するように構成することも可能である。
【0129】
例えば、アイテムの所持状態に応じて重要情報330を変化させるようにプログラム22を設計する場合、アイテムを所持している状態を「1(所持)」、所持していない状態を「0(非所持)」と定義できる。このように定義すると、消費したアイテムについては、消費したとき(状態変更のとき)に、当該アイテムの状態を「0」に変更することになる。
【0130】
ところで、第5の実施の形態のように、アイテムの所持状況を状態履歴情報332aとして定義した場合において、ホストコンピュータ10からのコマンドRCに対して、「最新に状態が変化したアイテムを示す情報」を出力してもあまり意味がない。このような場合には、アイテムの入手状況一覧(すなわち、本実施の形態では状態履歴情報332a)そのものが現在の状態である「C0」を表現しているといえる。
【0131】
すなわち、プログラム22における「状態」の定義の仕方によっては、メモリシステム1は、当該状態の履歴情報(本実施の形態では状態履歴情報332a)の一部ではなく、当該履歴情報の全体をホストコンピュータ10に対して出力するようにしてもよい。
【0132】
<6. 第6の実施の形態>
ホストコンピュータ10の状態の履歴情報のフォーマットは、上記の実施の形態に示した状態履歴情報332,332a,332bに採用されたフォーマットに限定されるものではない。
【0133】
図11は、第6の実施の形態における状態履歴情報332cを例示する図である。以下、第6の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0134】
第6の実施の形態における状態履歴情報332cは、第1の実施の形態における状態履歴情報332に相当する情報であり、第2記憶部31のセキュリティ領域33に格納されている情報である。ただし、状態履歴情報332cのフォーマットは、状態履歴情報332のフォーマットと異なっている。
【0135】
状態履歴情報332cでは、プログラム22において定義されているC1,・・・,CNが、シーケンス番号(遷移した順番)と関連づけられるフォーマットを採用している。
【0136】
なお、状態履歴情報332cにおいて、シーケンス番号の初期値は「0」とする。したがって、状態履歴情報332cにおいて「0」が関連づけられている「状態」は、第3の実施の形態における状態履歴情報332aと同様に、過去に遷移したことがない「状態」を示している。
【0137】
第6の実施の形態における第2制御部30は、コマンドCC(状態制御コマンド)を受け付けると、まず、状態履歴情報332cに記録されているシーケンス番号を検索して最大値を取得し、取得した最大値に「1」を加えて新たなシーケンス番号を作成する。次に、例えば、第1の実施の形態と同様の手法で遷移先の状態である「C1」を特定し、作成した新たなシーケンス番号を当該「C1」に関連づける。
【0138】
例えば、図11に示す例において、次に、「C0」が「C4」に遷移し、コマンドCCが発行された場合には、「C4」に関連づけられているシーケンス番号が「2」から「11」に書き換えられる。
【0139】
第6の実施の形態における状態履歴情報332cにおいて、「C0」は最も大きなシーケンス番号に関連連れられている「状態」となる。したがって、第6の実施の形態における第2制御部30は、コマンドRCを受け付けると、状態履歴情報332cのシーケンス番号の最も大きい「状態」を検索して読み出し、「C0」としてホストコンピュータ10に出力する。図11に示す例では、コマンドRCに対して「C1」が出力される。
【0140】
第6の実施の形態における状態履歴情報332cでは、シーケンス番号の最大値により、遷移回数が記録されることになる。したがって、第6の実施の形態では、プログラム22の遷移回数を読み出し条件として、重要情報330を出力するように構成することができる。
【0141】
また、第6の実施の形態における状態履歴情報332cでは、シーケンス番号を比較することにより、いずれの「状態」が新しいかを判定できる。したがって、複数の「状態」において、直近の遷移順を再現できるので、これを読み出し条件として、重要情報330を出力することもできる。例えば、図11に示す例では、「C2」「C4」「C8」の直近の遷移順は「C4」→「C8」→「C2」であることがわかる(なお連続して遷移したか否かもわかる。)。そして、上記例に示したように「C4」に関連づけられているシーケンス番号が「2」から「11」に書き換えられた後には、直近の遷移順は「C8」→「C2」→「C4」に変化する。
【0142】
また、第6の実施の形態における状態履歴情報332cにおいて、シーケンス番号が「0」か否かを判定するとともに、シーケンス番号が最大値か否かを判定すれば、第3の実施の形態における状態履歴情報332aと同様の履歴フォーマットを抽出することが可能である。したがって、第6の実施の形態における状態履歴情報332cに対して、第3の実施の形態に示した読み出し条件テーブル331bを適用することも可能である。
【0143】
<7. 第7の実施の形態>
上記実施の形態では、プログラム22において定義されたC1,・・・,CNのすべてが、過去の状態としても記録対象となっていた。例えば、第1の実施の形態における状態履歴情報332には、直近の過去の4つの状態を記録するとして説明したが、この直近の過去の4つの状態として、すべてのC1,・・・,CNが記録対象であった。しかし、本発明は、このような実施の形態に限定されるものではない。
【0144】
図12は、第7の実施の形態における第2記憶部31の記憶領域を例示する図である。以下、第7の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0145】
第7の実施の形態における第2記憶部31では、セキュリティ領域33に、状態特定情報333が別途格納される。
【0146】
図13は、第7の実施の形態における状態特定情報333を例示する図である。
【0147】
状態特定情報333は、状態履歴情報332において、過去の状態として格納する必要がある状態を特定するための情報である。本実施の形態における状態特定情報333では、記録対象の状態を列挙するフォーマットとなっている。すなわち、図13に示す例では、「C1」、「C4」、および、「CN」のみが「過去の状態」としての記録対象であることを示している。
【0148】
第7の実施の形態における第2制御部30は、コマンドCCを受け付けると、第1の実施の形態におけるステップS2(図3)と同様に、遷移先の状態である「C1」を特定する。
【0149】
次に、第7の実施の形態における第2制御部30は、状態特定情報333を参照して、「C0」が、記録対象の状態であるか否かを確認する。すなわち、現在の状態である「C0」が、状態特定情報333に列挙されている「状態」に含まれているか否かを判定する。
【0150】
「C0」が記録対象の状態である場合、第7の実施の形態における第2制御部30は、第1の実施の形態と同様に、過去の状態についても書き換えを行う。すなわち、状態履歴情報332における「C−4」を「C−3」で上書きし、「C−3」を「C−2」で上書きし、「C−2」を「C−1」で上書きし、「C−1」を「C0」で上書きし、「C0」をステップS2で特定した「C1」で上書きする。
【0151】
一方、「C0」が記録対象の状態でない場合、第7の実施の形態における第2制御部30は、過去の状態については書き換えを行わない。すなわち、この場合には、現在の状態である「C0」のみが、遷移先の状態である「C1」に書き換えられて、状態履歴情報332が更新される。
【0152】
本実施の形態においても、「C0」は、コマンドCCが発行されるたびに書き換えられて、状態履歴情報332において管理される。したがって、例え、状態特定情報333に列挙されていない「C2」に状態が遷移したとしても、状態履歴情報332の「C0」には「C2」が記録される。
【0153】
このように構成することにより、本実施の形態においても、コマンドRCが発行されたときには、第1の実施の形態と同様に、第2記憶部31から「C0」が出力される。したがって、ホストコンピュータ10は、正常に「C0」をメモリシステム1から取得することができ、正常に追加のプログラム22を読み出すことができる。
【0154】
一方で、本実施の形態では、状態特定情報333に列挙されていない状態は、状態履歴情報332における過去の状態に記録されることはない。すでに説明したように、第三者による不正を抑制するためには、プログラム22の進行状況に応じて定義される「状態」の数は多い方がよい。しかし、このような「状態」が多数定義されると、プログラム22が進行するにつれて、頻繁に状態遷移が発生し、状態履歴情報332の容量が増大するおそれがある。
【0155】
しかし、第7の実施の形態におけるメモリシステム1では、過去の状態として記録する状態を特定するための状態特定情報333を第2記憶部31に格納しておき、状態履歴情報332を更新する際に第2制御部30が参照する。これにより、重要情報330を読み出すための条件として使用しない「状態」については、過去の状態として記録しないように構成することができる。
【0156】
本実施の形態では、状態履歴情報332における過去の状態は、「直近の過去の4つの状態」に限定されている。しかし、このような限定がない場合には、状態特定情報333を設けて、記録する過去の状態を予め取捨選択することによって、状態履歴情報332の容量の増大を大きく抑制することができる。
【0157】
<8. 第8の実施の形態>
過去の状態として記録する状態を特定するための情報は、第7の実施の形態に示しめした状態特定情報333に採用されたフォーマットに限定されるものではない。
【0158】
図14は、第8の実施の形態における状態特定情報333aを例示する図である。状態特定情報333aでは、過去の状態として記録する状態には「1」が関連づけられており、過去の状態として記録しない状態には「0」が関連づけられている。
【0159】
このようなフォーマットを採用した場合も、第7の実施の形態と同様の効果を得ることができる。
【0160】
<9. 第9の実施の形態>
過去の状態として記録する状態を特定するための情報は、第7および第8の実施の形態に示した状態特定情報333,333aにおいて採用されたフォーマットに限定されるものではない。
【0161】
図15は、第9の実施の形態における状態特定情報333bを例示する図である。第9の実施の形態における状態特定情報333bは、N桁のビットで表現される。すなわち、状態特定情報333bは、プログラム22において定義されている状態の数に対応する数のビットで表現され、各状態が一対一で各ビットに対応付けられる。
【0162】
第9の実施の形態では、1桁目(Bit 0)が「C1」に対応し、N桁目(Bit N-1)が「CN」に対応しているものとする。さらに、C1,・・・,CNのうち、過去の状態として記録する状態に対応するビットは「1」とし、過去の状態として記録しない状態に対応するビットは「0」とする。
【0163】
なお、図15に示す例では、表示を省略しているビットも含めて、「Bit 4」から「Bit N-2」まで、すべて「0」となっており、「C5」から「C(N−1)」までの状態は、過去の状態として記録しない状態として定義されているものとする。すなわち、図15に示す例は、第7の実施の形態において図13に示した例と同一の意味を有している。
【0164】
図16は、第9の実施の形態における状態履歴情報332dを例示する図である。第9の実施の形態における状態履歴情報332dは、3桁のビットで表現される過去の状態に、現在の状態である「C0」が付加されたフォーマットとなっている。
【0165】
状態履歴情報332dにおいて、過去の状態を格納するために必要なビット数は、状態特定情報333bにおいて「1」であったビットの数である。図15に示す例では、「1」であったビットは3つであるから、図16に示す状態履歴情報332dにおける過去の状態を表現するためのビット数は「3」となっている。
【0166】
ここで、過去の状態を表現する各ビットは、状態特定情報333bにおいて「1」であったビットのそれぞれに対応している。すなわち、状態特定情報333bにおいて「1」であった「Bit 0」、「Bit 3」、および、「Bit N-1」が、それぞれ状態履歴情報332dの過去の状態を表現する「Bit 0」、「Bit 1」、および、「Bit 2」に対応している。したがって、状態履歴情報332dにおいて過去の状態を表現する「Bit 0」、「Bit 1」、および、「Bit 2」は、それぞれプログラム22において定義されている「状態」のうちの「C1」、「C4」、および、「CN」に対応している。
【0167】
このように、過去の状態として記録する状態を特定するための情報(状態特定情報333b)をビットで表現したフォーマットとした場合も、上記実施の形態と同様の効果を得ることができる。
【0168】
<10. 第10の実施の形態>
上記実施の形態では、重要情報330を読み出すための条件に、現在の状態である「C0」を用いていた。しかし、「C0」ではなく、過去の状態のみを読み出し条件として重要情報330を読み出すこともできる。
【0169】
図17は、第10の実施の形態における読み出し条件テーブル331cを例示する図である。以下、第10の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0170】
図17に示すように、読み出し条件テーブル331cには、「C0」が定義されていない。このような読み出し条件テーブル331cを参照する場合、第2制御部30は、過去において「C1」、「C4」、および、「CN」に遷移したことがあるか否かで重要情報330(出力ファイル)を出力するか否かを判定することになる。例えば、図17に示す例では、「C1」に遷移したことがない場合には、重要情報330が読み出されることはないことを示している。
【0171】
なお、読み出し条件テーブル331cにおいて、読み出し条件をビットで表現するようにしてもよい。また、第10の実施の形態のように、読み出し条件として現在の状態である「C0」を用いない場合でも、状態履歴情報332には、現在の状態である「C0」は格納されており、現在の状態である「C0」は履歴としては管理される。
【0172】
<11. 第11の実施の形態>
上記実施の形態では、第1記憶部21からプログラム22を読み出すための指標となるホストコンピュータ10の状態と、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態とが同じであった(共通の指標を用いていた)。しかし、これらは互いに独立していてもよい。
【0173】
第11の実施の形態では、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態としては、上記実施の形態と同様に、C1,・・・,CNを定義する。一方で、第1記憶部21から、新たにプログラム22を追加して読み出すための指標となるホストコンピュータ10の状態として、M個の状態、PC1,・・・,PCMを定義する(Mは2以上の自然数)。
【0174】
図18は、第11の実施の形態における第2記憶部31の記憶領域を例示する図である。以下、第11の実施の形態におけるコンピュータシステムについては、第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0175】
第11の実施の形態における第2記憶部31では、セキュリティ領域33に、状態管理情報334が別途格納される。そして、状態管理情報334は、現在の状態である「PC0」を示す情報である。
【0176】
第11の実施の形態における第2制御部30は、ホストコンピュータ10からコマンドCC(第1の状態制御コマンド)を受け付けると、第1の実施の形態と同様に状態履歴情報332の「C0」を更新する。一方で、ホストコンピュータ10からコマンドCPC(第2の状態制御コマンド)を受け付けると、状態管理情報334の現在の状態「PC0」を更新する。
【0177】
さらに、第11の実施の形態における第2制御部30は、ホストコンピュータ10からコマンドRC(状態読み出しコマンド)を受け付けると、状態履歴情報332ではなく、状態管理情報334から現在の状態である「PC0」を読み出して、ホストコンピュータ10に対して出力する。
【0178】
以上のように、第11の実施の形態におけるメモリシステム1は、第1記憶部21からプログラム22を読み出すための指標となるホストコンピュータ10の状態と、第2記憶部31から重要情報330を読み出すための指標となるホストコンピュータ10の状態とを互いに独立した状態として定義する。これにより、重要情報330を読み出すために管理している情報(状態履歴情報332)をホストコンピュータ10に対して秘匿することができる。
【0179】
なお、PC1,・・・,PCMについては、セキュリティメモリ3(第2記憶部31)に格納して管理せずに、記憶部13に格納するなどして、ホストコンピュータ10とROM2との間で管理するように構成してもよい。
【0180】
また、第11の実施の形態において定義した2種類の状態(C1,・・・,CN、およびPC1,・・・,PCM)を互いに組み合わせて、重要情報330の読み出し条件としてもよい。あるいは、3種類以上の状態を定義してもよい。
【0181】
<12. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0182】
例えば、上記実施の形態における第2記憶部31は一体形成の記憶装置として構成されている。しかし、第2記憶部31を複数の記憶装置から構成してもよい。その場合、例えば、状態履歴情報332やセーブデータ130のように更新が必要なデータを格納する記憶装置はデータの書き込みも可能な記憶素子を採用し、重要情報330や読み出し条件テーブル331のように更新不要なデータを格納する記憶装置はデータの書き込みができない記憶素子を採用するようにしてもよい。
【0183】
また、第1記憶部21と第2記憶部31とを単一の半導体集積回路として構成するようにしてもよい。すなわち、メモリシステム1を単一の半導体集積回路として構築してもよい。
【0184】
また、重要情報330を構成する1つの出力ファイルは、分割されて出力されてもよい。すなわち、ホストコンピュータ10において必要となるまでに、ホストコンピュータ10によって1つの出力ファイルを構成する全ての情報が取得されるならば、1つの出力ファイルを読み出すために必要な読み出し回数は、必ずしも1回でなくてよい。
【0185】
また、セキュリティメモリ3は、状態履歴情報332や、読み出し条件テーブル331等を、図示しない第2制御部30のRAMやバッファに読み出しておいて使用するようにしてもよい。
【0186】
また、状態履歴情報332,332a,332b,332c,332dを更新したときなどに、第2制御部30が、正常な履歴(正常な遷移ルート)であるか否かを判定するようにしてもよい。このようにして「異常」が検出されたときには、以後、重要情報330が読み出せないように構成してもよい。ただし、状態履歴情報332,332a,332b,332c,332dが異常であることが、第三者に分かりにくいように実装されることが好ましい。
【0187】
また、ホストコンピュータ10が発行する各種のコマンドは、第1制御部20および第2制御部30が解読できる暗号により暗号化されていてもよい。すなわち、本発明におけるセキュリティ機能は、他のセキュリティ機能と重複して実装されてもよい。
【0188】
また、上記実施の形態に示した各工程は、あくまでも例示であって、これに限定されるものではない。すなわち、同様の効果が得られるならば、各工程における処理内容や各工程の実行順は、適宜、変更されてもよい。
【0189】
また、ホストコンピュータ10の状態として定義した、C1,・・・,CNに、それぞれ何回遷移したかが分かるように状態履歴情報332に記録し、これを重要情報330を読み出すための読み出し条件としてもよい。例えば、「C2」に5回以上、「C4」に10回以上遷移し、かつ、「C3」には1回も遷移していないときに、重要情報330の出力ファイルJ5を出力するといった構成も可能である。
【符号の説明】
【0190】
1 メモリシステム
10 ホストコンピュータ
2 ROM
20 第1制御部
21 第1記憶部
22 プログラム
3 セキュリティメモリ
30 第2制御部
31 第2記憶部
32 ユーザ領域
33 セキュリティ領域
330 重要情報
331,331a,331b,331c 読み出し条件テーブル
332,332a,332b,332c,332d 状態履歴情報
333,333a,333b 状態特定情報
334 状態管理情報
【特許請求の範囲】
【請求項1】
ホストコンピュータに接続されるメモリシステムであって、
保護対象の情報を格納する第1記憶部と、
前記第1記憶部に対するアクセスを制御する第1制御部と、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部と、
前記履歴情報と前記読み出し条件とに応じて前記第2記憶部に格納されている重要情報を前記ホストコンピュータに出力する第2制御部と、
を備えるメモリシステム。
【請求項2】
請求項1に記載のメモリシステムであって、
前記重要情報は、前記保護対象の情報を前記ホストコンピュータが使用するために使用する情報であるメモリシステム。
【請求項3】
請求項1または2に記載のメモリシステムであって、
前記第2制御部は、前記ホストコンピュータからの状態遷移命令に応じて前記履歴情報を更新するメモリシステム。
【請求項4】
保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する記憶部と、
前記履歴情報と前記読み出し条件とに応じて前記記憶部に格納されている重要情報を前記ホストコンピュータに出力する制御部と、
を備えるセキュリティメモリ。
【請求項5】
ホストコンピュータに接続されるメモリシステムに格納される保護対象の情報を保護する情報保護方法であって、
読み出し条件に関連づけられた重要情報を格納する工程と、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報を記録する工程と、
前記履歴情報と前記読み出し条件とに応じて重要情報を前記ホストコンピュータに出力する工程と、
を有する情報保護方法。
【請求項1】
ホストコンピュータに接続されるメモリシステムであって、
保護対象の情報を格納する第1記憶部と、
前記第1記憶部に対するアクセスを制御する第1制御部と、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する第2記憶部と、
前記履歴情報と前記読み出し条件とに応じて前記第2記憶部に格納されている重要情報を前記ホストコンピュータに出力する第2制御部と、
を備えるメモリシステム。
【請求項2】
請求項1に記載のメモリシステムであって、
前記重要情報は、前記保護対象の情報を前記ホストコンピュータが使用するために使用する情報であるメモリシステム。
【請求項3】
請求項1または2に記載のメモリシステムであって、
前記第2制御部は、前記ホストコンピュータからの状態遷移命令に応じて前記履歴情報を更新するメモリシステム。
【請求項4】
保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報と読み出し条件に関連づけられた重要情報とを格納する記憶部と、
前記履歴情報と前記読み出し条件とに応じて前記記憶部に格納されている重要情報を前記ホストコンピュータに出力する制御部と、
を備えるセキュリティメモリ。
【請求項5】
ホストコンピュータに接続されるメモリシステムに格納される保護対象の情報を保護する情報保護方法であって、
読み出し条件に関連づけられた重要情報を格納する工程と、
前記保護対象の情報の使用中における前記ホストコンピュータの状態の履歴情報を記録する工程と、
前記履歴情報と前記読み出し条件とに応じて重要情報を前記ホストコンピュータに出力する工程と、
を有する情報保護方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2013−37554(P2013−37554A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−173495(P2011−173495)
【出願日】平成23年8月9日(2011.8.9)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願日】平成23年8月9日(2011.8.9)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】
[ Back to top ]