説明

メモリシステム、セキュリティメモリおよび情報保護方法

【課題】ホストコンピュータに接続されるメモリシステムに関して、すでに流通しているホストコンピュータとの互換性を維持しつつ、安価に、当該メモリシステムに格納された情報の不正な複製を抑制する技術を提供する。
【解決手段】ホストコンピュータ10に接続されるメモリシステム1に、プログラム210を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御するコントローラ20と、状態情報とホストコンピュータ10がプログラム210を使用する際に必要となる必要不可欠情報310とを格納する第2記憶部31と、ホストコンピュータ10の状態に応じて第2記憶部31に格納されている状態情報311を変更するとともに、第2記憶部31に格納されている状態情報311に応じて第2記憶部31に格納されている必要不可欠情報310を読み出してホストコンピュータ10に出力するコントローラ30とを設ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置(例えば、半導体メモリなど)に格納された情報が不正に複製されないように保護する技術に関する。
【背景技術】
【0002】
従来より、ホストコンピュータに接続される記憶装置に記憶された保護対象の情報を不正な複製から保護する技術が知られている。例えば、そのような技術が特許文献1に記載されている。
【0003】
特許文献1には、ホストコンピュータと接続されるメモリシステムに、セキュリティ機能を備えたコントローラと不揮発性メモリとを設けている。そして、ホストコンピュータからのアクセスに対しては、当該コントローラがセキュリティ機能を発揮することにより、不揮発性メモリ上に格納された情報を保護する技術が記載されている。
【0004】
しかし、特許文献1に記載されている技術をもってしても、不正な複製を完全に防止することはできない。そして、メモリシステムのコントローラにおけるセキュリティ機能が破られ、不揮発性メモリに格納された情報(保護対象の情報)を違法に複製され、配布される事態が現実に生じている。特許文献1に記載されている技術では、不揮発性メモリに格納されているプログラムにかかわらず、ホストコンピュータとメモリシステムとが協働してセキュリティ機能を提供しているため、一度、このセキュリティが破られれば、すべてのプログラムが不正に複製されることを許す事態にもなりかねない。
【0005】
このような事態を安易に解決する手法として、コントローラが提供するセキュリティ機能を変更することが考えられる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−040941号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところが、特許文献1に記載された技術において、メモリシステムのコントローラにおけるセキュリティ機能を変更すると、ホストコンピュータ側にも変更が必要になるという問題があった。すなわち、ホストコンピュータがすでに多数市場に流通している現状では、メモリシステムのセキュリティ機能が破られるたびに、ホストコンピュータ側の設計変更まで行うことは、互換性の維持やコストの面で現実的ではないという問題があった。
【0008】
本発明は、上記課題に鑑みてなされたものであり、ホストコンピュータに接続されるメモリシステムに関して、すでに流通しているホストコンピュータとの互換性を維持しつつ、安価に、当該メモリシステムに格納された情報の不正な複製を抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
メモリシステムであって、保護対象の情報を格納する第1不揮発性メモリと、前記第1不揮発性メモリに対するアクセスを制御する第1コントローラと、状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを格納する第2不揮発性メモリと、前記ホストコンピュータの状態に応じて前記第2不揮発性メモリに格納されている状態情報を変更するとともに、前記第2不揮発性メモリに格納されている状態情報に応じて前記第2不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力する第2コントローラとを備える。
【0010】
また、請求項2の発明は、請求項1の発明に係るメモリシステムであって、前記第2コントローラは、前記ホストコンピュータの状態に応じて前記ホストコンピュータから送信される状態変更情報を取得し、前記状態変更情報に応じて新たな状態情報を生成し、前記第2不揮発性メモリに格納されている状態情報を前記新たな状態情報に変更する。
【0011】
また、請求項3の発明は、請求項2の発明に係るメモリシステムであって、前記第2不揮発性メモリは第1演算情報を格納しており、前記第2コントローラは、前記ホストコンピュータから取得した状態変更情報と前記第2不揮発性メモリに格納されている第1演算情報とに基づいて演算することにより前記新たな状態情報を生成する。
【0012】
また、請求項4の発明は、請求項3の発明に係るメモリシステムであって、前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報に基づいて前記新たな状態情報を生成する。
【0013】
また、請求項5の発明は、請求項3または4の発明に係るメモリシステムであって、前記第2コントローラは、前記ホストコンピュータにおいて前記保護対象の情報の使用が中断されるときに前記新たな状態情報を生成するための演算の途中経過を前記第2不揮発性メモリに格納するとともに、前記ホストコンピュータが前記保護対象の情報の使用を再開するときに前記第2不揮発性メモリに格納されている前記演算の途中経過を読み出して前記演算を再開させる。
【0014】
また、請求項6の発明は、請求項3ないし5のいずれかの発明に係るメモリシステムであって、前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報に応じて、前記状態情報を、前記新たな状態情報に変更するタイミングを制御する。
【0015】
また、請求項7の発明は、請求項6の発明に係るメモリシステムであって、前記第2コントローラは、前記第1演算情報に基づいて実行する演算の演算時間を制御することにより、前記タイミングを制御する。
【0016】
また、請求項8の発明は、請求項2ないし7のいずれかの発明に係るメモリシステムであって、前記ホストコンピュータが状態変更情報を演算するための第2演算情報を格納する。
【0017】
また、請求項9の発明は、請求項8の発明に係るメモリシステムであって、前記第2不揮発性メモリに格納されている必要不可欠情報は、前記ホストコンピュータにおいて状態変更情報を求めるための情報を含む。
【0018】
また、請求項10の発明は、請求項1ないし9のいずれかの発明に係るメモリシステムであって、前記第2不揮発性メモリにおいて前記必要不可欠情報は暗号化された状態で格納されており、前記第2コントローラは、前記必要不可欠情報を前記状態情報を用いて復号化して、前記ホストコンピュータに出力する。
【0019】
また、請求項11の発明は、請求項1ないし10のいずれかの発明に係るメモリシステムであって、前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報を用いて前記第2不揮発性メモリのアドレスを演算し、前記アドレスを用いて前記第2不揮発性メモリに格納されている必要不可欠情報を読み出して、前記ホストコンピュータに出力する。
【0020】
また、請求項12の発明は、請求項1ないし11のいずれかの発明に係るメモリシステムであって、前記第1不揮発性メモリに格納されている保護対象の情報ごとに、前記ホストコンピュータの状態が定義されている。
【0021】
また、請求項13の発明は、保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを格納する不揮発性メモリと、前記ホストコンピュータの状態に応じて前記不揮発性メモリに格納されている状態情報を変更するとともに、前記不揮発性メモリに格納されている状態情報に応じて前記不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力するコントローラとを備える。
【0022】
また、請求項14の発明は、ホストコンピュータにおいて使用される保護対象の情報を保護する情報保護方法であって、状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを不揮発性メモリに格納する工程と、前記ホストコンピュータの状態に応じて前記不揮発性メモリに格納されている状態情報を変更する工程と、前記不揮発性メモリに格納されている状態情報に応じて前記不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力する工程とを有する。
【発明の効果】
【0023】
状態情報とホストコンピュータが保護対象の情報を使用する際に必要となる必要不可欠情報とを格納し、ホストコンピュータの状態に応じて状態情報を変更するとともに、格納されている状態情報に応じて情報を読み出してホストコンピュータに出力することにより、すでに流通しているホストコンピュータとの互換性を維持しつつ、安価に、保護対象の情報の不正な複製を抑制することができる。
【図面の簡単な説明】
【0024】
【図1】第1の実施の形態におけるメモリシステムを備えるコンピュータシステムを示す図である。
【図2】第1の実施の形態におけるホストコンピュータの動作を示す流れ図である。
【図3】第1の実施の形態におけるプログラム進行処理を示す流れ図である。
【図4】第1の実施の形態におけるセキュリティメモリの動作を示す流れ図である。
【図5】第2の実施の形態におけるセキュリティメモリの動作を示す流れ図である。
【図6】第3の実施の形態におけるメモリシステムを備えるコンピュータシステムを示す図である。
【発明を実施するための形態】
【0025】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。
【0026】
<1. 第1の実施の形態>
図1は、第1の実施の形態におけるメモリシステム1を備えるコンピュータシステムを示す図である。コンピュータシステムは、本発明に係るメモリシステム1と、一般的なコンピュータとしての機能を有するホストコンピュータ10とを備えている。
【0027】
ホストコンピュータ10は、各種のデータの演算を行うとともにホストコンピュータ10が備える各種ハードウェアを制御するCPU11と、各種のデータを記憶する記憶装置12とを備えている。これにより、ホストコンピュータ10は、一般的なコンピュータとしての構成および機能を備えている。
【0028】
また、ホストコンピュータ10は、図示しないカードスロットを備えており、当該カードスロットにメモリシステム1を装着することが可能である。言い換えれば、本実施の形態におけるメモリシステム1は、ホストコンピュータ10に対して、着脱自在となるように構成されている。
【0029】
ホストコンピュータ10のCPU11は、第1記憶部21に格納されているプログラム210をコントローラ20を介して記憶装置12にロードしつつ、実行する機能を有している。
【0030】
プログラム210には、ホストコンピュータ10によって実行されるときの当該プログラム210の進行状況がマーカーコード等により定義されている。以下の説明では、プログラム210の進行状況として、当該プログラム210には、順次に、N個のステージ(G,・・・,G)が定義されているものとする(Nは2以上の自然数。)。また、その時点におけるプログラム210の進行状況(現在のステージ)を、「G」と称する(nは、n≦Nとなる自然数。)。したがって、当然ではあるが、「G」は、G,・・・,Gのいずれかである。
【0031】
詳細は後述するが、本実施の形態における状態情報311は、ステージG,・・・,Gに応じて変更される。ここで、ホストコンピュータ10がステージGであるとは、ホストコンピュータ10の状態が「プログラム210におけるステージGを実行している状態」であることを意味する。したがって、上記のように、状態情報311がステージG,・・・,Gに応じて変更されるということは、状態情報311がホストコンピュータ10の状態に応じて変更されることを意味する。
【0032】
さらに、CPU11は、各種のコマンドをコントローラ30に対して発行し、コントローラ30を介して第2記憶部31にアクセスする機能も有している。特に、本実施の形態におけるCPU11は、プログラム210に含まれる第2演算情報211に基づいて状態変更情報120を求め、コントローラ30に向けて送信する。
【0033】
プログラム210には、ステージG,・・・,G(N−1)ごとに、第2演算情報211を用いて状態変更情報120を求め、コントローラ30に向けて送信するように記述されている。以下の説明では、ステージG,・・・,G(N−1)ごとに求められる状態変更情報120を、それぞれK,・・・,Kと称する。なお、状態変更情報120は、コントローラ30に向けて送信された後は、すみやかに記憶装置12から消去されることが好ましい。
【0034】
記憶装置12は、CPU11の一時的なワーキングエリアとして使用されるRAM(一般的には、高速アクセス可能な揮発性の記憶装置が採用される。)や、ホストコンピュータ10の起動プログラム(図示せず)等を格納しておく読み取り専用のROMなどのハードウェアから構成されている。また、図1には示していないが、セキュリティ機能強化のためには、記憶装置12の一部または全部がCPU11の内部にあってもよい。
【0035】
また、詳細は図示しないが、ホストコンピュータ10は、ユーザに対して情報を出力する出力装置(ディスプレイやLED、スピーカ、プリンタ等)、ユーザが情報を入力するために操作する入力装置(キーボードやボタン、コントローラ、マイク、タッチパネル等)などのハードウェアを適宜備えていてもよい。
【0036】
メモリシステム1は、読み取り専用の記憶装置であるROM2と、各種の情報を必要に応じて書き込むことができるように読み書き可能な記憶装置として構成されるセキュリティメモリ3とを備えている。詳細は図示しないが、本実施の形態におけるメモリシステム1は、先述のように、ホストコンピュータ10に対して着脱自在に構成されている。このようなメモリシステム1としては、例えば、メモリカードやゲームカセットが該当するがこれに限定されるものではない。
【0037】
ROM2は、コントローラ20(第1コントローラ)と、第1記憶部21(第1不揮発性メモリ)とを備えている。
【0038】
コントローラ20は、ホストコンピュータ10からの要求に応じて、第1記憶部21に格納されている各種データを読み出してホストコンピュータ10に向けて出力する機能を有している。
【0039】
また、コントローラ20は、ホストコンピュータ10との間で、第1記憶部21に格納された保護対象の情報(プログラム210)に対するセキュリティ機能を提供する。ここで、強調すべきは、本実施の形態におけるメモリシステム1は、ホストコンピュータ10とROM2との間において、任意のセキュリティ機能を採用することができる点である。例えば、メモリシステム1は、コントローラ20によって、既存のセキュリティ機能を引き継ぐように設計することができる。したがって、既に市場に多数流通しているコンピュータ(既存のセキュリティ機能を採用したコンピュータ)に搭載されている当該セキュリティ機能が、メモリシステム1と当該コンピュータとの間の障害となることはない。
【0040】
本実施の形態における第1記憶部21は、ホストコンピュータ10によるデータの書き込みができない記憶素子により構成されている。したがって、ROM2は、メモリシステム1において、先述のように読み取り専用の記憶装置(例えば、マスクROMやEPROMなど)として構成されている。ただし、保護対象の情報を格納する第1不揮発性メモリは必ずしも読み取り専用の記憶装置でなくてもよい。
【0041】
第1記憶部21に格納されているプログラム210は、保護対象の情報であり、ホストコンピュータ10によって実行される。このようなプログラム210としては、例えば、アプリケーションソフトウェアのプログラムなどが想定されるが、これに限定されるものではない。
【0042】
プログラム210に含まれる第2演算情報211は、ホストコンピュータ10が状態変更情報120を演算するための情報であって、本実施の形態では、演算に用いる関数を表現した情報である。以下、第2演算情報211に表現される関数を「f(x)」と表す。
【0043】
また、プログラム210に含まれる初期情報212は、第2演算情報211の引数の初期値である。以下の説明では、初期情報212の値を「D」と称する。
【0044】
すなわち、ホストコンピュータ10は、ステージG(初期ステージ)における状態変更情報120となる「K」を、式1により求めることができる。
【0045】
=f(D) ・・・ 式1
【0046】
なお、初期ステージGにおいて求められる「K」は、いわば状態変更情報120の初期値である。そして、式1の右辺は、第2演算情報211および初期情報212であり、いずれもROM2から読み出される情報であって、いずれも既存のセキュリティ機能による読み出しが可能な情報である。したがって、例えば、「K」を初期情報212としてROM2に格納しておき、ステージGにおいてコントローラ30に向けて送信するときにROM2から読み出して使用しても、セキュリティ強度的にはあまり変わらない。すなわち、状態変更情報120の初期値「K」に関しては、必ずしも演算により求めなくてもよい。
【0047】
セキュリティメモリ3は、コントローラ30(第2コントローラ)と、必要不可欠情報310、状態情報311および第1演算情報312が格納される第2記憶部31(第2不揮発性メモリ)とを備えている。
【0048】
必要不可欠情報310は、予め第2記憶部31に格納されている情報であって、ホストコンピュータ10がプログラム210を使用する際に必要となる情報である。ただし、本実施の形態における必要不可欠情報310は、コントローラ30により適切に復号化されなければ、ホストコンピュータ10において正常に使用することができないように暗号化されて格納されている。
【0049】
本実施の形態におけるコンピュータシステムでは、ホストコンピュータ10がプログラム210を実行し、正常に進行させ続けるためには、少なくとも特定の時点において必要不可欠情報310(より詳細には必要不可欠情報310に含まれる情報の少なくとも一部であって適切に復号化されたもの)が必要となるようにプログラム210が予め記述されている。
【0050】
本実施の形態では、必要不可欠情報310は、ホストコンピュータ10におけるステージG,・・・,G(N−1)ごとに、ホストコンピュータ10からの要求に応じて、コントローラ30により読み出される。以下の説明では、ステージG,・・・,G(N−1)ごとに読み出される必要不可欠情報310を、それぞれD,・・・,Dと称する。
【0051】
必要不可欠情報310であるD,・・・,Dは、それぞれステージG,・・・,Gにおいて、ホストコンピュータ10がプログラム210を実行するときに必要な情報となっている。例えば、ホストコンピュータ10が、プログラム210におけるステージGを進行させるためには、必要不可欠情報310の「D」が必要となる。すなわち、ホストコンピュータ10は、ステージGを進行させる過程で、必要不可欠情報310の「D」を取得していなければ、ステージGを正常に進行させることが不可能となるように、プログラム210および必要不可欠情報310が設計されている。このような必要不可欠情報310としては、例えば、プログラム210の一部(コードの一部)が想定されるが、これに限定されるものではない。
【0052】
本実施の形態における必要不可欠情報310は、ホストコンピュータ10において状態変更情報120を求めるための情報を含んでいる。ただし、ステージG(最終ステージ)においては、次のステージに遷移するために状態変更情報120が作成されることはないので、ステージGにおいて必要となる「D」には、状態変更情報120を求めるための情報は含まれていない。
【0053】
すなわち、ホストコンピュータ10におけるステージGにおいては、CPU11が以下に示す式2を実行することにより、状態変更情報120が求められるようにプログラム210が記述されている。
【0054】
(n+1)=f(D) ・・・ 式2
【0055】
なお、式2は、式1を一般化した式となっているが、「D」は、すでに説明したように、初期情報212としてROM2の第1記憶部21に記憶されており、必要不可欠情報310には含まれていない。逆に言えば、ホストコンピュータ10は、セキュリティメモリ3にアクセスすることなく、ステージGにおいて、式2を実行できる。
【0056】
また、式2において関数f(x)の引数xとして用いられる値は、「D」の全体でなく、一部であってもよい。例えば、「D=d+α」と表現するならば、式2は、「K(n+1)=f(d)」と表現されてもよい。
【0057】
また、式2は、ホストコンピュータ10がプログラム210を進行させている過程において実行される演算である。したがって、ホストコンピュータ10におけるプログラム210の実行の妨げにならないように、関数f(x)としては処理の比較的軽い関数を採用することが好ましい。
【0058】
状態情報311は、コントローラ30が第2記憶部31に格納されている必要不可欠情報310を読み出してホストコンピュータ10に出力するときに、コントローラ30によって参照される情報である。言い換えれば、コントローラ30は、第2記憶部31に格納されている状態情報311に応じて第2記憶部31に格納されている情報を読み出してホストコンピュータ10に出力する。以下では、状態情報311を、S,・・・,Sと称する場合がある。
【0059】
また、状態情報311は、コントローラ30によって、ホストコンピュータ10の状態に応じて(より詳細には、ホストコンピュータ10におけるプログラム210の進行状況に応じて)、S,・・・,Sと順次に変更されるが、詳細は後述する。ただし、状態情報311の初期値Sは、予め第2記憶部31に状態情報311として格納されている。
【0060】
第1演算情報312は、ホストコンピュータから取得した状態変更情報120に基づいて、コントローラ30が新たな状態情報311を演算するための情報であって、本実施の形態では、当該演算に用いる関数を表現した情報である。以下、第1演算情報312に表現される関数を「t(y,z)」と表す。
【0061】
本実施の形態では、ステージGにおいて求められる新たな状態情報311(S(n+1))は、状態情報311(S)と第1演算情報312とに基づいて、以下の式3により求められる。
【0062】
(n+1)=t(K(n+1),S) ・・・ 式3
【0063】
ここで、式3は、比較的、時間を要する演算となるように、第1演算情報312が定義されている。式3は、コントローラ30が実行する演算であるから、式3を演算するために比較的長時間を要したとしても、ホストコンピュータ10におけるプログラム210の実行の妨げになるおそれは低い。そして、式3の演算時間は、関数t(y,z)の引数zによって制御可能とされている。
【0064】
本実施の形態において、関数t(y,z)の引数zとして用いられる値は、「S」の全体ではなく、「S」の一部である。したがって、「S」の一部であって、引数zとして採用される部分を「s」と表現し、「S=s+β」と表現するならば、式3は、より詳細には式4となる。
【0065】
(n+1)=t(K(n+1),s) ・・・ 式4
【0066】
式4の演算時間を制御するパラメータとしては、例えば、ステップ数、演算の反復回数などが考えられる。すなわち、関数t(y,z)は、引数zの値により、これらの値が変化する関数として定義されている。
【0067】
さらに、状態情報311は、暗号化されて格納されている必要不可欠情報310を復号化させるための、復号鍵となっている。具体的には、暗号化された「D」をホストコンピュータ10が使用できる状態に適切に復号化させるための復号鍵が「S」となっている。したがって、暗号化されたD,・・・,Dを復号化させるためには、それぞれ異なる復号鍵であるS,・・・,Sが必要となる。
【0068】
コントローラ30の詳細は図示しないが、コントローラ30は、各種の論理回路と記憶バッファや高速のRAM、計時回路等から構成されている。コントローラ30は、ホストコンピュータ10からの要求に応じて、第2記憶部31に格納されている各種データを読み出してホストコンピュータ10に出力する機能と、第2記憶部31に各種データを格納する機能とを有している。本実施の形態におけるコントローラ30の機能および動作の詳細については、後述する。
【0069】
第2記憶部31は、ホストコンピュータ10によるデータの読み出しのみではなく、ホストコンピュータ10によるデータの書き込みも可能な記憶素子で構成されている。したがって、セキュリティメモリ3は、メモリシステム1において、先述のように読み書き可能な記憶装置として構成されている。第2記憶部31は、特に、必要不可欠情報310、状態情報311および第1演算情報312を格納する。
【0070】
なお、状態情報311および第1演算情報312は、コントローラ30のみが参照する情報であり、セキュリティメモリ3の外部に出力されることがないように構成されていることが好ましい。また、セキュリティメモリ3が備える記憶装置は、そのすべての記憶領域が読み書き可能である必要はない。例えば、必要不可欠情報310や第1演算情報312は、セキュリティメモリ3内において書き換え不可能な記憶領域に格納されていてもよい。
【0071】
以上が、メモリシステム1を含むコンピュータシステムの構成および機能の説明である。次に、コンピュータシステムの動作を説明しつつ、本実施の形態における情報保護方法について説明する。
【0072】
図2は、第1の実施の形態におけるホストコンピュータ10の動作を示す流れ図である。なお、図2に示される各工程は、特に断らない限り、ホストコンピュータ10のCPU11により実行される工程を示す。
【0073】
電源が投入されると、ホストコンピュータ10は、まず、所定の初期設定を実行する(ステップS1)。ステップS1では、記憶装置12のROMに記憶されている起動プログラムがCPU11により実行され、ホストコンピュータ10の初期画面が表示される。
【0074】
初期設定が終了すると、ホストコンピュータ10は、メモリシステム1が装着されているか否かを判定する(ステップS2)。
【0075】
メモリシステム1を検出すると、ホストコンピュータ10はメモリシステム1(ROM2)にコマンドを発行する。このとき発行されるコマンドは、コントローラ20に対して、プログラム210を出力するように要求するコマンド(以下、「ロードコマンド」と称する。)である。ホストコンピュータ10は、当該ロードコマンドに応じて、メモリシステム1から出力されるプログラム210を記憶装置12にロードする(ステップS3)。
【0076】
このとき、ロードされるプログラム210は、厳密にはプログラム210の一部であって全てではない。後述するが、ホストコンピュータ10は、さらに、残りのプログラム210が必要になると、再び、ロードコマンドをメモリシステム1に向けて発行し、必要となったプログラム210の部分を追加的にロードする。また、ステップS3では、プログラム210の一部として第2演算情報211および初期情報212がロードされる。
【0077】
次に、ホストコンピュータ10は、ステップS3においてロードしたプログラム210の実行を開始することにより、プログラム進行処理(ステップS4)を開始する。
【0078】
プログラム進行処理は、プログラム210の終了(アプリケーションの終了)が指示されるまでは、ステップS5においてNoと判定され、継続される。プログラム210の終了は、例えば、ホストコンピュータ10が備える入力装置(図示せず)をユーザが操作することにより指示されるが、このような指示に限定されるものではなく、他の方法で指示されてもよい。
【0079】
図3は、第1の実施の形態におけるプログラム進行処理を示す流れ図である。ホストコンピュータ10は、プログラム210を実行し進行させつつ、プログラム210を進行させることにより検出される各種の状態を監視している(ステップS10,S13,S16)。ただし、ホストコンピュータ10が監視している状態は、図3に示されるものに限定されるものではない。
【0080】
プログラム進行処理において、プログラム210が進行することにより、ステージ遷移がされると(ステップS10においてYes。)、ホストコンピュータ10は状態変更情報120を求める(ステップS11)。ホストコンピュータ10は、ステップS11が実行されるまでに取得されているD(必要不可欠情報310)と、第2演算情報211とに基づいて、式2を実行することにより、遷移した新しいステージGにおけるK(n+1)(状態変更情報120)を求める。
【0081】
状態変更情報120が求まると、ホストコンピュータ10は、ステップS11で求めた状態変更情報120をメモリシステム1(セキュリティメモリ3)に送信する(ステップS12)。後述するが、状態変更情報120を受信すると、セキュリティメモリ3では、状態情報311が変更(更新)される。すなわち、状態変更情報120は、ホストコンピュータ10が、セキュリティメモリ3に対して、現在のホストコンピュータ10の状態を通知し、状態情報311を変更することを要求するコマンド(状態変更コマンド)としての意味を持つ。
【0082】
プログラム進行処理において、新たに追加のプログラム210が必要となると(ステップS13においてYes。)、ホストコンピュータ10はメモリシステム1(ROM2)に対してロードコマンドを発行する(ステップS14)。
【0083】
ロードコマンドが発行されると、ROM2のコントローラ20が、ホストコンピュータ10のロードコマンドに応じたプログラム210の一部(追加のプログラム210)を第1記憶部21から読み出してホストコンピュータ10に出力する。これにより、ホストコンピュータ10は、適切な、追加のプログラム210を取得する(ステップS15)。
【0084】
以降、ホストコンピュータ10は、ステップS15で取得したプログラム210を実行しつつ、プログラム進行処理を継続する。このように、ホストコンピュータ10は、新たなプログラム210が必要になるたびに、必要なプログラム210をコントローラ20に要求し取得することができる。
【0085】
なお、ホストコンピュータ10とROM2との間のデータ通信(プログラム210のロード等)は、適宜、従来の技術を適用できるため詳細は説明しない。しかし、例えば、ロードコマンドは、発行される時点でのロードの対象となるプログラム210の部分を特定する必要がある。したがって、通常は、ロードコマンドには、発行時点におけるホストコンピュータ10の状態を通知する情報が付加される。このような情報としては、例えば、ホストコンピュータ10の状態を直接的に示す「G」を用いてもよい。あるいは、プログラム210の格納アドレスであってもよい。ロード対象のプログラム210の部分は、ホストコンピュータ10の状態に応じて変化するのであるから、当該プログラム210の格納アドレスは、ホストコンピュータ10の状態に応じて変化し、ホストコンピュータ10の状態を表現していると言える。
【0086】
プログラム進行処理において、必要不可欠情報310が要求されると(ステップS16においてYes。)、ホストコンピュータ10はメモリシステム1(セキュリティメモリ3)に対して必要不可欠情報310を要求するコマンド(必要不可欠情報読み出しコマンド)を発行する(ステップS17)。本実施の形態における必要不可欠情報読み出しコマンドには、読み出す対象となる必要不可欠情報の格納アドレス(第2記憶部31のアドレス)が付加されている。
【0087】
詳細は後述するが、必要不可欠情報読み出しコマンドが発行されると、セキュリティメモリ3のコントローラ30は、当該コマンドに付加されている格納アドレスに応じて第2記憶部31から情報を読み出し、復号化して、ホストコンピュータ10に向けて出力する。これにより、ホストコンピュータ10は、必要不可欠情報310を取得する(ステップS18)。
【0088】
本実施の形態では、ステージGにおいて読み出される必要不可欠情報310は、「D(n+1)」である。したがって、ホストコンピュータ10は、ステップS18で取得した必要不可欠情報310を、ステージG(n+1)に遷移した後に使用するために記憶装置12に格納する。特に、ステップS18で取得された必要不可欠情報310は、次回に、ステップS11が実行される際に、状態変更情報120を求めるために使用される。
【0089】
なお、プログラム210の各ステージ(ステージG,・・・,G(N−1))において、ステップS12が実行されてから、ステップS17が実行されるまでの時間(以下、「時間T」と称する。)は、プログラム210の進行速度に依存する。したがって、当該プログラム210の提供者は、時間Tのおよその値を把握でき、これを管理しているものとする。
【0090】
以上が、第1の実施の形態におけるホストコンピュータ10の動作である。次に、第1の実施の形態におけるメモリシステム1の動作を説明する。ただし、以下において、メモリシステム1(ROM2)のコントローラ20の動作については、従来の技術を適用することが可能であるため、適宜説明を省略する。
【0091】
図4は、第1の実施の形態におけるセキュリティメモリ3の動作を示す流れ図である。セキュリティメモリ3は、起動中のホストコンピュータ10にメモリシステム1が装着された状態で動作する。
【0092】
メモリシステム1が動作中において、セキュリティメモリ3のコントローラ30は、ホストコンピュータ10からの各種コマンドを受け付けたり、各種の状態を検出したりすることが可能な状態となっている(ステップS20,S24)。
【0093】
以下、メモリシステム1に電力が供給され、コントローラ30がホストコンピュータ10からのコマンドを受け付けることが可能となっている状態を「待ち受け状態」と称する。ただし、コントローラ30が受け付けるコマンドは図4に示すものに限定されるものではない。
【0094】
待ち受け状態において、ホストコンピュータ10から送信された状態変更情報120を受信すると(ステップS20においてYes。)、コントローラ30は、現在格納されている状態情報311を変更するために、新たな状態情報311を演算する処理を開始する(ステップS21)。
【0095】
すでに説明したように、コントローラ30は、本実施の形態では、現在格納されている状態情報311(S)と第1演算情報312(t(y,z))とに基づいて、式4により、新たな状態情報311(S(n+1))を演算する。
【0096】
ステップS21が開始されると、コントローラ30は、ステップS21における演算が終了してから(ステップS22においてYes。)、第2記憶部31に記憶されている状態情報311(S)を、新たに求めた状態情報311(S(n+1))に変更する(ステップS23)。
【0097】
先述のように、ステップS21における演算(式4の演算)は、比較的時間を要する演算となるように、関数t(y,z)が定義されている。ステップS21において新たに求める状態情報311は、次のステージにおいて必要となる必要不可欠情報310を復号化するための復号鍵である。したがって、当該必要不可欠情報310が読み出されるとき(本実施の形態では、本ステージが終了するときまでに読み出される。)までに、当該新たに求める状態情報311が第2記憶部31に格納されていなければならない。
【0098】
ホストコンピュータ10が状態変更情報120を送信してから、必要不可欠情報310の読み出しを要求するまでの時間は「T」である。したがって、ステップS21における演算を含めて、状態情報311を変更する処理は、時間T以内で終了しなければならないことになる。しかし、先述のように、プログラム210の提供者は、通常、時間Tのおよその値を把握しているため、状態情報311の変更処理が時間T以内で終了するように、「S」を定義することができる。より詳細には、プログラム210の提供者は、そのような「s」を含む「S」が各ステージにおいて求まるように必要不可欠情報310、「S(状態情報311の初期値)」および第1演算情報312を定義する。
【0099】
これにより、ステップS21が開始されてから、ステップS23が実行されて新たな状態情報311が第2記憶部31に格納されるまで、比較的長い時間、状態情報311は演算中の中間値として存在することになる。したがって、この間に、不正に必要不可欠情報310を取得しようとしても、状態情報311が正常な値として求まっていないため、そのような不正行為者は、適切に復号化された必要不可欠情報310を得ることができない。すなわち、不正行為者は、例えば、そのステージが終了する程度の時間を各ステージごとに待ってからでないと、適切に復号化された必要不可欠情報310を読み出すことができないことになり、解析に時間を要することになる。
【0100】
このように、本実施の形態におけるコントローラ30は、第2記憶部31に格納されている状態情報311に応じて、当該状態情報311を、新たな状態情報311に変更するタイミングを制御する。これにより、状態情報311が正式な値に書き換えられるまでの時間を引き延ばすことができ、例えば、ホストコンピュータ10が状態変更情報120を送信した直後に状態情報311が変更される場合に比べて、セキュリティレベルが向上する。
【0101】
なお、上記の説明では省略したが、本実施の形態におけるコントローラ30は、処理(特にプログラム進行処理)が中断された際には、ユーザのセーブデータや、演算途中の状態情報311等を第2記憶部31に退避して格納する。そして、プログラム210の実行が再開されたときには、それら格納された情報を使用して、中断されたときの状態に復帰する。すなわち、コントローラ30は、ホストコンピュータ10においてプログラム210の使用が中断されるときに新たな状態情報311を生成するための演算の途中経過を第2記憶部31に格納するとともに、ホストコンピュータ10がプログラム210の使用を再開するときに第2記憶部31に格納されている上記演算の途中経過を読み出して当該演算を再開させる。
【0102】
ステップS23を実行すると、コントローラ30は待ち受け状態に戻る。
【0103】
待ち受け状態において、ホストコンピュータ10から必要不可欠情報読み出しコマンドを受信すると(ステップS24においてYes。)、コントローラ30は、当該コマンドに付加されている格納アドレスを用いて、第2記憶部31の当該格納アドレスから情報を読み出す(ステップS25)。
【0104】
ステップS25においてコントローラ30により第2記憶部31から読み出される情報は、暗号化されているとはいえ、適切な復号化が実行されれば、ホストコンピュータ10による使用が可能な必要不可欠情報310となる情報である。
【0105】
次に、コントローラ30は、第2記憶部31に格納されている状態情報311を読み出し、これを復号鍵として使用して、ステップS25において読み出した情報を復号化する(ステップS26)。
【0106】
すでに説明したように、ステップS26が実行されるときまでに、状態情報311が適切に変更されていれば、ステップS26において適切な復号化が実行され、適切な必要不可欠情報310が復号化される。
【0107】
次に、コントローラ30は、ステップS26において復号化された情報を、ホストコンピュータ10に向けて出力する(ステップS27)。そして、ステップS27を実行すると、コントローラ30は待ち受け状態に戻る。
【0108】
本実施の形態におけるメモリシステム1は、必要不可欠情報読み出しコマンドに応答して、必ず必要不可欠情報310を出力する。しかし、必要不可欠情報310を取得したホストコンピュータ10は、メモリシステム1から出力された当該必要不可欠情報310が適切に復号化されているか否かを判定する術はない。したがって、例え、適切な復号化がされていない必要不可欠情報310を取得したとしても、ホストコンピュータ10は、そのままプログラム進行処理を継続する。そして、現実に必要不可欠情報310を使用する段階になって、初めて、ホストコンピュータ10はプログラム210の続行が不可能な状態に陥り、停止することになる。
【0109】
このように、適切な復号化がされた必要不可欠情報310をメモリシステム1から常に取得していなければ、メモリシステム1に接続された外部のコンピュータ(不正なコンピュータを含む。)は、プログラム210の実行が不可能となり停止する。そして、適切に復号化された必要不可欠情報310をメモリシステム1から取得するには、外部のコンピュータは、正常に(プログラム210に設計されたとおりに)状態遷移を経なければならない。すなわち、プログラム210を最初のステージGから最後のステージGまで正常に実行しなければ、必要不可欠情報310を正常に読み出すことができず、解析に時間を要することになる。
【0110】
また、このような機能は、例えば、保護対象の情報ごと(ゲームタイトルごとや改訂版ごと)に頻繁に暗号アルゴリズム等を変更でき、不正な複製者は、その度に解析作業を行わなければならず、違法な複製品(海賊版)を製造するまでに一定以上の時間を要することとなる。特に、プログラム210がゲームソフトウェアなどである場合、発売開始直後から海賊版が流通すると正規版の売れ行きに大きな影響がでてしまうという特性がある。したがって、このような市場の製品においては、例え完全に海賊版の製造を防止できなくとも、発売開始から一定期間でも海賊版の出現を遅らせることができるならばその効果は大きいといえる。
【0111】
以上のように、第1の実施の形態におけるメモリシステム1は、プログラム210を格納する第1記憶部21と、第1記憶部21に対するアクセスを制御するコントローラ20と、状態情報311とホストコンピュータ10がプログラム210を使用する際に必要となる必要不可欠情報310とを格納する第2記憶部31と、ホストコンピュータ10の状態に応じて第2記憶部31に格納されている状態情報311を変更するとともに、第2記憶部31に格納されている状態情報311に応じて第2記憶部31に格納されている必要不可欠情報310を読み出してホストコンピュータ10に出力するコントローラ30とを備える。これにより、すでに流通しているホストコンピュータ10との互換性を維持しつつ、安価に、当該メモリシステム1に格納されたプログラム210の不正な複製を抑制することができる。
【0112】
特に、コントローラ30は、ホストコンピュータ10の状態に応じて当該ホストコンピュータ10から送信される状態変更情報120を取得し、当該取得した状態変更情報120に応じて新たな状態情報311を生成し、第2記憶部31に格納されている状態情報311を当該新たな状態情報311に変更する。これにより、容易に、ホストコンピュータ10の状態を反映した状態情報311を生成することができる。
【0113】
また、第2記憶部31は第1演算情報312を格納しており、コントローラ30は、ホストコンピュータ10から取得した状態変更情報120と第2記憶部31に格納されている第1演算情報312とに基づいて演算することにより新たな状態情報311を生成する。このように、ホストコンピュータ10の状態に応じて、その都度、演算によって状態情報311を生成することにより、予めすべての状態における状態情報311を一覧的に格納しておく場合に比べて、セキュリティレベルが向上する。
【0114】
また、コントローラ30は、ホストコンピュータ10においてプログラム210の使用が中断されるときに新たな状態情報311を生成するための演算の途中経過を第2記憶部31に格納するとともに、ホストコンピュータ10がプログラム210の使用を再開するときに第2記憶部31に格納されている上記演算の途中経過を読み出して当該演算を再開させる。
【0115】
また、コントローラ30は、第2記憶部31に格納されている状態情報311に応じて、当該状態情報311を、新たな状態情報311に変更するタイミングを制御する。これにより、状態情報311が正常な値に変更されたタイミングを特定することが困難となり、解析に時間を要することとなる。また、少なくとも、各ステージにおいて、状態情報311が正常な値に変更されるまで、待つ必要があるため、さらに解析に時間を要することとなる。
【0116】
また、第1記憶部21は、ホストコンピュータ10が状態変更情報120を演算するための第2演算情報211を格納する。言い換えれば、本実施の形態では、状態変更コマンドに相当する状態変更情報120が演算により求められる。
【0117】
例えば、状態変更コマンドを予め定義しておいて、ホストコンピュータ10が、プログラム210の進行状況に応じてこれを発行することももちろん可能である。しかし、そのように構成した場合、状態変更コマンドを定義するファイルを不正に読み出されると、各状態変更コマンドが一瞬にしてすべて特定されてしまうことになる。その場合は、メモリシステム1に接続された外部のコンピュータ(不正目的のコンピュータを含む。)は、特定した状態変更コマンドを当該外部のコンピュータ側の状態に関係なく、自由に発行することができるようになる。こうなると、外部のコンピュータ(不正にセキュリティメモリ3の内容を特定しようとするコンピュータ)は、順次に、正常なルートで状態遷移する必要がなくなるため、短期間でセキュリティメモリ3の内容(特に、必要不可欠情報310)を解析される危険性が増大する。すなわち、状態変更コマンドを予め定義しておく場合は、セキュリティレベルは、当該定義ファイルのセキュリティレベルに依存する。
【0118】
したがって、ホストコンピュータ10が状態変更情報120を、ステージの進行状況に応じて、演算により生成することにより、例えば、状態変更情報120を予め一覧的に定義しておく場合に比べてセキュリティレベルが向上する。
【0119】
また、第2記憶部31に格納されている必要不可欠情報310は、ホストコンピュータ10において状態変更情報120を求めるための情報を含むため、ステージに応じた適切な必要不可欠情報310を取得しなければ、当該ステージに応じた適切な状態変更情報120を求めることができない。したがって、セキュリティレベルがさらに向上する。
【0120】
また、第2記憶部31において必要不可欠情報310は暗号化された状態で格納されており、コントローラ30は、必要不可欠情報310を状態情報311を用いて復号化して、ホストコンピュータ10に出力する。このように、必要不可欠情報310を暗号化して格納しておくため、セキュリティレベルが向上する。また、各ステージごとに読み出される必要不可欠情報310は、それぞれ異なるアルゴリズム(ホストコンピュータ10の状態に応じて変化する状態情報311で復号化されるアルゴリズム)で暗号化しておくことができるため、共通の暗号化が施されている場合に比べてセキュリティレベルが向上する。
【0121】
さらに、メモリシステム1では、第1記憶部21に格納されている保護対象の情報(プログラム210)ごとに、ホストコンピュータ10の状態(ステージG,・・・,G)が定義されている。すなわち、あるプログラム(例えばプログラム210)について本発明に係るセキュリティ機能が破られたとしても、他のプログラム(例えばプログラム210の改訂版プログラム)についてはステージG,・・・,Gとは異なる状態を新たに定義することができる。したがって、不正行為者は、保護対象の情報ごとに、セキュリティを破らなければならず、例えば、新しいゲームタイトルが発売されたときにおいて、すぐに海賊版(不正複製版)を作成することはできない。
【0122】
<2. 第2の実施の形態>
第1の実施の形態では、必要不可欠情報310が暗号化されて格納されていた。しかし、本発明によれば、必要不可欠情報310を暗号化しなくても、セキュリティレベルを向上させることができる。
【0123】
図5は、第2の実施の形態におけるセキュリティメモリ3の動作を示す流れ図である。なお、第2の実施の形態におけるコンピュータシステムにおいて第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。また、図5に示すステップS30ないしS33は、第2の実施の形態におけるステップS20ないしS23と同様の工程であるので説明を省略する。
【0124】
待ち受け状態において、必要不可欠情報読み出しコマンドを受信すると(ステップS34においてYes。)、コントローラ30は、第2の実施の形態における必要不可欠情報読み出しコマンドに付加されているアドレス(以下、「付加アドレス」と称する。)を、第2記憶部31の格納アドレスに変換するための演算を実行する(ステップS35)。
【0125】
第1の実施の形態におけるホストコンピュータ10は、必要不可欠情報読み出しコマンドに第2記憶部31の格納アドレスを付加して、セキュリティメモリ3に対して発行していた。しかし、第2の実施の形態において、付加アドレスは、そのままでは目的の必要不可欠情報310の格納アドレスを示すものとはならない。
【0126】
コントローラ30は、ステップS35において、第2記憶部31に格納されている状態情報311を付加アドレスのオフセット値として用いることにより、付加アドレスを格納アドレスに変換する。
【0127】
そして、コントローラ30は、求めた格納アドレスに応じて、第2記憶部31から情報を読み出し(ステップS36)、ホストコンピュータ10に向けて送信する(ステップS37)。
【0128】
以上のように、第2の実施の形態におけるコントローラ30は、第2記憶部31に格納されている状態情報311を用いて第2記憶部31の格納アドレスを演算し、当該格納アドレスを用いて第2記憶部31に格納されている必要不可欠情報310を読み出して、ホストコンピュータ10に出力する。このように構成しても、第1の実施の形態と同様の効果を得ることができる。
【0129】
また、第1の実施の形態では、各ステージにおける復号鍵(状態情報311)が異なるために、同一内容の必要不可欠情報310であっても、各ステージごとにそれぞれ異なる暗号化を施して格納しておく必要があった。すなわち、同一内容の必要不可欠情報310であっても重複して第2記憶部31にそれぞれ格納しておく必要があった。しかし、第2の実施の形態では、正常な状態情報311が求まっていなければ、目的の必要不可欠情報310を読み出せないように構成することで、異なるステージで読み出される同一内容の必要不可欠情報310を重複して格納する必要がない。
【0130】
なお、第2の実施の形態において、必要不可欠情報310を各ステージにおいて共通の暗号化を施して格納しておいてもよい。共通の暗号化であれば、状態情報311によらずに、画一的に処理できるため、同一内容の必要不可欠情報310を重複して格納しておく必要はない。これにより、暗号化されていない必要不可欠情報310を格納する場合に比べてセキュリティレベルが向上する。
【0131】
<3. 第3の実施の形態>
上記実施の形態では、初期情報212(D)が第1記憶部21に格納されており、必要不可欠情報310は、D,・・・,Dであった。しかし、このような例に限定されるものではない。
【0132】
図6は、第3の実施の形態におけるメモリシステム1を備えるコンピュータシステムを示す図である。第3の実施の形態におけるメモリシステム1は、第1記憶部21に、プログラム210aを格納している点と、第2記憶部31に必要不可欠情報310aを格納している点が第1の実施の形態におけるメモリシステム1と異なる。以下、第3の実施の形態におけるコンピュータシステムにおいて第1の実施の形態におけるコンピュータシステムと同様の構成については同符号を付し、適宜説明を省略する。
【0133】
プログラム210aには、プログラム210のように、初期情報212が含まれていない。したがって、第3の実施の形態におけるホストコンピュータ10は、ステージG(初期ステージ)における状態変更情報120となる「K」を、式1により求めるときに、「D」をROM2から取得することはできない。
【0134】
一方、第3の実施の形態における必要不可欠情報310aは、第1の実施の形態における必要不可欠情報310と異なり、D,D,・・・,Dである。すなわち、ステージGにおいて「K」を求めるために必要となる「D」が、必要不可欠情報310aに含まれており、第2記憶部31に格納されている。したがって、第3の実施の形態におけるホストコンピュータ10は、式1を実行する際に、「D」をセキュリティメモリ3から取得する。ただし、必要不可欠情報310aにおけるD,D,・・・,Dのうち、「D」は、暗号化されない状態で格納される。
【0135】
このように、第3の実施の形態におけるメモリシステム1も、第1の実施の形態と同様の効果を得ることができる。
【0136】
<4. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0137】
例えば、上記実施の形態では、メモリシステム1において、保護対象の情報を格納するROM2と、セキュリティメモリ3とが一体構造物を構成していた。しかし、例えば、ROM2の第1記憶部21に相当する記憶媒体をCD−ROMで構成し、ROM2のコントローラ20をホストコンピュータ10に設けたCD−ROMドライブ装置とCPU11とで構成し、着脱可能かつ書き込み可能な記憶媒体にセキュリティメモリ3に相当する構成のみを搭載して実現することも可能である。
【0138】
また、第1の実施の形態では、新たな状態情報311を演算する際において、現在の状態情報311は、演算速度(新たな状態情報311に変更するタイミング)を制御するためにのみ用いられていた。しかし、コントローラ30は、第2記憶部31に格納されている状態情報311に基づいて新たな状態情報311を生成するように構成してもよい。すなわち、現在の状態情報311(Sn−1)の一部によって新たな状態情報311(S)の値が変わるように構成してもよい。例えば、状態情報311を求める関数t(y,z)の引数yに、(Sn−1)の一部を用いてもよい。
【0139】
また、上記実施の形態では、第2記憶部31に格納されている状態情報311を、新たな状態情報311に変更するタイミングは、演算速度によって制御していたが、例えば、単に、所定の時間だけ変更処理を待機するようにしてもよい。
【0140】
また、上記実施の形態に示した各工程は、あくまでも例示であって、同様の効果が得られるならば、各工程における処理内容や、各工程の実行順は、適宜、変更されてもよい。
【符号の説明】
【0141】
1 メモリシステム
10 ホストコンピュータ
120 状態変更情報
2 ROM
20,30 コントローラ
21 第1記憶部
210,210a プログラム
211 第2演算情報
212 初期情報
3 セキュリティメモリ
31 第2記憶部
310,310a 必要不可欠情報
311 状態情報
312 第1演算情報

【特許請求の範囲】
【請求項1】
ホストコンピュータに接続されるメモリシステムであって、
保護対象の情報を格納する第1不揮発性メモリと、
前記第1不揮発性メモリに対するアクセスを制御する第1コントローラと、
状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを格納する第2不揮発性メモリと、
前記ホストコンピュータの状態に応じて前記第2不揮発性メモリに格納されている状態情報を変更するとともに、前記第2不揮発性メモリに格納されている状態情報に応じて前記第2不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力する第2コントローラと、
を備えるメモリシステム。
【請求項2】
請求項1に記載のメモリシステムであって、
前記第2コントローラは、前記ホストコンピュータの状態に応じて前記ホストコンピュータから送信される状態変更情報を取得し、前記状態変更情報に応じて新たな状態情報を生成し、前記第2不揮発性メモリに格納されている状態情報を前記新たな状態情報に変更するメモリシステム。
【請求項3】
請求項2に記載のメモリシステムであって、
前記第2不揮発性メモリは第1演算情報を格納しており、
前記第2コントローラは、前記ホストコンピュータから取得した状態変更情報と前記第2不揮発性メモリに格納されている第1演算情報とに基づいて演算することにより前記新たな状態情報を生成するメモリシステム。
【請求項4】
請求項3に記載のメモリシステムであって、
前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報に基づいて前記新たな状態情報を生成するメモリシステム。
【請求項5】
請求項3または4に記載のメモリシステムであって、
前記第2コントローラは、前記ホストコンピュータにおいて前記保護対象の情報の使用が中断されるときに前記新たな状態情報を生成するための演算の途中経過を前記第2不揮発性メモリに格納するとともに、前記ホストコンピュータが前記保護対象の情報の使用を再開するときに前記第2不揮発性メモリに格納されている前記演算の途中経過を読み出して前記演算を再開させるメモリシステム。
【請求項6】
請求項3ないし5のいずれかに記載のメモリシステムであって、
前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報に応じて、前記状態情報を、前記新たな状態情報に変更するタイミングを制御するメモリシステム。
【請求項7】
請求項6に記載のメモリシステムであって、
前記第2コントローラは、前記第1演算情報に基づいて実行する演算の演算時間を制御することにより、前記タイミングを制御するメモリシステム。
【請求項8】
請求項2ないし7のいずれかに記載のメモリシステムであって、
前記ホストコンピュータが状態変更情報を演算するための第2演算情報を格納するメモリシステム。
【請求項9】
請求項8に記載のメモリシステムであって、
前記第2不揮発性メモリに格納されている必要不可欠情報は、前記ホストコンピュータにおいて状態変更情報を求めるための情報を含むメモリシステム。
【請求項10】
請求項1ないし9のいずれかに記載のメモリシステムであって、
前記第2不揮発性メモリにおいて前記必要不可欠情報は暗号化された状態で格納されており、
前記第2コントローラは、前記必要不可欠情報を前記状態情報を用いて復号化して、前記ホストコンピュータに出力するメモリシステム。
【請求項11】
請求項1ないし10のいずれかに記載のメモリシステムであって、
前記第2コントローラは、前記第2不揮発性メモリに格納されている状態情報を用いて前記第2不揮発性メモリのアドレスを演算し、前記アドレスを用いて前記第2不揮発性メモリに格納されている必要不可欠情報を読み出して、前記ホストコンピュータに出力するメモリシステム。
【請求項12】
請求項1ないし11のいずれかに記載のメモリシステムであって、
前記第1不揮発性メモリに格納されている保護対象の情報ごとに、前記ホストコンピュータの状態が定義されているメモリシステム。
【請求項13】
保護対象の情報を使用するホストコンピュータに接続されるセキュリティメモリであって、
状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを格納する不揮発性メモリと、
前記ホストコンピュータの状態に応じて前記不揮発性メモリに格納されている状態情報を変更するとともに、前記不揮発性メモリに格納されている状態情報に応じて前記不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力するコントローラと、
を備えるセキュリティメモリ。
【請求項14】
ホストコンピュータにおいて使用される保護対象の情報を保護する情報保護方法であって、
状態情報と前記ホストコンピュータが前記保護対象の情報を使用する際に必要となる必要不可欠情報とを不揮発性メモリに格納する工程と、
前記ホストコンピュータの状態に応じて前記不揮発性メモリに格納されている状態情報を変更する工程と、
前記不揮発性メモリに格納されている状態情報に応じて前記不揮発性メモリに格納されている情報を読み出して前記ホストコンピュータに出力する工程と、
を有する情報保護方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−105403(P2013−105403A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−250212(P2011−250212)
【出願日】平成23年11月16日(2011.11.16)
【出願人】(591128453)株式会社メガチップス (322)