JPWO2006120938A1 - メモリカード、アプリケーションプログラム保持方法、及び保持プログラム - Google Patents

メモリカード、アプリケーションプログラム保持方法、及び保持プログラム Download PDF

Info

Publication number
JPWO2006120938A1
JPWO2006120938A1 JP2007528241A JP2007528241A JPWO2006120938A1 JP WO2006120938 A1 JPWO2006120938 A1 JP WO2006120938A1 JP 2007528241 A JP2007528241 A JP 2007528241A JP 2007528241 A JP2007528241 A JP 2007528241A JP WO2006120938 A1 JPWO2006120938 A1 JP WO2006120938A1
Authority
JP
Japan
Prior art keywords
application program
unit
program
ram
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007528241A
Other languages
English (en)
Other versions
JP4860619B2 (ja
Inventor
佳子 西村
佳子 西村
和行 柏原
和行 柏原
河原 栄治
栄治 河原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007528241A priority Critical patent/JP4860619B2/ja
Publication of JPWO2006120938A1 publication Critical patent/JPWO2006120938A1/ja
Application granted granted Critical
Publication of JP4860619B2 publication Critical patent/JP4860619B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3558Preliminary personalisation for transfer to user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/409Device specific authentication in transaction processing
    • G06Q20/4097Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
    • G06Q20/40975Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Finance (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本発明のメモリカードは、ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、耐タンパ機能を有するICカード部と、フラッシュメモリ部とを備え、前記ICカード部は、耐タンパ記憶部と、前記ホスト機器から、暗号化されているアプリケーションプログラムを取得するプログラム取得部と、取得された暗号化されているアプリケーションプログラムを前記耐タンパ記憶部又は前記フラッシュメモリ部に格納する格納制御部と、前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部とを有する。

Description

本発明は、アプリケーションプログラムを保持するメモリカードに関する。
smart Secure Digital memory card(以下「SDカード」という)をはじめとするIntegrated Circuit(IC)カード機能が搭載されたセキュアメモリカードの普及に伴い、使用されるアプリケーションプログラムの種類や利用者数が今後増加していくと予想される。
図1(A)は、一般的なセキュアメモリカードのハードウェア構成を示す図である。図1(A)に示すように、セキュアメモリカード100は、Read Only Memory(ROM)103と、Random Access Memory(RAM)102と、Central Processing Unit(CPU)104と、不揮発性メモリ群101とを備える。ROM103はアプリケーションプログラムを記憶する。RAM102はアプリケーションプログラムの実行の際に用いられるデータを一時的に記憶する。CPU104はアプリケーションプログラムに従って各種のコマンドに対する処理を実行する。不揮発性メモリ群101はメモリカードの外部からダウンロードされるアプリケーションプログラムを記憶する。
不揮発性メモリ群101は、耐タンパモジュール(TRM:Tamper Resistant Module)107内にあるFerroelectric RAM(FeRAM)106と、TRM107外にあるセキュアフラッシュ108と、TRM107外にあるフラッシュメモリ109とから構成される。セキュアフラッシュ108は、TRM107の機能を利用してセキュリティ強度が高められたフラッシュメモリである。
図1(B)は、不揮発性メモリ群101を構成する3つの不揮発性メモリのセキュリティ強度を示す図である。図1(B)に示すように、TRM107内にあるFeRAM106のセキュリティ強度が最も強く、その次にセキュアフラッシュ108のセキュリティ強度が強く、フラッシュメモリ109のセキュリティ強度が最も弱い。
サービスプロバイダからダウンロードされるアプリケーションプログラムは、通常はTRM107領域に保存される。TRM107領域の容量はフラッシュメモリ109に比べて非常に小さいため、TRM107領域に保存しきれないアプリケーションプログラムは、ユーザが削除する必要がある。
そこで、アプリケーションプログラムを削除することなく、TRM107領域に格納されているアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を確保した状態で、セキュアメモリカード100内のフラッシュメモリ109に移動させ、必要に応じてTRM107領域に復帰させることにより、より多くのアプリケーションプログラムを一枚のセキュアメモリカード100内に保存できるようにする仕組みが必要となってきている。
特許文献1には、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、そのアプリケーションプログラムの保存領域を振り分ける発明が開示されている。
特開2002−229861号公報
特許文献1に示される従来技術では、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、ダウンロード時に、アプリケーションプログラムをTRM領域とフラッシュメモリとのいずれかに振り分けて保存する。フラッシュメモリにアプリケーションプログラムを保存する場合、暗号化された状態でダウンロードされたアプリケーションプログラムを復号化した後、その復号化したアプリケーションプログラムを、TRM領域にあらかじめ格納されている秘密情報キーを用いて暗号化し、フラッシュメモリに保存する。つまり、従来技術では、セキュアメモリカード内のセキュリティレベルが最も低いフラッシュメモリにアプリケーションプログラムを保存する場合、そのアプリケーションプログラムをセキュアメモリカード内の秘密情報キーを用いて暗号化する。そのため、アプリケーションプログラムを提供するサービスプロバイダが要求するセキュリティ強度を保った状態で、ダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができない。
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することを目的とする。
上記目的を達成するために、本発明のメモリカードは、ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、耐タンパ機能を有するIntegrated Circuit(IC)カード部と、フラッシュメモリ部とを備え、前記ICカード部は、耐タンパ記憶部と、前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得部と、前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御部と、前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部と、前記実行対象のアプリケーションプログラムを復号化し、実行する実行部とを有する。
これにより、本発明のメモリカードは、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができる。
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量以下である場合、前記アプリケーションプログラムを前記耐タンパ記憶部に格納し、前記暗号化時のサイズが前記空き容量を超える場合、前記アプリケーションプログラムを前記フラッシュメモリ部に格納する。
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
例えば、前記実行部は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズと暗号化時のサイズとの合計が前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを前記耐タンパ記憶部に複写する。
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを復号化して、前記耐タンパ記憶部に格納する。
例えば、前記移動制御部は、アプリケーションプログラムの実行履歴に基づいて、アプリケーションプログラム毎のアクセス履歴管理情報を生成し、前記ICカード部は、更に、前記アクセス履歴管理情報に従って、前記フラッシュメモリ部に移動させるアプリケーションプログラムを決定する移動判定部を有してもよい。
例えば、前記プログラム取得部は、前記ホスト機器固有の情報を取得し、前記ICカード部は、更に、前記取得したホスト機器固有の情報を利用して暗号化鍵を生成する鍵生成部と、前記耐タンパ記憶部から前記フラッシュメモリ部への移動対象のアプリケーションプログラムを前記暗号化鍵により暗号化する追加暗号化部とを有し、前記移動制御部は、暗号化終了後に前記暗号化鍵を削除し、前記暗号化鍵により二重に暗号化されている前記移動対象のアプリケーションプログラムを前記フラッシュメモリ部へ移動させてもよい。
例えば、前記ICカード部は、更に、前記フラッシュメモリ部に格納されている前記暗号化鍵により二重に暗号化されているアプリケーションプログラムを前記耐タンパ記憶部へ複写する場合、複写対象の前記アプリケーションプログラムを前記鍵生成部が生成した暗号化鍵で復号化する追加復号化部を有し、前記移動制御部は、復号化終了後に前記暗号化鍵を削除し、複写対象の前記アプリケーションプログラムを前記耐タンパ記憶部に格納してもよい。
本発明は、本発明のメモリカードの特徴的な構成手段をステップとするアプリケーションプログラム保持方法として実現したり、それらのステップをコンピュータに実行させる保持プログラムとして実現したり、上記特徴的な構成手段を含む集積回路として実現することもできる。上記の保持プログラムは、CD−ROM等の記録媒体や通信ネットワーク等の伝送媒体を介して流通させることもできる。
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することができる。
本発明により、多くのアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を保った状態で一枚のセキュアメモリカード内に保存することが可能となる。
図1(A)は、一般的なセキュアメモリカードのハードウェア構成図であり、図1(B)は、不揮発性メモリ群を構成するFeRAM、セキュアフラッシュ、及び、フラッシュメモリのセキュリティ強度を示す図である。 図2は、実施の形態1におけるシステム全体の概観図である。 図3は、一般的なセキュアメモリカードの概観図である。 図4は、実施の形態1におけるSDカードのブロック構成図である。 図5は、実施の形態1におけるSDカードのTRM204のブロック構成図である。 図6は、実施の形態1における履歴管理情報の例を示す図である。 図7は、実施の形態1におけるプログラム管理情報の例を示す図である。 図8は、実施の形態1におけるアプリケーションプログラムのダウンロード時におけるアプリケーションプログラムの移動処理フローを示す図である。 図9は、RAM上に復号化済みのアプリケーションプログラムが存在する場合のアプリケーションプログラムのダウンロード処理におけるアプリケーションプログラムの移動処理のフローを示す図である。 図10は、実施の形態1におけるRAMに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。 図11は、実施の形態1における大容量不揮発性メモリに移動したアプリケーションプログラムを実行する場合の処理フローを示す図である。 図12は、実施の形態1におけるサービスプロバイダが提供するアプリケーションプログラムの情報の一例を示す図である。 図13(A)は、実施の形態1におけるアプリケーションプログラムAのダウンロード処理完了後のプログラム管理情報を示す図であり、図13(B)は、実施の形態1におけるアプリケーションプログラムAのダウンロード処理完了後のRAMの状態を示す図である。 図14(A)は、実施の形態1におけるアプリケーションプログラムBのダウンロード処理完了後のプログラム管理情報を示す図であり、図14(B)は、実施の形態1におけるアプリケーションプログラムBのダウンロード処理完了後のRAMの状態を示す図である。 図15(A)は、実施の形態1におけるアプリケーションプログラムBの実行後のプログラム管理情報を示す図であり、図15(B)は、実施の形態1におけるアプリケーションプログラムBの実行後のRAMの状態を示す図である。 図16(A)は、実施の形態1におけるアプリケーションプログラムCのダウンロード処理完了後のプログラム管理情報を示す図であり、図16(B)は、実施の形態1におけるアプリケーションプログラムCのダウンロード処理完了後のRAMの状態を示す図である。 図17(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムAを移動対象として決定した後のプログラム管理情報を示す図であり、図17(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムAを移動対象として決定した後のRAMの状態を示す図である。 図18(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムBも移動対象として決定した後のプログラム管理情報を示す図であり、図18(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムBも移動対象として決定した後のRAMの状態を示す図である。 図19(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムA及びアプリケーションプログラムBをRAMから削除した後のプログラム管理情報を示す図であり、図19(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムA及びアプリケーションプログラムBを削除した後のRAMの状態を示す図である。 図20(A)は、実施の形態1におけるアプリケーションプログラムBの実行にあたり、アプリケーションプログラムCをRAMから削除した後のプログラム管理情報を示す図であり、図20(B)は、実施の形態1におけるアプリケーションプログラムBの実行にあたり、アプリケーションプログラムCを削除した後のRAMの状態を示す図である。 図21(A)は、実施の形態1におけるアプリケーションプログラムBの実行後のプログラム管理情報を示す図であり、図21(B)は、実施の形態1におけるアプリケーションプログラムBの実行後のRAMの状態を示す図である。 図22は、実施の形態2におけるSDカードのブロック構成図である。
符号の説明
100 セキュアメモリカード
101 不揮発性メモリ群
102 RAM
103 ROM
104 CPU
105 ホストインタフェース
106 FeRAM
107 TRM
108 セキュアフラッシュ
109 フラッシュメモリ
201 サービスプロバイダ
202 ホスト機器
203 SDカード
204 TRM
205 大容量不揮発性メモリ
206 SDカードコントローラ部
207 SDインタフェース
300 外部CPU
301 セキュアメモリカード
302 制御部
303 内部CPU
304 TRM
305 大容量不揮発性メモリ
306 内部不揮発性メモリ
307 セキュア領域
308 認証領域
309 非認証領域
400 プログラム取得部
401 プログラム管理部
402 履歴管理部
403 格納制御部
404 移動制御部
405 ICカードOS
406 RAM
406a プログラム記憶領域
407 公開鍵記憶部
408 復号化部
409 実行部
410 再読み込み部
411 削除部
420,421,422,423 アプリケーションプログラム
503 時刻情報取得部
505 移動判定部
507 一時記憶部
2200 SDカード
2217 鍵生成部
2218 追加暗号化部
2219 追加復号化部
以下に、本発明を実施するための最良の形態について、図面を参照して説明する。
(実施の形態1)
実施の形態1におけるシステム全体の概観を図2に示す。実施の形態1では、セキュアメモリカードがSDカードである場合を想定する。
図2に示すように、実施の形態1のSDカード203は、携帯電話等のホスト機器202とSDインタフェース(以下「SDI/F」という)207を介して接続され、耐タンパ性モジュール(TRM)204と、大容量不揮発性メモリ205と、SDカードコントローラ部206とを備える。ホスト機器202は、携帯電話に限られず、SDI/Fを持つ機器であるならば、どのような機器であってもよい。
図3は、一般的なセキュアメモリカードの概観図である。図3に示すように、セキュアメモリカード301は、内部不揮発性メモリ306を有するTRM304と、セキュア領域307、認証領域308、及び非認証領域309を有する大容量不揮発性メモリ305と、内部不揮発性メモリ306及びセキュア領域307に対してアクセスする内部CPU303と、電子機器(リード/ライト(R/W)装置)の外部CPU300と通信して認証処理を行ない、認証した外部CPU300による認証領域308へのアクセスを許可する制御部302とを備える。
TRM304の内部不揮発性メモリ306は、例えば、1バイト単位でデータの消去及び書き込みができるElectronically Erasable and Programmable ROM(EEPROM)である。大容量不揮発性メモリ305は、例えば、64キロバイト等のブロック単位でのデータの消去と1バイト単位でのデータの書き込みとが可能なフラッシュメモリである。
外部CPU300は、非認証領域309に無条件でアクセスすることができる。外部CPU300は、認証領域308には、制御部302による認証が完了した場合にのみアクセスすることができる。しかし、外部CPU300は、セキュア領域307及び内部不揮発性メモリ306の存在を知ることができず、これらに直接アクセスすることはできない。セキュア領域307及び内部不揮発性メモリ306に対しては、内部CPU303だけがアクセス可能である。
セキュア領域307と内部不揮発性メモリ306との違いは、内部不揮発性メモリ306がTRM304内に設けられているのに対し、セキュア領域307がTRM304外の大容量不揮発性メモリ305に設けられている点である。そのため、セキュア領域307は、内部不揮発性メモリ306に比べて大きい蓄積容量を持つことができる反面、セキュリティレベルでは、TRM304内に設けられた内部不揮発性メモリ306に比べて低い。図3に示すように、これら4つの領域のセキュリティレベルは、非認証領域309が最も低く、認証領域308、セキュア領域307、内部不揮発性メモリ306の順に高くなっている。
図1(A)の不揮発性メモリ群101と、図3との対比関係は以下の通りである。図1(A)のFeRAM106が図3の内部不揮発性メモリ306に対応し、図1(A)のセキュアフラッシュ108が図3のセキュア領域307に対応し、図1(A)のフラッシュメモリ109が図3の認証領域308及び非認証領域309に対応する。
図4は、実施の形態1におけるSDカード203のブロック構成を示す図である。SDカード203は、SD規格で規定されているSDカードコントローラ部206と、TRM204と、大容量不揮発性メモリ205とを備える。SDカードコントローラ部206は、ホスト機器202との間でデータの送受信を行なうインタフェース部であり、TRM204は、耐タンパ機能が実装されているICカード部である。大容量不揮発性メモリ205としては、例えばフラッシュメモリが用いられる。
TRM204は、プログラム取得部400と、プログラム管理部401と、履歴管理部402と、格納制御部403と、移動制御部404と、ICカードOperating System(OS)405と、RAM406と、公開鍵記憶部407と、復号化部408と、実行部409とを有する。TRM204は、更に、再読み込み部410と、削除部411とを有するが、それらは図4には示されていない。再読み込み部410及び削除部411は、図5を用いて後述する。
プログラム取得部400は、サービスプロバイダからダウンロードされるアプリケーションプログラム420を、SDカードコントローラ部206経由で取得する。ダウンロードされるアプリケーションプログラム420は、サービスプロバイダが要求するセキュリティ強度で暗号化されている。
プログラム管理部401は、RAM406に保持されているアプリケーションプログラムや、大容量不揮発性メモリ205に保持されているアプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムの保存先とを管理する。アプリケーションプログラムの保存先は、RAM406又は大容量不揮発性メモリ205である。
履歴管理部402は、アプリケーションプログラムのアクセス履歴を管理する。
格納制御部403は、プログラム取得部400によって取得されるアプリケーションプログラムをRAM406のプログラム記憶領域406aに格納する。
移動制御部404は、移動対象のアプリケーションプログラムをRAM406のプログラム記憶領域406aから大容量不揮発性メモリ205に移動させる。
RAM406は、ホスト機器202からダウンロードされるアプリケーションプログラムをそのままの状態で、すなわち暗号化された状態で記憶するプログラム記憶領域406aを有する。RAM406は、復号化されたアプリケーションプログラムをも記憶する。すなわち、RAM406は、プログラム記憶領域406aに加え、プログラム記憶領域406aから読み出されたアプリケーションプログラム421、又は大容量不揮発性メモリ205から読み出されたアプリケーションプログラム423を復号化するための領域(第2領域)を有している。復号化されたアプリケーションプログラム422は、RAM406の第2領域に保持される。プログラム記憶領域406a及び第2領域は固定された領域ではない。
公開鍵記憶部407は、暗号化されているアプリケーションプログラムを復号化するための公開鍵を保持する。
復号化部408は、暗号化されているアプリケーションプログラムを、公開鍵記憶部407によって保持されている公開鍵で復号化する。
実行部409は、復号化処理されたアプリケーションプログラム422を実行する。
図5は、TRM204における、アプリケーションプログラムの移動を実行する構成部のブロック図である。図5に示すように、TRM204は、プログラム管理部401と、履歴管理部402と、格納制御部403と、移動制御部404と、実行部409と、再読み込み部410と、削除部411とを有する。移動制御部404は、時刻情報取得部503と、移動判定部505と、一時記憶部507とを有する。
時刻情報取得部503は、SDI/F207を介して、ホスト機器202より時刻情報を取得する。時刻情報取得部503は、アプリケーションプログラムにアクセスする度に現在時刻を取得してもよい。時刻情報取得部503は、アプリケーションプログラムのダウンロード時にその時点での現在時刻を取得し、その後の経過時間はSDカード203内のCPUのクロックから算出し、アプリケーションプログラムのダウンロード時の時刻に算出した経過時間を加算することにより、アプリケーションプログラムにアクセスする際の時刻を取得してもよい。時刻情報取得部503による現在時刻の取得方法は問わない。
一時記憶部507は、ダウンロード開始時に通知されるダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報を一時的に記憶する。
図6は、履歴管理部402によって管理される履歴管理情報509の例を示す図である。図6に示すように、履歴管理情報509は、アプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムへの最終のアクセス日を示す最終アクセス日と、最終アクセス日の直前のアプリケーションプログラムへのアクセス日を示す前々回アクセス日と、前々回アクセス日から最終アクセス日までの経過日数を示すアクセス間隔との4項目から構成される。
図7は、プログラム管理部401によって管理されるプログラム管理情報510の例を示す図である。図7に示すように、プログラム管理情報510は、アプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムの保存先と、アプリケーションプログラムの暗号化時のサイズと、アプリケーションプログラムの復号化時のサイズと、プログラム記憶領域406aから大容量不揮発性メモリ205への移動対象に決定されたアプリケーションプログラムであることを示す移動フラグと、アプリケーションプログラムの実行時に実行対象のアプリケーションプログラムの復号化が完了していることを示す復号化済みフラグとから構成される。アプリケーションプログラムの保存先は、TRM204(RAM406)又は大容量不揮発性メモリ205である。プログラム記憶領域406aから大容量不揮発性メモリ205への移動対象に決定されたアプリケーションプログラムの移動フラグには、“1”(ON)が記載される。復号化が完了しているアプリケーションプログラムの復号化済みフラグには、“1”が記載される。
移動判定部505は、時刻情報取得部503から取得する現在時刻、一時記憶部507で保持されているアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報、履歴管理部402から取得する履歴管理情報509、及びプログラム管理部401から取得するプログラム管理情報を用いて、TRM204から大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定する。
TRM204から大容量不揮発性メモリ205に移動させるアプリケーションプログラムの決定手順を以下に示す。
初めに、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、RAM406の全容量と、RAM406に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のRAM406の空き容量を取得する。
アプリケーションプログラムをダウンロードする場合、移動判定部505は、一時記憶部507に記憶されているダウンロード対象のアプリケーションプログラム420の暗号化時のデータサイズと、先に取得したRAM406の空き容量とを比較する。ダウンロード対象のアプリケーションプログラム420の暗号化時のデータサイズがRAM406の空き容量を超える場合、プログラム記憶領域406aに保存されているアプリケーションプログラム421のいずれかを、大容量不揮発性メモリ205に移動させる処理に移行する。
アプリケーションプログラムを実行する場合、移動判定部505は、実行対象となるアプリケーションプログラムの復号化時のデータサイズと、RAM406の空き容量とを比較する。復号化時のアプリケーションプログラム422のサイズが、RAM406の空き容量を超える場合、プログラム記憶領域406aに保存されているアプリケーションプログラム421のいずれかを、大容量不揮発性メモリ205に移動させる処理に移行する。
移動判定部505は、時刻情報取得部503より現在時刻を取得する。
移動判定部505は、プログラム管理部401に問合せ、プログラム管理情報510の中で、保存先がTRM204であるアプリケーションプログラムのIDを取得する。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する。移動判定部505は、最終アクセス日が最も古いアプリケーションプログラムを移動対象のアプリケーションプログラムと決定し、先のプログラム管理部401への問合せの結果より抽出したプログラムIDの中から、移動対象に決定されたアプリケーションプログラムのIDを取得するとともに、そのアプリケーションプログラムの暗号化時のデータサイズを取得する。そして、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムに関して、プログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新するように指示する。
次に、移動判定部505は、移動対象として決定したアプリケーションプログラムの暗号化時のデータサイズをRAM406の空き容量に加算し、アプリケーションプログラムのダウンロード、又はアプリケーションプログラムの復号化処理に十分なRAM406の空き容量が確保できるか否かを確認する。1個のアプリケーションプログラムを大容量不揮発性メモリ205に移動しても十分なRAM406の空き容量が確保できない場合、移動判定部505は、再度、プログラム管理部401及び履歴管理部402に問合せ、大容量不揮発性メモリ205に移動させるアプリケーションプログラムのIDを抽出する。移動判定部505は、アプリケーションプログラムのダウンロード、又は実行対象のアプリケーションプログラムの復号化を行なうために必要なRAM406の領域が確保することができるまで、大容量不揮発性メモリ205へ移動させるアプリケーションプログラムのIDの抽出を繰り返す。
また、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する場合においても、RAM406上に、アプリケーションプログラム423の復号化に必要な領域が確保できないときは、移動判定部505は、上記と同様の処理を行なう。これにより、RAM406上に、アプリケーションプログラム423の復号化に必要な領域が確保される。
最後に、移動判定部505は、プログラム管理情報510において移動フラグがON(1)になっているアプリケーションプログラムのIDを、移動制御部404に通知する。
移動制御部404は、移動判定部505から通知されたプログラムIDを持つアプリケーションプログラムを、大容量不揮発性メモリ205にコピーする。移動制御部404は、アプリケーションプログラムの大容量不揮発性メモリ205へのコピーが完了すると、移動判定部505を介して、プログラム管理部401にプログラム管理情報510の移動フラグを全てOFF(0)にするように指示する。移動制御部404は、大容量不揮発性メモリ205へのコピーが完了したアプリケーションプログラム421を削除する。
削除部411は、復号化済みで実行対象ではなくなったアプリケーションプログラム422を削除する。
実行部409は、復号化処理されたアプリケーションプログラム422を実行する。
再読み込み部410は、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する際に、アプリケーションプログラム423を大容量不揮発性メモリ205から読み込む。
図8は、アプリケーションプログラムをダウンロードする時のアプリケーションプログラムの移動処理のフローを示す図である。アプリケーションプログラムのダウンロードが開始されると(S800)、TRM204内の各構成部は、以下のように動作する。
初めに、一時記憶部507は、ダウンロードに先立って通知されたダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズを保持する。
次に、移動判定部505は、プログラム管理部401よりプログラム管理情報510を取得し、RAM406の全容量と、RAM406に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のRAM406の空き容量を取得する(S801)。
次に、移動判定部505は、取得したRAM406の空き容量と、一時記憶部507に保存されているダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズとを比較する(S802)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。
ダウンロード対象のアプリケーションプログラムのサイズが、RAM406の空き容量以下である場合(S802でYes)、プログラム取得部400はダウンロードされるアプリケーションプログラムを取得し、格納制御部403は取得されるアプリケーションプログラムをRAM406のプログラム記憶領域406aに格納する(S803)。そして、移動判定部505はプログラム管理部401にプログラム管理情報510を更新するように指示し、プログラム管理部401はプログラム管理情報510を更新し(S812)、ダウンロード処理は終了する(S813)。
逆に、ダウンロード対象のアプリケーションプログラムのサイズが、RAM406の空き容量を超える場合(S802でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
最初に、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S804)。
次に、移動判定部505は、プログラム管理部401に問合せ、プログラム管理情報510を取得し、保存先がTRM204であるアプリケーションプログラムのIDを取得する(S805)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S806)。
移動判定部505は、S806で取得した履歴管理情報509から、S805で取得したプログラムIDのうち最終アクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムと決定し、プログラム管理情報510から移動対象のアプリケーションプログラムの暗号化時のデータサイズを取得する(S807)。
次に、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定するとともに、保存先を大容量不揮発性メモリ205に更新するように指示し、その指示に従って、プログラム管理部401はプログラム管理情報510を更新する(S808)。
格納制御部403は、S807で決定された移動対象のアプリケーションプログラムを、大容量不揮発性メモリ205に移動する(S810)。次に、移動処理後のRAMの空き容量を取得し、S802に遷移して、ダウンロードするアプリケーションプログラムがプログラム記憶領域406aに保存可能となるまで、S802からS810の処理を繰り返す。
最後に、プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、アプリケーションプログラムをダウンロードする処理は終了する(S813)。
なお、上記では、S807において、移動判定部505は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部505は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部505は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定してもよい。しかしながら、RAM406の空き容量をダウンロード対象等のRAM406に格納されるアプリケーションプログラムのサイズ以上にする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
図9は、RAM406上に復号化済みのアプリケーションプログラム422が存在する場合における、アプリケーションプログラムのダウンロード時のアプリケーションプログラム移動処理のフローを示す図である。図8における処理フローとほぼ同じであるが、異なる点はS904である。図8における処理フローでは、RAM406の空き領域確保のため、プログラム記憶領域406aに保存されているアプリケーションプログラム421の中から、大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定する。しかしながら、S904において、削除部411は、大容量不揮発性メモリ205に移動させるアプリケーションプログラムが決定されることより優先して、RAM406に存在する復号化済みのアプリケーションプログラム422を削除する。この点が図9と図8とが異なる。
図10は、プログラム記憶領域406aに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。
アプリケーションプログラムの実行が開始されると(S1000)、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、S801と同様の手順でRAM406の空き容量を取得する(S1001)。
また、移動判定部505は、S1001において取得したプログラム管理情報510から、実行対象のアプリケーションプログラムの復号化後のサイズを取得する(S1002)。
次に、移動判定部505は、取得したRAM406の空き容量と、S1002で取得した復号化後のデータサイズとを比較する(S1003)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。復号化後のデータサイズがRAM406の空き容量以下である場合(S1003でYes)、復号化部408は、暗号化されている実行対象のアプリケーションプログラムを復号化し(S1004)、プログラム管理部401はプログラム管理情報510を更新し(S1012)、実行部409はアプリケーションプログラムを実行する(S1013)。逆に、復号化後のデータサイズがRAM406の空き容量を超える場合(S1003でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
初めに、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S1005)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S1006)。移動判定部505は、S1006で取得された履歴管理情報509とS1002で取得されたプログラム管理情報510とから、保存先がTRM204であるアプリケーションプログラムで、かつ最終のアクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムと決定し、その暗号化時のデータサイズを取得する(S1007)。なお、図8と同様に、履歴管理情報509から移動させるアプリケーションプログラムを決定するアルゴリズムは、使用頻度等を考慮した決定方法でもよく、その方法は問わない。
次に、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新するように指示し、プログラム管理部401は、プログラム管理情報510を更新する(S1008)。
移動制御部404は、S1007で移動対象に決定されたアプリケーションプログラムを、大容量不揮発性メモリ205に移動する(S1010)。次に、移動処理後のRAMの空き容量を取得し、S1003に遷移して、実行対象のアプリケーションプログラムの復号化処理が実行できるだけのRAM406の空き容量が確保できるまで、S1003からS1010の処理を繰り返す。
次に、復号化部408は、実行対象のアプリケーションプログラムの復号化処理を行なう(S1004)。
プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、プログラム管理情報510を更新する(S1012)。
そして、実行部409はアプリケーションプログラムを実行する(S1013)。
図11は、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する場合の処理フローを示す図である。アプリケーションプログラムの実行が開始されると(S1100)、TRM204内の各構成部は、以下のように動作する。
初めに、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、実行しようとするアプリケーションプログラムの保存先が大容量不揮発性メモリ205であることを確認するとともに、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとを取得する(S1101)。
次に、移動判定部505は、S1101で取得したプログラム管理情報510の保存先情報、暗号化時のデータサイズ、及び復号化後のデータサイズより、RAM406の空き容量を取得する(S1102)。
次に、移動判定部505は、S1101で取得した実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、S1102で取得したRAM406の空き容量とを比較する(S1103)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。
上記合計がRAM406の空き容量以下である場合(S1103でYes)、再読み込み部410は、大容量不揮発性メモリ205から実行対象のアプリケーションプログラム423を読み込み、格納制御部403は読み込まれた実行対象のアプリケーションプログラム423をRAM406に格納する(S1104)。復号化部408は復号化処理を行ない(S1105)、プログラム管理部401はプログラム管理情報510を更新し(S1113)、実行部409は実行対象のアプリケーションプログラムを実行する(S1114)。
逆に、上記合計がRAM406の空き容量を超える場合(S1103でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
まず、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S1106)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S1107)。
次に、移動判定部505は、S1101で取得したプログラム管理情報510の中で、保存先がTRM204であるアプリケーションプログラムで、かつS1107で取得した履歴管理情報509の中で、最終アクセス日が最も古いプログラムIDを抽出する。移動判定部505は、抽出したプログラムIDに対応するアプリケーションプログラムを大容量不揮発性メモリ205への移動対象と決定し(S1108)、プログラム管理情報510より、移動対象に決定されたアプリケーションプログラムの暗号化時のデータサイズを取得する。
次に、プログラム管理部401は、移動対象に決定されたアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新する(S1109)。
移動制御部404は、S1108で移動対象に決定したアプリケーションプログラムを、プログラム記憶領域406aから大容量不揮発性メモリ205に移動する(S1111)。次に、移動処理後のRAMの空き容量を取得し、S1103に遷移して、実行対象のアプリケーションプログラムの復号化処理が可能になるまでS1103からS1111の処理を繰り返す。
最後に、プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、アプリケーションプログラムの移動処理は終了する。
アプリケーションプログラムの移動処理が終了した後、移動制御部404は、実行対象のアプリケーションプログラム423を大容量不揮発性メモリ205から読み込み、読み込んだ実行対象のアプリケーションプログラム423をRAM406にコピーする(S1104)。
最後に、移動制御部404は復号化処理を行ない(S1105)、プログラム管理部401はプログラム管理情報510を更新し(S1113)、その後、実行部409は、S1105で復号化済みのアプリケーションプログラム422を実行する(S1114)。
なお、S1108において、移動判定部505は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部505は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部505は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定してもよい。RAM406の空き容量をダウンロード対象等のRAM406に格納されるアプリケーションプログラムのサイズより大きくする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
また、図11に示す処理フローでは、RAM406の空き領域確保のための処理において、S1106からS1110で示すようなプログラム記憶領域406aに保存されているアプリケーションプログラム421の移動処理が行なわれる。しかしながら、RAM406に復号化済みのアプリケーションプログラム422が存在する場合、削除部411がRAM406に存在する復号化済みのアプリケーションプログラム422を削除する処理が、優先されてもよい。
また、図11に示す処理フローでは、S1103において、移動判定部505は、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、RAM406の空き容量とを比較する。しかしながら、S1103において、移動判定部505は、実行対象のアプリケーションプログラムの復号化時のデータサイズと、RAM406の空き容量とを比較してもよい。
その場合、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量以下であるとき(S1103でYes)、復号化部408は実行対象のアプリケーションプログラム423を読み込んで復号化処理を行なってRAM406に格納してもよい。他方、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量を超えるとき(S1103でNo)、移動判定部505は、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量以下になるように、RAM406の空き容量を確保するための処理を開始する。
上述した構成及び動作により、サービスプロバイダからダウンロードされたアプリケーションプログラムを、ダウンロードされたときの暗号化された状態のまま大容量不揮発性メモリ205に簡単に移動させることができる。そのため、サービスプロバイダが要求するセキュリティ強度を保った状態で、より多くのアプリケーションプログラムを、SDカード203をはじめとするICカード機能が搭載されたセキュアメモリカード内に保存することが可能となる。
図12は、サービスプロバイダが提供するアプリケーションプログラムの情報の一例を示している。
以下に、図12に示すアプリケーションプログラムのダウンロード時の処理及び実行時の処理を具体的に説明する。以下では、RAM406の全体の容量は120KBであると仮定する。
ステップ1として、RAM406が未使用の状態であり、SDカード203にアプリケーションプログラムAをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムAのダウンロード指示により、アプリケーションプログラムAのダウンロード処理が開始する。
ダウンロード処理が開始されると、サービスプロバイダよりアプリケーションプログラムAの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報が、SDカード203に送信されてくる。それら送信される情報は一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムAの暗号化時のデータサイズとして10KBが、アプリケーションプログラムAの復号化時のデータサイズとして30KBが保存される。
次に、移動判定部505は、プログラム管理部401よりプログラム管理情報510を取得し、RAM406の空き容量を取得する。この場合、アプリケーションプログラムが何もダウンロードされていない状態なので、RAM406の使用領域のサイズは0KBであり、RAM406の空き領域は120KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムAの暗号化時のデータサイズと、RAM406の空き容量とを比較する。この場合、移動判定部505は、アプリケーションプログラムAの暗号化時のデータサイズが10KBであり、RAM406の空き容量が120KBであるため、アプリケーションプログラムAをプログラム記憶領域406aに保存可能であると判断し、格納制御部403はアプリケーションプログラムAをプログラム記憶領域406aに保存する。
以上により、アプリケーションプログラムAのダウンロード処理が完了する。
アプリケーションプログラムAのダウンロード処理が完了した後、プログラム管理情報510は、プログラム管理部401によって、図13(A)のように更新される。また、RAM406の状態は、図13(B)のようになる。
引き続き、ステップ2として、SDカード203にアプリケーションプログラムBをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBのダウンロード指示により、アプリケーションプログラムBのダウンロード処理が開始する。
ダウンロード処理が開始されると、ステップ1で示したアプリケーションプログラムAのダウンロード時と同様に、アプリケーションプログラムBに関する情報(暗号化時のデータサイズ及び復号化時のデータサイズ)が、一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムBの暗号化時のデータサイズとして30KBが、アプリケーションプログラムBの復号化時のデータサイズとして50KBが保存される。
次に、移動判定部505は、プログラム管理部401よりステップ1で更新済みのプログラム管理情報1300を取得し、RAM406の空き容量を取得する。この場合、RAM406に保存されているアプリケーションプログラムは、アプリケーションプログラムAのみであり、RAM406の使用領域サイズは10KBであることから、RAM406の空き領域は110KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの暗号化時のデータサイズと、RAM406の空き容量とを比較する。この場合、移動判定部505は、アプリケーションプログラムBの暗号化時のデータサイズが30KBであり、RAM406の空き領域は110KBであるため、アプリケーションプログラムBをプログラム記憶領域406aに保存可能であると判断し、格納制御部403はアプリケーションプログラムBをプログラム記憶領域406aに保存する。
以上により、アプリケーションプログラムBのダウンロード処理が完了する。
アプリケーションプログラムBのダウンロード処理が完了した後、プログラム管理情報1300は、プログラム管理部401によって、図14(A)のように更新される。また、RAM406の状態は、図14(B)のようになる。
続いて、ステップ3として、アプリケーションプログラムBを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBの実行指示により、アプリケーションプログラムBの実行処理が開始する。
初めに、移動判定部505は、プログラム管理部401からステップ2で更新済みのプログラム管理情報1400を取得し、実行対象であるアプリケーションプログラムBの復号化後のデータサイズを取得し、一時記憶部507に保存する。この場合、一時記憶部507に保存される値は50KBとなる。
次に、移動判定部505は、プログラム管理情報1400より、RAM406の空き容量を取得する。この場合、RAM406には、暗号化されたアプリケーションプログラムA(10KB)と、暗号化されたアプリケーションプログラムB(30KB)とが含まれるため、RAM406の空き容量は80KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ50KBと、RAM406の空き容量80KBとを比較し、アプリケーションプログラムBはRAM406上で復号化可能であると判断する。
この後、S1004で示したように、復号化部408はアプリケーションプログラムBを復号化処理し、プログラム管理部401は、プログラム管理情報1400を図15(A)のように更新する。RAM406の状態は、図15(B)のようになる。
以上により、アプリケーションプログラムBが実行可能状態となり、実行部409はアプリケーションプログラムBを実行する。
続いて、ステップ4として、SDカード203にアプリケーションプログラムCをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムCのダウンロード指示により、アプリケーションプログラムCのダウンロード処理が開始する。
ダウンロード処理が開始されると、ステップ1で示したアプリケーションプログラムAのダウンロード時と同様に、アプリケーションプログラムCに関する情報(暗号化時のデータサイズ及び復号化時のデータサイズ)が、一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムCの暗号化時のデータサイズとして40KBが、アプリケーションプログラムCの復号化時のデータサイズとして70KBが保存される。
次に、移動判定部505は、プログラム管理部401よりステップ3で更新済みのプログラム管理情報1500を取得し、RAM406の空き容量を取得する。この場合、RAM406には、暗号化されたアプリケーションプログラムA(10KB)と、暗号化されたアプリケーションプログラムB(30KB)と、復号化されたアプリケーションプログラムB(50KB)とが存在することから、RAM406の空き容量は30KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの暗号化時のデータサイズ(40KB)と、RAM406の空き容量(30KB)とを比較する。この場合、RAM406の空き容量が不足することから、移動判定部505は、RAM406の空き容量を確保するための処理を行なう。
RAM406の空き容量を確保するための処理フローとして、ここではS904を採用する。
すなわち、移動判定部505は、RAM406に存在している3つのアプリケーションプログラムの中で、S904の処理フローに基づき、復号化されたアプリケーションプログラムBを削除する処理を選択する。
次に、移動判定部505は、再度、RAM406の空き容量を取得する。復号化されたアプリケーションプログラムBが削除された後のRAM406の空き容量は80KBとなる。移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの暗号化時のデータサイズ(40KB)と、RAM406の空き容量(80KB)とを比較し、アプリケーションプログラムCがダウンロード可能であると判断する。
次に、格納制御部403は、ダウンロードされたアプリケーションプログラムCをプログラム記憶領域406aに保存する。
そして、プログラム管理部401によって、プログラム管理情報1500は、図16(A)のように更新される。また、RAM406の状態は、図16(B)のようになる。
以上により、アプリケーションプログラムCのダウンロード処理が完了する。
続いて、ステップ5として、アプリケーションプログラムCを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムCの実行指示により、アプリケーションプログラムCの実行処理が開始する。
ステップ3で述べたように、初めに、移動判定部505は、更新済みのプログラム管理情報1600からアプリケーションプログラムCの復号化後のデータサイズ(70KB)を取得し、一時記憶部507に保存する。
次に、移動判定部505は、ステップ3で述べたように、プログラム管理情報1600よりRAM406の空き容量を取得する。この場合、RAM406の空き容量は40KBである。
そして、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(40KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上に確保できないと判断する。
そして、移動判定部505は、S1005からS1008の処理フローに基づき、大容量不揮発性メモリ205に移動すべきアプリケーションプログラムを決定する処理を行なう。ここでは、最初にダウンロードされたアプリケーションプログラムからダウンロード順に大容量不揮発性メモリ205に移動させる場合を想定する。移動判定部505は、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムとして、ステップ1でダウンロードされたアプリケーションプログラムAを決定する。
次に、プログラム管理部401は、プログラム管理情報1600を、図17(A)のように更新する。また、RAM406の状態は、図17(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(50KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上にまだ確保できないと判断する。
移動判定部505は、移動対象となるアプリケーションプログラムとして、ステップ2でダウンロードされたアプリケーションプログラムBを選択する。
そして、プログラム管理部401は、プログラム管理情報1700を、図18(A)のように更新する。また、RAM406の状態は、図18(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(80KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上に確保できたと判断する。
移動制御部404は、プログラム管理情報1800において、移動フラグがON(1)に設定されているアプリケーションプログラムA(ID:0x0001)とアプリケーションプログラムB(ID:0x0002)とを、RAM406から大容量不揮発性メモリ205にコピーする。
そして、移動制御部404は、コピーが完了したアプリケーションプログラムAとアプリケーションプログラムBとを、プログラム記憶領域406aから削除する。
最後に、プログラム管理部401によって、プログラム管理情報1800は、図19(A)のように更新される。また、RAM406の状態は、図19(B)のようになる。
以上により、アプリケーションプログラムCが実行可能状態となり、実行部409はアプリケーションプログラムCを実行する。
続いて、ステップ6として、大容量不揮発性メモリ205に移動したアプリケーションプログラムBを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBの実行指示により、アプリケーションプログラムBの実行処理が開始する。
ステップ3で述べたように、初めに、移動判定部505は、更新済みのプログラム管理情報1900からアプリケーションプログラムBの復号化後のデータサイズ(50KB)を取得し、一時記憶部507に保存する。
次に、移動判定部505は、ステップ3で述べたように、プログラム管理情報1900よりRAM406の空き容量を取得する。この場合、RAM406の空き容量は10KBである。
そして、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ(50KB)と、RAM406の空き容量(10KB)とを比較し、アプリケーションプログラムBの実行に必要な領域がRAM406上に確保できないと判断する。
そして、移動判定部505は、RAM406上の復号化済みのアプリケーションプログラムを優先して削除する処理フローをまず採用し、プログラム管理情報1900に基づいて、復号化されたアプリケーションプログラムCを削除対象と決定する。
そして、削除部411は、RAM406上の復号化されたアプリケーションプログラムC(70KB)を削除する。
アプリケーションプログラムCが削除された後、プログラム管理部401はプログラム管理情報1900を図20(A)のように更新する。また、RAM406の状態は、図20(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ(50KB)と、RAM406の空き容量(80KB)とを比較し、RAM406上に、アプリケーションプログラムBを復号化するための領域が確保できたと判断する。
移動制御部404は、大容量不揮発性メモリ205からアプリケーションプログラムBを読み出してRAM406にコピーし、アプリケーションプログラムBの復号化処理を行なう。
そして、プログラム管理部401は、プログラム管理情報2000を図21(A)のように更新する。このとき、RAM406の状態は、図21(B)のようになる。
最後に、実行部409は、復号化処理されたアプリケーションプログラムBを実行する。
以上により、大容量不揮発性メモリ205に移動していたアプリケーションプログラムBが実行される。
なお、実施の形態1では、TRM204は本発明のメモリカードのICカード部の一例である。大容量不揮発性メモリ205は本発明のメモリカードのフラッシュメモリ部の一例である。RAM406は本発明のメモリカードの耐タンパ記憶部の一例である。
アプリケーションプログラムの復号化時のデータサイズがダウンロードされるので、実行部409は、そのアプリケーションプログラムを実行するとき、そのアプリケーションプログラムの復号化時のデータサイズを、そのアプリケーションプログラムを実行することにより取得し、その取得したサイズがダウンロードされたサイズと一致しているか否かを判断してもよい。両者が一致していなければ、実行対象のアプリケーションプログラムは不正なプログラムであるので、実行部409はそのアプリケーションプログラムの実行を停止する。これにより、正規のアプリケーションプログラムのみの実行が継続される、という効果が得られる。
また、格納制御部403は、サービスプロバイダからダウンロードされるアプリケーションプログラム420をプログラム記憶領域406aに格納するとともに、大容量不揮発性メモリ205にも格納してもよい。この場合、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズがRAM406の空き容量を超えるとき、格納制御部403がRAM406に存在する暗号化されているアプリケーションプログラムのいずれかを削除するだけで、RAM406の空き容量は、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズよりも大きくなり、そのアプリケーションプログラムをRAM406に配置することができる。
また、格納制御部403は、ダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズがRAM406の空き容量を超える場合、プログラム取得部400によって取得されるダウンロード対象のアプリケーションプログラムを大容量不揮発性メモリ205に格納してもよい。
また、実行部409は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを大容量不揮発性メモリ205に移動させてもよい。
(実施の形態2)
図22は、実施の形態2におけるSDカード2200のブロック構成を示す図である。SDカード2200は、実施の形態1のSDカード203が備える構成部に加えて、鍵生成部2217と、追加暗号化部2218と、追加復号化部2219とを備える。なお、説明の簡単化のため、図22には、図4に記載されているプログラム管理部401、履歴管理部402、格納制御部403、公開鍵記憶部407、復号化部408、及び、実行部409は、記載されていない。
プログラム取得部400は、ホスト機器202からSubscriber Identity Module Identifier(SIM ID)や端末ID等のホスト機器固有の情報を取得し、鍵生成部2217は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加暗号化部2218は、移動制御部404によって決定された、TRM204から大容量不揮発性メモリ205への移動対象のアプリケーションプログラムを、鍵生成部2217によって生成された暗号化鍵で暗号化する。移動制御部404は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを、RAM406から大容量不揮発性メモリ205へコピーする。
移動制御部404は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを大容量不揮発性メモリ205へコピーした後、移動対象のアプリケーションプログラムをプログラム記憶領域406aから削除する。そして、鍵生成部2217は暗号化鍵を削除する。
このように、実施の形態2では、移動対象のアプリケーションプログラムを鍵生成部2217によって生成された暗号化鍵で暗号化して大容量不揮発性メモリ205へ移動させ、その後暗号化鍵を削除する。これにより、実施の形態2では、実施の形態1で説明した移動方法よりもセキュリティ強度を高めた状態で、移動対象のアプリケーションプログラムを大容量不揮発性メモリ205に保存することができる。
大容量不揮発性メモリ205に保存されているアプリケーションプログラムをRAM406にコピーして実行する場合、上記と同様に、プログラム取得部400はホスト機器固有の情報を取得し、鍵生成部2217は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加復号化部2219は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを、鍵生成部2217によって生成される暗号化鍵を用いて復号化する。復号化処理が完了すると、移動制御部404は、暗号化鍵を削除し、復号化されたアプリケーションプログラムをRAM406にコピーする。実行部409はRAM406にコピーされたアプリケーションプログラムを実行する。
また、プログラム取得部400は、ホスト機器202のユーザがホスト機器202に与えるそのユーザの指紋又はユーザが特定する番号等のユーザ固有の情報をホスト機器202から取得してもよい。その場合、鍵生成部2217は、ホスト機器202からユーザ固有の情報を用いて暗号化鍵を生成する。この場合、鍵生成部2217は、同一の暗号化鍵をいつでも生成することができるので、暗号化処理が完了し暗号化鍵が不要になれば暗号化鍵を削除することができる。これにより、移動対象のアプリケーションプログラムは、実施の形態1で説明した移動方法よりもセキュリティ強度を高めた状態で大容量不揮発性メモリ205に保存される。
(実施の形態3)
実施の形態1では、サービスプロバイダよりダウンロードされたアプリケーションプログラムは、RAM406のプログラム記憶領域406aに保存される。しかしながら、全てのアプリケーションプログラムは、ダウンロード時に大容量不揮発性メモリ205に保存されてもよい。これにより、RAM406の容量を小さくすることが可能となる。
なお、上述した各実施の形態における、プログラム取得部400、プログラム管理部401、履歴管理部402、格納制御部403、移動制御部404、復号化部408、実行部409、再読み込み部410、削除部411、鍵生成部2217、追加暗号化部2218、及び追加復号化部2219の全部又は一部の機能は、CPUがコンピュータプログラムを実行することにより実現されてもよい。
また、大容量不揮発性メモリ205、プログラム取得部400、プログラム管理部401、履歴管理部402、格納制御部403、移動制御部404、ICカードOS405、RAM406、公開鍵記憶部407、復号化部408、実行部409、再読み込み部410、削除部411、鍵生成部2217、追加暗号化部2218、及び追加復号化部2219の全部又は一部は、集積回路により実現されてもよい。つまり、上記の全部の構成部は1チップ化されてもよいし、一部の構成部が1チップ化されてもよい。集積回路は、Field Programmable Gate Array(FPGA)や、リコンフィギュラブル・プロセッサが利用されてもよい。
本発明のメモリカードは、TRM領域に保存しきれなくなったアプリケーションプログラムを、アプリケーションプログラムがダウンロードされた時のセキュリティ強度を保った状態で、大容量不揮発性メモリに移動させることができ、より多くのアプリケーションプログラムを一枚のメモリカード内に保存することが可能である。よって、本発明のメモリカードは、アプリケーションプログラムに対する強固な保護機能が要求されるSDカード、及びICカード等として有用である。
本発明は、アプリケーションプログラムを保持するメモリカードに関する。
smart Secure Digital memory card(以下「SDカード」という)をはじめとするIntegrated Circuit(IC)カード機能が搭載されたセキュアメモリカードの普及に伴い、使用されるアプリケーションプログラムの種類や利用者数が今後増加していくと予想される。
図1(A)は、一般的なセキュアメモリカードのハードウェア構成を示す図である。図1(A)に示すように、セキュアメモリカード100は、Read Only Memory(ROM)103と、Random Access Memory(RAM)102と、Central Processing Unit(CPU)104と、不揮発性メモリ群101とを備える。ROM103はアプリケーションプログラムを記憶する。RAM102はアプリケーションプログラムの実行の際に用いられるデータを一時的に記憶する。CPU104はアプリケーションプログラムに従って各種のコマンドに対する処理を実行する。不揮発性メモリ群101はメモリカードの外部からダウンロードされるアプリケーションプログラムを記憶する。
不揮発性メモリ群101は、耐タンパモジュール(TRM:Tamper Resistant Module)107内にあるFerroelectric RAM(FeRAM)106と、TRM107外にあるセキュアフラッシュ108と、TRM107外にあるフラッシュメモリ109とから構成される。セキュアフラッシュ108は、TRM107の機能を利用してセキュリティ強度が高められたフラッシュメモリである。
図1(B)は、不揮発性メモリ群101を構成する3つの不揮発性メモリのセキュリティ強度を示す図である。図1(B)に示すように、TRM107内にあるFeRAM106のセキュリティ強度が最も強く、その次にセキュアフラッシュ108のセキュリティ強度が強く、フラッシュメモリ109のセキュリティ強度が最も弱い。
サービスプロバイダからダウンロードされるアプリケーションプログラムは、通常はTRM107領域に保存される。TRM107領域の容量はフラッシュメモリ109に比べて非常に小さいため、TRM107領域に保存しきれないアプリケーションプログラムは、ユーザが削除する必要がある。
そこで、アプリケーションプログラムを削除することなく、TRM107領域に格納されているアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を確保した状態で、セキュアメモリカード100内のフラッシュメモリ109に移動させ、必要に応じてTRM107領域に復帰させることにより、より多くのアプリケーションプログラムを一枚のセキュアメモリカード100内に保存できるようにする仕組みが必要となってきている。
特許文献1には、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、そのアプリケーションプログラムの保存領域を振り分ける発明が開示されている。
特開2002−229861号公報
特許文献1に示される従来技術では、ダウンロードされるアプリケーションプログラムのセキュリティレベルに応じて、ダウンロード時に、アプリケーションプログラムをTRM領域とフラッシュメモリとのいずれかに振り分けて保存する。フラッシュメモリにアプリケーションプログラムを保存する場合、暗号化された状態でダウンロードされたアプリケーションプログラムを復号化した後、その復号化したアプリケーションプログラムを、TRM領域にあらかじめ格納されている秘密情報キーを用いて暗号化し、フラッシュメモリに保存する。つまり、従来技術では、セキュアメモリカード内のセキュリティレベルが最も低いフラッシュメモリにアプリケーションプログラムを保存する場合、そのアプリケーションプログラムをセキュアメモリカード内の秘密情報キーを用いて暗号化する。そのため、アプリケーションプログラムを提供するサービスプロバイダが要求するセキュリティ強度を保った状態で、ダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができない。
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することを目的とする。
上記目的を達成するために、本発明のメモリカードは、ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、耐タンパ機能を有するIntegrated Circuit(IC)カード部と、フラッシュメモリ部とを備え、前記ICカード部は、耐タンパ記憶部と、前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得部と、前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御部と、前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部と、前記実行対象のアプリケーションプログラムを復号化し、実行する実行部とを有する。
これにより、本発明のメモリカードは、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存することができる。
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量以下である場合、前記アプリケーションプログラムを前記耐タンパ記憶部に格納し、前記暗号化時のサイズが前記空き容量を超える場合、前記アプリケーションプログラムを前記フラッシュメモリ部に格納する。
例えば、前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
例えば、前記実行部は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる。
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズと暗号化時のサイズとの合計が前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを前記耐タンパ記憶部に複写する。
例えば、前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを復号化して、前記耐タンパ記憶部に格納する。
例えば、前記移動制御部は、アプリケーションプログラムの実行履歴に基づいて、アプリケーションプログラム毎のアクセス履歴管理情報を生成し、前記ICカード部は、更に、前記アクセス履歴管理情報に従って、前記フラッシュメモリ部に移動させるアプリケーションプログラムを決定する移動判定部を有してもよい。
例えば、前記プログラム取得部は、前記ホスト機器固有の情報を取得し、前記ICカード部は、更に、前記取得したホスト機器固有の情報を利用して暗号化鍵を生成する鍵生成部と、前記耐タンパ記憶部から前記フラッシュメモリ部への移動対象のアプリケーションプログラムを前記暗号化鍵により暗号化する追加暗号化部とを有し、前記移動制御部は、暗号化終了後に前記暗号化鍵を削除し、前記暗号化鍵により二重に暗号化されている前記移動対象のアプリケーションプログラムを前記フラッシュメモリ部へ移動させてもよい。
例えば、前記ICカード部は、更に、前記フラッシュメモリ部に格納されている前記暗号化鍵により二重に暗号化されているアプリケーションプログラムを前記耐タンパ記憶部へ複写する場合、複写対象の前記アプリケーションプログラムを前記鍵生成部が生成した暗号化鍵で復号化する追加復号化部を有し、前記移動制御部は、復号化終了後に前記暗号化鍵を削除し、複写対象の前記アプリケーションプログラムを前記耐タンパ記憶部に格納してもよい。
本発明は、本発明のメモリカードの特徴的な構成手段をステップとするアプリケーションプログラム保持方法として実現したり、それらのステップをコンピュータに実行させる保持プログラムとして実現したり、上記特徴的な構成手段を含む集積回路として実現することもできる。上記の保持プログラムは、CD−ROM等の記録媒体や通信ネットワーク等の伝送媒体を介して流通させることもできる。
本発明は、サービスプロバイダが要求するセキュリティ強度を保った状態で、そのサービスプロバイダからダウンロードされるアプリケーションプログラムをフラッシュメモリに保存するメモリカードを提供することができる。
本発明により、多くのアプリケーションプログラムを、サービスプロバイダが要求するセキュリティ強度を保った状態で一枚のセキュアメモリカード内に保存することが可能となる。
以下に、本発明を実施するための最良の形態について、図面を参照して説明する。
(実施の形態1)
実施の形態1におけるシステム全体の概観を図2に示す。実施の形態1では、セキュアメモリカードがSDカードである場合を想定する。
図2に示すように、実施の形態1のSDカード203は、携帯電話等のホスト機器202とSDインタフェース(以下「SDI/F」という)207を介して接続され、耐タンパ性モジュール(TRM)204と、大容量不揮発性メモリ205と、SDカードコントローラ部206とを備える。ホスト機器202は、携帯電話に限られず、SDI/Fを持つ機器であるならば、どのような機器であってもよい。
図3は、一般的なセキュアメモリカードの概観図である。図3に示すように、セキュアメモリカード301は、内部不揮発性メモリ306を有するTRM304と、セキュア領域307、認証領域308、及び非認証領域309を有する大容量不揮発性メモリ305と、内部不揮発性メモリ306及びセキュア領域307に対してアクセスする内部CPU303と、電子機器(リード/ライト(R/W)装置)の外部CPU300と通信して認証処理を行ない、認証した外部CPU300による認証領域308へのアクセスを許可する制御部302とを備える。
TRM304の内部不揮発性メモリ306は、例えば、1バイト単位でデータの消去及び書き込みができるElectronically Erasable and Programmable ROM(EEPROM)である。大容量不揮発性メモリ305は、例えば、64キロバイト等のブロック単位でのデータの消去と1バイト単位でのデータの書き込みとが可能なフラッシュメモリである。
外部CPU300は、非認証領域309に無条件でアクセスすることができる。外部CPU300は、認証領域308には、制御部302による認証が完了した場合にのみアクセスすることができる。しかし、外部CPU300は、セキュア領域307及び内部不揮発性メモリ306の存在を知ることができず、これらに直接アクセスすることはできない。セキュア領域307及び内部不揮発性メモリ306に対しては、内部CPU303だけがアクセス可能である。
セキュア領域307と内部不揮発性メモリ306との違いは、内部不揮発性メモリ306がTRM304内に設けられているのに対し、セキュア領域307がTRM304外の大容量不揮発性メモリ305に設けられている点である。そのため、セキュア領域307は、内部不揮発性メモリ306に比べて大きい蓄積容量を持つことができる反面、セキュリティレベルでは、TRM304内に設けられた内部不揮発性メモリ306に比べて低い。図3に示すように、これら4つの領域のセキュリティレベルは、非認証領域309が最も低く、認証領域308、セキュア領域307、内部不揮発性メモリ306の順に高くなっている。
図1(A)の不揮発性メモリ群101と、図3との対比関係は以下の通りである。図1(A)のFeRAM106が図3の内部不揮発性メモリ306に対応し、図1(A)のセキュアフラッシュ108が図3のセキュア領域307に対応し、図1(A)のフラッシュメモリ109が図3の認証領域308及び非認証領域309に対応する。
図4は、実施の形態1におけるSDカード203のブロック構成を示す図である。SDカード203は、SD規格で規定されているSDカードコントローラ部206と、TRM204と、大容量不揮発性メモリ205とを備える。SDカードコントローラ部206は、ホスト機器202との間でデータの送受信を行なうインタフェース部であり、TRM204は、耐タンパ機能が実装されているICカード部である。大容量不揮発性メモリ205としては、例えばフラッシュメモリが用いられる。
TRM204は、プログラム取得部400と、プログラム管理部401と、履歴管理部402と、格納制御部403と、移動制御部404と、ICカードOperating System(OS)405と、RAM406と、公開鍵記憶部407と、復号化部408と、実行部409とを有する。TRM204は、更に、再読み込み部410と、削除部411とを有するが、それらは図4には示されていない。再読み込み部410及び削除部411は、図5を用いて後述する。
プログラム取得部400は、サービスプロバイダからダウンロードされるアプリケーションプログラム420を、SDカードコントローラ部206経由で取得する。ダウンロードされるアプリケーションプログラム420は、サービスプロバイダが要求するセキュリティ強度で暗号化されている。
プログラム管理部401は、RAM406に保持されているアプリケーションプログラムや、大容量不揮発性メモリ205に保持されているアプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムの保存先とを管理する。アプリケーションプログラムの保存先は、RAM406又は大容量不揮発性メモリ205である。
履歴管理部402は、アプリケーションプログラムのアクセス履歴を管理する。
格納制御部403は、プログラム取得部400によって取得されるアプリケーションプログラムをRAM406のプログラム記憶領域406aに格納する。
移動制御部404は、移動対象のアプリケーションプログラムをRAM406のプログラム記憶領域406aから大容量不揮発性メモリ205に移動させる。
RAM406は、ホスト機器202からダウンロードされるアプリケーションプログラムをそのままの状態で、すなわち暗号化された状態で記憶するプログラム記憶領域406aを有する。RAM406は、復号化されたアプリケーションプログラムをも記憶する。すなわち、RAM406は、プログラム記憶領域406aに加え、プログラム記憶領域406aから読み出されたアプリケーションプログラム421、又は大容量不揮発性メモリ205から読み出されたアプリケーションプログラム423を復号化するための領域(第2領域)を有している。復号化されたアプリケーションプログラム422は、RAM406の第2領域に保持される。プログラム記憶領域406a及び第2領域は固定された領域ではない。
公開鍵記憶部407は、暗号化されているアプリケーションプログラムを復号化するための公開鍵を保持する。
復号化部408は、暗号化されているアプリケーションプログラムを、公開鍵記憶部407によって保持されている公開鍵で復号化する。
実行部409は、復号化処理されたアプリケーションプログラム422を実行する。
図5は、TRM204における、アプリケーションプログラムの移動を実行する構成部のブロック図である。図5に示すように、TRM204は、プログラム管理部401と、履歴管理部402と、格納制御部403と、移動制御部404と、実行部409と、再読み込み部410と、削除部411とを有する。移動制御部404は、時刻情報取得部503と、移動判定部505と、一時記憶部507とを有する。
時刻情報取得部503は、SDI/F207を介して、ホスト機器202より時刻情報を取得する。時刻情報取得部503は、アプリケーションプログラムにアクセスする度に現在時刻を取得してもよい。時刻情報取得部503は、アプリケーションプログラムのダウンロード時にその時点での現在時刻を取得し、その後の経過時間はSDカード203内のCPUのクロックから算出し、アプリケーションプログラムのダウンロード時の時刻に算出した経過時間を加算することにより、アプリケーションプログラムにアクセスする際の時刻を取得してもよい。時刻情報取得部503による現在時刻の取得方法は問わない。
一時記憶部507は、ダウンロード開始時に通知されるダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報を一時的に記憶する。
図6は、履歴管理部402によって管理される履歴管理情報509の例を示す図である。図6に示すように、履歴管理情報509は、アプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムへの最終のアクセス日を示す最終アクセス日と、最終アクセス日の直前のアプリケーションプログラムへのアクセス日を示す前々回アクセス日と、前々回アクセス日から最終アクセス日までの経過日数を示すアクセス間隔との4項目から構成される。
図7は、プログラム管理部401によって管理されるプログラム管理情報510の例を示す図である。図7に示すように、プログラム管理情報510は、アプリケーションプログラムを一意に識別するためのプログラムIDと、アプリケーションプログラムの保存先と、アプリケーションプログラムの暗号化時のサイズと、アプリケーションプログラムの復号化時のサイズと、プログラム記憶領域406aから大容量不揮発性メモリ205への移動対象に決定されたアプリケーションプログラムであることを示す移動フラグと、アプリケーションプログラムの実行時に実行対象のアプリケーションプログラムの復号化が完了していることを示す復号化済みフラグとから構成される。アプリケーションプログラムの保存先は、TRM204(RAM406)又は大容量不揮発性メモリ205である。プログラム記憶領域406aから大容量不揮発性メモリ205への移動対象に決定されたアプリケーションプログラムの移動フラグには、“1”(ON)が記載される。復号化が完了しているアプリケーションプログラムの復号化済みフラグには、“1”が記載される。
移動判定部505は、時刻情報取得部503から取得する現在時刻、一時記憶部507で保持されているアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報、履歴管理部402から取得する履歴管理情報509、及びプログラム管理部401から取得するプログラム管理情報を用いて、TRM204から大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定する。
TRM204から大容量不揮発性メモリ205に移動させるアプリケーションプログラムの決定手順を以下に示す。
初めに、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、RAM406の全容量と、RAM406に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のRAM406の空き容量を取得する。
アプリケーションプログラムをダウンロードする場合、移動判定部505は、一時記憶部507に記憶されているダウンロード対象のアプリケーションプログラム420の暗号化時のデータサイズと、先に取得したRAM406の空き容量とを比較する。ダウンロード対象のアプリケーションプログラム420の暗号化時のデータサイズがRAM406の空き容量を超える場合、プログラム記憶領域406aに保存されているアプリケーションプログラム421のいずれかを、大容量不揮発性メモリ205に移動させる処理に移行する。
アプリケーションプログラムを実行する場合、移動判定部505は、実行対象となるアプリケーションプログラムの復号化時のデータサイズと、RAM406の空き容量とを比較する。復号化時のアプリケーションプログラム422のサイズが、RAM406の空き容量を超える場合、プログラム記憶領域406aに保存されているアプリケーションプログラム421のいずれかを、大容量不揮発性メモリ205に移動させる処理に移行する。
移動判定部505は、時刻情報取得部503より現在時刻を取得する。
移動判定部505は、プログラム管理部401に問合せ、プログラム管理情報510の中で、保存先がTRM204であるアプリケーションプログラムのIDを取得する。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する。移動判定部505は、最終アクセス日が最も古いアプリケーションプログラムを移動対象のアプリケーションプログラムと決定し、先のプログラム管理部401への問合せの結果より抽出したプログラムIDの中から、移動対象に決定されたアプリケーションプログラムのIDを取得するとともに、そのアプリケーションプログラムの暗号化時のデータサイズを取得する。そして、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムに関して、プログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新するように指示する。
次に、移動判定部505は、移動対象として決定したアプリケーションプログラムの暗号化時のデータサイズをRAM406の空き容量に加算し、アプリケーションプログラムのダウンロード、又はアプリケーションプログラムの復号化処理に十分なRAM406の空き容量が確保できるか否かを確認する。1個のアプリケーションプログラムを大容量不揮発性メモリ205に移動しても十分なRAM406の空き容量が確保できない場合、移動判定部505は、再度、プログラム管理部401及び履歴管理部402に問合せ、大容量不揮発性メモリ205に移動させるアプリケーションプログラムのIDを抽出する。移動判定部505は、アプリケーションプログラムのダウンロード、又は実行対象のアプリケーションプログラムの復号化を行なうために必要なRAM406の領域が確保することができるまで、大容量不揮発性メモリ205へ移動させるアプリケーションプログラムのIDの抽出を繰り返す。
また、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する場合においても、RAM406上に、アプリケーションプログラム423の復号化に必要な領域が確保できないときは、移動判定部505は、上記と同様の処理を行なう。これにより、RAM406上に、アプリケーションプログラム423の復号化に必要な領域が確保される。
最後に、移動判定部505は、プログラム管理情報510において移動フラグがON(1)になっているアプリケーションプログラムのIDを、移動制御部404に通知する。
移動制御部404は、移動判定部505から通知されたプログラムIDを持つアプリケーションプログラムを、大容量不揮発性メモリ205にコピーする。移動制御部404は、アプリケーションプログラムの大容量不揮発性メモリ205へのコピーが完了すると、移動判定部505を介して、プログラム管理部401にプログラム管理情報510の移動フラグを全てOFF(0)にするように指示する。移動制御部404は、大容量不揮発性メモリ205へのコピーが完了したアプリケーションプログラム421を削除する。
削除部411は、復号化済みで実行対象ではなくなったアプリケーションプログラム422を削除する。
実行部409は、復号化処理されたアプリケーションプログラム422を実行する。
再読み込み部410は、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する際に、アプリケーションプログラム423を大容量不揮発性メモリ205から読み込む。
図8は、アプリケーションプログラムをダウンロードする時のアプリケーションプログラムの移動処理のフローを示す図である。アプリケーションプログラムのダウンロードが開始されると(S800)、TRM204内の各構成部は、以下のように動作する。
初めに、一時記憶部507は、ダウンロードに先立って通知されたダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズを保持する。
次に、移動判定部505は、プログラム管理部401よりプログラム管理情報510を取得し、RAM406の全容量と、RAM406に存在するアプリケーションプログラムの暗号化時のデータサイズ及び復号化時のデータサイズとから、現在のRAM406の空き容量を取得する(S801)。
次に、移動判定部505は、取得したRAM406の空き容量と、一時記憶部507に保存されているダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズとを比較する(S802)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。
ダウンロード対象のアプリケーションプログラムのサイズが、RAM406の空き容量以下である場合(S802でYes)、プログラム取得部400はダウンロードされるアプリケーションプログラムを取得し、格納制御部403は取得されるアプリケーションプログラムをRAM406のプログラム記憶領域406aに格納する(S803)。そして、移動判定部505はプログラム管理部401にプログラム管理情報510を更新するように指示し、プログラム管理部401はプログラム管理情報510を更新し(S812)、ダウンロード処理は終了する(S813)。
逆に、ダウンロード対象のアプリケーションプログラムのサイズが、RAM406の空き容量を超える場合(S802でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
最初に、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S804)。
次に、移動判定部505は、プログラム管理部401に問合せ、プログラム管理情報510を取得し、保存先がTRM204であるアプリケーションプログラムのIDを取得する(S805)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S806)。
移動判定部505は、S806で取得した履歴管理情報509から、S805で取得したプログラムIDのうち最終アクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムと決定し、プログラム管理情報510から移動対象のアプリケーションプログラムの暗号化時のデータサイズを取得する(S807)。
次に、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定するとともに、保存先を大容量不揮発性メモリ205に更新するように指示し、その指示に従って、プログラム管理部401はプログラム管理情報510を更新する(S808)。
格納制御部403は、S807で決定された移動対象のアプリケーションプログラムを、大容量不揮発性メモリ205に移動する(S810)。次に、移動処理後のRAMの空き容量を取得し、S802に遷移して、ダウンロードするアプリケーションプログラムがプログラム記憶領域406aに保存可能となるまで、S802からS810の処理を繰り返す。
最後に、プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、アプリケーションプログラムをダウンロードする処理は終了する(S813)。
なお、上記では、S807において、移動判定部505は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部505は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部505は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定してもよい。しかしながら、RAM406の空き容量をダウンロード対象等のRAM406に格納されるアプリケーションプログラムのサイズ以上にする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
図9は、RAM406上に復号化済みのアプリケーションプログラム422が存在する場合における、アプリケーションプログラムのダウンロード時のアプリケーションプログラム移動処理のフローを示す図である。図8における処理フローとほぼ同じであるが、異なる点はS904である。図8における処理フローでは、RAM406の空き領域確保のため、プログラム記憶領域406aに保存されているアプリケーションプログラム421の中から、大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定する。しかしながら、S904において、削除部411は、大容量不揮発性メモリ205に移動させるアプリケーションプログラムが決定されることより優先して、RAM406に存在する復号化済みのアプリケーションプログラム422を削除する。この点が図9と図8とが異なる。
図10は、プログラム記憶領域406aに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。
アプリケーションプログラムの実行が開始されると(S1000)、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、S801と同様の手順でRAM406の空き容量を取得する(S1001)。
また、移動判定部505は、S1001において取得したプログラム管理情報510から、実行対象のアプリケーションプログラムの復号化後のサイズを取得する(S1002)。
次に、移動判定部505は、取得したRAM406の空き容量と、S1002で取得した復号化後のデータサイズとを比較する(S1003)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。復号化後のデータサイズがRAM406の空き容量以下である場合(S1003でYes)、復号化部408は、暗号化されている実行対象のアプリケーションプログラムを復号化し(S1004)、プログラム管理部401はプログラム管理情報510を更新し(S1012)、実行部409はアプリケーションプログラムを実行する(S1013)。逆に、復号化後のデータサイズがRAM406の空き容量を超える場合(S1003でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
初めに、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S1005)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S1006)。移動判定部505は、S1006で取得された履歴管理情報509とS1002で取得されたプログラム管理情報510とから、保存先がTRM204であるアプリケーションプログラムで、かつ最終のアクセス日が最も古いアプリケーションプログラムを、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムと決定し、その暗号化時のデータサイズを取得する(S1007)。なお、図8と同様に、履歴管理情報509から移動させるアプリケーションプログラムを決定するアルゴリズムは、使用頻度等を考慮した決定方法でもよく、その方法は問わない。
次に、移動判定部505は、プログラム管理部401に対して、移動対象に決定したアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新するように指示し、プログラム管理部401は、プログラム管理情報510を更新する(S1008)。
移動制御部404は、S1007で移動対象に決定されたアプリケーションプログラムを、大容量不揮発性メモリ205に移動する(S1010)。次に、移動処理後のRAMの空き容量を取得し、S1003に遷移して、実行対象のアプリケーションプログラムの復号化処理が実行できるだけのRAM406の空き容量が確保できるまで、S1003からS1010の処理を繰り返す。
次に、復号化部408は、実行対象のアプリケーションプログラムの復号化処理を行なう(S1004)。
プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、プログラム管理情報510を更新する(S1012)。
そして、実行部409はアプリケーションプログラムを実行する(S1013)。
図11は、大容量不揮発性メモリ205に移動していたアプリケーションプログラム423を実行する場合の処理フローを示す図である。アプリケーションプログラムの実行が開始されると(S1100)、TRM204内の各構成部は、以下のように動作する。
初めに、移動判定部505は、プログラム管理部401からプログラム管理情報510を取得し、実行しようとするアプリケーションプログラムの保存先が大容量不揮発性メモリ205であることを確認するとともに、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとを取得する(S1101)。
次に、移動判定部505は、S1101で取得したプログラム管理情報510の保存先情報、暗号化時のデータサイズ、及び復号化後のデータサイズより、RAM406の空き容量を取得する(S1102)。
次に、移動判定部505は、S1101で取得した実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、S1102で取得したRAM406の空き容量とを比較する(S1103)。なお、RAM406の空き容量とプログラム記憶領域406aは等しいものとする。
上記合計がRAM406の空き容量以下である場合(S1103でYes)、再読み込み部410は、大容量不揮発性メモリ205から実行対象のアプリケーションプログラム423を読み込み、格納制御部403は読み込まれた実行対象のアプリケーションプログラム423をRAM406に格納する(S1104)。復号化部408は復号化処理を行ない(S1105)、プログラム管理部401はプログラム管理情報510を更新し(S1113)、実行部409は実行対象のアプリケーションプログラムを実行する(S1114)。
逆に、上記合計がRAM406の空き容量を超える場合(S1103でNo)、移動判定部505はRAM406の空き容量を確保するための処理を開始する。
まず、移動判定部505は、時刻情報取得部503から時刻情報を取得する(S1106)。
次に、移動判定部505は、履歴管理部402に問合せ、履歴管理情報509を取得する(S1107)。
次に、移動判定部505は、S1101で取得したプログラム管理情報510の中で、保存先がTRM204であるアプリケーションプログラムで、かつS1107で取得した履歴管理情報509の中で、最終アクセス日が最も古いプログラムIDを抽出する。移動判定部505は、抽出したプログラムIDに対応するアプリケーションプログラムを大容量不揮発性メモリ205への移動対象と決定し(S1108)、プログラム管理情報510より、移動対象に決定されたアプリケーションプログラムの暗号化時のデータサイズを取得する。
次に、プログラム管理部401は、移動対象に決定されたアプリケーションプログラムのプログラム管理情報510の移動フラグをON(1)に設定し、保存先を大容量不揮発性メモリ205に更新する(S1109)。
移動制御部404は、S1108で移動対象に決定したアプリケーションプログラムを、プログラム記憶領域406aから大容量不揮発性メモリ205に移動する(S1111)。次に、移動処理後のRAMの空き容量を取得し、S1103に遷移して、実行対象のアプリケーションプログラムの復号化処理が可能になるまでS1103からS1111の処理を繰り返す。
最後に、プログラム管理部401は、プログラム管理情報510の移動フラグを全てOFF(0)に設定し、アプリケーションプログラムの移動処理は終了する。
アプリケーションプログラムの移動処理が終了した後、移動制御部404は、実行対象のアプリケーションプログラム423を大容量不揮発性メモリ205から読み込み、読み込んだ実行対象のアプリケーションプログラム423をRAM406にコピーする(S1104)。
最後に、移動制御部404は復号化処理を行ない(S1105)、プログラム管理部401はプログラム管理情報510を更新し(S1113)、その後、実行部409は、S1105で復号化済みのアプリケーションプログラム422を実行する(S1114)。
なお、S1108において、移動判定部505は、移動対象となるアプリケーションプログラムとして、最終アクセス日が最も古いアプリケーションプログラムを決定する。しかしながら、移動判定部505は、アクセス間隔が一番長いアプリケーションプログラムを移動対象と決定したり、特定の曜日にのみアクセスするアプリケーションプログラムを移動対象と決定してもよい。すなわち、移動判定部505は、アプリケーションプログラムの実行履歴に応じて大容量不揮発性メモリ205に移動させるアプリケーションプログラムを決定してもよい。RAM406の空き容量をダウンロード対象等のRAM406に格納されるアプリケーションプログラムのサイズより大きくする方法であれば、移動すべきアプリケーションプログラムを決定する方法については問わない。
また、図11に示す処理フローでは、RAM406の空き領域確保のための処理において、S1106からS1110で示すようなプログラム記憶領域406aに保存されているアプリケーションプログラム421の移動処理が行なわれる。しかしながら、RAM406に復号化済みのアプリケーションプログラム422が存在する場合、削除部411がRAM406に存在する復号化済みのアプリケーションプログラム422を削除する処理が、優先されてもよい。
また、図11に示す処理フローでは、S1103において、移動判定部505は、実行対象のアプリケーションプログラムの暗号化時のデータサイズと復号化時のデータサイズとの合計と、RAM406の空き容量とを比較する。しかしながら、S1103において、移動判定部505は、実行対象のアプリケーションプログラムの復号化時のデータサイズと、RAM406の空き容量とを比較してもよい。
その場合、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量以下であるとき(S1103でYes)、復号化部408は実行対象のアプリケーションプログラム423を読み込んで復号化処理を行なってRAM406に格納してもよい。他方、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量を超えるとき(S1103でNo)、移動判定部505は、実行対象のアプリケーションプログラムの復号化時のデータサイズがRAM406の空き容量以下になるように、RAM406の空き容量を確保するための処理を開始する。
上述した構成及び動作により、サービスプロバイダからダウンロードされたアプリケーションプログラムを、ダウンロードされたときの暗号化された状態のまま大容量不揮発性メモリ205に簡単に移動させることができる。そのため、サービスプロバイダが要求するセキュリティ強度を保った状態で、より多くのアプリケーションプログラムを、SDカード203をはじめとするICカード機能が搭載されたセキュアメモリカード内に保存することが可能となる。
図12は、サービスプロバイダが提供するアプリケーションプログラムの情報の一例を示している。
以下に、図12に示すアプリケーションプログラムのダウンロード時の処理及び実行時の処理を具体的に説明する。以下では、RAM406の全体の容量は120KBであると仮定する。
ステップ1として、RAM406が未使用の状態であり、SDカード203にアプリケーションプログラムAをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムAのダウンロード指示により、アプリケーションプログラムAのダウンロード処理が開始する。
ダウンロード処理が開始されると、サービスプロバイダよりアプリケーションプログラムAの暗号化時のデータサイズ及び復号化時のデータサイズ等の情報が、SDカード203に送信されてくる。それら送信される情報は一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムAの暗号化時のデータサイズとして10KBが、アプリケーションプログラムAの復号化時のデータサイズとして30KBが保存される。
次に、移動判定部505は、プログラム管理部401よりプログラム管理情報510を取得し、RAM406の空き容量を取得する。この場合、アプリケーションプログラムが何もダウンロードされていない状態なので、RAM406の使用領域のサイズは0KBであり、RAM406の空き領域は120KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムAの暗号化時のデータサイズと、RAM406の空き容量とを比較する。この場合、移動判定部505は、アプリケーションプログラムAの暗号化時のデータサイズが10KBであり、RAM406の空き容量が120KBであるため、アプリケーションプログラムAをプログラム記憶領域406aに保存可能であると判断し、格納制御部403はアプリケーションプログラムAをプログラム記憶領域406aに保存する。
以上により、アプリケーションプログラムAのダウンロード処理が完了する。
アプリケーションプログラムAのダウンロード処理が完了した後、プログラム管理情報510は、プログラム管理部401によって、図13(A)のように更新される。また、RAM406の状態は、図13(B)のようになる。
引き続き、ステップ2として、SDカード203にアプリケーションプログラムBをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBのダウンロード指示により、アプリケーションプログラムBのダウンロード処理が開始する。
ダウンロード処理が開始されると、ステップ1で示したアプリケーションプログラムAのダウンロード時と同様に、アプリケーションプログラムBに関する情報(暗号化時のデータサイズ及び復号化時のデータサイズ)が、一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムBの暗号化時のデータサイズとして30KBが、アプリケーションプログラムBの復号化時のデータサイズとして50KBが保存される。
次に、移動判定部505は、プログラム管理部401よりステップ1で更新済みのプログラム管理情報1300を取得し、RAM406の空き容量を取得する。この場合、RAM406に保存されているアプリケーションプログラムは、アプリケーションプログラムAのみであり、RAM406の使用領域サイズは10KBであることから、RAM406の空き領域は110KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの暗号化時のデータサイズと、RAM406の空き容量とを比較する。この場合、移動判定部505は、アプリケーションプログラムBの暗号化時のデータサイズが30KBであり、RAM406の空き領域は110KBであるため、アプリケーションプログラムBをプログラム記憶領域406aに保存可能であると判断し、格納制御部403はアプリケーションプログラムBをプログラム記憶領域406aに保存する。
以上により、アプリケーションプログラムBのダウンロード処理が完了する。
アプリケーションプログラムBのダウンロード処理が完了した後、プログラム管理情報1300は、プログラム管理部401によって、図14(A)のように更新される。また、RAM406の状態は、図14(B)のようになる。
続いて、ステップ3として、アプリケーションプログラムBを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBの実行指示により、アプリケーションプログラムBの実行処理が開始する。
初めに、移動判定部505は、プログラム管理部401からステップ2で更新済みのプログラム管理情報1400を取得し、実行対象であるアプリケーションプログラムBの復号化後のデータサイズを取得し、一時記憶部507に保存する。この場合、一時記憶部507に保存される値は50KBとなる。
次に、移動判定部505は、プログラム管理情報1400より、RAM406の空き容量を取得する。この場合、RAM406には、暗号化されたアプリケーションプログラムA(10KB)と、暗号化されたアプリケーションプログラムB(30KB)とが含まれるため、RAM406の空き容量は80KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ50KBと、RAM406の空き容量80KBとを比較し、アプリケーションプログラムBはRAM406上で復号化可能であると判断する。
この後、S1004で示したように、復号化部408はアプリケーションプログラムBを復号化処理し、プログラム管理部401は、プログラム管理情報1400を図15(A)のように更新する。RAM406の状態は、図15(B)のようになる。
以上により、アプリケーションプログラムBが実行可能状態となり、実行部409はアプリケーションプログラムBを実行する。
続いて、ステップ4として、SDカード203にアプリケーションプログラムCをダウンロードする場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムCのダウンロード指示により、アプリケーションプログラムCのダウンロード処理が開始する。
ダウンロード処理が開始されると、ステップ1で示したアプリケーションプログラムAのダウンロード時と同様に、アプリケーションプログラムCに関する情報(暗号化時のデータサイズ及び復号化時のデータサイズ)が、一時記憶部507に保存される。この場合、一時記憶部507には、アプリケーションプログラムCの暗号化時のデータサイズとして40KBが、アプリケーションプログラムCの復号化時のデータサイズとして70KBが保存される。
次に、移動判定部505は、プログラム管理部401よりステップ3で更新済みのプログラム管理情報1500を取得し、RAM406の空き容量を取得する。この場合、RAM406には、暗号化されたアプリケーションプログラムA(10KB)と、暗号化されたアプリケーションプログラムB(30KB)と、復号化されたアプリケーションプログラムB(50KB)とが存在することから、RAM406の空き容量は30KBである。
次に、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの暗号化時のデータサイズ(40KB)と、RAM406の空き容量(30KB)とを比較する。この場合、RAM406の空き容量が不足することから、移動判定部505は、RAM406の空き容量を確保するための処理を行なう。
RAM406の空き容量を確保するための処理フローとして、ここではS904を採用する。
すなわち、移動判定部505は、RAM406に存在している3つのアプリケーションプログラムの中で、S904の処理フローに基づき、復号化されたアプリケーションプログラムBを削除する処理を選択する。
次に、移動判定部505は、再度、RAM406の空き容量を取得する。復号化されたアプリケーションプログラムBが削除された後のRAM406の空き容量は80KBとなる。移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの暗号化時のデータサイズ(40KB)と、RAM406の空き容量(80KB)とを比較し、アプリケーションプログラムCがダウンロード可能であると判断する。
次に、格納制御部403は、ダウンロードされたアプリケーションプログラムCをプログラム記憶領域406aに保存する。
そして、プログラム管理部401によって、プログラム管理情報1500は、図16(A)のように更新される。また、RAM406の状態は、図16(B)のようになる。
以上により、アプリケーションプログラムCのダウンロード処理が完了する。
続いて、ステップ5として、アプリケーションプログラムCを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムCの実行指示により、アプリケーションプログラムCの実行処理が開始する。
ステップ3で述べたように、初めに、移動判定部505は、更新済みのプログラム管理情報1600からアプリケーションプログラムCの復号化後のデータサイズ(70KB)を取得し、一時記憶部507に保存する。
次に、移動判定部505は、ステップ3で述べたように、プログラム管理情報1600よりRAM406の空き容量を取得する。この場合、RAM406の空き容量は40KBである。
そして、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(40KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上に確保できないと判断する。
そして、移動判定部505は、S1005からS1008の処理フローに基づき、大容量不揮発性メモリ205に移動すべきアプリケーションプログラムを決定する処理を行なう。ここでは、最初にダウンロードされたアプリケーションプログラムからダウンロード順に大容量不揮発性メモリ205に移動させる場合を想定する。移動判定部505は、大容量不揮発性メモリ205への移動対象のアプリケーションプログラムとして、ステップ1でダウンロードされたアプリケーションプログラムAを決定する。
次に、プログラム管理部401は、プログラム管理情報1600を、図17(A)のように更新する。また、RAM406の状態は、図17(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(50KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上にまだ確保できないと判断する。
移動判定部505は、移動対象となるアプリケーションプログラムとして、ステップ2でダウンロードされたアプリケーションプログラムBを選択する。
そして、プログラム管理部401は、プログラム管理情報1700を、図18(A)のように更新する。また、RAM406の状態は、図18(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムCの復号化後のデータサイズ(70KB)と、RAM406の空き容量(80KB)とを比較し、アプリケーションプログラムCの実行に必要な領域がRAM406上に確保できたと判断する。
移動制御部404は、プログラム管理情報1800において、移動フラグがON(1)に設定されているアプリケーションプログラムA(ID:0x0001)とアプリケーションプログラムB(ID:0x0002)とを、RAM406から大容量不揮発性メモリ205にコピーする。
そして、移動制御部404は、コピーが完了したアプリケーションプログラムAとアプリケーションプログラムBとを、プログラム記憶領域406aから削除する。
最後に、プログラム管理部401によって、プログラム管理情報1800は、図19(A)のように更新される。また、RAM406の状態は、図19(B)のようになる。
以上により、アプリケーションプログラムCが実行可能状態となり、実行部409はアプリケーションプログラムCを実行する。
続いて、ステップ6として、大容量不揮発性メモリ205に移動したアプリケーションプログラムBを実行する場合の処理フローについて、詳細に説明する。
ホスト機器202からのアプリケーションプログラムBの実行指示により、アプリケーションプログラムBの実行処理が開始する。
ステップ3で述べたように、初めに、移動判定部505は、更新済みのプログラム管理情報1900からアプリケーションプログラムBの復号化後のデータサイズ(50KB)を取得し、一時記憶部507に保存する。
次に、移動判定部505は、ステップ3で述べたように、プログラム管理情報1900よりRAM406の空き容量を取得する。この場合、RAM406の空き容量は10KBである。
そして、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ(50KB)と、RAM406の空き容量(10KB)とを比較し、アプリケーションプログラムBの実行に必要な領域がRAM406上に確保できないと判断する。
そして、移動判定部505は、RAM406上の復号化済みのアプリケーションプログラムを優先して削除する処理フローをまず採用し、プログラム管理情報1900に基づいて、復号化されたアプリケーションプログラムCを削除対象と決定する。
そして、削除部411は、RAM406上の復号化されたアプリケーションプログラムC(70KB)を削除する。
アプリケーションプログラムCが削除された後、プログラム管理部401はプログラム管理情報1900を図20(A)のように更新する。また、RAM406の状態は、図20(B)のようになる。
再度、移動判定部505は、一時記憶部507に保存されているアプリケーションプログラムBの復号化後のデータサイズ(50KB)と、RAM406の空き容量(80KB)とを比較し、RAM406上に、アプリケーションプログラムBを復号化するための領域が確保できたと判断する。
移動制御部404は、大容量不揮発性メモリ205からアプリケーションプログラムBを読み出してRAM406にコピーし、アプリケーションプログラムBの復号化処理を行なう。
そして、プログラム管理部401は、プログラム管理情報2000を図21(A)のように更新する。このとき、RAM406の状態は、図21(B)のようになる。
最後に、実行部409は、復号化処理されたアプリケーションプログラムBを実行する。
以上により、大容量不揮発性メモリ205に移動していたアプリケーションプログラムBが実行される。
なお、実施の形態1では、TRM204は本発明のメモリカードのICカード部の一例である。大容量不揮発性メモリ205は本発明のメモリカードのフラッシュメモリ部の一例である。RAM406は本発明のメモリカードの耐タンパ記憶部の一例である。
アプリケーションプログラムの復号化時のデータサイズがダウンロードされるので、実行部409は、そのアプリケーションプログラムを実行するとき、そのアプリケーションプログラムの復号化時のデータサイズを、そのアプリケーションプログラムを実行することにより取得し、その取得したサイズがダウンロードされたサイズと一致しているか否かを判断してもよい。両者が一致していなければ、実行対象のアプリケーションプログラムは不正なプログラムであるので、実行部409はそのアプリケーションプログラムの実行を停止する。これにより、正規のアプリケーションプログラムのみの実行が継続される、という効果が得られる。
また、格納制御部403は、サービスプロバイダからダウンロードされるアプリケーションプログラム420をプログラム記憶領域406aに格納するとともに、大容量不揮発性メモリ205にも格納してもよい。この場合、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズがRAM406の空き容量を超えるとき、格納制御部403がRAM406に存在する暗号化されているアプリケーションプログラムのいずれかを削除するだけで、RAM406の空き容量は、ダウンロード対象又は実行対象のアプリケーションプログラムのデータサイズよりも大きくなり、そのアプリケーションプログラムをRAM406に配置することができる。
また、格納制御部403は、ダウンロード対象のアプリケーションプログラムの暗号化時のデータサイズがRAM406の空き容量を超える場合、プログラム取得部400によって取得されるダウンロード対象のアプリケーションプログラムを大容量不揮発性メモリ205に格納してもよい。
また、実行部409は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを大容量不揮発性メモリ205に移動させてもよい。
(実施の形態2)
図22は、実施の形態2におけるSDカード2200のブロック構成を示す図である。SDカード2200は、実施の形態1のSDカード203が備える構成部に加えて、鍵生成部2217と、追加暗号化部2218と、追加復号化部2219とを備える。なお、説明の簡単化のため、図22には、図4に記載されているプログラム管理部401、履歴管理部402、格納制御部403、公開鍵記憶部407、復号化部408、及び、実行部409は、記載されていない。
プログラム取得部400は、ホスト機器202からSubscriber Identity Module Identifier(SIM ID)や端末ID等のホスト機器固有の情報を取得し、鍵生成部2217は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加暗号化部2218は、移動制御部404によって決定された、TRM204から大容量不揮発性メモリ205への移動対象のアプリケーションプログラムを、鍵生成部2217によって生成された暗号化鍵で暗号化する。移動制御部404は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを、RAM406から大容量不揮発性メモリ205へコピーする。
移動制御部404は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを大容量不揮発性メモリ205へコピーした後、移動対象のアプリケーションプログラムをプログラム記憶領域406aから削除する。そして、鍵生成部2217は暗号化鍵を削除する。
このように、実施の形態2では、移動対象のアプリケーションプログラムを鍵生成部2217によって生成された暗号化鍵で暗号化して大容量不揮発性メモリ205へ移動させ、その後暗号化鍵を削除する。これにより、実施の形態2では、実施の形態1で説明した移動方法よりもセキュリティ強度を高めた状態で、移動対象のアプリケーションプログラムを大容量不揮発性メモリ205に保存することができる。
大容量不揮発性メモリ205に保存されているアプリケーションプログラムをRAM406にコピーして実行する場合、上記と同様に、プログラム取得部400はホスト機器固有の情報を取得し、鍵生成部2217は、ホスト機器固有の情報を用いて暗号化鍵を生成する。追加復号化部2219は、追加暗号化部2218によって暗号化されたアプリケーションプログラムを、鍵生成部2217によって生成される暗号化鍵を用いて復号化する。復号化処理が完了すると、移動制御部404は、暗号化鍵を削除し、復号化されたアプリケーションプログラムをRAM406にコピーする。実行部409はRAM406にコピーされたアプリケーションプログラムを実行する。
また、プログラム取得部400は、ホスト機器202のユーザがホスト機器202に与えるそのユーザの指紋又はユーザが特定する番号等のユーザ固有の情報をホスト機器202から取得してもよい。その場合、鍵生成部2217は、ホスト機器202からユーザ固有の情報を用いて暗号化鍵を生成する。この場合、鍵生成部2217は、同一の暗号化鍵をいつでも生成することができるので、暗号化処理が完了し暗号化鍵が不要になれば暗号化鍵を削除することができる。これにより、移動対象のアプリケーションプログラムは、実施の形態1で説明した移動方法よりもセキュリティ強度を高めた状態で大容量不揮発性メモリ205に保存される。
(実施の形態3)
実施の形態1では、サービスプロバイダよりダウンロードされたアプリケーションプログラムは、RAM406のプログラム記憶領域406aに保存される。しかしながら、全てのアプリケーションプログラムは、ダウンロード時に大容量不揮発性メモリ205に保存されてもよい。これにより、RAM406の容量を小さくすることが可能となる。
なお、上述した各実施の形態における、プログラム取得部400、プログラム管理部401、履歴管理部402、格納制御部403、移動制御部404、復号化部408、実行部409、再読み込み部410、削除部411、鍵生成部2217、追加暗号化部2218、及び追加復号化部2219の全部又は一部の機能は、CPUがコンピュータプログラムを実行することにより実現されてもよい。
また、大容量不揮発性メモリ205、プログラム取得部400、プログラム管理部401、履歴管理部402、格納制御部403、移動制御部404、ICカードOS405、RAM406、公開鍵記憶部407、復号化部408、実行部409、再読み込み部410、削除部411、鍵生成部2217、追加暗号化部2218、及び追加復号化部2219の全部又は一部は、集積回路により実現されてもよい。つまり、上記の全部の構成部は1チップ化されてもよいし、一部の構成部が1チップ化されてもよい。集積回路は、Field Programmable Gate Array(FPGA)や、リコンフィギュラブル・プロセッサが利用されてもよい。
本発明のメモリカードは、TRM領域に保存しきれなくなったアプリケーションプログラムを、アプリケーションプログラムがダウンロードされた時のセキュリティ強度を保った状態で、大容量不揮発性メモリに移動させることができ、より多くのアプリケーションプログラムを一枚のメモリカード内に保存することが可能である。よって、本発明のメモリカードは、アプリケーションプログラムに対する強固な保護機能が要求されるSDカード、及びICカード等として有用である。
図1(A)は、一般的なセキュアメモリカードのハードウェア構成図であり、図1(B)は、不揮発性メモリ群を構成するFeRAM、セキュアフラッシュ、及び、フラッシュメモリのセキュリティ強度を示す図である。 図2は、実施の形態1におけるシステム全体の概観図である。 図3は、一般的なセキュアメモリカードの概観図である。 図4は、実施の形態1におけるSDカードのブロック構成図である。 図5は、実施の形態1におけるSDカードのTRM204のブロック構成図である。 図6は、実施の形態1における履歴管理情報の例を示す図である。 図7は、実施の形態1におけるプログラム管理情報の例を示す図である。 図8は、実施の形態1におけるアプリケーションプログラムのダウンロード時におけるアプリケーションプログラムの移動処理フローを示す図である。 図9は、RAM上に復号化済みのアプリケーションプログラムが存在する場合のアプリケーションプログラムのダウンロード処理におけるアプリケーションプログラムの移動処理のフローを示す図である。 図10は、実施の形態1におけるRAMに保存済みのアプリケーションプログラムを実行する場合の処理フローを示す図である。 図11は、実施の形態1における大容量不揮発性メモリに移動したアプリケーションプログラムを実行する場合の処理フローを示す図である。 図12は、実施の形態1におけるサービスプロバイダが提供するアプリケーションプログラムの情報の一例を示す図である。 図13(A)は、実施の形態1におけるアプリケーションプログラムAのダウンロード処理完了後のプログラム管理情報を示す図であり、図13(B)は、実施の形態1におけるアプリケーションプログラムAのダウンロード処理完了後のRAMの状態を示す図である。 図14(A)は、実施の形態1におけるアプリケーションプログラムBのダウンロード処理完了後のプログラム管理情報を示す図であり、図14(B)は、実施の形態1におけるアプリケーションプログラムBのダウンロード処理完了後のRAMの状態を示す図である。 図15(A)は、実施の形態1におけるアプリケーションプログラムBの実行後のプログラム管理情報を示す図であり、図15(B)は、実施の形態1におけるアプリケーションプログラムBの実行後のRAMの状態を示す図である。 図16(A)は、実施の形態1におけるアプリケーションプログラムCのダウンロード処理完了後のプログラム管理情報を示す図であり、図16(B)は、実施の形態1におけるアプリケーションプログラムCのダウンロード処理完了後のRAMの状態を示す図である。 図17(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムAを移動対象として決定した後のプログラム管理情報を示す図であり、図17(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムAを移動対象として決定した後のRAMの状態を示す図である。 図18(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムBも移動対象として決定した後のプログラム管理情報を示す図であり、図18(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムBも移動対象として決定した後のRAMの状態を示す図である。 図19(A)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムA及びアプリケーションプログラムBをRAMから削除した後のプログラム管理情報を示す図であり、図19(B)は、実施の形態1におけるアプリケーションプログラムCの実行にあたり、アプリケーションプログラムA及びアプリケーションプログラムBを削除した後のRAMの状態を示す図である。 図20(A)は、実施の形態1におけるアプリケーションプログラムBの実行にあたり、アプリケーションプログラムCをRAMから削除した後のプログラム管理情報を示す図であり、図20(B)は、実施の形態1におけるアプリケーションプログラムBの実行にあたり、アプリケーションプログラムCを削除した後のRAMの状態を示す図である。 図21(A)は、実施の形態1におけるアプリケーションプログラムBの実行後のプログラム管理情報を示す図であり、図21(B)は、実施の形態1におけるアプリケーションプログラムBの実行後のRAMの状態を示す図である。 図22は、実施の形態2におけるSDカードのブロック構成図である。
符号の説明
100 セキュアメモリカード
101 不揮発性メモリ群
102 RAM
103 ROM
104 CPU
105 ホストインタフェース
106 FeRAM
107 TRM
108 セキュアフラッシュ
109 フラッシュメモリ
201 サービスプロバイダ
202 ホスト機器
203 SDカード
204 TRM
205 大容量不揮発性メモリ
206 SDカードコントローラ部
207 SDインタフェース
300 外部CPU
301 セキュアメモリカード
302 制御部
303 内部CPU
304 TRM
305 大容量不揮発性メモリ
306 内部不揮発性メモリ
307 セキュア領域
308 認証領域
309 非認証領域
400 プログラム取得部
401 プログラム管理部
402 履歴管理部
403 格納制御部
404 移動制御部
405 ICカードOS
406 RAM
406a プログラム記憶領域
407 公開鍵記憶部
408 復号化部
409 実行部
410 再読み込み部
411 削除部
420,421,422,423 アプリケーションプログラム
503 時刻情報取得部
505 移動判定部
507 一時記憶部
2200 SDカード
2217 鍵生成部
2218 追加暗号化部
2219 追加復号化部

Claims (11)

  1. ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードであって、
    耐タンパ機能を有するIntegrated Circuit(IC)カード部と、フラッシュメモリ部とを備え、
    前記ICカード部は、
    耐タンパ記憶部と、
    前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得部と、
    前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御部と、
    前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御部と、
    前記実行対象のアプリケーションプログラムを復号化し、実行する実行部とを有する
    メモリカード。
  2. 前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量以下である場合、前記アプリケーションプログラムを前記耐タンパ記憶部に格納し、前記暗号化時のサイズが前記空き容量を超える場合、前記アプリケーションプログラムを前記フラッシュメモリ部に格納する
    請求項1に記載のメモリカード。
  3. 前記格納制御部は、前記取得されたアプリケーションプログラムの暗号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる
    請求項2に記載のメモリカード。
  4. 前記実行部は、アプリケーションプログラムの実行後、実行対象の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる
    請求項1に記載のメモリカード。
  5. 前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズと暗号化時のサイズとの合計が前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを前記耐タンパ記憶部に複写する
    請求項1に記載のメモリカード。
  6. 前記移動制御部は、実行対象のアプリケーションプログラムが前記フラッシュメモリ部に格納されている場合、前記実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超えるとき、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させ、前記実行対象のアプリケーションプログラムを復号化して、前記耐タンパ記憶部に格納する
    請求項1に記載のメモリカード。
  7. 前記移動制御部は、アプリケーションプログラムの実行履歴に基づいて、アプリケーションプログラム毎のアクセス履歴管理情報を生成し、
    前記ICカード部は、更に、前記アクセス履歴管理情報に従って、前記フラッシュメモリ部に移動させるアプリケーションプログラムを決定する移動判定部を有する
    請求項1に記載のメモリカード。
  8. 前記プログラム取得部は、前記ホスト機器固有の情報を取得し、
    前記ICカード部は、更に、
    前記取得したホスト機器固有の情報を利用して暗号化鍵を生成する鍵生成部と、
    前記耐タンパ記憶部から前記フラッシュメモリ部への移動対象のアプリケーションプログラムを前記暗号化鍵により暗号化する追加暗号化部とを有し、
    前記移動制御部は、暗号化終了後に前記暗号化鍵を削除し、前記暗号化鍵により二重に暗号化されている前記移動対象のアプリケーションプログラムを前記フラッシュメモリ部へ移動させる
    請求項1に記載のメモリカード。
  9. 前記ICカード部は、更に、前記フラッシュメモリ部に格納されている前記暗号化鍵により二重に暗号化されているアプリケーションプログラムを前記耐タンパ記憶部へ複写する場合、複写対象の前記アプリケーションプログラムを前記鍵生成部が生成した暗号化鍵で復号化する追加復号化部を有し、
    前記移動制御部は、復号化終了後に前記暗号化鍵を削除し、複写対象の前記アプリケーションプログラムを前記耐タンパ記憶部に格納する
    請求項8に記載のメモリカード。
  10. ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードにおけるアプリケーションプログラムを保持する方法であって、
    前記メモリカードは、耐タンパ機能を有するIntegrated Circuit(IC)カード部と、フラッシュメモリ部とを備え、前記ICカード部は耐タンパ記憶部を有し、
    前記方法は、
    前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得ステップと、
    前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御ステップと、
    前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御ステップと、
    前記実行対象のアプリケーションプログラムを復号化し、実行する実行ステップと
    を含むアプリケーションプログラム保持方法。
  11. ホスト機器にダウンロードされる暗号化されているアプリケーションプログラムを前記ホスト機器から受信するメモリカードにおけるアプリケーションプログラムを保持するための保持プログラムであって、
    前記メモリカードは、耐タンパ機能を有するIntegrated Circuit(IC)カード部と、フラッシュメモリ部とを備え、前記ICカード部は耐タンパ記憶部を有し、
    前記保持プログラムは、
    前記ホスト機器から、暗号化されているアプリケーションプログラムと、前記アプリケーションプログラムの暗号化時のサイズ及び復号化時のサイズとを取得するプログラム取得ステップと、
    前記取得されたアプリケーションプログラムの暗号化時のサイズと前記耐タンパ記憶部の空き容量とに基づいて、前記耐タンパ記憶部又は前記フラッシュメモリ部を格納先領域として選択し、選択した領域に前記取得された暗号化されているアプリケーションプログラムを格納する格納制御ステップと、
    前記耐タンパ記憶部に格納されているアプリケーションプログラムの実行時、実行対象のアプリケーションプログラムの復号化時のサイズが前記耐タンパ記憶部の空き容量を超える場合、前記耐タンパ記憶部に格納されている任意の暗号化されているアプリケーションプログラムを前記フラッシュメモリ部に移動させる移動制御ステップと、
    前記実行対象のアプリケーションプログラムを復号化し、実行する実行ステップと
    をコンピュータに実行させるための保持プログラム。
JP2007528241A 2005-05-09 2006-04-28 メモリカード、アプリケーションプログラム保持方法、及び保持プログラム Expired - Fee Related JP4860619B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007528241A JP4860619B2 (ja) 2005-05-09 2006-04-28 メモリカード、アプリケーションプログラム保持方法、及び保持プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005136101 2005-05-09
JP2005136101 2005-05-09
PCT/JP2006/308976 WO2006120938A1 (ja) 2005-05-09 2006-04-28 メモリカード、アプリケーションプログラム保持方法、及び保持プログラム
JP2007528241A JP4860619B2 (ja) 2005-05-09 2006-04-28 メモリカード、アプリケーションプログラム保持方法、及び保持プログラム

Publications (2)

Publication Number Publication Date
JPWO2006120938A1 true JPWO2006120938A1 (ja) 2008-12-18
JP4860619B2 JP4860619B2 (ja) 2012-01-25

Family

ID=37396447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007528241A Expired - Fee Related JP4860619B2 (ja) 2005-05-09 2006-04-28 メモリカード、アプリケーションプログラム保持方法、及び保持プログラム

Country Status (6)

Country Link
US (1) US7953985B2 (ja)
EP (1) EP1881437A1 (ja)
JP (1) JP4860619B2 (ja)
KR (1) KR20080007446A (ja)
CN (1) CN101171591A (ja)
WO (1) WO2006120938A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203802A (ja) * 2011-03-28 2012-10-22 Kddi Corp コンテンツ編集装置、コンテンツ編集方法及びコンテンツ編集プログラム

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100849212B1 (ko) * 2006-10-12 2008-07-31 삼성전자주식회사 메모리 카드 및 메모리 카드의 구동 프로그램 업데이트방법
US8286883B2 (en) 2007-11-12 2012-10-16 Micron Technology, Inc. System and method for updating read-only memory in smart card memory modules
US8162227B2 (en) 2007-11-12 2012-04-24 Micron Technology, Inc. Intelligent controller system and method for smart card memory modules
US8887270B2 (en) * 2007-11-12 2014-11-11 Micron Technology, Inc. Smart storage device
CN101159488B (zh) * 2007-11-12 2013-06-05 中兴通讯股份有限公司 一种时分双工系统物理广播信道的发送方法
US8156322B2 (en) 2007-11-12 2012-04-10 Micron Technology, Inc. Critical security parameter generation and exchange system and method for smart-card memory modules
US8831220B2 (en) * 2007-11-30 2014-09-09 Battelle Energy Alliance, Llc Processing module operating methods, processing modules, and communications systems
KR101297168B1 (ko) * 2008-03-10 2013-08-21 에스케이플래닛 주식회사 저장 용량에 따른 디코딩 계층화 방법 및 장치
US8370645B2 (en) 2009-03-03 2013-02-05 Micron Technology, Inc. Protection of security parameters in storage devices
JP5349114B2 (ja) * 2009-03-31 2013-11-20 株式会社バッファロー 記憶装置
CN101751279B (zh) * 2009-12-29 2014-01-22 北京握奇数据系统有限公司 一种芯片及片上操作系统下载的方法
JP5707760B2 (ja) 2010-07-20 2015-04-30 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、情報処理プログラム、及びそのプログラムを記録した記録媒体
US9183045B2 (en) * 2010-12-21 2015-11-10 Mo-Dv, Inc. System and method for data collection and exchange with protected memory devices
JP2012138729A (ja) * 2010-12-27 2012-07-19 Kddi Corp データ処理装置、プログラム、およびデータ処理システム
JP2012169983A (ja) * 2011-02-16 2012-09-06 Kddi Corp データ処理装置およびプログラム
JP5775738B2 (ja) * 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
CN103838620A (zh) * 2012-11-20 2014-06-04 中兴通讯股份有限公司 处理应用程序方法和装置
WO2015173912A1 (ja) * 2014-05-14 2015-11-19 三菱電機株式会社 制御装置
KR102336033B1 (ko) 2015-04-22 2021-12-08 에스케이하이닉스 주식회사 매립금속게이트구조를 구비한 반도체장치 및 그 제조 방법, 그를 구비한 메모리셀, 그를 구비한 전자장치
JP6647524B2 (ja) * 2015-10-27 2020-02-14 北陽電機株式会社 エリアセンサ及び外部記憶装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229861A (ja) * 2001-02-07 2002-08-16 Hitachi Ltd 著作権保護機能つき記録装置
JP4350962B2 (ja) * 2002-03-13 2009-10-28 パナソニック株式会社 セキュアデバイス
WO2003077083A2 (en) * 2002-03-13 2003-09-18 Matsushita Electric Industrial Co., Ltd. Secure device for preventing unauthorised use of distributed content
EP1615100B1 (en) * 2002-08-01 2007-07-04 Matsushita Electric Industrial Co., Ltd. Encrypted - program generating apparatus
JP4475894B2 (ja) * 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
JP4338989B2 (ja) * 2003-02-20 2009-10-07 パナソニック株式会社 メモリデバイス
JP4165747B2 (ja) * 2003-03-20 2008-10-15 株式会社日立製作所 記憶システム、制御装置及び制御装置のプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203802A (ja) * 2011-03-28 2012-10-22 Kddi Corp コンテンツ編集装置、コンテンツ編集方法及びコンテンツ編集プログラム

Also Published As

Publication number Publication date
WO2006120938A1 (ja) 2006-11-16
CN101171591A (zh) 2008-04-30
US20090070599A1 (en) 2009-03-12
JP4860619B2 (ja) 2012-01-25
KR20080007446A (ko) 2008-01-21
US7953985B2 (en) 2011-05-31
EP1881437A1 (en) 2008-01-23

Similar Documents

Publication Publication Date Title
JP4860619B2 (ja) メモリカード、アプリケーションプログラム保持方法、及び保持プログラム
KR100463842B1 (ko) 파일 보안 시스템의 키 관리 장치와 암호키 관리방법
USRE46023E1 (en) Memory device upgrade
US7418344B2 (en) Removable computer with mass storage
KR100713046B1 (ko) 라이센스 이동 장치 및 프로그램
US20060253620A1 (en) Data structure of flash memory having system area with variable size in which data can be updated, USB memory device having the flash memory, and method of controlling the system area
KR20060051023A (ko) 휴대 가능 전자장치와 휴대 가능 전자장치의어플리케이션의 갱신방법
EP2849111B1 (en) OTP generation on portable medium
JP4998518B2 (ja) 情報処理装置、情報処理システム及びプログラム
CN105718808A (zh) 一种基于多网盘的文件加密存储系统及方法
JP5112924B2 (ja) アプリケーション移動システム、アプリケーションの移動方法、プログラムおよび携帯端末
JP2004336719A (ja) 携帯端末及びその情報管理方法、並びにコンピュータ・プログラム
JP4992511B2 (ja) Webサービス識別情報利用システム、およびそれに用いる装置、方法、並びにプログラム
JP2009181460A (ja) シンクライアントシステム
EP2321759A2 (en) Memory device upgrade
KR101297527B1 (ko) 회로 카드 데이터 보호
JP6393171B2 (ja) 情報処理端末および情報処理端末の制御プログラム
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
JP4866858B2 (ja) データ処理装置及び処理方法
JP2004139242A (ja) Icカード、icカード発行システム及びicカード発行方法
KR100562255B1 (ko) 시큐리티 도메인의 키 초기화 방법
JP2006338441A (ja) Icカード用icモジュール、icカード及びicカードのプログラム
CN117094016B (zh) 基于国密Linux内核文件系统数据的加密方法及装置
JP5267612B2 (ja) Icカード用icモジュール、icカード及びicカードのプログラム
JP4555613B2 (ja) データ記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111011

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111102

R150 Certificate of patent or registration of utility model

Ref document number: 4860619

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141111

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees