(57)【要約】【課題】更新プログラムをＥＥＰＲＯＭに実装するとき、対象とならないアプリケーションに対しては、更新プログラムの影響を無くすことができるＩＣカードを提供する。【解決手段】ＲＯＭ２１には、ＯＳとアプリケーション３ｂが一体化された専用ＯＳ３ａが実装され、ＥＥＰＲＯＭ２２には、ＲＯＭ２１に実装された関数のプログラムの更新プログラム３２と、更新プログラム３２の対象となる関数のプログラムの識別情報に関連付けて、更新プログラム３２の呼出しが許可されたアプリケーション識別子と呼び出しアドレスとが記述された関数管理テーブル３１が記憶される。専用ＯＳ３ａのカーネル３は、アプリケーション３ｂから呼出された関数のプログラムの識別情報が、ＥＥＰＲＯＭ２２の関数管理テーブル３１に記述されているとき、呼出し要求したアプリケーション３ｂのアプリケーション識別子を用いて、更新プログラム３２の呼出しを管理する。【選択図】図３
2008146343.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム（ＯＳ）とアプリケーションが一体化された専用ＯＳが書換え不可能な第１の不揮発性メモリに実装され、前記第１の不揮発性メモリに実装された関数のプログラムを差し替える更新プログラムを、電気的に書換え可能な第２の不揮発性メモリに実装できるＩＣカードであって、前記ＩＣカードは、前記更新プログラムと、前記更新プログラムごとに、前記更新プログラムの対象となる前記関数のプログラムの識別情報に関連付けて、前記更新プログラムの呼出しが許可された前記アプリケーションの識別情報と、前記更新プログラムを呼出すときに用いる呼び出しアドレスとが記述された第１の関数管理テーブルを記憶する領域を前記第２の不揮発性メモリに備え、前記専用ＯＳは、前記アプリケーションから呼出された前記関数のプログラムの識別情報が前記第１の関数管理テーブルに記述されているときは、前記関数のプログラムを呼出し要求した前記アプリケーションの識別情報と、前記関数のプログラムの識別情報に関連付けて記述されている前記アプリケーションの識別情報が一致するか確認し、一致した場合のみ前記更新プログラムを呼出すことを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、前記ＩＣカードは、前記第１の不揮発性メモリに実装された前記関数のプログラムごとに、前記関数のプログラムの識別情報に関連付けて、前記関数のプログラムの呼出しが許可された前記アプリケーションの識別情報と、前記関数のプログラムを呼出すときに用いる呼び出しアドレスとが記述された第２の関数管理テーブルを前記第１の不揮発性メモリに備え、前記アプリケーションから呼出された前記関数のプログラムの識別情報が第１の前記関数管理テーブルに記述されていないときは、前記第２の関数管理テーブルを用いて前記関数のプログラムを呼出すことを特徴とする。
【請求項３】
オペレーティングシステム（ＯＳ）とアプリケーションが一体化された専用ＯＳが書換え不可能な第１の不揮発性メモリに実装されたＩＣカードにおいて、電気的に書換え可能な第２の不揮発性メモリに記憶され、前記第１の不揮発性メモリに実装された関数のプログラムを差し替える更新プログラムの呼出し方法であって、前記更新プログラムと、前記更新プログラムごとに、前記更新プログラムの対象となる前記関数のプログラムを識別する情報である関数識別情報に関連付けて、前記更新プログラムの呼出しが許可された前記アプリケーションを特定するアプリケーション識別情報と、前記更新プログラムを呼出すときに用いる呼び出しアドレスとが記述された第１の関数管理テーブルを前記第２の不揮発性メモリに記憶させ、前記アプリケーションから呼出された前記関数のプログラムの識別情報が前記第１の関数管理テーブルに記述されているときは、前記関数のプログラムを呼出し要求した前記アプリケーションの識別情報と、前記関数のプログラムの識別情報に関連付けて記述されている前記アプリケーションの識別情報が一致するか確認し、一致した場合のみ、前記更新プログラムを呼出すことを特徴とする更新プログラムの呼出し方法。
【請求項４】
請求項３に記載の更新プログラムの呼出し方法において、前記第１の不揮発性メモリに実装された前記関数のプログラムごとに、前記関数のプログラムの識別情報に関連付けて、前記関数のプログラムの呼出しが許可された前記アプリケーションの識別情報と、前記関数のプログラムを呼出すときに用いる呼び出しアドレスとが記述された第２の関数管理テーブルが前記ＩＣカードの前記第１の不揮発性メモリに記憶され、前記アプリケーションから呼出された前記関数のプログラムの識別情報が第１の前記関数管理テーブルに記述されていないときは、前記第２の関数管理テーブルを用いて前記関数のプログラムを呼出すことを特徴とする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クレジットカードサイズのカード媒体にＩＣチップが実装されたＩＣカードに関し、更に詳しくは、不揮発性メモリに実装された関数のプログラムを差し替える技術に関する。
【背景技術】
【０００２】
クレジットカードサイズのカード媒体にＩＣチップが実装されたＩＣカードは、ＩＣチップに実装されるオペレーティングシステム（OS: Operating System）によって大きく２つに分類される。マルチアプリケーションＯＳが実装されたマルチアプリケーション型ＩＣカードと、ＮａｔｉｖｅＯＳとも称される専用ＯＳが実装された専用ＩＣカードである。
【０００３】
マルチアプリケーション型ＩＣカードは、Ｊａｖａ（登録商標）、ＭＵＬＴＯＳ（登録商標）で代表されるプラットフォーム型のＯＳをＲＯＭに実装し、電気的に書換え可能な不揮発性メモリ（例えば、ＥＥＰＲＯＭ）に、アプリケーションを実装する。
【０００４】
アプリケーションをＥＥＰＲＯＭに実装することで、ＩＣカード発行後に、アプリケーションの追加／削除が可能になるメリットがあるが、ＥＥＰＲＯＭの容量が大きくなるため、ＩＣチップが高価格になるデメリットがある。
【０００５】
これに対し、専用ＩＣカードでは、ＯＳ及びアプリケーションのコードとが一体化された専用ＯＳがＲＯＭに実装され、データのみがＥＥＰＲＯＭに記憶される。専用ＩＣカードでは、専用ＯＳがＲＯＭに実装されるため、ＩＣカード発行後に、アプリケーションの追加／削除はできなくなるデメリットはあるが、大容量のＥＥＰＲＯＭは必要ないため、ＩＣチップを低価格にできるメリットがある。
【０００６】
このようなＩＣカードにおいてもパーソナルコンピュータと同様に、ＩＣカードに実装されたプログラムに不具合（例えば、暗号化アルゴリズムの脆弱性）が見つかったときや、プログラムのバージョンアップの必要が生じたときなど、ＩＣカード発行後にプログラムの修正が必要となる場合がある。
【０００７】
マルチアプリケーション型ＩＣカードにおいては、修正を必要とするプログラムがアプリケーションであれば、修正したアプリケーションをＥＥＰＲＯＭにロードすることで対処できる。
【０００８】
これに対し、専用ＩＣカードにおいては、ＲＯＭに実装されたプログラムは修正不可能であるため、修正したプログラムを実装したＩＣチップを再製造することで対処したり、ＩＣチップを再製造しない場合は、特許文献１で開示されている技術を用い、ＲＯＭに実装されたプログラムの一部を差し替えるための更新プログラムをＥＥＰＲＯＭに追加することで対処する。
【特許文献１】特開２００３−１３２３１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、複数のアプリケーションから呼出される関数がＲＯＭに実装され、そのうちの一つのアプリケーションについてのみ関数の処理を変更したい場合は、修正を必要としない他のアプリケーションへ影響を考慮して更新プログラムを作成しなければならず、更新プログラムの作成に手間が掛かるばかりか、更新プログラムの容量も大きくなってしまう問題があった。
【００１０】
そこで、本発明は、ＲＯＭに実装された関数のプログラムに不具合などがあり、更新プログラムをＥＥＰＲＯＭに実装するとき、関数の処理の変更を必要としないアプリケーションに対しては、ＥＥＰＲＯＭに実装される更新プログラムの影響を無くすことができるＩＣカード、更新プログラムの呼出し方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決する第１の発明は、オペレーティングシステム（ＯＳ）とアプリケーションが一体化された専用ＯＳが書換え不可能な第１の不揮発性メモリに実装され、前記第１の不揮発性メモリに実装された関数のプログラムを差し替える更新プログラムを、電気的に書換え可能な第２の不揮発性メモリに実装できるＩＣカードであって、前記ＩＣカードは、前記更新プログラムと、前記更新プログラムごとに、前記更新プログラムの対象となる前記関数のプログラムの識別情報に関連付けて、前記更新プログラムの呼出しが許可された前記アプリケーションの識別情報と、前記更新プログラムを呼出すときに用いる呼び出しアドレスとが記述された関数管理テーブルを記憶する領域を前記第２の不揮発性メモリに備え、前記専用ＯＳは、前記アプリケーションから呼出された前記関数のプログラムの識別情報が前記関数管理テーブルに記述されているときは、前記関数のプログラムを呼出し要求した前記アプリケーションの識別情報と、前記関数のプログラムの識別情報に関連付けて記述されている前記アプリケーションの識別情報が一致するか確認し、一致した場合のみ前記更新プログラムを呼出すことを特徴とする。
【００１２】
第１の発明によれば、複数の前記アプリケーションから呼出される前記関数のプログラムが前記第１の不揮発性メモリに実装され、そのうちの一つの前記アプリケーションについてのみ関数の処理を変更する場合であっても、前記第２の不揮発性メモリに記憶される前記第１の関数管理テーブルに、前記更新プログラムが適用される前記アプリケーションの識別情報のみを記述しておけば、前記更新プログラムが適用されない前記アプリケーションに対して、前記第２の不揮発性メモリに実装される前記更新プログラムの影響を無くすことができる。
【００１３】
更に、第２の発明は、第１の発明に記載のＩＣカードにおいて、前記ＩＣカードは、前記第１の不揮発性メモリに実装された前記関数のプログラムごとに、前記関数のプログラムの識別情報に関連付けて、前記関数のプログラムの呼出しが許可された前記アプリケーションの識別情報と、前記関数のプログラムを呼出すときに用いる呼び出しアドレスとが記述された第２の関数管理テーブルを前記第１の不揮発性メモリに備え、前記アプリケーションから呼出された前記関数のプログラムの識別情報が第１の前記関数管理テーブルに記述されていないときは、前記第２の関数管理テーブルを用いて前記関数のプログラムを呼出すことを特徴とする。
【００１４】
第２の発明によれば、前記更新プログラムが適用されない前記アプリケーションに対しては、前記第１の不揮発性メモリに記憶された前記関数のプログラムを呼出すことが可能になる。
【００１５】
更に、第３の発明は、オペレーティングシステム（ＯＳ）とアプリケーションが一体化された専用ＯＳが書換え不可能な第１の不揮発性メモリに実装されたＩＣカードにおいて、電気的に書換え可能な第２の不揮発性メモリに記憶され、前記第１の不揮発性メモリに実装された関数のプログラムを差し替える更新プログラムの呼出し管理方法であって、前記更新プログラムと、前記更新プログラムごとに、前記更新プログラムの対象となる前記関数のプログラムを識別する情報である関数識別情報に関連付けて、前記更新プログラムの呼出しが許可された前記アプリケーションを特定するアプリケーション識別情報と、前記更新プログラムを呼出すときに用いる呼び出しアドレスとが記述された関数管理テーブルを前記第２の不揮発性メモリに記憶させ、前記アプリケーションから呼出された前記関数のプログラムの識別情報が前記関数管理テーブルに記述されているときは、前記関数のプログラムを呼出し要求した前記アプリケーションの識別情報と、前記関数のプログラムの識別情報に関連付けて記述されている前記アプリケーションの識別情報が一致するか確認し、一致した場合のみ、前記更新プログラムを呼出すことを特徴とする。
【００１６】
更に、第４の発明は、第３の発明に記載の更新プログラムの呼出し管理方法において、前記第１の不揮発性メモリに実装された前記関数のプログラムごとに、前記関数のプログラムの識別情報に関連付けて、前記関数のプログラムの呼出しが許可された前記アプリケーションの識別情報と、前記関数のプログラムを呼出すときに用いる呼び出しアドレスとが記述された第２の関数管理テーブルが前記ＩＣカードの前記第１の不揮発性メモリに記憶され、前記アプリケーションから呼出された前記関数のプログラムの識別情報が第１の前記関数管理テーブルに記述されていないときは、前記第２の関数管理テーブルを用いて前記関数のプログラムを呼出すことを特徴とする。
【００１７】
上述した第３の発明〜第４の発明によれば、上述した第１の発明〜第２の発明と同様の効果が得られる。
【発明の効果】
【００１８】
上述した本発明によれば、ＲＯＭに実装された関数のプログラムに不具合などがあり、更新プログラムをＥＥＰＲＯＭに実装するとき、関数の処理の変更を必要としないアプリケーションに対しては、ＥＥＰＲＯＭに実装される更新プログラムの影響を無くすことができるＩＣカード、更新プログラムの呼出し方法を提供できる。
【発明を実施するための最良の形態】
【００１９】
ここから、本発明が適用された専用ＩＣカード（以下、ＩＣカードと略す）について、図を参照しながら詳細に説明する。
【００２０】
図１は、本発明が適用されたＩＣカード１の外観図である。図１で示したように、ＩＣカード１は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ＩＣカード１には、ＩＣチップ２がモールドされたＩＣモジュール１ａが実装されている。
【００２１】
図１においては、ＩＣカード１を接触ＩＣカードとして図示しているが、本発明は何らＩＣカード１の通信方式に依存するものではなく、無線でデータ通信する非接触ＩＣカード、または、接触データ通信と非接触データ通信の２つの通信機能を備えたデュアルインターフェースＩＣカードであってもよい。
【００２２】
加えて、ＩＣカード１の形状は問わず、ＩＣカード１はキャッシュカードと同様の形状でなく、ＩＣモジュール１ａの近辺を短冊状に切り取った形状をしているＳＩＭ（Subscriber Identity Module）であってもよい。
【００２３】
図２は、ＩＣカードに埋め込まれるＩＣチップ２のハードウェア構成図である。ＩＣチップ２には、演算機能およびＩＣチップ２が具備するデバイスを制御する機能を備えた中央演算装置２０（CPU：Central Processing Unit）、揮発性メモリとしてランダムアクセスメモリ２３（RAM：Random Access Memory）、読み出し専用の不揮発性メモリ２１（ROＭ：Read Only Memory、）、電気的に書換え可能な不揮発性メモリとしてＥＥＰＲＯＭ２２（EEPROM：Electrically Erasable Programmable Read-Only Memoryの略）、および、外部の端末装置とデータ通信するためのＩ／Ｏ回路２４が、ＢＵＳ２５に接続されている。
【００２４】
本発明は、ＩＣカード１に実装されるＩＣチップ２の仕様をなんら限定するものではなく、ＩＣカード１の用途に適した仕様のＩＣチップ２を選択することができる。例えばＲＯＭ２１およびＥＥＰＲＯＭ２２の容量については限定しないし、書換え可能な不揮発性メモリはフラッシュメモリ等のメモリであっても構わない。またＩＣチップ２は、暗号演算回路やタイマー回路など、図示していない他の回路を備えていても構わない。
【００２５】
図３は、ＩＣチップ２のメモリに記憶されるプログラムとデータを説明する図である。上述しているように、ＩＣカード１は専用ＩＣカードであるため、ＯＳとアプリケーション３ｂが一体化された専用ＯＳ３ａがＲＯＭ２１に実装され、専用ＯＳ３ａに含まれるアプリケーション３ｂそれぞれを識別するために、アプリケーション３ｂを特定する情報であるアプリケーション識別子（Application Identifier）が、アプリケーション３ｂに付与されている。
【００２６】
ＲＯＭ２１に実装される専用ＯＳ３ａには、ＯＳ自身やアプリケーション３ｂから呼出される関数のプログラムの集合である関数群３０を含むカーネル３を備え、更に、カーネル３は、アプリケーション３ｂから関数のプログラムの呼出しを管理するために関数管理テーブル３１を備える。
【００２７】
本発明では、図３に図示したように、ＥＥＰＲＯＭ２２には、データを記憶するデータ領域２２ｂに加え、更新プログラム３２を記憶するための更新プログラム領域２２ａが設けられ、更新プログラム３２をＥＥＰＲＯＭ２２に実装したとき、更新プログラム３２と共に、ＥＥＰＲＯＭ２２の更新プログラム領域２２ａに更新プログラム３２用の関数管理テーブル３１も実装される。
【００２８】
今後、ＲＯＭ２１とＥＥＰＲＯＭ２２に実装される関数管理テーブル３１を明確に区別したいときは、関数管理テーブル３１の後に実装されているメモリを括弧で括り表記する。すなわち、ＲＯＭ２１に実装されている関数管理テーブル３１を関数管理テーブル３１（ＲＯＭ）と記述し、ＥＥＰＲＯＭ２２に実装されている関数管理テーブル３１を関数管理テーブル３１（ＥＥＰＲＯＭ）と記述する。
【００２９】
図４は、関数管理テーブル３１（ＲＯＭ）の構造を説明する図である。関数管理テーブル３１（ＲＯＭ）は、関数群３０に含まれる関数のプログラムの呼出しを管理するための情報が記述された管理レコード３１０で構成されている。
【００３０】
管理レコード３１０は可変長のデータレコードで、関数群３０に含まれるそれぞれの関数のプログラムには、それぞれの関数のプログラムを識別するための情報である関数識別情報が付与され、管理レコード３１０には、関数識別情報に関連付けて、関数識別情報で特定される関数のプログラムを呼出すことが許可されるアプリケーション３ｂのアプリケーション識別子と、関数識別情報で特定される関数のプログラムを呼出すときのアドレスである呼出しアドレスとが、ＴＬＶ（type/length/value）形式で表記されている。
【００３１】
なお、管理レコード３１０に含まれるアプリケーション識別子は一つとは限らず、複数のアプリケーション３ｂから呼出される関数のプログラムに対応する管理レコード３１０には、複数のアプリケーション識別子が含まれる。
【００３２】
ＲＯＭ２１に実装されている関数群３０に含まれる関数のプログラムを修正するとき、関数のプログラムを差し替えるためのプログラムである更新プログラム３２がＥＥＰＲＯＭ２２に記憶され、更新プログラム３２をＥＥＰＲＯＭ２２に記憶するときに、更新プログラム３２と共に、更新プログラム３２の呼出しを管理するための関数管理テーブル３１がＥＥＰＲＯＭ２２に記憶される。
【００３３】
関数管理テーブル３１（ＥＥＰＲＯＭ）の構造は、図４で図示した関数管理テーブル３１（ＲＯＭ）の構造と同じであるが、関数管理テーブル３１（ＥＥＰＲＯＭ）の管理レコード３１０には、差し替え対象となる関数のプログラムの関数識別情報に関連付けて、更新プログラム３２の呼出しが許可されたアプリケーション３ｂのアプリケーション識別子と、更新プログラム３２を呼出すときのアドレスとが記述される。
【００３４】
なお、ＥＥＰＲＯＭ２２に更新プログラム３２が記憶されるごとに、関数管理テーブル３１（ＥＥＰＲＯＭ）へ管理コード３１０が追加されるため、管理コード３１０が追加された順がわかるように、本実施の形態では、関数管理テーブル３１（ＥＥＰＲＯＭ）は可変長順編成のファイル構造としている。
【００３５】
カーネル３は、アプリケーション３ｂから関数群３０に含まれる関数のプログラムが呼出されたとき、関数管理テーブル３１を参照し、関数のプログラムの呼出しを管理する。ここから、カーネル３が関数のプログラムの呼出しを管理する内容について説明する。図５は、カーネル３が差し替えプログラム３３の呼出しを管理する動作を示したフロー図である。
【００３６】
カーネル３がアプリケーション３ｂから関数のプログラムの呼出し要求を受けたとき（ステップＳ１）、少なくとも、ＩＣチップ２のレジスタに格納されて、アプリケーション３ｂからカーネル３に呼出す関数のプログラムの関数識別番号が引渡され、更に、カーネル３は、実行中のアプリケーション３ｂのアプリケーション識別子を取得することで、関数のプログラムの呼出し要求をしたアプリケーション３ｂのアプリケーション識別子を取得する。
【００３７】
カーネル３は、関数のプログラムの呼出し要求を受けると、ＥＥＰＲＯＭ２２に関数管理テーブル３１（ＥＥＰＲＯＭ）が記憶されているか確認する（ステップＳ２）。
【００３８】
関数管理テーブル３１（ＥＥＰＲＯＭ）がある場合は、ステップＳ３に進み、管理レコード３１０を検索する関数管理テーブル３１を関数管理テーブル３１（ＥＥＰＲＯＭ）に設定し、関数管理テーブル３１（ＥＥＰＯＲＭ）がない場合は、ステップＳ７に進み、管理レコード３１０を検索する関数管理テーブル３１を関数管理テーブル３１（ＲＯＭ）に設定する（ステップＳ４）。
【００３９】
上述しているように、更新プログラム３２がＥＥＰＲＯＭ２２に記憶されている場合、ＥＥＰＲＯＭ２２に記憶された関数管理テーブル３１（ＥＥＰＲＯＭ）が優先され、更新プログラム３２を優先的に実行させることで、ＲＯＭ２１の関数群３０に含まれる関数のプログラムを差し替えることができる。
【００４０】
ステップＳ３で、管理テーブル３１０を検索する関数管理テーブル３１を関数管理テーブル３１（ＥＥＰＲＯＭ）に設定した後、カーネル３は、関数管理テーブル３１（ＥＥＰＲＯＭ）の中から、ステップＳ１で引渡された関数識別情報を含む管理レコード３１０を検索する。（ステップＳ４）。
【００４１】
関数管理テーブル３１（ＥＥＰＲＯＭ）の中から管理レコード３１０を検索するときは、新しく登録された順に検索し、カーネル３は、ステップＳ１でカーネル３に引渡された関数識別情報を含む管理レコード３１０を検索するごとに、関数のプログラムを呼出したアプリケーション３ｂに、関数識別情報で特定される関数のプログラムの呼出しが許可されているか確認する（ステップＳ５）。
【００４２】
カーネル３は、ステップＳ１でカーネル３に引渡されたアプリケーション識別子と検索した管理レコードに含まれるアプリケーション識別子を比較することで、関数のプログラムを呼出したアプリケーション３ｂに、関数識別情報で特定される関数の呼出しが許可されているか確認する。
【００４３】
関数のプログラムの呼出しがアプリケーション３ｂで許可されているときは、カーネル３は、検索した管理レコード３１０に記述されている呼び出しアドレスを用いて、関数識別情報で特定される関数を呼出す（ステップＳ６）。
【００４４】
ステップＳ３において、管理レコード３１０を検索する関数管理テーブル３１は、関数管理テーブル３１（ＥＥＰＲＯＭ）に設定されているため、このステップＳ６で、カーネル３が呼出すプログラムは、ＥＥＰＲＯＭ２２に記憶されている更新プログラム３２になる。
【００４５】
また、ステップＳ５で、検索した管理レコード３１０で特定される関数の呼出しが、関数のプログラムの呼出し要求をしたアプリケーション３ｂで許可されていないときは、ステップＳ４に戻り、カーネル３は、関数管理テーブル３１（ＥＥＰＲＯＭ）の検索していない管理レコード３１０を対象とし、ステップＳ１でカーネル３に引渡された関数識別番号が一致する管理レコード３１０を検索する。
【００４６】
ステップＳ４において、関数管理テーブル３１（ＥＥＰＲＯＭ）に含まれるすべての管理レコード３１０を検索しても、引渡された関数識別情報で特定される関数のプログラムが呼出せなかった場合、すなわち、関数識別番号が一致する管理レコード３１０が検索できなかった場合、或いは、関数識別番号が一致してもアプリケーション識別子が一致しない管理レコード３１０しか検索できなった場合は、ステップＳ７に進み、カーネル３は、管理レコード３１０の検索対象となる関数管理テーブル３１を関数管理テーブル３１（ＲＯＭ）に設定する。
【００４７】
ステップＳ７で、管理テーブル３１０を検索する関数管理テーブル３１を関数管理テーブル３１（ＲＯＭ）に設定した後、カーネル３は、関数管理テーブル３１（ＲＯＭ）の中から、ステップＳ１でカーネル３に引渡された関数のプログラムの関数識別情報を含む管理レコード３１０が関数管理テーブル３１（ＲＯＭ）を検索する。（ステップＳ８）。
【００４８】
関数管理テーブル３１（ＲＯＭ）に含まれる管理レコード３１０を検索し、カーネル３は、ステップＳ１でカーネル３に引渡された関数識別情報を含む管理レコード３１０を検索するごとに、関数のプログラムを呼出したアプリケーション３ｂに、関数識別情報で特定される関数のプログラムの呼出しが許可されているか確認する（ステップＳ９）。
【００４９】
カーネル３は、ステップＳ１でカーネル３に引渡されたアプリケーション識別子と検索した管理レコードに含まれるアプリケーション識別子を比較することで、関数のプログラムを呼出したアプリケーション３ｂに、関数識別情報で特定される関数のプログラムの呼出しが許可されているか確認する。
【００５０】
関数のプログラムの呼出しがアプリケーション３ｂで許可されているとき、カーネル３は、検索した管理レコード３１０に記述されている呼び出しアドレスを用いて、関数識別情報で特定される関数のプログラムを呼出す（ステップＳ１０）。
【００５１】
ステップＳ７において、管理レコード３１０を検索する関数管理テーブル３１は、関数管理テーブル３１（ＲＯＭ）に設定されているため、このステップＳ１０で、カーネル３が呼出すプログラムは、ＲＯＭ２１に記憶されている更新プログラム３２になる。
【００５２】
このように、本発明に係るＩＣカード１が、図４に図示したような関数管理テーブル３１を備え、関数管理テーブル３１に基づいて、アプリケーション３ｂからの関数のプログラムの呼出しを管理することで、ＲＯＭ２１に実装された関数のプログラムごとに修正することが可能になる。
【００５３】
更に、関数管理テーブル３１をＥＥＰＲＯＭ２２に記憶し、関数管理テーブル３１（ＥＥＰＲＯＭ）に更新プログラム３２を呼出すことが許可されているアプリケーション３ｂのアプリケーション識別子を記述することで、更新プログラム３２の対象とならないアプリケーション３ｂに対して、更新プログラムの影響を無くすことができる。
【００５４】
具体的な例を挙げて、上述した内容を詳細に説明する。図６は、関数管理テーブル３１の一例を示した図で、図６（ａ）は関数管理テーブル３１（ＲＯＭ）の一例である関数管理テーブル３１ａで、図６（ｂ）は関数管理テーブル３１（ＥＥＰＲＯＭ）の一例である関数管理テーブル３１ｂである。
【００５５】
図６（ａ）に図示したように、関数管理テーブル３１ａには、３つの管理レコード３１０ａが記述され、それぞれの関数識別情報は「０１」及び「０２」である。
【００５６】
関数識別情報が「０１」である管理レコード３１０ａに基づけば、関数識別情報が「０１」である関数のプログラムの呼出しが許可されているアプリケーション３ｂのアプリケーション識別子は「Ａｐｐ１」、「Ａｐｐ２」および「Ａｐｐ３」で、呼出しアドレスは「アドレスＲ１」である。
【００５７】
また、関数識別情報が「０２」である管理レコード３１０ａに基づけば、関数識別情報が「０２」である関数のプログラムの呼出しが許可されているアプリケーション３ｂのアプリケーション識別子は「Ａｐｐ１」、「Ａｐｐ２」および「Ａｐｐ３」で、呼出しアドレスは「アドレスＲ２」である。
【００５８】
図６（ｂ）に図示したように、関数管理テーブル３１ｂには、２つの管理レコード３１０ｂが記述され、２つの管理レコード３１０の関数識別情報は共に「０１」である。
【００５９】
登録された順が古い管理レコード３１０ｂに基づけば、更新プログラム３２の呼出しが許可されているアプリケーション３ｂのアプリケーション識別子は「Ａｐｐ１」、「Ａｐｐ２」および「Ａｐｐ３」で、呼出しアドレスは「アドレスＥ１」である。
【００６０】
登録された順が新しい管理レコード３１０に基づけば、更新プログラム３２の呼出しが許可されているアプリケーション３ｂのアプリケーション識別子は「Ａｐｐ２」のみで、呼出しアドレスは「アドレスＥ２」である。
【００６１】
図６（ｂ）に図示した関数管理テーブル３１ｂによれば、ＩＣカード１のＥＥＰＲＯＭ２２には、関数識別番号が「０１」である関数のプログラムの更新プログラム３２が二つ記憶されており、登録された順が古い更新プログラム３２は、アプリケーション識別子が「Ａｐｐ１」、「Ａｐｐ２」および「Ａｐｐ３」であるアプリケーション３ｂから呼び出しが許可され、登録された順が新しい更新プログラム３２は、アプリケーション識別子が「Ａｐｐ２」であるアプリケーション３ｂのみから呼び出しが許可されている。
【００６２】
図５で図示したフローに基づけば、関数管理テーブル３１ｂがＥＥＰＲＯＭ２２に記憶されているため、管理レコード３１０を検索する関数管理テーブル３１は、図６（ｂ）に図示した関数管理テーブル３１ｂに設定される。
【００６３】
そして、関数識別番号が「０１」である関数のプログラムがアプリケーション３ｂから呼出されると、カーネル３は、関数のプログラムを呼出したアプリケーション３ｂのアプリケーション識別子を確認する。
【００６４】
カーネル３は、登録された順に管理レコード３１０ｂを検索するため、関数のプログラムを呼出したアプリケーション３ｂのアプリケーション識別子が「０２」であれば、登録された順が新しい管理レコード３１０ｂが選択され、「アドレスＥ２」を用いて更新プログラム３２が呼出される。また、アプリケーション識別子が「０１」或いは「０３」であれば、登録された順が古い管理レコード３１０ｂが選択され、「アドレスＥ１」を用いて更新プログラム３２が呼出される。
【００６５】
なお、関数識別番号が「０２」である関数のプログラムがアプリケーション３ｂから呼出された場合、関数識別番号が「０２」である管理レコード３１０ｂが、図６（ｂ）に図示した関数管理テーブル３１ｂにないため、図６（ａ）に図示した関数管理テーブル３１ａの中から、関数識別番号が「０２」である管理レコード３１０ａが検索され、関数識別番号が「０２」である管理レコード３１０ａ用いて、ＲＯＭ２１に実装された関数のプログラムが呼出される。
【図面の簡単な説明】
【００６６】
【図１】ＩＣカードの外観図。
【図２】ＩＣチップのハードウェア構成図。
【図３】ＩＣチップのメモリに記憶されるプログラムとデータを説明する図。
【図４】関数管理テーブルの構造を説明する図。
【図５】カーネルが差し替えプログラムの呼出しを管理する動作を示したフロー図。
【図６】関数管理テーブルの一例を示した図。
【符号の説明】
【００６７】
１  ＩＣカード
２  ＩＣチップ
２１  ＲＯＭ，２２  ＥＥＰＲＯＭ
３  カーネル
３ａ  専用ＯＳ
３ｂ  アプリケーション
３０  関数群
３１  関数管理テーブル、３１０  管理レコード
３２  更新プログラム
【図１】
2008146343.tif 000003
【図２】
2008146343.tif 000004
【図３】
2008146343.tif 000005
【図４】
2008146343.tif 000006
【図５】
2008146343.tif 000007
【図６】
2008146343.tif 000008