(57)【特許請求の範囲】
【請求項１】
ネットワークを構成する複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において、
リストを保持する各情報端末が、当該リストの要素項目を根とする多項式を生成し、
前記各情報端末に対して設定された順番の最初の情報端末が、生成した前記多項式とランダムな項目を持つリストの要素項目を根とする多項式とを加算し、加算結果の多項式を前記順番における後の情報端末に渡し、
前記順番における２番目以降の各情報端末が、先の情報端末から受け取った多項式に対して生成した多項式を加算し、加算結果の多項式を後の情報端末に渡し、
前記順番における最後の情報端末が、受信した多項式の根を要素項目とするリストを生成すること
を特徴とするリストマッチング方法。
【請求項２】
前記最後の情報端末が、生成したリストまたは当該リストの項目に関する情報を他の情報端末に通知することを特徴とする請求項１に記載のリストマッチング方法。
【請求項３】
ネットワークを構成する複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において、
リストを保持する各情報端末が、当該リストの要素項目を根とする多項式を生成し、
前記情報端末間で共通して使用することを取り決められた前記ネットワーク上の複数のサーバを用いた分散秘密計算により、各情報端末にて生成された前記多項式を加算し、
前記情報端末が、前記サーバによる加算結果に基づいて各情報端末にて生成された多項式の加算結果である多項式を復元すると共に、復元された当該多項式の根を要素項目とするリストを生成すること
を特徴とするリストマッチング方法。
【請求項４】
ネットワークを介して接続された複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において、
リストを保持する各情報端末が、当該リストの要素項目を根とする第１の多項式と前記ネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成し、当該２変数多項式を当該第２の多項式に基づいて各サーバに分散し、
前記サーバが、前記各情報端末から送られた前記２変数多項式を分散した多項式を加算し、加算結果を前記情報端末に返送し、
前記情報端末が、前記サーバによる加算結果に基づいて各情報端末に保持されたリストを表現する多項式の加算結果である多項式を復元すると共に、復元された当該多項式の根を要素項目とするリストを生成すること
を特徴とするリストマッチング方法。
【請求項５】
ネットワークを構成する複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において、
所定の情報端末が、他の情報端末が保持するリストの要素項目を根とする多項式に基づいて生成された公開情報を取得し、
前記他の情報端末から取得した前記公開情報を検証し、
前記検証を通過した前記他の情報端末の公開情報と自装置が保持するリストの要素項目を根とする多項式とに基づいて、当該公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求めること
を特徴とするリストマッチング方法。
【請求項６】
前記他の情報端末から取得した前記公開情報が前記検証を通過した場合にのみ、自装置が保持する前記リストから生成された多項式と当該公開情報とに基づいて所定の情報を生成して前記他の情報端末との間で交換し、
交換された前記所定の情報に基づいて、前記公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求めることを特徴とする請求項５に記載のリストマッチング方法。
【請求項７】
ネットワークを介して接続された、サーバと、複数台のクライアント端末とを備え、
前記クライアント端末は、
前記ネットワークを介して他のクライアント端末から受信した多項式に対し、リストマッチングの対象であるリストを表現する多項式を加算し、加算結果の多項式を他のクライアント端末または前記サーバに送信し、
前記サーバは、
複数台の前記クライアント端末にて生成された多項式全ての加算結果である多項式を受信し、当該多項式の根を要素項目とするリストを生成することを特徴とするネットワークシステム。
【請求項８】
所定の前記クライアント端末は、
リストマッチングの対象であるリストを表現する第１の多項式と、任意の項目を根とする第２の多項式とを生成し、当該第２の多項式を前記サーバに送信すると共に、第１、第２の多項式を加算して得られる多項式を他のクライアント端末に送信し、
前記サーバは、複数台の前記クライアント端末にて生成された多項式全ての加算結果である多項式から前記第２の多項式を減算し、減算結果である多項式の根を要素項目とするリストを生成することを特徴とする請求項７に記載のネットワークシステム。
【請求項９】
ネットワークを介して接続された、複数台の情報端末と、複数台のサーバとを備え、
前記サーバは、
各情報端末から送信されたデータの分散秘密計算をそれぞれ行い、計算結果を前記情報端末に返送し、
前記情報端末は、
リストマッチングの対象であるリストを表現する多項式を前記サーバに分散して送信し、
前記サーバから前記多項式に対する分散秘密計算の計算結果を受信し、当該計算結果に基づいて各情報端末にて生成された多項式の加算結果である多項式を復元すると共に、復元された当該多項式の根を要素項目とするリストを生成することを特徴とするネットワークシステム。
【請求項１０】
前記情報端末は、前記情報端末の数をｍ、前記リストの要素項目の数をｎとした場合に、ｎ＋１次の多項式ＦYi（ｙ）を、ＦYi（ｌi,h）＝０、ｈ＝１，．．．，ｎとなるように生成し、定数項が０の任意のｋ−１次多項式ＦXi（ｘ）を生成し、２変数多項式Ｑi（ｘ，ｙ）＝ＦXi（ｘ）＋ＦYi（ｙ）を生成して、ｋ個の前記サーバに対してＱi（ｊ，ｙ）、ｊ＝１，．．．，ｋを送信し、
前記サーバは、ｍ個の前記情報端末から受信した多項式Ｑi（ｊ，ｙ）を全て加算し、加算結果を前記情報端末に返送することを特徴とする請求項９に記載のネットワークシステム。
【請求項１１】
ネットワークを介して情報を交換する複数台の情報端末を備え、
自装置が保持するリストの要素項目を根とする多項式を生成し、当該多項式に基づいて第１の情報を生成して公開すると共に、当該多項式に基づいて第２の情報を生成する第１の情報端末と、
前記第１の情報端末における前記第１の情報を取得して検証すると共に、当該検証を通過した場合に当該第１の情報端末から前記第２の情報を取得し、当該第１、第２の情報と自装置が保持するリストの要素項目を根とする多項式とに基づいて、当該公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求める第２の情報端末と
を備えることを特徴とするネットワークシステム。
【請求項１２】
前記第２の情報端末は、自装置が保持するリストの要素項目を根とする多項式を生成し、当該多項式に基づいて第１の情報を生成して公開し、
前記第１の情報端末は、公開されている前記第２の情報端末における前記第１の情報を用いて前記第２の情報を生成することを特徴とする請求項１１に記載のネットワークシステム。
【請求項１３】
前記第１の情報端末における前記第１の情報と前記第２の情報端末が保持するリストとに基づいて生成された暗号化データを取得し、前記第１、第２の情報端末がそれぞれ保持するリストの内容が秘匿されたままで当該リストの共通項目を求めるサーバをさらに備え、
前記第２の情報端末は、前記第２の情報が取得できない場合または取得した前記第２の情報に基づいて前記リストの共通項目を求めることができない場合に、前記暗号化データを生成して前記サーバに送信し、当該サーバからの応答データを復号して前記リストの共通項目を得ることを特徴とする請求項１１に記載のネットワークシステム。
【請求項１４】
ネットワークを介して接続された複数台の情報端末が保持する複数のリストにおける共通項目を抽出するサーバにおいて、
前記ネットワークを介して、前記複数台の情報端末に保持されている各リストを表現する複数の多項式の加算結果である多項式を前記情報端末から取得する通信手段と、
前記加算結果である多項式の根を要素項目とするリストを生成する処理手段と
を備えることを特徴とするサーバ。
【請求項１５】
ネットワークを介して接続された情報端末において、
前記ネットワークを介して他の情報端末とデータ交換を行うための通信手段と、
所定のリストを格納した記憶手段と、
前記記憶手段に格納されているリストの要素項目を根とする多項式を生成すると共に、当該多項式に対する処理を行う処理手段と、
前記多項式を含む複数の多項式の加算結果である多項式の根を要素項目とするリストに関する情報を出力する出力手段と
を備えることを特徴とする情報端末。
【請求項１６】
ネットワークを介して接続された情報端末において、
所定のリストを格納した記憶手段と、
前記記憶手段に格納されているリストの要素項目を根とする第１の多項式と前記ネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成する処理手段と、
前記ネットワーク上の所定のサーバに、前記２変数多項式を当該第２の多項式に基づいて分散して送信すると共に、当該サーバから分散した多項式の加算結果を受信する通信手段と、
前記通信手段により受信した前記加算結果から復元される多項式の根を要素項目とするリストに関する情報を出力する出力手段と
を備えることを特徴とする情報端末。
【請求項１７】
ネットワークに接続された情報端末において、
所定のリストを格納した記憶部と、
前記ネットワークを介して他の情報端末が保持するリストに基づく公開情報を取得して検証する検証部と、
前記検証部による検証を通過した前記公開情報と前記記憶部に格納されているリストの要素項目を根とする多項式とに基づいて、当該公開情報の生成に用いられたリストと前記記憶部に格納されているリストとの共通項目を求めるマッチング結果出力部と
を備えることを特徴とする情報端末。
【請求項１８】
前記多項式に基づいて公開情報を生成する公開情報生成部をさらに備え、
前記マッチング結果出力部は、前記他の情報端末の公開情報が前記検証部による検証を通過した場合に、前記公開情報生成部にて生成された自装置の公開情報及び当該他の情報端末が保持するリストに基づいて生成された所定の情報を当該他の情報端末から取得し、当該所定の情報に基づいて前記リストの共通項目を求めることを特徴とする請求項１７に記載の情報端末。
【請求項１９】
前記所定の情報が取得できない場合または取得した前記所定の情報に基づいて前記リストの共通項目を求めることができない場合に、前記他の情報端末の公開情報と前記記憶部に格納されているリストとに基づいて暗号化データを生成し、当該暗号化データに基づく例外処理要求を所定のサーバに送信する例外処理要求部と、
前記サーバから返送された処理結果を復号して前記リストの共通項目を得る例外処理結果出力部と
をさらに備えることを特徴とする請求項１８に記載の情報端末。
【請求項２０】
コンピュータを制御して、データ処理を行うプログラムであって、
メモリから所定のリストを読み出し、当該リストを表現する第１の多項式とネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成する処理と、
ネットワークインターフェイスを介して、ネットワーク上の所定のサーバに、前記２変数多項式を当該第２の多項式に基づいて分散して送信する処理と、
前記ネットワークインターフェイスを介して前記サーバから受信した分散秘密計算の結果から多項式を復元し、当該多項式の根を要素項目とするリストを生成する処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項２１】
ネットワークに接続されたコンピュータを制御して、データ処理を行うプログラムであって、
前記ネットワークを介して他の情報端末が保持するリストに基づく公開情報を取得する通信手段と、
前記通信手段にて取得された前記公開情報を検証する検証手段と、
前記検証手段による検証を通過した前記公開情報と所定の記憶装置に格納されているリストの要素項目を根とする多項式とに基づいて、当該公開情報の生成に用いられたリストと前記記憶装置に格納されているリストとの共通項目を求めるマッチング結果出力手段として
前記コンピュータを機能させることを特徴とするプログラム。
【請求項２２】
コンピュータを制御してデータ処理を行うプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
前記プログラムは、
メモリから所定のリストを読み出し、当該リストを表現する第１の多項式とネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成する処理と、
ネットワークインターフェイスを介して、ネットワーク上の所定のサーバに、前記２変数多項式を当該第２の多項式に基づいて分散して送信する処理と、
前記ネットワークインターフェイスを介して前記サーバから受信した分散秘密計算の結果から多項式を復元し、当該多項式の根を要素項目とするリストを生成する処理と
を前記コンピュータに実行させることを特徴とする記録媒体。
【請求項２３】
ネットワークに接続されたコンピュータを制御してデータ処理を行うプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
前記プログラムは、
前記ネットワークを介して他の情報端末が保持するリストに基づく公開情報を取得する通信手段と、
前記通信手段にて取得された前記公開情報を検証する検証手段と、
前記検証手段による検証を通過した前記公開情報と所定の記憶装置に格納されているリストの要素項目を根とする多項式とに基づいて、当該公開情報の生成に用いられたリストと前記記憶装置に格納されているリストとの共通項目を求めるマッチング結果出力手段として
前記コンピュータを機能させることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２人以上の参加者の持つリストの共通部分を抽出するリストマッチングをネットワーク上で行う方法に関する。
【０００２】
【従来の技術】
ネットワークを介して行われる情報交換において、２人以上の参加者の持つリストの共通部分だけを計算し、抽出するリストマッチングがある。リストマッチングの具体的な応用例としては、趣味などのプロファイルを記述したデータベース（リスト）のリストマッチングを行い、共通の趣味を持つ会員同士を紹介するマッチメーキングサービスがある。また、複数の金融機関において、特定の利用者のリスト（いわゆるブラックリストなど）を照会し、当該複数の金融機関で当該リストに載っている利用者を見出すといった利用も考えられる。
【０００３】
インターネットなどのネットワーク環境の普及に伴い、ネットワーク上でのプライバシーの保護が重視されてきている今日、リストマッチングにおいても、個々の参加者の持つリストの内容を明らかにすることなく、共通部分を抽出することが要求されるようになっている。
【０００４】
従来、ネットワーク上でリストマッチングを実現する手法としては、ＴＴＰ（Trusted Third Party）サーバを設けて、リストマッチングの対象となるリストを管理し、当該ＴＴＰサーバによって共通部分を計算する方法があった。この場合、リストにおける情報の秘密保持は、当該ＴＴＰサーバにおけるセキュリティに依存することとなる。
【０００５】
また近年、特定のサーバを必要としないピア・ツー・ピア（Peer to Peer）のサービスの普及により、ＴＴＰサーバを置かずにリストマッチングを行う場合が生じてきた。このような場合におけるセキュリティを図る手法として、次の文献１には、Oblivious Polynomial Evaluation（ＯＰＥ）という暗号技術を用いたプロトコルが開示されている。
文献１：Naor, M. and Pinkas, B, "Oblivious Transfer and Polynomial Evaluation," in proc. of STOC, 1999.
【０００６】
文献１には、次のようなプロトコルが記載されている。
リスト保持者であるＡｌｉｃｅとＢｏｂとが持っているリストを、それぞれＡＬ＝｛ａ1，．．．，ａn｝、ＢＬ＝｛ｂ1，…，ｂn｝とする。
１．ＡｌｉｃｅとＢｏｂは、それぞれｎ次多項式ＰA(ｘ)、ＰB(ｘ)を秘密に用意する。
２．Ａｌｉｃｅは、ＯＰＥを用いて[ＰB(ａi)]i=1nを計算し、同様にＢｏｂもＯＰＥを用いて[ＰA(ｂi)]i=1nを計算する。
３．Ａｌｉｃｅは[ＰA(ａi)＋ＰB(ａi)]i=1nを、Ｂｏｂは[ＰA(ｂi)＋ＰB(ｂi)]i=1nを、それぞれ公開する。
この方法によれば、第三者がリストにおける既知の項目について、他のリストにおける共通項目の有無を推測するのは不可能である。
【０００７】
【発明が解決しようとする課題】
上述したように、リストマッチングによる情報交換を行う場合、ＴＴＰサーバを設けてリストマッチングの対象であるリストを管理するシステムでは、リストにおける情報の秘密保持は、ＴＴＰサーバにおけるセキュリティに依存する。したがって、当該ＴＴＰサーバのセキュリティが破られれば、当該リストの秘密情報が漏洩してしまうこととなる。
【０００８】
また、ピア・ツー・ピアでリストマッチングを行う場合の文献１に開示されたＯＰＥを用いたプロトコルでは、第三者がリストにおける既知の項目について、他のリストにおける共通項目の有無を推測することは防止できるものの、リスト保持者が、公開値を偽って、相手には不一致と見せかけながら、自分だけ相手との共通部分を知ることができてしまう。
【０００９】
ところで、複数人で引数を秘密に保ったまま計算を行い、当該引数に対する計算結果だけを取り出す手法として、分散秘密計算（マルチパーティプロトコル：Multiparty Protocol）と呼ばれる手法がある。上述したＯＰＥを用いたプロトコルも、この分散秘密計算に含まれる。分散秘密計算については、例えば、次の文献２に記載されている。
文献２：Ben-Or, Goldwasser, and Wigderson, "Completeness theorems for non-cryptographic fault-tolerant distributed computation," STOC, ACM, 1988.
【００１０】
リストマッチングにより複数のリストから共通部分を抽出する場合、１項目ずつの比較計算が基本となる。そのため、ｎ個の項目を持つ２つのリストの計算には、ｎ2回の比較計算が必要である。このような比較計算は、プログラムでは簡単に構成できる。
しかしながら、分散秘密計算は、四則演算を基本計算としているため、比較計算に必要な分岐命令などを入れることは難しい。したがって、分散秘密計算を用いて、ピア・ツー・ピアでリストマッチングを行うことは、処理の実行効率の面からも困難であった。
【００１１】
そこで、本発明は、情報交換における安全性を確保すると共に、実行効率が良く実用性の高いリストマッチングを実現することを目的とする。
また、本発明は、分散秘密計算を用いることにより、ピア・ツー・ピアでリストマッチングを行う場合においても、安全性の高い手法を提供することを他の目的とする。
【００１２】
【課題を解決するための手段】
上記の目的を達成する本発明は、コンピュータを用いて複数のリストにおける共通項目を抽出するリストマッチング方法において、メモリから処理対象であるリストを読み出し、読み出されたリストごとに要素項目を根とする多項式を生成し、生成された多項式を加算し、加算によって得られた多項式の根を要素項目とするリストを生成して出力することを特徴とする。
より詳細には、リストの要素項目に対応する値に、所定の１方向ハッシュ関数による演算結果を付加した値を根とする多項式を生成する。そして、この多項式の加算によって得られた多項式の根のうち、１方向ハッシュ関数による演算結果が保持されている根において、かかる演算結果を除いた値を要素項目とするリストを生成する構成とすることができる。
【００１３】
また、本発明は、ネットワークを構成する複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において次の要件を満足することを特徴とする。すなわち、リストを保持する各情報端末が、このリストの要素項目を根とする多項式を生成する。そして、この各情報端末が、適宜設定された順番で、先の情報端末から受け取った多項式に対して生成した多項式を加算し、加算結果の多項式を後の情報端末に渡す。また、かかる順番の最後の情報端末が、受信した多項式の根を要素項目とするリストを生成する。
ここで、この最後の情報端末は、生成したリストまたはリストの項目に関する情報を他の情報端末に通知することができる。
【００１４】
さらに、本発明は、ネットワークを構成する複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において次の要件を満足することを特徴とする。すなわち、リストを保持する各情報端末が、このリストの要素項目を根とする多項式を生成する。そして、情報端末間で共通して使用することを取り決められたネットワーク上の複数のサーバを用いた分散秘密計算により、各情報端末にて生成された多項式を加算する。さらに、この情報端末が、サーバによる加算結果に基づいて各情報端末にて生成された多項式の加算結果である多項式を復元すると共に、復元された多項式の根を要素項目とするリストを生成する。
【００１５】
さらにまた、本発明は、ネットワークを介して接続された複数台の情報端末が保持する複数のリストにおける共通項目を抽出するリストマッチング方法において次の要件を満足することを特徴とする。すなわち、リストを保持する各情報端末が、このリストの要素項目を根とする第１の多項式とネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成し、この２変数多項式を第２の多項式に基づいて各サーバに分散する。次に、サーバが、各情報端末から送られた２変数多項式を分散した多項式を加算し、加算結果を情報端末に返送する。次に、情報端末が、サーバによる加算結果に基づいて各情報端末に保持されたリストを表現する多項式の加算結果である多項式を復元すると共に、復元された多項式の根を要素項目とするリストを生成する。
【００１６】
また、本発明による他のリストマッチング方法は、所定の情報端末が、他の端末装置が保持するリストの要素項目を根とする多項式に基づいて生成された公開情報を取得し、この他の情報端末から取得した公開情報を検証し、かかる検証を通過した他の情報端末の公開情報と自装置が保持するリストの要素項目を根とする多項式とに基づいて、この公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求めることを特徴とする。
ここで、好ましくは、他の情報端末から取得した公開情報が検証を通過した場合にのみ、自装置が保持するリストから生成された多項式と公開情報とに基づいて所定の情報を生成して、この他の情報端末との間で交換する。そして、交換された情報に基づいて、公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求める。
【００１７】
また、本発明は、次のように構成されたことを特徴とするネットワークシステムとして実現される。すなわち、このネットワークシステムは、ネットワークを介して接続された、サーバと、複数台のクライアント端末とを備える。そして、このクライアント端末は、ネットワークを介して他のクライアント端末から受信した多項式に対し、リストマッチングの対象であるリストを表現する多項式を加算し、加算結果の多項式を他のクライアント端末またはサーバに送信する。また、このサーバは、複数台のクライアント端末にて生成された多項式全ての加算結果である多項式を受信し、この多項式の根を要素項目とするリストを生成する。
【００１８】
ここで、上記のネットワークシステムを構成する所定のクライアント端末は、リストマッチングの対象であるリストを表現する第１の多項式と、任意の項目を根とする第２の多項式とを生成し、第２の多項式を前記サーバに送信すると共に、第１、第２の多項式を加算して得られる多項式を他のクライアント端末に送信する。また、サーバは、複数台の前記クライアント端末にて生成された多項式全ての加算結果である多項式から前記第２の多項式を減算し、減算結果である多項式の根を要素項目とするリストを生成する。
【００１９】
さらに、本発明は、次のように構成されたことを特徴とするネットワークシステムとしても実現される。すなわち、このネットワークシステムは、ネットワークを介して接続された、複数台の情報端末と、複数台のサーバとを備え、このサーバは、各情報端末から送信されたデータの分散秘密計算をそれぞれ行い、計算結果を前記情報端末に返送する。そして、情報端末は、リストマッチングの対象であるリストを表現する多項式を前記サーバに分散して送信し、このサーバからこの多項式に対する分散秘密計算の計算結果を受信し、この計算結果に基づいて各情報端末にて生成された多項式の加算結果である多項式を復元すると共に、復元された多項式の根を要素項目とするリストを生成する。
【００２０】
さらに詳しくは、この情報端末は、情報端末の数をｍ、リストの要素項目の数をｎとした場合に、ｎ＋１次の多項式ＦYi(ｙ)を、ＦYi(ｌi,h)＝０、ｈ＝１，．．．，ｎとなるように生成し、定数項が０の任意のｋ−１次多項式ＦXi(ｘ)を生成し、２変数多項式Ｑi(ｘ，ｙ)＝ＦXi(ｘ)＋ＦYi(ｙ)を生成して、ｋ個のサーバに対してＱi(ｊ，ｙ)、ｊ＝１，．．．，ｋを送信する。そして、サーバは、ｍ個の前記情報端末から受信した多項式Ｑi(ｊ，ｙ)を全て加算し、加算結果を情報端末に返送する。
【００２１】
さらにまた、本発明は、次のように構成されたネットワークシステムとしても実現できる。すなわち、このネットワークシステムは、ネットワークを介して情報を交換する複数台の情報端末を備え、自装置が保持するリストの要素項目を根とする多項式を生成し、この多項式に基づいて第１の情報を生成して公開すると共に、この多項式に基づいて第２の情報を生成する第１の情報端末と、この第１の情報端末における第１の情報を取得して検証すると共に、この検証を通過した場合に第１の情報端末から第２の情報を取得し、これら第１、第２の情報と自装置が保持するリストから生成された多項式とに基づいて、公開情報の生成に用いられたリストと自装置が保持するリストとの共通項目を求める第２の情報端末とを備えることを特徴とする。
なお、ネットワークシステムを構成する複数台の情報端末は、それぞれが第１または第２の情報端末として動作する。そして、第１、第２の情報を交換することにより、それぞれの情報端末において相互にリストマッチングを行うことができる。
ここで、より好ましくは、第２の情報端末は、自装置が保持するリストの要素項目を根とする多項式を生成し、この多項式に基づいて第１の情報を生成して公開する。そして、第１の情報端末は、公開されている第２の情報端末における第１の情報を用いて第２の情報を生成する。
さらに好ましくは、このネットワークシステムにおいて、第１の情報端末における第１の情報と第２の情報端末が保持するリストとに基づいて生成された暗号化データを取得し、第１、第２の情報端末がそれぞれ保持するリストの内容が秘匿されたままでこのリストの共通項目を求めるサーバをさらに備える。そして、第２の情報端末は、第２の情報が取得できない場合または取得した第２の情報に基づいてリストの共通項目を求めることができない場合に、暗号化データを生成してかかるサーバに送信し、このサーバからの応答データを復号してリストの共通項目を得る。
【００２２】
また、本発明は、ネットワークシステムを構成する、次のように構成されたことを特徴とするサーバとして実現することができる。すなわち、ネットワークを介して接続された複数台の情報端末が保持する複数のリストにおける共通項目を抽出するサーバにおいて、ネットワークを介して、複数台の情報端末に保持されている各リストを表現する複数の多項式の加算結果である多項式を情報端末から取得する通信手段と、加算結果である多項式の根を要素項目とするリストを生成する処理手段とを備える。
【００２３】
一方、本発明は、同じくネットワークシステムを構成する、次のように構成されたことを特徴とする情報端末として実現することができる。すなわち、ネットワークを介して接続された情報端末において、ネットワークを介して他の情報端末とデータ交換を行うための通信手段と、所定のリストを格納した記憶手段と、この記憶手段に格納されているリストの要素項目を根とする多項式を生成すると共に、この多項式に対する処理を行う処理手段と、この多項式を含む複数の多項式の加算結果である多項式の根を要素項目とするリストに関する情報を出力する出力手段とを備える。
【００２４】
あるいは、次のように構成されたことを特徴とする情報端末として実現することもできる。すなわち、ネットワークを介して接続された情報端末において、所定のリストを格納した記憶手段と、この記憶手段に格納されているリストの要素項目を根とする第１の多項式とネットワーク上の所定のサーバの数に対応した次数の第２の多項式とに基づいて２変数多項式を生成する処理手段と、ネットワーク上の所定のサーバに、この２変数多項式を第２の多項式に基づいて分散して送信すると共に、サーバから分散した多項式の加算結果を受信する通信手段と、この加算結果から復元される多項式の根を要素項目とするリストに関する情報を出力する出力手段とを備える。
【００２５】
また、本発明は、次のように構成された情報端末としても実現される。すなわち、ネットワークに接続されたこの情報端末は、所定のリストを格納した記憶部と、このネットワークを介して他の情報端末が保持するリストに基づく公開情報を取得して検証する検証部と、この検証部による検証を通過した公開情報と記憶部に格納されているリストの要素項目を根とする多項式とに基づいて、公開情報の生成に用いられたリストと記憶部に格納されているリストとの共通項目を求めるマッチング結果出力部とを備えることを特徴とする。
ここで、より好ましくは、この情報端末は、多項式に基づいて公開情報を生成する公開情報生成部をさらに備える。この場合、マッチング結果出力部は、他の情報端末の公開情報が検証部による検証を通過した場合に、公開情報生成部にて生成された自装置の公開情報及び他の情報端末が保持するリストに基づいて生成された所定の情報を他の情報端末から取得し、所定の情報に基づいてリストの共通項目を求める。
【００２６】
さらにまた、本発明は、コンピュータを制御して上述したサーバや情報端末の機能を実現するプログラムとしても実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００２７】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本発明は、リストマッチングによる情報交換を行うため、リストマッチングの対象であるリストを、多次元関数（以下、特徴関数と称す）を用いて表現することを提案する。
【００２８】
〔特徴関数の導入〕
所定の要素項目を並べたリストは、当該要素項目を数値に置き換え、この数値を根とする（以下、リストの要素項目を置き換えた数値を根とすることを、単に、要素項目を根とすると表現する）多項式を生成することにより、特徴関数で表現することができる。したがって、リストのｎ個の項目を表現するには、ｎ次の多項式を定義することが必要となる。
図１は、特徴関数である、リストの要素項目を根とする多項式の例を示す図である。
図１に示すように、リストＬ1、Ｌ2を表現した多項式をそれぞれＦY1(ｙ)（図中、実線で記載）、ＦY2(ｙ)（図中、破線で記載）とすると、その加算結果である多項式ＦY(ｙ)＝ＦY1(ｙ)＋ＦY2(ｙ)（図中、実太線で記載）において、座標点Ａに示すように、両者の共通項目は相変わらず根になっている。これは、各リストＬ1、Ｌ2を示す多項式の和計算によって、共通項目を根とする多項式が得られたことを意味する。多項式を素数有限体Ｚ／Ｚｐ上で考えると、Barlekampアルゴリズムを用いることによって、１変数多次元多項式を因数分解し、根を求めることができる。したがって、リストから多項式の構成、及び多項式からリストの復号という、１対１の関係付けができる。なお、Barlekampアルゴリズムについては、例えば、次の文献３に記載されている。
文献３：Donald E. Knuth, Seminumerical Algorithms, the art of computer programming, Addison-Wesley, 1998.
【００２９】
ここで、図１の座標点Ｂに示すように、加算結果の多項式が共通根以外の点で根を持ち得ることが問題となる。この根を共通根と区別するために、１方向ハッシュ関数ＭＤ５を用いる。すなわち、リスト項目ｌをそのまま多項式の根にするのではなく、ハッシュ関数ＭＤ５による演算結果を付加したｌ||ＭＤ５(ｌ)を根にする（ここで、||は文字列の結合を示す）。このようにすれば、多項式を換算した後、当該加算結果である多項式の根にもこのハッシュ関数ＭＤ５の演算結果が保持されているため、これを検証することにより、復号時に根がリストの項目から作られたものか、加算の結果、偶然にできたものかを区別することが可能となる。
【００３０】
図２は、リストから特徴関数の多項式を構成する手順を説明するフローチャート、図３は、多項式を復号してリストの共通項目を取得する手順を説明するフローチャートである。この場合、各処理は例えば一般的なコンピュータ装置におけるプログラム制御されたＣＰＵにて実行され、処理対象であるリストＬ及び関数Ｆ(ｘ)は当該ＣＰＵのキャッシュメモリやメインメモリに格納される。図１８は、この種のコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図１８に示すコンピュータ装置は、演算手段であるＣＰＵ（Central Processing Unit：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Accelerated Graphics Port）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Peripheral Component Interconnect）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５、ネットワークインターフェイス１０６及びＵＳＢポート１０７と、さらにこのＰＣＩバスからブリッジ回路１０８及びＩＳＡ（Industry Standard Architecture）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０９及びキーボード／マウス１１０とを備える。
なお、図１８は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、ＡＴＡ（AT Attachment）などのインターフェイスを介してＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）のドライブを設けても良い。
【００３１】
図２を参照すると、ＣＰＵ１０１は、まず、関数Ｆ(ｘ)＝１、変数ｑ＝１とおき（ステップ２０１）、メインメモリ１０３から処理対象であるリストＬの要素項目ｌiを読み込む。ここで、ｌi'＝ｌi||ＭＤ(ｌi)とおく（ステップ２０２）。次に、ＣＰＵ１０１は、改めてＦ(ｘ)＊(ｘ−ｌi')（ｍｏｄ ｐ）をＦ(ｘ)とおき、変数ｑの値を１増加する（ステップ２０３）。そして、ステップ２０２、２０３の処理をｑの値がリストＬの項目数ｎに達するまで繰り返した後、得られた関数Ｆ(ｘ)を出力する（ステップ２０４、２０５）。
以上のようにして、リストＬから特徴関数Ｆ(ｘ)が構成される。
【００３２】
図３を参照すると、ＣＰＵ１０１は、まず、メインメモリ１０３から処理対象であるｎ次元関数Ｆ(ｘ)を読み込み（ステップ３０１）、Barlekampアルゴリズムを用いて当該関数Ｆ(ｘ)を因数分解する（ステップ３０２）。次に、ＣＰＵ１０１は、因数分解の結果に基づいて、ｇi＝（ｘ−ｌi'）及びｌi'＝ｌ||ＭＤを得る（ステップ３０３）。次に、因数分解された全ての（ｘ−ｌi'）に関してＭＤ＝ＭＤ５(ｌi)であるような要素項目ｌi'（すなわち、ｌi'＝ｌi||ＭＤ５(ｌi)であるようなｌi'）を抽出する（ステップ３０４、３０５）。そして、得られた要素項目ｌi'よりリストＬを作成し（ステップ３０６）、得られたリストＬを出力する（ステップ３０７）。
以上のようにして、特徴関数Ｆ(ｘ)からリストＬが復元される。
【００３３】
この種のリストマッチングにおけるセキュリティに関しては、次の要件を満たすことが要求される。
（１）全リスト保持者のリストに共通して現れる項目を共通部分とする。
（２）リスト保持者の持つリストの内容は共通部分を除いて誰も知りえない。
このように定義すると、リスト保持者は自分のリストに含まれる項目の範囲内だけで、それぞれの項目が他の参加者と共通かどうかだけを知ることができることになる。
【００３４】
上述したように、リストを当該リストの各項目を根とする多項式（特徴関数）で表現することにより、各多項式を加算することによって各リストの共通項目を根とする多項式が得られ、この計算結果である多項式からリストの共通項目を取得することができる。すなわち、分岐命令などを含む比較計算を必要とせず、加算のみによって、リストの共通項目を抽出することが可能となる。このため、後述するように、各参加者が自分のリストに対応する多項式を順次加算して共通項目を算出するシステムや、分散秘密計算を用いて共通項目を算出するシステムを構築することが可能となり、ネットワーク上で安全性の高いリストマッチングを実現することができる。
【００３５】
〔第１の実施の形態〕
次に、上述したリストを特徴関数で表現し共通項目を計算する手法をプロトコルに用いて、リストマッチングを行うネットワークシステムの実施の形態について説明する。
ここでは、ネットワーク上にＴＴＰサーバを置き、このＴＴＰサーバでリストマッチングの計算を行うシステムと、ピア・ツー・ピアでリストマッチングを行うシステムとをそれぞれ説明する。
【００３６】
図４は、ネットワーク上のＴＴＰサーバでリストマッチングを行うシステムの全体構成を示す図である。
図４を参照すると、本実施の形態によるネットワークシステムは、リスト保持者（参加者）のクライアント端末と、リストマッチングの計算を行うマッチメーキングサーバ（ＴＴＰサーバ）とを備える。図４の例では、ｍ人の参加者のクライアント端末４１１、４１２〜４１ｍと１台のマッチメーキングサーバ４００とがネットワークを介して接続されている。
【００３７】
本実施の形態のマッチメーキングサーバ４００は、例えば、ワークステーションやパーソナルコンピュータその他のコンピュータ装置にて実現される。また、クライアント端末４１１、４１２〜４１ｍは、例えば、パーソナルコンピュータなどのコンピュータ装置、ＰＤＡ（Personal Digital Assistant）、携帯電話などの情報通信端末にて実現される。そして、磁気ディスクや半導体メモリなどの記憶手段にリストマッチングの対象であるリストを格納している。典型的には、マッチメーキングサーバ４００及びクライアント端末４１１、４１２〜４１ｍは、図１８に示したコンピュータ装置にて実現することができる。
【００３８】
図５は、図４に示したマッチメーキングサーバ４００及びクライアント端末４１１、４１２〜４１ｍの好適なシステム構成を示す図である。
図５に示すように、マッチメーキングサーバ４００及びクライアント端末４１１、４１２〜４１ｍは、それぞれ、アプリケーションソフトウェア５０１、５１１と、ネットワークプロトコル５０２、５１２と、ネットワークインターフェイス５０３、５１３とを備える。
【００３９】
アプリケーションソフトウェア５０１、５１１にて制御されたＣＰＵ１０１は、処理対象となるリストの生成、当該リストからの特徴関数の多項式の構成、多項式の加算、多項式からのリストの復号といった処理を実行する。そして、ネットワークプロトコル５０２、５１２を介してネットワークインターフェイス５０３、５１３を制御する。そして、このネットワークインターフェイス５０３、５１３により、ネットワーク回線５２０を介して、マッチメーキングサーバ４００とクライアント端末４１１、４１２〜４１ｍとの間の通信が行われる。
また、クライアント端末４１１、４１２〜４１ｍのアプリケーションソフトウェア５１１にて制御されたＣＰＵ１０１は、後述のプロトコルにしたがってマッチメーキングサーバ４００から受け取った共通項目のリストや当該リストに関する情報を、当該クライアント端末４１１、４１２〜４１ｍに設けられている表示手段（液晶表示装置など）や音声出力手段にて出力する機能を実現する。
なお、本実施の形態におけるマッチメーキングサーバ４００及びクライアント端末４１１、４１２〜４１ｍのシステム構成は、必ずしも図５に示した構成に限るものではない。例えば、アプリケーションソフトウェア５０１、５１１とネットワークプロトコル５０２、５１２との間にネットワークＯＳ（オペレーティングシステム）が介在していても良い。
【００４０】
以上のように構成されたネットワークシステムにおいて、次のようなプロトコルでリストマッチングを実行する。
１．クライアント端末４１１は、自分のリストＬ1から多項式Ｆ1(ｘ)を構成する。また、ランダムな項目を持つリストＲ1を生成し、この多項式をＦR1(ｘ)とする。そして、ＦR1(ｘ)をマッチメーキングサーバ４００に秘密送信し、Ｆ1,2(ｘ)＝Ｆ1(ｘ)＋ＦR1(ｘ)をクライアント端末４１２に秘密送信する。
２．クライアント端末４１ｉ（ｉ＝２、・・・、ｍ−１）は、クライアント端末４１ｉ−１から送信された多項式Ｆi-1,i(ｘ)に自分のリストＬiの多項式表現Ｆi(ｘ)を加えたＦi,i+1(ｘ)＝Ｆi-1,i(ｘ)＋Ｆi(ｘ)をクライアント端末４１ｉ＋１に秘密送信する。
３．クライアント端末４１ｍは、クライアント端末４１ｍ−１から送信された多項式Ｆm-1,m(ｘ)に自分のリストＬmの多項式表現Ｆm(ｘ)を加えたＦm,M(ｘ)＝Ｆm-1,m(ｘ)＋Ｆm(ｘ)を、マッチメーキングサーバ４００に秘密送信する。
４．マッチメーキングサーバ４００は、クライアント端末４１ｍから送付された多項式Ｆm,M(ｘ)からＦR1(ｘ)を引き算して得られた多項式ＦM(ｘ)＝Ｆm,M(ｘ)−ＦR1(ｘ)から、各クライアントの共通部分に関するリストを復号し、各クライアント端末４１１、４１２〜４１ｍに通知する。
【００４１】
以上のようにして、各参加者のリストを表現する多項式が、各クライアント端末４１１、４１２〜４１ｍを経ながら加算されてゆき、マッチメーキングサーバ４００において共通部分のリストが得られることとなる。なお、マッチングサーバ４００は、共通部分のリストに対応する多項式ＦM(ｘ)をそのまま各クライアント端末４１１、４１２〜４１ｍへ送信し、各クライアント端末４１１、４１２〜４１ｍにおいて共通部分のリストを復号させるようにしても良い。また、リストにおける共通項目の項目数だけを各クライアント端末４１１、４１２〜４１ｍに通知するようなサービスも可能である。
【００４２】
また、各クライアント端末４１１、４１２〜４１ｍの順番は、任意に設定することができ、リストマッチングを行うたびに変更しても良いが、リストマッチングの対象であるリストを保持するクライアント端末４１１、４１２〜４１ｍが全て参加することが必要である。さらに、リストマッチングを行うたびに、対象となるリストの数も変化し得る。例えば、４台のクライアント端末４１１、４１２〜４１ｍがマッチメーキングサーバ４００に接続されている場合に、ある時は４台全てのクライアント端末４１１、４１２〜４１ｍが参加してリストマッチングを行い、別のある時は任意の２台のクライアント端末４１１、４１２〜４１ｍが参加してリストマッチングを行うといった実施を行うことができる。
【００４３】
上述したネットワークシステムによれば、次の２つの安全性が保たれることとなる。
第１に、マッチメーキングサーバ４００は、加算結果の多項式のみを知ることができる。
第２に、各クライアント端末４１１、４１２〜４１ｍは、他の参加者の多項式を知ることはできない。
したがって、各参加者は、自分のリストに含まれる項目の範囲内だけで、それぞれの項目が他の参加者と共通かどうかだけを知ることができることとなる。そのため、特定のリスト保持者だけが、自分の項目は全く明かさずに、他者の共通部分の知識を得るような操作を防ぐことが可能となる。
【００４４】
〔第２の実施の形態〕
次に、ＴＴＰサーバを用いずに、ピア・ツー・ピアでリストマッチングを行うシステムについて説明する。
図６及び図７は、かかるシステムの全体構成を示す図である。各図には、後述するプロトコルにおける動作が記述されている。
本実施の形態によるネットワークシステムでは、秘密分散に協力する複数のサーバが必要になる。このサーバは、上述したマッチメーキングサーバ４００とは異なり、多項式の計算に協力するのみであって、リストに関しての何の情報も知り得ない。図６及び図７を参照すると、本実施の形態によるネットワークシステムは、ｍ人のリスト保持者（参加者）のネットワーク端末６１１〜６１ｍと、秘密分散に協力するｋ台のサーバ６２１〜６２ｋとがネットワークを介して接続されている。
【００４５】
本実施の形態のネットワーク端末６１１〜６１ｍは、例えば、パーソナルコンピュータなどのコンピュータ装置、ＰＤＡ（Personal Digital Assistant）、携帯電話などの情報通信端末にて実現される。そして、磁気ディスクや半導体メモリなどの記憶手段にリストマッチングの対象であるリストを格納している。また、サーバ６２１〜６２ｋは、例えば、ワークステーションやパーソナルコンピュータその他のコンピュータ装置にて実現される。典型的には、ネットワーク端末６１１〜６１ｍ及びサーバ６２１〜６２ｋは、図１８に示したコンピュータ装置にて実現することができる。
【００４６】
図８は、図６に示したネットワーク端末６１１〜６１ｍ及びサーバ６２１〜６２ｋの好適なシステム構成を示す図である。
図８に示すように、ネットワーク端末６１１〜６１ｍ及びサーバ６２１〜６２ｋは、それぞれ、アプリケーションソフトウェア８０１、８１１と、ネットワークプロトコル８０２、８１２と、ネットワークインターフェイス８０３、８１３とを備える。
【００４７】
アプリケーションソフトウェア８０１、８１１にて制御されたＣＰＵ１０１は、処理対象となるリストの生成、当該リストからの特徴関数の多項式の構成、多項式の加算、多項式からのリストの復号といった処理を実行する。そして、ネットワークプロトコル８０２、８１２を介してネットワークインターフェイス８０３、８１３を制御する。そして、このネットワークインターフェイス８０３、８１３により、ネットワーク回線８２０を介して、ネットワーク端末６１１〜６１ｍとサーバ６２１〜６２ｋとの間の通信が行われる。
また、ネットワーク端末６１１〜６１ｍのアプリケーションソフトウェア８０１にて制御されたＣＰＵ１０１は、後述のプロトコルにしたがって復元した多項式に基づく共通項目のリストを、当該ネットワーク端末６１１〜６１ｍに設けられている表示手段（液晶表示装置など）や音声出力手段にて出力する機能を実現する。
なお、本実施の形態におけるネットワーク端末６１１〜６１ｍ及びサーバ６２１〜６２ｋのシステム構成は、必ずしも図７に示した構成に限るものではない。例えば、アプリケーションソフトウェア８０１、８１１とネットワークプロトコル８０２、８１２との間にネットワークＯＳが介在していても良い。
【００４８】
ここで、本実施の形態のシステムにおける秘密分散によるリストマッチングを実現するための背景技術について説明する。
鍵共有暗号系：
鍵共有暗号系は、１つの秘密鍵をいくつかのサーバに分割してもたせるものであり、Shamirの(t,k)閾値暗号系が有名である。これは、１つの秘密情報をｋ個のサーバに分割して持たせ、そのうちのｔ個が協力することにより、元の鍵を復元できるものである。構成法は、まず、ある体Ｆ上の（ｔ−１）次多項式
ｆ(ｘ)＝ｆ0＋ｆ1＊ｘ＋ｆ2＊x2＋…＋ｆt-1＊ｘt-1                （式１）
を定める。秘密情報の所有者は、まず、式１のｆ0に秘密情報を代入し、残りのｆkはランダムに決める。次に、各サーバｋに対し、（ｋ，ｆ(ｋ)）を分割情報として送る。ｋ個の分割情報が集まると始めて、この多項式（式１）の各係数を一意に求めることができ、ｆ0が求められる。
なお、Shamirの(t,k)閾値暗号系については、次の文献４に詳細に記載されている。
文献４：Shamir, A., "How to Share a Secret," CACM 22, 1979.
【００４９】
Oblivious Transfer：
Oblivious Transfer（以下、ＯＴ）は、情報提供者（Ｓ：Sender）と選択者（Ｃ：Chooser）の２人の間のプロトコルであり、提供者が持つ複数個の情報のうち、所定のいくつかの情報を選択者が選んで得るという手法である。このとき、以下の２つの条件がみたされなければならない。
（１）選択者のプライバシー：提供者は選択者がどれを選んだかを知ることができない。
（２）提供者のプライバシー：選択者は選んだ情報以外を知ることはできない。
【００５０】
基本的なＯＴとして、１−out−of−２−ＯＴがある。これは、提供者が２つの情報を持ち、選択者はそのうちの任意の１つを選ぶというものである。これを実現する代表的なプロトコルとして、ＥｌＧａｍａｌ暗号を使った、次に示すプロトコルがある。なお、下記プロトコルにおいて、提供者の持つ情報をＩ0、Ｉ1、選択者の選択値をｂ∈｛０，１｝、［ｂ］＝ＮＯＴ ｂとする。
１．Ｓ→Ｃ：乱数ｒ
２．Ｃ→Ｓ：Ｋb＝ｇｘ，Ｋ[b]＝ｒ／Ａｂ
３．Ｓ：Check that Ｋ0＊Ｋ1＝ｒ
４．Ｓ→Ｃ｛ＥＩ１，ＩＥ２｝，where ＥＩ１＝（ｇh，Ｉ0＊Ｋ0h），ＥＩ２＝（ｇh，Ｉ1＊Ｋ1h）
５．Ｃ：Decrypt Ｉb
以上のプロトコルは、例えば、下記文献５に詳細に記載されている。
文献５：Bellare, M. and Micali, S., "Non-interactive oblivious transfer and applications," in proc. CRYPTO'89, 1990.
【００５１】
分散型ＯＴ：
上記の基本的なＯＴでは、提供者と選択者の間で暗号化、復号化の処理が必要になる。特に提供者側は、全ての情報を暗号化しなければならず、負担が大きい。そこで、提供者と選択者との間に複数のサーバを置き、サーバ間で情報の秘密分散をさせることによって、提供者の負担を軽減することが考えられる。これを実現したＯＴとして、分散型ＯＴがある。この分散型ＯＴのプロトコルを次に示す。なお、下記プロトコルにおいて、ｋ個のサーバをＰ1，．．．，Ｐkとする。
１．Ｓ：一次式ＦY(ｙ)＝（Ｉ1−Ｉ0）ｙ＋Ｉ0と、定数項が０の任意のｋ−１次式ＦX(ｘ)を作り、２変数多項式Ｑ(ｘ，ｙ)＝ＦX(ｘ)＋ＦY(ｙ)を定義する。
２．Ｓ→Ｐi：Ｑ(ｉ，ｙ)を送る（Ｑは１変数多項式）。
３．Ｃ：定数項がｂであるｋ−１次式Ｓ(ｘ)を作る。
４．Ｃ→Ｐi：座標（ｉ，Ｓ(ｉ)）を送る。
５．Ｐi→Ｃ：Ｑ(ｉ，Ｓ(ｉ))を返す。
６．Ｃ：ｋ個のサーバからＱ(ｉ，Ｓ(ｉ))を得ることによって、ｋ−１次式Ｇ(ｘ)＝Ｑ(ｘ，Ｓ(ｘ))を復元することができ、その結果Ｇ(０)＝Ｑ(０，Ｓ(０))＝Ｑ(０，ｂ)＝ＦY(ｂ)の値が求まる。
上記プロトコルは、例えば、下記文献６に詳細に記載されている。
文献６：Naor, M. and Pinkas, B, "Distributed Oblivious," in proc. of Asiacrypt, 2000.
【００５２】
以上の技術的背景に基づき、図６乃至図８に示したように構成されたネットワークシステムにおいて、次のようなプロトコルでリストマッチングを実行する。
１．特徴関数の構成と２変数関数化：
ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）は、ｎ＋１次の多項式ＦYi(ｙ)を、ＦYi(ｌi,h)＝０、ｈ＝１，．．．，ｎとなるように構成する（ｎ＋１次なのでｎ＋１個の根を持つことができるが、最後の１個はＳiのＩＤの文字列「ｉｄi」を根にする、またネットワーク端末６１ｉのリストの項目数がｎに満たない場合も残りの根を全て「ｉｄi」とする）。次に、定数項が０の任意のｋ−１次多項式ＦXi(ｘ)を作り、２変数多項式Ｑi(ｘ，ｙ)＝ＦXi(ｘ)＋ＦYi(ｙ)を定義する（図６参照）。図９は、多項式Ｑi(ｘ，ｙ)＝ＦXi(ｘ)＋ＦYi(ｙ)を示す図である。
【００５３】
図１０は、２変数多項式Ｑi(ｘ，ｙ)の生成方法を説明するフローチャートであり、図１１は、ｋ−１次多項式ＦXi(ｘ)の生成方法を説明するフローチャートである。
図１０を参照すると、予めメインメモリ等に格納されているｎ＋１次の多項式ＦY(ｙ)を読み出し（ステップ１００１）、さらにｋ−１次の多項式ＦX(ｘ)を読み出す（ステップ１００２）。そして、読み出した多項式ＦY(ｙ)及びＦX(ｘ)を加算して２変数多項式Ｑi(ｘ，ｙ)を生成する（ステップ１００３）。
また、図１１を参照すると、まず、ｋ−１個の乱数を生成し（ステップ１１０１）、当該乱数を用いてｋ−１次多項式ＦX(ｘ)＝ｒ1*ｘ＋ｒ2*ｘ2＋…＋ｒk-1*ｘk-1を生成する（ステップ１１０２）。
【００５４】
２．特徴関数のサーバへの分散：
ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）からサーバ６２ｊ（ｊ＝１，．．．，ｋ）へ、Ｑi(ｊ，ｙ)を送る（Ｑiは１変数多項式）（図６参照）。
【００５５】
３．各サーバにおける分散値加算：
サーバ６２ｊ（ｊ＝１，．．．，ｋ）は、各ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）から送られてきた多項式Ｑi(ｊ，ｙ)を全て加算する（図６参照）。すなわち、
Ｑ(j)(ｊ，ｙ)＝ΣiＱi(ｊ，ｙ)
【００５６】
４．復元用関数の作成：
各ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）は、定数項がｌi,tであるｋ−ｎ−２次多項式Ｓi,t(ｘ)、ｔ＝１，．．．，ｎをｎ個作る（図７参照）。
【００５７】
５．各サーバへの復元用関数上での分散値問い合わせ：
ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）からサーバ６２ｊ（ｊ＝１，．．．，ｋ）へ、ｎ個の座標（ｊ，Ｓi,t(ｊ)），ｔ＝１，．．．，ｎを送る（図７参照）。
【００５８】
６．各サーバからの復元用関数上での分散値返送：
サーバ６２ｊ（ｊ＝１，．．．，ｋ）からネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）へ、Ｑ(j)(ｊ，Ｓi,t(ｊ))の値、ｔ＝１，．．．，ｎを返す（図７参照）。
【００５９】
７．項目の一致度判定：
ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）は、ｋ個のＱ(j)(ｊ，Ｓi,t(ｊ))，（ｊ＝１，．．．，ｋ）から、多項式Ｑ(j)(ｘ，Ｓi,t(ｘ))を復元する。そして、ｘ＝０を代入することによって、Ｑ(j)(０，Ｓi,t(０))＝Ｑ(j)(０，ｌi,t)＝ΣiＦYi(ｌi,t)，ｔ＝１，．．．，ｎを計算する（図７参照）。もし、あるｔについてΣiＦYi(ｌi,t)が０であれば、全てのリスト保持者がｌi,tという項目を共通に持っていることになる。一方、ΣiＦYi(ｌi,t)が０でなければ、共通項目ではなかったことがわかる。
【００６０】
以上のようにして、各参加者のリストを表現する多項式が、複数のサーバ６２１〜６２ｋに分散されて加算され、加算結果に基づいて、各参加者のネットワーク端末６１１〜６１ｍにおいて、共通部分のリストが得られることとなる。なお、上記のプロトコルによって秘密分散を用いたリストマッチングを実行する場合、初期動作として、リストマッチングの対象となるリストを保有するネットワーク端末６１１〜６１ｍ間で通信を確立し、使用するサーバ６２１〜６２ｋを決める工程が実行される。
上述したネットワークシステムによれば、次の２つの安全性が保たれることとなる。
第１に、秘密分散用のサーバ６２１〜６２ｋは、ｋ台全てが結託しない限り、リスト保持者の多項式および結果多項式についての情報を得ることはできない。
第２に、各ネットワーク端末６１１〜６１ｍは、他の参加者の多項式を知ることはできない。
【００６１】
ここで、ネットワーク端末６１１〜６１ｍを用いた不正としては、定数０を自分のリスト表現関数として登録し、本当のリストは明らかにしないで、他の参加者の共通部分を知ろうとする方法が考えられる。しかしながら、ネットワーク端末６１１〜６１ｍが秘密分散用のサーバ６２１〜６２ｋに対して分散登録する際に、秘密分散用のサーバ６２１〜６２ｋにおいて分散多項式の次数を調べることによって、不正を検出することができる。
【００６２】
ところで、上記のプロトコルにおいて、各リスト保持者ｉは、自分の特徴関数ＦYi(ｙ)を知っているため、和関数ΣiＦYi(ｙ)について、自分の特徴関数の根以外の点（つまり、あるリスト項目）ｙ０を検索し、自分の特徴関数の値を引くことにより、ΣiＦYi(ｙ０)−ＦYi(ｙ０)＝０となった場合、自分以外のリスト保持者がその項目を共通点として持っていたかどうかを知ることができてしまう。これを防ぐために、以下のように、和関数を乱数倍にすることによって、根以外の情報を無効化することができる。
まず、上記プロトコルの２．において、Ｑi(ｊ，ｙ)に加え、乱数Ｒi（全てのサーバについて同じ値）を送る。
また、３．において、多項式Ｑi(ｊ，ｙ)を加算すると共に、各ネットワーク端末６１ｉ（ｉ＝１，．．．，ｍ）から送られてきた乱数Ｒiも加算する。すなわち、
Ｒ(j)＝ΣiＲi
そして、前者の関数を後者の乱数によって定数倍する。
以上の操作を含むことにより、自関数の根以外の点検索を無効化することができる。
【００６３】
ところで、本実施の形態では、マッチングの対象であるリストの各要素は、特徴関数の根として表現されている。そのため、複数の特徴関数を加算した結果、個々の特徴関数において根でなかったところにも根が現れ得ることは上述した。また、この場合、１方向ハッシュ関数を用いることによって、復号時に根がリストの項目から作られたものか、加算の結果、偶然にできたものかを区別することが可能となることについても、先に述べた。
しかし、秘密分散を用いてピア・ツー・ピアでリストマッチングを行う本実施の形態においては、ハッシュ関数を用いた手法を取るまでもなく、偶然にできた根については大きな問題とはならない。なぜなら、各リスト保持者（参加者）は、自分の特徴関数の根であった部分について、結果の関数においても根であるか否かを調べるのが原則であるからである。したがって、少なくとも、参加者が２人の場合には問題は全く起こらない。
【００６４】
参加者が３人以上の場合、例えば、参加者Ａが｛Ａ１，Ａ２｝、参加者Ｂが｛Ｂ１，Ｂ２｝、参加者Ｃが｛Ｃ１，Ｃ２｝というリストをそれぞれ持っていたとする。この場合、ＡとＢの特徴関数を加算した結果、ごく小さな確率で偶然に和関数がＣ１という根を持つ可能性があり、このとき、Ｃは、ＡもＢも同じ要素Ｃ１を持っていると誤って判断することになる。このような事態が起きる確率は、以下のように求められる。
関数は、任意の有限体上で定義されるが、簡単のため素数体Ｚｐとする。ここで、ｐを５１２ｂｉｔ程度の素数にすると、６４文字長の文字列が根として表現できることになる。ここで、リストの要素数ｎを１５程度にとると、特徴関数は１６次元となる。特徴関数は、それぞれ対応するリストの保持者のＩＤを根として持つので、お互いに重なることはなく、ユニークであると考えられる。したがって、ＡとＢの和関数がＡとＢの共通根以外の特定の値ｙ0で根を持つ確率は、１６／（２512）程度であり、ほとんど無視できる大きさだと考えられる。
【００６５】
〔第３の実施の形態〕
次に、特徴関数を用いて、通常はピア・ツー・ピアでリストマッチングを行い、障害が発生した場合に、ＴＴＰサーバの支援によりリストマッチングの処理を補完するシステムについて説明する。
図１２は、かかるシステムの全体構成を示す図である。
図１２を参照すると、本実施の形態によるネットワークシステムでは、システムを構成する個々のピアであるネットワーク端末１２００の間での情報のやり取りのみによって、リストマッチングが可能である。さらに、ネットワーク端末１２００間での情報のやり取りに障害が発生した場合（必要な情報の交換が行われない場合や間違った情報が交換された場合）は、ＴＴＰサーバ１２１０に例外処理を依頼することにより、問題解決を図ることができる。
【００６６】
図１３は、本実施の形態におけるネットワーク端末１２００及びＴＴＰサーバ１２１０の機能構成を示す図である。
ネットワーク端末１２００は、例えば、パーソナルコンピュータなどのコンピュータ装置、ＰＤＡ（Personal Digital Assistant）、携帯電話などの情報通信端末にて実現される（図１８参照）。そして、ハードディスク１０５やメインメモリ１０３などの記憶手段にリストマッチングの対象であるリストを格納している。図１３を参照すると、ネットワーク端末１２００は、公開情報であるコミットメント及びコミットメント開示値を生成するコミットメント生成部１２０１と、リストマッチングの相手となる他のネットワーク端末１２００の公開情報を取得し検証を行うコミットメント検証部１２０２と、コミットメント生成部１２０１にて生成されたコミットメント開示値及びコミットメント検証部１２０２により検証された他のネットワーク端末１２００のコミットメントに対するマッチング処理を行うマッチング部１２０３と、リストマッチングの結果を出力するマッチング結果出力部１２０４とを備えると共に、ＴＴＰサーバ１２１０に処理を依頼するための例外処理要求部１２０５と、ＴＴＰサーバ１２１０から取得した処理結果を出力する例外処理結果出力部１２０６とを備える。
これらコミットメント生成部１２０１、コミットメント検証部１２０２、マッチング部１２０３、マッチング結果出力部１２０４、例外処理要求部１２０５及び例外処理結果出力部１２０６は、ネットワーク端末１２００を構成するコンピュータ装置におけるプログラム制御されたＣＰＵ１０１にて実現される仮想的なソフトウェアブロックである。また、特に図示しないが、ネットワーク端末１２００は、プログラム制御されたＣＰＵ１０１及びネットワークインターフェイス１０６にて実現される送受信部を備える。
【００６７】
また、ＴＴＰサーバ１２１０は、例えば、ワークステーションやパーソナルコンピュータその他のコンピュータ装置にて実現され（図１８参照）、ネットワーク端末１２００の例外処理要求部１２０５による処理要求に応じて、リストマッチングを行う例外処理実行部１２１１を備える。
この例外処理実行部１２１１は、ＴＴＰサーバ１２１０を構成するコンピュータ装置におけるプログラム制御されたＣＰＵ１０１にて実現される仮想的なソフトウェアブロックである。また、特に図示しないが、ネットワーク端末１２００は、プログラム制御されたＣＰＵ１０１及びネットワークインターフェイス１０６にて実現される送受信部を備える。
【００６８】
以下、図１２に示したネットワークシステムを構成するピアであるネットワーク端末１２００における所定の２台の間でリストマッチングが行われる場合を例として、処理及び情報の流れを説明する。
なお、以下の説明において、個々のネットワーク端末１２００を区別する場合には、添え字ｕ、ｖを付して記述する。各ネットワーク端末１２００の構成要素についても同様である。例えばネットワーク端末１２００ｖ、コミットメント生成部１２０１ｕというように記す。
【００６９】
各ネットワーク端末１２００は、それぞれｎ個のデータをデータベースに保持しているものとする。全てのデータには、データごとに一意に区別できるデータ番号が割り振られているものとし、データ番号全体の集合をＬとする。また、ネットワーク端末１２００ｕが持つｎ個のデータにおけるデータ番号のリストを、添え字ｕを付してＬu＝｛αu,1，・・・，αu,n｝とする。各ネットワーク端末１２００ｕは、公開鍵暗号化に対応する秘密鍵Ｋuを持つものとする。また、ＴＴＰサーバ１２１０は、公開鍵暗号化アルゴリズムＥT()に対応する秘密鍵ＫTを保持する。このＴＴＰサーバ１２１０は、通常プロセスでは登場せず、上述した障害（例外）発生時に、正常にプロトコルを終了させるための機能（例外処理実行部１２１１）を持つ。
【００７０】
本実施の形態において、リストマッチング（２つのリストの共通部分抽出）は、次のように定義される。すなわち、任意の２組のネットワーク端末１２００ｕ、１２００ｖ（ｕ≠ｖ）の間で、それぞれの持つ秘密のリストＬuとＬvの共通部分Ｌu∩Ｌvを互いに共有する。この際、
（１）共通部分以外に関する情報を相手に漏らさないこと、
（２）一方だけが共通部分を知る不正を防ぐこと、
が要求される。
【００７１】
次に、ネットワーク端末１２００及びＴＴＰサーバ１２１０において実行されるアルゴリズムについて説明する。
図１４は、ネットワーク端末１２００及びＴＴＰサーバ１２１０で実行されるアルゴリズム及び情報の流れを示す図である。
本実施の形態では、リストマッチングを実現するため、ネットワーク端末１２００において、以下に示す６つのアルゴリズムの記述を用いる。
・Ｃ（Ｌu）：コミットメント生成部１２０１ｕにて実行されるコミットメント生成アルゴリズムであり、ネットワーク端末１２００ｕの持つリストＬuを入力として、コミットメントｃｏｍu及びコミットメント開示値ｏｐｅｎuを出力する。
・Ｖ（ｃｏｍv）：コミットメント検証部１２０２ｕにて実行されるコミットメント検証アルゴリズムであり、ネットワーク端末１２００ｖによるコミットメントｃｏｍvを入力として、検証結果｛０，１｝を出力する（以後、「１」を出力させる入力を「正当なコミットメント」と呼ぶ）。
・Ｍ（ｏｐｅｎu，ｃｏｍv）：マッチング部１２０３ｕにて実行されるマッチングアルゴリズムであり、ネットワーク端末１２００ｕのコミットメント開示値ｏｐｅｎu及びネットワーク端末１２００ｖの正当なコミットメントｃｏｍvを入力として、応答メッセージａｎｓu,vを出力する。
・Ｄ（ａｎｓv,u，ｃｏｍv，Ｌu，Ｋu，ｏｐｅｎu）：マッチング結果出力部１２０４ｕにて実行される結果出力アルゴリズムであり、ネットワーク端末１２００ｖからネットワーク端末１２００ｕに対する応答メッセージａｎｓv,u 、正当なコミットメントｃｏｍv、及びネットワーク端末１２００ｕのリストＬu、秘密鍵Ｋu、コミットメント開示値ｏｐｅｎuを入力として、ＬuとＬvの共通部分
【数１】
0003784055.tif 000002
（以下、~Ｌu,vとも表記する）もしくはエラーメッセージを出力する（以後、共通部分を出力させる入力ａｎｓv,uを「正当な応答メッセージ」と呼ぶ）。
・Ｐ（ｃｏｍv，Ｌu）：例外処理要求部１２０５ｕにて実行される例外処理要求生成アルゴリズムであり、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv、及びネットワーク端末１２００ｕのリストＬuを入力として、例外処理要求メッセージｅｒｅｑv,uを出力する。
・Ｗ（ｅａｎｓv,u，Ｋu）：例外処理結果出力部１２０６ｕにて実行される例外処理結果生成アルゴリズムであり、例外要求応答メッセージｅａｎｓv,uを入力として、ＬuとＬvの共通部分~Ｌu,v（＝Ｌu∩Ｌv）を出力する。
【００７２】
さらに本実施の形態では、ＴＴＰサーバ１２１０の例外処理実行部１２１１において実行される次のアルゴリズムの記述を用いる。
・Ｔ（ｅｒｅｑv,u，ＫT）：例外処理アルゴリズムであり、例外処理要求メッセージｅｒｅｑv,u及びＴＴＰサーバ１２１０の秘密鍵ＫTを入力として、例外処理応答メッセージｅａｎｓv,uまたはエラーを出力する（以後、ｅａｎｓv,uを出力させる例外処理要求メッセージｅｒｅｑv,uを「正当な例外処理要求メッセージ」と呼ぶ）。
以上のアルゴリズムの具体的な内容については後述する。
【００７３】
上述したリストマッチング及びアルゴリズムの定義に基づいて、本実施の形態におけるリストマッチングは、次のように定式化される。
１．各サーバによるコミットメントの公開
初期的な処理として、各ネットワーク端末１２００のコミットメント生成部１２０１ｕは、コミットメント生成アルゴリズムＣを用いて、自装置のリスト（ネットワーク端末１２００ｕの場合、Ｌu）に関するコミットメント及びコミットメント開示値（同様にネットワーク端末１２００ｕの場合、｛ｃｏｍu，ｏｐｅｎu｝＝Ｃ（Ｌu）を生成し、各ネットワーク端末１２００、すなわちネットワークシステム全体に対して、生成されたコミットメント（ｃｏｍ）をブロードキャストする。コミットメント開示値（ｏｐｅｎ）は秘匿する。
なお、コミットメントは、全てのネットワーク端末１２００に対して公開される。また、コミットメントのサイズは、システムに参加するネットワーク端末１２００の数には依存しないので、ネットワーク端末１２００のシステムへの追加に応じてコミットメントを変更する必要もない。したがって、ブロードキャストにより各ネットワーク端末１２００間で個別に交換する代わりに、ネットワーク上に解説された公開されたデータベースに登録したり、このデータベースをＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）などの大容量記録媒体に格納して配布したりするなど、各ネットワーク端末１２００が任意に取得できる手段であれば、どのような手段を用いて提供しても良い。
【００７４】
２．以下の処理を任意のネットワーク端末１２００間で行う。簡潔のため、ネットワーク端末１２００ｕ、１２００ｖ間の処理の流れを示す。ここで、（ｂ）は例外発生時にのみ必要となる手続きである。なお、以下に示すように、この処理はネットワーク端末１２００ｕ、１２００ｖの双方で同様の処理を行うことから、初期的にネットワーク端末１２００ｕ、１２００ｖ間で連絡を取り合い、リストマッチングを行うことを確認した後に開始することとなる。
（ａ）通常プロセス
ｉ．コミットメントの検証
ネットワーク端末１２００ｕのコミットメント検証部１２０２ｕは、リストマッチングの相手であるネットワーク端末１２００ｖのコミットメントｃｏｍvに対し、コミットメント検証アルゴリズムＶを用いて、Ｖ（ｃｏｍv）＝１となるかを検証することで、ｃｏｍvが正当なコミットメントであることを確認する。ここで、Ｖ（ｃｏｍv）＝０であれば、ネットワーク端末１２００ｖに対して以後の処理を行わない（したがってリストの交換は一切発生しない）。一方、ネットワーク端末１２００ｖも、ｃｏｍuに対して同様の処理を行う。
【００７５】
ｉｉ．応答メッセージの生成
ネットワーク端末１２００ｕのマッチング部１２０３ｕは、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍvに対し、自身のコミットメント開示値ｏｐｅｎu及びマッチングアルゴリズムＭを用いて、応答メッセージａｎｓu,v＝Ｍ（ｏｐｅｎu，ｃｏｍv）を計算し、リストマッチングの相手であるネットワーク端末１２００ｖに送信する。一方、ネットワーク端末１２００ｖもｃｏｍuに対して同様の処理を行う。
【００７６】
ｉｉｉ．結果出力
ネットワーク端末１２００ｕのマッチング結果出力部１２０４ｕは、ネットワーク端末１２００ｖから応答メッセージａｎｓv,uを受け取る。ａｎｓv,uを受信できない場合には、後述の例外処理プロセスを行う。ネットワーク端末１２００ｖから受け取ったａｎｓv,uに対し、自身のリストＬu、秘密鍵Ｋu、コミットメント開示値ｏｐｅｎu、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv、及び結果出力アルゴリズムＤを用いて、ｒｅｓv,u＝Ｄ（ａｎｓv,u，ｃｏｍv，Ｌu，Ｋu，ｏｐｅｎu）を計算する。ａｎｓv,uが正当な応答メッセージであれば、ｒｅｓv,uは、ネットワーク端末１２００ｕのリストＬuとネットワーク端末１２００ｖのリストＬvとの共通部分（Ｌu∩Ｌv）である。ｒｅｓv,uがエラーのときは、例外処理プロセスを行う。一方、ネットワーク端末１２００ｖもａｎｓu,vに対して同様の処理を行う。
【００７７】
（ｂ）例外処理プロセス
ｉ．例外処理要求
ネットワーク端末１２００ｕにおいてリストの共通部分を計算できないという例外が発生した場合、すなわち、ネットワーク端末１２００ｖからａｎｓv,uが送信されなかった場合や間違ったａｎｓv,uが送信された場合、ネットワーク端末１２００ｕの結果出力部１２０５ｕは、自身のリストＬu、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv、及び例外処理要求生成アルゴリズムＰを用いて、例外処理要求メッセージｅｒｅｑv,u＝Ｐ（ｃｏｍv，Ｌu）を計算し、ＴＴＰサーバ１２１０に送信する。
【００７８】
ｉｉ．例外処理
ＴＴＰサーバ１２１０は、例外処理要求メッセージｅｒｅｑv,uを受け取った後、事前に規定された手段によって例外が生じたことを確認する。例外が確認されなければネットワーク端末１２００ｕに対してエラーを返す。例外が確認された場合、例外処理実行部１２１１が、例外処理アルゴリズムＴ及び秘密鍵ＫTを用いて、例外処理応答メッセージｅａｎｓv,u＝Ｔ（ｅｒｅｑv,u，ＫT）を計算する。そして、ＴＴＰサーバ１２１０は、計算された例外処理応答メッセージｅａｎｓv,uをネットワーク端末１２００ｕに対して送信する。
【００７９】
ｉｉｉ．例外処理結果出力
ネットワーク端末１２００ｕの例外処理結果出力部１２０６ｕは、ＴＴＰサーバ１２１０から受け取った例外処理応答メッセージｅａｎｓv,uと、ネットワーク端末１２００ｕの秘密鍵Ｋuとを入力として、例外処理結果ｅｒｅｓv,u＝Ｗ（ｅａｎｓv,u，Ｋu）を計算し、出力する。この例外処理結果ｅｒｅｓv,uは、ネットワーク端末１２００ｕのリストＬuとネットワーク端末１２００ｖのリストＬvとの共通部分（Ｌu∩Ｌv）である。
【００８０】
以上の動作において、各ネットワーク端末１２００は、自身のリストに対するコミットメントを公開することにより、リストマッチングにおいてリストを偽らないことを他のサーバに対して保証することができる。また、コミットメントには、例外発生時に一方が不利を被らないよう、ＴＴＰサーバ１２１０がリストの共通部分を計算することを可能にするための情報が含まれている。各ネットワーク端末１２００は、コミットメント検証アルゴリズムＶを用いて、「コミットメントが正確に構成されていおり、万一の場合にはＴＴＰサーバ１２１０による問題解決が可能であること」を通常プロセスの冒頭においてチェックすることができる。
さらに、リストを偽ることが困難なように、応答メッセージは、公開されたコミットメントを入力として計算される。したがって、リストを偽ることにより不正にマッチング相手のネットワーク端末１２００の持つリストに関する情報を入手することはできない。また、一方のネットワーク端末１２００が応答メッセージを送信せずにプロトコルを勝手に中断したり、不正に計算されたメッセージを送信したりした場合、ＴＴＰサーバ１２１０が、コミットメント及び例外処理要求メッセージに含まれる情報を基にリストの共通部分を計算することができる仕組みになっている。したがって、不正行為によりリストの共通部分の情報を、一方のネットワーク端末１２００だけが入手することはできない。
【００８１】
次に、本実施の形態のシステムにおいて、上記のリストマッチングの動作を実現するためのプロトコルを説明する。
まず、本プロトコルで用いられるパラメータについて説明する。
ＧqをDecisional Diffice-Hellman（ＤＤＨ）仮定が成立する位数ｑ（ｑは素数）の群とし、ｇ及びｈをＧqのランダムな元とする。ここで、ｌｏｇg ｈは未知とする。Ｈ(・)を理想的な一方向性ハッシュ関数、α∈Ｚqに対するコミットメントをπ(α，ｒ)＝ｇαｈr（ｒ∈RＺq）とする。ここで、ｘ∈RＧは「Ｇからランダムに取り出した要素をｘとする」を意味する。また、Ｇq上のＥｌＧａｍａｌ暗号Ｅy（ｍ，ｒ）を次のように定義する。
Ｅy（ｍ，ｒ）＝（ｇr，ｍｙr）（ｒ∈RＺq）
上式で、ｍは平文（メッセージ）、ｙは公開鍵である。公開鍵ｙに対応する秘密鍵による復号をＤyと表す（つまり、Ｄy（Ｅy（ｍ，ｒ））＝ｍ）。ｍがＧq上の元に限定される場合、この暗号化はＤＤＨ仮定の元で強秘匿であることが知られている。また、ＥｌＧａｍａｌ暗号には次の性質がある。
(Ｅy(ｍ,ｒ))k＝((ｇr)k,(ｍｙr)k)＝Ｅy(ｍk,ｋｒ)
Ｅy(ｍ,ｒ)×Ｅy(ｍ',ｒ')＝(ｇrｇr',ｍｙr(ｍ'ｙr'))＝Ｅy(ｍｍ',ｒ＋ｒ')
以後、文脈に応じてＥ（ｍ,ｒ）の乱数ｒを省略してＥ（ｍ）とする記述を適宜用いることにする。
【００８２】
本実施の形態で実現されるプロトコルは、離散対数問題が計算量的に困難となるような任意の群ＧＦ(ｑ)上で定義される。ＧＦ(ｑ)の具体的構成例としては、（１）位数ｐの素体の上での構成法：ｐをｑ|ｐ−１を満たす大きな素数、ｇを有限体Ｚp上の位数ｑの元として、ｇを生成元として構成される群ＧＦ(ｑ)、
（２）位数ｐの素体の上での乗法演算を、任意の有限体上の楕円曲線などの曲線上の加法演算に対応させることにより構成される群、
（３）素数ｐに代えて素数ｐ'のべき乗数とし、素数ｐを法とする剰余演算に代えてＧＦ(ｐ')拡大体上での演算を行なうことにより構成される群、
などがある。
【００８３】
次に、本実施の形態で用いられる既存の基本的なプロトコルを示す。
ＥｌＧａｍａｌ暗号を用いたＯＰＥ：
Ａ、Ｂの２者間で情報のやり取りをするものとする。Ａの公開鍵をｙとする。
Ａは秘密の値α（∈Ｚq）を持ち、Ｂは次の数２式に示す秘密の多項式ｆB(ｘ)を持つものとする。
【数２】
0003784055.tif 000003
本プロトコルは、
・ＡはＢにαを知られずに、ｇfB(α)を得ることができる。
・ＡはｆB(ｘ)に関してｇfB(α)以外の情報を知ることはできない。
という性質を持つ。以下にプロトコルの内容を示す。
【００８４】
１．Ａは、ｉ＝１，・・・，ｎについて、
【数３】
0003784055.tif 000004
を、乱数ｒi（∈RＺq）を用いて次の数４式のようにＥｌＧａｍａｌ暗号化する。
【数４】
0003784055.tif 000005
Ａは、ｃ1，・・・，ｃnをＢへ送信する。
２．Ｂは、乱数ｒ０（∈RＺq）を選び、次の数５式に示す計算を行う。
【数５】
0003784055.tif 000006
Ｂは
【数６】
0003784055.tif 000007
をＡへ送信する。
３．Ａは、^ｃを復号してｇfB(α)を得る。
【００８５】
証明プロトコル１：
ｍ0、ｍ1をＧqの元、^ｃ1＝（ｃ1，ｃ2）＝Ｅy(ｍ1，β)＝（ｇβ，ｍ1ｙβ）を、公開鍵ｙを用いたｍ1のＥｌＧａｍａｌ暗号文とする。このとき、共通入力（ｇ，ｙ，ｍ０，^ｃ）に対し、暗号文^ｃに対応する平文ｍ1のｍ0に対する離散対数αを知っていることを証明する。すなわち、知識の非対話証明（ｅ，ｓ，ｔ）＝ＰＫa｛（α，β）：（ｃ1＝ｇβ）∧（ｃ2＝ｍ1ｙβ）∧（ｍ1＝ｍ0α）｝は次のように構成できる。
１．ｒ1，ｒ2∈RＺqを選ぶ。
２．次の数７式により（ｅ，ｓ，ｔ）を計算する。
【数７】
0003784055.tif 000008
検証者は、次の数８式が成立するときに、証明を受理する。
【数８】
0003784055.tif 000009
【００８６】
証明プロトコル２：
ｍ1，ｍ2，ｍ'1，ｍ'2をＧqの元とし、また、
^ｃ1＝（ｃ1,1，ｃ1,2）＝Ｅy(ｍ'1，β1)＝（ｇβ1，ｍ'1ｙβ1）
^ｃ2＝（ｃ2,1，ｃ2,2）＝Ｅy(ｍ'2，β2)＝（ｇβ2，ｍ'2ｙβ1）
を、公開鍵ｙを用いた、それぞれｍ'1，ｍ'2のＥｌＧａｍａｌ暗号文とする。このとき、共通入力（ｇ，ｙ，ｍ1，ｍ2，^ｃ1，^ｃ2）に対し、暗号文^ｃ1，^ｃ2に対応する平文ｍ'1，ｍ'2の、それぞれｍ1，ｍ2に対する離散対数が等しいことを証明する。すなわち、知識の非対話証明（ｅ，ｓ，ｔ，ｕ）＝ＰＫ｛（α，β1，β2）：｛（ｃi,1＝ｇβi）∧（ｃi,2＝ｍ'iｙβi）∧（ｍ'i＝ｍiα）｝i=1,2｝は、次のように構成できる。
１．乱数ｒ1，ｒ2，ｒ3∈RＺqを選ぶ。
２．次の数９式により、（ｅ，ｓ，ｔ，ｕ）を計算する。
【数９】
0003784055.tif 000010
検証者は、次の数１０式が成立するときに、証明を受理する。
【数１０】
0003784055.tif 000011
この手法を拡張することにより、
ＰＫ｛（α，｛βi｝i=1n）：｛（ｃi,1＝ｇβi）∧（ｃi,2＝ｍ'iｙβi）∧（ｍ'i＝ｍiα）｝i=1n｝
を構成することは容易である。
【００８７】
証明プロトコル３：
ｍ0をＧqの元、また、ｉ＝１，・・・，ｎのそれぞれ対して^ｃi＝（ｃi,1，ｃi,2）＝（ｇβi，ｍiｙβi）を、公開鍵ｙを用いたｍiのＥｌＧａｍａｌ暗号文とする。このとき、共通入力（ｇ，ｙ，ｍ0，^ｃ1，・・・，^ｃn）に対し、次の数１１式に示す関係を満足するαが存在することを、αを明かさずに証明する。
【数１１】
0003784055.tif 000012
すなわち、知識の非対話証明
【数１２】
0003784055.tif 000013
は、次のように構成できる。ここで、簡単のため、（ｃ0,1，ｃ0,2）＝Ｅy(ｍ0，０)＝（１，ｍ0），β0＝０とする。
１．ｒ1，ｒ2∈RＺqを選ぶ。
２．次の数１３式により（ｅ，ｓ1，・・・，ｓn，ｔ）を計算する。
【数１３】
0003784055.tif 000014
検証者は、次の数１４式が成立するときに、証明を受理する。
【数１４】
0003784055.tif 000015
【００８８】
図１５は、上記の基本的なプロトコルに基づいて実現される本実施の形態におけるリストマッチングのプロトコルを説明する図である。以下、図１５を参照しながら説明する。なお、図中の括弧付きの数字は、下記の手順の番号と対応している。
〔１〕ネットワーク端末１２００ｕは、リストＬu＝｛αu,1，．．．，αu,n｝に対し、特徴関数である
【数１５】
0003784055.tif 000016
を計算する。このとき、
【数１６】
0003784055.tif 000017
は、定数項が１であり、Ｌuの全ての要素を根に持っている。
【００８９】
〔２〕ネットワーク端末１２００ｕは、係数｛ａu,l｝l=1nに対するコミットメント｛ｃu,l＝ｇau,lｈbu,l｝l=1nを作成する。ここで、
【数１７】
0003784055.tif 000018
とする。
【００９０】
〔３〕ネットワーク端末１２００ｕは、ＥｌＧａｍａｌ暗号を用いたＯＰＥの手法を応用し、リストの要素αu,i∈Ｌuを入力とするＯＰＥにより、αu,iがネットワーク端末１２００ｖの多項式ｆv(ｘ)の根になっているかを検査する。そのため、以下の処理を要素αu,i∈Ｌuの全て（ｉ＝１，・・・，ｎ）に対して行う。
（ａ）  ｇu,i，ｈu,i∈Ｇqを選ぶ。ここでｔg(u,i)＝ｌｏｇg ｇu,iとｔh(u,i)＝ｌｏｇh ｈu,iはネットワーク端末１２００ｕのみが知るものとする。
（ｂ）  次の数１８式を計算する（ｙTはＴＴＰサーバ１２１０の公開鍵）。
【数１８】
0003784055.tif 000019
また、この計算が正確に行われていること示す証明ｐｋu,i,1を構成する。さらにψt(u,・,・)はＴＴＰサーバ１２１０において復号できることから、「ＴＴＰサーバ１２１０が問題発生時に問題解決できる」ということを検証可能にしている。
（ｃ）  αu,iがｆu(αu,i)＝０を満たすこと示す証明ｐｋu,i,2を構成する。この証明は、
【数１９】
0003784055.tif 000020
を用いて、次の数２０式におけるｈに対する離散対数の知識を証明することにより実現している。
【数２０】
0003784055.tif 000021
（ｄ）  αu,iに関する公開情報ｄu,iは、次の数２１式のように構成される。
【数２１】
0003784055.tif 000022
これにより公開されるコミットメントｃｏｍuは、次の数２２式で表されるようになる。
【数２２】
0003784055.tif 000023
【００９１】
〔４〕ネットワーク端末１２００ｕのコミットメントｃｏｍuを受け取ったネットワーク端末１２００ｖは、以下の処理をｉ＝１，．．．，ｎに対して行う。
（ａ）ｄu,iに含まれるｐｋu,i,1及びｐｋu,i,2を検証する。
（ｂ）次の数２３式により、φg(u,v,i)、φh(u,v,i)を計算する。
【数２３】
0003784055.tif 000024
（ｃ）φg(u,v,i)をξ1(u,v,i)乗することによりαu,iがｆv()の根判定以外に関する情報を隠蔽する。すなわち、
【数２４】
0003784055.tif 000025
一方、以上の処理が正確に行われたかを、ネットワーク端末１２００ｕの側で公開されたコミットメントｃｏｍvのみを用いて検証可能にするための情報を構成する。まず、φh(u,v,i)に
【数２５】
0003784055.tif 000026
を掛けることにより、ｗv(αu,i) に関する情報を隠蔽した上で、これらの処理が正確に行われていることを示す証明を、次の数２６式のように構成する。
【数２６】
0003784055.tif 000027
これにより応答メッセージは、次の数２７式に示すようになる。
【数２７】
0003784055.tif 000028
【００９２】
〔５〕応答メッセージａｎｓu,vを受け取ったネットワーク端末１２００ｕは、ｉ＝１，・・・，ｎに対して以下の処理を行う。
（ａ）証明ρ(u,v,i)をネットワーク端末１２００ｕのコミットメントｃｏｍvを用いて検証する。具体的には、次の数２８式を計算し、数２９式が成立するかを検証する。
【数２８】
0003784055.tif 000029
【数２９】
0003784055.tif 000030
（ｂ）上記の検証が通過しない場合は、例外処理を行う。σg(u,v,i)＝１ならば、ｆv(αu,i)＝０であることから、αu,i∈Ｌvがわかる。逆に、σg(u,v,i)≠１ならば、
【数３０】
0003784055.tif 000031
である。
【００９３】
〔６〕例外発生時には、ネットワーク端末１２００ｕはネットワーク端末１２００ｖのコミットメントｃｏｍvに含まれる
【数３１】
0003784055.tif 000032
を用いて例外処理を行う。具体的には、次の数３２式を計算する。
【数３２】
0003784055.tif 000033
そして、
【数３３】
0003784055.tif 000034
をＴＴＰサーバ１２１０へ送る。ＴＴＰサーバ１２１０は、κ1を復号することにより、
【数３４】
0003784055.tif 000035
を得る。これは、ネットワーク端末１２００ｕの公開鍵ｙuを用いたＥｌＧａｍａｌ暗号化であり、強秘匿であることからリストＬu、Ｌvの共通部分であるかどうかの情報はＴＴＰサーバ１２１０には漏れない。ＴＴＰサーバ１２１０は、これを~ｚ(u,v,i,j)乗してランダマイズした結果をネットワーク端末１２００ｕへ送る。すなわち、
【数３５】
0003784055.tif 000036
である。ネットワーク端末１２００ｕは、これを復号して、結果が１になったものが共通部分であると判定することができる。
【００９４】
次に、以上の本実施の形態で使用される各アルゴリズムの詳細を説明する。
以下の説明において、ＹTはＴＴＰサーバ１２１０の公開鍵とする。
・コミットメント生成アルゴリズムＣ
入力：ネットワーク端末１２００ｕの持つリストＬu。
出力：コミットメントｃｏｍu、コミットメント開示値ｏｐｅｎu。
処理：
（１）リストＬuに対し、
【数３６】
0003784055.tif 000037
を生成する。各係数を
【数３７】
0003784055.tif 000038
とする。
（２）ｌ＝１，・・・，ｎに対してｂu,lを選び、
【数３８】
0003784055.tif 000039
を計算する。ここで、
【数３９】
0003784055.tif 000040
とする。
（３）次の数４０式を計算する。
【数４０】
0003784055.tif 000041
また、これらの各値は、次の数４１式に示す処理により計算される。
【数４１】
0003784055.tif 000042
（４）コミットメント開示値ｏｐｅｎuを出力する。
【数４２】
0003784055.tif 000043
（５）コミットメントｃｏｍuを出力する。
【数４３】
0003784055.tif 000044
【００９５】
・コミットメント検証アルゴリズムＶ
入力：ネットワーク端末１２００ｖのコミットメントｃｏｍv。
出力：検証結果｛０，１｝。
処理：
【数４４】
0003784055.tif 000045
に含まれる証明
【数４５】
0003784055.tif 000046
を検証し、コミットメントｃｏｍvの全てを受理する場合に１を出力し、それ以外は０を出力する。
【００９６】
・マッチングアルゴリズムＭ
入力：ネットワーク端末１２００ｕのコミットメント開示値ｏｐｅｎu、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv。
出力：応答メッセージａｎｓu,v。
処理：
（１）コミットメント開示値ｏｐｅｎuに含まれる
【数４６】
0003784055.tif 000047
を用いて、次の数４７式に示す（ａ）〜（ｄ）の処理をi＝１，・・・，ｎに対して計算する。
【数４７】
0003784055.tif 000048
（２）応答メッセージａｎｓu,vを出力する。
【数４８】
0003784055.tif 000049
【００９７】
・結果出力アルゴリズムＤ
入力：ネットワーク端末１２００ｖからネットワーク端末１２００ｕへの応答メッセージａｎｓv,u、ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv、ネットワーク端末１２００ｕのリストＬu、秘密鍵Ｋu、コミットメント開示値ｏｐｅｎu。
出力： リストＬvとリストＬuとの共通部分~Ｌv,u（＝Ｌv∩Ｌu）もしくはエラーメッセージ。
処理：入力として、
【数４９】
0003784055.tif 000050
を用いる。そして、ｉ＝１，・・・，ｎに対して以下の処理を行う。
（１）証明
【数５０】
0003784055.tif 000051
を検証するため、次の数５１式を計算する。
【数５１】
0003784055.tif 000052
（２）次の数５２式が成り立たなければ、エラーメッセージを出力して終了する。
【数５２】
0003784055.tif 000053
（３）σg(u,v,i)を満たすならば、αu,iを出力して終了する。
【００９８】
・例外処理要求生成アルゴリズムＰ
入力：ネットワーク端末１２００ｖの正当なコミットメントｃｏｍv、ネットワーク端末１２００ｕのリストＬu。
出力：例外処理要求メッセージｅｒｅｑv,u。
処理：
（１）コミットメントｃｏｍvに含まれるψt(u,i)及びリストＬuを用い、ｉ＝１，・・・，ｎに対して、次の数５３式を計算する。
【数５３】
0003784055.tif 000054
（２）例外処理要求メッセージｅｒｅｑv,uを出力する。
【数５４】
0003784055.tif 000055
【００９９】
・例外処理アルゴリズムＴ
入力：例外処理要求メッセージｅｒｅｑv,u、ＴＴＰサーバ１２１０の秘密鍵ＫT。
出力：例外処理応答メッセージｅａｎｓv,uまたはエラーメッセージ。
処理：後述する所定の手続きに従い、ネットワーク端末１２１０u、１２１０v間での情報交換に障害（例外）が発生していることを確認する。確認できない場合はエラーメッセージを出力し、ネットワーク端末１２１０uに返送して処理を終了する。一方、確認できたならば、秘密鍵ＫTを用いた復号関数ＤyTを用い、ｉ,ｊ＝１，・・・，ｎに対して以下の処理を行う。
（１）次の数５５式を計算する
【数５５】
0003784055.tif 000056
（２）例外処理応答メッセージｅａｎｓv,uを出力する。
【数５６】
0003784055.tif 000057
【０１００】
・例外処理結果生成アルゴリズムＷ
入力：例外処理応答メッセージｅａｎｓv,u、ネットワーク端末１２００ｕの秘密鍵Ｋu。
出力： リストＬvとリストＬuとの共通部分~Ｌv,u（＝Ｌv∩Ｌu）。
処理：ｉ,ｊ＝１，・・・，ｎに対して以下の処理を行う。
（１）次の数５７式により、σt(u,v,i,j)を計算する。
【数５７】
0003784055.tif 000058
（２）σt(u,v,i,j)＝１ならば、αu,iを出力する。
【０１０１】
次に、ＴＴＰサーバ１２１０が、確かにネットワーク端末１２１０u、１２１０v間での情報交換に障害（例外）が発生していることを確認するための検証方法について説明する。
ＴＴＰサーバ１２１０は、例外処理アルゴリズムＴを実行する上で、ネットワーク端末１２１０u、１２１０v間での情報交換に障害（例外）が発生していることを確認しなければならない。マッチング結果出力部１２０４がエラーメッセージを出力する場合には、それを示す証明を併せて検証することで、ＴＴＰサーバ１２１０は例外の発生を確認できる。また、例えばネットワーク端末１２００ｕとネットワーク端末１２００ｖとのリストの共通部分の計算において、ネットワーク端末１２００ｕがネットワーク端末１２００ｖに対して応答メッセージを送信したにも関わらず、ネットワーク端末１２００ｖがネットワーク端末１２００ｕに対して応答メッセージを送らないことによる例外発生も考えられる。この場合には、エラーメッセージの出力がなくても例外の解決が必要になる。しかしながら、ＴＴＰサーバ１２１０にとって、次の２つのケースを区別することは非常に困難である。
・ネットワーク端末１２００ｖが本当に応答メッセージをネットワーク端末１２００ｕに対して送っていない。
・ネットワーク端末１２００ｕが、実際はネットワーク端末１２００ｖとのやり取りを行っていないにもかかわらず、例外発生を主張し、不正にネットワーク端末１２００ｖの持つリストとの共通部分を知ろうとしている。
【０１０２】
これらのケースの判定は、一般的には、期限付き取引証明書を暗号的・非暗号的手段を組み合わせて用いることにより実現できる。ここでいう「期限」とは、
（１）「期限」以前ならば、いずれかから取引中止証明書が提出されている状況下において、ＴＴＰサーバ１２１０は例外要求を受け付けない、
（２）「期限」以後ならば、いずれかから取引証明書が提出されれば、ＴＴＰサーバ１２１０は例外要求を受理し問題解決を行う、
というポリシー制約を付することを意味する。
図１６は、この期限付き取引証明書を用いた例外発生の検証方法を説明する図である。
図１６を参照すると、この検証方法の処理は次の手順で行われる。なお、図中の番号は、下記の手順の番号に対応している。
１．ネットワーク端末１２００ｕが、ネットワーク端末１２００ｖのコミットメントｃｏｍvの正当性を確認する。
２．ネットワーク端末１２００ｕが、ネットワーク端末１２００ｖに対して、期限付き取引証明書Ｃｅｒｔu,v(period)を送る。
３．ネットワーク端末１２００ｖが、次のいずれかの場合に、取引中止証明書Ｓｔｏｐv,uをＴＴＰサーバ１２１０へ送付する。
・期限付き取引証明書Ｃｅｒｔu,v(period)が不正な場合
・期限内に期限付き取引証明書Ｃｅｒｔv,u(period)を送れない場合
・ネットワーク端末１２００ｖのコミットメントｃｏｍvの正当性が確認されない場合
４．ネットワーク端末１２００ｖが、ネットワーク端末１２００ｕに対して、期限付き取引証明書Ｃｅｒｔv,u(period)を送る。
５．ネットワーク端末１２００ｕが、Ｃｅｒｔv,u(period)が不正な場合や、期限内にＣｅｒｔv,u(period)を受け取れない場合には、取引中止証明書取引中止証明書Ｓｔｏｐu,vをＴＴＰサーバ１２１０へ送付する。
６．ネットワーク端末１２００ｕが、期限後に応答ａｎｓu,vをネットワーク端末１２００ｖに送る。
７．ネットワーク端末１２００ｖが、期限後に応答ａｎｓv,uをネットワーク端末１２００ｕに送る。
８．ネットワーク端末１２００ｕがａｎｓv,uを受け取れない場合、ネットワーク端末１２００ｕは、Ｃｅｒｔv,u(period)を送信してＴＴＰサーバ１２１０に例外解決を依頼する。
９．ネットワーク端末１２００ｖがａｎｓu,vを受け取れない場合、ネットワーク端末１２００ｖはＣｅｒｔu,v(period) を送信してＴＴＰサーバ１２１０に例外解決を依頼する。
【０１０３】
以上のようにして、ＴＴＰサーバ１２１０は、ネットワーク端末１２１０u、１２１０vからの例外処理要求に対し、確かにネットワーク端末１２１０u、１２１０v間での情報交換に障害（例外）が発生していることを確認した上で、例外処理実行部１２１１による例外処理を実行することができる。
【０１０４】
ところで、本実施の形態において、ＴＴＰサーバ１２１０に対する信頼の仮定は最低限であり、各ネットワーク端末１２００のコミットメントにアクセスを許さなければ、例外処理時を含め、ＴＴＰサーバ１２１０がリストに関する情報を得ることはできない。だが、ＴＴＰサーバ１２１０が単独のネットワーク端末１２００で運用された場合、前述の例外発生の判定において不正な判定を下したり、コミットメントを不正に入手したりすることで、各ネットワーク端末１２００の持つ秘密に不正にアクセスする潜在的危険性は残る。そのような事態に対処するため、上述した第２の実施の形態における秘密分散のようにＴＴＰサーバ１２１０を複数に分割し、閾値アクセス構造（閾値以上のＴＴＰサーバ１２１０が協力することで初めて例外処理を行うことが可能な構造）をとることで、ＴＴＰサーバ１２１０に対する信頼性を飛躍的に向上することができる。
本実施の形態において、ＴＴＰサーバ１２１０の本質的機能は、
（１）例外発生の確認、
（２）ＥｌＧａｍａｌ暗号の秘密鍵の運用、
であり、これらの機能は、公知の従来技術を用いて容易に閾値アクセス構造で分散できることが知られている。したがって、本実施の形態におけるＴＴＰサーバ１２１０の安全な運用が容易に実現可能である。
【０１０５】
以上のようにして、本実施の形態によるシステムでは、複数のネットワーク端末１２１０が保持するリストの項目のマッチングを行うにあたって、次の要件を満足する。なお、以下の説明で、Ｃはコミットメント生成アルゴリズム、Ｖはコミットメント検証アルゴリズム、Ｍはマッチングアルゴリズム、Ｄは結果出力アルゴリズム、Ｐは例外処理要求生成アルゴリズム、Ｔは例外処理アルゴリズム、Ｗは例外処理結果生成アルゴリズムである。
１．コミットメントの秘匿性
公開情報であるコミットメントの値からリストに関する情報は得られない。すなわち、リストＬu、Ｌv、コミットメントｃｏｍu、ｃｏｍvに関して、Ｌu≠Ｌv、ｃｏｍu←Ｃ（Ｌu）、ｃｏｍv←Ｃ（Ｌv）である場合、ｃｏｍu、ｃｏｍvのいずれかを与えられて、ＬuとＬvのいずれに対応するかを１／２よりもよい確率で判定することはできない。
２．コミットメントの検証可能性
コミットメントｃｏｍuがコミットメント生成アルゴリズムＣにより生成されていること、及びコミットメントｃｏｍuを入力として例外処理を行うことで、共通部分を得ることが可能であることを検証できる。
３．応答メッセージの秘匿性
ネットワーク端末１２００ｕは、Ｖ（ｃｏｍu）＝１、ｏｐｅｎv←Ｃ（Ｌv）及びａｎｓv,u＝Ｍ（ｏｐｅｎv，ｃｏｍu）のとき、リストＬvに関して、共通部分が~Ｌv,uであること以外の情報は、応答メッセージａｎｓv,uからは一切得ることができない。
４．応答メッセージの検証可能性
応答メッセージから得られる共通部分が、相手のコミットメントに対応するリストとの共通部分であることを検証できる。すなわち、Ｖ（ｃｏｍv）＝１、ｏｐｅｎu←Ｃ（Ｌu）のとき、応答メッセージａｎｓv,uに対して、ｒｅｓu,v＝Ｄ（ａｎｓv,u，ｃｏｍv，Ｌu，Ｋu，ｏｐｅｎu）は、エラーメッセージでなければ、リストＬu、Ｌvの共通部分~Ｌv,uである。
５．調停機関による例外処理
Ｖ（ｃｏｍv）＝１を満たすコミットメントｃｏｍvに対し、ｅｒｅｑv,u＝Ｐ（ｃｏｍv，Ｌu）、ｅａｎｓv,u＝Ｔ（ｅｒｅｑv,u，ＫT）、ｅｒｅｓv,u＝Ｗ（ｅａｎｓv,u，Ｋu）とすると、ｅｒｅｓv,uは、リストＬu、Ｌvの共通部分~Ｌv,uとなる。ＴＴＰサーバ１２１０の秘密鍵ＫTを入力とするのは、例外処理アルゴリズムＴのみである（すなわち、ＴＴＰサーバ１２１０は例外処理のみ参加し、通常プロセスでは登場しない）。
６．効率性
ネットワーク端末１２００ｕからネットワーク端末１２００ｖへの通信回数はコミットメントフェーズで１回、通常プロセスで１回である。また、ＴＴＰサーバ１２１０は例外処理プロセスのみ参加し、通常プロセスでは登場しない。
【０１０６】
〔適用例〕
次に、上述したネットワークシステムを用いて具体的なサービスを提供する場合の適用例について説明する。
（１）マッチメーキングサービス
インターネット上で自分と同じ興味を持つ相手を探そうとする場合、従来は、ウェブページなどで自分の興味についての情報を公開して不特定人からの返答を待つ方法や、当該情報を仲介サーバに渡して仲介をしてもらう方法が一般的であった。
しかし、前者の方法では、自分のプライバシーに関する情報を公開しなければならなかった。また後者の方法では、プライバシーの保護を仲介サーバに任せなければならず、当該仲介サーバのセキュリティが破られた場合、参加者の情報が流出する危険があった。
【０１０７】
これに対して、上記第１の実施の形態によるネットワークシステムをそのまま利用することによって、安全性の高いマッチメーキングサービスを実現することができる。すなわち、図４に示したマッチメーキングサーバ４００を上記の仲介サーバとして用いれば、当該仲介サーバは個々の参加者の情報を知ることなく、各参加者の情報（リスト）における共通項目だけを計算することができる。また、仲介サーバは、共通項目をリストアップするのではなく、共通項目数だけを教えるというようなサービスを行うこともできる。
また、第２の実施の形態によるネットワークシステムをそのまま利用することによって、仲介サーバを設けることなく、参加者だけが互いのリストの共通項目だけを知ることができる安全性の高いシステムを実現することができる。
さらに、第３の実施の形態によるネットワークシステムを利用すれば、通常プロセスでは各参加者の間で情報交換を行うだけで、当該参加者の情報（リスト）の共通項目だけを知ることができ、安全かつ効率的な実用性の高いシステムを実現することができる。
【０１０８】
図１７は、このネットワークシステムによるマッチメーキングサービスを模式的に示した図である。同図を参照すると、「クラシック音楽」、「ドライブ」、「スキー」、「テニス」を興味の対象としてリストアップしている参加者Ａのリストと、「クラシック音楽」、「ダイビング」、「花」、「お茶」、「テニス」を興味の対象としてリストアップしている参加者Ｂのリストとがマッチメークされ、「クラシック音楽」と「テニス」とが共通項目として取得されている。したがって、参加者Ａ、Ｂは、この共通項目については互いに興味を持っていることがわかる。
さらに、このようなネットワークシステムをBluetoothなどの無線放送機能を持つ携帯電話のアプリケーションにて実装すれば、予め自分の趣味などを携帯電話に登録しておくことによって、同じような趣味を持つ（同じ項目をリストアップしている）人どうしが一定の距離に近づいたときに、お互いの持つ携帯電話が交信を開始する、というようなサービスが可能になる。
【０１０９】
さらにまた、上記のマッチメーキングサービスの変形として、探したい相手の情報を指定してリストマッチングを行う場合がある。この場合、各参加者は、自分の情報に関するリスト（以下、自分リスト）と、探したい相手の情報に関するリスト（以下、相手リスト）という２種類のリストを用意して、自分の持つ相手リストと他者の持つ自分リストとでリストマッチングを行う。同様に、他者の持つ相手リストと自分の持つ自分リストとでリストマッチングを行う。
この種の仲介サービスを行う場合、例えば、参加者Ａ、Ｂが、自分のプロファイルと、探したい相手のプロファイルの２種類のリストを用意し、（Ａの自分プロファイル）×（Ｂの相手プロファイル）と、（Ａの相手プロファイル）×（Ｂの自分プロファイル）というように２回のリスト共通部分計算をすることによって、参加者自身のプロファイルと各参加者が求める相手のプロファイルとにおける一致の度合いを計算し、当該参加者Ａ、Ｂの相性に関する情報として提供するサービスを行うこともできる。
あるいは、参加者Ａは、自分のプロファイル項目はそのまま根とし、相手のプロファイル項目には−１を掛けた負の根として１つのリストで表現し、参加者Ｂは、自分のプロファイル項目に−１をかけた負の根とし、相手のプロファイル項目はそのまま根とする操作を介入することにより、自分リストと相手リストとを１つのリストで表現することが可能となる。このリストを用いれば、１回のリスト共通部分計算で、上述した参加者Ａ、Ｂの相性に関する情報を計算できる。
【０１１０】
（２）リスト照会
銀行やクレジット会社などの金融機関は、顧客に対して融資を行うことにより利益を得ているため、顧客の信頼情報は極めて重要な経営情報である。とりわけ、支払延滞者のリストは、融資のリスクを計る上で重要である。一方、多くの顧客は複数の金融機関から多重に融資を受けている。そこで、与信審査等のために複数の金融機関で支払を滞らせている顧客のリスト（いわゆるブラックリスト）を比較したい場合がある。つまり、支払延滞の事実を金融機関同士で共有することで、顧客に対するより正確な与信情報を形成することが可能となる。
しかし、支払延滞者のリストは各金融機関の重要な企業秘密である。したがって、当該顧客のプライバシー及び当該金融機関の信用の観点から、延滞者のリスト自体は公開することなく、複数の金融機関で共通に延滞者として登録されている借り手のみを調査する必要がある。
このような場合、上記第１、第２、第３の実施の形態によるネットワークシステムを利用してリストの照会を行うことにより、リストの共通部分（調査対象である複数の金融機関のリストに共通して挙げられている顧客）の情報だけを抽出して、各金融機関の間で公平に交換させることが可能となる。
【０１１１】
（３）人材データバンクのデータ統合
人材データバンクは人の技術情報・希望職種などの情報（リスト）を企業秘密として保持しており、一方、採用側の企業は欲しい人材の技術情報・希望職種などをリストとして保持している。そこで、双方のリストの共通部分を抽出することにより、効果的な人材の提供、確保が実現される。しかし、各企業が獲得を希望している人材の情報は重要な企業戦略に関する情報を含んでいるため、各リストに関して共通部分以外の情報が相手方に知られることは好ましくない。
このような場合、上記第１、第２、第３の実施の形態によるネットワークシステムを利用してリストの照会を行うことにより、人材データ自体は秘匿したままで、需要側・供給側で共有する部分（情報）を抽出することが可能になる。
【０１１２】
（４）電子商取引市場における商品価格のマッチングデータベース
電子商取引市場においては、売り手と買い手との間の需給均衡をとることによって価格が形成される。この場合、売り手と買い手の双方が商品番号と希望価格をリストとしてもち、共通な部分を抽出することで、当該売り手と買い手との希望を満足する価格を形成することができる。一方、売り手にとって、商品をいくらで販売（購入）する意思を持っているかは重要な秘密情報である。したがって、希望価格のリストにおいて、売り手の希望価格と買い手の希望価格とが一致する部分の情報のみが抽出されることが好ましい。
このような場合、上記第１、第２、第３の実施の形態によるネットワークシステムを利用してリストの照会を行うことにより、売り手及び買い手は共に、自分が希望する商品および価格を秘匿したまま、どの商品価格が成立するかを調査することができる。
【０１１３】
【発明の効果】
以上説明したように、本発明によれば、情報交換における安全性を確保すると共に、実行効率が良く実用性の高いリストマッチングを実現することができる。また、本発明は、分散秘密計算を併用することにより、ピア・ツー・ピアでリストマッチングを行う場合においても、安全性の高い手法を提供することができる。
【図面の簡単な説明】
【図１】  本実施の形態にて用いられる特徴関数であるリストの要素項目を根とする多項式の例を示す図である。
【図２】  リストから特徴関数の多項式を構成する手順を説明するフローチャートである。
【図３】  多項式を復号してリストの共通項目を取得する手順を説明するフローチャートである。
【図４】  第１の実施の形態におけるネットワーク上のＴＴＰサーバでリストマッチングを行うシステムの全体構成を示す図である。
【図５】  図４に示したマッチメーキングサーバ及びクライアント端末の好適なシステム構成を示す図である。
【図６】  第２の実施の形態におけるピア・ツー・ピアでリストマッチングを行うシステムの全体構成を示す図であり、サーバに秘密分散による計算を依頼する様子を説明する図である。
【図７】  第２の実施の形態におけるピア・ツー・ピアでリストマッチングを行うシステムの全体構成を示す図であり、サーバによる計算結果に基づいてマッチングを行う様子を説明する図である。
【図８】  図６に示したネットワーク端末及びサーバの好適なシステム構成を示す図である。
【図９】  多項式Ｑi(ｘ，ｙ)＝ＦXi(ｘ)＋ＦYi(ｙ)を示す図である。
【図１０】  ２変数多項式Ｑi(ｘ，ｙ)の生成方法を説明するフローチャートである。
【図１１】  ｋ−１次多項式ＦXi(ｘ)の生成方法を説明するフローチャートである。
【図１２】  第３の実施形態におけるリストマッチングを行うシステムの全体構成を示す図である。
【図１３】  第３の実施の形態におけるネットワーク端末及びＴＴＰサーバの機能構成を示す図である。
【図１４】  ネットワーク端末及びＴＴＰサーバで実行されるアルゴリズム及び情報の流れを示す図である。
【図１５】  本実施の形態におけるリストマッチングのプロトコルを説明する図である。
【図１６】  期限付き取引証明書を用いた例外発生の検証方法を説明する図である。
【図１７】  本発明を用いたマッチメーキングサービスを模式的に示した図である。
【図１８】  本発明のシステムを構成するサーバ及び情報端末を実現するのに好適なコンピュータのハードウェア構成の例を模式的に示した図である。
【符号の説明】
１０１…ＣＰＵ（Central Processing Unit：中央処理装置）、１０３…メインメモリ、１０５…ハードディスク、１０６…ネットワークインターフェイス、４００…マッチメーキングサーバ、４１１、４１２〜４１ｍ…クライアント端末、５０１、５１１…アプリケーションソフトウェア、５０２、５１２…ネットワークプロトコル、５０３、５１３…ネットワークインターフェイス、６１１〜６１ｍ…ネットワーク端末、６２１〜６２ｋ…サーバ、８０１、８１１…アプリケーションソフトウェア、８０２、８１２…ネットワークプロトコル、８０３、８１３…ネットワークインターフェイス、１２００…ネットワーク端末、１２０１…コミットメント生成部、１２０２…コミットメント検証部、１２０３…マッチング部、１２０４…マッチング結果出力部、１２０５…例外処理要求部、１２０６…例外処理結果出力部、１２１０…ＴＴＰサーバ、１２１１…例外処理実行部
【図１】
0003784055.tif 000059
【図２】
0003784055.tif 000060
【図３】
0003784055.tif 000061
【図４】
0003784055.tif 000062
【図５】
0003784055.tif 000063
【図６】
0003784055.tif 000064
【図７】
0003784055.tif 000065
【図８】
0003784055.tif 000066
【図９】
0003784055.tif 000067
【図１０】
0003784055.tif 000068
【図１１】
0003784055.tif 000069
【図１２】
0003784055.tif 000070
【図１３】
0003784055.tif 000071
【図１４】
0003784055.tif 000072
【図１５】
0003784055.tif 000073
【図１６】
0003784055.tif 000074
【図１７】
0003784055.tif 000075
【図１８】
0003784055.tif 000076