(57)【要約】 【課題】  パッチプログラムを確実にプログラムに適用できる電子装置、ＩＣカードおよび情報処理システムを提供する。【解決手段】  実施形態によれば、電子装置は、通信部と、第１の記憶部と、第２の記憶部と、制御部とを有する。通信部は、端末装置と通信する。第１の記憶部は、第１のプログラムを記憶する。第２の記憶部は、前記通信部により前記端末装置から受信する前記第１のプログラムに対するパッチプログラムをセクションごとに格納する。制御部は、前記第１のプログラムを実行する場合、前記第２の記憶部における各セクションに格納された最新のパッチプログラムを適用する。【選択図】図１
2018112913.tif 000002
【特許請求の範囲】
【請求項１】
端末装置と通信する通信部と、
第１のプログラムを記憶する第１の記憶部と、
前記通信部により前記端末装置から受信する前記第１のプログラムに対するパッチプログラムをセクションごとに格納する第２の記憶部と、
前記第１のプログラムを実行する場合、前記第２の記憶部における各セクションに格納された最新のパッチプログラムを適用する制御部と、
を有する電子装置。
【請求項２】
前記各セクションの有効性を示す情報を含む前記各セクションの管理情報を格納するセクション管理テーブルを有し、
前記制御部は、前記セクション管理テーブルを参照して前記第１のプログラムに適用する有効かつ最新のパッチプログラムを格納したセクションを特定する、
請求項１に記載の電子装置。
【請求項３】
前記制御部は、前記通信部により新たなパッチプログラムを受信すると、前記セクション管理テーブルの管理情報により管理する新たなセクションを追加し、追加したセクションに受信した新たなパッチプログラムを格納する、
請求項２に記載の電子装置。
【請求項４】
前記制御部は、前記セクション管理テーブルの管理情報を参照して前記第２の記憶部に存在する各セクションのうち、後に追加されたセクションから順番に前記第１のプログラムに適用すべきパッチプログラムを格納したセクションをサーチする、
請求項２又は３の何れか１項に記載の電子装置。
【請求項５】
前記制御部は、前記端末装置との認証が成功した後に前記端末装置からパッチプログラムを受信する、
請求項１乃至４の何れか１項に記載の電子装置。
【請求項６】
前記制御部は、前記端末装置との認証によりセッション鍵を交換し、前記セッション鍵を用いたセキュアメッセージングにより前記端末装置からパッチプログラムを受信する、
請求項１乃至５の何れか１項に記載の電子装置。
【請求項７】
固定鍵を記憶する第３の記憶部を有し、
前記制御部は、前記固定鍵を用いたセキュアメッセージングにより前記端末装置からパッチプログラムを受信する、
請求項１乃至５の何れか１項に記載の電子装置。
【請求項８】
端末装置と通信する通信部と、第１のプログラムを記憶する第１の記憶部と、前記通信部により前記端末装置から受信する前記第１のプログラムに対するパッチプログラムをセクションごとに格納する第２の記憶部と、前記第１のプログラムを実行する場合、前記第２の記憶部における各セクションに格納された最新のパッチプログラムを適用する制御部と、を有するモジュールと、
前記モジュールを有する本体と、
を有するＩＣカード。
【請求項９】
端末装置と電子装置とを含む情報処理システムにおいて、
前記端末装置は、
前記電子装置と通信する第１の通信部と、
前記電子装置内のプログラムに適用するパッチプログラムを前記第１の通信部により前記電子装置へ送信する第１の制御部と、を有し、
前記電子装置は、
前記端末装置と通信する第２の通信部と、
前記端末装置から送信される前記パッチプログラムが適用される第１のプログラムを記憶する第１の記憶部と、
前記第２の通信部により前記端末装置から受信する前記パッチプログラムをセクションごとに格納する第２の記憶部と、
前記第１のプログラムを実行する場合、前記第２の記憶部におけるセクションに格納した最新のパッチプログラムを適用する第２の制御部と、を有する、
情報処理システム。
【請求項１０】
前記端末装置は、
さらに、上位装置と通信する第３の通信部を有し、
前記第１の制御部は、前記第３の通信部により前記上位装置から前記電子装置内のプログラムに適用するパッチプログラムを受信し、前記上位装置から受信したパッチプログラムを前記第１の通信部により前記電子装置へ送信する、
請求項９に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、電子装置、ＩＣカードおよび情報処理システムに関する。
【背景技術】
【０００２】
従来、ＪａｖａＣａｒｄ（登録商標）などのＩＣカードでは、アプリケーションプログラムを追加または削除することが可能な技術が存在している。このような技術によれば、仮想マシン又はＡＰＩなどを利用して、アプリケーションプログラムの追加または削除が可能である。しかしながら、上記のような技術であっても、ＩＣカードは、ＯＳなどのプログラムの修正を行うことが出来ない。また、従来のＩＣカードは、運用中にソフトウエアのプログラムの不具合を修正するためのパッチプログラムを適用する場合、電源断などの外乱が発生すると、パッチプログラムが正しく適用されないことがあるという問題がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−４９９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の課題を解決するために、本発明は、パッチプログラムを確実にプログラムに適用できる電子装置、ＩＣカードおよび情報処理システムを提供する。
【課題を解決するための手段】
【０００５】
実施形態によれば、電子装置は、通信部と、第１の記憶部と、第２の記憶部と、制御部とを有する。通信部は、端末装置と通信する。第１の記憶部は、第１のプログラムを記憶する。第２の記憶部は、前記通信部により前記端末装置から受信する前記第１のプログラムに対するパッチプログラムをセクションごとに格納する。制御部は、前記第１のプログラムを実行する場合、前記第２の記憶部における各セクションに格納された最新のパッチプログラムを適用する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るＩＣカードの構成例を示す図である。
【図２】図２は、実施形態に係る端末装置及び上位装置の構成例を示す図である。
【図３】図３は、本実施形態に係るＩＣカードの不揮発性メモリに記憶する情報の例を示す図である。
【図４】図４は、実施形態に係るＩＣカードにおけるセクション管理テーブルの例を示す図である。
【図５】図５（ａ）乃至（ｄ）は、実施形態に係るＩＣカードに供給されるコマンドの構成例を示す図である。
【図６】図６は、実施形態に係るセッション鍵の例を示す図である。
【図７】図７は、実施形態に係るＩＣカードに供給されるセキュアメッセージングコマンドの構成例を示す図である。
【図８】図８は、実施形態に係る端末装置２及びＩＣカード１によるＩＣカード１へのパッチ適用処理の流れを示すシーケンスである。
【図９】図９は、実施形態に係るＩＣカードにおけるパッチ処理を説明するための模式図である。
【図１０】図１０は、実施形態に係るＩＣカードにおけるパッチ処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態について、図面を参照しつつ説明する。  
図１は、実施形態に係るＩＣカード１の構成例を概略的に示すブロック図である。  
実施形態に係る情報処理システムは、ＩＣカード（電子装置）１、端末装置（ＩＣカード処理装置）２および上位装置３を有する。実施形態に係る情報処理システムにおいて、ＩＣカード１は端末装置２と通信し、端末装置２は上位装置３と通信する。
【０００８】
上位装置３は、例えば、端末装置２とネットワークを介して接続される。上位装置３は、ネットワーク上のサーバ、あるいは、通信システムの送信元のような情報を発信する装置である。上位装置３は、端末装置２へＩＣカード１に対するパッチプログラム（後で詳細に説明する）を出力する。  
端末装置２は、上位装置３と通信する機能とＩＣカード１と通信する機能とを有する。端末装置２は、上位装置３から提供されるパッチプログラムをＩＣカード１へ供給する。ＩＣカード１は、端末装置２に通信接続する。  
ＩＣカード１は、端末装置２との通信機能とプログラムを実行する機能とを有する電子装置である。ＩＣカード１は、上位装置３から端末装置２を経由して供給されるパッチプログラムを適用する。
【０００９】
以下の実施形態においては、ＩＣカード１が端末装置２からのコマンドに応じて動作する接触型又は非接触型のＩＣカードであり、端末装置２がＩＣカード処理装置（ＩＣカードリーダライタ（Ｒ／Ｗ））であることを想定して説明する。ただし、ＩＣカード１は、接触型又は非接触型のＩＣカード以外の電子装置でもあっても良いし、端末装置２は、ＩＣカード以外の電子装置のインターフェースに通信接続される装置であればよい。例えば、実施形態に係る情報処理システムにおいて、ＩＣカード１は端末装置２に搭載される小型の電子機器であっても良い。また、上位装置３は、情報処理システムにおけるＩＣカード１に対するパッチプログラムの送信元であり、ＰＣでもよいし、サーバでもよいし、放送通信システムの送信装置でもよい。
【００１０】
すなわち、ＩＣカード１は、端末装置２から供給される電力により活性化する（動作可能な状態になる）携帯可能な電子機器である。ＩＣカード１は、端末装置２からのコマンドに応じて動作する。ＩＣカード１は、例えば、スマートカードとも称される。ＩＣカード１は、接触型のＩＣカード（接触式ＩＣカード）又は非接触型のＩＣカード（非接触式ＩＣカード）である。接触式ＩＣカードとしてのＩＣカード１は、通信インターフェースとしてのコンタクト部を介して端末装置２からの動作電源及び動作クロックの供給を受けて活性化する。非接触式ＩＣカードとしてのＩＣカード１は、通信インターフェースとしてのアンテナ及び変復調回路などを介して端末装置２からの電波を受信し、その電波から動作電源及び動作クロックを生成して活性化する。
【００１１】
図１に示すように、ＩＣカード１は、本体Ｃを有する。本体Ｃは、プラスチックなどによりカード状に形成される。ＩＣカード１は、本体Ｃ内にモジュールＭを有する。モジュールＭは、１つまたは複数のＩＣチップＣａと通信用の外部インターフェース（インターフェース）とが接続された状態で一体的に形成され、本体Ｃ内に埋設される。また、ＩＣカード１のモジュールＭは、図１に示すように、プロセッサ１１、ＲＡＭ１２、ＲＯＭ１３、不揮発性メモリ１４、通信制御部１５及びインターフェース１６などを有する。
【００１２】
プロセッサ１１は、種々の処理を実行する回路を含む。プロセッサ１１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。プロセッサ１１は、ＩＣカード１全体の制御を司る。プロセッサ１１は、ＲＯＭ１３あるいは不揮発性メモリ１４に記憶されているプログラムを実行することにより、種々の処理機能を実現する。ただし、後述するプロセッサ１１が実行する各種の機能のうちの一部又は全部は、ハードウエア回路により実現されるようにしても良い。
【００１３】
ＲＡＭ１２は、ワーキングメモリとして機能する揮発性のメモリである。また、ＲＡＭ１２は、プロセッサ１１が処理中のデータなどを一時保管するバッファとしても機能する。例えば、ＲＡＭ１２は、通信制御部１５及びインターフェース１６を介して端末装置２との間で送受信するデータを一時保管する通信バッファ（送受信バッファ）が設けられる。ＲＡＭ１２に設けられる通信バッファは、送信データを格納する送信バッファと受信データを格納する受信バッファとから構成される。また、ＲＡＭ１２には、通信バッファを定義するための各種の制御情報も格納される。また、ＲＡＭ１２は、後述するセキュアメッセージングに用いるセッション鍵を記憶する記憶領域１２ａを有する。
【００１４】
ＲＯＭ１３は、プログラムメモリとして機能する不揮発性のメモリである。ＲＯＭ１３は、予め制御用のプログラムおよび制御データなどが記憶される。ＲＯＭ１３は、製造段階で制御プログラムや制御データなどが記憶された状態でＩＣカード１内に組み込まれるものである。つまり、ＲＯＭ１３に記憶される制御プログラムや制御データは、予め当該ＩＣカード１の仕様に応じて組み込まれる。たとえば、ＲＯＭ１３には、端末装置２から受信するコマンドに応じた処理をプロセッサ１１が実行するためのプログラムが記憶される。本実施形態において、ＲＯＭ１３は、後述するパッチプログラムが適用されるプログラム（第１のプログラム）を記憶する記憶領域１３ａを有する。
【００１５】
不揮発性メモリ１４は、データの書き込み及び書換えが可能な不揮発性のメモリである。不揮発性メモリ１４は、例えば、ＥＥＰＲＯＭ（登録商標）（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）あるいはフラッシュＲＯＭなどで構成する。不揮発性メモリ１４には、当該ＩＣカード１の運用用途に応じたプログラムや種々のデータが書込まれる。
【００１６】
また、不揮発性メモリ１４は、一部または全部の領域が耐タンパー性を有し、セキュアにデータが格納できる。不揮発性メモリ１４には、プログラムファイルあるいはデータファイルなどが定義され、それらのファイルに制御プログラムや種々の設定データが書き込まれる。例えば、不揮発性メモリ１４は、各種の通信制御用の設定データ、ユーザデータ、あるいは、アプリケーションプログラムなどを記憶する。不揮発性メモリ１４は、後述するセクション管理テーブル１４ａを有する。また、不揮発性メモリ１４は、セキュアメッセージングに用いる固定鍵を記憶する記憶領域１４ｂを設けても良い。
【００１７】
通信制御部１５は、インターフェース１６に接続する。インターフェース１６は、外部装置に通信接続するためのインターフェースである。通信制御部１５及びインターフェース１６は、通信部を構成する。通信制御部１５及びインターフェース１６は、端末装置２のインターフェースに対応した通信方式による通信機能を実現する。また、通信制御部１５及びインターフェース１６は、複数の通信方式（例えば、接触通信と非接触通信）をサポートするものとして構成しても良い。
【００１８】
当該ＩＣカード１が接触式ＩＣカードとして実現される場合、通信制御部１５及びインターフェース１６は、端末装置２と接触して通信する通信部を構成する。この場合、インターフェース１６は、端末装置２のコンタクト部と物理的かつ電気的に接触するコンタクト部により構成され、通信制御部１５は、コンタクト部を介した信号の送受信を制御する回路などにより構成される。
【００１９】
また、当該ＩＣカード１が非接触式ＩＣカードとして実現される場合、通信制御部１５及びインターフェース１６は、端末装置２のカードリーダライタと非接触（無線）で通信する通信部を構成する。この場合、インターフェース１６は、電波の送受信を行うアンテナにより構成され、通信制御部１５は、送信する電波を生成するための変調回路及び受信した電波から信号を生成するための復調回路などにより構成される。
【００２０】
図２は、実施形態に係る情報処理システムの構成例を概略的に示すブロック図である。  
図２に示す構成例において、情報処理システムの端末装置２は、カードリーダライタを介してＩＣカード１と通信する機能を有するＩＣカード処理装置であり、上位装置３との通信機能を有する。
【００２１】
端末装置２は、図２に示すように、制御部２１、表示部２２、操作部２３、カードリーダライタ２４などを有する。  
制御部２１は、端末装置２全体の動作を制御する。制御部２１は、プロセッサ（ＣＰＵ）２５、ＲＡＭ２６、ＲＯＭ２７、不揮発性メモリ２８、通信部２９などにより構成される。例えば、制御部２１は、パーソナルコンピュータ（ＰＣ）により構成される。プロセッサ２５は、ＲＯＭ２７又は不揮発性メモリ２８が記憶するプログラムを実行することにより種々の処理を実行する。ＲＡＭ２６は、データを一時的に保持するワーキングメモリとして機能する。ＲＯＭ２７は、プログラムや制御データなどを記憶する不揮発性のメモリである。不揮発性メモリ２８は、書換え可能な不揮発性のメモリである。通信部２９は、上位装置３と通信するためのインターフェースである。
【００２２】
制御部２１は、カードリーダライタ２４によりＩＣカード１へコマンドを送信する機能、ＩＣカード１から受信したデータを基に種々の処理を行う機能などを有する。たとえば、制御部２１は、カードリーダライタ２４を介してＩＣカード１にデータの書き込みコマンドを送信することによりＩＣカード１内の不揮発性メモリにデータを書き込む制御を行う。また、制御部２１は、ＩＣカード１に読み取りコマンドを送信することによりＩＣカード１からデータを読み出す制御を行う。また、制御部２１は、複数のアプリケーションを実行する機能を有する。
【００２３】
表示部２２は、制御部２１の制御により種々の情報を表示する表示装置である。操作部２３は、キーボード、テンキー、ポインティングデバイスなどにより構成する。操作部２３は、端末装置２の操作員が種々の操作指示やデータなどを入力するためのものである。また、操作部２３は、ＩＣカード１の利用者の識別情報あるいはパスワードなどの認証情報を入力する為の入力部としても機能する。
【００２４】
カードリーダライタ２４は、ＩＣカード１との通信を行うためのインターフェース装置である。カードリーダライタ２４は、ＩＣカード１の通信方式に応じたインターフェースにより構成される。たとえば、ＩＣカード１が接触型のＩＣカードである場合、カードリーダライタ２４は、ＩＣカード１のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、ＩＣカード１が非接触型のＩＣカードである場合、カードリーダライタ２４は、ＩＣカード１との無線通信を行うためのアンテナおよび通信制御などにより構成される。カードリーダライタ２４は、ＩＣカード１に対して、電源供給、クロック供給、リセット制御、データの送受信を行う。カードリーダライタ２４は、制御部２１による制御に基づいてＩＣカード１の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行う。
【００２５】
また、上位装置３は、端末装置２に通信接続される装置である。例えば、上位装置３は、ネットワークを介して端末装置２に接続されるサーバである。また、上位装置３は、端末装置２に接続されるパーソナルコンピュータ（ＰＣ）などであっても良い。  
図２に示す構成例において、上位装置３は、プロセッサ（ＣＰＵ）３１、記憶部３２、通信部３３などを有する。プロセッサ３１は、記憶部３２が記憶するプログラムを実行することにより上位装置３としての種々の処理を実行する。記憶部３２は、ＲＡＭ、ＲＯＭ、書換え可能な不揮発性メモリなどを有する。記憶部３２は、例えば、ＩＣカード１に適用するパッチプログラムなどを記憶する。通信部３３は、端末装置２と通信するためのインターフェースである。例えば、上位装置３のプロセッサ３１は、記憶部３２が記憶するＩＣカード１に適用するパッチプログラムを端末装置２へ送信する処理を行う。
【００２６】
次に、ＩＣカード１内におけるパッチプログラムの管理について説明する。  
図３は、実施形態に係るＩＣカード１の不揮発性メモリ１４にあるパッチプログラムを書き込む領域の構成例を示す図である。  
図３に示すように、不揮発性メモリ１４は、セクション管理テーブル１４ａ、および、複数のセクション領域（セクション情報）４０（４０１、…、４０ｎ）を格納する。セクション管理テーブル１４ａは、各セクション情報を管理するための情報を格納する。セクション領域４０は、パッチプログラムを格納する。各セクション領域４０（４０１、…、４０ｎ）は、それぞれテーブル領域４１（４１１、…、４１ｎ）とプログラム領域４２（４２１、…、４２ｎ）とを有する。
【００２７】
セクション領域４０に格納されるパッチプログラムは、ＲＯＭ１３又は不揮発性メモリ１４に予めインストールされるプログラムに適用するプログラムである。パッチプログラムは、例えば、ＲＯＭ１３又は不揮発性メモリ１４が記憶するプログラムにおける不具合を修正するためのプログラムである。ＲＯＭ１３又は不揮発性メモリ１４に予め記憶するプログラムは、セクション管理テーブル１４ａが格納する情報を参照して、必要に応じてパッチプログラムを適用するように構成される。例えば、ＲＯＭ１３又は不揮発性メモリ１４に予め記憶するプログラムは、適用すべきパッチプログラムを示す情報（例えば、パッチプログラムの識別番号）が設定され、その情報に従ってパッチプログラムを適用するように動作する。
【００２８】
セクション管理テーブル１４ａは、パッチプログラムを複数のセクション領域（セッション情報）４０（４０１、…、４０ｎ）に分けて管理する情報を格納する。図３に示す例において、セクション管理テーブル１４ａは、ｎ個のパッチプログラムを管理するためのｎ個のセッション領域４０（４０１、…、４０ｎ）を有する。
【００２９】
各セクション領域４０のテーブル領域４１は、パッチプログラムを識別するための番号（パッチ番号）と当該セクションで管理するデータ（プログラム）のアドレス及びサイズとを格納する。パッチプログラムを適用するべきプログラムかどうかは、パッチ番号によって識別される。パッチ番号としては、例えば、端末装置２からＩＣカード１へ与えられるコマンドのＩＮＳなどを使って識別できるようにしても良い。また、パッチ番号は、プログラム内でエントリポイントの番号として設定し、エントリポイントの番号を識別してもよい。各セクション領域４０のプログラム領域４２は、当該セクションが管理するパッチプログラム本体を格納する。
【００３０】
また、図３に示すように。不揮発性メモリ１４は、セキュアメッセージング用の鍵情報を格納する領域１４ｂを設けても良い。例えば、領域１４ｂは、セキュアメッセージング用の固定鍵を示す情報を記憶する。セキュアメッセージング用の固定鍵は、暗号化用鍵と認証子用鍵とを有する。暗号化用鍵は、コマンドのデータ部を暗号化するために用いられる。認証子用鍵は、メッセージに対する認証子を生成するために用いる。これらの領域１４ｂに格納する鍵情報は、専用のコマンドを使って変更するようにしても良い。
【００３１】
図４は、セクション管理テーブル１４ａにおける各セッション情報を説明するための図である。  
図４に示すように、セクション管理テーブル１４ａは、各セクションに関する情報として、データ（パッチプログラム）の有無を示す情報（あり／なし）、データの有効性を示す情報（有効／無効）、セクション領域のアドレス、セクション領域のサイズを示す情報を格納する。これらのセクション管理テーブル１４ａが管理する管理情報は、端末装置２からのコマンドにより書き換えられる。例えば、各セクション情報４０は、セクションデータ書き込みコマンドに応じて新たなセクション領域４０を追加する場合、セクション管理テーブル１４ａに当該セクションの管理情報が追記される。また、セクション管理テーブル１４ａは、各セクション領域の状態を変更する場合に更新される。例えば、セクション領域は、セクション有効化コマンドによって有効化され、セクション無効化コマンドによって無効化され、セクション削除コマンドによって削除される。
【００３２】
図５は、セクション管理テーブル１４ａにおけるセクション情報を制御するための各種のコマンドの構成例を示す図である。  
図５（ａ）は、セクションデータ書込みコマンドの構成例を示す図である。図５（ｂ）は、セクション有効化コマンドの構成例を示す図である。図５（ｃ）は、セクション無効化コマンドの構成例を示す図である。図５（ｄ）は、セクション削除コマンドの構成例を示す図である。図５（ａ）乃至（ｄ）に示す各コマンドは、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、Ｌｃ、および、データ部から構成される。
【００３３】
図５（ａ）に示すセクションデータ書き込みコマンドは、パッチプログラムの書き込みを要求するコマンドである。ＩＣカード１は、セクションデータ書き込みコマンドを受信すると、セクション管理テーブル１４ａにおける指定されたセクション情報を「あり」にする。図５（ａ）に示すセクションデータ書込みコマンドの例では、データ部に、「セクション番号」、「オフセット」、「セッションデータ（書込みデータ）の長さ」、「セクションデータ」が順に格納される。
【００３４】
「セクション番号」は、書込み対象となるセクションを示す情報である。「オフセット」は、書込み開始位置を示す情報である。「セッションデータの長さ」は、当該コマンドによって書込むべきデータの長さを示す情報である。「セクションデータ」は、当該コマンドによって書込むべきデータである。例えば、セクションデータ書込みコマンドは、「セッション番号」で書込み対象としたセクション領域における「オフセット」の位置から「セクションデータの長さ」分の「セクションデータ」を書込む処理を要求する。なお、セクションデータは、セクション領域に書込むべきデータとしてパッチプログラムを分割したデータであっても良いし、パッチプログラム全体を一括して送信するデータであっても良い。
【００３５】
図５（ｂ）に示すセクション有効化コマンドは、指定するセクションの有効化を指示するコマンドである。ＩＣカード１のプロセッサ１１は、セクション有効化コマンドを受信すると、セクション管理テーブル１４ａにおける当該コマンドで指定されたセクションの管理情報を「有効」とする。図５（ｂ）に示すセクション有効化コマンドの例では、データ部に、「セクション番号」、「有効化」が順に格納される。「セクション番号」は、有効化処理の対象となるセクションを示す情報である。「有効化」は、当該セクションを有効とする旨を指示する情報である。
【００３６】
図５（ｃ）に示すセクション無効化コマンドは、指定するセクションの無効化を指示するコマンドである。ＩＣカード１のプロセッサ１１は、セクション無効化コマンドを受信すると、セクション管理テーブル１４ａにおける当該コマンドで指定されたセクションの管理情報を「無効」とする。図５（ｂ）に示すセクション有効化コマンドの例では、データ部に、「セクション番号」、「無効化」が順に格納される。「セクション番号」は、無効化処理の対象となるセクションを示す情報である。「無効化」は、当該セクションを無効とする旨を指示する情報である。
【００３７】
図５（ｄ）に示すセクション削除コマンドは、指定するセクションの削除を指示するコマンドである。ＩＣカード１のプロセッサ１１は、セクション削除コマンドを受信すると、セクション管理テーブル１４ａにおける当該コマンドで指定されたセクションの管理情報を「なし」とする。図５（ｄ）に示すセクション削除コマンドの例では、データ部に、「セクション番号」、「削除」が順に格納される。「セクション番号」は、有効化処理の対象となるセクションを示す情報である。「削除」は、当該セクションを削除する旨を指示する情報である。
【００３８】
次に、セキュアメッセージングコマンドについて説明する。  
図５（ａ）乃至（ｄ）に示す各コマンドは、セキュアメッセージングコマンドとして送受信するようにしても良い。セキュアメッセージングコマンドは、暗号化用鍵を用いてメッセージ（コマンドのデータ部）が暗号化される共に、メッセージに対する認証子を付与されたコマンドとして生成される。セキュアメッセージングに用いる鍵は、相互認証を行って交換されるセッション鍵（セッションキー）であっても良いし、図３に示すような固定鍵でもよい。
【００３９】
図６は、ＩＣカード１のＲＡＭ１２に格納されるセキュアメッセージング用のセッション鍵の例を示す図である。  
セキュアメッセージング用のセッション鍵は、暗号化用鍵と認証子用鍵とを含む。暗号鍵は、コマンドのデータ部を暗号化或は復号化するために用いられる。認証子用鍵は、メッセージに対する認証子を生成するために使用する。これらのセッション鍵は、端末装置２からＩＣカード１への専用のコマンドにより、セッションごとに生成あるいは交換するため、毎回書き換えられる。セッション鍵は、ＩＣカード１のＲＡＭ１２と端末装置２のＲＡＭ２６とに格納され、ＩＣカード１と端末装置２との間のセキュアメッセージンンに用いられる。
【００４０】
図７は、セキュアメッセージング化されたコマンド（セキュアメッセージングコマンド）の例を示す図である。  
セキュアメッセージングコマンドは、暗号化されたデータ部と認証子とを有する。セキュアメッセージングに用いる鍵は、上述したセッション鍵でもよいし、図３に示すような固定鍵でもよい。セキュアメッセージングを適用することにより、図５（ａ）乃至（ｄ）に示す各コマンドは、図７に示すようなセキュアメッセージングコマンドとなる。図７に示すようなセキュアメッセージングコマンドでは、暗号化によりデータ部の内容が外部からわからないようになり、認証子によりデータの改ざんが検出されるようになっている。
【００４１】
例えば、図５（ａ）乃至（ｄ）に示す各コマンドは、実行前にアクセス条件を確立することが必要である。このため、ＩＣカード１と端末装置２とは、アクセス条件を確立するために相互認証を行う。ＩＣカード１と端末装置２とは、相互認証においてセッション鍵を交換する。このセッション鍵を用いて、端末装置２は、各コマンドにおけるメッセージ（データ部のデータ）の暗号化およびメッセージに対する認証子の付与を行ってセキュアメッセージングコマンドを生成する。ＩＣカード１は、端末装置２からのセキュアメッセージングコマンドをセッション鍵により解釈する。
【００４２】
図８は、実施形態に係るＩＣカード１が端末装置２からのパッチプログラムを書き込むための処理（パッチ適用処理）の流れを説明するためのシーケンスである。  
図８では、パッチ適用処理においてＩＣカード１と端末装置（ＩＣカード処理装置）２との間での送受信されるコマンド及びレスポンスを示している。  
まず、端末装置２とＩＣカード１とは、相互認証およびセッション鍵の交換を行う（ＳＴ１１−１４）。すなわち、端末装置２のプロセッサ２５は、ＩＣカード１へ相互認証コマンドを送り（ＳＴ１１）、相互認証を開始する。相互認証コマンドを受信すると、ＩＣカード１のプロセッサ１１は、相互認証コマンドに応じて端末装置２との相互認証を実行する（ＳＴ１２）。この相互認証において、ＩＣカード１と端末装置２とは、セキュアメッセージングに用いるセッション鍵を交換する（ＳＴ１３）。ＩＣカード１のプロセッサ１１は、相互認証が完了すると、端末装置２へ相互認証コマンドに対するレスポンスを送信する（ＳＴ１４）。ここでは、相互認証が成功したものとし、ＩＣカード１のプロセッサ１１は、認証成功を示すレスポンスを端末装置２へ送信するものとする。  
なお、図６に示す動作例では、端末装置２とＩＣカードとが相互認証を行い、セッション鍵を交換するものとするが、ＩＣカード１と端末装置２とは、セッション鍵を使わずに、固定鍵を使ってセキュアメッセージングを行ってもよい。
【００４３】
相互認証が完了すると、端末装置２とＩＣカード１とは、ＩＣカード１にパッチプログラムを書込む書込処理を実行する（ＳＴ１５−２０）。パッチプログラムは、上位装置３から端末装置２へ供給されるものとする。端末装置２は、パッチプログラムを複数回の書込みコマンドによってＩＣカード１に書込むようにしても良いし、１回の書込みコマンドによってＩＣカード１に書込むようにしても良い。例えば、端末装置２は、パッチプログラムの長さ（大きさ）に応じてＩＣカード１へ供給する書込みコマンドの数を決定するようにしても良い。図６に示す動作例では、２回の書込みコマンドによってセッション領域へのパッチプログラムの書込みが完了する動作例を示している。
【００４４】
すなわち、相互認証が完了すると、端末装置２のプロセッサ２５は、上位装置３から提供されるパッチプログラムをＩＣカード１に適用するためのセッションデータ書込みコマンドを生成する。ここでは、上位装置３からのパッチプログラムを２つの書込みコマンド（第１、第２のセッションデータ書込みコマンド）によってＩＣカード１に書込むものとする。端末装置２のプロセッサ２５は、ＩＣカード１へ適用するパッチプログラムに対して第１のセッションデータ書込みコマンドと第２のセッションデータ書込みコマンドとを生成する。
【００４５】
第１のセッションデータ書込みコマンドを生成すると、端末装置２のプロセッサ２５は、ＩＣカード１へ生成した第１のセッションデータ書込みコマンドを送信する（ＳＴ１５）。第１のセッションデータ書込みコマンドを受信すると、ＩＣカード１のプロセッサ１１は、セクション管理テーブル１４ａが管理するセクション領域を追加し、追加したセクション領域に受信したコマンドに応じた情報を書込む（ＳＴ１６）。
【００４６】
ここで、セクション番号は、各セクションに古い順にセクション番号を設定されるものとする。この場合、プロセッサ１１は、第１のセッションデータ書込みコマンドを受信すると、現在のセクション管理テーブル１４ａが管理する最後（最新）のセクション番号をインクリメント（＋１）した新たなセクション番号を付与したセクション領域４０を追加する。新たなセクション領域４０を追加すると、プロセッサ１１は、追加したセクション４０のテーブル領域４１にパッチ番号および開始アドレスなどの情報を書込み、プログラム領域４２に当該コマンドのデータ部に格納されるプログラム本体を書き込む。
【００４７】
なお、受信するコマンドがセキュアメッセージングコマンドである場合、プロセッサ１１は、セッション鍵又は固定鍵における暗号化鍵を用いて当該コマンドのデータ部を復号化し、認証鍵を用いて認証子による当該コマンドの正当性のチェックを行う。プロセッサ１１は、正当性が確認されたコマンドのデータ部を復号化したデータに基づいて上述したような書込み処理を行う。
【００４８】
第１のセクションデータ書込みコマンドに応じた書込み処理を終了すると、プロセッサ１１は、当該コマンドに応じた書込みの正常終了を示すレスポンスを端末装置２へ送信する（ＳＴ１７）。このレスポンスでは、当該データを書き込んだセクション（追加したセクション）を示すセクション番号なども通知される。  
第１のセクションデータ書込みコマンドに対する正常終了を示すレスポンスをＩＣカード１から受信すると、端末装置２のプロセッサ２５は、第２のセクションデータ書込みコマンドをＩＣカード１へ送信する（ＳＴ１８）。
【００４９】
第２のセッションデータ書込みコマンドを受信すると、ＩＣカード１のプロセッサ１１は、ＳＴ１６で第１のセッションデータ書込みコマンドに応じて追加したセクションに受信したコマンドに応じた情報を書込む（ＳＴ１９）。例えば、プロセッサ１１は、第２のセッションデータ書込みコマンドのデータ部に格納されるプログラムデータを追加したセクション情報４０のプログラム領域４２に追記する。第２のセクションデータ書込みコマンドに応じた書込み処理を終了すると、プロセッサ１１は、当該セクションへのデータの書込みの正常終了を示すレスポンスを端末装置２へ送信する（ＳＴ２０）。
【００５０】
第２のセクションデータ書込みコマンドに対する正常終了を示すレスポンスをＩＣカード１から受信すると、端末装置２のプロセッサ２５は、セッションデータとしてのパッチプログラムの書込み完了を判断する。  
パッチプログラムの書込みが完了すると、端末装置２とＩＣカード１とは、第１及び第２のセクションデータ書込みコマンドでパッチプログラムを書込んだセクションを有効化する処理を行う（ＳＴ２１−２３）。
【００５１】
すなわち、セッションデータとしてのパッチプログラムの書込み完了を判断すると、端末装置２のプロセッサ２５は、第１及び第２のセクションデータ書込みコマンドでパッチプログラムを書込んだセクションを有効化するためのセクション有効化コマンドをＩＣカードへ送信する（ＳＴ２１）。例えば、プロセッサ２５は、図５（ｂ）に示すようなセクション有効化コマンドにデータを書き込んだセクションを示すセクション番号をセットすることによりセクション有効化コマンドを生成する。
【００５２】
セクション有効化コマンドを受信すると、ＩＣカード１のプロセッサ１１は、セクション有効化コマンドで指定されたセクション番号のセクションを有効化する（ＳＴ２２）。例えば、プロセッサ１１は、セクション管理テーブル１４ａにおけるセクション有効化コマンドで指定されたセクション番号のセクションの管理情報として、データ有りを示す情報（「あり」）とデータが有効であることを示す情報（「有効」）とを書込む。これにより、ＩＣカード１においては、パッチプログラムを格納したセクションが有効化される。指定のセクションを有効化すると、プロセッサ１１は、当該セクションの有効化が正常終了したことを示すレスポンスを端末装置２へ送信する（ＳＴ２３）。  
以上のパッチ適用処理によって、端末装置２からＩＣカード１へのパッチプログラムの適用が完了する。
【００５３】
なお、図６に示すパッチ適用処理の変形例としては、ＳＴ１９の書込み終了時にＩＣカード１が当該データを書き込んだセクションを有効化することにより、ＳＴ２１−２３の処理を省略するようにしても良い。例えば、端末装置２のプロセッサ１１は、第２のセッションデータ書込みコマンドに、パッチプログラムの最終データ、つまり、当該セクションに書込むべき最終のデータを含むことを示す情報（又は、当該パッチプログラムの書込み終了を示す情報）を付加する。これにより、ＩＣカード１のプロセッサ１１は、第２のセッションデータ書込みコマンドに含まれる情報から当該セクションへのデータの書込み終了を判断できる。この判断に基づいて、プロセッサ１１は、セクション管理テーブル１４ａにおける当該セクションの管理情報を、データ「有り」かつ「有効」に更新するようにすれば良い。
【００５４】
また、上述の変形例において、端末装置２は、第１のセッションデータ書込みコマンドにおいて複数（２つ）の書込みコマンドで書込みを要求するパッチプログラムの長さ（プログラム領域４２に書込むサイズ）を指定しても良い。この場合、ＩＣカード１は、複数のコマンドに応じて追加したセクションのプログラム領域４２に書込んだ長さが指定されたパッチプログラムの長さに達した場合に、当該セクションへのデータの書込み終了を判断するようにしても良い。
【００５５】
上記のようなパッチ適用処理において、セクション管理テーブルが管理するパッチプログラムの書き込みは、一貫性を持った書き込み処理により実現する必要がある。つまり、セクション管理テーブルが管理する各セクションは、パッチプログラムの書き込み前、あるいは、パッチプログラムの書き込み後のいずれかの状態となるものとする。セクション管理テーブルが管理する各セクションの管理情報は、パッチ適用処理において、データ（パッチプログラム）の有無を示す情報（「あり」又は「なし」）とデータの有効性を示す情報（「有効」又は「無効」）とが更新される。
【００５６】
セクション管理テーブルにおける各セクションの管理情報は、書込み前の状態が「なし」かつ「無効」であり、書込み後の状態が「あり」かつ「有効」である。例えば、書込み処理中に電源がオフなどの不具合が発生しても、管理情報は、書込み前の状態（「なし」かつ「無効」）であり、例えば、「なし」かつ「有効」などの不正な状態とはならないように制御される。ただし、パッチ適用処理後、特定のパッチプログラムを一時的に無効としたい場合などでは、セクション管理テーブルが管理する当該セクションの管理情報は「あり」かつ「無効」の状態としても良い。
【００５７】
次に、ＩＣカード１におけるパッチプログラムの動作（パッチ処理）について説明する。  
図９は、ＩＣカード１におけるパッチプログラムの動作を模式的に示す図である。
図９に示す例では、ＲＯＭ１３に格納されたプログラム（第１のプログラム）を実行中に当該プログラムに対するパッチプログラムを実行する動作を示している。
【００５８】
すなわち、ＩＣカード１のＲＯＭ１３又は不揮発性メモリに予め格納されるプログラムにはパッチプログラムへの移行する箇所が設定されるものとする。プロセッサ１１は、ＲＯＭ１３に格納されるプログラム（第１のプログラム）を実行中にパッチプログラムへ移行すると判断した場合、不揮発性メモリ１４に設けたセクション管理テーブル１４ａを参照し、当該プログラムに対して適用すべきパッチプログラムを探す。図９に示す動作例では、セクション管理テーブル１４ａがセクション番号１〜ｎ（ｎは自然数）の複数のセクションを管理していることを想定している。
【００５９】
プロセッサ１１は、セクション管理テーブル１４ａにおいて、セクション番号が大きい値のセクションからサーチを開始する。上述したパッチプログラムの適用例では、新しいパッチプログラムは常に追加されたセクション（セクション番号が大きい値のセクション）に格納される。このため、プロセッサ１１は、セクション番号の大きいセクション（最新のセクション）からセクション番号の小さい方（古い方）のセクションの順に、各セクションをサーチする。
【００６０】
例えば、プロセッサ１１は、最新のセクションに格納したパッチプログラムが実行中のプログラムに適用するものでなければ、次に小さいセクション番号のセクションをチェックする。つまり、プロセッサ１１は、実行中のプログラムに対応するパッチプログラムが見つからなければ、さらに小さいセクション番号のセクションをサーチしていく。最終的にセクション番号が１までサーチしても実行中のプログラムに対応するパッチプログラムが発見できなければ、プロセッサ１１は、適用すべきパッチプログラムが無いと判断する。また、実行中のプログラムに対応するパッチプログラムが見つかった場合、プロセッサ１１は、当該セクションのプログラム領域に格納されているパッチプログラムを実行する。
【００６１】
図１０は、ＩＣカード１におけるパッチ処理の動作例を説明するためのフローチャートである。  
ＩＣカード１のプロセッサ１１は、ＲＯＭ１３又は不揮発性メモリ１４に記憶したプログラム（第１のプログラム）を実行中に当該プログラムに対するパッチ処理の要否を判断する。例えば、プロセッサ１１は、実行中のプログラムに設定されているパッチ処理を行う必要がある箇所から呼び出される処理によってパッチ処理を開始すると判断する。
【００６２】
パッチ処理を開始すると、プロセッサ１１は、実行中のプログラム（第１のプログラム）に対して適用すべきパッチプログラムを識別するための番号（パッチ番号と称する）を取得する（ＳＴ３１）。例えば、プロセッサ１１は、実行中のプログラムに設定されたエントリポイントの番号としてのパッチ番号を取得する。パッチ処理に用いるパッチプログラムを識別するためのパッチ番号を取得すると、プロセッサ１１は、セクション管理テーブル１４ａを参照して実行すべきパッチプログラムを格納したセクションをサーチする。
【００６３】
パッチプログラムのサーチを開始すると、プロセッサ１１は、セクション管理テーブル１４ａにおいて、セクション番号が最大値のセクションからセクション番号が小さい順に、パッチプログラムが有効な状態であるセクションをサーチする。例えば、プロセッサ１１は、セクション番号が最大のセクションからセクション番号が小さい順に、各セクションのテーブル領域において、データが有り（「あり」）で、かつ、データが有効（「有効」）となっているか否かをチェックする。
【００６４】
セクション管理テーブル１４ａにおいて「あり」かつ「有効」となっているセクションがないと判断した場合（ＳＴ３３、ＮＯ）、プロセッサ１１は、実行中のプログラムに対するパッチ処理を終了する。  
また、セクション管理テーブル１４ａにおいて「あり」かつ「有効」となっているセクションを検出した場合（ＳＴ３３、ＹＥＳ）、プロセッサ１１は、セクション管理テーブル１４ａにおける当該セクションの管理情報から該当となるセクション領域（セクション情報）４０を示すアドレスを取得する（ＳＴ３４）。
【００６５】
セクション領域４０のアドレスを取得すると、プロセッサ１１は、取得したアドレスに従ってセクション領域４０にアクセスし、当該セクション領域４０のテーブル領域４１に格納されるパッチ番号を特定する（ＳＴ３５）。テーブル領域４１が格納するパッチ番号を特定すると、プロセッサ１１は、テーブル領域４１が格納するパッチ番号と、実行中のプログラムに適用すべきパッチ番号とが一致するかを判断する（ＳＴ３６）。
【００６６】
また、パッチ番号が一致すると判断した場合（ＳＴ３６、ＹＥＳ）、プロセッサ１１は、当該セクション領域４０のプログラム領域４２に格納されたパッチプログラムを実行し（ＳＴ３８）、パッチ処理を終了する。
【００６７】
パッチ番号が一致しないと判断した場合（ＳＴ３６、ＮＯ）、プロセッサ１１は、チェックしたセクションのセクション番号からさらにセクション番号が小さい順に、パッチプログラムが有効な状態であるセクションをサーチする（ＳＴ３７）。また、プロセッサ１１は、ＳＴ３７からＳＴ３３へ戻り、ＳＴ３７のサーチ処理の結果に基づく上述した処理を実施する。
【００６８】
上述したように、実施形態に係るＩＣカードは、ＲＯＭ或は不揮発性メモリに予めインストールされているプログラムに適用するパッチプログラムを格納する領域をテーブル領域とプログラム領域とから成るセクションとし、各セクションを管理テーブルの管理情報によって管理する。実施形態に係るＩＣカードは、実行中のプログラムに適用するパッチプログラムを管理テーブルの管理情報に参照してサーチし、サーチしたパッチプログラムを実施する。
【００６９】
これにより、本実施形態に係るＩＣカードは、アプリケーションをダウンロードして追加するのではなく、運用中にＯＳを含めたソフトウエアのプログラムに対して確実にパッチプログラムを適用することができる。すなわち、本実施形態に係るＩＣカードでは、ＯＳを含めた予めインストールされているプログラムに対して、不具合の修正などを目的としたパッチプログラムを確実に適用できる。
【００７０】
また、本実施形態に係るＩＣカードは、各セクションへのパッチプログラムの格納が完了した後に管理テーブルの管理情報によって当該セクションを有効化するようにする。これにより、本実施形態に係るＩＣカードは、追加されるパッチプログラムが、順次、バージョンアップされる形で適用するようにできる。
【００７１】
また、本実施形態に係るＩＣカードによれば、パッチプログラムを書込み処理（パッチ適用）中に電源断などの外乱が発生したとしても、完全な書込みが完了していないセクションデータ（パッチプログラム）を無効なデータとして取り扱うことができ、不完全なデータ（パッチプログラム）によるパッチ処理（動作）を防止し、確実に動作していた書込み前の状態に戻ることができる。
【００７２】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１…ＩＣカード（電子装置）、２…端末装置、３…上位装置、Ｃ…本体、Ｍ…モジュール、１１…プロセッサ（制御部、第２の制御部）、１２…ＲＡＭ、１３…ＲＯＭ（第１の記憶部）、１４…不揮発性メモリ（第２の記憶部、第３の記憶部）、１５…通信制御部（通信部、第２の通信部）、１６…インターフェース、２４…カードリーダライタ（第１の通信部）、２５…プロセッサ（第１の制御部）、２９…通信部（第３の通信部）。
【図１】
2018112913.tif 000003
【図２】
2018112913.tif 000004
【図３】
2018112913.tif 000005
【図４】
2018112913.tif 000006
【図５】
2018112913.tif 000007
【図６】
2018112913.tif 000008
【図７】
2018112913.tif 000009
【図８】
2018112913.tif 000010
【図９】
2018112913.tif 000011
【図１０】
2018112913.tif 000012