(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-26
(45)【発行日】2024-07-04
(54)【発明の名称】データマッチング装置およびそのプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20240627BHJP
G06F 21/62 20130101ALI20240627BHJP
【FI】
H04L9/32 200B
G06F21/62 345
(21)【出願番号】P 2020194204
(22)【出願日】2020-11-24
【審査請求日】2023-10-03
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】梶田 海成
(72)【発明者】
【氏名】田口 周平
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2014-157264(JP,A)
【文献】米国特許出願公開第2013/0246791(US,A1)
【文献】田口 周平 ほか,ユーザセントリックなデータ管理モデルにおける秘匿共通集合計算を用いた視聴データの共通要素抽出アプリの試作,映像情報メディア学会技術報告,日本,(一社)映像情報メディア学会,2020年03月05日,第44巻第7号,pp. 37-40
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行う前記クライアントとなるデータマッチング装置であって、
前記クライアント側のデータ集合を階層ごとに前記PSIプロトコルの暗号化アルゴリズムにより暗号化する暗号化手段と、
前記データ集合の階層ごとに生成された暗号化データから、前記PSIプロトコルの補助情報生成アルゴリズムにより、前記階層ごとに、インデックスの要素に対応するインデックス補助情報を生成するインデックス補助情報生成手段と、
前記暗号化データと、前記データ集合の要素と、当該要素に対応する前記インデックス補助情報とから、ハッシュ公開鍵を用いて、前記階層ごとにインデックスの要素に対応するハッシュ値を算出するインデックスハッシュ値算出手段と、
前記サーバ側のデータ集合の階層ごとにハッシュ秘密鍵を用いて算出されたインデックスの要素に対応するハッシュ値を受信するハッシュ値受信手段と、
前記インデックスハッシュ値算出手段で算出されたハッシュ値と、前記サーバで算出されたハッシュ値とで、共通のハッシュ値を検出する共通ハッシュ値検出手段と、
前記クライアント側のデータ集合において、前記共通のハッシュ値に対応する階層ごとのインデックスの要素をマッチング結果として出力する結果出力手段と、を備え
、
前記共通ハッシュ値検出手段は、前記階層の親ノードにおいて共通するハッシュ値を検出し、検出した親ノードの要素に対応する子ノードの要素を除外して、前記子ノードにおいて共通するハッシュ値を検出することを特徴とするデータマッチング装置。
【請求項2】
前記階層ごとの暗号化データから、前記PSIプロトコルの補助情報生成アルゴリズムにより、前記データ集合に含まれる要素の検証に用いる補助情報を階層ごとに生成する補助情報生成手段と、
前記階層ごとの暗号化データと補助情報とを検証用データとして前記サーバに送信する検証用データ送信手段と、
をさらに備えることを特徴とする請求項
1に記載のデータマッチング装置。
【請求項3】
コンピュータを、請求項1
または請求項
2に記載のデータマッチング装置として機能させるためのデータマッチングプログラム。
【請求項4】
クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行
うデータマッチング装置であって、
前記サーバ側のデータ集合を階層ごとに前記PSIプロトコルの暗号化アルゴリズムにより暗号化する暗号化手段と、
前記階層ごとに生成された暗号化データと、前記データ集合の要素とから、ハッシュ秘密鍵を用いて、前記階層ごとにインデックスの要素に対応するハッシュ値を算出するインデックスハッシュ値算出手段と、
前記データ集合の階層ごとに算出されたインデックスの要素に対応するハッシュ値を前記クライアントに送信するハッシュ値送信手段と、
を前記サーバとして機能するための手段として備え、
前記クライアント側のデータ集合を階層ごとに前記PSIプロトコルの暗号化アルゴリズムにより暗号化する第2暗号化手段と、
前記クライアント側のデータ集合の階層ごとに生成された第2暗号化データから、前記PSIプロトコルの補助情報生成アルゴリズムにより、前記階層ごとに、インデックスの要素に対応するインデックス補助情報を生成するインデックス補助情報生成手段と、
前記第2暗号化データと、前記クライアント側のデータ集合の要素と、当該要素に対応する前記インデックス補助情報とから、ハッシュ公開鍵を用いて、前記階層ごとにインデックスの要素に対応するハッシュ値を算出するインデックスハッシュ値算出手段と、
前記サーバ側のデータ集合の階層ごとにハッシュ秘密鍵を用いて算出されたインデックスの要素に対応するハッシュ値を受信するハッシュ値受信手段と、
前記インデックスハッシュ値算出手段で算出されたハッシュ値と、前記サーバで算出されたハッシュ値とで、共通のハッシュ値を検出する共通ハッシュ値検出手段と、
前記クライアント側のデータ集合において、前記共通のハッシュ値に対応する階層ごとのインデックスの要素をマッチング結果として出力する結果出力手段と、を前記クライアントとして機能するための手段として備え、
前記共通ハッシュ値検出手段は、前記階層の親ノードにおいて共通するハッシュ値を検出し、検出した親ノードの要素に対応する子ノードの要素を除外して、前記子ノードにおいて共通するハッシュ値を検出することを特徴とするデータマッチング装置。
【請求項5】
前記階層ごとの第2暗号化データから、前記PSIプロトコルの補助情報生成アルゴリズムにより、前記クライアント側のデータ集合に含まれる要素の検証に用いる補助情報を階層ごとに生成する補助情報生成手段と、
前記階層ごとの第2暗号化データと補助情報とを検証用データとして前記サーバに送信する検証用データ送信手段と、を前記クライアントとして機能するための手段としてさらに備え、
前
記検証用データ
を受信する検証用データ受信手段と、
前記検証用データを、前記階層ごとに前記PSIプロトコルの検証アルゴリズムにより検証する検証手段と、
を前記サーバとして機能するための手段としてさらに備えることを特徴とする請求項
4に記載のデータマッチング装置。
【請求項6】
コンピュータを、請求項
4または請求項
5に記載のデータマッチング装置として機能させるためのデータマッチングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、階層構造を有するデータ集合のマッチングを行うデータマッチング装置およびそのプログラムに関する。
【背景技術】
【0002】
従来、データ集合を持つユーザ同士で、互いにその内容を開示することなく、共通の要素のみを共有することが可能なPSI(Private Set Intersection;共通集合秘匿計算)プロトコルが知られている。
このPSIプロトコルは、暗号学的ハッシュ関数を用いてデータ集合の各要素をハッシュ化し、それらのハッシュ値を比較することで高速化を実現している。このような暗号学的ハッシュ関数を単に用いた構成は、ハッシュ関数のドメインのエントロピーが小さい(集合内の要素の種類が多くない)場合、容易に全数探索(brute force)攻撃が可能である。この全数探索攻撃は、公開鍵暗号やデジタル署名を用いることで防止することができる。
【0003】
しかし、従来のPSIプロトコルは、例え十分大きな集合数を確保しても、複数回の実行で集合の要素数を取得することができる。この攻撃はオラクル攻撃と呼ばれている。PSIプロトコルを行う集合の要素数は、それ自体が秘匿対象である。
そこで、近年、オラクル攻撃を防ぐPSIプロトコルとして、リアクティブPSI(RePSI)プロトコルが開示されている(非特許文献1参照)。
RePSIプロトコルは、プロトコルの終了時にそのプロトコルの状態を、次のプロトコル開始時に使用し、攻撃時の状態を逐次変化させることで、オラクル攻撃を防止している。
【先行技術文献】
【非特許文献】
【0004】
【文献】Cerulli, A., De Cristofaro, E., & Soriente, C. "Nothing Refreshes Like a RePSI: Reactive Private Set Intersection". In International Conference on Applied Cryptography and Network Security (pp. 280-300). Springer, Cham. (2018, July).
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のPSIプロトコル(RePSIプロトコルを含む)をデータマッチング装置に構築し、マッチングを行う場合、効率性に課題がある。
従来のPSIプロトコルで階層構造を有するデータのマッチングを行う場合、階層ごとにPSIプロトコルを実行しなければならない。
なお、PSIプロトコルは、すべてのデータを並列に扱うため、例えば、階層構造のデータを1つのデータ列として扱ったとしても、以下に示す課題がある。
【0006】
マッチングの対象を視聴履歴とし、
図10に示すように、データ集合U1とデータ集合U2とを、PSIプロトコルでマッチングすることとする。データ集合U1,U2は、それぞれ異なるユーザの視聴履歴である。視聴履歴は、本来、1つの番組(番組名)に対して、複数のキーワード(要素)であるジャンル、出演者等が存在する階層構造である。
しかし、PSIプロトコルでは、すべてのキーワードが並列であるため、データ集合U1,U2は、それぞれ、番組名と、ジャンル、出演者等とが同レベルのキーワードとして配列される。
【0007】
ここで、データ集合U1の番組の数をN個、データ集合U2の番組の数をM個として、各番組の番組名以外のキーワード(ジャンル、出演者等)をα個とする。
この場合、PSIプロトコルでは、データ集合U1のジャンルG1がデータ集合U2に存在するか否かは、(α+1)M回の探索が必要となる。これは、他のキーワード(番組名A4、ジャンルG2、出演者P6等)でも同様である。
そのため、従来のPSIプロトコルを用いて、データ集合U1,U2ですべての共通キーワードを見つけるには、(α+1)N×(α+1)M=(α+1)
2NM回の探索が必要となる。
図10の例では、ジャンルG2や出演者P6は、同じ番組(番組名A4)に属するキーワードである。この場合、番組名A4がマッチングすれば、それに属するジャンルG2や出演者P6は、必ずマッチングすることになる。
このように、すべてのキーワードを並列に扱うPSIプロトコルでは、階層構造を有するデータのマッチングを行う場合、無駄な検索が発生し、効率が悪いという問題がある。
【0008】
本発明は、このような従来技術の問題点に鑑みてなされたもので、PSIプロトコルで階層構造のデータのマッチングを効率よく行うことが可能なデータマッチング装置およびそのプログラムを提供することを課題とする。
【課題を解決するための手段】
【0009】
前記課題を解決するため、本発明に係るデータマッチング装置は、クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行うクライアントとなるデータマッチング装置であって、暗号化手段と、インデックス補助情報生成手段と、インデックスハッシュ値算出手段と、ハッシュ値受信手段と、共通ハッシュ値検出手段と、結果出力手段と、を備える構成とした。
【0010】
かかる構成において、クライアントとして機能するデータマッチング装置は、暗号化手段によって、クライアント側のデータ集合を階層ごとにPSIプロトコルの暗号化アルゴリズムにより暗号化する。
そして、データマッチング装置は、インデックス補助情報生成手段によって、データ集合の階層ごとに生成された暗号化データから、PSIプロトコルの補助情報生成アルゴリズムにより、階層ごとに、インデックスの要素に対応するインデックス補助情報を生成する。なお、インデックスとは、階層ごとのデータ集合の要素の位置を示す位置情報である。
【0011】
さらに、データマッチング装置は、インデックスハッシュ値算出手段によって、暗号化データと、データ集合の要素と、当該要素に対応するインデックス補助情報とから、ハッシュ公開鍵を用いて、階層ごとにインデックスの要素に対応するハッシュ値を算出する。
そして、データマッチング装置は、ハッシュ値受信手段によって、サーバ側のデータ集合の階層ごとに、ハッシュ公開鍵に対応するハッシュ秘密鍵を用いて算出されたインデックスの要素に対応するハッシュ値を受信する。
【0012】
そして、データマッチング装置は、共通ハッシュ値検出手段によって、インデックスハッシュ値算出手段で算出されたハッシュ値と、サーバで算出されたハッシュ値とで、共通のハッシュ値を検出する。この共通ハッシュ値検出手段は、階層の親ノードにおいて共通するハッシュ値を検出し、検出した親ノードの要素に対応する子ノードの要素を除外して、子ノードにおいて共通するハッシュ値を検出する。これによって、共通ハッシュ値検出手段は、データ集合の要素をハッシュ値で秘匿したまま、階層構造で共通のハッシュ値を検出することができる。
そして、データマッチング装置は、結果出力手段によって、クライアント側のデータ集合において、共通のハッシュ値に対応する階層ごとのインデックスの要素をマッチング結果として出力する。これによって、結果出力手段は、サーバとの間で、データ集合でマッチングした要素を出力することができる。
【0013】
なお、クライアントのデータマッチング装置は、コンピュータを、前記した各手段として機能させるためのデータマッチングプログラムで動作させることができる。
【0014】
また、前記課題を解決するため、本発明に係るデータマッチング装置は、クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行うデータマッチング装置であって、暗号化手段と、インデックスハッシュ値算出手段と、ハッシュ値送信手段と、をサーバとして機能するための手段として備え、第2暗号化手段と、インデックス補助情報生成手段と、インデックスハッシュ値算出手段と、ハッシュ値受信手段と、共通ハッシュ値検出手段と、結果出力手段と、をクライアントとして機能するための手段として備える構成とした。
【0015】
かかる構成において、サーバとして機能するデータマッチング装置は、暗号化手段によって、サーバ側のデータ集合を階層ごとにPSIプロトコルの暗号化アルゴリズムにより暗号化する。
そして、データマッチング装置は、インデックスハッシュ値算出手段によって、階層ごとに生成された暗号化データと、サーバ側のデータ集合の要素とから、ハッシュ秘密鍵を用いて、階層ごとにインデックスの要素に対応するハッシュ値を算出する。
【0016】
そして、データマッチング装置は、ハッシュ値送信手段によって、データ集合の階層ごとに算出されたインデックスの要素に対応するハッシュ値をクライアントに送信する。
これによって、サーバ側のデータ集合は、階層化され、要素がハッシュ値として秘匿された状態で、クライアントに送信される。
【0017】
また、クライアントとして機能するデータマッチング装置は、第2暗号化手段によって、クライアント側のデータ集合を階層ごとにPSIプロトコルの暗号化アルゴリズムにより暗号化する。
そして、データマッチング装置は、インデックス補助情報生成手段によって、クライアント側のデータ集合の階層ごとに生成された第2暗号化データから、PSIプロトコルの補助情報生成アルゴリズムにより、階層ごとに、インデックスの要素に対応するインデックス補助情報を生成する。
さらに、データマッチング装置は、インデックスハッシュ値算出手段によって、第2暗号化データと、クライアント側のデータ集合の要素と、当該要素に対応するインデックス補助情報とから、ハッシュ公開鍵を用いて、階層ごとにインデックスの要素に対応するハッシュ値を算出する。
そして、データマッチング装置は、ハッシュ値受信手段によって、サーバ側のデータ集合の階層ごとに、ハッシュ公開鍵に対応するハッシュ秘密鍵を用いて算出されたインデックスの要素に対応するハッシュ値を受信する。
そして、データマッチング装置は、共通ハッシュ値検出手段によって、インデックスハッシュ値算出手段で算出されたハッシュ値と、サーバで算出されたハッシュ値とで、共通のハッシュ値を検出する。
そして、データマッチング装置は、結果出力手段によって、クライアント側のデータ集合において、共通のハッシュ値に対応する階層ごとのインデックスの要素をマッチング結果として出力する。
なお、データマッチング装置は、コンピュータを、前記した各手段として機能させるためのデータマッチングプログラムで動作させることができる。
【発明の効果】
【0018】
本発明は、以下に示す優れた効果を奏するものである。
本発明によれば、階層構造を有するデータを1回のPSIプロトコルでマッチングすることができる。
また、本発明によれば、階層構造のデータのマッチングが可能であるため、データ集合間で、効率よくマッチングするデータを検索することができる。
【図面の簡単な説明】
【0019】
【
図1】本発明の実施形態に係るデータマッチングシステムの全体構成を示すブロック図である。
【
図2】階層構造を有するデータ集合のデータ構成を説明するための説明図である。
【
図3】視聴履歴を例として、
図2の階層構造のデータ集合をモジュール化した例を説明するための説明図である。
【
図4】本発明の実施形態に係るデータマッチング装置の構成を示すブロック図である。
【
図5】ハッシュ値のデータ集合を説明するための説明図であって、(a)はクライアント、(b)はサーバのデータ集合を示す。
【
図6】共通ハッシュ値検出手段の親ノードのデータ検出手法を説明するための説明図であって、(a)はクライアント、(b)はサーバのデータ集合を示す。
【
図7】共通ハッシュ値検出手段の子ノードのデータ検出手法を説明するための説明図であって、(a)はクライアント、(b)はサーバのデータ集合を示す。
【
図8】本発明の実施形態に係るデータマッチングシステムの動作を示すフローチャート(1/2)である。
【
図9】本発明の実施形態に係るデータマッチングシステムの動作を示すフローチャート(2/2)である。
【
図10】従来のデータ検索手法を説明するための説明図である。
【発明を実施するための形態】
【0020】
<データマッチングシステムの構成>
最初に、
図1を参照して、本発明の実施形態に係るデータマッチングシステム100の構成について説明する。
【0021】
データマッチングシステム100は、階層構造を有するデータ集合から、共通する要素をマッチングするものである。
データマッチングシステム100は、相互にデータ集合のマッチングを行うデータマッチング装置1(1C,1S)と、それぞれのデータマッチング装置1のマッチング対象となるデータ集合を記憶するデータベース2(2C,2S)と、を備える。
【0022】
データマッチング装置1は、他のデータマッチング装置1との間で、データ集合の共通する要素をマッチングする端末装置である。例えば、データマッチング装置1は、スマートフォン、タブレット端末、パーソナルコンピュータ等である。
ここでは、マッチングを要求する側(クライアント)のデータマッチング装置1を、データマッチング装置1C、マッチングを要求される側(サーバ)のデータマッチング装置1を、データマッチング装置1Sとする。
データマッチング装置1は、データ集合を階層構造として、PSIプロトコルでデータのマッチングを行う。ここでは、データマッチング装置1は、PSIプロトコルとしてRePSIプロトコルを用い、RePSIプロトコルの状態情報をデータベース上で更新するとともに、データのマッチングを行う。
データマッチング装置1の詳細な構成については後記する。
【0023】
データベース2は、データマッチング装置1同士がマッチングを行うデータの対象であるデータ集合を記憶するものである。このデータベース2はクラウドC上に存在する。
なお、データベース2は、RePSIプロトコルの状態情報をさらに記憶する。この状態情報は、マッチングを行ったデータマッチング装置1ごとにIPアドレス等の相手装置を特定する情報と対応付けて複数記憶される。マッチングを行っていない段階では、状態情報は存在しない。
【0024】
データベース2Cは、データマッチング装置1CのユーザXのデータ集合を記憶するものである。
データベース2Sは、データマッチング装置1SのユーザYのデータ集合を記憶するものである。
データベース2が記憶するデータ集合は、予め定めたデータ構成でモジュール化されたデータである。
【0025】
ここで、
図2を参照して、データ集合のデータ構成について説明する。なお、データ構成について分かり易くするため、予め以下に示す特定の条件において説明する。
図2に示すように、データ集合は、N(1以上の整数)個の要素(C
0,C
1,…,C
N-1)で構成された親ノードPNと、親ノードPNの要素ごとに予め定めた数(α個〔1以上の整数〕)の要素で構成された子ノードCNを対応付けた階層構造とする。
親ノードPNの1つの要素に対応する子ノードCNの要素の個数は、すべて同じ個数(α個)とする。また、各要素のデータ長はすべて同じとする。
図1に戻って、データマッチングシステム100の構成について説明する。
【0026】
データベース2が記憶するデータ集合は、ここでは、視聴履歴とするが、階層構造を有するデータ集合であれば、視聴履歴に限定されるものではない。
視聴履歴は、ユーザが視聴端末TEを介して視聴した番組の履歴データである。
視聴端末TEは、放送波を介して番組を視聴するテレビジョン端末、高速インターネットのOTT(Over The Top)サービスで提供される動画等を視聴するスマートフォン、タブレット端末、パーソナルコンピュータ等である。
【0027】
視聴履歴を、
図2で示した階層構造のデータ構成でモジュール化した例を
図3に示す。
図3に示すように、あるユーザXの視聴履歴のデータ集合U
Xは、番組ごとのN個の番組名を要素とする親ノードPN1と、親ノードPN1の要素(番組名)ごとに、下位層の要素(ジャンル、出演者等)をα個配列した子ノードCN1とで構成される。
別のユーザYの視聴履歴のデータ集合U
Yも、データ集合U1と同じ構成である。データ集合U2の親ノードPN2の要素数は、ユーザYが視聴した番組の数(M個)である。また、データ集合U2の各要素の内容はユーザYが視聴した番組に依存するデータである。また、子ノードCN1,CN2のα個の要素は、それぞれ対応する要素が同種類の要素とする。例えば、α個の第1番目の要素はジャンル、第2番目の要素は出演者等、予め定まっているものとする。
【0028】
(PSIプロトコルの暗号プリミティブ)
ここで、データマッチングシステム100で用いる既知のPSIプロトコルの暗号プリミティブについて簡単に説明しておく。
PSIプロトコルの暗号プリミティブは、双線形写像による鍵生成、暗号化(評価)、補助情報(ウィットネス)生成、検証の4つのアルゴリズムからなる。
鍵生成アルゴリズム(KeyGen)は、以下の式(1)に示すようにセキュリティパラメータλを入力し、秘密鍵skと公開鍵(暗号鍵)ekとを生成するアルゴリズムである。
【0029】
【0030】
暗号化(評価)アルゴリズム(Eval)は、以下の式(2)に示すように、秘密鍵skと公開鍵ekと乱数rとによって、データ集合A=(a1,…,an)を暗号化した暗号化データ(アキュムレータ)accAを生成するアルゴリズムである。
【0031】
【0032】
なお、暗号化アルゴリズム(Eval)の引数である秘密鍵skは、サーバ側では使用するが、クライアント側では使用しない。
補助情報(ウィットネス)生成アルゴリズム(WitGen)は、以下の式(3)に示すように、秘密鍵skと公開鍵ekと暗号化データaccAと乱数rとによって、データ集合Aに含まれる要素aの検証に用いる補助情報(wit)を生成するアルゴリズムである。
要素aの検証ではなく、データ集合Aに含まれる部分集合Bの検証には、補助情報(ウィットネス)生成アルゴリズム(WitGen*)を用いる。WitGen*は、以下の式(3′)に示すように、秘密鍵skと公開鍵ekと暗号化データaccAと乱数r,sとによって、データ集合Aに含まれる部分集合Bの検証に用いる補助情報(wit*)を生成するアルゴリズムである。
【0033】
【0034】
なお、補助情報生成アルゴリズム(WitGen,WitGen*)の引数である秘密鍵skは、サーバ側では使用するが、クライアント側では使用しない。
検証アルゴリズム(Verify)は、以下の式(4)に示すように、公開鍵ekと暗号化データaccAと補助情報witとから、要素aがデータ集合Aに含まれているか否かを検証するアルゴリズムである。
要素aの検証ではなく、データ集合Aに含まれる部分集合Bの検証には、検証アルゴリズム(Verify*)を用いる。ここでは、式(2)を用いて、秘密鍵sk、公開鍵ekおよび乱数rによって、データ集合Aの部分集合Bを暗号化した暗号化データ(アキュムレータ)をaccBとする。Verify*は、以下の式(4′)に示すように、公開鍵ekと、暗号化データaccAと、式(2)を部分集合Bに適応して得られた暗号化データEval(sk,ek,B,s)→accBと、補助情報wit*とから、部分集合Bがデータ集合Aに含まれているか否かを検証するアルゴリズムである。
【0035】
【0036】
なお、検証アルゴリズム(Verify,Verify*)は、データ集合Aに要素aまたは部分集合Bが含まれていれば“1”、含まれていなければ“0”を出力する。
また、PSIプロトコルでは、ハッシュ値を計算するためのアルゴリズムとして、3つの連続射影ハッシュ関数(Hgen,Hash,PHash)を用いる。
Hgenは、以下の式(5)に示すようにセキュリティパラメータλを入力し、ハッシュ秘密鍵hskとハッシュ公開鍵hpkとを生成する関数である。
【0037】
【0038】
なお、LekはPHashの内部処理で使用する値であるため、ここでは、説明を省略する。
Hashは、以下の式(6)に示すように、ハッシュ秘密鍵hskを用いて、暗号化データaccの要素aをインデックスとしたハッシュ値を演算する関数である、
【0039】
【0040】
PHashは、以下の式(7)に示すように、ハッシュ公開鍵hpkと補助情報witとを用いて、暗号化データaccの要素aをインデックスとしたハッシュ値を演算する関数である、
【0041】
【0042】
なお、暗号化データaccと要素aが同じであれば、Hashで生成されたハッシュ値と、PHashで生成されたハッシュ値とは同じになる、
【0043】
<データマッチング装置の構成>
次に、
図4を参照して、本発明の実施形態に係るデータマッチング装置1の構成について説明する。
【0044】
(クライアント)
まず、クライアント側のデータマッチング装置1Cの構成について説明する。
データマッチング装置1Cは、クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行うクライアントとなる装置である。
ここでは、データマッチング装置1Cは、マッチング要求手段10と、鍵情報取得手段11と、状態情報更新手段12と、暗号化手段13と、補助情報生成手段14と、Idx補助情報生成手段15と、Idxハッシュ値算出手段16と、共通ハッシュ値検出手段17と、結果出力手段18と、通信手段19と、を備える。
【0045】
マッチング要求手段10は、外部からマッチング要求を指示されることで、サーバ側のデータマッチング装置1Sにマッチングの要求の指示(マッチング要求)を送信するものである。
マッチング要求手段10は、通信手段19を介して、データマッチング装置1Sにマッチング要求を送信する。
【0046】
マッチング要求手段10は、データベース2Cを参照し、相手方のデータマッチング装置1Sに対応する状態情報の有無により、相手方のデータマッチング装置1Sとすでにマッチングを行ったことがあるか否かを判定する。
データマッチング装置1Sとまだマッチングを行ったことがない場合、データマッチング装置1Cは、鍵情報取得手段11に動作を移行する。一方、データマッチング装置1Sとすでにマッチングを行ったことがある場合、データマッチング装置1Cは、状態情報更新手段12に動作を移行する。
【0047】
鍵情報取得手段11は、データマッチング装置1Sで生成される鍵情報を取得するものである。
鍵情報取得手段11は、通信手段19を介して、データマッチング装置1Sから、鍵情報として、以下の式(8)に示す鍵情報paramCを取得する。
【0048】
【0049】
鍵情報paramCは、パラメータ(p,G,GT,e,g)と、公開鍵(暗号鍵)ekと、ハッシュ公開鍵hpkとで構成される。なお、鍵情報paramCの詳細については、データマッチング装置1Sの鍵情報生成手段21において説明する。
取得した鍵情報は、図示を省略したメモリに記憶され、データマッチング装置1C内で参照される。
鍵情報を取得後、データマッチング装置1Cは、状態情報更新手段12に動作を移行する。
【0050】
状態情報更新手段12は、データベース2Cから、階層構造を有するデータ集合と、PSIプロトコルで使用する状態情報とを取得し、状態情報を更新するものである。
データベース2Cから取得するデータは、親ノードのデータ集合CPおよび子ノードのデータ集合CKと、状態情報StCである。
データ集合CPおよびデータ集合CKは、過去にマッチングを行った後に収集されたデータで、以下の式(9)に示すデータ集合である。
【0051】
【0052】
データ集合CPのN個の要素は、例えば、
図3のデータ集合U
Xの親ノードPN1に示す番組名である。データ集合CKのαN個の要素は、例えば、
図3のデータ集合U
Xの子ノードCN1に示すジャンル、出演者等のキーワードである。
状態情報St
Cは、以下の式(10)に示すように、鍵情報param
Cと、データ集合U
1と、子ノードのデータ集合U
2と、乱数rとからなる。
【0053】
【0054】
なお、初期状態の状態情報StCは、空集合である。
状態情報更新手段12は、データ集合CP,CKの暗号化に用いる乱数rを生成するとともに、以下の式(11)に示す和集合を新たに生成する。
【0055】
【0056】
なお、U1′,U2′は、更新前の状態情報StCに含まれているデータ集合U1,U2である。
状態情報更新手段12は、新たに生成した親ノードのデータ集合U1と、子ノードのデータ集合U2と、乱数rとにより、式(10)に示す新たな状態情報StCを生成する。
そして、状態情報更新手段12は、生成した状態情報StCで、データベース2Cの状態情報StCを更新する。
【0057】
暗号化手段13は、データベース2Cから取得したデータ集合CP,CKと、状態情報更新手段12で新たに生成したデータ集合U1,U2と、を暗号化するものである。
暗号化手段13は、データ集合U1,U2の暗号化に用いる乱数sを生成する。
そして、暗号化手段13は、式(2)の暗号化アルゴリズム(Eval)を用いて、鍵情報paramCに含まれている公開鍵ekと、乱数r,sとにより、以下の式(12)の演算を行うことで、データ集合CP,CK,U1,U2をそれぞれ暗号化データ(アキュムレータ)accC,accC′,accU,accU′に暗号化する。
【0058】
【0059】
補助情報生成手段14は、暗号化手段13で生成された暗号化データのデータ集合に含まれる要素の検証に用いる補助情報を生成するものである。
補助情報生成手段14は、式(3′)の補助情報生成アルゴリズム(WitGen*)を用いて、鍵情報paramCに含まれている公開鍵ekと、乱数r,r′,sとにより、以下の式(13)の演算を行うことで、補助情報wit*
C,wit*
C′,wit*
U,wit*
U′を生成する。
【0060】
【0061】
なお、U1′,U2′,r′は、状態情報更新手段12が取得した、更新前の状態情報StC(式(10)参照)に含まれているデータ集合U1,U2、乱数rである。
補助情報wit*
Cは、暗号化データaccUのデータ集合U1に含まれるデータ集合CPの検証に用いる情報である。
補助情報wit*
C′は、暗号化データaccUのデータ集合U1に含まれるデータ集合U1′の検証に用いる情報である。
補助情報wit*
Uは、暗号化データaccU′のデータ集合U2に含まれるデータ集合CKの検証に用いる情報である。
補助情報wit*
U′は、暗号化データaccU′のデータ集合U2に含まれるデータ集合U2′の検証に用いる情報である。
補助情報生成手段14は、暗号化データaccC,accC′,accU,accU′と、補助情報wit*
C,wit*
C′,wit*
U,wit*
U′とを、通信手段19を介して、データマッチング装置1Sに送信する。
【0062】
Idx補助情報生成手段15は、データ集合の階層ごとに生成された暗号化データから、PSIプロトコルの補助情報生成アルゴリズムにより、階層ごとに、インデックスの要素に対応する補助情報(インデックス補助情報)を生成するものである。
ここでは、Idx補助情報生成手段15は、補助情報生成手段14で生成された暗号化データaccC,accC′のインデックスの要素に対応する補助情報を生成する。
Idx補助情報生成手段15は、式(3)の補助情報生成アルゴリズム(WitGen)を用いて、鍵情報paramCに含まれている公開鍵ekと、暗号化データaccC,accC′と、乱数rと、データ集合CP,CKと、データ集合CP,CKのインデックスに対応する要素とにより、以下の式(14)の演算を行うことで、インデックスi,pに対応する補助情報witi,wit′pを生成する。
【0063】
【0064】
ここで、iはデータ集合CPのインデックス(1以上N以下の整数)であり、pはデータ集合CKのインデックス(1以上αN以下の整数)である。また、cpiはデータ集合CPのインデックスiの要素であり、cppはデータ集合CKのインデックスpの要素である(式(9)参照)。
【0065】
Idxハッシュ値算出手段16は、暗号化データとデータ集合の要素とインデックスに対応する要素の補助情報とから、ハッシュ公開鍵を用いて、階層ごとにインデックスの要素に対応するハッシュ値を算出するものである。
ここでは、Idxハッシュ値算出手段16は、暗号化手段13で生成された暗号化データaccC,accC′のインデックスごとの要素に対応するハッシュ値を算出する。
Idxハッシュ値算出手段16は、式(7)のハッシュ関数PHashを用いて、以下の式(15)の演算を行うことで、ハッシュ公開鍵hpkと、暗号化データaccC,accC′と、データ集合CP,CKのインデックスi,pの要素cpi,ckpおよび補助情報witi,wit′pとから、要素cpi,ckpのハッシュ値HCi,HC′pを算出する。
【0066】
【0067】
ハッシュ値HCiは、親ノードのデータ集合CPに対応するインデックスi(1以上N以下の整数)ごとのハッシュ値である。
ハッシュ値HC′pは、子ノードのデータ集合CKに対応するインデックスp(1以上αN以下の整数)ごとのハッシュ値である。
なお、Idxハッシュ値算出手段16は、式(15)のハッシュ関数PHashの演算の内部処理として、データマッチング装置1Sから送信される暗号化データaccS,accS′により、双線形写像eによるe(witi,accS),e(wit′P,accS′)の演算を行う。すなわち、暗号化データaccS,accS′は、公開鍵hpkの一部として機能する。
【0068】
共通ハッシュ値検出手段17(ハッシュ値受信手段)は、クライアント側のデータ集合から算出されたインデックスごとのハッシュ値と、サーバ側のデータ集合から算出されたインデックスごとのハッシュ値とから、共通のハッシュ値を検出するものである。なお、共通ハッシュ値検出手段17は、親ノード間で共通のハッシュ値を検出した場合、親ノードで検出したハッシュ値のインデックスに対応する子ノードについては、検出の対象から除外することが好ましい。
共通ハッシュ値検出手段17は、データマッチング装置1Sから送信されるサーバ側の親ノードのデータ集合から生成されたインデックスj(1以上M以下の整数)ごとのハッシュ値HSjと、子ノードのデータ集合から生成されたインデックスq(1以上αM以下の整数)ごとのハッシュ値HS′qを受信し、Idxハッシュ値算出手段16で算出されたハッシュ値と比較する。
なお、ハッシュ値HSj,HS′qは、後記するデータマッチング装置1SのIdxハッシュ値算出手段25で生成されるハッシュ値である。
【0069】
具体的には、共通ハッシュ値検出手段17は、
図5(a)に示すクライアント側の親ノードPN1のハッシュ値の集合{HC
i}と、
図5(b)に示すサーバ側の親ノードPN2のハッシュ値の集合{HS
j}とを比較し、値が一致するハッシュ値を検出する。
さらに、共通ハッシュ値検出手段17は、
図5(a)に示すクライアント側の子ノードCN1のハッシュ値の集合{HC′
p}と、
図5(b)に示すサーバ側の子ノードCN2のハッシュ値の集合{HS′
q}とを比較し、値が一致するハッシュ値を検出する。
【0070】
なお、共通ハッシュ値検出手段17は、子ノードCN1,CN2のハッシュ値の集合を比較する場合、すでに親ノードPN1,PN2で一致するハッシュ値の集合のインデックスに対応する子ノードCN1,CN2のハッシュ値の集合を除いて比較する。例えば、
図5において、クライアント側の親ノードPN1のインデックスNのハッシュ値HC
Nと、サーバ側の親ノードPN2のインデックスMのハッシュ値HS
Mとが一致する場合、共通ハッシュ値検出手段17は、インデックスNに対応する子ノードCN1のハッシュ値HC′
αN-(α-1),…,HC′
αNと、インデックスMに対応する子ノードCN2のハッシュ値HS′
αM-(α-1),…,HS′
αMとについては、比較の対象から除外する。
【0071】
また、共通ハッシュ値検出手段17は、子ノードCN1,CN2のハッシュ値の集合を比較する場合、子ノード内のα個の要素がその配置位置によって種類(ジャンル、出演者等)が定まっているため、同じ配置位置の要素のみを比較することとする。
【0072】
ここで、
図6,
図7を参照して、共通ハッシュ値検出手段17の処理について、
図5のハッシュ値を要素に対応付けて説明する。なお、
図6,
図7は、説明のためデータを番組名等の要素名で示しているが、実際はハッシュ値のデータである。
共通ハッシュ値検出手段17は、まず、
図6に示すように、クライアントの親ノードPN1とサーバの親ノードPN2とで一致するハッシュ値を検出する。
図6の場合、番組名A4に対応するハッシュ値が検出されることになる。
【0073】
そして、共通ハッシュ値検出手段17は、
図7に示すように、クライアントの子ノードCN1とサーバの子ノードCN2とで一致するハッシュ値を検出する。このとき、共通ハッシュ値検出手段17は、すでに親ノードで一致する子ノードの要素については、比較の対象から除外する。このとき、子ノード内のα個の要素については、同じ配列位置の要素のみを比較する。例えば、番組名に対応する要素として、
図7に示すように、ジャンル,出演者,…と定まっている場合、同じ配置位置の要素、例えば、ジャンルだけを比較する。
【0074】
このとき、親ノードの番組がすべて異なっていた場合、共通ハッシュ値検出手段17は、ワーストケースとして、親ノードの探索をMN回、子ノードの探索をαMN回とする計(α+1)MN回の探索を行う。
また、親ノードの番組が半分異なっていた場合、共通ハッシュ値検出手段17は、平均ケースとして、親ノードの探索をMN回、子ノードの探索をαMN/2回とする計(α+1)MN/2回の探索を行う。
また、親ノードの番組がすべて同じであった場合、共通ハッシュ値検出手段17は、ベストケースとして、親ノードの探索をMN回、子ノードの探索を0回とする計MN回の探索を行う。
図4に戻って、データマッチング装置1Cの構成について説明を続ける。
【0075】
共通ハッシュ値検出手段17は、検出した共通する親ノードのハッシュ値に対応するインデックスと、共通する子ノードのハッシュ値に対応するインデックスとを、共通情報として結果出力手段18に出力する。
また、共通ハッシュ値検出手段17は、共通情報を、通信手段19を介して、データマッチング装置1Sに送信する。
【0076】
結果出力手段18は、共通ハッシュ値検出手段17で検出された共通のハッシュ値に対応する階層ごとのインデックスの要素をマッチング結果として出力するものである。
結果出力手段18は、共通のハッシュ値に対応する親ノードのインデックスと子ノードのインデックスに対応する要素を、データ集合CP,CK(式(9)参照)から取得し、マッチング結果として出力する。
【0077】
通信手段19は、IPネットワーク等の通信回線を介して、データの送受信を行うものである。この通信手段19は、一般的な通信制御装置で構成することができる。
このように構成することで、データマッチング装置1Cは、1回のPSIプロトコルで、階層構造を有するデータのマッチングを効率的に行うことができる。
【0078】
(サーバ)
次に、サーバ側のデータマッチング装置1Sの構成について説明する。
データマッチング装置1Sは、クライアントとサーバとの間で、階層構造のデータ集合のマッチングをPSIプロトコルで行うサーバとなる装置である。
ここでは、データマッチング装置1Sは、マッチング要求受付手段20と、鍵情報生成手段21と、検証手段22と、状態情報更新手段23と、暗号化手段24と、Idxハッシュ値算出手段25と、結果出力手段26と、通信手段27と、を備える。
【0079】
マッチング要求受付手段20は、クライアント側からのマッチングの要求を受け付けるものである。
マッチング要求受付手段20は、通信手段27を介して、データマッチング装置1Cからマッチング要求を受信する。
【0080】
マッチング要求受付手段20は、データベース2Sを参照し、相手方のデータマッチング装置1Cに対応する状態情報の有無により、相手方のデータマッチング装置1Cとすでにマッチングを行ったことがあるか否かを判定する。
データマッチング装置1Cとまだマッチングを行ったことがない場合、データマッチング装置1Sは、鍵情報生成手段21に動作を移行する。一方、データマッチング装置1Cとすでにマッチングを行ったことがある場合、データマッチング装置1Sは、検証手段22に動作を移行する。
【0081】
鍵情報生成手段21は、マッチングを行うための鍵情報として、双線形写像(ペアリング)のパラメータ、公開鍵および秘密鍵を生成するものである。
鍵情報生成手段21は、予め設定された鍵長等のセキュリティパラメータλを用いて、以下の式(16)に示すセットアップ(Setup)処理として、クライアント側の鍵情報paramCおよびサーバ側の鍵情報paramSを生成する。
【0082】
【0083】
パラメータ(p,G,GT,e,g)は、ペアリング演算を行うためのパラメータである。具体的には、pは十分大きな(1024ビット以上推奨)素数、G,GTは素数pを位数とする巡回群、eは巡回群G,GTがG×G→GTとなる双線形写像、gは巡回群の中からランダムに1つ選択された生成元である。なお、ペアリング演算は、公知の技術であるため、パラメータ(p,G,GT,e,g)を用いた具体的な演算については、説明を省略する。
【0084】
秘密鍵skおよび公開鍵(暗号鍵)ekは、Setup関数内で前記式(1)により生成された鍵である。
ハッシュ秘密鍵hskおよびハッシュ公開鍵hpkは、Setup関数内で前記式(5)により生成された鍵である。
【0085】
鍵情報生成手段21は、生成したクライアント側の鍵情報paramCを、通信手段27を介して、データマッチング装置1Cに送信する。
また、鍵情報生成手段21は、生成したサーバ側の鍵情報paramSを、データベース2Sの状態情報StSとして記憶する。
状態情報StSは、以下の式(17)に示すように、鍵情報paramSと、暗号化データaccU,accU′とからなる。
【0086】
【0087】
なお、初期状態の状態情報StSは、空集合である。
暗号化データaccU,accU′は、クライアント側のデータマッチング装置1Cで式(12)により生成されるデータで、後記する状態情報更新手段23によって更新される。
【0088】
検証手段22は、データマッチング装置1Cから送信される暗号化データおよび補助情報を受信し、暗号化データの検証を行うものである。
データマッチング装置1Cから送信される暗号化データは、accC,accC′,accU,accU′(式(12)参照)、補助情報は、wit*
C,wit*
C′,wit*
U,wit*
U′(式(13)参照)である。
また、検証手段22は、検証を行うために、データベース2Sに記憶されている状態情報StSから、鍵情報paramSに含まれる公開鍵ekと、以前の暗号化データaccU,accU′とを取得する。なお、以前の暗号化データaccU,accU′を、accU2,accU2′と表記する。
ここでは、検証手段22は、式(4′)の検証アルゴリズム(Verify*)を用いて、以下の式(18)の演算を行う。
【0089】
【0090】
式(18)の第1式は、式(11)の和集合U1に、式(9)のデータ集合CPが含まれているか否かを暗号化したままの状態で検証するものである。
式(18)の第2式は、式(11)の和集合U1に、以前の暗号化データが含まれているか否かを暗号化したままの状態で検証するものである。
式(18)の第3式は、式(11)の和集合U2に、式(9)のデータ集合CKが含まれているか否かを暗号化したままの状態で検証するものである。
式(18)の第4式は、式(11)の和集合U2に、以前の暗号化データが含まれているか否かを暗号化したままの状態で検証するものである。
これによって、検証手段22は、クライアントから送信される暗号化データが、正しいか否か検証する。
【0091】
検証手段22は、式(18)のいずれかの検証結果で正しくない結果を示す値(“1”)が算出された場合、データマッチング装置1Sは、マッチングの処理を終了する。
一方、検証手段22は、式(18)のすべての検証結果で正しい結果を示す値(“0”)が算出された場合、状態情報更新手段23に動作を移行する。
【0092】
状態情報更新手段23は、状態情報を更新するものである。
状態情報更新手段23は、鍵情報生成手段21で生成された鍵情報paramS(式(16)参照)と、データマッチング装置1Cから送信される暗号化データaccU,accU′(式(12)参照)とで、データベース2Sの状態情報StS(式(17)参照)を更新する。
【0093】
暗号化手段24は、データベース2Sから階層構造を有するデータ集合を取得し、暗号化するものである。
データベース2Sから取得するデータ集合は、親ノードのデータ集合SPおよび子ノードのデータ集合SKである。
データ集合SPおよびデータ集合SKは、過去にマッチングを行った後に収集されたデータで、以下の式(19)に示すデータ集合である。
【0094】
【0095】
データ集合SPのM個の要素は、例えば、
図3のデータ集合U
Yの親ノードPN2に示す番組名である。データ集合SKのαM個の要素は、例えば、
図3のデータ集合U
Yの子ノードCN2に示すジャンル、出演者等のキーワードである。
【0096】
暗号化手段24は、データ集合SP,SKの暗号化に用いる乱数rを生成する。
そして、暗号化手段24は、式(2)の暗号化アルゴリズム(Eval)を用いて、鍵情報paramSに含まれている秘密鍵skおよび公開鍵ekと、生成した乱数rとにより、以下の式(20)の演算を行うことで、データ集合SP,SKをそれぞれ暗号化データaccS,accS′に暗号化する。
【0097】
【0098】
暗号化手段24は、生成した暗号化データaccS,accS′を、Idxハッシュ値算出手段25に出力する。
【0099】
Idxハッシュ値算出手段25(ハッシュ値送信手段)は、暗号化データとデータ集合の要素とから、ハッシュ秘密鍵を用いて、階層ごとにインデックスの要素に対応するハッシュ値を算出し、クライアントに送信するものである。
ここでは、Idxハッシュ値算出手段25は、鍵情報paramSに含まれているハッシュ秘密鍵hskを用いて、暗号化手段24で生成された暗号化データaccS,accS′のインデックスごとの要素に対応するハッシュ値を算出するものである。
Idxハッシュ値算出手段25は、式(6)のハッシュ関数Hashにより、以下の式(21)の演算を行うことで、ハッシュ秘密鍵hskと、accS,accS′と、データ集合SP,SKのインデックスj,qごとの要素spj,skqとから、インデックスj,qごとのハッシュ値HSj,HS′qを算出する。
【0100】
【0101】
ハッシュ値HSjは、親ノードのデータ集合SPに対応するインデックスj(1以上M以下の整数)ごとのハッシュ値である。
ハッシュ値HS′qは、子ノードのデータ集合SKに対応するインデックスq(1以上αM以下の整数)ごとのハッシュ値である。
Idxハッシュ値算出手段25は、算出したハッシュ値{HSj}(j=1,…,M),ハッシュ値{HS′q}(q=1,…,αM)を、暗号化手段24で生成された暗号化データaccS,accS′とともに、通信手段27を介して、データマッチング装置1Cに送信する。
【0102】
結果出力手段26は、データマッチング装置1Cで検出された共通する親ノードのインデックスと子ノードのインデックスとに対応するデータを出力するものである。
結果出力手段26は、データマッチング装置1Cで検出された共通する親ノードのハッシュ値に対応するインデックスと、共通する子ノードのハッシュ値に対応するインデックスとを、共通情報として受信し、それぞれのインデックスに対応する要素をデータ集合SP,SK(式(19)参照)から取得し、マッチング結果として出力する。
【0103】
通信手段27は、IPネットワーク等の通信回線を介して、データの送受信を行うものである。この通信手段27は、一般的な通信制御装置で構成することができる。
このように構成することで、データマッチング装置1Sは、1回のPSIプロトコルで、階層構造を有するデータのマッチングを効率的に行うことができる。
【0104】
<データマッチングシステムの動作>
次に、
図8,
図9を参照(構成については、適宜
図1,
図4参照)して、本発明の実施形態に係るデータマッチングシステム100の動作について説明する。
ステップS1において、クライアント側のデータマッチング装置1Cのマッチング要求手段10は、外部からマッチング要求を指示されることで、データマッチング装置1Sにマッチング要求を送信する。
ステップS2において、データマッチング装置1Cのマッチング要求手段10は、データマッチング装置1Sに対応する状態情報がデータベース2Cに存在するか否かにより、データマッチング装置1Sとすでにマッチングを行ったことがあるか否かを判定する。
ここで、データマッチング装置1Sに対応する状態情報が存在する場合(ステップS2でYes)、データマッチング装置1Cは、ステップS7に動作を進める。
一方、データマッチング装置1Sに対応する状態情報が存在しない場合(ステップS2でNo)、データマッチング装置1Cは、ステップS6に動作を進める。
【0105】
ステップS3において、サーバ側のデータマッチング装置1Sのマッチング要求受付手段20は、ステップS1で送信されたマッチング要求を受信する。
ステップS4において、データマッチング装置1Sのマッチング要求受付手段20は、マッチング要求を送信したデータマッチング装置1Cに対応する状態情報がデータベース2Sに存在するか否かにより、データマッチング装置1Cとすでにマッチングを行ったことがあるか否かを判定する。
ここで、データマッチング装置1Cに対応する状態情報が存在する場合(ステップS4でYes)、データマッチング装置1Sは、ステップS11に動作を進める。
一方、データマッチング装置1Cに対応する状態情報が存在しない場合(ステップS4でNo)、データマッチング装置1Sは、ステップS5に動作を進める。
【0106】
ステップS5において、データマッチング装置1Sの鍵情報生成手段21は、セキュリティパラメータを用いて、クライアント側の鍵情報paramCおよびサーバ側の鍵情報paramSを生成する(式(16)参照)。そして、鍵情報生成手段21は、クライアント側の鍵情報paramCを、データマッチング装置1Cに送信する。
【0107】
ステップS6において、データマッチング装置1Cの鍵情報取得手段11は、ステップS3で送信された鍵情報paramCを受信し、状態情報StCに設定する。
ステップS7において、データマッチング装置1Cの状態情報更新手段12は、データベース2Cから、階層構造の親ノードのデータ集合CPおよび子ノードのデータ集合CK(式(9)参照)と、状態情報StC(式(10)参照)とを取得し、状態情報StCを更新する。
ここでは、状態情報更新手段12は、状態情報StCに含まれている親ノードのデータ集合と新たに収集された親ノードのデータ集合との和集合U1と、状態情報StCに含まれている子ノードのデータ集合と新たに収集された子ノードのデータ集合との和集合U2とにより、状態情報StCを更新する(式(10),式(11)参照)。
【0108】
ステップS8において、データマッチング装置1Cの暗号化手段13は、クライアント側のデータ集合CP,CKと、和集合U1,U2と、をそれぞれ暗号化し、暗号化データaccC,accC′,accU,accU′を生成する(式(12)参照)。
ステップS9において、データマッチング装置1Cの補助情報生成手段14は、ステップS8で生成された暗号化データaccC,accC′,accU,accU′から、補助情報witC,witC′,witU,witU′を生成する(式(13)参照)。
ステップS10において、データマッチング装置1Cの補助情報生成手段14は、ステップS8で生成された暗号化データaccC,accC′,accU,accU′と、ステップS9で生成された補助情報witC,witC′,witU,witU′と、をデータマッチング装置1Sに送信する。
【0109】
ステップS11において、データマッチング装置1Sの検証手段22は、ステップS10で送信された暗号化データと補助情報とを受信する。
ステップS12において、データマッチング装置1Sの検証手段22は、ステップS11で受信した暗号化データaccC,accC′,accU,accU′を、データベース2Sに記憶されている状態情報StSの鍵情報paramSに含まれる公開鍵ekと、以前の暗号化データaccU,accU′と、ステップS11で受信した補助情報witC,witC′,witU,witU′とにより検証する(式(18)参照)。
なお、ステップS12の検証において、いずれかの暗号化データで検証結果として正しくない結果を示す値(“1”)が算出された場合、データマッチング装置1Sは、マッチングの処理を終了する(ステップとして図示せず)。
【0110】
ステップS13において、データマッチング装置1Sの状態情報更新手段23は、ステップS11で受信した暗号化データaccU,accU′(式(12)参照)とで、データベース2Sの状態情報StS(式(17)参照)を更新する。なお、ステップS5で鍵情報paramSが生成された場合、状態情報更新手段23は、状態情報StSに鍵情報paramSを設定する。
ステップS14において、データマッチング装置1Sの暗号化手段24は、サーバ側のデータ集合SP,SK(式(19)参照)をそれぞれ暗号化し、暗号化データaccS,accS′を生成する(式(20)参照)。
【0111】
ステップS15において、データマッチング装置1SのIdxハッシュ値算出手段25は、鍵情報paramSに含まれているハッシュ秘密鍵hskにより、ステップS14で生成された暗号化データaccS,accS′のインデックスj,qごとの要素spj,skqに対応するハッシュ値{HSj},{HS′q},(j=1,…,M),(q=1,…,αM)を算出する(式(21)参照)。
ステップS16において、データマッチング装置1SのIdxハッシュ値算出手段25は、ステップS14で生成された暗号化データaccS,accS′と、ステップS15で算出されたハッシュ値{HSj},{HS′q}を、データマッチング装置1Cに送信する。
【0112】
ステップS17において、データマッチング装置1CのIdx補助情報生成手段15は、ステップS16で送信された暗号化データaccS,accS′,ハッシュ値{HSj},{HS′q}を受信する。
ステップS18において、データマッチング装置1CのIdx補助情報生成手段15は、ステップS9で生成された暗号化データaccC,accC′のインデックスi,pごとの要素cpi,ckpに対応する補助情報witi,wit′pを生成する(式(14)参照)。
【0113】
ステップS19において、データマッチング装置1CのIdxハッシュ値算出手段16は、鍵情報paramCに含まれているハッシュ公開鍵hpkにより、ステップS8で生成された暗号化データaccC,accC′と、ステップS17で受信した暗号化データaccS,accS′と、データ集合CP,CKのインデックスi,pごとの要素cpi,ckpおよび補助情報witi,wit′pとから、インデックスi,pごとの要素cpi,ckpに対応するハッシュ値{HCi},{HC′p},(i=1,…,N),(p=1,…,αN)を算出する(式(15)参照)。
【0114】
ステップS20において、データマッチング装置1Cの共通ハッシュ値検出手段17は、ステップS19で算出されたクライアント側のハッシュ値{HCi},{HC′p}と、ステップS17で受信したサーバ側のハッシュ値{HSj},{HS′q}とから、共通のハッシュ値を検出する。
ステップS21において、データマッチング装置1Cの共通ハッシュ値検出手段17は、共通のハッシュ値に対応するインデックスを、データマッチング装置1Sに送信する。
ステップS22において、データマッチング装置1Cの結果出力手段18は、共通のハッシュ値のインデックスに対応する親ノードのインデックスと子ノードのインデックスに対応する要素を、データ集合CP,CK(式(9)参照)から取得し、マッチング結果として出力する。
【0115】
ステップS23において、データマッチング装置1Sの結果出力手段26は、ステップS21で送信された共通のハッシュ値のインデックスを受信する。
ステップS24において、データマッチング装置1Sの結果出力手段26は、共通のハッシュ値のインデックスに対応する親ノードのインデックスと子ノードのインデックスに対応する要素を、データ集合SP,SK(式(19)参照)から取得し、マッチング結果として出力する。
【0116】
以上の動作によって、データマッチング装置1C,1Sは、階層構造を有するデータを、1回のPSIプロトコル(RePSIプロトコル)で効率よくマッチングすることができる。
【0117】
以上、本発明の実施形態に係るデータマッチングシステム100およびデータマッチング装置1(1C,1S)の構成および動作について説明したが、本発明はこの実施形態に限定されるものではない。
図4では、マッチングを要求する側(クライアント)のデータマッチング装置1Cと、マッチングを要求される側(サーバ)のデータマッチング装置1Sとで、データマッチング装置1の機能を分けた構成とした。
しかし、データマッチング装置1を、クライアントおよびサーバのいずれも機能可能とする場合は、データマッチング装置1Cおよびデータマッチング装置1Sの両方の構成を含んだ構成とすればよい。
【0118】
また、ここでは、サーバのデータマッチング装置1Sも、マッチングの結果を出力することとしたが、クライアントのデータマッチング装置1Cだけで、マッチングの結果を出力することとしてもよい。その場合、データマッチング装置1Sから、結果出力手段26を省略すればよい。
【符号の説明】
【0119】
100 データマッチングシステム
1,1C,1S データマッチング装置
10 マッチング要求手段
11 鍵情報取得手段
12 状態情報更新手段
13 暗号化手段
14 補助情報生成手段
15 Idx補助情報生成手段
16 Idxハッシュ値算出手段
17 共通ハッシュ値検出手段(ハッシュ値受信手段)
18 結果出力手段
19 通信手段
20 マッチング要求受付手段
21 鍵情報生成手段
22 検証手段
23 状態情報更新手段
24 暗号化手段
25 Idxハッシュ値算出手段(ハッシュ値送信手段)
26 結果出力手段
27 通信手段
2,2C,2S データベース