(57)【要約】【課題】ＩＣカードに実装された更新プログラムの整合性を検査し、この検査結果に基づいて、更新プログラムの実行を管理することのできるＩＣカードを提供する。【解決手段】ＩＣカード１のＲＯＭ２３に記憶されたプログラムを修正／機能追加するため、ＩＣカード１のＥＥＰＲＯＭ２４には更新プログラム４０と、更新プログラム管理データ３０が記憶される。更新プログラム管理データ３０には、ある算術式から演算された誤り検出符号であるチェックコードが記憶され、実行管理プログラム２３１は、更新プログラム４０を実行する前に、この算術式に従い更新プログラム４０の誤り検出符号を演算し、演算した誤り検出符号とチェックコードとが一致した場合のみ、更新プログラム４０を実行させる。【選択図】図３
2007094823.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の略）、および、外部の端末装置とデータ通信するためのＩ／Ｏ回路２５が、ＢＵＳ２６に接続されている。
【００２０】
本発明は、ＩＣカード１に実装されるＩＣチップ２０の仕様をなんら限定するものではなく、ＩＣカード１の用途に適した仕様のＩＣチップ２０を選択することができる。例えばＲＯＭ２３およびＥＥＰＲＯＭ２４の容量については限定しないし、書換え可能な不揮発性メモリはフラッシュメモリ等のＥＥＰＲＯＭ以外のメモリであっても構わない。またＩＣチップ２０は図示していない他のデバイスを備えていても構わない。
【００２１】
ＩＣカード１のＲＯＭ２３には、ＩＣカード１を動作させるためのプログラムが実装され、ＩＣカード１のＥＥＰＲＯＭ２４には、ＲＯＭ２３に実装されたプログラムが利用するデータと、ＲＯＭ２３に実装されたプログラムの更新プログラムが記憶される。
【００２２】
図３は、ＲＯＭ２３とＥＥＰＲＯＭ２４のメモリ構造の例を示した図で、図３（ａ）はＲＯＭ２３のメモリ構成図、図３（ｂ）はＥＥＰＲＯＭ２４のメモリ構成図である。
【００２３】
図３（ｂ）に示したように、ＩＣカード１のＥＥＰＲＯＭ２４は、ＯＳが使用するデータなどが記憶されるシステム領域２４ａと、アプリケーションが使用するデータが記憶されるアプリケーション領域２４ｂとに論理的に分割されている。
【００２４】
更に、ＥＥＰＲＯＭ２４のシステム領域２４ａには、ＲＯＭ２３に実装されたプログラムの一部を修正するためのプログラムである更新プログラムを記憶する更新プログラム領域２４ｃが設定され、更新プログラム領域２４ｃには、複数の更新プログラム４０と、更新プログラム４０を管理するため更新プログラム管理データ３０とが記憶される。
【００２５】
図４は、更新プログラム４０を管理するため更新プログラム管理データ３０を説明する図である。図４に示したように、更新プログラム管理データ３０には、更新プログラム領域２４ｃに記憶されている更新プログラム４０ごとに、更新プログラム４０の整合性を検査するために必要なデータである更新プログラム検査データ３２が含まれる。
【００２６】
この更新プログラム検査データ３２には、更新プログラム４０が記憶開始されているＥＥＰＲＯＭ２４のアドレス３２０（以下、プログラム開始アドレス３２０）と、更新プログラム４０のプログラム長３２１（以下、プログラム長３２１）と、更新プログラム４０の誤りを検査する誤り検出符号であるチェックコード３２２とが含まれる。これらのデータは、更新プログラム４０が実行されるときに、更新プログラム４０の整合性の検査に利用される。
【００２７】
ここで、更新プログラム４０の誤りを検査する誤り検出符号であるチェックコード３２２とは、連続したデータの誤りを検出するための算術式に従い演算されたデータである。ＩＣカード１自身が、ＥＥＰＲＯＭ２４に登録された更新プログラム４０の誤り検出符号を事前に定められた算出式に従い演算し、演算した値とチェックコード３２２を比較することで、更新プログラム４０に誤りがないか、すなわち、更新プログラム４０が改竄されていないか確認することができる。
【００２８】
なお、本発明は、何ら、チェックコード３２２を演算する算術式を制約するものではなく、チェックコード３２２を演算する算術式としては、チェックサム、巡回冗長検査（CRC: Cyclic Redundancy Check）などの公知の算術式を用いることができる。
【００２９】
加えて、更新プログラム管理データ３２の差し替えデータ３１には、ＲＯＭ２３に実装され、更新プログラム４０で差し替えられるプログラムを特定するデータ（例えば、処理モジュールのアドレスなど）と、更新プログラム４０を識別するデータ（例えば、プログラム開始アドレス３２０）とが関連付けられて記憶される。
【００３０】
図３（ａ）に示したように、ＲＯＭ２３には、プログラムとして、ファイルシステムなどのＯＳの機能を果たすプログラムコードであるＯＳプログラム２３ａと、アプリケーション２３ｂとが記憶される。ＯＳプログラム２３ａには、更新プログラム４０をＥＥＰＲＯＭ２４に登録／削除する手段である登録削除プログラム２３０と、ＥＥＰＲＯＭ２４に登録された更新プログラム４０の実行を管理する手段である実行管理プログラム２３１とが含まれる。
【００３１】
登録削除プログラム２３０は、端末装置（図示していない）の認証機能（例えば、パスワード照合）などを備え、予め定められた条件が成立したときにのみ、端末装置から送信された更新プログラム４０をＥＥＰＲＯＭ２４に書き込む。
【００３２】
また、更新プログラム４０を書き込むときは、端末装置からＩＣカード１に、登録する更新プログラム４０のプログラム長３２１およびチェックデータ３２２が送信され、登録削除プログラム２３０は、更新プログラム４０をＥＥＰＲＯＭ２４に書込み開始したアドレスをプログラム開始アドレス３２０とし、受信したプログラム長３２１とチェックデータ３２２とから、登録する更新プログラム４０の更新プログラム検査データ３２を生成し、更新プログラム管理データ３０に記憶する。
【００３３】
実行管理プログラム２３１とは、ＩＣカード１の運用時に、更新プログラム４０を実行管理するためのプログラムである。実行管理プログラム２３１は、ＩＣカード１に登録された更新プログラム４０が実行されるときに、実行する更新プログラム４０に対応する更新プログラム検査データ３２を参照し、実行する更新プログラム４０の整合性を確認できたときのみ、更新プログラム４０を実行する。
【００３４】
図５は、実行管理プログラム３２１が更新プログラム４０を実行させるときの動作手順を示したフロー図である。この手順の最初のステップＳ１０は、実行管理プログラム２３１が呼出されるステップである。このステップにおいて、ＩＣカード１のＯＳプログラム２３ａは、実行されているプログラムを監視し、ＥＥＰＲＯＭ２４に記憶された更新プログラム４０で差し替えられるプログラムが実行されるときに、差し替えられるプログラム特定するデータを引数として、実行管理プログラム２３１を呼出す。
【００３５】
次のステップＳ１１は、実行管理プログラム２３１が、実行する更新プログラム４０のプログラム開始アドレス３２０およびプログラム長３２１を取得するステップである。このステップでは、実行管理プログラム２３１は、差し替えデータ３１を参照し、ＯＳプログラム２３ａから引渡されたデータから実行する更新プログラム４０を特定する。そして、実行する更新プログラム４０に対応する更新プログラム検査データ３２から、実行管理プログラム２３１はプログラム開始アドレス３２０およびプログラム長３２１を取得する。
【００３６】
次のステップＳ１２は、実行管理プログラム２３１が、実行する更新プログラム４０の誤り検出符号を演算するステップである。このステップにおいては、実行管理プログラム２３１は、ＥＥＰＲＯＭ２４のプログラム開始アドレス３２０からプログラム長２３１で示される長さ分のデータを読出し、読出したデータの誤り検出符号を、チェックコード３２２を演算したときと同じ算術式で演算する。
【００３７】
次のステップＳ１３は、ステップＳ１２で演算した誤り符号とチェックコードとを比較するステップである。このステップにおいて、実行管理プログラム２３１は、ステップＳ１２で演算した誤り検出符号の値と、更新プログラム検査データ３２に含まれるチェックコード３２２とを比較する。
【００３８】
ステップＳ１３において、演算した誤り検出符号とチェックコード３２２が一致すれば、ステップＳ１４に進み、プログラム開始アドレス３２０から記憶されている更新プログラム３１を呼出し、更新プログラム３１を実行する。また、ステップＳ１３において、演算した誤り検出符号とチェックコード３２２が一致しなければ、更新プログラム３１を実行することなくこの手順を終了する。
【図面の簡単な説明】
【００３９】
【図１】ＩＣカードの外観図。
【図２】ＩＣチップのハードウェア構成図。
【図３】ＲＯＭとＥＥＰＲＯＭのメモリ構造の例を示した図。
【図４】更新プログラム管理データを説明する図。
【図５】実行管理プログラムの動作手順を示したフロー図。
【符号の説明】
【００４０】
１  ＩＣカード
２０  ＩＣチップ
２３  ＲＯＭ
２３１  実行管理プログラム
２４  ＥＥＰＲＯＭ
３０  更新プログラム管理データ
３１  差し替えデータ
３２  更新プログラム検査データ
３２０  プログラム開始アドレス
３２１  プログラム長
３２２  チェックコード
４０  更新プログラム
【図１】
2007094823.tif 000003
【図２】
2007094823.tif 000004
【図３】
2007094823.tif 000005
【図４】
2007094823.tif 000006
【図５】
2007094823.tif 000007