(57)【要約】  暗号文の照合にあたり、元の平分の情報の漏洩を回避可能とし安全性を担保可能とする。システムは、入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成する手段と、前記第１の補助データの少なくとも一部を一方向性変換し、前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する手段とを備える。
2014175334.tif 000002
【特許請求の範囲】
【請求項１】
入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成する手段と、
前記第１の補助データの少なくとも一部を一方向性変換し、
前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、
前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する手段と、
を含む、ことを特徴とする暗号文照合システム。
【請求項２】
前記入力データの平文に対して暗号化する鍵を線形性を有する誤り訂正符号で符号化した符号語と前記平文との排他的論理和を前記暗号文とし、
前記記憶装置に登録された前記暗号文と前記照合対象の入力データの前記暗号文に関する前記第１及び第２の補助データの各補助データを、それぞれ、対応する前記鍵と定数との内積と、対応する前記暗号文に基づくビット列に対する暗号学的ハッシュ関数の出力と、の排他的論理和を一方向性変換した結果に基づき算出する、ことを特徴とする請求項１記載の暗号文照合システム。
【請求項３】
登録データ生成装置と、
記憶装置と、
データ秘匿装置と、
指定データ照合装置と、
を備え、
前記登録データ生成装置は、
固定長の入力データと鍵を入力とし、前記入力データを前記鍵で暗号化した暗号文であって、
平文１を鍵１で暗号化した暗号文１と平文２を鍵２で暗号化した暗号２文との和が、前記平文１と前記平文２の和を前記鍵１と前記鍵２の和で暗号化した暗号文に、等しいという関係を満たす暗号文を出力する第１の暗号化部と、
前記第１の暗号化部に入力する前記鍵を生成する第１の鍵生成部と、
前記入力データと、前記第１の鍵生成部で生成された前記鍵とを入力とし、前記第１の暗号化部によって出力された前記第１の暗号文が、前記データ秘匿装置によって出力される第２の暗号文と、平文のハミング距離が予め定められた所定値以下であることを検証するための前記第１の補助データを出力する登録補助データ生成部と、
前記登録補助データ生成部から出力される前記第１の補助データの少なくとも一部を一方向性変換したデータを出力する一方向性変換部と、
を備え、
前記記憶装置は、
前記登録データ生成装置の前記第１の暗号化部が出力する、一または複数の前記第１の暗号文を格納する暗号文記憶部と、
前記登録データ生成装置の前記登録補助データ生成部が出力する、一つ又は複数の前記第１の補助データを格納する補助データ記憶部と、
前記指定データ照合装置から識別子を入力とし、前記暗号文記憶部と前記補助データ記憶部とに対して、前記識別子に対応する前記暗号文と前記第１の補助データとをそれぞれ出力させる識別子管理部と、
を備え、
前記データ秘匿装置は、
固定長の入力データと鍵を入力とし、前記入力データを前記鍵で暗号化した暗号文であって、平文１を鍵１で暗号化した暗号文１と平文２を鍵２で暗号化した暗号２文との和が、前記平文１と前記平文２の和を前記鍵１と前記鍵２の和で暗号化した暗号文に、等しいという関係を満たす暗号文を出力する第２の暗号化部と、
前記第２の暗号化部に入力する前記鍵を生成する第２の鍵生成部と、
前記入力データと、前記第２の鍵生成部で生成された前記鍵とを入力とし、前記第２の暗号化部によって出力された前記第２の暗号文が、前記登録データ生成装置の前記第１の暗号化部によって出力された前記第１の暗号文と、平文のハミング距離が予め定められた所定値以下であることを検証するための前記第２の補助データを出力する補助データ生成部と、
を備え、
前記指定データ照合装置は、
識別子を入力し、前記識別子を前記記憶装置の前記識別子管理部に出力し、前記識別子に対応する暗号文と補助データとを出力するように前記識別子管理部に指示する識別子保持部と、
前記データ秘匿装置の前記第２の暗号化部から出力される前記第１の暗号文と、前記記憶装置の前記暗号文記憶部から読み出された前記暗号文と、を入力とし、入力した二つの前記暗号文の差分を出力する暗号文減算部と、
前記暗号文減算部から出力される前記第１、第２の暗号文の差分と、
前記記憶装置の前記補助データ記憶部から読み出された前記第１の補助データと、
前記データ秘匿装置の前記補助データ生成部から出力される前記第２の補助データと、
を入力とし、
前記暗号文減算部から出力される前記第１、第２の暗号文の差分と、前記データ秘匿装置の前記補助データ生成部から出力される前記第２の補助データとに基づき生成される途中データを一方向性変換部に送付し、
前記一方向性変換部が前記途中データに応じて生成した一方向性変換後データと、
前記記憶装置の前記補助データ記憶部に格納された、一方向性変換された前記第１の補助データの一つと、
が等しいか否かで、前記第１、第２の暗号文の差分に対応する平文のハミング距離が予め定められた所定値以下であるか否かを判定する一致判定部と、
前記一致判定部が計算した前記途中データを入力とし、前記途中データを一方向性変換した結果を出力する前記一方向性変換部と、
前記データ秘匿装置と前記指定データ照合装置との間のデータのやりとりを制御する制御部と、
を備える、ことを特徴とする請求項１記載の暗号文照合システム。
【請求項４】
登録データ生成装置と、
記憶装置と、
データ秘匿装置と、
データ照合装置と、
を備え、
前記登録データ生成装置は、
固定長の入力データと、鍵を入力とし、前記入力データを前記鍵で暗号化した暗号文であって、
平文１を鍵１で暗号化した暗号文１と平文２を鍵２で暗号化した暗号２文との和が、前記平文１と前記平文２の和を前記鍵１と前記鍵２の和で暗号化した暗号文に、等しいという関係を満たす暗号文を出力する第１の暗号化部と、
前記第１の暗号化部に入力する前記鍵を生成する第１の鍵生成部と、
前記入力データと、前記第１の鍵生成部で生成された前記鍵を入力とし、前記第１の暗号化部によって出力された第１の暗号文が、前記データ秘匿装置によって出力される第２の暗号文と、平文のハミング距離が予め定められた値以下であることを検証するための前記第１の補助データを出力する登録補助データ生成部と、
前記登録補助データ生成部から出力される前記第１の補助データの少なくとも一部を一方向性変換したデータを出力する一方向性変換部と、
を備え、
前記記憶装置は、
前記登録データ生成装置の前記第１の暗号化装置が出力する一又は複数の暗号文を格納する暗号文記憶部と、
前記登録データ生成装置の前記登録補助データ生成部が出力する一又は複数の補助データを格納する補助データ記憶部と、
前記データ照合装置から識別子を入力とし、前記暗号文記憶部と、前記補助データ記憶部とに前記識別子に対応する暗号文と補助データとをそれぞれ出力させる識別子管理部と、
を備え、
前記データ秘匿装置は、
固定長の入力データと鍵を入力とし、前記入力データを前記鍵で暗号化した暗号文であって、
平文１を鍵１で暗号化した暗号文１と平文２を鍵２で暗号化した暗号２文との和が、前記平文１と前記平文２の和を前記鍵１と前記鍵２の和で暗号化した暗号文に、等しいという関係を満たす暗号文を出力する第２の暗号化部と、
前記第２の暗号化部に入力する前記鍵を生成する第２の鍵生成部と、
前記入力データと、前記第２の鍵生成部で生成された前記鍵と、を入力とし、前記第２の暗号化部によって出力された第２の暗号文が、前記登録データ生成装置の前記第１の暗号化部によって出力される第１の暗号文と、平文のハミング距離が予め定められた所定値以下であることを検証するための前記第２の補助データを出力する補助データ生成部と、
前記補助データ生成部から出力された前記第２の補助データの少なくとも１部を一方向性変換したデータを出力する一方向性変換部と、
を備え、
前記データ照合装置は、
識別子出力部からの命令により、前記記憶装置内に格納されている全てのデータを逐次的に読み出す命令を識別子管理部に入力する全データ要求部と、
前記データ秘匿装置の前記第２の暗号化部から出力される前記第２の暗号文と、前記記憶装置内の前記暗号文記憶部に格納される前記第１の暗号文とを入力とし、入力した前記第１、第２の暗号文の差分を出力する暗号文減算装部と、
前記暗号文減算部から出力される前記第１、第２の暗号文の差分と、
前記記憶装置の前記補助データ記憶部から読み出された前記第１の補助データと、
前記データ秘匿装置の前記補助データ生成部から出力される前記第２の補助データと、
を入力とし、
前記暗号文減算部から出力される前記第１、第２の暗号文の差分と、前記データ秘匿装置の前記補助データ生成部から出力される前記第２の補助データとに基づき生成される途中データを一方向性変換部に送付し、
前記一方向性変換部が前記途中データに応じて生成した一方向性変換後データと、
前記記憶装置の前記補助データ記憶部に格納された、一方向性変換された前記第１の補助データの一つと、
が等しいか否かで、前記第１、第２の暗号文の差分に対応する平文のハミング距離が予め定められた所定値以下であるか否かを判定する一致判定部と、
前記一致判定部が計算した前記途中データを入力とし、前記途中データを一方向性変換した結果を出力する前記一方向性変換部と、
前記一致判定部が計算した途中データを入力とし、途中データを一方向性変換した結果を出力する前記一方向性変換部と、
前記一致判定部からの判定結果の出力と、前記識別子管理部の出力とを入力とし、前記一致判定部が、平文のハミング距離が予め定められた所定値以下と判定したデータに対応する識別子を出力する前記識別子出力部と、
前記データ秘匿装置と、前記データ照合装置との間のデータのやりとりを制御する制御部と、
を備える、ことを特徴とする請求項１記載の暗号文照合システム。
【請求項５】
前記第１、第２の暗号化部が、前記鍵と、前記入力データの平文に対して、前記鍵を、線形性を有する誤り訂正符号で符号化し、誤り訂正符号化結果である符号語と、前記平文とのベクトル上の和を計算した結果を、前記暗号文として出力する、ことを特徴とする請求項３又は４記載の暗号文照合システム。
【請求項６】
前記登録データ生成装置の前記登録補助データ生成部が出力する前記第１の補助データが、
前記登録データ生成装置の前記第１の暗号化部に入力された鍵をＳ、
前記第１の暗号化部が出力した暗号文をＷ１、
繰り返し利用される可能性の低いデータをＲとして、式
ｈ（（ｃ，Ｓ）（＋）ｈ（Ｗ１，Ｒ））
（但し、ｃは定数、（ｘ、ｙ）はベクトルｘ、ｙの内積を表し（ｃ，S）はｃとSの内積、ｈは暗号学的ハッシュ関数、（＋）はビット毎の排他的論理和である）
によって計算されるデータを含み、
前記データ秘匿装置の前記補助データ生成部が出力する前記第２の補助データが、
前記データ秘匿装置の前記第２の暗号化部に入力された鍵をＳ’、
前記第２の暗号化部が出力した暗号文をＷ１’、
繰り返し利用される可能性の低いデータをＲ’として、式
（ｃ，Ｓ’）（＋）ｈ（Ｗ１’，Ｒ’）
によって計算されるデータ
を含む、ことを特徴とする請求項３又は４記載の暗号文照合システム。
【請求項７】
前記Ｒ’が、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵共有法によって、前記指定データ照合装置又は前記データ照合装置の前記一致判定部と、前記データ秘匿装置の前記補助データ生成部の双方で生成される、ことを特徴とする請求項６記載の暗号文照合システム。
【請求項８】
請求項１乃至７のいずれか１項に記載の暗号文照合システムを備え、前記登録データ生成装置、前記データ秘匿装置に入力される入力データが、生体情報によって生成され、前記データ秘匿装置を介して前記指定データ照合装置又は前記データ照合装に入力されたデータが、記憶装置に格納されたデータと一致するか否かを判定することによって生体認証を行う、ことを特徴とする生体認証システム。
【請求項９】
入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成し、
前記第１の補助データの少なくとも一部を一方向性変換し、
前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、
前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する、ことを特徴とする暗号文照合方法。
【請求項１０】
入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、前記第１の暗号文と前記第２の暗号文との間の平文のハミング距離が、予め定められた所定値以下であることを検証するための第１、第２の補助データをそれぞれ生成する処理と、
前記第１の補助データの少なくとも一部を一方向性変換し、前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する処理と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１３−０９１４６８号（２０１３年  ４月２４日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、暗号文照合システムと方法とプログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングの普及に伴い、ネットワークに接続された計算資源に利用者のデータを置き、そのデータに基づいたサービスが急速に広がってきている。このようなサービスでは、利用者の機微なデータを扱う機会も増大してきている。このため、利用者が自分のデータが安全に管理されていることを保証することが重要になってきている。このような状況の下、オープンなネットワーク環境でデータを暗号化したまま管理し、データを復号することなく、検索や、統計処理等を行う技術の研究開発が活発に行われている。  【０００３】
また、近年、パスワードや磁気カードを用いた個人認証の脆弱性をついた犯罪が頻発している。このため、より安全性の高い指紋、静脈等の生体的な特徴に基づく生体認証技術が注目を集めている。生体認証においては、認証情報の検証を行うために、生体情報に関するテンプレートをデータベースに保管する必要がある。指紋、静脈等の生体情報は、基本的に生涯不変のデータである。生体情報は、漏洩すると、その被害は甚大なものとなる最も機密性が要求される情報である。したがって、テンプレートが漏洩した場合でも、「なりすまし」等が行えないようにする必要がある。  【０００４】
そこで、テンプレート情報を秘匿したまま認証を行うテンプレート保護型の生体認証技術が重要となってきている。【０００５】
例えば特許文献１には、指紋データを多項式上の点として表現し、その点にランダムな点を付加して指紋データを秘匿したデータをテンプレートとして生体認証を行う方式が開示されている。【０００６】
しかしながら、上記特許文献１の方式は、生体認証を何度も繰り返した時に、十分な強度で生体情報が保護されているかに関して課題があることが知られている。  【０００７】
非特許文献１には、データベース上に置くテンプレートをランダムなBCH（Bose-Chaudhuri-Hocquenghem）符号語(code word）でマスクすることによって、生体情報を保護する方式が開示されている。非特許文献１では、生体情報Ｚと秘匿情報Ｓを用いて、生体認証用テンプレートを生成している。図５は、非特許文献１のFig.2に基づく図であり、非特許文献１のFig.2における特徴量の抽出（Feature Extraction）、統計処理（Statistical Analysis）、量子化（Quantization）等は省略されている。テンプレートの登録（enrollment）は以下のようにして行われる。【０００８】
（１）秘匿情報Ｓをエンコーダ（enc）に入力して誤り訂正符号化し（Error Correcting Coding：ECC）、符号語Ｃを生成する。ECCは、パラメータ（K, s, d）の２元BCH符号が用いられる。Kは符号語（code word）の長さ、sは情報シンボル(information symbol）数、dは訂正可能な誤り数である。
（２）ＣとＺの排他的論理和W2 = C (+) Zを計算する（ただし、(+)はビット毎の排他的論理和演算（bitwise XOR）を表す）。  
（３）ＳをSHA（Secure Hash Algorithm）−１等の暗号学的ハッシュ関数（cryptographic (one-way) hash function）Hに入力してハッシュ値H(S)を得る。
（４）W2及びH(S)をテンプレート情報としてデータベース（DB）に格納する。【０００９】
上記（１）から（４）によって生成されたテンプレートと、別の生体情報Ｚ'が同じ人物から採取したものであるか否かの検証（Verification）は、次のようにして行われる。
（１）Z'とW2との排他的論理和C' = W2 (+) Z' = C (+) (Z (+) Z')を計算する。
（２）C'をデコーダ（DEC）に入力してBCH符号の誤り訂正復号を行い、S'を計算する。
（３）S'をSHA-1等の暗号学的ハッシュ関数Ｈに入力してハッシュ値H(S')を計算する。
（４）データベース（DB）からH(S)を読み出し、H(S) = H(S')が成立するかチェックする。H(S) = H(S')が成立する場合には、テンプレートと生体情報Ｚ'が同じ人物から採取されたものと判断する。H(S) = H(S')が成立しない場合は、異なる人物から採取されたものと判断する。【００１０】
上記手法は、生体情報Ｚの取得方法に依存しない。このため、一般に、秘匿（暗号化）されたデータを復号することなく、暗号文が、提示されたデータと一定のハミング距離以内のデータを暗号化したものであるか否かの照合を行う方式と解釈することが可能である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−１５８８５１号公報
【非特許文献】
【００１２】
【非特許文献１】Pim Tuyls, Anton H. M. Akkermans, Tom A. M. Kevenaar, Geert-Jan Schrijen, Asker M. Bazen and Raimond N. J. Veldhuis, "Practical Biometric Authentication with Templete Protection", Proceedings of AVBPA 2005, Lecture Notes in Computer Science, Vol. 3546, Springer Verlag, pp. 436-446, (2005)
【発明の開示】
【発明が解決しようとする課題】
【００１３】
以下に関連技術の分析を与える。【００１４】
上記した関連技術の問題点として、データベースにある暗号文の照合を行う際、照合を行う管理者等に、平文に関する情報が漏洩する可能性がある、ということがある。その理由は以下の通りである。【００１５】
例えば上記特許文献１では、暗号文の秘匿強度が十分でないことによる。【００１６】
また上記非特許文献１においては、暗号文が、提示されたデータと一定のハミング距離以内のデータを暗号化したものであるか否かの照合を可能にするためには、平文情報を、照合時に送出する必要があることによる。【００１７】
このように、照合処理を複数回行った場合に元の平文の情報漏洩の可能性があり、例えば照合処理の操作等を行うデータベース管理者等に悪意がある場合等において、十分な安全性が担保できない。例えば生体認証の用途を考えると、照合時に送付されるデータからの生体情報漏洩は登録データからの生体情報漏洩と同等の問題と言える。既存のテンプレートを保護した生体認証方式では、登録テンプレートからの生体情報漏洩に関する安全性のみを検討している。しかしながら、生体認証そのものの安全性を考慮するため、照合時に送付されるデータからの情報漏洩を考慮する必要がある。さらに、照合時に送付されるデータから、同じデータと一致と判定されるデータが生成できることは、認証の安全性を考慮した場合に問題となる。例えば前記非特許文献１に記載の方式では、Ｚ’という値を入手して、再送することにより、照合を行うことができる。これは、生体認証としてこの行為を見ると、ある人が認証のために送付したデータを入手することにより、その人に成りすますことが可能となることを意味する。【００１８】
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、暗号文の照合にあたり、元の平文の情報漏洩を回避可能とし、安全性を担保可能とするシステム、方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明によれば、入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成する手段と、
前記第１の補助データの少なくとも一部を一方向性変換し、
前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する手段と、を含む暗号文照合システムが提供される。【００２０】
本発明によれば、上記暗号文照合システムを備えた生体認証システムが提供される。【００２１】
本発明によれば、入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成し、
前記第１の補助データの少なくとも一部を一方向性変換し、
前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、
前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する暗号文照合方法が提供される。【００２２】
本発明によれば、入力データを暗号化して記憶装置に登録される第１の暗号文と、照合対象の入力データを暗号化した第２の暗号文に対して、平文のハミング距離を用いて照合を検証するための第１、第２の補助データをそれぞれ生成する処理と、
前記第１の補助データの少なくとも一部を一方向性変換し、前記第１の暗号文と前記第２の暗号文との差分と、前記第２の補助データとに基づき生成される途中データを一方向性変換し、前記途中データを一方向性変換した結果と、一方向性変換した前記第１の補助データとを用いて、前記第１の暗号文と前記第２の暗号文の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否か判定する処理と、をコンピュータに実行させるプログラムが提供される。本発明によれば、該プログラムを記録したコンピュータ読み出し可能な記録媒体（磁気／光記録媒体、半導体記録媒体）が提供される。
【発明の効果】
【００２３】
本発明によれば、暗号文の照合において、元の平文の情報漏洩を回避可能とし、安全を担保可能としている。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態１の構成を例示する図である。
【図２】（Ａ）、（Ｂ）は本発明の実施形態１のデータ登録フェイズと暗号文照合フェイズを説明する図である。
【図３】本発明の実施形態２の構成を例示する図である。
【図４】本発明の実施形態２の暗号文照合フェイズを説明する図である。
【図５】非特許文献１の方式を例示する図である。
【図６】発明概念を説明する図である。
【発明を実施するための形態】
【００２５】
本発明の実施形態について説明する。はじめに本発明の基本概念について説明する。本発明の１つの側面によれば、照合対象の入力データが暗号化され、該入力データの照合を行うための登録データが暗号化されており、照合（一致）の判定（検証）の指標（曖昧さの指標）として、平文のハミング距離を用いる。登録暗号データだけでなく、照合のための入力データも秘匿強度の高い暗号方式により暗号化される。また、同じ入力データを用いて複数回の照合を行った場合でも、照合を行うたびに、データの秘匿に用いる鍵情報を変える。このため、照合を多数回行った場合でも、平文に関する情報が漏洩する可能性を低く抑えることができ、攻撃耐性を高め、セキュリティの向上に寄与する。
【００２６】
図６を参照すると、本発明の１つの側面に係る暗号文照合システム１０（装置）は、暗号文から補助データ（暗号文に対して、平文のハミング距離を用いて照合を検証するための補助データ）を生成する補助データ生成手段（ユニット）（１４）と、暗号文と補助データから、暗号化した入力データと登録暗号データの照合の判定を行う照合判定手段（ユニット）（１５）を少なくとも備えている。
【００２７】
補助データ生成手段（ユニット）（１４）は、入力データを暗号化手段（ユニット）（１１）で暗号化して記憶装置（１３）に登録される暗号文１と、照合対象の入力データを暗号化手段（ユニット）（１２）で暗号化した暗号文２に対して、前記暗号文１と前記暗号文２との間の平文のハミング距離が、予め定められた所定値以下であることを検証するための補助データ１と補助データ２をそれぞれ生成する。
【００２８】
照合判定手段（ユニット）（１５）は、補助データ１の少なくとも一部を一方向性変換手段（ユニット）（１４ｈ）で一方向性変換し、前記暗号文１と前記暗号文２との差分と、前記補助データ２とに基づき生成される途中データを一方向性変換手段（ユニット）（１５ｈ）で一方向性変換し、
前記途中データを一方向性変換した結果と、一方向性変換した前記補助データ１とを用いて、前記記憶装置（１３）に登録された暗号文１と、前記照合対象の入力データの前記暗号文２の前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否かを判定する。暗号文照合システム１０（装置）の各手段は、暗号文照合システム１０（装置）を構成するコンピュータ上で実行されるプログラムでその処理・機能を実現するようにしてもよい。
【００２９】
本発明によれば、前記入力データの平文に対して暗号化する鍵を、線形性を有する誤り訂正符号で符号化した符号語と前記平文との排他的論理和を前記暗号文とし、前記記憶装置に登録された前記暗号文と前記照合対象の入力データの前記暗号文に関する前記第１及び第２の補助データを、それぞれ、前記鍵と定数との内積と、前記暗号文、乱数に対して施す暗号学的ハッシュ関数との排他的論理和に基づき算出する。暗号学的ハッシュ関数は、ハッシュ値ｈが与えられたときｈ＝hash(m)となる元の文字列ｍを求めることが困難であるという原像計算困難性という特性（一方向性圧縮関数）を持つ。
【００３０】
また、本発明によれば、上記非特許文献１では実現が不可能であった、暗号化されたデータ同士での照合処理を可能とするため、照合結果を判定するためのハッシュ関数に関して二つのデータのハッシュ値からそれらのデータの和のハッシュ値を計算可能とすることを保証している。
【００３１】
本発明によれば、上記のとおり、暗号文同士の照合処理時に、照合を行うユーザが送出するデータも、例えば照合処理操作等を行うデータベース管理者等に知られることのない暗号化鍵によって暗号化される。このため、照合処理を複数回行った場合や、照合処理を行うデータベース管理者等に悪意がある場合でも、照合処理時に元の平文に関する情報の漏洩を防止することができる。以下、例示的ないくつかの実施形態について説明する。
【００３２】
＜実施形態１＞
図１を参照すると、本発明の実施形態１のシステムは、登録データ生成装置１００、記憶装置２００、データ秘匿装置３００、指定データ照合装置４００を備えている。なお、これらの各装置は、一つのサイト等にまとめて一つの装置とした構成としてもよいし、あるいは分散配置し通信手段を介して相互接続する構成としてもよい。
【００３３】
登録データ生成装置１００は、暗号化部１０１と、鍵生成部１０２と、登録補助データ生成部１０３と、一方向性変換部１０４を備えている。
【００３４】
暗号化部１０１は、秘匿の対象となる入力データと、入力データの秘匿を行う鍵とを入力とし、入力データを、鍵を用いて秘匿処理を施した暗号データを出力する。
【００３５】
鍵生成部１０２は、暗号化部１０１が入力データの秘匿を行うための鍵を生成し、暗号化部１０１と、登録補助データ生成部１０３に出力する。
【００３６】
登録補助データ生成部１０３は、
入力データと、
暗号化部１０１が出力した暗号データと、
鍵生成部１０２が出力した鍵と
を入力とする。登録補助データ生成部１０３は、データ秘匿装置３００の暗号化部３０１が出力する暗号データに対応する入力データが、暗号化部１０１に入力された入力データとハミング距離が予め定められた所定値以下（一定数以内）であることを判断するためのデータを出力する。
【００３７】
一方向性変換部１０４は、前記登録補助データ生成部１０３が生成するデータ（途中データ）の一部又は全部を一方向性変換した結果を出力する。  
【００３８】
ここで、登録データ生成装置１００の暗号化部１０１によって出力される暗号文は、
入力データm1を鍵k1で暗号化した暗号文をc1、
入力データm2を鍵k2で暗号化した暗号文をc2
とした時、
c1とc2の和c1+c2は、入力データm1+m2を鍵k1+k2で暗号化した暗号文となる。
【００３９】
記憶装置２００は、識別子管理部２０１と、暗号文記憶部２０２と、補助データ記憶部２０３とを備えている。暗号文記憶部２０２と補助データ記憶部２０３は、登録データ生成装置１００が出力した暗号データ及び登録補助データを受け取りそれぞれ記憶する。暗号文記憶部２０２と補助データ記憶部２０３はデータベースとして構成してもよい（あるいは、ファイル構成であってもよい）。
【００４０】
暗号文記憶部２０２と、補助データ記憶部２０３は、識別子管理部２０１の制御のもと、暗号データの照合時に、指定データ照合装置４００から入力される識別子に対応する暗号データ及び補助データを指定データ照合装置４００に出力する。
【００４１】
記憶装置２００の識別子管理部２０１は、登録データ生成装置１００から入力される暗号データ、及び補助データを一意に特定する識別子を管理する。
【００４２】
識別子管理部２０１は、指定データ照合装置４００から識別子が入力された際に、暗号文記憶部２０２と、補助データ記憶部２０３に対して、入力された識別子に対応する暗号データ、及び補助データをそれぞれ出力することを指示する命令を出力する。
【００４３】
暗号文記憶部２０２は、登録データ生成装置１００の暗号化部１０１が出力した暗号データを記憶し、識別子管理部２０１から暗号データ出力の命令が入力された際には、対応する暗号データを出力する。
【００４４】
補助データ記憶部２０３は、登録データ生成装置１００の登録補助データ生成部１０３が出力した補助データを記憶し、識別子管理部２０１から暗号データ出力の命令が入力された際に、対応する補助データを出力する。
【００４５】
データ秘匿装置３００は、暗号化部３０１と、鍵生成部３０２と、補助データ生成部３０３とを備えている。
【００４６】
暗号化部３０１は、秘匿の対象となる入力データ（照合対象となる入力データ）と、入力データの秘匿を行う鍵とを入力とし、入力データに対して鍵を用いて秘匿処理を施した暗号データを出力する。
【００４７】
鍵生成部３０２は、暗号化部１０１が入力データの秘匿を行うための鍵を生成し、暗号化部３０１と、補助データ生成部３０３に出力する。
【００４８】
補助データ生成部３０３は、
・該入力データ（照合対象の入力データ）と、
・暗号化部３０１が出力した暗号データと、
・鍵生成部３０２が暗号化部３０１に対して出力した鍵と、
を入力とする。補助データ生成部３０３は、登録データ生成装置１００の暗号化部１０１が出力する暗号データ（登録暗号データ）に対応する入力データ（平文）と、暗号化部３０１に入力された入力データ（平文）との間のハミング距離が予め定められた所定値以下（一定数以内）であることを判断するための補助データを出力する。これは、登録暗号データ）に対応する入力データ（平文）と、暗号化部３０１に入力された照合対象の入力データ（平文）との間のハミング距離が、所定値以下（あるいは所定値未満）であれば、照合（一致）すると判定し、前記所定値を超えた（あるいは所定値以上の）場合、照合しない（不一致）と判定するために用いられる補助情報である。
【００４９】
データ秘匿装置３００の暗号化部３０１によって出力される暗号文は、暗号化部１０１と同じ方法によって計算される。すなわち、
入力データm1を鍵k1で暗号化した暗号文をc1、
入力データm2を鍵k2で暗号化した暗号文をc2
とした時、c1とc2の和c1+c2は、入力データm1+m2を鍵k1+k2で暗号化した暗号文となる。
【００５０】
指定データ照合装置４００は、識別子保持部４０１と、暗号文減算部４０２と、一致判定部４０３と、制御部４０４と、一方向性変換部４０５とを備えている。
【００５１】
識別子保持部４０１は、識別子を入力として、記憶装置２００に入力された識別子に対応する暗号文データと補助データを出力するように、記憶装置２００の識別子管理部２０１に対して、命令を出力する。
【００５２】
暗号文減算部４０２は、
・記憶装置２００の暗号文記憶部２０２に格納された暗号データ（登録暗号データ）の一つと、
・データ秘匿装置３００の暗号化部３０１から出力される暗号データとを入力とし、
入力された二つの暗号データｃ１とｃ２の差ｃ１−ｃ２を出力する。
【００５３】
このとき、暗号化部１０１、及び暗号化部３０１の性質により、
c1を入力データm1を鍵k1で暗号化した暗号文、
c2を入力データm2を鍵k2で暗号化した暗号文
とした時、二つの暗号文c1、C2の差c1-c2は、入力データm1-m2を、鍵k1-k2で暗号化した暗号文となっている。
【００５４】
一致判定部４０３は、
・記憶装置２００の補助データ記憶部２０３に格納された補助データと、
・データ秘匿装置３００の補助データ生成部３０３から出力される補助データと、
・暗号文減算部４０２から出力される二つの暗号データの差分と
を入力とする。
【００５５】
一致判定部４０３は、
・データ秘匿装置３００の補助データ生成部３０３から出力される補助データと、
・暗号文減算部４０２から出力される二つの暗号データの差分と、
を少なくとも含むデータから生成される途中データを、一方向性変換部４０５に送付する。
【００５６】
一方向性変換部４０５は、一致判定部４０３から送付された途中データを一方向性変換した結果を一致判定部４０３に返す。
【００５７】
一致判定部４０３は、
・一方向性変換部４０５が途中データに応じて生成した一方向性変換後データと、
・記憶装置２００の補助データ記憶部２０３に格納された一方向性変換された補助データの一つと、
から、暗号文減算部４０２に入力された二つの暗号データc1とc2にそれぞれ対応する平文m1とm2のハミング距離が予め定められた所定値以下であるか否かを出力する。
【００５８】
制御部４０４は、データ秘匿装置３００と、指定データ照合装置４００とがデータをやり取りする際の通信等を制御する。
【００５９】
次に、実施形態１の動作について図２の流れ図を参照して説明する。実施形態１の暗号文照合システムの動作は、データ登録フェイズと、暗号文照合フェイズの二つのフェイズに大別される。
【００６０】
データ登録フェイズは、登録データ生成装置１００に入力データを入力し、入力データを暗号化し、補助データとともに、記憶装置２００に登録するフェイズである。
【００６１】
暗号文照合フェイズは、データ秘匿装置３００に入力された入力データを暗号化し、その際に生成された暗号データ、及び補助データが、別途入力される識別子で指定される記憶装置内の暗号データ、及び補助データと近い（ハミング距離が予め定められた所定値以下の）平文となるものであるか否かを判定するフェイズである。
【００６２】
データ登録フェイズにおいては、はじめに、登録データ生成装置１００の暗号化部１０１に秘匿対象となる入力データが入力される（図２（Ａ）のステップＡ１）。
【００６３】
次に、登録データ生成装置１００の鍵生成部１０２が、入力データの秘匿に用いる鍵を生成し、暗号化部１０１及び登録補助データ生成部１０３に出力する（図２（Ａ）のステップＡ２）。
【００６４】
次に、登録データ生成装置１００の暗号化部１０１は、入力された入力データと、鍵とから、入力データを暗号化した暗号データを計算し、記憶装置２００の暗号文記憶部２０２に格納する（図２（Ａ）のステップＡ３）。
【００６５】
次に、ステップＡ１で入力された入力データと、ステップＡ２で生成された鍵と、ステップＡ３で生成された暗号データとを、登録データ生成装置１００の登録補助データ生成部１０３に入力し、登録補助データ生成部１０３は補助データを作成する（図２（Ａ）のステップＡ４）。その際、登録補助データ生成部１０３から出力される補助データを一方向性変換部１０４に出力する。
【００６６】
登録データ生成装置１００の一方向性変換部１０４は、補助データを一方向性変換した変換後補助データを計算し、登録補助データ生成部１０３に出力する（図２（Ａ）のステップＡ５）。
【００６７】
次に、登録データ生成装置１００の登録補助データ生成部１０３はステップＡ５で入力された変換後補助データを、記憶装置２００の補助データ記憶部２０３に格納する（図２（Ａ）のステップＡ６）。
【００６８】
以上の処理により、記憶装置２００に入力されたデータには、識別子管理部２０１で一意な識別子が割り振られ、後に、割り振られた識別子での呼び出し（読み出し）が可能となる。
【００６９】
暗号文照合フェイズにおいては、はじめに、指定データ照合装置４００の識別子保持部４０１に識別子が入力される。入力された識別子に対応する暗号データ（登録暗号データ）が記憶装置２００の暗号文記憶部２０２から、指定データ照合装置４００の暗号文減算部４０２に入力される。また、入力された識別子に対応する補助データが、記憶装置２００の補助データ記憶部２０３から、指定データ照合装置４００の一致判定部４０３に入力される（図２（Ｂ）のステップＢ１）。
【００７０】
次に、入力データ（照合対象のデータ）がデータ秘匿装置３００の暗号化部３０１に入力される（図２（Ｂ）のステップＢ２）。
【００７１】
次に、データ秘匿装置３００の鍵生成部３０２が、入力データの秘匿に用いる鍵を生成し、作成した鍵を、データ秘匿装置３００の暗号化部３０１及び補助データ生成部３０３に出力する（図２（Ｂ）のステップＢ３）。
【００７２】
次に、データ秘匿装置３００の暗号化部３０１は、ステップＢ２で入力された入力データと、ステップＢ３で入力された鍵とから、入力データを暗号化した暗号データを計算し、指定データ照合装置４００の暗号文減算部４０２に入力する（図２（Ｂ）のステップＢ４）。
【００７３】
データ秘匿装置３００の補助データ生成部３０３が、入力データ、入力データを暗号化部３０１で暗号化した暗号データから補助データを生成する（図２（Ｂ）のステップＢ５）。
【００７４】
記憶装置２００の暗号文記憶部２０２と、データ秘匿装置３００の暗号化部３０１とから暗号データとを入力した指定データ照合装置４００の暗号文減算部４０２は、入力された二つの暗号データの差を、指定データ照合装置４００の一致判定部４０３に出力する（図２（Ｂ）のステップＢ６）。また、指定データ照合装置４００の制御部４０４によって制御される、記憶装置２００の補助データ記憶部２０３と、データ秘匿装置３００の補助データ生成部３０３とが、協調して通信を行うことにより、記憶装置２００の補助データ記憶部２０３と、データ秘匿装置３００の補助データ生成部３０３とから、それぞれ補助データが指定データ照合装置４００の一致判定部４０３に入力される。
【００７５】
ステップＢ６において、指定データ照合装置４００の暗号文減算部４０２から二つの暗号データの差を入力し、記憶装置２００の補助データ記憶部２０３から変換後補助データと、データ秘匿装置３００の補助データ生成部３０３から補助データを入力した指定データ照合装置４００の一致判定部４０３は、まず、前記二つの暗号データの差と、補助データとから途中データを生成し、指定データ照合装置４００の一方向性変換部４０５に出力する（図２（Ｂ）のステップＢ７）。
【００７６】
指定データ照合装置４００の一方向性変換部４０５は、途中データを一方向性変換した変換後途中データを生成し、指定データ照合装置４００の一致判定部４０３に出力する（図２（Ｂ）のステップＢ８）。
【００７７】
指定データ照合装置４００の一致判定部４０３は、前記変換後途中データと、前記補助データから、ステップＢ１で指定データ照合装置４００の暗号文減算部４０２に入力された暗号データの平文と、ステップＢ４で指定データ照合装置４００の暗号文減算部４０２に入力された暗号データの平文とのハミング距離が予め定められた所定値以下となるか否かを判定し、その判定結果を出力する（図２（Ｂ）のステップＢ９）。
【００７８】
なお、図１の各装置１００、２００、３００、４００を一つのコンピュータシステム上に実装してもよいし、あるいは各装置を単体として構成してもよい。あるいは、各装置１００、２００、３００、４００内の各部をそれぞれ一つの単体装置で構成してもよい。図１の各装置の各部の処理を、コンピュータで実行されるプログラムによって実現するようにしてもよい。本発明によれば、該プログラムを記録した記録媒体（半導体メモリ、磁気／光ディスク）が提供される。
【００７９】
＜実施形態２＞
次に、本発明の実施形態２について説明する。前述した実施形態１における暗号文照合システムでは、入力データと識別子がシステムに入力され、識別子に対応する暗号データの平文と入力データの照合が行われるのに対して、本実施形態は、入力データのみがシステムに入力され、入力データと照合する暗号データの識別子が出力される。
【００８０】
図３を参照すると、実施形態２のシステムは、登録データ生成装置１００、記憶装置２００、データ秘匿装置３００、データ照合装置５００から構成される。登録データ生成装置１００、記憶装置２００、データ秘匿装置３００は、前記実施形態１と同様の構成とされ、データ照合装置５００の構成が前記実施形態１と相違している。  
【００８１】
データ照合装置５００は、全データ要求部５０１と、暗号文減算部５０２と、一致判定部５０３と、制御部５０４と、識別子出力部５０５と、一方向性変換部５０６とを備えている。
【００８２】
全データ要求部５０１は、識別子出力部５０５からの命令により、記憶装置２００内に格納されている全てのデータを逐次的に読み出す命令を、識別子管理部２０１に入力する。
【００８３】
暗号文減算部５０２は、記憶装置２００の暗号文記憶部２０２に格納された暗号データの一つと、データ秘匿装置３００の暗号化部３０１から出力される暗号データとを入力とし、入力された二つの暗号データc1、c2の差c1-c2を出力する。
【００８４】
このとき、暗号化部１０１、及び暗号化部３０１の性質により、
c1を入力データm1を鍵k1で暗号化した暗号文、
c2を入力データm2を鍵k2で暗号化した暗号文
とした時、二つの暗号文c1、C2の差c1-c2は、入力データm1-m2を、鍵k1-k2で暗号化した暗号文となっている。
【００８５】
一致判定部５０３は、
・記憶装置２００の補助データ記憶部２０３に格納された補助データと、
・データ秘匿装置３００の補助データ生成部３０３から出力される補助データと、
・暗号文減算部５０２から出力される二つの暗号データの差分と
を入力する。一致判定部５０３は、
・データ秘匿装置３００の補助データ生成部３０３から出力される補助データと、
・暗号文減算部５０２から出力される二つの暗号データの差分と、
を少なくとも含むデータから生成される途中データを一方向性変換部５０５に送付する。
【００８６】
一方向性変換部５０５は途中データを一方向性変換した結果を一致判定部５０３に返す。
【００８７】
一致判定部５０３は、
・一方向性変換部５０５が途中データに応じて生成した一方向性変換後データと、
・記憶装置２００の補助データ記憶部２０３に格納された一方向性変換された補助データと、
から、暗号文減算部５０２に入力された二つの暗号データc1とc2にそれぞれ対応する平文m1とm2のハミング距離が予め定められた所定値以下であるか否かを出力する。
【００８８】
制御部５０４は、データ秘匿装置３００と、データ照合装置５００とがデータをやり取りする際の通信を制御する。
【００８９】
識別子出力部５０５は、
識別子管理部２０１が暗号文記憶部２０２、及び補助データ記憶部２０３にデータ出力命令を出した識別子と、
一致判定部５０３が出力した照合結果と、
を入力とし、一致判定部５０３が照合（一致）したと判定した場合には、識別子管理部２０１から入力された識別子を出力する。
【００９０】
次に実施形態２の動作について図４の流れ図を参照して説明する。データ登録フェイズと、暗号文照合フェイズの二つのフェイズに大別される。ここで、データ登録フェイズは、登録データ生成装置１００に入力データを入力し、入力データを暗号化し、補助データとともに記憶装置２００に登録するフェイズであり、暗号文照合フェイズは、データ秘匿装置３００に入力された入力データを暗号化し、その際に生成された暗号データ、及び補助データと近い（ハミング距離の小さい）平文となる記憶装置２００内の暗号データに対応する識別子を出力するフェイズである。データ登録フェイズは実施形態１の動作と同じであるため、説明は省略する。
【００９１】
暗号文照合フェイズにおいては、はじめに入力データがデータ秘匿装置３００の暗号化部に入力される（図４のステップＣ１）。
【００９２】
次に、データ秘匿装置３００の鍵生成部３０２が、入力データの秘匿に用いる鍵を生成し、データ秘匿装置３００の暗号化部３０１及び補助データ生成部３０３に出力する（図４のステップＣ２）。
【００９３】
次に、データ秘匿装置３００の暗号化部３０１は、ステップＣ１で入力された入力データと、ステップＣ２で入力された鍵とから、入力データを暗号化した暗号データを計算し、データ照合装置５００の暗号文減算部５０２に入力する（図４のステップＣ３）。
【００９４】
次に、データ照合装置５００の全データ要求部５０１から、記憶装置２００の識別子管理部２０１に識別子が入力される。入力された識別子に対応する暗号データが、記憶装置２００の暗号文記憶部２０２から、データ照合装置５００の暗号文減算部５０２に入力される。また、入力された識別子に対応する補助データが、記憶装置２００の補助データ記憶部２０３から、一致判定部５０３に入力される（図４のステップＣ４）。
【００９５】
記憶装置２００の暗号文記憶部２０２と、データ秘匿装置３００の暗号化部３０１とから暗号文を入力されたデータ照合装置５００の暗号文減算部５０２は、入力された二つの暗号データの差を、データ照合装置５００の一致判定部５０３に出力する（図４のステップＣ５）。
【００９６】
次に、データ照合装置５００の制御部５０４によって制御された、記憶装置２００の補助データ記憶部２０３と、データ秘匿装置３００の補助データ生成部３０３とが、協調して通信を行うことにより、記憶装置２００の補助データ記憶部２０３と、データ秘匿装置３００の補助データ生成部３０３とから、それぞれ補助データが、データ照合装置５００の一致判定部５０３に入力される。データ照合装置５００の暗号文減算部５０２から二つの暗号データの差を入力し、記憶装置２００の補助データ記憶部２０３から変換後補助データと、データ秘匿装置３００の補助データ生成部３０３から補助データと、を入力したデータ照合装置５００の一致判定部５０３は、まず、前記二つの暗号データの差と、該補助データとから、途中データを生成し、データ照合装置５００の一方向性変換部５０６に出力する（図４のステップＣ６）。
【００９７】
データ照合装置５００の一方向性変換部５０６は、データ照合装置５００の一致判定部５０３から出力された途中データを受けると、該途中データを一方向性変換した変換後途中データを生成し、データ照合装置５００の一致判定部５０３に出力する（図４のステップＣ７）。
【００９８】
データ照合装置５００の一致判定部５０３は、データ照合装置５００の一方向性変換部５０６から出力された前記変換後途中データと、データ秘匿装置３００の補助データ生成部３０３からの前記補助データから、ステップＣ１でデータ照合装置５００の暗号文減算部５０２に入力された暗号データの平文と、ステップＣ４でデータ照合装置５００の暗号文減算部５０２に入力された暗号データの平文とのハミング距離が予め定められた所定値以下となるか否かを判定する（図４のステップＣ８）。
【００９９】
ステップＣ８の結果が照合と判断された場合は、データ照合装置５００の識別子出力部５０５は、ステップＣ４で記憶装置２００の識別子管理部２０１に入力された識別子を出力する（図４のステップＣ９）。
【０１００】
ステップＣ４からステップＣ９の処理は、記憶装置２００の識別子管理部２０１で管理される、記憶装置２００に格納された、全ての識別子（暗号データ、補助データ）に関して繰り返される。
【０１０１】
なお、図３の各装置１００、２００、３００、５００を一つのコンピュータシステム上に実装してもよいし、あるいは各装置を単体として構成してもよい。あるいは、各装置１００、２００、３００、４００内の各部をそれぞれ一つの単体装置で構成してもよい。図１の各装置の各部の処理を、コンピュータで実行されるプログラムによって実現するようにしてもよい。本発明によれば、該プログラムを記録した記録媒体（半導体メモリ、磁気／光ディスク）が提供される。以下、より具体的な実施例に即して説明する。
【０１０２】
＜実施例１＞
次に、本発明の実施例１について図１を参照して詳細に説明する。実施例１は、前記実施形態１の一具体例である。
【０１０３】
データ登録フェイズでは、まず入力データとして、Nビットのバイナリ列Zが登録データ生成装置１００の暗号化部１０１に入力される。
【０１０４】
次に、登録データ生成装置１００の鍵生成部１０２が、鍵（Kビットの乱数）Sを生成し、暗号化部１０１及び登録補助データ生成部１０３に出力する。
【０１０５】
次に、暗号化部１０１は、入力されたKビットの鍵Sを二元BCH符号で符号化したNビットの符号語Cと、Nビットの入力データＺとの排他的論理和をとったNビットの暗号データＷ１を計算し（次式(1)）、記憶装置２００の暗号文記憶部２０２に格納する。
【０１０６】
W1 = C (+) Z            ・・・(1)
【０１０７】
ただし、(+)はビット毎の排他的論理和（bitwise exclusive OR）を表す。ここで用いる二元BCH符号は、Kビットデータを入力しNビットデータ（N>K）を出力する符号であり、任意の相異なる符号語は、少なくともｄ以上のハミング距離を有することが保証されるものとする。
【０１０８】
次に、入力データZと、鍵Sと、暗号データW1とを、登録補助データ生成部１０３に入力し、登録補助データ生成部１０３は、例えば一方向性変換部１０４により、次式(2)に従って補助データW2を計算する。
【０１０９】
W2 = h((c, S) (+) h(W1, R))          ・・・(2)
【０１１０】
但し、上式(2)において、
cは、Kビットの定数である。
Ｒは、Nビットの乱数（繰り返し利用される可能性の低いデータ）である。
(c, S)は内積を表す。すなわち、(A, B)は、二つのK = (m*k)ビットデータA及びBをｋビットごとに分割したベクトルとみなした時の、AとBの内積を表す（演算はガロア拡大体GF(2k)上で行うものとする）。
(+)はビット毎の排他的論理和を表す。
ｈは、出力がｋビットとなる暗号学的ハッシュ関数（一方向性ハッシュ関数：例えばSHA-256等）とする。
【０１１１】
ここで、H(x, y, z)を次式(3)で表される関数として定義する。
【０１１２】
H(x, y, z) = (c, x) (+) h(y, z)              ・・・(3)
【０１１３】
H(x, y, z)は次式(4)を満足する。
【０１１４】
H(a1, b1, c1) (+) H(a2, b2, c2) = H(a1 (+) a2, b1, c1) (+) h(b2, c2)       ・・・(4)
【０１１５】
また、ビット(K-k)の乱数ｒに対して、
h(W1, N) ‖ r             ・・・(5)
をBCH符号で誤り訂正符号化した符号語データをC3とし（但し、‖は、ビットの連結（concatenation）を表す演算記号である）、C3とZから、登録補助データ生成部１０３は、補助データW3を次式(6)に従って計算する。
【０１１６】
W3 = C3 (+) Z            ・・・(6)
【０１１７】
登録補助データ生成部１０３は、上式(2)、(6)で求めた（W2, W3）の組を、補助データとして、補助データ記憶部２０３に登録する。
【０１１８】
以上の処理で、記憶装置２００に入力されたデータには、識別子管理部２０１で一意な識別子が割り振られ、後に、割り振られた識別子での呼び出しが可能となる。
【０１１９】
以降、識別子ｉと関連付けられた暗号データW1と、補助データW2とW3をそれぞれW1[i]、W2[i]、W3[i]と表す。
【０１２０】
暗号文照合フェイズにおいては、はじめに指定データ照合装置４００の識別子保持部４０１に識別子ｉが入力される。入力された識別子ｉに対応する暗号データW1[i]が、記憶装置２００の暗号文記憶部２０２から読み出され、暗号文減算部４０２に入力される。また、入力された識別子ｉに対応する補助データW2[i]、W3[i]が、記憶装置２００の補助データ記憶部２０３から読み出され、指定データ照合装置４００の一致判定部４０３に入力される。
【０１２１】
次に、Ｎビットのバイナリ列入力データZ'（照合するデータ）がデータ秘匿装置３００の暗号化部３０１に入力される。
【０１２２】
次に、データ秘匿装置３００の鍵生成部３０２は、入力データZ'の秘匿に用いる鍵（Ｋビットの乱数）S'を生成し、データ秘匿装置３００の暗号化部３０１及び補助データ生成部３０３に出力する。
【０１２３】
データ秘匿装置３００の暗号化部３０１は、鍵生成部３０２から入力された鍵S'を二元ＢＣＨ符号で誤り訂正符号化した符号語C'と、入力データZ'との排他的論理和をとった暗号データW1'を計算する（次式(7)）。データ秘匿装置３００の暗号化部３０１は、暗号データW1'を指定データ照合装置４００の暗号文減算部４０２に入力する。
【０１２４】
W1' = C' (+) Z'        ・・・(7)
【０１２５】
指定データ照合装置４００の暗号文減算部４０２は、データ秘匿装置３００の暗号化部３０１からの暗号データW1'と、記憶装置２００の暗号文記憶部２０２からの識別子ｉに対応する暗号データW1[i]とを入力し、入力した二つの暗号データW1'とW1[i]の差（排他的論理和）（次式(8)）を計算する。指定データ照合装置４００の暗号文減算部４０２は、計算した二つの暗号データの差を一致判定部４０３に出力する。
【０１２６】
W1' (+) W1[i]          ・・・(8)
【０１２７】
次に、指定データ照合装置４００の制御部４０４が乱数nsと、予め定められた群Ｇの要素（生成元）gに対して
g_s = g**ns            ・・・(9)
を計算する。式(9)において、g**nsは、群Ｇ上でのgのns乗を表すものとする（**は冪乗演算子）。なお、群とは、
１．結合則 （∀a, b, c∈Gに対して(a・b)・c=a・(b・c)、
２．単位元の存在 （∃e∈G，∀a∈Gに対してa・e=e・a=a），
３．逆元の存在 （∀a∈Gに対して∃b∈G、a・b=b・a=e）
の規則を満たす２項演算・を持った集合をいう。ここで、群Gは乗法に関して巡回群となり、ｐを素数として、位数ｐの乗法群Zp（=Z/pZ）からなり、g**nsの値は素数ｐを法（modulo）とする剰余（mod p）で与えられる。
【０１２８】
指定データ照合装置４００の制御部４０４は、W3[i]とg_sを、データ秘匿装置３００の補助データ生成部３０３に出力する。
【０１２９】
次に、データ秘匿装置３００の補助データ生成部３０３は、W3[i]と入力データZ'の排他的論理和をとった値（次式(10)）に、二元BCH符号の復号処理を適用し、復号結果であるh'を得る。
【０１３０】
W3[i] (+) Z'        ・・・ (10)
【０１３１】
データ秘匿装置３００の補助データ生成部３０３は、鍵S'、暗号データW1'、h'、g、g_s、乱数ncから、次式(11a)、(11b)に基づいて、W2'とg_cをそれぞれ計算し、指定データ照合装置４００の一致判定部４０３に出力する。
【０１３２】
W2' = H(S', W1', g_s**nc) (+) h'      ・・・(11a)
【０１３３】
g_c = g**nc                          ・・・(11b)
【０１３４】
次に、指定データ照合装置４００の一致判定部４０３は、入力した二つの暗号データW1'とW1[i]の差（次式(12)）に、二元BCH符号の復号処理を適用し、二つの暗号データW1'とW1[i]の差の復号結果であるＴを計算する。
【０１３５】
W1' (+) W1[i]        ・・・(12)
【０１３６】
そして、指定データ照合装置４００の一方向性変換部４０５は、二つの暗号データW1'とW1[i]の差の復号結果ＴとW1'とg_c**nsを用いて計算したH(T, W1', g_c**ns)と、式(11a)で求めたW2'との排他的論理和演算結果
H(T, W1', g_c**ns) (+) W2'
のハッシュ値を計算する（次式(13)）。
【０１３７】
h(H(T, W1', g_c**ns) (+) W2')    ・・・(13)
【０１３８】
次に、指定データ照合装置４００の一致判定部４０３が、式(13)で計算したハッシュ値と、補助データW2[i]とが等しいか否か、すなわち、次の等式(14)が成り立つか否かをチェックする。
【０１３９】
W2[i] = h(H(T, W1', g_c**ns) (+) W2')      ・・・(14)
【０１４０】
指定データ照合装置４００の一致判定部４０３は、等式(14)が成立する場合には、W1[i]の元のデータ（平文）と、入力データ（平文）Z'のハミング距離がｄ以下であると判定する。一方、等式（14)が成立しない場合には、指定データ照合装置４００の一致判定部４０３は、W1[i]の元のデータ（平文）と入力データ（平文）Z'のハミング距離がｄを超えると判定し、判定結果を出力する。なお、上記BCH符号化は、任意の相異なる符号語のハミング距離が少なくともｄを超える値とされている。
【０１４１】
データ秘匿装置３００の補助データ生成部３０３で生成する補助データW2' = H(S', W1', g_s**nc) (+) h'におけるg_s**nc（=(g**ns)**nc）(=R')と、指定データ照合装置４００の一致判定部４０３でのg_c**ns（=(g**nc)**ns）を、例えば公知のDiffie-Hellman鍵共有法によって、指定データ照合装置４００の一致判定部４０３と、データ秘匿装置３００の補助データ生成部３０３との双方で生成されるようにしてもよい。  
【０１４２】
＜実施例２＞
次に、実施例２について図３を参照して詳細に説明する。実施例２は、前記実施形態２の一具体例である。
【０１４３】
データ登録フェイズでは、まず入力データとして、Nビットのバイナリ列Zが登録データ生成装置１００の暗号化部１０１に入力される。
【０１４４】
次に、登録データ生成装置１００の鍵生成部１０２が、Kビットの乱数Sを生成し、暗号化部１０１及び登録補助データ生成部１０３に出力する。
【０１４５】
次に、暗号化部１０１は、入力された鍵Ｓを二元BCH符号で符号化した符号語Cと、入力データZとの排他的論理和を取った暗号データＷ１を計算し、暗号文記憶部２０２に格納する。ここで用いる二元BCH符号は、Kビットデータを入力し、Nビットデータを出力する符号であり、任意の相異なる符号語は、少なくともｄ以上のハミング距離を有することが保証されるものとする。
【０１４６】
次に、入力データZと、鍵Sと、暗号データW1とを、登録データ生成装置１００の登録補助データ生成部１０３に入力する。登録補助データ生成部１０３は、一方向性変換部１０４により、次式(15)に従って、補助データW2を計算する。
【０１４７】
W2 = h((c, S) (+) h(W1, R))        ・・・(15)
【０１４８】
但し、上式(15)において、
ｃは、Kビットの定数である。
Rは、乱数（繰り返し利用される可能性の低いデータ）である。
（A，B）は、二つのK＝(m*k)ビットデータA及びBをｋビットごとに分割したベクトルとみなした時の、AとBの内積を表す（演算はガロア拡大体ＧＦ（２ｋ）上で行うものとする。
(+)はビット毎の排他的論理和を表す。
ｈは、出力がｋビットとなる暗号学的ハッシュ関数（例えばSHA-256等）とする。
【０１４９】
また、H(x, y, z) を式(16)で表される関数として定義する（上式(3)と同一）。
H(x, y, z) = (c, x) (+) h(y, z)              ・・・(16)
【０１５０】
K-kビットの乱数ｒに対し
h(W1, N) ‖r                  ・・・(17)
をBCH符号で符号化した符号語データをC3とし（但し、‖は、ビットの連結を表す記号である）、C3とZから、登録データ生成装置１００の登録補助データ生成部１０３は、補助データW3を、次式(18)を用いて計算する。
【０１５１】
W3 = C3 (+) Z                 ・・・(18)
【０１５２】
登録補助データ生成部１０３は、以上によって生成した(W2、W3)の組を補助データとして、補助データ記憶部２０３に登録する。
【０１５３】
以上の処理で、記憶装置２００に入力されたデータには識別子管理部２０１で一意な識別子が割り振られ、後に振り振られた識別子での呼び出しが可能となる。以降、識別子ｉと関連付けられたW1、W2、W3をそれぞれW1[i]、W2[i]、W3[i]と表す。
【０１５４】
暗号文照合フェイズにおいては、はじめに入力データZ'（照合するデータ）がデータ秘匿装置３００の暗号化部３０１に入力される。
【０１５５】
次に、データ秘匿装置３００の鍵生成部３０２が、入力データZ'の秘匿に用いる鍵Ｓ'（Kビットの乱数）を生成し、データ秘匿装置３００の暗号化部３０１及び補助データ生成部３０３に出力する。
【０１５６】
データ秘匿装置３００の暗号化部３０１は、入力された鍵S'を二元BCH符号で符号化した符号語C'と、入力データＺ'との排他的論理和をとった暗号データW1'を計算する（次式(19)）。
【０１５７】
W1' = C' (+) Z'                ・・・(19)
【０１５８】
データ秘匿装置３００の暗号化部３０１は、計算した暗号データW1'をデータ照合装置５００の暗号文減算部５０２に入力する。
【０１５９】
次に、データ照合装置５００の全データ要求部５０１から、記憶装置２００の識別子管理部２０１に識別子ｉが入力される。入力された識別子ｉに対応する暗号データW1[i]が記憶装置２００の暗号文記憶部２０２から読み出され、データ照合装置５００の暗号文減算部５０２に入力される。また、識別子ｉに対応する補助データW2[i]、W3[i]が記憶装置２００の補助データ記憶部２０３から読み出され、データ照合装置５００の一致判定部５０３に入力される。
【０１６０】
記憶装置２００の暗号文記憶部２０２からの暗号データW1[i]と、データ秘匿装置３００の暗号化部３０１からの暗号データW1'とを入力したデータ照合装置５００の暗号文減算部５０２は、入力した二つの暗号データW1'とW1[i]の差（次式(20)）を、データ照合装置５００の一致判定部５０３に出力する。
【０１６１】
W1' (+) W1[i]                  ・・・(20)
【０１６２】
次に、データ照合装置５００の制御部５０４が、乱数ｎｓと予め定められた群Ｇの要素ｇに対して
g_s = g**ns                    ・・・(21)
を計算し、データ秘匿装置３００の補助データ生成部３０３に出力する。
【０１６３】
次に、データ秘匿装置３００の補助データ生成部３０３は、
S'=S1' (+) S2'                ・・・(22)
を満たすS1'とS2'をランダムに選ぶ。
【０１６４】
データ秘匿装置３００の補助データ生成部３０３は、次式(23a)、(23b)に基づいて、W2'とg_cを計算する。
【０１６５】
W2' = H(S1', W1', g_s**nc)                 ・・・(23a)
【０１６６】
g_c = g**nc                                ・・・(23b)
【０１６７】
次に、データ秘匿装置３００の補助データ生成部３０３は、内積(c, S2')と乱数r'をビット連結したデータである
(c, S2') ‖ r'             ・・・(24)
を二元ＢＣＨ誤訂正符号化したC3とZ'から、補助データW3'を、
W3' = C3 (+) Z'          ・・・(25)
により計算し、W1'、W2'、W3'、g_cを、データ照合装置５００の一致判定部５０３に出力する。
【０１６８】
次に、データ照合装置５００の一致判定部５０３は、入力された暗号データの差
W1' (+) W1[i]                ・・・(26)
に二元BCH符号の復号処理を適用し、二つの暗号データW1とW1[i]の差の復号結果であるＴを計算する。
【０１６９】
さらに、データ照合装置５００の一致判定部５０３は、補助データW3[i]とW3'(式(25))の排他的論理和
W3[i] (+) W3'              ・・・(27)
に二元BCH符号の復号処理を適用し、補助データ'W3[i] (+) W3'の復号結果であるw3を計算する。
【０１７０】
データ照合装置５００の一致判定部５０３は、二つの暗号データの差の復号結果Ｔと、W1'、及び、g_c**nsとを用いて計算したH(T, W1', g_c**ns)と、W2'とw3を、一方向性変換部５０６に出力する。
【０１７１】
データ照合装置５００の一方向性変換部５０６は、二つの暗号データの差の復号結果ＴとW1'、g_c**nsとを用いて計算したH(T, W1', g_c**ns)と、W2'とw3のビット毎の排他的論理和演算結果
H(T, W1', g_c**ns) (+) W2' (+) w3
のハッシュ値（次式(28)）を計算する。
【０１７２】
h(H(T, W1', g_c**ns) (+) W2' (+) w3)・・・(28)
【０１７３】
データ照合装置５００の一致判定部５０３は、式(28)の計算結果が、W2[i]と等しいか否か、すなわち、等式(29)が成立するか否かをチェックする。
【０１７４】
W2[i] = h(H(T, W1', g_c**ns) (+) W2' (+) w3)            ・・・(29)
【０１７５】
等式(29)が成立する場合に、データ照合装置５００の識別子出力部５０５は、W1[i]の元のデータとＺ'のハミング距離がｄ以下であると判定し、識別子ｉを出力する。等式(29)が成立しない場合、ハミング距離はｄを超えるもの判定し、識別子ｉは出力しない。
【０１７６】
以上の操作を、記憶装置が管理している全ての識別子ｉに対して実行し、入力データZ'とのハミング距離がｄ以下となるような元データを有する全ての識別子を出力する。
【０１７７】
実施例２においても、実施例１と同様、  データ秘匿装置３００の補助データ生成部３０３で生成する補助データW2' = H(S', W1', g_s**nc) （式(23a)）におけるg_s**nc（=(g**ns)**nc）(=R')と、データ照合装置５００の一致判定部５０３でのg_c**ns（=(g**nc)**ns）を、例えば公知のDiffie-Hellman鍵共有法によって、データ照合装置５００の一致判定部５０３と、データ秘匿装置３００の補助データ生成部３０３との双方で生成されるようにしてもよい。  
【０１７８】
実施例１、２の適用例として、生体情報を保護した認証が挙げられる。以下その概略を説明する。
【０１７９】
データ登録フェイズにおける入力データと、暗号文照合フェイズにおける入力データを、指紋や静脈等から取得した生体情報としてもよい。この場合、生体情報を秘匿（暗号化）したまま、記憶装置に格納された暗号化された生体データと、データ秘匿装置から送出された暗号化された生体データとが同一人物から採取したものであるか否かを、二つの入力データのハミング距離が予め定められた所定値以下となるか否かにより判定することが可能となり、認証を行うことが可能となる。生体情報は、常に安定して同一のデータが取得できるわけではない。しなしながら、同じ人物から取得されるデータが類似している（ハミング距離が小さいデータが取得できる）と仮定できる。このため、本発明は、例えば生体認証に適用して好適とされる（ただし、適用対象は生体認証に制限されない）。
【０１８０】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１８１】
１０  暗号文照合システム（装置）
１１、１２  暗号化手段（ユニット）
１３  記憶装置
１４  補助データ生成手段（ユニット）
１４ｈ、１５ｈ  一方向性変換手段（ユニット）
１５  照合判定手段（ユニット）
１００、１００’  登録データ生成装置
１０１  暗号化部
１０２  鍵生成部
１０３  登録補助データ生成部
１０４  一方向性変換部
２００  記憶装置
２０１  識別子管理部
２０２  暗号文記憶部
２０３  補助データ記憶部
３００、３００’  データ秘匿装置
３０１  暗号化部
３０２  鍵生成部
３０３  補助データ生成部
４００  指定データ照合装置
４０１  識別子保持部
４０２  暗号文減算部
４０３  一致判定部
４０４  制御部
４０５  一方向性変換部
５００  データ照合装置
５０１  全データ要求部
５０２  暗号文減算部
５０３  一致判定部
５０４  制御部
５０５  識別子出力部
５０６  一方向性変換部
【図１】
2014175334.tif 000003
【図２】
2014175334.tif 000004
【図３】
2014175334.tif 000005
【図４】
2014175334.tif 000006
【図５】
2014175334.tif 000007
【図６】
2014175334.tif 000008
【国際調査報告】
2014175334.tif 000009
2014175334.tif 000010
2014175334.tif 000011
2014175334.tif 000012