(57)【要約】  データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、セキュアプライベートデータベースクエリは、サーバが、暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーをデータベースから受信することであって、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされる、受信することと、キーワードＡおよびＢの暗号化されたバージョンをクライアントから受信することと、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを取得することとを含む。クライアントおよびサーバは、クライアントを伴う秘匿関数計算（ＳＦＥ）に参加する。サーバは、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントは、ランダムなマスクパッドＰを含む入力を有する。秘匿関数計算は、ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することと、キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定することと、式が満たされているかどうかを判定するための式計算を適用することとを含む。
2015535956.tif 000002
【特許請求の範囲】
【請求項１】
データベースにおいて、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対して、クライアントによるセキュアプライベートデータベースクエリのために、サーバによって実行される方法であって、
暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーをデータベースから受信するステップであって、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされる、受信するステップと、
キーワードＡおよびＢの暗号化されたバージョンをクライアントから受信するステップと、
キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを取得するステップと、
秘匿関数計算（ＳＦＥ）にクライアントと共に参加するステップであって、サーバが、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する、参加するステップと
を含み、秘匿関数計算が、以下のステップ、すなわち、
ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去するステップと、
キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定するステップと、
式が満たされているかどうかを判定するための式計算を適用するステップと、
結果を生成するステップと
を含む、方法。
【請求項２】
ブルームフィルタツリーのブルームフィルタのそれぞれが、ランダムなマスクパッドＰによって、ブルームフィルタのノードインデックスに基づいて個別にマスクされる、請求項１に記載の方法。
【請求項３】
データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、クライアントによるセキュアプライベートデータベースクエリのための、有形のマシン可読および記録可能記憶媒体であって、１つまたは複数のソフトウェアプログラムが、１つまたは複数の処理デバイスによって実行されると、請求項１に記載の方法のステップを実施する、有形のマシン可読および記録可能記憶媒体。
【請求項４】
データベースにおいて、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対して、セキュアプライベートデータベースクエリのために、サーバと共に、クライアントによって実行される方法であって、
キーワードＡおよびＢの暗号化されたバージョンをサーバに提供するステップであって、サーバが、データベースを、データベース由来の、暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーとして表し、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされる、提供するステップと、
秘匿関数計算（ＳＦＥ）にサーバと共に参加するステップであって、サーバが、ブルームフィルタツリー由来の、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する、参加するステップと
を含み、秘匿関数計算が、以下のステップ、すなわち、
ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去するステップと、
キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定するステップと、
式が満たされているかどうかを判定するための式計算を適用するステップと、
結果を生成するステップと
を含む、方法。
【請求項５】
ブルームフィルタツリーのブルームフィルタのそれぞれが、ランダムなマスクパッドＰによって、ブルームフィルタのノードインデックスに基づいて個別にマスクされる、請求項４に記載の方法。
【請求項６】
データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、サーバと共に用いる、セキュアプライベートデータベースクエリのための、有形のマシン可読および記録可能記憶媒体であって、１つまたは複数のソフトウェアプログラムが、１つまたは複数の処理デバイスによって実行されると、請求項４に記載の方法のステップを実施する、有形のマシン可読および記録可能記憶媒体。
【請求項７】
データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、クライアントによるセキュアプライベートデータベースクエリのためのサーバシステムであって、
メモリと、
メモリに結合された少なくとも１つのハードウェアデバイスであって、
暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーをデータベースから受信し、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされ、
キーワードＡおよびＢの暗号化されたバージョンをクライアントから受信し、
キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを取得し、
秘匿関数計算（ＳＦＥ）にクライアントと共に参加し、サーバが、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する
ように動作するハードウェアデバイスと
を備え、秘匿関数計算が、以下のステップ、すなわち、
ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することと、
キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定することと、
式が満たされているかどうかを判定するための式計算を適用することと、
結果を生成することと
を含む、サーバシステム。
【請求項８】
ブルームフィルタツリーのブルームフィルタのそれぞれが、ランダムなマスクパッドＰによって、ブルームフィルタのノードインデックスに基づいて個別にマスクされる、請求項７に記載のサーバシステム。
【請求項９】
データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、クライアントによるセキュアプライベートデータベースクエリのためのクライアントシステムであって、
メモリと、
メモリに結合された少なくとも１つのハードウェアデバイスであって、
キーワードＡおよびＢの暗号化されたバージョンをサーバに提供し、サーバが、データベースを、データベース由来の、暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーとして表し、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされ、
秘匿関数計算（ＳＦＥ）にサーバと共に参加し、サーバが、ブルームフィルタツリー由来の、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する
ように動作するハードウェアデバイスと
を備え、秘匿関数計算が、以下のステップ、すなわち、
ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することと、
キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定することと、
式が満たされているかどうかを判定するための式計算を適用することと、
結果を生成することと
を含む、クライアントシステム。
【請求項１０】
ブルームフィルタツリーのブルームフィルタのそれぞれが、ランダムなマスクパッドＰによって、ブルームフィルタのノードインデックスに基づいて個別にマスクされる、請求項９に記載のクライアントシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
政府の権利の記述
本発明は、内務省（ＤＯＩ）の契約番号第Ｄ１１ＰＣ２０１９４号によるＩｎｔｅｌｌｉｇｅｎｃｅ  Ａｄｖａｎｃｅｄ  Ｒｅｓｅａｒｃｈ  Ｐｒｏｊｅｃｔｓ  Ａｃｔｉｖｉｔｙ（ＩＡＲＰＡ）の下で実行される作業に関連して実施されたものである。
【０００２】
本発明は、一般に、セキュアプライベートデータベースのための秘匿性保護技法に関する。
【背景技術】
【０００３】
様々なパーティが相互に関心のあるデータを有するとき、セキュア匿名データベース検索が利用されてきた。例えば、Ｍ．Ｒａｙｋｏｖａらによる「Ｓｅｃｕｒｅ  Ａｎｏｎｙｍｏｕｓ  Ｄａｔａｂａｓｅ  Ｓｅａｒｃｈ」、Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｗｏｒｋｓｈｏｐ（ＣＣＳＷ）、（２００９年１１月）およびＶ．Ｐａｐｐａｓらによる「Ｐｒｉｖａｔｅ  Ｓｅａｒｃｈ  ｉｎ  ｔｈｅ  Ｒｅａｌ  Ｗｏｒｌｄ」、Ｐｒｏｃ．  ２７ｔｈ  Ａｎｎｕａｌ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｃｏｎｆｅｒｅｎｃｅ（ＡＣＳＡＣ）、（２０１１年１２月）を参照されたい。一般に、セキュア匿名データベース検索技法は、クライアントが、サーバ上に存在する情報を、クライアントの識別情報またはサーバに対するクエリの内容を明らかにすることなく、検索できるようにする。同時に、クエリ機能は許可されたクライアントにのみ与えられており、またクライアントはクエリと無関係のことは何も知ることがないという点で、サーバは保護されている。
【０００４】
例示的な一実装形態では、サーバＳは、入力ごとに別個の鍵を用いてデータベースを暗号化し、また暗号化されたデータベースをインデックスサーバＩＳに提供する。さらに、サーバＳは、同様にインデックスサーバＩＳにも与えられる暗号化された検索構造を作成する。クライアントＣがデータベースにクエリを実行しようとするとき、クライアントＣは、クエリを暗号化し、それをインデックスサーバＩＳに送信し、そしてクエリは、インデックスサーバＩＳによって、暗号化された検索構造を使用して、見えない状態で実行される。
【０００５】
クエリおよび応答に関する情報の漏洩を削減するために、暗号化されたキーワードのブルームフィルタ（ＢＦ：Ｂｌｏｏｍ  Ｆｉｌｔｅｒ）が検索構造として使用されてきた。キーワードなどの異種混合の要素をブルームフィルタに挿入することができる。その後、ユーザは、ブルームフィルタのうちのいくつかのビットが１に設定されているかを検査することにより、特定の要素がブルームフィルタに挿入されたかどうかを検査することができる。
【０００６】
ブルームフィルタを利用するセキュア匿名データベース検索システムでは、インデックスサーバＩＳによって格納されるそれぞれの暗号化されたデータベース行は、関連する暗号化されたブルームフィルタを有する。（クライアントＣによって供給された）暗号化されたキーワードをブルームフィルタで検査することにより、インデックスサーバＩＳは、キーワードが、対応するデータベースレコードに関連付けられているかを判定し、また要求されたレコードを返すことができるようになる。キーワードが暗号化されているので、インデックスサーバＩＳは、クエリの内容を知ることがない。
【０００７】
Ｅｕ−Ｊｉｎ  Ｇｏｈ、「Ｓｅｃｕｒｅ  Ｉｎｄｅｘｅｓ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：Ｒｅｐｏｒｔ  ２００３／２１６（ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００３／２１６）は、ブルームフィルタのツリーの使用を提案することにより、こうしたセキュア匿名データベース検索システムの拡張性を改善する。一般に、二分木は、データベース行に対応するブルームフィルタの上に作成され、内部ノードは、部分木のブルームフィルタのいずれかに含まれるキーワードすべてを含むブルームフィルタである。データベースは、ブルームフィルタツリー（Ｂｌｏｏｍ  ｆｉｌｔｅｒ  ｔｒｅｅ）をくだることによって、一致しているデータベース行が識別されるため、より高速に検索できるようになった。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｍ．Ｒａｙｋｏｖａらによる「Ｓｅｃｕｒｅ  Ａｎｏｎｙｍｏｕｓ  Ｄａｔａｂａｓｅ  Ｓｅａｒｃｈ」、Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｗｏｒｋｓｈｏｐ（ＣＣＳＷ）、（２００９年１１月）
【非特許文献２】Ｖ．Ｐａｐｐａｓ、「Ｐｒｉｖａｔｅ  Ｓｅａｒｃｈ  ｉｎ  ｔｈｅ  Ｒｅａｌ  Ｗｏｒｌｄ」、Ｐｒｏｃ．  ２７ｔｈ  Ａｎｎｕａｌ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｃｏｎｆｅｒｅｎｃｅ（ＡＣＳＡＣ）、（２０１１年１２月）
【非特許文献３】Ｅｕ−Ｊｉｎ  Ｇｏｈ、「Ｓｅｃｕｒｅ  Ｉｎｄｅｘｅｓ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：Ｒｅｐｏｒｔ  ２００３／２１６（ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００３／２１６）
【非特許文献４】Ａｎｄｒｅｗ  Ｃ．Ｙａｏ、「Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔａｔｉｏｎｓ」、Ｐｒｏｃ．  ２３ｒｄ  ＩＥＥＥ  Ｓｙｍｐ．  ｏｎ  Ｆｏｕｎｄａｔｉｏｎｓ  ｏｆ  Ｃｏｍｐ．  Ｓｃｉｅｎｃｅ、１６０−１６４頁、（Ｃｈｉｃａｇｏ、１９８２）
【非特許文献５】Ａｎｄｒｅｗ  Ｃ．Ｙａｏ、「Ｈｏｗ  ｔｏ  Ｇｅｎｅｒａｔｅ  ａｎｄ  Ｅｘｃｈａｎｇｅ  Ｓｅｃｒｅｔｓ」、Ｐｒｏｃ．  ２７ｔｈ  ＩＥＥＥ  Ｓｙｍｐ．  ｏｎ  Ｆｏｕｎｄａｔｉｏｎｓ  ｏｆ  Ｃｏｍｐ．  Ｓｃｉｅｎｃｅ、１６２−１６７頁、（Ｔｏｒｏｎｔｏ、１９８６）
【非特許文献６】Ｙ．ＬｉｎｄｅｌｌおよびＢ．Ｐｉｎｋａｓ、「Ａ  Ｐｒｏｏｆ  ｏｆ  Ｙａｏ’ｓ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｔｗｏ−Ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ」、Ｊｏｕｒｎａｌ  ｏｆ  Ｃｒｙｐｔｏｌｏｇｙ、２２（２）、１６１−１８８頁、（２００９）
【非特許文献７】Ｄ．Ｈａｒｎｉｋらによる「ＯＴ−Ｃｏｍｂｉｎｅｒｓ  ｖｉａ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔａｔｉｏｎ」、ＴＣＣ  ５ｔｈ  Ｔｈｅｏｒｙ  ｏｆ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｃｏｎｆｅｒｅｎｃｅ  ２００８、（２００８年３月）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．４９４８、３９３−４１１頁、（２００８）
【非特許文献８】Ｙ．Ｉｓｈａｉらによる「Ｅｘｔｅｎｄｉｎｇ  Ｏｂｌｉｖｉｏｕｓ  Ｔｒａｎｓｆｅｒｓ  Ｅｆｆｉｃｉｅｎｔｌｙ」、Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  −  ＣＲＹＰＴＯ  ２００３、（２００３年８月）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．２７２９、１４５−１６１頁、（２００３）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
セキュア匿名データベース検索システムには、単なるキーワード検索よりもより複雑なクエリを処理することができる必要が残っている。具体的には、セキュア匿名データベース検索システムには、式、範囲クエリ、否定、および近似などの式計算を要求するクエリを処理することができる必要が残っている。セキュア匿名データベース検索システムには、式の各用語にブルームフィルタが一致しているかどうかを明らかにすることなく、式計算を要求するクエリを処理することができるさらに別の必要も残っている。
【課題を解決するための手段】
【００１０】
一般に、コンテンツ隠蔽ブルームフィルタを用いたセキュアプライベートデータベースクエリのための方法および装置が提供される。本発明の一態様によれば、サーバは、暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーをデータベースから受信することであって、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされる、受信することと、キーワードＡおよびＢの暗号化されたバージョンをクライアントから受信することと、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを取得することと、秘匿関数計算（ＳＦＥ：Ｓｅｃｕｒｅ  Ｆｕｎｃｔｉｏｎ  Ｅｖａｌｕａｔｉｏｎ）にクライアントと共に参加することであって、サーバが、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する、参加することにより、データベースにおける、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対する、クライアントによるセキュアプライベートデータベースクエリを提供し、秘匿関数計算が、以下のステップ、すなわち、ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することと、キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定することと、式が満たされているかどうかを判定するための式計算を適用することと、結果を生成することとを含む。
【００１１】
本発明の別の態様によれば、クライアントは、キーワードＡおよびＢの暗号化されたバージョンをサーバに提供することであって、サーバが、データベースを、データベース由来の、暗号化されたキーワードの暗号化されたブルームフィルタからなるブルームフィルタツリーとして表し、ブルームフィルタツリーの各ブルームフィルタが、ランダムなマスクパッドＰによって個別にマスクされる、提供することと、秘匿関数計算（ＳＦＥ）にサーバと共に参加することであって、サーバが、ブルームフィルタツリー由来の、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを含む入力を有し、クライアントが、ランダムなマスクパッドＰを含む入力を有する、参加することとにより、データベースにおいて、少なくとも２つのキーワードＡおよびＢについての式計算を有するクエリに対して、サーバと共に、セキュアプライベートデータベースクエリを実行し、秘匿関数計算が、以下のステップ、すなわち、ランダムなマスクパッドＰを、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することと、キーワードＡおよびＢのそれぞれに対して、一致しているブルームフィルタがあるかどうかを判定することと、式が満たされているかどうかを判定するための式計算を適用することと、結果を生成することとを含む。
【００１２】
ブルームフィルタツリーのブルームフィルタは、ランダムなマスクパッドＰによって、例えば、ブルームフィルタのノードインデックスに基づいて、個別にマスクすることができる。ランダムなマスクパッドＰは、ＸＯＲ関数を使用して、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することができる。例えば、ランダムなマスクパッドＰは、ＸＯＲ関数を、キーワードＡおよびＢ向けのマスクされたインデックスならびにキーワードＡおよびＢ向けの別個のインデックスに適用することにより、サーバによって入力されたマスクされたブルームフィルタインデックスから除去することができる。
【００１３】
以下の詳細な説明および図面を参照することにより、本発明、ならびに本発明のさらなる特徴および利点がより完全に理解されよう。
【図面の簡単な説明】
【００１４】
【図１】本発明のプロセスを実装することができる、改良された汎用的な２パーティＳＦＥシステムのブロック図である。
【図２】例示的なブルームフィルタを示す図である。
【図３】例示的なセキュア匿名データベース検索システムを示す図である。
【図４】本発明の態様を組み込んでいるセキュアプライベートデータベースクエリプロセスの例示的な実装形態のための疑似コードを示す図である。
【発明を実施するための形態】
【００１５】
本発明の態様は、式、範囲クエリ、否定、および近似などの式計算を要求するクエリを処理できる、セキュア匿名データベース検索の方法およびシステムを提供する。本発明の一態様によれば、開示される、セキュア匿名データベース検索の方法およびシステムは、式の各用語にブルームフィルタが一致しているかどうかを明らかにすることなく、式計算を要求するクエリを処理することができる。
【００１６】
暗号化されたキーワードおよびブルームフィルタツリーを含む上述のブルームフィルタ技法は、秘匿関数計算（ＳＦＥ）を利用するセキュア匿名データベース検索システムにおいて構成要素として使用される。ブルームフィルタはさらに、（サーバＳによって生成されてクライアントＣに提供される）ワンタイムマスクパッドで暗号化される。クライアントＣとインデックスサーバＩＳとの間の秘匿関数計算（ＳＦＥ）は、インデックスサーバＩＳがブルームフィルタが一致していることを知ることがないよう、効率的にブルームフィルタを復号化して（すなわち、ワンタイムマスクパッドを取り去って）クエリ式を評価するために使用される。
【００１７】
図１は、改良されたセキュアプライベートデータベースクエリシステム１００のブロック図である。図１に示すように、メモリ１３０は、本明細書で開示された、セキュアプライベートデータベースクエリの改良された方法、ステップ、および機能（集合的に、図１の１５０として示され、また図２から図４と共にさらに後述される）を実装するために、プロセッサ１２０を構成する。メモリ１３０は、分散させたり、ローカルなものとすることができ、またプロセッサ１２０は、分散させたり、単一のものとすることができる。メモリ１３０は、電気的、磁気的、もしくは光学的メモリとして、またはそれらの種類のもしくは他の種類の記憶デバイスの任意の組合せとして実装することができる。プロセッサ１２０を構成する各分散プロセッサは、一般に、独自のアドレス可能メモリ空間を含むことに留意されたい。コンピュータシステム１００の一部またはすべては、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピューティングデバイス、特定用途向け回路、または汎用集積回路内に組み込むことができることにも留意されたい。
【００１８】
ブルームフィルタ
図２は、集合｛ｘ，ｙ，ｚ｝を表している、例示的なブルームフィルタ２００を示す。一般に、ブルームフィルタは、空間効率の良い確率的データ構造であり、要素が集合のメンバーであるかどうかのテストに使用することができる。空のブルームフィルタ２００は、すべて０に設定されたｍビットのビット配列である。また、同時にｋ個の異なるハッシュ関数が定義されなければならず、それぞれが、一様ランダム分布を使用して、ある集合要素をｍ個の配列位置の１つにマッピングまたはハッシュする。要素をブルームフィルタ２００に追加するには、それをｋ個のハッシュ関数のそれぞれに適用してｋ個の配列位置を得る。そして、それらｋ個の位置のビットがすべて１に設定される。
【００１９】
ブルームフィルタ２００で、ある要素に関してクエリを実行する（すなわち、その要素が集合に含まれるかどうかをテストする）には、その要素をｋ個のハッシュ関数に適用してｋ個の配列位置を得る。これらの位置のビットのいずれかが０である場合、その要素は集合に含まれていない（含まれていたならば、すべてのビットは、挿入時に１に設定されていたであろう）。これらの位置のすべてのビットが１である場合、その要素は集合に含まれている（または、場合によっては、他の要素を挿入している間にビットが偶然１に設定され、偽陽性になった）。
【００２０】
図２の矢印２１０は、各集合要素｛ｘ，ｙ，ｚ｝がマッピングされている、ブルームフィルタ２００のビット配列における位置を示している。要素ｗはブルームフィルタ２００において少なくとも１つの、０を含むビット配列位置のハッシュ値をもっているので、ｗは集合｛ｘ，ｙ，ｚ｝に含まれない。図２の例示的な実施形態では、ｍ＝１８およびｋ＝３である。
【００２１】
セキュアプライベートデータベースクエリ
図３は、例示的なセキュア匿名データベース検索システム３００を示す。１つまたは複数のキーワードをもつクライアントＣは、キーワードをもつデータベース所有者／サーバＳの文書を、それ以上何かを知ることや自身のクエリを明らかにすることなく、識別することができる。例示的なシステム３００は、検索を円滑化する、中程度の信頼性の２つのパーティである、インデックスサーバＩＳと任意選択のクエリルータＱＲを備えている。一般に、前処理段階３１０の間、サーバＳは、データベースの検索構造を計算する。文書ごとのブルームフィルタは文書のすべての単語を暗号化することで作られ、文書ブルームフィルタ３３０はインデックスサーバＩＳに提供される。さらに、それぞれの許可されたクライアントＣは、クエリの送信およびその結果を復号化するのに使用される鍵を受信する。クエリルータＱＲは、そのクライアントのクエリに対応した変換鍵を受信する。
【００２２】
検索段階３５０の間にクエリを送信するために、クライアントＣは、自身のクエリの暗号化を行い、暗号化されたイオンクエリ３７５をクエリルータＱＲに送信する。クエリルータＱＲは、クライアントＣが許可されていることを検証し、クエリを対応する変換鍵で再暗号化し、暗号化で取得されたＢＦインデックス３８０を計算し、インデックスサーバＩＳに送信する。インデックスサーバＩＳは、格納しているブルームフィルタにわたって検索を実行し、一致している文書の識別子を暗号化し、それを暗号化された結果３８５としてクエリルータＱＲに送信する。クエリルータＱＲは、暗号化結果を変換し、それを再暗号化された結果３９０としてクライアントＣに配信する。クライアントＣは、再暗号化された結果３９０を復号化して自身の検索結果を取得する。
【００２３】
例示的なセキュア匿名データベース検索システム３００のより詳細な説明は、例えば、それぞれが引用により組み込まれている、Ｍ．Ｒａｙｋｏｖａらによる「Ｓｅｃｕｒｅ  Ａｎｏｎｙｍｏｕｓ  Ｄａｔａｂａｓｅ  Ｓｅａｒｃｈ」、Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｗｏｒｋｓｈｏｐ（ＣＣＳＷ）、（２００９年１１月）およびＶ．Ｐａｐｐａｓ、「Ｐｒｉｖａｔｅ  Ｓｅａｒｃｈ  ｉｎ  ｔｈｅ  Ｒｅａｌ  Ｗｏｒｌｄ」、Ｐｒｏｃ．  ２７ｔｈ  Ａｎｎｕａｌ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｃｏｎｆｅｒｅｎｃｅ（ＡＣＳＡＣ）、（２０１１年１２月）を参照されたい。
【００２４】
ＳＦＥを使用したセキュア匿名データベース検索
前述したように、暗号化されたキーワードおよびブルームフィルタツリーを含む上述のブルームフィルタ技法は、秘匿関数計算（ＳＦＥ）を利用するセキュア匿名データベース検索システムにおいて構成要素として使用される。ブルームフィルタはさらに、（サーバＳによって生成されてクライアントＣに提供される）ワンタイムマスクパッドで暗号化される。クライアントＣとインデックスサーバＩＳとの間の秘匿関数計算（ＳＦＥ）は、インデックスサーバＩＳがブルームフィルタが一致していることを知ることがないよう、効率的にブルームフィルタを復号化して（すなわち、ワンタイムマスクパッドを取り去って）クエリ式を評価するために使用される。
【００２５】
一般的な２パーティ秘匿関数計算（ＳＦＥ）は、２つのパーティが、ｘとｙの両方の秘匿性を維持しつつ、任意の関数をそれぞれの入力ｘおよび入力ｙで評価できるようにする。効率的なＳＦＥアルゴリズムは、参加者の相互不信によって以前は不可能であった様々な電子トランザクションを可能にする。例えば、ＳＦＥアルゴリズムは、オークション、契約時の署名、および分散データベースマイニングアプリケーションにおいて利用されている。セキュアな計算の問題は、半誠実な（ｓｅｍｉ−ｈｏｎｅｓｔ）関係者と悪意のある関係者の両方に対して解決されている。一般に、半誠実なサーバにアクセスすることで、悪意のある回路生成の問題を解決する。計算および通信のリソースが増加してきたので、ＳＦＥは、一般的な利用にとってまさに実用的なものとなった。悪意のあるＳＦＥモデルは、関係者の入力の完全な秘匿性を保証する。既存の汎用的な２パーティＳＦＥアルゴリズムは通常、ガーブル回路（ＧＣ：Ｇａｒｂｌｅｄ  Ｃｉｒｃｕｉｔ）を利用する。ＧＣの詳細な説明は、例えば、Ａｎｄｒｅｗ  Ｃ．Ｙａｏ、「Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔａｔｉｏｎｓ」、Ｐｒｏｃ．  ２３ｒｄ  ＩＥＥＥ  Ｓｙｍｐ．  ｏｎ  Ｆｏｕｎｄａｔｉｏｎｓ  ｏｆ  Ｃｏｍｐ．  Ｓｃｉｅｎｃｅ、１６０−１６４頁、（Ｃｈｉｃａｇｏ、１９８２）、Ａｎｄｒｅｗ  Ｃ．Ｙａｏ、「Ｈｏｗ  ｔｏ  Ｇｅｎｅｒａｔｅ  ａｎｄ  Ｅｘｃｈａｎｇｅ  Ｓｅｃｒｅｔｓ」、Ｐｒｏｃ．  ２７ｔｈ  ＩＥＥＥ  Ｓｙｍｐ．  ｏｎ  Ｆｏｕｎｄａｔｉｏｎｓ  ｏｆ  Ｃｏｍｐ．  Ｓｃｉｅｎｃｅ、１６２−１６７頁、（Ｔｏｒｏｎｔｏ、１９８６）、ならびに／またはＹ．ＬｉｎｄｅｌｌおよびＢ．Ｐｉｎｋａｓ、「Ａ  Ｐｒｏｏｆ  ｏｆ  Ｙａｏ’ｓ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｔｗｏ−Ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ」、Ｊｏｕｒｎａｌ  ｏｆ  Ｃｒｙｐｔｏｌｏｇｙ、２２（２）、１６１−１８８頁、（２００９）を参照されたい。
【００２６】
ガーブル回路の実装下では、計算関数を表すブール回路は、第１のパーティによって暗号化され、第２のパーティに評価のために与えられる。評価は暗号化の下で進むので、第２のパーティはプロトコルから逸脱することはできない。ＧＣは、悪意のある回路評価器および半誠実な回路構成器に対してセキュアであり、したがって半誠実なサーバＳは、（両方のクライアントによってＳに伝えられているような）選ばれた関数のためにガーブル回路を生成する。入力に関しては、ＯＴ拡張機能が、悪意のある受信器および半誠実なサーバに関してセキュアであるために使用され得る。例えば、Ｄ．Ｈａｒｎｉｋらによる「ＯＴ−Ｃｏｍｂｉｎｅｒｓ  ｖｉａ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔａｔｉｏｎ」、ＴＣＣ  ５ｔｈ  Ｔｈｅｏｒｙ  ｏｆ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｃｏｎｆｅｒｅｎｃｅ  ２００８、（２００８年３月）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．４９４８、３９３−４１１頁、（２００８）および／またはＹ．Ｉｓｈａｉらによる「Ｅｘｔｅｎｄｉｎｇ  Ｏｂｌｉｖｉｏｕｓ  Ｔｒａｎｓｆｅｒｓ  Ｅｆｆｉｃｉｅｎｔｌｙ」、Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  −  ＣＲＹＰＴＯ  ２００３、（２００３年８月）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．２７２９、１４５−１６１頁、（２００３）を参照されたい。
【００２７】
図４は、本発明の態様を組み込んでいるセキュアプライベートデータベースクエリプロセス４００の例示的な実装形態のための疑似コードを示す。図４に示すように、ステップ４１０の間、サーバＳは、最初に、暗号化されたブルームフィルタおよび暗号化されたブルームフィルタツリーを生成する。ステップ４２０の間、サーバＳは、ランダムなシードｓを選択し、ランダムなマスクパッドＰを生成する。
【００２８】
ステップ４３０の間、サーバＳは、ランダムなマスクパッドＰをクライアントＣに送信する。ステップ４４０の間、サーバＳは、ランダムなマスクパッドＰを、ブルームフィルタツリーの各ブルームフィルタに個別に適用する。異なるパッドＰは、各ブルームフィルタに、例えば、ブルームフィルタのノードインデックスに基づいて、適用され得る。ステップ４５０の間、サーバＳは、次いで、各ノードがランダムなパッドＰでマスクされたブルームフィルタツリーをインデックスサーバＩＳに送信する。
【００２９】
ステップ４６０の間、クライアントＣは、少なくとも２つの用語ＡおよびＢについての式計算を有するクエリを生成する（「ｒｅｔｕｒｎ  ｉｆ  ｋｅｙｗｄＡ  ＯＲ  ｋｅｙｗｄＢ」など）。ステップ４７０の間、クライアントＣは、キーワードＡおよびＢを暗号化し、暗号化されたクエリをインデックスサーバＩＳに送信する。
【００３０】
ステップ４８０の間、インデックスサーバＩＳは、ブルームフィルタにおいて、対応するビット位置を検索し、キーワードＡおよびＢ向けのマスクされたブルームフィルタインデックスを取得する。インデックスサーバＩＳは、ブルームフィルタがランダムなパッドＰでマスクされているので、２つの用語のいずれかへの一致があるかどうかに関して判定することができない。
【００３１】
ステップ４９０の間、インデックスサーバＩＳおよびクライアントＣは、以下のプライベートな入力を用いて、秘匿関数計算（ＳＦＥ）に携わる：
インデックスサーバＩＳ：ＡおよびＢ向けのマスクされたブルームフィルタインデックス、ならびに
クライアントＣ：ＡおよびＢ向けの暗号化されたブルームフィルタインデックスをオフセットするためのマスクパッドＰ
ステップ４９５の間、クライアントＣおよびインデックスサーバＩＳによるＳＦＥは、以下のように進む：
ｉ．マスクＰは、ＸＯＲ関数を使用して、インデックスサーバＩＳの入力から以下のように除去される：
（ＡおよびＢ向けのマスクされたインデックス）ＸＯＲ（Ｐ）＝キーワードＡおよびＢ向けの別個のインデックス
ｉｉ．各キーワードに対して、一致しているブルームフィルタがあるかどうかを判定する
ｉｉｉ．式が満たされているかどうかを判定するためのクエリ式を適用する、および
ｉｖ．結果を出力する
【００３２】
このように、式の各用語にブルームフィルタが一致しているかどうかを明らかにすることなく、式計算を要求するクエリを処理することができる、セキュア匿名データベース検索システムが提供される。
【００３３】
ステップ４９６の間、クライアントＣおよびインデックスサーバＩＳは、ＢＦツリーをたどるのに必要なステップ４８０−４９５を繰り返す。
【００３４】
システムおよび製品の詳細
図４は例示的なステップシーケンスを示しているが、本発明の一実施形態では、シーケンスが変更されてもよい。アルゴリズムの様々な置換えが本発明の代替の実施形態として考えられる。
【００３５】
本発明の例示的な実施形態がソフトウェアプログラムの処理ステップに関連して説明されてきたが、当業者には明らかであろうように、様々な機能が、ソフトウェアプログラムの処理ステップとして、回路素子もしくは状態機械によるハードウェアの処理ステップとして、またはソフトウェアとハードウェアの両方の組合せの処理ステップとして、デジタル領域に実装されてもよい。こうしたソフトウェアは、例えば、デジタル信号プロセッサ、特定用途向け集積回路、マイクロコントローラ、または汎用コンピュータにおいて利用されてもよい。こうしたハードウェアおよびソフトウェアは、集積回路内に実装された回路内に具体化されてもよい。
【００３６】
したがって、本発明の機能は、方法、およびそれらの方法を実施するための装置の形で具体化することができる。本発明の１つまたは複数の態様は、例えば、記憶媒体に格納されようが、マシンにロードされ、また／もしくはマシンによって実行されようが、または何らかの伝送媒体上を伝送されようが、プログラムコードの形で具体化されることができ、プログラムコードがコンピュータなどのマシンにロードされ、マシンによって実行されると、マシンは本発明を実施するための装置になる。汎用プロセッサに実装されると、プログラムコードセグメントは、プロセッサと共に機能して、特定の論理回路と同様に動作するデバイスを提供する。本発明はまた、集積回路、デジタル信号プロセッサ、マイクロプロセッサ、およびマイクロコントローラのうちの１つまたは複数に実装することもできる。
【００３７】
当技術分野で知られているように、本明細書で説明される方法および装置は、それ自体が、コンピュータ可読コード手段をその上で具体化するコンピュータ可読媒体を備える製品として供給されてもよい。コンピュータ可読プログラムコード手段はコンピュータシステムと共に、本明細書で説明される、方法の実行もしくは装置の作成を行うステップのすべてまたは一部を実行することができる。コンピュータ可読媒体は、記録可能媒体（例えば、フロッピー（登録商標）ディスク、ハードドライブ、コンパクトディスク、メモリカード、半導体デバイス、チップ、特定用途向け集積回路（ＡＳＩＣ））であってもよく、また伝送媒体（例えば、光ファイバで構成されるネットワーク、ワールドワイドウェブ、ケーブル、または時分割多元接続、符号分割多元接続、もしくは他の無線周波数チャネルを使用する無線チャネル）であってもよい。コンピュータシステムで使用するのに適した情報を格納できる、知られている、または開発された任意の媒体を使用することができる。コンピュータ可読コード手段は、コンピュータが、磁気媒体の磁気的な変形形態やコンパクトディスクの表面の高さの変形形態などの、命令およびデータを読むことができるようにするための任意のメカニズムである。
【００３８】
本明細書で説明されるコンピュータシステムおよびサーバは、それぞれ、本明細書で開示される方法、ステップ、および機能を実装するように、関連するプロセッサを構成することになるメモリを備える。メモリは、分散させたり、ローカルなものとすることができ、またプロセッサは、分散させたり、単一のものとすることができる。メモリは、電気的、磁気的、もしくは光学的メモリとして、またはそれらの種類のもしくは他の種類の記憶デバイスの任意の組合せとして実装することができる。さらに、「メモリ」という用語は、関連するプロセッサによってアクセスされるアドレス可能空間のアドレスとの間で読取りまたは書込みを実施することができる任意の情報を含むのに十分なほど、広く解釈されるべきである。この定義の場合、ネットワーク上の情報は、関連するプロセッサがネットワークから情報を検索できるため、やはりメモリ内に含まれている。
【００３９】
本明細書で図示され、説明される、実施形態および変形形態は、本発明の原理を単に例示したものであり、また様々な修正形態は、当業者によって、本発明の範囲および趣旨から逸脱することなく、実装され得ることを理解されたい。
【図１】
2015535956.tif 000003
【図２】
2015535956.tif 000004
【図３】
2015535956.tif 000005
【図４】
2015535956.tif 000006
【国際調査報告】
2015535956.tif 000007
2015535956.tif 000008
2015535956.tif 000009