(57)【特許請求の範囲】
【請求項１】
ネットワークにおける方法であって、
メモリとプロセッサとを有するクライアントにおいて、メモリとプロセッサとを含むプロキシに第１の要求を送信するステップと、
前記クライアントにおいて、前記プロキシから第１の応答を受け取るステップと、
前記クライアントにおいて、前記プロキシに第２の要求を送信するステップと、
前記第２の要求に応答して、前記プロキシから前記クライアントに暗号化された計算関数を送信するステップと、
前記クライアントにおいて、前記暗号化された計算関数を解読するステップと、
を含み、
前記方法は、前記暗号化された計算関数を前記クライアントに送信する前記ステップの前に、
前記クライアントにおいて、前記プロキシに暗号化されたクライアント値を送信するステップと、
前記プロキシにおいて、前記プロキシと通信するデータベースから、前記ネットワーク内のコンポーネントに基づくコンポーネント値を検索するステップと、
前記プロキシにおいて、前記暗号化されたクライアント値及び前記検索されたコンポーネント値に基づいて前記暗号化された計算関数を決定するステップと、
をさらに含むことを特徴とする方法。
【請求項２】
前記第１の要求は、前記プロキシと通信するデータベースのインデックス付けを要求することを含む、
請求項１に記載の方法。
【請求項３】
前記データベースのインデックス付けは、前記プロキシ内の暗号ブルームフィルタにおいて行われる、
請求項２に記載の方法。
【請求項４】
前記第１の要求は、
前記プロキシにおいて、前記データベース内のデータセットに基づいて最適な暗号ブルームフィルタを生成することと、
前記プロキシにおいて、前記データベース内のデータセット変更に基づいて前記暗号ブルームフィルタ内のデータ要素を更新することと、
をさらに含み、前記暗号ブルームフィルタを更新することは、前記ブルームフィルタ内のデータ要素を削除すること、及び前記ブルームフィルタにデータ要素を挿入することの一方を含む、
請求項３に記載の方法。
【請求項５】
前記第１の要求は、
前記データベースにおいて、該データベース内のデータセットに基づいて最適な暗号ブルームフィルタを生成することと、
前記データベースにおいて、該データベース内のデータセット変更に基づいて暗号ブルームフィルタのデータ要素を計算することと、
前記計算された暗号ブルームフィルタのデータ要素を前記プロキシに送信することと、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記第２の要求は、前記プロキシによる関数の計算を要求することを含む、
請求項１に記載の方法。
【請求項７】
前記関数の計算は、前記プロキシによって準同型暗号を用いて行われる、
請求項６に記載の方法。
【請求項８】
前記データベースから検索される前記コンポーネント値は、距離、時間、位置及びテキストデータ文字列のうちの１つである、
請求項１に記載の方法。
【請求項９】
メモリとプロセッサとを含むネットワークコンポーネントと、
前記ネットワークコンポーネントと通信する、メモリとプロセッサとを含むクライアントと、
前記クライアントと通信するプロキシと、
前記プロキシと通信するデータベースと、
を備えたシステムであって、
前記クライアントにおいて前記プロキシに第１の要求を送信し、
前記クライアントにおいて前記プロキシから第１の応答を受け取り、
前記クライアントにおいて前記プロキシに第２の要求を送信し、
前記プロキシから前記クライアントに暗号化された計算関数を送信し、
前記クライアントにおいて前記暗号化された計算関数を解読する、
ように構成され、前記システムは、前記暗号化された計算関数を前記クライアントに送信する前に、
前記クライアントにおいて、前記プロキシに暗号化されたクライアント値を送信し、
前記プロキシにおいて、前記プロキシと通信するデータベースから、前記ネットワーク内のコンポーネントに基づくコンポーネント値を検索し、
前記プロキシにおいて、前記暗号化されたクライアント値及び前記検索されたコンポーネント値に基づいて前記暗号化された計算関数を決定する、
ように構成される、
ことを特徴とするシステム。
【請求項１０】
前記ネットワークコンポーネントは、基地局である、
請求項９に記載のシステム。
【請求項１１】
前記クライアントは、前記プロキシのみと通信する、
請求項９に記載のシステム。
【請求項１２】
前記プロキシは、前記プロキシと前記データベースの両方と通信する、請求項９に記載のシステム。
【請求項１３】
メモリとプロセッサとを有するクライアントにおいて、メモリとプロセッサとを含むプロキシに第１の要求を送信するステップと、
前記クライアントにおいて、前記プロキシから第１の応答を受け取るステップと、
前記クライアントにおいて、前記プロキシに暗号化されたクライアント値を送信するステップと、
前記プロキシにおいて、前記プロキシと通信するデータベースから前記ネットワーク内のコンポーネントに基づくコンポーネント値を検索するステップと、
前記プロキシにおいて、前記暗号化されたクライアント値及び前記検索されたコンポーネント値に基づいて暗号化された計算関数を決定するステップと、
前記クライアントにおいて、前記プロキシに第２の要求を送信するステップと、
前記第２の要求に応答して、前記プロキシから前記クライアントに暗号化された計算関数を送信するステップと、
前記クライアントにおいて、前記暗号化された計算関数を解読するステップと、
を含むことを特徴とする方法。
【請求項１４】
前記プロキシに暗号化されたクライアント値を送信する前記ステップは、前記プロキシにクライアントロケーション値を送信するステップを含み、
前記データベースからコンポーネント値を検索する前記ステップは、前記ネットワークコンポーネントに基づいて、前記クライアントに対する前記ネットワークコンポーネントの近接性を含む近接値を検索するステップを含む、
請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にデータベースクエリの分野に関し、具体的には、（歪曲回路（ｇａｒｂｌｅｄ  ｃｉｒｃｕｉｔｓ）を含む様々な形態の）準同型暗号、（暗号法、多次元法及びこれらの組み合わせを含む様々な形態の）ブルームフィルタ及び個人情報検索を利用するデータベースクエリのための方法及びシステムに関する。
【背景技術】
【０００２】
ここ数年、電気通信ネットワーク及びその他の情報システムの開発では、プライバシーがますます大きな技術的懸念になってきている。特に、電気通信ネットワークなどの知的システムの設計では、２人の当事者が値（すなわち一時的な値を含む入力値、出力値及び中間値）を公表されないようにして関数の通信及び計算を行うシナリオであるセキュアな二者間通信（「ＳＴＣ」）が検討すべき重要な要素になってきている。
【０００３】
既存のデータベースには、例えばＣｒｙｐｔＤＢ、ＴｒｕｓｔｅｄＤＢ（実装商標）及びＣｉｐｈｅｒｂａｓｅ（実装商標）を含む、ＳＴＣ及びＰＩＲ（個人情報検索）をサポートしているものがいくつか存在する。ＭＩＴ（実装商標）によって開発されたＣｒｙｐｔＤＢ（実装商標）は、信頼できないサーバに記憶される暗号化されたデータベースと、信頼できるプロキシと、クライアントのコンピュータを介して利用できるアプリケーションとを含む。ＣｒｙｐｔＤＢ（実装商標）の目的は、信頼できないサーバにデータ内容を明かさずにＳＱＬクエリ（すなわち、ｕｐｄａｔｅ（更新）、ｓｅｌｅｃｔ（選択）、ｊｏｉｎ（連結）、ｓｅａｒｃｈ（検索））を実行することである。ＣｒｙｐｔＤＢ（実装商標）では、プロキシがクライアントとサーバとの間の変換器の役割を果たす。
【０００４】
ＴｒｕｓｔｅｄＤＢ（実装商標）は、信頼できるハードウェアを使用することによってプライバシー保護ＳＱＬデータベースを提供する。しかしながら、場合によっては、信頼できるハードウェアの使用は高価であり、性能が制限されることもある。Ｃｉｐｈｅｒｂａｓｅ（実装商標）は、ＴｒｕｓｔｅｄＤＢ（実装商標）に類似するが、信頼できるハードウェアを単独で使用する代わりに、信頼できるハードウェア技術とソフトウェア技術との組み合わせを使用して完全準同型データベース支援ＳＱＬクエリをシミュレートする。機密情報は、ネットワーク内のサーバ側に記憶される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
既存のＳＴＣ法には、操作、フレームワーク及び入力サイズ次第で異なる結果などのいくつかの欠点がある。また、計算を終えるのに必要な時間、メモリ消費量及び運転コストも過大になり得る。さらに、ほとんどの場合、このような既存の方法を採用すると、既存のシステムに合わせて新たなアーキテクチャを変更及び／又は提供することが必要になる。
【課題を解決するための手段】
【０００６】
ネットワークにおける方法が、メモリとプロセッサとを有するクライアントにおいて、メモリとプロセッサとを含むプロキシに第１の要求を送信するステップと、クライアントにおいてプロキシから第１の応答を受け取るステップと、クライアントにおいてプロキシに第２の要求を送信するステップと、第２の要求に応答してプロキシからクライアントに暗号化された計算関数を送信するステップと、クライアントにおいて計算関数を解読するステップとを含む。
【０００７】
システムが、メモリとプロセッサとを含む少なくとも１つのネットワークコンポーネントと、ネットワークコンポーネントと通信する、メモリとプロセッサとを含むクライアントと、クライアントと通信するプロキシと、プロキシと通信するデータベースとを含む。このシステムは、クライアントにおいてプロキシに第１の要求を送信し、クライアントにおいてプロキシから第１の応答を受け取り、クライアントにおいてプロキシに第２の要求を送信し、プロキシからクライアントに暗号化された計算関数を送信し、クライアントにおいて計算関数を解読するように構成される。
【０００８】
方法が、メモリとプロセッサとを有するクライアントにおいて、メモリとプロセッサとを含むプロキシに第１の要求を送信するステップと、クライアントにおいてプロキシから第１の応答を受け取るステップと、クライアントにおいて、プロキシに暗号化されたクライアント値を送信するステップと、プロキシにおいて、プロキシと通信するデータベースからネットワーク内のコンポーネントに基づくコンポーネント値を検索するステップとを含む。この方法は、プロキシにおいて、暗号化されたクライアント値及び検索されたコンポーネント値に基づいて計算関数を決定するステップと、クライアントにおいてプロキシに第２の要求を送信するステップと、第２の要求に応答して、プロキシからクライアントに暗号化された計算関数を送信するステップと、クライアントにおいて計算関数を解読するステップとをさらに含む。
【０００９】
本開示の正しい理解に役立つように、以下の添付図面を参照されたい。
【図面の簡単な説明】
【００１０】
【図１】本開示の実施形態によるシステムアーキテクチャの概観である。
【図２】本開示の実施形態による方法を示すフローチャートである。
【図３】本開示の実施形態による、ブルームフィルタの実装方法を示すフローチャートである。
【図４】本開示の実施形態による関数計算法を示すフローチャートである。
【図５】本開示の実施形態によるシステムを示す図である。
【図６】図５に示すシステムによる、クライアント、プロキシ及びデータベース間の通信を示す概観である。
【図７】本開示のさらなる実施形態による方法を示すフローチャートである。
【図８】図７に示す方法による、クライアント、プロキシ及びデータベース間の通信を示す信号図である。
【図９】図７に示す方法による、プロキシにおけるブルームフィルタの実装を示すフロー図である。
【図１０】図７に示す方法による、データベースにおけるブルームフィルタの実装を示すフロー図である。
【図１１】図７に示す方法による、クライアントとプロキシとの間のブルームフィルタクエリを示すフロー図である。
【図１２】図７に示す方法による、関数評価中のクライアント、プロキシ及びデータベース間の通信を示すフロー図である。
【図１３】図７に示す方法によって計算される距離計算例である。
【発明を実施するための形態】
【００１１】
本開示は、データベースを介したクライアントクエリと計算の両方をプライバシーの観点から保護できるようにブルームフィルタと準同型暗号と信頼できるプロキシとを組み合わせた、ネットワークにおける方法及びシステムを提供する。暗号ブルームフィルタ（１次元及び多次元の両方、以下「ＣＢＦ」と呼ぶ）及び準同型暗号（「ＨＥ」）は、いずれも当業者に周知である。簡単に言えば、ブルームフィルタは、ハッシュ法に基づく確率的データ構造であり、主にテレコムネットワークにおけるメンバーシップクエリに使用される。ブルームフィルタの目的は、必要なメモリ量を削減し、ビット配列とハッシュ関数との組み合わせを使用することによって高速なメンバシップテスト法を提供することである。典型的なブルームフィルタは、最初に全て「０」に設定された長さｍのビット配列と、ｋ個のハッシュ関数とを含む。ＣＢＦは、クライアントがクエリの内容をブルームフィルタに明かすことなくブルームフィルタにクエリを行えるようにする方法として開発されたものである。具体的に言えば、ＣＢＦは、クライアントがサーバに署名の内容を明かすことなくサーバから署名を取得できるブラインド署名を利用することができる。ＣＢＦでは、ブルームフィルタが暗号化されてブルームフィルタへのクエリに署名が必要となるように、入力ｘを含む通常のハッシュ関数が、入力（ｘ、ｓｉｇｎａｔｕｒｅ（ｘ））を含む新たなハッシュ関数に置き換えられる。準同型暗号又はＨＥは、暗号化データを通じて計算が行われるようにすることにより、例えばクラウドコンピューティングにおけるデータ漏洩を防ぐ。ＨＥ単独では個人情報の検索ができないので、本開示は、クライアントの要求と対応するデータベースからの計算とを分離するように、ＣＢＦ及びＨＥと信頼できるプロキシとの組み合わせを提案する。
【００１２】
ここで図１を参照すると、本開示によるシステムアーキテクチャ１００は、データベース又はサーバ１０６と通信する（本明細書ではプロキシとも呼ぶ）信頼できるプロキシ１０４と通信するクライアント１０２を含む。図１で分かるように、信頼できるプロキシ１０４は、クライアントとデータベースとが互いに直接通信しないようにしてクライアント１０２とデータベース１０６との間の通信を容易にする。これにより、クライアント１０２の身元が隠されてデータベース１０６に分からない状態を保つことができる。信頼できるプロキシ１０４は、１）ＣＢＦ１０８を生成して、クライアント１０２が発行したＣＢＦクエリに応答し、２）クライアントの入力に基づいてデータベース１０６から記録を検索し、ＨＥ機能１１０を使用して、検索された記録とクライアントのデータとを用いて関数評価を行う、という２つの主な機能を実行するように構成される。データベース１０６は、インデックス付け及び関数評価という２つの主な機能を有する。本開示によれば、データベースのインデックス付けが、信頼できるプロキシ１０４内でＣＢＦ１０８を用いて抽出され実行される。同様に、通常はデータベース１０６によって実行される関数評価が、信頼できるプロキシ１０４内でＨＥを適用することによって（ＨＥ機能１１０を用いて）抽出され実行される。
【００１３】
図１に示すアーキテクチャでは、クライアント１０２がプライベートデータを送信し、応答として公開データを受け取りたいと望む。従って、以下でさらに詳細に説明するように、クライアント１０２は、クライアントからのあらゆる必要なプライベートデータを受け取るプロキシ１０４に対して通信／クエリを行う。そして、プロキシ１０４は、ＨＥ１１０とＣＢＦ１０８との組み合わせを使用して、暗号化データを含むことはできるが本開示ではそれ自体暗号化されていないデータベース１０６と通信する。データベース１０６は、暗号化データをプロキシ１０４に戻し、プロキシ１０４は、この暗号化データをクライアント１０２に返送する。その後、クライアント１０２は、受け取ったデータを必要に応じて解読することができる。このアーキテクチャの目的は、クライアント１０２とプロキシ１０４との間で通信される個人情報がデータベース１０６に分からないことを保証することである。以下、図２〜図１３を参照して、この目的を達成するために利用する方法及びシステムについてさらに詳細に説明する。
【００１４】
次に図２を参照すると、電気通信ネットワークにおける方法２００を示しており、この方法は、クライアント１０２においてプロキシ１０４に第１の要求を送信するステップ（２０２）を含む。第１の要求は、例えばプロキシ１０４と通信するデータベース１０６にインデックス付けする要求を含むことができ、これについては以下でさらに詳細に説明する。２０４において、クライアント１０２は、プロキシ１０４から第１の応答を受け取る。次に、２０６において、クライアント１０２は、プロキシ１０４に第２の要求を送信し、プロキシは、この第２の要求に応答して、暗号化された計算関数をクライアントに送信する（２０８）。２１０において、クライアント１０２は計算関数を解読する。
【００１５】
ステップ２０２に関して上述したように、クライアント１０２は、プロキシ１０４に第１の要求を送信し、本開示によれば、この要求は、データベース１０６にインデックス付けする要求を含む。データベースのインデックス付けは、プロキシ１０４内の暗号ブルームフィルタ１０８において実行することができる。クライアント１０２は、第１の要求に基づいて、例えば基地局などのネットワークコンポーネント／要素（図４に示す）の存在を決定するクエリをプロキシ１０４に行う。この最初のクエリは、ネットワークコンポーネントがデータベース１０６の一部であるかどうかを判定し、プロキシが否定的な応答を提供した場合には、さらなる不要な計算の必要性を回避する。換言すれば、最初のクエリが「偽」又は「否定」の（すなわち、ネットワークコンポーネントがデータベース１０６の一部でない旨の）応答を戻した場合、方法２００は終了し、或いは肯定又は「真」の（すなわち、ネットワークコンポーネントがデータベース１０６の一部である旨の）応答が受け取られるまでステップ２０２に戻ることができる（図２の点線を参照）。
【００１６】
図３に、ネットワークコンポーネントがデータベース１０６の一部であるかどうかを判定するために使用する方法３００を示す。３０２において、データベース１０６は、データベース内のデータセットに基づいて最適な暗号ブルームフィルタを生成する。３０４において、データベース１０６は、データベース内のデータセット変更に基づいて暗号ブルームフィルタのデータ要素を計算し、３０６において、計算された暗号ブルームフィルタのデータ要素をプロキシ１０４に送信する。この時点で、プロキシ１０４は、ＣＢＦ１０８に記憶された必要なデータ要素を有しているので、クライアント１０２は、３０８において、データベース１０６内のネットワークコンポーネントの存在に関するクエリをプロキシに対して行うことができる。プロキシ１０４が「真」の応答を戻した場合、方法３００は、３１０においてステップ２０４に戻り、図２に関して説明した方法２００に従って継続する。一方で、プロキシ１０４が「偽」の応答を戻した場合、方法３００は、３１２において２０２に戻って上述したように進む。或いは、方法３００は、３１２においてステップ３０２に戻り、プロキシ１０４から「真」の応答が受け取られるまで繰り返すこともできる。３０８におけるクエリの前に、クライアント１０２がプロキシ１０４にクエリを送信する前にクエリ対象の要素をブラインド処理できるようにするブラインド署名スキーム（図示せず）を実装することもできる。このようなブラインド署名スキームは、クライアントとプロキシとの間の２回りの通信を必要とし、その時点で、プロキシ１０４は、「真」又は「偽」のいずれかの応答をプロキシに提供するステップに進むことができる。ブラインド署名は、通信の保護及び認証方法である。ブラインド署名は、この方法の必要条件でも唯一の方法でもない。例えば、他の認証スキームを使用することもできるが、ブラインド署名は、複数の暗号鍵通信問題を解決する。従って、ブラインド署名は、必要及び／又は要求に応じて他のいずれかの伝送及び認証保護スキームに置き換えることもできる。
【００１７】
図３及び上記には、データベース１０６がＣＢＦ１０８を生成して計算することを開示しているが、プロキシ１０４がＣＢＦ１０８を生成して実装することもできる。具体的に言えば、プロキシ１０４は、データベース１０６内のデータセットに基づいて最適な暗号ブルームフィルタ１０８を生成し、データベース内のデータセット変更に基づいて暗号ブルームフィルタ内のデータ要素を更新することができる。暗号ブルームフィルタの更新は、ブルームフィルタ内のデータ要素の削除、及びブルームフィルタへのデータ要素の挿入の一方を含むことができる。ＣＢＦからデータを削除する場合には、ＣＢＦ内のハッシュ値を更新してカウンタを減少させることができ、或いはＣＢＦ全体を再生することもできる。当業者には、一般にＣＢＦの更新がそのようなものとして知られており、本明細書ではこれ以上説明しない。
【００１８】
上述したように、図２では、２０６においてプロキシ１０４に第２の要求が送信される。本開示によれば、第２の要求は、プロキシによる関数の計算要求を含むことができる。以下で図４に示す方法４００を参照しながらさらに詳細に説明するように、プロキシ１０４による関数の計算は、準同型暗号又はＨＥを用いて行うことができる。具体的に言えば、第２の要求の受信時に、クライアント１０２は、４０２においてプロキシ１０４に暗号化されたクライアント値を送信することができる。４０４において、プロキシは、プロキシと通信するデータベース１０６から、ネットワーク内のコンポーネントに基づくコンポーネント値を検索する。４０６において、プロキシは、暗号化されたクライアント値及び検索されたコンポーネント値に基づいて計算関数を決定する。例えば、クライアント値、データベースから検索されるコンポーネント値及び対応する計算関数は、距離、時間、位置及びテキストデータ文字列のうちの１つとすることができる。
【００１９】
次に、図５〜図１３を参照して、本開示の具体的な使用事例について説明する。メモリ５０２ａとプロセッサ５０２ｂとを含むネットワークコンポーネント５０２を含むシステム５００を提供する。システム５００は、ネットワークコンポーネントと通信する、メモリ５０４ａとプロセッサ５０４ｂとを含むクライアント５０４をさらに含む。クライアント５０４及びデータベース５０８と通信するプロキシ５０６を提供する。図５、及び図６のアーキテクチャ６００に示すように、クライアント５０４は、プロキシ５０６のみと通信する。換言すれば、クライアント５０４は、データベース５０８と直接通信しない。以下でさらに詳細に説明するように、システム５００は、クライアント５０４においてプロキシ５０６に第１の要求を送信し、クライアントにおいてプロキシから第１の応答を受け取り、クライアントにおいてプロキシに第２の要求を送信し、プロキシからクライアントに暗号化された計算関数を送信し、クライアントにおいて計算関数を解読するように構成される。
【００２０】
このシステム５００では、ネットワークコンポーネント５０２が基地局であり、クライアント５０４が、ＧＰＳ接続を有するユーザ装置である。このシナリオでは、クライアント又はユーザ装置５０４が、基地局５０２に対する自機の位置を知りたいが、その位置をデータベース５０８には明かしたくないと望む。次に、図７〜図１３に、基地局５０２に対するクライアント５０４の位置を特定する方法７００を示す。
【００２１】
クライアント又はユーザ装置５０４は、７０２においてプロキシ５０６に第１の要求を送信し、７０４においてプロキシから第１の応答を受け取る。７０６において、クライアント５０４は、暗号化されたクライアント値をプロキシに送信する。暗号化されたクライアント値は、例えばユーザ装置５０４の位置とすることができる。このクライアント値は暗号化されており、信頼できるプロキシ５０６にしか見られない。次に、プロキシ５０６は、プロキシと通信するデータベース５０８からコンポーネント値を検索する（７０８）。このシナリオでは、コンポーネント値が、ネットワーク内のコンポーネント５０２に基づき、より具体的には、ネットワーク内の基地局の位置、或いはクライアント５０４に対する基地局の近接位置である。７１０において、プロキシ５０６は、暗号化されたクライアント値及び検索されたコンポーネント値に基づいて、暗号化された計算関数を決定し、この詳細については以下で図１３に関してさらに詳細に説明する。７１２において、ユーザ装置５０４は、暗号化された計算関数を要求する第２の要求をプロキシ５０６に送信し、これに応答して、プロキシは、暗号化された計算関数をクライアントに送信する（７１４）。通常、クライアントは、プロキシ内の関数に対するパラメータを送信するが、この方法７００では、高階関数として知られている関数をパラメータとして送信することが可能である。７１６において、クライアント５０２は計算関数を解読する。
【００２２】
この使用事例によれば、計算関数は、ユーザ装置５０４とネットワークコンポーネント又は基地局５０２との間の距離である。方法７００によれば、プロキシ５０６及びデータベース５０８は、いずれもユーザ装置の位置が分からず、これによってユーザ装置の位置のプライバシーが保証される。装置５０４は、自機とネットワークコンポーネント又は基地局５０２との間の距離が分かるシステム６００内の唯一のコンポーネントである。従って、このシステム／方法は、クライアントに関連する秘密情報を明かすことなくクライアントとプロキシとの間のセキュアな双方向通信を保証する。
【００２３】
図８〜図１２は、方法７００による、クライアント５０４、プロキシ５０６及びデータベース５０８間の通信を示すシグナリング図を含む。具体的に言えば、図８には、ネットワークコンポーネント（この例では基地局）がネットワークの一部として存在するかどうかについての要求をクライアントが行う際のクライアント５０４とプロキシ５０６との間の信号フロー８００を示す。８０２において、ユーザ装置５０４は、ネットワーク内における基地局５０２の存在に関するクエリをプロキシ５０６に対して行う。プロキシ５０６は、８０４において、（以下の図９及び図１０に従って生成される）ＣＢＦ１０８に照会して、適切な基地局ＩＤが存在するかどうかを判断する。その後、プロキシ５０６は、「真」又は「偽」のいずれかの応答をクライアント５０４に戻す（８０６）。
【００２４】
図９及び図１０に、プロキシ５０６とデータベース５０８との間の信号フロー９００及び１０００をそれぞれ示す。信号フロー９００及び１０００では、プロキシ５０６（図９を参照）又はデータベース５０８（図１０を参照）のいずれかによってＣＢＦが実装される。これらの信号フローは、図３に示して説明した方法３００に対応する。信号フロー９００では、９０２において、プロキシ５０６がデータベース５０８にデータセットを要求し、９０４において、データベース５０８がプロキシ５０６にデータセットを送信する。９０６において、プロキシ５０６は、データベース５０８内のデータセットに基づいて最適な暗号ブルームフィルタ１０８を生成し、その後にデータベース内のデータセット変更に基づいて暗号ブルームフィルタ内のデータ要素を更新することができる（９０８）。暗号ブルームフィルタの更新は、ブルームフィルタ内のデータ要素の削除、及びブルームフィルタへのデータ要素の挿入の一方を含むことができる。ＣＢＦからデータを削除する場合には、ハッシュ値を更新してカウンタを減少させることができ、或いはＣＢＦ全体を再生することもできる。当業者には、一般にＣＢＦの更新がそのようなものとして知られており、本明細書ではこれ以上説明しない。
【００２５】
信号フロー１０００は、ＣＢＦがデータベース５０８において生成される別のＣＢＦ実装法を示すものである。１００２において、データベース５０８は、データベース内のデータセットに基づいて最適な暗号ブルームフィルタを生成する。１００４において、データベース５０８は、データベース内のデータセット変更に基づいて暗号ブルームフィルタのデータ要素を計算し、計算された暗号ブルームフィルタのデータ要素をプロキシ５０６に送信する（ステップ１００６）。この時点で、プロキシ５０６は、ＣＢＦ１０８に記憶された必要なデータ要素を有しているので、クライアント５０４は、図１１の信号図１１００に示すように、データベース内の基地局５０２の存在に関するクエリをプロキシ５０６に対して行うことができる。１１０２において、ブラインド署名スキームは、ユーザ装置５０４がプロキシ５０６にクエリを送信する前にクエリ対象の要素（すなわち、このシナリオでは基地局）をブラインド処理できるように構成される。１１０４においてクエリが送信されると、１１０６においてブラインド署名を除去することができる。上述したように、ブラインド署名スキームは当業者に周知であるため、本明細書ではこのようなスキームの構成についてこれ以上説明しない。１１０８において、プロキシ５０６は、データベース５０８の一部として基地局５０２が存在すること又は存在しないことをそれぞれ示す「真」又は「偽」のいずれかの応答をユーザ装置５０４に戻す。プロキシがユーザ装置５０４に「真」の応答を戻した場合、方法７００は、後述する図１２の信号図１２００にも示すステップ７０６〜７１４を継続する。
【００２６】
信号図１２００の１２０２において、ユーザ装置５０４は、このシナリオでは装置の位置である暗号化されたクライアント値をプロキシ５０６に送信する。１２０４において、プロキシ５０６は、データベース５０８から基地局５０２の位置を検索する。１２０６において、プロキシ５０６は、暗号化された装置の位置及び検索された基地局の位置に基づいて準同型暗号を用いて（装置が第２の要求で要求した）計算関数を決定し、この詳細については以下で図１３に関してさらに詳細に説明する。１２０８において、プロキシ５０６は、暗号化された計算関数をクライアント５０４に送信する。
【００２７】
図１３に、上述した方法７００を利用した距離計算例１３００を示す。この計算例１３００では、ユーザ装置５０４が位置ｘを有し、ここではｘ＝（１２３，５４３）である。基地局５０２は位置ｙを有し、ここではｙ＝（３４５６，２２１９）である。上述したセキュアな二者間通信法を用いてｘとｙとの間の距離を計算するために、プロキシにはクライアントの位置が分からず、クライアントには距離ｄしか分からないように、計算を装置／クライアント５０４とプロキシ５０６との間で分割する。ユーザ装置５０４は、自機の位置をプロキシ５０６に送信する前に暗号化し、プロキシは、暗号化されていない基地局の位置を検索する。暗号化された距離ｄは、１２８ビット鍵を用いた（暗号計算に使用される１つの周知の方法である）Ｐａｉｌｌｉｅｒ計算法を使用し、以下の関数を用いて計算される。
【数１】
0006732887.tif 000002
この例では、速さを目的として１２８ビット鍵を利用したが、さらに短い鍵を使用することもできると認識される。上記で識別された距離関数は、準同型暗号法における距離計算の一例であり、他の関数を利用することもできると理解される。さらに、上記ではＰａｉｌｌｅｒスキームを利用したが、Ｅｌ  Ｇａｍａｌ又は当業者に周知の他の準同型暗号スキームなどの別の暗号スキームを利用することもできると理解される。計算１３００では、３８２３．７１０８９３８８という基地局５０２とユーザ装置５０４との間のユークリッド距離が得られる。上記で識別した方法を利用して基地局５０２と装置５０４との間の距離を計算することにより、プロキシは、装置の位置に関して何も分からず、計算された距離を受け取るコンポーネントは装置のみである。データベース５０８は、プロキシ５０６が基地局の位置を検索する際に装置クエリの出所が分からない。従って、装置／クライアントは、距離計算全体を通じて自機のプライバシーを維持する。
【００２８】
本開示は、暗号ブルームフィルタと準同型暗号との組み合わせを用いて、ネットワーク内でクライアントの要求と、結果として得られるデータベースからの計算関数とを分離することによってセキュアな双方向通信を行う方法及びシステムを提供する。本開示は、プロキシにもデータベースにもクライアントの位置が分からないようにしてクライアントのプライバシーを維持する。本システム及び方法に信頼できるプロキシを含めると、プロキシがクライアントクエリの出所及びその内容を隠すので、クライアントがデータベースから保護されるようにもなる。具体的に言えば、この方法は、（ブルームフィルタとしての）特定のインデックスと、（準同型暗号技術を用いて実装される）特定の関数とを信頼できるプロキシ内に抽出することによって既存の信頼できないデータベースを「覆い隠す」機構を提供する。上述したように、「信頼」とは、プロキシが情報をデータベースに全く又はできるだけわずかしか明かさずにクライアントの身元を隠すことを意味する。信頼できるプロキシは、例えば上記で詳述したＨＥ及び暗号ＢＦによって、クライアントの計算についてできるだけわずかしか学ばない。このシステム及び方法は、信頼できるプロキシにおける準同型暗号及び暗号ブルームフィルタが既存のデータベースを「覆い隠」し、データベースがクライアントの位置／クエリに関する知識を取得するのを防ぐので、既存のデータベースにも適用することができる。さらに、所定の／最適なＡＰＩがすでに提供されているのであれば、この方法を既存のシステムに適用することもできる。
【００２９】
本開示の実施形態は、（１又は２以上のプロセッサによって実行される）ソフトウェア、ハードウェア（例えば、特定用途向け集積回路）、又はソフトウェアとハードウェアとの組み合わせで実装することができる。ある実施形態例では、ソフトウェア（例えば、アプリケーションロジック、命令セット）が、様々な従来の非一時的コンピュータ可読媒体のうちのいずれか１つに維持される。本明細書の文脈における「非一時的コンピュータ可読媒体」は、コンピュータなどの命令実行システム、装置又は機器によって、或いはこれらに関連して使用される命令の収容、記憶、通信、伝搬又は伝送を行うことができるいずれかの媒体又は手段とすることができる。非一時的コンピュータ可読媒体は、コンピュータなどの命令実行システム、装置又は機器によって、或いはこれらに関連して使用される命令を収容又は記憶できるいずれかの媒体又は手段とすることができるコンピュータ可読記憶媒体（例えば、メモリ又はその他の装置）を含むことができる。従って、本開示は、上述した方法及びその変形例のいずれかを実行するコードを含む、コンピュータと共に使用するためのコンピュータプログラムコードを具体化するコンピュータ可読記憶媒体を有するコンピュータプログラム製品を含むことができる。さらに、本開示は、１又は２以上のプロセッサと、コンピュータプログラムコードを含む１又は２以上のメモリとを備えた装置を含むこともでき、これらの１又は２以上のメモリ及びコンピュータプログラムコードは、１又は２以上のプロセッサと協働して、上述した方法及びその変形例のいずれかを装置に実行させるように構成される。
【００３０】
必要であれば、本明細書で説明した様々な機能を異なる順序で、及び／又は互いに同時に実行することもできる。さらに、必要であれば、上述した機能のうちの１つ又は２つ以上を任意とし、又は組み合わせることもできる。
【００３１】
独立請求項には本開示の様々な態様を示すが、本開示の他の態様は、特許請求の範囲に明示する組み合わせのみならず、説明した実施形態及び／又は従属請求項の特徴と独立請求項の特徴との他の組み合わせも含む。
【００３２】
また、上記では本開示の実施形態例を説明したが、これらの説明を限定的な意味で捉えるべきではない。むしろ、添付の特許請求の範囲に定めるような本開示の範囲から逸脱することなく複数の変形及び修正を行うことができる。
【００３３】
当業者であれば、上述した本開示は、異なる順序のステップで、及び／又は開示したものとは異なる構成のハードウェア要素を用いて実施することもできると容易に理解するであろう。従って、これらの好ましい実施形態に基づいて本開示を説明したが、当業者には、本発明の趣旨及び範囲から逸脱することなくいくつかの修正、変形及び代替構成が明らかであろう。従って、本開示の境界及び範囲を特定するために、添付の特許請求の範囲を参照されたい。
【００３４】
本明細書及び／又は図面の図に見出すことができる以下の略語については以下のように定義する。
ＣＢＦ  暗号ブルームフィルタ
ＨＥ  準同型暗号
ＳＴＣ  セキュアな二者間通信
【符号の説明】
【００３５】
６００  アーキテクチャ
【図１】
0006732887.tif 000003
【図２】
0006732887.tif 000004
【図３】
0006732887.tif 000005
【図４】
0006732887.tif 000006
【図５】
0006732887.tif 000007
【図６】
0006732887.tif 000008
【図７】
0006732887.tif 000009
【図８】
0006732887.tif 000010
【図９】
0006732887.tif 000011
【図１０】
0006732887.tif 000012
【図１１】
0006732887.tif 000013
【図１２】
0006732887.tif 000014
【図１３】
0006732887.tif 000015