(57)【要約】【課題】  安全性が高く、かつ、コストを低減することができる指紋照合システムを提供する。【解決手段】  耐タンパ性を有したＩＣカード１００と、ＩＣカード１００に対して情報の読み書きを行う耐タンパ性を有したリーダライタ１１０とを備え、リーダライタ１１０は、指紋入力部１１３により読みとった指紋画像を、前処理部１１２で前処理し、抽出した中間情報をＩＣカード１００に送信し、ＩＣカード１００は、前記中間情報と指紋情報１０４との照合を行い、当該照合が一致したときに、電子認証に使われる認証情報１０５を使用可能にし、アプリケーション１３１との間で電子認証を行う。【選択図】  図１
2006073021.tif 000002
【特許請求の範囲】
【請求項１】
耐タンパ性を有した演算機能付き携帯型記憶装置と、
前記携帯型記憶装置に対して情報の読み書きを行う耐タンパ性を有したリーダライタと
を備えた生体認証システムであって、
前記リーダライタは、
生体情報を入力する生体情報入力装置を備え、
当該生体情報入力装置で入力した生体情報の前処理を行い、
前記前処理を行った中間情報を前記携帯型記憶装置に送信し、
前記携帯型記憶装置は、
生体情報のテンプレートと、電子認証に使われる秘密鍵とを備え、
前記中間情報と前記テンプレートとの照合を行い、
当該照合が一致したときに、前記秘密鍵を使用可能にする
ことを特徴とする生体認証システム。
【請求項２】
前記生体情報は、指紋情報であり、
前記リーダライタは、指紋照合に必要な指紋画像情報を前記携帯型記憶装置に順次送信し、
前記携帯型記憶装置は、前記指紋画像情報を順次処理することで、指紋照合を行う
ことを特徴とする請求項１に記載の生体認証システム。
【請求項３】
前記生体情報は、指紋情報であり、
前記テンプレートに記録された登録指紋と、あらたに入力された入力指紋との位置ずれを補正するための情報を、指紋のコア位置を使って算出し、
前記登録指紋の特徴点周辺の小画像を、前記入力指紋の画像上の位置ずれ補正した座標周辺でマッチングすることによって探索し、
一致した小画像の個数をもって、前記テンプレートと前記指紋画像の同一性を判定する
ことを特徴とする請求項１に記載の生体認証システム。
【請求項４】
隆線の垂線ベクトルを探索し、
当該垂線ベクトルが大きく変化する位置を、指紋のコアと決定する
ことを特徴とする請求項３に記載の生体認証システム。
【請求項５】
前記生体情報は、指紋情報であり、
前記テンプレートに記録された登録指紋と、あらたに入力された入力指紋との位置ずれを補正するための情報を、入力指紋および登録指紋のそれぞれについて、各特徴点の周辺に特定の輝度分布を持つ画像を作成し、当該画像の相互相関により算出し、
前記登録指紋の特徴点周辺の小画像を、前記入力指紋の画像上の位置ずれ補正した座標周辺でマッチングすることによって探索し、
一致した小画像の個数をもって、前記テンプレートと前記指紋画像の同一性を判定する
ことを特徴とする請求項１に記載の生体認証システム。
【請求項６】
携帯型記憶装置と、前記携帯型記憶装置に対して情報の読み書きを行うリーダライタとを備えた生体認証システムであって、
前記リーダライタは、
生体情報の入力を受け付ける生体情報入力装置と、
当該生体情報入力装置を介して入力された生体情報に前処理を施して画像データを生成する前処理手段と、
前記前処理手段で生成した画像データから前記携帯型記憶装置から要求された部分画像を１つ切り出し、当該切り出した１つの部分画像の画像データを前記携帯型記憶装置に送信する送信手段と、を備え、
前記携帯型記憶装置は、
生体情報のテンプレートと、
前記リーダライタから送信された前記１つの部分画像の画像データと前記テンプレートとの照合を行う照合手段と、を備え、
前記照合手段は、前記照合結果が所定の基準を満たさない場合、それまでに送信された部分画像の画像データとは異なる部分画像の画像データを１つ要求することを繰り返すこと
を特徴とする生体認証システム。
【請求項７】
請求項６に記載の生体認証システムにおいて、
前記生体情報は、指紋情報であり、
前記リーダライタの前処理手段は、前記画像データとして、指紋照合に必要な指紋画像情報を生成し、
前記携帯型記憶装置の照合手段は、前記指紋画像情報を処理することで、指紋照合を行うこと
を特徴とする生体認証システム。
【請求項８】
請求項７記載の生体認証システムにおいて、
前記前処理手段は、前記入力された生体情報である指紋情報から、当該指紋のコア位置を算出し、当該コア位置の座標を前記携帯型記憶装置に送出し、
前記テンプレートは、当該テンプレートに登録された指紋の複数の特徴点の座標と当該座標周辺の小画像と、からなり、
照合手段は、
前記登録された指紋と新たに入力された入力指紋との位置ずれを補正するための情報を、前記テンプレートに登録された指紋のコア位置の座標と前記前処理手段から受信したコア位置の座標とを使って算出する補正情報算出手段と、
前記特徴点の座標と前記位置ずれを補正するための情報とから算出した座標を送信することにより、当該座標周辺の指紋画像情報を前記部分画像として前記リーダライタに要求する要求手段と、
前記座標周辺の小画像と前記要求手段からの要求に応じて前記送信手段から送信された指紋画像情報とをマッチングするマッチング手段と、
複数の前記マッチング結果に従い、前記テンプレートと前記指紋画像との同一性を判定する判定手段と、を備えること
を特徴とする生体認証システム。
【請求項９】
請求項８記載の生体認証システムにおいて、
前記前処理手段は、
複数の隆線の垂線ベクトルを順次探索し、当該垂線ベクトルの方向が所定値より変化する位置を前記指紋のコア位置とすること
を特徴とする生体認証システム。
【請求項１０】
請求項７記載の生体認証システムにおいて、
前記テンプレートに登録された指紋である登録指紋と、新たに入力された指紋である入力指紋との位置ずれを補正するための情報を、入力指紋および登録指紋のそれぞれについて、各特徴点の周辺に特定の輝度分布を持つ画像を作成し、当該画像の相互相関により算出する特徴点マップ生成手段と、
前記登録指紋の特徴点周辺の小画像を、前記入力指紋の画像上の位置ずれ補正した座標周辺でマッチングすることによって探索する探索手段と、
前記探索により一致した前記小画像の個数をもって、前記テンプレートと前記指紋画像との同一性を判定する判定手段とを備えること
を特徴とする記載の生体認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重要施設における入退室の管理や情報システムのアクセス管理に使われる生体情報照合技術に関し、特に、指紋照合技術に関する。
【背景技術】
【０００２】
従来から、指紋等の生体情報を使って、あらかじめ登録した特定の利用者に対してのみ、施設への入退室や情報システムの利用を許可するアクセスコントロール技術が知られている。このようなアクセスコントロール技術としては、例えば、以下のようなものがある。
【０００３】
（１）クライアント認証型装置
特開平０９-１９８５０１号公報（以下、文献１という）には、あらかじめドア管理装置に記録した利用者の生体情報と、入退出時に入力した生体情報とを照合することで管理区域への不正な侵入を防止するものが記載されている。
【０００４】
（２）サーバ認証型指紋照合装置
特開平１０-１２４６６８号公報（以下、文献２という）には、サーバが利用者の生体情報ファイルをもち、クライアントにおいて入力された利用者の生体情報をサーバで照合することで、コンピュータシステムへの不正なアクセスを防止するものが記載されている。
【０００５】
（３）携帯型指紋照合装置
特開平１０-１４９４４６号公報（以下、文献３という）には、ＩＣカードなどの携帯型記録装置に利用者の生体情報を記録し、新たに入力した利用者の生体情報をクライアントで照合することにより、コンピュータシステムなどへの不正なアクセスを防止するものが記載されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述した文献１に記載された方法では、ドア管理装置が耐タンパ性を有しない装置で実現されている場合、利用者の指紋情報や照合結果の偽造、改ざん、盗用等により、正しい利用者になりすます不正（なりすまし）が可能になるという問題がある。
【０００７】
これに対して、前述した文献２に記載された方法では、サーバで利用者固有の情報である生体情報を集中管理し、指紋照合を行うため、文献１に記載された方法で問題となる指紋情報や照合結果の偽造、改ざん、盗用等は困難となる。しかし、指紋等の個人情報が集中管理されることに対して、利用者の心理的抵抗が大きかったり、一度に多数の生体情報が盗難される恐れがあったり、多数の利用者管理のために、生体情報を記録するファイルの管理にかかるコストが増大する等といった問題がある。
【０００８】
一方、文献３に記載された方法では、ＩＣカードなどの耐タンパ性を有する携帯型記憶装置に生体情報を記録するため、文献２に記載された方法で問題となる利用者の心理的抵抗、大量の生体情報の盗難、および生体情報の管理にかかるコストの問題を解決できる。しかもＩＣカードに実装された指紋入力装置およびＣＰＵによって指紋の入力と照合を行うため、文献１に記載された方法で問題となる指紋情報や照合結果の偽造、改ざん、盗用等を防止でき、安全性が高いといえる。しかし、ＩＣカードに生体情報の入力機能および生体情報の照合機能を実装する必要があり、装置のコストが高くなるという問題がある。
【０００９】
本発明の目的は、安全性が高く、かつ、コストを低減することができる指紋照合システムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る生体認証システムは、耐タンパ性を有した演算機能付き携帯型記憶装置と、前記携帯型記憶装置に対して情報の読み書きを行う耐タンパ性を有したリーダライタとを備える。
【００１１】
そして、前記リーダライタは、生体情報を入力する生体情報入力装置を備え、当該生体情報入力装置で入力した生体情報の前処理を行い、当該前処理を行った中間情報を前記携帯型記憶装置に送信する。
【００１２】
また、前記携帯型記憶装置は、生体情報のテンプレートと、電子認証に使われる秘密鍵とを備え、前記中間情報と前記テンプレートとの照合を行い、当該照合が一致したときに、前記秘密鍵を使用可能にする。
【００１３】
前記生体情報が指紋情報の場合は、前記リーダライタは、指紋照合に必要な指紋画像情報を前記携帯型記憶装置に順次送信し、前記携帯型記憶装置は、前記指紋画像情報を順次処理することで、指紋照合を行うようにしてもよい。
【００１４】
また、前記テンプレートに記録された登録指紋と、あらたに入力された入力指紋との位置ずれを補正するための情報を、指紋のコア位置を使って算出し、前記登録指紋の特徴点周辺の小画像を、前記入力指紋の画像上の位置ずれ補正した座標周辺でマッチングすることによって探索し、一致した小画像の個数をもって、前記テンプレートと前記指紋画像の同一性を判定するようにしてもよい。また、指紋のコア位置を算出する際、隆線の垂線ベクトルを探索し、当該垂線ベクトルが大きく変化する位置を、指紋のコアと決定するようにしてもよい。
【００１５】
また、前記テンプレートに記録された登録指紋と、あらたに入力された入力指紋との位置ずれを補正するための情報を、入力指紋および登録指紋のそれぞれについて、各特徴点の周辺に特定の輝度分布を持つ画像を作成し、当該画像の相互相関により算出するようにしてもよい。
【発明の効果】
【００１６】
以上詳細に説明したように、本発明によれば、利用者固有の情報を携帯型記録装置により個人管理するので、利用者の心理的抵抗を減らすことができる。また、一度に多数の生体情報が盗難される可能性を軽減し、生体情報の記録管理にかかるコストを低減することができる。
【００１７】
また、生体情報および生体情報照合機能を耐タンパ性を有する携帯型記憶装置の内部に実装することで、利用者の生体情報および照合結果の偽造、改ざん、盗用を困難にしなりすましを防ぐことができる。
【００１８】
また、生体情報入力機能および生体情報照合の前処理機能をリーダライタに実装するので、一般的な演算機能付き携帯型記憶装置であるＩＣカード等のＣＰＵで生体情報照合を行え、システムのコストを低減することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について、図面を参照しつつ、詳細に説明する。
【００２０】
ここでは、高いセキュリティが必要とされる銀行の事務システムを例に、携帯型記録装置としてＩＣカードを用い、ホストコンピュータで稼働している銀行業務用アプリケーションに対するアクセス管理を行う場合について説明する。また、生体情報としては、指紋を用いる場合について説明する。
【００２１】
図１は、本発明によるアクセス管理システムの概略を説明するための図である。同図に示すように、本システムは、ホストコンピュータ１３０と、端末１２０と、リーダライタ１１０と、ＩＣカード１００とを備える。
【００２２】
ホストコンピュータ１３０は、銀行業務を行うためのもので、職員が銀行業務を行うためのアプリケーション１３１が実行されている。アプリケーション１３１は、職員があらかじめ登録された正しい利用者であることを確認（本人認証）した後に利用可能となるものである。
【００２３】
端末１２０は、アプリケーション１３１を利用するための端末であり、ホストコンピュータ１３０とネットワーク１４０によって接続されている。端末１２０は、ホストコンピュータ１３０とリーダライタ１１０およびＩＣカード１００とが本人認証に必要な情報を交換する際の中継を行うものでもある。
【００２４】
リーダライタ１１０は、ＩＣカード１００に対するデータの読み書きをするための装置で、端末１２０に接続されている。リーダライタ１１０は、インターフェース１１１と、指紋入力部１１３と、前処理部１１２とを備える。インターフェース１１１は、端末１２０やＩＣカード１００との間で情報を伝達する。指紋入力部１１３は、職員の指から指紋を読み取る。前処理部１１２は、読み取った指紋画像の前処理を行い、指紋照合に必要となる情報をＩＣカード１００と交換する。
【００２５】
ＩＣカード１００は、おのおのの職員が持つ演算機能付き携帯型記憶装置である。ＩＣカード１００は、インターフェース１０１と、指紋照合処理部１０２と、電子認証処理部１０３と、指紋情報１０４と、認証情報１０５とを備える。インターフェース１０１は、リーダライタ１１０との間で情報を伝達する。指紋照合処理部１０２は、指紋情報１０４に記録された指紋情報と、新たに入力した指紋とを照合する。電子認証処理部１０３は、認証情報１０５を使って、ホストコンピュータ１３０と電子認証を行う。
【００２６】
次に、本システムにおけるアプリケーション１３１に対するアクセス管理の概要について説明する。
【００２７】
職員はあらかじめ自分の指紋情報１０４が記録されたＩＣカード１００を持っており、アプリケーション１３１へアクセスする際、ＩＣカード１００をリーダライタ１１０に接続し、リーダライタ１１０の指紋入力部１１３を用いてあらたに指紋を入力する。
【００２８】
指紋が入力されると、前処理部１１２で指紋照合のための前処理を行った後に、前処理部１１２と指紋照合処理部１０２とで照合に必要となる情報を交換しながら、新たに入力した指紋と指紋情報１０４とが一致しているか否かを判定する。
【００２９】
その結果、一致していた場合には電子認証処理部１０３の認証情報１０５へのアクセスを許可し、アプリケーション１３１と電子認証処理部１０３との間で電子認証を行う。電子認証が行われると、端末１２０からアプリケーション１３０へのアクセスが可能となり、職員はアプリケーション１３１を利用可能となる。
【００３０】
次に、本システムの構成要素の詳細について説明する。
【００３１】
まず、ＩＣカード１００の構造について説明する。
【００３２】
図２は、ＩＣカード１００の構造を示す図である。
【００３３】
同図に示すように、ＩＣカード１００は、Ｉ／Ｏポート２１０と、ＣＰＵ２２０と、ＲＡＭ２３０と、ＥＥＰＲＯＭ２４０と、ＲＯＭ２５０とを備える。ＩＣカード１００の各構成要素は、バス２６０に接続され、バス２６０を介してデータ交換を行う。
【００３４】
Ｉ／Ｏポート２１０は、リーダライタ１１０との間でデータ交換を行うためのポートである。ＣＰＵ２２０は、四則演算やビット演算などを行う演算処理部である。ＲＡＭ２３０は、ＣＰＵ２２０が演算を行う際に一時的なデータの格納等に用いる書き換え可能なメモリである。
【００３５】
ＲＯＭ２５０は、読み出し専用メモリであり、指紋照合プログラム２５１や電子認証プログラム２５２やその他のプログラムおよびデータが記録されている。ＥＥＰＲＯＭ２４０は、電気的に書き替え可能な不揮発性メモリであり、ＩＣカード１００の正当性を証明するための電子証明書２４１や、ＩＣカード１００の秘密鍵２４２や、職員が正しいＩＣカードの持ち主であることを証明するための指紋情報２４３などが記録されている。
【００３６】
指紋情報２４３は、登録に使用した指紋のコアの座標、所定数の特徴点の座標及び各特徴点の周辺の小画像（チップ画像）からなる。以下、本実施形態では、指紋情報２４３に含まれる特徴点の数が３０個の場合について説明する。
【００３７】
図３は、指紋情報２４３の構成例を示す図である。同図に示すように、指紋情報２４３は、チップ（画像）の数と、コアのＸＹ座標と、チップ画像のＸＹ座標と、チップ画像の画像データ（バイナリデータ）とを有する。各情報の利用方法については、後述する。
【００３８】
ＩＣカード１００は、外部からの不正なアクセスや装置の破壊によるデータ解析を防止する耐タンパ性を有しており、内部に保持したデータやプログラムを外部から不正な方法で参照できないよう設計されている。また、内部に保持したデータへのアクセスコントロール機能を有しており、ＩＣカード１００内部のデータにアクセスするためには、共通鍵などによる認証を行う等、ＣＰＵ２２０の許可が必要になる。ＩＣカード１００の秘密鍵２４２は、ＩＣカード１００の電源投入時にはアクセス不許可に設定されており、外部あるいは内部のプログラムからアクセスすることはできない。
【００３９】
ここでは、ＩＣカード１００は、職員を識別するため各職員に対して１つだけ発行され、各職員が１枚だけ持つことのできるものとする。
【００４０】
なお、本実施形態では、指紋照合プログラム２５１および電子認証プログラム２５２をＲＯＭ２５０に記録されるものとして説明するが、これらのプログラムは、ＥＥＰＲＯＭ２４０に実装することも可能である。
【００４１】
次に、リーダライタ１１０の構造について説明する。
【００４２】
図４は、リーダライタ１１０の構造を示す図である。
【００４３】
同図に示すように、リーダライタ１１０は、Ｉ／Ｏポート３１０と、ＣＰＵ３２０と、ＲＡＭ３３０と、指紋センサ３４０と、ＲＯＭ３５０とを備える。リーダライタ１００の各構成要素は、バス３６０に接続され、バス３６０を介してデータ交換を行う。
【００４４】
Ｉ／Ｏポート３１０は、ＩＣカード１１０や端末１２０との間でデータ交換を行うためのポートである。ＣＰＵ３２０は、四則演算やビット演算などリーダライタ１１０に必要な演算を行う演算処理部である。ＲＡＭ３３０は、ＣＰＵ３２０が演算する際に一時的に用いるデータ等を格納するためのメモリである。指紋センサ３４０は、指紋を電子的に読み取るものである。
【００４５】
ＲＯＭ３５０は、読み出し専用メモリであり、指紋画像の前処理などを行い、ＩＣカード１００と通信しながら指紋の照合を行う前処理プログラム３５１や指紋の読み取りを制御する指紋読み取りプログラム３５２やその他のプログラムおよびデータが記録されている。
【００４６】
リーダライタ１１０は、耐タンパ性を有しており、内部に保持したデータやプログラムを外部から不正な方法で参照できないよう設計されている。
【００４７】
次に、本実施形態における指紋照合の概要について説明する。
【００４８】
図５は、本実施形態における指紋照合の概略フローを示す図である。
【００４９】
まず、職員がホストコンピュータ１３０のアプリケーション１３１を利用する際、アプリケーション１３１は、端末１２０に職員の指紋照合を要求し、端末１２０はリーダライタ１１０に指紋照合要求を発行する（Ｓ４００）。
【００５０】
端末１２０から指紋照合要求を受け取ったリーダライタ１１０は、指紋読み取りプログラム３５２を実行し、指紋センサ３４０から職員の指紋を取得する（Ｓ４０５）。読み取られた指紋は、例えば、１ピクセルあたり８ビットの濃淡をもつ指紋画像としてＲＡＭ３３０に記録される。指紋センサ３４０による指紋の読み取りは、通常用いられている方法、例えば、上述した文献２の記載の方法を用いて行う。
【００５１】
次に、前処理プログラム３５１が指紋画像の前処理を行い、照合に必要な情報として中間指紋情報を抽出してＲＡＭ３３０に記録する（Ｓ４１０）。前処理の詳細については、後述する。
【００５２】
次に、中間指紋情報と、あらかじめＩＣカード１００に記録してあった職員の指紋情報２４３を指紋照合プログラム２５１が照合する（Ｓ４１５）。照合処理の詳細については、後述する。
【００５３】
照合の結果、両者が一致していなかった場合は（Ｓ４１５：ＮＧ）、処理を終了する。一方、両者が一致していた場合は（Ｓ４１５：ＯＫ）、ＩＣカード１００の秘密鍵２４２を電子認証プログラム２５２からアクセス可能になるよう活性化する（Ｓ４２０）。
【００５４】
そして、電子認証プログラム２５２が、活性化された秘密鍵２４２を用いて、アプリケーション１３１と電子認証を行う（Ｓ４２５）。例えば、ＡＮＳＩ／ＩＴＵ  Ｘ．５０９に記載された方法などにより、ＩＣカード１００とアプリケーション１３１間の相互認証を行う。
【００５５】
次に、前述した前処理の詳細について説明する。前処理では、指紋のコアと特徴点の座標算出、および指紋の２値画像作成を行い、これらを前処理後の中間指紋情報としてＲＡＭ３３０に記録する。
【００５６】
図６は、指紋のコアおよび特徴点の例を示す図である。指紋のコアとは、同図に示すように、指紋の特徴的な構造を指す。また、特徴点とは、指紋を形成する隆線（凸部の連なり）の端点や分岐点を指す。通常、各指に、指紋のコアは一個存在し、特徴点は複数個存在する。
【００５７】
図７は、前処理の概略フローを示す図である。
【００５８】
まず、入力された指紋画像に、隆線強調およびノイズ除去処理などを施し、処理後の８ビット濃淡指紋画像をＲＡＭ３３０に記録する（Ｓ６００）。本処理は、通常用いられている方法、例えば、特開平１１-１３４４９８号公報に記載の方法を用いて行う。
【００５９】
次に、指紋の特徴的な構造であるコアを検出し、その座標を中間指紋情報に記録する（Ｓ６０５）。本処理の詳細は後述する。
【００６０】
次に、隆線強調等の処理済の８ビット濃淡指紋画像を２値化して、１ピクセルあたり１ビットのモノクロ画像に変換し、中間指紋情報に記録する（Ｓ６１０）。本処理は、通常用いられる方法、例えば、前述した文献２に記載の方法を用いて行う。
【００６１】
次に、２値化された指紋画像を細線化し、細線化画像を得る（Ｓ６１５）。細線化画像はＲＡＭ３３０に一時的に記録される。本細線化処理は、通常用いられている方法、例えば、文献２に記載された方法を用いて行う。
【００６２】
次に、細線化画像から隆線の端点や分岐点である特徴点を最大３０個抽出し、抽出した特徴点の座標を中間指紋情報に記録する（Ｓ６２０）。特徴点の抽出は、通常用いられている方法、例えば、文献２に記載の方法を用いて行う。
【００６３】
次に、前述したコア位置検出処理Ｓ６０５について説明する。
【００６４】
図８は、コア位置検出処理Ｓ６０５を説明するための概念図である。
【００６５】
同図に示すように、コア位置検出処理Ｓ６０５では、まず、候補点を算出する際の有効領域８１０を設定する。有効領域８１０は、指紋画像内であり、かつコアを含むと推定される領域に設定される。
【００６６】
次に、有効領域８１０内において、適当な初期位置８００を設定し、その初期位置における隆線の垂線方向ベクトル８０５を求め、求めた垂線方向ベクトル８０５を初期位置に足した位置を次の候補点とし、その候補点における隆線の垂線方向ベクトルを求め、更に次の候補点を求めるといった処理を、候補点の数があらかじめ定めた数以上になるか、次の候補点が有効領域８１０外に出るまで繰り返す。そして、以上のようにして求めた候補点のそれぞれについて、曲率を計算し、最大の曲率をもつ候補点をコアの位置と判定する。そして、初期位置を変えて、上述した処理を繰り返し、求まった複数のコア位置を平均化処理することで、最終的なコア位置を求める。
【００６７】
ここでは、一回のコア探索において最大２０点の候補点を探索し、そのようなコアの探索を１０回行うものとする。
【００６８】
図９は、コア位置検出処理Ｓ６０５の詳細フローを示す図である。
【００６９】
まず、探索回数を示すカウンタｉを「１」に初期化し（Ｓ７００）、一回の探索における候補点のインデックスを示すカウンタｊを「１」に初期化する（Ｓ７０５）。
【００７０】
次に、探索回数を示すカウンタｉに応じて、候補点の初期位置を設定する（Ｓ７１０）。初期位置は、各探索ごとに異なるように設定する。図８の例では、初期位置８００が設定されている。初期位置のＸ座標およびＹ座標は、ＲＡＭ３３０に設けられた候補点算出テーブルの該当する位置に記録される。
【００７１】
図１０は、候補点算出テーブルの構成例を示す図である。同図に示すように、候補点算出テーブルは、「候補点インデックス」と、候補点の「座標」と、各候補点での「曲率」とを有する。同図は、１回の探索における７つの候補点の座標と曲率を示している。例えば、インデックス１（初期位置）の候補点の座標は、Ｘ座標が２５、Ｙ座標が２５となっている。
【００７２】
次に、初期位置８００における隆線の垂線方向ベクトル８０５を算出する（Ｓ７１５）。具体的な算出方法は後述する。垂線方向ベクトルはあらかじめ設定した長さになるよう正規化される。
【００７３】
次に、現在の候補点の位置および垂線方向ベクトルから新たな候補点を算出する（Ｓ７２０）。具体的には、現在の候補点の位置座標に、垂線方向ベクトルを加算することで新たな候補点を求め、候補点算出テーブルの該当するインデックスに候補点のＸ座標およびＹ座標を記録する。
【００７４】
次に、新たな候補点における隆線の垂線方向ベクトルを算出する（Ｓ７２５）。
【００７５】
次に、新たな候補点があらかじめ設定した有効領域（図８の領域８１０）内にあるか否かを調べる（Ｓ７３０）。その結果、候補点が有効領域内にあれば（Ｓ７３０：ＯＫ）、候補点の数があらかじめ設定した個数（＝２０）に達したか否かを調べる（Ｓ７４０）。その結果、達していなければ（Ｓ７４０：ＮＯ）、候補点を示すインデックスｊに１を加算し（Ｓ７４３）、新たな候補点を算出する処理Ｓ７２０に戻り、前述した処理を繰り返す。
【００７６】
一方、候補点の数があらかじめ設定した個数に達した場合（Ｓ７４０：ＹＥＳ）、又は、新たな候補点があらかじめ設定した有効領域内にない場合は（Ｓ７３０：ＮＧ）、ここまでで算出した各候補点の曲率を求め、最大の曲率を持つ候補点の座標および曲率を、ＲＡＭ３３０に設けられたコア探索結果テーブルの対応する位置に記録する（Ｓ７４５）。
【００７７】
図１１は、コア探索結果テーブルの構成例を示す図である。同図に示すように、コア探索結果テーブルは、「探索回数のインデックス」と、各探索において、「最大曲率を持つ点の座標」と、「最大曲率」とを有する。なお、図１０は、１０回の探索を終了した結果を示している。
【００７８】
曲率はどのような方法で求めてもよいが、ここでは隣り合う候補点のなす角度の余弦を曲率として定義する。例えば、図８に示した４番目の候補点８２０の曲率は角度８３０の余弦で計算される。このように全ての候補点の曲率を計算し、このうち最大の曲率を持つ候補点の座標をコア探索結果テーブルの対応する位置に記録する。図１０に示した例では、曲率−０.３が最大であるため、４番目の候補点の座標および曲率を図１１のインデックス１に対応する位置に記録する。
【００７９】
今回探索された候補点の最大曲率が求まると、次に、探索の回数ｉがあらかじめ設定された回数（＝１０）を超えたか否かを判定する（Ｓ７５０）。その結果、越えていなければ、探索回数ｉに１を加算し（Ｓ７５３）、次の探索の初期位置を設定する処理Ｓ７１０に戻り、前述した処理を繰り返す。
【００８０】
一方、探索の回数があらかじめ設定された回数（＝１０）を超えていた場合は、全ての探索結果から、コアの座標を算出する（Ｓ７５５）。
【００８１】
コアの座標を算出するには、全ての探索で求まったコアの候補の座標を平均してコア位置とする方法や、あらかじめ定めた最大曲率のしきい値以上を持つ候補点だけを平均してコア位置とする方法などがある。例えば、最大曲率のしきい値を−０.５とし、しきい値以下の最大曲率をもつ候補は無効とすると、図１１の例では、１０番目の探索による候補点は最大曲率が−０.８のため無効となり、１番から９番までを平均してコアの位置を算出することになる。
【００８２】
次に、前述した隆線の垂線方向ベクトルの算出方法について説明する。ここでは、まず、候補点における隆線方向（隆線と平行になる方向）を算出し、それに直交する方向を算出することで、隆線の垂線方向ベクトルを算出する。
【００８３】
そこで、隆線方法の算出方法について説明する。
【００８４】
図１２は、本実施形態の隆線方向の算出方法の概念を示す図である。同図は、指紋画像の一部を示しており、隆線を実線で表している。指紋画像のあるピクセル上の点２５０５における隆線方向は以下のように算出することができる。まず、点２５０５を通る直線上の点２５１０を複数設定する。次に、点２５０５の輝度と点２５１０の各々の輝度との差の絶対値を全て加算する。この作業を複数の方向について行い、最も値の小さい方向が隆線の方向と一致していると判断する。
【００８５】
図１３は、隆線方向算出処理の処理フローを示す図である。
【００８６】
まず、角度を０度に初期化する（Ｓ２６００）。ここでは、０度から２０度ごとに１６０度までのそれぞれの角度について処理を行うものとする。また、角度ごとの評価値の値を０に初期化する。
【００８７】
次に、参照点の位置を初期化し、その座標を算出する（Ｓ２６０５）。具体的には、図１２の点２５０５のように隆線方向を算出しようとしている点（以下、基準点と呼ぶ）を通る直線上の点である。ここでは、図１２に示すように、４つの点を参照点として使う。
【００８８】
次に、参照点の輝度と基準点の輝度の差の絶対値を算出し、対応する角度に割り当てられた評価値に加算する（Ｓ２６１０）。
【００８９】
次に、参照点を移動し、その座標を算出する（Ｓ２６１５）。
【００９０】
次に、全ての参照点について処理を終了したか否かを判別し（Ｓ２６２０）、その結果、全ての参照点について処理が終わっていなければ（Ｓ２６２０：ＮＯ）、ステップＳ２６１０に戻り、前述した処理を繰り返す。
【００９１】
一方、全ての参照点について処理を終了していれば（Ｓ２６２０：ＹＥＳ）、角度に２０度を加算し（Ｓ２６２５）、角度が１８０度に達しているか否かを判別する（Ｓ２６３０）。その結果、角度が１８０度に達していなければ（Ｓ２６３０：ＮＯ）、ステップＳ２６０５に戻って、前述した処理を繰り返す。
【００９２】
一方、角度が１８０度に達していれば（Ｓ２６３０：ＹＥＳ）、各々の角度に割り当てられた評価値のうち、最小の値を持つ角度を算出する（Ｓ２６３５）。最小の値を持つ角度が基準点における隆線の方向となる。
【００９３】
以上説明したように、本実施形態におけるコア位置検出処理では、コアを検出する際に隆線の垂線方向ベクトルを探索し、垂線方向ベクトルが大きく変化する位置を多数決によってコアと決定することで、少ない計算量でコアの位置を検出ことができる。
【００９４】
次に、本実施形態における照合処理について説明する。
【００９５】
図１４は、本実施形態における照合処理の概略フローを示す図である。本処理は、リーダライタ１１０とＩＣカード１００とが通信をしながら行うため、同図の左側にリーダライタ１１０の処理を、右側にＩＣカード１００の処理を記載している。
【００９６】
同図に示すように、ＩＣカード１００で行われる処理には、補正ベクトル算出処理Ｓ１１９０と、チップ位置算出処理Ｓ１１９１と、チップマッチング処理Ｓ１１９２とがあり、それぞれは、ＩＳＯ７８１６−４などで定義されるコマンドとしてＩＣカード１００に実装されている。
【００９７】
まず、リーダライタ１１０がＩＣカード１００の補正ベクトル算出処理Ｓ１１９０を呼び出す（Ｓ１１００）。この際、中間指紋情報に記録した入力指紋のコアの座標をパラメータとして渡す。具体的には、ＩＳＯ７８１６−４に記載のＡＰＤＵ（Application Protocol Data Unit）をＩＣカード１００に送信することで処理を呼び出す。
【００９８】
図１５は、補正ベクトル算出処理を呼び出すためのＡＰＤＵの例を示す図である。同図に示すように、ＡＰＤＵ１５００のＩＮＳフィールドに、補正ベクトル算出処理のコマンドＩＤを代入し、データフィールドに、コアのＸ座標、Ｙ座標を代入し、Ｌｃフィールドに、座標のデータ長を代入している。
【００９９】
ＩＣカード１００は、リーダライタ１１０からＡＰＤＵ１５００を受信すると、補正ベクトル算出処理を起動する（Ｓ１１９０）。補正ベクトル算出処理は、リーダライタ１１０から受け取った入力指紋のコアの座標と、あらかじめＩＣカード１００に記録された登録指紋のコア位置の差分ベクトルを、両者の位置ずれを表す補正ベクトルとして算出し、ＩＣカード１００のＲＡＭ２３０に記録する。その後、リーダライタ１１０に応答する。具体的には、ＩＳＯ７８１６−４に記載の応答ＡＰＤＵ（Response Application Protocol Data Unit）をリーダライタ１１０に出力することで応答する。
【０１００】
図１６は、補正ベクトル算出処理Ｓ１１９０の応答ＡＰＤＵの例を示す図である。同図に示すように、応答ＡＰＤＵ１５１０は、ＳＷ１フィールドにコマンドのステータスを含み、ここにコマンドの処理結果として、正常終了あるいは異常終了を示すコードを代入する。補正ベクトル算出処理Ｓ１１９０の詳細は後述する。
【０１０１】
リーダライタ１１０は、ＩＣカード１００からの応答ＡＰＤＵ１５１０を受けとると（Ｓ１１０５）、応答ＡＰＤＵ１５１０のステータスをチェックする（Ｓ１１０７）。その結果、エラーであれば（Ｓ１１０７：ＹＥＳ）、処理を終了する。
【０１０２】
一方、エラーでなければ（Ｓ１１０７：ＮＯ）、チップマッチングを行うための入力指紋の部分画像を切り出す座標を取得するため、チップ位置算出処理を呼び出す（Ｓ１１１０）。
【０１０３】
図１７は、チップ位置算出処理を呼び出すためにＩＣカード１００に送信されるＡＰＤＵの例を示す図である。同図に示すように、ＡＰＤＵ１５２０のＩＮＳフィールドには、チップ位置算出処理のコマンドＩＤが代入され、Ｌｅフィールドには、戻り値となる座標のデータ長が代入される。
【０１０４】
ＩＣカード１００は、ＡＰＤＵ１５２０をリーダライタ１１０から受信すると、チップ位置算出処理を起動する（Ｓ１１９１）。チップ位置算出処理は、あらかじめ記録された登録指紋の特徴点の座標と、ステップＳ１１９０で算出した補正ベクトルから、入力指紋における特徴点の座標を算出する。具体的には、登録指紋の特徴点の座標に補正ベクトルを加えることで、入力指紋での特徴点の座標を算出する。その後、応答ＡＰＤＵを使ってリーダライタ１１０に応答する。
【０１０５】
図１８は、チップ位置算出処理Ｓ１１９１の応答ＡＰＤＵの例を示す図である。同図に示すように、応答ＡＰＤＵ１５３０のデータフィールドには、特徴点の座標が代入され、ＳＷ１フィールドには、コマンドのステータスが代入される。チップ位置算出処理Ｓ１１９１の詳細は後述する。
【０１０６】
リーダライタ１１０は、応答ＡＰＤＵ１５３０を受信すると（Ｓ１１１５）、応答ＡＰＤＵ１５３０の内容を解析し、異常終了したか否かや、指定された特徴点の位置が不正か否かを調べる（Ｓ１１１７）。その結果、指定された特徴点の位置が不正な場合は（Ｓ１１１７：ＹＥＳ）、ステップＳ１１１０に戻り、別のチップ画像について、チップ位置算出処理を呼び出す。また、異常終了していた場合は（Ｓ１１１７：異常終了）、処理を終了する。
【０１０７】
一方、適当な特徴点の位置が得られた場合は（Ｓ１１１７：ＮＯ）、チップ位置算出処理によって指定された座標周辺の部分画像を切り取る（Ｓ１１２０）。部分画像は、チップ画像よりやや大きめの画像であり、その大きさや形状はあらかじめ決められている。
【０１０８】
次に、ＩＣカード１００のチップマッチング処理を呼び出す（Ｓ１１２５）。この際、データとしてステップＳ１１２０で抽出した部分画像を送信する。具体的な呼び出しの方法は、ステップＳ１１００と同様である。
【０１０９】
図１９は、チップマッチング処理を呼び出すためのＡＰＤＵの例を示す図である。同図に示すように、ＡＰＤＵ１５４０のＩＮＳフィールドには、チップマッチング処理のコマンドＩＤが代入され、Ｌｃフィールドには、部分画像のデータ長が代入され、データフィールドには、部分画像が代入される。
【０１１０】
ＩＣカード１００は、リーダライタ１１０からＡＰＤＵ１５４０を受信すると、チップマッチング処理を起動する（Ｓ１１９２）。チップマッチング処理は、受信した入力指紋の部分画像と、あらかじめＩＣカード１００に記録されたチップ画像とのチップマッチング処理を行い、一致していればチップの一致数をインクリメントする。そして、全ての特徴点についてマッチングが終了した場合は、指紋の一致又は不一致をあらわすステータスを応答し、それ以外は、次の特徴点をマッチングするためのステータスを応答する。
【０１１１】
図２０は、チップマッチング処理の応答ＡＰＤＵの例を示す図である。同図に示すように、応答ＡＰＤＵ１５５０のＳＷ１フィールドに、コマンドのステータスを代入する。具体的には、コマンドの処理結果として、指紋の一致、不一致、あるいは処理継続を示すコードを代入する。チップマッチング処理Ｓ１１９２の詳細は後述する。
【０１１２】
リーダライタ１１０は、チップマッチング処理の応答ＡＰＤＵ１５５０を受信すると、応答ＡＰＤＵ１５５０のステータスを解析し、処理を終了するか否かを判別する（Ｓ１１３５）。その結果、指紋の一致あるいは不一致の結果が得られていれば（Ｓ１１３５：ＹＥＳ）、処理を終了する。一方、それ以外は、ステップＳ１１１０に戻り、残りの特徴点についてのマッチングを行う。
【０１１３】
次に、前述した補正ベクトル算出処理Ｓ１１９０について説明する。
【０１１４】
図２１は、補正ベクトル算出処理Ｓ１１９０の詳細フローを示す図である。
【０１１５】
ＩＣカード１００は、リーダライタ１１０からＡＰＤＵ１５００を受け取ると、ＡＰＤＵ１５００に含まれた照合画像のコア位置を示すＸ座標およびＹ座標をＲＡＭ２３０に記録する（Ｓ１９００）。
【０１１６】
次に、チップマッチングを行うチップ画像のインデックス（チップ画像インデックス）ｋを０に初期化し（Ｓ１９０５）、一致チップ数を示す変数Ｍを０に初期化する（Ｓ１９０７）。
【０１１７】
次に、リーダライタ１１０から送られてきた照合画像のコア位置およびあらかじめＩＣカード１００に記録された指紋情報（図３）のコアの座標を用いて補正ベクトルを算出する（Ｓ１９１０）。具体的には、照合画像のコアの座標から指紋情報のコアの座標を引くことで、補正ベクトルを算出する。
【０１１８】
次に、算出した補正ベクトルの大きさなどの正当性を検証する（Ｓ１９１５）。その結果、適当な補正ベクトルが得られた場合は（Ｓ１９１５：ＹＥＳ）、応答ＡＰＤＵのステータスに正常終了を示すコードを代入し（Ｓ１９２０）、その応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ１９２５）。一方、不正な補正ベクトルが得られた場合は（Ｓ１９１５：ＮＯ）、応答ＡＰＤＵのステータスに異常終了を示すコードを代入し（Ｓ１９１７）、その応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ１９２５）。
【０１１９】
以上のようにして、補正ベクトル算出処理Ｓ１１９０が行われる。
【０１２０】
次に、前述したチップ位置算出処理Ｓ１１９１について説明する。
【０１２１】
図２２は、チップ位置算出処理Ｓ１１９１の詳細フローを示す図である。
【０１２２】
ＩＣカード１００は、チップ位置算出処理Ｓ１１９１を起動するＡＰＤＵ１５２０をリーダライタ１１０から受信すると（Ｓ２０００）、チップ画像インデックスｋをインクリメントし（Ｓ２００２）、チップ画像インデックスｋが指紋情報に記録されたチップの数（＝３０）以下か否かを判定する（Ｓ２００５）。その結果、ｋが指紋情報に記録されたチップの数より大きい場合には（Ｓ２００５：ＮＯ）、応答ＡＰＤＵのステータスに異常終了を示すコードを代入し（Ｓ２０４５）、その応答ＡＰＤＵをリーダライタ１１０に送信し（Ｓ２０３５）、処理を終了する。
【０１２３】
一方、チップ画像インデックスｋが指紋情報に記録されたチップ画像の数以下の場合には（Ｓ２００５：ＹＥＳ）、指紋情報に記録されたｋ番目のチップ画像の座標を補正する（Ｓ２０１０）。具体的には、ｋ番目のチップ画像の座標に補正ベクトルを足すことで補正する。
【０１２４】
次に、補正後のチップの座標が、照合画像に含まれているか否かを検証する（Ｓ２０１５）。その結果、含まれていない場合は（Ｓ２０１５：ＮＯ）、応答ＡＰＤＵのステータスに特徴点の位置不正を示すコードを代入し（Ｓ２０４０）、その応答ＡＰＤＵをリーダライタ１１０に送信し（Ｓ２０３５）、処理を終了する。
【０１２５】
一方、補正後のチップの座標が照合画像に含まれている場合は（Ｓ２０１５：ＹＥＳ）、応答ＡＰＤＵのデータフィールドに補正後のチップの座標を代入する（Ｓ２０２５）。更に、応答ＡＰＤＵのステータスに正常終了を示すコードを代入し（Ｓ２０３０）、その応答ＡＰＤＵをリーダライタ１１０に送信し（Ｓ２０３５）、処理を終了する。
【０１２６】
以上のようにして、チップ位置算出処理Ｓ１１９１が行われる。
【０１２７】
次に、前述したチップマッチング処理Ｓ１１９２について説明する。
【０１２８】
図２３は、チップマッチング処理Ｓ１１９２の詳細フローを示す図である。
【０１２９】
ＩＣカード１００は、リーダライタ１１０からチップマッチング処理Ｓ１１９２を起動するＡＰＤＵ１５４０を受信すると、データフィールドに記録された部分画像をＲＡＭ２３０に記録する（Ｓ２１００）。
【０１３０】
次に、チップ画像インデックスｋが、あらかじめ指紋情報に記録されたチップの数（＝３０）以下か否かを検証する（Ｓ２１０５）。その結果、インデックスｋがチップの数より大きい場合（Ｓ２１０５：ＮＯ）、応答ＡＰＤＵのステータスに指紋が不一致であることを示すコードを代入し（Ｓ２１５０）、その応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ２１４０）。
【０１３１】
一方、インデックスｋがチップ画像数以下の場合は（Ｓ２１０５：ＹＥＳ）、部分画像とｋ番目のチップ画像のマッチング（チップマッチング）を行い、部分画像においてチップ画像と一致したか否かを示すコードを出力する（Ｓ２１１０）。このマッチングの具体的な方法は後述する。
【０１３２】
次に、チップ画像と部分画像が一致したか否かを調べ（Ｓ２１１５）、一致しなかった場合は（Ｓ２１１５：ＮＯ）、応答ＡＰＤＵのステータスに照合を継続することを示すコードを代入し（Ｓ２１４５）、その応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ２１４０）。
【０１３３】
一方、チップ画像と部分画像が一致した場合は（Ｓ２１１５：ＹＥＳ）、一致チップ数Ｍをインクリメントし（Ｓ２１２０）、一致チップ数Ｍがあらかじめ定めたしきい値（＝２０）より大きいか否かを判定する（Ｓ２１２５）。その結果、Ｍがしきい値以下である場合は（Ｓ２１２５：ＮＯ）、応答ＡＰＤＵのステータスに照合を継続することを示すコードを代入し（Ｓ２１４５）、その応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ２１４０）。
【０１３４】
一方、Ｍがしきい値より大きい場合は（Ｓ２１２５：ＹＥＳ）、照合画像とあらかじめＩＣカード１００に記録された指紋情報が一致したと判断し、ＩＣカード１００が相互認証を行うための秘密鍵２４２を使用可能にする（Ｓ２１３０）。
【０１３５】
次に、応答ＡＰＤＵのステータスに指紋が一致したことを示すコードを代入し（Ｓ２１３５）、その応答ＡＰＤＵをリーダライタ１１０に送信して（Ｓ２１４０）、処理を終了する。
【０１３６】
次に、前述したチップマッチング処理Ｓ１１９２で行われるマッチング処理Ｓ２１１０の詳細について説明する。
【０１３７】
本処理では、図２４に示すように、部分画像上をらせん状の軌道に従って移動しつつ、部分画像の一部とチップ画像とが一致しているか否かを判定する。なお、軌道はらせん状でなくともよい。
【０１３８】
また、本実施形態では、不一致ビット数検索テーブルをＲＯＭ２５０またはＥＥＰＲＯＭ２４０にあらかじめ用意しておき、チップ画像と部分画像を比較したときの一致しないビットの数を数える際、その不一致ビット数検索テーブルを利用する。
【０１３９】
図２５は、不一致ビット数検索テーブルの構成例を示す図である。同図に示すように、本テーブルは、インデックスを２進数で表現したときの１の数を記録したものである。例えば、インデックス３（＝１１ｂ）に対しては、２が記録され、インデックス４（＝１００ｂ）に対しては、１が記録される。ここでは、チップ画像と部分画像とを８ビット単位で比較することに対応して、０から２５５までの２５６要素のテーブルを用意する。
【０１４０】
図２６は、マッチング処理Ｓ２１１０の詳細フローを示す図である。
【０１４１】
まず、部分画像上の照合位置を初期化する（Ｓ２２００）。例えば、チップ画像が部分画像の中央部にくるような位置を最初の照合位置とする。
【０１４２】
次に、照合位置に従って部分画像からチップ画像と同じ大きさの画像を切り出し、ＲＡＭ２３０上に確保された照合用画像バッファにコピーする（Ｓ２２０５）。例えば、チップ画像が１６ピクセル四方であるとすると、１ピクセルあたりが１ビットに対応するので必要となる照合用画像バッファは２５６ビット、すなわち３２バイトとなる。この場合、チップ画像も同様に３２バイトの領域を持ち指紋情報の一部としてＥＥＰＲＯＭ２４０に格納されている。
【０１４３】
次に、チップ画像と照合用画像バッファとの間で一致しないビット数を示す不一致ビット数を０に初期化し（Ｓ２２１０）、チップ画像と照合用画像バッファの比較対象位置を示すオフセットを０に初期化する（Ｓ２２１５）。
【０１４４】
次に、チップ画像および照合用画像バッファのオフセット位置のデータの排他的論理和をとり、結果をＲＡＭ２３０に保存する（Ｓ２２２０）。ここでは、１バイト単位で、排他的論理和をとるものとする。
【０１４５】
次に、排他的論理和の結果をインデックスとして、不一致ビット数検索テーブルを参照し、得られた数を、不一致ビット数に加算する（Ｓ２２３０）。
【０１４６】
次に、不一致ビット数があらかじめ定めたしきい値（＝３０）以上であるか否かを判別する（Ｓ２２３５）。その結果、不一致ビット数があらかじめ定めたしきい値未満である場合は（Ｓ２２３５：ＮＯ）、チップ画像および照合用画像バッファの全てのデータについて計算を行い、オフセットが最後まで達したかどうかを調べ（Ｓ２２４０）、最後まで達していなければ（Ｓ２２４０：ＮＯ）、オフセットに１を加算し（Ｓ２２４３）、オフセットの示すチップ画像および照合用画像バッファの排他的論理和をとる処理Ｓ２２２０に戻り、前述した処理を繰り返す。
【０１４７】
一方、オフセットが最後まで達していた場合は（Ｓ２２４０：ＹＥＳ）、チップ画像が部分画像と一致したことを示すコードを出力し（Ｓ２２４５）、処理を終了する。
【０１４８】
また、ステップＳ２２３５における判別の結果、不一致ビット数があらかじめ定めたしきい値以上であった場合は（Ｓ２２３５：ＹＥＳ）、部分画像全体にわたって照合したか否かを調べ（Ｓ２２３７）、まだ照合していない照合位置がある場合は（Ｓ２２３７：ＮＯ）、照合位置を移動させ（Ｓ２２３８）、ステップＳ２２０５に戻って、前述した処理を繰り返す。
【０１４９】
一方、最後まで照合していれば（Ｓ２２３７：ＹＥＳ）、チップが部分画像と一致しなかったことを示すコードを出力し（Ｓ２２３９）、処理を終了する。
【０１５０】
以上のようにして、チップマッチング処理が行われる。
【０１５１】
以上の説明では、照合処理において、指紋のコアの位置を使って補正ベクトルの算出を行っていたが、他の方法で補正ベクトルを算出するようにしてもよい。
【０１５２】
次に、特徴点の分布の相互相関を使って、補正ベクトルを算出する方法について説明する。この場合、前述した前処理等において、コア位置の検出等を行う必要がなくなる。
【０１５３】
以下、ＩＣカード１００において補正ベクトルを算出する場合とリーダライタ１１０において補正ベクトルを算出する場合について説明する。まず、ＩＣカード１００において、補正ベクトルを算出する場合について説明する。
【０１５４】
この場合、前述した照合処理と異なる部分は、図１４のステップＳ１１００において、リーダライタ１１０がＩＣカード１００に送信するＡＰＤＵと、そのＡＰＤＵによって呼び出される補正ベクトル算出処理Ｓ１１９０の内容のみである。
【０１５５】
図２７は、図１４に示したステップＳ１１００において、補正ベクトル算出処理Ｓ１１９０を呼び出すためにリーダライタ１１０がＩＣカード１００に送信するＡＰＤＵの例を示す図である。同図に示すように、ＡＰＤＵ２７００のＩＮＳフィールドには、対応するコマンドＩＤが代入され、データフィールドには、前処理で抽出した入力指紋のすべての特徴点の座標が代入される。
【０１５６】
図２８は、ＡＰＤＵ２７００によって呼び出される補正ベクトル算出処理Ｓ１１９０の詳細フローを示す図である。
【０１５７】
ＩＣカード１００は、ＡＰＤＵ２７００を受信すると（Ｓ２８００）、送られてきた入力指紋の特徴点の座標を使って、入力指紋の特徴点マップを生成する（Ｓ２８０５）。特徴点マップとは、各特徴点の座標の周辺に特定の輝度分布を持った画像をいう。図２９は、特徴点マップの例を示す図である。特徴点座標の周辺の輝度分布の形状や大きさ等については、実装条件に応じて、適当なものが選択される。
【０１５８】
入力指紋について特徴点マップを生成すると、次に、指紋情報に記録された登録指紋の特徴点の座標から、同様に特徴点マップを生成する（Ｓ２８１０）。
【０１５９】
そして、入力指紋と登録指紋の特徴点マップを二次元信号とみなして正規化された相互相関を算出する（Ｓ２８１５）。相互相関の算出は、通常用いられている方法、例えば、「ディジタル画像処理」（ローゼンフェルド他、近代科学社、１９７８年発行）３０６頁に記載されている方法を用いて行う。
【０１６０】
次に、正規化された相互相関値の最も大きい位置を検出し、このときの位置ずれを、補正ベクトルとしてＩＣカード１００のＲＡＭ２３０に記録する（Ｓ２８２０）。
【０１６１】
そして、図１６に示した応答ＡＰＤＵ１５１０に、適当なステータスを代入し、リーダライタ１１０に送信する（Ｓ２８２５）。
【０１６２】
次に、リーダライタ１１０で補正ベクトルを算出する場合について説明する。
【０１６３】
この場合、図１４に示したステップＳ１１００、Ｓ１１９０、Ｓ１１０５を図３０に示すような処理で置き換える。
【０１６４】
以下、図３０に示した処理について説明する。
【０１６５】
照合処理が開始されると、まず、リーダライタ１１０は、登録指紋の特徴点の座標の送信を要求するＡＰＤＵをＩＣカード１００に送信する（Ｓ３０００）。
【０１６６】
図３１は、登録指紋の特徴点の座標の送信を要求するＡＰＤＵの例を示す図である。同図にしめすように、ＡＰＤＵ２７１０のＩＮＳフィールドには、適当なコマンドＩＤが代入され、Ｌｅフィールドには、ＩＣカード１００から返信される特徴点の座標データの長さが格納される。
【０１６７】
ＩＣカード１００は、ＡＰＤＵ２７１０を受信すると、ＩＣカード１００の指紋情報に記録された特徴点の座標を、図３２に示すような応答ＡＰＤＵのデータフィールドに格納し、リーダライタ１１０に送信する（Ｓ３０９０）。
【０１６８】
リーダライタ１１０は、ＩＣカード１００から応答ＡＰＤＵ２７２０を受信すると（Ｓ３００５）、図２８に示した方法と同様に、特徴点マップを生成することにより、補正ベクトルを算出し、リーダライタ１１０のＲＡＭ３２０に記録する（Ｓ３０１０）。
【０１６９】
次に、リーダライタ１１０は、ＩＣカード１００に補正ベクトルを記録させるためのコマンドを発行する（Ｓ３０１５）。具体的には、図１５に示すＡＰＤＵ１５００と同形式のＡＰＤＵをＩＣカード１００に送信する。
【０１７０】
ＩＣカードは、そのＡＰＤＵを受信すると、ＡＰＤＵに格納されている補正ベクトルをＩＣカード１００のＲＡＭ２３０に記録し、図１６に示すような応答ＡＰＤＵをリーダライタ１１０に送信する（Ｓ３０９５）。
【０１７１】
リーダライタ１１０は、応答ＡＰＤＵを受け取ると（Ｓ３０２０）、応答ＡＰＤＵのステータスをチェックする処理Ｓ１１０７に進む。
【０１７２】
以上のように、コアの位置ではなく、特徴点マップにより補正ベクトルを求める場合であっても、指紋画像全体（又は、その一部）についてマッチングをする場合に比べて、高速に補正ベクトルを求めることができる。更に、特徴点の周辺に持たせる輝度分布の大きさを調整することで、指紋に歪みや回転が生じていても正確な位置補正を行うことができる。
【０１７３】
以上詳細に説明したように、本発明による本人認証システムによれば、利用者固有の情報をＩＣカードにより個人管理するので、サーバ等で集中管理する場合に比べて、利用者の受容性を改善することができる。また、一度に多数の生体情報が盗難される可能性を軽減し、生体情報の記録管理にかかるコストを低減することができる。
【０１７４】
また、指紋情報および指紋照合機能を、ＩＣカードの内部に実装し、外部からの指紋情報および指紋照合機能へのアクセスを禁止することで、利用者の指紋情報および照合結果の偽造、改ざん、盗用を困難にし、なりすましを防ぐことができる。
【０１７５】
また、指紋入力機能および指紋照合の前処理機能をリーダライタに実装することで、一般的なＩＣカードのＣＰＵで指紋照合を行える。
【０１７６】
更に、指紋照合機能を、ＩＣカードとリーダライタとに分けて実装しているので、照合処理が解析されずらくなる。
【０１７７】
また、指紋の特徴的な構造であるコアの座標をＩＣカードの指紋情報に記録し、前処理によってあらたに入力した指紋画像からコアの座標を検出することで、指紋情報に記録された特徴点の座標を補正し、指紋情報に記録したチップ画像を、指紋画像上の補正された座標周辺でチップマッチングによって探索し、一致したチップ画像の個数をもって指紋情報と指紋画像の同一性を判定することで、ＲＡＭ容量の小さいＩＣカードでも指紋照合を行える。
【０１７８】
また、チップマッチングの際に、不一致のビットの数をあらかじめ記録した不一致ビット数検索テーブルを用いて、チップマッチングで不一致となったビット数を算出し、ビット数があらかじめ設定したしきい値を越えた場合にはチップマッチングを終了して次の処理に移行することで、演算速度の遅いＩＣカードを用いて指紋照合を行える。
【０１７９】
なお、上記実施形態では、生体情報として指紋を用いる場合について説明したが、他の生体情報を用いることも可能である。
【０１８０】
例えば、生体情報として虹彩を用いる場合は、図１のリーダライタ１１０は、指紋入力部１１３のかわりに、虹彩情報を入力するための虹彩情報入力部を備え、前処理部１１２は、入力された虹彩画像の前処理を行い、虹彩照合に必要なアイリスコードを算出する。アイリスコードの算出は、例えば、文献：IEEE Transactions on pattern analysis and machine intelligence, Vol.15, No.11, Nov.1993, pp.1148-1161（以下、文献４という）に記載されている方法を使って行う。
【０１８１】
このようにして算出されたアイリスコードは、ＩＣカード１００に送信される。なお、アイリスコードのＩＣカード１００への送信は、一度の送信で行うようにすればよい。
【０１８２】
図１のＩＣカード１００には、指紋情報１０４のかわりに生体情報のテンプレートとしてアイリスコードが記録される。リーダライタ１１０からアイリスコードを受信すると、ＩＣカード１００内の虹彩照合プログラムは、リーダライタ１１０から送信されたアイリスコードと、ＩＣカード１００内のＥＥＰＲＯＭ等に記録されているアイリスコードとの照合を行う。当該照合は、例えば、文献４に記載された方法で、アイリスコードのハミング距離を算出し、算出したハミング距離が所定のしきい値以下であるか否かによって行う。そして、算出したハミング距離がしきい値以下であった場合は、アイリスコードが一致したと判断し、指紋の場合と同様に、電子認証処理部１０３の認証情報１０５へのアクセスを許可し、アプリケーション１３１と電子認証部１０３との間で電子認証を行う。
【図面の簡単な説明】
【０１８３】
【図１】本発明によるアクセス管理システムの概略を説明するための図である。
【図２】本発明によるＩＣカードの構造を示す図である。
【図３】指紋情報２４３の構成例を示す図である。
【図４】本発明によるリーダライタの構造を示す図である。
【図５】指紋照合の概略フローを示す図である。
【図６】指紋のコアおよび特徴点の例を示す図である。
【図７】前処理の概略フローを示す図である。
【図８】コア位置検出処理を説明するための概念図である。
【図９】コア探索処理の詳細フローを示す図である。
【図１０】コア探索処理における候補点算出テーブルの構成例を示す図である。
【図１１】コア探索処理におけるコア探索結果テーブルの構成例を示す図である。
【図１２】隆線方向算出方法の概念図である。
【図１３】隆線方向算出処理の詳細フローを示す図である。
【図１４】照合処理の概略フローを示す図である。
【図１５】補正ベクトル算出処理を呼び出すＡＰＤＵの例を示す図である。
【図１６】補正ベクトル算出処理からの応答ＡＰＤＵの例を示す図である。
【図１７】チップ位置算出処理を呼び出すＡＰＤＵの例を示す図である。
【図１８】チップ位置算出処理からの応答ＡＰＤＵの例を示す図である。
【図１９】チップマッチング処理を呼び出すＡＰＤＵの例を示す図である。
【図２０】チップマッチング処理からの応答ＡＰＤＵの例を示す図である。
【図２１】補正ベクトル算出処理の詳細フローを示す図である。
【図２２】チップ位置算出処理の詳細フローを示す図である。
【図２３】チップマッチング処理の詳細フローを示す図である。
【図２４】チップマッチング処理の概念を示す図である。
【図２５】不一致ビット数検索テーブルの構成例を示す図である。
【図２６】マッチング処理の詳細フローを示す図である。
【図２７】第２の補正ベクトル算出処理を呼び出すＡＰＤＵの例を示す図である。
【図２８】第２の補正ベクトル算出処理の詳細フローを示す図である。
【図２９】特徴点マップの例を示す図である。
【図３０】リーダライタ１１０で補正ベクトルを算出する場合の処理フローを示す図である。
【図３１】登録指紋の特徴点の座標の送信を要求するＡＰＤＵの例を示す図である。
【図３２】特徴点位置送出処理からの応答ＡＰＤＵの例を示す図である。
【符号の説明】
【０１８４】
１００  ＩＣカード
１１０  リーダライタ
１２０  端末
１３０  ホストコンピュータ
１４０  ネットワーク
【図１】
2006073021.tif 000003
【図２】
2006073021.tif 000004
【図３】
2006073021.tif 000005
【図４】
2006073021.tif 000006
【図５】
2006073021.tif 000007
【図６】
2006073021.tif 000008
【図７】
2006073021.tif 000009
【図８】
2006073021.tif 000010
【図９】
2006073021.tif 000011
【図１０】
2006073021.tif 000012
【図１１】
2006073021.tif 000013
【図１２】
2006073021.tif 000014
【図１３】
2006073021.tif 000015
【図１４】
2006073021.tif 000016
【図１５】
2006073021.tif 000017
【図１６】
2006073021.tif 000018
【図１７】
2006073021.tif 000019
【図１８】
2006073021.tif 000020
【図１９】
2006073021.tif 000021
【図２０】
2006073021.tif 000022
【図２１】
2006073021.tif 000023
【図２２】
2006073021.tif 000024
【図２３】
2006073021.tif 000025
【図２４】
2006073021.tif 000026
【図２５】
2006073021.tif 000027
【図２６】
2006073021.tif 000028
【図２７】
2006073021.tif 000029
【図２８】
2006073021.tif 000030
【図２９】
2006073021.tif 000031
【図３０】
2006073021.tif 000032
【図３１】
2006073021.tif 000033
【図３２】
2006073021.tif 000034