(57)【要約】【課題】  ＩＣカード機能モジュールのアプレットにより認証された外部ホスト機器が、そのアプレットに割り当てられたメモリエリアの機密データを読み書きする場合に、当該機密データをＩＣカード機能モジュールのアプレットを経由させずに効率よく高速に転送できるメモリカード等の記憶装置を提供する。【解決手段】  アプレットを格納可能で実行可能なＩＣカードチップと、アプレットに関係した機密データを格納可能なフラッシュメモリチップと、これらに接続されたコントローラチップとを備えたメモリカードにおいて、ＩＣカードチップ１５０はホスト機器１６０の検証を行い、コントローラチップ１２０は、ホスト機器１６０が検証によって認証されたならば、フラッシュメモリチップ１３０とホスト機器１６０との間で機密データの転送を許可する。【選択図】  図１
2007004522.tif 000002
【特許請求の範囲】
【請求項１】
外部のホスト機器と接続するためのインタフェースと、
アプリケーションプログラムを格納可能で、前記アプリケーションプログラムを実行可能なＩＣカード機能モジュールと、
前記アプリケーションプログラムに関係したデータを格納可能な不揮発性メモリと、
前記インタフェースと前記ＩＣカード機能モジュールと前記不揮発性メモリに接続され、暗号処理手段と揮発性記憶手段とを有するメモリコントローラとを備え、
前記メモリコントローラは、前記ホスト機器から前記インタフェースで受信された第１のコマンドに応答して、前記ＩＣカード機能モジュールから鍵を前記揮発性記憶手段に転送し、
前記メモリコントローラは、前記ホスト機器から前記インタフェースで受信された第２のコマンドに応答して、前記不揮発性メモリと前記ホスト機器との間で転送される前記データを、前記鍵を用いて前記暗号処理手段により暗号化または復号化することを特徴とする記憶装置。
【請求項２】
外部のホスト機器と接続するためのインタフェースと、
アプリケーションプログラムを格納可能で、前記アプリケーションプログラムを実行可能なＩＣカード機能モジュールと、
前記アプリケーションプログラムに関係したデータを格納可能な不揮発性メモリと、
前記インタフェースと前記ＩＣカード機能モジュールと前記不揮発性メモリに接続されたメモリコントローラとを備え、
前記ＩＣカード機能モジュールは、前記ホスト機器の検証を行い、
前記メモリコントローラは、前記ＩＣカード機能モジュールによって前記ホスト機器の検証が成功した場合に、前記不揮発性メモリと前記ホスト機器との間で前記データの転送を許可することを特徴とする記憶装置。
【請求項３】
請求項２に記載の記憶装置において、
前記メモリコントローラは、揮発性記憶手段を備え、
前記ＩＣカード機能モジュールは、前記ＩＣカード機能モジュールによって前記ホスト機器の検証が成功した場合に、鍵を前記メモリコントローラに送信し、
前記メモリコントローラは、前記鍵を前記揮発性記憶手段に格納することを特徴とする記憶装置。
【請求項４】
請求項２に記載の記憶装置において、
前記メモリコントローラは、暗号処理手段を備え、
前記メモリコントローラは、前記ＩＣカード機能モジュールによって前記ホスト機器の検証が成功した場合に、前記不揮発性メモリと前記ホスト機器との間で転送される前記データを、前記暗号処理手段により暗号化または復号化することを特徴とする記憶装置。
【請求項５】
請求項２に記載の記憶装置において、
前記ＩＣカード機能モジュールは、複数の前記アプリケーションプログラムを格納及び実行可能で、
前記不揮発性メモリは、複数のブロックに分割され、
前記複数のブロックの各ブロックは、各アプリケーションプログラムに割り当てられ、各データを格納可能であることを特徴とする記憶装置。
【請求項６】
請求項３に記載の記憶装置において、
前記不揮発性メモリは、前記アプリケーションプログラムを識別するためのアプリケーションＩＤと、前記鍵を前記メモリコントローラに送信するためのオペレーションコードとを対応づけて格納する管理領域を有することを特徴とする記憶装置。
【請求項７】
請求項６に記載の記憶装置において、
前記ＩＣカード機能モジュールに格納されたアプリケーションプログラムに関する前記管理領域の内容の変更または追加または削除を行う機能と、前記変更機能または前記追加機能または前記削除機能を禁止するロック機能と、前記ロック機能を解除するアンロック機能とを有することを特徴とする記憶装置。
【請求項８】
請求項６に記載の記憶装置において、
前記メモリコントローラは、前記ＩＣカード機能モジュールから取得したアプリケーションＩＤと前記不揮発性メモリから取得したアプリケーションＩＤとを比較し、両者が一致した場合に、当該アプリケーションＩＤに対応する前記オペレーションコードを含む第３のコマンドを前記ＩＣカード機能モジュールに送信することを特徴とする記憶装置。
【請求項９】
請求項８に記載の記憶装置において、
前記ＩＣカード機能モジュールは、前記第３のコマンドに応答して、前記鍵を前記メモリコントローラに送信することを特徴とする記憶装置。
【請求項１０】
請求項７に記載の記憶装置において、
前記メモリコントローラは、前記ホスト機器からの第４のコマンドに応答して、前記変更機能または前記追加機能または前記削除機能または前記ロック機能または前記アンロック機能を実行することを特徴とする記憶装置。
【請求項１１】
請求項２に記載の記憶装置において、
前記ＩＣカード機能モジュールは、前記ＩＣカード機能モジュールによって前記ホスト機器の検証が成功した場合に、前記不揮発性メモリの前記データを格納する領域において前記ホスト機器との間のデータ転送を許可するアドレス範囲を前記メモリコントローラに送信することを特徴とする記憶装置。
【請求項１２】
請求項１１に記載の記憶装置において、
前記メモリコントローラは、前記アドレス範囲内に前記ホスト機器が転送を要求するアドレスが含まれるならば、前記不揮発性メモリと前記ホスト機器との間の前記データの転送を許可することを特徴とする記憶装置。
【請求項１３】
請求項３に記載の記憶装置において、
前記ＩＣカード機能モジュールは、前記ＩＣカード機能モジュールによって前記ホスト機器の検証が成功した場合に、前記鍵を動的に生成することを特徴とする記憶装置。
【請求項１４】
外部のホスト機器と接続するためのインタフェースと、
アプリケーションプログラムを格納可能で、前記アプリケーションプログラムを実行可能なＩＣカード機能モジュールと、
前記アプリケーションプログラムに関係したデータを格納可能な不揮発性メモリと、
前記インタフェースと前記ＩＣカード機能モジュールと前記不揮発性メモリに接続されたメモリコントローラとを備え、
前記不揮発性メモリは、前記アプリケーションプログラムを識別するためのアプリケーションＩＤと、前記ＩＣカード機能モジュールと前記メモリコントローラとの間の転送情報を暗号化するための鍵とを対応づけて格納する管理領域を有することを特徴とする記憶装置。
【請求項１５】
外部のホスト機器と接続するためのインタフェースと、
アプリケーションプログラムを格納可能で、前記アプリケーションプログラムを実行可能なＩＣカード機能モジュールと、
前記アプリケーションプログラムに関係したデータを格納可能な不揮発性メモリと、
前記インタフェースと前記ＩＣカード機能モジュールと前記不揮発性メモリに接続されたメモリコントローラとを備え、
前記ＩＣカード機能モジュールは、複数の前記アプリケーションプログラムを格納及び実行可能で、
前記不揮発性メモリは、複数のブロックに分割され、
前記複数のブロックの各ブロックは、各アプリケーションプログラムに割り当てられ、各データを格納可能であり、
第１のアプリケーションプログラムは、自身に割り当てられた第１のブロック内のデータの読み書きを許可するホスト機器を認証し、そのホスト機器との間であらかじめ鍵を共有し、
前記第１のブロック内のデータは、前記ホスト機器との間で転送される際に、前記鍵で暗号化され、
前記鍵は、前記第１のアプリケーションプログラムの要求にしたがって前記ＩＣカード機能モジュールから前記メモリコントローラに送信されて、前記メモリコントローラに保持され、
前記メモリコントローラは、前記ホスト機器が前記第１のブロックへのデータの書き込みを要求したならば、前記ホスト機器から入力されたデータを前記鍵で復号化し、前記第１のブロックにライトし、
前記メモリコントローラは、前記ホスト機器が前記第１のブロックからのデータの読み出しを要求したならば、前記ホスト機器へ出力されるべきデータを前記第１のブロックからリードし、前記鍵で暗号化することを特徴とする記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ機能を搭載した記憶装置及びその記憶装置が挿入可能なホスト機器及びその記憶装置を備えたホスト機器に係り、特に、フラッシュメモリチップとコントローラチップとＩＣカードチップを有するメモリカード等に適用して有効な技術に関する。
【背景技術】
【０００２】
本発明者が検討した従来技術として、例えば特許文献１には、ＩＣカード上のアプリケーションプログラム（アプレット）ごとに、分割されたメモリエリアを割り当て、１つのアプレットが必要に応じて自身に割り当てられたエリアの機密データを、他のアプレットに侵害されることなく読み書きできるメモリカードが記載されている。
【特許文献１】特開２００４−２９５１６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、上記のような従来技術において、上記特許文献１では、ＩＣカードのアプレットによって認証された外部のホスト機器へ当該メモリエリアから大量の機密データを読み出して出力したり、あるいはそのホスト機器から入力された大量の機密データを当該メモリエリアに書き込む際には、非常に処理効率が悪い。すなわち、当該メモリエリアを読み書きするためにはＩＣカードのアプレットからメモリコントローラへのアクセス要求メッセージが必要であるため、当該メモリエリアの機密データを外部のホスト機器へ出力するたびに、一旦、ＩＣカードのアプレットに機密データを渡さねばならない。
【０００４】
あるいは、外部のホスト機器から入力された機密データを当該メモリエリアに書き込むたびに、一旦、ＩＣカードのアプレットに機密データを渡さねばならない。一般にＩＣカードのインタフェースのデータ転送速度は数十キロビット毎秒程度であり、メモリチップのインタフェースのそれが数十メガビット毎秒程度であるのに比べて非常に遅いため、メモリカードが機密データを認証されたホスト機器との間で転送するのは、一般のホスト機器との間で普通のデータ（機密でないデータ）を転送するよりもはるかに長い時間がかかる。
【０００５】
そこで、本発明の目的は、ＩＣカード機能モジュールのアプリケーションにより認証された外部ホスト機器が、そのアプリケーションに割り当てられたメモリエリアの機密データを読み書きする場合に、当該機密データをＩＣカード機能モジュールのアプリケーションを経由させずに効率よく高速に転送できるメモリカード等の記憶装置を提供することである。
【０００６】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００８】
本発明は、外部のホスト機器と接続するためのインタフェースと、アプレットを格納可能で、このアプレットを実行可能なＩＣカード機能モジュールと、アプレットに関係した機密データを格納可能な不揮発性メモリと、インタフェースとＩＣカード機能モジュールと不揮発性メモリに接続されたメモリコントローラとを備えたメモリカード等の記憶装置に適用され、以下のような特徴を有するものである。
【０００９】
例えば、メモリコントローラは、ホスト機器からインタフェースで受信された第１のコマンドに応答して、ＩＣカード機能モジュールから鍵を揮発性記憶手段に転送する。メモリコントローラは、ホスト機器からインタフェースで受信された第２のコマンドに応答して、不揮発性メモリとホスト機器との間で転送されるデータを、鍵を用いて暗号処理手段により暗号化または復号化する。
【００１０】
または、ＩＣカード機能モジュールは、ホスト機器の検証を行う。メモリコントローラは、ホスト機器が検証によって認証されたならば、不揮発性メモリとホスト機器との間で機密データの転送を許可する。
【００１１】
あるいは、不揮発性メモリは、アプレットを識別するためのアプリケーションＩＤと、ＩＣカード機能モジュールとメモリコントローラとの間の転送情報を暗号化するための鍵とを対応づけて格納する管理領域を有する。
【００１２】
具体的には、不揮発性メモリ上のメモリエリアの一部を複数のブロックに分割し、ブロックの使用権をＩＣカード機能モジュールのアプレットごとに割り当てる。そのアプレットは、自身に割り当てられたメモリブロック内の機密データの読み書きを許可する外部のホスト機器を認証し、そのホスト機器との間であらかじめ第３者に知られない鍵を共有する。当該メモリブロック内の機密データは、記憶装置とホスト機器との間を転送される際に、その鍵で暗号化・署名され、第３者が盗聴や改ざんできないようにする。この共有鍵は、アプレットの要求にしたがってＩＣカード機能モジュールからメモリコントローラに送信され、メモリコントローラは一時的にそれを保持する。
【００１３】
その後、ホスト機器が記憶装置に対して当該メモリブロックへの機密データの書き込みを要求すれば、メモリコントローラはホスト機器から入力された機密データをその共有鍵で復号化・署名検証し、当該メモリブロックにライトする。あるいは、ホスト機器が記憶装置に対して当該メモリブロックからの機密データの読み出しを要求すれば、メモリコントローラはホスト機器へ出力されるべき機密データを当該メモリブロックからリードし、その共有鍵で署名作成・暗号化する。
【発明の効果】
【００１４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１５】
本発明によれば、ＩＣカード機能モジュールのアプリケーションにより認証された外部ホスト機器が、そのアプリケーションに割り当てられたメモリエリアのデータを読み書きする場合に、当該データをＩＣカード機能モジュールのアプリケーションを経由させずに効率よく高速に転送できるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１７】
以下においては、セキュリティ機能を搭載した記憶装置の一例として、フラッシュメモリチップとコントローラチップとＩＣカードチップを有するメモリカードに適用する場合を例に説明する。しかしながら、本発明は、これに限定されるものではない。
【００１８】
また、本発明の特徴である各構成要素は、以下の実施の形態において、次のような対応となる。それぞれ、ＩＣカード機能モジュールはＩＣカードチップ、不揮発性メモリはフラッシュメモリチップ、メモリコントローラはコントローラチップ、暗号処理手段は暗号処理回路、揮発性記憶手段は鍵レジスタに対応する。
【００１９】
図１は、本発明を適用した一実施の形態のＭｕｌｔｉＭｅｄｉａＣａｒｄ（ＭｕｌｔｉＭｅｄｉａＣａｒｄはＩｎｆｉｎｅｏｎＴｅｃｈｎｏｌｏｇｉｅｓＡＧの登録商標である。以下、「ＭＭＣ」と略記する。）の内部構成図を簡単に表したものである。
【００２０】
ＭＭＣ１１０は、ＭｕｌｔｉＭｅｄｉａＣａｒｄ仕様に準拠するのが好ましい。ＭＭＣ１１０は、外部に接続したホスト機器１６０がＭｕｌｔｉＭｅｄｉａＣａｒｄのプロトコル仕様に準拠したメモリカードコマンドを発行することによって、ファイルデータを読み書きすることができるストレージ機能や、機密データ保護や個人認証などに必要な暗号演算を行うことができるセキュリティ処理機能を有する。
【００２１】
ホスト機器１６０は、例えば、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、音楽再生（及び録音）装置、カメラ、ビデオカメラ、自動預金預払器、街角端末、決済端末等が該当する。
【００２２】
ＭＭＣ１１０は、ＭＭＣ外部端子１４０、コントローラチップ１２０、フラッシュメモリチップ１３０、ＩＣカードチップ１５０を持つ。
【００２３】
フラッシュメモリチップ１３０は、不揮発性の半導体メモリを記憶媒体とする大容量（例えば、１２８メガバイト）のメモリチップであり、フラッシュメモリコマンドによりデータの読み書きができる。ＭＭＣ外部端子１４０は複数の端子から構成され、外部のホスト機器１６０と情報交換するために、電源供給端子、クロック入力端子、コマンド入出力端子、データ入出力端子、グランド端子を含む。
【００２４】
コントローラチップ１２０は、ＭＭＣ１１０内部の他の構成要素（ＭＭＣ外部端子１４０、フラッシュメモリチップ１３０、ＩＣカードチップ１５０）と接続されており、これらを制御するマイコンチップである。
【００２５】
ＩＣカードチップ１５０は、ＩＣカードのプラスチック基板中に埋め込むためのマイコンチップであり、その外部端子、電気信号プロトコル、コマンドはＩＳＯ／ＩＥＣ７８１６規格に準拠している。ＩＣカードチップ１５０の外部端子には、電源供給端子、クロック入力端子、リセット入力端子、Ｉ／Ｏ入出力端子、グランド端子がある。ＩＣカードチップ１５０の外部端子は、グランド端子を除いて、電源供給端子、クロック入力端子、リセット入力端子、Ｉ／Ｏ入出力端子がコントローラチップ１２０に接続されている。
【００２６】
コントローラチップ１２０は、ＩＣカードチップ１５０の外部端子からＩＣカードチップ１５０にＩＣカードコマンドを発行することによって、外部のホスト機器１６０から要求されたセキュリティ処理に必要な演算を行う。ＩＣカードチップ１５０は、演算処理を行うためのＣＰＵ１５１と、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５２とを備える。一方、フラッシュメモリチップ１３０には、記憶素子を備えるが、マイコンは存在しない。
【００２７】
セキュリティ処理は、例えば、ＩＣカードチップ１５０内のＥＥＰＲＯＭ１５２にデータが書き込まれるとき、又は、ＥＥＰＲＯＭ１５２からデータが読み出されるときにＣＰＵ１５１により実行される。セキュリティ処理の詳細な内容は、ＥＥＰＲＯＭ１５２内に格納されたプログラムコードによって記述されている。多種多様なセキュリティ処理に適用できるように、そのプログラムコードは機能的に異なる複数のモジュールとして構成されている。ＣＰＵ１５１は必要に応じてセキュリティ処理に使用するモジュールを切り替えることができる。以下、このモジュール単位をアプレットと呼ぶ。
【００２８】
例えば、ＥＥＰＲＯＭ１５２は、アプレットＡ１５３とアプレットＢ１５４とを格納する。ＩＣカード内の各アプレットはそれぞれ、自身のアプリケーション識別子（以下、ＡＩＤ（Ａｐｐｌｉｃａｔｉｏｎ  ＩＤｅｎｔｉｆｉｅｒ）と呼ぶ。）を所有する。図１において、アプレットＡ１５３のＡＩＤは１５５として、アプレットＢ１５４のＡＩＤは１５６として示されている。これらのＡＩＤは、ＩＣカードのアプリケーションプログラムを識別するために、国際的にユニークに割り振られた値であることが好ましい。国際的に流通するＡＩＤの付番方法は、国際規格としてＩＳＯ／ＩＥＣ７８１６−５で規定されている。ＥＥＰＲＯＭ１５２の記憶容量は例えば６４キロバイトであり、フラッシュメモリチップ１３０の記憶容量より小さい。但し、本発明を実施する上で、ＥＥＰＲＯＭ１５２の記憶容量は、フラッシュメモリチップ１３０の記憶容量と同じでもよいし、大きくてもよい。
【００２９】
ＩＣカードチップ１５０には、セキュリティ評価基準の国際標準であるＩＳＯ／ＩＥＣ１５４０８の評価・認証機関によって認証済みである製品を利用する。一般に、セキュリティ処理を行う機能を持つＩＣカードを実際の電子決済サービスなどで利用する場合、そのＩＣカードはＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による評価と認定を受ける必要がある。ＭＭＣにセキュリティ処理を行う機能を追加することによってＭＭＣ１１０を実現し、それを実際の電子決済サービスなどで利用する場合、ＭＭＣ１１０も同様にＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による評価と認定を受ける必要がある。ＭＭＣ１１０は、評価・認証機関によって認証済みのＩＣカードチップ１５０を内蔵し、そのＩＣカードチップ１５０を利用してセキュリティ処理を行う構造を持つことにより、セキュリティ処理機能を得る。したがって、ＭＭＣ１１０はＩＳＯ／ＩＥＣ１５４０８に基づくセキュリティ評価基準を容易に満足することができ、ＭＭＣにセキュリティ処理機能を追加するための開発期間を短縮することができる。
【００３０】
ＭＭＣ１１０は、ＭｕｌｔｉＭｅｄｉａＣａｒｄ仕様に準拠した外部インタフェースを持つのが好ましい。ＭＭＣ１１０は、一種類の外部インタフェースを通じて、ＭｕｌｔｉＭｅｄｉａＣａｒｄ仕様に準拠した標準メモリカードコマンドに加えて、セキュリティ処理を実行するコマンド（以下、セキュアライトコマンドと呼ぶ。）を受け付ける。セキュアライトコマンドは入力データを伴う。コントローラチップ１２０は、ＭＭＣ１１０が受信したコマンドが標準メモリカードコマンドであるか、セキュアライトコマンドであるかによって、アクセスすべきチップを選択し、コマンド処理を分配する機能を持つ。標準メモリカードコマンドを受信したならば、フラッシュメモリチップ１３０を選択し、これにフラッシュメモリコマンドを発行してホストデータを読み書きできる。また、セキュアライトコマンドを受信したならば、ＩＣカードチップ１５０を選択し、これにＩＣカードコマンドを発行してセキュリティ処理を実行することができる。
【００３１】
ここで発行されるＩＣカードコマンドは、セキュアライトコマンドによって入力されるデータ（以下、セキュアライトデータと呼ぶ。）の中に埋め込まれている。ＩＣカードチップ１５０はこのコマンドに応じてＩＣカードレスポンスを返すが、コントローラチップ１２０はそれをキャッシュする。さらに、ＭＭＣ１１０は、一種類の外部インタフェースを通じて、セキュリティ処理の結果を読み出すコマンド（以下、セキュアリードコマンドと呼ぶ。）も受け付ける。セキュアリードコマンドは出力データを伴う。セキュアリードコマンドを受信したならば、キャッシュしておいたＩＣカードレスポンスを含むデータ（以下、セキュアリードデータと呼ぶ。）を出力する。
【００３２】
図６は、セキュアライトデータおよびセキュアリードデータのフォーマットの一例を示したものである。このフォーマットは、実行するセキュリティ処理の内容が１つのＩＣカードコマンドで表現でき、セキュリティ処理の結果が１つのＩＣカードレスポンスで表現できる場合に適用することが好ましい。
【００３３】
上述の通り、ＩＣカードチップ１５０に送信するＩＣカードコマンド、ＩＣカードチップ１５０から受信するＩＣカードレスポンスはともにＩＳＯ／ＩＥＣ７８１６−４規格に従う。本規格によれば、ＩＣカードコマンドの構成は、４バイトのヘッダ（クラスバイトＣＬＡ、命令バイトＩＮＳ、パラメータバイトＰ１とＰ２）が必須であり、必要に応じて、入力データ長指示バイトＬｃ、入力データフィールドＤａｔａＩｎ、出力データ長指示バイトＬｅが後に続く。また、ＩＣカードレスポンスの構成は、２バイトのステータスＳＷ１とＳＷ２が必須であり、必要に応じて、出力データフィールドＤａｔａＯｕｔ６１３がその前に置かれる。
【００３４】
本フォーマットにおけるセキュアライトデータ６０１は、ＩＣカードコマンド６０２の前にＩＣカードコマンド長Ｌｃａ６０４を付け、さらにＩＣカードコマンド６０２の後にダミーデータ６０５をパディングしたものである。Ｌｃａ６０４の値はＩＣカードコマンド６０２の各構成要素（ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、Ｌｃ、ＤａｔａＩｎ６０６、Ｌｅ）の長さを合計した値である。一方、セキュアリードデータ６１１は、ＩＣカードレスポンス６１２の前にＩＣカードレスポンス長Ｌｒａ６１４を付け、さらにＩＣカードレスポンス６１２の後にダミーデータ６１５をパディングしたものである。Ｌｒａ６１４の値はＩＣカードレスポンス６１２の各構成要素（ＤａｔａＯｕｔ６１３、ＳＷ１（６１６）、ＳＷ２（６１７））の長さを合計した値である。
【００３５】
なお、この図では、ＩＣカードコマンドにＬｃ、ＤａｔａＩｎ、Ｌｅが含まれ、ＩＣカードレスポンスにＤａｔａＯｕｔが含まれる場合のフォーマット例を表している。ＭＭＣ１１０に対する標準メモリカードコマンドに含まれるデータリード／ライトコマンドの仕様では、リード／ライトアクセスするデータを固定長のブロック単位で処理することが基本となっている。よって、セキュアライトデータ６０１やセキュアリードデータ６１１のサイズも、ＭＭＣ１１０の標準メモリカードコマンドの仕様に準拠したブロックサイズに一致させることが好ましい。
【００３６】
ダミーデータ６０５，６１５は、セキュアライトデータ６０１やセキュアリードデータ６１１のサイズをブロックサイズに一致させるために適用される。ブロックサイズとして採用する値は、一般の小型メモリカードが論理ファイルシステムに採用しているＦＡＴ方式におけるセクタサイズ（５１２バイト）が好ましい。パディングするダミーデータ６０５，６１５は全てゼロでもよいし、乱数でもよいし、コントローラチップ１２０やホスト機器１６０がデータエラーを検出したり訂正するためのチェックサムでもよい。Ｌｃａ６０４の値はコントローラチップ１２０がセキュアライトデータ６０１からダミーデータ６０５を除去してＩＣカードコマンド６０２を抽出するために使用し、Ｌｒａ６１４の値はホスト機器１６０がセキュアリードデータ６１１からダミーデータ６１５を除去してＩＣカードレスポンス６１２を抽出するために使用する。
【００３７】
図１において、コントローラチップ１２０は、電源供給端子、クロック入力端子を通して、ＩＣカードチップ１５０への電源供給、クロック供給を制御する。ホスト機器１６０からセキュリティ処理を要求されないときには、ＩＣカードチップ１５０への電源供給やクロック供給を停止させることができ、ＭＭＣ１１０の電力消費を削減することができる。電源供給されていないＩＣカードチップ１５０を、ＩＣカードコマンドを受信できる状態にするには、まず、ＩＣカードチップ１５０に電源供給を開始し、リセット処理を施すことが必要である。コントローラチップ１２０は、ＭＭＣ１１０がホスト機器１６０からセキュアライトコマンドを受信したのを契機に、電源供給端子を通してＩＣカードチップ１５０への電源供給を開始する機能を持つ。
【００３８】
また、コントローラチップ１２０は、ＭＭＣ１１０がホスト機器１６０からセキュアライトコマンドを受信したのを契機に、リセット入力端子を通してＩＣカードチップ１５０のリセット処理を行う機能を持つ。コントローラチップ１２０は、セキュアライトコマンドを受信するまでＩＣカードチップ１５０への電源供給を停止させておくことができる。したがって、ＭＭＣ１１０の電力消費を削減することができる。コントローラチップ１２０は、ＩＣカードチップ１５０のクロック入力端子を通してＩＣカードチップ１５０に供給するクロック信号をＭＭＣ１１０内部で発生し、その周波数、供給開始タイミング、供給停止タイミングを制御する機能を持つ。ＭＭＣ外部端子１４０のクロック入力端子のクロック信号と無関係にすることができるため、ホスト機器１６０によるタイミング解析、電力差分解析、故障利用解析と呼ばれる攻撃法に対してセキュリティが向上する。
【００３９】
図１において、フラッシュメモリチップ１３０は、ノーマルデータエリア１３１と管理エリア１３２とセキュアデータエリア１３３とを含む。ノーマルデータエリア１３１は、セクタ単位に論理アドレスがマッピングされている領域であり、ホスト機器１６０が標準メモリカードコマンドを使用することにより指定した論理アドレスにデータを読み書きできる領域である。セキュアデータエリア１３３は、ＩＣカードチップ１５０内のＥＥＰＲＯＭ１５２に格納されたアプレット（例えば、１５３や１５４）をＣＰＵ１５１が実行する際に（すなわち、セキュリティ処理を実行する際に）、扱うデータを格納することができる領域である。
【００４０】
コントローラチップ１２０は、データ暗号鍵Ｋｄ１２２を持つ。コントローラチップ１２０がセキュアデータエリア１３３に格納するデータを、データ暗号鍵Ｋｄ１２２で暗号化することによって第３者の盗聴から保護する。ＭＭＣ１１０が不正に分解されてフラッシュメモリチップ１３０を抽出してデータを読み出しても内容が解読できないため、安全性が向上する。データ暗号鍵Ｋｄ１２２はＭＭＣ１１０の製造者によって管理することが好ましい。
【００４１】
セキュアデータエリア１３３は複数のブロックに分割されている。これをセキュアデータブロックと呼ぶ。例えば、セキュアデータエリア１３３は４つのセキュアデータブロック１３３ａ，１３３ｂ，１３３ｃ，１３３ｄで構成される。セキュアデータブロックは、コントローラチップ１２０がアプレットごとにその利用権を割り当てることができる単位である。例えば、アプレットＡ１５３はセキュアデータブロックｃ１３３ｃの利用権を持ち、アプレットＢ１５４はセキュアデータブロックａ１３３ａの利用権を持つ。また、各セキュアデータブロックは複数の固定長データレコードに分割されている。例えば、１レコードのサイズは１２８バイトであり、１つのセキュアデータブロック当たり８１９２個のレコードで構成される。このとき、１つのセキュアデータブロックのサイズが１メガバイトとなり、セキュアデータエリア１３３の容量は４メガバイトとなる。したがって、ＥＥＰＲＯＭ１５２に格納されたアプレットは、セキュアデータエリア１３３に格納されたデータにアクセスすることによって、ＥＥＰＲＯＭ１５２の容量以上の不揮発データを利用できる。
【００４２】
例えば、ＩＣカードチップ１５０内のアプレットＡ１５３が電子決済に関するセキュリティ処理のためのプログラムである場合、決済ログ（支払金額や日時など）をセキュアデータエリア１３３に格納することにより、ＥＥＰＲＯＭ１５２のみを利用するよりも多くの決済ログが保存でき、ユーザの利便性が高くなる。電子決済システムにおける情報管理の多様性を考えたとき、この決済ログはアプレットＡ１５３が内部的に管理するだけでなく、外部のホスト機器１６０へ読み出したり、ホスト機器１６０が書き換えたりするケースも想定される。そのような仕組みを実現する際には、決済ログはＭＭＣ１１０とホスト機器１６０との間を転送される際に、何らかの鍵で暗号化・署名され、第３者が盗聴や改ざんできないようにすべきである。そのためには、アプレットＡ１５３とホスト機器１６０との間であらかじめ第３者に知られない鍵を共有する必要がある。その鍵を共有する相手は互いに信用できなければならない。すなわち、アプレットＡ１５３は自身に割り当てられたセキュアデータブロックｃ１３３ｃ内のデータの読み書きを許可する外部のホスト機器１６０を認証すべきである。
【００４３】
本発明によれば、認証されたホスト機器１６０と共有された鍵はアプレットＡ１５３の要求にしたがってＩＣカードチップ１５０からコントローラチップ１２０に送信され、コントローラチップ１２０は一時的にそれを鍵レジスタ１２３に保持する。その後、ホスト機器１６０がＭＭＣ１１０に対して当該ブロック１３３ｃへのデータ書き込みを要求すれば、コントローラチップ１２０はホスト機器１６０から入力されたデータを鍵レジスタ１２３内の共有鍵Ｋｓで復号・署名検証し、データ暗号鍵Ｋｄ１２２で暗号化した後、当該ブロック１３３ｃにライトする。あるいは、ホスト機器１６０がＭＭＣ１１０に対して当該ブロック１３３ｃからのデータ読み出しを要求すれば、コントローラチップ１２０はホスト機器１６０へ出力されるべきデータを当該ブロック１３３ｃからリードし、データ暗号鍵Ｋｄ１２２で復号した後、鍵レジスタ１２３内の共有鍵Ｋｓで署名作成・暗号化する。したがって、アプレットＡ１５３が認証した外部のホスト機器１６０へ決済ログを読み出したり、そのホスト機器１６０が決済ログを書き換えたりする処理は本発明により効率的に実現される。
【００４４】
コントローラチップ１２０は、上に述べた暗号化、復号、署名作成、署名検証を実行するための暗号処理回路１２１を持っている。データの転送性能を向上させるためにも、暗号処理回路１２１は暗号処理専用の論理回路によって構成されていることが好ましい。また、紛失や盗難に対する安全性を向上させるためにも、上に述べた鍵レジスタ１２３は揮発性のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）によって構成されていることが好ましい。
【００４５】
一方、管理エリア１３２は、コントローラチップ１２０がセキュアデータエリア１３３を管理するための情報を格納する領域である。コントローラチップ１２０は、ＭＭＣ１１０がホスト機器１６０からセキュアライトコマンドを受信したことを契機に、この領域に情報を格納したり、削除したりする。そのコマンドについては後述する。管理エリア１３２は、ロックフラグ１３４とパスワードエリア１３５と管理テーブル１３６とを含む。
【００４６】
管理テーブル１３６は、セキュアデータエリア１３３を構成している各セキュアデータブロックの利用権を持つアプレットを登録するための領域である。アプレットを識別するために、この領域にＡＩＤを格納することによってアプレットを登録することが望ましい。ＡＩＤを利用することにより、セキュアデータエリア１３３を使用するアプレットを確実に識別することができる。コントローラチップ１２０は、ＡＩＤ１３７に同一のＡＩＤを複数格納することを禁止する。管理テーブル１３６のブロックの欄は、セキュアデータブロックを識別するためのブロック識別子としてブロックの先頭アドレス値を登録する。但し、先頭アドレス値の代わりにＭＭＣ内でユニークな番号をブロック識別子として登録してもよい。尚、管理テーブル１３６の代わりに、各セキュアデータブロック内に直接にＡＩＤを登録）してもよい。
【００４７】
管理テーブル１３６には、ＡＩＤ１３７だけでなく、アプレットごとに転送コマンド１３８を格納することができる。この転送コマンド１３８は、コントローラチップ１２０がセキュアデータブロックの利用権を、アプレットのために割り当てる時に登録される。転送コマンドとは、“共有鍵転送コマンド”のコマンドＡＰＤＵ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）のＣＬＡバイトとＩＮＳバイトに設定する２バイトの値である。ここで、“共有鍵転送コマンド”とは、セキュアデータエリア１３３に対してホスト機器１６０からアクセスが来る前に、コントローラチップ１２０とＩＣカードチップ１５０との間でアクセスに使用する共有鍵Ｋｓを転送するために、コントローラチップ１２０がＩＣカードチップ１５０に対して発行するＩＣカードコマンド形式のコマンドである。このコマンドの詳細な説明は後述する。
【００４８】
セキュアデータエリア１３３の利用権を持つアプレット（１５３や１５４）には、共有鍵転送コマンドを受信した際に共有鍵Ｋｓを出力する処理プログラムが記述されている。転送コマンド１３８はアプレットごとに個別に決められるようになっている。もし、転送コマンドが全てのアプレットに共通の固定値であるならば、ホスト機器１６０からのセキュアライトデータに含まれるアプレット特有のコマンドと共有鍵転送コマンドとの間でコーディングの競合が発生する可能性がある。本発明によれば、このようなコーディング競合を防ぐことができる。なお、転送コマンド１３８のうちＩＮＳコードに関しては、伝送プロトコルの都合上ＩＳＯ／ＩＥＣ７８１６−３に準拠していなければならない。
【００４９】
管理テーブル１３６には、さらに、アプレットごとに転送鍵１３９を格納することができる。この転送鍵１３９はコントローラチップ１２０とＩＣカードチップ１５０との間で転送する共有鍵Ｋｓを、暗号や署名によって第３者の盗聴や改ざんから保護するための鍵である。ＩＣカード内の各アプレットはそれぞれの転送鍵Ｋｔを所有する。図１において、アプレットＡ１５３の転送鍵Ｋｔ（ａ）は１５７として、アプレットＢ１５４の転送鍵Ｋｔ（ｂ）は１５８として示されている。アプレットは自身の転送鍵Ｋｔで共有鍵Ｋｓを署名・暗号化し、それをコントローラチップ１２０に転送する。コントローラチップ１２０は管理テーブル１３６から取得した同じ転送鍵Ｋｔでこれを復号・署名検証して、確実に共有鍵Ｋｓを取得することができる。
【００５０】
ロックフラグ１３４は、管理テーブル１３６に格納された登録情報の変更の可否を示す１バイトのデータを格納する領域である。この領域にＦＦｈを設定することで管理テーブル１３６の情報の変更が禁止状態（ロック状態）であることを示す。また、００ｈを設定することで管理テーブル１３６の情報の変更が許可状態（アンロック状態）であることを示す。
【００５１】
パスワードエリア１３５は、管理テーブル１３６の情報をアンロック状態にするための２５５バイトのパスワードの参照値を格納しておく領域である。管理テーブル１３６の情報をロックする時には必ず、ホスト機器１６０からセキュアライトコマンドにより、２５５バイトのパスワード参照をこの領域に設定する。管理テーブル１３６の情報をアンロック状態にする場合は、ホスト機器１６０からセキュアライトコマンドにより、ロック時に設定したパスワード参照と同じパスワードを入力する必要がある。入力したパスワードとパスワード参照との一致によって、管理テーブル１３６の情報の変更をアンロックすることができる。
【００５２】
管理エリア１３２は、ホスト機器１６０が不正にアクセスしてセキュリティ処理を解析することができないように、コントローラチップ１２０により物理的にアクセス制限がかけられている。つまり、管理エリア１３２はコントローラチップ１２０による論理アドレスが割り振られていないため、ホスト機器１６０が直接データを読み書きできない。したがって、ＭＭＣ１１０のセキュリティ処理の信頼性や安全性が向上する。
【００５３】
本発明を実施する際には、ＩＣカードのアプレットは自身に割り当てられたセキュアデータブロック内のデータの読み書きを許可する外部のホスト機器１６０を認証し、それを通じて互いに共有する鍵を動的に作成することが好ましい。図２はその処理フローの一例を示したものである。ただし、この処理の前提条件として、ホスト機器１６０とＩＣカードのアプレットは互いに同じ認証鍵Ｋａを知っているものとする。以下、その処理の流れを説明する。
【００５４】
ホスト機器１６０はホスト乱数を作成する（ステップ２０１）。第１コマンドはそのホスト乱数をアプレットに送信するＩＣカードコマンドであり、ホスト機器１６０は第１コマンドをライトセキュアコマンドによりＭＭＣ１１０に送信する（ステップ２０２）。ＭＭＣ１１０内のコントローラチップ１２０は第１コマンドのコマンドＡＰＤＵを抽出してＩＣカードコマンドとしてＩＣカードチップ１５０に送信する（ステップ２０３）。ＩＣカードチップ１５０はこれを受信する（ステップ２０４）。そしてカード乱数を作成する（ステップ２０５）。
【００５５】
次に、取得したホスト乱数を認証鍵Ｋａで暗号化したカード認証文を作成し（ステップ２０６）、カード認証文とカード乱数を含むＩＣカードレスポンスをコントローラチップ１２０に返信する（ステップ２０７）。コントローラチップ１２０はこのＩＣカードレスポンスを受信し、これを第１レスポンスとしてセキュアリードコマンドによりホスト機器１６０に送信する（ステップ２０８）。ホスト機器１６０は第１レスポンスを受信し（ステップ２０９）、その中のカード認証文を認証鍵Ｋａで復号し、ホスト乱数が復元されるか検証する（ステップ２１０）。ホスト機器１６０はホスト乱数の復元を確認してカードが正当であると認証する。
【００５６】
そして、取得したカード乱数を認証鍵Ｋａで暗号化してホスト認証文を作成する（ステップ２１１）。第２コマンドはそのホスト認証文を送信するＩＣカードコマンドであり、ホスト機器１６０は第２コマンドをライトセキュアコマンドによりＭＭＣ１１０に送信する（ステップ２１２）。ＭＭＣ１１０内のコントローラチップ１２０は第２コマンドのコマンドＡＰＤＵを抽出してＩＣカードコマンドとしてＩＣカードチップ１５０に送信する（ステップ２１３）。ＩＣカードチップ１５０はこれを受信する（ステップ２１４）。そして、その中のホスト認証文を認証鍵Ｋａで復号し、カード乱数が復元されるか検証する（ステップ２１５）。ＩＣカードアプレットはカード乱数の復元を確認してホスト機器１６０が正当であると認証する。次に、カード乱数とホスト乱数の排他的論理和を取り、認証鍵Ｋａで暗号化することにより共有鍵Ｋｓを生成する（ステップ２１６）。
【００５７】
そして、認証結果をホスト機器１６０に伝えるメッセージを作成し（ステップ２１７）、それをＩＣカードレスポンスとしてコントローラチップ１２０に返信する（ステップ２１８）。コントローラチップ１２０はこのＩＣカードレスポンスを受信し、これを第２レスポンスとしてセキュアリードコマンドによりホスト機器１６０に送信する（ステップ２１９）。ホスト機器１６０は第１レスポンスを受信する（ステップ２２０）。その中の認証結果が成功であることを確認して、カード乱数とホスト乱数の排他的論理和を取り、認証鍵Ｋａで暗号化することにより共有鍵Ｋｓを生成する（ステップ２２１）。以上のように、相互に認証する中で動的に生成された同じ鍵を共有する。
【００５８】
なお、本発明を実施するのに上記のような認証処理を行うことは必須条件ではない。少なくともＩＣカードのアプレットと外部のホスト機器１６０との間で何らかの鍵が共有できればよい。したがって、あらかじめ両者が固定的に同じ鍵を持ち、セキュアデータブロック内のデータをホスト機器１６０とＭＭＣ１１０との間で転送する時の暗号や署名には、いつもその鍵を適用することもできる。ただし、上記（図２）の方式に比べて第３者による暗号解析が容易になるため安全性は劣る。
【００５９】
上記の共有鍵Ｋｓは、図２のような処理を通してホスト機器１６０とＩＣカードチップ１５０の両者に共有されるが、その後、セキュアデータエリア１３３に対してホスト機器１６０から読み書きアクセスが来るのに備えて、ＩＣカードチップ１５０からコントローラチップ１２０に対してこれを事前に転送しておく必要がある。そのために、コントローラチップ１２０はＩＣカードチップ１５０に対して“共有鍵転送コマンド”を発行する。以下、図３を参照しながら、共有鍵転送コマンドのコマンドＡＰＤＵとレスポンスＡＰＤＵについて詳細に述べる。
【００６０】
図３（ａ）および図３（ｃ）は、ＩＣカードチップ１５０が出力するレスポンスＡＰＤＵを示している。これらのレスポンスＡＰＤＵ３００，３２０に含まれるＤａｔａＯｕｔ３０４，３２６の先頭バイト（３０１，３２１）、およびＳＷ１バイト３０５，３２７とＳＷ２バイト３０６，３２８に特別な値を設定することにより、ＩＣカードチップ１５０はコントローラチップ１２０に共有鍵設定要求を通知することができる。なお、ＤａｔａＯｕｔ３０４，３２６のうち先頭から２バイト目（３０２，３２２）はその後に続くデータの長さを示し、先頭から３バイト目以降は、共有鍵設定要求に必要な情報を送信するために使用される。
【００６１】
ＩＣカードチップ１５０は、コントローラチップ１２０に対して共有鍵Ｋｓを設定することを要求するため、ＳＷ１バイト３０５，３２７とＳＷ２バイト３０６，３２８に９０ＦＦｈという専用のステータス値を設定しなければならない。コントローラチップ１２０は、ＩＣカードチップ１５０が出力するレスポンスＡＰＤＵを常に監視し、ＳＷ１バイト３０５，３２７とＳＷ２バイト３０６，３２８の値が９０ＦＦｈであることを検出したら、その前方にあるＤａｔａＯｕｔ３０４，３２６の先頭バイト３０１，３２１を調査し、要求内容などを認知する。一方、９０ＦＦｈでなかった場合は、このレスポンスＡＰＤＵを含むセキュアリードデータをホスト機器１６０にそのまま出力する。
【００６２】
コントローラチップ１２０は、共有鍵設定を開始するとき、ＩＣカードチップ１５０上で選択されているアプレットが何であるかによって、１３３ａ〜１３３ｄの中からアクティブにする（ホスト機器１６０がアクセスできる）セキュアデータブロックを選択する。アクセスできるセキュアデータブロックの選択は、ＩＣカードチップ１５０からブロック選択要求が発生した直後に行う。図３（ａ）はそのためのメッセージを示している。ブロック選択要求のためにＤａｔａＯｕｔ３０４に設定するデータの仕様を以下に示す。先頭バイト３０１には１９ｈを設定する。また、先頭から３バイト目以降３０３には、ＩＣカードチップ１５０上で選択されているアプレットのＡＩＤを設定する。例えば、アプレットＡ１５３が選択されているならばＡＩＤ１５５を、アプレットＢ１５４が選択されているならばＡＩＤ１５６を設定する。先頭から２バイト目３０２には、そのＡＩＤの長さＬａを設定する。
【００６３】
コントローラチップ１２０は、レスポンスＡＰＤＵの先頭バイトが１９ｈならば、ＡＩＤ３０３で管理テーブル１３６内の全てのＡＩＤ１３７を検索し、アクティブにすべきセキュアデータブロックを決定する。一致するＡＩＤが見つからなかった場合は、このレスポンスＡＰＤＵを含むセキュアリードデータをホスト機器１６０に出力する。ＡＩＤを検出し、それに対応するセキュアデータブロックが判明した後、コントローラチップ１２０は、共有鍵Ｋｓの転送を開始すると認識する。先頭バイトがそれ以外の場合は、このレスポンスＡＰＤＵを含むセキュアリードデータをホスト機器１６０に出力する。
【００６４】
コントローラチップ１２０が共有鍵転送開始を認知した後、共有鍵転送コマンドを発行することによって、共有鍵Ｋｓの値、その鍵のアルゴリズム、認証されたホスト機器１６０がアクセス可能なレコード番号範囲をＩＣカードチップ１５０からコントローラチップ１２０に転送することができる。図３（ｂ）と図３（ｃ）はそれぞれ共有鍵転送コマンドのコマンドＡＰＤＵとレスポンスＡＰＤＵを示したものである。前述のように、共有鍵転送コマンドのコマンドＡＰＤＵ３１０のＣＬＡバイト３１５とＩＮＳコード３１６にはあらかじめアプレットごとに登録された転送コマンド３１１の値を設定する。そのため、管理テーブル１３６から当該アプレット用の転送コマンド１３８を読み出す。
【００６５】
共有鍵転送コマンドのコマンドＡＰＤＵ３１０では、前回の設定結果をＩＣカードチップ１５０に通知するため、Ｐ１バイト３１７とＰ２バイト３１８に特殊な値を設定する。００００ｈは前回の設定にエラーがないことを意味する。８０ＸＸｈは前回の設定にエラーが発生したことを意味する。なお、ＸＸはエラー内容を示す１６進コードである。エラーの場合、アクティブなセキュアデータブロックへのホスト機器１６０によるアクセスは許可されない。また、コマンドＡＰＤＵ３１０は入力データＤａｔａＩｎ３１９に乱数３１４を含む。この乱数は共有鍵Ｋｓを転送する際にアプレットが改ざん防止のために付加する署名を計算するときに使う初期化ベクトルとなる。なお、Ｌｃバイト３１３には、乱数３１４の長さを設定する。
【００６６】
ＩＣカードチップ１５０は、共有鍵転送コマンドのコマンドＡＰＤＵに対して、図３（ｃ）のような先頭バイト３２１が２９ｈのレスポンスＡＰＤＵ３２０を返信する。ＩＣカードのアプレットは、このレスポンスＡＰＤＵ３２０の先頭から３バイト目以降を用いて、共有鍵Ｋｓの値、その鍵のアルゴリズム、認証されたホスト機器１６０がアクセス可能なレコード番号範囲をコントローラチップ１２０に送信する。共有鍵Ｋｓの値およびその鍵のアルゴリズムは第３者に盗聴される危険を回避するため、一緒に転送鍵Ｋｔで暗号化されている。図において暗号化された共有鍵３２４はそれを示している。また、認証されたホスト機器１６０がアクセス可能なレコード番号範囲はアクセス情報３２３で示される。この情報は秘匿すべきものではないので平文のままである。
【００６７】
このアクセス情報３２３と暗号化された共有鍵３２４は、第３者による改ざんが許されないので転送鍵Ｋｔにより計算された署名３２５が末尾に付加される。先頭から２バイト目３２２には、アクセス情報３２３、暗号化された共有鍵３２４、署名３２５の合計の長さＬｋを設定する。なお、上記の暗号化や署名に用いられる転送鍵Ｋｔはアプレットごとに管理されており、同じ鍵は図１の管理テーブル１３６内の転送鍵１３９にも登録されている。コントローラチップ１２０は転送鍵１３９から転送鍵Ｋｔを取得して共有鍵Ｋｓの復号や署名検証を行う。
【００６８】
１回目の共有鍵転送直前の（つまり、最初に発行される）共有鍵転送コマンドのコマンドＡＰＤＵは、図３（ｂ）において、Ｐ１バイト３１７とＰ２バイト３１８には、００００ｈを設定する。
【００６９】
アクセスエラー時にアクセス結果３１２に設定する８０ＸＸｈにおいて、エラー内容を示すコードＸＸの例を以下に示す。
【００７０】
ＸＸ＝０１は、アクセス情報３２３で指定されたレコード番号がアクセス可能な範囲外であるエラーを意味する。
【００７１】
ＸＸ＝０２は、フラッシュメモリチップ１３０が故障などにより利用できないエラーを意味する。
【００７２】
ＸＸ＝０３は、先頭バイト３２１の値が２９ｈでないエラーを意味する。
【００７３】
ＸＸ＝０４は、先頭から２バイト目３２２の値が不正であるエラーを意味する。
【００７４】
ＸＸ＝０５は、署名３２５の検証に失敗したというエラーを意味する。
【００７５】
以下、図４を参照しながら、ＩＣカードチップ１５０内のアプレットが、コントローラチップ１２０への共有鍵設定を開始するときの処理の流れ、および共有鍵転送コマンドによって鍵を転送するときの処理の流れを説明する。
【００７６】
第３コマンドはＩＣカードアプレットによる共有鍵設定の引き金となるＩＣカードコマンドであり、ホスト機器１６０は第３コマンドをセキュアライトコマンドによりＭＭＣ１１０に送信する（ステップ４０１）。コントローラチップ１２０は、第３コマンドのコマンドＡＰＤＵを抽出し、ＩＣカードコマンドとしてＩＣカードチップ１５０に送信する（ステップ４０４）。
【００７７】
ＩＣカードチップ１５０は、そのＩＣカードコマンドを受信し（ステップ４０５）、アクセスできるセキュアデータブロックの選択を要求するＩＣカードレスポンス３００を作成し、それを返信する（ステップ４０６）。コントローラチップ１２０は、このレスポンスを受信し、そのＳＷ１バイト３０５とＳＷ２バイト３０６が９０ＦＦｈであるかを調べる（ステップ４０７）。９０ＦＦｈでないならばステップ４０８に移る。９０ＦＦｈであるならば、先頭バイト３０１が１９ｈであるかを調べる（ステップ４１２）。１９ｈでないならばステップ４２０に移る。１９ｈであるならば、管理テーブル１３６がロックされているか調べる（ステップ４１３）。アンロックされているならばステップ４０８に移る。ロックされているならば、ＡＩＤ３０３で管理テーブル１３６上のＡＩＤ１３７を検索する（ステップ４１４）。一致するＡＩＤを検出したならば（ステップ４１５）、コントローラチップ１２０はブロック選択要求を承認し、ステップ４１６に移る。検出しなければブロック選択要求を却下し、ステップ４０８に移る。
【００７８】
ステップ４１６では、検出したＡＩＤ１３７に対応するセキュアデータブロックを選択し、それをアクティブにする。さらに、対応する転送コマンド１３８を取得する（ステップ４１７）。また、対応する転送鍵１３９を取得する（ステップ４１８）。そして、図３（ｂ）に示す共有鍵転送コマンドのための乱数を生成する（ステップ４１９）。その後、ステップ４０４に戻り、ＩＣカードチップ１５０に共有鍵転送コマンドを発行する。ＩＣカードチップ１５０は、そのＩＣカードコマンドを受信し（ステップ４０５）、共有鍵Ｋｓを転送するＩＣカードレスポンス３２０を作成し、それを返信する（ステップ４０６）。
【００７９】
ステップ４２０では、ＩＣカードレスポンス３２０において先頭バイト３２１が２９ｈであるかを調べる。２９ｈでないならばステップ４０８に移る。２９ｈであるならば、アクティブなセキュアデータブロックが存在するかを調べる（ステップ４２１）。存在しないならばステップ４０８に移る。存在するならば、暗号化された共有鍵３２４をステップ４１８で取得した転送鍵Ｋｔで復号し、共有鍵Ｋｓの値とそのアルゴリズム情報を復元する（ステップ４２２）。そして、アクセス情報３２３を取得してコントローラチップ１２０内部のＲＡＭに保持する（ステップ４２３）。
【００８０】
次に、署名３２５をステップ４１８で取得した転送鍵Ｋｔで検証する（ステップ４２４）。検証に成功したならば、アルゴリズム情報に基づいて暗号処理回路１２１をセットアップし、鍵レジスタ１２３に共有鍵Ｋｓを設定し（ステップ４２５）、ホスト機器１６０によるセキュアデータブロックへのアクセスに備える。そして、図３（ｂ）に示す共有鍵転送コマンドのために“設定成功”の結果を設定し（ステップ４２６）、ステップ４１９に遷移する。一方、ステップ４２４の検証に失敗したならば、共有鍵転送コマンドのために“設定失敗”の結果を設定し（ステップ４２６）、ステップ４１９に遷移する。
【００８１】
その後、ステップ４０４に戻り、コントローラチップ１２０はＩＣカードチップ１５０に再度共有鍵転送コマンドを発行する。ＩＣカードチップ１５０は、そのＩＣカードコマンドを受信し（ステップ４０５）、共有鍵設定の結果をホスト機器１６０に伝達するＩＣカードレスポンスを作成し、これを返信する（ステップ４０６）。なお、このレスポンスのＳＷ１とＳＷ２には９０ＦＦｈ以外を設定し、ステップ４０７からすぐにステップ４０８に遷移するようにする。
【００８２】
第３レスポンスは、ステップ４０８に到達した時点でＩＣカードチップ１５０から最後に受信したＩＣカードレスポンスである。ホスト機器１６０はセキュアリードコマンドにより第３レスポンスを受信する（ステップ４０９）。第３レスポンスが共有鍵設定の結果を含んでいるならば、ホスト機器１６０はそれを見て共有鍵Ｋｓが設定されたか否かを確認する（ステップ４１０）。
【００８３】
ホスト機器１６０は、以上のように共有鍵Ｋｓがコントローラチップ１２０内部に設定されたことを確認した後、セキュアデータブロックへのアクセスを実行する。以下、図７および図８を参照しながら、ホスト機器１６０がセキュアデータブロックへライト／リードアクセスするときの処理の流れを説明する。
【００８４】
第４コマンドはホスト機器１６０がセキュアデータブロックへライトアクセスしようとして発行するコマンドであり、図８（ａ）のようにそのＤａｔａＩｎ８００はライト対象のレコードアドレス８０１、ライトしたいデータを共有鍵Ｋｓで暗号化されたライトデータ８０２を含んでいる。またＤａｔａＩｎ８００の末尾にはレコードアドレスとライトデータに対する署名８０３が付加されている。これにより、第３者によるレコードアドレス８０１の改ざんが検知可能となり、ライトデータ８０２の解読も不可能となる。ホスト機器１６０は共有鍵Ｋｓを利用してこのような第４コマンドを作成し、セキュアライトコマンドによりＭＭＣ１１０に送信する（ステップ７０１）。
【００８５】
コントローラチップ１２０は第４コマンドに含まれるライト対象レコードアドレス８０１を見て、共有鍵設定時にＲＡＭに保持したアクセス情報の示すレコード番号範囲と照合し、アクセス許容範囲を越えていないことを確認する（ステップ７０２）。越えていたらライト結果を“エラー”として、ステップ７０７に遷移する。一方、越えていないならば、鍵レジスタに保持している共有鍵Ｋｓで第４コマンドに含まれるライトデータ８０２を復号する（ステップ７０３）。
【００８６】
そして、同じくその共有鍵Ｋｓで第４コマンドに含まれる署名８０３を検証する（ステップ７０４）。検証に失敗したならばライト結果を“エラー”として、ステップ７０７に遷移する。一方、検証に成功したならば、８０２から復元されたデータをさらにデータ暗号鍵Ｋｄ１２２で暗号化し、フラッシュメモリ上のアクティブなセキュアデータブロック内の指定レコードにそのデータをライトする（ステップ７０５，７０６）。ライトが正常に実行されたらライト結果を“成功”としてステップ７０７に遷移する。
【００８７】
ステップ７０７では、ライト結果を含むレスポンスＡＰＤＵを第４レスポンスとしてセキュアリードコマンドによりホスト機器１６０に送信する。ホスト機器１６０は第４レスポンスを受信し（ステップ７０８）、ライトアクセス処理は完了する。
【００８８】
第５コマンドはホスト機器１６０がセキュアデータブロックへリードアクセスしようとして発行するコマンドであり、図８（ｂ）のようにそのＤａｔａＩｎ８１０はリード対象のレコードアドレス８１１を含んでいる。ホスト機器１６０は第５コマンドをセキュアライトコマンドによりＭＭＣ１１０に送信する（ステップ７１１）。
【００８９】
コントローラチップ１２０は第５コマンドに含まれるリード対象レコードアドレス８１１を見て、共有鍵設定時にＲＡＭに保持したアクセス情報の示すレコード番号範囲と照合し、アクセス許容範囲を越えていないことを確認する（ステップ７１２）。越えていたらリード結果を“エラー”として、ステップ７１７に遷移する。一方、越えていないならば、フラッシュメモリ上のアクティブなセキュアデータブロック内の指定レコードからデータをリードする（ステップ７１３，７１４）。そして、データ暗号鍵Ｋｄ１２２でこれを復号してリードしたいデータを復元する。
【００９０】
この後、ステップ７１５において、コントローラチップ１２０はホスト機器１６０に返信する第５レスポンスを作成する。ここで作成する第５レスポンスはリード結果が“成功”であることを示すレスポンスであり、図８（ｂ）のようにそのＤａｔａＯｕｔ８２０に暗号化されたリードデータ８２２、リード対象のレコードアドレス８２１を含む。またＤａｔａＯｕｔ８２０の末尾にはレコードアドレス８２１とリードデータ８２２に対する署名８２３が付加されている。これにより、第３者によるレコードアドレス８２１の改ざんが検知可能となり、リードデータ８２２の解読も不可能となる。この署名作成とリードデータの暗号化は、鍵レジスタに保持している共有鍵Ｋｓを用いる。
【００９１】
一方、ステップ７１７においても、コントローラチップ１２０はホスト機器１６０に返信する第５レスポンスを作成する。ここで作成する第５レスポンスはリード結果が“失敗”であることを示すレスポンスであり、そのＳＷ１やＳＷ２にはエラーコードを含む。
【００９２】
第５レスポンス作成後、これをセキュアリードコマンドによりホスト機器１６０に送信する（ステップ７１６または７１７）。ホスト機器１６０は第５レスポンスを受信する（ステップ７１８）。ホスト機器１６０は共有鍵Ｋｓを利用して第５レスポンスに含まれる８２２からリードデータを復元し、署名８２３を検証することにより、安全かつ確実にリードデータを取得することができる。以上のように、リードアクセス処理は完了する。
【００９３】
以下、管理エリア１３２に関するアクセスについて説明する。ホスト機器１６０が管理エリア１３２の情報にアクセスできるように、ＭＭＣ１１０は、以下の４つの管理コマンドに応じることができる。
【００９４】
すなわち、（１）アプレット登録コマンド、（２）アプレット登録解除コマンド、（３）管理テーブルロックコマンド、（４）管理テーブルアンロックコマンドの４つである。（１）は、管理テーブル１３６にセキュアデータエリア１３３を利用するアプレットを登録し、アプレットが利用するセキュアデータブロックを割り当てるコマンド、（２）は、管理テーブル１３６からアプレットの登録情報を削除し、セキュアデータブロックの割り当てを解除するコマンド、（３）は、管理テーブル１３６上の登録情報の変更を禁止するコマンド、（４）は、管理テーブル上１３６の登録情報の変更を許可するコマンドである。
【００９５】
これらのコマンドは、一般のセキュリティ処理と同じくセキュアライトコマンドとセキュアリードコマンドのプロトコルによって実施され、コントローラチップ１２０によって処理される。また、その際に入出力されるセキュアライトデータとセキュアリードデータに含まれるＡＰＤＵ（図６における６０２や６１２）を利用して各処理（登録、登録解除、ロック、アンロック）に必要な情報を交換する。
【００９６】
アプレット登録コマンドとアプレット登録解除コマンドでは、ＤａｔａＩｎ６０６にＡＩＤを設定する。このＡＩＤによって登録したいアプレットを指定する。ＡＩＤとセキュアデータブロックとをどのように対応付けるかはコントローラチップ１２０が決定する。ホスト機器１６０はセキュアデータブロックを直接指定できない。
【００９７】
管理テーブルロックコマンドでは、ＤａｔａＩｎ６０６に２５５バイトのパスワードを設定する。そのパスワードはパスワードエリア１３５に設定され、ロックフラグ１３４がＦＦｈ（ロック状態）になる。これにより、アプレット登録コマンドとアプレット登録解除コマンドが無効になる。すでにロック状態だった場合は、そのパスワードはパスワードエリア１３５に設定されず、アプレット登録コマンドとアプレット登録解除コマンドは有効のままとなる。
【００９８】
管理テーブルアンロックコマンドでは、ＤａｔａＩｎに２５５バイトのパスワードを設定する。そのパスワードはパスワードエリア１３５に設定された値と一致比較され、一致したならばロックフラグ１３４が００ｈ（アンロック状態）になる。これにより、アプレット登録コマンドとアプレット登録解除コマンドが有効になる。すでにアンロック状態だった場合は、アプレット登録コマンドとアプレット登録解除コマンドは無効のままとなる。
【００９９】
アプレット登録コマンドとアプレット登録解除コマンドが有効な状態（アンロック状態）では、パスワードを知らないホスト機器１６０によって管理テーブル１３６の情報が不正に変更され、あるアプレットが、それ自身がアクセス可能なセキュアデータブロック以外のセキュアデータブロックをライト／リードするという不正アクセスが発生し得る。そこで、コントローラチップ１２０は、ロックフラグ１３４の値が００ｈ（アンロック状態）では、ＩＣカードチップ１５０内で選択されているアプレットがセキュアデータエリアへアクセスするのを許可しない。ホスト機器１６０は、管理テーブル１３６の登録情報の設定／変更後は、管理テーブルロックコマンドにより必ずロックフラグ１３４をＦＦｈに設定しなければならない。
【０１００】
図５を参照しながら、上記４つの管理コマンドの処理の流れを説明する。
【０１０１】
第６コマンドはホスト機器１６０が管理エリア１３２の情報にアクセスしようとして発行するコマンドであり、ホスト機器１６０は第６コマンドをセキュアライトコマンドによりＭＭＣ１１０に送信する（ステップ５０１）。コントローラチップ１２０はそれが管理コマンドであるかを調べる（ステップ５０４）。管理コマンドならばステップ５０７に移る。一方、管理コマンドでないならば、そのコマンドＡＰＤＵ６０２を用いてＩＣカードチップ１５０にＩＣカードコマンドを発行し（ステップ５０５）、ＩＣカードチップ１５０からそのレスポンスを受信し（ステップ５０６）、ステップ５２７に移る。
【０１０２】
ステップ５０７では、コントローラチップ１２０は、コマンドＡＰＤＵ６０２がアプレット登録コマンドを示すものかを調べる。アプレット登録コマンドならばステップ５１１に移る。さもなくば、それがアプレット登録解除コマンドを示すものかを調べる（ステップ５０８）。アプレット登録解除コマンドならばステップ５１２に移る。さもなくば、それが管理テーブルロックコマンドを示すものかを調べる（ステップ５０９）。管理テーブルロックコマンドならばステップ５１３に移る。さもなくば、それが管理テーブルアンロックコマンドを示すものかを調べる（ステップ５１０）。管理テーブルアンロックコマンドならばステップ５１４に移る。さもなくば、ステップ５２５に移る。
【０１０３】
ステップ５１１では、ロックフラグ１３４を見て、管理テーブル１３６がアンロック状態かを調べる。ロック状態ならばステップ５２５に移る。アンロック状態ならば、ＤａｔａＩｎ６０６内のＡＩＤと同一のものが既に登録されているＡＩＤ１３７の中に存在するかを調べる（ステップ５１５）。存在していればステップ５２５に移る。存在しなければ、管理テーブル１３６上に空きがあるか（つまり、まだ割り当てられていないセキュアデータブロックが存在するか）を調べる（ステップ５１６）。空きがなければステップ５２５に移る。空きがあれば、そのセキュアデータブロックに対応するＡＩＤ１３７と転送コマンド１３８と転送鍵１３９に、ＤａｔａＩｎ６０６に含まれるＡＩＤと転送コマンドと転送鍵Ｋｔを設定する（ステップ５１７）。これにより、ＡＩＤで示されたアプレットがそのセキュアデータブロックの利用権を獲得する。そして、ステップ５２６に移る。
【０１０４】
ステップ５１２では、ロックフラグ１３４を見て、管理テーブル１３６がアンロック状態かを調べる。ロック状態ならばステップ５２５に移る。アンロック状態ならば、ＤａｔａＩｎ６０６内のＡＩＤで、登録されている全てのＡＩＤ１３７の中を検索する（ステップ５１８）。一致するＡＩＤを検出したならば（ステップ５１９）、管理テーブル１３６上からそのＡＩＤ１３７とそれに対応する転送コマンド１３８と転送鍵１３９を削除する（ステップ５２０）。一致するＡＩＤを検出しなければステップ５２５に移る。これにより、ＡＩＤで示されたアプレットがそのセキュアデータブロックの利用権を失う。そして、ステップ５２６に移る。
【０１０５】
ステップ５１３では、ロックフラグ１３４を見て、管理テーブル１３６がアンロック状態かを調べる。ロック状態ならばステップ５２５に移る。アンロック状態ならば、ロックフラグ１３４にＦＦｈを設定し（ステップ５２１）、管理テーブル１３６をロック状態にする。ＤａｔａＩｎ６０６内のパスワードをパスワードエリア１３５に設定する（ステップ５２２）。そして、ステップ５２６に移る。
【０１０６】
ステップ５１４では、ロックフラグ１３４を見て、管理テーブル１３６がアンロック状態かを調べる。アンロック状態ならばステップ５２５に移る。ロック状態ならば、ＤａｔａＩｎ６０６内のパスワードがパスワードエリア１３５に設定したものと一致するかを調べる（ステップ５２３）。一致しないならば、ステップ５２５に移る。一致するならば、ロックフラグ１３４に００ｈを設定し（ステップ５２４）、管理テーブル１３６をアンロック状態にする。そして、ステップ５２６に移る。
【０１０７】
ステップ５２５では、管理コマンドの処理でエラーが発生したことをホスト機器１６０に示すため、エラー内容を示すステータスコードを含むレスポンスＡＰＤＵ６１２を作り、ステップ５２７に移る。ステップ５２６では、管理コマンドの処理が正常に終了したことをホスト機器１６０に示すため、正常終了（例えば、９０００ｈ）というステータスコードを含むレスポンスＡＰＤＵ６１２を作り、ステップ５２７に移る。
【０１０８】
ステップ５２７では、レスポンスＡＰＤＵ６１２を第６レスポンスとしてセキュアリードコマンドによりホスト機器１６０へ送信する。そして、ホスト機器１６０は第６レスポンスを受信する（ステップ５２８）。
【０１０９】
以上説明したように、本実施の形態によれば、ＩＣカードチップ１５０のアプレットにより認証された外部のホスト機器１６０が、そのアプレットに割り当てられたフラッシュメモリチップ１３０のメモリエリアのデータを読み書きする場合に、当該データをＩＣカードチップ１５０のアプレットを経由させずに効率よく高速に転送することができる。
【０１１０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１１１】
例えば、本発明の適用に際しては、ＩＣカードチップ１５０がコントローラチップ１２０に共有鍵Ｋｓの転送を行う手段として、ＳＷ１バイト３０５，３２７とＳＷ２バイト３０６，３２８に９０ＦＦｈという専用のステータス値を設定することを示したが、あくまでこれは一例であり、これ以外の手段で転送を実行してもよい。例えば、９０ＦＦｈ以外のステータスコードでもよいし、ＤａｔａＯｕｔ３０４，３２６内に専用のパスワード等を含ませてもよい。
【０１１２】
また、本発明の適用に際しては、ＭＭＣ１１０が、新たな（あるいは前記の）管理コマンドに応じて、セキュアデータエリア１３３のサイズを変化させることができる機能を有してもよい。また、新たな（あるいは前記の）管理コマンドに応じて、セキュアデータブロックの分割数（上述では分割数＝４）を変化させることができる機能を有してもよい。また、新たな（あるいは前記の）管理コマンドに応じて、各セキュアデータブロックのサイズを個別に変化させることができる機能を有してもよい。
【０１１３】
また、本発明の適用に際しては、上述のパスワードの長さは２５５バイトでなくてもよい。ただし、安全上、このパスワードは長いほうが好ましい。
【０１１４】
また、本発明の適用に際しては、アプレット登録解除コマンドで開放されたセキュアデータブロックに、それまでこのブロックを利用していたアプレットに関する機密データが残留し、次にそのブロックの使用権を得た他のアプレット、またはそのアプレットにより認証されたホスト機器１６０がその機密データを取得する危険性がある。そこで、安全上、登録解除後に残留したデータを消去することが好ましい。その消去の実施は、上述のアプレット登録解除コマンドの処理中に行ってもよいし、ＭＭＣ１１０がホスト機器１６０からの新たな管理コマンドに応じて行ってもよい。
【０１１５】
また、本発明の適用に際しては、ホスト機器１６０がセキュアデータブロックへライト／リードアクセスするときの第４コマンドと第５コマンドは、ＩＣカードコマンドのコマンドＡＰＤＵ形式でなくてもよい。また、セキュアライトコマンドにより送信しなくてもよい。同様に、第４レスポンスと第５レスポンスは、ＩＣカードコマンドのレスポンスＡＰＤＵ形式でなくてもよい。また、セキュアリードコマンドにより受信しなくてもよい。さらに、第４コマンドのＤａｔａＩｎ８００の暗号と署名に利用する共有鍵Ｋｓは同じ値でなくてもよい。同様に、第５レスポンスのＤａｔａＯｕｔ８２０の暗号と署名に利用する共有鍵Ｋｓは同じ値でなくてもよい。すなわち、図３（ｃ）のレスポンスＡＰＤＵ３２０の中の暗号化された共有鍵３２４は、暗号用共有鍵と署名用共有鍵の２種類を含んでいてもよく、コントローラチップ１２０内の鍵レジスタ１２３は、暗号用鍵レジスタと署名用鍵レジスタの２種類で構成されていてもよい。
【０１１６】
また、本発明は、不揮発性記憶媒体、そのコントローラチップ、およびセキュリティ処理に特化したマイコンチップを搭載している記憶装置ならば、カード形式以外の記憶装置（ハードディスクドライブ等）にも適用可能である。
【産業上の利用可能性】
【０１１７】
本発明は、セキュリティ機能を搭載した記憶装置に係り、特に、フラッシュメモリチップとコントローラチップとＩＣカードチップを有するメモリカード等に適用して有効であり、さらにハードディスクドライブ等にも適用することが可能である。
【図面の簡単な説明】
【０１１８】
【図１】本発明を適用した一実施の形態のＭＭＣの内部構成の一例を示す図である。
【図２】本発明を適用した一実施の形態において、ホスト機器とＩＣカードチップのアプレットとが相互に認証する中で同じ鍵を共有する処理の一例を示すフローチャートである。
【図３】（ａ）（ｂ）（ｃ）は本発明を適用した一実施の形態において、コントローラチップとＩＣカードチップとの間のＩＣカードコマンドおよびＩＣカードレスポンスの構造の一例を示す図である。
【図４】本発明を適用した一実施の形態において、ＩＣカードチップからの要求に応じて共有鍵の設定を実行する処理の一例を示すフローチャートである。
【図５】本発明を適用した一実施の形態において、フラッシュメモリチップ上の管理エリアに対するアプレット登録などを行う管理コマンドの処理の一例を示すフローチャートである。
【図６】本発明を適用した一実施の形態において、セキュアライトデータとセキュアリードデータの構成の一例を示す図である。
【図７】本発明を適用した一実施の形態において、認証されたホスト機器がＩＣカードチップのアプレットの管理するセキュアデータブロックにライト／リードアクセスする処理の一例を示すフローチャートである。
【図８】（ａ）（ｂ）は本発明を適用した一実施の形態において、認証されたホスト機器がＩＣカードチップのアプレットの管理するセキュアデータブロックにライト／リードアクセスするときの転送データの構成の一例を示す図である。
【符号の説明】
【０１１９】
１１０…ＭＭＣ、１２０…コントローラチップ、１２１…暗号処理回路、１２２…データ暗号鍵Ｋｄ、１２３…鍵レジスタ、１３０…フラッシュメモリチップ、１３１…ノーマルデータエリア、１３２…管理エリア、１３３…セキュアデータエリア、１３３ａ〜１３３ｄ…セキュアデータブロック、１３４…ロックフラグ、１３５…パスワードエリア、１３６…管理テーブル、１３７…ＡＩＤ、１３８…転送コマンド、１３９…転送鍵、１４０…ＭＭＣ外部端子、１５０…ＩＣカードチップ、１５１…ＣＰＵ、１５２…ＥＥＰＲＯＭ、１５３，１５４…アプレット、１５５，１５６…ＡＩＤ、１５７，１５８…転送鍵Ｋｔ、１６０…ホスト機器。
【図１】
2007004522.tif 000003
【図２】
2007004522.tif 000004
【図３】
2007004522.tif 000005
【図４】
2007004522.tif 000006
【図５】
2007004522.tif 000007
【図６】
2007004522.tif 000008
【図７】
2007004522.tif 000009
【図８】
2007004522.tif 000010