(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有するＩＣカードであって、
該メモリには、少なくとも、該外部装置との入出力を制御するオペレーティング・システムの基本部（ＯＳ基本部）と、前記ＯＳ基本部を参照しながら、ＩＣカードの所定の機能を提供するアプリケーション・プログラムを実行させ管理する複数のＩＣカードＯＳと、前記インタフェースを介して外部装置から入力されたコマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動するＯＳローダとが記憶され、
前記ＯＳ基本部の制御の下で前記インタフェースを介して外部装置からのコマンドを受信し、前記ＯＳローダは当該コマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動し、当該ＩＣカードＯＳによって当該コマンドを実行させる
ＩＣカード。
【請求項２】
前記外部装置から入力されたコマンドには、当該コマンドの実行可能なＩＣカードＯＳの情報が含まれている
請求項１記載のＩＣカード。
【請求項３】
ＩＣカードの処理を行う外部装置と、該外部装置とデータの入出力を行うＩＣカードとを有するＩＣカード処理装置であって、
前記ＩＣカードはＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有し、
前記メモリには、少なくとも、前記外部装置との入出力を制御するオペレーティング・システムの基本部（ＯＳ基本部）と、前記ＯＳ基本部を参照しながら、ＩＣカード所定の機能を提供するアプリケーション・プログラムを実行させ管理する複数のＩＣカードＯＳと、前記インタフェースを介して外部装置から入力されたコマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動するＯＳローダとが記憶され、
前記外部装置は属するＩＣカードＯＳの情報を含むコマンドを前記ＩＣカードへ送信し、当該ＩＣカードは前記ＯＳ基本部の制御の下で前記インタフェースを介して当該コマンドを受信し、前記ＯＳローダは当該コマンドに含まれているＩＣカードＯＳの情報を解読し、該ＩＣカードＯＳを起動し、該ＩＣカードＯＳを介して当該コマンドを実行させる
ＩＣカード処理装置。
【請求項４】
ＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有し、ＯＳ基本部と複数のＩＣカードＯＳとＯＳローダとを搭載したＩＣカードの処理方法であって、
前記外部装置は属するＩＣカードＯＳの情報を含むコマンドを前記ＩＣカードへ送信し、
前記ＩＣカードは前記ＯＳ基本部の制御の下で前記インタフェースを介して当該コマンドを受信し、前記ＯＳローダは当該コマンドに含まれているＩＣカードＯＳの情報を解読し、該ＩＣカードＯＳを識別して起動し、該ＩＣカードＯＳによって当該コマンドを実行させる
ＩＣカード処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数のＯＳを搭載したＩＣカード、それを用いるＩＣカード処理装置および処理方法に関する。
【０００２】
【従来の技術】
集積回路技術などの進展につれて、ＣＰＵとメモリを内蔵したＩＣカードが実用されつつ、注目を集めている。高度なセキュリティ機能と多機能化が可能のため、種々の分野での使用が期待されている。
【０００３】
最近のＩＣカードのＩＣチップには、一般的に、ＣＰＵ、メモリ、及び、暗号処理専用回路などが含まれている。
そのメモリは通常、読み出し専用メモリ（ＲＯＭ）、書き換え可能な不揮発性メモリ、たとえば、ＥＥＰＲＯＭ、或は、ＦＲＡＭ、及び、ランダム・アクセス・メモリ（ＲＡＭ）を含む。
【０００４】
これまでは、特定の機能を実現する専用の機械語プログラムをＲＯＭに記憶してＩＣカードに収容する場合がほとんどであった。例えば、ＲＯＭには、ＩＣカードのオペレーティング・システム（ＯＳ）、各種ＯＳレベルのプログラム、および、サービスを提供する応用プログラムを格納し、ＥＥＰＲＯＭにユーザの個人データを収容する。
最近では、マルチアプリケーション型カードＯＳと言われるインタプリタを常駐させた構成のＩＣカードが出現している。このようなインタプリタを搭載したＩＣカードにおいては、プログラム言語で記述されたプログラムを書き換え可能な不揮発性メモリに記録することにより、カードにＯＳを搭載後、さらに、カード発行後でも応用プログラムを追加することができる、また、不必要なプログラムを削除することもできる。
代表的なマルチアプリケーションＯＳとしては、MULTOS、JavaCard、Windows for SmartCardがある。
この種のＩＣカードにおいては、ＯＳカーネルがＲＯＭに格納され、各種ＯＳレベルのプログラム、サービスを提供する応用プログラム、およびユーザの個人データなどが書き換え可能な不揮発性メモリに収容する事が多い。ＯＳレベルのプログラムをＲＯＭに収容することもある。
【０００５】
今までは、ＯＳの処理能力やＩＣカード内蔵メモリの容量等の理由で、マルチアプリケーションＯＳは、１種類のプログラム言語に対応するインタプリタしか持っていない。従って、所定のマルチアプリケーションＯＳを搭載したＩＣカードは、そのＯＳに属するプログラム言語で作成されたアプロケーションプログラムしか使えない。例えば、MULTOSのＩＣカードに搭載したアプリケーションはMEL言語（MULTOS Executable Language）で記述され、JavaCardではJava言語を使用し、また、Windows for SmartCardではVirtual Basic言語で書かれたアプリケーションしかサポートしない。
【０００６】
図１は、マルチアプリケーションＯＳを用いるＩＣカードおよびＩＣカード処理装置の例示的な構成を示すブロック図である。
ＩＣカード処理装置１は、ＩＣカード１０、端末装置２０、例えば、リード・ライト装置、および、ホストコンピュータ３０を有する。
端末装置２０がＩＣカード１０を管理するホストコンピュータ３０の端末装置であり、ホストコンピュータ３０からの指示に基づいて、ＩＣカード１０に対して、様々な処理を行う。
【０００７】
ＩＣカード１０は、図１に示すように、ＣＰＵ１１、インタフェース（Ｉ／Ｆ）１２、暗号処理器１３、ランダム・アクセス・メモリ（ＲＡＭ）１４、読み出し専用メモリ（ＲＯＭ）１５、および書き換え可能な不揮発性メモリＥＥＰＲＯＭ１６を有する。各構成成分の機能は後述の本発明の実施の形態の記述において詳細に説明する。
【０００８】
このようなハードウエアを有するＩＣカードには、図２に示した構成のソフトウエアが搭載されている。
図２は、従来の１つのＯＳを収容したマルチアプリケーションＯＳのＩＣカード（以降、シングルＯＳＩＣカードと称する）におけるソフトウエア構成の一例を示す概略図である。
【０００９】
この階層構造の中核はＲＯＭ１５に記憶されるＯＳのカーネル部２１である。ＯＳカーネル部２１は、ＩＣカードのハードウエア資源を管理し、上層のプログラムからＩＣカードのハードウエアをアクセスするためのインタフェースを提供する。また、ＯＳカーネル部２１は上層のプログラムの動作を制御する。
【００１０】
図２において、ＯＳカーネル部２１の上層には、ＯＳレベルのソフトウエアである処理モジュールが配置されている。処理モジュールは、ＯＳカーネルの多様な機能を上層の応用プログラムが便利に利用できるようにする。これら処理モジュールはＥＥＰＲＯＭ１６、又は、ＲＯＭ１５に記録されている。ここでは、ＥＥＰＲＯＭ１６に記録されていることを例にして説明する。
【００１１】
このような処理モジュールとしては、例えば、プログラム言語を処理するインタプリタ、プログラムの追加、または、更新するプログラムローダ、アプリケーション・プログラミング・インタフェース、暗号処理ライブラリなどがある。説明の便宜上、ここでは、インタプリタ以外の様々な処理モジュールをモジュール２３とする。
ＯＳカーネル２１、インタプリタ２２、および他の各種ＯＳレベルの処理モジュール２３を合わせて、ＩＣカードのＯＳとなる。
処理モジュール２３の上層には具体的なサービスを提供する様々なアプリケーションプログラムが配置されている。ここでは、アプリケーション１とアプリケーション２が配置されているとする。
【００１２】
図３は図２に示されたソフトウエア構成を有するＩＣカードにおいて、外部から受信したコマンドを処理する手順を示すフローチャートである。ここでは、ＩＣカードにあるアプリケーション１を実行するコマンド、及びアプリケーションをＩＣカードにダウンロードするコマンドの処理を例として説明する。
ホスト・コンピュ−タ３０よりコマンドが送信され、Ｉ／Ｆ１２がそれを受信すると、該コマンドはＯＳにより解釈され、その内容が確認される（ステップ３１）。
【００１３】
そのコマンドがＩＣカードにすでに存在するアプリケーション１を実行するコマンドである場合は、コマンドに含まれているアプリケーション１のアドレス情報を用いて、ファイルマネージャ処理モジュールによって、ＩＣカードのＥＥＰＲＯＭ１６内にアプリケーション１を検索する（ステップ３２）。見つけた場合は、アプリケーション１が実行される（ステップ３３）、即ち、アプリケーション１がＲＡＭ１４に読みこまれて、または、ＥＥＰＲＯＭ１６において直接に参照されて、ＣＰＵ１１においてアプリケーション１に記述された手続きを逐次実行する。
【００１４】
そのコマンドがＩＣカードにアプリケーション２をダウンロードするコマンドである場合は、ＯＳのプログラムローダ処理モジュールは動作され、ロードコマンドに続いて送信される該アプリケーション２の構成成分を認証処理しながらＥＥＰＲＯＭ１６の指定された領域に書き込む（ステップ３４）。
【００１５】
また、認証処理の結果、そのコマンドは搭載されているＯＳに属するコマンドではない場合は、そのコマンドの処理が拒否される（ステップ３５）。
【００１６】
【発明が解決しようとする課題】
以上に示すように、１枚ＩＣカードに１つのＯＳしか搭載していない場合は、ＩＣカードの用途が制限されて、カード所有者は該ＩＣカードのＯＳに対応するプログラム言語で記述されたアプリケーションしか使えない。該ＯＳサポートしないプログラム言語で作成されたアプリケーションを利用したい場合は、それらのアプリケ−ションが動作可能なＯＳを搭載したＩＣカードを複数保持し、必要に応じて使い分ける必要がある。例えば、MULTOSのＩＣカードに搭載可能なアプリケーションはJavaCardやWindows for SmartCardを搭載したＩＣカードで利用できないので、３種類のカードを持つことになる。
さらに、新しいアプリケーションを利用したい場合は、ＩＣカードＯＳの制御で、ＩＣカードに該アプリケーションをロードする必要があるので、アプリケーションがどの言語で記述されているかを知らないと、そのアプリケーションのロード操作はできず、カード所有者はその異なる言語のアプリケーションを自分所有のＩＣカードに搭載することができない。
ＩＣカードは迅速に普及され、種々の目的に使用されて、異なる言語で書かれたアプリケーションが大量に出現することが予想される。従って、シングルＯＳのＩＣカードは利便性を追求する上で問題になる。
【００１７】
もし複数のＯＳを一枚のカードに搭載できれば、異なるプログラム言語のインタプリタを１枚のＩＣカードに収納し、異なるプログラム言語で作成された多くのアプリケーションを１枚のカードで利用することが可能になる。
複数のＯＳを一枚のカードに搭載するには、まずは大容量メモリが必要である。現在ＩＣカードに良く使われるＲＯＭの容量は３２〜６４ｋバイト程度であり、ＥＥＰＲＯＭは、１６ｋバイト程度、または、３２ｋバイト程度が主流である。一方、ＯＳのカーネルのサイズは約数ｋバイト〜２０ｋバイト程度であり、典型的なアプリケーションのサイズも数ｋバイト程度である。従って、現時点では、１枚のＩＣカードに複数のＯＳおよび複数のアプリケーションを同時に搭載することはメモリ容量の制限で厳しい。
だが、ＩＣカード内蔵メモリの大容量化が進化しつつ、近い将来にＩＣカードメモリの容量はより大きくなり、より大きなサイズのソフトウエアをＩＣカードに格納できると予想される。たとえば、６４ｋバイトのＥＥＰＲＯＭは間もなく実用化される可能性がある。従って、複数のＯＳを一枚のカードに搭載するには、メモリ容量の制限は問題にならない可能性がある。
【００１８】
しかし、複数のＯＳを一枚のＩＣカードに搭載する場合は、プログラミング技術上は難しさがある。例えば、図３のシングルＯＳのＩＣカードのソフトウエアを基づいて、複数のＯＳのソフトウエアをどのような構造でＩＣカードのＲＯＭ１５とＥＥＰＲＯＭ１６に配置し、動作させるのか。また、ＩＣカードは、例えば、コマンドを受信した後、どのように複数のＯＳから利用すべきＯＳを識別し、円滑にＯＳを切り替えるのか、また、どのようにアプリケーションの属するＯＳを気にせずに、カード所有者の指示だけに従い、希望のアプリケーションプログラムをロード、追加、または、実行等の処理を行うのか、などの問題がある。
【００１９】
本発明は、このような問題点に鑑みてなされたものであり、本発明の目的は、複数のＩＣカードＯＳを搭載したＩＣカード、その複数のＯＳを搭載したＩＣカードを用いるＩＣカード処理装置および処理方法を提供することにある。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明に係わるＩＣカードは、ＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有するＩＣカードであって、該メモリには、少なくとも、該外部装置との入出力を制御するオペレーティング・システムの基本部（ＯＳ基本部）と、前記ＯＳ基本部を参照しながら、ＩＣカードの所定の機能を提供するアプリケーション・プログラムを実行させ管理する複数のＩＣカードＯＳと、前記インタフェースを介して外部装置から入力されたコマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動するＯＳローダとが記憶され、前記ＯＳ基本部の制御の下で前記インタフェースを介して外部装置からのコマンドを受信し、前記ＯＳローダは当該コマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動し、当該ＩＣカードＯＳによって当該コマンドを実行させる。
【００２１】
また、好ましくは、前記外部装置から入力されたコマンドには、当該コマンドの実行可能なＩＣカードＯＳの情報が含まれている。
【００２２】
また、上記目的を達成するために、本発明に係わるＩＣカード処理装置は、前記ＩＣカードはＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有し、前記メモリには、少なくとも、前記外部装置との入出力を制御するオペレーティング・システムの基本部（ＯＳ基本部）と、前記ＯＳ基本部を参照しながら、ＩＣカード所定の機能を提供するアプリケーション・プログラムを実行させ管理する複数のＩＣカードＯＳと、前記インタフェースを介して外部装置から入力されたコマンドを解読し、当該コマンドの実行可能なＩＣカードＯＳを識別して起動するＯＳローダとが記憶され、前記外部装置は属するＩＣカードＯＳの情報を含むコマンドを前記ＩＣカードへ送信し、当該ＩＣカードは前記ＯＳ基本部の制御の下で前記インタフェースを介して当該コマンドを受信し、前記ＯＳローダは当該コマンドに含まれているＩＣカードＯＳの情報を解読し、該ＩＣカードＯＳを起動し、該ＩＣカードＯＳを介して当該コマンドを実行させる。
【００２３】
また、上記目的を達成するために、本発明に係わるＩＣカード処理方法は、ＣＰＵと、メモリと、外部装置と入出力を行うインタフェースとを有し、ＯＳ基本部と複数のＩＣカードＯＳとＯＳローダとを搭載したＩＣカードの処理方法であって、前記外部装置は属するＩＣカードＯＳの情報を含むコマンドを前記ＩＣカードへ送信し、前記ＩＣカードは前記ＯＳ基本部の制御の下で前記インタフェースを介して当該コマンドを受信し、前記ＯＳローダは当該コマンドに含まれているＩＣカードＯＳの情報を解読し、該ＩＣカードＯＳを識別して起動し、該ＩＣカードＯＳによって当該コマンドを実行させる。
【００２４】
ＯＳローダを設けることによって、ＯＳ基本部の制御でＯＳローダが外部装置からＩＣカードへ送られたコマンドを受信し、該コマンドに含まれるＯＳ情報を解読し、利用すべきＩＣカードＯＳを識別してから、そのＯＳに切り替え、該利用すべきカードＯＳによって、アプリケーションのロードや実行などの処理を行うことが可能になる。カード所有者は、複数のカードＯＳの存在やアプリケーションが何のプログラム言語で記述されたかを意識する必要がなく、便利且つ円滑にカードＯＳを選択し、アプリケーションをロードまたは実行することができる。
【００２５】
【発明の実施の形態】
以下、本発明の一実施の形態を添付の図面を参照して説明する。
ＩＣカードおよびＩＣカード処理装置
本実施形態に係わるＩＣカードおよびＩＣカード処理装置は前述した図１に示されたＩＣカード１０およびＩＣカード処理装置１と同じ構成を有し、以下、引き続き図１を参照して本実施形態を説明する。
【００２６】
すでに述べたように、ＩＣカード処理装置１は、ＩＣカード１０、端末装置２０、例えば、リード・ライト装置、および、ホストコンピュータ３０を有する。端末装置２０がＩＣカード１０を管理するホストコンピュータ３０からの指示に基づいて、ＩＣカード１０に対して、様々な処理を行う。
本実施形態には、ＩＣカード１０は、ＩＣカード発行会社から発行され、管理されて、複数のＯＳとそれぞれのＯＳレベルのソフトウエアを搭載済み、ＩＣカード所有者が携帯している複数のＯＳを用いるＩＣカードである。また、ＩＣカードの例として、接触型ＩＣカードについて述べる。
ＩＣカード１０は、図１に示すように、例えば、ＣＰＵ１１、インタフェース（Ｉ／Ｆ）１２、暗号処理器１３、ランダム・アクセス・メモリ（ＲＡＭ）１４、読み出し専用メモリ（ＲＯＭ）１５、および書き換え可能な不揮発性メモリＥＥＰＲＯＭ１６を有する。
【００２７】
ＣＰＵ１１は、端末装置２０からのコマンド、あるいは、予めＩＣカードに設定されたコマンドに基づいて、ＥＥＰＲＯＭ１６に記憶されているアプリケーションに従って、Ｉ／Ｆ１２を介して端末装置２０と適宜通信を行いながら、所望の処理を行う、たとえば、所有者とＩＣカードの認証、代金の決済、ＩＣカードの診断などの処理を行う。
ＣＰＵ１１において処理を行う際に一時的に発生するデータをＲＡＭ１４に記憶する。
【００２８】
Ｉ／Ｆ１２を介して、ＩＣカード１０が端末装置２０に装着された場合に、電力とクロックの供給を受けるとともに、端末装置２０と信号の送受信を行う。すなわち、Ｉ／Ｆ１２は、端末装置２０から受信した信号をＣＰＵ１１に出力し、また、ＣＰＵ１１から入力された信号を端末装置２０に送信する。
【００２９】
暗号処理器１３は、専用の暗号処理回路である。暗号処理器１３は乱数の生成や、ＲＳＡなどの暗号の演算を行う。
【００３０】
ＲＡＭ１４、ＲＯＭ１５、および、ＥＥＰＲＯＭ１６がＩＣカード１０のメモリシステムを構成する。それぞれの機能は次に述べるＩＣカードのソフトウエアの構成で説明する。
【００３１】
このようなハードウエアを有する複数のＯＳを有するＩＣカードには、図４に示されたソフトウエア構成が配置されている。
図４は、本発明に係わる複数ＯＳを収容したマルチアプリケーションＯＳのＩＣカード（以降、マルチＯＳＩＣカードと称する）におけるソフトウエア構成の一例を示す概念図である。
【００３２】
前述したシングルＯＳＩＣカードと同様に、マルチＯＳのＩＣカードにおけるソフトウエア階層構造の中核には、ＲＯＭ１５に記憶されているＯＳのカーネル部４１がある。ＯＳカーネル部４１は、ＩＣカード１０のハードウエアに対応して設計され、そのハードウエア資源を管理する。ＯＳカーネル部４１はＩＣカード１０のインタフェース（Ｉ／Ｆ）１２を制御し、外部装置とのデータの入出力を行う。また、ＯＳカーネル部４１は、上層のプログラムからＩＣカードのハードウエアをアクセスするためのインタフェースを提供する。以上の機能に基づいて、ＯＳカネール４１は上層の各プログラムの動作を制御する。
ＲＯＭ１５に記憶されるＯＳのカーネル部４１はＩＣカード製造会社がＩＣカード発行前に搭載したもので、書き換えることはできない。
【００３３】
本実施形態において、図４に示しているように、ＯＳカーネル部４１の上層には、ＯＳローダ４２がＥＥＰＲＯＭ１６に配置されている。ＯＳローダ４２はＯＳカネール４１の制御の下で、Ｉ／Ｆ１２を介して外部装置から受信したコマンドの内容を解読し、コマンドやコマンドに付加されているアプリケーションの利用すべきＯＳを識別して選択する。
【００３４】
ＯＳローダ４２の上層には、ＩＣカードに搭載した複数のＯＳの処理モジュール部分である。この部分もＥＥＰＲＯＭ１６に記録されている。ＯＳカーネル４１と各ＯＳの複数の処理モジュールから各ＩＣカードＯＳが構成される。各ＯＳの処理モジュールは、ＯＳカーネルの機能を上層の応用プログラムが便利に利用できるように設けられている。処理速度、容量、また、セキュリティの関係で、これらＯＳレベルのソフトウエアは機械語で記述することが望まれる。
このような処理モジュールとして、例えば、プログラム言語を処理するインタプリタや、コマンドを処理するコマンドインタプリタ、プログラムを外から追加又は更新するプログラムローダ、アプリケーション・プログラミング・インタフェース、暗号処理ライブラリなどがある。説明の便宜上、ここでは、インタプリタ以外の様々な処理モジュールを１つのモジュールで表す。
また、本発明の実施形態の例として、２つのＯＳ（ＯＳａとＯＳｂと記する）を搭載する場合を例として説明する。２つのＯＳはそれぞれインタプリタａ４３と処理モジュールａ４４，インタプリタｂ４５と処理モジュールｂ４６を有する。
【００３５】
ＯＳローダ４２は受信したコマンドの内容から属するＯＳ認識し、対応するインタプリタなどのＯＳレベルのソフトウエアを起動させ、コマンドとアプリケーションの処理を行う。
ＯＳローダ４２と各ＯＳの処理モジュール４３、４４、４５、４６を書き換え可能なＥＥＰＲＯＭ１６に配置することによって、ＯＳの追加や削除も可能になり、その場合、ＯＳローダ４２の内容を適切に修正して、新しく追加されたＯＳの識別と選択も容易に実現できる。
【００３６】
各処理モジュールの上層には種々のサービスを提供するアプリケーションプログラムが配置されている。図４に示すように、ＯＳａに属するアプリケーション１（４７）とアプリケーション２（４８）、ＯＳｂに属するアプリケーション３（４９）とアプリケーション４（５０）が配置されている。
【００３７】
既に述べたように、プログラム言語で書かれた応用プログラムを実行するには、インタプリタが必要である。インタプリタは応用プログラムのソースコードを、逐次、実行形式のコードに変換する。必要に応じて、必要な処理モジュールを呼出し、ＩＣカードのシステムデータを利用し、ＩＣカードのハードウエアをアクセスしながら、ＩＣカードの所定の機能を実現する。
なお、ＩＣチップのＣＰＵの機械語で動作し、プログラム言語のアプリケーションではないものもある、その場合は、インタプリタを動作させる必要がない。
【００３８】
ＩＣカードが提供するサービスにより、応用プログラムは様々あり、そのような応用プログラムは、通常カード発行前にＩＣカードに搭載する。マルチアプリケーションＯＳを用いるＩＣカードにおいては、ＩＣカード発行後であっても、プログラムの追加、および、更新することが可能である。
【００３９】
次は、ＯＳローダ４２の構成を図５と図６を参照して説明する。
ＯＳローダ４２はＯＳカーネルレベルで実行可能なプログラムである。例えば、図５に示されたように、ＥＥＰＲＯＭ１６の先頭に配置する。
図５は本発明の実施形態に係わる複数のＯＳを用いるＩＣカードのＯＳローダのＥＥＰＲＯＭ１６における配置の一例を示す図である。
図５においては、ＥＥＰＲＯＭ１６の容量は６４ｋバイトであり、左側のアドレスはブロック（１ブロック＝１６バイト）を単位として、１６進数で表示されている。ＯＳローダ４２のサイズは１ｋバイト以下、ＯＳａの全ての処理モジュールはＯＳａシステムソフトウエアと称し、ＯＳｂの全ての処理モジュールはＯＳｂシステムソフトウエアと称し、それぞれのサイズは２ｋバイト以下とする。
【００４０】
ＯＳローダ４２には、図６に示された内容が含まれている。
図６は本発明の実施形態に係わる複数のＯＳを用いるＩＣカードのＯＳローダの内容の一例を示す図である。
ＯＳローダ４２はＩ／Ｆ１２から受け取ったコマンドを解読するプログラムであるコマンド解読部を有する。該コマンド解読部６１は、受け取ったコマンドを解釈し、コマンドに付属されているＩＣカードＯＳ情報を識別する。
また、ＩＣカードに搭載されている各ＯＳの情報が定数としてＯＳローダ４２登録されている。本実施形態には、例えば、第１番目のＯＳはＯＳａ、記録された場所はＥＥＰＲＯＭ、アドレスは００４１Ｈである、というように登録されている。同様に、第２番目のＯＳはＯＳｂ、記録された場所はＥＥＰＲＯＭ、アドレスは００Ｃ１Ｈであると登録されている。
【００４１】
ＯＳローダ４２は、受け取ったコマンドに含まれているＯＳの情報に基づいて、該コマンドの属するＯＳを識別して、選択する。
図７は本発明に係わる複数のＯＳを用いるＩＣカードが受信したコマンドのフォーマットを示す図である。
このコマンドの先頭に制御コードを含むコマンドヘッダ有し、該コマンドヘッダには、コマンドが実行可能なＯＳを識別するデータであるＩＣカードＯＳ識別子と、該コマンドの操作内容を示すコマンドの種別コードとがある。該種別コードにより、たとえば、アプリケーションのロード、実行などの操作を行うことを判明できる。コマンドの本体には、該コマンドが操作するアプリケーションやデータのアドレスがあり、必要な場合は、該コマンドが操作する対象となるデータも付加されている。
ＯＳローダ４２は、ＯＳカーネル４１の制御の下で、Ｉ／Ｆ１２から受信したコマンドを受け取って、コマンドヘッダにあるＯＳ識別子から、該コマンドの属するＯＳを識別して起動する。起動されたＯＳはコマンドインタプリタによりコマンドの種別を得て、指定されたアドレスにデータを書き込み、或は、指定されたアドレスにあるアプリケーションを実行する等の処理を行う。
以上が、ＩＣカード処理装置１におけるＩＣカード１０のハードウエア及びソフトウエアの構成の説明である。
【００４２】
このようなハードウエア構成およびソフトウエア構成のＩＣカード１０は、端末装置２０に装着されると、Ｉ／Ｆ１２を介して端末装置２０より電源とクロック信号の供給を受けて起動される。そして、端末装置２０を介して、ホストコンピュータ３０からのコマンドに基づいて、ＩＣカード１０が処理を行う。
端末装置２０は、例えば、通常店舗などで使用されている端末装置であり、ＩＣカード製造会社、または、サービスを提供する会社のホストコンピュータ３０に通信回線を介して接続されており、ホストコンピュータ３０と装着されたＩＣカード１０との間の通信データを転送する。
【００４３】
ＩＣカード１０が端末装置２０に装着され起動されて、そして、ＩＣカード自身の認証処理、即ち、ＩＣカード１０がＩＣカード処理装置１で処理できるＩＣカードか否かの処理を行う。後は、所有者が正当な所有者か否かがチェックされる。ＩＣカード１０が認定された場合には、端末装置２０を介して、ＩＣカード１０はホストコンピュータ３０と通信できる。ホストコンピュータ３０とＩＣカード１０とは通信を順次に行いながら、ホストコンピュータ３０より送信されたＩＣカード１０に対する指示を実行する。
【００４４】
マルチＯＳのＩＣカードの処理
以上のＩＣカード処理装置１を用い、以上のハードウエアとソフトウエア構成を有するマルチＯＳのＩＣカード１０を処理する工程について、図８を参照して説明する。
図８は、本発明の実施形態に係わる複数のＯＳを用いるＩＣカード１０はＯＳローダにより利用すべきＩＣカードＯＳを識別、選択して、起動する工程を示すフローチャートである。
ＩＣカード１０が端末装置２０に装着されると、ＩＣカード１０が起動される（ステップＳ８１）。即ち、ＯＳカーネル４１はＲＡＭ１４に読み込まれて（または、ＲＯＭ１５において直接に参照されて）、端末装置２０を介してホストコンピュータ３０とのデータの入出力、ＩＣカード１０の認証処理、暗号処理などの動作を制御する。ＯＳローダ４２もＲＡＭ１４に読み込まれて、ＩＣカード１０が端末装置２０に装着される間に、ＲＡＭ１４に常駐させる。端末装置２０を介してホストコンピュータ３０からのコマンドをＩＣカード１０が受信するたびに、ＯＳローダ４２はそのコマンドの利用すべきＯＳの識別処理を行う。
【００４５】
次は、ＯＳカーネル４１の制御で、ＩＣカード１０と端末装置２０の間で認証処理が行われる（ステップＳ８２）。例えば、ＩＣカード所有者はパスワードを入力して、正当な所有者であり、かつ、ＩＣカードは当該処理装置１で処理できるＩＣカードであることが判明されたら、ホストコンピュータ３０は所有者が希望する処理の指定を待つ。
【００４６】
次は、ＩＣカード１０の所有者は端末装置２０から入力し、ホストコンピュータ３０が提供するサービスに対する操作を行うと指定すると（例えば、ダウンロード、実行など）、ホストコンピュータ３０がその操作をするコマンドをＩＣカードに送信し、端末装置２０を介してＩＣカード１０が該コマンドを受信する（ステップＳ８３）。
【００４７】
ＩＣカード１０が該コマンドを受信すると、ＯＳカーネル４１はＯＳローダ４２を呼出し、ＯＳローダ４２により、コマンドの解釈を行い（ステップＳ８４）、即ち、コマンドヘッダにあるＯＳ識別子を読み取って、コマンドの属するＯＳを識別する。
【００４８】
次は、ＯＳローダ４２に登録されているＩＣカード１０に搭載したＯＳのリストから、ＯＳ識別子に対応するＯＳを検索し、そのＯＳの記憶場所、詳細なアドレスを特定する（ステップＳ８５）。
【００４９】
次は、特定された場所に記憶されたＯＳの必要なシステムソフトウエアをＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、当該ＯＳのインタプリタなどの処理モジュールを動作させる（ステップＳ８６）。
【００５０】
コマンド処理の制御は起動されたＯＳに移行し、以降の処理は当該ＯＳの制御で行う（ステップＳ８７）。当該ＯＳはコマンドインタプリタによりコマンドを解読し続き、コマンドの種別コードからコマンドの種別を判別し、コマンドの操作を行うアドレスを得て、必要な場合、書き込みデータも得る。
ＩＣカードＯＳによるコマンドの処理の具体的な例は図９と図１０において説明する。
該ＩＣカードＯＳによるコマンドの処理を終了した後、当該ＯＳのソフトウエアがＲＡＭ１４から退去させ、制御はＯＳカーネル４１に戻り、次のコマンドの受信を待つ（ステップＳ８８）。
以上が、ＩＣカード処理装置１において、ＯＳローダ４２によるマルチＯＳのＩＣカード１０のＯＳを識別、選択、および起動する工程の説明である。
【００５１】
図３に示された従来のシングルＯＳのＩＣカードにおいてロードや実行コマンドの処理の流れと比べるために、以上に説明したマルチＯＳのＩＣカード１０が同じコマンドに対する処理は、図９と図１０に示された。
図９は、本発明に係わるマルチＯＳのＩＣカードを用いて、アプリケーションをロードするコマンドを受信した場合、ＩＣカードの処理のフローチャートである。
【００５２】
ＯＳカーネル４１の管理でホスト・コンピュ−タ３０よりコマンドが送信されると、ＯＳローダ４２によって該コマンドが解釈され、コマンドヘッドにあるＯＳ識別子から、該コマンドの利用すべきＯＳを識別する（ステップ９１）。
【００５３】
そのＯＳがＯＳａである場合は、ＯＳａのシステムソフトウエアをＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、以降は、ＯＳａの制御の下で該コマンドの処理を行う（ステップ９２）。
【００５４】
ＯＳａはコマンドインタプリタにより該コマンドを解読し、コマンドの種別コードからコマンドの種別を判別する（ステップ９３）。そのコマンドはＩＣカード１０にアプリケーション１をダウンロードするコマンドであることを確認したら、ＯＳａのプログラムローダは動作され、ロードコマンドに続いて送信されるアプリケーション１の構成成分を認証処理しながらＥＥＰＲＯＭ１６の指定された領域に書き込む（ステップ９４）。
【００５５】
そのＯＳはＯＳｂである場合は、ＯＳｂのシステムソフトウエアをＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、以降は、ＯＳｂの制御の下で該コマンドの処理を行う（ステップ９５）。
【００５６】
ＯＳｂはコマンドインタプリタにより該コマンドを解読し、コマンドの種別コードからコマンドの種別を判別する（ステップ９６）。そのコマンドはＩＣカード１０にアプリケーション３をダウンロードするコマンドであることを確認したら、ＯＳｂのプログラムローダは動作され、ロードコマンドに続いて送信されるアプリケーション３の構成成分を認証処理しながらＥＥＰＲＯＭ１６の指定された領域に書き込む（ステップ９７）。
アプリケーションプログラムを書き込んだ後、ＯＳａ、または、ＯＳｂがＲＡＭ１４から退去され、ＯＳａ、または、ＯＳｂの処理が終了する。
【００５７】
図１０は、本発明に係わるマルチＯＳのＩＣカードを用いて、アプリケーションを実行するコマンドを受信した場合、ＩＣカードの処理のフローチャートである。
【００５８】
ＯＳカーネル４１の管理でホスト・コンピュ−タ３０よりコマンドが送信されると、ＯＳローダ４２によって該コマンドを解釈され、コマンドのヘッドにあるＯＳ識別子から、該コマンドの利用すべきＯＳを識別する（ステップ１０１）。
【００５９】
そのＯＳはＯＳａである場合は、ＯＳａのシステムソフトウエアをＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、以降は、ＯＳａの制御の下で該コマンドの処理を行う（ステップ１０２）。
【００６０】
ＯＳａはコマンドインタプリタによりコマンドを解読し、コマンドの種別コードからコマンドの種別を判別する（ステップ１０３）。そのコマンドはＩＣカード１０に存在するアプリケーション２を実行するコマンドであることを確認したら、コマンド内容からアプリケーション２が記録されるアドレスを得る。
続いて、ＯＳａのファイルマネージャによって、ＩＣカード１０のＥＥＰＲＯＭ１６内にアプリケーション２を検索する（ステップ１０４）。発見したら、アプリケーション２を実行する（ステップ１０５）。即ち、アプリケーション２をＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、ＣＰＵ１１においてアプリケーション２に記述された手続きを逐次実行する。
【００６１】
そのＯＳはＯＳｂである場合は、ＯＳｂのシステムソフトウエアをＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、以降は、ＯＳｂの制御の下で該コマンドの処理を行う（ステップ１０６）。
【００６２】
ＯＳｂはコマンドインタプリタによりコマンドを解読し、コマンドの種別コードからコマンドの種別を判別する（ステップ１０７）。そのコマンドはすでにＩＣカード１０に存在するアプリケーション４を実行するコマンドであることを確認したら、コマンド内容からアプリケーション４が記録されるアドレスを得る。
続いて、ＯＳｂのファイルマネージャによって、ＩＣカード１０のＥＥＰＲＯＭ１６内にアプリケーション４を検索する（ステップ１０８）。発見したら、アプリケーション４を実行する（ステップ１０９）。即ち、アプリケーション４をＲＡＭ１４に読み込んで（または、ＥＥＰＲＯＭ１６において直接に実行し）、ＣＰＵ１１においてアプリケーション４に記述された手続きを逐次実行する。
【００６３】
アプリケーション２、又は、アプリケーション４を実行した後、ＯＳａ、または、ＯＳｂがＲＡＭ１４から退去され、ＯＳａ、または、ＯＳｂの処理が終了する。
【００６４】
本発明は以上に説明した実施の形態に限られるものではなく、種々の改変が可能である。
前述した実施の形態において、図４に示されたように、ＯＳローダ４２と各ＯＳの処理モジュール４３、４４、４５、４６がＥＥＰＲＯＭ１６に記憶されているが、これらのプログラム、または、その中の一部をＲＯＭに記憶してもいい。その場合、ＩＣカードに搭載するＯＳとＯＳローダ４２の内容を事前に決め、ＩＣカード発行前にＲＯＭに搭載して、発行後は搭載するＯＳの修正はできない。
以上の方法では、例示として２つのＯＳを搭載した場合について述べたが、本発明において、２つ以上のＯＳを搭載することができるのは明らかである。
【００６５】
また、本実施の形態においては、接触型のＩＣカードを例示して本発明を説明した。しかし、インタフェース（Ｉ／Ｆ）１２としては端子が設けられておらず、コイルを用いて電磁的に外部装置と接続されるような構成の非接触型のＩＣカードであってもよい。
【００６６】
【発明の効果】
本発明によれば、１枚のＩＣカードに複数のＯＳを搭載することができ、ＩＣカードの用途を大幅に広げ、ＩＣカード使用上の便利性が優れている。
また、ＯＳローダを設けることにより、コマンドを受信した度に、コマンドの属するＯＳの識別と選択が行われ、コマンドの属するＯＳの制御でアプリケーションの処理を行うことから、ＩＣカードの所有者はカードに搭載されたＯＳの範囲内では利用すべきＯＳを意識する必要がなくＩＣカードを使用することができ、あたかも１つのＯＳの上で、複数の言語を処理可能なマルチアプリケーションＩＣカードとなる、汎用性及び便利性に優れている。
また、ＯＳローダやＯＳの処理モジュールを書き換え可能なＥＥＰＲＯＭに記録し、ＯＳローダを修正可能となっていることから、新しいＯＳの追加も可能となり、さらに、不必要なＯＳを削除も可能であり、ＩＣカードの使用上の柔軟性に優れている。
【図面の簡単な説明】
【図１】本発明に係わるＩＣカード処理装置の構成を示すブロック図である。
【図２】従来のＩＣカードのソフトウエア構成を示す概念図である。
【図３】図２に示されたソフトウエア構成を有する従来のＩＣカードを用いて、コマンドを処理する工程を示すフローチャートである。
【図４】本発明に係わる複数ＯＳを用いるＩＣカードのソフトウエア構成を示す概念図である。
【図５】本発明に係わる複数ＯＳを用いるＩＣカードのＯＳローダと各ＯＳのシステムソフトウエアがＥＥＰＲＯＭにおける配置を示す図である。
【図６】本発明に係わる複数ＯＳを用いるＩＣカードのＯＳローダの概略な内容を示す図である。
【図７】本発明に係わる複数ＯＳを用いるＩＣカードが受信したコマンドのフォーマットを示す概略図である。
【図８】本発明に係わる複数ＯＳを用いるＩＣカードのＯＳローダによりＩＣカードＯＳの識別、選択、および起動の工程を示すフローチャートである。
【図９】本発明に係わる複数ＯＳを用いるＩＣカードにおいて、アプリケーションプログラムをＩＣカードにロードする工程を示すフローチャートである。
【図１０】本発明に係わる複数ＯＳを用いるＩＣカードにおいて、すでにＩＣカードに存在するアプリケーションを実行する工程を示すフローチャートである。
【符号の説明】
１…ＩＣカード処理装置
１０…ＩＣカード
１１…ＣＰＵ
１２…インタフェース（Ｉ／Ｆ）
１３…暗号処理器
１４…ＲＡＭ
１５…ＲＯＭ
１６…書き換え可能な不揮発性メモリ（ＥＥＰＲＯＭ）
２０…端末装置
２１…ＯＳのカーネル部
２２…インタプリタ
２３…処理モジュール
２４…アプリケーション１
２５…アプリケーション２
３０…ホストコンピュータ
４１…ＯＳのカーネル部
４２…ＯＳローダ
４３…インタプリタａ
４４…処理モジュールａ
４５…インタプリタｂ
４６…処理モジュールｂ
４７…アプリケーション１
４８…アプリケーション２
４９…アプリケーション３
５０…アプリケーション４
【図１】
0004742469.tif 000002
【図２】
0004742469.tif 000003
【図３】
0004742469.tif 000004
【図４】
0004742469.tif 000005
【図５】
0004742469.tif 000006
【図６】
0004742469.tif 000007
【図７】
0004742469.tif 000008
【図８】
0004742469.tif 000009
【図９】
0004742469.tif 000010
【図１０】
0004742469.tif 000011