(57)【要約】【課題】効率的でかつ安全にファームウエア・プログラムのバージョンアップを行えるプログラム修正システム、プログラム及びＩＣカードを提供する。【解決手段】ＩＣカード２２０のＣＰＵ２２１は、修正プログラムサーバ１０１からのモード遷移コマンド５０５の受信を確認すると、暗号認証を行う。暗号認証に成功した場合、ＣＰＵ２２１は一致した暗号鍵を用いて復号の処理を行い、修正プログラムサーバ１０１に暗号認証成功の情報を送信する。ＩＣカード２２０は通常モードからバージョンアップ受付モードに変更される。修正プログラム・サーバ１０１の制御部４０１は、暗号認証成功の情報を受信すると、バージョンアップ処理を実行する。【選択図】図９
2007206902.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールからなる基礎制御プログラムが搭載されたＩＣカードと、サーバとが、ネットワーク及び携帯端末で接続されたシステムであって、
前記サーバは、
前記ＩＣカードに前記モジュールを修正する修正プログラムを送信する手段を有し、
前記ＩＣカードは、
前記修正プログラムを記憶する第１の記憶手段と、
前記修正プログラムに対応して、各モジュールが修正されたか否かを示すフラグを記憶する第２の記憶手段と、
を有することを特徴とするプログラム修正システム。
【請求項２】
前記ＩＣカードは、
稼動時に第２の記憶手段を検索し、モジュールが修正されている場合は、前記第１の記憶手段から当該モジュールの修正プログラムを読み出し、モジュールが修正されていない場合は、当該モジュールの前記基礎制御プログラムを読み出して実行する手段を更に有することを特徴とする請求項１記載のプログラム修正システム。
【請求項３】
前記第２の記憶手段は、第１の記憶手段における修正プログラムのアドレスを記憶することを特徴とする請求項１記載のプログラム修正システム。
【請求項４】
前記基礎制御プログラムは、ＲＯＭに記憶され、前記修正プログラムは書き込み可能な不揮発性メモリに記憶されることを特徴とする請求項１記載のプログラム修正システム。
【請求項５】
前記ＩＣカードは、前記サーバから送られる修正プログラムが正常に前記第１の記憶手段に記憶された場合、前記サーバに通知する通知手段を更に有することを特徴とする請求項１記載のプログラム修正システム。
【請求項６】
前記サーバは、
前記ＩＣカードに、修正プログラムのバージョン及び種類を含む情報を送る手段を有し、
前記ＩＣカードは、
保有しているプログラムバージョンと、前記サーバから送られるバージョンとを比較する手段と、
前記比較手段の比較が一致しない場合、修正を拒否する手段と、
を更に具備することを特徴とする請求項１記載のプログラム修正システム。
【請求項７】
前記サーバは、
前記ＩＣカードの再起動が必要な場合、前記ＩＣカードの再起動情報を前記ＩＣカードに送る手段と、
前記ＩＣカードは、
前記再起動情報を受けると、前記携帯端末に再起動に必要な情報を送る手段と、
前記携帯端末は、
前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、
を具備することを特徴とする請求項１記載のプログラム修正システム。
【請求項８】
前記ＩＣカードは、
前記モジュール毎に再起動が必要か否かの情報を記憶する記憶手段と、
前記ＩＣカードの再起動情報を前記記憶手段より読み取る手段と、
前記再起動情報を読み取ると、前記携帯端末に再起動に必要な情報を送る手段と、
前記携帯端末は、
前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、
を具備することを特徴とする請求項１記載のプログラム修正システム。
【請求項９】
前記サーバは、修正プログラムに修正者の署名情報を付加して前記ＩＣカードに送ることを特徴とする請求項１記載のプログラム修正システム。
【請求項１０】
サーバとネットワーク及び携帯端末を介して接続され、複数のモジュールからなる基礎制御プログラムが搭載されたＩＣカードであって、
前記サーバからモジュールを修正する修正プログラムが送られた場合、
前記修正プログラムを記憶する第１の記憶手段と、
前記修正プログラムに対応して、各モジュールが修正されたか否かを示すフラグを記憶する第２の記憶手段と、
を有することを特徴とするＩＣカード。
【請求項１１】
稼動時に、第２の記憶手段を検索し、モジュールが修正されている場合は、前記第１の記憶手段から当該モジュールの修正プログラムを読み出し、モジュールが修正されていない場合は、当該モジュールの前記基礎制御プログラムを読み出して実行する手段を有することを特徴とする請求項１０記載のＩＣカード。
【請求項１２】
前記サーバから送られる修正プログラムが正常に前記第１の記憶手段に記憶された場合、前記サーバに通知する通知手段を更に有することを特徴とする請求項１０記載のＩＣカード。
【請求項１３】
前記サーバから送られる修正プログラムのバージョン及び種類を含む情報を受け取る手段と、
保有しているプログラムバージョンと、前記サーバから送られるバージョンとを比較する手段と、
前記比較手段の比較が一致しない場合、修正を拒否する手段と、
を更に具備することを特徴とする請求項１０記載のＩＣカード。
【請求項１４】
前記ＩＣカードの再起動が必要な場合、前記サーバより前記ＩＣカードの再起動情報を受信する手段と、
前記再起動情報を受けると、前記携帯端末に再起動に必要な情報を送る手段と、
前記携帯端末は、
前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、
を有することを特徴とする請求項１０記載のＩＣカード。
【請求項１５】
前記モジュール毎に再起動が必要か否かの情報を記憶する記憶手段と、
前記ＩＣカードの再起動情報を前記記憶手段より読み取る手段と、
前記再起動情報を読み取ると、前記携帯端末に再起動に必要な情報を送る手段と、
前記再起動に必要な情報を受け取った前記携帯端末から、前記ＩＣカードを再起動させる命令を受け取ると、再起動する手段と、
を具備することを特徴とする請求項１０記載のＩＣカード。
【請求項１６】
コンピュータを、請求項１０から請求項１５のいずれかに記載のＩＣカードとして機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードのプログラム修正システム、プログラムとＩＣカードに関するものである。
【背景技術】
【０００２】
一般にＩＣカードで稼動するファームウエア・プログラムやアプリケーション・プログラムは、プラグイン型のＩＣカードに組み込まれた状態で出荷されている。通常、ＩＣカードのファームウエア・プログラムは、マスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に書き込まれ、アプリケーション・プログラムは、不揮発性メモリ、或いはマスクＲＯＭに書き込まれる。
【０００３】
従来、マスクＲＯＭは４ｋバイト〜１６ｋバイト程度の小容量であり、マスクＲＯＭに書き込まれるプログラムのサイズは、数ｋバイトから１０ｋバイト程度であった。しかし、マスクＲＯＭの大容量化に伴い、最近ではプログラム・サイズが数百ｋバイトになる場合もある。プログラムのサイズが大きくなることに伴い、プログラムに不具合が生ずるリスクも高くなってきた。
【０００４】
プログラムの不具合に伴うプログラムのバージョンアップを行う場合、ＩＣカードの工場出荷前であれば可能であったが、ＩＣカードが工場から出荷された後については、書き換えは不可能であった。
【０００５】
これに対し、不揮発性メモリに書き込まれたアプリケーション・プログラムに関しては、センタのサーバよりダウンロードして新機能の追加を図る方法が提供されている（例えば「特許文献１」参照。）。
【特許文献１】特開２００２−２５８９６６号公報
【０００６】
しかしながら、ファームウエア・プログラムについては、マスクＲＯＭ上に書かれているため、ダウンロードしても書き換えができない。また、不揮発性メモリは、前述のマスクＲＯＭと同様、従来は４ｋバイト〜１６ｋバイト程度であったため、ファームウエア・プログラムの修正を不揮発性メモリにダウンロードすることは困難であった。従って、例えば、ファームウエア・プログラム上に不具合があった場合には、ＩＣカードの交換という手段を取らざるを得なかった。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、前述した問題点に鑑みてなされたもので、その目的とすることは効率的でかつ安全にファームウエア・プログラムの修正を行うためのプログラム修正システム、プログラム、ＩＣカードを提供することにある。
【課題を解決するための手段】
【０００８】
前述した目的を達成するために第１の発明は、複数のモジュールからなる基礎制御プログラムが搭載されたＩＣカードと、サーバとが、ネットワーク及び携帯端末で接続されたシステムであって、前記サーバは、前記ＩＣカードに前記モジュールを修正する修正プログラムを送信する手段を有し、前記ＩＣカードは、前記修正プログラムを記憶する第１の記憶手段と、前記修正プログラムに対応して、各モジュールが修正されたか否かを示すフラグを記憶する第２の記憶手段と、を有することを特徴とするプログラム修正システムである。
【０００９】
前記ＩＣカードは、稼動時に第２の記憶手段を検索し、モジュールが修正されている場合は、前記第１の記憶手段から当該モジュールの修正プログラムを読み出し、モジュールが修正されていない場合は、当該モジュールの前記基礎制御プログラムを読み出して実行する手段を更に有する。
【００１０】
前記第２の記憶手段は、第１の記憶手段における修正プログラムのアドレスを記憶する。
【００１１】
前記基礎制御プログラムは、ＲＯＭに記憶され、前記修正プログラムは書き込み可能な不揮発性メモリに記憶される。
【００１２】
前記ＩＣカードは、前記サーバから送られる修正プログラムが正常に前記第１の記憶手段に記憶された場合、前記サーバに通知する通知手段を更に有する。
【００１３】
前記サーバは、前記ＩＣカードに、修正プログラムのバージョン及び種類を含む情報を送る手段を有し、前記ＩＣカードは、保有しているプログラムバージョンと、前記サーバから送られるバージョンとを比較する手段と、前記比較手段の比較が一致しない場合、修正を拒否する手段と、を更に具備する。
【００１４】
前記サーバは、前記ＩＣカードの再起動が必要な場合、前記ＩＣカードの再起動情報を前記ＩＣカードに送る手段と、前記ＩＣカードは前記再起動情報を受けると、前記携帯端末に再起動に必要な情報を送る手段と、前記携帯端末は、前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、を具備する。
【００１５】
また、前記ＩＣカードは、前記モジュール毎に再起動が必要か否かの情報を記憶する記憶手段と、前記サーバは、前記ＩＣカードの再起動が必要な場合、前記ＩＣカードの再起動情報を前記ＩＣカードに送る手段と、前記再起動情報を受けると、前記携帯端末に再起動に必要な情報を送る手段と、前記携帯端末は、前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、を具備する。
【００１６】
前記サーバは、修正プログラムに修正者の署名情報を付加して前記ＩＣカードに送る。
【００１７】
第２の発明は、サーバとネットワーク及び携帯端末を介して接続され、複数のモジュールからなる基礎制御プログラムが搭載されたＩＣカードであって、前記サーバからモジュールを修正する修正プログラムが送られた場合、前記修正プログラムを記憶する第１の記憶手段と、前記修正プログラムに対応して、各モジュールが修正されたか否かを示すフラグを記憶する第２の記憶手段と、を有することを特徴とするＩＣカードである。
【００１８】
ＩＣカードは、稼動時に、第２の記憶手段を検索し、モジュールが修正されている場合は、前記第１の記憶手段から当該モジュールの修正プログラムを読み出し、モジュールが修正されていない場合は、当該モジュールの前記基礎制御プログラムを読み出して実行する手段を有する。
【００１９】
ＩＣカードは、前記サーバから送られる修正プログラムが正常に前記第１の記憶手段に記憶された場合、前記サーバに通知する通知手段を更に有する。
【００２０】
ＩＣカードは、前記サーバから送られる修正プログラムのバージョン及び種類を含む情報を受け取る手段と、保有しているプログラムバージョンと、前記サーバから送られるバージョンとを比較する手段と、前記比較手段の比較が一致しない場合、修正を拒否する手段と、を更に具備する。
【００２１】
前記ＩＣカードの再起動が必要な場合、前記サーバより前記ＩＣカードの再起動情報を受信する手段と、前記再起動情報を受けると、前記携帯端末に再起動に必要な情報を送る手段と、前記携帯端末は、前記再起動に必要な情報を受け取ると、前記ＩＣカードを再起動させる命令を前記ＩＣカードに送る手段と、を有する。
【００２２】
ＩＣカードは、前記モジュール毎に再起動が必要か否かの情報を記憶する記憶手段と、前記ＩＣカードの再起動情報を前記記憶手段より読み取る手段と、
前記再起動情報を読み取ると、前記携帯端末に再起動に必要な情報を送る手段と、前記再起動に必要な情報を受け取った前記携帯端末から、前記ＩＣカードを再起動させる命令を受け取ると、再起動する手段と、を具備する。
【００２３】
第３の発明は、コンピュータを、請求項１０より請求項１５のいずれかに記載のＩＣカードとして機能させるプログラムである。
【発明の効果】
【００２４】
本発明によれば、効率的でかつ安全にファームウエア・プログラムのバージョンアップを行えるプログラム修正システム、プログラム、ＩＣカードを提供することができる。
【発明を実施するための最良の形態】
【００２５】
以下添付図面に基づいて、本発明の実施形態に係るプログラム修正システム１００について詳細に説明する。
【００２６】
最初に、図１を参照しながら、本実施の形態に係るプログラム修正システム１００の構成について説明する。図１は、本実施の形態に係るプログラム修正システム１００の構成を示すブロック図である。
【００２７】
図１は、プログラム修正システム１００の１例であり、図１に示すように、プログラム修正システム１００は、修正プログラムサーバ１０１と、複数の携帯端末１０５等がネットワーク１０３を介して接続されて構成される。
【００２８】
ネットワーク１０３は、インターネット、ローカルエリアネットワーク（ＬＡＮ）等のネットワークであり、有線、無線を問わない。
【００２９】
修正プログラムサーバ１０１は、サーバコンピュータ等であり、ＩＣカード２２０で稼動するファームウエア・プログラムの修正（バージョン・アップ）情報を配信、管理するサーバである。
【００３０】
携帯端末１０５は、携帯電話（特に第３世代３ＧＰＰ）、アナログＴＶやデジタルＴＶの受信機器であるセットトップボックス（ＳＴＢ）、車載案内装置やＧＰＳ等の位置信号受発信機器である車載端末等である。
携帯端末１０５には、プラグイン型のＩＣカード２２０等が搭載される。
【００３１】
次に、図２を参照しながら、携帯端末１０５のハードウェア構成を説明する。図２は、携帯端末１０５のハードウェア構成図である。以下、代表して携帯端末１０５（携帯電話）について説明する。本発明に関連した構成要素のみを図示しており、送受話部等の図示は省略してある。
【００３２】
携帯端末１０５は、制御部２０１、記憶部２０２、表示部２０３、カメラ２０４、送受信部２０５、入力部２０６、マイク２０７、記録媒体Ｉ／Ｆ部２０８、暗号化・復号回路２０９、アンテナ２１０等が、接続されて構成される。
【００３３】
制御部２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ  ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成される。
【００３４】
ＣＰＵは、記憶部２０２、ＲＯＭ等に格納されるプログラムをＲＡＭ上のワークメモリ領域に呼び出して実行し、システムバスを介して接続された各装置を駆動制御し、携帯端末１０５が行う各種処理を実現する。
ＲＯＭは、不揮発性メモリであり、コンピュータのブートプログラムやＢＩＯＳ等のプログラム、データ等を恒久的に保持している。
ＲＡＭは、揮発性メモリであり、記憶部２０２、ＲＯＭ等からロードしたプログラム、データ等を一時的に保持するとともに、制御部２０１が各種処理を行う為に使用するワークエリアを備える。
【００３５】
記憶部２０２は、制御部２０１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ（オペレーティングシステム）等が格納される。
これらの各プログラムコードは、制御部２０１により必要に応じて読み出されてＲＡＭに移され、ＣＰＵに読み出されて各種の手段として実行される。
【００３６】
表示部２０３は、ＣＲＴモニタ、液晶パネル等のディスプレイ装置である。カメラ２０４は、画像データ、映像データ等を取得する。
【００３７】
送受信部２０５は、携帯端末１０５とネットワーク１０３間の通信を媒介する通信インタフェースであり、ネットワーク１０３を介して、修正プログラムサーバ１０１と、携帯端末１０５間の通信制御を行う。
【００３８】
入力部２０６は、データの入力を行い、例えば、キーボード、テンキー等の入力装置である。マイク２０７は、音声データを取得する。
【００３９】
記録媒体Ｉ／Ｆ部２０８は、記録媒体へのデータの授受を行う。記録媒体は、ＩＣカード２２０等である。
暗号化・復号回路２０９は、暗号化したデータに対する復号、及びデータの暗号化を行う。
【００４０】
図３は、ＩＣカード２２０の構造の一態様を示す図である。
図３に示すように、ＩＣカード２２０は、接触型ＩＣカードであり、ＩＣモジュール端子とリーダ／ライタの端子が接触することで電力供給や通信を行う。
ＩＣカード２２０は、ＣＰＵ２２１、ＲＯＭ２２２、ＲＡＭ２２４、ＥＥＰＲＯＭ２２５（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）等を有する。
【００４１】
ＲＯＭ２２２は、プログラム領域２２３を有し、アプリケーションの追加・削除が可能なプラットフォーム型ＯＳ、即ち基礎制御プログラムとしてのファームウエア・プログラムを格納する。
ＥＥＰＲＯＭ２２５は、ユーザ領域２２８を有し、プラットフォーム型ＯＳに対応したアプリケーションを複数搭載可能とする。例えば、アプリケーションとして、契約端末の認証を行う認証アプリケーション・プログラム、正当使用者／端末を特定するための認証情報（例えば、契約者識別情報等）を搭載、格納する。
【００４２】
また、修正プログラムをダウンロードし、書き出すためのエリアとして、修正プログラム領域２２７を有する。また、ＲＯＭ２２２のファームウエア・プログラムを修正プログラムに置き換えて実行する際に参照するパッチテーブル２２６を有する。また、ＥＥＰＲＯＭ２２５には、修正プログラム領域２２７の現アドレス、即ちどこまで書込みが行われたかの情報等も保持する。
尚、ＩＣカード２２０の構造は、この構成に限られるものではない。
【００４３】
次に、図４を参照しながら、修正プログラムサーバ１０１のハードウェア構成を説明する。図４は、修正プログラムサーバ１０１のハードウェア構成図である。修正プログラムサーバ１０１は制御部４０１、表示部４０２、記憶部４０３、入力部４０４、通信部４０５等がシステムバス４０７を介して互いに接続されて構成される。
【００４４】
制御部４０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を有する。
ＣＰＵは、記憶装置，ＲＯＭ等に格納されるプログラムをＲＡＭ上のワークメモリ領域に呼び出して実行し、演算処理、動作制御を行い、システム全体を制御する。ＲＯＭは、不揮発性メモリであり、プログラム、データ等を恒久的に保持し、ＲＡＭは、揮発性メモリであり、プログラム、データ等を一時的に保持する。
【００４５】
表示部４０２は、ＣＲＴモニタ、液晶パネル等のディスプレイ装置、ディスプレイ装置と連携してコンピュータのビデオ機能を実現するための論理回路等（ビデオアダプタ等）の表示装置等を有する。
【００４６】
記憶部４０３は、データを記憶する装置であり、磁気ディスク、フロッピディスク、メモリ、光ディスク装置等を有する。記憶部４０３には、制御部４０１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等が格納される。
【００４７】
入力部４０４は、データの入力を行い、例えば、キーボード、マウス等のポインティングデバイス、テンキー等の入力装置を有する。
入力部４０４を介して、修正プログラムサーバ１０１に対して、操作指示、動作指示、データ入力、維持管理等を行うことができる。
【００４８】
通信部４０５は、修正プログラムサーバ１０１とネットワーク１０３間の通信を媒介する通信インタフェースであり、通信制御装置、通信ポート等を有する。
システムバス４０７は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【００４９】
次に、図５を参照しながら、モード遷移コマンド５０５について説明を行う。図５はモード遷移コマンド５０５の一態様を示す図である。
モード遷移コマンド５０５は、修正プログラムサーバ１０１の記憶部４０３に保存され、修正プログラムサーバ１０１からＩＣカード２２０に配信される。モード遷移コマンド５０５は、ＩＣカード２２０を通常モードからバージョンアップ受付モードに変更する。
モード遷移コマンド５０５は、ヘッダ５０６、命令５０７等で構成される。
【００５０】
ヘッダ５０６はモード遷移コマンド５０５のデータの属性を示す各種情報を含む。命令５０７は、モード遷移コマンド５０５のコード、即ちＩＣカード２２０のモードを変更するための命令である。ヘッダ５０６或いはモード遷移コマンド５０５のデータ部（図示せず。）には、認証情報（図示せず。）を含む。認証情報は、修正プログラムサーバ１０１を識別するために用いられる。認証情報は、具体的には、暗号鍵、及び暗号化の関数を特定する情報である。即ち、ＩＣカード２２０は、この認証情報を読み込んで、送信される修正プログラムの送信元が適正なサーバであるかを識別する。
【００５１】
次に、図６を参照しながら、バージョンアップ書込コマンド５１０について説明を行う。図６はバージョンアップ書込コマンド５１０の一態様を示す図である。バージョンアップ書込コマンド５１０は、修正プログラムサーバ１０１の記憶部４０３に保存され、ＩＣカード２２０に配信される。バージョンアップ書込コマンド５１０は、ヘッダ５１１、命令５１２、データ部５１４等で構成される。
【００５２】
バージョンアップ書込コマンド５１０のデータ部５１４は、暗号化されて送信される。予め、バージョンアップ書込コマンド５１０のデータ部５１４の復号に必要な暗号鍵はＩＣカード２２０中に保持される。
【００５３】
ヘッダ５１１は、バージョンアップ書込コマンド５１０の属性を示し、ヘッダ５１１には、暗号鍵の情報等が含まれる。
【００５４】
命令５１２は、バージョンアップ書込コマンド５１０のデータ部５１４を書き込むためのコマンドである。命令５１２は、ＩＣカード２２０に送信されたバージョンアップ書込コマンド５１０のデータ部５１４をＥＥＰＲＯＭ２２５に反映する。
【００５５】
データ部５１４は命令５１２によってＥＥＰＲＯＭ２２５に書き込まれるデータ等である。データ部５１４は、署名５１５、プログラムヘッダ５１６、修正プログラム５１７から構成される。
プログラムヘッダ５１６は修正プログラム５１７の属性情報を有する。例えば、バージョン情報、修正日時、修正プログラム５１７のサイズ等である。プログラムヘッダ５１６は、パッチテーブル２２６の更新時に参照されたり、ＩＣカード２２０におけるＯＳ等の管理に使用されたりする。
【００５６】
署名５１５は修正プログラムサーバ１０１において付加される情報である。署名５１５は、修正プログラムサーバ１０１の所有者とプログラム修正者が異なる場合には、プログラム修正者固有の署名としてもよい。修正プログラム５１７に署名５１５を付加して、ＩＣカード２２０と修正プログラムサーバ１０１の通信を暗号化することによって、修正プログラム５１７に対する不正なアクセスを制限する。
【００５７】
修正プログラム５１７は、ＲＯＭ２２２のプログラム領域２２３に保持されたプログラム（ＯＳ等）に対して修正されるモジュールのコードである。
【００５８】
次に、図７を参照しながら、モジュールバージョンアップ有効化コマンド５２０について説明を行う。モジュールバージョンアップ有効化コマンド５２０は、修正プログラムサーバ１０１の記憶部４０３に保存され、ＩＣカード２２０に対して配信される。
【００５９】
モジュールバージョンアップ有効化コマンド５２０は、ＥＥＰＲＯＭ２２５のに書き込まれた修正プログラム５１７を有効にするためのコマンドである。モジュールバージョンアップ有効化コマンド５２０は、ヘッダ５２１及び命令５２２等から構成される。
【００６０】
ヘッダ５２１は、モジュールバージョンアップ有効化コマンド５２０の属性を示す。命令５２２は、ＥＥＰＲＯＭ２２５のパッチテーブル２２６を更新し、バージョンアップ書込コマンド５１０によって書き込まれた修正プログラム５１７を有効にする。
【００６１】
モジュールバージョンアップ有効化コマンド５２０のデータ部（図示せず。）には、パッチテーブル２２６を更新するための各種情報、例えば、プログラムのバージョン情報等を含むこともできる。
【００６２】
次に、図８を参照しながら、パッチテーブル２２６の保持するデータについて説明を行う。図８はパッチテーブル２２６の一態様を示す図である。パッチテーブル２２６には、ＲＯＭ２２２のプログラム領域２２３に保持されたすべてのモジュールの情報を含む。
【００６３】
モジュールＩＤ３１１は、プログラム領域２２３中のモジュール化されたプログラムを識別するＩＤである。即ち、プログラム領域２２３中のプログラムは、それぞれモジュール化され、モジュールＩＤ３１１にはそのＩＤが書き込まれる。
【００６４】
変更フラグ３１３は、モジュールＩＤ３１１で示されるそれぞれのモジュール化されたプログラムに変更があったか否かを示すフラグである。
変更フラグ３１３は、最初は全て「無」に設定されており、各モジュールの修正プログラムが、修正プログラムサーバ１０１からＩＣカード２２０に送られ、変更があった場合には、変更フラグ３１３が「有」となる。
【００６５】
プログラム開始アドレス３１５は、ＥＥＰＲＯＭ２２５の修正プログラム領域２２７における修正プログラムのアドレスを示す。プログラムに変更があった場合、即ち変更フラグ３１３が「有」の場合、プログラム開始アドレス３１５が書き込まれる。
【００６６】
次に、図９及び図１０を参照しながら、プログラムの修正におけるＩＣカード２２０及び修正プログラムサーバ１０１の動作について説明を行う。
図９は、修正プログラムサーバ１０１からＩＣカード２２０にコマンド及びデータ等を送信する際の動作を示すフローチャートである。
【００６７】
まず、修正プログラムサーバ１０１の制御部４０１は、ＩＣカード２２０にモード遷移コマンド５０５を送信する（ステップ７０１）。ＩＣカード２２０のＣＰＵ２２１は、モード遷移コマンド５０５の受信を確認すると、暗号認証を行う（ステップ７０２）。モード遷移コマンド５０５に含まれる暗号鍵とＩＣカード２２０中にあらかじめ保持された暗号鍵を用いて認証を行う。
【００６８】
暗号認証に失敗した場合（ステップ７０３のＮｏ）、即ち暗号鍵が一致しない場合、ＣＰＵ２２１は暗号認証失敗の情報を修正プログラムサーバ１０１に送信する（ステップ７０８）。修正プログラムサーバ１０１の制御部４０１は、ＩＣカード２２０より暗号認証失敗のメッセージを受け取ると、ＩＣカード２２０のエラー情報を記憶部４０３に書き込む（ステップ７０９）。
【００６９】
暗号認証に成功した場合（ステップ７０３のＹｅｓ）、ＣＰＵ２２１は一致した暗号鍵を用いて復号の処理を行い、修正プログラムサーバ１０１に暗号認証成功の情報を送信する（ステップ７０４）。次に、ＣＰＵ２２１は、モード遷移コマンド５０５の命令５０７を実行し、ＩＣカード２２０を通常モードからバージョンアップ受付モードに変更する（ステップ７０７）。
【００７０】
修正プログラム・サーバ１０１の制御部４０１は、暗号認証成功の情報を受信すると（ステップ７０５）、バージョンアップ処理を実行する（ステップ７０６）。
【００７１】
図１０はバージョンアップ（図７のステップ７０６）におけるＩＣカード２２０及び修正プログラムサーバ１０１の動作を示すフローチャートである。まず、修正プログラムサーバ１０１の制御部４０１は、バージョンアップ書込コマンド５１０のデータ部５１４を暗号化する（ステップ８０１）。次に、制御部４０１はバージョンアップ書込コマンド５１０をＩＣカード２２０に送信する（ステップ８０２）。
【００７２】
ＩＣカード２２０のＣＰＵ２２１は、バージョンアップ書込コマンド５１０の署名を検証し、バージョンアップ書込コマンド５１０のデータ部５１４の復号を行う（ステップ８０３）。
【００７３】
次にＣＰＵ２２１は、バージョンアップ書込みコマンド５１０の命令５１２を実行し、ＥＥＰＲＯＭ２２５の修正プログラム領域２２７にデータ部５１４を書き込む（ステップ８０４）。
【００７４】
署名検証に失敗した場合、或いは命令５１２の実行、即ちデータ部５１４の書き込みが正常に終了しなかった場合（ステップ８０５のＮｏ）、ＣＰＵ２２１はエラー情報を修正プログラムサーバ１０１に送信する（ステップ８０６）。修正プログラムサーバ１０１の制御部４０１は、ＩＣカード２２０のエラー情報を受信すると、記憶部４０３に書き込んで（ステップ８０８）、終了する。
【００７５】
ＣＰＵ２２１が命令５１２の実行に成功すると（ステップ８０５のＹｅｓ）、ＣＰＵ２２１は終了のステータスを修正プログラムサーバ１０１に送信する（ステップ８０８）。
【００７６】
修正プログラムサーバ１０１の制御部４０１はＩＣカード２２０より終了ステータスを受信すると、モジュールバージョンアップ有効化コマンド５２０をＩＣカード２２０に送信する（ステップ８０８）。
【００７７】
ＩＣカード２２０のＣＰＵ２２１は、モジュールバージョンアップ有効化コマンド５２０を修正プログラムサーバ１０１から受信すると、命令５１７を実行しパッチテーブル２２６を更新する（ステップ８１０）。該当モジュールのモジュールＩＤ３１１に対応する変更フラグ３１３を「有」とし、ＩＣカード２２０のＥＥＰＲＯＭ２２５中の別エリアに保持された修正プログラム開始アドレスを参照して、プログラム開始アドレス３１５に書き込む。プログラム開始アドレス３１５に書込み後、前述のＥＥＰＲＯＭ２２５の別エリアに保持された情報は更新される。即ち、プログラムヘッダ５１６に含まれる修正プログラムのサイズを参照し、修正プログラム領域２２７の現アドレスを変更する。
【００７８】
次に、ＣＰＵ２２１は、修正が正常に完了したことを修正プログラムサーバ１０１へ送信する（ステップ８１１）。修正プログラムサーバ１０１の制御部４０１は、ＩＣカード２２０より処理完了のステータスを受信し、終了情報を記憶部４０３に書き込む（ステップ８１２）。
【００７９】
尚、ステップ８０８でバージョンアップ有効化コマンド５２０を送信する際に、ＩＣカード２２０の再起動が必要か否かの情報をバージョンアップ有効化コマンド５２０のデータ部（図示せず。）に付加してもよい。この場合、ＩＣカード２２０の再起動が必要な場合には、ＩＣカード２２０は携帯端末１０５に対して再起動のための情報を送り、携帯端末１０５はＩＣカード２２０の再起動処理を行う。
【００８０】
また、ＩＣカード２２０の再起動は、バージョンアップ有効化コマンド５２０に付加する以外に、予めパッチテーブル２２６にモジュール毎の属性として、修正時に再起動が必要か否かの情報を含めておくこともできる。この場合には、ＣＰＵ２２１は、モジュールバージョンアップ有効化コマンド５２０の命令５２２の実行時に、パッチテーブル２２６を参照することによってＩＣカード２２０の再起動が必要か否かの情報を得る。ＩＣカード２２０の再起動が必要な場合には、前述と同様、ＩＣカード２２０から携帯端末１０５に対して再起動に必要な情報が送られ、携帯電話１０５がＩＣカード２２０を再起動する。
【００８１】
以上のように、ファームウエア・プログラムに対する修正においては、修正プログラムサーバ１０１が、ＩＣカード２２０に対して暗号化した修正プログラムを送信する。受信したＩＣカード２２０では、バージョンアップ書込コマンド５１０は不揮発性メモリであるＥＥＰＲＯＭ２２５に書き込まれる。ＩＣカード２２０では署名検証を行った後、修正プログラムの情報を有効化する。
【００８２】
図９、図１０で説明したように、モード遷移コマンド５０５、バージョンアップ書込コマンド５１０及びモジュールバージョンアップ有効化コマンド５１３は、修正プログラムサーバ１０１がそれぞれの実行結果のステータスを受信してから順次送信されるが、一括で送信することも可能である。
【００８３】
次に、図１１を参照しながら、ＯＳ実行時のＩＣカード２２０の動作について説明を行う。図１１はＩＣカード２２０の動作を示すフローチャートである。
【００８４】
まず、ＩＣカード２２０のＣＰＵ２２１は、主プログラムからプログラムコール時に、ＥＥＰＲＯＭ２２５のパッチテーブル２２６上の、実行しようとするプログラムのモジュールＩＤ３１１を検索する（ステップ９０１）。
【００８５】
次に、該当プログラムのモジュールＩＤ３１１に対応する変更フラグ３１３の検査を行う（ステップ９０２）。変更フラグ３１３が「無」の場合（ステップ９０２の「無」）、ＣＰＵ２２１はＲＯＭ２２２のプログラム領域２２３中の初期設定時のプログラムを実行し（ステップ９０６）、主プログラムに制御を戻す（ステップ９０５）。
【００８６】
変更フラグ３１３が「有」の場合（ステップ９０２の「有」）、ＣＰＵ２２１は、パッチテーブル２２６のプログラム開始アドレス３１５を読み込む（ステップ９０３）。
【００８７】
次に、ＣＰＵ２２１は、プログラム開始アドレス３１５に基づいて、ＥＥＰＲＯＭ２２５の修正プログラム領域２２７の、該当する修正プログラムを検索し、実行した後（ステップ９０４）、主プログラムに制御を戻す（ステップ９０５）。
【００８８】
以上のように、ＩＣカード２２０にダウンロードされたバージョンアップ書込コマンド５１０は、元のプログラムに置き換わって実行される。実行時には、パッチテーブル２２６が参照される。
【００８９】
このように、プログラム修正システム１００によれば、ＩＣカード２２０の交換等を行うことなく、ＯＳ等のプログラムのバージョンアップが可能となる。不揮発性メモリの大容量化に伴い、修正プログラムをダウンロードすることができるようになった。
【００９０】
従来、回収や再配布によって、プログラムの修正に伴うコストや手間がかかっていたが、プログラム修正システム１００によってこのようなコストや手間が大幅に削減される。また、出荷時にあらかじめＩＣカード２２０に暗号鍵を設定しておくことによって、悪意のファームウエア・プログラムのバージョンアップを防ぐことができる。
【００９１】
プログラムの修正については、モジュール単位で行われるが、モジュールの一部のみを送受信することもできる。
【００９２】
また、修正プログラムサーバ１０１は、ＩＣカード２２０の修正対象のプログラムバージョン及び種類を含む情報を送り、ＩＣカード２２０がバージョンを比較して一致しない場合には修正を拒否することもできる。修正対象のプログラムバージョン及び種類を含む情報は、バージョンアップ書込みコマンド５１０等に含むことができる。また、ＩＣカード２２０内のバージョン管理情報は、例えばパッチテーブル２２６に含めることができる。
【００９３】
以上、添付図面を参照しながら、本発明に係るプログラム修正システム、ＩＣカード等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００９４】
【図１】プログラム修正システム１００の構成を示すブロック図
【図２】携帯端末１０５のハードウェア構成図
【図３】ＩＣカード２２０の構造の一態様を示す図
【図４】修正プログラムサーバ１０１のハードウェア構成図
【図５】モード遷移コマンド５０５の一態様を示す図
【図６】バージョンアップ書込コマンド５１０の一態様を示す図
【図７】モジュールバージョンアップ有効化コマンド５２０の一態様を示す図
【図８】パッチテーブル２２６の一態様を示す図
【図９】プログラム修正処理の動作を示すフローチャート
【図１０】バージョンアップ処理の動作を示すフローチャート
【図１１】制御プログラム実行時の動作を示すフローチャート
【符号の説明】
【００９５】
１００………プログラム修正システム
１０１………修正プログラムサーバ
１０３………ネットワーク
１０５………携帯端末
２２０………ＩＣカード
２２１………ＣＰＵ
２２２………ＲＯＭ
２２４………ＲＡＭ
２２５………ＥＥＰＲＯＭ
２２６………パッチテーブル
２２７………修正プログラム領域
【図１】
2007206902.tif 000003
【図２】
2007206902.tif 000004
【図３】
2007206902.tif 000005
【図４】
2007206902.tif 000006
【図５】
2007206902.tif 000007
【図６】
2007206902.tif 000008
【図７】
2007206902.tif 000009
【図８】
2007206902.tif 000010
【図９】
2007206902.tif 000011
【図１０】
2007206902.tif 000012
【図１１】
2007206902.tif 000013