(57)【要約】【課題】同一人に関する複数の暗号文の保護を強化する。【解決手段】複数のマスクの中からマスク１３を選択する。マスク１３を用いて乱数１４ａを変換したマスク乱数１５ａを生成し、生体情報から生成された生体特徴コード１６ａとマスク乱数１５ａとから鍵１７ａを生成すると共に、マスク１３を示すマスク情報を保存させる。マスク１３またはマスク１３と所定の関係を満たす他のマスクを用いて乱数１４ｂを変換したマスク乱数１５ｂを生成し、生体特徴コード１６ｂとマスク乱数１５ｂとから鍵１７ｂを生成する。鍵１７ａ，１７ｂのうちの一方の鍵と誤り訂正符号化方法１８ａとを用いて暗号文１９ｂを生成する。【選択図】図２
2018098739.tif 000002
【特許請求の範囲】
【請求項１】
情報処理システムが実行する暗号データ処理方法であって、
複数のマスクの中から第１のマスクを選択し、
前記第１のマスクを用いて第１の乱数を変換した第１のマスク乱数を生成し、生体情報から生成された第１の生体特徴コードと前記第１のマスク乱数とから第１の鍵を生成すると共に、選択した前記第１のマスクを示すマスク情報を保存させ、
前記マスク情報が示す前記第１のマスクまたは前記第１のマスクと所定の関係を満たす第２のマスクを用いて第２の乱数を変換した第２のマスク乱数を生成し、第２の生体特徴コードと前記第２のマスク乱数とから第２の鍵を生成し、
前記第１の鍵および前記第２の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する、
暗号データ処理方法。
【請求項２】
前記第１の鍵および前記第２の鍵のうちの他方の鍵と前記誤り訂正符号化方法に対応する復号方法とを用いて前記暗号文を復号する、
請求項１記載の暗号データ処理方法。
【請求項３】
前記複数のマスクそれぞれの非零ビット数は、前記誤り訂正符号化方法の訂正可能ビット数より大きく、前記訂正可能ビット数の２倍に１を加えたビット数以下である、
請求項１記載の暗号データ処理方法。
【請求項４】
前記暗号文の復号では、前記第１のマスクおよび前記第２のマスクを用いない第１の復号と、前記第１のマスクまたは前記第２のマスクを更に用いる第２の復号とを実行し、前記第１の復号および前記第２の復号の一方が成功した場合に認証成功と判定する、
請求項２記載の暗号データ処理方法。
【請求項５】
前記第１の鍵の生成では、他の誤り訂正符号化方法を用いて前記第１のマスク乱数を符号化し、前記第１の生体特徴コードと合成することで前記第１の鍵を生成し、
前記第２の鍵の生成では、前記他の誤り訂正符号化方法を用いて前記第２のマスク乱数を符号化し、前記第２の生体特徴コードと合成することで前記第２の鍵を生成し、
前記暗号文は、秘密情報を前記誤り訂正符号化方法および前記他の誤り訂正符号化方法を用いて符号化し、前記一方の鍵と合成することで生成され、
前記暗号文の復号では、前記暗号文と前記他方の鍵とを合成し、前記他の誤り訂正符号化方法に対応する他の復号方法および前記復号方法を実行する、
請求項２記載の暗号データ処理方法。
【請求項６】
前記暗号文の復号では、前記暗号文と前記他方の鍵とを合成し前記他の復号方法を用いて復号した中間データを生成し、前記中間データを前記復号方法を用いて復号する第１の復号と、前記中間データと前記第１のマスクまたは前記第２のマスクとを合成して前記復号方法を用いて復号する第２の復号とを実行し、前記第１の復号および前記第２の復号の一方が成功した場合に認証成功と判定する、
請求項５記載の暗号データ処理方法。
【請求項７】
生体情報を取得する取得部と、
複数のマスクの中から第１のマスクを選択し、
前記第１のマスクを用いて第１の乱数を変換した第１のマスク乱数を生成し、前記生体情報から生成された第１の生体特徴コードと前記第１のマスク乱数とから第１の鍵を生成すると共に、選択した前記第１のマスクを示すマスク情報を保存させ、
前記マスク情報が示す前記第１のマスクまたは前記第１のマスクと所定の関係を満たす第２のマスクを用いて第２の乱数を変換した第２のマスク乱数を生成し、第２の生体特徴コードと前記第２のマスク乱数とから第２の鍵を生成し、
前記第１の鍵および前記第２の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する処理部と、
を有する暗号データ処理装置。
【請求項８】
コンピュータに、
複数のマスクの中から第１のマスクを選択し、
前記第１のマスクを用いて第１の乱数を変換した第１のマスク乱数を生成し、生体情報から生成された第１の生体特徴コードと前記第１のマスク乱数とから第１の鍵を生成すると共に、選択した前記第１のマスクを示すマスク情報を保存させ、
前記マスク情報が示す前記第１のマスクまたは前記第１のマスクと所定の関係を満たす第２のマスクを用いて第２の乱数を変換した第２のマスク乱数を生成し、第２の生体特徴コードと前記第２のマスク乱数とから第２の鍵を生成し、
前記第１の鍵および前記第２の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する、
処理を実行させる暗号データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラムに関する。
【背景技術】
【０００２】
現在、秘密情報の保護やユーザ認証などの暗号処理に生体情報が利用されることがある。生体情報は、人間の身体的特徴または行動的特徴を示す情報である。身体的特徴としては、例えば、指紋、静脈、虹彩などが挙げられる。行動的特徴としては、例えば、筆跡などが挙げられる。生体情報を利用した典型的な暗号処理では、生体情報から生成された生体特徴コードを用いて鍵を生成し、生成された鍵を用いて暗号化や復号を行う。
【０００３】
例えば、秘密情報の保護では、暗号化時に取得した生体特徴コード（例えば、暗号化時に撮像した指紋画像や静脈画像などから生成した生体特徴コード）から暗号鍵を生成し、生成された暗号鍵を用いて秘密情報を暗号化する。そして、復号時に取得した生体特徴コード（例えば、復号時に撮像した指紋画像や静脈画像などから生成した生体特徴コード）から復号鍵を生成し、生成された復号鍵を用いて暗号文を復号する。また、例えば、ユーザ認証では、ユーザ登録時に取得した生体特徴コードから暗号鍵を生成し、生成された暗号鍵を用いてテンプレートを生成して認証データベースに保存しておく。そして、認証時に取得した生体特徴コードから復号鍵を生成し、生成された復号鍵を用いてテンプレートを正しく復号できたか否かによってユーザの同一性を判定する。
【０００４】
ここで、生体特徴コードは、取得タイミングが異なっても同一人からは類似するものが取得され、別人からは類似しないものが取得されるという強い識別性を有する。このような生体特徴コードは、任意に選択可能なユーザＩＤやパスワードなどと異なり、漏洩しても変更することが容易でない。このため、暗号データ処理システムから生体特徴コードが漏洩してしまうリスクを低減することが好ましい。このような観点から、ファジーコミットメント（Fuzzy Commitment）などのバイオメトリック暗号が提案されている。
【０００５】
提案のファジーコミットメントでは、秘密情報を誤り訂正符号化し、生成された符号に暗号化時に取得した生体特徴コードを加算することで暗号文を生成する。そして、復号時に取得した生体特徴コードを暗号文から減算し、減算結果を誤り訂正復号することで暗号文を復号する。暗号化時の生体特徴コードと復号時の生体特徴コードとの差が小さい場合、その差は軽微なノイズとして誤り訂正復号によって除去され、秘密情報が復元される。一方、暗号化時の生体特徴コードと復号時の生体特徴コードとの差が大きい場合、大きなノイズによって誤り訂正復号が失敗し、秘密情報は復元されない。
【０００６】
なお、生体情報を利用したユーザ認証において、暗号化装置と復号装置との間で認証情報を安全に送信する遠隔認証システムが提案されている。提案の遠隔認証システムの暗号化装置は、暗号化毎に数値キーを決定し、決定した数値キーと所定の一次鍵とから暗号鍵を生成し、暗号鍵を用いて生体情報を暗号化し、使用された数値キーを示す復号制御情報と暗号化された生体情報とを含む認証情報を送信する。遠隔認証システムの復号装置は、復号制御情報から数値キーを復元し、復元した数値キーと所定の一次鍵とから復号鍵を生成し、復号鍵を用いて暗号化された生体情報を復号する。
【０００７】
また、登録コストを低減した生体認証システムが提案されている。提案の生体認証システムは、登録時に取得した生体情報からマスター補助情報を生成してＩＣ（Integrated Circuit）に書き込む。また、生体認証システムは、登録パスワードを生成して認証サーバに登録すると共に、マスター補助情報を変換することで登録パスワードに対応する補助情報を生成し、補助情報を認証端末に保存する。生体認証システムは、認証時に取得した生体情報と認証端末に保存された補助情報とから、認証端末において認証パスワードを生成し、認証サーバにおいて登録パスワードと認証パスワードを照合する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−７８０２号公報
【特許文献２】特開２００７−１４８４７０号公報
【非特許文献】
【０００９】
【非特許文献１】Ari Juels and Martin Wattenberg, "A fuzzy commitment scheme", Proc. of the 6th ACM (Association for Computing Machinery) conference on Computer and Communications Security, pp. 28-36, 1999
【発明の概要】
【発明が解決しようとする課題】
【００１０】
同一人が複数の認証システムに登録する場合など、同一人に関する異なる秘密情報を独立に暗号化して保護したい場合がある。しかし、生体情報を利用した従来の暗号処理技術では、同一人の生体情報から生成される複数の鍵の類似性により、ある暗号文を復号するための復号鍵を用いて他の暗号文を意図せず復号できてしまうことがある。そのため、例えば、ある秘密情報を復元するための復号鍵が漏洩すると、当該復号鍵が不正に流用されて、同一人に関する別の秘密情報も漏洩してしまうリスクがある。また、例えば、ある認証システムで使用する復号鍵が漏洩すると、当該復号鍵が不正に流用されて、別の認証システムへの不正なログインが成功してしまうリスクがある。
【００１１】
１つの側面では、本発明は、同一人に関する複数の暗号文の保護を強化できる暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
１つの態様では、情報処理システムが実行する暗号データ処理方法が提供される。複数のマスクの中から第１のマスクを選択する。第１のマスクを用いて第１の乱数を変換した第１のマスク乱数を生成し、生体情報から生成された第１の生体特徴コードと第１のマスク乱数とから第１の鍵を生成すると共に、選択した第１のマスクを示すマスク情報を保存させる。マスク情報が示す第１のマスクまたは第１のマスクと所定の関係を満たす第２のマスクを用いて第２の乱数を変換した第２のマスク乱数を生成し、第２の生体特徴コードと第２のマスク乱数とから第２の鍵を生成する。第１の鍵および第２の鍵のうちの一方の鍵と誤り訂正符号化方法とを用いて暗号文を生成する。
【００１３】
１つの態様では、取得部と処理部とを有する暗号データ処理装置が提供される。また、１つの態様では、コンピュータに実行させる暗号データ処理プログラムが提供される。
【発明の効果】
【００１４】
１つの側面では、同一人に関する複数の暗号文の保護を強化できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態の暗号データ処理装置の例を示すブロック図である。
【図２】第１の実施の形態のデータ変換例を示す図である。
【図３】第２の実施の形態の暗号データ処理システムの例を示す図である。
【図４】サーバ装置のハードウェア例を示すブロック図である。
【図５】サーバ装置とクライアント装置の機能例を示すブロック図である。
【図６】第１のテンプレートテーブルの例を示す図である。
【図７】第１のクライアント登録処理の手順例を示すフローチャートである。
【図８】第１のクライアント認証処理の手順例を示すフローチャートである。
【図９】第１のサーバ認証処理の手順例を示すフローチャートである。
【図１０】サーバ装置による復号鍵流用例を示すシーケンス図である。
【図１１】第２のテンプレートテーブルの例を示す図である。
【図１２】第２のクライアント登録処理の手順例を示すフローチャートである。
【図１３】第２のクライアント認証処理の手順例を示すフローチャートである。
【図１４】第２のサーバ認証処理の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１７】
図１は、第１の実施の形態の暗号データ処理装置の例を示すブロック図である。
第１の実施の形態の暗号データ処理装置１０は、生体情報を利用した暗号処理を行うセキュリティ装置である。暗号データ処理装置１０は、例えば、秘密情報を暗号化して保存しておく情報処理システムやユーザ認証を行う認証システムに使用される。暗号データ処理装置１０は、クライアントコンピュータなどのクライアント装置や端末装置でもよいし、サーバコンピュータなどのサーバ装置でもよい。
【００１８】
暗号データ処理装置１０は、取得部１１および処理部１２を有する。
取得部１１は、ユーザの生体情報を取得する。生体情報は、指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を示す。取得部１１は、撮像装置やタッチパネルなどの入力デバイスでもよいし、入力デバイスに接続される入力インタフェースでもよいし、入力デバイスを有する他の装置から生体情報を受信する通信インタフェースでもよい。
【００１９】
処理部１２は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、ＲＡＭ（Random Access Memory）などのメモリに記憶されたプログラムを実行する。プログラムには、暗号データ処理プログラムが含まれる。複数のプロセッサの集合を「プロセッサ」と呼ぶこともある。
【００２０】
図２は、第１の実施の形態のデータ変換例を示す図である。
処理部１２は、所定の条件を満たす複数のマスクの中からマスク１３を選択する。各マスクの非零ビット数は、好ましくは、後述する誤り訂正符号化方法１８ａの訂正可能ビット数より大きく、当該訂正可能ビット数の２倍に１を加えたビット数以下とする。
【００２１】
処理部１２は、乱数１４ａを選択し、マスク１３を用いて乱数１４ａを変換したマスク乱数１５ａを生成する。乱数１４ａからマスク乱数１５ａへの変換は、マスク１３を用いたマスク処理であり、例えば、マスク１３と乱数１４ａの間でビット毎の論理積を算出する演算である。処理部１２は、生体情報から生成された生体特徴コード１６ａとマスク乱数１５ａとから鍵１７ａを生成する。例えば、処理部１２は、誤り訂正符号化方法１８ａとは異なる他の誤り訂正符号化方法を用いてマスク乱数１５ａを符号化し、生成された符号と生体特徴コード１６ａを合成することで鍵１７ａを生成する。他の誤り訂正符号化方法は、好ましくは、線形符号化方法である。生成された符号と生体特徴コード１６ａとの合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
【００２２】
処理部１２は、上記の選択したマスク１３を示すマスク情報を保存させる。マスク情報は、マスク１３そのものでもよいし、計算によりマスク１３を特定するための間接的情報であってもよい。処理部１２は、暗号データ処理装置１０が有する記憶部にマスク情報を保存してもよいし、他の装置にマスク情報を保存させてもよい。
【００２３】
処理部１２は、鍵１７ａを生成した後、乱数１４ｂを選択し、マスク情報が示すマスク１３またはマスク１３と所定の関係を満たす他のマスクを用いて、乱数１４ｂを変換したマスク乱数１５ｂを生成する。乱数１４ｂからマスク乱数１５ｂへの変換は、マスク１３または上記他のマスクを用いたマスク処理であり、例えば、マスク１３または上記他のマスクと乱数１４ｂの間でビット毎の論理積を算出する演算である。処理部１２は、生体情報から生成された生体特徴コード１６ｂとマスク乱数１５ｂとから鍵１７ｂを生成する。
【００２４】
例えば、処理部１２は、上記他の誤り訂正符号化方法を用いてマスク乱数１５ｂを符号化し、生成された符号と生体特徴コード１６ｂを合成することで鍵１７ｂを生成する。生成された符号と生体特徴コード１６ｂとの合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。鍵１７ｂの生成に使用する生体情報は、鍵１７ａの生成後に取得した生体情報など、鍵１７ａの生成に使用した生体情報と異なってよい。
【００２５】
ここで、鍵１７ａおよび鍵１７ｂの一方が暗号鍵として使用され、鍵１７ａおよび鍵１７ｂの他方が復号鍵として使用される。処理部１２は、暗号鍵と誤り訂正符号化方法１８ａとを用いて秘密情報１９ａを暗号化し、暗号文１９ｂを生成する。例えば、処理部１２は、秘密情報１９ａを誤り訂正符号化方法１８ａを用いて符号化し、生成された符号を上記他の誤り訂正符号化方法を用いて更に符号化し、その符号と暗号鍵とを合成することで暗号文１９ｂを生成する。生成された符号と暗号鍵との合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
【００２６】
鍵１７ａが暗号鍵である場合、例えば、処理部１２は、鍵１７ａを生成してから鍵１７ｂを生成する前に暗号文１９ｂを生成する。鍵１７ｂが暗号鍵である場合、処理部１２は、鍵１７ａ，１７ｂを生成してから暗号文１９ｂを生成する。暗号データ処理装置１０は、暗号データ処理装置１０が有する記憶部に暗号文１９ｂや復号鍵を保存してもよいし、他の装置に暗号文１９ｂや復号鍵を送信してもよい。
【００２７】
処理部１２は、誤り訂正符号化方法１８ａに対応する復号方法１８ｂと復号鍵とを用いて暗号文１９ｂを復号させる。処理部１２が暗号文１９ｂを復号してもよいし、他の装置に暗号文１９ｂを復号させてもよい。暗号文１９ｂの復号では、例えば、暗号文１９ｂと復号鍵とを合成し、上記他の誤り訂正符号化方法に対応する他の復号方法を用いて復号し、その復号結果を復号方法１８ｂを用いて更に復号する。暗号文１９ｂと復号鍵との合成は、例えば、両者の間でビット毎の排他的論理和を算出する演算である。
【００２８】
なお、復号方法１８ｂおよび上記他の復号方法を用いて暗号文１９ｂを復号する場合、第１の復号パスおよび第２の復号パスを含む複数の復号パスを実行してもよい。第１の復号パスでは、上記他の復号方法の復号結果そのものを復号方法１８ｂを用いて復号する。第２の復号パスでは、上記他の復号方法の復号結果に対してマスク１３または上記他のマスクを合成し、合成結果を復号方法１８ｂを用いて復号する。その場合、復号パスによって生成された複数の復号結果のうちの高々１つが正しい復号結果となる。
【００２９】
第１の実施の形態の暗号データ処理装置１０によれば、復号鍵の生成に暗号鍵と同一人の生体情報が使用された場合には暗号文１９ｂが復号可能であり、別人の生体情報が使用された場合には暗号文１９ｂが復号不可となる。また、復号鍵の生成に暗号鍵と同一または対応するマスクが使用された場合には、暗号文１９ｂが復号可能となる。これは、乱数１４ａ，１４ｂが同一または対応するマスクで制限されると、マスク乱数１５ａとマスク乱数１５ｂの差が復号方法１８ｂによって訂正可能な軽微なノイズとなるためである。一方、復号鍵の生成に暗号鍵とは無関係なマスクが使用された場合には、暗号文１９ｂが復号不可となる。これは、マスク乱数１５ａとマスク乱数１５ｂの差が復号方法１８ｂによって訂正不能な大きなノイズとなるためである。
【００３０】
よって、同一人に関する複数の暗号文に異なるマスクを適用することで、これら複数の暗号文の保護を強化することができる。例えば、ある暗号文を復号するための復号鍵が漏洩しても、マスクが異なるため同一人に関する他の暗号文は復号されない。
【００３１】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図３は、第２の実施の形態の暗号データ処理システムの例を示す図である。
【００３２】
第２の実施の形態の暗号データ処理システムは、生体情報を利用した暗号処理を行う情報処理システムである。この暗号データ処理システムは、サーバ装置１００，１００ａおよびクライアント装置２００，２００ａを含む。サーバ装置１００，１００ａおよびクライアント装置２００，２００ａは、ネットワーク３０に接続されている。ネットワーク３０は、ＬＡＮ（Local Area Network）でもよいし、インターネットなどの広域ネットワークでもよい。サーバ装置１００，１００ａおよびクライアント装置２００，２００ａは、同一の施設に設置されてもよいし互いに異なる施設に設置されてもよい。サーバ装置１００，１００ａは、データセンタなどの専用の情報処理施設に設置されてもよい。
【００３３】
サーバ装置１００，１００ａは、暗号化された秘密情報を管理するサーバコンピュータである。サーバ装置１００とサーバ装置１００ａとは、互いに独立に秘密情報を管理する。サーバ装置１００，１００ａによって、同一ユーザについての異なる秘密情報が管理されることがある。サーバ装置１００，１００ａは、生体情報および秘密情報を利用してユーザ認証（生体認証）を行う認証装置であってもよい。また、サーバ装置１００，１００ａは、互いに異なる組織が運用するサーバ装置であってもよい。例えば、サーバ装置１００，１００ａは、異なる組織の認証システムに属してもよい。
【００３４】
クライアント装置２００，２００ａは、ユーザが操作する端末装置である。クライアント装置２００，２００ａは、ＰＣ（Personal Computer）や携帯端末装置などの特定ユーザのみが使用する個人端末装置でもよいし、ＡＴＭ（Automated Teller Machine）などの不特定ユーザが使用する共有端末装置でもよい。
【００３５】
クライアント装置２００には、撮像装置２１１が接続されている。クライアント装置２００ａには、撮像装置２１１ａが接続されている。撮像装置２１１，２１１ａは、ユーザの身体的特徴または行動的特徴を表す生体画像を撮像する。身体的特徴には指紋、静脈および虹彩が含まれる。行動的特徴には筆跡が含まれる。クライアント装置２００，２００ａは、暗号処理に利用する特徴の種類を予め決めておいてもよい。その場合、撮像装置２１１，２１１ａは、予め決められた特徴を表す生体画像を効率的に撮像できるように、特徴の種類に応じた専用の形状を有していてもよい。例えば、暗号処理に静脈を利用する場合、撮像装置２１１，２１１ａは、手のひらを撮像しやすい形状を有していてもよい。
【００３６】
クライアント装置２００，２００ａは、暗号化の際、接続された撮像装置を用いてユーザの生体画像を取得し、生体画像から生体特徴コードを生成する。生体特徴コードは、生体画像から抽出された特徴情報を示す符号である。クライアント装置２００，２００ａは、生成された生体特徴コードを用いて暗号鍵を生成し、ユーザから与えられる秘密情報を暗号鍵で暗号化する。クライアント装置２００，２００ａは、生成された暗号文を何れかのサーバ装置に送信する。また、クライアント装置２００，２００ａは、復号の際、接続された撮像装置を用いてユーザの生体画像を取得し、生体画像から生体特徴コードを生成する。クライアント装置２００，２００ａは、生成された生体特徴コードを用いて復号鍵を生成し、復号鍵を何れかのサーバ装置に送信する。
【００３７】
第２の実施の形態では主に、サーバ装置１００，１００ａおよびクライアント装置２００，２００ａを用いて生体認証を行うことを想定する。ユーザ登録時、クライアント装置２００，２００ａは、暗号文を含むテンプレートを何れかのサーバ装置に送信する。テンプレートは、ユーザの同一性を判定するときに参照されるデータである。テンプレートが漏洩してもテンプレートから生体特徴コードを抽出できないように、生体特徴コードが保護されている。サーバ装置１００，１００ａは、テンプレートを受信すると、受信したテンプレートをデータベースに保存する。データベースは、各サーバ装置が有していてもよいし、サーバ装置１００，１００ａの外部に存在してもよい。
【００３８】
ユーザ認証時、クライアント装置２００，２００ａは、復号鍵を何れかのサーバ装置に送信する。サーバ装置１００，１００ａは、復号鍵を受信すると、データベースに保存されたテンプレートから暗号文を抽出し、受信した復号鍵によって暗号文を復号することを試みる。サーバ装置１００，１００ａは、暗号文を復号できた場合は認証成功と判定し、認証成功を示す認証結果を返信する。一方、サーバ装置１００，１００ａは、暗号文を復号できなかった場合は認証失敗と判定し、認証失敗を示す認証結果を返信する。
【００３９】
クライアント装置２００，２００ａは、認証結果を受信すると、認証結果に応じてユーザインタフェースを制御する。認証成功の場合、例えば、クライアント装置２００，２００ａは、認証成功のメッセージをディスプレイに表示し、クライアント装置２００，２００ａが提供するサービスの全ての利用を許可する。一方、認証失敗の場合、例えば、クライアント装置２００，２００ａは、認証失敗のメッセージをディスプレイに表示し、クライアント装置２００，２００ａが提供するサービスの一部または全部の利用を拒否する。
【００４０】
なお、登録に使用するクライアント装置と認証に使用するクライアント装置は、同一でもよいし異なってもよい。すなわち、暗号鍵の生成に使用するクライアント装置と復号鍵の生成に使用するクライアント装置は、同一でもよいし異なってもよい。例えば、あるユーザがクライアント装置２００を使用して登録を行い、クライアント装置２００ａを使用して認証を行ってもよい。また、クライアント装置２００を登録専用のクライアント装置とし、クライアント装置２００ａを認証専用のクライアント装置としてもよい。
【００４１】
図４は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ（Hard Disk Drive）１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。サーバ装置１００が有する上記ユニットは、バスに接続されている。
【００４２】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、サーバ装置１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合をマルチプロセッサまたはプロセッサと言うことがある。
【００４３】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４４】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、暗号データ処理プログラムが含まれる。なお、サーバ装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４５】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、サーバ装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど様々な種類のディスプレイを用いることができる。
【００４６】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４７】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４８】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４９】
通信インタフェース１０７は、ネットワーク３０に接続され、ネットワーク３０を介してクライアント装置２００，２００ａと通信を行うインタフェースである。通信インタフェース１０７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００５０】
サーバ装置１００ａやクライアント装置２００，２００ａも、サーバ装置１００と同様のハードウェアを用いて実装できる。ただし、クライアント装置２００には撮像装置２１１が接続され、クライアント装置２００ａには撮像装置２１１ａが接続される。撮像装置２１１，２１１ａは、入力デバイスの一種と言うこともできる。クライアント装置２００，２００ａは、接続された撮像装置から生体画像を取得するインタフェースを有する。取得された生体画像は、例えば、ＲＡＭやＨＤＤなどの記憶装置に格納される。
【００５１】
次に、暗号処理アルゴリズムの例を説明する。まず、ファジーコミットメントと呼ばれることがある第１の暗号処理アルゴリズムを説明する。その次に、第１の暗号処理アルゴリズムを修正した第２の暗号処理アルゴリズムを説明し、更に第２の暗号処理アルゴリズムを修正した第３の暗号処理アルゴリズムを説明する。なお、以下の暗号処理アルゴリズムの説明では、扱うデータとして主に２進数のビット列を想定する。
【００５２】
第１の暗号処理アルゴリズムでは、数式（１）に示すテンプレートがデータベースに登録される。数式（１）において、「ｃ」は暗号文、「ｇ」は誤り訂正符号化を行う符号化関数、「ｐ」は平文である秘密情報、「Ｂ」は暗号化時に取得された生体特徴コード、「ｈ」はハッシュ関数である。テンプレートは、暗号文ｃとハッシュ値ｈ（ｐ）を含む。暗号文ｃは、秘密情報ｐを符号化関数ｇで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢを加算することで生成される。生体特徴コードＢが暗号鍵である。ハッシュ値ｈ（ｐ）は、ハッシュ関数ｈを用いて秘密情報ｐから算出される。なお、２進数のビット列に対する加算および減算は、ビット毎に排他的論理和を算出する演算である。
【００５３】
【数１】
2018098739.tif 000003
【００５４】
第１の暗号処理アルゴリズムでは、復号時には数式（２）に示す計算が行われる。数式（２）において、「ｐ*」は復号結果、「ｇ-1」は符号化関数ｇに対応する誤り訂正復号を行う復号関数、「Ｂ*」は復号時に取得された生体特徴コードである。復号結果ｐ*は、テンプレートに含まれる暗号文ｃから生体特徴コードＢ*を減算し、その減算結果を復号関数ｇ-1で誤り訂正復号することで生成される。生体特徴コードＢ*が復号鍵である。
【００５５】
【数２】
2018098739.tif 000004
【００５６】
ここで、暗号化時の生体特徴コードＢと復号時の生体特徴コードＢ*とは、使用する撮像装置の違いや撮像環境の違い、ユーザの姿勢の違いなどの要因で完全には一致しないことが多い。ただし、生体特徴コードＢ，Ｂ*は、同一人から取得された場合には互いに近似しており、別人から取得された場合には近似しない。すなわち、生体特徴コードＢ，Ｂ*は、同一人から取得された場合のみ互いに近似する。
【００５７】
生体特徴コードＢ，Ｂ*が近似している場合、両者のハミング距離（両者の差のハミング重み）は復号関数ｇ-1の訂正可能ビット数θ（誤り訂正能力）以下になる。ハミング距離は、２つのビット列の間で値が異なるビットの数である。ハミング重みは、１つのビット列の中で値が「０」でないビット（非零ビット）の数である。２進数のビット列については、ハミング重みは値が「１」であるビットの数である。よって、生体特徴コードＢ，Ｂ*が近似している場合、生体特徴コードＢ，Ｂ*の差は誤り訂正符号ｇ（ｐ）に対して軽微なノイズとなり、復号結果ｐ*は秘密情報ｐと一致する。
【００５８】
一方、生体特徴コードＢ，Ｂ*が近似していない場合、両者のハミング距離は復号関数ｇ-1の訂正可能ビット数θを超える。よって、生体特徴コードＢ，Ｂ*が近似していない場合、生体特徴コードＢ，Ｂ*の差は誤り訂正符号ｇ（ｐ）に対して訂正不能なノイズとなり、復号結果ｐ*は秘密情報ｐと一致しない。すなわち、生体特徴コードＢ，Ｂ*が同一人から取得された場合のみ、復号結果ｐ*が秘密情報ｐと一致する。
【００５９】
第１の暗号処理アルゴリズムでは、数式（３）に示すように復号結果ｐ*が秘密情報ｐと一致するか否か判定される。すなわち、ハッシュ関数ｈを用いて復号結果ｐ*からハッシュ値ｈ（ｐ*）が算出され、ハッシュ値ｈ（ｐ*）とテンプレートに含まれるハッシュ値ｈ（ｐ）とが比較される。ハッシュ関数ｈの性質から、生体特徴コードＢ，Ｂ*が近似している場合、すなわち、生体特徴コードＢ，Ｂ*が同一人から取得された場合のみハッシュ値ｈ（ｐ），ｈ（ｐ*）が一致する。そこで、ハッシュ値ｈ（ｐ），ｈ（ｐ*）が一致した場合は認証成功と判定され、一致しない場合は認証失敗と判定される。
【００６０】
【数３】
2018098739.tif 000005
【００６１】
第１の暗号処理アルゴリズムでは、テンプレートに秘密情報ｐ自体は含まれておらず、生体特徴コードＢ自体も含まれていない。しかし、復号鍵が生体特徴コードＢ*であるため、クライアント装置とサーバ装置の間で生体特徴コードＢ*自体が送信される可能性がある。また、認証成功時には秘密情報ｐが一時的に抽出されることになるため、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、この秘密情報ｐとテンプレートに含まれる暗号文ｃから生体特徴コードＢを復元できるおそれがある。そこで、次の第２の暗号処理アルゴリズムでは、生体特徴コードＢ，Ｂ*の保護を強化する。
【００６２】
第２の暗号処理アルゴリズムでは、数式（４）に示すテンプレートがデータベースに登録される。数式（４）において、「ｆ」は符号化関数ｇとは異なる誤り訂正符号化を行う符号化関数、「Ｒ」は暗号化時に選択された乱数である。テンプレートは、暗号文ｃとハッシュ値ｈ（ｐ）を含む。暗号文ｃは、秘密情報ｐを符号化関数ｇで誤り訂正符号化し、その誤り訂正符号を更に符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に暗号鍵を加算することで生成される。暗号鍵は、乱数Ｒを符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢを加算することで生成される。
【００６３】
【数４】
2018098739.tif 000006
【００６４】
上記のように、第２の暗号処理アルゴリズムでは誤り訂正符号化が二重に行われる。符号化関数ｆが示す誤り訂正符号としては線形符号を用いる。符号化関数ｇが示す誤り訂正符号としては線形符号または非線形符号を用いる。線形符号の例として、ハミング符号、ＢＣＨ（Bose Chaudhuri Hocquenghem）符号、リードソロモン符号、ターボ符号、ＬＤＰＣ（Low Density Parity Check）符号、畳み込み符号などを挙げることができる。非線形符号の例として、ＮＲ符号、ナドラ符号、グリーン符号などを挙げることができる。符号化関数ｇが示す誤り訂正符号として線形符号を用いる場合に、符号化関数ｆ，ｇの誤り訂正符号の種類は異なってもよいし同じであってもよい。
【００６５】
なお、符号化関数ｆが示す誤り訂正符号は線形符号であるため、ｆ（ｇ（ｐ））＋ｆ（Ｒ）＋Ｂはｆ（ｇ（ｐ）＋Ｒ）＋Ｂと等価である。暗号文ｃを生成するにあたり、ｆ（ｇ（ｐ）），ｆ（Ｒ）を算出してからｆ（ｇ（ｐ））＋ｆ（Ｒ）＋Ｂを算出してもよいし、ｇ（ｐ）＋Ｒを算出してからｆ（ｇ（ｐ）＋Ｒ）＋Ｂを算出してもよい。
【００６６】
第２の暗号処理アルゴリズムでは、復号時には数式（５）に示す計算が行われる。数式（５）において、「ｆ-1」は符号化関数ｆに対応する誤り訂正復号を行う復号関数、「Ｒ*」は復号時に選択された乱数である。復号結果ｐ*は、テンプレートに含まれる暗号文ｃから復号鍵を減算し、その減算結果を復号関数ｆ-1で誤り訂正復号し、その復号結果を更に復号関数ｇ-1で誤り訂正復号することで生成される。復号鍵は、乱数Ｒ*を符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢ*を加算することで生成される。数式（５）の計算過程において、符号化関数ｆの線形性からｆ（ｇ（ｐ））＋ｆ（Ｒ）−ｆ（Ｒ*）はｆ（ｇ（ｐ）＋Ｒ−Ｒ*）と変形されている。
【００６７】
【数５】
2018098739.tif 000007
【００６８】
ここで、第１の暗号処理アルゴリズムと同様、生体特徴コードＢ，Ｂ*が近似している場合、生体特徴コードＢ，Ｂ*の差は誤り訂正符号ｆ（ｇ（ｐ）＋Ｒ−Ｒ*）に対して軽微なノイズとなり、復号関数ｆ-1の復号結果はｇ（ｐ）＋Ｒ−Ｒ*に一致する。また、乱数Ｒ，Ｒ*は、ハミング距離が復号関数ｇ-1の訂正可能ビット数θ以下になるよう選択されるものとする。すると、乱数Ｒ，Ｒ*の差は誤り訂正符号ｇ（ｐ）に対して軽微なノイズとなり、復号関数ｇ-1の復号結果ｐ*はｐと一致する。そして、第２の暗号処理アルゴリズムでは、第１の暗号処理アルゴリズムと同様、数式（３）に示すようにハッシュ関数ｈを用いて復号結果ｐ*が秘密情報ｐと一致するか否か判定される。
【００６９】
第２の暗号処理アルゴリズムでは、復号鍵が乱数Ｒ*に依存するため、クライアント装置とサーバ装置の間で生体特徴コードＢ*自体は送信されない。また、テンプレートに含まれる暗号文ｃは乱数Ｒに依存するため、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、復号された秘密情報ｐを知っても暗号文ｃから生体特徴コードＢを抽出できない。よって、生体特徴コードＢ，Ｂ*の保護が強化されている。
【００７０】
しかし、第２の暗号処理アルゴリズムで使用する乱数Ｒ，Ｒ*は、互いに近似するよう選択される。このため、ある暗号文の復号時に選択される乱数Ｒ1*は、その暗号文の暗号化時に使用された乱数Ｒ1に近似するだけでなく、別の暗号文の暗号化時に使用された乱数Ｒ2にも近似することになる。そのため、同一人の生体特徴コードを用いて暗号化されている複数の暗号文は、その人の１つの復号鍵で全て復号できてしまうおそれがある。よって、例えば、サーバ装置に侵入した攻撃者またはサーバ装置の管理者は、あるユーザの復号鍵を取得した場合、その復号鍵を不正に流用して他のサーバ装置にある同一ユーザの暗号文を復号させることに成功してしまうおそれがある。そこで、次の第３の暗号処理アルゴリズムでは、同一人に関する複数の暗号文の保護を強化し、同一人に関する異なる秘密情報を互いに独立に保護できるようにする。
【００７１】
第３の暗号処理アルゴリズムでは、数式（６）に示すテンプレートがデータベースに登録される。数式（６）において、「Ｍ」はマスク、「Ｒ（Ｍ）」は暗号化時に選択された乱数ｒをマスクＭでマスク処理したマスク乱数である。テンプレートは、暗号文ｃとハッシュ値ｈ（ｐ）とマスクＭを含む。暗号文ｃは、秘密情報ｐを符号化関数ｇで誤り訂正符号化し、その誤り訂正符号を更に符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に暗号鍵を加算することで生成される。暗号鍵は、マスク乱数Ｒ（Ｍ）を符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢを加算することで生成される。
【００７２】
【数６】
2018098739.tif 000008
【００７３】
マスクＭは、符号化関数ｇの終域（符号化関数ｇの出力のビット長で定義されるビット列空間）に含まれる所定の条件を満たすビット列の中から、暗号化時にランダムに選択したものである。マスクＭが満たす所定の条件は、そのハミング重みが復号関数ｇ-1の訂正可能ビット数θより十分に大きく２θ＋１を超えないことである。マスク処理前の乱数ｒは、符号化関数ｇの終域からランダムに選択したビット列である。マスク乱数Ｒ（Ｍ）は、選択した乱数ｒを選択したマスクＭでマスク処理したものであり、２進数の場合は乱数ｒとマスクＭの間でビット毎の論理積を算出することで生成したものである。
【００７４】
第３の暗号処理アルゴリズムでは、復号時には数式（７）に示す第１の復号パスと数式（８）に示す第２の復号パスの両方が実行される。数式（７）および数式（８）において、「Ｍ*」は復号に使用されるマスクであり、暗号化時に選択されテンプレートに含まれているマスクＭと同一であることが想定される。「Ｒ*（Ｍ*）」は復号時に選択された乱数ｒ*をマスクＭ*でマスク処理したマスク乱数である。マスク処理前の乱数ｒ*は、符号化関数ｇの終域からランダムに選択したビット列である。マスク乱数Ｒ*（Ｍ*）は、選択した乱数ｒ*をマスクＭ*でマスク処理したものであり、２進数の場合は乱数ｒ*とマスクＭ*の間でビット毎の論理積を算出することで生成したものである。
【００７５】
【数７】
2018098739.tif 000009
【００７６】
【数８】
2018098739.tif 000010
【００７７】
第１の復号パスの復号結果ｐ1*は、テンプレートに含まれる暗号文ｃから復号鍵を減算し、その減算結果を復号関数ｆ-1で誤り訂正復号し、その復号結果を更に復号関数ｇ-1で誤り訂正復号することで生成される。復号鍵は、マスク乱数Ｒ*（Ｍ*）を符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢ*を加算することで生成される。符号化関数ｆの線形性から、ｆ（ｇ（ｐ））＋ｆ（Ｒ（Ｍ））−ｆ（Ｒ*（Ｍ*））はｆ（ｇ（ｐ）＋Ｒ（Ｍ）−Ｒ*（Ｍ*））と変形される。第２の複合パスの復号結果ｐ2*は、暗号文ｃから復号鍵を減算し、その減算結果を復号関数ｆ-1で誤り訂正復号し、その復号結果にテンプレートのマスクＭを加算し、その加算結果を更に復号関数ｇ-1で誤り訂正復号することで生成される。復号鍵は、第１の復号パスと同じである。
【００７８】
第３の暗号処理アルゴリズムでは、数式（９）に示すように、生体特徴コードＢ，Ｂ*が近似しており、かつ、マスクＭとマスクＭ*が同じ場合、復号結果ｐ1*，ｐ2*の何れか一方が秘密情報ｐに一致する。これに対し、生体特徴コードＢ，Ｂ*が近似していない場合、第１の復号パスおよび第２の復号パスの両方で復号関数ｆ-1の復号が失敗し、復号結果ｐ1*，ｐ2*の何れも秘密情報ｐに一致しない。また、マスクＭとマスクＭ*が異なる場合、第１の復号パスおよび第２の復号パスの両方で復号関数ｇ-1の復号が失敗し、復号結果ｐ1*，ｐ2*の何れも秘密情報ｐに一致しない。
【００７９】
【数９】
2018098739.tif 000011
【００８０】
そして、第３の暗号処理アルゴリズムでは、数式（１０）に示すように復号結果ｐ1*，ｐ2*の何れか一方が秘密情報ｐと一致するか否か判定される。すなわち、ハッシュ値ｈ（ｐ1*）とテンプレートに含まれるｈ（ｐ）とが比較され、また、ハッシュ値ｈ（ｐ2*）とテンプレートに含まれるｈ（ｐ）とが比較される。ハッシュ値ｈ（ｐ1*），ｈ（ｐ2*）の何れか一方がハッシュ値ｈ（ｐ）と一致した場合は認証成功と判定され、何れもハッシュ値ｈ（ｐ）と一致しない場合は認証失敗と判定される。よって、暗号文によってマスクＭを変えることで、復号鍵の不正流用を抑止できる。
【００８１】
【数１０】
2018098739.tif 000012
【００８２】
ここで、マスクＭ，Ｍ*が一致している場合、マスク乱数Ｒ（Ｍ），Ｒ*（Ｍ*）は互いに近似しているか、または、マスクＭを加算すれば互いに近似する。Ｍ＝Ｍ*とすると、Ｒ（Ｍ）−Ｒ*（Ｍ）において値が「１」になるビットは、マスクＭにおいて値が「１」であるビットに限定される。よって、Ｒ（Ｍ）−Ｒ*（Ｍ）のハミング重みはマスクＭのハミング重みを超えない。Ｒ（Ｍ）−Ｒ*（Ｍ）のハミング重みは、訂正可能ビット数θ以下である場合と、訂正可能ビット数θを超える場合とに分けられる。
【００８３】
Ｒ（Ｍ）−Ｒ*（Ｍ）のハミング重みがθ以下である場合、第１の復号パスにおいて復号関数ｇ-1の誤り訂正復号に成功する。Ｒ（Ｍ）−Ｒ*（Ｍ）のハミング重みがθを超える場合、マスクＭで値が「１」でありＲ（Ｍ）−Ｒ*（Ｍ）で値が「０」になっているビットの数が、マスクＭのハミング重みからＲ（Ｍ）−Ｒ*（Ｍ）のハミング重みを引いた値となる。よって、Ｒ（Ｍ）−Ｒ*（Ｍ）＋Ｍのハミング重みは、２θ＋１以下であるマスクＭのハミング重みから訂正可能ビット数θを引いた値より小さい。すなわち、Ｒ（Ｍ）−Ｒ*（Ｍ）＋Ｍのハミング重みは、訂正可能ビット数θ以下となる。このため、第２の復号パスにおいて復号関数ｇ-1の誤り訂正復号に成功する。
【００８４】
これに対し、マスクＭ，Ｍ*が一致しない場合、マスク乱数Ｒ（Ｍ），Ｒ*（Ｍ*）は近似しない。マスク乱数Ｒ（Ｍ）のハミング重みはマスクＭのハミング重みの半分程度の期待値をもち、マスク乱数Ｒ*（Ｍ*）のハミング重みはマスクＭ*のハミング重みの半分程度の期待値をもつ。このため、マスク乱数Ｒ（Ｍ），Ｒ*（Ｍ*）それぞれのハミング重みは、訂正可能ビット数θの半分より十分に大きい。また、マスクＭ，Ｍ*はランダムに選択されるため、マスクＭ，Ｍ*の両方で値が「１」になっているビットは少ない。よって、Ｒ（Ｍ）−Ｒ*（Ｍ*）のハミング重みは、訂正可能ビット数θより十分に大きくなる。Ｒ（Ｍ）−Ｒ*（Ｍ）＋Ｍのハミング重みは、上記説明のマスク乱数Ｒ（Ｍ）をＲ（Ｍ）＋Ｍに置き換えることで同様のロジックが成立するため、訂正可能ビット数θより十分に大きい。従って、第１の復号パスにおいて復号関数ｇ-1の誤り訂正復号に失敗し、かつ、第２の復号パスにおいて復号関数ｇ-1の誤り訂正復号に失敗する。
【００８５】
ここで、マスク乱数Ｒ（Ｍ），Ｒ*（Ｍ*）の差の性質について更に説明を補足する。なお、２進数のビット列空間では、加算も減算もビット毎の排他的論理和を算出する演算であり対称性を有することから、加算および減算を演算子「△」を用いて表記することとする。また、ビット列を値が「１」であるビットの位置の集合と同視する。また、ビット列のハミング重みを絶対値記号を用いて表記する。また、「〜」という関係演算子は、左辺は右辺の付近に分布し、左辺と右辺の差が大きくなる確率は低いことを表す。
【００８６】
マスクＭ，Ｍ*が一致している場合、マスク処理の性質からマスク乱数Ｒ（Ｍ），Ｒ*（Ｍ）について数式（１１）が成立する。このため、Ｒ（Ｍ）△Ｒ*（Ｍ）のハミング重みとＲ（Ｍ）△Ｒ*（Ｍ）△Ｍのハミング重みについて数式（１２）が成立する。数式（１２）では、｜Ａ△Ｂ｜＝｜Ａ｜＋｜Ｂ｜−２｜Ａ∩Ｂ｜という集合の性質を利用している。このことから、マスクＭのハミング重みを２θ＋１と仮定すると、数式（１３）が成立する。すなわち、マスクＭ，Ｍ*が一致する場合、Ｒ（Ｍ）△Ｒ*（Ｍ）のハミング重みがθ以下であるか、Ｒ（Ｍ）△Ｒ*（Ｍ）△Ｍのハミング重みがθ以下になる。
【００８７】
【数１１】
2018098739.tif 000013
【００８８】
【数１２】
2018098739.tif 000014
【００８９】
【数１３】
2018098739.tif 000015
【００９０】
一方、マスクＭ，Ｍ*が異なる場合、マスク乱数Ｒ（Ｍ），Ｒ*（Ｍ*）について数式（１４）が成立する。マスクＭ，Ｍ*が異なると、Ｍ∩Ｍ*のハミング重みは小さくなるためＲ（Ｍ）∩Ｒ*（Ｍ*）のハミング重みも小さくなり、数式（１５）が成立する。すなわち、Ｒ（Ｍ）△Ｒ*（Ｍ*）のハミング重みは、マスクＭのハミング重みの半分とマスクＭ*のハミング重みの半分を合計した値に近似する。マスクＭのハミング重みがθより十分に大きくかつマスクＭ*のハミング重みがθより十分に大きいため、数式（１６）の第１項の関係が成立する。また、上記Ｒ（Ｍ）をＭ＼Ｒ（Ｍ）で置換することで同様のロジックが成立するため、数式（１６）の第２項の関係が成立する。すなわち、マスクＭ，Ｍ*が異なる場合、Ｒ（Ｍ）△Ｒ*（Ｍ）のハミング重みがθより十分に大きく、かつ、Ｒ（Ｍ）△Ｒ*（Ｍ）△Ｍのハミング重みがθより十分に大きくなる。
【００９１】
【数１４】
2018098739.tif 000016
【００９２】
【数１５】
2018098739.tif 000017
【００９３】
【数１６】
2018098739.tif 000018
【００９４】
以上より、第３の暗号処理アルゴリズムでは、マスクＭ，Ｍ*が同じ場合は第１の復号パスと第２の復号パスの何れか一方が成功し、マスクＭ，Ｍ*が異なる場合には第１の復号パスと第２の復号パスの両方が失敗することになる。よって、復号鍵の流用を抑止し、同一人に関する異なる秘密情報を互いに独立に保護することができる。第２の実施の形態のサーバ装置１００，１００ａおよびクライアント装置２００，２００ａは、この第３の暗号処理アルゴリズムを利用して生体認証を実装する。なお、暗号鍵の生成時に選択したマスクＭは復号鍵の生成時にも使用されるため、テンプレートにマスクＭが含まれている。サーバ装置１００，１００ａは、認証時にクライアント装置２００，２００ａに対してテンプレートのマスクＭを提供すればよい。ただし、暗号化時に選択されたマスクＭをクライアント装置２００，２００ａに保存しておくようにしてもよい。
【００９５】
なお、符号化関数ｆの誤り訂正符号としては、例えば、数式（１７）に示すパラメータをもつリードソロモン符号を用いることができる。また、符号化関数ｇの誤り訂正符号としては、例えば、数式（１８）に示すパラメータをもつリードソロモン符号を用いることができる。符号化関数ｇの終域と符号化関数ｆの始域（符号化関数ｆの入力のビット長で定義されるビット列空間）とが異なる場合、符号化関数ｇの出力から符号化関数ｆの入力を一意に特定可能な対応関係を定義して両者を結合してもよい。
【００９６】
【数１７】
2018098739.tif 000019
【００９７】
【数１８】
2018098739.tif 000020
【００９８】
次に、クライアント装置２００，２００ａおよびサーバ装置１００，１００ａの機能を説明する。以下では代表してクライアント装置２００およびサーバ装置１００の機能を説明する。クライアント装置２００ａもクライアント装置２００と同様の機能を有し、サーバ装置１００ａもサーバ装置１００と同様の機能を有する。
【００９９】
図５は、サーバ装置とクライアント装置の機能例を示すブロック図である。
クライアント装置２００は、生体特徴コード生成部２３１、秘密情報提供部２３２、登録要求部２３３および認証要求部２３４を有する。生体特徴コード生成部２３１、秘密情報提供部２３２、登録要求部２３３および認証要求部２３４は、例えば、ＣＰＵが実行するプログラムモジュールを用いて実装することができる。
【０１００】
生体特徴コード生成部２３１は、クライアント装置２００のユーザが登録または認証を指示した場合、撮像装置２１１に生体画像の撮像を指示し、撮像装置２１１から生体画像を取得する。例えば、生体特徴コード生成部２３１は、指先の画像、手のひらの画像、目の画像、または、ユーザが書いたサインの画像を取得する。生体特徴コード生成部２３１は、取得した生体画像から、撮像した部位に応じた方法で生体特徴コードを生成する。
【０１０１】
例えば、生体特徴コード生成部２３１は、指先の画像から指紋の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部２３１は、手のひらの画像から静脈の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部２３１は、目の画像から虹彩の特徴を表す生体特徴コードを生成する。また、例えば、生体特徴コード生成部２３１は、サインの画像から筆跡の特徴を表す生体特徴コードを生成する。生体特徴コードは、例えば、２進数で表された所定長のビット列である。
【０１０２】
秘密情報提供部２３２は、クライアント装置２００のユーザが登録を指示した場合、ユーザの秘密情報を提供する。秘密情報は、予めクライアント装置２００のＲＡＭまたはＨＤＤに記憶されていてもよいし、入力デバイスを介してユーザから入力されてもよい。秘密情報は、個々のユーザが作成する情報または個々のユーザに対して付与される情報であって、公開されることが想定されていない情報である。秘密情報として、例えば、ユーザＩＤ、パスワード、暗証番号、暗号処理用の秘密鍵、キャッシュカード番号やクレジットカード番号などの識別コードを使用できる。
【０１０３】
登録要求部２３３は、クライアント装置２００のユーザが登録を指示した場合、生体特徴コード生成部２３１から生体特徴コードを取得し、秘密情報提供部２３２から秘密情報を取得する。登録要求部２３３は、生体特徴コードおよび秘密情報を用いてテンプレートを生成し、テンプレートを含む登録要求をサーバ装置１００に送信する。サーバ装置１００が複数のユーザについての認証を行う場合、ユーザを識別するための識別情報が登録要求に含まれてもよい。識別情報は、ユーザＩＤなどユーザが入力した情報でもよいし、カード番号など記録媒体から読み出した情報でもよい。
【０１０４】
認証要求部２３４は、クライアント装置２００のユーザが認証を指示した場合、サーバ装置１００に認証要求を送信する。サーバ装置１００が複数のユーザについての認証を行う場合、ユーザを識別するための識別情報が認証要求に含まれてもよい。認証要求部２３４は、認証要求に対する応答として、マスクを含む復号鍵要求を受信する。すると、認証要求部２３４は、生体特徴コード生成部２３１から生体特徴コードを取得する。認証要求部２３４は、サーバ装置１００から指定されたマスクと生体特徴コードとを用いて復号鍵を生成し、復号鍵をサーバ装置１００に送信する。その後、認証要求部２３４は、認証成功または認証失敗を示す認証結果をサーバ装置１００から受信する。
【０１０５】
サーバ装置１００は、データベース１２０、テンプレート登録部１３１、秘密情報抽出部１３２および検証部１３３を有する。データベース１２０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域を用いて実装できる。テンプレート登録部１３１、秘密情報抽出部１３２および検証部１３３は、例えば、ＣＰＵ１０１が実行するプログラムモジュールを用いて実装することができる。
【０１０６】
データベース１２０は、クライアント装置２００，２００ａで生成されたテンプレートを記憶する。各ユーザに対応するテンプレートには３つの項目が含まれる。テンプレート第１項は、生体特徴コードを用いて秘密情報を暗号化した暗号文である。テンプレート第２項は、秘密情報のハッシュ値である。テンプレート第３項は、暗号化時にクライアント装置２００，２００ａが選択したマスクである。テンプレート第１項、第２項および第３項は、例えば、２進数で表されたビット列である。サーバ装置１００が複数のユーザについての認証を行う場合、各テンプレートに対して識別情報が対応付けられる。
【０１０７】
テンプレート登録部１３１は、クライアント装置２００，２００ａから登録要求を受信する。すると、テンプレート登録部１３１は、登録要求に含まれるテンプレートをデータベース１２０に登録する。登録要求に識別情報が含まれる場合、テンプレート登録部１３１は、テンプレートと識別情報とを対応付けてデータベース１２０に登録する。
【０１０８】
秘密情報抽出部１３２は、クライアント装置２００，２００ａから認証要求を受信する。すると、秘密情報抽出部１３２は、データベース１２０に記憶されたテンプレートからテンプレート第３項のマスクを読み出し、読み出したマスクを含む復号鍵要求を返信する。認証要求に識別情報が含まれる場合、秘密情報抽出部１３２は、その識別情報に対応付けられたテンプレートからマスクを読み出す。その後、秘密情報抽出部１３２は、復号鍵要求に対する応答として復号鍵を受信する。すると、秘密情報抽出部１３２は、データベース１２０からテンプレート第１項の暗号文を読み出す。秘密情報抽出部１３２は、受信した復号鍵を用いて暗号文を復号し、秘密情報の抽出を試みる。
【０１０９】
このとき、秘密情報抽出部１３２は、第１の復号パスと第２の復号パスを実行し、２つの復号結果を生成する。復号鍵の生成に使用された生体特徴コードおよびマスク値が正当である場合、第１の復号パスと第２の復号パスの何れか一方により秘密情報を正しく抽出することができる。これに対し、復号鍵の生成に使用された生体特徴コードおよびマスク値の少なくとも一方が正当でない場合、第１の復号パスと第２の復号パスの何れによっても秘密情報を正しく抽出することができない。
【０１１０】
検証部１３３は、秘密情報抽出部１３２から第１の復号パスの復号結果と第２の復号パスの復号結果を取得する。検証部１３３は、取得した２つの復号結果それぞれのハッシュ値を算出する。また、検証部１３３は、データベース１２０からテンプレート第２項のハッシュ値を取得する。検証部１３３は、テンプレートのハッシュ値を、第１の復号パスの復号結果のハッシュ値および第２の復号パスの復号結果のハッシュ値それぞれと比較する。テンプレートのハッシュ値が２つの復号結果のハッシュ値の何れか一方と一致した場合、検証部１３３は、認証対象のユーザが登録されたユーザであると判定し、認証成功と判断する。これに対し、テンプレートのハッシュ値が２つの復号結果のハッシュ値の何れとも一致しない場合、検証部１３３は、認証対象のユーザが登録されたユーザでないと判定し、認証失敗と判断する。検証部１３３は、認証成功または認証失敗を示す認証結果を、認証要求を送信したクライアント装置に返信する。
【０１１１】
図６は、第１のテンプレートテーブルの例を示す図である。
テンプレートテーブル１２１は、データベース１２０に記憶されている。テンプレートテーブル１２１は、認証単位毎（例えば、ユーザ毎）に、識別情報、暗号文ｃ、ハッシュ値ｈ（ｐ）およびマスクＭを含む。識別情報は、認証単位を識別する情報であり、ユーザＩＤやカード番号などであってもよい。暗号文ｃは、数式（６）に示したテンプレート第１項である。ハッシュ値ｈ（ｐ）は、数式（６）に示したテンプレート第２項である。マスクＭは、数式（６）に示したテンプレート第３項である。テンプレートテーブル１２１には、複数の認証単位についてのテンプレートが登録され得る。
【０１１２】
次に、クライアント装置２００およびサーバ装置１００の処理手順を説明する。
図７は、第１のクライアント登録処理の手順例を示すフローチャートである。
（Ｓ１０）登録要求部２３３は、所定の条件を満たすマスク集合からランダムに１つマスクＭを選択する。マスクＭのハミング重みは、θより十分に大きく２θ＋１を超えない。
【０１１３】
（Ｓ１１）登録要求部２３３は、乱数ｒをランダムに選択し、選択した乱数ｒをステップＳ１０のマスクＭでマスク処理したマスク乱数Ｒ（Ｍ）を生成する。マスク処理は、例えば、乱数ｒとマスクＭの間でビット毎に論理積を算出する演算である。
【０１１４】
（Ｓ１２）生体特徴コード生成部２３１は、撮像装置２１１から生体画像を取得する。生体特徴コード生成部２３１は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードＢを生成する。
【０１１５】
（Ｓ１３）登録要求部２３３は、ステップＳ１１のマスク乱数Ｒ（Ｍ）を符号化関数ｆで誤り訂正符号化する。登録要求部２３３は、その誤り訂正符号にステップＳ１２の生体特徴コードＢを加算して暗号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードＢとの間でビット毎に排他的論理和を算出する演算である。
【０１１６】
（Ｓ１４）秘密情報提供部２３２は、ユーザに関する秘密情報ｐを取得する。秘密情報提供部２３２は、ＲＡＭまたはＨＤＤから秘密情報ｐを読み出してもよいし、ユーザに秘密情報ｐの入力を促して入力デバイスから秘密情報ｐを取得してもよい。
【０１１７】
（Ｓ１５）登録要求部２３３は、ステップＳ１４の秘密情報ｐを符号化関数ｇで誤り訂正符号化し、更に符号化関数ｆで誤り訂正符号化する。登録要求部２３３は、その誤り訂正符号にステップＳ１３の暗号鍵を加算して暗号文ｃを生成する。
【０１１８】
（Ｓ１６）登録要求部２３３は、秘密情報ｐのハッシュ値ｈ（ｐ）を生成する。
（Ｓ１７）登録要求部２３３は、ステップＳ１５の暗号文ｃとステップＳ１６のハッシュ値ｈ（ｐ）とステップＳ１０のマスクＭを含むテンプレートを生成する。登録要求部２３３は、テンプレートを含む登録要求をサーバ装置１００に送信する。この登録要求はサーバ装置１００のテンプレート登録部１３１によって受信され、データベース１２０にテンプレートが登録される。なお、登録要求には識別情報が含まれてもよく、この識別情報と対応付けてテンプレートがデータベース１２０に登録されてもよい。
【０１１９】
図８は、第１のクライアント認証処理の手順例を示すフローチャートである。
（Ｓ２０）認証要求部２３４は、サーバ装置１００に認証要求を送信する。認証要求には認証対象のユーザを示す識別情報が含まれてもよい。
【０１２０】
（Ｓ２１）認証要求部２３４は、マスクＭ*を含む復号鍵要求を受信する。
（Ｓ２２）認証要求部２３４は、乱数ｒ*をランダムに選択し、選択した乱数ｒ*をステップＳ２１のマスクＭ*でマスク処理したマスク乱数Ｒ*（Ｍ*）を生成する。マスク処理は、例えば、乱数ｒ*とマスクＭ*の間でビット毎に論理積を算出する演算である。
【０１２１】
（Ｓ２３）生体特徴コード生成部２３１は、撮像装置２１１から生体画像を取得する。生体特徴コード生成部２３１は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードＢ*を生成する。
【０１２２】
（Ｓ２４）認証要求部２３４は、ステップＳ２２のマスク乱数Ｒ*（Ｍ*）を符号化関数ｆで誤り訂正符号化する。認証要求部２３４は、その誤り訂正符号にステップＳ２３の生体特徴コードＢ*を加算して復号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードＢ*との間でビット毎に排他的論理和を算出する演算である。
【０１２３】
（Ｓ２５）認証要求部２３４は、復号鍵をサーバ装置１００に送信する。認証要求部２３４は、認証対象のユーザを示す識別情報を併せて送信してもよい。
（Ｓ２６）認証要求部２３４は、認証結果をサーバ装置１００から受信する。認証結果は認証成功または認証失敗を示す。認証要求部２３４は、認証結果をディスプレイに表示してもよい。認証失敗の場合、認証要求部２３４は、生体画像を再取得して復号鍵を生成し直すことで、認証手続きを再度行ってもよい。
【０１２４】
図９は、第１のサーバ認証処理の手順例を示すフローチャートである。
（Ｓ３０）秘密情報抽出部１３２は、クライアント装置２００から認証要求を受信する。認証要求には認証対象のユーザを示す識別情報が含まれてもよい。
【０１２５】
（Ｓ３１）秘密情報抽出部１３２は、データベース１２０から認証対象のユーザのテンプレートに含まれるマスクＭ*を抽出する。認証要求に識別情報が含まれている場合、その識別情報に対応付けられたテンプレートからマスクＭ*を抽出してもよい。秘密情報抽出部１３２は、抽出したマスクＭ*をクライアント装置２００に送信する。
【０１２６】
（Ｓ３２）秘密情報抽出部１３２は、クライアント装置２００から復号鍵を受信する。復号鍵と併せて認証対象のユーザを示す識別情報を受信してもよい。
（Ｓ３３）秘密情報抽出部１３２は、データベース１２０から認証対象のユーザのテンプレートに含まれる暗号文ｃを抽出する。ステップＳ３０またはステップＳ３２で識別情報を受信した場合、その識別情報に対応付けられたテンプレートからマスクＭ*を抽出してもよい。秘密情報抽出部１３２は、暗号文ｃとステップＳ３２の復号鍵を合成する。例えば、秘密情報抽出部１３２は、暗号文ｃから復号鍵を減算する。減算は、例えば、暗号文ｃと復号鍵との間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部１３２は、合成したビット列を復号関数ｆ-1で誤り訂正復号する。
【０１２７】
（Ｓ３４）秘密情報抽出部１３２は、ステップＳ３３の復号結果に対して第１の復号パスを実行する。すなわち、秘密情報抽出部１３２は、ステップＳ３３の復号結果を復号関数ｇ-1で更に誤り訂正復号し、復号結果ｐ1*を生成する。
【０１２８】
（Ｓ３５）秘密情報抽出部１３２は、ステップＳ３３の復号結果に対して第２の復号パスを実行する。すなわち、秘密情報抽出部１３２は、データベース１２０から認証対象のユーザのテンプレートに含まれるマスクＭを抽出し、ステップＳ３３の復号結果にマスクＭを加算する。加算は、例えば、復号結果とマスクＭとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部１３２は、マスクＭを加算した後のビット列を復号関数ｇ-1で更に誤り訂正復号し、復号結果ｐ2*を生成する。
【０１２９】
（Ｓ３６）検証部１３３は、ステップＳ３４の復号結果ｐ1*のハッシュ値ｈ（ｐ1*）と、ステップＳ３５の復号結果ｐ2*のハッシュ値ｈ（ｐ2*）を生成する。
（Ｓ３７）検証部１３３は、データベース１２０から認証対象のユーザのテンプレートに含まれるハッシュ値ｈ（ｐ）を抽出する。検証部１３３は、ハッシュ値ｈ（ｐ1*）がハッシュ値ｈ（ｐ）に一致するか、または、ハッシュ値ｈ（ｐ2*）がハッシュ値ｈ（ｐ）に一致するか判断する。この条件を満たす場合はステップＳ３８に処理が進み、この条件を満たさない場合はステップＳ３９に処理が進む。
【０１３０】
（Ｓ３８）検証部１３３は、認証成功と判定する。検証部１３３は、認証成功を示す認証結果をクライアント装置２００に送信する。
（Ｓ３９）検証部１３３は、認証失敗と判定する。検証部１３３は、認証失敗を示す認証結果をクライアント装置２００に送信する。
【０１３１】
次に、復号鍵の不正流用を試みるシーケンス例を説明する。
図１０は、サーバ装置による復号鍵流用例を示すシーケンス図である。
このシーケンス例では、クライアント装置２００は認証要求をサーバ装置１００に送信する（Ｓ４０）。サーバ装置１００はマスクＭ*を含む復号鍵要求をクライアント装置２００に送信する（Ｓ４１）。クライアント装置２００は、指定されたマスクＭ*を用いて復号鍵を生成し、復号鍵をサーバ装置１００に送信する（Ｓ４２）。サーバ装置１００は、認証成功と判定して認証成功通知をクライアント装置２００に送信する（Ｓ４３）。
【０１３２】
ここで、サーバ装置１００に侵入した攻撃者または悪意あるサーバ装置１００の管理者が、不正にステップＳ４２の復号鍵を取得したとする。そして、攻撃者または悪意ある管理者が、サーバ装置１００または他の装置を用いてサーバ装置１００ａに認証要求を送信したとする。ここでは、攻撃にサーバ装置１００が使用されたと仮定する（Ｓ４４）。
【０１３３】
すると、サーバ装置１００ａは、復号鍵要求をサーバ装置１００に送信する（Ｓ４５）。サーバ装置１００は、ステップＳ４２の復号鍵を不正に流用してサーバ装置１００ａに送信する。ここで、暗号化や復号にマスクが使用されていないと、流用した復号鍵による復号が成功してしまい、認証が成功してしまう可能性がある。しかし、サーバ装置１００，１００ａに登録された同一人の暗号文に異なるマスクが使用されていると、流用した復号鍵による復号は失敗し、認証が失敗する。よって、サーバ装置１００ａは、認証失敗通知をサーバ装置１００に送信することになる（Ｓ４７）。
【０１３４】
なお、ステップＳ４２の復号鍵からは生体特徴コードＢ*を抽出できないため、攻撃者または悪意ある管理者は、ステップＳ４５で指定されたマスクとクライアント装置で生成された生体特徴コードＢ*を組み合わせた正当な復号鍵を生成することはできない。
【０１３５】
第２の実施の形態の暗号データ処理システムによれば、生体特徴コード自体はサーバ装置１００，１００ａとクライアント装置２００，２００ａとの間で送信されない。また、サーバ装置１００，１００ａの中で一時的に復元される秘密情報を用いてもテンプレートから生体特徴コードを抽出できない。よって、生体特徴コードが漏洩するリスクを低減できる。また、同一人の生体情報を利用して複数の暗号文を生成した場合でも、マスクを変えることで、ある暗号文に対する復号鍵を他の暗号文に流用できないようにできる。よって、同一人に関する異なる秘密情報の保護を強化することができる。また、生体特徴コードが正当でかつマスクが正当な場合のみ復号が成功し、生体特徴コードが正当でないかまたはマスクが正当でない場合には復号が失敗するようにすることができる。よって、攻撃に対する安全性や運用上の安定性を向上させることができる。
【０１３６】
［第３の実施の形態］
次に、第３の実施の形態を説明する。
第３の実施の形態の暗号データ処理システムは、第２の実施の形態の暗号処理アルゴリズムをチャレンジ・レスポンス型認証に応用したものである。第３の実施の形態の暗号データ処理システムは、図４に示したハードウェア構成および図５に示したソフトウェア構成を用いて実装することができる。そこで、以下では第３の実施の形態を、第２の実施の形態で用いた図４，５中の符号を用いて説明することがある。
【０１３７】
クライアント装置２００とサーバ装置１００の間でチャレンジ・レスポンス型認証を行う場合、クライアント装置２００はサーバ装置１００に認証要求を送信する。サーバ装置１００は、ランダム性のあるチャレンジメッセージ（単に「チャレンジ」と言うことがある）をクライアント装置２００に送信する。クライアント装置２００は、チャレンジに基づいて正当な認証対象しか作り得ないレスポンスを生成しサーバ装置１００に送信する。サーバ装置１００は、送信したチャレンジと受信したレスポンスに基づいて認証成功か認証失敗かを判定し、認証結果をクライアント装置２００に送信する。
【０１３８】
第２の実施の形態の暗号処理アルゴリズムを応用する場合、数式（１９）に示すテンプレートをサーバ装置１００に登録しておく。数式（１９）において、「ｋ」は復号鍵、「ｍ」は小マスク、「Ｒ（ｍ）」は小マスクｍに応じたマスク乱数である。テンプレートは、復号鍵ｋと小マスクｍを含む。復号鍵ｋは、マスク乱数Ｒ（ｍ）を符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に生体特徴コードＢを加算することで生成される。
【０１３９】
【数１９】
2018098739.tif 000021
【０１４０】
小マスクｍは、符号化関数ｇの終域に含まれる所定の条件を満たすビット列の中から、復号鍵ｋの生成時にランダムに選択したものである。小マスクｍが満たす所定の条件は、そのハミング重みが復号関数ｇ-1の訂正可能ビット数θより十分に大きく２θより十分に小さいことである。例えば、小マスクｍのハミング重みを１．５θ程度とする。マスク乱数Ｒ（ｍ）は、符号化関数ｇの終域に含まれる所定の条件を満たすビット列の中から、復号鍵ｋの生成時にランダムに選択したものである。マスク乱数Ｒ（ｍ）は小マスクｍに依存する。マスク乱数Ｒ（ｍ）が満たす所定の条件は、小マスクｍで値が「０」であるビットはマスク乱数Ｒ（ｍ）でも「０」であること、および、マスク乱数Ｒ（ｍ）のハミング重みが小マスクｍのハミング重みのちょうど半分または約半分であることである。
【０１４１】
テンプレートをサーバ装置１００に登録した後、次のようにユーザ認証を行う。サーバ装置１００は、クライアント装置２００からの認証要求に応じて大マスクＭと平文集合Ｐを選択する。大マスクＭは小マスクｍに依存する。大マスクＭは、符号化関数ｇの終域に含まれる所定の条件を満たすビット列の中から、認証時にランダムに選択される。大マスクＭが満たす所定の条件は、小マスクｍで値が「１」であるビットは大マスクＭでも「１」であること、および、大マスクＭのハミング重みが２θ＋１を超えないことである。大マスクＭのハミング重みは、２θ＋１に近いことが好ましい。
【０１４２】
平文集合Ｐは、符号化関数ｇの始域の部分集合であり、次の条件を満たすように認証時に符号化関数ｇの始域から選択される。平文集合Ｐが満たす所定の条件は、平文集合Ｐが十分に多くの元を含むこと（元の数が１より十分に大きいこと）、および、平文集合Ｐの元の数が符号化関数ｇの始域全体に対して十分に小さいことである。例えば、符号化関数ｇの誤り訂正符号が数式（１８）のパラメータによって定義されるリードソロモン符号である場合、符号化関数ｇの始域は１７１９ビットのビット列空間である。この場合、先頭２５６ビットの値をランダムに決定することで、残りの１４６３ビットによって規定される２1463個の元を含む平文集合Ｐを定義することができる。
【０１４３】
サーバ装置１００は、選択した大マスクＭと平文集合Ｐを含むチャレンジをクライアント装置２００に送信する。クライアント装置２００は、平文集合Ｐの中から秘密情報ｐをランダムに選択する。また、クライアント装置２００は、大マスクＭに依存するマスク乱数Ｒ*（Ｍ）を生成する。マスク乱数Ｒ*（Ｍ）は、符号化関数ｇの終域に含まれる所定の条件を満たすビット列の中から、認証時にランダムに選択したものである。マスク乱数Ｒ*（Ｍ）が満たす所定の条件は、大マスクＭで値が「０」であるビットはマスク乱数Ｒ*（Ｍ）でも値が「０」であることである。
【０１４４】
クライアント装置２００は、上記の秘密情報ｐおよびマスク乱数Ｒ*（Ｍ）を用いて、数式（２０）に示す暗号文ｃを生成する。暗号文ｃは、秘密情報ｐを符号化関数ｇで誤り訂正符号化し、その誤り訂正符号を更に符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に暗号鍵ｋ*を加算することで生成される。暗号鍵ｋ*は、マスク乱数Ｒ*（Ｍ）を符号化関数ｆで誤り訂正符号化し、その誤り訂正符号に対して認証時に取得した生体特徴コードＢ*を加算することで生成される。クライアント装置２００は、暗号文ｃを含むレスポンスをサーバ装置１００に送信する。
【０１４５】
【数２０】
2018098739.tif 000022
【０１４６】
サーバ装置１００は、暗号文ｃを復号鍵ｋを用いて復号する。復号手順は第２の実施の形態と同様である。すなわち、サーバ装置１００は、復号時には数式（２１）に示す第１の復号パスと数式（２２）に示す第２の復号パスの両方を実行する。
【０１４７】
【数２１】
2018098739.tif 000023
【０１４８】
【数２２】
2018098739.tif 000024
【０１４９】
第１の復号パスの復号結果ｐ1*は、レスポンスに含まれる暗号文ｃからテンプレートに含まれる復号鍵ｋを減算し、その減算結果を復号関数ｆ-1で誤り訂正復号し、その復号結果を更に復号関数ｇ-1で誤り訂正復号することで生成される。第２の複合パスの復号結果ｐ2*は、チャレンジに含まれる暗号文ｃからテンプレートに含まれる復号鍵ｋを減算し、その減算結果を復号関数ｆ-1で誤り訂正復号し、その復号結果に大マスクＭを加算し、その加算結果を更に復号関数ｇ-1で誤り訂正復号することで生成される。
【０１５０】
サーバ装置１００は、復号結果ｐ1*，ｐ2*の何れか一方が平文集合Ｐに含まれているか（平文集合Ｐに属する元であるか）判定する。復号結果ｐ1*，ｐ2*の何れか一方が平文集合Ｐに含まれている場合は認証成功と判定される。一方、復号結果ｐ1*，ｐ2*の何れも平文集合Ｐに含まれていない場合、認証失敗と判定される。
【０１５１】
ここで、マスク乱数Ｒ（ｍ）で値が「１」であるビットは、小マスクｍで値が「１」であるビットに限られるため、大マスクＭで値が「１」であるビットに限られる。また、マスク乱数Ｒ*（Ｍ）で値が「１」であるビットは、大マスクＭで値が「１」であるビットに限られる。よって、Ｒ*（Ｍ）−Ｒ（ｍ）のハミング重みが訂正可能ビット数θを超えない場合、第１の復号パスの復号関数ｇ-1による誤り訂正復号が成功し、復号結果ｐ1*は秘密情報ｐに一致する。この場合、復号結果ｐ1*が平文集合Ｐの元となる。また、Ｒ*（Ｍ）−Ｒ（ｍ）のハミング重みが訂正可能ビット数θを超える場合でも、第２の復号パスの復号関数ｇ-1による誤り訂正復号が成功し、復号結果ｐ2*は秘密情報ｐに一致する。この場合、復号結果ｐ2*が平文集合Ｐの元となる。
【０１５２】
次に、復号鍵ｋの流用可能性について説明する。サーバ装置１００に登録された復号鍵ｋが、サーバ装置１００に侵入した攻撃者またはサーバ装置１００の管理者によって不正に取得されたとする。すると、この復号鍵ｋを用いて暗号文ｆ（ｇ（ｐ））＋ｆ（Ｒ（ｍ））＋Ｂ*が不正に生成され、復号鍵ｆ（Ｒ（ｍ*））＋Ｂが登録されたサーバ装置１００ａに対して不正な暗号文を含むレスポンスが送信される可能性がある。
【０１５３】
しかし、サーバ装置１００ａは復号過程でｇ（ｐ）＋Ｒ（ｍ）−Ｒ（ｍ*）を算出することになる。マスク乱数Ｒ（ｍ），Ｒ（ｍ*）それぞれのハミング重みは、訂正可能ビット数θの半分より十分に大きい。また、小マスクｍ，ｍ*の両方で値が「１」であるビットは少ない。よって、Ｒ（ｍ）−Ｒ（ｍ*）のハミング重みは訂正可能ビット数θより十分に大きく、復号関数ｇ-1による誤り訂正復号は失敗する。
【０１５４】
図１１は、第２のテンプレートテーブルの例を示す図である。
テンプレートテーブル１２２は、サーバ装置１００のデータベース１２０に記憶される。テンプレートテーブル１２２は、認証単位毎（例えば、ユーザ毎）に、識別情報、復号鍵ｋおよび小マスクｍを含む。識別情報は、認証単位を識別する情報であり、ユーザＩＤやカード番号などであってもよい。復号鍵ｋは、数式（１９）に示したテンプレート第１項である。小マスクｍは、数式（１９）に示したテンプレート第２項である。テンプレートテーブル１２２には、複数の認証単位についてのテンプレートが登録され得る。
【０１５５】
次に、サーバ装置１００およびクライアント装置２００の処理手順を説明する。
図１２は、第２のクライアント登録処理の手順例を示すフローチャートである。
（Ｓ５０）登録要求部２３３は、所定の条件を満たすマスク集合からランダムに小マスクｍを選択する。小マスクｍのハミング重みは、θより十分に大きく２θより十分に小さい。
【０１５６】
（Ｓ５１）登録要求部２３３は、ステップＳ５０の小マスクｍに依存するマスク乱数Ｒ（ｍ）を生成する。小マスクｍで値が「０」であるビットは、マスク乱数Ｒ（ｍ）でも値が「０」である。また、マスク乱数Ｒ（ｍ）のハミング重みは、小マスクｍのハミング重みのちょうど半分または約半分である。生成されるマスク乱数Ｒ（ｍ）は、上記の条件を満たしている範囲でランダムに選択されたものである。
【０１５７】
（Ｓ５２）生体特徴コード生成部２３１は、撮像装置２１１から生体画像を取得する。生体特徴コード生成部２３１は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードＢを生成する。
【０１５８】
（Ｓ５３）登録要求部２３３は、ステップＳ５１のマスク乱数Ｒ（ｍ）を符号化関数ｆで誤り訂正符号化する。登録要求部２３３は、その誤り訂正符号にステップＳ５２の生体特徴コードＢを加算して復号鍵ｋを生成する。加算は、例えば、誤り訂正符号と生体特徴コードＢとの間でビット毎に排他的論理和を算出する演算である。
【０１５９】
（Ｓ５４）登録要求部２３３は、ステップＳ５３の復号鍵ｋとステップＳ５０の小マスクｍを含むテンプレートを生成する。登録要求部２３３は、テンプレートを含む登録要求をサーバ装置１００に送信する。この登録要求はサーバ装置１００のテンプレート登録部１３１によって受信され、データベース１２０にテンプレートが登録される。
【０１６０】
図１３は、第２のクライアント認証処理の手順例を示すフローチャートである。
（Ｓ６０）認証要求部２３４は、サーバ装置１００に認証要求を送信する。
（Ｓ６１）認証要求部２３４は、大マスクＭと平文集合Ｐを定義する情報とを含むチャレンジをサーバ装置１００から受信する。平文集合Ｐを定義する情報は、例えば、１７１９ビットのうちの先頭２５６ビットを指定する情報などである。
【０１６１】
（Ｓ６２）認証要求部２３４は、平文集合Ｐからランダムに秘密情報ｐを選択する。
（Ｓ６３）認証要求部２３４は、チャレンジに含まれる大マスクＭに依存するマスク乱数Ｒ*（Ｍ）を生成する。大マスクＭで値が「０」であるビットは、マスク乱数Ｒ*（Ｍ）でも値が「０」である。生成されるマスク乱数Ｒ*（Ｍ）は、上記の条件を満たしている範囲でランダムに選択されたものである。
【０１６２】
（Ｓ６４）生体特徴コード生成部２３１は、撮像装置２１１から生体画像を取得する。生体特徴コード生成部２３１は、生体画像に写った指紋、静脈、虹彩などの身体的特徴または筆跡などの行動的特徴を解析し、生体特徴コードＢ*を生成する。
【０１６３】
（Ｓ６５）認証要求部２３４は、ステップＳ６３のマスク乱数Ｒ*（Ｍ）を符号化関数ｆで誤り訂正符号化する。認証要求部２３４は、その誤り訂正符号にステップＳ６４の生体特徴コードＢ*を加算して暗号鍵を生成する。加算は、例えば、誤り訂正符号と生体特徴コードＢ*との間でビット毎に排他的論理和を算出する演算である。
【０１６４】
（Ｓ６６）認証要求部２３４は、ステップＳ６２の秘密情報ｐを符号化関数ｇで誤り訂正符号化し、更に符号化関数ｆで誤り訂正符号化する。認証要求部２３４は、その誤り訂正符号にステップＳ６５の暗号鍵を加算して暗号文ｃを生成する。
【０１６５】
（Ｓ６７）認証要求部２３４は、ステップＳ６６の暗号文ｃを含むレスポンスを、チャレンジに対する応答としてサーバ装置１００に送信する。
（Ｓ６８）認証要求部２３４は、認証結果をサーバ装置１００から受信する。
【０１６６】
図１４は、第２のサーバ認証処理の手順例を示すフローチャートである。
（Ｓ７０）秘密情報抽出部１３２は、認証要求を受信する。
（Ｓ７１）秘密情報抽出部１３２は、データベース１２０から認証対象のユーザのテンプレートに含まれる小マスクｍを抽出する。秘密情報抽出部１３２は、小マスクｍに依存する大マスクＭを生成する。小マスクｍで値が「１」であるビットは、大マスクＭでも値が「１」である。また、大マスクＭのハミング重みは２θ＋１を超えない。生成される大マスクＭは、上記の条件を満たしている範囲でランダムに選択されたものである。また、秘密情報抽出部１３２は、ランダムに平文集合Ｐを生成する。
【０１６７】
（Ｓ７２）秘密情報抽出部１３２は、大マスクＭと平文集合Ｐを定義する情報とを含むチャレンジをクライアント装置２００に送信する。
（Ｓ７３）秘密情報抽出部１３２は、暗号文ｃを含むレスポンスを、チャレンジに対する応答としてクライアント装置２００から受信する。
【０１６８】
（Ｓ７４）秘密情報抽出部１３２は、データベース１２０から認証対象のユーザのテンプレートに含まれる復号鍵ｋを抽出する。秘密情報抽出部１３２は、レスポンスに含まれる暗号文ｃとテンプレートから抽出した復号鍵ｋとを合成する。例えば、秘密情報抽出部１３２は、暗号文ｃから復号鍵ｋを減算する。減算は、例えば、暗号文ｃと復号鍵ｋとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部１３２は、合成したビット列を復号関数ｆ-1で誤り訂正復号する。
【０１６９】
（Ｓ７５）秘密情報抽出部１３２は、ステップＳ７４の復号結果に対して第１の復号パスを実行する。すなわち、秘密情報抽出部１３２は、ステップＳ７４の復号結果を復号関数ｇ-1で更に誤り訂正復号し、復号結果ｐ1*を生成する。
【０１７０】
（Ｓ７６）秘密情報抽出部１３２は、ステップＳ７４の復号結果に対して第２の復号パスを実行する。すなわち、秘密情報抽出部１３２は、ステップＳ７４の復号結果にステップＳ７１の大マスクＭを加算する。加算は、例えば、復号結果と大マスクＭとの間でビット毎に排他的論理和を算出する演算である。秘密情報抽出部１３２は、大マスクＭを加算した後のビット列を復号関数ｇ-1で更に誤り訂正復号し、復号結果ｐ2*を生成する。
【０１７１】
（Ｓ７７）検証部１３３は、ステップＳ７５の復号結果ｐ1*とステップＳ７６の復号結果ｐ2*の何れか一方が、ステップＳ７１の平文集合Ｐに属するか判断する。復号結果ｐ1*，ｐ2*の一方が平文集合Ｐに属する場合、ステップＳ７８に処理が進む。復号結果ｐ1*，ｐ2*の何れも平文集合Ｐに属さない場合、ステップＳ７９に処理が進む。
【０１７２】
（Ｓ７８）検証部１３３は、認証成功と判定する。検証部１３３は、認証成功を示す認証結果をクライアント装置２００に送信する。
（Ｓ７９）検証部１３３は、認証失敗と判定する。検証部１３３は、認証失敗を示す認証結果をクライアント装置２００に送信する。
【０１７３】
第３の実施の形態の暗号データ処理システムによれば、チャレンジ・レスポンス型認証においても第２の実施の形態と同様の安全性を達成することができる。
［第４の実施の形態］
次に、第４の実施の形態を説明する。
【０１７４】
第２の実施の形態および第３の実施の形態では主に、扱うデータが２進数で表現されている場合について説明した。これに対し、第４の実施形態では、第２の実施の形態および第３の実施の形態の暗号処理アルゴリズムを、正標数ｑをもつ有限体Ｆq上のベクトルで表現されるデータを対象として一般化する。以下の説明においてｑ＝２とした暗号処理アルゴリズムは、第２の実施の形態および第３の実施の形態に相当する。なお、第２の実施の形態および第３の実施の形態では扱うデータが２進数で表現されているため「訂正可能ビット数」という表現を用いたが、第４の実施の形態ではこれに代えて「訂正可能誤り数」という表現を用いることとする。「訂正可能誤り数」は「訂正可能桁数」と言うこともできる。第２の実施の形態および第３の実施の形態の「訂正可能ビット数」は、「訂正可能誤り数」もしくは「訂正可能桁数」の一種である。
【０１７５】
暗号処理アルゴリズムで使用するマスクＭのハミング重みは、数式（２３）を満たすものとする。数式（２３）の第１項は、マスクＭのハミング重みが復号関数ｇ-1の訂正可能誤り数θより十分に大きいことを示す。なお、マスクＭの「０」でない要素は、有限体Ｆqの「０」でない特定の要素に限定してもよい。マスク乱数Ｒ（Ｍ）には、次のような制約を課す。マスク乱数Ｒ（Ｍ）の「０」でない要素は、マスクＭの「０」でない要素に限定される。復号パスは、有限体Ｆqの各元ｘに対応するように次のｑ通りを用意する。暗号文ｃから復号鍵ｋを減算して誤り訂正復号する際、ｆ-1（ｃ−ｋ）の復号結果に、元ｘとマスクＭの積ｘＭを加算し、加算後の値を復号関数ｇ-1で誤り訂正復号する。
【０１７６】
【数２３】
2018098739.tif 000025
【０１７７】
復号時に使用する生体特徴コードが正当でありかつマスクが正当である場合、これらｑ通りの復号結果の少なくとも１つが秘密情報ｐと一致する。Ｒ（Ｍ）−Ｒ*（Ｍ）＋ｘＭで表されるベクトルの中で自明に「０」でない｜Ｍ｜個の成分それぞれは、元ｘが値ｉに等しい場合のみ「０」になる。このような成分の個数をｎiとすると、数式（２４）が成立する。ｉのうちｎiを最大化するものをＩとすると、数式（２５）が成立する。このとき、Ｒ（Ｍ）−Ｒ*（Ｍ）のハミング重みは｜Ｍ｜−ｎIであり、数式（２３）の第２項が成立する。よって、Ｒ（Ｍ）−Ｒ*（Ｍ）＋ｘＭのハミング重みは訂正可能誤り数θを超えず、復号関数ｇ-1で誤り訂正復号した復号結果は秘密情報ｐに一致する。
【０１７８】
【数２４】
2018098739.tif 000026
【０１７９】
【数２５】
2018098739.tif 000027
【０１８０】
一方、暗号化時に使用するマスクＭと復号時に使用するマスクＭ*が異なる場合、ｑ通りの復号結果の何れも秘密情報ｐと一致しない。Ｒ（Ｍ）−Ｒ*（Ｍ）＋ｘＭで表されるベクトルの中で自明に「０」でない成分は、｜Ｍ∪Ｍ*｜〜２｜Ｍ｜個となる。このうち約｜Ｍ*｜×（ｑ−１）／ｑ個は、ｘの値に関係なく「０」でない。また、各元ｘに対して、残りの成分のうち約｜Ｍ｜×（ｑ−１）／ｑ個は「０」でない。よって、Ｒ（Ｍ）−Ｒ*（Ｍ）＋ｘＭのハミング重みは約２（ｑ−１）×｜Ｍ｜／ｑである。このハミング重みは訂正可能誤り数θを超えており、復号結果は秘密情報ｐに一致しない。
【０１８１】
第４の実施の形態の暗号データ処理システムによれば、２進数データ以外にも、正標数ｑをもつ有限体Ｆq上のベクトルで表現されるデータを対象として、第２の実施の形態および第３の実施の形態と同様の安全性を達成することができる。なお、第４の実施の形態の暗号データ処理システムは、第２の実施の形態および第３の実施の形態と同様のハードウェア構成およびソフトウェア構成を用いて実装できる。
【符号の説明】
【０１８２】
１０  暗号データ処理装置
１１  取得部
１２  処理部
１３  マスク
１４ａ，１４ｂ  乱数
１５ａ，１５ｂ  マスク乱数
１６ａ，１６ｂ  生体特徴コード
１７ａ，１７ｂ  鍵
１８ａ  誤り訂正符号化方法
１８ｂ  復号方法
１９ａ  秘密情報
１９ｂ  暗号文
【図１】
2018098739.tif 000028
【図２】
2018098739.tif 000029
【図３】
2018098739.tif 000030
【図４】
2018098739.tif 000031
【図５】
2018098739.tif 000032
【図６】
2018098739.tif 000033
【図７】
2018098739.tif 000034
【図８】
2018098739.tif 000035
【図９】
2018098739.tif 000036
【図１０】
2018098739.tif 000037
【図１１】
2018098739.tif 000038
【図１２】
2018098739.tif 000039
【図１３】
2018098739.tif 000040
【図１４】
2018098739.tif 000041