(57)【要約】【課題】装置内で認証処理をおこなうセルフ認証モジュールを有する生体認証システムにおいて、個人情報の盗用や内部に保存した生体データの改竄を防止し、またモジュールの偽造を防止する。【解決手段】生体認証モジュールとホスト装置が接続され通信をおこなう生体認証システムにおいて、ホスト・モジュール間の通信プロトコルを定義して、所定のコマンドに対するレスポンスによる動作形態とする。生体データである認証をおこなうユーザのテンプレートの登録は、管理者の管理下においておこなうようにし、テンプレートの登録動作はテンプレートのハッシュ値を、ホスト側に通信しておこなう。ホスト側では、これにデジタル署名を与え、この署名に関するデータを生体認証モジュールに送信して、テンプレートと共に保存する。そして、チャレンジ＆レスポンスの仕組みによりモジュール内のデータ検証をホスト側からおこなうようにし、認証の結果もチャレンジ＆レスポンスの仕組みにより個々の認証要求との対応付けができるようにする。【選択図】  図４
2013161104.tif 000002
【特許請求の範囲】
【請求項１】
生体認証装置とホスト装置からなり、前記生体認証装置と前記ホスト装置が接続され通信をおこなう生体認証システムにおいて、
前記生体認証装置は、
生体データを登録して格納する記憶手段と、
前記記憶手段に登録して格納された生体データと、入力された生体データとを照合して認証する認証手段と、
データに関するハッシュ値を計算するハッシュ値計算手段と、
前記登録して格納された生体データに関するハッシュ値を、前記ホスト装置に送信する送信手段と、
前記送信したハッシュ値に対応する署名コードを、前記ホスト装置から受信する受信手段と、
前記ハッシュ値と対応付けて、前記署名コードを記憶する記憶手段とを有し、
前記ホスト装置は、
前記生体認証装置から前記登録して格納された生体データに関するハッシュ値を受信する受信手段と、
前記生体認証装置から受信した前記ハッシュ値に対応する署名コードを生成する署名コード生成手段と、
前記生成した署名コード値を、前記生体認証装置に送信する送信手段と、
前記受信したハッシュ値と対応付けて、前記署名コードを記憶する記憶手段とを有し、
前記生体認証装置は、前記署名コードに基づき、前記記憶手段に登録して格納された生体データに関する情報の正当性を検証することを特徴とする生体認証システム。
【請求項２】
前記ホスト装置は、乱数データと前記生体データに関する情報を、前記生体認証装置に送信し、
前記生体認証装置は、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データを含む生体認証装置内のデータに対するハッシュ値を計算して、前記ホスト装置に送信し、
前記ホスト装置は、前記生体認証装置に送信した前記生体データに関する情報に対応する署名コードにより、送信した前記乱数データを含むホスト装置内のデータに対するハッシュ値を計算し、前記生体認証装置から受信したハッシュ値と一致するか否かを検証することを特徴とする請求項１記載の生体認証システム。
【請求項３】
前記ホスト装置は、乱数データとユーザを一意に識別するユーザＩＤと前記生体データに関する情報を、前記生体認証装置に送信し、
前記生体認証装置は、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データと前記ユーザＩＤのハッシュ値を計算して、前記ホスト装置に送信し、
前記ホスト装置は、前記生体認証装置に送信した前記生体データに関する情報に対応する署名コードにより、送信した前記乱数データと前記ユーザＩＤのハッシュ値を計算し、前記生体認証装置から受信したハッシュ値と一致するか否かを検証することにより、前記生体認証装置における生体認証の認否を判断することを特徴とする請求項１記載の生体認証システム。
【請求項４】
前記生体認証装置は、
さらに、装置を一意に識別する機器ＩＤを保持する機器ＩＤ保持手段を有し、
前記機器ＩＤ保持手段から読み出した機器ＩＤと前記生体データを組み合わせて、前記ホスト装置に送信するハッシュ値を計算することを特徴とする請求項１記載の生体認証システム。
【請求項５】
ホスト装置と接続され、前記生体認証装置と前記ホスト装置と通信をおこなう生体認証装置において、
前記生体認証装置は、
生体データを登録して格納する記憶手段と、
前記記憶手段に登録して格納された生体データと、入力された生体データとを照合して認証する認証手段と、
データに関するハッシュ値を計算するハッシュ値計算手段と、
前記登録して格納された生体データに関するハッシュ値を、前記ホスト装置に送信する送信手段と、
前記送信したハッシュ値に対応する署名コードを、前記ホスト装置から受信する受信手段と、
前記ハッシュ値と対応付けて、前記署名コードを記憶する記憶手段とを有し、
前記生体認証装置は、前記ホスト装置から受信した署名コードに基づき、前記記憶手段に登録して格納された生体データに関する情報の正当性を検証することを特徴とする生体認証装置。
【請求項６】
前記生体認証装置は、前記ホスト装置から乱数データと前記生体データに関する情報を受信し、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データを含む生体認証装置内のデータに対するハッシュ値を計算して、前記ホスト装置に送信することを特徴とする請求項５記載の生体認証装置。
【請求項７】
前記生体認証装置は、前記ホスト装置から乱数データと前記生体データに関する情報を受信し、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データを含む生体認証装置内のデータに対するハッシュ値を計算して、前記ホスト装置に送信することを特徴とする請求項５記載の生体認証装置。
【請求項８】
生体認証装置とホスト装置からなり、前記生体認証装置と前記ホスト装置が接続され通信をおこなう生体認証システムによる生体認証方法において、
前記生体認証装置が、生体データを登録して格納するステップと、
前記生体認証装置が、前記記憶手段に登録して格納された生体データと、入力された生体データとを照合して認証する認証手段と、
前記生体認証装置が、データに関するハッシュ値を計算するステップと、
前記生体認証装置が、前記登録して格納された生体データに関するハッシュ値を、前記ホスト装置に送信するステップと、
前記生体認証装置が、前記送信したハッシュ値に対応する署名コードを、前記ホスト装置から受信するステップと、
前記生体認証装置が、前記受信したハッシュ値と対応付けて、前記署名コードを記憶するステップと、
前記ホスト装置が、前記生体認証装置から前記登録して格納された生体データに関するハッシュ値を受信するステップと、
前記ホスト装置が、前記生体認証装置から受信した前記ハッシュ値に対応する署名コードを生成する署名コード生成手段と、
前記ホスト装置が、前記生成した署名コード値を、前記生体認証装置に送信するステップと、
前記ホスト装置が、前記受信したハッシュ値と対応付けて、前記署名コードを記憶するステップと、
前記ホスト装置が、乱数データと前記生体データに関する情報を、前記生体認証装置に送信するステップと、
前記生体認証装置が、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データを含む生体認証装置内のデータに対するハッシュ値を計算して、前記ホスト装置に送信し、
前記ホスト装置が、前記生体認証装置に送信した前記生体データに関する情報に対応する署名コードにより、送信した前記乱数データを含むホスト装置内のデータに対するハッシュ値を計算し、前記生体認証装置から受信したハッシュ値と一致するか否かを検証するステップを有することを特徴とする生体認証方法。
【請求項９】
生体認証装置とホスト装置からなり、前記生体認証装置と前記ホスト装置が接続され通信をおこなう生体認証システムによる生体認証方法において、
前記生体認証装置が、生体データを登録して格納するステップと、
前記生体認証装置が、前記記憶手段に登録して格納された生体データと、入力された生体データとを照合して認証するステップと、
前記生体認証装置が、データに関するハッシュ値を計算するステップと、
前記生体認証装置が、前記登録して格納された生体データに関するハッシュ値を、前記ホスト装置に送信するステップと、
前記生体認証装置が、前記送信したハッシュ値に対応する署名コードを、前記ホスト装置から受信するステップと、
前記生体認証装置が、前記受信したハッシュ値と対応付けて、前記署名コードを記憶するステップと、
前記ホスト装置が、前記生体認証装置から前記登録して格納された生体データに関するハッシュ値を受信するステップと、
前記ホスト装置が、前記生体認証装置から受信した前記ハッシュ値に対応する署名コードを生成するステップと、
前記ホスト装置が、前記生成した署名コード値を、前記生体認証装置に送信するステップと、
前記ホスト装置が、前記受信したハッシュ値と対応付けて、前記署名コードを記憶するステップと、
前記ホスト装置が、乱数データとユーザを一意に識別するユーザＩＤと前記生体データに関する情報を、前記生体認証装置に送信するステップと、
前記生体認証装置は、前記ホスト装置から受信した前記生体データに関する情報に対応する署名コードにより、受信した前記乱数データと前記ユーザＩＤのハッシュ値を計算して、前記ホスト装置に送信するステップと、
前記ホスト装置は、前記生体認証装置に送信した前記生体データに関する情報に対応する署名コードにより、送信した前記乱数データと前記ユーザＩＤのハッシュ値を計算し、前記生体認証装置から受信したハッシュ値と一致するか否かを検証するにより、前記生体認証装置における生体認証の認否を判断するステップとを有することを特徴とする生体認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生体認証システム、生体認証装置、および、生体認証方法に係り、データの偽造を防止し、組込み機器に用いてセキュリティを高めるのに好適な生体認証装置、および、生体認証方法に関する。
【背景技術】
【０００２】
従来から人の生体的特徴を用いた個人認証装置が実用化されている。用いられる生体的特徴として、指紋、静脈、虹彩、声紋などあり、国内の銀行ＡＴＭでは指の静脈を用いた指静脈認証装置が普及している。
【０００３】
指静脈認証装置は、予め登録されたユーザの指の静脈パターンを、要求時に提示された指による静脈パターンと照合することにより個人を認証あるいは特定するものである。
【０００４】
このような指静脈認証装置は、一般的に、人の指に近赤外光を照射するための光源、静脈の画像を撮影する撮像部、撮影された画像から静脈パターンを抽出する特徴抽出部、予め格納されている本人の静脈パターンと照合し、両者が一致しているか否かを判断する情報処理部から構成される。この情報処理部の接続形態については、ホスト認証方式とセルフ認証方式に分類される。ホスト認証方式は、情報処理部がネットワークを介したサーバ上にあり、撮像部と通信をして接続、認証を行う方式である。一方、セルフ認証方式は、情報処理部が撮像部と同じ筐体内にあり、装置内で認証を行う方式である。
【０００５】
組込み機器に生体認証による個人識別を導入する際には、セルフ認証方式を採用したシステムが適している場合が多い。セルフ認証方式では、専用サーバを使ったネットワークシステムを構築する必要がないため小規模のシステムから適用可能であり、生体認証モジュール部分と組み込み機器ホスト部分の組合せとすることにより、生体認証モジュール部分は、交換可能なシステム構成とすることも可能である。生体認証を用いた金庫を例にあげれば、組込み機器のホスト部分とは、金庫とその中に組み込まれた電子錠であり、生体認証モジュール（指静脈認証装置）が扉部分に埋め込まれ、登録者の生体データとの照合を確認して施錠・開錠するシステム構成である。
【０００６】
このようなセルフ認証方式でネットワークを介してサーバと通信をおこない、サーバに個人認証結果を通知するシステムが知られている。例えば、特許文献１にはそのような技術が開示されており、生体認証モジュールとサーバ間の通信は、公開鍵暗号を用いて、秘匿性を確保するシステムとなっている。サーバからは、遠隔地での生体認証の実行結果を確認することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第Ｗ２００７／０９４１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
金庫、入退出システムなどに採用されている生体認証モジュールとホストシステムは強固な筐体に収められ、正規の管理下で運用されており、通常ユーザは認証モジュールを改造する環境にはなかった。また、装置の構造としても通常のユーザが分解等することは不可能であった。したがって、生体認証モジュール内に個人の生体認証データが格納されていても、一部データを暗号化するなどの一定のデータ保護の対策があれば十分であった。あるいは、対策としてネットワーク上で通信データの傍受、改竄からデータを保護すれば十分であった。
【０００９】
今後生体認証モジュールの個人利用まで普及した場合、非管理下での運用が頻繁におこなわれることとなる。従来の生体認証モジュールに関する公知技術では、ネットワーク上の通信データを保護することはできるが、非管理下でのモジュール内部の生体データが改竄されることを防止する対策は不十分であり、セルフ認証モジュールの内部に保存した個人の生体認証データなどを保護する手段を準備することが必要になる。
【００１０】
また、非管理下では、生体認証モジュールを分解、調査、一部改竄され、模造品を製作される脅威が発生する。このような模造品製作を防止することも必要である。
【００１１】
本発明は、上記問題点を解決するためになされたもので、その目的は、装置内で認証処理をおこなうセルフ認証モジュールを有する生体認証システムにおいて、個人情報の盗用や内部に保存した生体データの改竄を防止し、またモジュールの偽造を防止することができるセキュリティに優れた生体認証システムを提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明の生体認証システムは、生体認証モジュールとホスト装置が接続されて、通信する形態において、ホスト・モジュール間の通信プロトコルを定義して、所定のコマンドに対するレスポンスによる動作形態とする。
【００１３】
生体データである認証をおこなうユーザのテンプレートの登録は、管理者の管理下においておこなうようにし、テンプレートの登録動作はテンプレートのハッシュ値を、ホスト側に通信しておこなうようする。ホスト側では、これにデジタル署名を与え、この署名に関するデータを生体認証モジュールに送信して、テンプレートと共に保存する仕組みとした。そして、チャレンジ＆レスポンスの仕組みによりモジュール内のデータ検証をホスト側からおこなうようにし、認証の結果もチャレンジ＆レスポンスの仕組みにより個々の認証要求との対応付けができる通信方式とした。
【００１４】
生体認証モジュールは、上記署名に関するデータに基づいて、電源投入後ほかのタイミングで複数段階のデータ検証をおこない、データ改竄の有無を検知し、装置の動作を制御するようにした。検証が成功した各段階で諸機能が実行可能なように制御され、検証が途中で失敗した場合は機能が制限される。
【００１５】
このような生体認証システムより、装置内で認証処理をおこなうセルフ認証モジュールにおいて、内部に保存した生体データの改竄を防止し、またモジュールの偽造を防止することができる。そして、ホスト装置と生体認証モジュール間の通信において、テンプレートの生データではなく、ハッシュ値を通信するので個人情報の漏洩を防止することができる。そして、生体認証モジュールは、ホスト装置の非管理下でも認証動作の運用が可能である。
【発明の効果】
【００１６】
本発明によれば、装置内で認証処理をおこなうセルフ認証モジュールを有する生体認証システムにおいて、個人情報の盗用や内部に保存した生体データの改竄を防止し、またモジュールの偽造を防止することができるセキュリティに優れた生体認証システムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係る生体認証装置の生体認証モジュールの構造を示すブロック図である。
【図２】本発明の一実施形態に係る生体認証装置のホスト装置の構造を示すブロック図である。
【図３】本発明の一実施形態における生体認証装置のホスト装置と生体認証モジュールのソフトウェア構造（ソフトウェアスタック）を示す図である。
【図４】ホスト装置と生体認証モジュール間の通信における各ケースにおけるやりとりを図示した図である。
【図５】生体認証モジュールのアクティベーション（起動）時の制御を示すフローチャートである。
【図６】テンプレートデータ管理テーブルを説明する図である。
【図７】ハッシュ値管理テーブルを説明する図である。
【図８】テンプレートデータのハッシュ値の各場合に応じた生成のやり方を示す図である。
【図９】テンプレートデータ登録時の通信プロトコルを説明するフローチャートである。
【図１０】認証時の通信プロトコルを説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明に係る一実施形態を、図１ないし図１０を用いて説明する。
先ず、図１ないし図２を用いて本発明の一実施形態に係る生体認証システムの構成について説明する。
図１は、本発明の一実施形態に係る生体認証システムの生体認証モジュールの構造を示すブロック図である。
図２は、本発明の一実施形態に係る生体認証システムのホスト装置の構造を示すブロック図である。
【００１９】
本実施形態の生体認証システムは、個人認証を要求する組込み機器であって、ホスト装置と生体認証モジュールが通信する形態であり、生体認証モジュールによる生体認証には、例えば、指静脈認証を用いる場合を想定している。個人認証の後に提供される機能については、特に限定していないが、例えば、ホスト装置が電子錠の場合には、電子錠の開錠や、ホスト装置にディスプレイ装置が内蔵されている場合に、個人認証により個人の権限を確認して、機密情報を表示する（出力）機能など考えられる。
【００２０】
本実施形態の生体認証モジュール１００は、指静脈認証により生体認証をおこなうモジュールであり、図１に示されるように、プロセッサ１０１、照明部１０２、撮像センサ１０３、特徴抽出部１０４、ハッシュ計算１０５、照合処理１０６、署名検証１０７、機器番号保管ＩＣ１０８、ホストＩ／Ｆ１０９、データメモリ１１０、ワークメモリ１２０、プログラムメモリ１３０からなる。
【００２１】
照明部１０２で近赤外光を対象の指に照射し、撮像センサ１０３により指静脈の生画像データを取得する。プロセッサ１０１は、モジュール全体の動作制御をおこなうためのＣＰＵ（Central Processing Unit）またはＤＳＰ（Digital Signal Processor）である。
【００２２】
ワークメモリ１２０は、揮発性でワークデータが一時的に格納される半導体メモリであり、ＲＡＭ（Random Access Memory）である。
【００２３】
プログラムメモリ１３０は、プログラムが格納される記憶装置であり、例えば、ＲＯＭ（Read Only Memory）といわれる半導体メモリである。
【００２４】
データメモリ１１０は、データを格納する不揮発性のメモリであり、例えば、フラッシュメモリである。データメモリ１１０には、テンプレートデータ１１１、プログラム署名１１２、機器番号署名１１３、鍵データ１１４、テンプレートデータ管理テーブル１１５（後に、詳述）が格納されている。
【００２５】
特徴抽出部１０４は、取得した生画像データから指静脈の特徴量、すなわち、テンプレートデータを生成する機能ブロックである。特徴抽出部１０４は、専用のハードウェアで実装してもよいし、プロセッサ１０１がプログラムメモリ１３０の中に格納されたプログラムを実行して実現してもよい。
【００２６】
登録時の動作として、生成したテンプレートデータは、データメモリ１１０のテンプレートデータ１１５として格納される。登録の動作は、プロセッサ１０１がホストＩ／Ｆ１０９を介した通信をおこなって、組込み機器のホスト装置２００の要求に応じて実行する。
【００２７】
認証時は、提示された指で上記と同様の撮影、特徴抽出をおこない、テンプレートデータを生成し、照合処理部１０６で格納されたテンプレートデータ１１１と照合し、両者の類似度に基づいた本人判定をおこなう。本実施形態では、本人判定の処理まで含めて、照合処理部１０６で処理する。照合処理部１０６についても、専用のハードウェアで実装してもよいし、プロセッサ１０１がプログラムメモリ１３０の中に格納されたプログラムを実行して実現してもよい。
【００２８】
テンプレートデータ１１１は、本人の複数の指に対応したテンプレートデータを格納可能とする。複数の指がテンプレートデータ１１１として格納されていれば、一つの指が怪我等により傷ついた場合でも、他の指を用いて認証することができる。以上の機能については、従来装置と同様である。
【００２９】
本実施形態では、以下に説明する機能が追加となり、耐タンパ性の強化と偽造防止に効果を発揮する。
【００３０】
機器番号保管ＩＣ１０８は、モジュール個体に固有のシリアル番号を保持するＩＣであり、そのシリアル番号は改竄することができないものである。プロセッサ１０１との通信で内蔵されたシリアル番号を読み出すことができる。ＭＡＸＩＭ社のＤＳ２４０１がそのような機能を有するＩＣの一例である。
【００３１】
ハッシュ計算部１０５は、ＳＨＡ−１等のメッセージダイジェストを計算する機能ブロックであり、対象データに対して固定長のデータすなわちハッシュ値を生成し、対象データが１ビットでも変化すれば、ハッシュ値は大きく変化する特性を有するものである。異なる対象データのハッシュ値が一致する、すなわち、衝突する確率はきわめて小さく、実際には生起することがない為、ハッシュ値は対象データと１対１に対応する数値と考えられる。また、一方向関数として特性があり、ハッシュ値から元のデータを計算で求めることは実質不可能とされる。
【００３２】
暗号技術の中で、Message Authentication Code（ＭＡＣ）と呼ばれる技術があり、上記のメッセージダイジェストの対象データに秘密のデータ（以下、これを「シークレット」という）を含めることで、シークレットに関する知識がある味方とそれを知らない敵を区別する手法が用いられる。チャレンジ＆レスポンス手法により、送信側が乱数を生成、送信する。受信側が味方であれば、既知のシークレットを含めた受信乱数のハッシュ値（ＭＡＣ）を正しく計算することができる。受信側は計算したハッシュ値（ＭＡＣ）を送信側へ返信し、送信側でハッシュ値の正誤を確認することで、受信側が正しいシークレットを知っている味方か否かを判別できる。
【００３３】
本実施形態では、ハッシュ値の計算をモジュール内部のデータ保護に使用する。ハッシュ計算部１０５がハッシュ計算をおこなう機能ブロックであり、シークレットは、データメモリ１１０の中の鍵データ１１４の中の一部のデータとして格納し、計算時に必要に応じて読み出されて計算に供される。鍵データ１１４の読出しは、データ秘匿のために制限される必要があり、一部のデータは、ハッシュ計算部１０５および署名検証部１０７からのみアクセス可能な制限が設定される。モジュール内部のデータ保護の対象は、テンプレートデータ、プログラムコード、機器番号（機器ＩＤ）である。
【００３４】
ハッシュ計算部１０５は、プログラムコード、機器番号（機器ＩＤ）については、鍵データ１５と組合せてハッシュ値の計算を実行し、計算したハッシュ値は、データメモリ１１０の中のそれぞれプログラム署名１１２、機器番号署名１１３として格納される。ここで、データを検証するために生成するシークレットを含めたハッシュ値を、「署名コード」、「署名」ということにする。
【００３５】
テンプレートデータ１１１については、ハッシュ値がテンプレートデータ管理テーブル１１５の中に格納され、ホスト装置２００で作成された署名コードが対応付けられて格納される（後に、詳述）。なお、その計算に使用するシークレットは、鍵データ１１４の読出し制限がある領域に格納されている。プログラムコード、機器番号は、モジュールのセットアップ時（製造時）に書き込まれる（決定する）ため、プログラム署名１１２、機器番号署名１１３に対応する署名コードはセットアップ時に書き込まれている。
【００３６】
テンプレートデータ１１１は、ユーザの登録時に決定するため、その対応するハッシュ値は、ユーザ登録後に計算され、テンプレートデータ管理テーブル１１５に格納される。
【００３７】
署名検証部１０７は、ホストから受信したデジタル署名あるいはセットアップ時に書き込まれたデジタル署名を格納、検証する機能ブロックである。ホストＩ／Ｆ１０９で受信するデータにデジタル署名が付随する場合があり、対応する公開鍵が鍵データ１１４の読出し可能領域に格納されている。メーカー、指定の管理者、サービスプロバイダー等の公開鍵が該当する。一部の検証用の署名データは署名検証部１０７に内蔵してもよい。
【００３８】
ホストＩ／Ｆ１０９は、ホストと通信する機能ブロックであるが、暗号機能を内蔵し、必要に応じて通信データを暗号化する。通信内容は、ホストとモジュール間で定義する通信プロトコルに従う。暗号化が必要なデータ交換の際には、相互に機器認証をおこない、暗号通信に使用するための鍵を交換し、その後に暗号データを送受信する。通信データの保護のためにＡＥＳ（Advanced Encryption Standard）等の暗号方式を使用する。
【００３９】
ここで通信プロトコルの詳細は記載しないが、標準的な通信方式として、コマンド・レスポンス方式を採用し、ホスト側からのコマンドに対して、モジュールがレスポンスを応答するものとする。通信プロトコルでは、コマンドとレスポンスの形式を定義し、モジュールの機能を実行するための複数のコマンドを定義する。未定義のコマンドに対するレスポンスの形式、エラーコード等も定義されており、レスポンスのデータ内容を確認することにより未定義のコマンドに対するエラーが発生していることが検知できる。
【００４０】
モジュール１００の実施形態としては、ホストＩ／Ｆ１０９により物理的にホスト２００と脱着可能で、ユーザー毎にモジュールを所有することを想定することができる。この場合、モジュール内にはユーザー１人分の生体データを保持する。
【００４１】
次に、本実施形態のホスト装置２００は、図２に示されるように、プロセッサ２０１、通信Ｉ／Ｆ２０２、入出力Ｉ／Ｆ２０３、ワークメモリ２１０、データメモリ２２０、プログラムメモリ２３０からなる。
【００４２】
プロセッサ２０１は、ホスト装置２００の各部を制御し、プログラムメモリ２３０に格納されている各プログラムを実行する。
【００４３】
ワークメモリ２１０は、揮発性でワークデータが一時的に格納される半導体メモリでありである。
【００４４】
データメモリ２２０は、データを格納する不揮発性のメモリである。データメモリ２２０には、ハッシュ値管理テーブル２２１（後に、詳述）、ユーザＤＢ２２２が格納されている。
【００４５】
プログラムメモリ２３０は、プログラムが格納される記憶装置である。プログラムメモリ２３０には、システムプログラム２３１、署名プログラム２３２、通信プログラム２３３、認証プログラム２３４、ユーザ管理プログラム２３５、入出力制御プログラム２３６が格納される。
【００４６】
システムプログラム２３１は、ＯＳとも言われ、アプリケーションプログラムと入出力機器とのなかだちをしたり、タスクのスケジューリングをおこなうプログラムである。
【００４７】
署名プログラム２３２は、生体認証モジュール１００から送信されてくるハッシュ値に対して、署名コードを生成するプログラムである。
【００４８】
通信プログラム２３３は、生体認証モジュール１００と通信をおこなうためのプログラムである。
【００４９】
認証プログラム２３４は、生体認証モジュール１００からの生体認証結果に基づき、ユーザ認証をおこなうプログラムである。
【００５０】
ユーザ管理プログラム２３５は、ユーザＤＢの登録、アクセスなどをおこなうプログラムである。
【００５１】
入出力制御プログラム２３６は、認証結果に基づき、機器を操作するプログラムであり、電子錠の開錠、データ表示などの制御をおこなうプログラムである。
【００５２】
次に、図３を用いて本発明の一実施形態における生体認証システムのホスト装置と生体認証モジュールのソフトウェア構造（ソフトウェアスタック）について説明する。
図３は、本発明の一実施形態における生体認証システムのホスト装置と生体認証モジュールのソフトウェア構造（ソフトウェアスタック）を示す図である。
【００５３】
生体認証モジュール１００には、テンプレートデータ４０１、指静脈認証の認証プログラム４０２、機器ＩＤ（データ）４０３、モジュール制御ドライバ４０４、プロトコル制御ドライバ４０５、通信ドライバ４０６が実装される。
【００５４】
通信ドライバ４０６は、ホストＩ／Ｆ１０９を使用して、ホスト装置２００とデータ通信するためのソフトウェアであり、物理的なインターフェースに対応したソフトウェアである。ポピュラーなインターフェースとしては、ＵＳＢ(Universal Serial Bus)がある。プロトコル制御ドライバ４０５は、ホスト・モジュール間で定義された通信プロトコル（コマンド・レスポンス方式）を実装するソフトウェアである。ソフトウェア動作上の論理的には、ホスト側のＡＰＩドライバ４１０に対応した動作をおこなう。モジュール制御ドライバ４０４は、生体認証モジュール１００の各処理のモジュール制御を実行する部分である。生体認証モジュール１００の認証動作は、内部の各機能ブロックを用いて、認証プログラム４０２のソフトウェアにより実行される。
【００５５】
ホスト側２００は、情報サービス４０７、ファイアウォール４０８、入出力モジュール４０９、ＡＰＩドライバ４１０、通信ドライバ４１１の各ソフトウエアモジュールにより構成される。
【００５６】
ホストのメインの機能である情報サービス４０７からの個人認証要求は、ＡＰＩドライバ４１０に送られ、ＡＰＩドライバの動作により、コマンド要求とレスポンス受信が実行される。情報サービス４０７は、各種のアプリケーションプログラムが含まれることを意図している。個々の通信動作は、下位の通信ドライバ４１１に対する要求として処理される。そして、二つの通信ドライバ４０６と４１１の間で通信が実行された結果、個人認証要求は、レスポンスデータとしてＡＰＩドライバ４１０に戻ってくる。個人認証が成功すれば、ＡＰＩドライバ４１０は、ファイアウォール４０８に要求を送り、入出力制御プログラム４０９と情報サービス４０７の間のデータの流れを有効とする。この結果、電子錠の開錠や機密情報の表示などがおこなわれる。個人認証が失敗した場合は、ＡＰＩドライバ４１０は、ファイアウォール４０８を閉じるように制御し、入出力制御プログラム４０９に所望の情報は提供されない。
【００５７】
以上のようにして、ホスト装置２００と生体認証モジュール１００で構成された組込みシステムにおいて、生体認証による個人同定をおこなった結果として、電子情報の開錠や情報を開示するなどの所定の動作を実現する。
【００５８】
次に、図４ないし図１０を用いて本発明の一実施形態に係る生体認証システムの動作について説明する。
図４は、ホスト装置と生体認証モジュール間の通信における各ケースにおけるやりとりを図示した図である。
【００５９】
図４においては、生体認証モジュール１００とホスト装置２００の間で送受信されるキーとなるデータをｄ１０１〜ｄ１０６で示している。コマンド・レスポンス方式での送受信が基本的であり、図の見易さを考慮して全てのデータを図示していない（キーとなる送受信データを明記した）。
（１）ハッシュ値によるテンプレート登録
テンプレート登録は、管理者により正規の管理下でおこなわれる。この際のホスト装置と生体認証モジュール間の通信は暗号通信である。ホスト装置からのテンプレート登録のコマンドに対して、生体認証モジュールからは、テンプレートデータ管理テーブル１１５の中に格納されている生成したユーザーの指静脈のテンプレートデータのハッシュ値ｄ１０１をレスポンス（応答データ）として返信する。ホスト装置２００は、ユーザのテンプレートデータそのものは保持しない。そして、そのテンプレートデータに対応するハッシュ値を、ハッシュ値管理テーブル２２１に保持する。
（２）署名付与によるモジュール内部のデータ有効化
上記（１）により送信されたテンプレートデータのハッシュ値に対して、ホスト側で管理者による署名コードｄ１０２を生成し、ハッシュ値管理テーブル２２１に格納後、それをモジュールに送信する。図示していないが、正常にコマンドが処理された場合もレスポンスは返信され、その旨が確認できる。
【００６０】
これによりデータ改ざんの有無を検出するための準備ができる。
【００６１】
生体認証モジュール１００の内部では、署名検証部１０７により署名コードの検証をおこない、検証が成功した場合には、テンプレートデータ管理テーブル１１５に格納する。この格納の際には、後に説明するように、署名コードが対応するデータ（何指のテンプレートであるかの別を識別するもの）を付加して格納することとする。
（３）モジュール内のデータ検証
ホスト装置２００と生体認証モジュール１００間で、要求コマンドとの対応関係を確認をとるためにチャレンジレスポンス方式を採用している。チャレンジｄ１０３は、ホスト側で生成した乱数とデータ検証すべきデータ種別を示すコードを含んでいる。モジュール側は指定されたデータ種別のデータに対応する署名コードをシークレットとして、チャレンジデータのハッシュ値（ＭＡＣ）を計算する。ここで特徴的な点は、生体認証モジュール１００が保持している署名コードそのものを送信しない点である。上記ハッシュ値（ＭＡＣ）がホスト側の計算と一致すれば、モジュール内部のデータが正しい、すなわち、モジュール内部のデータが改竄などされていないことが検証できる。
（４）認証結果のデータ通信動作
ここでも、要求コマンドとの対応関係を確認をとるためにチャレンジレスポンス方式を採用している。一度使用された認証結果の通信データは二度とおこなわれることがなく、データの整合性を確認すれば、要求のたび毎にモジュールにおいて認証動作が行われたことが確認できる。チャレンジｄ１０５は、ホスト側で生成した乱数と照合すべきテンプレートデータの指種別と対応するハッシュ値を含んでいる。ここで、ハッシュ値を指定することによって、唯一対応するテンプレートデータとの照合を要求している。この動作で、ホスト側とモジュール側でテンプレートデータをやりとりすることがないため、データの盗用に対して高いセキュリティを確保することができる。ユーザーに提示する指を指定できないシステムの場合、登録されている指すべてについて上記の動作をする。
【００６２】
モジュール側は指定された指に対応するテンプレートデータにより照合をおこない、指定されたテンプレートデータに対応する署名コード（テンプレートデータ管理テーブル１１５に格納されている）をシークレットとして、チャレンジデータの一部あるいは全部とユーザＩＤの連結データのハッシュ値（ＭＡＣ）を計算する。計算したハッシュ値を認証結果を含むレスポンスデータｄ１０６としてホストに返信する。
【００６３】
ホスト側では、受信したレスポンスデータｄ１０６と独自に計算したハッシュ値の一致を検証する。認証結果が成功であれば、ハッシュ値が一致するはずであり、それが一致すれば、ユーザＩＤと指定したテンプレートによる照合が成功したことが確認できる。
【００６４】
一致しないときには、とりえない様なユーザＩＤの値、例えば、ユーザＩＤ＝“０００００００”にして、チャレンジデータの一部あるいは全部とユーザＩＤの連結データのハッシュ値（ＭＡＣ）をホスト装置に返信する。この結果、ホスト側では、ハッシュ値が一致しなくなり、このときに、ユーザＩＤのユーザは、テンプレートによる照合が失敗したものと判断する。
【００６５】
次に、図５を用いて生体認証モジュールのアクティベーション時の制御を示すフローチャートである。
図５は、生体認証モジュールのアクティベーション（起動）時の制御を示すフローチャートである。
【００６６】
スタートは、電源投入後にハードリセットが実行された後の時点である（Ｓ３０１）。
【００６７】
諸々の初期化設定（図示せず）の後、機器ＩＤの検証を実行（Ｓ３０２）、その結果により分岐をおこなう。検証は、機器番号署名１１３に保持している機器番号の署名と、新たに機器番号保管ＩＣにより読み出した機器番号とシークレットを含めたハッシュ値を比較することにより実行される。
【００６８】
Ｓ３０２が成功の場合、プログラムの検証を実行し（Ｓ３０３）、その結果により再度分岐をおこなう。検証は、プログラム署名１１２に保持しているプログラムデータの署名と、新たにプログラムデータ（全部または一部）を読み出して、読み出したデータとシークレットを含めたハッシュ値を比較することにより実行される。
【００６９】
Ｓ３０３が成功すれば、次のステップＳ３０４に進むことができる。Ｓ３０４ではテンプレートデータの検証をおこない、その結果により分岐をおこなう。テンプレートデータの検証は２段階で行い、第一段階はモジュール１００単体での検証であり、第二段階はホスト・モジュール間通信による検証である。第一段階および第二段階の検証の両方が成功した場合のみテンプレートデータの検証が成功とみなす。
第一段階のモジュール１００単体でのテンプレートデータの検証は、署名検証部１０７の動作により、テンプレートデータ１１１内の個別のテンプレートデータについて、テンプレートデータ管理テーブル１１５内の対応するハッシュ値および署名コードの検証を行う。テンプレートデータの改ざんが行われた場合、上記のデータ間の整合性が崩れるため、改ざんを検出することができる。
第二段階のホスト・モジュール間の通信によるテンプレートデータの検証は、図４の（３）に示した処理である。
【００７０】
Ｓ３０４が成功すれば、Ｓ３０７の認証要求を受け付ける状態になり、認証動作時のホストからの認証要求コマンド他を処理することができる。一方、Ｓ３０４が失敗した場合、テンプレートが不正であるか、あるいは登録がない状態であることを示しており、Ｓ３０８に進んで、管理者要求を受け付ける状態となる。
【００７１】
複数のテンプレートが登録されており、一部のテンプレートが不正であることを検出した場合の動作は、適用するシステムを勘案して、二通りの動作が考えられる。最初の一つは、一つでも不正なテンプレートがあれば、何らかの改竄があったものとして、認証要求を受け付けない動作であり、今一つは、不正なテンプレートのみを無効化して、認証要求を受け付ける動作である。無効化されたテンプレートについては、照合動作をおこなわないように制御する。
【００７２】
途中のＳ３０２で失敗した場合は、Ｓ３０５で停止状態となる。この状態では如何なるコマンドにも応答しないように制御される。
【００７３】
Ｓ３０３で失敗した場合は、Ｓ３０６のメンテナンスモードに進み、管理者あるいはメーカーによるプログラム更新作業を受け付けるモードとなる。
【００７４】
以上のように複数段のデータ検証により、モジュールの動作を制御することにより耐タンパ性を強化している。機器ＩＤが偽造された場合はその段階でモジュールの動作は、停止する。たとえば、内部で使用する動作クロックを停止するなどの制御がある。プログラムコードが改竄された場合、メンテナンスモードでは通常のユーザーからの要求は受け付けない。管理者あるいはメーカーのプログラムの書き換え作業にのみ応答する。したがって、改竄されたプログラムにより照合動作を試すことはできない。テンプレートデータについてもデータ検証をおこない、検証が成功したテンプレートとのみ照合をおこなうように制御する。これにより、改竄したテンプレート、人工的なテンプレートによる照合動作を試すことはできなくなる。
【００７５】
耐タンパ性をより強固なものとする為に、Ｓ３０２，Ｓ３０３，Ｓ３０４のプログラムコードの一部あるいは全部について、プロセッサ１０１内部に変更不可なＲＯＭメモリ領域を設け、その中に格納することも考えられる。
【００７６】
次に、図６および図７を用いて本発明の一実施形態に係る生体認証システムで用いられるデータ構造について説明する。
図６は、テンプレートデータ管理テーブルを説明する図である。
図７は、ハッシュ値管理テーブルを説明する図である。
【００７７】
生体認証モジュール１００に格納されるテンプレートデータ管理テーブル１１５は、ヘッダー情報８０１と、０個以上の指静脈テンプレートデータに関する管理情報、図６では、レコードが４個、レコード８０２からレコード８０５により構成する場合を示している。
【００７８】
ヘッダー情報８０１には、管理情報が格納されており、テンプレートデータ１１１へのポインタ、テンプレートデータの個数、作成日付、更新日付などの情報が格納されている。ここではテンプレートの個数は、４である。
【００７９】
ここのレコード８０２からレコード８０５の内部には、ａ）テンプレートの有効無効を示すフラグ（図中ではＶと表記）、ｂ）指種別（右人差し指等を識別するためのコード）、ｃ）ハッシュ値、ｄ）署名コードが格納されている。
【００８０】
テンプレートの有効無効は、そのテンプレートデータに不整合や不正な書き換えが発見されたときに、無効であるとして、認証には用いないようにすることを示すフラグである。
【００８１】
各署名コードは、図４（２）に示したように、各ハッシュ値に対して管理者がデジタル署名したデータであり、管理者の公開鍵等でデータの真正性が確認でき、テンプレートデータを改ざんの脅威から保護するために使用される。なお、ここでのデジタル署名は必ずしも公開鍵暗号方式に基づくものである必要はない。
【００８２】
また、ホスト装置２００に格納されるハッシュ値管理テーブル２２１も、図７に示されるようにほぼ同様の構造をしている（９０１〜９０５）。
【００８３】
ハッシュ値（ｃ）は、生体認証モジュール１００から送られてきたハッシュ値であり、それに対応して、ホスト装置２００で、署名コード（ｄ）を生成し、対応するレコード（９０２〜９０５）に格納する。
【００８４】
次に、図８を用いてテンプレートデータのハッシュ値の生成方法のバリエーションについて説明する。
図８は、テンプレートデータのハッシュ値の各場合に応じた生成のやり方を示す図である。
【００８５】
ここでは、以下の三つの方法について説明する。
（１）簡易方式
テンプレートデータのみから、所定のハッシュアルゴリズム（ＳＨＡ−１等）によりハッシュ値を生成する。
（２）機器任意方式
シークレットとテンプレートデータにより、ハッシュ値の計算をおこなう。
【００８６】
アルゴリズムは、上記（１）と同様のものを使用する。この方式では、機器が固定されず、任意の機器でハッシュ値が有効となる。
（３）機器固定方式
シークレット、テンプレートデータに加えて、機器番号を付加してハッシュ値を計算する。この方式では機器番号で指定された唯一のモジュールでのみハッシュ値が有効となる。その結果、もっとも強固なセキュリティを実現できる。
【００８７】
実装上は、処理が複雑になるが、セキュリティの観点から（２）、（３）の方式をとることが望ましい。
【００８８】
次に、図９および図１０を用いて、本発明の一実施形態に係る生体認証システムのテンプレートデータ登録時と認証時の通信プロトコルを説明する。
図９は、テンプレートデータ登録時の通信プロトコルを説明するフローチャートである。
図１０は、認証時の通信プロトコルを説明するフローチャートである。
【００８９】
テンプレートデータ登録の開始時には、ホスト２００とモジュール１００の間は暗号通信が確立しており、本実施形態の組込みシステム運用上の管理者権限を有する管理者が操作者であることが確認されているものとする。
【００９０】
先ず、登録時の通信プロトコルについて説明する。
【００９１】
先ず、ホスト側でユーザＩＤとサービスＩＤが設定され、モジュール側に通信される（Ｓ６０１）。
ユーザＩＤは、ユーザーに割り当てられる識別コードであり、サービスＩＤは、ホスト側の提供するサービスの識別コードである。ホスト側が複数のサービスを提供し、それぞれのサービスでアクセス権が独立に管理される場合にも対応するように設計されている。Ｓ６０１の処理は、一つのコマンド・レスポンスに対応しており、この動作が成功すれば、これ以降変更をおこなわない限り、ユーザＩＤとサービスＩＤは、生体認証モジュール１００とホスト装置２００で固定化される。
【００９２】
次に、ホスト側とモジュール側でテンプレート生成を要求するコマンド・レスポンスがおこなわれる（Ｓ６０２）。これに対応するコマンドを受信した生体認証モジュール１００は、提示された指の静脈画像の撮影からテンプレートデータの生成までを実行する。
【００９３】
次に、モジュール側で生成したテンプレートデータのハッシュ値を生成するためのコマンド・レスポンスがおこなわれる（Ｓ６０３）。ハッシュ値の生成方法は、図８の説明で述べた方法による。
【００９４】
この処理は、図４の説明では（１）に相当する。生成したハッシュ値は、レスポンスデータに含めてホスト装置２００に返信される。
【００９５】
次に、ホスト側とモジュール側でテンプレートデータに対応する署名コードを付与するコマンド・レスポンスがおこなわれる（Ｓ６０４）。図４の説明では、（２）に相当する処理である。ホスト装置２００は、Ｓ６０３で受信したハッシュ値に対する管理者の署名コードを生成し、生体認証モジュール１００に送信する。受信した生体認証モジュール１００は、署名コードの検証を実行し、成功すれば、テンプレートデータ管理テーブル１１５に署名コードを格納する。
【００９６】
次に、生体認証モジュール１００に格納されたテンプレートデータの署名コードを確認するコマンド・レスポンスがおこなわれる（Ｓ６０５）。この処理は、図４の（３）のモジュール内データ検証の処理に対応する。ここでは、既に説明したように、ホスト装置２００は、生体認証モジュール１００に、チャレンジデータに乱数とテンプレートの識別コードを含めて送信する。また、必要なパラメタとして、テンプレートのハッシュ値など送るようにしてもよい。生体認証モジュール１００では、モジュール内に格納された対応する署名コードをシークレットとして、チャレンジデータに含まれる乱数とその他のデータに対するハッシュ値を計算し、それをレスポンスデータに含めて返信する。同じ計算式でホストが計算をおこない、受信したハッシュ値と一致すれば、モジュール内のテンプレートデータの署名コードの検証作業は完了である。
【００９７】
次に、認証時の通信プロトコルについて説明する。
【００９８】
認証時は、テンプレートの登録などはおこなわないので管理者の操作は必要ではない。
【００９９】
先ず、ホスト側とモジュール側でモジュールに格納されたテンプレートに関する情報取得のコマンド・レスポンスがおこなわれる（Ｓ７０１）。ユーザＩＤ、テンプレートデータの個数、各テンプレートデータの識別コード（対応する指種別）などがテンプレート情報として取得される。
【０１００】
次に、ホスト側とモジュール側でユーザＩＤとサービスＩＤを設定する通信がおこなわれる（Ｓ７０２）。これは、図９のＳ６０１と同一である。
【０１０１】
次に、ホスト側とモジュール側で指定したモジュール内のテンプレートの署名コードを確認するコマンド・レスポンスがおこなわれる（Ｓ７０３）。これは、図９のＳ６０５と同じ通信であり、モジュール内の署名コードの真正性を確認することができる。この通信は、前述のようにチャレンジ＆レスポンス方式の送受信になる。
【０１０２】
次に、ホスト側とモジュール側で生体認証モジュール１００に認証動作を要求するコマンド・レスポンスがおこなわれる。この処理は、図４の（４）に相当する処理である。この通信もチャレンジ＆レスポンス方式の送受信になる。チャレンジデータにはホスト側で生成した乱数と照合すべきテンプレートデータの指種別と対応するハッシュ値を含める。モジュール側は、指定された指に対応するテンプレートデータにより照合をおこない、認証結果をホストに返信する。認証結果のレスポンスデータ化は、図４の（４）の部分と同一である。ホスト側では、受信したレスポンスデータの検証をおこない、認証結果が成功したか否かを確認することができる。
【０１０３】
以上のように生体認証モジュール１００と組み込み機器のホスト装置２００を構成することにより、生体認証モジュール１００内部のデータの改ざんを防止し、耐タンパ性を強化すると共に、模造品の製作を防止することができる。
【符号の説明】
【０１０４】
１００…生体認証モジュール、１０１…プロセッサ、１０２…照明部、１０３…撮像センサ、１０４…特徴抽出部、１０５…ハッシュ計算部、１０６…照合処理部、１０７…署名検証部、１０８…機器番号保管ＩＣ、１０９…ホストＩ／Ｆ、１１０…データメモリ、１２０…ワークメモリ、１３０…プログラムメモリ、２００…ホスト装置、２０１…プロセッサ、２０２…通信Ｉ／Ｆ、２０３…入出力Ｉ／Ｆ、２１０…ワークメモリ、２２０…データメモリ、２３０…プログラムメモリ。
【図１】
2013161104.tif 000003
【図２】
2013161104.tif 000004
【図３】
2013161104.tif 000005
【図４】
2013161104.tif 000006
【図５】
2013161104.tif 000007
【図６】
2013161104.tif 000008
【図７】
2013161104.tif 000009
【図８】
2013161104.tif 000010
【図９】
2013161104.tif 000011
【図１０】
2013161104.tif 000012