"登録ユーザの生体情報の登録用特徴量に基づいて生体証明書を作成する登録端末と、署名生成ユーザの生体情報の署名用特徴量に基づいて所定のメッセージに対し署名を生成する署名生成端末と、前記生体証明書に基づいて前記署名を検証する署名検証装置とを含む生体署名システムであって、前記登録端末は、ユーザの生体情報を取得するセンサと、前記生体情報から前記登録用特徴量を抽出する特徴量抽出部と、所定の電子署名アルゴリズムに基づいて秘密鍵と公開鍵のペアを生成し、前記秘密鍵と前記登録用特徴量とから登録用コミットメント情報を作成する生体公開鍵作成部と、前記登録用コミットメント情報および前記公開鍵を含む前記生体証明書を作成する生体証明書作成部を有し、前記署名生成端末は、前記メッセージを入力するメッセージ入力部と、ユーザの生体情報を取得するセンサと、前記生体情報から前記署名用特徴量を抽出する特徴量抽出部と、所定の電子署名アルゴリズムに基づいて一時秘密鍵および一時公開鍵のペアを生成し、前記一時秘密鍵を用いて前記メッセージに対して前記所定の電子署名アルゴリズムに基づく電子署名を生成し、前記一時秘密鍵および前記署名用特徴量とから署名用コミットメント情報を作成し、前記一時公開鍵と前記電子署名と前記署名用コミットメントとを含む生体署名を生成する、生体署名生成部を有し、前記署名検証端末は、前記メッセージおよび前記生体署名を入力する入力部と、前記生体署名に含まれる前記電子署名が、前記メッセージに対する正しい署名であるかどうかを、前記生体署名に含まれる前記一時公開鍵と、前記所定の電子署名アルゴリズムを用いて検証し、前記登録用コミットメント情報と前記署名用コミットメント情報の組の正当性を、前記公開鍵と前記一時公開鍵を用いて検証する、生体署名検証部を有し、前記検証のそれぞれが成功した場合に最終判定結果を成功とする、検証結果出力部を有する生体署名システム。前記生体署名作成部は、前記登録端末が保有する所定の秘密鍵と、所定の第二の電子署名アルゴリズムを用いて、前記登録用コミットメント情報と前記公開鍵と登録ユーザのID情報とを含む組に対して電子署名を生成し、前記登録用コミットメント情報と前記公開鍵と登録ユーザのID情報と前記電子署名の組を含めて生体証明書を作成し、前記署名検証装置は、前記生体証明書の正当性を、前記生体証明書に含まれる前記電子署名と、前記登録端末の公開鍵と、前記第二の電子署名アルゴリズムを用いて検証する、生体証明書検証部を有することを特徴とする、請求項1に記載の生体署名システム。前記生体署名システムは、前記生体証明書を保持し公開するリポジトリサーバを含み、前記登録端末は、前記生体証明書を作成した後に前記生体証明書を前記リポジトリサーバへ登録する手段を有し、前記署名検証装置は、前記リポジトリサーバから前記生体証明書を取得する手段を有することを特徴とする、請求項1または2のいずれかに記載の生体署名システム。前記登録用特徴量および前記署名用特徴量はベクトルであり、前記生体公開鍵作成部は、前記秘密鍵に対応する秘密鍵ベクトルを前記登録用特徴量ベクトルに加算または減算することで前記登録用コミットメント情報を作成し、前記署名生成部は、前記一時秘密鍵に対応する一時秘密鍵ベクトルを前記署名用特徴量ベクトルに加算または減算することで前記署名用コミットメント情報を作成し、前記署名検証部は、前記登録用コミットメント情報と前記署名用コミットメント情報に対して所定の第一の演算を施すことで差分秘密鍵を作成するとともに、前記公開鍵と前記一時公開鍵に対して所定の第二の演算を施すことで、差分公開鍵を生成し、前記差分秘密鍵と前記公開鍵の対応を検証することを特徴とする、請求項1乃至3のいずれかに記載の生体署名システム。前記秘密鍵に対応する秘密鍵ベクトルおよび前記一時秘密鍵に対応する一時秘密鍵ベクトルは、それぞれの成分が所定の定数の整数倍であり、前記第一の演算は、二つのベクトル同士の差を前記所定の定数で割り、各要素を整数に丸める計算を含むことを特徴とする請求項4に記載の生体署名システム。前記所定の電子署名アルゴリズムはSchnorr署名とし、前記秘密鍵と前記秘密鍵ベクトルとの対応および前記一時秘密鍵と前記一時秘密鍵ベクトルとの対応は、ベクトルを所定の整数Lに対してL進数表示した際の各桁の整数と見なすことで定義し、前記第二の演算は、前記公開鍵と前記一時公開鍵を所定の整数を法として除算する計算を含むことを特徴とする請求項5に記載の生体署名システム。前述の通り、電子署名を生成する署名者は、秘密鍵を安全に保持するため、ICカードなどの持物を所有し、また秘密鍵を他人に使われないよう、署名時に秘密鍵を活性化するためのパスワードや暗証番号を入力する必要がある。このため利便性が低い、導入運用コストが高い、といった問題がある。そこでユーザ利便性の観点からは、ICカードのような持物や、パスワード暗証番号といった秘密情報の記憶を必要とせず、指紋や静脈などの生体情報の提示のみによって署名を生成検証することのできるシステムの実現が望まれる。これに対し、例えば一般的な生体認証システムと電子署名システムを単純に組み合わせるシステムが考えられる。具体的にはあらかじめユーザの生体情報の特徴量テンプレートと秘密鍵をシステムに登録しておき、署名時には署名者の生体情報をテンプレートと照合して、一致した場合に秘密鍵を用いて所定の電子文書に対する署名を作成する。これらの情報は、システム内、あるいは何らかの装置内に保管する必要がある。しかしながら、いったんテンプレートおよび/または秘密鍵が漏洩すると、生体情報が偽造されたり、署名が偽造されるといったリスクが発生する。特に指紋や静脈といった生体情報は取り替えられないため、いったんテンプレートが漏洩して生体偽造の危険性が生じると、生涯安全性を回復することができない。そこで、生体鍵生成技術を用いて電子署名システムを構築する方法が考えられる。具体的には、登録時に電子署名用の秘密鍵、公開鍵のペアを生成し、秘密鍵をユーザの生体情報に埋め込んで補助情報を作成する。署名生成時には、ユーザの生体情報と補助情報を用いて秘密鍵を復元し、これを用いて電子署名を生成する。検証者は公開鍵を用いて電子署名を検証する。しかしこの方法では、署名時に必ず補助情報が必要となる。このため補助情報の保管場所と、署名作成端末が補助情報へアクセスするための手段が必要となる。補助情報をICカード等に保管する場合、署名のためにユーザが持物を所持する必要が生じ、利便性が低下する。一方でローカル端末に保管すると、当該端末からでしか署名を生成できず、用途が限定されてしまう。またサーバに保管する場合、ネットワークに接続された端末からでしか署名を作成できず、また署名のたびにサーバとの通信が発生するため、署名作成に時間がかかる問題がある。本発明の目的は、従来の電子署名スキームにおける秘密鍵データや、従来の生体認証スキームにおけるテンプレートといった、システムあるいはICカード等の装置上に保存すべき秘密データの存在を必要とせず、また生体情報以外のデータ生体鍵生成スキームおける補助情報などを必要とせずに、生体情報そのものを秘密鍵として、任意のメッセージ電子文書に対して署名を生成することのできるシステム以下生体署名システムと呼ぶを実現することにある。本発明は以上の課題を解決するために、本発明では、生体情報を秘密鍵として用いるものである。このために、本発明では、生体情報の特徴量に対して、秘密鍵を埋め込み、また、この秘密鍵に対応する公開鍵と組として証明書を発行する。また、これらを利用する際には、秘密鍵が埋め込まれた特徴量すなわち、署名用特徴量に対して、新たに一時秘密鍵と一時公開鍵のペアを生成し、一時秘密鍵を用いてメッセージに対する署名を作成する。また、署名用特徴量に一時秘密鍵を埋め込んでコミットメントを作成し、一時公開鍵、署名およびコミットメントからなる組を生体署名とし、生体署名検証時には前記署名を一時公開鍵で検証する。また、この際、生体署名、コミットメントおよび一時公開鍵から差分秘密鍵と差分公開鍵を生成して対応を検証する。この処理を実現するための以下の態様も本発明に含まれる。登録ユーザの生体情報の登録用特徴量に基づいて生体証明書を作成する登録端末と、署名生成ユーザの生体情報の署名用特徴量に基づいて所定のメッセージに対し署名を生成する署名生成端末と、前記生体証明書に基づいて前記署名を検証する署名検証装置とを含む生体署名システムであって、前記登録端末は、ユーザの生体情報を取得するセンサと、前記生体情報から前記登録用特徴量を抽出する特徴量抽出部と、所定の電子署名アルゴリズムに基づいて秘密鍵と公開鍵のペアを生成し、前記秘密鍵と前記登録用特徴量とから登録用コミットメント情報を作成する生体公開鍵作成部と、前記登録用コミットメント情報および前記公開鍵を含む前記生体証明書を作成する、生体証明書作成部を有し、前記署名生成端末は、前記メッセージを入力するメッセージ入力部と、ユーザの生体情報を取得するセンサと、前記生体情報から前記署名用特徴量を抽出する特徴量抽出部と、所定の電子署名アルゴリズムに基づいて一時秘密鍵および一時公開鍵のペアを生成し、前記一時秘密鍵を用いて前記メッセージに対して前記所定の電子署名アルゴリズムに基づく電子署名を生成し、前記一時秘密鍵および前記署名用特徴量とから署名用コミットメント情報を作成し、前記一時公開鍵と前記電子署名と前記署名用コミットメントとを含む生体署名を生成する、生体署名生成部を有し、前記署名検証端末は、前記メッセージおよび前記生体署名を入力する入力部と、前記生体署名に含まれる前記電子署名が、前記メッセージに対する正しい署名であるかどうかを、前記生体署名に含まれる前記一時公開鍵と、前記所定の電子署名アルゴリズムを用いて検証するとともに、前記登録用コミットメント情報と前記署名用コミットメント情報の組の正当性を、前記公開鍵と前記一時公開鍵を用いて検証する、生体署名検証部を有し、前記検証が成功した場合に最終判定結果を成功とする、検証結果出力部を有する生体署名システムである。なお、最終判定結果については、前記検証のそれぞれが成功した場合成功とする態様も本発明に含まれる。なお、本発明には、上記の生体署名システムによる生体署名方法、生体署名システムを構成する各装置およびこれらのサブコンビネーションも含まれる。本発明により、ユーザは持物や秘密情報の記憶の必要性をなくすとができないし低減でき、任意の端末を用いて、自らの生体情報のみを用いて、任意の電子文書に対する電子署名を作成することができ、利便性の高い電子署名システム生体署名システムを実現できる。また秘密鍵やテンプレートなど秘密情報を保存する必要がなく、安全で運用コストの低い電子署名システムを構築できる。更に端末にはユーザ依存の情報などをあらかじめ登録しておく必要性をなくすないし低減でき、また署名生成時にネットワークに接続されている必要もないため、アプリケーションを限定することなく、幅広い用途に利用することが可能となる。以下、図面を参照して、本発明の第一の実施例について説明する。本実施例では、登録時にユーザの生体情報に基づいて署名を検証するためのデータ以下生体証明書を作成して公開DBリポジトリに登録し、署名生成時に署名生成端末が任意のメッセージに対してユーザの生体情報のみに基づく署名以下生体署名を生成し、署名検証装置が生体証明書を用いて生体署名を検証する、生体署名システムを例に説明する。本実施例のシステムは、例えば電子政府における電子申請や、ネットワークを介したユーザ認証などに利用することができる。図1に、本実施例における生体署名システムのシステム構成を示す。本システムは、ユーザの生体証明書の発行を行う登録端末100と、生体証明書を管理公開するリポジトリサーバ120と、ユーザの生体情報を用いてメッセージ電子文書に対する生体署名を生成する署名生成端末110と、生体署名の検証を行う署名検証装置130と、ネットワーク140とから構成される。登録端末100は、ユーザから指紋や静脈などの登録用生体情報を取得するセンサ101と、前記登録用生体情報から登録用特徴量を抽出する特徴量抽出部102と、ユーザIDの入力を受け付けるID入力部103と、前記登録用特徴量から生体公開鍵を作成する生体公開鍵作成部104と、前記ユーザIDおよび前記生体公開鍵に対して登録端末自身の電子署名を付与して生体証明書を作成する生体証明書作成部105から構成される。なお、生体公開鍵生成部104や生体証明書作成部105は、他の装置に実装してもよい。リポジトリサーバ120は、前記生体証明書を登録する公開DB121と、DB制御部122と、通信部123とから成る。署名生成端末110は、署名生成の対象であるメッセージを入力するメッセージ入力部111と、ユーザのIDを入力するID入力部116と、ユーザから署名用生体情報を取得するセンサ112と、前記署名用生体情報から署名用特徴量を抽出する特徴量抽出部113と、前記署名用特徴量を用いて前記メッセージに対する生体署名を生成する生体署名生成部114と、前記生体署名を出力する生体署名出力部115とから構成される。なお、ID入力部116、センサ112を個別の装置で実現してもよいし、これら以外の各部を別の装置に実装してもよい。署名検証装置130は、前記メッセージと前記生体署名の組を入力する生体署名付メッセージ入力部131と、リポジトリサーバ120からユーザIDに対応する前記生体証明書を取得する生体証明書取得部132と、前記生体証明書の完全性を検証する生体証明書検証部133と、前記生体証明書を用いて前記生体署名を検証する生体署名検証部134と、検証結果を出力する検証結果出力部135とから構成される。登録端末110、リポジトリサーバ120、署名検証装置130はネットワーク140を介して接続されるが、署名生成端末110は必ずしもネットワークに接続される必要はない。なお署名検証装置130がDBを持ち、前記生体証明書を格納してもよい。この場合、署名検証装置130はリポジトリサーバから前記生体証明書を取得する必要がなく、署名検証時に必ずしもネットワークに接続されている必要はない。図5に、本実施例における登録端末100、署名生成端末110、リポジトリサーバ120、署名検証装置130のハードウェア構成を示す。これらは図のようにCPU500、RAM501、HDD502、入力装置503、出力装置504、通信装置505とから構成することができる。次に本実施例における登録処理フローを図2を用いて説明する。登録端末100が、センサ部101を通して登録ユーザの登録用生体情報指紋画像や静脈画像などを取得するS200。特徴量抽出部102が、前記登録用生体情報から登録用特徴量Xを抽出するS201。ID入力部103が、登録ユーザのIDの入力を受け付けるS202。これは、登録ユーザが入力してもよいし、入力時刻などに基づいて登録端末100が生成してもよい。生体公開鍵作成部104が、所定の電子署名アルゴリズム例えばSchnorr署名における秘密鍵KSe,公開鍵KPeのペアをランダムに生成するS203。生体公開鍵作成部104が、所定の埋め込み関数Embを用いて、前記登録用特徴量Xに対して秘密鍵KSeを埋め込み、登録用コミットメントCe=EmbX,KSeを作成するS204。このとき前記登録用コミットメントCeからは、前記登録用特徴量Xおよび/または前記秘密鍵KSeを推定することが十分に困難であるように埋め込む。埋め込み関数Embの具体例は後述する。KPe,Ceの組を生体公開鍵と呼ぶ。生体証明書作成部105は、前記ユーザIDと前記生体公開鍵KPe,Ceとの組に対して、登録端末100が保持する秘密鍵を用いて電子署名Sを生成し、これらのデータの組T=ID,KPe,Ce,Sを、生体証明書として発行するとともに、リポジトリサーバ120へ送信するS205。ここで電子署名Sを生成する第二の電子署名アルゴリズムは、前記所定の電子署名アルゴリズムとは異なっていてもよく、RSAやDSA、Schnorr署名など一般的な電子署名を用いてよい。リポジトリサーバ120は、前記生体証明書Tを公開DB121に登録するS206。前述の通り、生体公開鍵から特徴量Xや秘密鍵KSeは推定が困難であるため、生体証明書Tを公開しても生体情報や署名が偽造されるリスクは十分に低く、安全性を確保することができる。また生体証明書Tを公開することで、任意の署名検証装置が任意の生体署名を検証することが可能となる。本実施形態によれば秘密鍵やテンプレートといった秘密情報はどこにも保存されないため、安全性が高く、また運用管理コストの低い電子署名システムが構築可能となる。次に本実施例における署名生成フローを図3を用いて説明する。署名生成端末110が、メッセージ入力部111を介して任意のメッセージMの入力を受け付けるS300。ID入力部116が、ユーザIDの入力を受け付けるS301。なお本ステップを省略し、以下のステップではユーザIDとしてNULLなどの記号を用いてもよい。このようにすることで署名時にユーザはIDの入力が不要となり、更なる利便性の向上が見込まれる。センサ部112が、ユーザの署名用生体情報を取得するS302。特徴量抽出部113が、前記署名用生体情報から署名用特徴量X’を抽出するS303。生体署名生成部114が、前記所定の電子署名アルゴリズムにおける秘密鍵,公開鍵のペアをランダムに生成するS304。以下それぞれの鍵を、一時秘密鍵KSs、一時公開鍵KPsと呼ぶ。生体署名生成部114が、前記埋め込み関数Embを用いて、署名用特徴量X’に対して一時秘密鍵KSsを埋め込み、署名用コミットメントCs=EmbX’,KSsを作成するS305。生体署名生成部114が、前記一時公開鍵KPsと、前記所定の電子署名アルゴリズムを用いて、前記メッセージMに対する電子署名σ’を生成するS306。また、生体署名生成部115が、前記ユーザIDと、前記一時公開鍵KPs、前記署名用コミットメントCs、前記電子署名σ’の組σ=ID,KPs,Cs,σ’を生体署名として出力するS307。前述した埋め込み関数Embの性質により、署名用コミットメントCsから署名用特徴量X’や一時秘密鍵KSsを推定することは十分困難であるため、生体署名から生体情報や別の生体署名が偽造されるリスクは十分に低く、安全性を確保することができる。また生体署名を生成する際に、署名対象であるメッセージMと、ユーザIDと、秘密鍵の役割を果たす生体情報以外に、ユーザに依存する情報例えば補助情報を全くとしない。従って署名生成端末には、何らかのユーザ依存情報を予め保存する必要がなく、またサーバ等に問い合わせてユーザ依存情報を取得する必要もない。このためユーザは任意の署名生成端末を利用して署名を生成することができるし、署名生成端末は必ずしもネットワークに接続される必要がなく、スタンドアロンでも利用することができる。次に、本実施例における署名生成フローを図4を用いて説明する。署名検証装置130は、前記メッセージMおよび前記生体署名σ=ID,KPs,Cs,σ’の入力を受け付けるS400。生体署名取得部132は、前記生体署名σに含まれるIDを前記リポジトリサーバ120へ送信し、前記IDに対応する前記生体証明書T=ID,KPe,Ce,Sを取得するS401。生体証明書検証部133は、前記生体証明書Tが改ざんされていないことを、前記生体証明書Tに含まれる前記電子署名Sと登録端末100の公開鍵を用いて検証する。検証に失敗した場合、最終検証結果を失敗としてステップS406へジャンプするS402。この検証には、前記第二の電子署名アルゴリズムを用いる。生体署名検証部134は、前記生体署名σに含まれる前記電子署名σ’を、前記生体署名σに含まれる前記一時公開鍵KPsを用いて検証する。検証に失敗した場合、最終検証結果を失敗としてステップS406へジャンプするS402。生体署名検証部134は、前記生体証明書Tに含まれる前記登録用コミットメントCeと、前記生体署名σに含まれる前記署名用コミットメントCsとから、所定の関数Extを用いて、差分秘密鍵KSd=ExtCs,Ceを計算するステップS403。このとき、登録用特徴量Xと署名用特徴量X’が十分近ければ類似していれば、前記差分秘密鍵KSdが、前記秘密鍵KSeと前記一時秘密鍵KSsとの間の差に相当する所定の演算結果に等しくなるKSd=KSe-KSsよう、所定の関数Extを構成する。関数Extの具体例は後述する。生体署名検証部134は、前記生体証明書Tに含まれる前記公開鍵KPeと、前記生体署名σに含まれる前記一時公開鍵KPsとから、所定の関数Diffを用いて、差分公開鍵KPd=DiffKPe,KPsを計算するステップS404。前記差分公開鍵KPdは、前記秘密鍵KSeと前記一時秘密鍵KSsとの間の差に相当する前記所定の演算結果であるKSe-KSsを新たな秘密鍵とみなしたときに、対応する公開鍵となるよう、関数Diffを構成する。関数Diffの具体例は後述する。生体署名検証部134は、前記差分秘密鍵KSdと前記差分公開鍵KPdが、前記所定の電子署名アルゴリズムにおいて対応する鍵ペアであることを検証する。検証に失敗した場合は最終検証結果を失敗、検証に成功した場合は最終検証結果を成功とするS407。検証結果出力部135は、最終検証結果を出力するS407。本実施例によれば、署名生成ユーザが登録ユーザと同一人物であるならば、前記登録用特徴量Xと前記署名用特徴量X’は十分近くなる類似することが見込まれる。このとき前記差分秘密鍵KSdは前記秘密鍵KSeと前記一時秘密鍵KSsとの差に一致しKSd=KSe-KSs、差分鍵ペア検証S406に成功する。逆に署名生成ユーザと登録ユーザが異なる人物であるならば、前記登録用特徴量Xと前記署名用特徴量X’は近くない類似しないことが見込まれる。このとき前記差分秘密鍵KSdは前記秘密鍵KSeと前記一時秘密鍵KSsとの差に一致せずKSd≠KSe-KSs、差分鍵ペア検証S406に失敗する。また本実施例によれば、署名検証装置はユーザが同一人物なら差分秘密鍵KSd=KSe-KSsを計算できるものの、ここから秘密鍵KSeおよび/または一時秘密鍵KSsを特定することはできず、従って署名を偽造したり、登録用特徴量Xおよび/または署名用特徴量X’を復元することはできない。なお前記秘密鍵KSeおよび/または前記登録用特徴量Xを推定しようとする不正なユーザが、不正者自身のあるいは適当な生体特徴量を前記署名用特徴量X’とし、一時秘密鍵KSsを用いて生体署名を生成し、前記所定の関数Extを用いて差分秘密鍵計算KSdを作成し、前記差分秘密鍵KSdと前記一時秘密鍵KSsから前記秘密鍵KSeを推定し、生体署名を偽造しようとする攻撃を考える。仮にX’とXが十分近ければ、KSd=KSe-KSsとなるため、これを方程式とみなしてKSeについて解くことにより、秘密鍵KSeを特定することができる。しかし本攻撃が成功するためには、攻撃者がXに近いX’を知っていなくてはならず、これはそもそも生体情報が漏洩していることと同義である。つまり生体情報が漏洩しなければ、前述の攻撃方法によって前記秘密鍵KSsを推定することはできないと言える。以上の特徴から、本実施例の生体署名システムは、署名ユーザが登録ユーザと同一人物であるときにのみ正しい検証に成功する事のできる生体署名を生成することができ、そうでない場合には生体署名が生成できないことが見込まれる。以下では、前記所定の関数Emb,Ext,Diffの具体的な構成例について説明する。登録用特徴量および署名用特徴量は、n次元の実数ベクトルとし、数1で表すことができる。また、その間の距離はL1距離は、数2であらわすことができる。距離が所定の閾値t以下dX,X’≦tならば一致同一生体とみなす。また格子点集合Lを、と定義する。ここでKはtやxiより十分大きい所定の整数とする。更に整数ベクトルY∈Lに対して一つの整数zを対応させる関数intを以下の数4ように定義する。また上記の逆関数整数zに対してベクトルYを対応させる関数を、数5のとおり表記する。前記所定の電子署名アルゴリズムとしては、Schnorr署名を用いる。Schnorr署名の秘密鍵KSe、公開鍵KPeは以下のように生成される。まず秘密鍵KSeはランダムに生成された整数とし、公開鍵KPeは、で示される。ここでpは十分大きな素数とし、gはpを法とする整数の剰余環Zpの乗法群の生成元とする。pgは公開のパラメータとし、各ユーザに対して共通の値とする。以上の準備のもとで、前記埋め込み関数Embを以下の数7ように定義する。また前記所定の関数Extを以下数8のように定義する。ここでvは、実数ベクトルvに対して、vの各成分実数を整数に丸めた最も近い整数に写像した整数ベクトルを表す。または、1をn個並べたベクトルとする。このときCeCsの作り方より、数9が成立し、従ってdX,X’≦tならば、数10が成立する。ここで数11のように定義した。また、前記所定の関数Diffは以下の数12のように定義する。さらに、上記の定義より、差分鍵ペア検証ステップS406は、等式数13が成立するか否かを確認すればよい。"