(57)【要約】  二値のベクトルに関して漏洩やなりすまし等を回避可能とし安全性を高める。照合装置は、乱数を生成し暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する。照合要求装置は、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算で得た暗号データを前記照合装置に送信する。照合装置は、前記暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、照合要求装置から送信された前記暗号データと前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして、検証装置に送信する。検証装置は、前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるかを否か判定する。
2018110608.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する照合装置と、
前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算で得た暗号データを前記照合装置に送信する前記照合要求装置と、
を備え、
前記照合装置は、前記暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、クエリとして検証装置に送信し、
前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるかを否か判定する前記検証装置を備えた、ことを特徴とする照合システム。
【請求項２】
登録用の前記第１の二値ベクトルの各要素と前記各要素に対する所定の演算結果の少なくとも一方を前記暗号鍵で暗号化した暗号データを送信する登録要求装置と、
前記登録要求装置から送信された前記第１の二値ベクトルの各要素と前記各要素に対する前記所定の演算結果の少なくとも一方の暗号データを受け、登録データとして記憶する記憶装置と、
をさらに備えたことを特徴とする請求項１記載の照合システム。
【請求項３】
前記照合装置は、
前記照合要求装置からの照合要求に対して、前記第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記照合装置からの前記第２の暗号データの各々を暗号化したまま、前記第２の二値ベクトルの各要素をスカラー演算した値の総和である第３の暗号データを求め、前記照合装置に送信し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、前記検証装置に送信し、
前記検証装置は、
前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする請求項１に記載の照合システム。
【請求項４】
前記第１の二値ベクトルに関する前記第１の演算値を前記暗号鍵で暗号化した前記第１の暗号データと、前記第１の二値ベクトルの各要素に関する前記第２の演算値を前記暗号鍵で暗号化した前記第５の暗号データと、を生成し、前記第１の暗号データ及び前記第５の暗号データを記憶装置に送信する登録要求装置と、
前記登録要求装置から前記第１の暗号データと前記第５の暗号データを受け、登録データとして記憶し、さらに、前記第１の暗号データと前記第５の暗号データを前記照合装置に供給する前記記憶装置と、
を備えたことを特徴とする請求項３に記載の照合システム。
【請求項５】
前記第１の二値ベクトルの各要素を前記暗号鍵で暗号化した暗号データを記憶装置に送信する登録要求装置と、
前記登録要求装置から前記第１の二値ベクトルの各要素の暗号データを受け、前記第１の二値ベクトルの各要素に関する第１の演算値と第２の演算値を計算して前記第１の暗号データ及び前記第５の暗号データを求め、登録データとして記録し、
さらに、前記第１の暗号データと前記第５の暗号データを前記照合装置に供給する前記記憶装置を備えた、ことを特徴とする請求項３に記載の照合システム。
【請求項６】
前記第１の二値ベクトルの各要素を暗号鍵で暗号化して記憶装置に送信する登録要求装置と、
前記第１の二値ベクトルの各要素の暗号データを記録する前記記憶装置と、
を備え、
前記照合装置は、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルの各要素に関する第１、第２の演算値を計算して前記第１及び第５の暗号データとして求める、ことを特徴とする請求項３に記載の照合システム。
【請求項７】
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルに対して予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記第２の二値ベクトルに予め設定された第２の変換を施してなる第２の変換値を、前記照合装置から送信された前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和を第３の暗号データとして前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、前記検証装置に送信し、
前記検証装置は、
前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする請求項１に記載の照合システム。
【請求項８】
前記登録用のｎ次元の前記第１の二値ベクトルに前記第１の変換を施してｎ個の前記第１の変換値を求め、ｎ個の前記第１の変換値を暗号鍵で暗号化した前記第１の暗号データを生成し、前記第１の暗号データと、登録用のｎ次元の前記第１の二値ベクトルの各要素の暗号データを記憶装置に送付する登録要求装置と、
前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを生成し、
前記第１、第５の暗号データを登録データとして記録し、前記第１、第５の暗号データを前記照合装置に送信する前記記憶装置と、
を備えた、ことを特徴とする請求項７に記載の照合システム。
【請求項９】
登録用のｎ次元の前記第１の二値ベクトルの各要素の暗号データを記憶装置に送付する登録要求装置と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したｎ個の前記第１の変換値の暗号データを求める手段と、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段を備え、
前記ｎ個の第１の変換値の前記第１の暗号データと、前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを記録する前記記憶装置と、
を備え、
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記記憶装置からｎ個の前記第１の変換値の暗号データを取得し、乱数を生成し、前記乱数を前記ｎ個の第１の変換値の前記第１の暗号データにそれぞれ演算して第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記第２の二値ベクトルに前記第２の変換を施してなる前記第２の変換値を求め、前記各第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と前記第２の変換値を乗算した値の総和の前記第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする請求項７に記載の照合システム。
【請求項１０】
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルの各要素の暗号データを取得し、
前記第１の二値ベクトルの要素を暗号化したまま前記要素の総和の暗号データを生成する手段と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したｎ個の前記第１の変換値の第１の暗号データを求める手段と、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段を備え、
乱数を生成し、前記乱数を前記ｎ個の第１の変換値の前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記第２の二値ベクトルに前記第２の変換を施してなるｎ個の前記第２の変換値を求め、前記各第２の変換値を、前記第２の暗号データの各々に演算し、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和の第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする請求項７に記載の照合システム。
【請求項１１】
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルの各要素の暗号データを取得し、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段と、
前記第１の変換を構成する第１群の変換係数を生成する手段と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施してなるｎ個の前記第１の変換値を求める手段と、
を備え、さらに乱数を生成し、前記乱数を、前記ｎ個の第１の変換値からなる前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信し、
さらに、前記第１群の変換係数の生成に用いた、前記第２の変換を構成する第２群の変換係数を前記照合要求装置に送信し、
前記照合要求装置は、
前記照合装置からの第２群の変換係数で規定される前記第２の変換を前記第２の二値ベクトルに施してなる前記第２の変換値を求め、前記第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和からなる第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除し、前記第１の変換値と第２の変換値を乗算した値の総和の暗号データを求め、前記総和の暗号データと前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする請求項７に記載の照合システム。
【請求項１２】
前記登録用のｎ次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する登録要求装置と、
前記登録要求装置からの前記第１の二値ベクトルの各要素の暗号データを記憶する、ことを特徴とする請求項９又は１０に記載の照合システム。
【請求項１３】
前記照合装置は、
前記照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信し、
前記照合要求装置は、
照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求め、前記照合装置に送信し、
前記照合装置は、
前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、前記暗号鍵で暗号化されている前記第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数に基づくハッシュ値とを、前記検証装置に送信し、
前記検証装置は、
前記照合装置からの前記第３、第４の暗号データを復号鍵で復号し、復号した値に基づきハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする請求項１に記載の照合システム。
【請求項１４】
前記照合装置は、
前記照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信し、
前記照合要求装置は、
照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求めて、前記照合装置に送信し、
前記照合装置は、
前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている前記第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第２の乱数の演算結果である第３の暗号データと、前記生成した第１及び第２の乱数に基づくハッシュ値とを前記検証装置に送信し、
前記検証装置は、
前記照合装置からの前記第３の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする請求項１に記載の照合システム。
【請求項１５】
前記第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを前記記憶装置に送信する登録要求装置と、
前記登録要求装置から送信された暗号データを記憶する前記記憶装置と、
を備えた、ことを特徴とする請求項１３又は１４に記載の照合システム。
【請求項１６】
前記第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを前記記憶装置に送信する登録要求装置と、
前記第１の二値ベクトルの各要素の前記第１の演算値の暗号データに対して乱数をそれぞれ生成する手段と、
前記各乱数のハッシュ値を生成する手段と、
を備え、
前記各乱数を演算した暗号データと前記ハッシュ値を前記検証装置に送信する手段を
備えた記憶装置と、
を備え、
前記検証装置は、前記記憶装置から送信された各暗号データを前記復号鍵で復号し、復号した各値のハッシュ値を求め、前記各ハッシュ値が、前記記憶装置から送信された対応するハッシュ値と一致するか判定し、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とし、
前記記憶装置は、前記検証装置での検証結果が受理の場合、前記第１の演算値の暗号データを記憶する、ことを特徴とする請求項１３又は１４に記載の照合システム。
【請求項１７】
（ａ）照合装置が、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する工程と、
（ｂ）前記照合要求装置が、前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、前記照合装置に送信する工程と、
（ｃ）前記照合装置が、暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、クエリとして検証装置に送信する工程と、
（ｄ）前記検証装置が、前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する工程と、
を含む、ことを特徴とする照合方法。
【請求項１８】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、登録用の前記第１の二値ベクトルの各要素と前記各要素に対する演算結果の少なくとも一方を前記暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から送信された前記第１の二値ベクトルの各要素と前記各要素に対する演算結果の少なくとも一方の暗号データを受け、登録データとして記憶する工程と、
をさらに含む、ことを特徴とする請求項１７に記載の照合方法。
【請求項１９】
前記工程（ａ）において、
前記照合装置は、前記照合要求装置からの照合要求に対して、前記第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、前記照合装置から送信された前記第２の暗号データの各々に、前記第２の二値ベクトルの各値を演算した値の総和である第３の暗号データを求め、前記照合装置に送信し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、前記検証装置に送信し、
前記工程（ｄ）において、
前記検証装置は、前記第６の暗号データを前記復号鍵で復号し、復号結果の前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする請求項１７に記載の照合方法。
【請求項２０】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルに関する前記第１の演算値を前記暗号鍵で暗号化した前記第１の暗号データと、前記第１の二値ベクトルの各要素に関する前記第２の演算値を前記暗号鍵で暗号化した前記第５の暗号データと、を生成し、前記第１の暗号データ及び前記第５の暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から前記第１の暗号データと前記第５の暗号データを受け、登録データとして記憶する工程と、
を含む、ことを特徴とする請求項１９に記載の照合方法。
【請求項２１】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルの各要素を前記暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から前記第１の二値ベクトルの各要素の暗号データを受け、前記第１の二値ベクトルの各要素に関する第１の演算値及び第２の演算値を計算して前記第１の暗号データ及び前記第５の暗号データを求め、登録データとして記録する工程を含む、ことを特徴とする請求項１９に記載の照合方法。
【請求項２２】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルの各要素を暗号鍵で暗号化して記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の暗号データを記録する工程と、
を含み、
前記工程（ａ）において、
前記照合装置は、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルの各要素に関する第１、第２の演算値を計算して前記第１及び第５の暗号データとして求める、ことを特徴とする請求項１９に記載の照合方法。
【請求項２３】
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルに予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、
前記第２の二値ベクトルに予め設定された第２の変換を施してなる第２の変換値を、前記照合装置から受信した前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に第２の変換値を乗じた暗号データを求め、前記暗号データの総和を第３の暗号データとして前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、前記検証装置に送信し、
前記工程（ｄ）において、
前記検証装置は、前記第６の暗号データを前記復号鍵で復号し、復号結果の前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする請求項１７に記載の照合方法。
【請求項２４】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のｎ次元の前記第１の二値ベクトルに前記第１の変換を施しｎ個の第１の変換値を求め、
前記ｎ個の第１の変換値を暗号鍵で暗号化した第１の暗号データを記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成し、
前記第１、第５の暗号データを登録データとして記録する工程とを含む、ことを特徴とする請求項２３に記載の照合方法。
【請求項２５】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のｎ次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したｎ個の前記第１の変換値の暗号データを求め、
前記第１の二値ベクトルの要素を暗号化したまま前記要素の総和を暗号化した第５の暗号データを生成し、
前記ｎ個の第１の変換値の前記第１の暗号データと、前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを記録する工程と、
を含み、
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照会要求を受けると、前記記憶装置からｎ個の前記第１の変換値の暗号データと、を取得し、乱数を生成し、前記乱数を前記ｎ個の第１の変換値の暗号データにそれぞれ演算して第２の暗号データを求め、前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、前記第２の二値ベクトルに前記第２の変換を施してなる前記第２の変換値を求め、前記各第２の変換値を前記照合装置から受信した前記第２の暗号データの各々にスカラー演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して前記第１の変換値と前記第２の変換値を乗算した値の総和の前記第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする請求項２３に記載の照合方法。
【請求項２６】
前記工程（ａ）において、
前記照合装置が、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したｎ個の前記第１の変換値の暗号データを求める工程と、
前記照合装置が、前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成し、
乱数を生成し、前記乱数を前記ｎ個の第１の変換値の前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信する工程と、
を含み、
前記工程（ｂ）において、
前記照合要求装置は、前記第２の二値ベクトルに前記第２の変換を施してなるｎ個の前記第２の変換値を求め、前記各第２の変換値を、前記第２の暗号データの各々に演算し、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和の第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した値を求め、暗号化したハミング距離として前記検証装置に送信する、ことを特徴とする請求項２３に記載の照合方法。
【請求項２７】
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルの各要素の暗号データを取得する工程と、
前記第１の変換を構成する第１群の変換係数を生成する工程と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施してなるｎ個の前記第１の変換値を求める工程と、
さらに乱数を生成し、前記乱数を、前記ｎ個の第１の変換値からなる前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信する工程と、
さらに、前記第１群の変換係数の生成に用いた、前記第２の変換を構成する第２群の変換係数を前記照合要求装置に送信する工程と、
を含み、
前記工程（ｂ）において、
前記照合要求装置は、前記照合装置からの第２群の変換係数で規定される前記第２の変換を前記第２の二値ベクトルに施してなる前記第２の変換値を求め、前記第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和からなる第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除し、前記第１の変換値と第２の変換値を乗算した値の総和の暗号データを求め、前記総和の暗号データと前記第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した前記第５の暗号データを加算した第６の暗号データを前記検証装置に送信する、ことを特徴とする請求項２３に記載の照合方法。
【請求項２８】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のｎ次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記登録要求装置からの前記第１の二値ベクトルの各要素の暗号データを記憶する工程と、
を含む、ことを特徴とする請求項２６又は２７に記載の照合方法。
【請求項２９】
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求め、前記照合装置に送信し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、前記暗号鍵で暗号化されている前記第１の二値ベクトルの各要素の演算結果である暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数のハッシュ値を前記検証装置に送信し、
前記工程（ｄ）において、
前記検証装置は、前記照合装置からの前記第３、第４の暗号データを復号鍵で復号し、復号した値に基づくハッシュ値を計算し、前記ハッシュ値が、前記照合装置から受信したハッシュ値と不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする請求項１７に記載の照合方法。
【請求項３０】
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求めて、前記照合装置に送信し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている前記第１の二値ベクトルの各要素の演算結果である第３の暗号データと、前記第２の乱数の演算結果である第４の暗号データと、前記生成した第１及び第２の乱数のハッシュ値とともに前記検証装置に送信し、
前記工程（ｄ）において、
前記検証装置は、前記照合装置からの前記第４の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値が、前記照合装置から受信したハッシュ値と不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする請求項１７に記載の照合方法。
【請求項３１】
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の前記第１の演算値の暗号データに対して乱数をそれぞれ生成する工程と、
（ｇ）前記記憶装置が、前記各乱数のハッシュ値を生成する工程と、
（ｈ）前記記憶装置が、前記各乱数を演算した暗号データと前記ハッシュ値を前記検証装置に送信する工程と、
（ｉ）前記検証装置は、前記記憶装置から送信された各暗号データを前記復号鍵で復号し、復号した各値のハッシュ値を求め、前記各ハッシュ値が、前記記憶装置から送信された対応するハッシュ値と一致するか判定し、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とする工程と、
（ｊ）前記記憶装置は、前記検証装置での検証結果が受理の場合、前記第１の演算値の暗号データを記憶する工程と、
を含む、ことを特徴とする請求項２９又は３０に記載の照合方法。
【請求項３２】
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する手段と、
前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する手段と、
暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、クエリとして検証装置に送信する手段と、
復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるかを否か判定する前記検証装置から、検証結果を受信する手段と、
を備えた、ことを特徴とする照合装置。
【請求項３３】
照合装置のコンピュータに、
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する処理と、
前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する処理と、
暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、クエリとして検証装置に送信する処理と、
復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置から、検証結果を受信する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１６−２４３７０９号（２０１６年１２月１５日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は照合システム、方法、装置及びプログラムに関する。
【背景技術】
【０００２】
クラウドコンピューティングサービス等、通信ネットワークに通信接続している計算機資源を用いてデータを管理するサービスが広く普及している。この種のサービスは機密性の高いデータを管理することから、データの安全性を保証する必要がある。ネットワーク環境において、データを暗号化されたままの状態で管理し、データを復号することなく、検索や統計処理等を行う技術の研究開発が行われている。また、例えば静脈等の生体が有する特徴（生体情報）に基づいた認証情報を用いて、安全性の高い認証を実現する生体認証技術が注目を集めている。【０００３】
生体認証技術においては、生体情報に基づきテンプレートが作成され、作成されたテンプレートが認証情報としてデータベースに保管される。生体認証技術においては、認証対象である生体に基づき作成された認証情報と、データベースに保管されているテンプレートとが類似（または、一致）している場合に、認証対象が受理される。生体認証技術においては、該認証情報と、該テンプレートとが類似（または、一致）していない場合に、認証対象は受理されない。一つの生体から作成された複数の認証情報であっても、該複数の認証情報は、相互に一致するとは限らない。しかし、類似しているか否かを、ある距離関数を用いて測定した場合に、該複数の認証情報間の距離は短い。これに対して、異なる生体から、それぞれ、作成された複数の認証情報間の距離は長い。生体認証技術は、上記の特質を利用することによって、データベースに保管されているテンプレートと、認証対象に関して作成された認証情報との照合を行う。例えば、指紋、静脈等は、生体情報の一例であり、生涯不変のデータとされている。生体情報が照合システムの外部に漏洩された場合の被害が甚大である。このため、該生体情報は、機密性が要求される情報の一つである。したがって、テンプレートが照合システムの外部に漏洩したとしても、生体情報が外部に漏洩しないテンプレート保護型の生体認証技術が重要である。【０００４】
また、生体認証技術では、他の認証技術と同様に、認証情報を登録した生体に、該生体と異なる生体がなりすますこと（すなわち、「なりすまし」）を防ぐ必要がある。例えば、特定の値を照合システムに送信することによって認証に成功する認証技術は、該なりすましへの耐性が十分でない。さらに、認証技術においては、テンプレートが漏洩してしまうリスクだけでなく、通信情報が盗聴（傍受）されるリスクもある。認証技術においては、通信情報が盗聴されたとしても、なりすましを防ぐ必要がある。例えば、正規のクライアントが照合システムに対する認証に成功した場合に、該照合システムへ送信したデータを、異なるクライアントが再送することによって認証に成功する方式は、なりすましへの耐性が十分でない可能性が高い。【０００５】
例えば、特許文献１には、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と前記暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に前記照合情報と前記ユーザとのハミング距離及び前記照合情報と前記ユーザとは異なる他人とのハミング距離が含まれるように変換し、入力された前記照合情報と、前記変換された登録情報とのハミング距離を計算し、前記計算されたハミング距離に含まれる、前記照合情報と前記ユーザとのハミング距離及び前記照合情報と前記ユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて前記入力された照合情報が不正なものか否かを判定する処理を実行する方法、装置が開示されている。【０００６】
また、特許文献２には、準同型暗号を利用した秘匿生体認証システム・秘匿タグ検索システムにおいて、ベクトルデータＡ＝（ａ１、ａ２、…）を準同型暗号で暗号化する場合、各成分ａｉを暗号化し、暗号ベクトルデータＥ（Ａ）＝（Ｅ（ａ１）、Ｅ（ａ２）、…）を生成し、さらに、２つの暗号ベクトルデータＥ（Ａ）＝（Ｅ（ａ１）、Ｅ（ａ２）、…）とＥ（Ｂ）＝（Ｅ（ｂ１）、Ｅ（ｂ２）、…）の距離を暗号化したまま計算する（距離の例には、ハミング距離がある）が、このようにベクトルデータの各成分を準同型暗号化する場合、暗号ベクトルデータＥ（Ａ）＝（Ｅ（ａ１）、Ｅ（ａ２）、…）、Ｅ（Ｂ）＝（Ｅ（ｂ１）、Ｅ（ｂ２）、…）などのサイズが巨大になり、さらに秘匿距離計算に多大な計算時間を要するという問題があることが記載され、暗号ベクトルデータのサイズと秘匿距離計算の時間の両方を削減する構成が開示されている。【０００７】
特許文献３には、準同型暗号を利用した暗号処理システムにおいて、暗号化された情報を簡便にキャンセルする方法が開示されている。第１のデータを第１の変換多項式を用いて変換して第１の多項式を取得し、第１のデータに対応する乱数と第２のデータとを基に得られる式を、第２の変換多項式を用いて変換して第２の多項式を取得し、第１の変換多項式または前記第２の変換多項式のうち少なくとも一方を用いて前記乱数を変換して乱数多項式を取得し、第１の多項式と第２の多項式と乱数多項式とを、準同型暗号方式を用いて暗号化して、暗号化された第１の多項式と暗号化された第２の多項式と暗号化された乱数多項式とを取得し、暗号化された第１の多項式と暗号化された第２の多項式と暗号化された乱数多項式とを用いて、第１のデータと第２のデータとの照合を行う方法が開示されている。【０００８】
さらに、特許文献４には、信頼できる第三者による介入を導入したシステムにおいて、より一般的な準同型暗号方式を用いて構成される技術が開示されている。【０００９】
さらにまた、特許文献５には、テンプレートのサイズが、受理可能な範囲の広さのパラメータに依存せず、かつ、第三者の負荷が小さい技術が記載されている。しかし、この方式では、第三者に対し、登録された生体情報と照合する対象である生体情報との距離が明かされる。悪意を有した第三者が、照合時に得られる距離を利用することによる攻撃（ヒルクライミング攻撃）が可能であることが知られている。【００１０】
また、非特許文献１には、サーバとユーザが結託する攻撃者に対する安全性、復号者及びユーザが結託する攻撃者に対する安全性、盗聴者がユーザになりすましをできない性質の三つの安全性をすべて満たす方式が提案されている。【００１１】
本明細書で用いられる暗号アルゴリズム等の記法に関して説明しておく。まず公開鍵暗号について説明する。公開鍵暗号方式は、鍵生成、暗号化、復号の三つのアルゴリズム(Gen, Enc, Dec)で表される。【００１２】
鍵生成アルゴリズム（「Gen」と表記する）はセキュリティパラメータ1^κに基づき、公開鍵pkと、秘密鍵skを出力する。
(pk, sk) ← Gen(1^κ）【００１３】
暗号化アルゴリズム（「Enc」と表記する）は公開鍵pkと平文ｍを入力とし暗号文ｃを出力する。
ｃ ← Enc(pk, m)【００１４】
復号アルゴリズム（「Dec」と表記する）は、秘密鍵sk，暗号文cを入力とし、復号結果m'を出力する。
m’ ← Dec(sk, c)
なお、本明細書、図面等では、文脈から明らかな場合等、pk, skは略記される場合がある。準同型暗号は、複数の暗号文から、その平文の演算結果の暗号文を計算可能な公開鍵暗号である。例えば、平文m1,…,mnの暗号文Enc(m1),…,Enc(mm)から秘密鍵を用いずに平文の和に対応する暗号文Enc(m1+…+mn)を計算できるものを「加法準同型暗号」と呼ぶ。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０１６−１３１３３５号公報
【特許文献２】特開２０１４−１２６８６５号公報
【特許文献３】特開２０１６−１２１１１号公報
【特許文献４】国際公開第２０１４／１８５４４７号
【特許文献５】国際公開第２０１２／１１４４５２号
【非特許文献】
【００１６】
【非特許文献１】肥後、一色、森、尾花、“認証時の情報開示の少ない秘匿生体認証方式”、暗号と情報セキュリティシンポジウム（ＳＣＩＳ２０１６）、２０１６．
【発明の概要】
【発明が解決しようとする課題】
【００１７】
以下に関連技術の分析を与える。【００１８】
特許文献２、３では、盗聴者によるなりすまし攻撃に対する耐性の点で問題がある。また、特許文献２、３、５では、Somewhat準同型暗号やペアリング演算が必要とされる。Somewhat準同型暗号は、加法準同型暗号よりも計算の処理負荷が重い、仮定が強い等の課題を有する。【００１９】
また、非特許文献１の開示において、生体情報が二値ベクトル（二値符号列）の場合、盗聴者等によるなりすまし攻撃に対する防御度（耐性）を高める必要があることを、本発明者らは知見した。これに加えて、１：Ｎ認証にも対応可能な技術を本発明者らは知見したので、以下に提案する。【００２０】
本発明の主たる目的は、二値のベクトルの照合に関して漏洩やなりすまし等を回避可能とし安全性を高める照合システム、方法、照合装置、プログラムを提供することである。
【課題を解決するための手段】
【００２１】
本発明の一つの側面によれば、照合システムは、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する照合装置と、前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算で得た暗号データを前記照合装置に送信する前記照合要求装置と、を備えている。前記照合装置は、前記暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する。照合システムは、前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置を備えている。【００２２】
本発明の別の側面によれば、
（ａ）照合装置が、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する工程と、
（ｂ）前記照合要求装置が、前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、前記照合装置に送信する工程と、
（ｃ）前記照合装置が、暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する工程と、
（ｄ）前記検証装置が、前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する工程と、を含む照合方法が提供される。【００２３】
本発明の別の側面によれば、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する手段と、前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する手段と、暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する手段と、復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置から、検証結果を受信する手段と、を備えた照合装置が提供される。【００２４】
本発明のさらに別の一つの側面によれば、照合装置のコンピュータに、
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する処理と、
前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する処理と、
暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する処理と、
復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置から、検証結果を受信する処理と、を実行させるプログラムが提供される。【００２５】
本発明によれば、上記プログラムを記憶したコンピュータ読み出し可能な記録媒体（例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、又は、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM））等の半導体ストレージ、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）等のnon-transitory computer readable recording mediumが提供される。
【発明の効果】
【００２６】
本発明によれば、二値のベクトルの照合に関して二値のベクトルの漏洩やなりすまし等を回避可能とし、安全性を高めることを可能としている。
【図面の簡単な説明】
【００２７】
【図１】本発明の例示的な実施形態の構成を説明する図である。
【図２】比較例を説明する図である。
【図３】比較例における問題点（なりすまし攻撃）の一例を説明する図である。
【図４】本発明の例示的な第１の実施形態の動作シーケンスを説明する図である。
【図５】本発明の例示的な第１の実施形態の構成例を説明する図である。
【図６】本発明の例示的な第１の実施形態における準備フェーズを説明する図である。
【図７】本発明の例示的な第１の実施形態における登録フェーズを説明する図である。
【図８】本発明の例示的な第１の実施形態における照合フェーズを説明する図である。
【図９】本発明の例示的な第１の実施形態の変形例１の動作シーケンスを説明する図である。
【図１０】本発明の例示的な第１の実施形態の変形例２の動作シーケンスを説明する図である。
【図１１】本発明の例示的な第２の実施形態を説明する図である。
【図１２】本発明の例示的な第２の実施形態における登録要求装置の構成例を説明する図である。
【図１３】本発明の例示的な第２の実施形態における登録フェーズを説明する図である。
【図１４】本発明の例示的な第２の実施形態の動作シーケンスを説明する図である。
【図１５】本発明の例示的な第２の実施形態の変形例１の動作シーケンスを説明する図である。
【図１６】本発明の例示的な第２の実施形態の変形例２の動作シーケンスを説明する図である。
【図１７】本発明の例示的な第２の実施形態の変形例３における照合装置の構成例を説明する図である。
【図１８】本発明の例示的な第２の実施形態の変形例３における照合フェーズを説明する図である。
【図１９】本発明の例示的な第２の実施形態の変形例３の動作シーケンスを説明する図である。
【図２０】本発明の例示的な第３の実施形態の構成例を説明する図である。
【図２１】本発明の例示的な第３の実施形態における照合フェーズを説明する図である。
【図２２】本発明の例示的な第３の実施形態の動作シーケンスを説明する図である。
【図２３】本発明の例示的な第３の実施形態の変形例１の動作シーケンスを説明する図である。
【図２４】本発明の例示的な第３の実施形態の変形例２の構成を説明する図である。
【図２５】本発明の例示的な第３の実施形態の変形例２の登録フェーズの動作シーケンスを説明する図である。
【図２６】本発明の例示的な第４の実施形態の登録フェーズの動作シーケンスを説明する図である。
【図２７】本発明の例示的な第４の実施形態の変形例１の登録フェーズの動作シーケンスを説明する図である。
【図２８】本発明の例示的な第５の実施形態の構成を説明する図である。
【発明を実施するための形態】
【００２８】
＜基本形態＞
図１は、本発明の一形態を説明する図である。図１を参照すると、本発明の一形態の照合システム１００において、
照合装置１４０は、照合要求装置１２０からの照合要求に対して、
乱数（例えば図４、図９、図１０、図１４〜図１６、図１９のＳ）を生成し、
暗号鍵（公開鍵pk）で暗号化されて記憶されている第１の二値ベクトル（X=[x1,…,xn]）に関する第１の評価値（例えば図４、図９、図１０のEnc(1-2xi) (i=1,…,n)、又は図１４のEnc(Ai)）と、前記乱数（Ｓ）との演算で得た暗号データ（図４等のEnc(S(1-2xi)、又は、図１４のEnc(SＡi) (i=1,…,n) ）を生成し、照合要求装置１２０に送信する。１：Ｎ認証の場合には、
照合装置１４０は、照合要求装置１２０からの照合要求に対して、
乱数（例えば図２２のai,bi,ri、又は、図２６のai, bi）を生成し、
該乱数の暗号鍵（公開鍵pk）によって暗号化した暗号データ（例えば図２２や図２６のEnc(bi) (i=1,…,n)）を生成し、照合要求装置１２０に送信する。
【００２９】
照合要求装置１２０は、
照合装置１４０からの前記暗号データ（例えば図４等のEnc(pk,S(1-2xi))、又は、図１４のEnc(SAi)、又は、１：Ｎ認証の場合、図２２や図２６のEnc(bi) (i=1,…,n)）を暗号化したまま、
照合用の第２の二値ベクトル（Y=[y1,…,yn]）の要素{yi}(i=1,…,n)、又は、前記要素{yi}(i=1,…,n)に関する演算結果（例えば図１４のBi)との演算により得た暗号データ（例えば図４等のEnc(SΣi (1-2xi)yi)、又は、図１４等のEnc(SΣi AiBi)、又は、１：Ｎ認証の場合、図２２、図２６のEnc(bi(2yi-1)） (i=1,…,n))を、照合装置１４０に送信する。なお、Σiはiに関する総和の演算子である（図面ではiが省略される場合もある）。
【００３０】
照合装置１４０は、
暗号鍵(pk)で暗号化されている前記第１の二値ベクトル（X=[x1,…,xn]）に関する第２の評価値の暗号データ（図４等のEnc(Σixi）、又は、１：Ｎ認証の場合、図２２のEnc(2xi-1) )、
照合要求装置１２０からの前記暗号データ（例えば図４等のEnc(SΣi (1-2xi)yi)、又は、図１４等のEnc(SΣiAiBi）、又は、１：Ｎ認証の場合、図２２のEnc(bi（2yi-1)）)、及び、前記乱数（例えば図４、図１４等のＳ、又は、１：Ｎ認証の場合、図２２のai,ri、又は、図２６のai）
に基づき、
前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するためのクエリとして、
暗号データ（例えば図４、図１４等のEnc(dH(X,Y))）を生成するか、又は、
１：Ｎ認証の場合、暗号データ（例えば図２２のEnc(ai(2xi-1)),Enc(biri(2yi-1))、又は、図２６のEnc(aibi(2xi-1)(2yi-1))）と、補助データ（例えば図２２のハッシュ値Ｈ(aibiri)、又は、図２６のハッシュ値Ｈ(aibi)）と、を生成し、
生成した前記クエリを、検証装置１５０に送信する。
【００３１】
検証装置１５０は、
照合装置１４０からの前記クエリの前記暗号データ（例えば図４、図１９等のEnc(dH(X,Y))）を復号鍵(sk)で復号した値（dH(X,Y)）に基づき、又は、１：Ｎ認証の場合、
前記クエリの暗号データ（例えば図２２のEnc(ai(2xi-1)), Enc(biri(2yi-1))、又は、図２６のEnc(aibi(2xi-1)(2yi-1))）を復号鍵(sk)で前記復号した値（例えば図２２の(za,zb)、又は、図２６のzi)から生成した補助データ（例えば図２２のＨ(zazb)、又は、図２６のＨ(zi）)と、前記クエリの前記補助データ（例えば図２２のＨ(aibiri)、又は、図２６のＨ(aibi)）とに基づき、
前記第２の二値ベクトル（Y）と前記第１の二値ベクトル（X）の不一致の要素の個数が予め定められた個数以下であるか否かを判定する。検証装置１５０は、検証結果（受理又は不受理）を出力する。検証装置１５０は、検証結果（受理又は不受理）をクエリに対する応答として照合装置１４０に返し、照合装置１４０は、検証結果（受理又は不受理）を照合要求装置１２０に送信するようにしてもよい。
【００３２】
登録要求装置１１０は、登録用の第１の二値ベクトルXの各要素{ｘi}(i=1,…,n)の暗号データ（Enc(xi) (i=1,…,n)）と、前記各要素に関する第１の評価値（演算結果）（例えば図４、図９、図１０のEnc(1-2xi) (i=1,…,n)、又は図１４のEnc(Ai)）の少なくとも一方を、前記暗号鍵(pk)で暗号化した暗号データを記憶装置１３０に送信する。記憶装置１３０は、暗号化された登録データを記憶する。なお、暗号鍵（公開鍵）、復号鍵（秘密鍵）は、好ましくは、加法に関して準同型性を有する公開鍵暗号方式が用いられる。あるいは、暗号方式として、乗法準同型性を有する公開鍵暗号方式を用いてもよい。あるいは、Somewhat準同型（somewhat homomorphic encryption scheme）のように、加法と乗法に関して準同型性を有する公開鍵暗号方式を用いてもよい。
【００３３】
登録要求装置１１０と照合要求装置１２０は、それぞれ、登録用クライアントと認証用クライアントを構成してもよい。登録用クライアントと認証用クライアントは、登録と照合を同一の装置で行う一体型の装置構成としてもよいし、あるいは登録と照合を別々の装置で行うようにしてもよい。記憶装置１３０と照合装置１４０は、クライアントからの要求を受けて登録、照合の処理を行うサーバ（データベースサーバ、認証サーバ）として構成してもよい。記憶装置１３０と照合装置１４０は一体のサーバとして構成してもよい。
【００３４】
＜第１形態（First Mode）＞
本発明の一形態において、図４を参照すると、登録要求装置１１０は、登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］について、各要素{xi}(i=1,…,n)に関する第１の演算値(1 - 2xi) (i=1,…,n)を、公開鍵(pk)を用いた加法準同型暗号で暗号化した第１の暗号データ（第１のテンプレート）（Enc(pk, (1 - 2xｉ))） (i=1,…,n)と、
各要素{xi}(i=1,…,n)の第２の演算値（Σ[i=1 to n] xi）を公開鍵(pk)で暗号化した第５の暗号データ（第２のテンプレート）（Enc(pk, Σ[i=1 to n] xi)）
を記憶装置１３０に送信するようにしてもよい。記憶装置１３０は、前記第１、第２のテンプレートを登録データとして記憶する。なお、演算子Σ[i=1 to n]はiが１からnまでの総和演算を表し、
Σ[i=1 to n] O(i)=O(1)+…＋O(n)
である。
【００３５】
照合装置１４０は、照合要求装置１２０からの照合要求に対して、
乱数（S）を生成し、
前記第１の暗号データ（Enc(pk, (1 - 2xi))） (i=1,…,n)を暗号化したまま、スカラー演算により、乱数Ｓを乗算した第２の暗号データ（Enc(pk, S(1 - 2x1)),…,Enc(pk, S(1 - 2xn))）を求めるようにしてもよい。
照合装置１４０は、第２の暗号データ（Enc(pk, S(1 - 2x1)),…,Enc(pk, S(1 - 2xn))）を、照合要求装置１２０に送信するようにしてもよい。
【００３６】
照合要求装置１２０は、照合装置１４０から送信された第２の暗号データ（Enc(pk, S(1 - 2x1)),…,Enc(pk,S(1 - 2xn))）の各々に、登録用のn次元の第２の二値ベクトルY=[y1,…,yn]の各要素{ｙi}(i=1,…,n)をスカラー演算で乗算した値の総和である第３の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi))を求める。そして、照合要求装置１２０は、第３の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi))を照合装置１４０に送信する。
【００３７】
照合装置１４０は、照合要求装置１２０から送信された第３の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi))から、乱数（S）を削除した第４の暗号データ（Enc(pk, Σ[i=1 to n] (1 - 2xi)yi)）を求める。
その際、照合装置１４０は、第３の暗号データに、乱数（S）の逆数（S＾(-1)）（＾は冪乗演算子）をスカラー演算して第３の暗号データから乱数（S）を除去した第４の暗号データ（Enc(pk, Σ[i=1 to n] (1 - 2xi)yi))を求める。
照合装置１４０は、第４の暗号データ（Enc(pk, Σ[i=1 to n] (1 - 2xi)yi)）と、記憶装置１３０に登録された前記第５の暗号データ（Enc(pk, Σ[i=1 to n] xi)）とを暗号化したまま加算することで（準同型加算）、前記第１、第２の二値ベクトルの距離の暗号データ（=Enc(pk, dH(X,Y))=Enc(pk, (Σ[i=1 to n] xi) + (Σ[i=1 to n] (1 - 2xi)yi))を求める。そして、照合装置１４０は、前記第１、第２の二値ベクトルの距離の暗号データ（=Enc(pk, dH(X,Y))を、クエリとして、検証装置１５０に送信する。
【００３８】
検証装置１５０は、暗号データ（Enc(pk, dH(X,Y))）を、秘密鍵（sk）を用いて、復号する（Dec(sk, Enc(pk, dH(X,Y)))）。
そして、検証装置１５０は、復号の結果得られた前記第１、第２の二値ベクトルのハミング距離（dH(X,Y))と、閾値ｔとの比較に基づき（dH(X,Y))<=t）、受理、不受理を出力する。
【００３９】
＜第１形態（First Mode）:変形例１＞
あるいは、本発明の一形態においては、図９を参照すると、登録要求装置１１０は、前記登録用の第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝(i=1,…,n)を公開鍵(pk)で暗号化した暗号データEnc(pk, x1), …,Enc(pk, xn）を記憶装置１３０に送信する。記憶装置１３０は、前記第１の二値ベクトルXの各要素｛xi｝の前記暗号データ(Enc(pk, xi)）(i=1,…,n)を暗号化したまま、前記第１の二値ベクトルXの各要素｛xi｝に関する第１の演算値（Enc(pk, S(1 - 2xi))）(i=1,…,n)、第２の演算値（Enc(pk, Σ[i=1 to n] xi)）を計算し、それぞれ、第１の暗号データ（テンプレート）（Enc(pk, S(1 - 2xi)) (i=1,…,n)）、第２の暗号データ（テンプレート）（Enc(pk, Σ[i=1 to n] xi)）として記録する。
【００４０】
照合装置１４０は、照合要求装置１２０からの照合要求に対して、
乱数（Ｓ）を生成し、
前記第１の暗号データを暗号化したまま、乱数(S)をスカラー演算した第３の暗号データ（（Enc(pk, S(1 - 2x1)), …,Enc(pk, S(1 - 2xn))）を求める。
そして、照合装置１４０は、第３の暗号データを照合要求装置１２０に送信する。
【００４１】
照合要求装置１２０は、照合装置１４０からの前記第３の暗号データの各々を暗号化したまま、登録用の第２の二値ベクトルの各要素をスカラー演算で乗算した値の総和である第４の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi)）を求める。
そして、照合要求装置１２０は、第４の暗号データを照合装置１４０に送信する。これ以降の照合装置１４０、検証装置１５０の処理は上記した第１形態と同一である。
【００４２】
＜第１形態（First Mode）:変形例２＞
あるいは、本発明のさらなる一形態においては、図１０を参照すると、登録要求装置１１０は、前記登録用の第１の二値ベクトルの各要素を公開鍵(pk)で暗号化した暗号データ（Enc(pk, x1)), …,Enc(pk, xn）)を記憶装置１３０に送信する。記憶装置１３０は、前記第１の二値ベクトルの各要素の暗号データを記録する。
【００４３】
照合装置１４０は、照合要求装置１２０からの照合要求に対して、
前記第１の二値ベクトルの各要素｛xi｝の暗号データ（Enc(pk,xi)）(i=1,…,n)を暗号化したまま、前記第１の二値ベクトルの各要素｛xi｝に関する第１の演算値（1 - 2xi）(i=1,…,n)、第２の演算値（Σ[i=1 to n] xi)の第１の暗号データ（Enc(pk, (1 - 2x1)), …,Enc(pk, (1 - 2xn))）、第２の暗号データ（Enc(pk, Σ[i=1 to n] xi)）を求める。
照合装置１４０は、さらに、乱数(S)を生成し、
第１の暗号データ（Enc(pk, (1 - 2x1)), …,Enc(pk, (1 - 2xn))に乱数(S)をスカラー演算した第３の暗号データ（Enc(pk, S(1 - 2x1)), …,Enc(pk, S(1 - 2xn))）を求める。
そして、照合装置１４０は、第３の暗号データ（Enc(pk, S(1 - 2x1)), …,Enc(pk, S(1 - 2xn))）を照合要求装置１２０に送信する。
【００４４】
照合要求装置１２０は、照合装置１４０からの前記第３の暗号データの各々（Enc(pk, S(1 - 2xi))）(i=1,…,n)を暗号化したまま、照合用の第２の二値ベクトルY=[y1,…,yn]の各要素{ｙi}(i=1,…,n)をスカラー演算で乗算した値の総和である第４の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi))を求める。
そして、照合要求装置１２０は、第４の暗号データ（Enc(pk, S Σ[i=1 to n] (1 - 2xi)yi))を照合装置１４０に送信する。これ以降の照合装置１４０、検証装置１５０の処理は上記した第１形態と同一である。
【００４５】
＜第２形態（Second Mode）＞
本発明の第２の形態において、登録要求装置１１０に、登録用のn次元の二値ベクトルX=[x1,…,xn]に対して作用させる第１の変換関数f1が予め設定されているものとする。また、照合要求装置１２０には、照合用のn次元の二値ベクトルY=[y1,…,yn]に対して作用させる第２の変換関数f2が設定されているものとする。
【００４６】
第１の変換関数f1は、例えば以下で与えられる。
A=f1(X)=FX+d
ここで、Aはn次元の変換値ベクトルである。Fは、変換係数{ai,j}(i=1,…,n,j=1,…,n)をi行、j列の要素（成分）とするn×nの変換行列である。dは変換係数{ai,n+1}(i=1,…,n）を有するn次元ベクトル（オフセット）である。
【００４７】
第２の変換関数f2は、例えば以下で与えられる。
B=f2(Y)=EY
ここで、Bはn次元の変換値ベクトルである。Eは、変換係数{bi,j}(i=1,…,n,j=1,…,n)をi行、j列の要素（成分）とするn×nの変換行列である。登録要求装置１１０において、第１の変換関数f1は、二値ベクトルXを入力パラメータとし、変換値ベクトルAを出力パラメータとするサブルーチンとして実装するようにしてもよい。照合要求装置１２０において、第２の変換関数f2は二値ベクトルYを入力パラメータとし、変換値ベクトルBを出力パラメータとするサブルーチンとして実装するようにしてもよい。以下、図１４を参照して、第２の形態について説明する。
【００４８】
登録要求装置１１０は、登録用の二値ベクトルXに対して第１の変換関数f1を施すことで、変換値ベクトル[A１,…,An]を求める。
[A１,…,An]T=f1[x1,…,xn]T
なお、上付き文字（Supescript）Tは、転置（transpose）演算子である。
【００４９】
登録要求装置１１０は、第１のテンプレートとして、第１の変換値Ai（i=1,…,n）を公開鍵(pk)で暗号化した暗号データEnc(pk,A1),…,Enc(pk,An)を生成する。登録要求装置１１０は、暗号データEnc(pk,A1),…,Enc(pk,An)を記憶装置１３０に送付する。また登録要求装置１１０は第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝(i=1,…,n)を公開鍵(pk)で暗号化した暗号データ（Enc(pk, x1), …,Enc(pk, xn）)を記憶装置１３０に送信する。
【００５０】
照合装置１４０は、照合要求装置１２０から照会要求を受けると、
記憶装置１３０から第１の変換値の暗号データ（Enc(pk,A1),…,Enc(pk,An)）を取得する。また、照合装置１４０は、記憶装置１３０から暗号データ（Enc(pk, x1), …,Enc(pk, xn）)を取得する。
照合装置１４０は、第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）を求める。
また、照合装置１４０は、乱数（S）を生成し、
前記第１の変換値の暗号データ（Enc(pk, A1),…,Enc(pk, An)）の各々に対して、乱数（S）のスカラー演算により、暗号データ（Enc(pk, SA1),…,Enc(pk, SAn)）を求める。
そして、照合装置１４０は、求めた暗号データ（Enc(pk, SA1),…,Enc(pk, SAn)）を照合要求装置１２０に送信する。
【００５１】
照合要求装置１２０は、抽出された照合用のn次元の二値ベクトルY=[y1,…,yn]に対して第２の変換関数f2を演算することで第２の変換値(B１,…,Bn)を求める。
さらに、照合要求装置１２０は、照合装置１４０から受信した暗号データEnc(pk, SAi) (i=1,…,n)を暗号化したまま、第２の変換値(Bi) (i=1,…,n)との演算により、n個の前記第１の変換値（変換ベクトル）[A1,…,An]に乱数を乗算した値[SA1,…,SAn]と、第２の変換値（変換ベクトル）[B1,…,Bn]の要素を互いに乗算した値の総和の暗号データ（Enc(pk, Σ[i=1 to n] SAｉBｉ)）を求める。
そして、照合要求装置１２０は、暗号データ（Enc(pk, Σ[i=1 to n] SAｉBｉ)）をレスポンスとして照合装置１４０に送付する。
【００５２】
照合装置１４０は、前記レスポンス（暗号データ）（Enc(pk, Σ[i=1 to n] SAｉBｉ)）に、前記乱数（S）の逆数（S＾(-1)）をスカラー演算し、前記レスポンスから前記乱数（S）を除去して、n個の前記第１の変換値（変換ベクトル）[A1,…,An]と第２の変換値（変換ベクトル）[B1,…,Bn]の要素を互いに乗算した値の総和の暗号データ（Enc(pk, Σ[i=1 to n] AｉBｉ)）（ベクトルAとBの内積の暗号データ）を求める。
照合装置１４０は、
暗号データ（Enc(pk, Σ[i=1 to n] AｉBｉ)）と、
記憶装置１３０に登録された暗号データ（第２テンプレート）（Enc(pk, Σ[i=1 to n] xi)）と、を暗号化したまま加算した暗号データを求める。この暗号データは、ベクトルXとYのハミング距離dH(X,Y)の暗号データEnc(pk, dH(X,Y))である。
【００５３】
第１の変換関数f1におけるn(n+1)個の変換係数{ai,j}(i=1,…,n,j=1,…,n+1)と、第２の変換関数f2におけるn^2個の変換係数{bi,j}(i,j=1,…,n)は、第１、第２の変換値Ai, Bi（i=1,…,n）が、
Σ[i=1 to n] AｉBｉ = Σ[i=1 to n] （1−2xｉ)yi  
が成り立つように設定されている。すなわち、ベクトルAとBの内積とΣ[i=1 to n] xiとを加算した値（Σ[i=1 to n] AｉBｉ＋Σ[i=1 to n] xi）は、
Σ[i=1 to n] （1−2xｉ)yi＋Σ[i=1 to n] xi
となり、ベクトルXとYのハミング距離dH(X,Y)である。すなわち、Σ[i=1 to n] AｉBｉは、二値ベクトルXとYのハミング距離dH(X,Y)の第１分割値、Σ[i=1 to n] xiは該ハミング距離dH(X,Y)の第２分割値である。
【００５４】
照合装置１４０は、前記ベクトルXとYのハミング距離dH(X,Y)の暗号データEnc(pk, dH(X,Y))を、検証装置１５０に送信する。
検証装置１５０は、暗号データEnc(pk, dH(X,Y))を秘密鍵skで復号する。
検証装置１５０、復号したベクトルXとYのハミング距離dH(X,Y)が閾値ｔ以下であれば受理する。
【００５５】
＜第２形態（Second Mode）:変形例１＞
あるいは、本発明のさらなる一形態においては、図１５を参照すると、登録要求装置１１０は、登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の暗号データ（Enc(pk, xi)）（i=1,…,n）を記憶装置１３０に送付する。
【００５６】
記憶装置１３０は、第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝(i=1,…,n)の暗号データ（Enc(pk, xi)）（i=1,…,n）を取得し、第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）を求める。また、記憶装置１３０は、第１の二値ベクトルXの各要素｛xi｝(i=1,…,n)を暗号化したまま第１の二値ベクトルXに第１の変換関数f1を施すことで、n個の第１の変換値{Ai} (i=1,…,n)の暗号データEnc(pk, Ai) (i=1,…,n)を求める手段を備えている。記憶装置１３０は、前記n個の第１の変換値の暗号データ（Enc(pk, Ai) (i=1,…,n)）と、前記第１の二値ベクトルの要素の総和を暗号化した暗号データ（Enc(pk, Σ[i=1 to n] xi)）を記録する。
【００５７】
照合装置１４０は、照合要求装置１２０から照会要求を受けると、記憶装置１３０からn個の第１の変換値の暗号データを取得し、乱数（S）を生成する。
照合装置１４０は、前記乱数Sを前記n個の第１の変換値の暗号データにそれぞれスカラー演算して暗号データ（Enc(pk, SAi) (i=1,…,n)）を求める。
そして、照合装置１４０は、暗号データ（Enc(pk, SAi) (i=1,…,n)）を照合要求装置１２０に送信する。
【００５８】
照合要求装置１２０は、照合用のn次元の第２の二値ベクトルY=[y1,…,yn]に対して、第２の変換関数f2を作用させることで、n個の第２の変換値（変換ベクトル）[B１,…,Bn]を求める。
また、照合要求装置１２０は、照合装置１４０から受信した暗号データ（Enc(pk, SAi)）(i=1,…,n)を暗号化したままスカラー演算することで、前記第１の変換値（Ai）の乱数（S）を乗算した値に第２の変換値（Bi）を乗じた値の暗号データEnc(pk, SAｉBｉ) (i=1,…,n) を求める。
そして、照合要求装置１２０は、これらの暗号データの総和（Enc(pk, Σ[i=1 to n] SAｉBｉ)）をレスポンスとして照合装置１４０に送付する。
【００５９】
照合装置１４０は、前記レスポンス（Enc(pk, Σ[i=1 to n] SAｉBｉ)）に、前記乱数Sの逆数をスカラー演算し前記レスポンスから前記乱数Sを除去して、n個の前記第１の変換値（変換ベクトル）[A1,…,An]と第２の変換値（変換ベクトル）[B1,…,Bn]を互いに乗算した値の総和の暗号データ（Enc(pk, Σ[i=1 to n] AｉBｉ)）（ベクトルAとBの内積の暗号データ）を求める。
照合装置１４０は、
前記ベクトルAとBの内積の暗号データ（Enc(pk, Σ[i=1 to n] AｉBｉ)）と、
記憶装置１３０に登録された暗号データ（第２テンプレート）（Enc(pk, Σ[i=1 to n] xi)）と、を加算（準同型加算）した暗号データを求める。
（Σ[i=1 to n] AｉBｉ）＋（Σ[i=1 to n] xi）＝（Σ[i=1 to n] （1−2xｉ)yi）＋（Σ[i=1 to n] xi）
が成り立つ。
すなわち、暗号データ（Enc(pk, Σ[i=1 to n] AｉBｉ)）と暗号データ（第２テンプレート）（Enc(pk, Σ[i=1 to n] xi)）との加算は、二値ベクトルXとYのハミング距離dH(X,Y)の暗号データとなる。照合装置１４０は、二値ベクトルXとYのハミング距離の暗号データを、検証装置１５０に送信する。検証装置１５０は、二値ベクトルXとYのハミング距離の暗号データを秘密鍵skで復号する。検証装置１５０は、復号値（ハミング距離）が閾値ｔ以下であるか否か判定し、閾値ｔ以下であれば、受理し、ｔを超える場合、不受理とする。
【００６０】
＜第２形態（Second Mode）：変形例２＞
あるいは、本発明のさらなる一形態においては、図１６を参照すると、登録要求装置１１０は、登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の暗号データ（Enc(pk, xi)（i=1,…,n））を記憶装置１３０に送付する。記憶装置１３０は、第１の二値ベクトルの各要素の暗号データを記録する。
【００６１】
照合装置１４０は、照合要求装置１２０から照会要求を受けると、記憶装置１３０から第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の暗号データ（Enc(pk, xi)）（i=1,…,n）を取得し、第１の二値ベクトルXの各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）を求める。なお、第１の二値ベクトルXの各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）は記憶装置１３０で求める構成としてもよい。
【００６２】
照合装置１４０は、第１の二値ベクトルX＝［x1,…,xn］の要素｛xi｝の暗号データ（Enc(pk, xi)）（i=1,…,n）を暗号化したまま第１の変換関数f1を作用させ、n個の第１の変換値{Ai} (i=1,…,n)の暗号データEnc(pk, Ai) (i=1,…,n)を求める手段を備えている。さらに、乱数（S）を生成し、前記乱数（S）を前記n個の第１の変換値の暗号データにそれぞれスカラー演算して暗号データEnc(pk, SAi) (i=1,…,n)を求める。
そして、照合装置１４０は、暗号データEnc(pk, SAi) (i=1,…,n)を照合要求装置１２０に送信する。
【００６３】
照合要求装置１２０は、照合用のn次元の第２二値ベクトルY=[y1,…,yn]に対して第２の変換関数f2を作用させてn個の第２の変換値（変換ベクトル）[B１,…,Bn]を求める。
照合要求装置１２０は、照合装置１４０から受信した暗号データEnc(pk, SAi) (i=1,…,n)を暗号化したままスカラー演算し、前記第１の変換値（Ai）に乱数（S）を乗算した値に第２の変換値（Bi）(i=1,…,n)を乗じた値の暗号データ（Enc(pk, SAｉBｉ)） (i=1,…,n) を求める。
そして、照合要求装置１２０は、暗号データ（Enc(pk, SAｉBｉ)） (i=1,…,n)の総和（Enc(pk, Σ[i=1 to n] SAｉBｉ)）を、レスポンスとして照合装置１４０に送付する。これ以降の照合装置１４０と検証装置１５０の処理は、前記第２の形態と同一である。
【００６４】
＜第２形態（First Mode）：変形例３＞
あるいは、本発明のさらなる一形態においては、図１９を参照すると、登録要求装置１１０は、登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］の各要素{xi}の暗号データ（Enc(pk, xi)）（i=1,…,n）を記憶装置１３０に送付する。記憶装置１３０は、第１の二値ベクトルの各要素の暗号データを記録する。
【００６５】
照合装置１４０は、照合要求装置１２０から照会要求を受けると、
記憶装置１３０からn次元の第１の二値ベクトルの各要素の暗号データ（Enc(pk, xi)）（i=1,…,n）を取得し、第１の二値ベクトルXの各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）を求める。なお、第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の総和の暗号データ（Enc(pk, Σ[i=1 to n] xi)）は記憶装置１３０で求める構成としてもよい。
照合装置１４０は、第１の変換関数f1の第１群の変換係数{ai,j}(i=1,…,n,j=1,…,n+1)を生成する。
照合装置１４０は、前記ｎ（ｎ＋１）個の第１群の変換係数{ai,j}(i=1,…,n,j=1,…,n+1)と第１の二値ベクトルX＝［x1,…,xn］の各要素｛xi｝の暗号データに基づき、n個の第１の変換値{Ai} (i=1,…,n)の暗号データEnc(pk, Ai) (i=1,…,n)を求める。
照合装置１４０は、さらに、乱数（S）を生成し、前記乱数（S）を前記n個の第１の変換値{Ai} (i=1,…,n)の暗号データEnc(pk, Ai) (i=1,…,n)にそれぞれスカラー演算して暗号データEnc(pk, SAi) (i=1,…,n)を求める。
そして、照合装置１４０は、暗号データEnc(pk, SAi) (i=1,…,n)を照合要求装置１２０に送信する。
照合装置１４０は、さらに、前記ｎ（ｎ＋１）個の第１群の変換係数{ai,j}(i=1,…,n,j=1,…,n+1)の生成に用いたｎ×n個の第２群の変換係数{bi,j} (i,j=1,…,n)を照合要求装置１２０に送信する。
【００６６】
照合要求装置１２０は、照合装置１４０から送信されたｎ×n個の第２群の変換係数｛bi,j}(i,j=1,…,n)からなる第２の変換関数f2を、照合用のn次元の第２の二値ベクトルY=[y1,…,yn]に作用させた演算結果であるn個の第２の変換値(B１,…,Bn)を求める。
照合要求装置１２０は、照合装置１４０から受信した暗号データEnc(pk, SAi) (i=1,…,n)を暗号化したままスカラー演算し、前記第１の変換値{Ai} (i=1,…,n)の乱数（S）倍に第２の変換値（Bi) (i=1,…,n)を乗じた値の暗号データ（Enc(pk, SAｉBｉ)） (i=1,…,n)を求める。
そして、照合要求装置１２０は、これらの暗号データ（Enc(pk, SAｉBｉ)） (i=1,…,n)の総和（Enc(pk, Σ[i=1 to n] SAｉBｉ)）を、レスポンスとして照合装置１４０に送付する。これ以降の照合装置１４０と検証装置１５０の処理は、前記第２の形態と同一である。
【００６７】
＜第３形態（Thrid Mode）＞
本発明の第３形態において、図２２を参照すると、登録要求装置１１０は、前記登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］について、各要素{xi}(i=1,…,n)に関する第１の演算値(2xi-1)を公開鍵(pk)を用いた加法準同型暗号で暗号化した第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶装置１３０に送信する。記憶装置１３０は、前記第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶する。
【００６８】
照合要求装置１２０から照合要求を受けた照合装置１４０は、第１乃至第３の乱数(bi, ai, ri) (i=1,…,n)を生成する。
照合要求装置１２０は、第１の乱数{bi} (i=1,…,n)の暗号データを、照合要求装置1２０に送信する。
照合要求装置１２０は、照合用の二値ベクトルY=[y1,…,yn]の各要素{yi}を、前記第１の乱数{bi} の暗号データ（Enc(pk,bi)） (i=1,…,n)にスカラー演算して、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を求める。
そして、照合要求装置１２０は、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を照合装置１４０に送信する。
【００６９】
照合装置１４０は、
照合要求装置１２０からの前記第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)と、
記憶装置１３０からの前記第１の暗号データ（Enc(pk, (2xi-1))）(i=1,…,n)と、
前記第１乃至第３の乱数(bi, ai, ri) (i=1,…,n)と、
に基づき、
前記第１の暗号データ（Enc(pk, (2xi-1))）に、前記第２の乱数｛ai｝をスカラー演算で乗算した値の第３の暗号データ（Enc(pk, ai(2xi-1))） (i=1,…,n)と、
前記第２の暗号データ（Enc(pk, bi(2yi-1))）に、第３の乱数(ri)をスカラー演算した値の第４の暗号データ（Enc(pk, biri(2yi-1))） (i=1,…,n)と、を求める。
さらにｍ照合装置１４０は、前記第１乃至第３の乱数（bi, ai, ri）の積のハッシュ値（H(aibiri)） (i=1,…,n)を生成する。
照合装置１４０は、
前記第３の暗号データ（Enc(pk, ai(2xi-1))） (i=1,…,n)と、
前記第４の暗号データ（Enc(pk, biri(2yi-1))） (i=1,…,n)と、
前記ハッシュ値（H(aibiri)） (i=1,…,n)を検証装置１５０に送信する。その際、照合装置１４０では、前記第３、第４の暗号データ（Enc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))）と前記ハッシュ値（H(aibiri)）(i=1,…,n)は、インデクスiに関する順序をシャッフルして送信するようにしてもよい。
【００７０】
検証装置１５０は、
秘密鍵(sk)を用いて前記第３の暗号データ（Enc(pk, ai(2xi-1))）と、前記第４の暗号データ（Enc(pk, biri(2yi-1))）を復号した第１復号結果（ｚa）と第２の復号結果（ｚb）を求める。
検証装置１５０は、前記第１、第２の復号結果の積のハッシュ値（H(ｚaｚｂ)）を計算する。
そして、検証装置１５０は、前記ハッシュ値H（(ｚaｚｂ)）と、照合装置１４０から受信したハッシュ値（H(aibiri)）とについて、不一致の個数が所定値以下であるか否かを判定する。
検証装置１５０は、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする。
【００７１】
＜第３形態（Thrid Mode）；変形例１＞
第３形態の変形例として、図２３を参照すると、登録要求装置１１０は、前記登録用のn次元の第１の二値ベクトルX＝［x1,…,xn］について、各要素{xi}(i=1,…,n)を公開鍵(pk)で暗号化した第１の暗号データ（Enc(pk, xi)) (i=1,…,n)を記憶装置１３０に送信する。記憶装置１３０は、前記第１の暗号データ（Enc(pk, xi)） (i=1,…,n)を記憶する。
【００７２】
照合要求装置１２０から照合要求を受けた照合装置１４０は、第１乃至第３の乱数(bi, ai, ri) (i=1,…,n)を生成する。
また、照合装置１４０は、記憶装置１３０から、暗号データ（Enc(pk, xi)） (i=1,…,n)を受け取り、これらを暗号化したまま、スカラー演算、加法準同型演算により、第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を生成する。
照合装置１４０は、第１の乱数{bi} (i=1,…,n)の暗号データ（Enc(pk,bi)） (i=1,…,n)を照合要求装置1２０に送信する。
照合要求装置１２０は、照合用の二値ベクトルY=[y1,…,yn]の各要素{yi}の演算結果(2yi-1) (i=1,…,n)を、前記第１の乱数の暗号データ（Enc(pk,bi)） (i=1,…,n)にスカラー演算して、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を求める。
そして、照合要求装置１２０は、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を照合装置１４０に送信する。これ以降の照合装置１４０、検証装置１５０の処理は上記第３形態と同様である。あるいは、記憶装置１３０が、登録要求装置１１０から暗号データ（Enc(pk, xi)） (i=1,…,n)を受け取り、これらを暗号化したまま、スカラー演算、加法準同型演算により、第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を生成し、登録データとして記憶する構成としてもよい。
【００７３】
＜第３形態（Third Mode）：変形例２＞
本発明の第３の形態の変形例２において、図２５を参照すると、登録要求装置１１０は、n次元の第１の二値ベクトルX＝［x1,…,xn］について、各要素{xi}(i=1,…,n)に関する第１の演算値(2xi-1)を公開鍵(pk)を用いた加法準同型暗号で暗号化した第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶装置１３０に送信する。
【００７４】
記憶装置１３０は、前記第１の二値ベクトルX＝［x1,…,xn］の各要素{xi}(i=1,…,n)の第１の演算値の暗号データ（Enc(pk, (2xi-1))）(i=1,…,n)に対して、乱数（ci）(i=1,…,n)(ci∈Fq)をそれぞれ生成し、前記各暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)に前記各乱数ci(i=1,…,n)をスカラー演算した暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)を生成する手段を備えている。
また、記憶装置１３０は、前記各乱数ciの２乗(ci^2)のハッシュ値（H(ci^2)）を生成する手段を備えている。
記憶装置１３０は、前記各乱数ciをスカラー演算した暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)と前記ハッシュ値（H(ci^2)）(i=1,…,n)を検証装置１５０に送信する。
【００７５】
検証装置１５０は、記憶装置１３０から送信された各暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)を、秘密鍵(sk)を用いて復号して各復号値（zi）のハッシュ値（H（zi^2））を求める。
検証装置１５０は、各復号値（zi）のハッシュ値（H（zi^2）が、記憶装置１３０から送信された対応するハッシュ値（H(ci^2)）と一致するか判定する。
検証装置１５０は、例えば、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とする。記憶装置１３０は、検証装置１５０での検証結果が受理の場合、前記第１の演算値の暗号データを記憶する。
【００７６】
＜第４形態（Fourth Mode）＞
本発明の第４形態において、図２６を参照すると、登録要求装置１１０は、前記登録用の第１の二値ベクトルX＝［x1,…,xn］について、各要素｛xi｝に関する第１の演算値(2xi-1)を公開鍵(pk)を用いた加法準同型暗号で暗号化した第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶装置１３０に送信する。記憶装置１３０は、前記第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶する。
【００７７】
照合要求装置１２０から照合要求を受けた照合装置１４０は、第１、第２の乱数(bi, ai)(i=1,…,n)を生成する。
照合装置１４０は、第１の乱数{bi} (i=1,…,n)を、公開鍵(pk)を用いて暗号化した暗号データ（Enc(pk, bi)） (i=1,…,n)を照合要求装置1２０に送信する。
【００７８】
照合要求装置１２０は、照合用の二値ベクトルY=[y1,…,yn]の各要素{yi}について演算値(2yi-1) (i=1,…,n)を、公開鍵(pk)を用いて暗号化した暗号データ（Enc(pk, (2yi-1))） (i=1,…,n)を求める。
さらに、照合要求装置１２０は、前記第１の乱数{bi} の暗号データEnc(pk,bi) (i=1,…,n)を暗号化したまま乗算して、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を求める。
そして、照合要求装置１２０は、第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)を照合装置１４０に送信する。
【００７９】
照合装置１４０は、生成した第２の乱数｛ai} (i=1,…,n)と、記憶装置１３０からの第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)とを乗算して、暗号データ（Enc(pk,ai(2xi-1))）(i=1,…,n)を求める。
照合装置１４０は、
該暗号データ（Enc(pk,ai(2xi-1))） (i=1,…,n)と、
照合要求装置１２０から送信された前記第２の暗号データ（Enc(pk, bi(2yi-1))） (i=1,…,n)とを、例えば暗号化したまま乗算して（乗法準同型）、
暗号データ（Enc(pk, aibi(2xi-1)(2yi-1))）を求める。
照合装置１４０は、さらに前記第１、第２の乱数の積（aibi）(i=1,…,n)のハッシュ値（H(aibi)）を生成する。
そして、照合装置１４０は、算出した該暗号データ（Enc(pk, aibi(2xi-1)(2yi-1))）と、該ハッシュ値（H(aibi)）を、検証装置１５０に送信する。その際、照合装置１４０は、該暗号データ（Enc(pk, aibi(2xi-1)(2yi-1))）と該ハッシュ値（H(aibi)） (i=1,…,n)について、インデクスiに関する順序をシャッフルして送信するようにしてもよい。
【００８０】
検証装置１５０は、秘密鍵(sk)を用いて、前記暗号データ（Enc(pk, aibi(2xi-1)(2yi-1))）(i=1,…,n)を復号して復号結果（ｚi）(i=1,…,n)を求める。
検証装置１５０は、復号値（ｚi）(i=1,…,n)のハッシュ値（H(ｚi)）を計算する。
検証装置１５０は、
該ハッシュ値（H(ｚi)）(i=1,…,n)と、
照合装置１４０から受信したハッシュ値（H(aibi)）(i=1,…,n)と、
について、不一致の個数が所定値以下であるか否かを判定する。
検証装置１５０は、例えば不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする。
【００８１】
＜第４形態（Fourh Mode）：変形例＞
本発明の第４の形態の変形例において、図２７を参照すると、登録要求装置１１０は、第１の二値ベクトルX＝［x1,…,xn］について、各要素｛xi｝に関する第１の演算値(2xi-1)を公開鍵(pk)を用いた乗法準同型暗号方式で暗号化した第１の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶装置１３０に送信する。
【００８２】
記憶装置１３０は、前記第１の二値ベクトルX＝［x1,…,xn］の各要素xiの第１の演算値の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)に対して乱数（ci）(i=1,…,n)(ci∈Fq)をそれぞれ生成し、前記各暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)に、乱数（ci）の暗号データEnc(pk,ci)を乗算した暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)を生成する手段を備えている。
また、記憶装置１３０は、前記各乱数（ci）の２乗のハッシュ値H(ci^2)を生成する手段を備えている。
記憶装置１３０は、暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)と前記ハッシュ値（H(ci^2)）(i=1,…,n)を検証装置１５０に送信する。
【００８３】
検証装置１５０は、記憶装置１３０から送信された各暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)を、秘密鍵（sk）を用いて復号する。
そして、検証装置１５０は、各暗号データ（Enc(pk, ci(2xi-1))） (i=1,…,n)の復号値（ｚi）のハッシュ値（H(zi^2)）(i=1,…,n)を求める。
検証装置１５０は、前記各ハッシュ値（H(zi^2)）(i=1,…,n)が、記憶装置１３０から送信された対応するハッシュ値（H(ci^2)）(i=1,…,n)と一致するか判定する。
検証装置１５０は、例えば、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とする。
記憶装置１３０は、検証装置１５０での検証結果が受理の場合、前記第１の演算値の暗号データ（Enc(pk, (2xi-1))） (i=1,…,n)を記憶する。
【００８４】
以下では、本発明の実施形態の説明の前に比較例を説明しておく。
【００８５】
まず、Modified-Elgamal暗号の各アルゴリズムの動作について説明する。鍵生成アルゴリズムは、まず、入力としてセキュリティパラメータ1^κを受け取る。
【００８６】
次に、位数がκビットの素数qである群Gとその生成元gを生成する。
2018110608.tif 000003
をランダムに選び、h=g^xとする（^は冪乗演算子）。
【００８７】
最後に、公開鍵pk=(g, h=g^x)及び秘密鍵sk=xを出力する。
【００８８】
暗号化アルゴリズムは、まず、公開鍵pk及びメッセージmを入力として受け取る。
【００８９】
次に、乱数ｒ
2018110608.tif 000004
をランダムに選ぶ。
【００９０】
次に、C[0]=g^r、C[1]=h^r・g^mを計算する。
【００９１】
最後に、暗号文C=(C[0], C[1])を出力する。
【００９２】
復号アルゴリズムは、まず、秘密鍵sk=x及び暗号文C=(C[0], C[1])を入力として受け取る。
【００９３】
次に、復号結果として、M=C[1]/(C[0]^x)を出力する。
【００９４】
あるメッセージmの暗号文
Enc(pk,m)=(C[0],C[1])=(g^r,h^r・g^m)
に対し、
Dec(sk, (c[0], c[1]))=c[1]/(c[0]^x)=g^m
となる。
【００９５】
復号アルゴリズムは、メッセージｍではなくg^mを返すものであってもよい。Modified-Elgamal暗号を用いると、暗号化したまま平文の加算や定数倍に対応する暗号文を計算できる。
【００９６】
加算の場合、公開鍵pk=(g, h=g^x)と２つのメッセージm及びm'の暗号文
C=Enc(pk,m) = (C[0], C[1]) = (g^r, h^r・g^m)、及び、
C'=Enc(pk,m') = (C'[0], C'[1]) = (g^r', h^r'・g^m')
に対し、
(C[0]・C'[0], C[1]・C'[1])= (g^{r+r'}, h^{r+r'}・g^{m+m'}) = Enc(pk,m+m')が成り立つ。
【００９７】
また、定数倍の場合、公開鍵pk=(g, h=g^x)、任意の定数z、及び暗号文c= Enc(pk,m)= (c[0], c[1]) = (g^r, h^r・g^m)に対し、
(c[0]^z, c[1]^z) = (g^{zr}, h^{zr}・g^{zm})=Enc(pk,zm)
が成り立つ。
【００９８】
すなわち、Enc(pk, x) = C, Enc(pk, x') = C'、整数zに対し、
加算を
Add(C, C') = (C[0]・C'[0], C[1]・C'[1])
スカラー演算を
Scl(ｚ, C) = (C[0]^z, C[1]^z)
と定めると、
Add(C, C') = Enc(pk, x+x' mod q)
Scl(z, C) = Enc(pk, zx mod q)
ただし、x+x' mod q、zx mod qは、x+x'、zｘを体Fq上で計算した結果である。
【００９９】
＜比較例＞
以下の比較例は、非特許文献１の開示に基づく。
登録用のデータをn次元ベクトル：
2018110608.tif 000005
で表す。ｎは所定の値（自然数）を表す。xi（i=1,…,n）は0乃至lのいずれかの値（例えば整数）をとる。
【０１００】
照合（認証）対象を表す対象データを
2018110608.tif 000006
とする。｛yi｝（i=1,…,n）は０乃至ｌのいずれかの値（例えば整数）をとる。
【０１０１】
照合システムにおける処理は、大別して、
・準備フェーズ、
・登録フェーズ、及び、
・照合フェーズを含む。図２を参照すると、準備として、例えば検証装置１５０は、セキュリティパラメータ1^κを用いて、公開鍵pk、秘密鍵skを生成し、公開鍵pkを公開する（Ｓ１００）。
【０１０２】
登録データ（n次元ベクトル）と照合データ（n次元ベクトル）の距離：dE2(X,Y)を、以下のように分割する。
【０１０３】
2018110608.tif 000007
・・・（１）
【０１０４】
2018110608.tif 000008
・・・（２）
【０１０５】
2018110608.tif 000009
・・・（３）
【０１０６】
登録要求装置１１０は、登録データX=[x1,…,xn]に関して、テンプレートとして、
n個の要素xｉ(i=1,…,n)の暗号データ:
Enc(pk, xi)    (i=1,…,n)
とn個の要素xｉの２乗の総和
2018110608.tif 000010
の暗号データ：
2018110608.tif 000011
を記憶装置１３０に送信する（Ｓ１０１）。
【０１０７】
記憶装置１３０は、
Enc(pk, xi)    (i=1,…,n),
2018110608.tif 000012
を登録識別子Id（Identity）等に対応して記憶する。
【０１０８】
照合要求装置１２０は、照合用データY=[y1,…,yn]を照合する場合、照合要求を照合装置１４０に送信する（Ｓ１０２）。
【０１０９】
照合装置１４０は、ユーザＩＤに基づき記憶装置１３０から登録テンプレート：
Enc(pk, x1),…, Enc(pk, xn)，
2018110608.tif 000013
を取得する（Ｓ１０３）。
【０１１０】
照合装置１４０は乱数Sを生成し（Ｓ１０４）、登録されたテンプレートEnc(pk, xi) (i=1,…,n)をスカラー演算則でS倍した暗号データ
Enc(pk, Sx1),…, Enc(pk, Sxn) 
を作成し、これらの暗号データを照合要求装置１２０に送信する（Ｓ１０５）。
【０１１１】
照合装置１４０は、乱数
2018110608.tif 000014
として、好ましくは、毎回異なる数を選択する。なお、照合装置１４０は、
2018110608.tif 000015
に関する暗号データ（第２テンプレート）
2018110608.tif 000016
は照合要求装置１２０に送信しない。
【０１１２】
照合要求装置１２０は、照合用データY=[y1,…,yn]から、
2018110608.tif 000017
を計算する。そして、照合要求装置１２０は、受信したEnc(pk, S)に対して、スカラー演算
2018110608.tif 000018
・・・(４)
により、
2018110608.tif 000019
・・・（５)
を生成する。すなわち、照合要求装置１２０が受け取った乱数Ｓの暗号データを、
Enc(pk, S) = C = (g^r, g^S・h^r) = (C[0], C[1])            ・・・(６)
とする。
【０１１３】
照合要求装置１２０は、Enc(pk, S) = C = (C[0], C[1])に対して、
2018110608.tif 000020
・・・(７)
を計算する。これは、式（５）の
2018110608.tif 000021
と等価である。
【０１１４】
また、照合要求装置１２０は、照合装置１４０から受け取ったn個の{Enc(pk, Sxi)}i(i=1,…,n)に対して、照合ベクトルの要素{yｉ}のスカラー演算
Scl((-2yｉ), Enc(pk, Sxi)) （i=1,…,n）により、n個の
Enc(pk, (-2yi)Sxi)＝Enc(pk, -2Sxiyi)（i=1,…,n）                  ・・・(８)
を求める。そして、準同型暗号の加法演算により、
2018110608.tif 000022
・・・(９)
を求め
2018110608.tif 000023
・・・(１０)
との準同型加算により、
2018110608.tif 000024
・・・(１１)
を求め、照合装置１４０に送信する（Ｓ１０６）。
【０１１５】
照合装置１４０は、受け取った暗号データEnc(pk, SD2)に対して、Sの逆数（S^(-1)＝S^(q-2) mod q）のスカラー演算
Scl（S^(-1), Enc(pk, SD2)）                      ・・・(１２)
を施し、
Scl(S^(-1), Enc(pk, SD2)) = Enc(pk, S^(-1)SD2) = Enc(pk, D2)      ・・・(１３)
により、
2018110608.tif 000025
・・・(１４)
を算出する。
【０１１６】
照合装置１４０は登録されたテンプレート
2018110608.tif 000026
と、
2018110608.tif 000027
とから、加法準同型により、距離dE2(X,Y)の暗号データ
2018110608.tif 000028
・・・(１５)
を求める。照合装置は１４０は、暗号データEnc(pk,dE2(X,Y))を検証装置１５０に送信する（Ｓ１０７）。
【０１１７】
検証装置は１５０、秘密鍵skを用いて距離の暗号データEnc(pk,dE2(X,Y))を復号し、
Dec(sk,Enc(pk,dE2(X,Y)))=dE2(X,Y)
を求め、該距離dE2(X,Y)が所定の閾値＝ｔ以下であるか否かを判定する（Ｓ１０８）。Modified Elgamal暗号では、復号結果はg^(dE2(X,Y))であり、これが、g^0、ｇ^1、・・・g^tのいずれかに一致するか否かを判定する。
【０１１８】
検証装置１５０は、検証結果（受理・不受理）を、照合装置１４０に返すようにしてもよい（Ｓ１０９）。
【０１１９】
＜比較例の問題点＞
二値ベクトルのハミング距離は多値ベクトルのユークリッド距離と同じ方法で算出できることから、上記した多値ベクトル型の生体情報をユークリッド距離dE2(X,Y)によって照合するシステムは二値ベクトル型の生体情報も扱えそうに思われる。
【０１２０】
二値ベクトル
2018110608.tif 000029
の各要素xiは、
xi＾2=xi  （i==1,…,n）    ・・・(１６)
が成り立つ。
【０１２１】
したがって、図２のＳ１０６で受信した｛Enc(pk, Sxi)｝ からEnc(pk, Sxi^2)が計算できることになる。
【０１２２】
前述したように、照合装置１４０では、照合要求装置１２０から送信されたEnc(pk,SD2)に対してSの逆数S^(-1)のスカラー演算により、Enc(pk,D2)を求め、加法準同型に基づきEnc(pk, D1)+Enc(pk, D2)を計算し、暗号化距離Enc(pk、dE2(X,Ｙ))として検証装置１５０に送信する。ここで、二値ベクトル型である場合、
2018110608.tif 000030
ならば、xi^2=xiであることから，照合要求装置１２０は、照合装置１４０から受け取った暗号データEnc(pk, Sxi)はEnc(pk, Sxi^2)と一致する。
【０１２３】
さらに、図３に示すように、Ｓ１０６において、照合要求装置１２０は、照合装置１４０から受け取った乱数Sの暗号データEnc(pk, S）を利用して、
2018110608.tif 000031
・・・(１７)
を計算し、照合装置１４０に送信する。すなわち、スカラー演算Scl(c, Enc(pk,S))より、Enc(pk, cS)を求める。
【０１２４】
また、
2018110608.tif 000032
・・・(１８)
より、
2018110608.tif 000033
・・・(１９)
を求め、スカラー演算
2018110608.tif 000034
・・・(２０)
より、
2018110608.tif 000035
・・・(２１)
を求める。上式（２１）をEnc(pk, cS)と暗号化したまま加算することで、以下が求まる。
【０１２５】
2018110608.tif 000036
・・・(２２)
【０１２６】
照合装置１４０は、照合要求装置１２０から送信された
2018110608.tif 000037
を、照合要求装置１２０から送信されたEnc(pk,SD2)であるものとして扱い、Sの逆数S^(-1)のスカラー演算を施してEnc(pk,D2)を求める。そして、加法準同型を用いて、Enc(pk,D2)とEnc(pk,D1)を加算したものを、暗号化距離Enc(pk、dE2(X,Ｙ))として、検証装置１５０に送信する。
【０１２７】
この場合、照合装置１４０が検証装置１５０に送信するEnc(pk、dE2(X,Ｙ))は以下で与えられる。
【０１２８】
2018110608.tif 000038
・・・(２３)
【０１２９】
検証装置１５０は、秘密鍵skを用いてEnc(pk、dE2(X,Ｙ))を復号する。復号結果（g^c）がg^0, g^1,…, g^t (tは閾値)のいずれかに一致するか判定し、判定結果を検証結果（いずれかに一致すれば受理）として出力する。
【０１３０】
このため、照合要求装置１２０において、ｔ以下のｃを選択することで、登録された生体情報Ｘと認証に用いられる生体情報Ｙの間の距離は、
D1+D2=c<=t                      ・・・(２４)
と算出される。したがって、図２の例の場合、必ず受理されるクエリを検証装置１５０に送付することができる。
【０１３１】
上記のとおり、生体情報が二値ベクトルの場合、盗聴者は、任意のユーザになりすまし可能である。
【０１３２】
虹彩(Iris Code）、掌紋(Competitive Code）などはエラー率が非常に低い二値ベクトル型の生体情報としてよく知られている。二つの生体情報が同一人物から抽出されたかどうかは二つの生体情報の間のハミング距離によって判定する。すなわち，ハミング距離が閾値以下ならば、同一人物、閾値よりも大きければ、違う人物と判定する。以下、図面を参照して、いくつかの実施形態について説明する。
【０１３３】
＜第１の実施形態＞
図４は、本発明の例示的な第１の実施形態を説明する図である。本実施形態では、n次元の二値ベクトル
2018110608.tif 000039
2018110608.tif 000040
のハミング距離を例えば以下のように分割する。
【０１３４】
2018110608.tif 000041
・・・(２５)
【０１３５】
2018110608.tif 000042
・・・(２６)
【０１３６】
2018110608.tif 000043
・・・(２７)
【０１３７】
上記のとおり、D1は照合用ベクトルYの値に依らない。
【０１３８】
準備フェーズにおける公開鍵、秘密鍵の生成（Ｓ１０）は、前述した通りである。
【０１３９】
登録要求装置１１０は、二値ベクトルX=[x1, …,xn]∈{0,1}nから
Enc(pk, 1-2x1),…,Enc(pk, 1-2xn)     ・・・(２８)
と、
2018110608.tif 000044
・・・(２９)
を記憶装置１３０に送信する（Ｓ１１）。
【０１４０】
記憶装置１３０は、
Enc(pk, 1-2xi)  (i=1,…,n)と
2018110608.tif 000045
を登録識別子Idに対応させて記憶する。
【０１４１】
照合装置１４０は、照合要求装置１２０から照合要求を受け取る（Ｓ１２）。照合装置１４０、記憶装置１３０からIdに関連して記憶された暗号データEnc(pk, 1-2x1),…,Enc(pk, 1-2xn)を受け取る（Ｓ１３）。照合装置１４０は、乱数Sを生成する（Ｓ１４）。そして、照合装置１４０は、乱数Sのスカラー演算
Scl(S, Enc(pk, 1-2xi)) (i=1,…,n)により、
暗号データEnc(pk, S(1-2xi)) (i=1,…,n)        ・・・(３０)
を求める。照合装置１４０は、該暗号データEnc(pk, S(1-2xi)) (i=1,…,n)を照合要求装置１２０に送信する（Ｓ１５）。
【０１４２】
照合要求装置１２０は、Y=[y1, ….,yn]∈{0,1}nと、照合装置１４０から受け取った
暗号データEnc(pk, S(1-2xi)) (i=1,…,n)
から、スカラー演算Scl(yi, Enc(pk, S(1-2xi)))より、
Enc(pk, S(1-2xi)yi) (i=1,…,n)          ・・・(３１)
を求め、これらを加算することで、
2018110608.tif 000046
・・・(３２)
を計算する。照合要求装置１２０は、Enc(pk,SD2)を照合装置１４０に送信する（Ｓ１６）。
【０１４３】
照合装置１４０は、照合要求装置１２０にEnc(pk,S)を送信しない。よって、照合要求装置１２０は、
2018110608.tif 000047
・・・(３３)
を算出することはできない。このため、クライアントはハミング距離を偽装できない。
【０１４４】
照合装置１４０は、照合要求装置１２０から送信された
2018110608.tif 000048
に対して、乱数Sの逆数S^(-1)をスカラー演算
2018110608.tif 000049
・・・(３４)
することで、
2018110608.tif 000050
・・・(３５)
を算出する。
照合装置１４０は、式（３５）のEnc(pk,D2)に記憶装置１３０に登録されたテンプレート
2018110608.tif 000051
・・・(３６)
を加算して、暗号化ハミング距離
Enc(pk,dH(X,Y))=Enc(pk,D1)+Enc(pk,D2)        ・・・(３７)
を求める。照合装置１４０は、暗号化ハミング距離Enc(pk,dH(X,Y))を検証装置１５０に送信する（Ｓ１７）。
【０１４５】
検証装置１５０は、秘密鍵skを用いてEnc(pk、dH(X,Ｙ))を復号する。検証装置１５０は、復号結果（ｄH(X,Y)）が、g^0, g^1,…, g^t (tは閾値)に一致するか確認する（Ｓ１８）。検証装置１５０は、検証結果（いずれかに一致すれば受理）として出力する（Ｓ１９）。
【０１４６】
図５は、本発明の第１の実施形態の構成を例示する図である。照合システム１００は、コンピュータシステム等による情報処理システムから構成される。第１の例示的な実施形態に係る照合システム１００は、登録要求装置１１０と、記憶装置１３０と、照合要求装置１２０と、照合装置１４０と、検証装置１５０とを有する。
【０１４７】
登録要求装置１１０は、登録情報抽出部１１１と、テンプレート生成部１１２、通信部１１３とを有する。
【０１４８】
記憶装置１３０は、情報を記憶するストレージデバイスを備えるほか、情報を処理する演算部を備えている。すなわち、記憶装置１３０は識別子管理部１３１と、登録データ生成部１３２と、登録データ記憶部１３３と、登録データ検索部１３４と、通信部１３５を有する。
【０１４９】
照合要求装置１２０は、照合要求生成部１２１と、照合情報抽出部１２２と、レスポンス生成部１２３と、通信部１２４を有する。
【０１５０】
照合装置１４０は、登録データ取得部１４１と、乱数生成部１４２と、暗号データ生成部１４３と、暗号化距離計算部１４４と、クエリ生成部１４５と、通信部１４６を有する。
【０１５１】
検証装置１５０は、鍵生成部１５１と、復号鍵記憶部１５２と、クエリ検証部１５３と、検証結果生成部１５４と、通信部１５５を有する。
【０１５２】
例えば、登録要求装置１１０と記憶装置１３０間、記憶装置１３０と照合装置１４０間、照合要求装置１２０と照合装置１４０間、照合装置１４０と検証装置１５０間は、各装置の通信部（不図示の送信機（インタフェース）と受信機（インタフェース）を備える）と、通信網（例えば、構内ネットワーク（Local Area Network : LAN）、あるいは、広域ネットワーク（Wide Area Network :WAN）等）を介して通信接続する構成としてもよい。あるいは、登録要求装置１１０、記憶装置１３０、照合装置１４０、照合要求装置１２０、検証装置１５０のうち、複数の装置を一つのユニットに実装し、各装置をユニット内のバス（装置間バスや装置内バス）で結合する構成としてもよい。また、登録要求装置１１０、記憶装置１３０、照合装置１４０、照合要求装置１２０は、検証装置１５０が公開した公開鍵（例えば検証装置１５０が作成した準同型暗号方式の暗号化鍵と復号鍵のペアのうちの前記暗号化鍵）を取得可能に構成されている。
【０１５３】
なお、照合システム１００においては、登録要求装置１１０と、照合要求装置１２０とをまとめて、「第１ノード」と表してもよい。照合システム１００においては、記憶装置１３０と、照合装置１４０とをまとめて、「第２ノード」と表してもよい。また、照合システム１００においては、検証装置１５０を、「第３ノード」と表してもよい。例えば登録要求装置１１０と照合要求装置１２０はクライアント装置、記憶装置１３０と照合装置１４０はサーバ装置、検証装置１５０はサーバ装置に通信接続する復号装置として構成してもよい。
【０１５４】
本実施形態に係る照合システム１００の動作について説明する。本発明の第１の例示的な実施形態に係る照合システム１００における処理について説明する。
【０１５５】
照合システム１００における処理は、大別して、
・準備フェーズ、
・登録フェーズ、及び、
・照合フェーズを含む。
【０１５６】
まず、各フェーズにおける処理の概要について説明する。本発明の第１の例示的な実施形態に係る照合システム１００では、加法、スカラー演算について準同型性を持つ準同型暗号方式を用いる。説明の便宜上、暗号方式は上記したModified Elgamal暗号を用いる。あるいは楕円Elgamal暗号、あるいは、Paillier暗号を用いてもよい。
【０１５７】
楕円Elgamal暗号は、有限体上の楕円曲線上の群に対して定義される。
【０１５８】
＜鍵生成＞：楕円曲線のパラメータa,b,p,q及び楕円曲線上の基点Gを入力として受け取り、公開鍵pk=G, H=x(*)G及び秘密鍵sk=xを出力する。ただし、メッセージ空間は体Fｑ＝0,1,…,q-1である。一般的に、ｑは128ビット以上の素数が選択される。
【０１５９】
＜暗号化＞：公開鍵pk及びメッセージm∈Fqを入力として受け取り、乱数
2018110608.tif 000052
を選択し、暗号文を、
C = (C[0] = R(*)G, C[1] = (m (*) G) (+) (r (*) H))        ・・・（３８）
を出力する。すなわち、
C[1] = (m + rx) (*) G                                  ・・・（３９）
を満たす。
【０１６０】
＜復号＞：秘密鍵sk及び暗号文C = (C[0], C[1])を入力として受け取り、
M = C[1] (-) (sk (*) C[0])を出力する。                  ・・・（４０）
すなわち、
C[1] (-) (sk (*) C[0]) = (m + rx) (*) G (-) x (*) (r (*) G) = m (*)G  ・・・（４１）
を満たす。復号アルゴリズムは、メッセージmではなくm(*)Gを返すもので構わない。
【０１６１】
上記の各アルゴリズムでは、次の記法を用いている。
楕円曲線上の点AとBの加算：A (+) B
楕円曲線上の点AとBの減算：A (-) B
楕円曲線上の点Aのz倍：z (*) A
【０１６２】
準備フェーズにおいては、主として、セキュリティパラメータ1^κを用いて、公開鍵、及び、秘密鍵が生成される。
【０１６３】
登録フェーズにおいては、主として、準備フェーズで生成された公開鍵（暗号化鍵）を用いて、抽出された登録ベクトルが暗号化されたテンプレートが作成され、保存される。
【０１６４】
照合フェーズにおいては、主として、準備フェーズで生成された秘密鍵（復号鍵）を用いて、新たに抽出された照合ベクトルと一つの登録ベクトルとの間の距離が算出される。
【０１６５】
次に、照合システム１００が、上述した各フェーズにて実行する処理について詳細に説明する。
【０１６６】
図６は、準備フェーズにおいて、第１の例示的な実施形態に係る照合システム１００が実行する処理の一例を示すフローチャートである。図６を参照して、本実施形態に係る照合システム１００が、準備フェーズにて実行する処理について説明する。
【０１６７】
検証装置１５０における鍵生成部１５１は、セキュリティパラメータを受信し、受信したセキュリティパラメータを用いて、例えば、鍵生成アルゴリズムに従い、暗号化鍵(公開鍵)ｐｋ、及び、復号鍵（秘密鍵）skを生成する（ステップＡ１）。なお、生成される暗号化鍵、及び、復号鍵は、加法及びスカラー乗算に関して準同型性を有する公開鍵暗号方式（例えばModified Elgamal暗号）に準拠する。
【０１６８】
鍵生成部１５１は、生成した暗号化鍵pkを、照合システム１００において公開する（ステップＡ２）。
【０１６９】
鍵生成部１５１は、生成した復号鍵skを、復号鍵記憶部１５２に格納する（ステップＡ３）。
【０１７０】
なお、本実施形態に係る照合システム１００において、準備フェーズにて実行する処理は、図６に例示した様態に制限されるものでないことは勿論である。
【０１７１】
図７は、登録フェーズにおいて、第１の例示的な実施形態に係る照合システム１００が実行する処理の一例を示すフローチャートである。図７を参照して、第１の実施形態に係る照合システム１００が登録フェーズにて実行する処理について説明する。
【０１７２】
登録要求装置１１０における登録情報抽出部１１１は、登録対象の生体から生体情報（「登録ベクトル」と呼ぶ）
X=[x[1],…,x[n]]
を抽出する（ステップＢ１）。なお、ここでは、単に演算式の明確化のため、xi (i=1,…,n)の添え字iを角括弧内とした表記x[i](i=1,…,n)で表す。
【０１７３】
次に、登録要求装置１１０におけるテンプレート生成部１１２は、暗号化鍵ｐｋを用いて、1-2xi(i=1,…,n)を暗号化したn個のテンプレートを生成する。
Enc(pk, 1-2x[1])，…， Enc(pk, 1-2x[n])       ・・・(４２)
（ステップＢ２）。ステップＢ２で計算した暗号文を「第１テンプレート」とも呼ぶ。
【０１７４】
次に、登録要求装置１１０におけるテンプレート生成部１１２は、暗号化鍵ｐｋを用いて、x[1]+,…+x[n]を暗号化した１個のテンプレートを生成する（ステップＢ３）。
Enc(pk, x[1]+,…+x[n])                        ・・・(４３)
ステップＢ３で計算した暗号文を「第２テンプレート」とも呼ぶ。
【０１７５】
Enc(pk,1-2x[1])（=C1[1]と表す），
…,
Enc(pk,1-2x[n])（=C1[n]と表す），
Enc(pk, x[1]+…+x[n])（CC1と表す）          ・・・(４４)
【０１７６】
Modified-Elgamal暗号では、テンプレート生成部１１２はＺｑの中から複数の数rr1[1],…,r1[n]、及び、rr1を選ぶ。
【０１７７】
テンプレート生成部１１２は公開鍵ｐｋから、生成元ｇと、値ｈとを読み取り、二値ベクトルＸに関して以下の暗号文を作成する。
【０１７８】
(g^{r1[1]}, g^{1-2x[1]}×h^{r1[1]})=(C1[1][0], C1[1][1]) (=C1[1])
…,
(g^{r1[n]}, g^{1-2x[n]}×h^{r1[n]}) =(C1[n][0], C1[n][1])(=C1[n])}})
(g{rr1}, g{x[1]+…+x[n]}×h{rr1}))=(CC1[0],CC1[1]) (=CC1)
・・・(４５)
【０１７９】
次に、登録要求装置１１０におけるテンプレート生成部１１２は、第１テンプレートと第２テンプレートをまとめ、テンプレート
(C1[1],…, C1[n], CC1)                          ・・・(４６)
とする（ステップＢ４）。
【０１８０】
登録要求装置１１０の通信部１１３は、テンプレート
(C1[1],…,C1[n],CC1)
を記憶装置１３０に送付する（ステップＢ５）。
【０１８１】
記憶装置１３０の通信部１３５は、登録要求装置１１０から、該テンプレート
(C1[1],…,C1[n],CC1)を受け取る（ステップＢ６）。
【０１８２】
記憶装置１３０における識別子管理部１３１は、登録要求装置１１０から受け取ったテンプレートに固有の識別子である登録識別子ｉｄを決定する（ステップＢ７）。
【０１８３】
記憶装置１３０の通信部１３５は、登録識別子ｉｄを登録要求装置１１０に送付する（ステップＢ８）。
【０１８４】
次に、登録要求装置１１０の通信部１１３は、記憶装置１３０から登録識別子ｉｄを受け取る（ステップＢ９）。
【０１８５】
登録要求装置１１０は、受信した登録識別子ｉｄを、ディスプレイ等のユーザインターフェース（ＵＩ）に表示する（ステップＢ１０）。あるいは、登録要求装置１１０は、社員証や、識別子カード等の、ＩＣ（integrated_circuit）カードに、受信した登録識別子ｉｄを格納してもよい。
【０１８６】
次に、記憶装置１３０における登録データ生成部１３２は、テンプレートと登録識別子ｉｄをまとめ、登録データ
(C1[1],…,C1[n],CC1, id)                   ・・・(４７)
とする（ステップＢ１１）。
【０１８７】
記憶装置１３０における登録データ記憶部１３３に、上記登録データを格納する（ステップＢ１２）。
【０１８８】
なお、本実施形態に係る照合システム１００が登録フェーズにて実行する処理は、図３に例示された様態に限定されない。例えば、ステップＢ８に先だってステップＢ１１とステップＢ１２とが実行されてもよい。すなわち、記憶装置１３０は、登録識別子ｉｄを登録要求装置１１０に送信する前に、登録データを登録データ記憶部１３３に、上記登録データを格納するようにしてもよい。
【０１８９】
図８は、照合フェーズにおいて、第１の例示的な実施形態に係る照合システム１００が実行する処理の一例を示すフローチャートである。図８、図５を参照して暗号照合システム１００が、照合フェーズにて実行する処理について説明する。
【０１９０】
照合要求装置１２０は、照合（認証）対象の持つ識別子（「照合識別子」と呼ぶ）を受け取る（ステップＣ１）。
【０１９１】
次に、照合要求装置１２０における照合要求生成部１２１は、受け取った照合識別子を含む照合要求を生成する（ステップＣ２）。
【０１９２】
照合要求装置１２０の通信部１２４は、照合要求を照合装置１４０に送付する（ステップＣ３）。
【０１９３】
照合装置１４０の通信部１４６は、照合要求装置１２０から照合要求を受け取る（ステップＣ４）。
【０１９４】
次に、照合装置１４０における登録データ取得部１４１は、照合要求装置１２０から送信された照合要求に含まれる照合識別子を含む登録データ要求を生成する（ステップＣ５）。
【０１９５】
照合装置１４０の通信部１４６は、登録データ要求を記憶装置１３０に送付する（ステップＣ６）。
【０１９６】
次に、記憶装置１３０の通信部１３５は、照合装置１４０から登録データ要求を受け取る（ステップＣ７）。
【０１９７】
記憶装置１３０における登録データ検索部１３４は、登録データ記憶部１３３に格納されている、一つまたは複数の登録データのうち、登録データ要求に含まれる照合識別子を含む登録データ（「対象テンプレート」ともいう）を特定する（ステップＣ８）。
【０１９８】
記憶装置１３０の通信部１３５は、当該テンプレート:
Enc(pk,1-2x[1])（=C1[1]）,
…,
Enc(pk,1-2x[n])（=C1[n]）
Enc(pk, x[1]+…+x[n])（＝CC1）                        ・・・(４８)
を照合装置１４０に送付する（ステップＣ９）。
【０１９９】
照合装置１４０の通信部１４６は、記憶装置１３０から該テンプレートを受け取る（ステップＣ１０）。
【０２００】
照合装置１４０の乱数生成部１４２は、疑似乱数生成手順に従い整数（乱数）
2018110608.tif 000053
を生成する（ステップＣ１１）。
【０２０１】
乱数生成部１４２は、好ましくは、照合要求のたびに毎回異なる乱数Sを生成する。
【０２０２】
次に、照合装置１４０における暗号データ生成部１４３は、加法準同型のスカラー演算則から、n個の第１のテンプレート：
Enc(pk,1-2x[1])（=C1[1]）,
…,
Enc(pk,1-2x[n])（=C1[n]）
に対するSのスカラー演算Scl(S, Enc(pk,1-2x[1])),…, Scl(S, Enc(pk,1-2x[n]))
より、n個の暗号データ（「チャレンジ」ともいう）：
Enc(pk,S(1-2x[1]))（C2[1]と表す），
…
Enc(pk,S(1-2x[n]))（C2[n]と表す）                ・・・(４９)
を生成する（ステップＣ１２）。
【０２０３】
すなわち、
C1[1]=(g^{r1[1]}, g^{(1-2x[1])}×h^{r1[1]})=(C1[1][0], C1[1][1])に対して、
(C1[1][0]^S,C1[1][1]^S) =C2[1],
…,
C1[ｎ]= (g^{r1[n]}, g^{(1-2x[n])}×h^{r1[n]}) =(C1[n][0], C1[n][1])(=C1[n])に対して、
(C1[n][0]^S,C1[n][1]^S) =C2[n]
・・・(５０)
【０２０４】
照合装置１４０の通信部１４６は、暗号データ (C2[1],…,C2[n])を照合要求装置１２０に送付する（ステップＣ１３）。
【０２０５】
照合要求装置１２０は、照合装置１４０がステップＣ１３で送信した暗号データを受け取る（ステップＣ１４）。
【０２０６】
次に、照合要求装置１２０における照合情報抽出部１２２は、認証対象の生体から照合ベクトル
Y=(y[1],y[2],…,y[n])
を抽出する（ステップＣ１５）。
【０２０７】
次に、照合要求装置１２０におけるレスポンス生成部１２３は、
Enc(pk,S(1-2x[1]))（C2[1]），
…,
Enc(pk,S(1-2x[n]))（C2[n]）より、スカラー演算則と加法準同型の加法とから、暗号化したレスポンス：
2018110608.tif 000054
・・・(５１)
を生成する（ステップＣ１６）。すなわち、照合要求装置１２０におけるレスポンス生成部１２３は、スカラー演算Scl(y[1], Enc(pk,S(1-2x[1])))よりEnc(pk,S(1-2x[1])y[1])を生成する。以下同様に、Scl(y[n], Enc(pk,S(1-2x[n])))より、Enc(pk,S(1-2x[n])y[n])を生成する。そして、これらを加算することで、
Enc(pk,S（(1-2x[1])y[1]+,…,+(1-2x[n])y[n]））（=CC2）を求める。
【０２０８】
次に、照合要求装置１２０の通信部１２４は上記レスポンスCC2を照合装置１４０に送付する（ステップＣ１７）。
【０２０９】
次に、照合装置１４０は、照合要求装置１２０から、上記レスポンスCC2を受け取る（ステップＣ１８）。
【０２１０】
次に、照合装置１４０における暗号化距離計算部１４４は、
Enc(pk,S（(1-2x[1])y[1]+,…, (1-2x[n])y[n]))に対してS＾-1でスカラー演算する。
Scl(S^(-1), Enc(pk,S（(1-2x[1])y[1]+,…, (1-2x[n])y[n])）)
この結果、
Enc(pk,（(1-2x[1])y[1]+,…, (1-2x[n])y[n]）)   ・・・(５２)
を取得する。これと、記憶装置１３０より受信した第２のテンプレート：Enc(pk, x[1],…,x[n])＝Enc(pk,D1)より、暗号化ハミング距離を得る。
2018110608.tif 000055
・・・(５３)
【０２１１】
次に、照合装置１４０におけるクエリ生成部１４５は、暗号化距離Enc(pk, dH(X,Y))を含むクエリを生成する（ステップＣ２０）。
【０２１２】
照合装置１４０の通信部１４６は、上記クエリを検証装置１５０に送付する（ステップＣ２１）。
【０２１３】
次に、検証装置１５０の通信部１５５は、照合装置１４０から、上記クエリＥｎｃ（ｐｋ，ｆ）を受け取る（ステップＣ２４）。
【０２１４】
次に、検証装置１５０におけるクエリ検証部１５３は、秘密鍵ｓｋを用いてクエリの暗号化距離Enc(pk, dH(X,Y))を復号する。
【０２１５】
Dec(sk, Enc(pk, dH(X,Y)))＝g^{dH(X,Y)}   ・・・(５４)
【０２１６】
次に、検証装置１５０における検証結果生成部１５４は、dH(X,Y)を閾値ｔと比較する（ステップＣ２３）。検証結果生成部１５４は、g^{dH(X,Y)}がg^0, g^1, g^tのいずれかに一致するか判定する。いずれかに一致すれば、dH(X,Y)<=tであり、受理、いずれかにも一致しなれれば、dH(X,Y)＞ｔであり、不受理の検証結果を生成する（ステップＣ２４）。
【０２１７】
検証装置１５０は、算出した照合結果を出力する（ステップＣ２５）。
【０２１８】
なお、本実施形態に係る照合システム１００が照合フェーズにて実行する処理は、図８に例示された様態に限定されない。例えば、ステップＣ５〜Ｃ１０に先だってステップＣ１１が実行されてもよい。
【０２１９】
また、第１の例示的な実施形態に係る照合システム１００によれば、同じ登録ベクトルとの認証を行う際であっても、図７のステップＣ１１で選ばれた乱数を用いた処理が行われる。したがって、照合処理の通信内容が漏洩したとしても、漏洩した内容を再送したり、漏洩した内容を利用して作成したデータを送付したりしても、漏洩した照合時の距離と等しい距離を算出したり、小さい値を算出したりすることはできない。登録ベクトルと認証ベクトルの間の距離が閾値より小さいときに「受理」とする認証に利用する場合、登録ベクトルを知らない攻撃者が「受理」とされない性質、すなわち、なりすまし攻撃への耐性を有する。
【０２２０】
特に、照合装置１４０から照合要求装置１２０に送る暗号データ（チャレンジ）に、乱数Sの暗号データEnc(pk,S)は含まれない。このため、照合要求装置１２０は、照合装置１４０から照合要求装置１２０に送られた暗号データEnc(pk,S(1-2x[1])), …,Enc(pk,S(1-2x[n]))からは、
Enc(pk,（x[1]+…+x[n])）、 
Enc(pk, S（（x[1]+…+x[n])））を算出することはできない。したがって、XとYのハミング距離の偽装はできず、盗聴者によるユーザのなりすましはできない。
【０２２１】
また、秘密鍵を持つ検証装置１５０が受け取るデータは、登録ベクトルと照合ベクトルの間のハミング距離の暗号文であり、登録ベクトルや照合ベクトルの値は開示されない。したがって、第１の例示的な実施形態に係る照合システム１００によれば、それぞれのベクトルを抽出する装置以外の装置には、登録ベクトルと照合ベクトルの距離以外の値は漏洩せず、検証装置において、登録ベクトルと照合ベクトルの間の距離を算出することが可能である。
【０２２２】
さらに、第１の例示的な実施形態に係る照合システム１００では、復号鍵を持つ検証装置１５０に対して、登録ベクトルと照合ベクトルの間のハミング距離を開示しないように変形可能である。例えば、非特許文献１に記載された方式と同じ方法を適用することにより、復号鍵（秘密鍵）を持つ検証装置１５０が、登録ベクトルと照合ベクトルの間のハミング距離を算出できない方式に変形できる。復号鍵を持つ検証装置１５０に対して、登録ベクトルと照合ベクトルの間の距離を開示しない方式は、特別な状況下においても復号鍵を持つ検証装置１５０が登録ベクトルの値を算出することを防ぐことができるため、より高い安全性を達成できる。
【０２２３】
＜変形例１＞
図９は、第１の実施形態の変形例１を説明する図である。基本構成は、第１の実施形態と同様である。相違点は以下のとおりである。なお、登録ベクトルX、暗号化Enc（）において公開鍵pkを省略等の表記は図４に従う。
【０２２４】
登録要求装置１１０は、テンプレートとして、Enc(pk, (1-2x1)),…,Enc(pk, (1-2xn))ではなく、Enc(pk,x1),…,Enc(pk,xn)を記憶装置１３０に送付する（Ｓ１１Ａ）。
【０２２５】
記憶装置１３０は、
Enc(pk,x1),…,Enc(pk,xn)から、加法準同型のスカラー演算、加算演算を用いて、
Enc(pk, (1-2x1)),…,Enc(pk, (1-2xn))    ・・・(５５)
Enc(pk,x1+,…,+xn)                    ・・・（５６)
を求め、記憶する（Ｓ１１Ｂ）。
【０２２６】
照合装置１４０は、照会要求装置１２０からの照合要求を受けると（Ｓ１２）、記憶装置１３０から、
Enc(pk, (1-2x1)),…,Enc(pk, (1-2xn))、
及び
Enc(pk,x1+,…,+xn)を取得する（Ｓ１３）。これ以降の処理は、図４と同一であるため、説明は省略する。
【０２２７】
図５において、登録要求装置１１０のテンプレート生成部１１２は、Enc(pk,x1),…,Enc(pk,xn)を生成する。記憶装置１３０の登録データ生成部１３２は、Enc(pk,x1),…,Enc(pk,xn)から、
Enc(pk, (1-2x1))=C1[1],
…,
Enc(pk, (1-2xn))=C1[n]、及び、Enc(pk,x1+,…,+xn)=CC1を求め、登録識別子idと関連付けた登録データ
(C1[1],…,C1[n],CC1, id)
を生成して登録データ記憶部１３３に格納する。この変形例１によれば、登録要求装置１１０の処理負荷を軽減している。
【０２２８】
＜変形例２＞
図１０は、第１の実施形態の変形例２を説明する図である。基本構成は、第１の実施形態と同様である。相違点は以下のとおりである。なお、登録ベクトルX、暗号化Enc（）において公開鍵pkを省略等の表記は図４に従う。
【０２２９】
登録要求装置１１０は、テンプレートとして、変形例１と同様、Enc(pk,x1),…,Enc(pk,xn)を記憶装置１３０に送付する（Ｓ１１Ａ）。
【０２３０】
記憶装置１３０は、Enc(pk,x1),…,Enc(pk,xn)          ・・・(５７)
を記憶する。
【０２３１】
照合装置１４０は、照会要求装置１２０からの照合要求を受けると（Ｓ１２）、記憶装置１３０から、Enc(pk,x1),…,Enc(pk,xn)を取得し（Ｓ１３Ａ）、加法準同型のスカラー演算、加算演算を用いて、
Enc(pk, (1-2x1)),…,Enc(pk, (1-2xn))、及び、Enc(pk,x1+,…,+xn)を求める（Ｓ１３Ｂ）。
【０２３２】
これ以降の処理は、図４と同一であるため、説明は省略する。
【０２３３】
＜第２の実施形態＞
図４乃至図９を参照して説明した第１の実施形態は、Semi-honestな攻撃者に対しては安全であるが、攻撃者によるなりすまし攻撃が存在する。図４のステップＳ１５では、照合装置１４０がEnc(pk,S(1-2x1)),…,Enc(pk,S(1-2xn))を照合要求装置１２０に送信している。
【０２３４】
登録ベクトル
2018110608.tif 000056
の各要素は二値であることから、Enc(pk,S(1-2x1)),…,Enc(pk,S(1-2xn))は、
Enc(pk,S)、Enc(pk,-S)                        ・・・(５８)
のいずれかである。任意の値ｚについて高々２回の試行でEnc(pk, Sz)を照合装置１４０に送信することができる。照合装置１４０は照合要求装置１２０から受信したEnc(pk, Sz)をEnc(pk, D2)として扱い、Enc(pk, Sz)とEnc(pk,D1)を加算して得たEnc(pk, Sz＋D1)を検証装置１５０に送信する。
【０２３５】
この場合、
2018110608.tif 000057
・・・(５９)
であれば、受理される。
【０２３６】
そこで、第２の実施形態では、照合装置１４０がEnc(pk,S(1-2x1)),…,Enc(pk,S(1-2xn))を照合要求装置１２０に送信する登録テンプレートに乱数を乗算した暗号データEnc(pk,S(1-2xi)) (i=1,…,n)を送信するかわりに、登録用の二値ベクトルX=[x1,…,xn]を所定の変換式で変換した二値以外の値をとる第１の変換値ベクトルＡであって、照合用の二値ベクトルY=[y1,…,yn]を変換した第２の変換値ベクトルＢとの演算結果（内積A・B）が
2018110608.tif 000058
・・・(６０)
を生成する登録ベクトルXの変換値Aiを、チャレンジとして照合要求装置１２０に送信する。照合要求装置１２０は、変換値Aiの暗号データEnc(pk,Ai)と照合用の二値ベクトルY=[y1,…,yn]に関する変換値Biとの加法準同型演算から、Enc(pk,SΣ[i=1 to n] Ai・Bi)を照合装置１４０に送信する。Enc(pk,SΣ[i=1 to n] Ai・Bi)は
2018110608.tif 000059
・・・(６１)
と等価であり、生体情報が二値ベクトルの場合において、なりすまし攻撃を回避可能としている。以下に説明する。
【０２３７】
登録ベクトル
2018110608.tif 000060
照合ベクトル
2018110608.tif 000061
に対して以下の関係を満たすA1,…,An、B1,…,Bnを求める。
【０２３８】
2018110608.tif 000062
・・・(６２)
【０２３９】
2018110608.tif 000063
・・・(６３)
【０２４０】
2018110608.tif 000064
・・・(６４)
【０２４１】
制約式は各xiyiの係数に関するn^2個と、各yiに関するn個の計n(n+1)個である。未知数はn(2n+1)である。
2018110608.tif 000065
・・・(６５)
【０２４２】
ここで、bi,j（i=1,…,n, j=1,…,n）を固定すると、未知数は
2018110608.tif 000066
・・・(６６)
のn(n+1)個である。
【０２４３】
（未知数の個数）＞＝（制約式の個数）
であるため、解が存在する、特に、各bi,j（i=1,…,n,j=1,…,n）を固定すると、各ai,j（i=1,…,n,j=1,…,n+1）は一意に定まる。
【０２４４】
本実施形態では、照合装置１４０は、Enc(pk, SAi) (i=1,…,n)を照合要求装置１２０に送信する。照合要求装置１２０は、
2018110608.tif 000067
・・・(６７)
を照合装置１４０に送信する。
【０２４５】
説明をみやすくするため、２次元の場合の登録ベクトル、照合ベクトル
2018110608.tif 000068
2018110608.tif 000069
を例に説明する。なお、Tは転置演算子（Transpose operator）である。上記式（６２）、（６３）は以下のような変換行列を用いて表させる。
【０２４６】
2018110608.tif 000070
・・・(６８)
【０２４７】
2018110608.tif 000071
・・・(６９)
【０２４８】
上記式（６４）は以下で与えられる。
2018110608.tif 000072
・・・(７０)
【０２４９】
これを解くと、各係数は以下で与えられる。
【０２５０】
2018110608.tif 000073
・・・(７１)
【０２５１】
ただし、Lは行列
2018110608.tif 000074
の行列式(determinant)の逆数である。
【０２５２】
2018110608.tif 000075
・・・(７２)
【０２５３】
したがって、以下のように表せる。
【０２５４】
2018110608.tif 000076
・・・(７３)
【０２５５】
なお、上式において、b1,1=b2,2=1, b1,2=b2,1=0の場合、
2018110608.tif 000077
・・・(７４)
となり、これは前記第１の実施形態のn=2の場合に対応する。
【０２５６】
簡単な具体例として、ｑ＝13の場合（メッセージ空間：Fq）について説明する。
2018110608.tif 000078
・・・(７５)
とすると、
2018110608.tif 000079
である（フェルマーの小定理よりqが素数ならばg^(q-1)=1   mod qが成り立つため、g・g^(q-2)=1 mod q、したがって、逆元は
ｇ^(-1)＝g^(q-2) mod q                    ・・・(７６)
である）。
【０２５７】
したがって、
2018110608.tif 000080
・・・(７７)
が、制約式をみたすことになる。
【０２５８】
2018110608.tif 000081
・・・(７８)
【０２５９】
この場合、A1、A2は、(x1,x2)の値（0,0）, (0,1), (1,0), (1,1)毎に異なる（図１１の（ｂ）と（ｃ）参照）。なお、B1、B2は以下で与えられる。
【０２６０】
2018110608.tif 000082
【０２６１】
図１２は、第２の実施形態の登録要求装置１１０の構成を説明する図である。登録要求装置１１０は、登録情報抽出部１１１で抽出された二値ベクトル
2018110608.tif 000083
と、予め設定された変換係数：
2018110608.tif 000084
に基づき、変換値(A１,…,An)を求める変換値生成部１１４を備えている。その他の基本構成は、図５に示した前記第１の実施形態の構成と同様とされるが、登録要求装置１１０の変換テンプレート生成部１１２、記憶装置１３０の登録データ生成部１３２、照合装置１４０の暗号データ生成部１４３、暗号化距離計算部１４４、照合要求装置１２０で行われる処理の内容が、前記第１の実施形態と相違している。
【０２６２】
図１３は、登録フェーズを説明する図である。以下では、図７に追加されたステップB1Aについて説明する。ステップB1Aでは、変換値生成部１１４が、登録情報抽出部１１１で抽出された二値ベクトル
2018110608.tif 000085
と、予め設定された変換係数：
2018110608.tif 000086
に基づき、変換値(A１,…,An)を求める（Ｂ１Ａ）。
【０２６３】
テンプレート生成部１１２は、第１のテンプレートとして、
Enc(pk, A1),…,Enc(pk, An)                       ・・・(７９)
を生成する（Ｂ２）。また、テンプレート生成部１１２は、第２のテンプレートとして、
Enc(pk,x1),…,Enc(pk, xn)                       ・・・(８０)
を生成し（Ｂ３）、これらのテンプレートを合わせ（Ｂ４）、記憶装置１３０に送信する（Ｂ５）。
【０２６４】
図１４は、第２の実施形態の動作シーケンスを説明する図である。図１４は、図４、図９等の表記に対応している。なお、公開鍵と秘密鍵の生成（Ｓ２０）は、図４、図９等のＳ１０に対応している。
【０２６５】
前述したように、第２の実施形態では、登録要求装置１１０に、n(n+1)個の変換係数：
2018110608.tif 000087
が予め設定されているものとする。また、照合要求装置１２０には、n^2個の変換係数：
2018110608.tif 000088
が設定されているものとする。
【０２６６】
登録要求装置１１０の変換値生成部１１４は、登録情報抽出部１１１で抽出された二値ベクトル
2018110608.tif 000089
と、予め設定された変換係数：
2018110608.tif 000090
に基づき、変換値(A１,…,An)を求める。
【０２６７】
次に登録要求装置１１０のテンプレート生成部１１２は、第１のテンプレートとして、Ai（i=1,…,n）の暗号データ
Enc(pk,A1),…,Enc(pk,An)            ・・・(８１)
を生成する。
【０２６８】
またテンプレート生成部１１２は、第２のテンプレートとして、
Enc(pk,x1),…,Enc(pk, xn)                      ・・・(８２)
を生成する。
【０２６９】
そして、登録要求装置１１０のテンプレート生成部１１２は、第１、第２のテンプレートからテンプレート
2018110608.tif 000091
・・・(８３)
を生成し、通信部１１３を介して記憶装置１３０に送付する（Ｓ２１）。
【０２７０】
記憶装置１３０は、該テンプレートを受け取ると、識別子管理部１３１は、登録識別子idを生成し、登録データ生成部１３２は登録識別子idに関連させて
2018110608.tif 000092
・・・（８４）
を登録データ記憶部１３３に記憶する。
【０２７１】
照合装置１４０において、通信部１４６が照合要求装置１２０から照会要求を受けると（Ｓ２２）、登録データ取得部１４１は、記憶装置１３０から
2018110608.tif 000093
を受け取る（Ｓ２３Ａ）。
【０２７２】
照合装置１４０は、Enc(pk,x1),,…,Enc(pk, xn)を暗号化したまま、要素｛ｘi｝の総和の暗号データEnc(pk,Σ[i=1 to n]xi)を生成する（Ｓ２３Ｂ）。
【０２７３】
照合装置１４０は、乱数生成部１４２は乱数
2018110608.tif 000094
を生成する（Ｓ２４）。
【０２７４】
そして、乱数生成部１４２は、変換値の暗号データEnc(pk, A1),…,Enc(pk, An)に対して乱数Sをスカラー演算して、
Enc(pk, SA1),…,Enc(pk, SAn)            ・・・(８５)
を求め、通信部１４６を介して、照合要求装置１２０に送信する（Ｓ２５）。
【０２７５】
Enc(pk, Ai) (i=1,…,n)は、(x1,…xn)の値の組み合わせに応じて値が異なる。このため、攻撃者にとって、照合装置１４０から照合要求装置１２０に送信されるEnc(pk,S・Ai) (i=1,…,n)から、Enc(pk, S)を推測することは困難であり、なりすまし攻撃を困難とする。
【０２７６】
照合要求装置１２０のレスポンス生成部１２３は、{bi,j}(i,j=1,…,n)と、照合情報抽出部１２２で抽出された二値ベクトル
2018110608.tif 000095
から、
2018110608.tif 000096
・・・(８６)
を求める。
【０２７７】
照合要求装置１２０のレスポンス生成部１２３は、加法準同型の加算、及びスカラー演算則を用いて、照合装置１４０から受信した暗号データ（チャレンジ）Enc(pk, Ai)  (i=1,…,n)を暗号化したまま、スカラー演算Scl（Bi, Enc(pk, SAi))  (i=1,…,n)により、
Enc(pk, SA1・B1),…,Enc(pk, SAn・Bn)          ・・・(８７)
を計算し、これらを暗号化したまま加算することで、
2018110608.tif 000097
・・・(８８)
を求める。照合要求装置１２０のレスポンス生成部１２３は、通信部１２４を介して、
2018110608.tif 000098
をチャレンジに対するレスポンスとして照合装置１４０に送付する（Ｓ２６）。
【０２７８】
照合装置１４０の暗号化距離計算部１４４では、
2018110608.tif 000099
に対して、乱数Sの逆数S^(-1)（S^(q-2)  mod q）をスカラー演算し、
2018110608.tif 000100
・・・(８９)
を求める。
ここで、
2018110608.tif 000101
・・・(９０)
である。
【０２７９】
照合装置１４０の暗号化距離計算部１４４は、求めたD１と、記憶装置１３０から受け取った第２のテンプレート
2018110608.tif 000102
・・・(９１)
より、暗号化したまま、二値ベクトルXとYのハミング距離の暗号データを計算する。
【０２８０】
2018110608.tif 000103
・・・(９２)
【０２８１】
照合装置１４０は、二値ベクトルXとYのハミング距離の暗号データEnc(pk, dH(X,Y))を検証装置１５０に送信する（Ｓ２７）。検証装置１５０は暗号データEnc(pk, dH(X,Y))を秘密鍵skで復号し(Dec(sk, Enc(pk, dH(X,Y))))、復号結果が閾値ｔ以下であるか否か判定し（Ｓ２８）、検証結果を出力する（Ｓ２９）。
【０２８２】
＜変形例１＞
図１５は、上記した第２の実施形態の変形例１を説明する図である。上記した第２の実施形態では、登録要求装置１１０が変換値A1,…,Anを計算し、これらの暗号データEnc(pk, A1),…,Enc(pk, An)を、第１テンプレートとして記憶装置１３０に送付していたが、変形例１では、登録要求装置１１０のテンプレート生成部１１２は、変換値［A1,…An］の暗号データEnc(pk, A1),…,Enc(pk, An)を記憶装置１３０に送信しない。登録要求装置のテンプレート生成部１１２は、前記第１の実施形態と同様に、n個のx１,…,xｎの暗号データ（第１のテンプレート）
Enc(pk, x１),…,Enc(pk, xｎ)
を記憶装置１３０に送信する（Ｓ２１）。
【０２８３】
登録要求装置１１０は、図５に示した構成と同様とされる。その他の構成も、図５に示した前記第１の実施形態の構成と同様とされるが、登録要求装置１１０のテンプレート生成部１１２、記憶装置１３０の登録データ生成部１３２、照合装置１４０の暗号データ生成部１４３、暗号化距離計算部１４４、照合要求装置１２０で行われる処理が、前記第１の実施形態と相違している。
【０２８４】
記憶装置１３０の通信部１３５は、登録要求装置１１０から送信された第１のテンプレートを受け取り、登録データ生成部１３２は、識別子管理部１３１が付与した登録識別子idに関連して、第１のテンプレートを登録データ記憶部１３３に記憶する。
【０２８５】
さらに、記憶装置１３０の登録データ生成部１３２は、n次元二値ベクトルXのn個の要素ｘ1,…,ｘnの登録データ
Enc(pk, x1),…,Enc(pk, xn)   ・・・(９３)
を暗号化したまま、要素｛ｘi｝の総和の暗号データ
2018110608.tif 000104
を生成する（Ｓ２１Ａ）。
【０２８６】
記憶装置１３０の登録データ生成部１３２は、記憶装置１３０に設定された変換係数群
2018110608.tif 000105
から、n次元二値ベクトルXのn個の要素ｘ1,…,ｘnを暗号化したまま、変換値A1,…,Anの暗号データ
Enc(pk, A1),…, Enc(pk, An)    
を計算する（Ｓ２１Ｂ）。
【０２８７】
ここで、Enc(pk, ai,jxｊ) （j=1,…,n）は、暗号データEnc(pk, xｊ)に対するスカラー演算Scl(ai,j，Enc(pk, xｊ))（j=1,…,n）で求まる。さらに記憶装置１３０の登録データ生成部１３２はEnc(pk, ai, n+1)を求め、これらを暗号化したまま加算することで、暗号データEnc(pk, Ai)（i=1,…,n）を計算し、登録データ記憶部１３３に記憶する（Ｓ２１Ｂ）。
【０２８８】
Enc(pk, A1)= Enc(pk, a1,1・x1)+,…, Enc(pk, a1,ｎ・xｎ) + Enc(pk, a1,n+1)
…,
Enc(pk, An)= Enc(pk, an,1・x1)+,…, Enc(pk, an,ｎ・xｎ) + Enc(pk, an,n+1)
・・・(９４)
【０２８９】
照合装置１４０は、照合要求装置１２０から照合要求を受けると、登録データ取得部１４１は、記憶装置１３０から、Enc(pk, A1),…, Enc(pk, An)と、
2018110608.tif 000106
の暗号データ（第２のテンプレート）：
2018110608.tif 000107
を受け取る（Ｓ２３）。
【０２９０】
照合装置１４０の乱数生成部１４２は、乱数Ｓを生成する（Ｓ２４）。そして、暗号データ生成部１４３は、加法準同型のスカラー演算則により、
Enc(pk, SA1),…, Enc(pk, SAn)
を計算し、通信部１４６を介して照合要求装置１２０に送信する（Ｓ２５）。
【０２９１】
照合要求装置１２０のレスポンス生成部１２３は、設定されたn^2個の変換係数
2018110608.tif 000108
と照合情報抽出部１２２で抽出された二値ベクトル
2018110608.tif 000109
から、
2018110608.tif 000110
・・・(９５)
を求める。
【０２９２】
照合要求装置１２０のレスポンス生成部１２３は、照合装置１４０から送信されたEnc(pk, SA1),…, Enc(pk, SAn)と、変換値B１,…,Ｂｎからスカラー演算、加法演算により、
2018110608.tif 000111
・・・(９６)
を求め、レスポンスとして、通信部１２４を介して照合装置１４０に送付する（Ｓ２６）。これ以降の動作シーケンスは、図１４と同様であるため、説明は省略する。
【０２９３】
＜変形例２＞
上記変形例１では、記憶装置１３０が、登録要求装置１１０から送信された第１テンプレートのEnc(pk,xi) (i=1,…,n)から変換値A1,…Anの暗号データEnc(pk, Ai)(i=1,…,n)を生成しているが、変形例２では、照合装置１４０が、チャレンジ作成時に、変換値A1,…Anの暗号データEnc(pk, Ai)(i=1,…,n)を作成する。変形例２の基本構成は、図５に示した前記第１の実施形態の構成と同様とされるが、登録要求装置１１０のテンプレート生成部１１２、記憶装置１３０の登録データ生成部１３２、照合装置１４０の暗号データ生成部１４３、暗号化距離計算部１４４、照合要求装置１２０で行われる処理が、前記第１の実施形態と相違している。
【０２９４】
図１６は、変形例２の動作を説明する図である。図１６及び図５を参照して、変形例２の動作を説明する。
【０２９５】
登録要求装置１１０は、前記第１の実施形態と同様、n次元の二値ベクトルXのn個の要素｛xｉ｝(i=1,…,n)の暗号データEnc(pk, xi) (i=1,…,n)（第１のテンプレート）を記憶装置１３０に送信する（Ｓ２１）。
【０２９６】
記憶装置１３０は第１及び第２のテンプレートを登録idに関連して記憶する。
【０２９７】
照合装置１４０の登録データ取得部１４１は、照合要求装置１２０から照合要求を受けると（Ｓ２２）、記憶装置１３０からn次元の二値ベクトルXのn個の要素｛xｉ}の暗号データEnc(pk, x1),…,Enc(pk, xn)
を受け取る（Ｓ２３Ａ）。
【０２９８】
照合装置１４０の暗号データ生成部１４３は、
Enc(pk, x1),…,Enc(pk, xn)を暗号化したまま、要素｛ｘi｝の総和の暗号データ
2018110608.tif 000112
を生成する（Ｓ２３Ａ）。
【０２９９】
照合装置１４０の暗号データ生成部１４３は、n個のｘ１,…,ｘnの暗号登録データEnc(pk, ｘ１),…, Enc(pk, ｘn)と、設定された変換係数群
2018110608.tif 000113
から、変換値A1,…Anの暗号データEnc(pk, A1),…, Enc(pk, An)を生成する（Ｓ２４Ｂ）。
【０３００】
Enc(pk,A1)= Enc(pk, a1,1・x1)+,…, +a1,nEnc(pk, a1,n・xｎ)+Enc(pk,a1,n+1)
…,
Enc(pk,An)= Enc(pk, an,1・x1)+,…, +an,nEnc(pk, an,n・xｎ)+Enc(pk,an,n+1)
・・・(９７)
【０３０１】
照合装置１４０は、乱数Sを生成し（Ｓ２４）、加法準同型のスカラー演算則により、
Enc(pk, SA1),…, Enc(pk, SAn)
を計算し、通信部１４６を介して照合要求装置１２０に送信する（Ｓ２５）。
【０３０２】
照合要求装置１２０は、設定されたn^2個の変換係数
2018110608.tif 000114
と二値ベクトル
2018110608.tif 000115
から、
2018110608.tif 000116
・・・(９８)
を求める。さらに、Enc(pk, SA1),…, Enc(pk, SAn)と変換値B1.,…,Bnから、
2018110608.tif 000117
・・・(９９)
を求め、レスポンスとして照合装置１４０に送付する（Ｓ２６）。これ以降は、図１４の変形例１と同様であるため、説明を省略する。
【０３０３】
＜変形例３＞
変形例３では、登録要求装置１１０には、変換係数
2018110608.tif 000118
は予め設定されていない。また照合要求装置１２０には、
n^2個の変換係数
2018110608.tif 000119
も設定されていない。
【０３０４】
変形例３では、照合装置１４０が、チャレンジ作成時に、変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)をその都度作成する。
【０３０５】
図１７は、変形例３の照合装置１４０の構成例を示す図である。図１７に示すように、照合装置１４０は、チャレンジ作成時に、変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)を生成する変換係数生成部１４７をさらに備えている。
【０３０６】
暗号データ生成部１４３は、登録データ取得部１４１で取得したn個のｘｉの暗号データEnc(pk,xi) (i=1,…,n)と、作成した変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)に基づき、変換値A１,…,Anを計算し、暗号化したデータをチャレンジとして照合要求装置１２０に送信する。
【０３０７】
また、照合装置１４０は、照合要求装置１２０に対するチャレンジの送信時に、変換係数（第１群の変換係数）｛ai,j｝(i=1,…,n,j=1,…,n+1)の計算に用いた変換係数（第２群の変換係数）｛bi,j｝(i, j=1,…,n)を照合要求装置１２０に送信する。
【０３０８】
図１８は、変形例３の照合フェーズを説明する図である。図８及び変形例１との相違点を説明する。
【０３０９】
照合装置１４０の変換係数生成部１４７は、チャレンジを生成する度に、変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)を生成する（Ｃ１１Ａ）。
【０３１０】
照合装置１４０の暗号データ生成部１４３は変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)と、Enc(pk, ｘ1),…, Enc(pk, ｘn)とに基づき、各要素{xi}を暗号化したまま、変換値の暗号データEnc(pk, A1),…,ENc(pk, An)を生成する（Ｃ１１Ｂ）。
【０３１１】
照合装置１４０の乱数生成部１４２は、乱数Sを生成し、変換値の暗号データに乱数Sをスカラー演算することで、暗号データEnc(pk, SA1),…,ENc(pk, SAn)を生成する（Ｃ１２）。照合装置１４０は、生成した暗号データEnc(pk, SA1),…,ENc(pk, SAn)と、n^2個の変換係数{bi,j}(i,j=1,…,n)を照合要求装置１２０に送信する（Ｃ１３）。
【０３１２】
図１９は、変形例３の全体の動作シーケンスを説明する。登録要求装置１１０は、登録用の二値ベクトルX＝[x1,…,xn]のn個の要素｛xｉ｝の暗号データEnc(pk, xi) (i=1,…,n)からなる第１のテンプレートを記憶装置１３０に送信する（Ｓ２１）。
【０３１３】
記憶装置１３０は第１のテンプレートを登録識別子idに関連して記憶する。
【０３１４】
照合装置１４０の登録データ取得部１４１は、照合要求装置１２０から照合要求を受けると（Ｓ２２）、記憶装置１３０から二値ベクトルXのn個の要素｛xｉ｝の暗号データEnc(pk, ｘ1),…, Enc(pk, ｘn)
を受け取る（Ｓ２３）。
【０３１５】
照合装置１４０の暗号データ生成部１４３は、ら二値ベクトルXのn個の要素｛xｉ｝の暗号データEnc(pk, x1),…,Enc(pk, xn)を暗号化したまま、二値ベクトルXのn個の要素｛ｘi｝の総和の暗号データ
2018110608.tif 000120
を生成する（Ｓ２３Ａ）。
【０３１６】
照合装置１４０の変換係数生成部１４７は、チャレンジを生成する度に、変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)を生成する（Ｓ２４Ａ）。したがって、チャレンジ毎に異なる値となる場合もある。変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)は、{bi,j} (i=1,…,n)に基づき、計算される。照合装置１４０の変換係数生成部１４７は、チャレンジを生成する度に、変換係数{bi,j} (i=1,…,n)を異なる値に設定するようにしてもよい。
【０３１７】
照合装置１４０の暗号データ生成部１４３は、変換係数｛ai,j｝(i=1,…,n,j=1,…,n+1)と、登録暗号データEnc(pk, ｘ1),…, Enc(pk, ｘn)とに基づき、Enc(p,xi)(i=1,…,n)を暗号化したまま、
Enc(pk, A1),…,ENc(pk, An)                ・・・(１００)
を生成する（Ｓ２４Ｂ）。
【０３１８】
照合装置１４０の乱数生成部１４２は、乱数Sを生成し（Ｓ２４）、Enc(pk, SA1),…,ENc(pk, SAn)を計算し、Enc(pk, SA1),…,Enc(pk, SAn)とn^2個の変換係数{bi,j}(i,j=1,…,n)を照合要求装置１２０に送信する（Ｓ２５）。
【０３１９】
照合要求装置１２０は、照合装置１４０から送信されたn^2個の変換係数
2018110608.tif 000121
と二値ベクトル
2018110608.tif 000122
から、
2018110608.tif 000123
・・・(１０１)
を求める。さらに、Enc(pk, SA1),…, Enc(pk, SAn)と、変換値B1,…,Bnから、
2018110608.tif 000124
・・・(１０２)
を求め、レスポンスとして照合装置１４０に送付する（Ｓ２６）。式（１０２）のレスポンスを受信した照合装置１４０がクエリを送信する処理（Ｓ２７）と、照合装置１４０からクエリを受信した検証装置１５０の処理（Ｓ２８、Ｓ２９）は変形例２と同じであるため、説明を省略する。
【０３２０】
なお、前記第２の実施形態及び各変形例において、前記第１の実施形態と同様に、登録要求装置１１０で登録用のn次元二値ベクトルXのn個の要素｛ｘi｝の総和の暗号データ
2018110608.tif 000125
を生成し、暗号データを記憶装置１３０に送信するようにしてもよい。
【０３２１】
＜第３の実施形態＞
上記第１、第２の実施形態では、復号者が受け取った距離の暗号文を復号し、距離が閾値t以下であるか否かを確認する。modified Elgamal暗号を用い、復号アルゴリズムがメッセージではなく、Dec(sk, Enc(pk, m)）=g^mを出力する場合、復号者は、復号値が1、g、g^2,g^3,…,g^tのいずれかと一致するか否かを確認する。
【０３２２】
楕円Elgamal暗号を用い、復号アルゴリズムがメッセージではなく、Dec(sk, Enc(pk, m)）=m(*)Gを出力する場合、復号者は、復号値がO,G, 2(*)G,3(*)G, …,t(*)Gのいずれかと一致するか否かを確認すればよい。復号アルゴリズムがメッセージを出力する場合、復号者は復号値が0,1,2,3,…,tのいずれかと一致するか否かを確認すればよい。
【０３２３】
照合（認証）時に、y1,…,ynとして、y1,…,yi-1,yi+1,…,yn=0,yi=αを用いると、算出されるハミング距離は、
2018110608.tif 000126
・・・(１０３)
となる。
【０３２４】
各xi (i=1,…,n)が約1/2の確率で0または1を取ると仮定すると、
2018110608.tif 000127
・・・(１０４)
が成り立つためである。
【０３２５】
2018110608.tif 000128
を
2018110608.tif 000129
・・・(１０５)
を満たすように定めれば，xiの値によって約1/2の確率で受理される。さらに、検証装置１５０における受理/不受理の結果から、ｘiの値が判定できる。すなわち、
受理されれば、xi=1,
不受理であれば、xi=0と判定される。
【０３２６】
このため、攻撃者はこの試行を各i=1,…,nに対して繰り返すことにより、登録された生体情報x1,…,xnを知ることができる。以上から、第１、第２の実施形態では、１:Ｎ認証を行うことができない。第３の実施形態では、１:Ｎ認証に対応可能に構成される。
【０３２７】
また、第３の実施形態では、照合フェーズにおいて、照合用のベクトルY＝[y1,…,yn]として0，1以外の値を入力された場合、これを検知する機能を具備する。
【０３２８】
2018110608.tif 000130
・・・(１０６)
【０３２９】
また、以下に示すように、（2yi-1）を用いて、xi=yiであるか否かを判定できる。
【０３３０】
2018110608.tif 000131
・・・(１０７)
【０３３１】
(2xi-1)(2yi-1)は、
xi=yiであり、yiが０又は１のときは、１、
ｙi=０且つｘi=1、又はｙi=1且つｘi=0のときは、−１、
ｙiが０、１以外のときは、１、−１以外の値となる。
xi=yiでないiの個数(ベクトルXとYの同一番目の要素xiとyiが不一致の個数)をハミング距離dH(X,Y)とすればよい。
【０３３２】
図２０は、第３の実施形態における照合装置１４０と検証装置１５０の構成を説明する図である。登録要求装置１１０、照合要求装置１２０の基本構成は、図５に示した構成とされる。ただし、各部の処理は前記第１の実施形態と相違している。第３の実施形態は１：Ｎ認証に対応している。  
【０３３３】
照合装置１４０は、図５に示した構成に加えてハッシュ値生成部１４８を備えている。
【０３３４】
照合要求装置１２０から照合要求を受けた照合装置１４０の登録データ取得部１４１は、記憶装置１３０から登録識別子idに関連して記憶された暗号データ｛Enc(pk, (2xi-1))｝ (i=1,…,n)を受信する。
【０３３５】
照合装置１４０の乱数生成部１４２は、乱数aｉ，bｉ，rｉを生成する。
【０３３６】
照合装置１４０の暗号データ生成部１４３は乱数ｂi(i=1,…,n)の暗号データEnc(pk, ｂi)  (i=1,…,n)を照合要求装置１２０に送信する。照合要求装置１２０に送信する暗号データは登録データ（テンプレート）に依存しない。このため、１：Ｎ認証を行うことができる。
【０３３７】
照合要求装置１２０のレスポンス生成部１２３は、記憶装置１３０から受信したEnc(pk, (2xi-1))と、照合要求装置１２０から送信されたEnc(pk, bi(2yi)-1)  (i=1,…,n)と、乱数ai,bi,riから、
Enc(pk, ai(2xi-1))  (i=1,…,n),
Enc(pk, biri(2yi-1))  (i=1,…,n)
・・・(１０８)
を生成する。
【０３３８】
ハッシュ値生成部１４８は、乱数aｉ，bｉ，rｉ(i=1,…,n)の積aｉbｉrｉ（mod q）のハッシュ値
Ｈ（ａiｂiｒi）        ・・・(１０９)
を計算する。
【０３３９】
クエリ生成部１４５は、暗号データEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))(i=1,…,n)とハッシュ値H(aｉbｉrｉ)  (i=1,…,n)を含むクエリを生成し、通信部１４６を介して検証装置１５０に送信する。Hは一方向性ハッシュ関数である。なお、暗号データEnc(pk, ai(2xi-1)),Enc(pk, biri(2yi-1))  (i=1,…,n)を送信する順番として、iをシャフルして送信するようにしてもよい。
【０３４０】
検証装置１５０のクエリ検証部１５３の復号部１５３１は、秘密鍵skを用いて暗号データEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))  (i=1,…,n)を復号する。
ｚa=Dec(sk, Enc(pk, ai(2xi-1)))  
ｚb=Dec(sk, Enc(pk, biri(2yi-1)))
・・・(１１０)
を計算する。
【０３４１】
さらに検証装置１５０のクエリ検証部１５３のハッシュ値生成部１５３２は、ｚaとｚｂの積のハッシュ値H（ｚaｚｂ）を計算する。
【０３４２】
検証装置１５０のクエリ検証部１５３の不一致判定部１５３３は、計算したH（zazb）が照合装置１４０から受信したハッシュ値H(aｉbｉrｉ)と不一致のｉの個数がｔ以下であるか否かを判定する。
【０３４３】
検証結果生成部１５４は、不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とする。
【０３４４】
ｚaｚｂ=aｉbｉrｉ(2xi-1)(2yi-1)        ・・・(１１１)
yiが０又は１であり、yi=xiの場合、ｚaｚｂ=aｉbｉrｉ
yiが０又は１であり、yi≠xiの場合、ｚaｚｂ=−aｉbｉrｉ
yiが０,１以外の場合、ｚaｚｂはaｉbｉrｉ、-aｉbｉrｉ以外の値である。
したがって、
H（zazb）＝H（aｉbｉrｉ）    ・・・(１１２)
が成り立つときは、yi=xiであり、ｙi=０又は１の値である。これ以外（ハッシュ値H（ｚaｚｂ）≠H（aｉbｉrｉ））の場合、yiは０又は１であるがｘiと異なるか、yiが０、１以外の値の場合である。このように、i=1,…,nに関する式（１１２）について、不一致の個数が閾値ｔ以下であれば、受理する。
【０３４５】
なお、照合装置１４０で生成した乱数の積aｉbｉrｉを公開鍵pkで暗号化して検証装置１５０に送信しても、検証装置１５０では秘密鍵skで復号化することができる。そこの、aｉbｉrｉのハッシュ値が検証装置１５０に送信される。一方、ハッシュ値v（v＝H(u)）から入力uの逆算は困難である。このため、盗聴されても、中身は読み取れない。
【０３４６】
図２１は、第３の実施形態における照合フェーズの処理を説明する図である。照合要求装置１２０から照合要求を受けると（Ｃ４）、照合装置１４０の登録データ取得部１４１は、記憶装置１３０からIdに関連して記憶された暗号データEnc(pk, (2xi-1)) (i=1,…,n)を受信する（Ｃ４〜Ｃ１０）。照合装置１４０の乱数生成部１４２は、乱数aｉ，bｉ，rｉを生成する（Ｃ１１）。
【０３４７】
照合装置１４０の暗号データ生成部１４３は乱数ｂi(i=1,…,n)の暗号データEnc(pk, ｂi)  (i=1,…,n)を生成し（Ｃ１２）、照合要求装置１２０に送信する（Ｃ１３）。
【０３４８】
照合要求装置１２０は、照合装置１４０からEnc(pk, ｂi) (i=1,…,n)を受け取り（Ｃ１４）、照合ベクトル
2018110608.tif 000132
を抽出し（Ｃ１５）、レスポンス生成部１２３は、照合装置１４０から受け取ったEnc(pk,ｂi) (i=1,…,n)から、スカラー演算によってScl(2yi-1, Enc(bi))= Enc(bi(2yi-1)) (i=1,…,n)を求める（Ｃ１６）。照合要求装置１２０は、Enc(pk, bi(2yi-1)) (i=1,…,n)を照合装置１４０に送信する（Ｃ１７）。
【０３４９】
照合装置１４０は、Enc(pk, bi(2yi-1)) (i=1,…,n)を受け取り（Ｃ１８）、記憶装置１３０から受信したEnc(pk, (2xi-1))と、照合要求装置１２０から送信されたEnc(pk, bi(2yi-1))  (i=1,…,n)と、乱数ai,bi,riから、
Enc(pk, ai(2xi-1)) (i=1,…,n),
Enc(pk, biri(2yi-1)) (i=1,…,n)
を生成する（Ｃ１９Ａ）。またハッシュ値生成部１４８は、乱数aｉ，bｉ，rｉ(i=1,…,n)の積aｉbｉrｉ（mod q）のハッシュ値H(aibiri)を計算する（Ｃ１９Ｂ）。
【０３５０】
クエリ生成部１４５は、暗号データEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))(i=1,…,n)とハッシュ値H(aｉbｉrｉ)(i=1,…,n)を含むクエリを生成し（Ｃ２０）、通信部１４６を介して検証装置１５０に送信する（Ｃ２１）。Hは一方向性ハッシュ関数である。
【０３５１】
検証装置１５０の通信部１５５がクエリを受けると、クエリ検証部１５３の復号部１５３１は、秘密鍵skを用いて暗号データEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1)) (i=1,…,n)を復号する（Ｃ２３Ａ）。すなわち、クエリ検証部１５３の復号部１５３１は
ｚa=Dec(sk, Enc(pk, ai(2xi-1)))  
ｚb=Dec(sk, Enc(pk, biri(2yi-1)))
を計算する。
【０３５２】
さらに検証装置１５０のクエリ検証部１５３のハッシュ値生成部１５３２は、ｚaとｚｂの積のハッシュ値H（ｚaｚｂ）を計算する（Ｃ２３Ｂ）。
【０３５３】
検証装置１５０のクエリ検証部１５３の不一致判定部１５３３は、計算したハッシュ値H（zazb）が、照合装置１４０から受信したハッシュ値H(aｉbｉrｉ)と不一致のｉの個数がｔ以下であるか否かを判定し、検証結果生成部１５４は、不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とし（Ｃ２４）、検証結果を出力する（Ｃ２５）。
【０３５４】
図２２は、第３の実施形態の動作シーケンスを説明する図である。登録要求装置１１０は、登録ベクトルX=[x1, …,xn]を抽出し、要素｛xi｝(i=1,…,n)の演算結果(2xi-1)の暗号データEnc(pk, (2xi-1)) (i=1,…,n)を記憶装置１３０に送信し（Ｓ３１）、記憶装置１３０は、登録識別子Idに関連して記憶する。
【０３５５】
照合要求装置１２０から照合要求を受けると（Ｓ３２）、照合装置１４０は、記憶装置１３０からIdに関連して記憶された暗号データEnc(pk, (2xi-1)) (i=1,…,n)を受信する（Ｓ３３）。
【０３５６】
照合装置１４０は乱数aｉ，bｉ，rｉを生成する（Ｓ３４）。照合装置１４０は乱数ｂi(i=1,…,n)の暗号データEnc(pk, ｂi) (i=1,…,n)を照合要求装置１２０に送信する（Ｓ３５）。
【０３５７】
照合要求装置１２０は、照合ベクトルY=[y1, ….,yn]を抽出し、照合装置１４０から受け取ったEnc(pk, ｂi) (i=1,…,n)から、Enc(bi(2yi-1)) (i=1,…,n)を求め照合装置１４０に送信する（Ｓ３６）。
【０３５８】
照合装置１４０は、照合要求装置１２０からのEnc(pk, bi(2yi-1)) (i=1,…,n)と、記憶装置１３０からの暗号データEnc(pk, (2xi-1))と乱数ai,bi,riから暗号データ
Enc(pk, ai(2xi-1)) (i=1,…,n),
Enc(pk, biri(2yi-1)) (i=1,…,n)を生成する。照合装置１４０は、さらに、ハッシュ値H(aibiri)を生成する。照合装置１４０は、これらを検証装置１５０に送信する（Ｓ３７）。
【０３５９】
検証装置１５０は、秘密鍵skを用いて暗号データをEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))の復号結果ｚa、ｚｂから、その積のハッシュ値H（ｚaｚｂ）を計算する（Ｓ３８Ａ）。
【０３６０】
検証装置１５０は、計算したハッシュ値H（zazb）が照合装置１４０から受信したハッシュ値H(aｉbｉrｉ)と不一致のｉの個数がｔ以下であるか否かを判定する（Ｓ３８Ｂ）。不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とする。検証装置１５０は検出結果（受理・不受理）を出力する（Ｓ３９）。
【０３６１】
＜変形例１＞
図２３は、第３の実施形態の変形例１の動作シーケンスを説明する図である。登録要求装置１１０は、登録ベクトルX=[x1, ….,xn]を抽出し、要素｛xi｝(i=1,…,n)の暗号データEnc(pk, xi) (i=1,…,n)を記憶装置１３０に送信し（Ｓ３１）、記憶装置１３０は、登録識別子Idに関連して記憶する。
【０３６２】
照合要求装置１２０から照合要求を受けると（Ｓ３２）、照合装置１４０は、記憶装置１３０からIdに関連して記憶された暗号データEnc(pk, xi) (i=1,…,n)を受信する（Ｓ３３）。
【０３６３】
照合装置１４０は乱数aｉ，bｉ，rｉを生成する（Ｓ３４）。照合装置１４０は、暗号データEnc(pk, xi) (i=1,…,n)を暗号化したままEnc(pk, 2xi-１) (i=1,…,n)を求める。照合装置１４０は乱数ｂi(i=1,…,n)の暗号データEnc(pk, ｂi) (i=1,…,n)を照合要求装置１２０に送信する（Ｓ３５）。
【０３６４】
照合要求装置１２０は、照合ベクトルY=[y1,…,yn]を抽出し、照合装置１４０から受け取ったEnc(pk, ｂi) (i=1,…,n)から、Enc(pk, biyi) (i=1,…,n)を求め、照合装置１４０に送信する（Ｓ３６）。
【０３６５】
照合装置１４０は、照合要求装置１２０からのEnc(pk, biyi) (i=1,…,n)を受け、暗号化したままEnc(pk, bi(2yi-1)) (i=1,…,n)を生成する。照合装置１４０は、Enc(pk, (2xi-1))と乱数aiiから、Enc(pk, ai(2xi-1)) (i=1,…,n)を生成し、Enc(pk,bi(2yi-1))と乱数rｉからEnc(pk, biri(2yi-1)) (i=1,…,n)を生成する。
照合装置１４０は、ハッシュ値H(aibiri)を生成し、検証装置１５０に送信する（Ｓ３７）。なお、照合要求装置１２０は、照合ベクトルY=[y1,…,yn]を抽出し、照合装置１４０から受け取ったEnc(pk,ｂi) (i=1,…,n)から、Enc(pk, bi(2yi-1)) (i=1,…,n)を生成し照合装置１４０に送信するようにしてもよい。
【０３６６】
検証装置１５０は、秘密鍵skを用いて暗号データをEnc(pk, ai(2xi-1))、Enc(pk, biri(2yi-1))の復号結果ｚa、ｚｂから、その積のハッシュ値H（ｚaｚｂ）を計算する（Ｓ３８Ａ）。
【０３６７】
検証装置１５０は、計算したH（zazb）が照合装置１４０から受信したハッシュ値H(aｉbｉrｉ)と不一致のｉの個数がｔ以下であるか否かを判定する（Ｓ３８Ｂ）。不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とする。検証装置１５０は検出結果（受理・不受理）を出力する（Ｓ３９）。
【０３６８】
＜変形例２＞
第３の実施形態の変形例１では、照合装置１４０が記憶装置１３０から暗号データEnc(pk, xi) (i=1,…,n)を受け取ると、暗号化したままEnc(pk, 2xi-1) (i=1,…,n)を求めているが、記憶装置１３０が、登録要求装置１１０から登録ベクトルX=[x1, …,xn]を抽出し、要素｛xi｝(i=1,…,n)の暗号データEnc(pk, xi) (i=1,…,n)を受け取ると、暗号化したままEnc(pk, 2xi−１) (i=1,…,n)を求め、登録データ記憶部１３３に記憶する構成としてもよい。
【０３６９】
＜変形例３＞
第３実施形態の変形例３において、登録ベクトルX＝[xi,…,xn]の各データxi(i=1,…,n)がxi∈｛０，１｝であるか否かのチェックを行う機能を実装するようにしてもよい。
【０３７０】
図２４は、第３の実施形態の変形例を説明する図である。図２４を参照すると、記憶装置１３０は、図５の記憶装置１３０の構成に加えて、さらに、乱数生成部１３６、暗号データ生成部１３７、ハッシュ値生成部１３８を備えている。
【０３７１】
検証装置１５０は、復号部１５６１と、ハッシュ値生成部１５６２と、一致判定部１５６３を備えた登録データチェック部１５６を更に備えている。
【０３７２】
図２５は、変形例の登録フェーズの動作シーケンスを説明する図である。登録要求装置１１０は、二値ベクトル
2018110608.tif 000133
から、（2x1-1),…, (2xn-1)を計算し、公開鍵pkで暗号化したデータ（第１のテンプレート）
Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))    ・・・(１１３)
を記憶装置１３０に送信する（Ｓ３１）。
【０３７３】
記憶装置１３０の乱数生成部１３６は、乱数c1,…,cnを生成する（Ｓ３１Ａ）。
【０３７４】
記憶装置１３０の暗号データ生成部１３７は、スカラー演算Scl（ci, Enc(pk, (2xi-1))）から、
Enc(pk, c1(2x1-1)),…,Enc(pk, cn(2xn-1))      ・・・(１１４)
を生成する。
【０３７５】
記憶装置１３０のハッシュ値生成部１３８は、ハッシュ関数Hを用いてハッシュ値H（c1^2）,…,H（cn^2）を計算する。記憶装置１３０は、通信部１３５を介して、Enc(pk, c1(2x1-1)),…,Enc(pk, cn(2xn-1))とハッシュ値H（c1^2）,…,H（cn^2）を検証装置１５０に送信する（Ｓ３１Ｂ）。
【０３７６】
検証装置１５０の復号部１５６１は、秘密鍵ｓｋを用いて、Enc(pk, cn(2xi-1)) (i=1,…,n)を復号する（Ｓ３１Ｃ）。
zi=Dec(sk,Enc(pk, ci(2xi-1)))＝ci(2xi-1) (i=1,…,n)  ・・・(１１５)
【０３７７】
そして、検証装置１５０のハッシュ値生成部１５６２はハッシュ値H（zi^2）(i=1,…,n)を求める。
【０３７８】
検証装置１５０の一致判定部１５６３は、i=1,…,nのすべてについて
H（zi^2）＝H（ci^2）            ・・・（１１６）
であれば、受理し、H（zi^2）＝H（ci^2）を満たさないiが一つでもあれば不受理とする（Ｓ３１Ｄ）。
【０３７９】
検証装置１５０は検証結果を記憶装置１３０に通知する（Ｓ３１Ｅ）。
【０３８０】
記憶装置１３０は、検証装置１５０での検証結果が「受理」の場合（Ｓ３１ＦのＹｅｓ分岐）、Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))を登録識別子idと関連付けて登録データ記憶部１３３に記憶する（Ｓ３１Ｇ）。
【０３８１】
なお、復号部１５６１、ハッシュ値生成部１５６２は、クエリ検証部１５３の復号部１５３１、ハッシュ値生成部１５３２を共通に用いてもよい。
【０３８２】
zi=ci(2xi-1) (i=1,…,n)は、
ｘiが０のとき、-ci、
ｘiが1のとき、ci
・・・（１１７）
である。
【０３８３】
したがって、
2018110608.tif 000134
の場合、ハッシュ値H（ｚi^2）＝H（ｃi^2）が成り立つ。H（ｚ１^2）＝H（ｃ１^2）,…,H（ｚｎ^2）＝H（ｃｎ^2）が成立する場合は受理される。この場合、記憶装置１３０は、Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))を登録識別子idと関連付けて登録データ記憶部に記憶する。
【０３８４】
一方、xiが０又は１でない場合、zi=ci(2xi-1) は＋ci、-ci以外の値となり、
2018110608.tif 000135
となり、不受理とする。  
【０３８５】
これ以降の照合フェーズは、図１６を参照して説明したものと同様である。
【０３８６】
なお、登録要求装置１１０は、二値ベクトル
2018110608.tif 000136
からEnc(pk, x1),…,Enc(pk, xn)を生成して、記憶装置１３０に送信し、記憶装置１３０において、 Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))を計算し、さらに、 乱数c1,…,cnを生成し、スカラー演算Scl（ci, Enc(pk, (2xi-1))）から、Enc(pk, c1(2x1-1)),…,Enc(pk, cn(2xn-1))を生成するようにしてもよい。この場合、第１の実施形態にも登録ベクトルX＝[x１,…,xn]の各データxi(i=1,…,n)が
2018110608.tif 000137
であるか否かのチェックを行うことができる。
【０３８７】
第３の実施形態では、検証装置が暗号文を復号して得たメッセージ同士の積を求める。このため，復号値同士の積が定義されていない暗号は使用できない。例えば、復号アルゴリズムがメッセージではなく、Dec（sk,Enc（pk,m））=g^mを出力するmodified Elgamal暗号や、復号アルゴリズムがメッセージではなく、Dec（sk, Enc（pk,m））=m(*)Gを出力するECElgamal暗号は使用できない。modified Elgamal暗号及びECElgamal暗号のメッセージ空間Fq、Paillier暗号のメッセージ空間はZN={0,1,…,N-1}上では積が定義されているため、復号アルゴリズムがメッセージを出力する場合、復号者は復号値が0,1,2,3,…,tのいずれかと一致するか否かを確認すればよい。ただし，modified Elgamal暗号及びECElgamal暗号は、一般的にメッセージを出力する復号アルゴリズムの構成は難しい。
【０３８８】
前記第１、第２の実施形態によれば、生体情報として二値ベクトルを扱うことができ、なりすまし攻撃に耐性を有し、さらに、Somewhat準同型暗号やペアリング演算が不要とされる。上記した特許文献２、３では、なりすまし攻撃に対する耐性の点で問題があり、Somewhat準同型暗号やペアリング演算が必要とされる。また、特許文献５では、なりすまし攻撃に対する耐性の点で問題があり、Somewhat準同型暗号やペアリング演算が必要とされる。
【０３８９】
また、前記第３の実施形態によれば、生体情報として二値ベクトルを扱うことができ、なりすまし攻撃に耐性を有し、さらに、Somewhat準同型暗号やペアリング演算が不要とされるほか、１：Ｎ認証に対応可能である。
【０３９０】
＜第４の実施形態＞
本発明の第４の実施形態について説明する。本発明の第４の実施形態の基本構成は、前記第３の実施形態の説明で参照した図２０と同一とされる。前記第３の実施形態では、加法準同型を有する暗号方式を用いているが、第４の実施形態では、例えばElGamal暗号やRSA暗号等、乗法準同型の暗号方式を用いる。
【０３９１】
ElGamal暗号の鍵生成は、位数q（ビット数はセキュリティパラメータｋ）が素数である群G（乗法群Z＊ｑ）で生成元gを選び、xを{0,1,…,q-1}から選び、h＝g＾xとする。（h, g, q）を公開鍵とし、xを秘密鍵とする。暗号化は、平文mに対して乱数rを{0,1,…,q-1}からランダムに選び、
c1=g^r mod q, 
c2=m・h^r mod q
を計算し、(c1, c2)を暗号文とする。
復号化は、受け取った暗号文に対して、
m = c2(c1^x)^(-1)
とする。ここで、平文m1、m2∈Gでの暗号文は、
Enc(pk, m1)=（g^r1, m1・h^r1）、
Enc(pk, m2)=（g^r2, m2・h^r2）
となり、これら二つの暗号文を掛け合わると、 
（g^（r1＋r2）, (m1×m2)h^（r1＋r2））＝Enc(pk, m1×m2)
となり、
Enc(pk, (m1×m2))=Enc(pk, m1)×Enc(pk, m2)
が成り立つ。
【０３９２】
RSA暗号では、適当な正整数eを選択し、大きな2つの素数{p ,q}を生成し、その積n (=pq)をeとともに公開鍵{e, n}とし、d= e^（-1） ( mod(p-1)(q-1) )を秘密鍵とする。平文mの暗号化は、
c=m^e mod n 
で与えられ、復号化は、
m=c^d mod n
で与えられる。二つの平文m1、m2∈Z＊ｎの二つの暗号文
Enc(pk, m1)=m1^e mod n、
Enc(pk, m2)=m2^e mod n 
を掛け合わると、
（m1×m2）^e mod n=Enc(pk, （m1×m2）)となり、
Enc(pk, (m1×m2))=Enc(pk, m1)×Enc(pk, m2)が成り立つ。
【０３９３】
図２０を参照すると、第４の実施形態において、照合要求装置１２０から照合要求を受けた照合装置１４０の登録データ取得部１４１は、記憶装置１３０から登録識別子idに関連して記憶された暗号データ｛Enc(pk, (2xi-1))｝ (i=1,…,n)を受信する。
【０３９４】
照合装置１４０の乱数生成部１４２は、乱数aｉ，bｉを生成する。
【０３９５】
照合装置１４０の暗号データ生成部１４３は乱数ｂi(i=1,…,n)を公開鍵pkで暗号化した暗号データEnc(pk, ｂi) (i=1,…,n)を照合要求装置１２０に送信する（Ｓ４５）。照合要求装置１２０に送信する暗号データは登録データ（テンプレート）に依存しない。このため、１：Ｎ認証を行うことができる。
【０３９６】
照合要求装置１２０のレスポンス生成部１２３は、照合ベクトルY=［y1,…,yn］の各要素｛yi｝の演算結果(2yi-1)を公開鍵pkで暗号化しEnc(pk, (2yi-1) ) (i=1,…,n)を生成する。照合要求装置１２０のレスポンス生成部１２３は、照合装置１４０から受信したEnc(pk, ｂi)と、Enc(pk, (2yi-1)) (i=1,…,n)を暗号化したまま乗算して（乗法準同暗号）、Enc(pk, ｂi(2yi-1) )を生成し、照合装置１４０に送信する。
【０３９７】
照合装置１４０は、乱数ai(i=1,…,n)を公開鍵pkで暗号化した暗号データEnc(pk, ai) (i=1,…,n)を求め、Enc(pk, (2xi-1))と、照合要求装置１２０からのEnc(pk, bi(2yi-1) )より乗法準同型を用いて、
Enc(pk, aibi(2xi-1)(2yi-1)) (i=1,…,n)              ・・・(１１８)
を生成する。
【０３９８】
ハッシュ値生成部１４８は、乱数aｉ，bｉ(i=1,…,n)の積aｉbｉ（mod q）のハッシュ値
H(aibi)        ・・・(１１９)
を計算する。
【０３９９】
クエリ生成部１４５は、暗号データEnc(pk, aibi (2xi-1) (2yi-1))(i=1,…,n)とハッシュ値H(aｉbｉ)(i=1,…,n)を含むクエリを生成し、通信部１４６を介して検証装置１５０に送信する（Ｓ４７）。Hは一方向性ハッシュ関数である。なお、暗号データEnc(pk, aibi (2xi-1) (2yi-1))(i=1,…,n)を送信する順番として、iに関してシャフルして送信するようにしてもよい。
【０４００】
検証装置１５０のクエリ検証部１５３の復号部１５３１は、秘密鍵skを用いて暗号データEnc(pk, aaibi (2xi-1) (2yi-1)) (i=1,…,n)を復号する。
ｚi=Dec(sk, Enc(pk, aibi (2xi-1) (2yi-1)) (i=1,…,n)        ・・・(１２０)
を計算する。
【０４０１】
さらに検証装置１５０のクエリ検証部１５３のハッシュ値生成部１５３２は、ｚiのハッシュ値H（ｚi）(i=1,…,n)を計算する。
【０４０２】
検証装置１５０のクエリ検証部１５３の不一致判定部１５３３は、計算したH（ｚi）(i=1,…,n)が照合装置１４０から受信したハッシュ値H(aｉbｉ)と不一致のｉの個数がｔ以下であるか否かを判定する。
【０４０３】
検証結果生成部１５４は、不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とする。
【０４０４】
ｚｉ=aｉbｉ(2xi-1)(2yi-1)        ・・・(１２１)
【０４０５】
yiが０又は１であり、yi=xiの場合、ｚｉ=aｉbｉ
yiが０又は１であり、yi≠xiの場合、ｚｉ=−aｉbｉ
yiが０、１以外の場合、ｚｉはaｉbｉ、-aｉbｉ以外の値である。
したがって、
H（zｉ）＝H（aｉbｉ）    ・・・(１２２)
が成り立つときは、yi=xiであり、ｙi=０又は１の値である。これ以外（ハッシュ値H（ｚ）≠H（aｉbｉ））の場合、yiは０又は１であるがｘiと異なるか、yiが０、１以外の値の場合である。このような、xiと不一致の個数がｔ以下であれば、受理する。
【０４０６】
図２６は、第４の実施形態の動作シーケンスを説明する図である。登録要求装置１１０は、登録ベクトルX=[x1, ….,xn]を抽出し、要素｛xi｝(i=1,…,n)の演算結果(2xi-1)の暗号データEnc(pk, (2xi-1)) (i=1,…,n)を記憶装置１３０に送信し（Ｓ４１）、記憶装置１３０は、登録識別子Idに関連して記憶する。
【０４０７】
照合要求装置１２０から照合要求を受けると（Ｓ４２）、照合装置１４０は、記憶装置１３０からIdに関連して記憶された暗号データEnc(pk, (2xi-1)) (i=1,…,n)を受信する（Ｓ４３）。
【０４０８】
照合装置１４０は乱数aｉ，bｉを生成する（Ｓ４４）。照合装置１４０は乱数ｂi(i=1,…,n)の暗号データEnc(pk, ｂi) (i=1,…,n)を照合要求装置１２０に送信する（Ｓ４５）。
【０４０９】
照合要求装置１２０は、照合用の二値ベクトルY=[y1, ….,yn]を抽出し、各要素｛yi｝の演算結果（2yi-1)の暗号データEnc(pk, (2yi-1)) (i=1,…,n)を求め、照合装置１４０から受け取ったEnc(pk, ｂi) (i=1,…,n)と、Enc(pk, (2yi-1)) (i=1,…,n)から、Enc(pk, bi(2yi-1)) (i=1,…,n)を求め照合装置１４０に送信する（Ｓ４６）。
【０４１０】
照合装置１４０は、照合要求装置１２０からのEnc(pk, bi(2yi-1)) (i=1,…,n)と、記憶装置１３０からのEnc(pk, (2xi-1))と乱数ai,bi,から、Enc(pk, aibi (2xi-1) (2yi-1)) (i=1,…,n)を生成し、ハッシュ値H(aibii)を生成し、検証装置１５０に送信する（Ｓ４７）。
【０４１１】
検証装置１５０は、秘密鍵skを用いて暗号データをEnc(pk, aibir (2xi-1) (2yi-1))の復号結果ｚiから、ハッシュ値H（ｚi）を計算する（Ｓ４８Ａ）。
【０４１２】
検証装置１５０は、計算したH（ｚi）が照合装置１４０から受信したハッシュ値H(aｉbｉ)と不一致のｉの個数がｔ以下であるか否かを判定する（Ｓ４８Ｂ）。不一致の個数がｔ以下であれば、受理、それ以外の場合、不受理とする。検証装置１５０は検出結果（受理・不受理）を出力する（Ｓ４９）。
【０４１３】
＜変形例１＞
前記第３の実施形態の変形例３と同様、第４の実施形態においても、登録ベクトルX＝[xi,…,xn]の各要素｛xi｝(i=1,…,n)がxi∈｛０，１｝であるか否かのチェックを行う機能を実装するようにしてもよい。第４の実施形態の変形例の構成は、図２４の記憶装置１３０と検証装置１５０の構成とされる。第４の実施形態の変形例１では、例えばＲＳＡ暗号、ElGamal暗号等、乗法準同型号方式を用いてもよい。
【０４１４】
図２７は、変形例の登録フェーズの動作シーケンスを説明する図である。なお、図２７は、図２５とシーケンスは同じであるが、乗法準同型号方式を用いている点で暗号データの演算処理が相違している。登録要求装置１１０は、登録用の二値ベクトル
2018110608.tif 000138
から、（2x1-1),…, (2xn-1)を計算し、公開鍵pkで暗号化したデータ（第１のテンプレート）
Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))    ・・・(１２３)
を記憶装置１３０に送信する（Ｓ４１）。
【０４１５】
記憶装置１３０の乱数生成部１３６は、乱数c1,…,cnを生成する（Ｓ４１Ａ）。
【０４１６】
記憶装置１３０の暗号データ生成部１３７は、乱数c1,…,cnを公開鍵pkで暗号化した円号データEnc(pk,ci) (i=1,…,n)と、Enc(pk, (2xi-1))(i=1,…,n)から、
Enc(pk, c1(2x1-1)),…,Enc(pk, cn(2xn-1))      ・・・(１２４)
を生成する。
【０４１７】
記憶装置１３０のハッシュ値生成部１３８は、ハッシュ関数Hを用いてハッシュ値H（c1^2）,…,H（cn^2）を計算する。記憶装置１３０は、通信部１３５を介して、Enc(pk, c1(2x1-1)),…,Enc(pk, cn(2xn-1))とハッシュ値H（c1^2）,…,H（cn^2）を検証装置１５０に送信する（Ｓ４１Ｂ）。
【０４１８】
検証装置１５０の復号部１５６１は、秘密鍵skを用いて、Enc(pk, cn(2xi-1)) (i=1,…,n)を復号する（Ｓ４１Ｃ）。
zi=Dec(sk,Enc(pk, ci(2xi-1)))＝ci(2xi-1) (i=1,…,n)    ・・・(１２５)
【０４１９】
そして、検証装置１５０のハッシュ値生成部１５６２はハッシュ値H（zi^2）(i=1,…,n)を求める。
【０４２０】
検証装置１５０の一致判定部１５６３は、i=1,…,nのすべてについて
H（zi^2）＝H（ci^2）            ・・・（１２６）
であれば、受理する。
H（zi^2）＝H（ci^2）を満たさないiが一つでもあれば、検証装置１５０の一致判定部１５６３は不受理とする（Ｓ４１Ｄ）。
【０４２１】
検証装置１５０は検証結果を記憶装置１３０に通知する（Ｓ４１Ｅ）。
【０４２２】
記憶装置１３０は、検証装置１５０での検証結果が「受理」の場合（Ｓ４１ＦのＹｅｓ分岐）、Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))を登録識別子idと関連付けて登録データ記憶部１３３に記憶する（Ｓ４１Ｇ）。
【０４２３】
なお、復号部１５６１、ハッシュ値生成部１５６２は、クエリ検証部１５３の復号部１５３１、ハッシュ値生成部１５３２を共通に用いてもよい。
【０４２４】
zi=ci(2xi-1) (i=1,…,n)は、
ｘiが０のとき、-ci、
ｘiが1のとき、ci
・・・（１２７）
である。
【０４２５】
したがって、
2018110608.tif 000139
の場合、ハッシュ値
H（ｚi^2）＝H（ｃi^2）        ・・・（１２８）
が成り立つ。
【０４２６】
すなわち、H（ｚ１^2）＝H（ｃ１^2）,…,H（ｚｎ^2）＝H（ｃｎ^2）が成立する場合は、受理される。この場合、記憶装置１３０は、Enc(pk, (2x1-1)),…,Enc(pk, (2xn-1))を登録識別子idと関連付けて登録データ記憶部に記憶する。一方、xiが０又は１でない場合、zi=ci(2xi-1) は＋ci、-ci以外の値となり、
2018110608.tif 000140
となり、不受理とする。
【０４２７】
＜変形例２＞
第４の実施形態において、例えば検証装置１５０が、図２６のステップＳ４５及びＳ４６における通信内容を手に入れられる場合、秘密鍵を用いて照合用の二値ベクトルの各要素｛yi｝（i=1,…,n）の値を知ることができてしまう。そこで、第４の実施形態の変形例２では、例えば、非特許文献１に記載の方法と同様の方法を用いて、これを防ぐ。すなわち、照合装置１４０と照合要求装置１２０の間の通信を、検証装置１５０の持つ鍵とは異なる鍵に対応する暗号文とする。
【０４２８】
例えば、ElGamal暗号の秘密鍵をｘ、公開鍵を（h, g, q）、平文mに対する暗号文を(c1, c2)とする。{0,1,…,q-1}からランダムに選んだ乱数ｔに対して計算される(c1^t, c2)は、秘密鍵x/t、公開鍵（h, g^t, q）に対応する平文ｍの暗号文である。ElGamal暗号を用いる場合、照合装置１４０は、照合要求装置１２０から照合要求を受け取ると（Ｓ４２）、そのたびに異なる乱数ｔを生成し、ステップＳ４５では、公開鍵（h, g^t, q）に対応する暗号文及び公開鍵（h, g^t, q）を送付する。
【０４２９】
照合要求装置１２０は、照合装置１４０から受け取った公開鍵（ｈ，ｇ＾ｔ，ｑ）に対応する暗号文を照合装置１４０に送付する（Ｓ４６）。
【０４３０】
照合装置１４０は、ｔを用いることにより、ステップＳ４６で照合要求装置１２０から受け取った暗号文を元の公開鍵（ｈ，ｇ，ｑ）に対応する暗号文に戻すことができる。
【０４３１】
なお、第４の実施形態において、暗号化方式は、RSA暗号、ElGamal暗号等の乗法準同型暗号に制限されるものでなく、加法と乗法に関して準同型性を有する公開鍵暗号方式（Somewhat準同型（somewhat homomorphic encryption scheme）、Gentryによるイデアル格子を利用した完全準同型暗号(例えばC.Gentryによる"Fully Homomorphic Encryption Using Ideal Lattices," In Symposium on Theroy of Computing -STOC 2009,  ACM, 169-178, 2009等が参照される）を用いてもよい。
【０４３２】
＜第５の実施形態＞
図２８に示すように、照合装置１４０は、コンピュータシステムに実装してもよい。図２８を参照すると、サーバコンピュータ等のコンピュータシステム１０は、プロセッサ（ＣＰＵ（Central Processing Unit）、データ処理装置）１１、半導体メモリ（例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、又は、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROＭ）等）、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）等の少なくともいずれかを含む記憶装置１２と、表示装置１３と、通信インタフェース１４を備えている。通信インタフェース１４は、登録要求装置１１０、照合要求装置１２０、記憶装置１３０、検証装置１５０と通信接続する。記憶装置１２に、上記した各実施形態で説明した照合装置１４０の機能を実現するプログラムを記憶しておき、プロセッサ１１が、該プログラムを読み出して実行することで、上記した各実施形態の照合装置１４０を実現するようにしてもよい。あるいは、記憶装置１２と、例えば図５等の記憶装置１３０の登録データ記憶部１３３を同一の記憶装置とし、プロセッサ１１で、図５等の記憶装置１３０の識別子管理部１３１、登録データ生成部１３２、登録データ検索部１３４の処理をさらに実行するようにしてもよい。コンピュータシステム１０はクラウドサービスとしてクライアントに提供するクラウドサーバとして実装するようにしてもよい。
【０４３３】
前記各実施形態の登録要求装置１１０も、図２８に示すように、コンピュータシステム１０に実装してもよい。また前記各実施形態の照合要求装置１２０も、コンピュータシステム１０として実装してもよい。登録要求装置１１０と照合要求装置１２０は別々のコンピュータシステムであってもよいし、登録と照合を同一箇所で行う構成としてもよい。記憶装置１２に、図５等の登録要求装置１１０、照合要求装置１２０の機能を実現するプログラムを記憶しておき、プロセッサ１１が、該プログラムを読み出して実行することで、上記した各実施形態の登録要求装置１１０、照合要求装置１２０を実現するようにしてもよい。登録要求装置１１０、照合要求装置１２０のプロセッサ１１は、インタフェース１４を介して不図示のセンサから指紋等の生体情報を取得し、取得した情報から二値のベクトルX、Yを抽出するようにしてもよい。なお、前記各実施形態の検証装置１５０も、図２８と同様、コンピュータ上で実行されるプログラムで実現してもよいことは勿論である。
【０４３４】
なお、上記の特許文献１−５、非特許文献１の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【０４３５】
上記した実施形態は、以下のように付記される（ただし、以下に制限されない）。
【０４３６】
（付記１）
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する照合装置と、
前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算で得た暗号データを前記照合装置に送信する前記照合要求装置と、
を備え、
前記照合装置は、前記暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、クエリとして検証装置に送信し、
前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置を備えた、ことを特徴とする照合システム。
【０４３７】
（付記２）
登録用の前記第１の二値ベクトルの各要素と前記各要素に対する所定の演算結果の少なくとも一方を前記暗号鍵で暗号化した暗号データを送信する登録要求装置と、
前記登録要求装置から送信された前記第１の二値ベクトルの各要素と前記各要素に対する前記所定の演算結果の少なくとも一方の暗号データを受け、登録データとして記憶する記憶装置と、
をさらに備えたことを特徴とする付記１記載の照合システム。
【０４３８】
（付記３）
照合要求装置からの照合要求に対して、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、照合要求装置に送信する照合装置と、
前記照合装置からの前記第２の暗号データの各々を暗号化したまま、照合用の第２の二値ベクトルの各要素をスカラー演算した値の総和である第３の暗号データを求め、前記照合装置に送信する前記照合要求装置と、
を備え、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信し、
前記検証装置は、
前記照合装置から送信された前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする照合システム。
【０４３９】
（付記４）
前記第１の二値ベクトルに関する前記第１の演算値を前記暗号鍵で暗号化した前記第１の暗号データと、前記第１の二値ベクトルの各要素に関する前記第２の演算値を前記暗号鍵で暗号化した前記第５の暗号データと、を生成し、前記第１の暗号データ及び前記第５の暗号データを記憶装置に送信する登録要求装置と、
前記登録要求装置から前記第１の暗号データと前記第５の暗号データを受け、登録データとして記憶し、さらに、前記第１の暗号データと前記第５の暗号データを前記照合装置に供給する前記記憶装置と、
を備えたことを特徴とする付記３に記載の照合システム。
【０４４０】
（付記５）
前記第１の二値ベクトルの各要素を前記暗号鍵で暗号化した暗号データを記憶装置に送信する登録要求装置と、
前記登録要求装置から前記第１の二値ベクトルの各要素の暗号データを受け、前記第１の二値ベクトルの各要素に関する第１の演算値と第２の演算値を計算して前記第１の暗号データ及び前記第５の暗号データを求め、登録データとして記録し、
さらに、前記第１の暗号データと前記第５の暗号データを前記照合装置に供給する前記記憶装置を備えた、ことを特徴とする付記３に記載の照合システム。
【０４４１】
（付記６）
前記第１の二値ベクトルの各要素を暗号鍵で暗号化して記憶装置に送信する登録要求装置と、
前記第１の二値ベクトルの各要素の暗号データを記録する前記記憶装置と、
を備え、
前記照合装置は、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルの各要素に関する第１、第２の演算値を計算して前記第１及び第５の暗号データとして求める、ことを特徴とする付記３に記載の照合システム。
【０４４２】
（付記７）
照合要求装置から照会要求を受けると、暗号鍵で暗号化されている第１の二値ベクトルに対して予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、生成した乱数を演算して得た第２の暗号データを求め、照合要求装置に送信する照合装置と、
第２の二値ベクトルに予め設定された第２の変換を施してなる第２の変換値を、前記照合装置から送信された前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和を第３の暗号データとして前記照合装置に送付する照合要求装置と、
を備え、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信し、
前記検証装置は、
前記照合装置から送信された前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする照合システム。
【０４４３】
（付記８）
前記登録用のn次元の前記第１の二値ベクトルに前記第１の変換を施してn個の前記第１の変換値を求め、n個の前記第１の変換値を暗号鍵で暗号化した前記第１の暗号データを生成し、前記第１の暗号データと、登録用のn次元の前記第１の二値ベクトルの各要素の暗号データを記憶装置に送付する登録要求装置と、
前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを生成し、
前記第１、第５の暗号データを登録データとして記録し、前記第１、第５の暗号データを前記照合装置に送信する前記記憶装置と、
を備えた、ことを特徴とする付記７に記載の照合システム。
【０４４４】
（付記９）
登録用のn次元の前記第１の二値ベクトルの各要素の暗号データを記憶装置に送付する登録要求装置と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したn個の前記第１の変換値の暗号データを求める手段と、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段を備え、前記n個の第１の変換値の前記第１の暗号データと、前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを記録する前記記憶装置と、
を備え、
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記記憶装置からn個の前記第１の変換値の暗号データを取得し、乱数を生成し、前記乱数を前記n個の第１の変換値の前記第１の暗号データにそれぞれ演算して第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記第２の二値ベクトルに前記第２の変換を施してなる前記第２の変換値を求め、前記各第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して前記第１の変換値と前記第２の変換値を乗算した値の総和の前記第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする付記７に記載の照合システム。
【０４４５】
（付記１０）
前記照合装置は、
前記第１の二値ベクトルの要素を暗号化したまま前記要素の総和の暗号データを生成し、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したn個の前記第１の変換値の第１の暗号データを求める手段と、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段を備え、
乱数を生成し、前記乱数を前記n個の第１の変換値の前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信し、
前記照合要求装置は、
前記第２の二値ベクトルに前記第２の変換を施してなるn個の前記第２の変換値を求め、前記各第２の変換値を、前記第２の暗号データの各々に演算し、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和の第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする付記７に記載の照合システム。
【０４４６】
（付記１１）
前記照合装置は、
前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルの各要素の暗号データを取得し、
前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成する手段と、
前記第１の変換を構成する第１群の変換係数を生成する手段と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施してなるn個の前記第１の変換値を求める手段と、
を備え、さらに乱数を生成し、前記乱数を、前記n個の第１の変換値からなる前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信し、
さらに、前記第１群の変換係数の生成に用いた、前記第２の変換を構成する第２群の変換係数を前記照合要求装置に送信し、
前記照合要求装置は、
前記照合装置からの第２群の変換係数で規定される前記第２の変換を前記第２の二値ベクトルに施してなる前記第２の変換値を求め、前記第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和からなる第３の暗号データを前記照合装置に送付し、
前記照合装置は、
前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除し、前記第１の変換値と第２の変換値を乗算した値の総和の暗号データを求め、前記総和の暗号データと前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする付記７に記載の照合システム。
【０４４７】
（付記１２）
前記登録用のn次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する登録要求装置と、
前記登録要求装置からの前記第１の二値ベクトルの各要素の暗号データを記憶する、ことを特徴とする付記９又は１０記載の照合システム。
【０４４８】
（付記１３）
照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する照合装置と、  照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求め、前記照合装置に送信する照合要求装置と、
を備え、
前記照合装置は、
前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、前記照合要求装置は、
第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数に基づくハッシュ値を（検証用の補助データ）を検証装置に送信し、
前記検証装置は、
前記照合装置からの前記第３、第４の暗号データを復号鍵で復号し、復号した値を乗算した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする照合システム。
【０４４９】
（付記１４）
照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する照合装置と、
照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求めて、前記照合装置に送信する前記照合要求装置と、
を備え、
前記照合装置は、
前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている登録用の第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第２の乱数の演算結果である第３の暗号データと、前記生成した第１及び第２乱数に基づくハッシュ値（検証用の補助データ）とを検証装置に送信し、
前記検証装置は、
前記照合装置からの前記第３の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする照合システム。
【０４５０】
（付記１５）
前記第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを前記記憶装置に送信する登録要求装置と、
前記登録要求装置から送信された暗号データを記憶する前記記憶装置と、
を備えた、ことを特徴とする付記１３又は１４に記載の照合システム。
【０４５１】
（付記１６）
前記第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを前記記憶装置に送信する登録要求装置と、
前記第１の二値ベクトルの各要素の前記第１の演算値の暗号データに対して乱数をそれぞれ生成する手段と、
前記各乱数のハッシュ値を生成する手段と、
を備え、
前記各乱数を演算した暗号データと前記ハッシュ値を前記検証装置に送信する手段を
備えた記憶装置と、
を備え、
前記検証装置は、前記記憶装置から送信された各暗号データを前記復号鍵で復号し、復号した各値のハッシュ値を求め、前記各ハッシュ値が、前記記憶装置から送信された対応するハッシュ値と一致するか判定し、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とし
前記記憶装置は、前記検証装置での検証結果が受理の場合、前記第１の演算値の暗号データを記憶する、ことを特徴とする付記１３又は１４に記載の照合システム。
【０４５２】
（付記１７）
（ａ）照合装置が、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する工程と、
（ｂ）前記照合要求装置が、前記照合装置からの前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、前記照合装置に送信する工程と、
（ｃ）前記照合装置が、暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する工程と、
（ｄ）前記検証装置が、前記照合装置から送信された前記クエリの前記暗号データを復号鍵で復号した値、又は、前記復号した値と前記クエリの前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する工程と、
を含む、ことを特徴とする照合方法。
【０４５３】
（付記１８）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、登録用の前記第１の二値ベクトルの各要素と前記各要素に対する演算結果の少なくとも一方を前記暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から送信された前記第１の二値ベクトルの各要素と前記各要素に対する演算結果の少なくとも一方の暗号データを受け、登録データとして記憶する工程と、
をさらに含む、ことを特徴とする付記１７に記載の照合方法。
【０４５４】
（付記１９）
（ａ）照合装置は、照合要求装置からの照合要求に対して、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信する工程と、
（ｂ）前記照合要求装置は、前記照合装置から送信された前記第２の暗号データの各々に、照合用の第２の二値ベクトルの各値を演算した値の総和である第３の暗号データを求め、前記照合装置に送信する工程と、
（ｃ）前記照合装置は、前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、検証装置に送信する工程と、
（ｄ）前記検証装置は、前記第６の暗号データを前記復号鍵で復号し、復号結果の前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする照合方法。
【０４５５】
（付記２０）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルに関する前記第１の演算値を前記暗号鍵で暗号化した前記第１の暗号データと、前記第１の二値ベクトルの各要素に関する前記第２の演算値を前記暗号鍵で暗号化した前記第５の暗号データと、を生成し、前記第１の暗号データ及び前記第５の暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から前記第１の暗号データと前記第５の暗号データを受け、登録データとして記憶する工程と、
を含む、ことを特徴とする付記１９に記載の照合方法。
【０４５６】
（付記２１）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルの各要素を前記暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記登録要求装置から前記第１の二値ベクトルの各要素の暗号データを受け、前記第１の二値ベクトルの各要素に関する第１の演算値及び第２の演算値を計算して前記第１の暗号データ及び前記第５の暗号データを求め、登録データとして記録する工程を含む、ことを特徴とする付記１９に記載の照合方法。
【０４５７】
（付記２２）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記第１の二値ベクトルの各要素を暗号鍵で暗号化して記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の暗号データを記録する工程と、
を含み、
前記工程（ａ）において、
前記照合装置は、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルの各要素に関する第１、第２の演算値を計算して前記第１及び第５の暗号データとして求める、ことを特徴とする付記１９に記載の照合方法。
【０４５８】
（付記２３）
（ａ）照合装置は、前記照合要求装置から照会要求を受けると、暗号化されている登録用の第１の二値ベクトルに予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、前記乱数を演算して得た第２の暗号データを求め、前記照合要求装置に送信する工程と、
（ｂ）前記照合要求装置は、照合用の第２の二値ベクトルに第２の変換を施してなる第２の変換値を、前記照合装置から受信した前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に第２の変換値を乗じた暗号データを求め、前記暗号データの総和を第３の暗号データとして前記照合装置に送付する工程と、
（ｃ）前記照合装置は、前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、前記検証装置に送信する工程と、
（ｄ）前記検証装置は、前記第６の暗号データを前記復号鍵で復号し、復号結果の前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、受理、不受理を出力する、ことを特徴とする照合方法。
【０４５９】
（付記２４）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のn次元の前記第１の二値ベクトルに前記第１の変換を施しn個の第１の変換値を求め、
前記n個の第１の変換値を暗号鍵で暗号化した第１の暗号データを記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成し、
前記第１、第５の暗号データを登録データとして記録する工程とを含む、ことを特徴とする付記２３に記載の照合方法。
【０４６０】
（付記２５）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のn次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したn個の前記第１の変換値の暗号データを求め、
前記第１の二値ベクトルの要素を暗号化したまま前記要素の総和を暗号化した第５の暗号データを生成し、
前記n個の第１の変換値の前記第１の暗号データと、前記第１の二値ベクトルの要素の総和を暗号化した前記第５の暗号データを記録する工程と、
を含み、
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照会要求を受けると、前記記憶装置からn個の前記第１の変換値の暗号データと、を取得し、乱数を生成し、前記乱数を前記n個の第１の変換値の暗号データにそれぞれ演算して第２の暗号データを求め、前記照合要求装置に送信し、
前記工程（ｂ）において、
前記照合要求装置は、前記第２の二値ベクトルに前記第２の変換を施してなる前記第２の変換値を求め、前記各第２の変換値を前記照合装置から受信した前記第２の暗号データの各々にスカラー演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と前記第２の変換値を乗算した値の総和の前記第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した第６の暗号データを求め、前記検証装置に送信する、ことを特徴とする付記２３に記載の照合方法。
【０４６１】
（付記２６）
前記工程（ａ）において、
前記照合装置が、前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施したn個の前記第１の変換値の暗号データを求める工程と、
前記照合装置が、前記第１の二値ベクトルの要素の総和を暗号化した第５の暗号データを生成し、
乱数を生成し、前記乱数を前記n個の第１の変換値の前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信する工程と、
を含み、
前記工程（ｂ）において、
前記照合要求装置は、前記第２の二値ベクトルに前記第２の変換を施してなるn個の前記第２の変換値を求め、前記各第２の変換値を、前記第２の暗号データの各々に演算し、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和の第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和の第４の暗号データを求め、前記第４の暗号データと前記記憶装置に登録された前記第５の暗号データを加算した値を求め、暗号化したハミング距離として前記検証装置に送信する、ことを特徴とする付記２３に記載の照合方法。
【０４６２】
（付記２７）
前記工程（ａ）において、
前記照合装置は、前記照合要求装置から照会要求を受けると、前記第１の二値ベクトルの各要素の暗号データを取得する工程と、
前記第１の変換を構成する第１群の変換係数を生成する工程と、
前記第１の二値ベクトルの各要素の暗号データを暗号化したまま、前記第１の二値ベクトルに前記第１の変換を施してなるn個の前記第１の変換値を求める工程と、
さらに乱数を生成し、前記乱数を、前記n個の第１の変換値からなる前記第１の暗号データにそれぞれ演算して前記第２の暗号データを求め、前記照合要求装置に送信する工程と、
さらに、前記第１群の変換係数の生成に用いた、前記第２の変換を構成する第２群の変換係数を前記照合要求装置に送信する工程と、
を含み、
前記工程（ｂ）において、
前記照合要求装置は、前記照合装置からの第２群の変換係数で規定される前記第２の変換を前記第２の二値ベクトルに施してなる前記第２の変換値を求め、前記第２の変換値を前記照合装置から受信した前記第２の暗号データの各々に演算して、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データを求め、前記暗号データの総和からなる第３の暗号データを前記照合装置に送付し、
前記工程（ｃ）において、
前記照合装置は、前記照合要求装置から送信された前記第３の暗号データから、前記乱数を削除し、前記第１の変換値と第２の変換値を乗算した値の総和の暗号データを求め、前記総和の暗号データと前記第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した前記第５の暗号データを加算した第６の暗号データを前記検証装置に送信する、ことを特徴とする付記２３に記載の照合方法。
【０４６３】
（付記２８）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前記登録用のn次元の前記第１の二値ベクトルの各要素の暗号データを生成して記憶装置に送付する工程と、
（ｆ）前記記憶装置が、前記登録要求装置からの前記第１の二値ベクトルの各要素の暗号データを記憶する工程と、
を含む、ことを特徴とする付記２６又は２７に記載の照合方法。
【０４６４】
（付記２９）
（ａ）照合装置は、照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する工程と、
（ｂ）前記照合要求装置は、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求め、前記照合装置に送信する工程と、
（ｃ）前記照合装置は、前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、前記暗号鍵で暗号化されている登録用の第１の二値ベクトルの各要素の演算結果である暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数に基づくハッシュ値（検証用の補助データ）を検証装置に送信する工程と、
（ｄ）前記検証装置は、前記照合装置からの前記第３、第４の暗号データを復号鍵で復号し、復号した値を乗算した値のハッシュ値を計算し、前記ハッシュ値が、前記照合装置から受信したハッシュ値と不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする照合方法。
【０４６５】
（付記３０）
（ａ）照合装置は、照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する工程と、
（ｂ）前記照合要求装置は、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを求めて、前記照合装置に送信する工程と、
（ｃ）前記照合装置は、前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている登録用の第１の二値ベクトルの各要素の演算結果である第３の暗号データと、前記第２の乱数の演算結果である第４の暗号データと、前記生成した第１及び第２乱数に基づくハッシュ値（検証用の補助データ）とともに検証装置に送信する工程と、
（ｄ）前記検証装置は、前記照合装置からの前記第４の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値が、前記照合装置から受信したハッシュ値と不一致の個数が予め定められた所定値以下であるか否かを判定し、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする、ことを特徴とする照合方法。
【０４６６】
（付記３１）
前記工程（ａ）の前に、
（ｅ）登録要求装置が、前第１の二値ベクトルの各要素の第１の演算値を暗号鍵で暗号化した暗号データを記憶装置に送信する工程と、
（ｆ）前記記憶装置が、前記第１の二値ベクトルの各要素の前記第１の演算値の暗号データに対して乱数をそれぞれ生成する工程と、
（ｇ）前記記憶装置が、前記各乱数のハッシュ値を生成する工程と、
（ｈ）前記記憶装置が、前記各乱数を演算した暗号データと前記ハッシュ値を前記検証装置に送信する工程と、
（ｉ）前記検証装置は、前記記憶装置から送信された各暗号データを前記復号鍵で復号し、復号した各値のハッシュ値を求め、前記各ハッシュ値が、前記記憶装置から送信された対応するハッシュ値と一致するか判定し、不一致のものが一つでもあれば不受理とし、全て一致する場合、受理とする工程と、
（ｊ）前記記憶装置は、前記検証装置での検証結果が受理の場合、前記第１の演算値の暗号データを記憶する工程と、
を含む、ことを特徴とする付記２９又は３０に記載の照合方法。
【０４６７】
（付記３２）
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する手段と、
前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する手段と、
暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する手段と、
復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置から、検証結果を受信する手段と、
を備えた、ことを特徴とする照合装置。
【０４６８】
（付記３３）
照合要求装置からの照合要求に対して、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、照合要求装置に送信する手段と、
前記照合要求装置から、前記第２の暗号データの各々を暗号化したまま、照合用の第２の二値ベクトルの各要素をスカラー演算した値の総和である第３の暗号データを受信する手段と、
を備え、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信する手段と、
前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、検証結果を出力する検証装置から検証結果を受信する手段と、
を備えたことを特徴とする照合装置。
【０４６９】
（付記３４）
照合要求装置から照会要求を受けると、暗号鍵で暗号化されている登録用の第１の二値ベクトルに対して予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、生成した乱数を演算して得た第２の暗号データを求め前記照合要求装置に送信する手段と、
前記照合要求装置から、照合用の第２の二値ベクトルに予め設定された第２の変換を施してなる第２の変換値を前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データの総和である第３の暗号データを受信する手段と、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信する手段と、
前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、検証結果を出力する検証装置から検証結果を受信する手段と、
を備えたことを特徴とする照合装置。
【０４７０】
（付記３５）
照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する手段と、
前記照合要求装置から、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを受信する手段と、
前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、登録用の第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数に基づくハッシュ値（検証用の補助データ）とを検証装置に送信する手段と、
前記第３、第４の暗号データを復号鍵で復号し、復号した値を乗算した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、検証結果として、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする検証装置から検証結果を受信する手段と、
を備えたことを特徴とする照合装置。
【０４７１】
（付記３６）
照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する手段と、
前記照合要求装置から、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを受信する手段と、
前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている登録用の第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第２の乱数の演算結果である第３の暗号データと、前記生成した第１及び第２乱数に基づくハッシュ値（検証用の補助データ）とを検証装置に送信する手段と、
前記第３の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、検証結果として、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする検証装置から検証結果を受信する手段と、
を備えたことを特徴とする照合装置。
【０４７２】
（付記３７）
照合装置のコンピュータに、
乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルに関する第１の値を暗号化したまま前記乱数との演算で得た暗号データ、又は、生成した前記乱数を前記暗号鍵で暗号化した暗号データを照合要求装置に送信する処理と、
前記照合要求装置から、前記暗号データを暗号化したまま照合用の第２の二値ベクトルの要素との演算により得た暗号データを、受信する処理と、
暗号鍵で暗号化されている前記第１の二値ベクトルに関する第２の値と、前記照合要求装置から送信された前記暗号データと、前記乱数とに基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の程度を検証するための、暗号データ、又は、前記暗号データと補助データを生成し、前記クエリとして検証装置に送信する処理と、
復号鍵を用いて前記暗号データを復号した値、又は前記復号した値と前記補助データ、に基づき、前記第２の二値ベクトルと前記第１の二値ベクトルの不一致の要素の個数が予め定められた個数以下であるか否かを判定する前記検証装置から、検証結果を受信する処理と、
を実行させるプログラム。
【０４７３】
（付記３８）
照合装置のコンピュータに、
照合要求装置からの照合要求に対して、乱数を生成し、暗号鍵で暗号化されている第１の二値ベクトルの各要素に関する第１の演算値を前記暗号鍵で暗号化した第１の暗号データの各々に、前記乱数を演算して得た第２の暗号データを求め、照合要求装置に送信する処理と、
前記照合要求装置から、前記第２の暗号データの各々を暗号化したまま、照合用の第２の二値ベクトルの各要素をスカラー演算した値の総和である第３の暗号データを受信する処理と、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除した第４の暗号データと、前記第１の二値ベクトルの各要素に関する第２の演算値を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信する処理と、
前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、検証結果を出力する検証装置から検証結果を受信する処理と、
を実行させるプログラム。
【０４７４】
（付記３９）
照合要求装置から照会要求を受けると、暗号鍵で暗号化されている登録用の第１の二値ベクトルに対して予め設定された第１の変換を施してなる第１の変換値を前記暗号鍵で暗号化した第１の暗号データに対して、生成した乱数を演算して得た第２の暗号データを求め前記照合要求装置に送信する処理と、
前記照合要求装置から、照合用の第２の二値ベクトルに予め設定された第２の変換を施してなる第２の変換値を前記第２の暗号データに演算することで、前記第１の変換値に前記乱数を演算した値に前記第２の変換値を乗じた暗号データの総和である第３の暗号データを受信する処理と、
前記照合要求装置から送信された前記第３の暗号データに含まれる前記乱数を削除して、前記第１の変換値と第２の変換値を乗算した値の総和である第４の暗号データを求め、前記第４の暗号データに、前記第１の二値ベクトルの各要素の総和を前記暗号鍵で暗号化した第５の暗号データとを暗号化したまま加算することで、前記第１、第２の二値ベクトルの距離の第６の暗号データを求め、クエリとして検証装置に送信する処理と、
前記クエリの前記第６の暗号データを前記復号鍵で復号して得た前記第１、第２の二値ベクトルの距離と予め定められた閾値との比較に基づき、検証結果を出力する検証装置から検証結果を受信する処理と、
を実行させるプログラム。
【０４７５】
（付記４０）
照合要求装置から照合要求を受けると、第１乃至第３の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する処理と、
前記照合要求装置から、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを受信する処理と、
前記照合要求装置からの前記第２の暗号データに前記第２の乱数を演算した第３の暗号データと、登録用の第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第３の乱数との演算結果である第４の暗号データと、前記生成した第１乃至第３の乱数に基づくハッシュ値とを検証装置に送信する処理と、
前記第３、第４の暗号データを復号鍵で復号し、復号した値を乗算した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、検証結果として、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする検証装置から検証結果を受信する処理と、
を実行させるプログラム。
【０４７６】
（付記４１）
照合要求装置から照合要求を受けると、第１、第２の乱数を生成し、前記第１の乱数を前記暗号鍵で暗号化した第１の暗号データを前記照合要求装置に送信する処理と、
前記照合要求装置から、照合用の第２の二値ベクトルの各要素の第１の演算値と、前記第１の乱数の暗号データの第１の演算結果である第２の暗号データを受信する処理と、
前記照合要求装置からの前記第２の暗号データと、前記暗号鍵で暗号化されている登録用の第１の二値ベクトルの各要素の第１の演算値の暗号データと前記第２の乱数の演算結果である第３の暗号データと、前記生成した第１及び第２乱数に基づくハッシュ値とを検証装置に送信する処理と、
前記第３の暗号データを復号鍵で復号し、復号した値のハッシュ値を計算し、前記ハッシュ値と、前記照合装置から送信されたハッシュ値との不一致の個数が予め定められた所定値以下であるか否かを判定し、検証結果として、不一致の個数が所定値以下であれば、受理、それ以外の場合、不受理とする検証装置から検証結果を受信する処理と、
を実行させるプログラム。
【符号の説明】
【０４７７】
１００  照合システム
１０、２０  コンピュータシステム（コンピュータ装置）
１１、２１  プロセッサ
１２、２２  記憶装置
１３、２３  表示装置
１４、２４  インタフェース
２５  センサ
１１０  登録要求装置
１１１  登録情報抽出部
１１２  テンプレート生成部
１１３  通信部
１１４  変換値生成部
１２０  照合要求装置
１２１  照合要求生成部
１２２  照合情報抽出部
１２３  レスポンス生成部
１２４  通信部
１３０  記憶装置
１３１  識別子管理部
１３２  登録データ生成部
１３３  登録データ記憶部
１３４  登録データ検索部
１３５  通信部
１３６  乱数生成部
１３７  暗号データ生成部
１３８  ハッシュ値生成部
１４０  照合装置
１４１  登録データ取得部
１４２  乱数生成部
１４３  暗号データ生成部
１４４  暗号化距離計算部
１４５  クエリ生成部
１４６  通信部
１４７  変換係数生成部
１４８  ハッシュ値生成部
１５０  検証装置
１５１  鍵生成部
１５２  復号鍵記憶部
１５３  クエリ検証部
１５４  検証結果生成部
１５５  通信部
１５６  登録データチェック部
１５３１  復号部
１５３２  ハッシュ値生成部
１５３３  不一致判定部
１５６１  復号部
１５６２  ハッシュ値生成部
１５６３  一致判定部
【図１】
2018110608.tif 000141
【図２】
2018110608.tif 000142
【図３】
2018110608.tif 000143
【図４】
2018110608.tif 000144
【図５】
2018110608.tif 000145
【図６】
2018110608.tif 000146
【図７】
2018110608.tif 000147
【図８】
2018110608.tif 000148
【図９】
2018110608.tif 000149
【図１０】
2018110608.tif 000150
【図１１】
2018110608.tif 000151
【図１２】
2018110608.tif 000152
【図１３】
2018110608.tif 000153
【図１４】
2018110608.tif 000154
【図１５】
2018110608.tif 000155
【図１６】
2018110608.tif 000156
【図１７】
2018110608.tif 000157
【図１８】
2018110608.tif 000158
【図１９】
2018110608.tif 000159
【図２０】
2018110608.tif 000160
【図２１】
2018110608.tif 000161
【図２２】
2018110608.tif 000162
【図２３】
2018110608.tif 000163
【図２４】
2018110608.tif 000164
【図２５】
2018110608.tif 000165
【図２６】
2018110608.tif 000166
【図２７】
2018110608.tif 000167
【図２８】
2018110608.tif 000168
【国際調査報告】
2018110608.tif 000169
2018110608.tif 000170
2018110608.tif 000171
2018110608.tif 000172