説明

メモリシステムおよび情報保護方法

【課題】ホストコンピュータに接続されるメモリシステムに関して、すでに流通しているホストコンピュータとの互換性を維持しつつ、安価に、当該メモリシステムに格納された情報の不正な複製を抑制する技術を提供する。
【解決手段】ホストコンピュータ10に接続されるメモリシステム1において、プログラムを格納する不揮発性のメモリアレイ21と、メモリアレイ21に対するアクセスを制御するコントローラ20と、ホストコンピュータ10がプログラムを使用するときに必要となる必要不可欠情報を格納する書き換え可能な不揮発性のメモリアレイ31と、メモリアレイ31に対するアクセスを制御するコントローラ30とを設ける。コントローラ30は、ホストコンピュータ10の状態を反映した出力条件に応じて、メモリアレイ31に格納されている必要不可欠情報を被選択必要不可欠情報としてホストコンピュータ10に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置(例えば、半導体メモリなど)に格納された情報が不正に複製されないように保護する技術に関する。
【背景技術】
【0002】
従来より、ホストコンピュータに接続される記憶装置に記憶された情報を不正な複製から保護する技術が知られている。例えば、そのような技術が特許文献1に記載されている。
【0003】
特許文献1には、ホストコンピュータと接続されるメモリシステムに、セキュリティ機能を備えたコントローラと不揮発性メモリとを設けている。そして、ホストコンピュータからのアクセスに対しては、当該コントローラがセキュリティ機能を発揮することにより、不揮発性メモリ上に格納された情報を保護する技術が記載されている。
【0004】
しかし、特許文献1に記載されている技術をもってしても、不正な複製を完全に防止することはできない。そして、メモリシステムのコントローラにおけるセキュリティ機能が破られ、不揮発性メモリに格納された情報(保護対象の情報)を違法に複製され、配布される事態が現実に生じている。特許文献1に記載されている技術では、不揮発性メモリに格納されているプログラムにかかわらず、ホストコンピュータとメモリシステムとが協働してセキュリティ機能を提供しているため、一度、このセキュリティが破られれば、すべてのプログラムが不正に複製されることを許す事態にもなりかねない。
【0005】
このような事態を安易に解決する手法として、コントローラが提供するセキュリティ機能を変更することが考えられる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−040941号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところが、特許文献1に記載された技術において、メモリシステムのコントローラにおけるセキュリティ機能を変更すると、ホストコンピュータ側にも変更が必要になるという問題があった。すなわち、ホストコンピュータがすでに多数市場に流通している現状では、メモリシステムのセキュリティ機能が破られるたびに、ホストコンピュータ側の設計変更まで行うことは、互換性の維持やコストの面で現実的ではないという問題があった。
【0008】
本発明は、上記課題に鑑みてなされたものであり、ホストコンピュータに接続されるメモリシステムに関して、すでに流通しているホストコンピュータとの互換性を維持しつつ、安価に、当該メモリシステムに格納された情報の不正な複製を抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するため、請求項1の発明は、ホストコンピュータに接続されるメモリシステムであって、保護対象の情報を格納する第1不揮発性メモリと、前記第1不揮発性メモリに対するアクセスを制御する第1コントローラと、前記ホストコンピュータが前記保護対象の情報を使用するときに必要となる必要不可欠情報を格納する書き換え可能な第2不揮発性メモリと、前記第2不揮発性メモリに対するアクセスを制御する第2コントローラとを備え、前記第2コントローラは、前記ホストコンピュータの状態を反映した出力条件に応じて、前記第2不揮発性メモリに格納されている必要不可欠情報を被選択必要不可欠情報として前記ホストコンピュータに出力する。
【0010】
また、請求項2の発明は、請求項1の発明に係るメモリシステムであって、前記メモリシステムは、演算方法を定義する演算方法情報を格納しており、前記演算方法を被選択演算方法として前記ホストコンピュータに出力し、前記出力条件は、被演算情報を前記被選択演算方法により演算して得られる演算結果に基づく条件を含む。
【0011】
また、請求項3の発明は、請求項2の発明に係るメモリシステムであって、前記被演算情報は、前記ホストコンピュータの状態を反映する情報である。
【0012】
また、請求項4の発明は、請求項2または3の発明に係るメモリシステムであって、前記演算方法情報は、複数の演算方法を定義しており、前記第2不揮発性メモリは、複数の必要不可欠情報を格納しており、前記複数の演算方法から選択される1の被選択演算方法によりそれぞれ求められる複数の演算結果と前記複数の必要不可欠情報とが一対一で関連づけられており、前記第2コントローラは、前記出力条件に応じて、前記複数の必要不可欠情報から1の被選択必要不可欠情報を選択して前記ホストコンピュータに出力する。
【0013】
また、請求項5の発明は、請求項4の発明に係るメモリシステムであって、前記メモリシステムは、前記ホストコンピュータからの要求があったときの前記ホストコンピュータの状態に応じて前記複数の演算方法から1の演算方法を被選択演算方法として選択する。
【0014】
また、請求項6の発明は、請求項4または5の発明に係るメモリシステムであって、前記被選択演算方法は、前記保護対象の情報の前記ホストコンピュータにおける進行状況に応じて選択される。
【0015】
また、請求項7の発明は、請求項6の発明に係るメモリシステムであって、前記第2コントローラは、前記保護対象の情報の前記ホストコンピュータにおける進行状況が通知されたときに、通知された進行状況を進行履歴情報として前記第2不揮発性メモリに格納するとともに、前記進行履歴情報に応じて前記被選択演算方法を選択する。
【0016】
また、請求項8の発明は、請求項4ないし7のいずれかの発明に係るメモリシステムであって、前記出力条件は、前記第2コントローラが前記複数の必要不可欠情報を出力する際の出力順序を含む。
【0017】
また、請求項9の発明は、請求項8の発明に係るメモリシステムであって、前記出力順序が前記保護対象の情報の前記ホストコンピュータにおける進行順序に従う。
【0018】
また、請求項10の発明は、請求項8または9の発明に係るメモリシステムであって、前記第2コントローラは、前記ホストコンピュータに必要不可欠情報を出力したときの出力履歴情報に応じて前記出力順序となるように次回に出力する必要不可欠情報を選択する。
【0019】
また、請求項11の発明は、請求項2ないし10のいずれかの発明に係るメモリシステムであって、前記被選択演算方法は、前記演算方法情報から複数回に分けて読み出される。
【0020】
また、請求項12の発明は、請求項2ないし11のいずれかの発明に係るメモリシステムであって、前記演算方法情報は、前記第2不揮発性メモリに格納される。
【0021】
また、請求項13の発明は、ホストコンピュータに接続されるメモリシステムであって、前記ホストコンピュータが保護対象の情報を使用するときに必要となる必要不可欠情報を格納する書き換え可能な不揮発性メモリと、前記不揮発性メモリに対するアクセスを制御するコントローラとを備え、前記コントローラは、前記ホストコンピュータの状態を反映した出力条件に応じて、前記不揮発性メモリに格納されている必要不可欠情報を前記ホストコンピュータに出力する。
【0022】
また、請求項14の発明は、ホストコンピュータに接続されるメモリシステムの第1不揮発性メモリに格納される保護対象の情報を保護する情報保護方法であって、書き換え可能な第2不揮発性メモリに、前記ホストコンピュータが前記保護対象の情報を使用するときに必要となる必要不可欠情報を格納する工程と、前記ホストコンピュータの状態を反映した出力条件に応じて、前記第2不揮発性メモリに格納されている必要不可欠情報を被選択必要不可欠情報として前記ホストコンピュータに出力する工程とを有する。
【発明の効果】
【0023】
ホストコンピュータが保護対象の情報を使用するときに必要となる必要不可欠情報を格納する書き換え可能な第2不揮発性メモリと、第2不揮発性メモリに対するアクセスを制御する第2コントローラとを備え、第2コントローラは、ホストコンピュータの状態を反映した出力条件に応じて、第2不揮発性メモリに格納されている必要不可欠情報を被選択必要不可欠情報としてホストコンピュータに出力する。これにより、既存のホストコンピュータの設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。また、例えば、保護対象の情報ごとに変更できるので、一旦、セキュリティを破られても、容易に再構築できる。また、ホストコンピュータの状態を反映した出力条件が設けられているため、これを再現しなければ必要不可欠情報を読み出すことができず、複製を作成することが一層困難となる。
【図面の簡単な説明】
【0024】
【図1】本発明に係るメモリシステムを備えるコンピュータシステムを示す図である。
【図2】ROMのメモリアレイの記憶領域を例示する図である。
【図3】第1の実施の形態におけるメモリアレイの記憶領域と各記憶領域に格納される情報とを例示する図である。
【図4】第1の実施の形態におけるメモリシステムの動作を示す流れ図である。
【図5】第1の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図6】第1の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図7】第2の実施の形態におけるメモリアレイの記憶領域と各記憶領域に格納される情報とを例示する図である。
【図8】第2の実施の形態におけるメモリシステムの動作を示す流れ図である。
【図9】第2の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図10】第3の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【発明を実施するための形態】
【0025】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。
【0026】
<1. 第1の実施の形態>
図1は、本発明に係るメモリシステム1を備えるコンピュータシステムを示す図である。コンピュータシステムは、本発明に係るメモリシステム1と、一般的なコンピュータとしての機能を有するホストコンピュータ10とを備えている。
【0027】
メモリシステム1は、読み取り専用の記憶装置であるROM2と、例えばユーザデータ等を必要に応じてセーブすることができるように読み書き可能な記憶装置として構成されるメモリシステム3とを備えている。詳細は図示しないが、本実施の形態におけるメモリシステム1は、ホストコンピュータ10に対して着脱自在に構成されている。このようなメモリシステム1としては、例えば、メモリカードやゲームカセットが該当するがこれに限定されるものではない。
【0028】
ROM2は、コントローラ20と、メモリアレイ21とを備えている。コントローラ20は、ホストコンピュータ10からの要求に応じて、メモリアレイ21に格納されている各種データを読み出してホストコンピュータ10に出力する機能を有している。また、コントローラ20は、ホストコンピュータ10との間で、メモリアレイ21に格納されたデータに対するセキュリティ機能を提供する。コントローラ20が提供するセキュリティ機能としては従来より提案されている様々な手法を適宜採用できるため、以下では詳細な説明は省略する。
【0029】
図2は、ROM2のメモリアレイ21の記憶領域を例示する図である。メモリアレイ21は、複数の不揮発性の記憶素子が規則的に配列した構造を有しており、図2に示すように、複数の記憶領域に分割されている。
【0030】
本実施の形態におけるメモリアレイ21を構成する記憶素子は、ホストコンピュータ10によるデータの書き込みが不能な素子が採用されている。したがって、ROM2は、メモリシステム1において、先述のように読み取り専用の記憶装置として構成されている。ただし、プログラム26等を格納する記憶装置は必ずしも読み取り専用でなくてもよい。
【0031】
図2に示すように、メモリアレイ21の記憶領域としては、キー情報25を格納する固有キー格納領域22、プログラム26を格納するプログラム格納領域23、プログラム26が使用するコンテンツ(画像、音声、テキスト等)を格納するコンテンツ格納領域24が定義されている。ただし、定義される記憶領域はこれに限定されるものではなく、その他の記憶領域(例えば、上記セキュリティ機能を提供するためのデータが格納される領域等)が定義されてもよい。
【0032】
被演算情報であるキー情報25は、プログラム26を識別する固有の値であり、例えば、コントローラ20が提供するセキュリティ機能に利用される値などが想定される。
【0033】
本実施の形態では、キー情報25は、例えば商品コードのように、プログラム26のタイトルごとに異なる値を用いる。すなわち、プログラム26がゲームプログラムであれば、キー情報25はゲームのタイトルに固有であり、同じタイトルのゲームプログラムでは同じ値となる。ただし、例えば、製造番号のように、同じタイトルのプログラム26であっても、個々に異なる値をキー情報25として採用してもよい。
【0034】
なお、詳細は後述するが、本実施の形態におけるキー情報25はホストコンピュータ10により読み出され、ホストコンピュータ10の記憶装置12の特定のアドレス(以下、「キーアドレス」と称する。)に格納される。すなわち、メモリシステム1が正規のホストコンピュータ10に装着されているならば、キーアドレスは常に一定である。
【0035】
プログラム26は、保護対象の情報であり、ホストコンピュータ10によって実行される。そして、プログラム26には、ホストコンピュータ10によって実行されるときの当該プログラム26の進行状況がマーカーコード等により定義されている。以下の説明では、プログラム26の進行状況として、当該プログラム26には、順次に、N個のステージ(ステージ1,・・・,N)が定義されているものとする(Nは2以上の自然数)。すなわち、ホストコンピュータ10は、プログラム26を実行中において、実行中のプログラム26の進行状況をステージn(nは1からNまでの自然数)として取得することができる。
【0036】
なお、詳細は後述するが、本実施の形態におけるプログラム26は、ホストコンピュータ10が被演算情報としてキー情報25を用いるときには、直接キーアドレス(固定のアドレス)を指定して記憶装置12から読み出すように記述されている。したがって、キーアドレスによってキー情報25として読み出された値が、真にキー情報25の値であれば、ホストコンピュータ10において、キーアドレスに格納されている情報が書き換えられたりしていない状態であることを示している。すなわち、本実施の形態におけるキー情報25は、ホストコンピュータ10の状態を反映した情報である。また、本実施の形態における保護対象の情報は、プログラム26のみではなく、メモリアレイ21内に格納されているすべての情報である。
【0037】
メモリシステム3は、コントローラ30と、メモリアレイ31とを備えている。コントローラ30は、ホストコンピュータ10からの要求に応じて、メモリアレイ31に格納されている各種データを読み出してホストコンピュータ10に出力する機能と、メモリアレイ31に各種データを格納する機能とを有している。本実施の形態におけるコントローラ30の機能および動作については、後述する。
【0038】
図3は、第1の実施の形態におけるメモリアレイ31の記憶領域と各記憶領域に格納される情報とを例示する図である。メモリアレイ31は、複数の不揮発性の記憶素子から構成されており、図3に示すように複数の記憶領域に分割されている。
【0039】
本実施の形態におけるメモリアレイ31の記憶領域としては、データセーブ領域32、演算方法格納領域33、必要不可欠情報格納領域34、第1テーブル格納領域35および第2テーブル格納領域36が定義されている。ただし、定義される記憶領域はこれに限定されるものではなく、必要に応じて、その他の記憶領域が定義されてもよい。
【0040】
メモリアレイ31を構成する記憶素子は、データの読み出しのみではなく、書き込みも可能な素子が採用される。したがって、メモリシステム3は、メモリシステム1において、先述のように読み書き可能な記憶装置として構成されている。
【0041】
データセーブ領域32は、セーブデータ320を格納する記憶領域であって、ホストコンピュータ10(ユーザ)によって自由にアクセスすることができる領域である。なお、ここにいう、「自由にアクセスすることができる」とは、本発明に係るセキュリティ機能によらずにアクセスすることができるという意味である。
【0042】
また、セーブデータ320は、主には、ユーザによって作成される情報であり、プログラム26を途中から再開させるための情報(ゲームを途中で中断したときの情報等)や、ユーザが取得したコンテンツ情報(画像、音声、文章等)等である。ただし、セーブデータ320は、ユーザからの指示によらずに、例えば、ホストコンピュータ10が自動的に作成する情報であってもよい。
【0043】
演算方法格納領域33は、演算方法情報330を格納する領域である。演算方法情報330には、ステージn(先述のようにプログラム26の進行状況を示す。)ごとに設定された複数の演算方法を定義する情報が含まれている。以下の説明では、ステージnに対応する演算方法を「演算方法fn(x)」と称する。演算方法fn(x)としては、例えば、「x」のチェックサムの値やハッシュ値を演算するものが考えられるが、もちろんこれらに限定されるものではない。
【0044】
ここで、「x」は、被演算情報の値であり、本実施の形態では先述のようにキーアドレスから読み出された値(正常であればキー情報25の値となる。)を用いる。したがって、本実施の形態では、被演算情報はプログラム26ごとに異なるが、プログラム26の進行状況に関わらず固定である(本実施の形態におけるホストコンピュータ10はキーアドレスに格納されている値を書き換えないため。)。
【0045】
なお、被演算情報は、キー情報25に限定されるものではなく、例えば、ホストコンピュータ10の記憶装置12またはROM2のメモリアレイ21内の特定のアドレスに格納されている他の値や演算方法を構成する情報の値などが採用されてもよいし、プログラム26の進行中において固定の値でなくてもよい。ただし、被演算情報は、少なくとも正常な処理が行われている限りにおいてプログラム26による予測が可能な値であって、好ましくはホストコンピュータ10の状態を反映した情報である。さらには、被演算情報はプログラム26が改ざん、あるいは、違法に複製された場合には状態が変化する情報とすることが好ましい。
【0046】
必要不可欠情報格納領域34は、必要不可欠情報340を格納しておく記憶領域である。メモリシステム1では、ホストコンピュータ10が当該プログラム26を進行させる上で必要不可欠な情報がステージnごとに定義されており、これらが必要不可欠情報340として必要不可欠情報格納領域34に格納されている。以下の説明では、ステージnに対応する必要不可欠な情報を「En」と称する。すなわち、必要不可欠情報340には、ステージ1,・・・,Nに対応して、複数の必要不可欠な情報E1,・・・,ENが含まれている。
【0047】
必要不可欠な情報Enとしては、例えば、プログラム26を進行させる上で必要となるキャラクタデータまたはその一部や、ROM2内に暗号化されて格納されている情報の復号キーに関する情報等が想定される。また、演算方法情報330において演算方法fn(x)の一部のみを格納しておき、情報E(n−1)と併せて演算方法fn(x)が表現されるようにしてもよい。あるいは、ステージnにおいて演算方法fn(x)をメモリシステム3から読み出すためのコマンド(後述)を、ステージ(n−1)に対応する必要不可欠な情報E(n−1)としてもよい。
【0048】
以下では、必要不可欠な情報Enは、プログラム26を実行するときにおいて、ステージnを進行させるためだけに必要な情報として説明する。すなわち、本実施の形態では、ステージnを進行させるときにおいて、ホストコンピュータ10は、必要不可欠な情報Enをメモリシステム1から取得する必要がある一方で、直前までのステージ1,・・・,(n−1)において取得した必要不可欠な情報E1,・・・,E(n-1)を記憶装置12等に保持しておく必要はない。
【0049】
また、以下では、必要不可欠情報340は、メモリシステム1の出荷時には、すでにメモリアレイ31の必要不可欠情報格納領域34に格納されているものとして説明する。
【0050】
第1テーブル格納領域35は、第1テーブル350を格納する記憶領域である。第1テーブル350とは、演算方法fn(x)を読み出すためのコマンドと、演算方法fn(x)とを関連づける情報である。以下の説明では、演算方法fn(x)を読み出すためのコマンドを「コマンドRn」と称する。詳細は後述するが、コントローラ30は、ホストコンピュータ10からコマンドRnを受け取ると、第1テーブル350を参照して、受け取ったコマンドRnに対応する演算方法fn(x)を被選択演算方法として選択し、当該被選択演算方法を演算方法情報330から読み出してホストコンピュータ10に出力する。
【0051】
なお、本実施の形態では、コマンドRnは、プログラム26内に記述されており、ホストコンピュータ10は、プログラム26の進行状況(ステージ1,・・・,N)に対応するコマンドR1,・・・,RNを取得するものとして説明する。すなわち、コマンドRnはホストコンピュータ10におけるプログラム26の進行状況に応じて選択されるため、選択されたコマンドRnはホストコンピュータ10の状態を反映している。ただし、コマンドRnは、このような形態で提供されるものに限定されるものではない。例えば、先述のように、コマンドR2,・・・,RNは、必要不可欠な情報E1,・・・,E(N-1)として必要不可欠情報340に含まれていてもよい。
【0052】
第2テーブル格納領域36は、第2テーブル360を格納する記憶領域である。第2テーブル360とは、キー情報25(被演算情報)を演算方法fn(x)によって演算することにより求められる演算結果(図3において図示せず)と、必要不可欠情報340に含まれる必要不可欠な情報Enとを関連づける情報である。なお、以下では、ステージnにおいてコマンドRnにより正常に読み出された演算方法fn(x)を用いて、被演算情報(正常であればキー情報25)を演算した正常な演算結果を「演算結果An」と称する。一方、ステージnにおいて演算により求められ、未だ、正常であるか否かの判定を受けていない演算結果を「演算結果QAn」と称する。
【0053】
詳細は後述するが、コントローラ30は、ホストコンピュータ10から、必要不可欠情報340に対するアクセス要求(必要不可欠な情報Enを読み出すコマンドを受け取ったとき)があると、当該要求とともに入力される演算結果QAnを用いて第2テーブル360を参照する。そして、当該演算結果QAnに一致する演算結果Anが存在する場合、当該演算結果Anに関連づけられている必要不可欠な情報Enを被選択必要不可欠情報として選択し、必要不可欠情報340(必要不可欠情報格納領域34)から当該被選択必要不可欠情報を読み出して、ホストコンピュータ10に出力する。すなわち、本実施の形態では、演算結果QAnに一致する演算結果Anが第2テーブル360に存在することが必要不可欠情報の出力条件となる。なお、以下の説明では、ホストコンピュータ10が、必要不可欠情報340から必要不可欠な情報Enを読み出すために発行するコマンドを「要求コマンド」と称する。
【0054】
図1に戻って、ホストコンピュータ10は、各種のデータの演算を行うとともにホストコンピュータが備える各種ハードウェアを制御するCPU11と、各種のデータを記憶する記憶装置12とを備えている。これにより、ホストコンピュータ10は、一般的なコンピュータとしての構成および機能を備えている。また、ホストコンピュータ10は、図示しないスロットを備えており、当該スロットにメモリシステム1を装着することが可能である。
【0055】
ホストコンピュータ10のCPU11は、メモリシステム1のメモリアレイ21に格納されているデータをROM2から読み出して各種の演算を行う。
【0056】
特に、CPU11は、プログラム格納領域23に格納されているプログラム26をコントローラ20を介して記憶装置12にロードしつつ、実行する機能を有している。また、先述のように、CPU11は、固有キー格納領域22に格納されているキー情報25を記憶装置12のキーアドレスで示される領域に格納する。また、CPU11は、プログラム26を実行しつつ、実行中のプログラム26の進行状況(進行中のステージ)を把握し、必要であれば、記憶装置12に進行状況(ステージ識別子)を格納する。
【0057】
さらに、CPU11は、コントローラ30を介してメモリアレイ31にアクセスする機能も有している。
【0058】
例えば、CPU11は、実行中のプログラム26の進行状況(ステージn)に応じて、メモリシステム1(コントローラ30)に対してコマンドRnを発行する。これによってホストコンピュータ10はメモリシステム3から演算方法fn(x)を読み出すことができる。また、読み出した演算方法fn(x)と被演算情報(正常であればキー情報25)とを用いて演算結果QAnを求め、これを要求コマンドとともにメモリシステム1(コントローラ30)に出力することにより、ステージnを進行させるために必要不可欠な情報Enを取得する。
【0059】
記憶装置12は、CPU11の一時的なワーキングエリアとして使用されるRAM(一般的には、高速アクセス可能な揮発性の記憶装置が採用される。)や、ホストコンピュータ10の起動プログラム(図示せず)等を格納しておく読み取り専用のROMなどのハードウェアから構成されている。また、図1には示していないが、セキュリティ機能強化のためには、記憶装置12の一部または全部がCPU11の内部にあってもよい。
【0060】
なお、詳細は図示しないが、ホストコンピュータ10は、ユーザに対して情報を出力する出力装置(ディスプレイやLED、スピーカ、プリンタ等)、ユーザが情報を入力するために操作する入力装置(キーボードやボタン、コントローラ、マイク、タッチパネル等)などのハードウェアを適宜備えていてもよい。
【0061】
以上が、メモリシステム1を含むコンピュータシステムの構成および機能の説明である。次に、コンピュータシステムの動作を説明しつつ、本実施の形態における情報保護方法について説明する。
【0062】
図4は、第1の実施の形態におけるメモリシステム3の動作を示す流れ図である。メモリシステム3は、起動中のホストコンピュータ10にメモリシステム1が装着された状態で動作する。なお、以下において、ROM2のコントローラ20の動作については、従来の技術を適用することが可能であるため、適宜説明を省略する。
【0063】
メモリシステム1が動作中において、メモリシステム3のコントローラ30は、ホストコンピュータ10からの各種コマンドを受け付けることが可能な状態となっている(ステップS1,S3,S5,S8)。以下、コントローラ30がホストコンピュータ10からのコマンドを受け付けることが可能な状態を「待ち受け状態」と称する。ただし、コントローラ30が受け付けるコマンドは図4に示すものに限定されるものではない。
【0064】
待ち受け状態において、ロードコマンドが入力されると(ステップS1においてYes)、コントローラ30は、メモリアレイ31のデータセーブ領域32に格納されているセーブデータ320をロードする(ステップS2)。より詳細には、ロードコマンドとともに入力されるアドレス(データセーブ領域32のアドレス)により指定されるセーブデータ320をメモリアレイ31から読み出し、ホストコンピュータ10に出力する。
【0065】
待ち受け状態において、セーブコマンドが入力されると(ステップS3においてYes)、コントローラ30は、メモリアレイ31のデータセーブ領域32にデータをセーブする(ステップS4)。より詳細には、セーブコマンドとともに入力されるアドレス(データセーブ領域32のアドレス)に、セーブコマンドとともに入力される情報(保存する情報。例えば、ユーザデータなど。)を、セーブデータ320として書き込む。
【0066】
このように、本実施の形態では、セーブデータ320の読み出し、および、書き込みに対しては、コントローラ30は、特別な処理は行わず、従来と同等の処理を行う。ただし、本実施の形態におけるホストコンピュータ10は、セーブデータ320に、当該セーブデータ320がセーブされたときのプログラム26の進行状況(ステージn)を示す情報を含める。言い換えれば、本実施の形態におけるプログラム26は、実行中において、セーブデータ320を作成(更新)するときには、そのときの進行状況を示す情報をセーブデータ320に含めるように記述されている。以下では、セーブデータ320に含まれるステージnを示す情報(セーブデータ320により再開されるステージを示す。)を、「ステージS」と称する。
【0067】
待ち受け状態において、コマンドRnが入力されると(ステップS5においてYes)、コントローラ30は、第1テーブル格納領域35の第1テーブル350を参照する(ステップS6)。
【0068】
ここで第1テーブル格納領域35(第1テーブル350)から読み出される情報とは、入力されたコマンドRnに対応する演算方法fn(x)が格納されている位置を示すアドレスである。なお、図4において図示を省略しているが、入力されたコマンドRnが第1テーブル350に格納されていない場合(すなわち、誤ったコマンドRnが入力された場合)、コントローラ30は、ホストコンピュータ10にダミーデータを出力する。ただし、ダミーデータを出力する代わりに、エラーを返す、あるいは、以降の動作を限定する、もしくは、何も受け付けない等の処理を行ってもよい。
【0069】
次に、コントローラ30は、読み出したアドレスで示される演算方法格納領域33に格納されている情報を読み出してホストコンピュータ10に出力する。演算方法格納領域33に格納されている情報とは、すなわち、演算方法情報330に含まれている演算方法fn(x)を表現した情報である。このように、ホストコンピュータ10からコマンドRnが入力されたときには、コントローラ30は、当該コマンドRnに対応する演算方法fn(x)を被選択演算方法として選択しホストコンピュータ10に出力する(ステップS7)。
【0070】
先述のように、コマンドRnはステージn(ホストコンピュータ10の状態を反映している。)に応じて選択されるため、コマンドRnはコマンドRnが出力されたときのホストコンピュータ10の状態を反映した情報である。そして、コントローラ30がコマンドRnに応じて複数の演算方法f1(x),・・・,fN(x)から演算方法fn(x)を選択することは、すなわちコントローラ30がホストコンピュータ10からの要求があったときのホストコンピュータ10の状態に応じて演算方法情報330から1の演算方法fn(x)を被選択演算方法として選択することになる。
【0071】
このように構成することにより、不正に演算方法fn(x)を読みだそうと企図する者は、刻々と変化する正常なホストコンピュータ10の状態をも再現しなければ演算方法fn(x)を読み出すことができず、セキュリティレベルが向上する。
【0072】
待ち受け状態において、要求コマンドが入力されると(ステップS8においてYes)、コントローラ30は、第2テーブル格納領域36の第2テーブル360を参照する(ステップS9)。
【0073】
要求コマンドが入力されるときには、当該コマンドとともに、ホストコンピュータ10において求められた演算結果QAnも入力される。コントローラ30は、演算結果QAnに一致する演算結果Anが格納されていないか第2テーブル360を検索する。そして、演算結果QAnに一致する演算結果Anが格納されていた場合、コントローラ30は、当該演算結果Anに関連づけられているアドレスを読み出す。なお、第2テーブル360において、演算結果Anに関連づけられているアドレスとは、演算結果Anに対応する必要不可欠な情報Enの格納アドレスである。
【0074】
次に、コントローラ30は、第2テーブル360から読み出した格納アドレスで示される情報を必要不可欠情報格納領域34から読み出してホストコンピュータ10に出力する。必要不可欠情報格納領域34に格納されている当該情報とは、すなわち、必要不可欠情報340に含まれている必要不可欠な情報Enである。このようにして、ホストコンピュータ10から要求コマンドが入力されたときには、コントローラ30は、当該要求コマンドとともに入力される演算結果QAnに一致する演算結果Anに対応する1の必要不可欠な情報Enを被選択必要不可欠情報として選択しホストコンピュータ10に出力する(ステップS10)。
【0075】
先述のように、本実施の形態における被演算情報はホストコンピュータ10の状態を反映した情報である。したがって、被演算情報を用いて演算される演算結果QAnもホストコンピュータ10の状態を反映した情報となる。そして、コントローラ30が、被選択必要不可欠情報の出力条件として、ホストコンピュータ10の状態を反映した演算結果QAnを用いることにより、不正に必要不可欠情報340を読みだそうと企図する者は、刻々と変化する正常なホストコンピュータ10の状態をも再現しなければ必要不可欠情報340を読み出すことができず、セキュリティレベルが向上する。なお、要求コマンドとともに入力された演算結果QAnと一致する演算結果Anが第2テーブル360に格納されていない場合、コントローラ30は、ダミーデータを出力する。ただし、ダミーデータを出力する代わりに、エラーを返す、あるいは、以降の動作を限定する、もしくは、何も受け付けない等の処理を行ってもよい。
【0076】
以上がメモリシステム3の動作である。次に、ホストコンピュータ10の動作を説明する。
【0077】
図5および図6は、第1の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、以下では、ホストコンピュータ10には、すでにメモリシステム1が装着されており、コントローラ30は待ち受け状態にあるものとして説明する。また、図5および図6に示される各工程は、特に断らない限り、ホストコンピュータ10のCPU11が、主にプログラム26に従って動作することにより実行される工程を示す。
【0078】
ホストコンピュータ10は、プログラム26の実行を開始すると、メモリシステム1のROM2からキー情報25を取得し(ステップS11)、記憶装置12のキーアドレスに格納する。そして、プログラム26の進行状況を示すステージnに「1(初期ステージ)」をセットする(ステップS12)。これにより、ホストコンピュータ10において実行中のプログラム26の進行状況がステージ1に移行し、ステージ1が開始される。
【0079】
次に、ホストコンピュータ10は、メモリシステム1(コントローラ30)に対して、コマンドRnを発行する。これにより、先述のようにメモリシステム1から演算方法fn(x)(被選択演算方法)が取得される(ステップS13)。なお、先述のように、ステージnにおいて使用するコマンドRnは、ホストコンピュータ10がROM2のメモリアレイ21から取得する。
【0080】
演算方法fn(x)が取得されると、ホストコンピュータ10は、記憶装置12のキーアドレスに格納されている値を被演算情報として読み出し、当該被演算情報を、ステップS13において取得した演算方法fn(x)により演算し、演算結果QAnを求める(ステップS14)。
【0081】
次に、ホストコンピュータ10は、要求コマンドとともに、ステップS14において求めた演算結果QAnをメモリシステム1(コントローラ30)に対して出力する。これにより、先述のようにメモリシステム1から必要不可欠な情報En(被選択必要不可欠情報)が取得される(ステップS15)。
【0082】
必要不可欠な情報Enを取得すると、ホストコンピュータ10は、プログラム26のステージnを進行させつつ(ステップS20)、様々な状態を監視する状態となる(ステップS21,S24,S26,S29)。ただし、ホストコンピュータ10が監視する状態は、図6に示される状態に限定されるものではない。以下、ホストコンピュータ10が様々な状態を監視している状態を「監視状態」と称する。
【0083】
監視状態において、データロード(メモリアレイ31のデータセーブ領域32に格納されている情報に対する読み出し。)が指示されると(ステップS21においてYes)、ホストコンピュータ10はメモリシステム1のコントローラ30に対して、ロードコマンドを出力する。ホストコンピュータ10からロードコマンドを受け取ると、コントローラ30は、先述のように、データロードを行い、ホストコンピュータ10に対してセーブデータ320を出力する。これにより、ホストコンピュータ10は、セーブデータ320を取得する(ステップS22)。
【0084】
セーブデータ320を取得すると、ホストコンピュータ10は、取得したセーブデータ320に含まれる再開させるステージSに関する情報に基づいて、nにSをセットする(ステップS23)。これにより、プログラム26の進行状況は、データロード前のステージから再開させるステージ(すなわちステージS)に移行する。ステージSが再開されると、ロードしたセーブデータ320に従ってプログラム26を進行させるために、ホストコンピュータ10はステップS20の処理に戻る。
【0085】
本実施の形態では、先述のように、必要不可欠な情報Enは、ステージnを進行させるためにのみ必要な情報である。しかし、このような情報を必要不可欠な情報Enとして定義した場合であっても、セーブデータ320を取得しステージSからプログラム26を再開した場合においても、再開時点からステージSを終了するまでに、必要不可欠な情報Eを使用しなければならなくなる場合も起こりうる。
【0086】
例えば、必要不可欠な情報Enがステージnにのみ登場するキャラクタデータの一部であって、再開時点からステージSが終了するまでに、そのキャラクタが登場するならば、前記の問題が発生する。このような場合には、ステージSに関する情報とともに、当該ステージSを開始したときに取得した必要不可欠な情報ESもセーブデータ320に含めてセーブし、ロードしたセーブデータ320から必要不可欠な情報ESを取得するように構成すればよい。
【0087】
ただし、本実施の形態におけるデータセーブ領域32は、比較的自由にアクセス可能な記憶領域として構成されている。そのため、セーブデータ320に必要不可欠な情報ESを含めると、セキュリティ機能が多少低下するおそれがある。したがって、上記のような問題を生じさせない情報(再開後のステージSで使用されない情報)を、必要不可欠な情報Enとして定義することが好ましい。このような情報としては、例えば、ステージSにおいて必要不可欠な情報ESを取得した後、直ちに使用し、その後は使用しないような情報が好ましい。このような情報として、例えば、ステップS15の実行直後に一度だけ実行される処理のプログラムコードなどが考えられる。
【0088】
あるいは、ステップS23を実行した直後に、ステップS13ないしS15に相当する処理を実行して、ステージSにおける必要不可欠な情報ESを取得してもよい。
【0089】
監視状態において、データセーブが指示されると(ステップS24においてYes)、ホストコンピュータ10はメモリシステム1のコントローラ30に対して、セーブコマンドとともに、保存する情報(セーブデータ。セーブ時のステージnに関する情報を含む。)を出力する(ステップS25)。これにより、コントローラ30は、先述のように、データのセーブを行う。なお、ホストコンピュータ10に対するデータセーブの指示は、ユーザからされてもよいし、オートセーブのように、プログラム26によって実行タイミングが予め決められているものであってもよい。
【0090】
監視状態において、プログラム26が進行しステージnが終了すると(ステップS26においてYes)、ホストコンピュータ10は、現在のステージnが最終ステージNであるか否かを判定する(ステップS27)。
【0091】
そして、現在のステージnが最終ステージNである場合、プログラム26が最後まで進行したと判断し、プログラム26を終了する。一方、現在のステージnが最終ステージNでない場合、ステージnをインクリメントして(ステップS28)、次のステージを開始し、ステップS13の処理に戻る。
【0092】
監視状態において、終了が指示されると(ステップS29においてYes)、ホストコンピュータ10は、プログラム26の実行を終了する。なお、詳細は省略するが、終了が指示された場合は、データセーブを行うか否かをユーザに対して確認することが好ましい。
【0093】
以上が、第1の実施の形態における情報保護方法の説明である。次に、本実施の形態における効果について検証する。
【0094】
メモリシステム1では、保護の対象となる情報は、ROM2のメモリアレイ21と、メモリシステム3のメモリアレイ31にそれぞれ格納されている。そして、ROM2に格納されているプログラム26は、メモリシステム3に格納されている必要不可欠な情報E1,・・・,ENがなければ、ホストコンピュータ10において正常に動作させることができないように構成されている。すなわち、プログラム26を不正に複製しようと企図する者(以下、「不正な複製者」と称する。)は、ROM2のセキュリティ機能を破ってメモリアレイ21に格納されている情報を複製するだけでは足りず、メモリシステム3のコントローラ30が提供するセキュリティ機能をも看破し、メモリアレイ31に格納されている情報をも全て読み出して複製する必要がある。
【0095】
ここで、コントローラ30を介して、メモリアレイ31から全ての必要不可欠な情報E1,・・・,ENを読み出すためには、外部のコンピュータ(ホストコンピュータ10に限られない。例えば、不正な複製者の使用するコンピュータも含む。)は、コントローラ30に要求コマンドを出力するだけでは足りない。この要求コマンドは、ROM2に格納されているため、メモリアレイ21に格納されている情報を複製するだけで再現できるかもしれないが、この要求コマンドを無作為にコントローラ30に与えても、必要不可欠な情報Enは読み出せない。
【0096】
すでに説明したように、外部のコンピュータは、当該要求コマンドとともに、正常な全ての演算結果A1,・・・,ANを1つずつコントローラ30に出力してやる必要がある。そして、この演算結果AnはROM2に格納されておらず、メモリシステム3(第2テーブル格納領域36)に格納されているのみである。したがって、演算結果AnをROM2から複製することはできないのであるから、未だメモリシステム3のセキュリティ機能を突破できていない不正な複製者は、演算結果A1,・・・,ANをそれぞれ演算により求める以外にない。
【0097】
演算結果Anは、被演算情報を演算方法fn(x)で演算した結果として得られる。したがって、全ての演算結果A1,・・・,ANを得るには、外部のコンピュータは、被演算情報と、全てのf1(x),・・・,fN(x)を取得しなければならない。本実施の形態では、被演算情報(キー情報25)はROM2に格納されているものの、演算方法fn(x)はメモリシステム3(演算方法格納領域33)にのみ格納されている。したがって、演算方法fn(x)をROM2から読み出すことはできないのであるから、未だメモリシステム3のセキュリティ機能を突破できていない不正な複製者は、全てのコマンドR1,・・・,RNを1つずつコントローラ30に出力してメモリシステム3から読み出す必要がある。
【0098】
すなわち、メモリシステム1では、全ての必要不可欠な情報E1,・・・,ENを読み出すためには、ROM2のセキュリティ機能を破り、メモリアレイ21に格納されている情報を読み出し、解析して、被演算情報と全てのコマンドR1,・・・,RNとを特定しなければならない。
【0099】
また、先述のように、被演算情報および全てのコマンドR1,・・・,RNは、ホストコンピュータ10の状態を反映した情報とされているため、不正な複製者は、特定した被演算情報と全てのコマンドR1,・・・,RNとを使用するに際しても、正常なホストコンピュータ10の状態をも再現しなければならない。
【0100】
さらに、被演算情報および全てのコマンドR1,・・・,RNは、正規のプログラマ(プログラム26の提供者)がプログラム26に応じて書き換えるだけで、容易に変更でき、ホストコンピュータ10における変更を要しない。したがって、例えば、ゲームタイトルごとや改訂版ごとに頻繁に変更でき、不正な複製者は、その度に上記の解析作業を行わなければならず、違法な複製品(海賊版)を製造するまでに一定以上の時間を要することとなる。特に、プログラム26がゲームソフトウェアなどである場合、発売開始直後から海賊版が流通すると正規版の売れ行きに大きな影響がでてしまうという特性がある。したがって、このような市場の製品においては、例え完全に海賊版の製造を防止できなくとも、発売開始から一定期間でも海賊版の出現を遅らせることができるならばその効果は大きいといえる。
【0101】
以上のように、第1の実施の形態におけるメモリシステム1は、ホストコンピュータ10に接続され、プログラム26を格納するメモリアレイ21と、メモリアレイ21に対するアクセスを制御するコントローラ20と、ホストコンピュータ10がプログラム26を使用するときに必要となる必要不可欠情報340を格納する書き換え可能なメモリアレイ31と、メモリアレイ31に対するアクセスを制御するコントローラ30とを備えている。そして、コントローラ30は、ホストコンピュータ10の状態を反映した出力条件に応じて、メモリアレイ31に格納されている必要不可欠情報340を被選択必要不可欠情報としてホストコンピュータ10に出力する。これにより、既存のホストコンピュータ10の設計変更を必要とせず、安価にセキュリティレベルを向上させることができる。また、例えば、プログラム26ごとに変更できるので、一旦、セキュリティを破られても、容易に再構築できる。また、ホストコンピュータの状態を反映した出力条件が設けられているため、これを再現しなければ必要不可欠情報を読み出すことができず、複製を作成することが一層困難となる。
【0102】
また、メモリシステム1は、演算方法fn(x)を定義する演算方法情報330を格納しており、演算方法fn(x)を被選択演算方法としてホストコンピュータ10に出力し、被選択必要不可欠情報の出力条件は、被演算情報(キーアドレスで示される記憶領域に格納されている情報)を被選択演算方法により演算して得られる演算結果QAnに基づく条件を含んでいる。このように、必要に応じて演算により作成される情報を出力条件にすることにより、いずれかの記憶領域に格納されている情報(固定されている情報)をそのまま出力条件に用いる場合に比べて、セキュリティレベルが向上する。
【0103】
また、演算方法情報330は、複数の演算方法f1(x),・・・,fN(x)を定義しており、メモリアレイ31は、複数の必要不可欠な情報E1,・・・,ENを格納しており、複数の演算方法f1(x),・・・,fN(x)から選択される1の演算方法fn(x)によりそれぞれ求められる複数の演算結果A1,・・・,ANと複数の必要不可欠な情報E1,・・・,ENとが一対一で関連づけられており、コントローラ30は、出力条件に応じて、複数の必要不可欠な情報E1,・・・,ENから1の被選択必要不可欠情報を選択してホストコンピュータ10に出力する。これにより、1回の演算により得られる1の演算結果A1によって全ての必要不可欠情報340が読み出される場合に比べて、セキュリティレベルが向上する。
【0104】
また、被選択演算方法は、プログラム26のホストコンピュータ10における進行状況に応じて選択されることにより、プログラム26の進行状況にリンクさせた読み出し要求をしなければ、必要不可欠情報340を読み出すことが困難となる。これによりセキュリティレベルが向上する。
【0105】
また、演算方法情報330は、メモリアレイ31に格納される。メモリシステム3のセキュリティ機能は未だ破られていないので、ROM2側に演算方法情報330を格納する場合に比べて、セキュリティレベルが向上する。
【0106】
なお、ホストコンピュータ10はデータセーブ領域32に対して自由にアクセス可能であると説明したが、データセーブ領域32に対するホストコンピュータ10からのアクセスに対して、何らかのセキュリティ機能を設けてもよい。以下の実施の形態においても同様である。
【0107】
また、第1の実施の形態では、演算方法情報330において複数の演算方法fn(x)が定義されていたが、定義される演算方法は1つであってもよい。この場合でも、メモリシステム3にセキュリティ機能が追加されているため、従来の技術に比べればセキュリティレベルは向上する。そして、演算方法情報330において1の演算方法のみを定義する場合であっても、既存のホストコンピュータ10に対する設計変更は不要であるとともに、保護対象の情報に応じて容易に変更することも可能であるという効果も得られる。
【0108】
また、図2および図3に示した各記憶領域のそれぞれは、メモリアレイ21,31において連続したアドレスで構成されているように示している。しかし、例えば、固有キー格納領域22は、不連続なアドレスにより構成されていてもよい。以下の実施の形態においても同様である。
【0109】
<2. 第2の実施の形態>
第1の実施の形態では、演算方法fn(x)および必要不可欠な情報Enは保護対象の情報のホストコンピュータ10における進行状況(ステージn)に関連づけられており、ステージnにおいては演算方法fn(x)および必要不可欠な情報Enしか読み出せないように構成されていた。しかし、例えば、演算方法f(n-1)(x)と演算方法fn(x)との読み出す順序は、特に制限されていなかった。しかし、例えば、複数の演算方法f1(x),・・・,fN(x)の読み出し順序を制限し、この制限に従っていない場合に当該読み出しを禁止することも可能である。また、必要不可欠な情報Enについても同様である。
【0110】
図7は、第2の実施の形態におけるメモリアレイ31の記憶領域と各記憶領域に格納される情報とを例示する図である。なお、第2の実施の形態におけるメモリシステム1において第1の実施の形態におけるメモリシステム1と同様の構成については同符号を付し、適宜説明を省略する。
【0111】
図7と図3とを比較すれば明らかなように、第2の実施の形態におけるメモリシステム1は、メモリシステム3のメモリアレイ31に設けられる記憶領域が第1の実施の形態におけるメモリシステム1と異なっている。具体的には、第2の実施の形態におけるメモリアレイ31には、進行履歴情報370を格納する進行履歴格納領域37と、出力履歴情報380を格納する出力履歴格納領域38が追加的に設けられている。
【0112】
また、第1テーブル格納領域35に格納される情報が第1テーブル351である点と、第2テーブル格納領域36に格納される情報が第2テーブル361である点も第1の実施の形態におけるメモリシステム1と相違する。
【0113】
進行履歴格納領域37に格納される進行履歴情報370は、コントローラ30により作成される情報であって、コントローラ30がホストコンピュータ10から進行状況(ステージn)を通知されたときに、当該通知された進行状況を記録する情報である。詳細は後述するが、本実施の形態では、プログラム26におけるステージ(n−1)までが順次に正常に進行して正常にステージnが開始されたときには、進行履歴情報370には、ステージnが記録される。言い換えれば、進行履歴情報370にステージnが記録されている状態とは、ホストコンピュータ10により実行中のプログラム26の進行状況がステージnの状態であることを示す。なお、以下の説明では、進行履歴情報370に記録されたステージを「ステージP」と称する。
【0114】
出力履歴格納領域38に格納される出力履歴情報380は、コントローラ30によって作成される。出力履歴情報380は、コントローラ30がホストコンピュータ10に必要不可欠情報340を出力するときに、出力する必要不可欠な情報Enに関する情報を記録する情報である。本実施の形態では、プログラム26がステージnまで順次に正常に進行し、ステージnにおける必要不可欠な情報Enまでが正常に出力された状態では、出力履歴情報380にはステージnが記録されている。なお、以下の説明では、出力履歴情報380に記録されたステージを「ステージQ」と称する。また、出力履歴情報380におけるステージQの初期値は「0」である。
【0115】
第2の実施の形態における第1テーブル351は、コマンドRnと当該コマンドRnに対応するアドレス(当該コマンドRnにより読み出されるべき演算方法fn(x)が格納されている演算方法格納領域33のアドレス)とを関連づけている点は第1の実施の形態における第1テーブル350と同じである。しかし、第1テーブル351は、これらの情報に加えて、全てのコマンドRnについて、各コマンドRnが使用されるべきステージnに関する情報も関連づけられている。すなわち、第1テーブル351は、コマンドRnと、コマンドRnが使用されるべきステージnと、コマンドRnによって読み出される演算方法fn(x)の格納アドレスとを関連づけている。
【0116】
第2の実施の形態における第2テーブル361は、演算結果Anと、当該演算結果Anに対応するアドレス(当該演算結果Anに一致する演算結果QAnが要求コマンドとともに入力された場合に読み出される必要不可欠な情報Enが格納されている必要不可欠情報格納領域34のアドレス)とを関連づけている点は第1の実施の形態における第2テーブル360と同じである。しかし、第2テーブル361は、これらの情報に加えて、プログラム26の進行状況(ステージn)に関する情報も関連づけられている。すなわち、第2テーブル361は、ステージnと、演算結果An(当該ステージnにおいて正常に演算が実行された場合の演算結果QAnの予測値)と、当該演算結果Anに対応する必要不可欠な情報Enの格納アドレスとを関連づけている。
【0117】
次に、第2の実施の形態における情報保護方法について説明する。
【0118】
図8は、第2の実施の形態におけるメモリシステム3の動作を示す流れ図である。第2の実施の形態におけるメモリシステム3は、起動中のホストコンピュータ10にメモリシステム1が装着された状態で動作する。
【0119】
第2の実施の形態におけるメモリシステム3が動作中において、メモリシステム3のコントローラ30は、ホストコンピュータ10からの各種コマンドを受け付けることが可能な状態となっている(ステップS30,S33,S36,S42)。以下、本実施の形態において、第2の実施の形態におけるコントローラ30がホストコンピュータ10からのコマンドを受け付けることが可能な状態を「待ち受け状態」と称する。ただし、コントローラ30が受け付けるコマンドは図8に示すものに限定されるものではない。
【0120】
待ち受け状態において、ロードコマンドが入力されると(ステップS30においてYes)、コントローラ30は、メモリアレイ31のデータセーブ領域32に格納されているセーブデータ320をロードする(ステップS31)。そして、ロードしたセーブデータ320から、当該セーブデータ320により再開されるステージ(すなわち、ステージS)に関する情報を取得して、進行履歴情報370にステージPとして当該ステージSを記録するとともに、出力履歴情報380にステージQとして当該ステージSの直前のステージ(S−1)を記録する(ステップS32)。
【0121】
ステップS32が実行されることにより、例えば、すでにプログラム26がステージnまで進行している状況であっても、ステージ(n−1)から再開されるセーブデータ320がロードされた場合には、進行履歴情報370におけるステージPがステージ(n−1)に書き換えられ、出力履歴情報380におけるステージQがステージ(n−2)に書き換えられる。すなわち、正常な処理により進行状況が逆行する場合には、進行履歴情報370および出力履歴情報380が訂正される。
【0122】
待ち受け状態において、セーブコマンドが入力されると(ステップS33においてYes)、コントローラ30は、このときのステージnを進行履歴情報370におけるステージPとして記録する(ステップS34)。ステップS34において記録するステージnは、セーブコマンドとともにホストコンピュータ10から入力される情報に含まれるステージnを示す情報を用いる。
【0123】
進行履歴情報370にステージPを記録すると、コントローラ30は、第1の実施の形態と同様にセーブコマンドとともに入力される情報をメモリアレイ31のデータセーブ領域32にセーブする(ステップS35)。なお、本実施の形態では、セーブコマンドとともに、ステージnを示す情報のみがホストコンピュータ10から入力される場合がある。その場合には、データセーブ領域32に格納すべき情報は存在しないので、ステップS35は実行されない。
【0124】
待ち受け状態において、コマンドRnが入力されると(ステップS36においてYes)、コントローラ30は、第1テーブル格納領域35の第1テーブル351を参照する(ステップS37)。そして、入力されたコマンドRnが第1テーブル351に存在していない場合(ステップS38においてNo)、入力されたコマンドRnは定義されていない不正なコマンドであるとみなしてダミーデータを出力する(ステップS39)。
【0125】
一方、入力されたコマンドRnが第1テーブル351に存在する場合(ステップS38においてYes)、第1の実施の形態と同様に、コントローラ30は、入力されたコマンドRnに関連づけられている情報を第1テーブル格納領域35から読み出す。
【0126】
ここで第1テーブル格納領域35(第1テーブル351)から読み出す情報とは、入力されたコマンドRnに対応するステージnを示す情報と、当該コマンドRnに対応する演算方法fn(x)の格納アドレスである。このように、第1テーブル351においてコマンドRnとステージnとが関連づけられていることにより、ホストコンピュータ10はコマンドRnをコントローラ30に出力することで、ホストコンピュータ10の状態(ステージn)を間接的にコントローラ30に伝達することができる。
【0127】
次に、第1テーブル351から取得したステージnが進行履歴情報370に記録されているステージPと一致すれば(ステップS40においてYes)、コントローラ30は、ステージnとともに第1テーブル351から取得した格納アドレスを用いて、当該格納アドレスに格納されている演算方法fn(x)を読み出してホストコンピュータ10に出力する(ステップS41)。
【0128】
一方、第1テーブル351から取得されたステージnが進行履歴情報370に記録されているステージPと異なる場合(ステップS40においてNo)、コントローラ30は、ステップS39を実行してダミーデータを出力する。すなわち、この場合のコントローラ30は、正常な被選択演算方法の出力を禁止する。
【0129】
ステップS40においてNoとなる状況とは、ホストコンピュータ10におけるプログラム26の進行状況(予めメモリシステム3に通知され進行履歴情報370に記録されている進行状況)がステージnではないにもかかわらず、ステージnで使用されるべきコマンドRnが使用されたことを意味する。このように、コントローラ30は、ステップS40を実行することによってプログラム26の進行状況を確認しつつ演算方法fn(x)を選択する。すなわち、第2の実施の形態におけるコントローラ30は、ホストコンピュータ10におけるプログラム26の進行状況(ステージn)に応じて被選択演算方法を選択する。
【0130】
このように、第2の実施の形態における情報保護方法を採用すれば、不正な複製者は、正しいコマンドRn(ROM2において定義されている正規のコマンドRn)を使用してメモリシステム3を攻撃しただけでは、メモリアレイ31から正しい演算方式fn(x)を取得することはできない。したがって、コマンドRnとおぼしき情報をROM2から読み出して無作為にコントローラ30に出力しても、正しい演算方式fn(x)を取得することができる可能性は低く、第1の実施の形態に比べてセキュリティレベルが向上する。
【0131】
待ち受け状態において、要求コマンドが入力されると(ステップS42においてYes)、コントローラ30は、第2テーブル格納領域36の第2テーブル361を参照し(ステップS43)、当該要求コマンドとともに入力された演算結果QAnの正否を判定する(ステップS44)。
【0132】
第1の実施の形態と同様に本実施の形態においても、要求コマンドは演算結果QAnとともに入力される。そこで、コントローラ30は、入力された演算結果QAnに一致する演算結果Anが第2テーブル361に格納されていないか検索し、演算結果QAnに一致する演算結果Anが第2テーブル361に格納されていた場合に演算結果QAnが正しい(ステップS44においてYes)と判断する。
【0133】
しかし、このような判断は次のような問題を生じるおそれがある。すなわち、ステージnにおける演算の結果として演算結果QAnが誤っていたとしても、たまたま他のステージ(例えばステージ(n+1))における演算の予測値(演算結果A(n+1))と一致していれば演算結果QAnが正しいと誤認されることになる。この場合でも後処理により正しい必要不可欠情報(ステージnにおける必要不可欠情報)が読み出されることは阻止されるが、誤った判断がされること自体、あまり好ましいものではない。
【0134】
これを回避するには、ステップS44における判断は、第1の実施の形態と異なり、以下のように行うことが好ましい。すなわち、ステップS43に先だって、コントローラ30が進行履歴情報370におけるステージP(その時点でのプログラム26の進行状況を示す)を取得する。そして、第2テーブル361を参照し、取得したステージPを用いて第2テーブル361を検索する。これにより、第2テーブル361から、ステージPにおける演算の予測値(演算結果An)が得られるので、当該演算結果Anと、入力された演算結果QAnとが一致するか否かを比較し、一致した場合にのみ演算結果QAnが正しい(ステップS44においてYes)と判断する。このように、入力された演算結果QAnの照合を、一回に限定することにより、誤った判断がされることを防止できる。また、コントローラ30がステージnの進行状況を常に管理しているので、演算結果の一致を検索することが容易になる。
【0135】
演算結果QAnが誤っている場合、コントローラ30は、ステップS39を実行することにより、必要不可欠な情報Enの代わりにダミーデータをホストコンピュータ10に出力する。
【0136】
これに対して演算結果QAnが正しい場合には、コントローラ30は、当該演算結果QAnと一致した演算結果Anに対応するステージnを第2テーブル361から読み出す。そして、第2テーブル361から読み出したステージnを用いて、ステージ(n−1)と出力履歴情報380のステージQとが一致するか否かを判定する(ステップS45)。
【0137】
ステップS45における処理は、最後に必要不可欠情報を正常に読み出せたステージ(出力履歴情報380におけるステージQ)が直前のステージ(ステージ(n−1))であるか否かを判定する処理に相当する。すなわち、直前のステージにおいて必要不可欠情報340の出力に成功していた場合にのみ、ステップS45においてYesと判定される。
【0138】
そして、ステップS45においてNoと判定すると、コントローラ30はステップS39を実行することにより、正常な必要不可欠な情報Enの代わりにダミーデータをホストコンピュータ10に出力する。
【0139】
すなわち、第2の実施の形態におけるコントローラ30は、要求コマンドとともに入力された演算結果QAnを「正しい」と判断した場合であっても、直前にホストコンピュータ10に向けて出力した被選択必要不可欠情報が必要不可欠な情報E(n-1)でない場合には、正常な必要不可欠な情報Enをホストコンピュータ10に出力することを禁止する。したがって、第2の実施の形態では、プログラム26の進行順序に従って、1つずつ要求しなければ、全ての必要不可欠な情報E1,・・・,ENを正常にメモリアレイ31から読み出すことができない。
【0140】
一方、ステップS45においてYesと判定した場合、コントローラ30は、第2テーブル361において演算結果Anに関連づけられているアドレス(演算結果Anに対応する必要不可欠な情報Enの格納アドレス)を第2テーブル361から読み出す。そして、読み出した当該アドレスを用いて、必要不可欠情報格納領域34から必要不可欠な情報Enを被選択必要不可欠情報として選択し読み出してホストコンピュータ10に出力する(ステップS46)。
【0141】
正常な被選択必要不可欠情報をホストコンピュータ10に出力すると、コントローラ30は、当該被選択必要不可欠情報を出力したことを示すステージnを出力履歴情報380のステージQとしてセットし、出力履歴格納領域38に格納する(ステップS47)。
【0142】
以上が第2の実施の形態におけるメモリシステム3の動作である。次に、第2の実施の形態におけるホストコンピュータ10の動作を説明する。
【0143】
図9は、第2の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、図9に示される各工程は、特に断らない限り、ホストコンピュータ10のCPU11が、主にプログラム26に従って動作することにより実行される工程を示す。
【0144】
第2の実施の形態におけるホストコンピュータ10は、プログラム26の実行を開始すると、メモリシステム1のROM2からキー情報25を取得し(ステップS51)、記憶装置12のキーアドレスに格納する。そして、プログラム26の進行状況を示すステージnに「1(初期ステージ)」をセットする(ステップS52)。これにより、ホストコンピュータ10において実行中のプログラム26の進行状況がステージ1に移行し、ステージ1が開始される。
【0145】
次に、ホストコンピュータ10は、プログラム26の進行状況を示すステージnとともに、メモリシステム1に対してセーブコマンドを発行する(ステップS53)。すなわち、ステージnを含むセーブコマンドをメモリシステム1に出力する。ステップS53の処理が実行されると、セーブコマンドが入力されたメモリシステム1では、先述のように、ステップS34が実行され、進行履歴情報370にステージnが格納される。
【0146】
ステップS53の処理は、ホストコンピュータ10が、プログラム26の進行状況(ステージn)をメモリシステム1に通知する処理である。したがって、ステップS53は、ステージnが開始された直後に、CPU11によって自動的に実行されるように(ユーザの指示を待つことなしに)プログラム26に記述されていることが好ましい。
【0147】
ステップS53が実行され、進行履歴情報370にステージnが格納されると(メモリシステム1から正常終了の通知があると)、第2の実施の形態におけるホストコンピュータ10はステップS54ないしS56の処理を実行する。なお、ステップS54ないしS56の処理は、第1の実施の形態におけるステップS13ないしS15と同様の処理であるので説明を省略する。また、ステップS56を終了すると、第2の実施の形態におけるホストコンピュータ10は、第1の実施の形態におけるステップS21ないしS29と同様の処理を実行する。
【0148】
以上のように、第2の実施の形態においても、第1の実施の形態と同様の効果を得ることができる。
【0149】
また、第2の実施の形態におけるコントローラ30は、プログラム26のホストコンピュータ10における進行状況が通知されたときに、通知された進行状況を進行履歴情報370としてメモリアレイ31に格納するとともに、進行履歴情報370に応じて被選択演算方法を選択する。これにより、メモリシステム1は、ホストコンピュータ10の状態を把握しつつ動作でき、ホストコンピュータ10の状態を反映させたセキュリティ機能を容易に提供できる。
【0150】
また、第2の実施の形態では、複数の必要不可欠な情報E1,・・・,ENの出力条件は、コントローラ30が複数の必要不可欠な情報E1,・・・,ENを出力する際の出力順序を含む。すなわち、出力条件に含まれる出力順序でなければ必要不可欠情報340を読み出すことができず、セキュリティレベルが向上する。
【0151】
また、コントローラ30は、例えば、ホストコンピュータ10に必要不可欠な情報E(n-)を出力したときの出力履歴情報380に応じて、出力条件としての出力順序となるように次回に出力する必要不可欠情報Enを選択することにより、容易に複数の必要不可欠な情報E1,・・・,ENの出力順序を決定できる。
【0152】
<3. 第3の実施の形態>
上記実施の形態では、ホストコンピュータ10が1のコマンドRnを発行することにより、1の演算方法fn(x)が取得された。しかし、演算方法を読み出すコマンドRnは、必ずしも演算方法fn(x)と一対一に対応していなくてもよい。
【0153】
第3の実施の形態における演算方法情報330には、第1および第2の実施の形態と同様に、複数の演算方法f1(x),・・・,fN(x)が定義されている。そして、第3の実施の形態では、各演算方法f1(x),・・・,fN(x)を定義する情報は、いずれも複数個に分割して、順次に、メモリシステム3からホストコンピュータ10に出力することが可能とされている。そして、ホストコンピュータ10は、複数個に分割して、順次に取得した各情報から、各演算方法f1(x),・・・,fN(x)を作成する。
【0154】
以下では、各演算方法f1(x),・・・,fN(x)を定義する情報の分割数を分割数M(Mは2以上の自然数。)と称する。また、演算方法fn(x)をM個に分割する各情報を、メモリシステム3からの出力順序を示す添え字「m(mはM以下の自然数。)」を用いて、演算方法fn1(x),・・・,fnM(x)と称する。言い換えれば、演算方法fn1(x),・・・,fnM(x)は、ホストコンピュータ10において、演算方法fn(x)を作成するために必要な情報である。
【0155】
また、各演算方法fn1(x),・・・,fnM(x)を要求するためにホストコンピュータ10から入力されるコマンドとして、コマンドRn1,・・・,RnMがプログラム26内において定義されている。そして、第3の実施の形態における第1テーブル351では、コマンドRn1,,RnMはいずれもステージnと関連づけられているが、演算方法格納領域33のアドレスについてコマンドRn1,,RnMは演算方法fn1(x),・・・,fnM(x)の格納アドレスとそれぞれ一対一で関連づけられている。
【0156】
次に、第3の実施の形態における情報保護方法について説明する。なお、本実施の形態における情報保護方法では、メモリシステム1における動作は第2の実施の形態におけるメモリシステム1とほぼ同様であるため、説明を省略する。
【0157】
図11は、第3の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、図11に示される各工程は、特に断らない限り、ホストコンピュータ10のCPU11が、主にプログラム26に従って動作することにより実行される工程を示す。
【0158】
第3の実施の形態におけるホストコンピュータ10は、プログラム26の実行を開始すると、ステップS61ないしS63の処理を行う。ここで、ステップS61ないしS63の処理は、第2の実施の形態におけるステップS51ないしS53と同様の処理なので説明を省略する。
【0159】
ステップS63が実行されると、第3の実施の形態におけるホストコンピュータ10は出力順序を示すmの値を「1(初期値)」にセットする(ステップS64)。
【0160】
次に、ホストコンピュータ10は、コマンドRnmをメモリシステム3のコントローラ30に対して発行し、これに対してメモリシステム3から出力される演算方法fnm(x)を取得して記憶装置12に記憶しておく(ステップS65)。
【0161】
そして、さらに、mがMと一致しなければ(ステップS66においてNo)、演算方法fn(x)を作成するために必要な演算方法fn1(x),・・・,fnM(x)が未だすべて取得されていないと判断して、mをインクリメントして(ステップS67)、ステップS65からの処理を繰り返す。
【0162】
一方、mがMと一致した場合(ステップS66においてYes)、演算方法fn(x)を作成するために必要な演算方法fn1(x),・・・,fnM(x)がすべて取得されたと判断して、取得し格納しておいた演算方法fn1(x),・・・,fnM(x)に基づいて演算方法fn(x)を作成する(ステップS68)。
【0163】
ステージnにおいて取得する必要のある演算方法fn(x)が無事に取得されると、第3の実施の形態におけるホストコンピュータ10は、ステップS69およびS70の処理を実行する。なお、ステップS69およびS70の処理は、第2の実施の形態におけるステップS55およびS56と同様の処理であるので説明を省略する。また、ステップS70を終了すると、第3の実施の形態におけるホストコンピュータ10は、第1の実施の形態におけるステップS21ないしS29と同様の処理を実行する。
【0164】
以上のように、第3の実施の形態においても、上記実施の形態と同様の効果を得ることができる。
【0165】
また、被選択演算方法が、演算方法情報330から複数回に分けて読み出されることにより、複数回の読み出しの全てに成功しない限り1の演算方法fn(x)すら取得できない。これによりセキュリティレベルが向上する。
【0166】
なお、上記実施の形態では、すべての演算方法fn(x)が、M個に分割される例で説明したが、各演算方法fn(x)ごとに分割数が異なっていてもよい。
【0167】
<4. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0168】
例えば、上記実施の形態では、メモリシステム1において、保護対象の情報を格納するROM2と、必要不可欠情報340を格納するメモリシステム3とが一体構造物を構成していた。しかし、例えば、ROM2のメモリアレイ21に相当する記憶媒体をCD−ROMで構成し、ROM2のコントローラ20をホストコンピュータ10に設けたCD−ROMドライブ装置とCPU11とで構成し、着脱可能な記憶媒体にはメモリシステム3に相当する構成のみを搭載して構成することも可能である。
【0169】
また、上記実施の形態に示した各工程は、あくまでも例示であって、同様の効果が得られるならば、各工程における処理内容や、各工程の実行順は、適宜、変更されてもよい。
【符号の説明】
【0170】
1 メモリシステム
10 ホストコンピュータ
2 ROM
20,30 コントローラ
21,31 メモリアレイ
22 固有キー格納領域
23 プログラム格納領域
24 コンテンツ格納領域
25 キー情報
26 プログラム
3 メモリシステム
32 データセーブ領域
320 セーブデータ
33 演算方法格納領域
330 演算方法情報
34 必要不可欠情報格納領域
340 必要不可欠情報
35 第1テーブル格納領域
350,351 第1テーブル
36 第2テーブル格納領域
360,361 第2テーブル
37 進行履歴格納領域
370 進行履歴情報
38 出力履歴格納領域
380 出力履歴情報

【特許請求の範囲】
【請求項1】
ホストコンピュータに接続されるメモリシステムであって、
保護対象の情報を格納する第1不揮発性メモリと、
前記第1不揮発性メモリに対するアクセスを制御する第1コントローラと、
前記ホストコンピュータが前記保護対象の情報を使用するときに必要となる必要不可欠情報を格納する書き換え可能な第2不揮発性メモリと、
前記第2不揮発性メモリに対するアクセスを制御する第2コントローラと、
を備え、
前記第2コントローラは、前記ホストコンピュータの状態を反映した出力条件に応じて、前記第2不揮発性メモリに格納されている必要不可欠情報を被選択必要不可欠情報として前記ホストコンピュータに出力するメモリシステム。
【請求項2】
請求項1に記載のメモリシステムであって、
前記メモリシステムは、演算方法を定義する演算方法情報を格納しており、前記演算方法を被選択演算方法として前記ホストコンピュータに出力し、
前記出力条件は、被演算情報を前記被選択演算方法により演算して得られる演算結果に基づく条件を含むメモリシステム。
【請求項3】
請求項2に記載のメモリシステムであって、
前記被演算情報は、前記ホストコンピュータの状態を反映する情報であるメモリシステム。
【請求項4】
請求項2または3に記載のメモリシステムであって、
前記演算方法情報は、複数の演算方法を定義しており、
前記第2不揮発性メモリは、複数の必要不可欠情報を格納しており、
前記複数の演算方法から選択される1の被選択演算方法によりそれぞれ求められる複数の演算結果と前記複数の必要不可欠情報とが一対一で関連づけられており、
前記第2コントローラは、前記出力条件に応じて、前記複数の必要不可欠情報から1の被選択必要不可欠情報を選択して前記ホストコンピュータに出力するメモリシステム。
【請求項5】
請求項4に記載のメモリシステムであって、
前記メモリシステムは、前記ホストコンピュータからの要求があったときの前記ホストコンピュータの状態に応じて前記複数の演算方法から1の演算方法を被選択演算方法として選択するメモリシステム。
【請求項6】
請求項4または5に記載のメモリシステムであって、
前記被選択演算方法は、前記保護対象の情報の前記ホストコンピュータにおける進行状況に応じて選択されるメモリシステム。
【請求項7】
請求項6に記載のメモリシステムであって、
前記第2コントローラは、前記保護対象の情報の前記ホストコンピュータにおける進行状況が通知されたときに、通知された進行状況を進行履歴情報として前記第2不揮発性メモリに格納するとともに、前記進行履歴情報に応じて前記被選択演算方法を選択するメモリシステム。
【請求項8】
請求項4ないし7のいずれかに記載のメモリシステムであって、
前記出力条件は、前記第2コントローラが前記複数の必要不可欠情報を出力する際の出力順序を含むメモリシステム。
【請求項9】
請求項8に記載のメモリシステムであって、
前記出力順序が前記保護対象の情報の前記ホストコンピュータにおける進行順序に従うメモリシステム。
【請求項10】
請求項8または9に記載のメモリシステムであって、
前記第2コントローラは、前記ホストコンピュータに必要不可欠情報を出力したときの出力履歴情報に応じて前記出力順序となるように次回に出力する必要不可欠情報を選択するメモリシステム。
【請求項11】
請求項2ないし10のいずれかに記載のメモリシステムであって、
前記被選択演算方法は、前記演算方法情報から複数回に分けて読み出されるメモリシステム。
【請求項12】
請求項2ないし11のいずれかに記載のメモリシステムであって、
前記演算方法情報は、前記第2不揮発性メモリに格納されるメモリシステム。
【請求項13】
ホストコンピュータに接続されるメモリシステムであって、
前記ホストコンピュータが保護対象の情報を使用するときに必要となる必要不可欠情報を格納する書き換え可能な不揮発性メモリと、
前記不揮発性メモリに対するアクセスを制御するコントローラと、
を備え、
前記コントローラは、前記ホストコンピュータの状態を反映した出力条件に応じて、前記不揮発性メモリに格納されている必要不可欠情報を前記ホストコンピュータに出力するメモリシステム。
【請求項14】
ホストコンピュータに接続されるメモリシステムの第1不揮発性メモリに格納される保護対象の情報を保護する情報保護方法であって、
書き換え可能な第2不揮発性メモリに、前記ホストコンピュータが前記保護対象の情報を使用するときに必要となる必要不可欠情報を格納する工程と、
前記ホストコンピュータの状態を反映した出力条件に応じて、前記第2不揮発性メモリに格納されている必要不可欠情報を被選択必要不可欠情報として前記ホストコンピュータに出力する工程と、
を有する情報保護方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−8254(P2013−8254A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−141287(P2011−141287)
【出願日】平成23年6月27日(2011.6.27)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】