(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
電子マネー又はクレジットカード等として注目されているICカードは、書込み、書換えが可能な不揮発性メモリと、これを管理、制御するためのCPU等の制御素子を有したICチップとがプラスチック板等で構成されるカードの内部に埋設されている構造をとる。
【0003】
また、ICカードのOS(Operating System)の上にバーチャルマシン(Virtual Machine)をのせた、いわゆるJavaカード(登録商標)と称されるICカードが開発されている。この種のICカードの特徴は、Java言語でアプリケーション(アプレット)を作成することが可能で、カード発行者等の権限を持った者であれば、ICカード内のアプリケーションを追加したり削除したりすることが可能であることにある。
【0004】
ところで、この種のICカードでは、アプリケーションをインストールする場合、不揮発性メモリにおけるインスタンス領域にてアプリケーションを管理する。従来のICカードは、アプリケーションをインストールする際に、ロードファイルへ不揮発性メモリにおいてインスタンス領域を確保するためのメモリ残容量を提供する機能がない。そのため、アプリケーションをインストールする際に不揮発性メモリにインスタンス領域を確保するだけのメモリ残容量がない場合、ICカードは、メモリ残容量の大きさに係らず、アプリケーションをインストールすることができない。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して説明する。
【0011】
図1は、本実施形態に関わるICカードのハードウェア構成を概略的に示すブロック図である。
図1に示すICカードは、カードの全体的な管理及び制御を司るCPU11(Central Processing Unit)と、CPU11の制御用プログラム等が格納されるROM(Read Only Memory)12と、データ処理を実施するCPU11の作業領域としてのRAM(Random Access Memory)13と、外部装置と通信を行うための通信ユニット(UART)14と、各種データ、ロードファイル及びアプリケーション等を記憶する不揮発性メモリ(NV(EEPROM))15と、演算の補助を行うコプロセッサ(Co−Processor)16とを具備する。
【0012】
図2は、
図1に示すICカードの一例としてJavaカードのソフトウェア構成を概略的に示す図である。ICカードのソフトウェア構成は、ハードウェア(H/W)層21、OS(Operating System)層22、プラットフォーム層23及びアプリケーション層24から構成される。アプリケーション層24が最上位に位置し、プラットフォーム層23、OS層22及びH/W層21の順に下位となる。
【0013】
H/W層21は、通信ユニット14、不揮発性メモリ15及びコプロセッサ16等のハードウェアからなり、OS層22のカードOS221により制御される。
【0014】
プラットフォーム層23では、バーチャルマシン(Virtual Machine)231、ISD(Issuer Security Domain)232及びAPI(Application Program Interface)233がカードOS221上で動作する。
【0015】
バーチャルマシン231は、Javaのコンパイラが生成する実行用コードをプラットフォーム固有の形式に変換して実行する。
【0016】
ISD232は、ロード及びインストールを実施する管理アプリケーションである。インストールとは、不揮発性メモリ15に記録されているロードファイルを、アプリケーションとして実行可能な状態にする処理をいう。ISD232は、インストールコマンドを受信すると、不揮発性メモリ15のメモリ残容量を算出し、インストールコマンドと算出したメモリ残容量とをアプリケーション層24へディスパッチする。
【0017】
API233は、ネットワークを通じてウェブブラウザに読み込まれて実行されるJavaプログラム(アプレット)の関数である。
【0018】
アプリケーション層24は、例えば、複数のアプリケーションを有する。アプリケーション層24の各アプリケーションは、API233を使用して種々の処理を実現する。各アプリケーションの実態は、不揮発性メモリ15に記録される。
【0019】
図3は、
図1に示す不揮発性メモリ15の領域分割を示す模式図である。不揮発性メモリ15は、システム領域とアプリケーション領域とに二分される。アプリケーション領域は、さらにロードモジュール領域と、インスタンス領域とに分けられる。ロードモジュール領域には、ロードしたロードファイルが格納される。インスタンス領域には、ロードファイルからインストールされたアプリケーションが登録される。
【0020】
システム領域には、インスタンス領域に登録されるアプリケーションのアプリケーション識別子(AID)、鍵データ等のアプリケーション固有のデータを書き込んだ不揮発性メモリ15の先頭アドレス、及び、登録されたアプリケーションが必要とするメモリ容量等が記載される管理テーブルが記録される。
【0021】
図4は、ISO/IEC 7816−4で規定されるICカードのコマンドフォーマットの例を示す図である。コマンドは、コマンドの種別を示すクラスバイト(CLA)、コマンドを示すインストラクションバイト(INS)、コマンドオプション指定を示すパラメータバイト(P1,P2)、後続のコマンドデータフィールドの長さを示すLcフィールド、コマンド処理に使用するデータを示すコマンドデータフィールド(Data)、及び、コマンドへの応答として返されるレスポンスデータの最大長を示すLeフィールドから成る。
【0022】
例えば、ICカード内部のアプリケーション選択を実行する場合、ICカードは、ISO/IEC 7816−4で規定されるセレクトコマンドを受信する。このとき、セレクトコマンドのコマンドデータフィールドにはロードファイルの名称であるDF nameが指定されている。ICカードのCPU11は、コマンドフォーマットが正しいと判断すると、コマンドデータフィールドで指定されたDF nameと一致する選択可能なアプリケーションを検索する。
【0023】
また、例えば、ロードファイルからアプリケーションをインストールする場合、ICカードは、ISO/IEC 7816−4で規定されるインストールコマンドを受信する。このとき、インストールコマンドのコマンドデータフィールドには、ロードファイルの名称であるDF name、AID、及び、アプリケーションをインストールするのに必要なメモリ容量が含まれる。ICカードのCPU11は、コマンドフォーマットが正しいと判断すると、コマンドデータフィールドで指定されたDF nameと一致するロードファイルから、AIDにより識別されるアプリケーションをインストールする。
【0024】
次に、以上のように構成されたICカードによるアプリケーションインストール動作を詳細に説明する。
図5は、外部装置とICカードとの間における、アプリケーションのインストールが完了するまでのコマンドのやり取りを示すシーケンス図である。
【0025】
まず、外部装置から、アプリケーションのインストールを管理するISD232が指定されたSELECTコマンドが、ICカードへ送信される(シーケンスS51)。ICカードは、受信したコマンドのCLA及びINSを確認し、SELECTコマンドの処理を実行する。ICカードは、SELECTコマンドの処理が正常に終了すると、正常終了を知らせるSELECT Responseを外部装置へ送信する(シーケンスS52)。
【0026】
外部装置は、ICカードからSELECT Responseを受け取ると、ICカードと外部装置との間のセキュア通信チャネルを提供するためにGlobal Platform Card Specificationに示されるINITIALIZE UPDATEコマンドをICカードへ送信する(シーケンスS53)。ICカードは、受信したコマンドのCLA及びINSを確認し、INITIALIZE UPDATEコマンドの処理を実行する。INITIALIZE UPDATEコマンドの処理により、カードとホストとの間でカード及びセキュアチャネルセッションデータが共有される。ICカードは、INITIALIZE UPDATEコマンドの処理が正常に終了すると、正常終了を知らせるINITIALIZE UPDATEレスポンスを外部装置へ送信する(シーケンスS54)。
【0027】
外部装置は、ICカードからINITIALIZE UPDATEレスポンスを受信すると、ICカードと外部装置との間のセキュア通信チャネルを提供するためにGlobal Platform Card Specificationに示されるEXTERNAL AUTHENTICATEコマンドをICカードへ送信する(シーケンスS55)。ICカードは、受信したコマンドのCLA及びINSを確認し、EXTERNAL AUTHENTICATEコマンドの処理を実行する。EXTERNAL AUTHENTICATEコマンドの処理により、ホスト認証され、後続のコマンドのセキュリティレベルが決定される。このセキュリティレベルにより、後続のコマンドは平文で受信可能であるのか、コマンドの信頼性を保持するためのメッセージ認証コード(MAC)が必要であるのか、コマンドデータの暗号化が必要であるのかが決定される。ICカードは、EXTERNAL AUTHENTICATEコマンドの処理が正常に終了すると、正常終了を知らせるEXTERNAL AUTHENTICATEレスポンスを外部装置へ送信する(シーケンスS56)。
【0028】
外部装置は、ICカードからEXTERNAL AUTHENTICATEレスポンスを受信すると、アプリケーションのインストールを実施するためにGlobal Platform Card Specificationに示されるINSTALL[for install & makeselectable]コマンドをICカードへ送信する(シーケンスS57)。ICカードは、受信したコマンドのCLS及びINSを確認し、INSTALL[for install & makeselectable]コマンドの処理を実行する(シーケンスS58)。INSTALL[for install & makeselectable]コマンドの処理により、プログラムに応じてインスタンス領域の確保、AIDの付与、ICカードへのアプリケーションの登録及びICカードアプリケーションとして実行可能になるアプリケーション選択可能状態への移行を実施する。ICカードは、INSTALL[for install & makeselectable]コマンドの処理が正常に終了すると、正常終了を知らせるINSTALLレスポンスを外部装置へ送信する(シーケンスS59)。
【0029】
図6は、ICカードが
図5に示すINSTALLコマンドの処理を実行する際のシーケンス図である。
【0030】
カードOS221は、外部装置からINSTALLコマンドを受信すると(シーケンスS61)、アプリケーションのインストール処理を実行可能なISDが選択されているか否かを判断する(シーケンスS62)。インストール処理を実行可能なISDが選択されていない場合、カードOS221は、アプリケーションのインストール処理を異常終了する。インストール処理を実行可能なISDが選択されている場合、カードOS221は、INSTALLコマンドをISD232へディスパッチする(シーケンスS63)。
【0031】
ISD232は、INSTALLコマンドを受信すると、セキュア通信チャネルが確立済みであるか否かを判断する(シーケンスS64)。セキュア通信チャネルが確立済みでない場合、ISD232は、アプリケーションのインストール処理を異常終了する。セキュア通信チャネルが確立済みである場合、ISD232は、カード内の不揮発性メモリ15の未使用領域の容量を算出する(シーケンスS65)。以下では、
図7を用いて、ISD232がメモリ残容量を算出する際の処理を説明する。また、本説明において、不揮発性メモリ15のシステム領域には、
図8に示す管理テーブルが記録されているものとする。なお、管理テーブルでは、インスタンス領域に登録されたアプリケーションのAID、アプリケーション固有のデータを書き込んだ不揮発性メモリ15の先頭アドレス、及び、登録されたアプリケーションが必要とするメモリ容量が管理される。
【0032】
まず、ISD232は、管理テーブルの先頭から、AIDが登録されているか否かを検索する。すなわち、ISD232は、AIDがNULLであるかを判断する(ステップS71)。AIDが登録されている場合、例えば、AIDが“A000000001”の場合にはAIDはNULLではないため(ステップS71のNo)、ISD232は、登録されているAIDについての必要メモリ容量である、例えば、“0x0400”を使用済みメモリ領域として加算する(ステップS72)。ISD232は、ステップS71の処理を再度実行し、AIDがNULLとなるまで、必要メモリ容量を使用済みメモリ領域に加算する。
【0033】
ステップS71において、AIDがNULLである場合(ステップS71のYes)、ISD232は、インスタンス領域のメモリ容量を取得する(ステップS73)。ISD232は、取得したメモリ容量から、使用済みメモリ領域を差し引くことで、インスタンス領域のメモリ残容量を算出し(ステップS74)、処理をシーケンスS66へ移行する。
【0034】
ISD232は、シーケンスS65で
図7に示すようにメモリ残容量を算出すると、INSTALLコマンドと、算出したメモリ残容量とをロードファイルへ引き渡す(シーケンスS66)。
【0035】
ロードファイルは、受信したメモリ残容量に応じてアプリケーションをインストールすることが可能なようにインストールメソッドが予め設計されている。ロードファイルは、INSTALLコマンドと、算出したメモリ残容量とを受け取ると、メモリ残容量に応じたインストールメソッドであるinstall()を読み出し、読み出したinstall()を実行する(シーケンスS67)。
【0036】
ISD232は、ロードファイルがinstall()を実行している際、INSTALLコマンドに含まれるAIDがすでに管理テーブルに登録済みであるか否か、すなわち、要求されたAIDが登録済みのAIDと重複するか否かを判断する(シーケンスS68)。AIDが重複している場合、ISD232は、アプリケーションのインストール処理を異常終了する。AIDが重複していない場合、ISD232は、管理テーブルにAIDを登録する(シーケンスS69)。また、ISD232は、アプリケーション固有のデータをインスタンス領域に書き込むと共に、管理テーブルにアプリケーション固有のデータを書き込んだ先頭アドレスを書き込み、アプリケーションをインストールするのに必要なメモリ容量を管理テーブルに書き込む(シーケンスS610)。ISD232は、管理テーブルへの登録が正常に終了すると、Successコマンドをロードファイルへ送信する(シーケンスS611)。
【0037】
ロードファイルは、アプリケーションのインストール処理が正常に終了すると、INSTALL ResponseをISD232へ出力する(シーケンスS612)。ISD232は、ロードファイルからINSTALL Responseを受けると、カードOS221へINSTALL Responseを出力する。カードOS221は、ISD232からINSTALL Responseを受けると、外部装置へINSTALL Responseを出力する。
【0038】
以上のように、上記実施形態では、ISD232は、INSTALLコマンドを受信すると、管理テーブルを参照し、不揮発性メモリ15のメモリ残容量を算出する。そして、ISD232は、INSTALLコマンドと、算出したメモリ残容量とをロードファイルへ出力するようにしている。
【0039】
したがって、本実施形態に係るICカードは、インストールの対象となるロードファイルに対し、不揮発性メモリ15におけるインスタンス領域を確保するためのメモリ残容量を提供する機能を有することとなる。
【0040】
これにより、ロードファイルの作成者は、メモリ残容量を取得することを前提としたコード開発を行うことが可能となる。そして、ロードファイルにメモリ残容量を取得することを前提としたコードが含まれていれば、メモリ残容量に応じてインストールするアプリケーションのサイズを変化させることが可能となる。すなわち、不揮発性メモリ15にはメモリ残容量に応じたアプリケーションが記録されることになる。
【0041】
なお、本実施形態に係るISD232は、算出したメモリ残容量を外部へ出力するようにしても構わない。これにより、ISD232が管理するメモリ残容量を、アプリケーションのインストール前に予め要求する必要がなくなり、アプリケーションをインストールする処理が効率化されることになる。
【0042】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。