(57)【特許請求の範囲】
【請求項１】
カード発行用のＩＣカード利用装置により発行されたＩＣカードであって、
カード発行の際に個別パラメータの種類及び個数を示す管理パラメータが設定されたパラメータ管理手段と、カード発行の際に前記管理パラメータに基づいて個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、前記プログラムを実行するプログラム実行手段を備えており、
前記プログラム実行手段は、
前記個別パラメータが設定される前に、この個別パラメータの管理パラメータに基づいて、当該個別パラメータの記憶に必要なＩＣカードのメモリ量を算出するメモリ量算出手段と、
前記メモリ量算出手段の算出結果に基づいてメモリ領域を確保した後、前記ＩＣカード利用装置から入力される個別パラメータを前記メモリ領域に保持するパラメータ設定手段と
を備えており、
前記メモリ量算出手段は、前記管理パラメータが示す「種類」毎に、当該「種類」に対応するバイト長と、当該「種類」に対応する「個数」とを乗算し、得られた各々の乗算結果及び定数αを互いに加算することにより、前記メモリ量を算出することを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
前記管理パラメータの読出要求が入力されると、前記パラメータ管理手段内の管理パラメータを読出すパラメータ読出手段を備えたことを特徴とするＩＣカード。
【請求項３】
請求項２に記載のＩＣカードを利用して処理を実行するＩＣカード利用装置において、
前記パラメータ読出手段から読出された管理パラメータに基づいて、前記ＩＣカードへのアクセスを行なうカードアクセス手段を備えたことを特徴とするＩＣカード利用装置。
【請求項４】
請求項２に記載のＩＣカードを発行するカード発行用のＩＣカード利用装置において、
前記ＩＣカードを発行する際に、前記プログラム実行手段、前記パラメータ管理手段及び前記パラメータ読出手段の各プログラムを当該発行する前のＩＣカードに書き込む手段と、
前記書き込まれたプログラム実行手段の起動の後、前記発行する前のＩＣカードに個別パラメータを入力する手段と
を備えたことを特徴とするＩＣカード利用装置。
【請求項５】
カード発行の際に個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、前記プログラムを実行するプログラム実行手段を備えたＩＣカードを利用して処理を実行するＩＣカード利用装置であって、
前記個別パラメータを設定する前に、この個別パラメータの種類及び個数を示す管理パラメータに基づいて、当該個別パラメータの記憶に必要なＩＣカードのメモリ量を算出するメモリ量算出手段と、
前記メモリ量算出手段の算出結果を表示し、カード発行者に確認を促す手段と、
前記確認により前記管理パラメータが確定すると、この管理パラメータを前記プログラム内のパラメータ管理手段に設定する手段と、
このパラメータ管理手段内の管理パラメータに基づいて前記メモリ量を算出してこの算出結果に基づいてメモリ領域をＩＣカード内に確保した後に前記ＩＣカード利用装置から入力される個別パラメータを前記メモリ領域に保持可能な前記プログラムに関し、このプログラムを前記ＩＣカードにインストールする手段と、
前記インストールされたプログラムにより前記メモリ領域がＩＣカード内に確保された後、前記個別パラメータを前記ＩＣカードに入力するパラメータ設定手段と
を備えており、
前記メモリ量算出手段は、前記管理パラメータが示す「種類」毎に、当該「種類」に対応するバイト長と、当該「種類」に対応する「個数」とを乗算し、得られた各々の乗算結果及び定数αを互いに加算することにより、前記メモリ量を算出することを特徴とするＩＣカード利用装置。
【請求項６】
請求項５に記載のＩＣカード利用装置において、
前記ＩＣカードは、
前記管理パラメータの読出要求が入力されると、前記パラメータ管理手段内の管理パラメータを読出すパラメータ読出手段を備えたことを特徴とするＩＣカード利用装置。
【請求項７】
請求項６に記載のＩＣカード利用装置において、
前記パラメータ読出手段から読出された管理パラメータに基づいて、前記ＩＣカードへのアクセスを行なうカードアクセス手段を備えたことを特徴とするＩＣカード利用装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、異なる種類のＩＣカードにおいてもプログラムの高い再利用性を実現し得るＩＣカード及びＩＣカード利用装置に関する。
【０００２】
【従来の技術】
近年、金融、流通、通信及び医療等といった様々な分野に関し、データや手続を記憶可能なＩＣチップを搭載し、固有の機能を実行するＩＣカードの開発が進められている。
【０００３】
この種のＩＣカードは、ベンダ毎に異なるカードＯＳにより、内部のプログラムを動作させている。このため、同じ機能のプログラムであっても、他の種類（他の仕様）のＩＣカードに実装するには、新規にプログラムを作成し直す必要がある。
【０００４】
なお、ＩＣカードの種類とは、ＩＣカードの仕様を意味しており、例えば同じＲＳＡ方式のアルゴリズムでもベンダ毎に異なり、同じベンダでも実装する機能の組合せ毎に異なり、また、同じベンダの同じＲＳＡ方式のアルゴリズムでもＩＣカードのバージョン毎に異なっている。
【０００５】
一方、最近、Javaカード（Javaは、米サン・マイクロシステムズ社の商標）の出現により、カードＯＳが共通化されている。このJavaカードでは、共通のカードＯＳにより、原則的にはＩＣカード内のプログラム（アプレット）が他の種類のＩＣカードにも実装可能となっている。
【０００６】
【発明が解決しようとする課題】
しかしながら、以上のようなＩＣカードでは、共通のカードＯＳの場合、内部のプログラムは、原則的には他の種類のＩＣカードに実装可能であるものの、実際にはＩＣカードの種類毎にカスタマイズされる必要がある。
【０００７】
例えば、各種類のＩＣカード間では、種類毎に使用可能なメモリ量が異なるので、同じ機能の鍵管理プログラムを実装する場合であっても、カード内に入る鍵の個数などに違いが生じる。
【０００８】
また、同じ暗号／署名機能のプログラムでも、例えば、ＤＥＳ(Data Encryption Standard)方式のみ実装する場合と、ＤＥＳ方式及びトリプルＤＥＳ方式の両者を実装する場合とでは、サポートするアルゴリズムに違いがある。よって、各種類のＩＣカードは、鍵の個数やサポートするアルゴリズムの違いに応じてプログラムのカスタマイズが必要である。
とは言え、共通のカードＯＳの出現により、プログラム自体はどのＩＣカードにも実装可能なので、カスタマイズは最小限に済ませたい。まとめると、ＩＣカードの分野では、ある種類用のプログラムをカスタマイズして他の種類用のプログラムを作成する場合、カスタマイズ前のプログラムを可能な限り再利用したいという要請がある。
本発明は上記実情を考慮してなされたもので、異なる種類のＩＣカードにおいてもプログラムの高い再利用性を実現し得るＩＣカード及びＩＣカード利用装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
請求項１に対応する発明は、カード発行用のＩＣカード利用装置により発行されたＩＣカードであって、カード発行の際に個別パラメータの種類及び個数を示す管理パラメータが設定されたパラメータ管理手段と、カード発行の際に前記管理パラメータに基づいて個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、前記プログラムを実行するプログラム実行手段を備えており、前記プログラム実行手段としては、前記個別パラメータが設定される前に、この個別パラメータの管理パラメータに基づいて、当該個別パラメータの記憶に必要なＩＣカードのメモリ量を算出するメモリ量算出手段と、前記メモリ量算出手段の算出結果に基づいてメモリ領域を確保した後、前記ＩＣカード利用装置から入力される個別パラメータを前記メモリ領域に保持するパラメータ設定手段とを備えており、前記メモリ量算出手段としては、前記管理パラメータが示す「種類」毎に、当該「種類」に対応するバイト長と、当該「種類」に対応する「個数」とを乗算し、得られた各々の乗算結果及び定数αを互いに加算することにより、前記メモリ量を算出するＩＣカードである。
【００１０】
また、請求項２に対応する発明は、請求項１に対応するＩＣカードにおいて、前記管理パラメータの読出要求が入力されると、前記パラメータ管理手段内の管理パラメータを読出すパラメータ読出手段を備えたＩＣカードである。
【００１１】
さらに、請求項３に対応する発明は、請求項２に対応するＩＣカードを利用して処理を実行するＩＣカード利用装置において、前記パラメータ読出手段から読出された管理パラメータに基づいて、前記ＩＣカードへのアクセスを行なうカードアクセス手段を備えたＩＣカード利用装置である。
【００１２】
さらに、請求項４に対応する発明は、請求項２に対応するＩＣカードを発行するカード発行用のＩＣカード利用装置において、前記ＩＣカードを発行する際に、前記プログラム実行手段、前記パラメータ管理手段及び前記パラメータ読出手段の各プログラムを当該発行する前のＩＣカードに書き込む手段と、前記書き込まれたプログラム実行手段の起動の後、前記発行する前のＩＣカードに個別パラメータを入力する手段とを備えたＩＣカード利用装置である。
また、請求項５に対応する発明は、カード発行の際に個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、前記プログラムを実行するプログラム実行手段を備えたＩＣカードを利用して処理を実行するＩＣカード利用装置であって、前記個別パラメータを設定する前に、この個別パラメータの種類及び個数を示す管理パラメータに基づいて、当該個別パラメータの記憶に必要なＩＣカードのメモリ量を算出するメモリ量算出手段と、前記メモリ量算出手段の算出結果を表示し、カード発行者に確認を促す手段と、前記確認により前記管理パラメータが確定すると、この管理パラメータを前記プログラム内のパラメータ管理手段に設定する手段と、このパラメータ管理手段内の管理パラメータに基づいて前記メモリ量を算出してこの算出結果に基づいてメモリ領域をＩＣカード内に確保した後に前記ＩＣカード利用装置から入力される個別パラメータを前記メモリ領域に保持可能な前記プログラムに関し、このプログラムを前記ＩＣカードにインストールする手段と、前記インストールされたプログラムにより前記メモリ領域がＩＣカード内に確保された後、前記個別パラメータを前記ＩＣカードに入力するパラメータ設定手段とを備えており、前記メモリ量算出手段としては、前記管理パラメータが示す「種類」毎に、当該「種類」に対応するバイト長と、当該「種類」に対応する「個数」とを乗算し、得られた各々の乗算結果及び定数αを互いに加算することにより、前記メモリ量を算出するＩＣカード利用装置である。
請求項６に対応する発明は、請求項５に記載のＩＣカード利用装置において、前記ＩＣカードとしては、前記管理パラメータの読出要求が入力されると、前記パラメータ管理手段内の管理パラメータを読出すパラメータ読出手段を備えたＩＣカード利用装置である。
請求項７に対応する発明は、請求項６に記載のＩＣカード利用装置において、前記パラメータ読出手段から読出された管理パラメータに基づいて、前記ＩＣカードへのアクセスを行なうカードアクセス手段を備えたＩＣカード利用装置である。
【００１４】
（作用）
従って、請求項１，５に対応する発明は以上のような手段を講じたことにより、プログラム実行手段が、個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、プログラムを実行する。
【００１５】
これにより、ある種類のＩＣカードのプログラムを異なる種類のＩＣカードにカスタマイズする際に、アルゴリズムを変更せずに、個別パラメータを変更することにより、カスタマイズを実行できる。すなわち、カスタマイズの際に、プログラムのうち、アルゴリズムの部分を再利用できる。よって、異なる仕様のＩＣカードにおいてもプログラムの高い再利用性を実現させることができる。
また、請求項１，５に対応する発明は、プログラム実行手段におけるメモリ量算出手段が、個別パラメータが設定される前に、この個別パラメータの種類及び個数を示す管理パラメータに基づいて、当該個別パラメータの記憶に必要なＩＣカードのメモリ量を算出し、プログラム実行手段におけるパラメータ設定手段が、メモリ量算出手段の算出結果に基づいてメモリ領域を確保した後、ＩＣカード利用装置から入力される個別パラメータをメモリ領域に保持するので、前述した作用に加え、カスタマイズの際に、必要なメモリ量を検討する作業の効率を向上させることができる。
【００１６】
また、請求項２，６に対応する発明は、パラメータ読出手段が、管理パラメータの読出要求が入力されると、パラメータ管理手段内の管理パラメータを読出すので、請求項１，５に対応する作用に加え、管理パラメータの内容により、外部からカード本体の機能の詳細（鍵管理機能なら鍵の個数など）を容易に知ることができる。
【００１７】
さらに、請求項３，７に対応する発明は、カードアクセス手段が、パラメータ読出手段から読出された管理パラメータに基づいて、ＩＣカードへのアクセスを行なうので、請求項２，６に対応する作用に加え、ＩＣカードにて（管理パラメータの示す）サポートされた機能に対する要求のときのみＩＣカードにアクセスすることにより、無駄なアクセスを無くすことができる。
【００１８】
また、請求項４に対応する発明は、カード発行用のＩＣカード利用装置が、ＩＣカードを発行する際に、プログラム実行手段、パラメータ管理手段及びパラメータ読出手段の各プログラムを当該発行する前のＩＣカードに書き込み、このプログラム実行手段の起動の後、発行する前のＩＣカードに個別パラメータを入力するので、請求項２に対応するＩＣカードを発行することができる。
【００１９】
【発明の実施の形態】
以下、本発明の各実施形態について図面を参照しながら説明する。
（第１の実施形態）
図１は本発明の第１の実施形態に係るＩＣカード及びＩＣカード利用装置の構成を示すブロック図である。このＩＣカード１０は、パラメータ管理部１１、プログラム実行部１２及びパラメータ読出部１３を備えている。
【００２０】
ここで、パラメータ管理部１１は、プログラム実行部１２内の個別パラメータの属性を管理するための管理パラメータが設定されたものであり、その管理パラメータをプログラム実行部１２及びパラメータ読出部１３により読出可能となっている。なお、管理パラメータは、カード外に読出不可の個別パラメータとは異なり、カード外に読出可能な管理用の属性データである。例えば個別パラメータが暗号鍵自体のとき、管理パラメータは、暗号鍵の種類及びその個数（個別パラメータの属性）が適用可能となっている。
【００２１】
プログラム実行部１２は、カード利用の際に、ＩＣカード利用装置２０からの入力内容に基づいて、パラメータ管理部１１を参照して入力内容とプログラムの整合とを確認した後、プログラムを実行してその実行結果をＩＣカード利用装置２０に送出する機能をもっている。
【００２２】
具体的には、プログラム実行部１２は、ある個別パラメータの指示を含むプログラム実行要求を受けたとき、パラメータ管理部１１内の管理パラメータに基づいて、プログラム実行要求の適否を判定し、適と判定したとき、指示された個別パラメータに基づいて、プログラムを実行し、実行結果をＩＣカード利用装置２０に返送する機能をもっている。
【００２３】
なお、実行されるプログラムは、ＩＣカード１０の種類とは無関係のアルゴリズムの部分と、アルゴリズム中で使用される個別パラメータの部分とから構成され、個別パラメータの変更により、アルゴリズム部分を変更せずに、他の種類のＩＣカード２０に転用可能なものである。
【００２４】
パラメータ読出部１３は、ＩＣカード利用装置２０からの要求に基づいて、パラメータ管理部１１内の管理パラメータを読出してＩＣカード利用装置２０に送出する機能をもっている。
【００２５】
一方、ＩＣカード利用装置２０は、図示しないアプリケーションソフトウェア部、カードアクセス部２１及びカードＲ／Ｗ（リーダライタ）部２２を備えている。
【００２６】
ここで、カードアクセス部２１は、アプリケーションソフトウェア部の処理の実行に応じ、カードアクセス要求を受けたとき、ＩＣカードのパラメータ読出部１３を介してパラメータ管理部１１内の管理パラメータを読出す機能と、図２に示すように、この管理パラメータに基づいて、カードアクセス要求の内容がＩＣカード１０にて実行可能か否かを判定する機能と、実行可能なときにはカードＲ／Ｗ部２２を介してＩＣカード１０にアクセスする機能と、実行不可能なときにはエラー通知をアプリケーションソフトウェア部に返送して処理を終了する機能とをもっている。
【００２７】
なお、カードアクセス要求は、ＩＣカード１０へのアクセスを伴う全ての要求を包含する概念であり、ここでは、個別パラメータの指定を含むプログラム実行要求が該当する。
【００２８】
カードＲ／Ｗ部２２は、カードアクセス部２１により制御され、ＩＣカード１０に対して情報を読出／書込可能な装置であり、具体的には周知のＩＣカードリーダライタである。
【００２９】
次に、以上のように構成されたＩＣカード及びＩＣカード利用装置の動作を説明する。
（カード発行時）
まず、カード発行の際に、カード発行者により、管理パラメータが指定される。この管理パラメータは、カード発行用の図示しないＩＣカード利用装置により、パラメータ管理部１１に記述される。また、これらパラメータ管理部１１、プログラム実行部１２及びパラメータ読出部１３の各プログラムは、ＩＣカード利用装置により、ＩＣカード２０に書き込まれる。
【００３０】
その後、起動されたプログラム実行部１２は、パラメータ管理部１１内の管理パラメータ（例、鍵の種類と個数）に基づいて、個別パラメータ（例、鍵）の保持に要するメモリ量を算出し、算出結果に基づいてメモリ領域を確保する。続いて、プログラム実行部１２は、ＩＣカード利用装置から入力される個別パラメータをこのメモリ領域に保持する。また、利用者ＩＤ等の登録の後、ＩＣカード１０が発行される。
【００３１】
（カード利用時）
次に、このＩＣカードを利用する際の動作を図１を用いて述べる。
カード利用の際には、ＩＣカード利用装置２０においては、カードアクセス部２１が、アプリケーションソフトウェア部の処理の実行に応じ、個別パラメータの指定（例、鍵の種類とその種類中の何番目か）を含むプログラム実行要求を受けたとき、ＩＣカード１０のパラメータ読出部１３を介してパラメータ管理部１１内の管理パラメータを読出す。
【００３２】
続いて、カードアクセス部２１は、図２に示したように、この管理パラメータに基づいて、プログラム実行要求の内容がＩＣカード１０にて実行可能か否か（個別パラメータの指定が管理パラメータに適合するか否か）を判定する。
【００３３】
この判定の結果、実行不可能なときにはエラー通知をアプリケーションソフトウェア部に返送して処理を終了するが、ここでは実行可能であるので、カードＲ／Ｗ部２２を介してＩＣカード１０にアクセスする。
【００３４】
ＩＣカード１０においては、このプログラム実行要求を受けると、パラメータ管理部１１内の管理パラメータに基づいて、プログラム実行要求の適否を判定し、適と判定したとき、指示された個別パラメータに基づいて、プログラムを実行すると共に、実行結果をＩＣカード利用装置２０に送出する。
【００３５】
この実行結果は、カードＲ／Ｗ部２２及びカードアクセス部２１を介してアプリケーションソフトウェア部（図示せず）に送出される。これにより、アプリケーションソフトウェア部は、ＩＣカード１０の機能を利用して処理を実行することができる。
【００３６】
上述したように本実施形態によれば、プログラム実行部１２が、個別に設定可能な個別パラメータ及びこの個別パラメータを用いて動作が記述されたアルゴリズムからなるプログラムを有し、個別パラメータの指示を含むプログラム実行要求を受けたとき、この指示された個別パラメータに基づいて、プログラムを実行する。
【００３７】
これにより、ある種類のＩＣカードのプログラムを異なる種類のＩＣカードにカスタマイズする際に、アルゴリズムを変更せずに、個別パラメータを変更することにより、カスタマイズを実行できる。すなわち、カスタマイズの際に、プログラムのうちのアルゴリズムの部分を再利用できるので、最小限の変更作業により、プログラムをカスタマイズできる。よって、異なる仕様のＩＣカードにおいてもプログラムの高い再利用性を実現させることができる。
【００３８】
また、プログラム実行部１２が、個別パラメータが設定されるとき、この個別パラメータの属性に基づいて、当該個別パラメータの記憶に必要なメモリ量を算出し、この算出結果に基づいて、個別パラメータを設定させるので、カスタマイズの際に、必要なメモリ量を検討する作業の効率を向上させることができる。
【００３９】
さらに、個別パラメータの属性を管理するための管理パラメータが設定されたパラメータ管理部１１を設け、パラメータ読出部１３が、管理パラメータの読出要求が入力されると、パラメータ管理部１１内の管理パラメータを読出すので、管理パラメータの内容により、外部からカード本体の機能の詳細（鍵管理機能なら鍵の個数など）を容易に知ることができる。
【００４０】
また、カードアクセス部２１が、パラメータ読出部１３から読出された管理パラメータに基づいて、ＩＣカード１０へのアクセスを行なうので、アプリケーションソフトウェア部からの要求がＩＣカード１０内にサポートされた機能に対応するときのみ、ＩＣカード１０にアクセスすることにより、無駄なアクセスを無くすことができる。
【００４１】
（第２の実施形態）
図３及び図４は本発明の第２の実施形態に係るＩＣカード及びＩＣカード利用装置の構成を示すブロック図であり、同一要素には同一数字を付して重複した説明を省略する。
【００４２】
なお、本実施形態は、第１の実施形態と同様の作用効果をより詳細に述べるものである。
具体的には、カード発行者用のＩＣカード利用装置３０Ａは、カード発行用アプリケーション３１Ａ、カード暗号化機能モジュール３２、Ｒ／Ｗドライバ部３３及びカードＲ／Ｗ部３４を備えている。
【００４３】
また、カード利用者用のＩＣカード利用装置３０Ｂは、前述した構成において、カード発行用アプリケーション３１Ａに代えて、ファイル暗号化用アプリケーション３１Ｂを備えている。
【００４４】
ここで、カード発行用アプリケーション３１Ａは、カード発行者にカード発行のためのユーザインタフェースを提供し、発行者の要求に応じてカード暗号化機能モジュール３２を利用してカード発行手続を実現するものであって、Javaアプリケーションとして実装されている。
【００４５】
具体的には、カード発行用アプリケーション３１Ａは、カード発行用の処理を実行するための上位アプリケーションであり、カード発行者の要求に応じ、暗号化機能モジュール３２の夫々のJavaメソッド（Javaは米サン・マイクロシステムズ社の商標）を呼出すように、Javaメソッド毎に対応するカードアクセス要求（以下、カード命令という）をカード暗号化機能モジュール３２に与える機能をもっている。
【００４６】
なお、カード発行用アプリケーション３１Ａが呼出すJavaメソッドとしては、例えば「鍵の選択」、「鍵のインポート」、「パーソナライズ」の順序の各メソッドがあり、図５〜図８に示すように、夫々「鍵の選択」、「鍵のインポート」、「パーソナライズ」の各カード命令のカード暗号化機能モジュール３２への入力により呼び出され、戻り値のカード発行用アプリケーション３１Ａへの出力により終了する。
【００４７】
また同様に、ファイル暗号化アプリケーション３１Ｂは、利用者にファイル暗号化のためのユーザインタフェースを提供し、利用者の要求に応じて、カード暗号化機能モジュール３２を利用してファイル暗号化機能を実現するものであって、Javaアプリケーションとして実装されている。
【００４８】
具体的には、ファイル暗号化アプリケーション３１Ｂは、ファイル暗号化用の処理を実行するための上位アプリケーションであり、利用者の要求に応じ、暗号化機能モジュール３２の夫々のJavaメソッドを呼び出すように、このJavaメソッド毎に、対応するカード命令をカード暗号化機能モジュール３２に与える機能と、カード暗号化機能モジュール３２から機能実行結果（戻り値）を受けると、所定の処理（例、機能実行結果の保存等）を実行する機能とをもっている。
【００４９】
なお、ファイル暗号化アプリケーション３１Ｂが呼出すJavaメソッドとしては、例えば「鍵の選択」と、その後の「暗号化」又は「復号」との各メソッドがあり、図５、図８及び図９に示すように、夫々「鍵の選択」、「暗号化」、「復号」の各カード命令のカード暗号化機能モジュール３２への入力により呼び出され、戻り値のファイル暗号化アプリケーション３１Ｂへの出力により終了する。
【００５０】
カード暗号化機能モジュール３２は、ＩＣカード４０内の鍵を利用したデータ暗号化機能を提供するモジュールであり、ＩＣカード４０へのコマンド送信を隠蔽し、上位アプリケーションへ直感的なインタフェースを提供するものであって、Javaクラスライブラリとして実装されている。
【００５１】
具体的には、カード暗号化機能モジュール３２は、これら上位のアプリケーション３１Ａ，３１Ｂから受けるカード命令を解釈し、「鍵の選択」、「鍵のインポート」、「パーソナライズ」、「暗号化」、「復号」という５種類のJavaメソッドのいずれかに移行し、図１０〜図１４に示すように、対応するコマンドをＲ／Ｗドライバ部３３及びカードＲ／Ｗ部３４を介してＩＣカード４０に送出する機能と、この送出に応じてＩＣカード４０から受けた機能実行結果（応答）を上位のアプリケーション３１Ａ，３１Ｂに送出し、Javaメソッドから復帰する機能とをもっている。
【００５２】
なお、カード暗号化機能モジュール３２は、カード命令「オプションリスト取得」に対応するJavaメソッドに関しては、ＩＣカード４０への接続を開始したとき、図１５に示すように、最初に自動的にオプションリスト取得コマンドをＲ／Ｗドライバ部３３及びカードＲ／Ｗ部３４を介してＩＣカード４０に送出する機能をもっている。
【００５３】
Ｒ／Ｗドライバ部３３は、カード暗号化機能モジュール３２に制御され、カードＲ／Ｗ部３４を駆動する周知のＩＣカードリーダライタドライバである。例えば、Ｒ／Ｗドライバ部３３は、ＰＣ／ＳＣ用の各カードＲ／Ｗドライバを一括管理するソフトウェア（例、ＰＣ／ＳＣリソースマネージャ）と各カードＲ／Ｗドライバとの組合せとしてもよい。なお、ＰＣ／ＳＣは、Microsoft Windows （Windows は、米マイクロソフト社の商標）上でＩＣカードにアクセスするための仕組みである。
【００５４】
カードＲ／Ｗ部３４は、前述同様に、Ｒ／Ｗドライバ部３３に制御され、ＩＣカード４０内の情報を読出／書込可能な周知のＩＣカードリーダライタであり、例えばFY-1300 （FY-1300 は、（株）東芝の製品の型番）が使用可能となっている。
【００５５】
一方、ＩＣカード４０としては、共通のカードＯＳ４１、受信バッファ４２、送信バッファ４３、暗号化カードアプレット４４、ＤＥＳ暗号装置４５及びトリプルＤＥＳ暗号装置４６を備えており、具体的にはJavaカードＯＳの載ったＩＣカード（Javaカード）であればよく、例えばJMAGIC（JMAGICは、（株）東芝の商標）が使用可能となっている。
【００５６】
カードＯＳ４１は、複数のカードアプレットを個別に実行可能なものであり、具体的にはJavaカードＯＳであって、ここでは、暗号化カードアプレット４４を制御する機能と、ＩＣカード利用装置３０Ａ，３０Ｂから受けたデータを受信バッファ４２に記憶させる機能と、送信バッファ４３内のデータをＩＣカード利用装置３０Ａ，３０Ｂに送信する機能とをもっている。
【００５７】
暗号化カードアプレット４４は、JavaカードＯＳ上で動作するアプリケーションソフトウェアであり、ソースコードがJava言語で記述可能であり、ここでは、パラメータ管理クラス４７と、暗号化／鍵管理アプレットの機能をもった暗号化／鍵管理アプレットクラス４８とから構成される。
【００５８】
パラメータ管理クラス４７は、図１６にソースコードを示すように、カード４０に実装される鍵の種類と個数（管理パラメータ）を保持するものである。なお、この管理パラメータの一覧は、本明細書中「オプションリスト」と呼ばれる。
【００５９】
暗号化／鍵管理アプレットクラス４８は、利用者ＩＤメモリ４８ａ、パーソナライズ状態メモリ４８ｂ及び鍵メモリ４８ｃと、この鍵メモリ４８ｃ内の鍵（個別パラメータ）を用いて動作が記述されたメソッド（アルゴリズム）からなるプログラムであり、鍵の指示を含むプログラム実行要求を受けたとき、この指示された鍵に基づいて、図示しないＣＰＵに実行されることにより、送信バッファ４３及び受信バッファ４１を介してカード外との通信処理を行うものである。
【００６０】
具体的には、暗号化／鍵管理アプレットクラス４８は、図１７に示す如き、アプレットインストール時の初期化処理機能と、ＩＣカード利用装置３０Ａ，３０Ｂから受信バッファ４２に受けた「鍵の選択」コマンド、「鍵のインポート」コマンド、「パーソナライズ」コマンド、「オプションリスト取得」コマンド、「暗号化」コマンド又は「復号」コマンドに個別に応じて図１８〜図２３に示す如き処理を実行し、実行結果を送信バッファ４３に書込むコマンド処理機能とをもっている。
【００６１】
ＤＥＳ暗号装置４５は、暗号化カードアプレット４４により制御され、暗号化カードアプレット４４により与えられたデータに対し、ＤＥＳ方式による暗号化処理又は復号処理を実行し、実行結果を暗号化カードアプレット４４に送出するものである。
【００６２】
トリプルＤＥＳ暗号装置４６は、暗号化カードアプレット４４により制御され、暗号化カードアプレット４４により与えられたデータに対し、トリプルＤＥＳ方式による暗号化処理又は復号処理を実行し、実行結果を暗号化カードアプレット４４に送出するものである。
【００６３】
次に、以上のように構成されたＩＣカード利用装置及びＩＣカードの動作をカード発行時及びカード利用時に分けて説明する。
【００６４】
（カード発行時）
カード発行の際には、カード発行者により、図１に示すＩＣカード利用装置３０Ａが使用され、暗号化カードアプレット４４が個別のＩＣカード用にカスタマイズされた後、ＩＣカード４０にインストールされる。ここでは、ＤＥＳとトリプルＤＥＳとの夫々の鍵の個数がカスタマイズされる場合を例に挙げて説明する。
【００６５】
いま、ＩＣカード利用装置３０Ａにおいては、カード発行用アプリケーション３１Ａが起動され、カスタマイズ対象の暗号化カードアプレット４４が選択済であるとする。
【００６６】
このカード発行用アプリケーション３１Ａは、その実行中、カード発行者の操作により、搭載される鍵の種類とその個数とが指定されると、この指定内容による必要なメモリ量Ｍ［byte］を次の（１）式で算出し、適宜表示させてカード発行者に確認を促す。
【００６７】
Ｍ＝８Ｄ＋１６Ｔ＋α      …（１）
但し、Ｄ：ＤＥＳ鍵の個数、Ｔ：トリプルＤＥＳ鍵の個数、α：定数である。
この必要なメモリ量の算出はカード発行用アプリケーション３１Ａ以外の部分で行っても良い。
【００６８】
指定内容が確定されると、カード発行用アプリケーションの実行により、図１６に示す如き、パラメータ管理クラスの定数（numOfDesKey 及びnumOfDes3Key）の値（各種類の鍵の個数）を変更する。
これにより、暗号化アプレットのカスタマイズが完了する。
【００６９】
次に、ＩＣカード利用装置３０Ａは、カード発行者の操作に基づき、暗号化カードアプレット４４をＩＣカード４０にインストールする。このインストールの際には、各カード毎の専用インストール手順が使用され、図１７に示すように、暗号化カードアプレット４４により、アプレットインストール時の初期化処理が実行される。
【００７０】
すなわち、暗号化カードアプレット４４内の暗号化／鍵管理アプレットクラス４８は、その実行中、利用者ＩＤの保存領域（利用者ＩＤメモリ４８ａ）を確保し（ＳＴ１）、パーソナライズ状態を保存するフラグを宣言してパーソナライズ常態メモリ４８ｂを確保し、フラグを「パーソナライズ前」状態に初期化する（ＳＴ２）。
【００７１】
続いて、鍵の保存に必要なメモリ量を前述の（１）式により算出し、このメモリ量に相当する保存領域（鍵メモリ４８ｃの一部）を確保する（ＳＴ３）。
次に、鍵の種類、鍵メモリ４８ｃ上のオフセット値（鍵オフセット（先頭アドレス））を保存するための領域を確保し（ＳＴ４）、アプレットインストール時の初期化処理を終了する。
【００７２】
次に、カード発行用アプリケーション３１Ａは、カード発行者の操作により、鍵をＩＣカードにインポートするためのインポート処理を実行し、カード暗号化機能モジュールの「鍵の選択」メソッド及び「鍵のインポート」メソッドを呼出すように、「鍵の選択」及び「鍵のインポート」の各カード命令を順次、カード暗号化機能モジュールに送出する。
【００７３】
カード暗号化機能モジュール３２は、「鍵の選択」のカード命令を受けると、「鍵の選択」コマンドをＩＣカード４０向けに送出する。次に、カード暗号化機能モジュール３２は、「鍵のインポート」カード命令を受けると、「鍵のインポート」コマンドをＩＣカード４０向けに送出する。これら「鍵の選択」コマンド及び「鍵のインポート」コマンドは、Ｒ／Ｗドライバ部３３及びカードＲ／Ｗ部３４を介してＩＣカード４０の受信バッファ４２に保存される。
【００７４】
ＩＣカード４０の暗号化カードアプレット４４は、受信バッファ４２内の「鍵の選択」コマンドに基づき、図１８に示すように、パラメータ管理クラス４７の定数（numOfDesKey 及びnumOfDes3Key）を参照しつつ、指定された種類と何番目の鍵かを示す鍵番号とが利用可能か否かを判定し（ＳＴ１１）、利用不可能なときには処理を終了するが、利用可能なときには、指定内容に基づいて、対応する鍵メモリ４８ｃのオフセットを算出して保存する（ＳＴ１２）。
【００７５】
例えば、ＤＥＳ方式の１番の鍵の場合、ＤＥＳの鍵の先頭のオフセット（先頭アドレス）が得られる。また、ＤＥＳの３番の鍵の場合、先頭のオフセット＋ＤＥＳ鍵の所定バイト長×３（番目の鍵）として、鍵オフセットが算出される。なお、鍵の所定バイト長は、ＤＥＳ鍵は８バイトであり、トリプルＤＥＳ鍵は１６バイトである。
【００７６】
また、ステップＳＴ１２の後、暗号化／鍵管理アプレットクラス４８は、指定された鍵の種類を保存する（ＳＴ１３）。
【００７７】
次に、暗号化カードアプレット４４は、受信バッファ４２内の「鍵のインポート」コマンドに基づき、図１９に示すように、パーソナライズ状態メモリ４８ｂのフラグを参照してパーソナライズ前か否（後）かを判定し（ＳＴ２１）、否のときには処理を終了するが、パーソナライズ前のときには、受信バッファ４２内のデータを鍵の種類に対応するバイト長分だけ、鍵メモリ４８ｃ内の鍵オフセットからの領域にコピーする（ＳＴ２２）。
【００７８】
なお、鍵のインポート処理は、指定された鍵の種類とその個数に対応した回数だけ、「鍵の選択」及び「鍵のインポート」の各メソッドが繰り返し呼び出されて実行される。
【００７９】
次に、カード発行用アプリケーション３１Ａは、カード発行者の操作により、利用者ＩＤを用いてＩＣカード４０をパーソナライズ（個人化）するためのパーソナライズ処理を実行し、カード暗号化機能モジュール３２の「パーソナライズ」メソッドを呼出すように、「パーソナライズ」のカード命令をカード暗号化機能モジュール３２に送出する。
【００８０】
カード暗号化機能モジュール３２は、「パーソナライズ」のカード命令を受けると、「パーソナライズ」コマンドをＩＣカード４０向けに送出する。「パーソナライズ」コマンドは、Ｒ／Ｗドライバ部３３及びカードＲ／Ｗ部３４を介してＩＣカード４０の受信バッファ４３に保存される。
【００８１】
ＩＣカード４０の暗号化カードアプレット３３は、受信バッファ４３内の「パーソナライズ」コマンドに基づき、図２０に示すように、受信バッファ４３内のデータを８バイト分だけ利用者ＩＤメモリ４８ａにコピーし（ＳＴ３１）、パーソナライズ状態メモリ４８ｂのフラグを“パーソナライズ後”に設定する（ＳＴ３２）。
【００８２】
ここでは、利用者ＩＤにより、ＩＣカード４０がパーソナライズされると共に、“パーソナライズ後”のパーソナライズ状態フラグにより、以後の鍵のインポートが不可となる。
【００８３】
これにより、ＩＣカード４０のパーソナライズ処理が完了し、ＩＣカード４０の発行が完了する。発行されたＩＣカード４０は、手渡し又は郵送等により、利用者に配布される。
（カード利用時）
カードを利用する際には、利用者により、図２に示すＩＣカード利用装置３０Ｂが使用され、ファイルが暗号化又は復号される。その際、暗号化／復号のための鍵は選択可能となっている。
【００８４】
いま、ＩＣカード利用装置３０Ｂにおいては、ファイル暗号化アプリケーション３１Ｂが起動されており、利用者のＩＣカード４０がカードＲ／Ｗ部３４に保持されたとする。このＩＣカード４０への接続を開始したとき、カード暗号化機能モジュール３２は、最初に自動的に「オプションリスト取得」コマンドをＩＣカード４０向けに送出する。
【００８５】
ＩＣカード４０の暗号化／鍵管理アプレットクラス４８は、受信バッファ４３内の「オプションリスト取得」コマンドに基づき、図２１に示すように、オプションリスト取得メソッドを呼び出してパラメータ管理クラス４７の定数（ＤＥＳ鍵の個数、トリプルＤＥＳ鍵の個数）の一覧をオプションリストとして送信バッファ４３に保存し（ＳＴ４１）、オプションリスト取得メソッドから復帰する。
【００８６】
送信バッファ４３内のオプションリストは、カードＯＳ４１により、ＩＣカード利用装置３０Ｂに送出され、カードＲ／Ｗ部３４及びＲ／Ｗドライバ部３３を介してカード暗号化機能モジュール３２に送出される。
【００８７】
次に、前述同様に鍵が選択される。ファイル暗号化アプリケーション３１Ｂは、利用者の操作により、指定された鍵の種類及び番号に基づいて、鍵の選択処理を実行し、「鍵の選択」メソッドを呼出すための「鍵の選択」のカード命令をカード暗号化機能モジュール３２に送出する。
【００８８】
カード暗号化機能モジュールは、「鍵の選択」のカード命令を受けると、カード命令中に指定された鍵がＩＣカード４０内で使用か否かをオプションリストにより判定し、使用可能なときのみ、前述同様に、「鍵の選択」コマンドをＩＣカード４０向けに送出する。
【００８９】
ＩＣカード４０の暗号化／鍵管理アプレットクラス４８は、受信バッファ４２内の「鍵の選択」コマンドに基づき、前述した図１８に示すように、パラメータ管理クラス４７の定数を確認し（ＳＴ１１）、指定内容に基づいて、対応する鍵メモリ４８ｃのオフセットを保存し（ＳＴ１２）、鍵の種類を保存する（ＳＴ１３）。
【００９０】
次に、ファイル暗号化アプリケーション３１Ｂは、利用者の操作により、データｍを暗号化するための暗号化処理を実行し、カード暗号化機能モジュール３２の「暗号化」メソッドを呼出すように、「暗号化」のカード命令をカード暗号化機能モジュール３２に送出する。
【００９１】
カード暗号化機能モジュール３２は、「暗号化」のカード命令を受けると、「暗号化」コマンドをＩＣカード４０向けに送出する。
【００９２】
ＩＣカード４０の暗号化／鍵管理アプレットクラス４８は、受信バッファ４２内の「暗号化」コマンドに基づき、図２２に示すように、保存された鍵の種類に従ってＤＥＳ暗号装置４５又はトリプルＤＥＳ暗号装置４６を選択する（ＳＴ５１）。
【００９３】
また、暗号化／鍵管理アプレットクラス４８は、選択した例えばＤＥＳ暗号装置４５を暗号化用に初期化すると共に、引数として、鍵メモリ４８ｃ内の鍵オフセットをＤＥＳ暗号装置４５に与える（ＳＴ５２）。これにより、ＤＥＳ暗号装置４５は、鍵メモリ４８ｃ内の鍵を使用した暗号処理を実行可能となる。
【００９４】
また、暗号化／鍵管理アプレットクラス４８は、受信バッファ４２内のデータｍをＤＥＳ暗号装置４５に与え、しかる後、ＤＥＳ暗号装置４５による暗号化結果を送信バッファ４３に記憶させ（ＳＴ５３）、処理を終了する。
この暗号化結果は、カードＯＳ４１によりＩＣカード利用装置３０Ｂに送出され、カードＲ／Ｗ部３４及びドライバＲ／Ｗ部３３を介してカード暗号化機能モジュール３２に与えられ、カード暗号化機能モジュール３２からファイル暗号化アプリケーション３１Ｂに出力される。
【００９５】
これにより、暗号化処理が完了する。
次に、復号処理について説明する。なお、ＤＥＳ暗号装置４５において、暗号化と復号とは、基本的には同じ変換処理である。
このため、ＩＣカード利用装置３０Ｂにおける復号処理は、上述した暗号化処理において、暗号化対象のデータｍに代えて、復号対象のデータｃを用い、「暗号化」メソッドに代えて、「復号」メソッドを用い、「暗号化」のカード命令及び「暗号化」のコマンドに代えて、「復号」のカード命令及び「復号」のコマンドが使用されたものと同じである。また、鍵の指定内容は、暗号化処理のときと同じである（例示したＤＥＳが共通鍵方式なので）。
【００９６】
すなわち、ＩＣカード利用装置３０Ｂ及びＩＣカード４０では、利用者の復号要求により、前述した暗号化処理と同様に、図１８及び図２３に示すように、データｃに対する復号処理が実行される。
【００９７】
上述したように本実施形態によれば、第１の実施形態の効果に加え、以下のような効果を得ることができる。
【００９８】
例えば、上位のアプリケーション３１Ａ，３１ＢがJavaのメソッドを呼出すだけでＩＣカード４０にアクセスできるので、アクセスの容易性を向上させることができる。
【００９９】
また前述同様に、ＩＣカード４０のプログラムをカスタマイズする際に、暗号化／鍵管理アプレットクラス４８を全く変更せずに済むので、プログラムの高い再利用性を実現できる。
【０１００】
さらに、パラメータ管理クラス４７の定数の変更がオプションリストに反映されるので、カード発行者及びＩＣカード利用装置３０Ａは、オプションリストのフォーマットを知る必要がなく、容易にカスタマイズを行なうことができる。また、パラメータ管理クラス４７の定数を変更する際に、必要なメモリ量がすぐ算出されるので、明確な指針の下でプログラムを変更することができる。
【０１０１】
これらに加え、カード暗号化機能モジュール３２が使用するコマンドのみをサポートするように暗号化／鍵管理アプレットクラス４８を作成することにより、他のコマンドに対応するプログラムの分だけ、ＩＣカード４０のメモリ量やプログラム開発量をより低減させることができる。
【０１０２】
また、このように必要なコマンドのみをサポートする構成により、ＩＣカード４０とＩＣカード利用装置３０Ａ，３０Ｂとからなるシステム全体としての構成を容易にし、保守性を向上させることができる。
【０１０３】
なお、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【０１０４】
【発明の効果】
以上説明したように本発明によれば、異なる種類のＩＣカードにおいてもプログラムの高い再利用性を実現できるＩＣカード及びＩＣカード利用装置を提供できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るＩＣカード及びＩＣカード利用装置の構成を示すブロック図
【図２】同実施形態におけるカードアクセス部の機能を説明するための模式図
【図３】本発明の第２の実施形態に係るＩＣカード及びＩＣカード利用装置の構成を示すブロック図
【図４】同実施形態におけるＩＣカード及びＩＣカード利用装置の構成を示すブロック図
【図５】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図６】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図７】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図８】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図９】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図１０】同実施形態におけるカード命令とその戻り値を説明するための模式図
【図１１】同実施形態におけるコマンドとその応答を説明するための模式図
【図１２】同実施形態におけるコマンドとその応答を説明するための模式図
【図１３】同実施形態におけるコマンドとその応答を説明するための模式図
【図１４】同実施形態におけるコマンドとその応答を説明するための模式図
【図１５】同実施形態におけるコマンドとその応答を説明するための模式図
【図１６】同実施形態におけるパラメータ管理クラスを説明するための模式図
【図１７】同実施形態におけるアプレットインストール時の初期化処理を説明するためのフローチャート
【図１８】同実施形態における鍵の選択処理を説明するためのフローチャート
【図１９】同実施形態における鍵のインポート処理を説明するためのフローチャート
【図２０】同実施形態におけるパーソナライズ処理を説明するためのフローチャート
【図２１】同実施形態におけるオプションリスト取得処理を説明するためのフローチャート
【図２２】同実施形態における暗号化処理を説明するためのフローチャート
【図２３】同実施形態における復号処理を説明するためのフローチャート
【符号の説明】
１０，４０…ＩＣカード
１１…パラメータ管理部
１２…プログラム実行部
１３…パラメータ読出部
２０，３０Ａ，３０Ｂ…ＩＣカード利用装置
２１…カードアクセス部
２２，３４…カードＲ／Ｗ部
３１Ａ…カード発行用アプリケーション
３１Ｂ…ファイル暗号化用アプリケーション
３２…カード暗号化機能モジュール
３３…Ｒ／Ｗドライバ部
４１…共通のカードＯＳ
４２…受信バッファ
４３…送信バッファ
４４…暗号化カードアプレット
４５…ＤＥＳ暗号装置
４６…トリプルＤＥＳ暗号装置
４７…パラメータ管理クラス
４８…暗号化／鍵管理アプレットクラス
４８ａ…利用者ＩＤメモリ
４８ｂ…パーソナライズ状態メモリ
４８ｃ…鍵メモリ
【図１】
0003788886.tif 000002
【図２】
0003788886.tif 000003
【図３】
0003788886.tif 000004
【図４】
0003788886.tif 000005
【図５】
0003788886.tif 000006
【図６】
0003788886.tif 000007
【図７】
0003788886.tif 000008
【図８】
0003788886.tif 000009
【図９】
0003788886.tif 000010
【図１０】
0003788886.tif 000011
【図１１】
0003788886.tif 000012
【図１２】
0003788886.tif 000013
【図１３】
0003788886.tif 000014
【図１４】
0003788886.tif 000015
【図１５】
0003788886.tif 000016
【図１６】
0003788886.tif 000017
【図１７】
0003788886.tif 000018
【図１８】
0003788886.tif 000019
【図１９】
0003788886.tif 000020
【図２０】
0003788886.tif 000021
【図２１】
0003788886.tif 000022
【図２２】
0003788886.tif 000023
【図２３】
0003788886.tif 000024