(57)【特許請求の範囲】
【請求項１】
ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、
耐タンパ機能を有するＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ）カード部と、フラッシュメモリ部とを備え、
前記ＩＣカード部は、
耐タンパ記憶部と、
前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得部と、
前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御部と、
前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部と、
前記実行対象のアプリケーションプログラムを復号化し、実行する実行部とを有する
メモリカード。
【請求項２】
前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量以下である場合、前記アプリケーションプログラムを前記耐タンパ記憶部に格納し、前記暗号化時のサイズが前記空き容量を超える場合、前記アプリケーションプログラムを前記フラッシュメモリ部に格納する
請求項１に記載のメモリカード。
【請求項３】
前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる
請求項２に記載のメモリカード。
【請求項４】
前記実行部は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる
請求項１に記載のメモリカード。
【請求項５】
前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズと暗号化時のサイズとの合計が前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを前記耐タンパ記憶部に複写する
請求項１に記載のメモリカード。
【請求項６】
前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを復号化して、前記耐タンパ記憶部に格納する
請求項１に記載のメモリカード。
【請求項７】
前記移動制御部は、アプリケーションプログラムの実行履歴に基づいて、アプリケーションプログラム毎のアクセス履歴管理情報を生成し、
前記ＩＣカード部は、更に、前記アクセス履歴管理情報に従って、前記フラッシュメモリ部に移動させるアプリケーションプログラムを決定する移動判定部を有する
請求項１に記載のメモリカード。
【請求項８】
前記プログラム取得部は、前記ホスト機器固有の情報を取得し、
前記ＩＣカード部は、更に、
前記取得したホスト機器固有の情報を利用して暗号化鍵を生成する鍵生成部と、
前記耐タンパ記憶部から前記フラッシュメモリ部への移動対象のアプリケーションプログラムを前記暗号化鍵により暗号化する追加暗号化部とを有し、
前記移動制御部は、暗号化終了後に前記暗号化鍵を削除し、前記暗号化鍵により二重に暗号化されている前記移動対象のアプリケーションプログラムを前記フラッシュメモリ部へ移動させる
請求項１に記載のメモリカード。
【請求項９】
前記ＩＣカード部は、更に、前記フラッシュメモリ部に格納されている前記暗号化鍵により二重に暗号化されているアプリケーションプログラムを前記耐タンパ記憶部へ複写する場合、複写対象の前記アプリケーションプログラムを前記鍵生成部が生成した暗号化鍵で復号化する追加復号化部を有し、
前記移動制御部は、復号化終了後に前記暗号化鍵を削除し、複写対象の前記アプリケーションプログラムを前記耐タンパ記憶部に格納する
請求項８に記載のメモリカード。
【請求項１０】
ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードにおけるアプリケーションプログラムを保持する方法であって、
前記メモリカードは、耐タンパ機能を有するＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ）カード部と、フラッシュメモリ部とを備え、前記ＩＣカード部は耐タンパ記憶部を有し、
前記方法は、
前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得ステップと、
前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御ステップと、
前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御ステップと、
前記実行対象のアプリケーションプログラムを復号化し、実行する実行ステップと
を含むアプリケーションプログラム保持方法。
【請求項１１】
ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードにおけるアプリケーションプログラムを保持するための保持プログラムであって、
前記メモリカードは、耐タンパ機能を有するＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ）カード部と、フラッシュメモリ部とを備え、前記ＩＣカード部は耐タンパ記憶部を有し、
前記保持プログラムは、
前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得ステップと、
前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御ステップと、
前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御ステップと、
前記実行対象のアプリケーションプログラムを復号化し、実行する実行ステップと
をコンピュータに実行させるための保持プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムを保持するメモリカードに関する。
【背景技術】
【０００２】
ｓｍａｒｔ  Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ（以下「ＳＤカード」という）をはじめとするＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ）カード機能が搭載されたセキュアメモリカードの普及に伴い、使用されるアプリケーションプログラムの種類や利用者数が今後増加していくと予想される。
【０００３】
図１（Ａ）は、一般的なセキュアメモリカードのハードウェア構成を示す図である。図１（Ａ）に示すように、セキュアメモリカード１００は、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）１０３と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）１０２と、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）１０４と、不揮発性メモリ群１０１とを備える。ＲＯＭ１０３はアプリケーションプログラムを記憶する。ＲＡＭ１０２はアプリケーションプログラムの実行の際に用いられるデータを一時的に記憶する。ＣＰＵ１０４はアプリケーションプログラムに従って各種のコマンドに対する処理を実行する。不揮発性メモリ群１０１はメモリカードの外部からダウンロードされるアプリケーションプログラムを記憶する。
【０００４】
不揮発性メモリ群１０１は、耐タンパモジュール（ＴＲＭ：Ｔａｍｐｅｒ  Ｒｅｓｉｓｔａｎｔ  Ｍｏｄｕｌｅ）１０７内にあるＦｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ（ＦｅＲＡＭ）１０６と、ＴＲＭ１０７外にあるセキュアフラッシュ１０８と、ＴＲＭ１０７外にあるフラッシュメモリ１０９とから構成される。セキュアフラッシュ１０８は、ＴＲＭ１０７の機能を利用してセキュリティ強度が高められたフラッシュメモリである。
【０００５】
図１（Ｂ）は、不揮発性メモリ群１０１を構成する３つの不揮発性メモリのセキュリティ強度を示す図である。図１（Ｂ）に示すように、ＴＲＭ１０７内にあるＦｅＲＡＭ１０６のセキュリティ強度が最も強く、その次にセキュアフラッシュ１０８のセキュリティ強度が強く、フラッシュメモリ１０９のセキュリティ強度が最も弱い。
【０００６】
サービスプロバイダからダウンロードされるアプリケーションプログラムは、通常はＴＲＭ１０７領域に保存される。ＴＲＭ１０７領域の容量はフラッシュメモリ１０９に比べて非常に小さいため、ＴＲＭ１０７領域に保存しきれないアプリケーションプログラムは、ユーザが削除する必要がある。
【０００７】
そこで、アプリケーションプログラムを削除することなく、ＴＲＭ１０７領域に格納されているアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を確保した状態で、セキュアメモリカード１００内のフラッシュメモリ１０９に移動させ、必要に応じてＴＲＭ１０７領域に復帰させることにより、より多くのアプリケーションプログラムを一枚のセキュアメモリカード１００内に保存できるようにする仕組みが必要となってきている。
【０００８】
特許文献１には、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、そのアプリケーションプログラムの保存領域を振り分ける発明が開示されている。
【特許文献１】特開２００２−２２９８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１に示される従来技術では、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、ダウンロード時に、アプリケーションプログラムをＴＲＭ領域とフラッシュメモリとのいずれかに振り分けて保存する。フラッシュメモリにアプリケーションプログラムを保存する場合、暗号化された状態でダウンロードされたアプリケーションプログラムを復号化した後、その復号化したアプリケーションプログラムを、ＴＲＭ領域にあらかじめ格納されている秘密情報キーを用いて暗号化し、フラッシュメモリに保存する。つまり、従来技術では、セキュアメモリカード内のセキュリティレベルが最も低いフラッシュメモリにアプリケーションプログラムを保存する場合、そのアプリケーションプログラムをセキュアメモリカード内の秘密情報キーを用いて暗号化する。そのため、アプリケーションプログラムを提供するサービスプロバイダが要求するセキュリティ強度を保った状態で、ダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができない。
【００１０】
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明のメモリカードは、ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、耐タンパ機能を有するＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ）カード部と、フラッシュメモリ部とを備え、前記ＩＣカード部は、耐タンパ記憶部と、前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得部と、前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御部と、前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部と、前記実行対象のアプリケーションプログラムを復号化し、実行する実行部とを有する。
【００１２】
これにより、本発明のメモリカードは、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができる。
【００１３】
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量以下である場合、前記アプリケーションプログラムを前記耐タンパ記憶部に格納し、前記暗号化時のサイズが前記空き容量を超える場合、前記アプリケーションプログラムを前記フラッシュメモリ部に格納する。
【００１４】
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
【００１５】
例えば、前記実行部は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
【００１６】
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズと暗号化時のサイズとの合計が前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを前記耐タンパ記憶部に複写する。
【００１７】
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを復号化して、前記耐タンパ記憶部に格納する。
【００１８】
例えば、前記移動制御部は、アプリケーションプログラムの実行履歴に基づいて、アプリケーションプログラム毎のアクセス履歴管理情報を生成し、前記ＩＣカード部は、更に、前記アクセス履歴管理情報に従って、前記フラッシュメモリ部に移動させるアプリケーションプログラムを決定する移動判定部を有してもよい。
【００１９】
例えば、前記プログラム取得部は、前記ホスト機器固有の情報を取得し、前記ＩＣカード部は、更に、前記取得したホスト機器固有の情報を利用して暗号化鍵を生成する鍵生成部と、前記耐タンパ記憶部から前記フラッシュメモリ部への移動対象のアプリケーションプログラムを前記暗号化鍵により暗号化する追加暗号化部とを有し、前記移動制御部は、暗号化終了後に前記暗号化鍵を削除し、前記暗号化鍵により二重に暗号化されている前記移動対象のアプリケーションプログラムを前記フラッシュメモリ部へ移動させてもよい。
【００２０】
例えば、前記ＩＣカード部は、更に、前記フラッシュメモリ部に格納されている前記暗号化鍵により二重に暗号化されているアプリケーションプログラムを前記耐タンパ記憶部へ複写する場合、複写対象の前記アプリケーションプログラムを前記鍵生成部が生成した暗号化鍵で復号化する追加復号化部を有し、前記移動制御部は、復号化終了後に前記暗号化鍵を削除し、複写対象の前記アプリケーションプログラムを前記耐タンパ記憶部に格納してもよい。
【００２１】
本発明は、本発明のメモリカードの特徴的な構成手段をステップとするアプリケーションプログラム保持方法として実現したり、それらのステップをコンピュータに実行させる保持プログラムとして実現したり、上記特徴的な構成手段を含む集積回路として実現することもできる。上記の保持プログラムは、ＣＤ−ＲＯＭ等の記録媒体や通信ネットワーク等の伝送媒体を介して流通させることもできる。
【発明の効果】
【００２２】
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することができる。
【００２３】
本発明により、多くのアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を保った状態で一枚のセキュアメモリカード内に保存することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明を実施するための最良の形態について、図面を参照して説明する。
【００２５】
（実施の形態１）
実施の形態１におけるシステム全体の概観を図２に示す。実施の形態１では、セキュアメモリカードがＳＤカードである場合を想定する。
【００２６】
図２に示すように、実施の形態１のＳＤカード２０３は、携帯電話等のホスト機器２０２とＳＤインタフェース（以下「ＳＤＩ／Ｆ」という）２０７を介して接続され、耐タンパ性モジュール（ＴＲＭ）２０４と、大容量不揮発性メモリ２０５と、ＳＤカードコントローラ部２０６とを備える。ホスト機器２０２は、携帯電話に限られず、ＳＤＩ／Ｆを持つ機器であるならば、どのような機器であってもよい。
【００２７】
図３は、一般的なセキュアメモリカードの概観図である。図３に示すように、セキュアメモリカード３０１は、内部不揮発性メモリ３０６を有するＴＲＭ３０４と、セキュア領域３０７、認証領域３０８、及び非認証領域３０９を有する大容量不揮発性メモリ３０５と、内部不揮発性メモリ３０６及びセキュア領域３０７に対してアクセスする内部ＣＰＵ３０３と、電子機器（リード／ライト（Ｒ／Ｗ）装置）の外部ＣＰＵ３００と通信して認証処理を行ない、認証した外部ＣＰＵ３００による認証領域３０８へのアクセスを許可する制御部３０２とを備える。
【００２８】
ＴＲＭ３０４の内部不揮発性メモリ３０６は、例えば、１バイト単位でデータの消去及び書き込みができるＥｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ（ＥＥＰＲＯＭ）である。大容量不揮発性メモリ３０５は、例えば、６４キロバイト等のブロック単位でのデータの消去と１バイト単位でのデータの書き込みとが可能なフラッシュメモリである。
【００２９】
外部ＣＰＵ３００は、非認証領域３０９に無条件でアクセスすることができる。外部ＣＰＵ３００は、認証領域３０８には、制御部３０２による認証が完了した場合にのみアクセスすることができる。しかし、外部ＣＰＵ３００は、セキュア領域３０７及び内部不揮発性メモリ３０６の存在を知ることができず、これらに直接アクセスすることはできない。セキュア領域３０７及び内部不揮発性メモリ３０６に対しては、内部ＣＰＵ３０３だけがアクセス可能である。
【００３０】
セキュア領域３０７と内部不揮発性メモリ３０６との違いは、内部不揮発性メモリ３０６がＴＲＭ３０４内に設けられているのに対し、セキュア領域３０７がＴＲＭ３０４外の大容量不揮発性メモリ３０５に設けられている点である。そのため、セキュア領域３０７は、内部不揮発性メモリ３０６に比べて大きい蓄積容量を持つことができる反面、セキュリティレベルでは、ＴＲＭ３０４内に設けられた内部不揮発性メモリ３０６に比べて低い。図３に示すように、これら４つの領域のセキュリティレベルは、非認証領域３０９が最も低く、認証領域３０８、セキュア領域３０７、内部不揮発性メモリ３０６の順に高くなっている。
【００３１】
図１（Ａ）の不揮発性メモリ群１０１と、図３との対比関係は以下の通りである。図１（Ａ）のＦｅＲＡＭ１０６が図３の内部不揮発性メモリ３０６に対応し、図１（Ａ）のセキュアフラッシュ１０８が図３のセキュア領域３０７に対応し、図１（Ａ）のフラッシュメモリ１０９が図３の認証領域３０８及び非認証領域３０９に対応する。
【００３２】
図４は、実施の形態１におけるＳＤカード２０３のブロック構成を示す図である。ＳＤカード２０３は、ＳＤ規格で規定されているＳＤカードコントローラ部２０６と、ＴＲＭ２０４と、大容量不揮発性メモリ２０５とを備える。ＳＤカードコントローラ部２０６は、ホスト機器２０２との間でデータの送受信を行なうインタフェース部であり、ＴＲＭ２０４は、耐タンパ機能が実装されているＩＣカード部である。大容量不揮発性メモリ２０５としては、例えばフラッシュメモリが用いられる。
【００３３】
ＴＲＭ２０４は、プログラム取得部４００と、プログラム管理部４０１と、履歴管理部４０２と、格納制御部４０３と、移動制御部４０４と、ＩＣカードＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）４０５と、ＲＡＭ４０６と、公開鍵記憶部４０７と、復号化部４０８と、実行部４０９とを有する。ＴＲＭ２０４は、更に、再読み込み部４１０と、削除部４１１とを有するが、それらは図４には示されていない。再読み込み部４１０及び削除部４１１は、図５を用いて後述する。
【００３４】
プログラム取得部４００は、サービスプロバイダからダウンロードされるアプリケーションプログラム４２０を、ＳＤカードコントローラ部２０６経由で取得する。ダウンロードされるアプリケーションプログラム４２０は、サービスプロバイダが要求するセキュリティ強度で暗号化されている。
【００３５】
プログラム管理部４０１は、ＲＡＭ４０６に保持されているアプリケーションプログラムや、大容量不揮発性メモリ２０５に保持されているアプリケーションプログラムを一意に識別するためのプログラムＩＤと、アプリケーションプログラムの保存先とを管理する。アプリケーションプログラムの保存先は、ＲＡＭ４０６又は大容量不揮発性メモリ２０５である。
【００３６】
履歴管理部４０２は、アプリケーションプログラムのアクセス履歴を管理する。
【００３７】
格納制御部４０３は、プログラム取得部４００によって取得されるアプリケーションプログラムをＲＡＭ４０６のプログラム記憶領域４０６ａに格納する。
【００３８】
移動制御部４０４は、移動対象のアプリケーションプログラムをＲＡＭ４０６のプログラム記憶領域４０６ａから大容量不揮発性メモリ２０５に移動させる。
【００３９】
ＲＡＭ４０６は、ホスト機器２０２からダウンロードされるアプリケーションプログラムをそのままの状態で、すなわち暗号化された状態で記憶するプログラム記憶領域４０６ａを有する。ＲＡＭ４０６は、復号化されたアプリケーションプログラムをも記憶する。すなわち、ＲＡＭ４０６は、プログラム記憶領域４０６ａに加え、プログラム記憶領域４０６ａから読み出されたアプリケーションプログラム４２１、又は大容量不揮発性メモリ２０５から読み出されたアプリケーションプログラム４２３を復号化するための領域（第２領域）を有している。復号化されたアプリケーションプログラム４２２は、ＲＡＭ４０６の第２領域に保持される。プログラム記憶領域４０６ａ及び第２領域は固定された領域ではない。
【００４０】
公開鍵記憶部４０７は、暗号化されているアプリケーションプログラムを復号化するための公開鍵を保持する。
【００４１】
復号化部４０８は、暗号化されているアプリケーションプログラムを、公開鍵記憶部４０７によって保持されている公開鍵で復号化する。
【００４２】
実行部４０９は、復号化処理されたアプリケーションプログラム４２２を実行する。
【００４３】
図５は、ＴＲＭ２０４における、アプリケーションプログラムの移動を実行する構成部のブロック図である。図５に示すように、ＴＲＭ２０４は、プログラム管理部４０１と、履歴管理部４０２と、格納制御部４０３と、移動制御部４０４と、実行部４０９と、再読み込み部４１０と、削除部４１１とを有する。移動制御部４０４は、時刻情報取得部５０３と、移動判定部５０５と、一時記憶部５０７とを有する。
【００４４】
時刻情報取得部５０３は、ＳＤＩ／Ｆ２０７を介して、ホスト機器２０２より時刻情報を取得する。時刻情報取得部５０３は、アプリケーションプログラムにアクセスする度に現在時刻を取得してもよい。時刻情報取得部５０３は、アプリケーションプログラムのダウンロード時にその時点での現在時刻を取得し、その後の経過時間はＳＤカード２０３内のＣＰＵのクロックから算出し、アプリケーションプログラムのダウンロード時の時刻に算出した経過時間を加算することにより、アプリケーションプログラムにアクセスする際の時刻を取得してもよい。時刻情報取得部５０３による現在時刻の取得方法は問わない。
【００４５】
一時記憶部５０７は、ダウンロード開始時に通知されるダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報を一時的に記憶する。
【００４６】
図６は、履歴管理部４０２によって管理される履歴管理情報５０９の例を示す図である。図６に示すように、履歴管理情報５０９は、アプリケーションプログラムを一意に識別するためのプログラムＩＤと、アプリケーションプログラムへの最終のアクセス日を示す最終アクセス日と、最終アクセス日の直前のアプリケーションプログラムへのアクセス日を示す前々回アクセス日と、前々回アクセス日から最終アクセス日までの経過日数を示すアクセス間隔との４項目から構成される。
【００４７】
図７は、プログラム管理部４０１によって管理されるプログラム管理情報５１０の例を示す図である。図７に示すように、プログラム管理情報５１０は、アプリケーションプログラムを一意に識別するためのプログラムＩＤと、アプリケーションプログラムの保存先と、アプリケーションプログラムの暗号化時のサイズと、アプリケーションプログラムの復号化時のサイズと、プログラム記憶領域４０６ａから大容量不揮発性メモリ２０５への移動対象に決定されたアプリケーションプログラムであることを示す移動フラグと、アプリケーションプログラムの実行時に実行対象のアプリケーションプログラムの復号化が完了していることを示す復号化済みフラグとから構成される。アプリケーションプログラムの保存先は、ＴＲＭ２０４（ＲＡＭ４０６）又は大容量不揮発性メモリ２０５である。プログラム記憶領域４０６ａから大容量不揮発性メモリ２０５への移動対象に決定されたアプリケーションプログラムの移動フラグには、“１”（ＯＮ）が記載される。復号化が完了しているアプリケーションプログラムの復号化済みフラグには、“１”が記載される。
【００４８】
移動判定部５０５は、時刻情報取得部５０３から取得する現在時刻、一時記憶部５０７で保持されているアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報、履歴管理部４０２から取得する履歴管理情報５０９、及びプログラム管理部４０１から取得するプログラム管理情報を用いて、ＴＲＭ２０４から大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムを決定する。
【００４９】
ＴＲＭ２０４から大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムの決定手順を以下に示す。
【００５０】
初めに、移動判定部５０５は、プログラム管理部４０１からプログラム管理情報５１０を取得し、ＲＡＭ４０６の全容量と、ＲＡＭ４０６に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のＲＡＭ４０６の空き容量を取得する。
【００５１】
アプリケーションプログラムをダウンロードする場合、移動判定部５０５は、一時記憶部５０７に記憶されているダウンロード対象のアプリケーションプログラム４２０の暗号化時のデータサイズと、先に取得したＲＡＭ４０６の空き容量とを比較する。ダウンロード対象のアプリケーションプログラム４２０の暗号化時のデータサイズがＲＡＭ４０６の空き容量を超える場合、プログラム記憶領域４０６ａに保存されているアプリケーションプログラム４２１のいずれかを、大容量不揮発性メモリ２０５に移動させる処理に移行する。
【００５２】
アプリケーションプログラムを実行する場合、移動判定部５０５は、実行対象となるアプリケーションプログラムの復号化時のデータサイズと、ＲＡＭ４０６の空き容量とを比較する。復号化時のアプリケーションプログラム４２２のサイズが、ＲＡＭ４０６の空き容量を超える場合、プログラム記憶領域４０６ａに保存されているアプリケーションプログラム４２１のいずれかを、大容量不揮発性メモリ２０５に移動させる処理に移行する。
【００５３】
移動判定部５０５は、時刻情報取得部５０３より現在時刻を取得する。
【００５４】
移動判定部５０５は、プログラム管理部４０１に問合せ、プログラム管理情報５１０の中で、保存先がＴＲＭ２０４であるアプリケーションプログラムのＩＤを取得する。
【００５５】
次に、移動判定部５０５は、履歴管理部４０２に問合せ、履歴管理情報５０９を取得する。移動判定部５０５は、最終アクセス日が最も古いアプリケーションプログラムを移動対象のアプリケーションプログラムと決定し、先のプログラム管理部４０１への問合せの結果より抽出したプログラムＩＤの中から、移動対象に決定されたアプリケーションプログラムのＩＤを取得するとともに、そのアプリケーションプログラムの暗号化時のデータサイズを取得する。そして、移動判定部５０５は、プログラム管理部４０１に対して、移動対象に決定したアプリケーションプログラムに関して、プログラム管理情報５１０の移動フラグをＯＮ（１）に設定し、保存先を大容量不揮発性メモリ２０５に更新するように指示する。
【００５６】
次に、移動判定部５０５は、移動対象として決定したアプリケーションプログラムの暗号化時のデータサイズをＲＡＭ４０６の空き容量に加算し、アプリケーションプログラムのダウンロード、又はアプリケーションプログラムの復号化処理に十分なＲＡＭ４０６の空き容量が確保できるか否かを確認する。１個のアプリケーションプログラムを大容量不揮発性メモリ２０５に移動しても十分なＲＡＭ４０６の空き容量が確保できない場合、移動判定部５０５は、再度、プログラム管理部４０１及び履歴管理部４０２に問合せ、大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムのＩＤを抽出する。移動判定部５０５は、アプリケーションプログラムのダウンロード、又は実行対象のアプリケーションプログラムの復号化を行なうために必要なＲＡＭ４０６の領域が確保することができるまで、大容量不揮発性メモリ２０５へ移動させるアプリケーションプログラムのＩＤの抽出を繰り返す。
【００５７】
また、大容量不揮発性メモリ２０５に移動していたアプリケーションプログラム４２３を実行する場合においても、ＲＡＭ４０６上に、アプリケーションプログラム４２３の復号化に必要な領域が確保できないときは、移動判定部５０５は、上記と同様の処理を行なう。これにより、ＲＡＭ４０６上に、アプリケーションプログラム４２３の復号化に必要な領域が確保される。
【００５８】
最後に、移動判定部５０５は、プログラム管理情報５１０において移動フラグがＯＮ（１）になっているアプリケーションプログラムのＩＤを、移動制御部４０４に通知する。
【００５９】
移動制御部４０４は、移動判定部５０５から通知されたプログラムＩＤを持つアプリケーションプログラムを、大容量不揮発性メモリ２０５にコピーする。移動制御部４０４は、アプリケーションプログラムの大容量不揮発性メモリ２０５へのコピーが完了すると、移動判定部５０５を介して、プログラム管理部４０１にプログラム管理情報５１０の移動フラグを全てＯＦＦ（０）にするように指示する。移動制御部４０４は、大容量不揮発性メモリ２０５へのコピーが完了したアプリケーションプログラム４２１を削除する。
【００６０】
削除部４１１は、復号化済みで実行対象ではなくなったアプリケーションプログラム４２２を削除する。
【００６１】
実行部４０９は、復号化処理されたアプリケーションプログラム４２２を実行する。
【００６２】
再読み込み部４１０は、大容量不揮発性メモリ２０５に移動していたアプリケーションプログラム４２３を実行する際に、アプリケーションプログラム４２３を大容量不揮発性メモリ２０５から読み込む。
【００６３】
図８は、アプリケーションプログラムをダウンロードする時のアプリケーションプログラムの移動処理のフローを示す図である。アプリケーションプログラムのダウンロードが開始されると（Ｓ８００）、ＴＲＭ２０４内の各構成部は、以下のように動作する。
【００６４】
初めに、一時記憶部５０７は、ダウンロードに先立って通知されたダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズを保持する。
【００６５】
次に、移動判定部５０５は、プログラム管理部４０１よりプログラム管理情報５１０を取得し、ＲＡＭ４０６の全容量と、ＲＡＭ４０６に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のＲＡＭ４０６の空き容量を取得する（Ｓ８０１）。
【００６６】
次に、移動判定部５０５は、取得したＲＡＭ４０６の空き容量と、一時記憶部５０７に保存されているダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズとを比較する（Ｓ８０２）。なお、ＲＡＭ４０６の空き容量とプログラム記憶領域４０６ａは等しいものとする。
【００６７】
ダウンロード対象のアプリケーションプログラムのサイズが、ＲＡＭ４０６の空き容量以下である場合（Ｓ８０２でＹｅｓ）、プログラム取得部４００はダウンロードされるアプリケーションプログラムを取得し、格納制御部４０３は取得されるアプリケーションプログラムをＲＡＭ４０６のプログラム記憶領域４０６ａに格納する（Ｓ８０３）。そして、移動判定部５０５はプログラム管理部４０１にプログラム管理情報５１０を更新するように指示し、プログラム管理部４０１はプログラム管理情報５１０を更新し（Ｓ８１２）、ダウンロード処理は終了する（Ｓ８１３）。
【００６８】
逆に、ダウンロード対象のアプリケーションプログラムのサイズが、ＲＡＭ４０６の空き容量を超える場合（Ｓ８０２でＮｏ）、移動判定部５０５はＲＡＭ４０６の空き容量を確保するための処理を開始する。
【００６９】
最初に、移動判定部５０５は、時刻情報取得部５０３から時刻情報を取得する（Ｓ８０４）。
【００７０】
次に、移動判定部５０５は、プログラム管理部４０１に問合せ、プログラム管理情報５１０を取得し、保存先がＴＲＭ２０４であるアプリケーションプログラムのＩＤを取得する（Ｓ８０５）。
【００７１】
次に、移動判定部５０５は、履歴管理部４０２に問合せ、履歴管理情報５０９を取得する（Ｓ８０６）。
【００７２】
移動判定部５０５は、Ｓ８０６で取得した履歴管理情報５０９から、Ｓ８０５で取得したプログラムＩＤのうち最終アクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ２０５への移動対象のアプリケーションプログラムと決定し、プログラム管理情報５１０から移動対象のアプリケーションプログラムの暗号化時のデータサイズを取得する（Ｓ８０７）。
【００７３】
次に、移動判定部５０５は、プログラム管理部４０１に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報５１０の移動フラグをＯＮ（１）に設定するとともに、保存先を大容量不揮発性メモリ２０５に更新するように指示し、その指示に従って、プログラム管理部４０１はプログラム管理情報５１０を更新する（Ｓ８０８）。
【００７４】
格納制御部４０３は、Ｓ８０７で決定された移動対象のアプリケーションプログラムを、大容量不揮発性メモリ２０５に移動する（Ｓ８１０）。次に、移動処理後のＲＡＭの空き容量を取得し、Ｓ８０２に遷移して、ダウンロードするアプリケーションプログラムがプログラム記憶領域４０６ａに保存可能となるまで、Ｓ８０２からＳ８１０の処理を繰り返す。
【００７５】
最後に、プログラム管理部４０１は、プログラム管理情報５１０の移動フラグを全てＯＦＦ（０）に設定し、アプリケーションプログラムをダウンロードする処理は終了する（Ｓ８１３）。
【００７６】
なお、上記では、Ｓ８０７において、移動判定部５０５は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部５０５は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部５０５は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムを決定してもよい。しかしながら、ＲＡＭ４０６の空き容量をダウンロード対象等のＲＡＭ４０６に格納されるアプリケーションプログラムのサイズ以上にする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
【００７７】
図９は、ＲＡＭ４０６上に復号化済みのアプリケーションプログラム４２２が存在する場合における、アプリケーションプログラムのダウンロード時のアプリケーションプログラム移動処理のフローを示す図である。図８における処理フローとほぼ同じであるが、異なる点はＳ９０４である。図８における処理フローでは、ＲＡＭ４０６の空き領域確保のため、プログラム記憶領域４０６ａに保存されているアプリケーションプログラム４２１の中から、大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムを決定する。しかしながら、Ｓ９０４において、削除部４１１は、大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムが決定されることより優先して、ＲＡＭ４０６に存在する復号化済みのアプリケーションプログラム４２２を削除する。この点が図９と図８とが異なる。
【００７８】
図１０は、プログラム記憶領域４０６ａに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。
【００７９】
アプリケーションプログラムの実行が開始されると（Ｓ１０００）、移動判定部５０５は、プログラム管理部４０１からプログラム管理情報５１０を取得し、Ｓ８０１と同様の手順でＲＡＭ４０６の空き容量を取得する（Ｓ１００１）。
【００８０】
また、移動判定部５０５は、Ｓ１００１において取得したプログラム管理情報５１０から、実行対象のアプリケーションプログラムの復号化後のサイズを取得する（Ｓ１００２）。
【００８１】
次に、移動判定部５０５は、取得したＲＡＭ４０６の空き容量と、Ｓ１００２で取得した復号化後のデータサイズとを比較する（Ｓ１００３）。なお、ＲＡＭ４０６の空き容量とプログラム記憶領域４０６ａは等しいものとする。復号化後のデータサイズがＲＡＭ４０６の空き容量以下である場合（Ｓ１００３でＹｅｓ）、復号化部４０８は、暗号化されている実行対象のアプリケーションプログラムを復号化し（Ｓ１００４）、プログラム管理部４０１はプログラム管理情報５１０を更新し（Ｓ１０１２）、実行部４０９はアプリケーションプログラムを実行する（Ｓ１０１３）。逆に、復号化後のデータサイズがＲＡＭ４０６の空き容量を超える場合（Ｓ１００３でＮｏ）、移動判定部５０５はＲＡＭ４０６の空き容量を確保するための処理を開始する。
【００８２】
初めに、移動判定部５０５は、時刻情報取得部５０３から時刻情報を取得する（Ｓ１００５）。
【００８３】
次に、移動判定部５０５は、履歴管理部４０２に問合せ、履歴管理情報５０９を取得する（Ｓ１００６）。移動判定部５０５は、Ｓ１００６で取得された履歴管理情報５０９とＳ１００２で取得されたプログラム管理情報５１０とから、保存先がＴＲＭ２０４であるアプリケーションプログラムで、かつ最終のアクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ２０５への移動対象のアプリケーションプログラムと決定し、その暗号化時のデータサイズを取得する（Ｓ１００７）。なお、図８と同様に、履歴管理情報５０９から移動させるアプリケーションプログラムを決定するアルゴリズムは、使用頻度等を考慮した決定方法でもよく、その方法は問わない。
【００８４】
次に、移動判定部５０５は、プログラム管理部４０１に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報５１０の移動フラグをＯＮ（１）に設定し、保存先を大容量不揮発性メモリ２０５に更新するように指示し、プログラム管理部４０１は、プログラム管理情報５１０を更新する（Ｓ１００８）。
【００８５】
移動制御部４０４は、Ｓ１００７で移動対象に決定されたアプリケーションプログラムを、大容量不揮発性メモリ２０５に移動する（Ｓ１０１０）。次に、移動処理後のＲＡＭの空き容量を取得し、Ｓ１００３に遷移して、実行対象のアプリケーションプログラムの復号化処理が実行できるだけのＲＡＭ４０６の空き容量が確保できるまで、Ｓ１００３からＳ１０１０の処理を繰り返す。
【００８６】
次に、復号化部４０８は、実行対象のアプリケーションプログラムの復号化処理を行なう（Ｓ１００４）。
【００８７】
プログラム管理部４０１は、プログラム管理情報５１０の移動フラグを全てＯＦＦ（０）に設定し、プログラム管理情報５１０を更新する（Ｓ１０１２）。
【００８８】
そして、実行部４０９はアプリケーションプログラムを実行する（Ｓ１０１３）。
【００８９】
図１１は、大容量不揮発性メモリ２０５に移動していたアプリケーションプログラム４２３を実行する場合の処理フローを示す図である。アプリケーションプログラムの実行が開始されると（Ｓ１１００）、ＴＲＭ２０４内の各構成部は、以下のように動作する。
【００９０】
初めに、移動判定部５０５は、プログラム管理部４０１からプログラム管理情報５１０を取得し、実行しようとするアプリケーションプログラムの保存先が大容量不揮発性メモリ２０５であることを確認するとともに、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとを取得する（Ｓ１１０１）。
【００９１】
次に、移動判定部５０５は、Ｓ１１０１で取得したプログラム管理情報５１０の保存先情報、暗号化時のデータサイズ、及び復号化後のデータサイズより、ＲＡＭ４０６の空き容量を取得する（Ｓ１１０２）。
【００９２】
次に、移動判定部５０５は、Ｓ１１０１で取得した実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、Ｓ１１０２で取得したＲＡＭ４０６の空き容量とを比較する（Ｓ１１０３）。なお、ＲＡＭ４０６の空き容量とプログラム記憶領域４０６ａは等しいものとする。
【００９３】
上記合計がＲＡＭ４０６の空き容量以下である場合（Ｓ１１０３でＹｅｓ）、再読み込み部４１０は、大容量不揮発性メモリ２０５から実行対象のアプリケーションプログラム４２３を読み込み、格納制御部４０３は読み込まれた実行対象のアプリケーションプログラム４２３をＲＡＭ４０６に格納する（Ｓ１１０４）。復号化部４０８は復号化処理を行ない（Ｓ１１０５）、プログラム管理部４０１はプログラム管理情報５１０を更新し（Ｓ１１１３）、実行部４０９は実行対象のアプリケーションプログラムを実行する（Ｓ１１１４）。
【００９４】
逆に、上記合計がＲＡＭ４０６の空き容量を超える場合（Ｓ１１０３でＮｏ）、移動判定部５０５はＲＡＭ４０６の空き容量を確保するための処理を開始する。
【００９５】
まず、移動判定部５０５は、時刻情報取得部５０３から時刻情報を取得する（Ｓ１１０６）。
【００９６】
次に、移動判定部５０５は、履歴管理部４０２に問合せ、履歴管理情報５０９を取得する（Ｓ１１０７）。
【００９７】
次に、移動判定部５０５は、Ｓ１１０１で取得したプログラム管理情報５１０の中で、保存先がＴＲＭ２０４であるアプリケーションプログラムで、かつＳ１１０７で取得した履歴管理情報５０９の中で、最終アクセス日が最も古いプログラムＩＤを抽出する。移動判定部５０５は、抽出したプログラムＩＤに対応するアプリケーションプログラムを大容量不揮発性メモリ２０５への移動対象と決定し（Ｓ１１０８）、プログラム管理情報５１０より、移動対象に決定されたアプリケーションプログラムの暗号化時のデータサイズを取得する。
【００９８】
次に、プログラム管理部４０１は、移動対象に決定されたアプリケーションプログラムのプログラム管理情報５１０の移動フラグをＯＮ（１）に設定し、保存先を大容量不揮発性メモリ２０５に更新する（Ｓ１１０９）。
【００９９】
移動制御部４０４は、Ｓ１１０８で移動対象に決定したアプリケーションプログラムを、プログラム記憶領域４０６ａから大容量不揮発性メモリ２０５に移動する（Ｓ１１１１）。次に、移動処理後のＲＡＭの空き容量を取得し、Ｓ１１０３に遷移して、実行対象のアプリケーションプログラムの復号化処理が可能になるまでＳ１１０３からＳ１１１１の処理を繰り返す。
【０１００】
最後に、プログラム管理部４０１は、プログラム管理情報５１０の移動フラグを全てＯＦＦ（０）に設定し、アプリケーションプログラムの移動処理は終了する。
【０１０１】
アプリケーションプログラムの移動処理が終了した後、移動制御部４０４は、実行対象のアプリケーションプログラム４２３を大容量不揮発性メモリ２０５から読み込み、読み込んだ実行対象のアプリケーションプログラム４２３をＲＡＭ４０６にコピーする（Ｓ１１０４）。
【０１０２】
最後に、移動制御部４０４は復号化処理を行ない（Ｓ１１０５）、プログラム管理部４０１はプログラム管理情報５１０を更新し（Ｓ１１１３）、その後、実行部４０９は、Ｓ１１０５で復号化済みのアプリケーションプログラム４２２を実行する（Ｓ１１１４）。
【０１０３】
なお、Ｓ１１０８において、移動判定部５０５は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部５０５は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部５０５は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ２０５に移動させるアプリケーションプログラムを決定してもよい。ＲＡＭ４０６の空き容量をダウンロード対象等のＲＡＭ４０６に格納されるアプリケーションプログラムのサイズより大きくする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
【０１０４】
また、図１１に示す処理フローでは、ＲＡＭ４０６の空き領域確保のための処理において、Ｓ１１０６からＳ１１１０で示すようなプログラム記憶領域４０６ａに保存されているアプリケーションプログラム４２１の移動処理が行なわれる。しかしながら、ＲＡＭ４０６に復号化済みのアプリケーションプログラム４２２が存在する場合、削除部４１１がＲＡＭ４０６に存在する復号化済みのアプリケーションプログラム４２２を削除する処理が、優先されてもよい。
【０１０５】
また、図１１に示す処理フローでは、Ｓ１１０３において、移動判定部５０５は、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、ＲＡＭ４０６の空き容量とを比較する。しかしながら、Ｓ１１０３において、移動判定部５０５は、実行対象のアプリケーションプログラムの復号化時のデータサイズと、ＲＡＭ４０６の空き容量とを比較してもよい。
【０１０６】
その場合、実行対象のアプリケーションプログラムの復号化時のデータサイズがＲＡＭ４０６の空き容量以下であるとき（Ｓ１１０３でＹｅｓ）、復号化部４０８は実行対象のアプリケーションプログラム４２３を読み込んで復号化処理を行なってＲＡＭ４０６に格納してもよい。他方、実行対象のアプリケーションプログラムの復号化時のデータサイズがＲＡＭ４０６の空き容量を超えるとき（Ｓ１１０３でＮｏ）、移動判定部５０５は、実行対象のアプリケーションプログラムの復号化時のデータサイズがＲＡＭ４０６の空き容量以下になるように、ＲＡＭ４０６の空き容量を確保するための処理を開始する。
【０１０７】
上述した構成及び動作により、サービスプロバイダからダウンロードされたアプリケーションプログラムを、ダウンロードされたときの暗号化された状態のまま大容量不揮発性メモリ２０５に簡単に移動させることができる。そのため、サービスプロバイダが要求するセキュリティ強度を保った状態で、より多くのアプリケーションプログラムを、ＳＤカード２０３をはじめとするＩＣカード機能が搭載されたセキュアメモリカード内に保存することが可能となる。
【０１０８】
図１２は、サービスプロバイダが提供するアプリケーションプログラムの情報の一例を示している。
【０１０９】
以下に、図１２に示すアプリケーションプログラムのダウンロード時の処理及び実行時の処理を具体的に説明する。以下では、ＲＡＭ４０６の全体の容量は１２０ＫＢであると仮定する。
【０１１０】
ステップ１として、ＲＡＭ４０６が未使用の状態であり、ＳＤカード２０３にアプリケーションプログラムＡをダウンロードする場合の処理フローについて、詳細に説明する。
【０１１１】
ホスト機器２０２からのアプリケーションプログラムＡのダウンロード指示により、アプリケーションプログラムＡのダウンロード処理が開始する。
【０１１２】
ダウンロード処理が開始されると、サービスプロバイダよりアプリケーションプログラムＡの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報が、ＳＤカード２０３に送信されてくる。それら送信される情報は一時記憶部５０７に保存される。この場合、一時記憶部５０７には、アプリケーションプログラムＡの暗号化時のデータサイズとして１０ＫＢが、アプリケーションプログラムＡの復号化時のデータサイズとして３０ＫＢが保存される。
【０１１３】
次に、移動判定部５０５は、プログラム管理部４０１よりプログラム管理情報５１０を取得し、ＲＡＭ４０６の空き容量を取得する。この場合、アプリケーションプログラムが何もダウンロードされていない状態なので、ＲＡＭ４０６の使用領域のサイズは０ＫＢであり、ＲＡＭ４０６の空き領域は１２０ＫＢである。
【０１１４】
次に、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＡの暗号化時のデータサイズと、ＲＡＭ４０６の空き容量とを比較する。この場合、移動判定部５０５は、アプリケーションプログラムＡの暗号化時のデータサイズが１０ＫＢであり、ＲＡＭ４０６の空き容量が１２０ＫＢであるため、アプリケーションプログラムＡをプログラム記憶領域４０６ａに保存可能であると判断し、格納制御部４０３はアプリケーションプログラムＡをプログラム記憶領域４０６ａに保存する。
【０１１５】
以上により、アプリケーションプログラムＡのダウンロード処理が完了する。
【０１１６】
アプリケーションプログラムＡのダウンロード処理が完了した後、プログラム管理情報５１０は、プログラム管理部４０１によって、図１３（Ａ）のように更新される。また、ＲＡＭ４０６の状態は、図１３（Ｂ）のようになる。
【０１１７】
引き続き、ステップ２として、ＳＤカード２０３にアプリケーションプログラムＢをダウンロードする場合の処理フローについて、詳細に説明する。
【０１１８】
ホスト機器２０２からのアプリケーションプログラムＢのダウンロード指示により、アプリケーションプログラムＢのダウンロード処理が開始する。
【０１１９】
ダウンロード処理が開始されると、ステップ１で示したアプリケーションプログラムＡのダウンロード時と同様に、アプリケーションプログラムＢに関する情報（暗号化時のデータサイズ及び復号化時のデータサイズ）が、一時記憶部５０７に保存される。この場合、一時記憶部５０７には、アプリケーションプログラムＢの暗号化時のデータサイズとして３０ＫＢが、アプリケーションプログラムＢの復号化時のデータサイズとして５０ＫＢが保存される。
【０１２０】
次に、移動判定部５０５は、プログラム管理部４０１よりステップ１で更新済みのプログラム管理情報１３００を取得し、ＲＡＭ４０６の空き容量を取得する。この場合、ＲＡＭ４０６に保存されているアプリケーションプログラムは、アプリケーションプログラムＡのみであり、ＲＡＭ４０６の使用領域サイズは１０ＫＢであることから、ＲＡＭ４０６の空き領域は１１０ＫＢである。
【０１２１】
次に、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＢの暗号化時のデータサイズと、ＲＡＭ４０６の空き容量とを比較する。この場合、移動判定部５０５は、アプリケーションプログラムＢの暗号化時のデータサイズが３０ＫＢであり、ＲＡＭ４０６の空き領域は１１０ＫＢであるため、アプリケーションプログラムＢをプログラム記憶領域４０６ａに保存可能であると判断し、格納制御部４０３はアプリケーションプログラムＢをプログラム記憶領域４０６ａに保存する。
【０１２２】
以上により、アプリケーションプログラムＢのダウンロード処理が完了する。
【０１２３】
アプリケーションプログラムＢのダウンロード処理が完了した後、プログラム管理情報１３００は、プログラム管理部４０１によって、図１４（Ａ）のように更新される。また、ＲＡＭ４０６の状態は、図１４（Ｂ）のようになる。
【０１２４】
続いて、ステップ３として、アプリケーションプログラムＢを実行する場合の処理フローについて、詳細に説明する。
【０１２５】
ホスト機器２０２からのアプリケーションプログラムＢの実行指示により、アプリケーションプログラムＢの実行処理が開始する。
【０１２６】
初めに、移動判定部５０５は、プログラム管理部４０１からステップ２で更新済みのプログラム管理情報１４００を取得し、実行対象であるアプリケーションプログラムＢの復号化後のデータサイズを取得し、一時記憶部５０７に保存する。この場合、一時記憶部５０７に保存される値は５０ＫＢとなる。
【０１２７】
次に、移動判定部５０５は、プログラム管理情報１４００より、ＲＡＭ４０６の空き容量を取得する。この場合、ＲＡＭ４０６には、暗号化されたアプリケーションプログラムＡ（１０ＫＢ）と、暗号化されたアプリケーションプログラムＢ（３０ＫＢ）とが含まれるため、ＲＡＭ４０６の空き容量は８０ＫＢである。
【０１２８】
次に、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＢの復号化後のデータサイズ５０ＫＢと、ＲＡＭ４０６の空き容量８０ＫＢとを比較し、アプリケーションプログラムＢはＲＡＭ４０６上で復号化可能であると判断する。
【０１２９】
この後、Ｓ１００４で示したように、復号化部４０８はアプリケーションプログラムＢを復号化処理し、プログラム管理部４０１は、プログラム管理情報１４００を図１５（Ａ）のように更新する。ＲＡＭ４０６の状態は、図１５（Ｂ）のようになる。
【０１３０】
以上により、アプリケーションプログラムＢが実行可能状態となり、実行部４０９はアプリケーションプログラムＢを実行する。
【０１３１】
続いて、ステップ４として、ＳＤカード２０３にアプリケーションプログラムＣをダウンロードする場合の処理フローについて、詳細に説明する。
【０１３２】
ホスト機器２０２からのアプリケーションプログラムＣのダウンロード指示により、アプリケーションプログラムＣのダウンロード処理が開始する。
【０１３３】
ダウンロード処理が開始されると、ステップ１で示したアプリケーションプログラムＡのダウンロード時と同様に、アプリケーションプログラムＣに関する情報（暗号化時のデータサイズ及び復号化時のデータサイズ）が、一時記憶部５０７に保存される。この場合、一時記憶部５０７には、アプリケーションプログラムＣの暗号化時のデータサイズとして４０ＫＢが、アプリケーションプログラムＣの復号化時のデータサイズとして７０ＫＢが保存される。
【０１３４】
次に、移動判定部５０５は、プログラム管理部４０１よりステップ３で更新済みのプログラム管理情報１５００を取得し、ＲＡＭ４０６の空き容量を取得する。この場合、ＲＡＭ４０６には、暗号化されたアプリケーションプログラムＡ（１０ＫＢ）と、暗号化されたアプリケーションプログラムＢ（３０ＫＢ）と、復号化されたアプリケーションプログラムＢ（５０ＫＢ）とが存在することから、ＲＡＭ４０６の空き容量は３０ＫＢである。
【０１３５】
次に、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＣの暗号化時のデータサイズ（４０ＫＢ）と、ＲＡＭ４０６の空き容量（３０ＫＢ）とを比較する。この場合、ＲＡＭ４０６の空き容量が不足することから、移動判定部５０５は、ＲＡＭ４０６の空き容量を確保するための処理を行なう。
【０１３６】
ＲＡＭ４０６の空き容量を確保するための処理フローとして、ここではＳ９０４を採用する。
【０１３７】
すなわち、移動判定部５０５は、ＲＡＭ４０６に存在している３つのアプリケーションプログラムの中で、Ｓ９０４の処理フローに基づき、復号化されたアプリケーションプログラムＢを削除する処理を選択する。
【０１３８】
次に、移動判定部５０５は、再度、ＲＡＭ４０６の空き容量を取得する。復号化されたアプリケーションプログラムＢが削除された後のＲＡＭ４０６の空き容量は８０ＫＢとなる。移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＣの暗号化時のデータサイズ（４０ＫＢ）と、ＲＡＭ４０６の空き容量（８０ＫＢ）とを比較し、アプリケーションプログラムＣがダウンロード可能であると判断する。
【０１３９】
次に、格納制御部４０３は、ダウンロードされたアプリケーションプログラムＣをプログラム記憶領域４０６ａに保存する。
【０１４０】
そして、プログラム管理部４０１によって、プログラム管理情報１５００は、図１６（Ａ）のように更新される。また、ＲＡＭ４０６の状態は、図１６（Ｂ）のようになる。
【０１４１】
以上により、アプリケーションプログラムＣのダウンロード処理が完了する。
【０１４２】
続いて、ステップ５として、アプリケーションプログラムＣを実行する場合の処理フローについて、詳細に説明する。
【０１４３】
ホスト機器２０２からのアプリケーションプログラムＣの実行指示により、アプリケーションプログラムＣの実行処理が開始する。
【０１４４】
ステップ３で述べたように、初めに、移動判定部５０５は、更新済みのプログラム管理情報１６００からアプリケーションプログラムＣの復号化後のデータサイズ（７０ＫＢ）を取得し、一時記憶部５０７に保存する。
【０１４５】
次に、移動判定部５０５は、ステップ３で述べたように、プログラム管理情報１６００よりＲＡＭ４０６の空き容量を取得する。この場合、ＲＡＭ４０６の空き容量は４０ＫＢである。
【０１４６】
そして、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＣの復号化後のデータサイズ（７０ＫＢ）と、ＲＡＭ４０６の空き容量（４０ＫＢ）とを比較し、アプリケーションプログラムＣの実行に必要な領域がＲＡＭ４０６上に確保できないと判断する。
【０１４７】
そして、移動判定部５０５は、Ｓ１００５からＳ１００８の処理フローに基づき、大容量不揮発性メモリ２０５に移動すべきアプリケーションプログラムを決定する処理を行なう。ここでは、最初にダウンロードされたアプリケーションプログラムからダウンロード順に大容量不揮発性メモリ２０５に移動させる場合を想定する。移動判定部５０５は、大容量不揮発性メモリ２０５への移動対象のアプリケーションプログラムとして、ステップ１でダウンロードされたアプリケーションプログラムＡを決定する。
【０１４８】
次に、プログラム管理部４０１は、プログラム管理情報１６００を、図１７（Ａ）のように更新する。また、ＲＡＭ４０６の状態は、図１７（Ｂ）のようになる。
【０１４９】
再度、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＣの復号化後のデータサイズ（７０ＫＢ）と、ＲＡＭ４０６の空き容量（５０ＫＢ）とを比較し、アプリケーションプログラムＣの実行に必要な領域がＲＡＭ４０６上にまだ確保できないと判断する。
【０１５０】
移動判定部５０５は、移動対象となるアプリケーションプログラムとして、ステップ２でダウンロードされたアプリケーションプログラムＢを選択する。
【０１５１】
そして、プログラム管理部４０１は、プログラム管理情報１７００を、図１８（Ａ）のように更新する。また、ＲＡＭ４０６の状態は、図１８（Ｂ）のようになる。
【０１５２】
再度、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＣの復号化後のデータサイズ（７０ＫＢ）と、ＲＡＭ４０６の空き容量（８０ＫＢ）とを比較し、アプリケーションプログラムＣの実行に必要な領域がＲＡＭ４０６上に確保できたと判断する。
【０１５３】
移動制御部４０４は、プログラム管理情報１８００において、移動フラグがＯＮ（１）に設定されているアプリケーションプログラムＡ（ＩＤ：０ｘ０００１）とアプリケーションプログラムＢ（ＩＤ：０ｘ０００２）とを、ＲＡＭ４０６から大容量不揮発性メモリ２０５にコピーする。
【０１５４】
そして、移動制御部４０４は、コピーが完了したアプリケーションプログラムＡとアプリケーションプログラムＢとを、プログラム記憶領域４０６ａから削除する。
【０１５５】
最後に、プログラム管理部４０１によって、プログラム管理情報１８００は、図１９（Ａ）のように更新される。また、ＲＡＭ４０６の状態は、図１９（Ｂ）のようになる。
【０１５６】
以上により、アプリケーションプログラムＣが実行可能状態となり、実行部４０９はアプリケーションプログラムＣを実行する。
【０１５７】
続いて、ステップ６として、大容量不揮発性メモリ２０５に移動したアプリケーションプログラムＢを実行する場合の処理フローについて、詳細に説明する。
【０１５８】
ホスト機器２０２からのアプリケーションプログラムＢの実行指示により、アプリケーションプログラムＢの実行処理が開始する。
【０１５９】
ステップ３で述べたように、初めに、移動判定部５０５は、更新済みのプログラム管理情報１９００からアプリケーションプログラムＢの復号化後のデータサイズ（５０ＫＢ）を取得し、一時記憶部５０７に保存する。
【０１６０】
次に、移動判定部５０５は、ステップ３で述べたように、プログラム管理情報１９００よりＲＡＭ４０６の空き容量を取得する。この場合、ＲＡＭ４０６の空き容量は１０ＫＢである。
【０１６１】
そして、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＢの復号化後のデータサイズ（５０ＫＢ）と、ＲＡＭ４０６の空き容量（１０ＫＢ）とを比較し、アプリケーションプログラムＢの実行に必要な領域がＲＡＭ４０６上に確保できないと判断する。
【０１６２】
そして、移動判定部５０５は、ＲＡＭ４０６上の復号化済みのアプリケーションプログラムを優先して削除する処理フローをまず採用し、プログラム管理情報１９００に基づいて、復号化されたアプリケーションプログラムＣを削除対象と決定する。
【０１６３】
そして、削除部４１１は、ＲＡＭ４０６上の復号化されたアプリケーションプログラムＣ（７０ＫＢ）を削除する。
【０１６４】
アプリケーションプログラムＣが削除された後、プログラム管理部４０１はプログラム管理情報１９００を図２０（Ａ）のように更新する。また、ＲＡＭ４０６の状態は、図２０（Ｂ）のようになる。
【０１６５】
再度、移動判定部５０５は、一時記憶部５０７に保存されているアプリケーションプログラムＢの復号化後のデータサイズ（５０ＫＢ）と、ＲＡＭ４０６の空き容量（８０ＫＢ）とを比較し、ＲＡＭ４０６上に、アプリケーションプログラムＢを復号化するための領域が確保できたと判断する。
【０１６６】
移動制御部４０４は、大容量不揮発性メモリ２０５からアプリケーションプログラムＢを読み出してＲＡＭ４０６にコピーし、アプリケーションプログラムＢの復号化処理を行なう。
【０１６７】
そして、プログラム管理部４０１は、プログラム管理情報２０００を図２１（Ａ）のように更新する。このとき、ＲＡＭ４０６の状態は、図２１（Ｂ）のようになる。
【０１６８】
最後に、実行部４０９は、復号化処理されたアプリケーションプログラムＢを実行する。
【０１６９】
以上により、大容量不揮発性メモリ２０５に移動していたアプリケーションプログラムＢが実行される。
【０１７０】
なお、実施の形態１では、ＴＲＭ２０４は本発明のメモリカードのＩＣカード部の一例である。大容量不揮発性メモリ２０５は本発明のメモリカードのフラッシュメモリ部の一例である。ＲＡＭ４０６は本発明のメモリカードの耐タンパ記憶部の一例である。
【０１７１】
アプリケーションプログラムの復号化時のデータサイズがダウンロードされるので、実行部４０９は、そのアプリケーションプログラムを実行するとき、そのアプリケーションプログラムの復号化時のデータサイズを、そのアプリケーションプログラムを実行することにより取得し、その取得したサイズがダウンロードされたサイズと一致しているか否かを判断してもよい。両者が一致していなければ、実行対象のアプリケーションプログラムは不正なプログラムであるので、実行部４０９はそのアプリケーションプログラムの実行を停止する。これにより、正規のアプリケーションプログラムのみの実行が継続される、という効果が得られる。
【０１７２】
また、格納制御部４０３は、サービスプロバイダからダウンロードされるアプリケーションプログラム４２０をプログラム記憶領域４０６ａに格納するとともに、大容量不揮発性メモリ２０５にも格納してもよい。この場合、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズがＲＡＭ４０６の空き容量を超えるとき、格納制御部４０３がＲＡＭ４０６に存在する暗号化されているアプリケーションプログラムのいずれかを削除するだけで、ＲＡＭ４０６の空き容量は、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズよりも大きくなり、そのアプリケーションプログラムをＲＡＭ４０６に配置することができる。
【０１７３】
また、格納制御部４０３は、ダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズがＲＡＭ４０６の空き容量を超える場合、プログラム取得部４００によって取得されるダウンロード対象のアプリケーションプログラムを大容量不揮発性メモリ２０５に格納してもよい。
【０１７４】
また、実行部４０９は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを大容量不揮発性メモリ２０５に移動させてもよい。
【０１７５】
（実施の形態２）
図２２は、実施の形態２におけるＳＤカード２２００のブロック構成を示す図である。ＳＤカード２２００は、実施の形態１のＳＤカード２０３が備える構成部に加えて、鍵生成部２２１７と、追加暗号化部２２１８と、追加復号化部２２１９とを備える。なお、説明の簡単化のため、図２２には、図４に記載されているプログラム管理部４０１、履歴管理部４０２、格納制御部４０３、公開鍵記憶部４０７、復号化部４０８、及び、実行部４０９は、記載されていない。
【０１７６】
プログラム取得部４００は、ホスト機器２０２からＳｕｂｓｃｒｉｂｅｒ  Ｉｄｅｎｔｉｔｙ  Ｍｏｄｕｌｅ  Ｉｄｅｎｔｉｆｉｅｒ（ＳＩＭ  ＩＤ）や端末ＩＤ等のホスト機器固有の情報を取得し、鍵生成部２２１７は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加暗号化部２２１８は、移動制御部４０４によって決定された、ＴＲＭ２０４から大容量不揮発性メモリ２０５への移動対象のアプリケーションプログラムを、鍵生成部２２１７によって生成された暗号化鍵で暗号化する。移動制御部４０４は、追加暗号化部２２１８によって暗号化されたアプリケーションプログラムを、ＲＡＭ４０６から大容量不揮発性メモリ２０５へコピーする。
【０１７７】
移動制御部４０４は、追加暗号化部２２１８によって暗号化されたアプリケーションプログラムを大容量不揮発性メモリ２０５へコピーした後、移動対象のアプリケーションプログラムをプログラム記憶領域４０６ａから削除する。そして、鍵生成部２２１７は暗号化鍵を削除する。
【０１７８】
このように、実施の形態２では、移動対象のアプリケーションプログラムを鍵生成部２２１７によって生成された暗号化鍵で暗号化して大容量不揮発性メモリ２０５へ移動させ、その後暗号化鍵を削除する。これにより、実施の形態２では、実施の形態１で説明した移動方法よりもセキュリティ強度を高めた状態で、移動対象のアプリケーションプログラムを大容量不揮発性メモリ２０５に保存することができる。
【０１７９】
大容量不揮発性メモリ２０５に保存されているアプリケーションプログラムをＲＡＭ４０６にコピーして実行する場合、上記と同様に、プログラム取得部４００はホスト機器固有の情報を取得し、鍵生成部２２１７は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加復号化部２２１９は、追加暗号化部２２１８によって暗号化されたアプリケーションプログラムを、鍵生成部２２１７によって生成される暗号化鍵を用いて復号化する。復号化処理が完了すると、移動制御部４０４は、暗号化鍵を削除し、復号化されたアプリケーションプログラムをＲＡＭ４０６にコピーする。実行部４０９はＲＡＭ４０６にコピーされたアプリケーションプログラムを実行する。
【０１８０】
また、プログラム取得部４００は、ホスト機器２０２のユーザがホスト機器２０２に与えるそのユーザの指紋又はユーザが特定する番号等のユーザ固有の情報をホスト機器２０２から取得してもよい。その場合、鍵生成部２２１７は、ホスト機器２０２からユーザ固有の情報を用いて暗号化鍵を生成する。この場合、鍵生成部２２１７は、同一の暗号化鍵をいつでも生成することができるので、暗号化処理が完了し暗号化鍵が不要になれば暗号化鍵を削除することができる。これにより、移動対象のアプリケーションプログラムは、実施の形態１で説明した移動方法よりもセキュリティ強度を高めた状態で大容量不揮発性メモリ２０５に保存される。
【０１８１】
（実施の形態３）
実施の形態１では、サービスプロバイダよりダウンロードされたアプリケーションプログラムは、ＲＡＭ４０６のプログラム記憶領域４０６ａに保存される。しかしながら、全てのアプリケーションプログラムは、ダウンロード時に大容量不揮発性メモリ２０５に保存されてもよい。これにより、ＲＡＭ４０６の容量を小さくすることが可能となる。
【０１８２】
なお、上述した各実施の形態における、プログラム取得部４００、プログラム管理部４０１、履歴管理部４０２、格納制御部４０３、移動制御部４０４、復号化部４０８、実行部４０９、再読み込み部４１０、削除部４１１、鍵生成部２２１７、追加暗号化部２２１８、及び追加復号化部２２１９の全部又は一部の機能は、ＣＰＵがコンピュータプログラムを実行することにより実現されてもよい。
【０１８３】
また、大容量不揮発性メモリ２０５、プログラム取得部４００、プログラム管理部４０１、履歴管理部４０２、格納制御部４０３、移動制御部４０４、ＩＣカードＯＳ４０５、ＲＡＭ４０６、公開鍵記憶部４０７、復号化部４０８、実行部４０９、再読み込み部４１０、削除部４１１、鍵生成部２２１７、追加暗号化部２２１８、及び追加復号化部２２１９の全部又は一部は、集積回路により実現されてもよい。つまり、上記の全部の構成部は１チップ化されてもよいし、一部の構成部が１チップ化されてもよい。集積回路は、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）や、リコンフィギュラブル・プロセッサが利用されてもよい。
【産業上の利用可能性】
【０１８４】
本発明のメモリカードは、ＴＲＭ領域に保存しきれなくなったアプリケーションプログラムを、アプリケーションプログラムがダウンロードされた時のセキュリティ強度を保った状態で、大容量不揮発性メモリに移動させることができ、より多くのアプリケーションプログラムを一枚のメモリカード内に保存することが可能である。よって、本発明のメモリカードは、アプリケーションプログラムに対する強固な保護機能が要求されるＳＤカード、及びＩＣカード等として有用である。
【図面の簡単な説明】
【０１８５】
【図１】図１（Ａ）は、一般的なセキュアメモリカードのハードウェア構成図であり、図１（Ｂ）は、不揮発性メモリ群を構成するＦｅＲＡＭ、セキュアフラッシュ、及び、フラッシュメモリのセキュリティ強度を示す図である。
【図２】図２は、実施の形態１におけるシステム全体の概観図である。
【図３】図３は、一般的なセキュアメモリカードの概観図である。
【図４】図４は、実施の形態１におけるＳＤカードのブロック構成図である。
【図５】図５は、実施の形態１におけるＳＤカードのＴＲＭ２０４のブロック構成図である。
【図６】図６は、実施の形態１における履歴管理情報の例を示す図である。
【図７】図７は、実施の形態１におけるプログラム管理情報の例を示す図である。
【図８】図８は、実施の形態１におけるアプリケーションプログラムのダウンロード時におけるアプリケーションプログラムの移動処理フローを示す図である。
【図９】図９は、ＲＡＭ上に復号化済みのアプリケーションプログラムが存在する場合のアプリケーションプログラムのダウンロード処理におけるアプリケーションプログラムの移動処理のフローを示す図である。
【図１０】図１０は、実施の形態１におけるＲＡＭに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。
【図１１】図１１は、実施の形態１における大容量不揮発性メモリに移動したアプリケーションプログラムを実行する場合の処理フローを示す図である。
【図１２】図１２は、実施の形態１におけるサービスプロバイダが提供するアプリケーションプログラムの情報の一例を示す図である。
【図１３】図１３（Ａ）は、実施の形態１におけるアプリケーションプログラムＡのダウンロード処理完了後のプログラム管理情報を示す図であり、図１３（Ｂ）は、実施の形態１におけるアプリケーションプログラムＡのダウンロード処理完了後のＲＡＭの状態を示す図である。
【図１４】図１４（Ａ）は、実施の形態１におけるアプリケーションプログラムＢのダウンロード処理完了後のプログラム管理情報を示す図であり、図１４（Ｂ）は、実施の形態１におけるアプリケーションプログラムＢのダウンロード処理完了後のＲＡＭの状態を示す図である。
【図１５】図１５（Ａ）は、実施の形態１におけるアプリケーションプログラムＢの実行後のプログラム管理情報を示す図であり、図１５（Ｂ）は、実施の形態１におけるアプリケーションプログラムＢの実行後のＲＡＭの状態を示す図である。
【図１６】図１６（Ａ）は、実施の形態１におけるアプリケーションプログラムＣのダウンロード処理完了後のプログラム管理情報を示す図であり、図１６（Ｂ）は、実施の形態１におけるアプリケーションプログラムＣのダウンロード処理完了後のＲＡＭの状態を示す図である。
【図１７】図１７（Ａ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＡを移動対象として決定した後のプログラム管理情報を示す図であり、図１７（Ｂ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＡを移動対象として決定した後のＲＡＭの状態を示す図である。
【図１８】図１８（Ａ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＢも移動対象として決定した後のプログラム管理情報を示す図であり、図１８（Ｂ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＢも移動対象として決定した後のＲＡＭの状態を示す図である。
【図１９】図１９（Ａ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＡ及びアプリケーションプログラムＢをＲＡＭから削除した後のプログラム管理情報を示す図であり、図１９（Ｂ）は、実施の形態１におけるアプリケーションプログラムＣの実行にあたり、アプリケーションプログラムＡ及びアプリケーションプログラムＢを削除した後のＲＡＭの状態を示す図である。
【図２０】図２０（Ａ）は、実施の形態１におけるアプリケーションプログラムＢの実行にあたり、アプリケーションプログラムＣをＲＡＭから削除した後のプログラム管理情報を示す図であり、図２０（Ｂ）は、実施の形態１におけるアプリケーションプログラムＢの実行にあたり、アプリケーションプログラムＣを削除した後のＲＡＭの状態を示す図である。
【図２１】図２１（Ａ）は、実施の形態１におけるアプリケーションプログラムＢの実行後のプログラム管理情報を示す図であり、図２１（Ｂ）は、実施の形態１におけるアプリケーションプログラムＢの実行後のＲＡＭの状態を示す図である。
【図２２】図２２は、実施の形態２におけるＳＤカードのブロック構成図である。
【符号の説明】
【０１８６】
１００  セキュアメモリカード
１０１  不揮発性メモリ群
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  ＣＰＵ
１０５  ホストインタフェース
１０６  ＦｅＲＡＭ
１０７  ＴＲＭ
１０８  セキュアフラッシュ
１０９  フラッシュメモリ
２０１  サービスプロバイダ
２０２  ホスト機器
２０３  ＳＤカード
２０４  ＴＲＭ
２０５  大容量不揮発性メモリ
２０６  ＳＤカードコントローラ部
２０７  ＳＤインタフェース
３００  外部ＣＰＵ
３０１  セキュアメモリカード
３０２  制御部
３０３  内部ＣＰＵ
３０４  ＴＲＭ
３０５  大容量不揮発性メモリ
３０６  内部不揮発性メモリ
３０７  セキュア領域
３０８  認証領域
３０９  非認証領域
４００  プログラム取得部
４０１  プログラム管理部
４０２  履歴管理部
４０３  格納制御部
４０４  移動制御部
４０５  ＩＣカードＯＳ
４０６  ＲＡＭ
４０６ａ  プログラム記憶領域
４０７  公開鍵記憶部
４０８  復号化部
４０９  実行部
４１０  再読み込み部
４１１  削除部
４２０，４２１，４２２，４２３  アプリケーションプログラム
５０３  時刻情報取得部
５０５  移動判定部
５０７  一時記憶部
２２００  ＳＤカード
２２１７  鍵生成部
２２１８  追加暗号化部
２２１９  追加復号化部
【図１】
0004860619.tif 000002
【図２】
0004860619.tif 000003
【図３】
0004860619.tif 000004
【図４】
0004860619.tif 000005
【図５】
0004860619.tif 000006
【図６】
0004860619.tif 000007
【図７】
0004860619.tif 000008
【図８】
0004860619.tif 000009
【図９】
0004860619.tif 000010
【図１０】
0004860619.tif 000011
【図１１】
0004860619.tif 000012
【図１２】
0004860619.tif 000013
【図１３】
0004860619.tif 000014
【図１４】
0004860619.tif 000015
【図１５】
0004860619.tif 000016
【図１６】
0004860619.tif 000017
【図１７】
0004860619.tif 000018
【図１８】
0004860619.tif 000019
【図１９】
0004860619.tif 000020
【図２０】
0004860619.tif 000021
【図２１】
0004860619.tif 000022
【図２２】
0004860619.tif 000023