(57)【要約】【課題】任意の関数にパッチを適用可能で，かつ，ＲＯＭに記憶されたプログラムの容量が大きくなることのないＩＣカードを提供する。【解決手段】ＩＣカード１のＥＥＰＲＯＭ１４には，ＲＯＭ１２に実装された関数２１を変更するためのパッチ２５に加え，該関数２１の呼出アドレスに関連付けて，パッチ２５の呼出アドレスが記憶されるパッチテーブル２４が記憶される。ＲＯＭ１２に実装された関数２１が呼び出されると，関数呼出し時の割り込みが発生し，パッチ実行プログラム２２が呼び出される。パッチ実行プログラム２２は，呼び出された関数２１の呼出アドレスをパッチテーブル２４から検索し，該関数２１の呼出アドレスが検索できた場合，該関数２１の呼出アドレスに関連付けられたパッチ２５の呼出アドレスを利用して，該関数２１のパッチ２５を呼び出す。【選択図】図３
2010134644.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリである第１のメモリと電気的に書換え可能な不揮発性メモリである第２のメモリを有するＩＣカードであって，前記第１のメモリに実装された関数を変更するためのパッチが実装されたとき，該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルが前記第２のメモリに実装され，前記第１のメモリに実装された関数を呼び出すとき所定の割り込みを発生させる割り込み手段と，前記割り込みが発生したとき，呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索し，該関数の呼出アドレスが検索できた場合，該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して，該関数のパッチを呼び出すコンピュータプログラムを備えていることを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードであって，前記コンピュータプログラムは，前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合，該関数の呼出アドレスを利用して，前記第1のメモリに記憶されている前記関数を実行することを特徴とするＩＣカード。
【請求項３】
不揮発性メモリである第１のメモリと電気的に書換え可能な不揮発性メモリである第２のメモリを有するＩＣカードにおいて，前記第１のメモリに実装された関数を変更するためのパッチを実行させる方法であって，前記ＩＣカードが，前記第１のメモリに実装された関数を呼び出すとき所定の割り込みを発生させるステップａと，前記第１のメモリに実装された関数を変更するためのパッチが実装されたとき，該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルから，前記ＩＣカードが，前記ステップａで呼び出された前記関数の呼出アドレスを検索するステップｂ，前記ＩＣカードが，該関数の呼出アドレスが検索できた場合，該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して，該関数のパッチを呼び出すステップｃが実行されることを特徴とするパッチ実行方法。
【請求項４】
請求項３に記載のパッチ実行方法であって，前記ステップｂにおいて，前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合，前記ステップｃの代わりに，該関数の呼出アドレスを利用して，前記第1のメモリに記憶されている前記関数を実行するステップｄが実行されることを特徴とするパッチ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，半導体集積回路（以下，ＩＣチップ）が実装された任意のサイズのカードであるＩＣカードに関し，更に詳しくは，ＩＣカードの不揮発性メモリに記憶されたプログラムを変更するためのパッチを実行するための技術に関する。
【背景技術】
【０００２】
ＩＣカードとは，半導体集積回路（以下，ＩＣチップ）が実装された任意のサイズのカードで，金融分野や交通分野などで幅広く利用され，生産コストやセキュリティの観点から，ＩＣカードの読み出し可能な不揮発性メモリ（ROM: Read-Only Memory）にプログラムの一部或いは全てを実装するため，ＩＣカードには，ＲＯＭに実装されたプログラムコードの一部を変更するためのパッチを実装する機能が備えられることが一般的である（例えば，特許文献１）。
【０００３】
しかしながら、従来の技術では，パッチが適用可能なＲＯＭのモジュール単位毎に，パッチを実行させるために必要なプログラムを含ませる必要があるため，該モジュールに含まれる関数毎に，パッチを当てることができない問題があった。
【０００４】
なぜなら，上述したように，従来の技術では，パッチを適用可能とする箇所に，パッチを実行させるためのプログラムを含ませる必要があるため，例えば，ＩＣカードのＲＯＭに含まれる関数すべてにパッチを適用可能にすると，パッチを実行ためのプログラムを該関数すべてに含ませなければならず，ＩＣカードのＲＯＭに記憶されたプログラムの容量が大きくなってしまう問題がある。
【０００５】
【特許文献１】特許第３８９９２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで，本発明は，ＩＣカードのＲＯＭに記憶されたプログラムに含まれる任意の関数にパッチを適用可能で，かつ，ＩＣカードのＲＯＭに記憶されたプログラムの容量が大きくなることのないＩＣカード及びパッチの実行方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決する第１の発明は，不揮発性メモリである第１のメモリと電気的に書換え可能な不揮発性メモリである第２のメモリを有するＩＣカードであって，前記第１のメモリに実装された関数を変更するためのパッチが実装されたとき，該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルが前記第２のメモリに実装され，前記第１のメモリに実装された関数を呼び出すとき所定の割り込みを発生させる割り込み手段と，前記割り込みが発生したとき，呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索し，該関数の呼出アドレスが検索できた場合，該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して，該関数のパッチを呼び出すコンピュータプログラムを備えていることを特徴とするＩＣカードである。
【０００８】
更に，第２の発明は，第１の発明に記載のＩＣカードであって，前記コンピュータプログラムは，前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合，該関数の呼出アドレスを利用して，前記第1のメモリに記憶されている前記関数を実行することを特徴とするＩＣカードである。
【０００９】
更に，第３の発明は，不揮発性メモリである第１のメモリと電気的に書換え可能な不揮発性メモリである第２のメモリを有するＩＣカードにおいて，前記第１のメモリに実装された関数を変更するためのパッチを実行させる方法であって，前記ＩＣカードが，前記第１のメモリに実装された関数を呼び出すとき所定の割り込みを発生させるステップａと，前記第１のメモリに実装された関数を変更するためのパッチが実装されたとき，該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルから，前記ＩＣカードが，前記ステップａで呼び出された前記関数の呼出アドレスを検索するステップｂ，前記ＩＣカードが，該関数の呼出アドレスが検索できた場合，該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して，該関数のパッチを呼び出すステップｃが実行されることを特徴とするパッチ実行方法である。
【００１０】
更に，第４の発明は，第３の発明に記載のパッチ実行方法であって，前記ステップｂにおいて，前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合，前記ステップｃの代わりに，該関数の呼出アドレスを利用して，前記第1のメモリに記憶されている前記関数を実行するステップｄが実行されることを特徴とするパッチ実行方法である。
【発明の効果】
【００１１】
上述した本発明によれば，ＩＣカードのＲＯＭに記憶されたプログラムに含まれる任意の関数にパッチを適用可能で，かつ，ＩＣカードのＲＯＭに記憶されたプログラムの容量が大きくなることのないＩＣカード及びパッチの実行方法を提供できる。
【発明を実施するための最良の形態】
【００１２】
ここから，本発明に係わるＩＣカードの最良の実施形態について，図を参照しながら詳細に説明する。
【００１３】
図１は，本実施形態に係わるＩＣカード１の外観を説明する図である。図１で図示したＩＣカード１は接触型ＩＣカードで，ＩＣカード１にはＩＣモジュール１ａがエンベットされ，ＩＣモジュール１ａの裏面には，ＩＣチップ１０が樹脂１ｂでモールドされている。
【００１４】
図２は，ＩＣチップ１０の回路ブロック図で，ＩＣチップ１０は，プログラムコードに含まれる命令を解釈実行する演算装置であるＣＰＵ１１（Central Processing Unit），読み出し専用のメモリであるＲＯＭ１２（Read−Only Memory），ＣＰＵ１１が利用するメインメモリであるＲＡＭ１３（Random Access Memory），電気的に書換え可能な不揮発性メモリであるＥＥＰＲＯＭ１４（Erasable Programmable ROM），暗号処理などの特定の演算機能に特化した副演算装置であるＣｏ−Processor１５，図外のリーダライタとデータ通信するための回路であるＵＡＲＴ１６を備えている。
【００１５】
図３は，本実施形態におけるＩＣチップ１０のメモリの内容を説明する図で，図３（ａ）はＲＯＭ１２の内容を説明する図で，図３（ｂ）はＥＥＰＲＯＭ１４を説明する図である。
【００１６】
図３（ａ）に図示したように，ＩＣカード１のＲＯＭ１２には，ファイル管理やデータ通信などＩＣカード１が動作するための基本機能に加え，ＩＣカード１が利用されるシステムに特化したアプリケーション機能を備えたオペレーティングシステム２（OS: Operating System）が実装され，本実施形態において，ＯＳ２には，メインルーチン２０に加え，メインルーチン２０で利用する合計ｎ個の関数２１，パッチ割り込みが発生したときに呼び出されるプログラムであるパッチ実行プログラム２２，各種割り込みに対応するモジュールが記述された割り込みベクタテーブル２３（Interrupt Vector table）が含まれる。
【００１７】
また，図３（ｂ）に図示したように，ＩＣカード１のＥＥＰＲＯＭ１４には，ＲＯＭ１２に実装された関数２１を更新するためのプログラムであるパッチ２５が記憶され，図３（ｂ）では，関数名がＦｕｎｃ＿ａとＦｕｎｃ＿ｎの２つ関数２１のパッチ２５が記憶されている。
【００１８】
更に，ＲＯＭ１２に実装された関数２１を変更するためのパッチ２５が実装されたとき，該関数２１の呼出アドレスに関連付けてパッチ２５の呼出アドレスが記憶されるパッチテーブル２４がＥＥＰＲＯＭ１４に記憶されている。
【００１９】
図４は，ＲＯＭ１２に実装される割り込みベクタテーブル２３を説明する図である。図４に図示したように，割り込みベクタテーブル２３とは，ＩＣカード１で発生する割り込みを識別するＩＤごとに，割り込み要因と，該割り込み要因によって割り込みが発生した受けたときにＣＰＵ１１が実行するモジュールの呼出アドレスが記憶されたデータテーブルである。
【００２０】
この割り込みベクタテーブル２３には，割り込み要因として，ＣＰＵ１１の暴走を監視するＷＤＴ（Watched Dog Timer）やＴｉｍｅｒ１の割り込み要因に加え，関数呼出し時の割り込み要因が記憶され，ＩＤが「ｎｎｈ」（ｈは１６進数）に，関数呼出し時の割り込み要因と，関数呼出し時の割り込みが発生したときに呼び出すモジュール（ここでは，パッチ実行プログラム２２）の呼出アドレスが記述されている。
【００２１】
関数呼出し時に割り込みを発生させる手段としては，ソフトウェア割り込みを利用して実現できるが，特殊なＣＰＵを製造することが可能であるならば，関数呼出しの割り込みは，ハードウェア割り込みでも実現できる。
【００２２】
例えば，ソフトウェア割り込みを利用して該手段を実現するとき，関数２１を呼び出すコードを数式１のように記述すれば，関数２１を呼出した時に割り込みを発生させることができるようになる。
【数１】
2010134644.tif 000003
数式１において，axはレジスタ名，addressは関数の呼出アドレス，intは割り込みを発生させるＣＰＵ１１の命令，nnhは，関数呼出し時の割り込みの割り込みベクタテーブルの番号。
【００２３】
図５は，ＥＥＰＲＯＭ１４に実装されるパッチテーブル２４を説明する図である。図５に図示したようにパッチテーブル２４は，パッチが適用された関数２１の呼出アドレスに関連付けて該関数２１のパッチ２５の呼出アドレスが記憶されるデータテーブルである。
【００２４】
図３（ｂ）では，関数名がＦｕｎｃ#ａ及びＦｕｎｃ#ｎである関数２１にパッチが適用されているため，図５においては，関数名がＦｕｎｃ#ａである関数２１の呼出アドレスに関連付けて，関数名がＦｕｎｃ#ａである関数２１のパッチ２４の呼出アドレスがパッチテーブル２４に記憶され，更に，関数名がＦｕｎｃ#ｎである関数２１の呼出アドレスに関連付けて，関数名がＦｕｎｃ#ｎである関数２１のパッチ２４の呼出アドレスがパッチテーブル２４に記憶されている。
【００２５】
ここから，本発明に係わる方法の説明も兼ねて，関数呼出し時の割り込みが発生したときの処理について説明する。図６は，関数呼出し時の割り込みが発生したときの処理の流れを示したフロー図である。
【００２６】
ＩＣカード１のＲＯＭ１２に実装されたＯＳ２のメインルーチン２０がＣＰＵ１１で解釈実行されることで，ＯＳ２に含まれる関数２１の一つが呼び出される，ソフトウェア的に或いはハードウェア的に関数呼出し時の割り込みが発生する（Ｓ１）。
【００２７】
関数呼出し時の割り込みが発生すると，ＣＰＵ１１は，ＲＯＭ１２に実装されている割り込みベクタテーブル２３を検索し（Ｓ２），発生した割り込み（ここでは，関数呼出し時の割り込み）の番号に関連付けられた呼出アドレスを利用し，関数呼出し時の割り込みに対応するモジュールとしてパッチ実行プログラム２２を呼出す（Ｓ３）。
【００２８】
パッチ実行プログラム２２は呼び出されると，ＥＥＰＲＯＭ１４に実装されたパッチテーブル２４を検索し，関数呼出し時の割り込みが発生したとき呼び出された関数２１の呼出アドレス，数式１で言えばレジスタａｘに格納されたアドレスがパッチテーブル２４に記憶されていないか確認する（Ｓ４）。
【００２９】
関数呼出し時の割り込みが発生したときに呼び出された関数２１の呼出アドレスがパッチテーブル２４に記憶されているか否かによって，パッチ実行プログラム２２は処理を分岐させ（Ｓ５），該関数２１の呼出アドレスがパッチテーブル２４に記憶されている場合は，該関数２１の呼出アドレスに関連付けられているパッチ２５の呼出アドレスを利用して，ＥＥＰＲＯＭ１３に実装されている関数２１のパッチ２５を実行させ（Ｓ６），該関数２１の呼出アドレスがパッチテーブル２４に記憶されていない場合は，関数２１の呼出アドレスを利用して，ＲＯＭ１２に実装されている関数２１を実行させ（Ｓ７），図６で図示した手順は終了する。
【００３０】
このように，本発明に係わるＩＣカード１によれば，ＲＯＭ１２に実装された関数２１を呼出すときに割り込みを発生させ，該割り込み処理において，パッチ２５を実行させる処理を実行させれば，パッチ２５を適用可能とする関数２１の数に関わらず，パッチ２５を実行させるプログラムは一つで済むようになる。
【００３１】
また，ＲＯＭ１２に実装された関数２１を変更するためのパッチ２５が実装されたとき，該関数２１の呼出アドレスに関連付けて該パッチ２５の呼出アドレスが記憶されるパッチテーブル２４をＥＥＰＲＯＭ１４に実装しておき，パッチ２５を実行させる処理において，パッチテーブル２４を参照することで，パッチ２５の有無を確認することで，関数呼出し時の割り込みが発生したときに呼び出された関数２１と該関数２１のパッチ２５の実行を管理できるようになる。
【図面の簡単な説明】
【００３２】
【図１】本実施形態に係わるＩＣカードの外観を説明する図。
【図２】ＩＣカードに実装されるＩＣチップの回路ブロック図。
【図３】ＩＣチップのメモリの内容を説明する図。
【図４】割り込みベクタテーブルを説明する図。
【図５】パッチテーブルを説明する図。
【図６】関数呼出し時の割り込みが発生したときの処理の流れを示したフロー図。
【符号の説明】
【００３３】
１  ＩＣカード
１２  ＲＯＭ
１４  ＥＥＰＲＯＭ
２  オペレーティングシステム（ＯＳ）
２１  関数
２２  パッチ実行プログラム
２３  割り込みベクタテーブル
２４  パッチテーブル
２５  パッチ
【図１】
2010134644.tif 000004
【図２】
2010134644.tif 000005
【図３】
2010134644.tif 000006
【図４】
2010134644.tif 000007
【図５】
2010134644.tif 000008
【図６】
2010134644.tif 000009