(57)【要約】  ビット列と２元線形符号の符号語の排他的論理和をテンプレートの一部として利用するにあたり、異なるシステムに登録されている同一ビット列に関するデータの対応をとることを困難とし、情報漏洩の回避と、安全性の確保を可能とする。入力した第１のビット列に対して位置置換を行う第１のビット列位置置換手段と、前記第１のビット列位置置換手段で前記第１のビット列を位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換したビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成しテンプレートとして記憶装置に記憶するテンプレート生成手段と、入力した第２のビット列に対して前記第１のビット列位置置換手段と同一の位置置換を行う第２のビット列位置置換手段と、第２のビット列位置置換手段で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置にテンプレートとして記憶されている前記排他的論理和演算結果と前記補助データに基づき、前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた前記第１のビット列を位置置換した結果のビット列との間のハミング距離が所定値以下であるか検証するビット列照合手段を備える。
2014092183.tif 000002
【特許請求の範囲】
【請求項１】
入力された第１のビット列に対して位置置換を行う第１のビット列位置置換手段と、
前記第１のビット列位置置換手段で前記第１のビット列を位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換した結果のビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして記憶装置に記憶するテンプレート生成手段と、
入力された第２のビット列に対して前記第１のビット列位置置換手段と同一の位置置換を行う第２のビット列位置置換手段と、
前記第２のビット列位置置換手段で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置に前記テンプレートとして記憶されている、前記排他的論理和演算結果と、前記補助データと、に基づき、前記第２のビット列位置置換手段で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた、前記第１のビット列位置置換手段で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合手段と、
を備えたことを特徴とするビット列照合システム。
【請求項２】
前記第１及び第２のビット列位置置換手段が、ビット反転を含む位置置換を用いる、ことを特徴とする請求項１記載のビット列照合システム。
【請求項３】
前記第１及び第２のビット列位置置換手段は、入力されたビット列毎に、異なる位置置換を用いる、ことを特徴とする請求項１記載のビット列照合システム。
【請求項４】
前記第１及び第２のビット列位置置換手段が、入力されたビット列毎に、異なるビット反転の位置反転を用いる、ことを特徴とする請求項２記載のビット列照合システム。  
【請求項５】
前記第１のビット列位置置換手段と、前記テンプレート生成手段とを備えたビット列登録装置と、
前記第２のビット列位置置換手段と、前記第２のビット列位置置換手段で位置置換後のビット列を受け取り前記ビット列照合手段とデータを授受して照会するビット列照会手段と、を備えたビット列照会装置と、
前記ビット列照会手段から、前記第２のビット列位置置換手段で位置置換後のビット列を受け、前記テンプレートを参照して照合を行う前記ビット列照合手段を備えたビット列照合装置を備えた、ことを特徴とする請求項１乃至４のいずれか１項記載のビット列照合システム。
【請求項６】
記憶装置を備えたデータ処理装置によるビット列照合方法であって、
入力された第１のビット列に対して位置置換を行う第１のビット列位置置換工程と、
前記第１のビット列を前記第１のビット列位置置換工程で位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換した結果のビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして前記記憶装置に記憶するテンプレート生成工程と、
入力された第２のビット列に対して前記第１のビット列位置置換工程と同一の位置置換を行う第２のビット列位置置換工程と、
前記第２のビット列位置置換工程で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置にテンプレートとして記憶されている、前記排他的論理和演算結果と前記補助データと、を入力とし、前記第２のビット列位置置換工程で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた、前記第１のビット列位置置換工程で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合工程と、
を含む、ことを特徴とするビット列照合方法。
【請求項７】
前記第１及び第２のビット列位置置換工程が、ビット反転を含む位置置換を用いる、ことを特徴とする請求項６記載のビット列照合方法。
【請求項８】
前記第１及び第２のビット列位置置換工程が、
システム毎に、異なるビット列の位置置換を用いる、
システム毎に、異なるビット反転を含む位置置換を用いる、
入力されたビット列毎に、異なる位置置換を用いる、
入力されたビット列毎に、異なるビット反転を含む位置反転を用いる、
のうちのいずれかを行う、ことを特徴とする請求項６又は７記載のビット列照合方法。  
【請求項９】
コンピュータに実行させるビット列照合プログラムであって、
入力された第１のビット列に対して位置置換を行う第１のビット列位置置換処理と、
前記第１のビット列を前記第１のビット列位置置換処理で位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換した結果のビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして記憶装置に記憶するテンプレート生成処理と、
入力された第２のビット列に対して前記第１のビット列位置置換処理と同一の位置置換を行う第２のビット列位置置換処理と、
前記第２のビット列位置置換処理で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置にテンプレートとして記憶されている、前記排他的論理和演算結果と前記補助データと、を入力とし、前記第２のビット列位置置換処理で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた、前記第１のビット列位置置換処理で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合処理と、
を含む、ことを特徴とするプログラム。
【請求項１０】
前記第１及び第２のビット列位置置換処理が、ビット反転を含む位置置換を用いる、ことを特徴とする請求項９記載のプログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−２７３４５０号（２０１２年１２月１４日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明はビット列照合システムと方法とプログラムに関する。
【背景技術】
【０００２】
ネットワークに接続された計算資源に置かれた利用者のデータに基づくサービスがある。このようなサービスにおいて、利用者の機微なデータを扱う機会がある。これに際し、サービス提供者が利用者に関連するデータが安全に管理されていることを保障することは重要である。一方、パスワードや物による認証は、忘却や紛失によって、本人でも認証できなくなる可能性がある。このような事態の発生を回避する方法として、指紋、静脈などの個人の生体的特徴（生体情報と呼ばれる）に基づく生態認証技術と呼ばれる技術がある。パスワードや物と異なり、生体情報は生涯不変であることから、漏洩した場合の被害は甚大である。【０００３】
生体認証では、生体情報に基づいて生成されるテンプレートと呼ばれる情報をデータベース等に保管し、テンプレートを用いて認証を行う。前述したとおり、生体情報には高い機密性が要求されるため、テンプレートからも可能な限り生体情報に関する情報が漏れない認証方法が好ましく、様々な方式が提案されている。【０００４】
例えば、非特許文献１には、生体情報をランダムなBCH（bose-chaudhuri-hocquuenghem）符号語（code word）でマスクした情報をテンプレートとする方式が開示されている。非特許文献１では、生体情報Ｚと秘匿情報Ｓを用いて、生体認証用のテンプレートを生成している。図７は、非特許文献１のFigure.2に基づく図である。非特許文献１のFigure.2における特徴量の抽出（Feature Extraction）、統計処理（Statistical Analysis）、量子化（Quantization）等は省略されている。非特許文献１に記載の方式はテンプレートの登録（Enrollment）と検証（Verification）を有する。生体情報Ｚに関するテンプレートの登録（Enrollment）は以下のように行われる。【０００５】
(1)  秘匿情報Sをエンコーダ（ENC）に入力して誤り訂正符号化し（Error Correcting Coding :ECC）、符号語Cを生成する。ECCにはパラメータ(K、s、d)の２元BCH符号を用いる。Kは符号語（code word）の長さ、ｓは情報シンボル（information symbol）の数、ｄは誤り訂正可能な誤りの数である。【０００６】
(2)  CとZとの排他的論理和W＝C (+) Zを計算する（ただし、(+)はビット毎の排他的論理和演算（bitwise XOR）を表す）。【０００７】
(3)  HをSHA(Secure Hash Algorithm)-1等の暗号学的ハッシュ関数（cryptographic hash function）としてハッシュ値H(S)を計算する。【０００８】
(4)  W及びH(S)をテンプレートとしてデータベース（DB）に格納する。【０００９】
以上の処理は、登録装置（不図示）によって実行され、作成されたテンプレートは記憶装置(DB)に記憶されるものとする。【００１０】
上記（1）から（4）によって生成されたテンプレート（WとH(S)の二つ組）と、別な生体情報Z'が同じ人物から採取したものであるか否かの検証（Verification）は、以下のように行われる。検証は、Z'を記憶する証明装置（不図示）と、テンプレート（WとH(S)の二つ組）を有する検証装置（不図示）の２装置間で実行されるものとする。検証処理は、以下の(1)から(5)の手順で行われる。【００１１】
(1)  証明装置は、Z'を検証装置に入力する。【００１２】
(2)  検証装置は、Z'とWとの排他的論理和C' = W (+) Z'を計算する。ここで、W (+) Z'は、（C (+) Z ） (+) Z' = C (+) (Z (+) Z')= C (+) Z (+) Z' に等しいことに注意する。  【００１３】
(3)  検証装置は、C'をデコーダ（DEC）に入力して２元BCH符号の誤り訂正復号処理を行いS'を計算する。【００１４】
(4)  検証装置は、H(S'）を計算する。【００１５】
(5)  検証装置は、H(S'）をDBから読み出したH(S)と比較し、H(S) = H(S'）が成立している場合、テンプレートの生成に使用された生体情報とZ'のハミング距離が近かったものと判断する。【００１６】
上記手順によって、テンプレートが生成される際に用いられた生体情報Zと、検証に用いられた生体情報Z'のハミング距離が一定数以下であることが検証可能であることの理由を以下に説明する。【００１７】
検証処理の(2)おいて、
C (+) Z (+) Z'
が計算される。これは、誤り訂正符号語Cに対して、誤りZ (+) Z'が加算された（排他的論理和演算で加えられた）データとみなすことができる。つまり、ZとZ'のハミング距離の個数分の誤りがCに付与されたデータである。Cはｄ個以下の誤りであれば復号できる。【００１８】
したがって、ZとZ'のハミング距離がｄ以下である場合、C (+) Z (+) Z'に対して、誤り訂正処理を実行すると、その出力であるS'は、Cの生成元である秘匿情報Sとなる。この場合、H(S'） = H(S)となることは明らかである。【００１９】
一方、ZとZ'のハミング距離がｄよりも大きい場合に、C (+) Z (+) Z'に対して、誤り訂正処理を実行しても、その出力S'として、Sを得ることはできない。この場合、
H(S'） = H(S)
は成立しない。【００２０】
したがって、上記した処理によって、生体情報間のハミング距離が近いことを判定できる。【００２１】
また、上記手法は、生体情報Zの取得方法には依存しない。このため、生体情報に限らず、ビット列情報のハミング距離の近さを判定するために用いることができる。つまり、前述した登録装置にてビット列を記憶装置に登録し、証明装置にてビット列を照会し、検証装置にてビット列を照合する。【００２２】
テンプレートを用いた認証技術として、例えば特許文献１には、登録時にクライアントが取得した生体情報から登録用特徴量配列を作成し、これを変換した位置補正用テンプレートおよび照合テンプレートをサーバに登録し、認証時には、クライアントが取得した生体情報から認証用特徴量配列を作成し、これを変換した位置補正用変換特徴量をサーバに送信する。サーバは位置補正テンプレートと位置補正用変換特徴量を用いて、登録用特徴量配列に対する認証用特徴量配列の位置補正量を検出してクライアントに送信し、クライアントは位置補正量を用いて認証用特徴量配列を補正し、更に変換した照合用変換特徴量配列をサーバに送信し、サーバでは、照合テンプレートと、照合用変換特徴量配列との距離を計算し、認証成否を判定する構成が開示されている。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開２０１０−１０８３６５号公報
【非特許文献】
【００２４】
【非特許文献１】Pim Tuyls, Anton H. M. Akkermans, Tom A. M. Kevenaar, Geert-Jan Schrijen, Asker M. Bazen and Raymond N. J. Veldhuis, "Practical Biometric Authentication with Template Protection", Proceedings of AVBPA 2005, Lecture Notes in Computer Science, Vol. 3546, Springer Verlag, pp. 436-446, (2005)
【発明の開示】
【発明が解決しようとする課題】
【００２５】
以下に関連技術の分析を与える。  【００２６】
上記した関連技術は、以下のような枠組みを持つ。ビット列Zに対するテンプレートとして、２元BCH符号の符号語をCとすると、C (+) Z (=W)をテンプレートの一部として持つ。暗号文と補助データをあわせてテンプレートとする。【００２７】
用いる２元BCH符号が訂正可能な誤りの個数をｄとすると、これらのうち暗号文を利用して、異なる２つのテンプレートを生成する際に用いたビット列のハミング距離がｄ以下であるかどうかを判定することができる。【００２８】
ここで、ビット列Z1とビット列Z2について作成される暗号文を考える。これらに対する暗号文が独立した2元BCH符号の符合語C1とC2によって、C1 (+) Z1と、C2 (+) Z2が生成される。【００２９】
２元BCH符号は線形符号であるため、C1 (+) C2も符合語である。【００３０】
Z1 (+) Z2は、ビット列間のハミング距離に等しい数の1を持つビット列である。【００３１】
したがって、C1 (+) C2(+) Z1 (+) Z2は、Z1 (+) Z2のハミング距離がｄ以下の場合、2元BCH符号の復号処理によって復号することができる。【００３２】
Z1 (+) Z2のハミング距離がｄより大きい場合、C1 (+) C2 (+) Z1 (+) Z2は復号されない。【００３３】
したがって、２つの暗号文が得られた場合、それらを生成する際に用いられたビット列間のハミング距離が近いことが判定できる。これは、暗号文からビット列に関する情報を得られたことを意味する。【００３４】
関連技術を生体認証に用いる場合、ビット列には生体情報が用いられる。この場合、前記した暗号文からのビット列の情報漏洩等を回避することが望まれる。例えば、前記した暗号化に用いた情報を活用することで、例えばサイトＡを管理している人物とサイトＢを管理している人物が登録されている情報をつき合わせ、ある人物が両方のサイトに登録していることを特定し、それぞれのサイトにおける行動履歴等をつき合わせることで、より高度な解析が可能となる。すなわち、情報漏洩の可能性がある。【００３５】
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、入力ビット列と２元線形符号の符号語との排他的論理和をテンプレートの一部として利用するにあたり、例えば異なるシステム等に登録されている同一ビット列に関するデータの対応付けを困難とし、情報漏洩の回避と、安全性の確保を可能とするシステム、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００３６】
本発明によれば、入力された第１のビット列に対して位置置換を行う第１のビット列位置置換手段と、
前記第１のビット列位置置換手段で前記第１のビット列を位置置換した結果のビット列と２元線形符号の符号語との排他的論理和を行い、及び、位置置換したビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして記憶装置に記憶するテンプレート生成手段と、
入力された第２のビット列に対して前記第１のビット列位置置換手段と同一の位置置換を行う第２のビット列位置置換手段と、
前記第２のビット列位置置換手段で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置にテンプレートとして記憶されている前記排他的論理和演算結果と前記補助データと、に基づき、前記第２のビット列位置置換手段で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた前記第１のビット列位置置換手段で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合手段と、
を備えたシステム（装置）が提供される。【００３７】
本発明の別の側面によれば、記憶装置を備えたデータ処理装置により、
入力された第１のビット列に対して位置置換を行う第１のビット列位置置換工程と、
前記第１のビット列を前記第１のビット列位置置換工程で位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換したビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして前記記憶装置に記憶するテンプレート生成工程と、
入力された第２のビット列に対して前記第１のビット列位置置換工程と同一の位置置換を行う第２のビット列位置置換工程と、
前記第２のビット列を前記第２のビット列位置置換工程で位置置換したビット列と、前記記憶装置にテンプレートとして記憶されている前記排他的論理和演算結果と前記補助データと、を入力とし、前記第２のビット列位置置換工程で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた、前記第１のビット列位置置換工程で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合工程と、
を含む方法が提供される。【００３８】
本発明の別の側面によれば、コンピュータに実行させるビット列照合プログラムであって、
入力された第１のビット列に対して位置置換を行う第１のビット列位置置換処理と、
前記第１のビット列を前記第１のビット列位置置換処理で位置置換した結果のビット列と２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換したビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして記憶装置に記憶するテンプレート生成処理と、
入力された第２のビット列に対して前記第１のビット列位置置換処理と同一の位置置換を行う第２のビット列位置置換処理と、
前記第２のビット列を前記第２のビット列位置置換処理で位置置換した結果のビット列と、前記記憶装置にテンプレートとして記憶されている、前記排他的論理和演算結果と前記補助データとを入力とし、前記第２のビット列位置置換処理で前記第２のビット列を位置置換した結果のビット列と、前記テンプレートの生成に用いられた、前記第１のビット列位置置換処理で前記第１のビット列を位置置換したビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合処理と、
を含むプログラムが提供される。本発明によれば、当該プログラムを記憶したコンピュータ読み出し可能な、半導体ストレージ又は磁気／光記憶媒体等の記憶媒体が提供される。
【発明の効果】
【００３９】
本発明によれば、入力ビット列と２元線形符号の符号語の排他的論理和をテンプレートの一部として利用するにあたり、例えば異なるシステム等に登録されている同一ビット列に関するデータの対応をとることを困難とし、情報漏洩の回避と、安全性の確保を可能としている。
【図面の簡単な説明】
【００４０】
【図１】関連発明の構成を説明する図である。
【図２】本発明の実施形態１の構成を説明する図である。
【図３】本発明の実施形態１の動作を説明するための流れ図である。
【図４】本発明の実施形態２の構成を説明する図である。
【図５】本発明の実施形態２の動作を説明するための流れ図である。
【図６】（Ａ）、（Ｂ）は位置置換及びビット反転を含む位置置換の原理をそれぞれ説明する図である。
【図７】非特許文献１の処理を説明する図である。
【００４１】
本発明の一形態によれば、入力された第１のビット列に対して位置置換を行う第１のビット列位置置換手段（図２の１０２）と、前記第１のビット列位置置換手段（図２の１０２）で前記第１のビット列を位置置換した結果のビット列と、２元線形符号の符号語との排他的論理和演算を行い、及び、位置置換したビット列間のハミング距離が予め定められた所定値以下であることを検証するための補助データを生成し、前記排他的論理和演算結果、及び前記補助データをテンプレートとして記憶装置（図２の４００）に記憶するテンプレート生成手段（図２の１０１）と、入力された第２のビット列に対して、前記第１のビット列位置置換手段（図２の１０２）と同一の位置置換を行う第２のビット列位置置換手段（図２の２０２）と、前記第２のビット列位置置換手段（図２の２０２）で前記第２のビット列を位置置換した結果のビット列と、前記記憶装置（図２の４００）にテンプレートとして記憶されている前記排他的論理和演算結果と前記補助データと、に基づき、前記第２のビット列位置置換手段（図２の２０２）で前記第２のビット列を位置置換した結果のビット列と、前記テンプレート生成の際に用いられた、前記第１のビット列位置置換手段（図２の１０２）で前記第１のビット列を位置置換した結果のビット列との間のハミング距離が予め定められた所定値以下であることを検証するビット列照合手段（図２の３０１）と、を備えている。【００４２】
本発明の一形態によれば、前記第１及び第２のビット列位置置換手段（図２の１０２、２０２）は、ビット反転を含む位置置換を用いるようにしてもよい。あるいは、前記第１及び第２のビット列位置置換手段（図２の１０２、２０２）は、
システム毎に異なるビット列の位置置換を用いる、
システム毎に異なるビット反転を含む位置置換を用いる、
入力されたビット列毎に、異なる位置置換を用いる、
入力されたビット列毎に、異なるビット反転を含む位置反転を用いる、
のいずれかを行うようにしてもよい。【００４３】
本発明の一形態によれば、ビット列位置置換手段（図２の１０１、２０２）では、例えばシステム、又はビット列毎に異なる第１、第２の位置置換（P1、P2）に対して、第１、第２のビット列（Z1、Z2）の前記第１、第２の位置置換後のビット列（P1(Z1)、P2(Z2)）の排他的論理和（P1(Z1) (+) P2(Z2)）が、前記第１、第２のビット列(Z1、Z2)のハミング距離に対応するように変換を行うようにしてもよい。【００４４】
上記した本発明の前提として関連発明について説明する。本発明は、以下に説明される関連発明に適用して好適とされる。【００４５】
生体情報をNビットのバイナリ列とみなす。関連発明１では、以下のテンプレートの登録（Enrollment）と検証（Verification）を有する。図１は、関連発明１を説明する図である。図１を参照すると、ビット列登録装置１００（登録装置）と、ビット列照会装置２００（照明装置）と、ビット列照合装置３００（検証装置）と、テンプレート記憶装置４００を備える。ビット列登録装置１００は、テンプレート生成手段１０１を備える。ビット列照会装置２００は、ビット列照会手段２０１を備える。ビット列照合装置３００は、ビット列照合手段３０１を備える。テンプレート記憶装置４００は、テンプレートを記憶するテンプレート記憶手段４０１を備える。【００４６】
ビット列登録装置１００は、ビット列を入力として、入力されたビット列をテンプレート生成手段１０１に入力し、テンプレート生成手段１０１の出力をテンプレート記憶装置４００に記憶させる。【００４７】
テンプレート生成手段１０１は、ビット列を入力として、ビット列と2元BCH符号の符号語との排他的論理和演算結果を含むテンプレートを出力する。  【００４８】
ビット列照会装置２００は、ビット列を入力として、入力されたビット列をビット列照会手段２０１に入力し、ビット列照会手段２０１の出力を出力する。ビット列照会手段２０１は、ビット列を入力として、ビット列照合手段３０１とデータを送受信し、照会結果を出力する。  【００４９】
ビット列照合装置３００は、ビット列照合手段３０１を用いて、ビット列照会手段２０１とテンプレート記憶装置４００とデータを送受信し、照合結果を出力する。ビット列照合手段３０１は、ビット列照会手段２０１とやりとりをし、照合結果を出力する。ビット列照会手段２０１と、ビット列照合手段３０１は、ビット列照会手段２０１に入力されたビット列（Z’）と、テンプレートの生成に用いられたビット列（Z）と、2元BCH符号の符号語との排他的論理和演算結果に関して、ビット列間（ZとZ'の間）のハミング距離がｄ以下である場合に、二つのビット列（ZとZ'）が合ったと判定する。【００５０】
Nビットのバイナリ列Z(入力ビット列データ)についてのテンプレートの登録は、ビット列登録装置１００において、以下のように行われる。鍵としてKビットの乱数Sを生成する。Sを2元BCH符号で符号化したNビットの符号語Cを計算する。ここで用いる2元BCH符号は、Kビットのデータを入力としてNビットのデータ（N>K）を出力する符号である。任意の相異なる符号語は少なくともｄ以上のハミング距離を有することが保障されるものとする。【００５１】
次に、符号語Cとビット列Zとの排他的論理和をとったNビットの暗号データW1計算する。
W1 = C (+) Z                ・・・(1)【００５２】
次に、SとW1を入力として、以下の計算式にしたがってW2を計算する。【００５３】
W2 = (c, S) (+) h(W1, n)    ・・・(2)【００５４】
cはKビットの定数であり、 (c, S)は、ｃとSの内積を表す。内積(X, Y)は、２つのK = m＊kビットデータXおよびYをkビットごとに分割し、m個並んだベクトルとみなしたときの、XとYの内積（演算はガロア拡大体GF(2＾k)）で行う。＾はべき乗を表す）である。ｎはkビット（kはセキュリティパラメータ）の乱数である。なお、セキュリティパラメータは、安全性の強度を指定するためのパラメータであり、システムによって予め定められた値である。hは暗号学的ハッシュ関数（例えばSHA-256等）とする。  【００５５】
次に、（K - k）ビットの乱数rを生成する。そして乱数rに対して、  【００５６】
h(W1, n) || r    ・・・(3)
を2元BCH符号化した符号語データをC3とする。（||はビットの連結（concatenation）を表す演算記号である）。C3とビット列Zから、W3を以下の式に従って計算する。  【００５７】
W3 = C3 (＋) Z        ・・・(4)【００５８】
以上の演算で求めた暗号データW1をビット列Zの暗号文とし、W2、W3を補助データとし、W1、W2、W3をテンプレートとする。【００５９】
以上の処理は、図１のビット列登録装置１００によって実行され、作成されたテンプレートはテンプレート記憶装置（図１の４００）に記憶されるものとする。【００６０】
以上の処理によって生成されたテンプレートW1、W2、W3と、Nビットのバイナリ列（入力ビット列）Z'を入力として、テンプレート（暗号データW1と補助データW2、W3）を生成する際に用いられたNビットのバイナリ列（ビット列）Zと、Nビットのバイナリ列（入力ビット列）Z'との間のハミング距離が一定の数d以下であるか否かの検証（Verification）は、例えば以下のようにして行なわれる。  【００６１】
検証処理は、Z'を記憶する証明装置（図１のビット列照会装置２００）と、テンプレートを有する検証装置（図１のビット列照合装置３００）の２装置間で実行されるものとする。検証（Verification）の説明のため、H(x, y, z)を次式(4)で表される関数として定義する。  【００６２】
H(x, y, z) = (c, x) (+) h(y, z)        ・・・(5)【００６３】
H(x, y, z) は次式（6）を満足する。  【００６４】
H(a1, b1, c1) (+) H(a2, b2, c2) = H(a1 (+) a2, b1,c1) (+) h(b2, c2)    ・・・(6)【００６５】
(1)  検証装置（図１のビット列照合装置３００）は、乱数nsを生成する。【００６６】
(2)  検証装置は、予め定められた群（乗法群Zｐ）Ｇの要素（生成元）ｇに対して、
g_s = g＾｛ns｝        ・・・(7)
を計算し、g_sとW3を、証明装置（図１のビット列照会装置２００）に送付する。  【００６７】
(3)  証明装置(図１のビット列照会装置２００)は、  
W3 (+) Z'     ・・・(8)
を計算し、W3 (+) Z'に、2元BCH符号の復号処理を適用し、復号結果であるｈ'得る。  【００６８】
(4)  証明装置(図１のビット列照会装置２００)は、Kビットの乱数S'を生成する。  【００６９】
(5)  証明装置(図１のビット列照会装置２００)は、S'を2元BCH符号で誤り訂正符号化した符号語C'を生成する。【００７０】
(6)  証明装置(図１のビット列照会装置２００)は、C'とZ‘との排他的論理和をとった値W1’を生成する。  【００７１】
W1’ = C' (+) Z'  ・・・(9)【００７２】
(7)  証明装置(図１のビット列照会装置２００)は、乱数ncを生成する。【００７３】
(8)  証明装置(図１のビット列照会装置２００)は、
g_c = g＾{nc}        ・・・(10)
を計算する。【００７４】
(9)  証明装置(図１のビット列照会装置２００)は、
g_sc = g_s＾{nc}      ・・・(11)
を計算する。【００７５】
(10)  証明装置(図１のビット列照会装置２００)は、
W2’ = H(S', W1', g_sc） (+) h’      ・・・(12)
を計算する。【００７６】
(11)  証明装置(図１のビット列照会装置２００)は、W1’とW2’とg_cを検証装置（図１のビット列照合装置３００）に送付する。【００７７】
(12)  検証装置（図１のビット列照合装置３００）は、
W1’ (+) W1    ・・・(13)
を計算する。  【００７８】
(13)  検証装置（図１のビット列照合装置３００）は、
W1’ (+) W1
に2元BCH符号の復号処理を適用し、二つの暗号データW1’とW1の差の復号結果であるTを計算する。  【００７９】
(14)  検証装置（図１のビット列照合装置３００）は、TとW1’とg_c＾nsを用いて以下の値を計算する。【００８０】
H（T, W1', g_c＾ns）    ・・・(14)【００８１】
(15)  検証装置（図１のビット列照合装置３００）は、式(14)の計算結果とW2’との排他的論理和
H（T, W1', g_c＾ns）(+)W2’    ・・・(15)
を計算し、これがW2と等しいか否かをチェックする。すなわち、以下の式(16)が成立するか否かをチェックする。  【００８２】
W2 = H(T, W1', g_c＾ns） (+) W2’    ・・・(16)【００８３】
(16)  検証装置（図１のビット列照合装置３００）は、式(16)が成立している場合には、ZとZ'のハミング距離がｄ以下であるものと判定する。なお、2元BCH符号化として、任意の相異なる符号語のハミング距離が少なくともｄを超える方法を用いることを前提とする。  【００８４】
関連発明１は、あるバイナリ列と特定のテンプレートに対する検証（Verification）を行っているが、データベースでこの種の照合を行う場合、あるバイナリ列に対して作成されたテンプレートを検索するというケースが考えられる。その際、関連発明１を用いると、すべてのテンプレートに対して一回一回検証処理を実行することになる。  【００８５】
関連発明２では、あるバイナリ列と複数のテンプレートに対する検証処理を効率的に実行する。以下のテンプレートの登録（Enrollment）と検証（Verification）を有する。【００８６】
Nビットのバイナリ列（入力ビット列）Zについてのテンプレートの登録は以下のように行われる。  【００８７】
(1)  鍵としてKビットの乱数Sを生成する。  【００８８】
(2)  Sを2元BCH符号で符号化したNビットの符号語Cを計算する。ここで用いる2元BCH符号は、Kビットのデータを入力としてNビットのデータ（N>K）を出力する符号である、任意の相異なる符号語は、少なくともｄ以上のハミング距離を有することが保障されるものとする。【００８９】
(3)  次に、符号語Cと入力ビット列Zとの排他的論理和をとったNビットの暗号データW1を計算する。  
W1 = C (+) Z        ・・・(17)【００９０】
(4)  ZとSとW1を入力として、以下の計算式(18)にしたがってW2を計算する。なお、式(18)は、上記式(2)と同様であり、ｃはｋビットの定数であり、nはkビット（kはセキュリティパラメータ）の乱数である。ｈは暗号学的ハッシュ関数（例えばSHA = 256等）とする。  
W2 = (c, S) (+) h(W1, n)    ・・・(18)    【００９１】
(5)  次に、（K−k）ビットの乱数ｒを生成し、
h(W1, n)||r     ・・・(19)
を、2元BCH符号化したデータをC3とする。【００９２】
(6)  C3とZからW3を以下の式に従って計算する。  
W3 = C3 (+) Z      ・・・(20)【００９３】
以上の演算で求めたW1を、バイナリ列(入力ビット列)Zの暗号文とし、W2、W3を補助データとし、W1、W2、W3をテンプレートとする。  【００９４】
以上の処理は、図１のビット列登録装置１００のテンプレート生成手段１０１によって実行され、作成されたテンプレートはテンプレート記憶手段(図１の４０１)に記憶されるものとする。【００９５】
以上の処理によって生成された複数のテンプレートと、Nビットのバイナリ列（入力ビット列）Z'を入力として、各テンプレートを生成する際に用いられたバイナリ列（入力ビット列）と、今回入力したNビットのバイナリ列（入力ビット列）Z'の間のハミング距離が一定の数ｄ以下であったか否かの検証(Verification)は、以下のように行われる。なお、各テンプレートには、識別子ｉが振られており、これによってデータベースから一意に呼び出し可能であるものとする。識別子ｉに関連つけられたテンプレートW1、W2、W3を、W1[i]、W2[i]、W3[i]と表す。【００９６】
検証処理は、Z'を記憶する証明装置（図１のビット列照会装置２００）と、テンプレートを有する検証装置（図１のビット列照合装置３００）の２装置間で実行されるものとする。  【００９７】
(1)  検証装置（図１のビット列照合装置３００）は、乱数nsを生成する。【００９８】
(2)  検証装置（図１のビット列照合装置３００）は、予め定められた群（乗法群Zｐ）Ｇの要素（生成元）ｇに対して、
g_s = g＾ns        ・・・(21)
を計算し、g_sを証明装置（図１のビット列照会装置２００）に送付する。【００９９】
(3)  証明装置（図１のビット列照会装置２００）は、Kビットの乱数S'を生成する。  【０１００】
(4)  証明装置（図１のビット列照会装置２００）は、
S' = S1’ (+) S2’      ・・・(22)
を満たすS１’とS2’をランダムに選ぶ。  【０１０１】
(5)  証明装置（図１のビット列照会装置２００）は、S'を2元BCH符号で誤り訂正符号化した符号語C'を生成する。【０１０２】
(6)  証明装置（図１のビット列照会装置２００は、C'とZ'との排他的論理和をとった値W1’を生成する。  
W1’ = C' (+) Z'      ・・・(23)【０１０３】
(7)  証明装置（図１のビット列照会装置２００）は、乱数ncを生成する。  【０１０４】
(8)  証明装置（図１のビット列照会装置２００）は、
g_c = g＾｛nc｝        ・・・(24)
を計算する。  【０１０５】
(9)  証明装置（図１のビット列照会装置２００）は、
g_sc = g_s＾｛nc｝        ・・・(25)
を計算する。  【０１０６】
(10)  証明装置（図１のビット列照会装置２００）は、
W2’ = H(S1’,W1’,g_sc）      ・・・(26)
を計算する。【０１０７】
(11)  証明装置（図１のビット列照会装置２００）は、cとS2'の内積（Kビット）
（c, S2’）        ・・・(27)
を計算する。  【０１０８】
(12)  証明装置（図１のビット列照会装置２００）は(K-k)ビットの乱数r’を生成する。  【０１０９】
(13)  証明装置（図１のビット列照会装置２００）は、
（c, S2’） || ｒ’      ・・・(28)
を、2元BCH符号で符号化したデータC3を計算する(||はビットの連結を表す)。  【０１１０】
(14)  証明装置（図１のビット列照会装置２００）は、
W3’ = C3 (+) Z'        ・・・(29)
を計算する。  【０１１１】
(15)  証明装置（図１のビット列照会装置２００）は、
W1’、W2’、W3’を検証装置（図１のビット列照合装置３００）に送付する。  【０１１２】
(16)  検証装置（図１のビット列照合装置３００）では、以下の処理(16-a)〜(16-h)を、テンプレートW1[i]、W2[i]、W3[i]に対して実行し、Z'とテンプレートを作成する際に用いられたZのハミング距離がｄ以下であると判断されたすべての識別子ｉを出力する。  【０１１３】
(16-a)  W1’ (+) W1[i]        ・・・(30)
を計算する。  【０１１４】
(16-b)  W1’ (+) W1[i]に2元BCH符号の復号処理を適用し、W1を計算する。【０１１５】
(16-c)  W3’ (+) W3[i]      ・・・(31)
を計算する。  【０１１６】
(16-d)  W3’ (+) W3[i]に2元BCH符号の復号処理を適用し、W3を計算する。【０１１７】
(16-e)  予め定められた群（乗法群Zｐ）Ｇの要素（生成元）gに対して、
g_sc = g_c＾ns        ・・・(32)
を計算する。【０１１８】
(16-f)  W2” = H(W1, W1, g_sc)        ・・・(33)【０１１９】
(16-g)  W2’ = W2” (+) W’ (+) W3    ・・・(34)
が成立しているかをチェックする。  【０１２０】
(16-h)  以上の式が成立している場合、入力ビット列ZとZ'のハミング距離がｄ以下であったものと判定する。  【０１２１】
関連発明においては、ビット列Zに対するテンプレートとして、2元BCH符号の符号語をCとすると、C (+) Zをテンプレートの一部として持つ。これは、関連発明１におけるW1であり、関連発明２におけるW1とW3である。【０１２２】
なお、以上の関連発明１、２は、発明者として本願発明者らを含む先願（特願２０１２−１５７２６５号：本願出願時未公開）の実施例１、２に基づくものである。【０１２３】
前述したように、第１のビット列Z1と第２のビット列Z2について作成される暗号文として、独立した2元BCH符号の符合語C1とC2との排他的論理和（bitwise Exclusive OR）演算によって、C1 (+) Z1と、C2(+) Z2がそれぞれ生成されるものとする。2元BCH符号は線形符号であるため、C1 (+) C2も符合語である。Z1 (+) Z2は、ビット列Z1、Z2間のハミング距離に等しい数の１を持つビット列である。【０１２４】
C1 (+) C2(+) Z1 (+) Z2は、Z1 (+) Z2のハミング距離がｄ以下の場合、2元BCH符号の復号処理によって復号することができる。一方、Z1 (+) Z2のハミング距離がｄよりも大きい場合、C1 (+) C2 (+) Z1 (+) Z2は、2元BCH符号の復号処理によって復号されない。２つの暗号文（暗号データ）が得られた場合、それらの暗号文を生成する際に用いられたビット列の間のハミング距離が近いことが判定できる。これは、暗号文からビット列に関する情報を得られたことを意味する。そこで、本発明によれば、関連発明に対して、ビット列と2元BCH符号（2元線形符号）の符号語との排他的論理和演算結果を、テンプレートの一部として利用するにあたり、異なるシステムに登録されている同一ビット列に関するデータの対応をとることを困難とし、情報漏洩の回避と、安全性の確保を可能とするシステム、方法、プログラムが提供される。【０１２５】
次に、本発明の形態について図２を参照して説明する。前記した関連発明の図１において、ビット列が直接入力されるのは、ビット列からテンプレートを作成して登録するビット列登録装置１００と、入力したビット列の照会を行うビット列照会装置２００である。本発明によれば、ビット列登録装置１００Ａとビット列照会装置２００Ａにおいて、ビット列位置置換手段１０２、２０２は、例えばシステム毎に異なり、任意の２つのビット列に関するハミング距離が変換後も大きく変化することがない変換（ビット列の位置置換）を入力したビット列に施し、入力ビット列を位置置換した結果であるビット列を、ビット列登録装置１００Ａのテンプレート生成手段１０１と、ビット列照会装置２００Ａのビット列照会手段２０１に入力する。これにより、例えば、異なるシステムに登録されている同一ビット列に関するデータの対応をとることを困難としている。【０１２６】
具体的には、
（A）例えば、システム毎にランダムな位置置換を入力ビット列に施した後に、ビット列登録処理（テンプレートの作成・登録処理）とビット列照会処理を実行することで、課題を解決する（実施形態１）。  【０１２７】
（B）ビット反転を含む位置置換を入力ビット列に施した後に、ビット列登録処理（テンプレートの作成・登録処理）とビット列照会処理を実行することで、課題を解決する（実施形態２）。【０１２８】
以上の方法によって、どのように課題が解決されるのかを以下で説明する。【０１２９】
ビット列の位置置換Pを、入力ビット列の位置のみを入れ替える関数（並び替え（permutation）関数）とすると、第１のビット列AをPで位置置換した結果のビット列P（A)と、第２のビット列BをPで位置置換した結果のビット列P（B)に関して、P（A)とP（B)間のハミング距離は第１、第２のビット列A、B間のハミング距離に等しい。従って、ビット列登録装置と、ビット列照会装置（証明装置）に対して、ビット列を入力する前に、システム毎に異なる位置置換をビット列に適用しても、同一のシステム内であれば、照合することができる。【０１３０】
次に、異なるシステムにおいて生成されたテンプレートに登録されているビット列が同一か否かを判定することが困難になっていることについて説明する。【０１３１】
ビット列登録装置が、
・ビット列Z1に関しては、位置置換P1、
・ビット列Z2に関しては、位置置換P2
をそれぞれ用いて、暗号化する場合について説明する。P1とP2は異なる位置置換とする。Z1とZ2に対して、独立した2元BCH符号の符合語C1とC2によって暗号化データがそれぞ生成される。
C1 (+) P1（Z1）        ・・・(35)
C2 (+) P2（Z2）        ・・・(36)
ここで、2元BCH符号は線形符号であるため、
C1 (+) C2
も符合語となる。位置置換P1と位置置換P2は異なっているので、
P1（Z1） (+) P2（Z2）        ・・・(37)
は、Z1とZ2のハミング距離を表さない。
したがって、ビット列Z1とZ2をそれぞれ位置置換した結果のビット列P1（Z1）とP2（Z2）との排他的論理和P1（Z1） (+) P2（Z2）では、ビット列Z1とビット列Z2の近さを判定することはできなくなっている。【０１３２】
ビット列Z1とビット列Z2の近さ（ハミング距離）に対応するように、P1（Z1） (+) P2（Z2）を設定するため、任意の文字列（ビット列）Zについて、例えば次式（38）が成り立つような位置置換を利用するようにしてもよい。
P12（P1（Z）） = P2（Z）      ・・・(38)【０１３３】
ビット列Zに位置置換P1を適用した結果のビット列P1（Z）に対して、さらに位置置換P12を適用した結果が、元のビット列Zに対して、位置置換P2を適用した結果のビット列P2（Z）と一致する。
この位置置換P12を、
C1 (+) P1（Z1）              ・・・(39)
に対して施すと、以下のようになる。
P12（C1 (+) P1（Z1）） = P12（C1） (+) P2（Z1）        ・・・(40)【０１３４】
P12（C1） (+) P2（Z1） (+) C2 (+) P2（Z2）             ・・・(41)
において、
P2（Z1） (+) P2（Z2）は、ビット列Z1とビット列Z2のハミング距離に対応する（ハミング距離が小さい場合に、1の数が少なくなる）。すなわち、ビット列を位置置換した結果のP2（Z1）と P2（Z2）との排他的論理和は、P2（Z1）と P2（Z2）のハミング距離に対応し、前述したように、これは、Z1とZ2のハミング距離に対応する。【０１３５】
しかしながら、式（41）において、P12(C1) (+) C2は、2元BCH符号とはならない。このため、2元BCH符号の復号処理を用いて、ビット列Z1とZ2に関する情報を抽出することができなくなる。【０１３６】
また、ビット反転を含む位置置換においては、ある位置のビットは、別のある位置と置換されるとともに、当該ある位置の値のビット反転を含む置換である。この位置置換を適用しても、同一の位置置換を適用後のハミング距離は変わらない。【０１３７】
位置置換（単純な位置置換）は、入力されたビット列の位置関係のみを入れ替える。位置置換は、各入力ビットを何ビット目の出力とするかを、出力ビットに関して重なりなく指定することで表すことができる。例えば、８ビット入力、８ビット出力の場合、位置置換の一例として、図６（A）に示すように、図の左から、
１ビット目の入力を２ビット目に出力し、
２ビット目の入力を５ビット目に出力し、
３ビット目の入力を１ビット目に出力し、
４ビット目の入力を４ビット目に出力し、
５ビット目の入力を６ビット目に出力し、
６ビット目の入力を７ビット目に出力し、
７ビット目の入力を８ビット目に出力し、
８ビット目の入力を３ビット目に出力し、
という情報によって、一つの位置置換を指定することができる。一方で、ビット反転を含む位置置換は、位置置換であって、各ビットに関して反転するか否かの情報が追加されたものである。８ビット入力、８ビット出力の場合、ビット反転を含む位置置換の一例として、図６（B）に示すように、図の左から、
１ビット目の入力を２ビット目に出力しビット反転する（反転有：破線矢線）、
２ビット目の入力を５ビット目に出力しビット反転しない（反転無：実線矢線）、
３ビット目の入力を１ビット目に出力しビット反転しない、
４ビット目の入力を４ビット目に出力しビット反転する、
５ビット目の入力を６ビット目に出力しビット反転する、
６ビット目の入力を７ビット目に出力しビット反転しない、
７ビット目の入力を８ビット目に出力しビット反転しない、
８ビット目の入力を３ビット目に出力し、ビット反転する、
という情報によって一つの位置置換を指定することができる。このように、ビット反転を含む位置置換では、各ビットをどの位置に配置するかという情報に、当該ビットを反転するか否かが付加されることから、ビット反転を含む位置置換の総数は、単純な位置置換の総数よりも多い。このため、例えば、多くのシステムに対して異なった位置置換を指定する場合には、ビット反転を含む位置置換の利用が好ましい。【０１３８】
以上の方法は、テンプレートにビット列と2元線形符号の符号語との排他的論理和演算結果を含むビット列照合システム一般に対して言える。  【０１３９】
＜実施形態１＞
実施形態１では、図１の構成に対して、異なる装置等に登録されている同一ビット列に関するデータの対応を取ることを困難とするものである。図２は、実施形態１の構成を示すブロック図である。異なるシステムに登録されている同一ビット列に関するデータの対応を取ることが困難なビット列照合システムが実施される。図２を参照すると、実施形態１は、ビット列登録装置１００Ａと、ビット列照会装置２００と、ビット列照合装置３００と、テンプレート記憶装置４００を備える。【０１４０】
ビット列登録装置１００Ａは、テンプレート生成手段１０１と、ビット列位置置換手段１０２とを備える。【０１４１】
ビット列照会装置２００Ａは、ビット列照会手段２０１と、ビット列位置置換手段２０２とを備える。  【０１４２】
ビット列照合装置３００は、ビット列照合手段３０１を備える。【０１４３】
テンプレート記憶装置４００は、テンプレート記憶手段４０１を備える。【０１４４】
ビット列登録装置１００Ａにおいて、ビット列（Z）を入力として、入力されたビット列（Z）をビット列位置置換手段１０２に入力する。ビット列位置置換手段１０２の出力は、テンプレート生成手段１０１に入力される。テンプレート生成手段１０１は、生成したテンプレートを、テンプレート記憶装置４００に記憶させる。ビット列位置置換手段１０２は、ビット列（Z）を入力として、ビット列（Z）の位置を定められた順序で、入れ替えたビット列を出力する。【０１４５】
テンプレート生成手段１０１は、ビット列位置置換手段１０２でビット列（Z）を位置置換した結果のビット列を入力として、ビット列と2元BCH符号の符号語との排他的論理和演算結果（暗号データ）と、補助データを含むテンプレートを出力する。テンプレート生成手段１０１は、例えば図１の関連発明のテンプレート生成手段１０１と同一である。テンプレート生成手段１０１は、上式(1)、(2)、(3)、あるいは(18)、(19)のW1（暗号文）、W2、W3（補助データ）をテンプレートとしてテンプレート記憶装置４００に記憶する。【０１４６】
ビット列照会装置２００Ａにおいて、ビット列(Z')を入力として、入力されたビット列(Z'をビット列位置置換手段２０２に入力する。ビット列位置置換手段２０２の出力は、ビット列照会手段２０１に入力される。ビット列照会手段２０１の出力は、照会結果として出力される。ビット列照会手段２０１は、ビット列位置置換手段２０２でビット列(Z')を位置置換した結果のビット列を入力として、ビット列照合手段３０１とデータを送受信し、照会結果を出力する。ビット列照合装置３００は、ビット列照合手段３０１を用いて、ビット列照会手段２０１とテンプレート記憶装置４００とデータを送受信し、照合結果を出力する。  【０１４７】
ビット列照合手段３０１は、ビット列照会手段２０１とやりとりをし、照合結果を出力する。  【０１４８】
実施形態１のビット列照会手段２０１、ビット列照合手段３０１は、図１のビット列照会手段２０１、ビット列照合手段３０１と同一である。ビット列照合手段３０１は、例えば上式(16)、あるいは式(34)が成り立つ場合、ビット列ZとZ'のハミング距離がd以下である（ZとZ’がマッチした）と判定する。【０１４９】
次に、図３（Ａ）、図３（Ｂ）のフローチャートを参照して、本発明の第１の実施の形態の動作について詳細に説明する。図３（Ａ）は、本発明の第１の実施形態における登録処理を説明する流れ図である。  【０１５０】
ビット列Zがビット列登録装置１００Ａに入力される（ステップS1）。【０１５１】
次に、ビット列登録装置１００Ａは、ビット列Zをビット列位置置換手段１０２に入力し、ビット列位置置換手段１０２は、ビット列Zを予め定められた順序に従って位置を置換したビット列Z'を出力する（ステップS2）。【０１５２】
次に、ビット列登録装置１００Ａは、ビット列位置置換手段１０２から出力されるビット列Z'をテンプレート生成手段１０１に入力し、テンプレート生成手段１０１はZ'に対するテンプレートTを出力する（ステップS3）。【０１５３】
次に、ビット列登録装置１００Ａは、テンプレートTをテンプレート記憶装置４００に記憶させる（ステップS4）。【０１５４】
図３（Ｂ）は、実施形態１におけるビット列照合処理の動作を説明する流れ図である。【０１５５】
まず、ビット列Zがビット列照会装置２００Ａに入力される（ステップS11）。【０１５６】
次に、ビット列照会装置２００Ａはビット列Zをビット列位置置換手段２０２に入力し、ビット列位置置換手段２０２はビット列Zを予め定められた順序に従って位置を置換したビット列Z'を出力する（ステップS12）。【０１５７】
次に、ビット列照会装置２００Ａは、ビット列Z'をビット列照会手段２０１に入力し、ビット列照合手段３０１とデータのやり取りを行う（ステップS13）。【０１５８】
ビット列照合装置３００は照合結果を出力する（ステップS14）。ビット列照合装置３００のビット列照合手段３０１は、例えば上式(16)、あるいは式(34)が成り立つ場合、ビット列ZとZ'のハミング距離がd以下である（ZとZ’がマッチした）と判定する。また、このとき、ビット列照会装置２００Ａは照会結果を出力してもよい。【０１５９】
なお、実施形態１において、ビット列登録装置１００Ａと、ビット列照会装置２００Ａと、ビット列照合装置３００の処理は、コンピュータ上で実行されるプログラムによりその処理・機能を実現するようにしてもよい。この場合、該プログラムを記憶した媒体（半導体メモリ、あるいは、磁気・光ディスク等）が提供される。【０１６０】
＜実施形態２＞
次に、実施形態２について説明する。図４は、実施形態２の構成を示す図である。図４を参照すると、実施形態２では、ビット列登録装置１００Ｂは、図２のビット列位置置換手段１０２の代わりに、ビット反転を含む位置置換を実行するビット反転を含む位置置換手段１０３を備えている。ビット列照会装置２００Ｂは、図２のビット列位置置換手段２０２の代わりに、ビット反転を含む位置置換を実行するビット反転を含む位置置換手段１０３を備えている。【０１６１】
なお、図５（Ａ）、図５（Ｂ）は、実施形態２における登録処理、ビット列照合処理の動作をそれぞれ説明する流れ図である。【０１６２】
図５（Ａ）を参照すると、ビット列登録装置１００Ｂは、ビット列Zを入力し（ステップS1）、ビット反転を含む位置置換手段１０３において、ビット列Zを予め定められた順序に従ってビット反転を含む位置置換を行ったビット列Z’を出力する（ステップＳ２A）。テンプレート生成手段１０１は、位置置換済みのビット列のテンプレートを生成し（ステップS3）、テンプレート記録装置４００に記録する。【０１６３】
図５（Ｂ）を参照すると、ビット列Zがビット列照会装置２００Ａに入力される（ステップS１１）。ビット列照会装置２００Ａでは、ビット反転を含む位置置換手段２０３に入力し、ビット反転を含む位置置換手段２０３では、ビット列Zを予め定められた順序に従って、ビット反転を含む位置置換を行ったビット列Z'を出力する（ステップS１２A）。【０１６４】
ビット列照会装置２００Ｂは、ビット列Z'をビット列照会手段２０１に入力し、ビット列Z'を入力として、ビット列照合手段３０１とデータのやり取りを行う（ステップS１３）。【０１６５】
ビット列照合装置３００は照合結果を出力する（ステップS１４）。ビット列照合装置３００のビット列照合手段３０１は、例えば上式(16)、あるいは式(34)が成り立つ場合、ビット列ZとZ'のハミング距離がd以下である（ZとZ’がマッチした）と判定する。このとき、ビット列照会装置２００Ｂは照会結果を出力するようにしてもよい。【０１６６】
なお、前実施形態１、実施形態２のように、システム毎ではなく、ビット列毎に、異なる位置置換、ビット反転を含む位置置換を適用してもよい。このような方法を用いれば、同一システム内であっても、テンプレートAが含んでいるビット列ZAと2元BCH誤り訂正符号の符号語との排他的論理和演算結果と、テンプレートBが含んでいるビット列ZBと2元BCH誤り訂正符号の符号語との排他的論理和演算結果に対して、それらの排他的論理和を適用し、復号処理をかけることによって、ビット列ZAとビット列ZBの距離が近いか否かを調べることを困難にすることができる。関連技術２に示されているような、あるビット列に関する照会処理を一度で済ませる方法が利用できなくなる。【０１６７】
上記実施形態は、ビット列の照合システムに適用可能である。また、ビット列として生体情報を用いることで、生体認証にといった用途にも適用可能である。さらに、複数のサイトの認証や照合方法に用いても、登録したデータや生体情報に関する情報を強く秘匿することができる。【０１６８】
なお、上記特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１６９】
１００、１００Ａ、１００Ｂ  ビット列登録装置
１０１  テンプレート生成手段
１０２  ビット列位置置換手段
１０３  反転を含む位置置換手段
２００、２００Ａ、２００Ｂ  ビット列照会装置
２０１  ビット列照会手段
２０２  ビット列位置置換手段
２０３  反転を含む位置置換手段
３００  ビット列照合装置
３０１  ビット列照合手段
４００  テンプレート記憶装置
４０１  テンプレート記憶手段
【図１】
2014092183.tif 000003
【図２】
2014092183.tif 000004
【図３】
2014092183.tif 000005
【図４】
2014092183.tif 000006
【図５】
2014092183.tif 000007
【図６】
2014092183.tif 000008
【図７】
2014092183.tif 000009
【国際調査報告】
2014092183.tif 000010
2014092183.tif 000011
2014092183.tif 000012
2014092183.tif 000013