(57)【要約】【課題】メモリに記憶されるデータ保護のセキュリティを高め、かつデータ保護方式等のアプリケーションを高い機密性を保ったまま変更可能なデータ記憶装置を提供すること。【解決手段】コントローラ２００は、外部コマンドにより、識別子（ＣＩＤ）２２６により選択可能なコントローラアプリケーション２２５を実行する。ＩＣカード機能ユニット４００は、識別子（ＡＩＤ）４２４により選択可能なＩＣカードアプリケーション４２３を実行し、データ蓄積部４３０に格納した機密データにアクセスする。ここにコントローラアプリケーション２２５は、関連して実行するＩＣカードアプリケーション４２３を選択する識別子（ＡＩＤ）４２４を保持しており、アプリケーション２２５を実行することで機密データを用いるアプリケーション４２３を実行することができる。【選択図】図１
2005346421.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリにデータを記憶するデータ記憶装置において、
機密データを格納し該機密データを用いてデータ処理を行う第２のアプリケーションプログラムを有するＩＣカード機能ユニットと、
該ＩＣカード機能ユニットを制御し第１のアプリケーションプログラムを有するコントローラと、を備え、
上記第１のアプリケーションプログラムを実行することにより上記第２のアプリケーションプログラムを実行させ、
上記不揮発性メモリには、上記第１および第２のアプリケーションプログラムにより実行された結果を記憶することを特徴とするデータ記憶装置。
【請求項２】
外部装置と接続して不揮発性メモリにデータを記憶するデータ記憶装置において、
ＩＣカード機能ユニットとこれを制御するコントローラとを備え、
該コントローラは上記外部装置からのコマンドを受信すると共に、第１の識別子を用いて選択可能な第１のアプリケーションプログラムを格納する第１の情報蓄積部と、データを格納する第１のデータ蓄積部と、上記第１のアプリケーションプログラムを実行する第１の情報処理部とを有し、
上記ＩＣカード機能ユニットは、第２の識別子を用いて選択可能な第２のアプリケーションプログラムを格納する第２の情報蓄積部と、機密データを格納する第２のデータ蓄積部と、該機密データを用いて上記第２のアプリケーションプログラムを実行する第２の情報処理部とを有し、
上記第１のアプリケーションプログラムは、関連して実行する上記第２のアプリケーションプログラムを選択する上記第２の識別子を保持し、上記第１のアプリケーションプログラムを実行することにより上記第２のアプリケーションプログラムを実行させ、
上記不揮発性メモリには、上記第１および第２のアプリケーションプログラムにより実行された結果を記憶することを特徴とするデータ記憶装置。
【請求項３】
請求項２記載のデータ記憶装置において、
前記コントローラは、前記外部装置から前記第１の識別子を格納した第１のコマンドを受信すると、前記第１の情報処理部は、前記第１のアプリケーションプログラムを実行すると共に、これと関連する前記第２の識別子を格納した第２のコマンドを前記ＩＣカード機能ユニットに送信し、
前記ＩＣカード機能ユニットは、前記第２のコマンドを受信すると、前記第２の情報処理部は、前記第２のアプリケーションプログラムを実行することを特徴とするデータ記憶装置。
【請求項４】
請求項３記載のデータ記憶装置において、
前記第１の情報処理部は、前記ＩＣカード機能ユニットとの間で認証手続きを行い、前記第２の情報処理部は、該認証手続きに成功した場合に前記第２のアプリケーションプログラムを実行することを特徴とするデータ記憶装置。
【請求項５】
外部装置と接続して不揮発性メモリにデータを記憶するデータ記憶装置において、
ＩＣカード機能ユニットとこれを制御するコントローラとを備え、
該コントローラは上記外部装置からのコマンドを受信すると共に、第１の識別子を用いて選択可能な第１のアプリケーションプログラムを格納する第１の情報蓄積部と、該第１のアプリケーションプログラムを実行する第１の情報処理部と、データを格納する第１のデータ蓄積部とを有し、
上記ＩＣカード機能ユニットは、第２の識別子を用いて選択可能な第２のアプリケーションプログラムを格納する第２の情報蓄積部と、該第２のアプリケーションプログラムを実行する第２の情報処理部と、データを格納する第２のデータ蓄積部とを有し、
上記不揮発性メモリは、上記外部装置からは直接制御できない保護領域を有し、
上記第１のデータ蓄積部には上記保護領域のアドレス範囲を格納し、
上記保護領域には、上記コントローラで実行可能な第１のアプリケーションプログラムを格納したアプリケーションプログラム登録データを一時的に格納し、
該アプリケーションプログラム登録データには、上記第１のアプリケーションプログラムと共に、上記第１の識別子、上記第２の識別子およびデジタル署名を保持していることを特徴とするデータ記憶装置。
【請求項６】
請求項５記載のデータ記憶装置において、
前記コントローラは、前記アプリケーションプログラム登録データが保持している前記第２の識別子を用いて、前記ＩＣカード機能ユニット内の該当する前記第２のアプリケーションプログラムを選択し、前記デジタル署名を前記第２のアプリケーションプログラムに送信し、
前記第２のアプリケーションプログラムは、前記デジタル署名の検証結果を、前記コントローラに返信し、
該コントローラは、該検証結果が正しかった場合に前記アプリケーションプログラム登録データを前記保護領域に正式に登録することを特徴とするデータ記録装置。
【請求項７】
暗号鍵データを格納しこれを読み出すＩＣカード機能ユニットと、
該読み出した暗号鍵データを用いてデータの暗号化処理を行うコントローラと、
該暗号化処理の結果を記憶する不揮発性メモリとを備え、
上記ＩＣカード機能ユニットは上記コントローラを介して実行させることを特徴とするデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリにデータを記憶するデータ記憶装置に関する。
【背景技術】
【０００２】
近年デジタルカメラやＰＤＡ、携帯電話といった小型情報機器が広く普及しており、これら小型情報機器が取り扱うデータを記録するためにメモリカードの利用が拡大している。メモリカードは様々な種類が存在するが、ほとんどのメモリカードには、電気的にデータの消去および書き込みができる不揮発性メモリであるフラッシュメモリが用いられている。メモリカードの利用拡大に伴って、音楽やゲームなど著作権のあるコンテンツデータ、あるいは個人情報や機密情報を含んだデータなども、メモリカードに格納して持ち歩きたいというニーズが増えているが、これらのデータは、不正な閲覧やコピー、および改ざんが行われないように保護しておく必要がある。通常のメモリカードの構成だけでは、内部の不揮発性メモリへのアクセスは自由に行えてしまうため、上述のニーズに応えるために、データを保護するための構成が組み込まれている。
【０００３】
例えば、特許文献１に開示されるメモリカードでは、不揮発性メモリチップとコントローラチップとを備え、コントローラチップと不揮発性メモリチップとの間で転送されるデータを暗号化するとともに、メモリカード外部とコントローラチップとの間で使用する鍵（第１の鍵）と、コントローラチップと不揮発性メモリチップとの間で使用する鍵（第２の鍵）とを分離している。これにより、仮に不揮発性メモリチップがダンプされてもデータを解析するのは困難であり、また、仮に第１の鍵が解析されたとしても第２の鍵が残り、データの解析は困難である。よって、不揮発性メモリチップへのデータの記録／読み出しの安全性を高めることができる。
【０００４】
【特許文献１】特開２００３−２５６２８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記特許文献１の方式では、不揮発性メモリチップとの間で使用する第２の鍵をコントローラに格納しているので、外部からこの第２の鍵を知られる可能性があり、その結果不揮発性メモリチップに暗号化して記録しているデータを解析される恐れがある。またメモリカードが有するデータ保護方式などのアプリケーションを、高い機密性を保ったまま他のデータ保護方式に変更することは困難である。例えば、他の暗号方式に変更する処理をパーソナルコンピュータや情報機器などの外部機器にて実施する場合、格納しているデータおよび鍵情報などの機密情報が外部に知られることは避け難く、データ保護のセキュリティが低下してしまう。
【０００６】
本発明の目的は、メモリに記憶されるデータ保護のセキュリティを高め、かつデータ保護方式等のアプリケーションを高い機密性を保ったまま変更可能なデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を実現するために、本発明によるデータ記憶装置は、機密データを格納するＩＣカード機能ユニットとこれを制御するコントローラとを備える。ＩＣカード機能ユニットは、機密データを用いたデータ処理を行う第２のアプリケーションプログラムを有する。コントローラは、第１のアプリケーションプログラムを実行することで、これに連動してＩＣカード機能ユニットの第２のアプリケーションプログラムを実行させる。不揮発性メモリには、第１および第２のアプリケーションプログラムにより実行された結果を記憶する。
【０００８】
また、本発明によるデータ記憶装置は、ＩＣカード機能ユニットとこれを制御するコントローラとを備える。コントローラは外部装置からのコマンドを受信すると共に、第１の識別子を用いて選択可能な第１のアプリケーションプログラムを格納する第１の情報蓄積部と、データを格納する第１のデータ蓄積部と、第１のアプリケーションプログラムを実行する第１の情報処理部とを有する。ＩＣカード機能ユニットは、第２の識別子を用いて選択可能な第２のアプリケーションプログラムを格納する第２の情報蓄積部と、機密データを格納する第２のデータ蓄積部と、機密データを用いて第２のアプリケーションプログラムを実行する第２の情報処理部とを有する。ここに第１のアプリケーションプログラムは、関連して実行する第２のアプリケーションプログラムを選択する第２の識別子を保持しており、第１のアプリケーションプログラムを実行することにより第２のアプリケーションプログラムを実行させる。不揮発性メモリには、第１および第２のアプリケーションプログラムにより実行された結果を記憶する。
【０００９】
さらに本発明のデータ記憶装置は、ＩＣカード機能ユニットとこれを制御するコントローラとを備えると共に、不揮発性メモリには、外部装置からは直接制御できない保護領域を有し、保護領域には、コントローラで実行可能な第１のアプリケーションプログラムを格納したアプリケーションプログラム登録データを一時的に格納する。ここにアプリケーションプログラム登録データには、第１のアプリケーションプログラムと共に、第１の識別子、第２の識別子およびデジタル署名を保持している。
【発明の効果】
【００１０】
本発明によれば、メモリに記憶されるデータ保護のセキュリティを高め、かつデータ保護方式等のアプリケーションを高い機密性を保ったまま変更可能なデータ記憶装置を提供することが可能になる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態を図面を用いて詳細に説明する。
【実施例１】
【００１２】
図１は、本発明に係わるデータ記憶装置として、メモリカードの一実施例の構成を示すブロック図である。メモリカード１０は、外部インタフェイス１００と、コントローラ２００と、不揮発性メモリ３００と、ＩＣカード機能ユニット４００を含む構成になっている。メモリカード１０はホスト装置２０により制御可能であり、ホスト装置２０には、例えばパーソナルコンピュータ、携帯電話などの携帯端末、あるいはデジタルテレビ受信機などのデジタル家電が用いられる。
【００１３】
外部インタフェイス１００はホスト装置２０との通信を行い、ホスト装置２０からメモリカード１０を制御するためのメモリカードコマンド５００を受信して、コントローラ２００に引き渡す。また、コントローラ２００からメモリカードコマンド５００の応答であるメモリカードレスポンス６００を受け取り、ホスト装置２０に送信する。なお、ホスト装置２０と外部インタフェイス１００との間の通信方式は特に限定せず、各種方式が用いられる。
【００１４】
コントローラ２００はメモリカード１０全体を制御するユニットである。不揮発性メモリ３００は、コントローラ２００の制御により、データの書込み、読み出し、および消去を行い、例えばフラッシュメモリが適する。あるいは不揮発性である他の半導体メモリやハードディスクなど半導体以外のデータ蓄積メディアを用いても良い。
【００１５】
ＩＣカード機能ユニット４００は、ＩＣカードの機能を有するユニットで、耐タンパ性を有しているため、容易に内部を観察することができない。すなわち、ＩＣカードにおいては、内部に格納されている機密データは、電流解析・物理解析・故障解析などの様々な攻撃により不正に読み出されることは非常に困難である、という特徴を利用している。これに機密性の高いデータを格納しておき、特定の手続き（認証用のパスワードや鍵データによる照合）を行わないと内部データにアクセスすることができない構成である。本実施例ではＩＣカード機能ユニット４００を用いて、高度なアクセス制御を行うものである。
【００１６】
次に、各部の構成について詳細に説明する。コントローラ２００は、情報処理部２１０と、情報蓄積部２２０と、データ蓄積部２３０と、メモリ制御インタフェイス２４０と、ＩＣカード制御インタフェイス２５０を有している。情報処理部２１０はマイクロプロセッサ等からなり、外部インタフェイス１００を介してホスト装置２０からのコマンドを受信する。そして、情報蓄積部２２０に格納されているプログラムに基づいて、メモリ制御インタフェイス２４０を介して不揮発性メモリ３００にアクセスし、ＩＣカード制御インタフェイス２５０を介してＩＣカード機能ユニット４００を制御する。情報蓄積部２２０は、情報処理部２１０が処理するプログラムやデータを一時的あるいは永続的に格納する機能を有し、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体メモリからなる。ここで、情報蓄積部２２０はメモリカード１０の外部からは直接アクセスはできないものとする。データ蓄積部２３０は、機密性が求められるデータを一時的あるいは永続的に格納する機能を有し、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体メモリからなる。
【００１７】
コントローラ２００からＩＣカード機能ユニット４００に対し、ＩＣカード制御インタフェイスを介しＩＣカードコマンド５２０を送信すると、その応答であるＩＣカードレスポンス６２０が返信される。本実施例においてはＩＣカード機能ユニット４００を制御するための通信方式は、国際標準規格ＩＳＯ７８１６に従うものとし、ＩＣカードコマンド５２０およびＩＣカードレスポンス６２０のフォーマットはＩＳＯ７８１６で定義されるＡＰＤＵ形式を用いている。なお、他の通信方式およびコマンドフォーマットを用いた場合でも本発明は適用できる。
【００１８】
次に、ＩＣカード機能ユニット４００の内部構成について説明する。ＩＣカード機能ユニット４００は、情報処理部４１０と、情報蓄積部４２０と、データ蓄積部４３０と、外部インタフェイス４４０を有している。情報処理部４１０はマイクロプロセッサ等からなり、コントローラ４００から外部インタフェイス４４０を介しＩＣカードコマンド５２０を受信すると、情報蓄積部４２０に格納しているプログラムに基づいた処理を行い、その結果をＩＣカードレスポンス６２０としてコントローラ４００に返信する。ここで情報処理部４１０は、コントローラ４００との間で所定の認証手続き（認証用パスワードや鍵データの交換など）を行い、これに成功した場合に情報蓄積部４２０に格納しているプログラムに基づいた処理を実行可能とするもので、これによりＩＣカード機能ユニット４００のセキュリティを高めている。情報蓄積部４２０は、情報処理部４１０が処理するプログラムやデータを一時的あるいは永続的に格納する機能を有し、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体メモリからなる。データ蓄積部４３０は、暗号鍵データなどの特に機密性の高いデータを一時的あるいは永続的に格納する機能を有し、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体メモリからなる。
【００１９】
次に、コントローラ２００の情報蓄積部２２０に格納しているプログラムについて説明する。情報蓄積部２２０はプログラムとして、メモリ制御モジュール２２１、ＩＣカード制御モジュール２２２、コマンド解析モジュール２２３、アプリケーション管理モジュール２２４、コントローラアプリケーション２２５Ａおよび２２５Ｂを格納している。メモリ制御モジュール２２１は不揮発性メモリ３００を制御し、ＩＣカード制御モジュール２２２はＩＣカード機能ユニット４００を制御する機能を有する。コマンド解析モジュール２２３は、ホスト装置２０からのメモリカードコマンド５００を解析して、その処理を所定のプログラムに委譲する機能を有する。アプリケーション管理モジュール２２４は、情報処理部２１０が実行する各アプリケーションプログラムの登録、選択、実行、削除といったライフサイクルを管理する機能を有する。またアプリケーション管理モジュール２２４は、ＣＩＤ（Ｃｏｎｔｒｏｌｅｒ  Ａｐｐｌｉｃａｔｉｏｎ  ＩＤ）リスト２２７を有している。ＣＩＤリスト２２７には、アプリケーション管理モジュール２２４が管理している全アプリケーションプログラムを識別する識別情報を保持しており、外部インタフェイス１００を介してその内容を読み出すことが可能である。
【００２０】
コントローラアプリケーション（以下、コントローラアプリと略す）２２５Ａおよび２２５Ｂは、アプリケーション管理モジュール２２４の管理下で動作するアプリケーションプログラムである。コントローラアプリは必要な数だけ格納されるが、本実施例では簡単のために２個の場合を示す。その機能としては、メモリ制御モジュール２２１の機能を呼び出して不揮発性メモリ３００にアクセスすること、ＩＣカード制御モジュール２２２の機能を呼び出してＩＣカード機能ユニット４００にアクセスすること、また、データ蓄積部２３０にアクセスすることができる。コントローラアプリ２２５Ａおよび２２５Ｂには、それぞれを一意に識別するための識別子であるＣＩＤ２２６ＡあるいはＣＩＤ２２６Ｂを保持している。ＣＩＤ２２６ＡおよびＣＩＤ２２６Ｂは、アプリケーション管理モジュール２２４のＣＩＤリスト２２７にも保持されており、ＣＩＤリスト２２７を参照する事で、どのコントローラアプリが格納されているかを知ることができる。
【００２１】
さらに、コントローラアプリ２５５Ａおよび２５５Ｂは、それぞれがＩＣカード機能ユニット４００を制御することができる。そのために、ＩＣカード機能ユニット４００内部に格納されているアプリケーションを選択する時に使用する識別子であるＡＩＤ（Ａｐｐｌｉｃａｔｉｏｎ  ＩＤ）４２４Ａあるいは４２４Ｂを保持している。ここで、コントローラアプリ２５５Ａまたは２５５Ｂは、それぞれ、ＩＣカード機能ユニット４００内部に格納されている複数個のアプリケーションを選択できるように、複数個のＡＩＤを保持しても良い。
【００２２】
次に、ＩＣカード機能ユニット４００の情報蓄積部４２０に格納しているプログラムについて説明する。情報蓄積部４２０はプログラムとして、コマンド解析モジュール４２１、アプリケーション管理モジュール４２２、ＩＣカードアプリケーション４２３Ａおよび４２３Ｂを格納している。コマンド解析モジュール４２１は、コントローラ２００からのＩＣカードコマンド５２０を解析して、その処理を特定のプログラムに委譲する機能を有する。アプリケーション管理モジュール４２２は、情報処理部４１０が実行するアプリケーションプログラムの登録、選択、実行、削除といったライフサイクルを管理する機能を有する。またアプリケーション管理モジュール４２２は、ＡＩＤリスト４２４を有している。ＡＩＤリスト４２４には、アプリケーション管理モジュール４２２が管理している全アプリケーションプログラムの識別情報を保持しており、外部インタフェイス４４０を介してその内容を読み出すことが可能である。
【００２３】
ＩＣカードアプリケーション（以下、ＩＣカードアプリと略す）４２３Ａおよび４２３Ｂは、アプリケーション管理部モジュール４２２の管理下で動作するアプリケーションプログラムである。その機能としては、ＩＣカードコマンド５２０に基づいた処理を実行して、ＩＣカードレスポンス６２０を返信することと、機密性の高いデータ蓄積部４３０にアクセスする機能を有する。ＩＣカードアプリ４２３Ａおよび４２３Ｂには、それぞれを一意に識別するための識別子であるＡＩＤ４２４Ａあるいは４２４Ｂを保持している。ここでＡＩＤは、アプリケーション管理モジュール４２２が、どのＩＣカードアプリを選択するかを決定するために使用する。また、アプリケーション管理部モジュール４２２が管理している全てのＩＣカードアプリのＡＩＤは、ＡＩＤリスト４２４に保持されており、これを参照することで、どのようなＩＣカードアプリが格納されているかを知ることができる。
【００２４】
本実施例においては、コントローラアプリ２２５ＡはＩＣカードアプリ４２３Ａに対して制御命令を送信することができる。同様に、コントローラアプリ２２５ＢはＩＣカードアプリ４２３Ｂに対して制御命令を送信することができる。したがって、コントローラアプリ２２５ＡはＩＣカードアプリ４２３Ａを識別するための情報を共通に保持していなければならず、また、コントローラアプリ２２５ＢはＩＣカードアプリ４２３Ｂを識別するための情報を共通に保持していなければならない。このため、図１に示すように、コントローラアプリ２２５Ａが保持しているＡＩＤ４２４ＡはＩＣカードアプリ４２３Ａが保持しているＡＩＤ４２４Ａと同一である。同様に、コントローラアプリ２２５Ｂが保持しているＡＩＤ４２４ＢはＩＣカードアプリ４２３Ｂが保持しているＡＩＤ４２４Ｂと同一である。これにより、コントローラアプリ２２５Ａは、ＩＣカードアプリ４２３Ａを呼出して制御を行うことが可能である。同様に、コントローラアプリ２２５Ｂは、ＩＣカードアプリ４２３Ｂを呼出して制御を行うことが可能である。
【００２５】
次に、ホスト装置２０とメモリカード１０との間で送受信されるコマンドとレスポンスについて説明する。
【００２６】
図２は、ホスト装置２０からメモリカード１０に送信するメモリカードコマンド５００の構成を示している。メモリカードコマンド５００は、コマンド種別５０１とコマンドデータ５０２の二つのフィールドを有する。コマンド種別５０１は、どのような種類のコマンドを格納しているかを表す。コマンドデータ５０２は、コマンド種別５０１に対応したコマンドの内容を格納する。本実施例においては、コマンドデータ５０２に格納するコマンドは、メモリ制御コマンド５１０と、ＩＣカードコマンド５２０と、コントローラコマンド５３０に分類される。メモリ制御コマンド５１０は、不揮発性メモリ３００に格納されているデータの読み書きおよび消去を行うためのコマンドである。
【００２７】
次に、ＩＣカードコマンド５２０は、ＩＣカード４００を制御するためのコマンドであり、ＩＣカードアプリ選択コマンド５２１と、ＩＣカードアプリ制御コマンド５２２と、ＩＣカードアプリ一覧コマンド５２３と、ＩＣカードアプリ登録コマンド５２４と、ＩＣカードアプリ削除コマンド５２５に分類される。ＩＣカードアプリ選択コマンド５２１は、使用したいＩＣカードアプリを選択するためのコマンドであり、ＩＣカードアプリを一意に識別する識別子であるＡＩＤ４２４の値を指定することで、対応するＩＣカードアプリを選択する。ＩＣカードアプリ選択コマンド５２１の具体例としては、例えばＩＳＯ７８１６で規定されているＳＥＬＥＣＴ  ＦＩＬＥコマンドがあげられる。ＩＣカードアプリ制御コマンド５２２は、ＩＣカードアプリ選択コマンド５２１によって選択されたＩＣカードアプリに対して、任意の制御要求を送信するためのコマンドである。ＩＣカードアプリ一覧コマンド５２３は、ＡＩＤリスト４２４を参照するためのコマンドである。ＩＣカードアプリ登録コマンド５２４は、情報蓄積部４２０にＩＣカードアプリを登録するためのコマンドである。ＩＣカードアプリ削除コマンド５２５は、情報蓄積部４２０に登録されているＩＣカードアプリを削除するためのコマンドである。
【００２８】
次に、コントローラコマンド５３０は、コントローラ２００を制御するためのコマンドであり、コントローラアプリ選択コマンド５３１と、コントローラアプリ制御コマンド５３２と、コントローラアプリ終了コマンド５３３と、コントローラアプリ一覧コマンド５３４と、コントローラアプリ登録コマンド５３５と、コントローラアプリ削除コマンド５３６に分類される。コントローラアプリ選択コマンド５３１は、使用したいコントローラアプリを選択するためのコマンドであり、コントローラアプリを一意に識別する識別子であるＣＩＤ２２６を指定することで、対応するコントローラアプリを選択する。コントローラアプリ制御コマンド５３２は、コントローラアプリ選択コマンド５３１によって選択されたコントローラアプリに対して、任意の制御要求を送信するためのコマンドである。コントローラアプリ終了コマンド５３３は、コントローラアプリ選択コマンド５３１によって選択されているコントローラアプリの終了処理を行うためのコマンドである。コントローラアプリ一覧コマンド５３４は、ＣＩＤリスト２２７を参照するためのコマンドである。コントローラアプリ登録コマンド５３５は、メモリカード１０にコントローラアプリを登録するためのコマンドである。コントローラアプリ削除コマンド５３６は、メモリカード１０に登録されているいずれかのコントローラアプリを削除するためのコマンドである。
【００２９】
図３は、メモリカード１０からホスト装置２０に送信するメモリカードレスポンス６００の構成を示している。メモリカードレスポンス６００は、レスポンス種別６０１とレスポンスデータ６０２の２つのフィールドを有する。レスポンス種別６０１は、どのような種類のレスポンスを格納しているかを表す。レスポンスデータ６０２は、レスポンス種別６０１に対応したコマンドの内容を格納する。本実施例においては、レスポンスデータ６０２に格納するレスポンスは、メモリ制御レスポンス６１０と、ＩＣカードレスポンス６２０と、コントローラレスポンス６３０に分類される。メモリ制御レスポンス６１０は、メモリ制御コマンド５１０に対するレスポンスである。ＩＣカードレスポンス６２０は、ＩＣカードコマンド５２０に対するレスポンスである。コントローラレスポンス６３０は、コントローラコマンド５３０に対応するレスポンスである。
【００３０】
次に図４は、ホスト装置２０からメモリカード１０に対してメモリカードコマンド５００を送信して制御を行う場合の、メモリカード１０内部の処理フローを示す。図４においては、ＩＣカード機能ユニット４００の内部情報をメモリカード１０外部に出力しないで、データ蓄積部２３０や不揮発性メモリ３００に保存を行う場合を示す。
【００３１】
まずホスト装置２０はコントローラ２００内のコントローラアプリを選択するために、ステップＳ１１００としてコントローラアプリ選択コマンド５３１をメモリカード１０に送信する。ここでコントローラアプリ選択コマンド５３１には、選択したいコントローラアプリの識別子であるＣＩＤ２２６が格納されている。このＣＩＤを取得するためには、前述したようにＣＩＤリスト２２７を参照すればよい。コントローラアプリ選択コマンド５３１はコマンド解析モジュール２２３に転送され、ステップＳ１１０１として受信したコマンドがコントローラコマンドであることを判断すると、アプリケーション管理モジュール２２４に転送する。アプリケーション管理モジュール２２４はステップＳ１１０２として、コントローラアプリ選択コマンド５３１に格納されているＣＩＤ２２６を基に、コントローラアプリ２２５Ａを選択して実行可能な状態にし、コントローラアプリ２２５Ａに初期化の指示を出す。
【００３２】
コントローラアプリ２２５Ａは、ステップＳ１１０３で初期化処理の一環として、コントローラアプリ２２５Ａが保持しているＡＩＤ４２４Ａを格納したＩＣカードアプリ選択コマンド５２１をＩＣカード制御モジュール２２２に送信する。ＩＣカード制御モジュール２２２はステップＳ１１０４として、ＩＣカード機能ユニット４００にＩＣカードアプリ選択コマンド５２１を送信する。その際、ＩＣカード機能ユニット４００との間で所定の認証手続き（認証用のパスワードや鍵データの交換など）を行い、認証が成功した場合に以下の処理が実行可能となる。
【００３３】
ＩＣカード機能ユニット４００内のコマンド解析モジュール４２１はＩＣカードアプリ選択コマンド５２１を受信すると、ステップＳ１１０５として、アプリケーション管理モジュール４２２に転送する。アプリケーション管理モジュール４２２は、ステップＳ１１０６として、ＩＣカードアプリ選択コマンド５２１に格納されているＡＩＤを基に、ＩＣカードアプリ４２３Ａを選択して実行可能な状態にし、ＩＣカードアプリ４２３Ａに初期化の指示を出す。ＩＣカードアプリ４２３Ａは、ステップＳ１１０７として初期化を行う。以上の処理が終了したら、コマンド呼び出し元に、順次レスポンスが返信され、最終的にホスト装置２０にコントローラレスポンスが返信される。このように本実施例では、ホスト装置２０側でコントローラアプリ２２５Ａを選択するコマンドを発行するだけで、識別子ＡＩＤ４２４ＡにてこれにリンクするＩＣカード機能ユニット４００内のＩＣカードアプリ４２３Ａをも選択することができる。
【００３４】
次に、ホスト装置２０は選択したコントローラアプリ２２５Ａに指示を出すために、ステップＳ１１１０としてコントローラアプリ制御コマンド５３２を送信する。コントローラ解析モジュール２２３はこれを受信し、ステップＳ１１１１としてコマンドがコントローラコマンドであることを判断すると、アプリケーション管理モジュール２２４に転送する。アプリケーション管理モジュール２２４はステップＳ１１１２として、コントローラアプリ制御コマンド５３２をコントローラアプリ２２５Ａに転送する。コントローラアプリ２２５ＡはステップＳ１１１３として、コントローラアプリ制御コマンド５３２に従って、ＩＣカード機能ユニット４００、不揮発性メモリ３００及びデータ蓄積部２３０にアクセスして、これらの動作を組み合わせた処理を行う。
【００３５】
図４においては、ステップＳ１１１４として、ＩＣカード機能ユニット４００に対してＩＣカード制御コマンド５２２を送信し、ＩＣカード機能ユニットのコマンド解析モジュール４２１はステップＳ１１１５として、受信したＩＣカード制御コマンド５２２をアプリケーション管理モジュール４２２に転送する。アプリケーション管理モジュール４２２はステップＳ１１１６として、既に選択しているＩＣカードアプリ４２３ＡにＩＣカード制御コマンド５２２を転送する。そしてＩＣカードアプリ４２３ＡはステップＳ１１１７としてＩＣカード制御コマンド５２２に基づいた処理を実施する。例えばデータ蓄積部４３０にアクセスし、これに格納されている暗号鍵データなどの機密データの読み書きを実施する。
【００３６】
続いてコントローラアプリ２２５Ａは、メモリ制御モジュール２２１に対して、メモリ制御コマンド５１０を送信する。メモリ制御モジュール２２１はステップＳ１１１８として不揮発性メモリ３００にアクセスし、データの読み書きを行う。例えば、前記データ蓄積部４３０に格納されている暗号鍵データにて、不揮発性メモリ３００のデータを暗号化する。さらにコントローラアプリ２２５Ａは、ステップＳ１１１９としてデータ蓄積部２３０にアクセスしデータの読み書きを行う。例えば、前記暗号鍵データをデータ蓄積部２３０へ保存することができる。
【００３７】
以上の処理手順により、ＩＣカード機能ユニット４００と、不揮発性メモリ３００と、データ蓄積部２３０へのアクセスを組み合わせた制御を、メモリカード内部で、すなわち外部から見破られることなく実施することが可能になる。ここで、ＩＣカード機能ユニット４００と、不揮発性メモリ３００と、データ蓄積部２３０へのアクセスする順序は任意であってよい。例えばコントローラ２００がＩＣカード機能ユニット４００と認証および鍵交換処理を行い、その結果生成された機密性を要する鍵データを、メモリカード１０の外部に出力しないで、データ蓄積部２３０に保存するといったことが可能になる。また、データ蓄積部２３０に保存している鍵データを用いて、コントローラ２００内部で暗号化したデータを、不揮発性メモリ３００に保存するといったことが可能になる。ここで、鍵データはＩＣカード機能ユニット４００内部でも格納しておき、データ蓄積部２３０に保存している鍵データは必要なくなったら消去し、再び必要になったら、再度認証および鍵交換処理を実施して、鍵データをデータ蓄積部２３０に保存すれば、機密性をさらに向上することができる。
【００３８】
以上の説明は処理の一例に過ぎず、コントローラアプリを介したＩＣカード機能ユニット４００、不揮発性メモリ３００、データ蓄積部２３０への複合制御を行うことで、メモリに記憶されるデータ保護のセキュリティを高め、かつデータ保護方式等のアプリケーションを高い機密性を保ったまま変更可能になる。
【実施例２】
【００３９】
図５は、本発明に係わるメモリカードの他の実施例の構成を示すブロック図である。１０はメモリカード、２０はホスト装置、３０はサーバー、４０はネットワークである。本実施例においては、サーバー３０からメモリカード１０に新しいサービスを付加するために、コントローラアプリのダウンロード機能を提供する場合を示す。このため、サーバー３０にはコントローラアプリ登録データ７００と、コントローラアプリ削除データ８００が格納されており、ネットワーク４０経由で、メモリカード１０の不揮発メモリ３００内にコントローラアプリ登録データ７００と、コントローラアプリ削除データ８００を取得する構成になっている。
【００４０】
メモリカード１０の構成は前記した図１の実施例の構成に対し、不揮発性メモリ３００内に保護エリア３１０を設け、データ蓄積部２３０に保護エリア情報２３１を格納している点が異なる。ここで保護エリア３１０は不揮発性メモリ３００のアドレス空間のうち、ホスト装置２０からは直接アクセスできないアドレス空間の範囲であり、どのアドレス空間の範囲が保護エリアに指定されているかという情報は、保護エリア情報２３１としてデータ蓄積部２３０に保存しておく。そして、メモリカード１０は、ホスト装置２０から不揮発性メモリ３００にアクセスするためのコマンドであるメモリ制御コマンド５１０を受信したら、メモリ制御コマンド５１０で指定された不揮発性メモリ３００のアドレス範囲が、保護エリア情報２３１として保存しているアドレス範囲と異なる場合のみ、不揮発性メモリ３００へのアクセスを許可する。したがって、メモリ制御コマンド５１０では保護エリア３１０の内容を更新することはできない。
【００４１】
保護エリア３１０にはコントローラアプリ登録データ７００と、コントローラアプリ削除データ８００を格納している。コントローラアプリ登録データ７００は、コントローラアプリを情報蓄積部２２０内に格納するために必要なデータである。また、コントローラアプリ削除データ８００は、コントローラアプリ登録データ７００を、保護エリア３１０から削除するためのデータである。図５では保護エリア３１０に、コントローラアプリ登録データ７００とコントローラアプリ削除データ８００をそれぞれ１個格納しているが、それぞれ複数個格納しても良い。
【００４２】
次に、ホスト装置２０の内部構成について説明する。ホスト装置２０は、メモリカード制御部２１と情報処理部２２と、ネットワーク制御部２３を備えている。メモリカード制御部２１はメモリカード１０を制御する機能を有する。ネットワーク制御部２３は、ネットワーク４０を介して、サーバー３０と通信を行う機能を有する。情報蓄積部２４は、はメモリカード１０から取得した情報、サーバー３０から取得した情報、あるいはプログラム等を一時的あるいは永続的に蓄積する機能を有し、例えばハードディスクや半導体メモリ等から構成される。情報処理部２２は、マイクロプロセッサ等を用い、情報蓄積部２４に格納されているプログラムを実行することで、ホスト装置２０全体の制御を司る。
【００４３】
次に、サーバー３０の内部構成について説明する。サーバー３０は、情報蓄積部３１と、情報処理部３２と、ネットワーク制御部３３を備えている。情報蓄積部３１は、データやプログラムを一時的あるいは永続的に蓄積する機能を有し、例えばハードディスクや半導体メモリ等から構成される。ネットワーク制御部は、ネットワーク４０を介してホスト装置２０と通信を行う機能を有する。情報処理部３２は、マイクロプロセッサ等を用い、情報蓄積部３１に格納されているプログラムを実行することで、サーバー３０全体の制御を司る。
【００４４】
サーバー３０はメモリカード１０に新しいサービスを付加するために、情報蓄積部３１にはコントローラアプリ登録データ７００と、コントローラアプリ削除データ８００が格納されており、ネットワーク４０経由で、メモリカードに提供することが可能になっている。ここで、ネットワーク４０経由での、コントローラアプリ登録データ７００とコントローラアプリ削除データ８００の取得は、自由に行える場合でも、認証処理あるいは決済処理を行わないと取得できない場合でも、本実施例は適用できる。また、図５では、情報蓄積部３１に、コントローラアプリ登録データ７００とコントローラアプリ削除データ８００をそれぞれ１個格納しているが、それぞれ複数個格納しても良い。
【００４５】
次に図６は、コントローラアプリ登録データ７００の内部構成を示す。コントローラアプリ登録データ７００は、コントローラアプリ登録情報７０１と、ＩＣカードアプリ情報７０２と、コントローラアプリ２２５と、デジタル署名７０４を格納している。コントローラアプリ登録情報７０１は、コントローラアプリ登録データ７００が格納しているコントローラアプリ２２５に関する情報であり、コントローラアプリ２２５を識別するＣＩＤ２２６と、コントローラアプリ２２５のバージョン７０５を含んでいる。ここで本実施例においては、バージョン７０５は、新旧を判別できればフォーマットはどのようなものでもよい。例えば通し番号や日付を用いることができる。ＩＣカードアプリ情報７０２は、コントローラアプリ２２５が関連付けて使用するＩＣカードアプリに関する情報であり、ＩＣカードアプリを識別するＡＩＤ４２４を含んでいる。デジタル署名７０４は、コントローラアプリ登録情報７０１と、ＩＣカードアプリ情報７０２と、コントローラアプリ２２５に対するデジタル署名であり、コントローラアプリ登録データ７００の真正性を確認するために使用する。ここで、デジタル署名７０４を生成および検証するためのアルゴリズムとしては、公開鍵暗号方式であるＲＳＡ暗号や、共通鍵暗号方式であるＤＥＳ暗号など、各種方式が適用できる。
【００４６】
図７は、コントローラアプリ削除データ８００の内部構成を示す。コントローラアプリ削除データ８００は、コントローラアプリ削除情報８０１と、デジタル署名８０２を格納している。コントローラアプリ削除情報８０１は、削除するコントローラアプリに関する情報であり、コントローラアプリを識別するＣＩＤ２２６と、コントローラアプリのバージョン８０５を含んでいる。バージョン８０５は、新旧を判別できればフォーマットはどのようなものでもよい。デジタル署名８０４は、コントローラアプリ削除情報７０１に対するデジタル署名であり、コントローラアプリ削除データ８００の真正性を確認するために使用する。ここでデジタル署名８０４は、前記コントローラアプリ登録データ７００（図６）におけるデジタル署名７０４と同様である。
【００４７】
図８は、メモリカード１０内のアプリケーション管理モジュール２２４が保持しているＣＩＤリスト２２７の内部構成を示す。ＣＩＤリスト２２７は、ＣＩＤレコード９００を複数個格納している。各ＣＩＤレコード９００は、メモリカード１０内部に格納しているコントローラアプリ毎の識別情報を表している。ＣＩＤレコード９００の総数は、格納しているコントローラアプリの総数と等しい。ＣＩＤレコード９００は、ＣＩＤ２２６と、状態フラグ９０２と、付加情報９０３を格納している。状態フラグ９０２は、コントローラアプリが情報蓄積部２２０内に格納されているか、あるいは保護エリア３１０のコントローラアプリ登録データ７００に格納されているかを表す。付加情報９０３は、コントローラアプリに関する他の情報であり、例えばコントローラアプリの名称や登録日付等である。
【００４８】
次に図９は、本実施例の動作として、サーバー３０から取得したコントローラアプリ登録データ７００を保護エリア３１０に登録する処理フローを示す図である。ホスト装置２０はサーバー３０からコントローラアプリ登録データ７００を取得し、メモリカード１０に対し、メモリカードコマンド５００内のコントローラアプリ登録コマンド５３５（図２）に、取得したコントローラアプリ登録データ７００を格納して送信する。ここで、コントローラアプリ登録データ７００が複数個存在する場合は、１つのコントローラアプリ登録コマンド５３５に全てを格納しても、複数のコントローラアプリ登録コマンド５３５に分割して格納しても良い。
【００４９】
ステップＳ２０００として、メモリカード１０のアプリケーション管理モジュール２２４はコントローラアプリ登録データ７００を受信すると、これを不揮発メモリ３００内の保護エリア３１０に一時的に保存する。次に、ステップＳ２００１として、コントローラアプリ登録データ７００のＩＣカードアプリ情報７０２に含まれるＡＩＤ４２４を基に、ＩＣカードアプリ４２３を選択する。
【００５０】
選択処理に成功したら、次にステップＳ２００２として、コントローラアプリ登録データ７００のデジタル署名７０４を、選択したＩＣカードアプリ４２３に送信し、デジタル署名の検証を行う。デジタル署名の検証に成功したら、次にステップＳ２００３として、ＣＩＤリスト２２７を更新し、コントローラアプリ登録データ７００に含まれるコントローラアプリのＣＩＤ２２６を、ＣＩＤリスト２２７に加える。
【００５１】
以上の処理手順により、正しいコントローラアプリ登録データ７００を保護エリア３１０に正式に登録する。もしもステップＳ２００１で、指定したＡＩＤに対応するＩＣカードアプリが存在しなかったり、選択処理に失敗した場合や、ステップＳ２００２でデジタル署名の検証に失敗したら、ステップＳ２００４として、保護エリア３１０からコントローラアプリ登録データ７００を削除して登録処理を終了する。
【００５２】
コントローラアプリ登録データ７００の保護エリア３１０への登録が成功すると、ＣＩＤリスト２２７に、コントローラアプリ登録データ７００のＣＩＤ２２６が追加されるので、ホスト装置２０からこれを参照することが可能となる。そして、ホスト装置２０が、コントローラアプリ登録データ７００のＣＩＤ２２６を指定したコントローラアプリ選択コマンド５３１を送信すると、コントローラアプリ登録データ７００のコントローラアプリ２２５を情報蓄積部２２０にロードして、実行可能状態にする。
【００５３】
また、ホスト装置２０が、コントローラアプリ終了コマンド５３３を送信すると、情報蓄積部２２０に存在する対応するコントローラアプリを削除する。ここで、情報蓄積部２２０に存在するコントローラアプリを削除したとしても、保護エリア３１０にコントローラアプリ登録データ７００が存在しているので、再度、コントローラアプリ選択コマンド５３１を用いて、情報蓄積部２２０に再ロードすることが可能である。
【００５４】
上記実施例によれば、メモリカードのアプリケーションプログラムを外部から新たに追加登録する際に、一時保存のための保護エリアを設けたので、アプリケーションを必要なときに呼び出して使うことができる。バージョンアップする時や保存する時に失敗しても、再度実行することができる。また、保護エリアは外部から直接アクセスできないので、格納したアプリケーションを保護することができる。
【産業上の利用可能性】
【００５５】
上記実施形態では、ＩＣカードの機能を有するユニットを内蔵するメモリカードの場合を説明したが、本発明はこれに限らず、ＩＣカードを内蔵して用いる各種形態のデータ記憶装置に適用できる。
【図面の簡単な説明】
【００５６】
【図１】本発明に係わるデータ記憶装置として、メモリカードの構成を示すブロック図である（実施例１）。
【図２】図１におけるメモリカードコマンド５００の構成図である。
【図３】図１におけるメモリカードレスポンス６００の構成図である。
【図４】図１においてメモリカードを制御する際の内部処理フロー図である。
【図５】本発明に係わるデータ記憶装置として、メモリカードの構成を示すブロック図である（実施例２）。
【図６】図５におけるコントローラアプリ登録データ７００の構成図である。
【図７】図５におけるコントローラアプリ削除データ８００の構成図である。
【図８】図５におけるＣＩＤリスト２２７の構成図である。
【図９】図５においてコントローラアプリ登録データ７００を登録する処理フロー図である。
【符号の説明】
【００５７】
１０…メモリカード、２０…ホスト装置、２００…コントローラ、２１０…情報処理部、２２０…情報蓄積部、２３０…データ蓄積部、２２５Ａ，２２５Ｂ…コントローラアプリケーション、２２６Ａ，２２６Ｂ…識別子ＣＩＤ、３００…不揮発性メモリ、４００…ＩＣカード機能ユニット、４１０…情報蓄積部、４２０…情報蓄積部、４３０…データ蓄積部、４２３Ａ，４２３Ｂ…ＩＣカードアプリケーション、４２４Ａ，４２４Ｂ…識別子ＡＩＤ。
【図１】
2005346421.tif 000003
【図２】
2005346421.tif 000004
【図３】
2005346421.tif 000005
【図４】
2005346421.tif 000006
【図５】
2005346421.tif 000007
【図６】
2005346421.tif 000008
【図７】
2005346421.tif 000009
【図８】
2005346421.tif 000010
【図９】
2005346421.tif 000011