(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】電子情報記憶媒体、プログラム追加方法、及びプログラム
(51)【国際特許分類】
G06F 8/65 20180101AFI20240925BHJP
G06F 21/60 20130101ALI20240925BHJP
G06F 21/44 20130101ALI20240925BHJP
【FI】
G06F8/65
G06F21/60 360
G06F21/44 350
(21)【出願番号】P 2020129227
(22)【出願日】2020-07-30
【審査請求日】2023-05-26
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】弁理士法人インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】福永 正剛
【審査官】久々宇 篤志
(56)【参考文献】
【文献】特開2007-206902(JP,A)
【文献】特開2010-113549(JP,A)
【文献】特開2007-011419(JP,A)
【文献】特開2018-101950(JP,A)
【文献】特開2002-244875(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 21/60
G06F 21/44
(57)【特許請求の範囲】
【請求項1】
外部装置からのコマンドを受信するコマンド受信部と、
処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1の前記コマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを予め記憶する記憶部と、
新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2の前記コマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、
当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換える書き込み部と、
前記コマンドに対するレスポンスを前記外部装置へ送信するレスポンス送信部と、
を備えることを特徴とする電子情報記憶媒体。
【請求項2】
前記第2の前記コマンドは、前記電子情報記憶媒体と外部装置との間で実行される認証処理において認証成功により確立されたセキュアチャンネルを利用して受信されることを特徴とする請求項1に記載の電子情報記憶媒体。
【請求項3】
前記
第1の関数は前記記憶部における第1のアドレスに記憶され、前記第2の関数は前記記憶部における第1のアドレスとは異なる第2のアドレスに記憶され、
前記書き込み部は、前記第1の前記コマンドにより前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムに記述された前記第1のアドレスを前記第2のアドレスを変更することを特徴とする請求項1または2に記載の電子情報記憶媒体。
【請求項4】
電子情報記憶媒体に含まれるコンピュータにより実行されるプログラム追加方法であって、
処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1のコマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを記憶部に記憶するステップと、
新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2のコマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、
当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換えるステップと、
を含むことを特徴とするプログラム追加方法。
【請求項5】
処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1のコマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを記憶部に記憶するステップと、
新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2のコマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、
当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換えるステップと、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアエレメントに搭載されるアプリケーションプログラムに対して後から機能を追加する方法等の技術に関する。
【背景技術】
【0002】
組み込み機器に搭載されるセキュアエレメントは、ICチップにより構成されており、暗号演算や生体認証など様々な用途に利用される。しかしながら、セキュアエレメントには、メモリサイズなどのハードウェア資源に制約があるため、全ての機能を搭載することは困難である。従って、利用用途に応じた機能(例えば、暗号演算機能や生体認証機能)を後からセキュアエレメントにロードする必要がある。例えば、特許文献1には、新機能の追加、安定性の向上、セキュリティの向上など様々な理由で、新たなファイルを追加する処理や修正対象のファイルを置換する処理を実行するパッチプログラムを用いて、アプリケーションプログラムに対する修正を行う技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、特許文献1の技術では、修正対象のアプリケーションプログラムにパッチプログラムを適用する場合、アプリケーションプログラムが属する業務の業務処理を特定し、特定された業務の業務処理にアプリケーションプログラムを対応付けるように管理情報を更新するなどといった時間の要する処理が必要であり、また、パッチプログラムのロードのために大きなメモリを要する。しかし、上述したセキュアエレメントは、ハードウェア資源に制約があるため、特許文献1の技術をそのまま適用することは難しい。
【0005】
そこで、本発明は、上記点に鑑みてなされたものであり、省メモリで効率良くアプリケーションプログラムに新機能を後から追加することが可能な電子情報記憶媒体、プログラム追加方法、及びプログラムを提供することを課題とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、外部装置からのコマンドを受信するコマンド受信部と、処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1の前記コマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを予め記憶する記憶部と、新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2の前記コマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換える書き込み部と、前記コマンドに対するレスポンスを前記外部装置へ送信するレスポンス送信部と、を備えることを特徴とする。
【0007】
請求項2に記載の発明は、請求項1に記載の電子情報記憶媒体において、前記第2の前記コマンドは、前記電子情報記憶媒体と外部装置との間で実行される認証処理において認証成功により確立されたセキュアチャンネルを利用して受信されることを特徴とする。
【0008】
請求項3に記載の発明は、請求項1または2に記載の電子情報記憶媒体において、第1の関数は前記記憶部における第1のアドレスに記憶され、前記第2の関数は前記記憶部における第1のアドレスとは異なる第2のアドレスに記憶され、前記書き込み部は、前記第1の前記コマンドにより前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムに記述された前記第1のアドレスを前記第2のアドレスを変更することを特徴とする。
【0009】
請求項4に記載の発明は、電子情報記憶媒体に含まれるコンピュータにより実行されるプログラム追加方法であって、処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1のコマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを記憶部に記憶するステップと、新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2のコマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換えるステップと、を含むことを特徴とする。
【0010】
請求項5に記載の発明は、処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数を有するアプリケーションプログラムであって、第1のコマンドに応じて前記第1の関数が呼び出されるように構成されたアプリケーションプログラムを記憶部に記憶するステップと、新機能に係る処理内容が定義された第2の関数を有するパッチプログラムを含む第2のコマンドに応じて当該パッチプログラムを前記アプリケーションプログラムに追加して前記記憶部に書き込むとともに、当該パッチプログラムが前記記憶部に書き込まれた後に前記第1の前記コマンドが受信された場合に当該第1の前記コマンドに応じて前記第1の関数に代えて前記第2の関数が呼び出されるように前記アプリケーションプログラムを書き換えるステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【0011】
本発明によれば、省メモリで効率良くアプリケーションプログラムに新機能を後から追加することができる。
【図面の簡単な説明】
【0012】
【
図1】(A)は、SE1の概要構成例を示す図であり、(B)は、NVM12のメモリマップの一例を示す図である。
【
図2】(A)は、空アプリケーションプログラムのソースコードの一例を示す図であり、(B)は、パッチプログラムのソースコードの一例を示す図である。
【
図3】パッチプログラムが空アプリケーションプログラムに追加される際のSE1及び外部装置2の動作の一例を示すシーケンス図である。
【
図4】パッチプログラムが空アプリケーションプログラムに追加された後のSE1の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、セキュアエレメント(以下、「SE」という)に対して本発明を適用した場合の実施の形態である。
【0014】
[1.SE1の構成及び機能]
先ず、
図1を参照して、本実施形態に係るSE1の構成及び機能について説明する。
図1(A)は、SE1の概要構成例を示す図である。SE1は、本発明の電子情報記憶媒体の一例である。
図1(A)に示すように、SE1は、CPU(Central Processing Unit)10、RAM(Random Access Memory)11、NVM(Nonvolatile Memory)12(不揮発性メモリ)、及びI/O回路13などを備えて構成される(ROMが備えられる場合もある)。SE1は、例えば各種カード(例えば、クレジットカードやデビットカード)、またはスマートフォン等の端末に搭載されて使用される。なお、SE1は、着脱可能な小型のICカードとして端末に搭載されてもよいし、eUICC(Embedded Universal Integrated Circuit Card)として端末から容易に取り外しや取り換えができないように組み込み基盤上に搭載(つまり、端末と一体的に形成)されてもよい。
【0015】
I/O回路13は、外部装置2との間のインターフェースを担う。外部装置2の例として、後述するパッチプログラムを提供するホスト(コンピュータ)、及びSE1の機能を利用する機器(例えば、上記各種カードの通信相手や上記端末のコントローラ)が挙げられる。インターフェースの例として、SPI(Serial Peripheral Interface) 、I2C(Inter-Integrated Circuit)、及びISO7816のインターフェースなどが挙げられる。SE1と外部装置2との間の通信は、直接的に行われてもよいし、上記端末の無線通信部を介して間接的に行われてもよい。後者の場合、当該端末の無線通信部によりプロトコル変換が行われる。なお、SE1と上記ホストとの間の通信は、相互認証を実行して確立したセキュアチャンネルを通じて行われることが望ましい。
【0016】
また、外部装置2から送信されたコマンドは、I/O回路13を通じて受信される。受信されるコマンドは、少なくともヘッダ(CLA(命令クラス)、INS(命令コード)、P1及びP2(パラメータ)からなる)を含むAPDU(Application Protocol Data Unit)により構成される。さらに、コマンドは、上記ヘッダに加えて、プログラム(例えば、パッチプログラム)やデータ等を有するボディを含む場合もある。また、コマンドに対するレスポンスは、I/O回路13を通じて外部装置2へ送信される。ここで、レスポンスは、少なくとも処理結果を示すSW(ステータスワード)からなり、データを含む場合もある。
【0017】
CPU10は、NVM12に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。RAM11は、作業用メモリとして利用され、例えば、後入れ先出しの構造を有するスタック領域を有する。スタック領域には、例えば、ローカル変数、引数、戻り値などがフレーム単位で書き込まれ、その後、フレーム単位で取得される。なお、スタック領域は、NVM12に設けられてもよい。NVM12は、記憶部の一例であり、例えばフラッシュメモリが適用される。NVM12は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。NVM12には、各種プログラム(本発明のプログラムを含む)が予め記憶(例えば、SE1の出荷前に記憶)される。各種プログラムには、オペレーティングシステム(OS)、オペレーティングシステム上で実行されるアプリケーションプログラムなどが含まれる。さらに、NVM12には、暗号演算機能や生体認証(例えば、指紋認証や掌紋認証)機能などの新機能を実現するためのパッチプログラムが後から書き込まれる(例えば、SE1の出荷後に書き込まれる)ようになっている。
【0018】
図1(B)は、NVM12のメモリマップの一例を示す図である。
図1(B)の例では、NVM12は、プログラム格納領域121、パッチ格納領域122、及びデータ格納領域123を含む。データ格納領域123には、例えば、セキュアチャンネルを確立するための認証処理に用いられる認証用データが格納される。認証用データは、例えば、セキュアチャンネル暗号鍵、セキュアチャンネルMAC(Message Authentication Code)鍵、及びデータ暗号鍵を含む鍵セットである。プログラム格納領域121は、オペレーティングシステム、及びアプリケーションプログラムを格納するための領域である一方、パッチ格納領域122は、パッチプログラムを記憶するための領域である。ここで、アプリケーションプログラムには、最低限の機能を有するアプリケーションプログラム(以下、「空アプリケーションプログラム」という)と、管理用アプリケーションプログラムとが含まれる。
【0019】
空アプリケーションプログラムは、処理内容が定義されていない、または、ダミーの処理内容が定義された第1の関数(以下、「空関数」という)を有し、第1のコマンド(以下、「特定コマンド」という)に応じて空関数が呼び出されるように構成される。このため、最低限の機能には、例えば、特定コマンドを受信するコマンド受信機能、当該特定コマンドに応じて空関数を呼び出し実行するコマンド実行機能、及び当該特定コマンドに対するレスポンスを送信するレスポンス送信機能が含まれる。特定コマンドは、新機能を実行させるためのコマンドである。ただし、特定コマンドに応じて呼び出された空関数には処理内容が定義されていない(または、ダミーの処理内容が定義されている)ので、この段階では新機能は実行されない。ここで、ダミーの処理内容として、例えば、エラー応答(何の処理も行わずにエラーだけ応答)を行うこと、または、固定値(パッチが当たっていないことを示す値など)の応答を行うことなどが挙げられる。なお、空アプリケーションプログラムの最低限の機能には、SE1の起動時のメモリ初期化機能が含まれてもよい。
【0020】
一方、管理用アプリケーションプログラムは、外部装置2からのコマンドをI/O回路13及びオペレーティングシステムを介して受信するコマンド受信部、並びに、コマンドに対するレスポンスをオペレーティングシステム及びI/O回路13を介して外部装置2へ送信するレスポンス送信部としての機能を有するとともに、ISD (Issuer Security Domain)等のセキュリティドメインとしての機能を有する。セキュリティドメインは、セキュアチャンネルプロトコルにしたがって、SE1と外部装置2との間の相互認証を行い、SE1と外部装置2との間の暗号路になるセキュアチャンネルを確立する。
【0021】
さらに、管理用アプリケーションプログラムは、新機能に係る処理内容が定義された第2の関数(以下、「差し替え関数」という)を有するパッチプログラムを含む第2のコマンド(以下、「パッチ適用コマンド」という)に応じて当該パッチプログラムを空アプリケーションプログラムに追加してパッチ格納領域122に書き込むとともに、空関数に代えて差し替え関数が呼び出されるように空アプリケーションプログラムを書き換える書き込み部としての機能を有する。つまり、空関数は、空アプリケーションプログラムにパッチプログラムを追加(換言すると、埋め込む)するための適用口となる。なお、パッチ適用コマンドのボディに含まれるパッチプログラムはネイティブコード(機械語)により構成されることが望ましく、これにより、インタプリタのように処理に時間がかかることを回避することができる。
【0022】
図2(A)は、空アプリケーションプログラムのソースコードの一例を示す図である。
図2(A)に示す空アプリケーションプログラムは、プログラム格納領域121におけるアドレス“0x1100”に記憶されている空関数“patch_entry(int arg1)”が呼び出されるように記述されている。
図2(B)は、パッチプログラムのソースコードの一例を示す図である。
図2(B)に示すパッチプログラムは、新機能に係る処理内容が定義された差し替え関数“patch_entry_new(int arg1)”が記述されている。
【0023】
このようなパッチプログラムが、パッチ格納領域122におけるアドレス“0x2000”に書き込まれることで、空アプリケーションプログラムに追加される。このようなパッチプログラムが、パッチ格納領域122におけるアドレス“0x2000”に書き込まれ、また、patch_entry(testVal)を呼び出している箇所のアドレスを変更することで、空アプリケーションプログラムにpatch_entry_new(int arg1)が追加される。そして、特定コマンドに応じて差し替え関数“patch_entry_new(int arg1)”が呼び出される(つまり、空関数に代えて差し替え関数が呼び出される)ように、空アプリケーションプログラムにおいて書き換え対象となる部分(例えば、
図2(A)に示す51部)に記述される“patch_entry(testVal)”が“patch_entry_new(testVal)”に書き換えられることになる。これにより、特定コマンドに応じて新機能が実行されることになる。なお、
図2(A)に示す空アプリケーションプログラム、及び
図2(B)に示すパッチプログラムは、それぞれソースコードで示されているが、ネイティブコードでNVM12に書き込まれる。
【0024】
[2.SE1等の動作]
次に、
図3を参照して、パッチプログラムが空アプリケーションプログラムに追加される際のSE1及び外部装置2の動作について説明する。
図3は、パッチプログラムが空アプリケーションプログラムに追加される際のSE1及び外部装置2の動作の一例を示すシーケンス図である。
【0025】
なお、
図3に示す動作の前提として、外部装置2はホストであるものとし、SE1には、空アプリケーションプログラム及び管理用アプリケーションプログラムがインストールされており、当該ホストと間で相互認証に用いられる認証用データ(つまり、セキュアチャンネル暗号鍵、セキュアチャンネルMAC鍵、及びデータ暗号鍵を含む鍵セット)が格納されているものとする。また、ホストとしての外部装置2にも、SE1に格納された認証用データと同一の認証用データが格納されているものとする。
【0026】
図3において、ホストである外部装置2は、SE1のセキュリティドメインを選択するためのSELECTコマンドをSE1へ送信する(ステップS1)。
【0027】
次いで、SE1は、外部装置2からのSELECTコマンドを受信すると、セキュリティドメイン(つまり、管理用アプリケーションプログラム)を選択し(ステップS2)、SELECTコマンドに対するレスポンス(正常終了を示す)を外部装置2へ送信する(ステップS3)。
【0028】
次いで、外部装置2は、SE1からのレスポンスを受信すると、ホスト側乱数(Host Challenge)を生成し(ステップS4)、当該ホスト側乱数及びKey Version Numberを含むINITALIZE UPDATEコマンドをSE1へ送信する(ステップS5)。
【0029】
ここで、INITALIZE UPDATEコマンドは、SE1と外部装置2の暗号路になるセキュアチャンネルを確立するための認証処理の開始をSE1へ通知するためのコマンドである。また、Key Version Numberは、暗号演算の元となる認証用データの識別に用いるデータである。
【0030】
次いで、SE1は、外部装置2からのINITALIZE UPDATEコマンドを受信すると、SE側乱数(Card Challenge)、セッション鍵、及びSE側暗号文(Card Cryptogram)を生成し(つまり、セキュリティドメインにより生成され)(ステップS6)、当該SE側乱数及びSE側暗号文を含むレスポンスを外部装置2へ送信する(ステップS7)。
【0031】
ここで、セッション鍵は、セキュアチャンネルで用いられる暗号鍵であり、例えば、ホスト側乱数、SE側乱数、及び認証用データ(Key Version Numberによりデータ格納領域123から取得)に基づいて生成される。こうして生成されたセッション鍵には、例えば、暗号セッション鍵とMACセッション鍵とが含まれる。また、SE側暗号文は、例えば、ホスト側乱数とSE側乱数をSE側規則に従って連結させたデータが、暗号セッション鍵により暗号化されることで生成される。
【0032】
次いで、外部装置2は、SE1からのレスポンス(つまり、INITALIZE UPDATEコマンドに対するレスポンス)を受信すると、SE1と同じ方法でセッション鍵及びSE側暗号文(Card Cryptogram)を生成する(ステップS8)。
【0033】
次いで、外部装置2は、SE1から受信されたレスポンスに含まれるSE側暗号文と、ステップS8で生成されたSE側暗号文とを照合することでSE1の正当性を検証する(ステップS9)。
【0034】
次いで、外部装置2は、SE1の正当性検証に成功(つまり、認証成功)すると、ホスト側乱数とSE側乱数をホスト側規則に従って連結させたデータを、暗号セッション鍵により暗号化することでホスト側暗号文(Host Cryptogram)を生成し(ステップS10)、当該ホスト側暗号文を含むEXTERNAL AUTHENTICATEコマンドをSE1へ送信する(ステップS11)。
【0035】
ここで、EXTERNAL AUTHENTICATEコマンドは、SE1による外部装置2の認証とセキュリティレベルの決定に用いられるコマンドである。なお、EXTERNAL AUTHENTICATEコマンドには、MACセッション鍵を用いて生成されたMACが含まれてもよい。
【0036】
次いで、SE1は、外部装置2からのEXTERNAL AUTHENTICATEコマンドを受信すると、外部装置2と同じ方法でホスト側暗号文(Host Cryptogram)を生成する(ステップS12)。なお、ステップS12において、SE1は、外部装置2と同じ方法でMACを生成してもよい。
【0037】
次いで、SE1は、外部装置2から受信されたEXTERNAL AUTHENTICATEコマンドに含まれるホスト側暗号文と、ステップS12で生成されたホスト側暗号文とを照合することで外部装置2の正当性を検証する(つまり、セキュリティドメインにより検証される)(ステップS13)。なお、SE1は、外部装置2から受信されたEXTERNAL AUTHENTICATEコマンドに含まれるMACと、ステップS12で生成されたMACとを照合することでMACの正当性を検証してもよい。
【0038】
次いで、SE1は、外部装置2の正当性検証に成功(または、MACの正当性検証と外部装置2の正当性検証とのそれぞれに成功)すると、認証成功を示すレスポンスを外部装置2へ送信する(ステップS14)。こうして、セキュアチャンネルを確立するための認証処理が終了し、SE1と外部装置2との間のセキュアチャンネルが確立する。
【0039】
認証成功によりセキュアチャンネルが確立した後、EXTERNAL AUTHENTICATEコマンドにより指定されたセキュリティレベルに応じ、上記認証処理で生成されたセッション鍵を用いて、外部装置2がSE1へ送信するコマンドが保護される。例えば、外部装置2からSE1へ送信されるパッチ適用コマンドが暗号セッション鍵により暗号化される。なお、MACセッション鍵を用いて生成されたMACがパッチ適用コマンドに付加されてもよい。
【0040】
次いで、外部装置2は、確立されたセキュアチャンネルを利用して、新機能に係る処理内容が定義された差し替え関数を有するパッチプログラムを含むパッチ適用コマンドをSE1へ送信する(ステップS15)。ここで、パッチ適用コマンドとして、例えば、UPDATE DATAコマンドを適用することができ、当該UPDATE DATAコマンドにより、パッチプログラムの書き込み先アドレス、及び空アプリケーションプログラムにおける書き換え先アドレスが指定される。
【0041】
次いで、SE1は、外部装置2からのパッチ適用コマンドを受信すると、上述したようにパッチ適用コマンドに応じてセキュリティドメインによりパッチプログラムを空アプリケーションプログラムに追加してパッチ格納領域122に書き込む(ステップS16)。例えばUPDATE DATAコマンドにより指定された書き込み先アドレスにパッチプログラムが書き込まれる。
【0042】
次いで、SE1は、空関数に代えて差し替え関数が呼び出されるように空アプリケーションプログラムを書き換え(つまり、セキュリティドメインにより書き換えられる)(ステップS17)、パッチ適用コマンドに対するレスポンス(正常終了を示す)を外部装置2へ送信する(ステップS18)。例えばUPDATE DATAコマンドにより指定された書き換え先アドレスの部分が書き換えられる。
【0043】
次に、
図4を参照して、パッチプログラムが空アプリケーションプログラムに追加された後のSE1の動作について説明する。
図4は、パッチプログラムが空アプリケーションプログラムに追加された後のSE1の処理の一例を示すフローチャートである。なお、
図4に示す動作の前提として、外部装置2はSE1の新機能を利用する機器であるものとする。
【0044】
図4に示す処理は、SE1の新機能を利用する機器である外部装置2からのSELECTコマンドに応じて空アプリケーションプログラム(パッチプログラムが追加された空アプリケーションプログラム)が選択された後、当該外部装置2からのコマンドが受信された場合に開始される。
図4に示す処理が開始されると、受信されたコマンドが、上記特定コマンド(例えば、AESやRSA処理を実行させるコマンド)であるか否かが判定される(ステップS21)。受信されたコマンドが特定コマンドであると判定された場合(ステップS21:YES)、新機能に係る処理内容が定義された差し替え関数が呼び出されて新機能に係る処理が実行され(ステップS22)、当該特定コマンドに対するレスポンスが外部装置2へ送信される。一方、受信されたコマンドが特定コマンドでないと判定されると(ステップS21:NO)、通常の処理が実行され(ステップS23)、当該特定コマンド以外のコマンドに対するレスポンスが送信される。
【0045】
以上説明したように、上記実施形態によれば、特定コマンドに応じて空関数が呼び出されるように構成された空アプリケーションプログラムを予め記憶しておき、新機能に係る処理内容が定義された差し替え関数を有するパッチプログラムを含むパッチ適用コマンドに応じて当該パッチプログラムを空アプリケーションプログラムに追加してNVM12に書き込むとともに、空関数に代えて差し替え関数が呼び出されるように空アプリケーションプログラムを書き換えるように構成したので、省メモリで効率良くアプリケーションプログラムに新機能を後から追加することができる。
【0046】
なお、上記実施形態においては、本発明の電子情報記憶媒体の一例としてSE1を例にとって説明したが、本発明は、組込み型のマイクロチップ等に対して適用することもできる。
【符号の説明】
【0047】
1 SE
2 外部装置
10 CPU
11 RAM
12 NVM
13 I/O回路