(57)【要約】 【課題】アプリケーションをインストールする際に、ロードファイルへ不揮発性メモリにおいてインスタンス領域を確保するためのメモリ残容量を提供する機能を有するＩＣカードを提供する。【解決手段】ＩＣカードは、メモリ及び管理手段を具備する。メモリは、ロードファイルと、前記ロードファイルからインストールしたアプリケーションとを記録する。管理手段は、前記メモリに記録されるアプリケーションの容量を管理し、インストールコマンドが入力されると、前記管理する容量に基づいて前記メモリの空き容量を算出し、前記インストールコマンドを前記空き容量についての情報と共に、アプリケーション層へディスパッチする。【選択図】図６
2014063264.tif 000002
【特許請求の範囲】
【請求項１】
ロードファイルと、前記ロードファイルからインストールしたアプリケーションとを記録するメモリと、
前記メモリに記録されるアプリケーションの容量を管理し、インストールコマンドが入力されると、前記管理する容量に基づいて前記メモリの空き容量を算出し、前記インストールコマンドを前記空き容量についての情報と共に、アプリケーション層へディスパッチする管理手段と
を具備するＩＣカード。
【請求項２】
前記管理手段は、前記メモリに複数のアプリケーションが記録されている場合、前記メモリの容量と、前記複数のアプリケーションの容量の累積値との差を取ることで前記空き容量を算出する請求項１記載のＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリ及びＣＰＵ（Central Processing Unit）等を有するＩＣチップを内蔵し、外部装置からロードされたロードファイルをインストールしてアプリケーションを作成するＩＣカードに関する。
【背景技術】
【０００２】
電子マネー又はクレジットカード等として注目されているＩＣカードは、書込み、書換えが可能な不揮発性メモリと、これを管理、制御するためのＣＰＵ等の制御素子を有したＩＣチップとがプラスチック板等で構成されるカードの内部に埋設されている構造をとる。
【０００３】
また、ＩＣカードのＯＳ（Operating System）の上にバーチャルマシン（Virtual Machine）をのせた、いわゆるＪａｖａカード（登録商標）と称されるＩＣカードが開発されている。この種のＩＣカードの特徴は、Ｊａｖａ言語でアプリケーション（アプレット）を作成することが可能で、カード発行者等の権限を持った者であれば、ＩＣカード内のアプリケーションを追加したり削除したりすることが可能であることにある。
【０００４】
ところで、この種のＩＣカードでは、アプリケーションをインストールする場合、不揮発性メモリにおけるインスタンス領域にてアプリケーションを管理する。従来のＩＣカードは、アプリケーションをインストールする際に、ロードファイルへ不揮発性メモリにおいてインスタンス領域を確保するためのメモリ残容量を提供する機能がない。そのため、アプリケーションをインストールする際に不揮発性メモリにインスタンス領域を確保するだけのメモリ残容量がない場合、ＩＣカードは、メモリ残容量の大きさに係らず、アプリケーションをインストールすることができない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４３９８６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上のように、従来のＩＣカードでは、ロードファイルへ不揮発性メモリにおいてインスタンス領域を確保するためのメモリ残容量を提供する機能がないため、アプリケーションをインストールする際に不揮発性メモリにインスタンス領域を確保するだけのメモリ残容量がない場合、メモリ残容量の大きさに係らず、アプリケーションをインストールすることができないという問題があった。
【０００７】
そこで、目的は、アプリケーションをインストールする際に、ロードファイルへ不揮発性メモリにおいてインスタンス領域を確保するためのメモリ残容量を提供する機能を有するＩＣカードを提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、ＩＣカードは、メモリ及び管理手段を具備する。メモリは、ロードファイルと、前記ロードファイルからインストールしたアプリケーションとを記録する。管理手段は、前記メモリに記録されるアプリケーションの容量を管理し、インストールコマンドが入力されると、前記管理する容量に基づいて前記メモリの空き容量を算出し、前記インストールコマンドを前記空き容量についての情報と共に、アプリケーション層へディスパッチする。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に関わるＩＣカードのハードウェア構成を示すブロック図である。
【図２】図１に示すＩＣカードのソフトウェア構成を示す図である。
【図３】図１に示す不揮発性メモリの領域分割を示す図である。
【図４】図１に示すＩＣカードが受信するコマンドフォーマットを示す図である。
【図５】図１に示すＩＣカードと外部装置との間におけるコマンドのやり取りを示すシーケンス図である。
【図６】ＩＣカードが図５に示すＩＮＳＴＡＬＬコマンドの処理を実行する際のシーケンス図である。
【図７】ＩＳＤが図６に示すメモリ残容量を算出する際のフローチャートを示す図である。
【図８】図３に示すシステム領域に記録される管理テーブルを示す図である。
【発明を実施するための形態】
【００１０】
以下、実施の形態について、図面を参照して説明する。
【００１１】
図１は、本実施形態に関わるＩＣカードのハードウェア構成を概略的に示すブロック図である。図１に示すＩＣカードは、カードの全体的な管理及び制御を司るＣＰＵ１１（Central Processing Unit）と、ＣＰＵ１１の制御用プログラム等が格納されるＲＯＭ（Read Only Memory）１２と、データ処理を実施するＣＰＵ１１の作業領域としてのＲＡＭ（Random Access Memory）１３と、外部装置と通信を行うための通信ユニット（ＵＡＲＴ）１４と、各種データ、ロードファイル及びアプリケーション等を記憶する不揮発性メモリ（ＮＶ（ＥＥＰＲＯＭ））１５と、演算の補助を行うコプロセッサ（Ｃｏ−Ｐｒｏｃｅｓｓｏｒ）１６とを具備する。
【００１２】
図２は、図１に示すＩＣカードの一例としてＪａｖａカードのソフトウェア構成を概略的に示す図である。ＩＣカードのソフトウェア構成は、ハードウェア（Ｈ／Ｗ）層２１、ＯＳ（Operating System）層２２、プラットフォーム層２３及びアプリケーション層２４から構成される。アプリケーション層２４が最上位に位置し、プラットフォーム層２３、ＯＳ層２２及びＨ／Ｗ層２１の順に下位となる。
【００１３】
Ｈ／Ｗ層２１は、通信ユニット１４、不揮発性メモリ１５及びコプロセッサ１６等のハードウェアからなり、ＯＳ層２２のカードＯＳ２２１により制御される。
【００１４】
プラットフォーム層２３では、バーチャルマシン（Virtual Machine）２３１、ＩＳＤ（Issuer Security Domain）２３２及びＡＰＩ（Application Program Interface）２３３がカードＯＳ２２１上で動作する。
【００１５】
バーチャルマシン２３１は、Ｊａｖａのコンパイラが生成する実行用コードをプラットフォーム固有の形式に変換して実行する。
【００１６】
ＩＳＤ２３２は、ロード及びインストールを実施する管理アプリケーションである。インストールとは、不揮発性メモリ１５に記録されているロードファイルを、アプリケーションとして実行可能な状態にする処理をいう。ＩＳＤ２３２は、インストールコマンドを受信すると、不揮発性メモリ１５のメモリ残容量を算出し、インストールコマンドと算出したメモリ残容量とをアプリケーション層２４へディスパッチする。
【００１７】
ＡＰＩ２３３は、ネットワークを通じてウェブブラウザに読み込まれて実行されるＪａｖａプログラム（アプレット）の関数である。
【００１８】
アプリケーション層２４は、例えば、複数のアプリケーションを有する。アプリケーション層２４の各アプリケーションは、ＡＰＩ２３３を使用して種々の処理を実現する。各アプリケーションの実態は、不揮発性メモリ１５に記録される。
【００１９】
図３は、図１に示す不揮発性メモリ１５の領域分割を示す模式図である。不揮発性メモリ１５は、システム領域とアプリケーション領域とに二分される。アプリケーション領域は、さらにロードモジュール領域と、インスタンス領域とに分けられる。ロードモジュール領域には、ロードしたロードファイルが格納される。インスタンス領域には、ロードファイルからインストールされたアプリケーションが登録される。
【００２０】
システム領域には、インスタンス領域に登録されるアプリケーションのアプリケーション識別子（ＡＩＤ）、鍵データ等のアプリケーション固有のデータを書き込んだ不揮発性メモリ１５の先頭アドレス、及び、登録されたアプリケーションが必要とするメモリ容量等が記載される管理テーブルが記録される。
【００２１】
図４は、ＩＳＯ／ＩＥＣ  ７８１６−４で規定されるＩＣカードのコマンドフォーマットの例を示す図である。コマンドは、コマンドの種別を示すクラスバイト（ＣＬＡ）、コマンドを示すインストラクションバイト（ＩＮＳ）、コマンドオプション指定を示すパラメータバイト（Ｐ１，Ｐ２）、後続のコマンドデータフィールドの長さを示すＬｃフィールド、コマンド処理に使用するデータを示すコマンドデータフィールド（Ｄａｔａ）、及び、コマンドへの応答として返されるレスポンスデータの最大長を示すＬｅフィールドから成る。
【００２２】
例えば、ＩＣカード内部のアプリケーション選択を実行する場合、ＩＣカードは、ＩＳＯ／ＩＥＣ  ７８１６−４で規定されるセレクトコマンドを受信する。このとき、セレクトコマンドのコマンドデータフィールドにはロードファイルの名称であるＤＦ  ｎａｍｅが指定されている。ＩＣカードのＣＰＵ１１は、コマンドフォーマットが正しいと判断すると、コマンドデータフィールドで指定されたＤＦ  ｎａｍｅと一致する選択可能なアプリケーションを検索する。
【００２３】
また、例えば、ロードファイルからアプリケーションをインストールする場合、ＩＣカードは、ＩＳＯ／ＩＥＣ  ７８１６−４で規定されるインストールコマンドを受信する。このとき、インストールコマンドのコマンドデータフィールドには、ロードファイルの名称であるＤＦ  ｎａｍｅ、ＡＩＤ、及び、アプリケーションをインストールするのに必要なメモリ容量が含まれる。ＩＣカードのＣＰＵ１１は、コマンドフォーマットが正しいと判断すると、コマンドデータフィールドで指定されたＤＦ  ｎａｍｅと一致するロードファイルから、ＡＩＤにより識別されるアプリケーションをインストールする。
【００２４】
次に、以上のように構成されたＩＣカードによるアプリケーションインストール動作を詳細に説明する。図５は、外部装置とＩＣカードとの間における、アプリケーションのインストールが完了するまでのコマンドのやり取りを示すシーケンス図である。
【００２５】
まず、外部装置から、アプリケーションのインストールを管理するＩＳＤ２３２が指定されたＳＥＬＥＣＴコマンドが、ＩＣカードへ送信される（シーケンスＳ５１）。ＩＣカードは、受信したコマンドのＣＬＡ及びＩＮＳを確認し、ＳＥＬＥＣＴコマンドの処理を実行する。ＩＣカードは、ＳＥＬＥＣＴコマンドの処理が正常に終了すると、正常終了を知らせるＳＥＬＥＣＴ  Ｒｅｓｐｏｎｓｅを外部装置へ送信する（シーケンスＳ５２）。
【００２６】
外部装置は、ＩＣカードからＳＥＬＥＣＴ  Ｒｅｓｐｏｎｓｅを受け取ると、ＩＣカードと外部装置との間のセキュア通信チャネルを提供するためにGlobal Platform Card Specificationに示されるＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドをＩＣカードへ送信する（シーケンスＳ５３）。ＩＣカードは、受信したコマンドのＣＬＡ及びＩＮＳを確認し、ＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドの処理を実行する。ＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドの処理により、カードとホストとの間でカード及びセキュアチャネルセッションデータが共有される。ＩＣカードは、ＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンドの処理が正常に終了すると、正常終了を知らせるＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥレスポンスを外部装置へ送信する（シーケンスＳ５４）。
【００２７】
外部装置は、ＩＣカードからＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥレスポンスを受信すると、ＩＣカードと外部装置との間のセキュア通信チャネルを提供するためにGlobal Platform Card Specificationに示されるＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドをＩＣカードへ送信する（シーケンスＳ５５）。ＩＣカードは、受信したコマンドのＣＬＡ及びＩＮＳを確認し、ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドの処理を実行する。ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドの処理により、ホスト認証され、後続のコマンドのセキュリティレベルが決定される。このセキュリティレベルにより、後続のコマンドは平文で受信可能であるのか、コマンドの信頼性を保持するためのメッセージ認証コード（ＭＡＣ）が必要であるのか、コマンドデータの暗号化が必要であるのかが決定される。ＩＣカードは、ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドの処理が正常に終了すると、正常終了を知らせるＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥレスポンスを外部装置へ送信する（シーケンスＳ５６）。
【００２８】
外部装置は、ＩＣカードからＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥレスポンスを受信すると、アプリケーションのインストールを実施するためにGlobal Platform Card Specificationに示されるＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ  ＆  ｍａｋｅｓｅｌｅｃｔａｂｌｅ］コマンドをＩＣカードへ送信する（シーケンスＳ５７）。ＩＣカードは、受信したコマンドのＣＬＳ及びＩＮＳを確認し、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ  ＆  ｍａｋｅｓｅｌｅｃｔａｂｌｅ］コマンドの処理を実行する（シーケンスＳ５８）。ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ  ＆  ｍａｋｅｓｅｌｅｃｔａｂｌｅ］コマンドの処理により、プログラムに応じてインスタンス領域の確保、ＡＩＤの付与、ＩＣカードへのアプリケーションの登録及びＩＣカードアプリケーションとして実行可能になるアプリケーション選択可能状態への移行を実施する。ＩＣカードは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ  ＆  ｍａｋｅｓｅｌｅｃｔａｂｌｅ］コマンドの処理が正常に終了すると、正常終了を知らせるＩＮＳＴＡＬＬレスポンスを外部装置へ送信する（シーケンスＳ５９）。
【００２９】
図６は、ＩＣカードが図５に示すＩＮＳＴＡＬＬコマンドの処理を実行する際のシーケンス図である。
【００３０】
カードＯＳ２２１は、外部装置からＩＮＳＴＡＬＬコマンドを受信すると（シーケンスＳ６１）、アプリケーションのインストール処理を実行可能なＩＳＤが選択されているか否かを判断する（シーケンスＳ６２）。インストール処理を実行可能なＩＳＤが選択されていない場合、カードＯＳ２２１は、アプリケーションのインストール処理を異常終了する。インストール処理を実行可能なＩＳＤが選択されている場合、カードＯＳ２２１は、ＩＮＳＴＡＬＬコマンドをＩＳＤ２３２へディスパッチする（シーケンスＳ６３）。
【００３１】
ＩＳＤ２３２は、ＩＮＳＴＡＬＬコマンドを受信すると、セキュア通信チャネルが確立済みであるか否かを判断する（シーケンスＳ６４）。セキュア通信チャネルが確立済みでない場合、ＩＳＤ２３２は、アプリケーションのインストール処理を異常終了する。セキュア通信チャネルが確立済みである場合、ＩＳＤ２３２は、カード内の不揮発性メモリ１５の未使用領域の容量を算出する（シーケンスＳ６５）。以下では、図７を用いて、ＩＳＤ２３２がメモリ残容量を算出する際の処理を説明する。また、本説明において、不揮発性メモリ１５のシステム領域には、図８に示す管理テーブルが記録されているものとする。なお、管理テーブルでは、インスタンス領域に登録されたアプリケーションのＡＩＤ、アプリケーション固有のデータを書き込んだ不揮発性メモリ１５の先頭アドレス、及び、登録されたアプリケーションが必要とするメモリ容量が管理される。
【００３２】
まず、ＩＳＤ２３２は、管理テーブルの先頭から、ＡＩＤが登録されているか否かを検索する。すなわち、ＩＳＤ２３２は、ＡＩＤがＮＵＬＬであるかを判断する（ステップＳ７１）。ＡＩＤが登録されている場合、例えば、ＡＩＤが“Ａ００００００００１”の場合にはＡＩＤはＮＵＬＬではないため（ステップＳ７１のＮｏ）、ＩＳＤ２３２は、登録されているＡＩＤについての必要メモリ容量である、例えば、“０ｘ０４００”を使用済みメモリ領域として加算する（ステップＳ７２）。ＩＳＤ２３２は、ステップＳ７１の処理を再度実行し、ＡＩＤがＮＵＬＬとなるまで、必要メモリ容量を使用済みメモリ領域に加算する。
【００３３】
ステップＳ７１において、ＡＩＤがＮＵＬＬである場合（ステップＳ７１のＹｅｓ）、ＩＳＤ２３２は、インスタンス領域のメモリ容量を取得する（ステップＳ７３）。ＩＳＤ２３２は、取得したメモリ容量から、使用済みメモリ領域を差し引くことで、インスタンス領域のメモリ残容量を算出し（ステップＳ７４）、処理をシーケンスＳ６６へ移行する。
【００３４】
ＩＳＤ２３２は、シーケンスＳ６５で図７に示すようにメモリ残容量を算出すると、ＩＮＳＴＡＬＬコマンドと、算出したメモリ残容量とをロードファイルへ引き渡す（シーケンスＳ６６）。
【００３５】
ロードファイルは、受信したメモリ残容量に応じてアプリケーションをインストールすることが可能なようにインストールメソッドが予め設計されている。ロードファイルは、ＩＮＳＴＡＬＬコマンドと、算出したメモリ残容量とを受け取ると、メモリ残容量に応じたインストールメソッドであるｉｎｓｔａｌｌ（）を読み出し、読み出したｉｎｓｔａｌｌ（）を実行する（シーケンスＳ６７）。
【００３６】
ＩＳＤ２３２は、ロードファイルがｉｎｓｔａｌｌ（）を実行している際、ＩＮＳＴＡＬＬコマンドに含まれるＡＩＤがすでに管理テーブルに登録済みであるか否か、すなわち、要求されたＡＩＤが登録済みのＡＩＤと重複するか否かを判断する（シーケンスＳ６８）。ＡＩＤが重複している場合、ＩＳＤ２３２は、アプリケーションのインストール処理を異常終了する。ＡＩＤが重複していない場合、ＩＳＤ２３２は、管理テーブルにＡＩＤを登録する（シーケンスＳ６９）。また、ＩＳＤ２３２は、アプリケーション固有のデータをインスタンス領域に書き込むと共に、管理テーブルにアプリケーション固有のデータを書き込んだ先頭アドレスを書き込み、アプリケーションをインストールするのに必要なメモリ容量を管理テーブルに書き込む（シーケンスＳ６１０）。ＩＳＤ２３２は、管理テーブルへの登録が正常に終了すると、Ｓｕｃｃｅｓｓコマンドをロードファイルへ送信する（シーケンスＳ６１１）。
【００３７】
ロードファイルは、アプリケーションのインストール処理が正常に終了すると、ＩＮＳＴＡＬＬ  ＲｅｓｐｏｎｓｅをＩＳＤ２３２へ出力する（シーケンスＳ６１２）。ＩＳＤ２３２は、ロードファイルからＩＮＳＴＡＬＬ  Ｒｅｓｐｏｎｓｅを受けると、カードＯＳ２２１へＩＮＳＴＡＬＬ  Ｒｅｓｐｏｎｓｅを出力する。カードＯＳ２２１は、ＩＳＤ２３２からＩＮＳＴＡＬＬ  Ｒｅｓｐｏｎｓｅを受けると、外部装置へＩＮＳＴＡＬＬ  Ｒｅｓｐｏｎｓｅを出力する。
【００３８】
以上のように、上記実施形態では、ＩＳＤ２３２は、ＩＮＳＴＡＬＬコマンドを受信すると、管理テーブルを参照し、不揮発性メモリ１５のメモリ残容量を算出する。そして、ＩＳＤ２３２は、ＩＮＳＴＡＬＬコマンドと、算出したメモリ残容量とをロードファイルへ出力するようにしている。
【００３９】
したがって、本実施形態に係るＩＣカードは、インストールの対象となるロードファイルに対し、不揮発性メモリ１５におけるインスタンス領域を確保するためのメモリ残容量を提供する機能を有することとなる。
【００４０】
これにより、ロードファイルの作成者は、メモリ残容量を取得することを前提としたコード開発を行うことが可能となる。そして、ロードファイルにメモリ残容量を取得することを前提としたコードが含まれていれば、メモリ残容量に応じてインストールするアプリケーションのサイズを変化させることが可能となる。すなわち、不揮発性メモリ１５にはメモリ残容量に応じたアプリケーションが記録されることになる。
【００４１】
なお、本実施形態に係るＩＳＤ２３２は、算出したメモリ残容量を外部へ出力するようにしても構わない。これにより、ＩＳＤ２３２が管理するメモリ残容量を、アプリケーションのインストール前に予め要求する必要がなくなり、アプリケーションをインストールする処理が効率化されることになる。
【００４２】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００４３】
１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ＵＡＲＴ、１５…ＮＶ、１６…Ｃｏ−Ｐｒｏｃｅｓｓｏｒ、２１…Ｈ／Ｗ層、２２…ＯＳ層、２２１…カードＯＳ、２３…プラットフォーム層、２３１…バーチャルマシン、２３２…ＩＳＤ、２３３…ＡＰＩ、２４…アプリケーション層
【図１】
2014063264.tif 000003
【図２】
2014063264.tif 000004
【図３】
2014063264.tif 000005
【図４】
2014063264.tif 000006
【図５】
2014063264.tif 000007
【図６】
2014063264.tif 000008
【図７】
2014063264.tif 000009
【図８】
2014063264.tif 000010