(57)【要約】【課題】一つのカード内プログラムによって、複数の異なるフォーマットの公開鍵証明書を処理できるＩＣカードを提供する。【解決手段】図１は、本発明のＩＣカードの機能ブロック図である。図中のＩＣカード１は通信処理部２、公開鍵証明書通知コマンド処理部５、及びタグリストを記憶した記憶部１２等から構成されている。通信処理部２が、外部から送信されてきた公開鍵証明書通知コマンドから公開鍵証明書を抽出した後、公開鍵証明書通知コマンド処理部５が、タグリストを用いて公開鍵証明書の検証を行う。運用するシステムが変わった場合には、タグリストを書き換える事により、一つのカード内プログラムによって、異なるフォーマットの公開鍵証明書の検証が行えるようにした。【選択図】  図１
2004259176.tif 000002
【特許請求の範囲】
【請求項１】
公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、
有効な公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断することを特徴とするＩＣカード。
【請求項２】
前記公開鍵証明書に含まれる各情報は、情報の種別を示すタグ情報と当該各情報の長さを示す長さ情報と当該各情報の値とからなる組の並びで表わされ、
前記フォーマット情報は、有効な公開鍵証明書に含まれる各情報の種別を示すタグ情報の並びからなり、
前記ＩＣカードは更に、
前記取得された公開鍵証明書において所定の種別の情報の値が格納された領域を、前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報と長さ情報とに基づいて特定し、前記特定された領域から情報の値を抽出する情報抽出手段と、
前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報とを比較する比較手段と、
前記フォーマット情報に含まれる各タグ情報と一致するタグ情報が、前記取得された公開鍵証明書に含まれている場合に、前記取得された公開鍵証明書が有効であると判断する判断手段とを備えることを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記ＩＣカードは更に、情報の並びが異なる新たな公開鍵証明書の取得に先立って、前記フォーマット情報を当該新たな公開鍵証明書に含まれる各情報の種別、及び並び順を示す新たなフォーマット情報で更新するフォーマット情報更新手段を備えることを特徴とする請求項２に記載のＩＣカード。
【請求項４】
前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、
前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の個数と、前記フォーマット情報に含まれるタグ情報の個数とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断することを特徴とする請求項２に記載のＩＣカード。
【請求項５】
前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、
前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の並び順と、前記フォーマット情報に含まれるタグ情報の並び順とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断することを特徴とする請求項２に記載のＩＣカード。
【請求項６】
公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、
有効な公開鍵証明書に含まれる各情報の種別と長さ、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断することを特徴とするＩＣカード。
【請求項７】
前記公開鍵証明書に含まれる各情報は、情報の種別を示すタグ情報と当該各情報の値とからなる組の並びで表され、
前記フォーマット情報は、有効な公開鍵証明書に含まれる各情報の種別を示すタグ情報と、当該各情報の長さを示す長さ情報とからなる組の並びであり、
前記ＩＣカードは更に、
前記取得された公開鍵証明書において所定の種別の情報の値が格納された領域を、前記フォーマット情報に含まれるタグ情報と長さ情報、及び前記取得された公開鍵証明書に含まれるタグ情報とに基づいて特定し、前記特定された領域から情報の値を抽出する情報抽出手段と、
前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報とを比較する比較手段と、
前記取得された公開鍵証明書に含まれる各タグ情報と一致するタグ情報が、前記フォーマット情報に含まれている場合に、前記取得された公開鍵証明書が有効であると判断する判断手段とを備えることを特徴とする請求項６に記載のＩＣカード。
【請求項８】
前記ＩＣカードは更に、情報の並びが異なる新たな公開鍵証明書の取得に先立って、前記フォーマット情報を当該新たな公開鍵証明書に含まれる各情報の種別と長さ、及び並び順を示す新たなフォーマット情報で更新するフォーマット情報更新手段を備えることを特徴とする請求項７に記載のＩＣカード。
【請求項９】
前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、
前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の個数と、前記フォーマット情報に含まれるタグ情報の個数とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断することを特徴とする請求項７に記載のＩＣカード。
【請求項１０】
前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、
前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の並び順と、前記フォーマット情報に含まれるタグ情報の並び順とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断することを特徴とする請求項７に記載のＩＣカード。
【請求項１１】
ＩＣカードにおいて実行される情報処理方法であって、
公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、
前記公開鍵証明書を取得する公開鍵証明書取得ステップを含み、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断することを特徴とする情報処理方法。
【請求項１２】
コンピュータで実行可能なプログラムであって、
公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、
前記公開鍵証明書を取得する公開鍵証明書取得ステップをコンピュータに実行させ、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、公開鍵証明書の認証を行うＩＣカードに関する。
【０００２】
【従来の技術】
近年、テレホンカード、クレジットカードなどの偽造や不正利用がなされる事による深刻な被害が拡大する一方で、高度なセキュリティ機能を有するＩＣカードが注目され、実用化されている。ＩＣカードは従来のカードと異なり、カード内部にＩＣチップを有するのが大きな特徴で、ＣＰＵやメモリなどを搭載して演算を行い、カード内部に保持しているデータや、外部装置との通信データを暗号化する事により、データを自ら保護し秘匿する事ができる。
【０００３】
この暗号化に公開鍵暗号方式を利用し、相手に送るデータを暗号化して送信する為には、事前に相手の公開鍵を入手する必要があるが、その為に公開鍵証明書が用いられる。公開鍵証明書は、相手の公開鍵を含んだ電子的な封筒であると同時に、入手された公開鍵の正当性を検証するための電子署名を含んだ証明書である。
【０００４】
公開鍵証明書の標準化されたフォーマットは、ＩＴＵ−Ｔの推奨規格である「Ｘ５０９」に規定されている。「Ｘ５０９」は、ＩＳＯ／ＩＥＣにおいても国際標準として規定されており、ＩＳＯ／ＩＥＣ９５９４−８として登録されている。
一方、その記述法は、データ構造を定義する言語の１つである、ＡＳＮ．１（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ）に従い、識別子（タグ）、データ長、値の順でフィールドが並べられる。各データ構造は、ネストすることが可能であり、その場合には更に、値のフィールドに識別子（タグ）、データ長、値のフィールドが入る。
【０００５】
上記識別子の事をタグと呼ぶが、タグのフィールドに格納される情報としては、バージョン、シリアル番号、証明書発行者名、署名アルゴリズム、公開鍵、署名、・・・等がある。これらの公開鍵証明書を構成する情報の種別を表わす名称を、本明細書では、タグ情報と呼ぶ。なお、下記の非特許文献１に、「Ｘ５０９」に規定されたタグ情報の一覧表が掲載されている。
【０００６】
「Ｘ５０９」は様々なシステムとの親和性を考慮した汎用性の高いフォーマットであり、非常に多くの項目（タグ情報）を含んでいるために、ＣＰＵパワーが乏しく、またメモリ容量も少ないＩＣカードで処理すると、過大な負荷を生じる。この為、ＩＣカードに適用する場合には、「Ｘ５０９」から必要な項目（タグ情報）のみを抜粋して得られる、より簡潔かつシステム独自なフォーマットの公開鍵証明書が用いられる。
【０００７】
このように、Ｘ５０９に準拠せずに、システム独自に公開鍵証明書のフォーマットを定めた場合には、システムごとに異なるフォーマットが採用されるため、これを処理するプログラムも、システムごとに個別にならざるを得ない。
従来、複数のシステムとして、例えばシステムＡ、システムＢ、システムＣ、・・・に対応する図１２に示すようなＩＣカード７１では、公開鍵証明書の各フォーマット（フォーマットＡ、フォーマットＢ、フォーマットＣ、・・・）に個別に対応する、専用のプログラム（フォーマットＡ用抽出モジュール７７、フォーマットＢ用抽出モジュール７８、フォーマットＣ用抽出モジュール７９、・・・）を、予めＩＣカード内部にフォーマットの数だけ、複数本記憶している。また、その時点で運用しているシステムを指定する情報を、書き換え可能な領域である、運用中フォーマット識別コード記憶部８４に記憶しており、運用するシステムが変わる際には、この情報を書き換える事により、公開鍵証明書の各フォーマットに対応する、複数の専用プログラム（抽出モジュール）を切り替えている。
【０００８】
【非特許文献１】
「ＰＫＩハンドブック」小松文子他著、株式会社ソフト・リサーチ・センター、２０００年１１月２５日、初版、Ｐ３７〜Ｐ６８。
【０００９】
【発明が解決しようとする課題】
しかしながら、この多数のプログラムが、ＩＣカードの限られたメモリ容量を圧迫するという問題を生じている。それによってＩＣカードの、他のアプリケーションを収容する為に必要な空き容量が減少する事により、カード内に格納する事のできるアプリケーションの規模や個数に制限を受ける。即ち、他のアプリケーションを格納する為の領域が、上記各フォーマット用の抽出モジュールによって占有されると、それらのアプリケーションによって実現される機能が欠ける事になるが、これはＩＣカードの各種サービス能力の低下に直接つながる。
【００１０】
本発明は、このような問題点に鑑みてなされたものであり、一つのカード内プログラムによって、限られたメモリ容量の圧迫を緩和すると共に、複数の異なるフォーマットの公開鍵証明書を検証する事のできるＩＣカードを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明のＩＣカードは、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、有効な公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断することを特徴とする。
【００１２】
上記目的を達成するため、本発明のＩＣカードは、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、有効な公開鍵証明書に含まれる各情報の種別と長さ、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断することを特徴とする。
【００１３】
上記目的を達成するため、本発明のＩＣカードは、ＩＣカードにおいて実行される情報処理方法であって、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、前記公開鍵証明書を取得する公開鍵証明書取得ステップを含み、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断してもよい。
【００１４】
上記目的を達成するため、本発明のＩＣカードは、コンピュータで実行可能なプログラムであって、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、前記公開鍵証明書を取得する公開鍵証明書取得ステップをコンピュータに実行させ、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断してもよい。
【００１５】
【発明の実施の形態】
以下、図面を参照して、本発明によるＩＣカードの実施の形態について説明する。
なお、本発明のＩＣカードにおいて、特許請求の範囲の項で使用した用語「フォーマット情報」に対応するものは、「タグリスト」である。従ってこれ以降、２つの用語「フォーマット情報」、及び「タグリスト」を同義語として用い、適宜使い分ける。
【００１６】
（実施の形態１）図１は、本発明に係るＩＣカードの機能ブロック図である。図１に示すＩＣカード１は通信処理部２、コマンド実行処理部４、公開鍵証明書通知コマンド処理部５、タグリスト更新コマンド処理部９、制御部１１、及び記憶部１２から構成されている。
通信処理部２は、公開鍵証明書取得部３から構成されている。公開鍵証明書通知コマンド処理部５は、情報抽出部６、比較部７、及び判断部８から構成されている。タグリスト更新コマンド処理部９は、タグリスト更新部１０から構成されている。コマンド実行処理部４は、公開鍵証明書通知コマンドやタグリスト更新コマンド以外の、他のコマンドを受付けて処理を行う。制御部１１は、上記各処理部や記憶部１２に対して、総括的な制御を行う部分である。
【００１７】
記憶部１２は、タグリスト記憶部１３、指定情報記憶部１４、及び認証局公開鍵記憶部１５から構成され、具体的には、書き換え可能な不揮発性メモリを用いて実現される。タグリストは、タグリスト記憶部１３に記憶されており、指定情報は指定情報記憶部１４に、また認証局の公開鍵は認証局公開鍵記憶部１５にそれぞれ記憶されている。
【００１８】
コマンド実行処理部４やタグリスト更新コマンド処理部９等の各処理部、及び制御部１１、記憶部１２は、物理的にはプロセッサ、プログラムを書き換え不可能な状態で記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、作業用のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のハードウェアを用いて実現される。前記各部の機能は、プロセッサがＲＯＭに記憶されているプログラムを実行することによって実現される。前記各部の間での情報の受け渡しはＲＡＭを介して行う。このように、ＩＣカード１は、図外のＩＣカード端末との間で、コマンド情報、及びレスポンス情報の送受信を行う、リーダ／ライタ機能を有するコンピュータ装置である。
【００１９】
前記コマンド情報は、図２に示す様に、コマンドコード２１とコマンドパラメータ２２からなる。コマンドコード２１は、当該コマンドの種別を識別するためのコマンド名であり、またコマンドパラメータ２２は、当該コマンドの内容を指定するための引数である。なお、レスポンス情報の場合には、上記の「コマンド」を、「レスポンス」に読み替える。
【００２０】
前記コマンド情報の１つに、公開鍵証明書通知コマンドがある。公開鍵証明書通知コマンドは、図２に示す構成図において、コマンドパラメータの部分が、公開鍵証明書になっている。
本実施の形態に用いる公開鍵証明書は、図３に示すような構成になっており、タグ情報Ｔｉ、及び情報の値Ｖｉで構成される組（Ｔｉ、Ｖｉ）の並びで構成され（但し、ｉは公開鍵証明書中における情報の組の順番を指定する添字で、情報の組の個数をｍとすると、ｉ＝１，２，・・・，ｍ）、各情報はバイナリデータとして表現されている。タグ情報Ｔｉは、Ｔｉで指定される情報の種別を示すデータであり、タグリスト中のタグ情報ｔｊ（但し、ｊはタグリスト中におけるタグ情報の順番を指定する添字で、タグ情報の個数をｎとすると、ｊ＝１，２，・・・，ｎ）と照合を行う。更に、指定情報記憶部１４に格納された指定情報により指定された場合には、公開鍵証明書中に含まれるタグ情報  Ｔｉ  （ｉ＝１，２，・・・，ｍ）の照合処理が終了した後、それら全体の個数や並び順について、タグリストのタグ情報ｔｊ  （ｊ＝１，２，・・・，ｎ）と比較を行う。値Ｖｉは、タグ情報Ｔｉで指定される情報の値である。
【００２１】
一例として、公開鍵証明書はタグ情報Ｔｉで指定される情報が、ＩＣカード端末識別番号、有効期限、公開鍵、及び署名等からなるデータの組（Ｔｉ、Ｖｉ）の並びで構成される。ここでＩＣカード端末識別番号は、ＩＣカード端末ごとにユニークな番号であり、ＩＣカードの記憶部に記憶されている認証局の公開鍵と、一対一に対応している。有効期限は認証局の公開鍵の有効期限であり、また署名は、端末識別番号、有効期限、及び認証局の公開鍵に対する、認証局のデジタル署名である。
【００２２】
また、本実施の形態に用いるタグリストは、図４に示すように、タグ情報ｔｊ、及び長さ情報ｌｊで構成される組の並びであり（但し、ｊはタグリスト中における情報の組の順番を指定する添字で、情報の組の個数をｎとすると、ｊ＝１，２，・・・，ｎ）、各情報はバイナリデータとして表現されている。タグ情報ｔｊは、ｔｊで指定される情報の種別を示すデータであり、情報の種類ごとにユニークな値を持つ。長さ情報ｌｊは、タグ情報ｔｊで指定される情報の長さを表す。長さ情報は、具体的には、その情報が格納される領域のバイト数である。
【００２３】
なお、上記のタグリストは、公開鍵証明書検証プログラムの実行に際して読み込まれるバイナリデータの並びである。従ってプログラムの側からすると、タグリストは実行を制御するための設定パラメータの集合であり、その内容がどの様なものであっても、タグリストを読み込んだプログラム自身が変化する事はない。従って、タグリスト自体は書き換え可能であっても、第３者がこれを書き換える事によって、検証プログラムの実行時に、不正を目的としたサブルーチンを割り込ませ、実行させることは不可能であり、その意味で不正なプログラムの介入を防ぎ、内部データに対する不正アクセスを防止するといった、セキュリティ面での安全性が確保されている。但し勿論、その為には、公開鍵証明書の検証を行うプログラムは、追加・変更等の書き換えが禁止されている事に加えて、タグリストから読み込まれるデータがどの様なものであっても、異常な動作や暴走などを起こす事が無いよう、読み込んだデータが正常でない場合のエラー対策については、予め十分な配慮がなされている必要がある事は、言うまでもない。
【００２４】
本実施の形態では、予めＩＣカード内に記憶されたタグリストを用いて、ＩＣカード端末から送られて来た公開鍵証明書の検証を行う。公開鍵証明書に含まれる各タグ情報と一致するタグ情報が、タグリスト中に含まれている事を、前記公開鍵証明書に含まれる全てのタグ情報について確認する事により、前記公開鍵証明書の正当性の検証を行う。
【００２５】
本実施の形態に用いる公開鍵証明書は、独自のフォーマットを使用するため、これを構成するタグ情報の種類や並び順は、対応するシステムによってその都度異なる。その為システムが変わった場合には、タグ情報の並びも変わる為、タグリストの更新処理が必要となる。
本実施の形態に用いる公開鍵証明書やタグリストに含まれるタグ情報は、Ｘ５０９において規定されたフィールド名である、バージョン、シリアル番号、証明書発行者名、署名アルゴリズム、公開鍵、及び署名等の中から、システムに応じて必要なものを選択したものであり、Ｘ５０９からの抜粋である。一方、各タグ情報に対応するバイナリ・データ（以下、タグコードという）もまた、Ｘ５０９に則って割り当てる。
【００２６】
更に、必要に応じてシステム独自のタグ情報を定義し、使用する事も可能である。その場合、対応するタグコードは、システムが使用する他のタグコードや、Ｘ５０９に規定されたタグコード等と重複する事がないように定める。
このようにシステム独自のフォーマットの公開鍵証明書を使用するため、システムにとって最低限必要な種類のタグ情報のみを含んだ、小型かつ軽量な公開鍵証明書を用いる事が出来るという長所がある反面、他のシステムとの互換性が取れなくなるという短所も、当然存在する。つまり対応するシステムが変わった場合、公開鍵証明書を構成するタグ情報の並びが変わる為、タグリストを更新する事なしに新しいシステムの公開鍵証明書を認証する事は、一般にできない。但し、公開鍵証明書を検証する際に、タグ情報の個数や並び順の一致のチェックを行わず、更にタグリストに含まれるタグ情報を追加、もしくは削除する事により、複数の異なるシステムにも対応できるようになるが、それについては後述する。
【００２７】
以下、図７及び図８を参照して、本実施の形態のＩＣカードが行う公開鍵証明書の検証処理シーケンスについて説明する。図７はＩＣカードが、ＩＣカード端末から送られて来た公開鍵証明書通知コマンドを受信した後、予めカード内部に記憶されているタグリストに基づいて、受け取った公開鍵証明書の検証処理を行う処理シーケンスを示したフローチャートであり、また図８は、図７で行った公開鍵証明書の検証処理に続き、指定情報に基づくタグ情報の個数、及び並び順のチェックと、それに続く相手の公開鍵の検証処理を行い、その結果により検証の成功、もしくは失敗を表すレスポンス情報を返信するまでの間の処理シーケンスを示したフローチャートである。
【００２８】
まず最初に、ＩＣカード１の通信処理部２は、図外のＩＣカード端末から、公開鍵証明書通知コマンドを受信し（Ｓ１００）、公開鍵証明書取得部３がコマンドパラメータ部から公開鍵証明書を抽出する。
次に、情報抽出部６がタグリスト記憶部１３からタグリストを読み出す（Ｓ１０１）。タグリストは、正当な公開鍵証明書に含まれるタグ情報ｔｊ、及び長さ情報ｌｊからなる組（ｔｊ、ｌｊ）の並びであり、比較部７はこれを用いて、公開鍵証明書取得部３により取得された公開鍵証明書に含まれるタグ情報Ｔｉと情報の値Ｖｉの組（Ｔｉ、Ｖｉ）の並びを、以下に述べる手順で、順番に照合して行く。
【００２９】
タグ情報Ｔｉ、ｔｊ、及び長さ情報ｌｊのデータ領域の長さ（以下、サイズと言う）は固定であり、例えばタグ情報のサイズは２バイト、長さ情報のサイズは１バイトという様に、予め分かっているものとする。一方、情報の値Ｖｉは、タグ情報Ｔｉの種別ごとにサイズが変化するが、そのサイズは、Ｔｉと一致するｔｊに後続する長さ情報ｌｊで示される。
【００３０】
まず、情報抽出部６は、公開鍵証明書中における情報の組の順番を指定する添字ｉに、ｉ＝１をセットする（Ｓ１０２）。ここでもし、公開鍵証明書の終端に到達した場合（Ｓ１０３：Ｙｅｓ）には、ここでの処理を抜けてステップＳ２０９に進み、判断部８が公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了するが、そうでない場合（Ｓ１０３：Ｎｏ）は、公開鍵証明書のｉ番目のタグ情報Ｔｉを抽出する（Ｓ１０４）。
【００３１】
次に、情報抽出部６は、タグリスト中における情報の組の順番を指定する添字ｊに、ｊ＝１をセットする（Ｓ１０５）。ここでもし、タグリストの終端に到達した場合（Ｓ１０６：Ｙｅｓ）には、ここでの処理を抜けてステップＳ２０９に進み、判断部８が公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了するが、そうでない場合（Ｓ１０６：Ｎｏ）は、タグリストのｊ番目のタグ情報ｔｊを抽出する（Ｓ１０７）。
【００３２】
次に、比較部７は、公開鍵証明書のタグ情報Ｔｉと、タグリストのタグ情報ｔｊとを比較し、一致していれば（Ｓ１０８：Ｙｅｓ）、公開鍵証明書の当該タグ情報Ｔｉの種別がｔｊである事、及びそれに対応する長さ情報がｌｊである事が分かる（Ｓ１０９）。従って情報抽出部６により、当該タグ情報Ｔｉに後続する長さｌｊバイトの領域が、情報の値Ｖｉとして抽出される（Ｓ１１０）。一方、上記の比較を行った結果、タグ情報が一致しない場合（Ｓ１０８：Ｎｏ）には、情報抽出部６はｊに１を加算し（Ｓ１１１）、タグリストの次のタグ情報ｔｊが格納されている領域に移動（Ｓ１１２）した後、Ｓ１０６以下の処理を繰り返す。この手順を繰り返す事により、公開鍵証明書に含まれる、全てのタグ情報Ｔｉと、それに対応する情報の値Ｖｉの組（Ｔｉ、Ｖｉ）が、情報抽出部６により抽出される。
【００３３】
一方、比較部７が、上記タグ情報Ｔｉ、ｔｊに対する照合を行った結果、公開鍵証明書に含まれるタグ情報Ｔｉが、タグリストに含まれる、全てのタグ情報ｔｊと一致しない場合（Ｓ１０８：Ｎｏ）も考えられるが、これは予め想定されていたものとは異なるフォーマットの公開鍵証明書が送られてきた事に相当する。この場合、判断部８は送られてきた公開鍵証明書が完全ではないと判断し、ステップＳ１０６に戻ってきた際に、結果がＹｅｓとなる事によってステップＳ２０９に移り、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００３４】
情報抽出部６が上記処理を繰り返した結果、公開鍵証明書に含まれる、全てのタグ情報Ｔｉと、それに対応する情報の値Ｖｉの組（Ｔｉ、Ｖｉ）が正常に公開鍵証明書から抽出されて、公開鍵証明書の終端に到達した場合（Ｓ１０３：Ｙｅｓ）は、比較部７が照合を行った公開鍵証明書のタグ情報の個数（ｉから１を引いた数）をチェックし、１個以上であれば（Ｓ２００：Ｙｅｓ）、次の指定情報を読み出すステップ（Ｓ２０１）に進む。一方、もし上記比較部７が照合を行ったタグ情報の個数が０であった場合は（Ｓ２００：Ｎｏ）、タグ情報の検証を一度も行っていない事になるため、判断部８はステップＳ２０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００３５】
上記公開鍵証明書に含まれるタグ情報Ｔｉのタグリストとの比較処理、及び情報の値Ｖｉの抽出処理が正常に行われた場合、次に判断部８は、指定情報記憶部１４から指定情報を読み出し（Ｓ２０１）、その情報に基づいて、タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数、及び並び順の比較を行うかどうかについて、判断処理を切り替える。
【００３６】
前記指定情報に基づき、比較部７が、タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数の比較を行う場合（Ｓ２０２：Ｙｅｓ）には、前記タグ情報の個数の比較を行い、個数が一致しない場合（Ｓ２０３：Ｎｏ）は、判断部８は、送られてきた公開鍵証明書が不完全であると判断し、ステップＳ２０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００３７】
次に、比較部７が、タグリストに含まれるタグ情報ｔｊと、公開鍵証明書に含まれるタグ情報Ｔｉの並び順の比較を行う場合（Ｓ２０４：Ｙｅｓ）には、前記タグ情報の並び順の比較を行い、並び順が一致しない場合（Ｓ２０５：Ｎｏ）は、判断部８は、送られてきた公開鍵証明書が不完全であると判断し、ステップＳ２０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００３８】
一方、比較部７が、上記タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数や並び順の比較を行わなかった場合（Ｓ２０２：ＮｏかつＳ２０４：Ｎｏ）や、上記比較処理を行って結果が成功した場合（Ｓ２０３：ＹｅｓかつＳ２０４：Ｎｏ、またはＳ２０５：Ｙｅｓ）、判断部８は更に、情報抽出部６によって抽出された各タグ情報Ｔｉに対応する情報の値Ｖｉについて、その有効性や正常な範囲の値であるかなどの、データの正当性をチェックしても良い。このチェックとしては例えば、端末識別番号によるアクセス権限範囲の確認を行う事などが考えられる。
【００３９】
以上、公開鍵証明書の検証処理が成功し、また抽出されたデータの正当性についてのチェックを行った後、判断部８は、最後に公開鍵証明書に含まれる相手の公開鍵の検証を行う（Ｓ２０６）。この検証処理は、予め認証局公開鍵記憶部１５に記憶された認証局の公開鍵、及び公開鍵証明書に含まれる署名（電子署名）を用いて行うが、その手順は一般的に行われている方法と同様なので、ここでは詳細な説明は省略する。
【００４０】
上記の処理の結果、相手の公開鍵が認証局によって正しく署名されたものである事が確認できた場合（Ｓ２０７：Ｙｅｓ）には、判断部８は、ステップＳ２０８に移って公開鍵証明書の検証成功を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。一方、そうでない場合（Ｓ２０７：Ｎｏ）には、判断部８は、ステップＳ２０９に移って公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００４１】
以上により、送られてきた公開鍵証明書の検証処理、並びに公開鍵証明書に含まれる相手の公開鍵の検証処理が完了する。
次に図９を参照して、タグリストの更新処理シーケンスについて説明する。図９はＩＣカードがタグリスト更新コマンドを受信してから、タグリストの更新処理を行い、タグリスト更新の成功、もしくは失敗のレスポンス情報を送信するまでの間の処理シーケンスを示したフローチャートである。
【００４２】
まず、ＩＣカード１の通信処理部２が、ＩＣカード端末から送信されてきたタグリスト更新コマンドを受信する（Ｓ３００）。続いてタグリスト更新コマンド処理部９が、前記タグリスト更新コマンドのコマンドパラメータ部から、タグリストの更新内容を取り出し、タグリスト更新部１０が、その内容でタグリスト記憶部１３に格納されているタグリストの内容を更新する処理を行う（Ｓ３０１）。この更新処理により内容が書き換えられたタグリストに対して、タグリスト更新部１０は、読み出しを行い、その内容と更新の際に元となったデータとを比較する事により、データが正しく書き込まれたかどうかの検証（ベリファイ）を行う。この結果が一致し、検証が成功した場合（Ｓ３０２：Ｙｅｓ）には、タグリスト更新部１０は、タグリスト更新成功レスポンスをＩＣカード端末に送信する（Ｓ３０３）。一方、検証が失敗した場合には、タグリスト更新部１０は、タグリスト更新失敗レスポンスを送信する（Ｓ３０４）。以上により、タグリストの更新処理が完了する。
【００４３】
タグリスト記憶部１３に記憶されるタグリストは、具体的には、ＩＣカードの不揮発性メモリに格納される情報であるため、カード発行時に初期値として、任意の情報を書き込むことができる。従って、公開鍵証明書の検証を行うプログラムが同じであっても、書き込んだタグリストの内容に応じて、異なる公開鍵証明書のフォーマットに対応することが出来る。また、タグリストを記憶する不揮発性メモリとして、ＥＥＰＲＯＭやＦｅＲＡＭに代表される書き換え可能なメモリを用いれば、運用の途中で公開鍵証明書のフォーマットの変更が必要となった場合でも、タグリストの更新のみで対応する事が出来る。このように、運用するシステムが変わる事による、公開鍵証明書の多様なフォーマット変化に対して、プログラムを変更する事なく、タグリストの更新のみで柔軟に対応する事が可能である。
【００４４】
以上に述べたように、本実施の形態のＩＣカードでは、運用するシステムが変わり、公開鍵の検証に用いる公開鍵証明書のフォーマットが変われば、それに応じてタグリストも書き換える。運用するシステムの公開鍵証明書のフォーマットに対応した専用のタグリストを用いるため、異なる複数のシステムに対して、同時に１枚のカードで対応する、つまり異なるフォーマットの公開鍵証明書を同時に認証する事は、特に考慮していない。
【００４５】
しかしながら、本実施の形態のＩＣカードにおいて、それら複数のシステムに用いられている、異なるフォーマットの公開鍵証明書を同時に認証する事は、タグリストが一定の条件を満たす事によって可能となる。
その為には、対応する全てのシステムのタグ情報を含むように、タグリストに含まれるタグ情報を増やす。例えば、Ａシステムの公開鍵証明書を検証するタグリストに含まれるタグ情報の集合をＴａｇ（Ａ）と表記し、
Ｔａｇ（Ａ）＝｛端末ＩＤ、バージョン、発行者名、公開鍵、署名｝
とする。また、Ｂシステムの公開鍵証明書を検証するタグリストに含まれるタグ情報の集合を同様に
Ｔａｇ（Ｂ）＝｛端末ＩＤ、署名アルゴリズム、発行年月日、公開鍵、署名｝
とすると、互いに異なるフォーマットを持つ、ＡシステムとＢシステムの公開鍵証明書を、本実施の形態のＩＣカード１枚で同時に検証できるようにするためには、タグリストを構成するタグ情報の集合を、Ｔａｇ（Ａ）∪  Ｔａｇ（Ｂ）とする。ここでＴａｇ（Ａ）∪  Ｔａｇ（Ｂ）は、２つの集合、Ｔａｇ（Ａ）と  Ｔａｇ（Ｂ）の和集合であり、上記の例では、
2004259176.tif 000003
となる。
【００４６】
このようにすれば、Ａシステムの公開鍵証明書を検証するために必要なタグ情報の集合Ｔａｇ（Ａ）はＴａｇ（Ａ）∪  Ｔａｇ（Ｂ）に含まれ、また同様にＢシステムの公開鍵証明書を検証するために必要なタグ情報の集合Ｔａｇ（Ｂ）もまたＴａｇ（Ａ）∪  Ｔａｇ（Ｂ）に含まれるので、Ａシステム、及びＢシステムのそれぞれの公開鍵証明書のフォーマットに、同時に対応する事ができる。なお上記の和集合は、システムの数が増えてＡシステム、Ｂシステム、Ｃシステム、・・・となった場合でも、タグリストに含まれるタグ情報の集合をＴａｇ（Ａ）∪  Ｔａｇ（Ｂ）∪  Ｔａｇ（Ｃ）∪  ・・・とすることにより、システムの数が３システム以上になった場合でも同様に取扱うことができる。
【００４７】
但し、上記のような和集合を取るため、公開鍵証明書の検証を行う際には、タグ情報の個数や並び順の比較を行うかどうかを指定する指定情報を、いずれも「比較を行わない」に設定する。個数と並び順のうち、どちらか片方でも「比較を行う」設定にした場合には、Ａシステム、及びＢシステムの、いずれの公開鍵証明書も認証することができなくなる。なぜなら、一般に和集合Ｔａｇ（Ａ）∪  Ｔａｇ（Ｂ）は、集合Ｔａｇ（Ａ）、及び集合Ｔａｇ（Ｂ）と、集合の要素やその個数が異なるからである。
【００４８】
また上記の場合、ＡシステムとＢシステムとで、同じタグ情報が共通に存在する場合には、それらに対して必ず同じタグコードが対応していなければならない。なぜなら、もしもＡシステムとＢシステムとで、同じタグ情報に対して、それぞれ異なるタグコードが対応しているものがあったとすると、上記の和集合Ｔａｇ（Ａ）∪  Ｔａｇ（Ｂ）の中に、同じタグ情報で、２つ以上の異なるタグコードが対応するものが存在するようになり、１つのタグ情報に対応するタグコードが、一意的でなくなるためである。
【００４９】
このような事を防ぐために、Ｘ５０９に含まれる普遍的なタグ情報に対応するタグコードもまた、Ｘ５０９に則る事とする。そうすることによって、システムが変わった場合でも、Ｘ５０９に含まれる同一のタグ情報は、必ず同一のタグコードに対応するようにできる。また異なったフォーマットの公開鍵証明書を検証するために、タグリストを更新する場合でも、異なるタグ情報に対して、誤って同じタグコードを割り当ててしまう事を回避することができる。
【００５０】
（実施の形態２）次に、本発明に係わるＩＣカードの、第２の実施の形態について説明する。本実施の形態のＩＣカードのシステム構成は、第１の実施の形態とほぼ同様である。
また本実施の形態で用いる公開鍵証明書、及びタグリストは、第１の実施の形態とほぼ同様であるが、以下に述べる点が異なっている。
【００５１】
本実施の形態のＩＣカードの公開鍵証明書、及びタグリストのフォーマットは、それぞれ図５、及び図６に示す構成になっている。公開鍵証明書は、タグ情報Ｔｉ、長さ情報Ｌｉ、及び情報の値Ｖｉとで構成される組（Ｔｉ、Ｌｉ、Ｖｉ）の並びである。一方、タグリストは、タグ情報ｔｊのみからなる組（ｔｊ）の並びで構成される。
本実施形態の場合、公開鍵証明書については、タグ（Ｔ）、長さ（Ｌ）、値（Ｖ）とからなる標準的な（Ｔ、Ｌ、Ｖ）構成のフォーマットを使用する。
【００５２】
本実施の形態のＩＣカードが行う公開鍵証明書の検証処理については、実施の形態１とほぼ同様であるが、以下に述べる点が異なっている。
本実施の形態に用いる公開鍵証明書は、図５に示すような構成になっており、タグ情報Ｔｉ、及び情報の値Ｖｉで構成される組（Ｔｉ、Ｖｉ、Ｌｉ）の並びで構成される（但し、ｉは公開鍵証明書中における情報の組の順番を指定する添字で、情報の組の個数をｍとすると、ｉ＝１，２，・・・，ｍ）。
【００５３】
また、本実施の形態に用いるタグリストは、図６に示すように、タグ情報ｔｊのみから構成される組（ｔｊ）の並びである（但し、ｊはタグリスト中における情報の組の順番を指定する添字で、情報の組の個数をｎとすると、ｊ＝１，２，・・・，ｎ）。
本実施の形態のＩＣカードが行う公開鍵証明書の検証処理の手順については、図７、及び図８のフローチャートに示す通りであるが、本実施形態の場合、長さ情報（Ｌ）が公開鍵証明書の方に含まれている。この為、ステップＳ１０８の条件判断において、結果がＹｅｓとなった場合のステップＳ１０９〜Ｓ１１０における処理が、次のようになる。
【００５４】
比較部７は、公開鍵証明書のタグ情報Ｔｉと、タグリストのタグ情報ｔｊとを比較し、一致していれば（Ｓ１０８：Ｙｅｓ）、公開鍵証明書の当該タグ情報Ｔｉの種別がｔｊである事が分かる。一方、前記タグ情報Ｔｉに対応する長さ情報は本実施例の場合、公開鍵証明書の方に含まれ、その値はＴｉに後続する長さ情報、Ｌｉである（Ｓ１０９）。従って情報抽出部６により、当該タグ情報Ｔｉ、及び長さ情報Ｌｉに後続する、長さＬｉバイトの領域が、情報の値Ｖｉとして抽出される（Ｓ１１０）。
【００５５】
上記以外の処理は、実施の形態１と同様である。また公開鍵証明書の検証処理に続いて、データの正当性のチェックや、電子署名による相手の公開鍵の検証処理が行われる事も、実施の形態１と同様である。
（実施の形態３）次に、本発明に係わるＩＣカードの、第３の実施の形態について説明する。本実施の形態のＩＣカードのシステム構成も、第１の実施の形態とほぼ同様である。
【００５６】
また本実施の形態で用いる公開鍵証明書、及びタグリストは、第１の実施の形態とほぼ同様であるが、以下に述べる点が異なっている。
公開鍵証明書、及びタグリストの構成は、第２の実施形態と同様であり、公開鍵証明書、及びタグリストのフォーマットは、それぞれ図５、及び図６に示す構成である。従って公開鍵証明書は、タグ情報Ｔｉ、長さ情報Ｌｉ、及び情報の値Ｖｉとで構成される組（Ｔｉ、Ｌｉ、Ｖｉ）の並びであり、一方、タグリストは、タグ情報ｔｊのみからなる組（ｔｊ）の並びで構成される。公開鍵証明書については、タグ（Ｔ）、長さ（Ｌ）、値（Ｖ）とからなる標準的な（Ｔ、Ｌ、Ｖ）構成のフォーマットである。
【００５７】
本実施の形態では、第１の実施形態と同様、予めＩＣカード内に記憶されたタグリストを用いて、送られて来た公開鍵証明書の検証を行うが、第１の実施形態とは逆に、タグリストに含まれる各タグ情報と一致するタグ情報が公開鍵証明書中に含まれている事を、前記タグリストに含まれる全てのタグ情報についてチェックする事により検証を行う。従って、本実施形態のＩＣカードが行う公開鍵証明書の検証処理は、検証を行う際の公開鍵証明書とタグリストに含まれるタグ情報の包含関係が第１の実施形態とは逆になり、大きく異なるので、図１０及び図１１のフローチャートを参照しながら、以下に説明を行う。
【００５８】
図１０は、本実施の形態のＩＣカードが、ＩＣカード端末から送られて来た公開鍵証明書通知コマンドを受信した後、予めカード内部に記憶されているタグリストに基づいて、受け取った公開鍵証明書の検証処理を行う処理シーケンスを示したフローチャートであり、また図１１は、図１０で行った公開鍵証明書の検証処理に続き、指定情報に基づくタグ情報の個数、及び並び順のチェックと、それに続く相手の公開鍵の検証処理を行い、その結果により検証の成功、もしくは失敗を表すレスポンス情報を返信するまでの間の処理シーケンスを示したフローチャートである。
【００５９】
まず最初に、ＩＣカード１の通信処理部２は、図外のＩＣカード端末から、公開鍵証明書通知コマンドを受信し（Ｓ４００）、公開鍵証明書取得部３がコマンドパラメータ部から公開鍵証明書を抽出する。
次に、情報抽出部６がタグリスト記憶部１３からタグリストを読み出す（Ｓ４０１）。タグリストは、正当な公開鍵証明書に含まれるタグ情報ｔｊのみからなる組（ｔｊ）の並びであり、比較部７はこれを用いて、公開鍵証明書取得部３により取得された公開鍵証明書に含まれるタグ情報Ｔｉ、長さ情報Ｌｉ、情報の値Ｖｉの組（Ｔｉ、Ｌｉ、Ｖｉ）の並びを、以下に述べる手順で、順番に照合して行く。
【００６０】
タグ情報Ｔｉ、ｔｊ、及び長さ情報Ｌｉのデータ領域の長さ（以下、サイズと言う）は固定であり、予め分かっているものとする。一方、情報の値Ｖｉは、タグ情報Ｔｉの種別ごとにサイズが変化するが、そのサイズは、Ｔｉに後続する長さ情報Ｌｉで示される。
まず、情報抽出部６は、タグリスト中における情報の組の順番を指定する添字ｊに、ｊ＝１をセットする（Ｓ４０２）。ここでもし、タグリストの終端に到達した場合（Ｓ４０３：Ｙｅｓ）には、ここでの処理を抜けてステップＳ５０９に進み、判断部８が公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了するが、そうでない場合（Ｓ４０３：Ｎｏ）は、タグリストのｊ番目のタグ情報ｔｊを抽出する（Ｓ４０４）。
【００６１】
次に、情報抽出部６は、公開鍵証明書中における情報の組の順番を指定する添字ｉに、ｉ＝１をセットする（Ｓ４０５）。ここでもし、公開鍵証明書の終端に到達した場合（Ｓ４０６：Ｙｅｓ）には、ここでの処理を抜けてステップＳ５０９に進み、判断部８が公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了するが、そうでない場合（Ｓ４０６：Ｎｏ）は、公開鍵証明書のｉ番目のタグ情報Ｔｉを抽出する（Ｓ４０７）と共に、後続する長さ情報Ｌｉも抽出する（Ｓ４０８）。
【００６２】
次に、比較部７は、タグリストのタグ情報ｔｊと、公開鍵証明書のタグ情報Ｔｉとを比較し、一致していれば（Ｓ４０９：Ｙｅｓ）、公開鍵証明書の当該タグ情報Ｔｉの種別がｔｊである事が分かる。従って情報抽出部６により、当該タグ情報Ｔｉ、及び長さ情報Ｌｉに後続する長さＬｉバイトの領域が、情報の値Ｖｉとして抽出される（Ｓ４１２）。一方、上記の比較を行った結果、タグ情報が一致しない場合（Ｓ４０９：Ｎｏ）には、情報抽出部６はｉに１を加算し（Ｓ４１０）、公開鍵証明書の次のタグ情報Ｔｉが格納されている領域に移動（Ｓ４１１）した後、Ｓ４０６以下の処理を繰り返す。この手順を繰り返す事により、タグリストに含まれる、全てのタグ情報ｔｊと、それに対応する情報の値Ｖｉの組（ｔｊ、Ｖｉ）が、情報抽出部６により抽出される。
【００６３】
一方、比較部７が、上記タグ情報ｔｊ、Ｔｉに対する照合を行った結果、タグリストに含まれるタグ情報ｔｊが、公開鍵証明書に含まれる、全てのタグ情報Ｔｉと一致しない場合（Ｓ４０９：Ｎｏ）も考えられるが、これは予め想定されていたものとは異なるフォーマットの公開鍵証明書が送られて来た事に相当する。この場合、判断部８は送られてきた公開鍵証明書が完全ではないと判断し、ステップＳ４０６に戻ってきた際に、結果がＹｅｓとなる事によってステップＳ５０９に移り、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００６４】
情報抽出部６が上記処理を繰り返した結果、タグリストに含まれる、全てのタグ情報ｔｊと、それに対応する情報の値Ｖｉの組（ｔｊ、Ｖｉ）が正常に公開鍵証明書から抽出されて、タグリストの終端に到達した場合（Ｓ４０３：Ｙｅｓ）は、比較部７が照合を行ったタグリストのタグ情報の個数（ｊから１を引いた数）をチェックし、１個以上であれば（Ｓ５００：Ｙｅｓ）、次の指定情報を読み出すステップ（Ｓ５０１）に進む。一方、もし上記比較部７が照合を行ったタグ情報の個数が０であった場合は（Ｓ５００：Ｎｏ）、タグ情報の検証を一度も行っていない事になるため、判断部８はステップＳ５０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００６５】
上記タグリストに含まれるタグ情報ｔｊの公開鍵証明書との比較処理、及び情報の値Ｖｉの抽出処理が正常に行われた場合、次に比較部８は、指定情報記憶部１４から指定情報を読み出し（Ｓ５０１）、その情報に基づいて、タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数、及び並び順の比較を行うかどうかについて、処理を切り替える。
【００６６】
前記指定情報に基づき、比較部７が、タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数の比較を行う場合（Ｓ５０２：Ｙｅｓ）には、前記タグ情報の個数の比較を行い、個数が一致しない場合（Ｓ５０３：Ｎｏ）は、判断部８は、送られてきた公開鍵証明書が不完全であると判断し、ステップＳ５０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００６７】
次に、比較部７が、タグリストに含まれるタグ情報ｔｊと、公開鍵証明書に含まれるタグ情報Ｔｉの並び順の比較を行う場合（Ｓ５０４：Ｙｅｓ）には、前記タグ情報の並び順の比較を行い、並び順が一致しない場合（Ｓ５０５：Ｎｏ）は、判断部８は、送られてきた公開鍵証明書が不完全であると判断し、ステップＳ５０９に移って、公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。
【００６８】
一方、比較部７が、上記タグリストに含まれるタグ情報ｔｊの個数と、公開鍵証明書に含まれるタグ情報Ｔｉの個数や並び順の比較を行わなかった場合（Ｓ５０２：ＮｏかつＳ５０４：Ｎｏ）や、上記比較処理を行って結果が成功した場合（Ｓ５０３：ＹｅｓかつＳ５０４：Ｎｏ、またはＳ５０５：Ｙｅｓ）、判断部８は更に、情報抽出部６によって抽出された各タグ情報ｔｊに対応する情報の値Ｖｉについて、その有効性や正常な範囲の値であるかなどの、データの正当性をチェックしても良い。このチェックとしては例えば、端末識別番号によるアクセス権限範囲の確認を行う事などが考えられる。
【００６９】
以上、公開鍵証明書の検証処理が成功し、また抽出されたデータの正当性についてのチェックを行った後、判断部８は、最後に公開鍵証明書に含まれる相手の公開鍵の検証を行う（Ｓ５０６）。この検証処理は、予め認証局公開鍵記憶部１５に記憶された認証局の公開鍵、及び公開鍵証明書に含まれる署名（電子署名）を用いて行うが、その手順は一般的に行われている方法と同様なので、ここでは詳細な説明は省略する。
【００７０】
上記の処理の結果、相手の公開鍵が認証局によって正しく署名されたものである事が確認できた場合（Ｓ５０７：Ｙｅｓ）には、判断部８は、ステップＳ５０８に移って公開鍵証明書の検証成功を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。一方、そうでない場合（Ｓ５０７：Ｎｏ）には、判断部８は、ステップＳ５０９に移って公開鍵証明書の検証失敗を示すレスポンス情報をＩＣカード端末に返した後、処理を終了する。以上により、送られて来た公開鍵証明書の検証処理、並びに公開鍵証明書に含まれる相手の公開鍵の検証処理が完了する。
【００７１】
またタグリストの更新については、実施の形態１と全く同様であり、処理シーケンスは、図９に示したフローチャートの通りである。
本実施例の場合においても、実施の形態１と同様に、複数のシステムで用いられている、異なるフォーマットの公開鍵証明書を同時に認証する事が可能である。
【００７２】
その為には、実施の形態１で述べたのとは逆に、タグリストに含まれるタグ情報を減らす必要がある。例えば、Ａシステムの公開鍵証明書を検証するタグリストに含まれるタグ情報の集合をＴａｇ（Ａ）と表記し、
Ｔａｇ（Ａ）＝｛端末ＩＤ、バージョン、発行者名、公開鍵、署名｝
とする。また、Ｂシステムの公開鍵証明書を検証するタグリストに含まれるタグ情報の集合を同様に
Ｔａｇ（Ｂ）＝｛端末ＩＤ、署名アルゴリズム、発行年月日、公開鍵、署名｝
とすると、互いに異なるフォーマットを持つ、ＡシステムとＢシステムの公開鍵証明書を、本実施の形態のＩＣカードで同時に検証できるようにするためには、本実施形態の場合、タグリストを構成するタグ情報の集合を、Ｔａｇ（Ａ）∩  Ｔａｇ（Ｂ）とする。ここでＴａｇ（Ａ）∩  Ｔａｇ（Ｂ）は、２つの集合、Ｔａｇ（Ａ）と  Ｔａｇ（Ｂ）の積集合（共通部分）であり、上記の例では、
Ｔａｇ（Ａ）∩  Ｔａｇ（Ｂ）＝｛端末ＩＤ、公開鍵、署名｝
となる。
【００７３】
このようにすれば、Ａシステムの公開鍵証明書を検証するために必要なタグ情報の集合Ｔａｇ（Ａ）はＴａｇ（Ａ）∩  Ｔａｇ（Ｂ）を含み、また同様にＢシステムの公開鍵証明書を検証するために必要なタグ情報の集合Ｔａｇ（Ｂ）もまたＴａｇ（Ａ）∩  Ｔａｇ（Ｂ）を含むので、１つのタグリストでＡシステム、及びＢシステムのそれぞれの公開鍵証明書のフォーマットに対応する事ができる。なお上記の積集合は、システムの数が増えて、Ａシステム、Ｂシステム、Ｃシステム、・・・となった場合でも、タグリストに含まれるタグ情報の集合をＴａｇ（Ａ）∩  Ｔａｇ（Ｂ）∩  Ｔａｇ（Ｃ）∩  ・・・とすることにより、システムの数が３システム以上になった場合でも同様に取扱うことができる。
【００７４】
なお上記の例のように公開鍵証明書には、公開鍵の検証を行う為、必ずタグ情報として、公開鍵、及び署名が含まれるので、各システムに対応するタグリストを構成するタグ情報の集合Ｔａｇ（Ｘ）（Ｘ＝Ａ，Ｂ，Ｃ，・・・）は、少なくとも上記２つのタグ情報を含む。従って、これらの共通部分であるＴａｇ（Ａ）∩  Ｔａｇ（Ｂ）∩  Ｔａｇ（Ｃ）∩  ・・・にも、前記タグ情報が含まれるので、上記共通部分が空集合（φ）となることはない。
【００７５】
上記のように積集合を取る場合には、公開鍵証明書の検証を行う際に、タグ情報の個数や並び順の比較を行うかどうかを指定する指定情報を、いずれも「比較を行わない」に設定する。個数と並び順のうち、どちらか片方でも「比較を行う」設定にした場合には、Ａシステム、及びＢシステムの、いずれの公開鍵証明書も認証することができなくなる。なぜなら、一般に積集合Ｔａｇ（Ａ）∩  Ｔａｇ（Ｂ）は、集合Ｔａｇ（Ａ）、及び集合Ｔａｇ（Ｂ）と、集合の要素やその個数が異なるからである。
【００７６】
また上記の場合、ＡシステムとＢシステムとで、同じタグ情報が共通に存在する場合には、それらに対して必ず、同じタグコードが対応していなければならない。なぜなら、もしもＡシステムとＢシステムとで、同じタグ情報に対して、それぞれ異なるタグコードが対応しているものがあったとすると、上記の積集合Ｔａｇ（Ａ）∩  Ｔａｇ（Ｂ）の中に、同じタグ情報で、２つ以上の異なるタグコードが対応するものが存在するようになり、１つのタグ情報に対応するタグコードが、一意的でなくなるためである。
【００７７】
このような事を防ぐために、Ｘ５０９に含まれる普遍的なタグ情報に対応するタグコードもまた、Ｘ５０９に則る事とする。そうすることによって、システムが変わった場合でも、Ｘ５０９に含まれる同一のタグ情報は、必ず同一のタグコードに対応するようにできる。また異なったフォーマットの公開鍵証明書を検証するために、タグリストを更新する場合でも、異なるタグ情報に対して、誤って同じタグコードを割り当ててしまう事を回避することができる。
【００７８】
本発明に係わるＩＣカードの実施の形態は、上述の実施の形態１、実施の形態２、及び実施の形態３以外にも、例えば以下に述べるような変形例が考えられる。
実施の形態１では、公開鍵証明書の中にタグ情報Ｔｉが、情報の値Ｖｉとともに存在したが、それ以外に、情報の値Ｖｉだけを連結して送る方法も考えられる。この場合、ＩＣカード１は、タグリストに含まれるタグ情報ｔｊ、及び長さ情報ｌｊをもとに、公開鍵証明書からデータを抽出する。この方法では、必要なセキュリティレベルを確保しながらも処理をより簡略化し、高速化を図ることができる。
【００７９】
また、この変形として、ＩＣカード端末がＩＣカード１からタグリストを読み出し、読み出されたフォーマットに従って公開鍵証明書を組み立て、これをＩＣカード１に送る方法も考えられる。この方法では、ＩＣカード１がＩＣカード端末に送信するタグリストのフォーマットは、図４に示す様なタグ情報ｔｊ、及び長さ情報ｌｊからなる組（ｔｊ、ｌｊ）の並びである。一方、ＩＣカード端末は、送られて来たタグリスト（ｔｊ、ｌｊ）を基に公開鍵証明書を組み立て、これをＩＣカード１に送り返す。この場合の公開鍵証明書のフォーマットは、長さ情報を含まない図３のフォーマット（Ｔｉ、Ｖｉ）でも良いし、或いは長さ情報を含んだ図５のフォーマット（Ｔｉ、Ｌｉ、Ｖｉ）でも良い。
【００８０】
この場合ＩＣカード１は、自分が記憶しているタグリスト（ｔｊ、ｌｊ）のタグ情報ｔｊ、及び長さ情報ｌｊを基に、送られてきた公開鍵証明書から情報の値Ｖｉを抽出することになる。この方法の場合、ＩＣカード１がタグリストと公開鍵証明書との間で、タグ情報Ｔｉ及びｔｊの比較を行う方法でも良いし、行わない方法も可能である。
【００８１】
また本発明の実施の形態１、実施の形態２、及び実施の形態３においては、各タグ情報（Ｔ）に対応する値情報（Ｖ）の長さを示す長さ情報（Ｌ）は、公開鍵証明書及びタグリストのうち、どちらか一方にしか含まれていなかったが、長さ情報が両方に含まれる場合も勿論、本発明に含まれる。その場合は、図７のフローチャートのステップＳ１０９、及び図１０のフローチャートのステップＳ４１２において、公開鍵証明書のＬｉ、もしくはタグリストのｌｊのうち、２つの長さ情報が一致している限りどちらを用いても良いし、またＬｉ、及びｌｊの２つの長さ情報が一致しているかの照合を行っても良い。またその場合は、実施の形態１のステップＳ１１０において、公開鍵証明書中のタグ情報Ｔｉに対応する情報の値Ｖｉは、タグ情報Ｔｉ、及び長さ情報Ｌｉに続く領域に格納される。
【００８２】
また公開鍵証明書が上記のように、タグ情報（Ｔ）、長さ情報（Ｌ）、及び値情報（Ｖ）の３つの要素を含んでいる場合は、ＡＳＮ．１と同様の（Ｔ、Ｌ、Ｖ）構成のフォーマットになる。この時公開鍵証明書は、ＡＳＮ．１と同様の階層的なデータ構造を取ることができる。即ち、あるデータの組（Ｔｉ、Ｌｉ、Ｖｉ）があって、その値Ｖｉが、再び別のデータの組（Ｔｋ、Ｌｋ、Ｖｋ）となっているような場合である。この場合、前記公開鍵証明書は、上記のような階層的な形式に表わされてもよい。
【００８３】
【発明の効果】
本発明のＩＣカードは、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、有効な公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断する。
【００８４】
この構成によれば、前記フォーマット情報の内容を変更することによって、１つのカード内プログラムを用いて、複数の異なる公開鍵証明書のフォーマットに対応する事が可能となるので、複数の専用プログラムをカード内に持つ必要が無くなり、ＩＣカードの限られたリソースを浪費する事を防止できる。
また、前記ＩＣカードにおいて、前記公開鍵証明書に含まれる各情報は、情報の種別を示すタグ情報と当該各情報の長さを示す長さ情報と当該各情報の値とからなる組の並びで表わされ、前記フォーマット情報は、有効な公開鍵証明書に含まれる各情報の種別を示すタグ情報の並びからなり、前記ＩＣカードは更に、前記取得された公開鍵証明書において所定の種別の情報の値が格納された領域を、前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報と長さ情報とに基づいて特定し、前記特定された領域から情報の値を抽出する情報抽出手段と、前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報とを比較する比較手段と、前記フォーマット情報に含まれる各タグ情報と一致するタグ情報が、前記取得された公開鍵証明書に含まれている場合に、前記取得された公開鍵証明書が有効であると判断する判断手段とを備えてもよい。
【００８５】
この構成によれば、前記効果に加えて、フォーマット情報のタグ情報と公開鍵証明書のタグ情報とを照合する事により、公開鍵証明書が正しいフォーマットに従ったものであるかどうか、その有効性について検証する事ができる。
また、前記ＩＣカードは更に、情報の並びが異なる新たな公開鍵証明書の取得に先立って、前記フォーマット情報を当該新たな公開鍵証明書に含まれる各情報の種別、及び並び順を示す新たなフォーマット情報で更新するフォーマット情報更新手段を備えてもよい。
【００８６】
この構成によれば、前記効果に加えて、運用の途中で公開鍵証明書のフォーマットの変更が必要となっても、フォーマット情報の更新だけで対応する事ができる。
また、前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の個数と、前記フォーマット情報に含まれるタグ情報の個数とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断してもよい。
【００８７】
この構成によれば、前記効果に加えて、フォーマット情報に含まれているタグ情報と同じ個数のタグ情報を含む公開鍵証明書しか認証しなくなるので、より厳密な検証を行う事ができる。
また、前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の並び順と、前記フォーマット情報に含まれるタグ情報の並び順とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断してもよい。
【００８８】
この構成によれば、前記効果に加えて、フォーマット情報に含まれているタグ情報と同じ並び順のタグ情報を含む公開鍵証明書しか認証しなくなるので、より厳密な検証を行う事ができる。
本発明のＩＣカードは、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書を取得する公開鍵証明書取得手段と、有効な公開鍵証明書に含まれる各情報の種別と長さ、及び並び順を示すフォーマット情報を記憶しているフォーマット情報記憶手段とを備え、前記フォーマット情報を用いて、前記公開鍵証明書取得手段により取得された公開鍵証明書が有効であるか否かを判断する。
【００８９】
この構成によれば、前記フォーマット情報の内容を変更することによって、１つのカード内プログラムを用いて、複数の異なる公開鍵証明書のフォーマットに対応する事が可能となるので、複数の専用プログラムをカード内に持つ必要が無くなり、ＩＣカードの限られたリソースを浪費する事を防止できる。
また、前記ＩＣカードにおいて、前記公開鍵証明書に含まれる各情報は、情報の種別を示すタグ情報と当該各情報の値とからなる組の並びで表され、前記フォーマット情報は、有効な公開鍵証明書に含まれる各情報の種別を示すタグ情報と、当該各情報の長さを示す長さ情報とからなる組の並びであり、前記ＩＣカードは更に、前記取得された公開鍵証明書において所定の種別の情報の値が格納された領域を、前記フォーマット情報に含まれるタグ情報と長さ情報、及び前記取得された公開鍵証明書に含まれるタグ情報とに基づいて特定し、前記特定された領域から情報の値を抽出する情報抽出手段と、前記フォーマット情報に含まれるタグ情報と、前記取得された公開鍵証明書に含まれるタグ情報とを比較する比較手段と、前記取得された公開鍵証明書に含まれる各タグ情報と一致するタグ情報が、前記フォーマット情報に含まれている場合に、前記取得された公開鍵証明書が有効であると判断する判断手段とを備えてもよい。
【００９０】
この構成によれば、前記効果に加えて、フォーマット情報のタグ情報と公開鍵証明書のタグ情報とを照合する事により、公開鍵証明書が正しいフォーマットに従ったものであるかどうか、その有効性について検証する事ができる。
また、前記ＩＣカードは更に、情報の並びが異なる新たな公開鍵証明書の取得に先立って、前記フォーマット情報を当該新たな公開鍵証明書に含まれる各情報の種別と長さ、及び並び順を示す新たなフォーマット情報で更新するフォーマット情報更新手段を備えてもよい。
【００９１】
この構成によれば、前記効果に加えて、運用の途中で公開鍵証明書のフォーマットの変更が必要となっても、フォーマット情報の更新だけで対応する事ができる。
また、前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の個数と、前記フォーマット情報に含まれるタグ情報の個数とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断してもよい。
【００９２】
この構成によれば、前記効果に加えて、フォーマット情報に含まれているタグ情報と同じ個数のタグ情報を含む公開鍵証明書しか認証しなくなるので、より厳密な検証を行う事ができる。
また、前記ＩＣカードは更に、前記判断手段における判断基準を指定する指定情報を記憶しており、前記判断手段は、当該指定情報に応じて、更に前記取得された公開鍵証明書に含まれるタグ情報の並び順と、前記フォーマット情報に含まれるタグ情報の並び順とが一致する場合に限り、前記取得された公開鍵証明書が有効であると判断してもよい。
【００９３】
この構成によれば、前記効果に加えて、フォーマット情報に含まれているタグ情報と同じ並び順のタグ情報を含む公開鍵証明書しか認証しなくなるので、より厳密な検証を行う事ができる。
本発明のＩＣカードは、ＩＣカードにおいて実行される情報処理方法であって、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、前記公開鍵証明書を取得する公開鍵証明書取得ステップを含み、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断する。
【００９４】
この構成によれば、前記フォーマット情報の内容を変更することによって、１つのカード内プログラムを用いて、複数の異なる公開鍵証明書のフォーマットに対応する事が可能となるので、複数の専用プログラムをカード内に持つ必要が無くなり、ＩＣカードの限られたリソースを浪費する事を防止できる。
本発明のＩＣカードは、コンピュータで実行可能なプログラムであって、公開鍵と、それを検証する為の１以上の種別の情報とを含んだ公開鍵証明書に含まれる各情報の種別、及び並び順を示すフォーマット情報を使用し、前記公開鍵証明書を取得する公開鍵証明書取得ステップをコンピュータに実行させ、前記フォーマット情報を用いて、前記公開鍵証明書取得ステップにより取得された公開鍵証明書が有効であるか否かを判断する。
【００９５】
この構成によれば、前記フォーマット情報の内容を変更することによって、１つのカード内プログラムを用いて、複数の異なる公開鍵証明書のフォーマットに対応する事が可能となるので、複数の専用プログラムをカード内に持つ必要が無くなり、ＩＣカードの限られたリソースを浪費する事を防止できる。
【図面の簡単な説明】
【図１】本発明のＩＣカードの概略構成を示す機能ブロック図。
【図２】本発明の実施の形態に係わるコマンド情報の構成図。
【図３】本発明の第１実施形態に係る公開鍵証明書のフォーマット。
【図４】本発明の第１実施形態に係るタグリストのフォーマット。
【図５】本発明の第２、及び第３実施形態に係る公開鍵証明書のフォーマット。
【図６】本発明の第２、及び第３実施形態に係るタグリストのフォーマット。
【図７】公開鍵証明書の検証を行う際の処理手順の前半を示すフローチャート（第１、及び第２実施形態）。
【図８】公開鍵証明書の検証を行う際の処理手順の後半を示すフローチャート（第１、及び第２実施形態）。
【図９】タグリスト更新処理の手順を示すフローチャート（第１、第２、及び第３実施形態）。
【図１０】公開鍵証明書の検証を行う際の処理手順の前半を示すフローチャート（第３実施形態）。
【図１１】公開鍵証明書の検証を行う際の処理手順の後半を示すフローチャート（第３実施形態）。
【図１２】従来のＩＣカードの概略構成を示す機能ブロック図。
【符号の説明】
１    ＩＣカード
２    通信処理部
３    公開鍵証明書取得部
４    コマンド実行処理部
５    公開鍵証明書通知コマンド処理部
６    情報抽出部
７    比較部
８    判断部
９    タグリスト更新コマンド処理部
１０  タグリスト更新部
１１  制御部
１２  記憶部
１３  タグリスト記憶部
１４  指定情報記憶部
１５  認証局公開鍵記憶部
２１  コマンドコード
２２  コマンドパラメータ
３１  本発明の第１の実施形態の公開鍵証明書
４１  本発明の第１の実施形態のタグリスト
５１  本発明の第２、及び第３の実施形態の公開鍵証明書
６１  本発明の第２、及び第３の実施形態のタグリスト
７１  従来のＩＣカード
７２  通信処理部
７３  公開鍵証明書取得部
７４  コマンド実行処理部
７５  公開鍵証明書通知コマンド処理部
７６  情報抽出部
７７  フォーマットＡ用抽出モジュール
７８  フォーマットＢ用抽出モジュール
７９  フォーマットＣ用抽出モジュール
８０  比較部
８１  判断部
８２  制御部
８３  記憶部
８４  運用中フォーマット識別コード記憶部
８５  認証局公開鍵記憶部
【図１】
2004259176.tif 000004
【図２】
2004259176.tif 000005
【図３】
2004259176.tif 000006
【図４】
2004259176.tif 000007
【図５】
2004259176.tif 000008
【図６】
2004259176.tif 000009
【図７】
2004259176.tif 000010
【図８】
2004259176.tif 000011
【図９】
2004259176.tif 000012
【図１０】
2004259176.tif 000013
【図１１】
2004259176.tif 000014
【図１２】
2004259176.tif 000015