JP7440662B2 - マルチキー情報検索 - Google Patents

マルチキー情報検索 Download PDF

Info

Publication number
JP7440662B2
JP7440662B2 JP2022565671A JP2022565671A JP7440662B2 JP 7440662 B2 JP7440662 B2 JP 7440662B2 JP 2022565671 A JP2022565671 A JP 2022565671A JP 2022565671 A JP2022565671 A JP 2022565671A JP 7440662 B2 JP7440662 B2 JP 7440662B2
Authority
JP
Japan
Prior art keywords
client
server
encryption
decryption keys
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022565671A
Other languages
English (en)
Other versions
JP2023548727A (ja
Inventor
エリ・シモン・フォックス-エプスタイン
クレイグ・ウィリアム・ライト
ケヴィン・ウェイ・リ・イオ
マリアナ・ライコヴァ
カーン・セス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2023548727A publication Critical patent/JP2023548727A/ja
Application granted granted Critical
Publication of JP7440662B2 publication Critical patent/JP7440662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9038Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/062Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本明細書は、データ処理および情報検索に関する。
ユーザデバイス、およびコンテンツ配信者などのコンテンツプラットフォームは、コンテンツプロバイダが記憶する情報を検索するためにコンテンツプロバイダに問い合わせることができる。しかしながら、何の情報が問い合わされているかについて何らかの詳細をコンテンツプロバイダに公開することはコンテンツプラットフォームのためにならない状況が存在し得る。他の状況では、コンテンツプロバイダのコンピューティングシステム上に記憶された他の情報について何らかの詳細をコンテンツプラットフォームに公開することはコンテンツプロバイダのためにならないことがある。
概して、本明細書で説明する主題の1つの発明的態様は、1つまたは複数のプロセッサを含むサーバが、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットをクライアントデバイスから受信する動作と、サーバが、クライアント暗号化クエリのセットに基づいて、サーバ暗号化復号鍵のセットを識別する動作と、サーバが、サーバ暗号化復号鍵のセットをクライアントデバイスに送信する動作と、サーバが、クライアントデバイスによってさらに暗号化されているサーバ暗号化復号鍵のセットを含むクライアント-サーバ暗号化復号鍵のセットをクライアントデバイスから受信する動作と、サーバが、(i)サーバ暗号化復号鍵のセットとは無関係にクライアントデバイスによって導出された、および(ii)クライアントデバイスによって暗号化されるクライアント暗号化/クライアント導出復号鍵のセットをクライアントデバイスから受信する動作と、サーバが、(i)クライアント-サーバ暗号化復号鍵のセットと(ii)クライアント暗号化/クライアント導出復号鍵のセットとの間のマッチを指定するマッチング復号鍵マップを生成する動作と、サーバが、フィルタ処理されたクライアント暗号化クエリのセットを作成するために、マッチング復号鍵マップを使用してクライアント暗号化クエリのセットをフィルタ処理する動作と、サーバが、フィルタ処理されたクライアント暗号化クエリのセットを使用してクエリ結果のセットを生成する動作とを含む方法で実施され得る。
この態様の他の実施形態は、対応する方法、装置、および、コンピュータ記憶デバイス上に符号化された、方法のアクションを実行するように構成された、コンピュータプログラムを含む。これらおよび他の実施形態は、各々、以下の特徴のうちの1つまたは複数を随意に含み得る。
方法は、クライアント暗号化エンティティ識別子のセットをクライアントデバイスから受信するステップと、サーバが、サーバ-クライアント暗号化識別子のセットを作成するために、クライアント暗号化エンティティ識別子のセットを暗号化するステップと、サーバが、サーバ-クライアント暗号化識別子のセットをクライアントデバイスに送信するステップとをさらに含み得る。
方法は、クライアントデバイスが、サーバ-クライアント暗号化識別子のセットを使用してクエリのセットを生成するステップと、クライアントデバイスが、サーバ-クライアント暗号化識別子のセットを使用して復号鍵のセットを生成するステップと、クライアントデバイスが、クライアント暗号化クエリを作成するために、クエリのセットを暗号化するステップとを含み得る。
方法は、サーバが、データベース内に記憶されたデータのセットを暗号化するステップであって、データベース内の複数のエントリに対して、各データベースエントリが、サーバ暗号化され、対応する復号鍵によって復号されることが可能である、暗号化するステップと、サーバが、データベース内の複数のエントリに対して各対応する復号鍵を暗号化するステップと、サーバが、クライアント暗号化クエリ内に含まれたデータベースバケット識別子に基づいて、サーバ暗号化復号鍵のセットを作成するステップであって、サーバ暗号化復号鍵のセットが、クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対するサーバ暗号化復号鍵を含む、作成するステップとを含み得る。
方法は、サーバが、サーバ暗号化をクライアント-サーバ暗号化復号鍵のセットから除去し、クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する各対応する復号鍵のクライアント暗号化バージョンを含むクライアント暗号化復号鍵の復元されたセットを生じさせるステップと、サーバが、クライアント暗号化復号鍵の復元されたセットをクライアント暗号化/クライアント導出復号鍵と比較するステップと、その比較に基づいて、クライアント暗号化復号鍵の復元されたセットとクライアント暗号化/クライアント導出復号鍵のセットの両方の中に含まれたマッチングクライアント暗号化復号鍵の指示を作成するステップとによって、マッチング復号鍵マップを生成するステップを含み得、クライアント暗号化クエリのセットをフィルタ処理するステップは、クライアント暗号化/クライアント導出復号鍵のうちのいずれにもマッチしないクライアント暗号化復号鍵の復元されたセットに対応するデータベースエントリに対するバケット識別子を有するクエリをクライアント暗号化クエリから除去するステップを含む。
方法は、サーバが、サーバ-クライアント暗号化識別子のセットをシャッフルして、サーバ-クライアント暗号化識別子のセットとは異なる順序を有するシャッフルされたサーバ-クライアント暗号化識別子のセットを生じさせるステップを含み得、サーバ-クライアント暗号化識別子のセットをクライアントデバイスに送信するステップは、シャッフルされたサーバ-クライアント暗号化識別子をクライアントデバイスに送信するステップを含み、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを受信するステップは、シャッフルされたサーバ-クライアント暗号化識別子のセットを使用して生成された、シャッフルされたクライアント暗号化クエリのセットを受信するステップを含む。
方法は、(i)シャッフルされたサーバ-クライアント暗号化識別子を使用してクライアントデバイスによって導出された、および(ii)クライアントデバイスによって暗号化されるクライアント暗号化/クライアント導出復号鍵のシャッフルされたセットを受信することによって、クライアント暗号化/クライアント導出復号鍵のセットを受信するステップをさらに含み得る。
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装され得る。本明細書で論じる技法は、クライアントが、クエリのコンテンツをサーバに公開せずに、かつコンテンツプロバイダの暗号化データベース全体をダウンロードすることをクライアントに要求せずに、サーバから情報を検索することを可能にするが、以前のシステムでは、サーバがクエリ内に含まれた特定の情報を取得することを防ぐために、暗号化データベース全体がダウンロードされることが必要とされることがある。したがって、本明細書で論じる技法は、ユーザプライバシーを保護すると同時に、また、ネットワーク上で交換され、クライアントデバイスによって記憶されなければならないデータ量を制限する。
本明細書において説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
コンテンツがユーザデバイスに配信され提示される例示的な環境のブロック図である。 例示的な情報検索プロトコルのブロック図である。 クライアントがサーバからコンテンツを検索する例示的なプロセスのスイムレーン図である。 サーバ暗号化識別子からクエリを生成する例示的なプロセスの流れ図である。 サーバがクエリを処理する例示的なプロセスの流れ図である。 サーバがコンテンツをクライアントに提供することによって実行される例示的なプロセスの流れ図である。 例示的なコンピュータシステムのブロック図である。
本明細書は、データ処理および情報検索に関する。より詳細には、本明細書は、クライアントとサーバ両方のプライバシーを保護しながら、データベースからデータを検索するための技法について説明する。たとえば、クライアントがサーバデータベースに問い合わせる場合、クライアントは、問い合わされているデータについてのいかなる詳細もサーバに公開しない(クライアントクエリプライバシーとも呼ばれる)。同時に、サーバは、クライアントが問い合わせていないデータベースのコンテンツについてのいかなる詳細もクライアントに公開しない(サーバデータベースプライバシーとも呼ばれる)。これらの技法は、クライアントプライバシーも保護する、より効率的な情報検索システムを提供するためにクエリのバッチ処理において使用され得る。たとえば、クライアントが2人以上のユーザに関するデータを検索している場合、問い合わされているサーバが、クライアントがサーバに問い合わせているユーザに関する情報を学習することはできないこと、またクライアントが、サーバが記憶し得る他のユーザについてのいかなる情報も学習することを防ぐことを保証することによって、ユーザプラバシーが保護される。
図1Aは、コンテンツがユーザデバイスに配信され提示される例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどの、ネットワーク102を含む。ネットワーク102は、コンテンツプラットフォーム106とコンテンツプロバイダ110とを結ぶ。例示的な環境100は、多くの異なるコンテンツプロバイダ110、コンテンツプラットフォーム106、およびユーザデバイス104を含み得る。
ユーザデバイス104は、ネットワーク102上でコンテンツを要求および受信することが可能な電子デバイスである。例示的なユーザデバイス104は、パーソナルコンピュータ、モバイル通信デバイス、デジタルアシスタントデバイス、およびネットワーク102上でデータを送受信することができる他のデバイスを含む。ユーザデバイス104は、典型的には、アプリケーションなど、デバイスハードウェアおよびソフトウェアリソースの管理を主に担当するオペレーティングシステムを含む。ユーザデバイス104はまた、特定の実装形態、アプリケーション、および使用事例に基づいてデータを一時的にまたは永続的に記憶するためのデバイスストレージを含む。ユーザデバイス104は、典型的には、ネットワーク102を介したデータの送受信を容易にするために、ウェブブラウザまたは電子メールクライアントなどのユーザアプリケーションを含むが、ユーザデバイス104によって実行されるネイティブアプリケーションもネットワーク102を介したコンテンツの送受信を容易にし得る。ユーザデバイス104上に提示されるコンテンツの例には、ウェブページ、ワードプロセシングドキュメント、ポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、ならびに検索結果ページおよびデジタル広告がある。
コンテンツプラットフォーム106は、コンテンツの配信を可能にするコンピューティングプラットフォームである。例示的なコンテンツプラットフォーム106は、検索エンジン、ソーシャルメディアプラットフォーム、ニュースプラットフォーム、データアグリゲータプラットフォーム、または他のコンテンツ共有プラットフォームを含む。各コンテンツプラットフォーム106は、コンテンツプラットフォームサービスプロバイダによって動作され得る。コンテンツプラットフォーム106は、1つまたは複数のコンテンツプロバイダ110によって提供されるコンテンツを提示し得る。上記の例では、ニュースプラットフォームは、異なる著者によって作成され、1つまたは複数のコンテンツプロバイダ110によって提供されたコンテンツを提示し得る。別の例として、コンテンツプラットフォーム106は、それ自体のいかなるコンテンツも公開しないが、異なるニュースウェブサイト(たとえば、コンテンツプロバイダ110)によって提供されたニュース記事をアグリゲートし提示する、データアグリゲータプラットフォームであり得る。
いくつかの実装形態では、コンテンツプラットフォーム106は、デジタルコンテンツを1つまたは複数のエンティティに配信し得る。エンティティの例は、ユーザデバイス104を介してインターネットに接続されたユーザを含み得る。たとえば、コンテンツプラットフォーム106は、1人または複数のユーザにコンテンツプラットフォーム106に加入および/または登録させ得る。応答して、コンテンツプラットフォーム106は、コンテンツプロバイダ110からデジタルコンテンツを検索し、検索されたコンテンツをユーザのユーザデバイス104に提供し得る。コンテンツプロバイダ110は、デジタルコンテンツを鍵-値ペア(key-value pairs)の形態で記憶するデータ記憶デバイス(データベースとも呼ばれる)を含む。たとえば、コンテンツプロバイダ110のデータベースは、複数の鍵と、各鍵に対する、コンテンツプラットフォーム106によって検索された対応する値とを含み得る。
いくつかの実装形態では、コンテンツプラットフォーム106は、エンティティ識別子を1つまたは複数のエンティティの各々に割り当てることができる。この例では、コンテンツプラットフォーム106は、コンテンツプラットフォームがユーザを区別することができるように、エンティティ識別子を1人または複数のユーザの各々に割り当てることができる。いくつかの実装形態では、コンテンツプラットフォーム106は、1人または複数のユーザおよび/または1つまたは複数のユーザデバイスによって提供された情報を一意のエンティティ識別子として使用することができる。たとえば、コンテンツプラットフォーム106は、一意のエンティティ識別子として、ユーザによって提供された電子メール識別子(電子メールid)、ユーザによって提供されたセルフォン番号、またはユーザのユーザデバイス104のメディアアクセス制御(MAC)アドレスを使用することができる。いくつかの実装形態では、コンテンツプラットフォーム106は、ユーザのグループ内のユーザの特性に基づいて、2人以上のユーザのグループにエンティティ識別子を割り当てることができる。たとえば、コンテンツプラットフォーム106は、ユーザがアクセスしたデジタルコンテンツのコンテキストへの同様の関心に基づいて、共通のエンティティ識別子をユーザのグループに割り当てることができる。別の例では、デジタルコンテンツへの加入に基づいて、ユーザがグループに割り当てられてよく、ユーザに共通エンティティ識別子が割り当てられてよい。いくつかの実装形態では、コンテンツプラットフォーム106は、複数のエンティティ識別子を単一のユーザに割り当てることができる。たとえば、コンテンツプラットフォーム106は、電子メールidとセルフォン番号の両方をユーザに対するエンティティ識別子として割り当てることができる。
デジタルコンテンツをコンテンツプロバイダ110から検索するために、コンテンツプラットフォーム106およびコンテンツプロバイダ110は、コンテンツプラットフォーム106が何の情報が問い合わされているかについてのいかなる詳細もコンテンツプロバイダ110に公開しない方法でデータプライバシーを保証する情報検索技法を実装する。検索技法は、コンテンツプロバイダ110がコンテンツプロバイダ110のコンピューティングシステム上に記憶された他の情報についてのいかなる詳細もコンテンツプラットフォーム106に公開しないことをさらに保証する。本明細書はコンテンツプロバイダ110およびコンテンツプラットフォーム106に言及するが、本明細書で論じる情報検索技法は、プライバシーを保護する方法で情報を交換することを望む任意の2つのシステムによって使用され得る。例のために、プライバシーを保護する方法で情報を交換する2つのシステムは、クライアントおよびサーバと呼ばれ、ここで、クライアントはサーバから情報を検索するために情報検索プロトコルを使用する。当然、他のシステムが本明細書で論じる動作を行うことが可能である。情報検索技法のハイレベルの概要について、図1Bを参照しながら説明する。
図1Bは、サーバから情報を検索するためにクライアント150によって使用される例示的な情報検索プロトコルのブロック図である。いくつかの実装形態では、クライアント150およびサーバ160は各々、別個の疑似ランダム関数を所有する。これらは、それぞれclientPRFおよびserverPRFと呼ばれる。PRFは、何らかの鍵kに対する何らかの値xの関数fx(x)であり、ここで、関数の出力は、ランダムに選定された鍵kに対して区別不可能である。言い換えれば、kが知られていない場合、値が何らかのfk(x)によって生み出されたかまたはfkの考えられる出力からランダムに選ばれたかを決定することは計算的に実行不可能なはずである。さらに、同じ出力を有する2つの異なる入力の確率が極めて小さいように、fkに対して十分な多くの考えられる出力が存在すべきである。たとえば、fkは264の考えられる別個の出力値を有し得る。
サーバ160はまた、サーバ160とクライアント150との間の2者プロトコル(two-party protocol)である、serverOPRF164と呼ばれる、サーバのみに知られている何らかの疑似ランダム関数fkが存在するオブリビアス疑似ランダム関数(OPRF: oblivious pseudorandom function)を所有し得る。serverOPRF164は、いかなる情報もサーバ160に漏らさずに、クライアント150に知られている何らかの値xに対するfk(x)をクライアント150に学習させる。言い換えれば、serverOPRF164は、PRFに対する鍵を保持するサーバ160と入力を保持するクライアント150との間のプロトコルである。サーバ-クライアント対話の終わりに、クライアント150は、所望する場合、他に何も学習せずに、クライアント150によって提供されたその入力に対するserverOPRF164の出力を学習し得る。サーバ160は、クライアント150の入力またはOPRF出力に関して何も学習しない。
いくつかの実装形態では、serverOPRF164、serverPRF180、およびclientPRF174は、決定論的可換暗号化を使用して実装され得る。いくつかの実装形態では、決定論的可換暗号化を実現するために、楕円曲線上のPohlig-Hellman暗号が使用され得る。
クライアント150は、複数のエンティティ識別子を1つまたは複数のエンティティの各々に割り当てることができる。たとえば、クライアント150がM人のユーザを有し、M人のユーザの各々に対して、クライアント150はN個のエンティティ識別子を割り当てると仮定する。コンテンツを検索するために、クライアント150は、M個のエンティティの各々に対してN個のクエリを生成することができ、ここで、各クエリは、それらのエンティティに割り当てられたN個のエンティティ識別子のうちの1つに対応する。別の実装形態では、クライアント150は、各クエリグループが、各々がエンティティの各々に割り当てられたN個の識別子に対応するN個のクエリを含み得るように、M個のエンティティの各々に対してクエリグループを生成し得る。例のために、クライアント150が、M個のクエリグループ、およびM個のクエリグループの各々に対するN個の対応するクエリを生成する実装形態を参照しながらこれらの技法および方法について説明する。
サーバ160は、鍵と値(鍵-値ペアと呼ばれる)との間のマッピングの形態でデジタルコンテンツを記憶するサーバデータベース192を実装する。鍵は、クライントが問い合わせているデジタルコンテンツである値に対するエンティティ識別子および/またはポインタであってよい。サーバデータベース192は、複数の鍵と、各鍵に対して、その鍵に対応するそれぞれの値とを含んでよい。たとえば、サーバは、複数の鍵をデータベース192内に含んでよく、ここで、各鍵は、それに関してクライアントがコンテンツをサーバから検索しているクライアントの1つまたは複数のエンティティを一意に識別し得る。別の例では、サーバは、必ずしもエンティティを識別するとは限らない鍵をデータベース内に含んでよい。そのような実装形態では、対応する鍵の値は、クライアントが、クライアントまたはエンティティにそれぞれ与えられたクライアント許可またはエンティティ許可など、他の要因に基づいて問い合わせることをサーバが可能にするデータである。
いくつかの実装形態では、サーバデータベース192の鍵-値ペアの鍵は、クライアントがエンティティに割り当てた1つまたは複数のエンティティ識別子に関連付けられる。サーバ160に問い合わせると同時に、クライアント150は、エンティティ識別子の詳細がサーバに開示されない方法でエンティティ識別子を含むクエリをサーバ160に提供する。後で説明するように、サーバは、エンティティ識別子がサーバからマスキングされるにもかかわらず、エンティティ識別子に基づいてサーバデータベースからコンテンツ(たとえば、何らかの種類のデータ)を選択し得る。
いくつかの実装形態では、サーバ160は、サーバOPRFデータベース170と呼ばれるサーバデータベースのエントリを使用して、マッピング(たとえば、辞書、テーブル、データベースなど)を生成する。サーバOPRFデータベース170は、サーバデータベース内の各鍵のそのserverOPRDのserverPRFへのマッピングである。これは、以下を使用して表すことができる:
k→serverPRF(serverOPRF(k))
式中、Kはサーバデータベース内のすべての鍵のセットであり、kはKの中にある。
いくつかの実装形態では、サーバ160は、サーバ暗号化データベースの各データベースエントリが、サーバ暗号化され、対応するクライアント導出OPRF値によって復号されることが可能であるように、サーバデータベース192を暗号化してサーバ暗号化データベースを生成する。サーバ160は、高度暗号化規格(AES)などの決定論的準同型暗号化技法を使用してサーバ暗号化データベースを生成する。AES鍵は、HMACベースの抽出および拡張鍵導出関数(HKDF:HMAC-based Extract-and-Expand Key Derivation Function)を使用して、serverOPRFから導出され得る。サーバ暗号化は、次のように表すことができる:
AES(HKDF(serverOPRF(k)),value)
ここで、サーバ160はKの中の各鍵kを暗号化し、ここで、Kはサーバデータベース内のすべての鍵のセットであり、HKDF(serverOPRF(k))は、AES暗号化のために使用される鍵である。そのような実装形態では、そのserverOPRFのserverPRFは、サーバ暗号化データベースを生成する間にサーバ暗号化されたサーバデータベースのエントリに対する復号鍵である。
情報検索プロトコルをさらに説明するために、クライアント150およびサーバ160は2つの通信当事者であり、情報検索プロトコルは、サーバ160から情報を検索する間に、クライアント150が、自らがクエリに基づいて推論し得るもの以上のいかなる物も推論することが不可能であり、サーバ160は任意の鍵がクライアントクエリのいずれかの中に含まれるかどうかを決定することが不可能であることを保証すると仮定する。
情報検索プロトコルは、クライアント150が、クライアント150がそれに関する情報を検索することを望むエンティティ識別子162をエンティティの平文で取得することで開始し得る。エンティティ識別子162を検索した後、クライアント150は、serverOPRF164を使用して、エンティティ識別子162の各々に対応するOPRF値を取得し得る。たとえば、クライアント150は、対応するOPRF値を生成するserverOPRFに対する入力としてM*N個のエンティティ識別子162を提供し得る。クライアント150はserverOPRFに対する(また、OPRFのオブリビアスな(oblivious)プロパティごとの)入力を選んだため、サーバ160は、発明者らがクライアント導出OPRF値166と呼ぶ、結果として得られた値を学習しない。たとえば、M*N個のOPRF値のセットは、クライアント導出OPRF値のセット166と呼ばれる。
いくつかの実装形態では、クライアント150は、クライアント導出値のセット166を生成した後、clientPRF174を使用して、セット166内のクライアント導出OPRF値の各々を暗号化し、対応するクライアント暗号化/クライアント導出OPRF値を生成する。ともに、クライアント暗号化/クライアント導出OPRF値は、サーバ160に送信されるクライアント暗号化/クライアント導出OPRF値のセット178と呼ばれる。
いくつかの実装形態では、クライアント150は、セット166内の各クライアント導出OPRF値に対応するクエリ168を生成する。いくつかの実装形態では、クライアント150は、M個のエンティティの各々に対するクエリグループを生成し、ここで、各クエリグループは、クエリグループ内のそれらのN個のクエリの各々が特定のエンティティに割り当てられたエンティティ識別子に対応するように、N個のクエリを含む。M個のクエリグループ168が、次いで、サーバ160に送信される。
いくつかの実装形態では、クエリグループ168を受信した後、サーバ160は、サーバOPRFデータベース170上のクエリグループ168のセット内のクエリグループの各々のクエリを実行して、それぞれのサーバ暗号化OPRFクエリ結果を生成する。すべてのサーバ暗号化OPRFクエリ結果のセット172は、次いで、クライアント150に送信される。たとえば、サーバ160は、サーバOPRFデータベース170上のM個のクエリグループの各々に対してN個のクエリを実行して、サーバ暗号化OPRFクエリ結果のセット172を生成する。
いくつかの実装形態では、クライアント150は、サーバ暗号化OPRFクエリ結果のセット172を受信した後、(たとえば、clientPRF174を使用して)セット172内の各サーバ暗号化OPRFクエリ結果を暗号化して、クライアント暗号化層を加えてサーバ160に送信し戻されるクライアント-サーバ暗号化OPRFクエリ結果のセット176を生成する。クライアント150は同じclientPRF174を使用して、クライアント暗号化/クライアント導出OPRFクエリ値のセット178およびクライアント-サーバ暗号化OPRFクエリ結果のセット176を生成することに留意されたい。
情報検索プロトコルのこの段階において、サーバ160は、クライアント暗号化/クライアント導出OPRFクエリ値のセット178およびクライアント-サーバ暗号化OPRFクエリ結果のセット176を有することに留意されたい。
いくつかの実装形態では、サーバ160は、serverPRF180を使用して、セット178内のクライアント暗号化/クライアント導出OPRFクエリ値の各々を暗号化して、サーバ暗号化層を加えてサーバ-クライアント暗号化/クライアント導出OPRF値のセット182を生成する。サーバ-クライアント暗号化/クライアント導出OPRFクエリ値のセット182は、M個のクエリグループのM*N個のクエリに対応するサーバ-クライアント暗号化/クライアント導出OPRF値を含む。
いくつかの実装形態では、クライアント150は、サーバ-クライアント暗号化/クライアント導出OPRFクエリ値のセット182とクライアント-サーバ暗号化OPRFクエリ結果のセット176とを比較し、クライアント150とサーバ160の両方によって暗号化され、セット176とセット182の両方の中に存在する、すべてのOPRF値を選択し得る。セット176とセット182の両方の中に存在するすべてのOPRF値を選択した後、サーバ160は、マッチングクエリのセット186内のクエリがサーバOPRFデータベース170上でサーバ160によって成功裏に実行されたことを示す、フィルタで除去されたOPRF値に対応するM*N個のクエリの中からのクエリを含むマッチングクエリのセット186を生成し得る。
いくつかの実装形態では、サーバ160は、M人のユーザの各々にとってベストマッチである値をサーバデータベースから検索するために、フィルタ188を実装してマッチングクエリのセット186からクエリのサブセット190を選択し得る。たとえば、クエリのサブセット190のフィルタ処理は、ユーザに割り当てられたN個の識別子の順序に基づいて、サーバデータベース192から値を選択するように同調され得る。このために、クライアント150は、識別子品質の降順で各クエリグループを配列することができ、サーバ160は、次いで、サーバ160がそれに関するデータを有する単一の最高品質識別子を選ぶことができる。
いくつかの実装形態では、クエリは、クライアント150がクエリから何らかの値を導出することが可能になるかどうかを考慮に入れ、またクライアント150がこのためにサーバ160に提供することを望む任意の追加のデータ(たとえば、クエリメタデータ196)を考慮に入れて、任意の精巧な論理に基づいてフィルタ処理され得る。たとえば、フィルタ処理は、1つまたは複数のブール式を評価することによって実行されてよく、ここで、各クエリに対するリテラルは、クライアント150がクエリから値を導出することが可能になるか否かを示す。
クエリのサブセット190を選択した後、サーバ160は、サーバデータベース192上でクエリを実行し、クライアント150にさらに送信されるクエリ結果194を検索し得る。いくつかの実装形態では、クエリは、準同型暗号化を使用して暗号化され、したがって、結果も準同型暗号化で暗号化される。そのような実装形態では、クエリのサブセット190を実行した後、サーバ160は、クライアント150にさらに送信されるサーバ暗号化クエリ結果194を検索する。そのような実装形態では、クライアント150は、サーバ暗号化クエリ結果194を検索した後、対応するクライアント導出OPRF値166を使用してサーバ暗号化を復号(または除去)して、サーバ暗号化検索クエリ結果194の平文値を生成する。
いくつかの実装形態では、クライアント150は、誤差を用いたリング学習(RLWE:ring learning with errors)などの準同型暗号化を使用することによって、またはガーブル回路(garbled circuits)を使用することによってのいずれかで、クエリを生成し得る。いくつかの実装形態では、クエリ結果は、AES暗号化で暗号化され、AES鍵は結果の対応するデータベース鍵のserverOPRFから導出される。
いくつかの実装形態では、クエリは、クラウドプロバイダ、クリーンルーム環境、または第三者コンピューティングシステムによって部分的にまたは完全に実行され得る。
情報検索技法については図2を参照しながらさらに説明し、データベースから情報を要求しているエンティティは、クライアントと呼ばれ、情報のデータベースを維持し、データベース内に記憶された情報を戻すエンティティは、サーバと呼ばれる。
図2は、クライアントがサーバからコンテンツを検索する例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアント202およびサーバ204によって実装され得る。プロセス200の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。
図2を参照しながら説明する例は、サーバ204が、サーバデータベースを暗号化し、クライアント導出OPRF値の特定の実装形態である復号鍵を使用してクライアント202によって後で復号される、暗号化された結果を生成する例示的な実装形態である。
いくつかの実装形態では、サーバ204は、複数のクエリを受信した後、そのクエリに基づいて、サーバデータベース内のベストマッチであるデータを選択する。たとえば、N個のエンティティ識別子が特定のユーザに割り当てられていると仮定する。サーバが、N個のエンティティ識別子の各々に対応するコンテンツを含み得る状況が存在し得る。そのような状況において、サーバは、最高優先度が割り当てられているエンティティ識別子に対応するコンテンツを選択し得る。別の例では、サーバおよびクライアントは、サーバがN個のエンティティ識別子の順序に基づいてコンテンツを選択し送信することになるように、N個のエンティティ識別子を順序付けすることに互いに合意し得る。別の状況では、サーバは、N個のエンティティ識別子の中からのエンティティ識別子のうちのいくつかに対応するコンテンツを有さないことがある。たとえば、サーバが特定のエンティティ識別子に対するコンテンツを含まない場合、サーバはその順序内の他のエンティティ識別子に基づいてコンテンツを選択し得る。簡潔のために、プロセス200は、N個のエンティティ識別子が順序通りであり、サーバがN個のエンティティ識別子の中からの第1のエンティティ識別子に基づいてコンテンツを選択することになると仮定する。サーバデータベースが第1のエンティティ識別子に対応するデータを有さない場合、サーバは、第2のエンティティ識別子などに基づいて、コンテンツを選択することになる。
クライアント202は、一意のエンティティ識別子を取得する(212)。1つまたは複数のエンティティを一意に識別するために、クライアント202は、1つまたは複数のエンティティ識別子を1つまたは複数のエンティティの各々に割り当てることができる。いくつかの実装形態では、クライアント202は、ユーザおよび/またはユーザデバイス104などのエンティティによって提供された情報をエンティティ識別子として使用することができる。たとえば、クライアント202は、一意のエンティティ識別子として、電子メール識別子(電子メールidまたは電子メールアドレス)、セルフォン番号、またはユーザデバイス104のメディアアクセス制御(MAC)アドレスを使用することができる。クライアントは、情報を記憶するかデータベースを維持する別のシステム(たとえば、サーバシステム)から情報を要求する任意のコンピューティングシステムであってよい。クライアント202は、次元M*Nの行列(行列Pと呼ばれる)としてエンティティ識別子を維持してよく、ここで、Mは、エンティティの数であり、Nは、各エンティティ(たとえば、ユーザ)に割り当てられたエンティティ識別子の数である。
クライアント202は、エンティティ識別子を暗号化して、クライアント暗号化識別子を作成する(214)。サーバ204が平文のエンティティ識別子にアクセスすることを防ぐために、クライアント202は、決定論的可換暗号化技法を使用して行列Pのエンティティ識別子を暗号化して、暗号化された形態のエンティティ識別子(「クライアント暗号化識別子」と呼ばれる)を生成する。本明細書を通して使用する「クライアント暗号化識別子」という句は、サーバではなく、クライアントによって暗号化されている識別子を指す。概して、可換暗号化は、異なるエンティティの公開鍵を使用して平文が2回以上暗号化されることを可能にする種類の暗号化である。このシステムでは、暗号化/再暗号化プロセスの前に復号は要求されない。さらに、結果として得られた暗号文(暗号化テキストとも呼ばれる)は、暗号化/再暗号化プロセスで使用される公開鍵の順序を考慮せずに、指定された復号技法によって復号され得る。言い換えれば、暗号化および復号に使用される鍵の順序は、計算結果に影響を及ぼさず、別の当事者(たとえば、サーバ)が第1の暗号化当事者によって暗号化されたデータにさらなる暗号化を加えた後ですら、1つの暗号化当事者(たとえば、クライアント202)がその暗号化を除去することを可能にする。
クライアント202は、クライアント暗号化識別子をサーバ204に送信する(216)。たとえば、行列Pのエンティティ識別子を暗号化した後、クライアント202は、ネットワーク102上でクライアント暗号化識別子をサーバ204に送信する。より詳細には、クライアント202は行列P内のM*N個のエンティティ識別子の各々を暗号化して、サーバ204にさらに送信されるM*N個のクライアント暗号化識別子のセットを生成する。
サーバ204は、クライアント暗号化識別子を暗号化して、サーバ-クライアント暗号化識別子を作成する(218)。いくつかの実装形態では、M*N個のクライアント暗号化識別子のセットをクライアント202から受信した後、サーバ204は、可換な決定論的暗号化技法を使用してクライアント暗号化識別子を再暗号化して(たとえば、さらに暗号化して)サーバ暗号化された形態のクライアント暗号化識別子(「サーバ-クライアント暗号化識別子」と呼ばれる)を生成する。言い換えれば、サーバ204は、M*N個のクライアント暗号化識別子の各々の上に別の暗号化層を加える。識別子はクライアント202によってすでに暗号化されたため、サーバ204は平文の識別子に対するアクセスを有さず、サーバ204は復号鍵を有さないことに留意されたい。本明細書を通して使用する「サーバ-クライアント暗号化識別子」という句は、クライアントとサーバの両方によって暗号化されている識別子を指す。
サーバ204は、サーバ-クライアント暗号化識別子をクライアント202に送信し戻す(220)。たとえば、M*N個のサーバ-クライアント暗号化識別子のセットを生成した後、サーバ204は、ネットワーク102上でサーバ-クライアント暗号化識別子をクライアント202に送信する。
クライアント202は、前のクライアント暗号化をサーバ-クライアント暗号化識別子から除去して、サーバ暗号化識別子を取得する(222)。いくつかの実装形態では、M*N個のサーバ-クライアント暗号化識別子のセットを受信した後、クライアント202は、ステップ214においてクライアント202によって実行された暗号化を復号(または、除去)するための技法を使用して、M*N個のサーバ-クライアント暗号化識別子の各々に対する「サーバ暗号化識別子」を生成する。暗号化技法は本質的に可換であるため、クライアント202は、クライアント暗号化を除去することが可能であることに留意されたい。クライアント暗号化を除去した後に生成されたサーバ暗号化識別子は、可換な決定論的暗号化技法を使用してサーバによって暗号化された識別子である。言い換えれば、クライアント202が識別子に適用された元の暗号化を除去した後、それらの識別子はサーバによって暗号化された状態に留まり、その場合、それらの識別子は、それらの識別子に対応する情報を要求するためにサーバ204に提出されることになるクエリを生成するためにクライアント202によって使用されるクライアント識別子のサーバ暗号化バージョンである。本明細書を通して使用する「サーバ暗号化識別子」という句は、クライアントによって暗号化されるのではなく、サーバによって暗号化される識別子を指す。
いくつかの実装形態では、プロセス200のステップ218~222は、serverOPRFを使用して実装され得る。前に述べたように、オブリビアスなPRFは、疑似ランダム関数(PRF)に対する鍵を保持するサーバと入力を保持するクライアントとの間のプロトコルである。サーバ-クライアント対話の終わりに、クライアントは、クライアントによって提供されたその入力に対してOPRFの出力を学習し、他に何も学習しない。サーバは、クライアントの入力またはOPRF出力に関して何も学習しない。
クエリの作成を容易にするために、クライアント202は、各サーバ暗号化識別子に対するシャード(shard)インデックスおよびバケット識別子を生成する(224)。いくつかの実装形態では、クライアント202は、ハッシング技法を実装して、シャードインデックスおよびバケット識別子(バケットidとも呼ばれる)を含み得るクエリを生成する。クエリを生成する例示的なハッシング技法については、図3を参照しながらさらに説明する。クライアント202は、M*N個のサーバ暗号化識別子の各々に対するクエリを生成するためのプロセス300を使用する。各識別子に対して生成された各クエリは、下記で論じるように、サーバ暗号化識別子を使用して作成されたシャードインデックスおよびバケットidを含むことになる。
クライアント202は、各サーバ暗号化識別子を使用してクライアント導出復号鍵を生成する(226)。クライアント導出復号鍵は、クライアント202によって提出されたクエリに応答して、サーバ204によって提供されたクエリ結果を復号するためにクライアントによって使用されることになる。いくつかの実装形態では、クライアント202は、222において生成されたサーバ暗号化識別子の各々に対してクライアント導出復号鍵を生成し得る。たとえば、クライアント202は、鍵を1つまたは複数の暗号学的に強力な秘密鍵に拡張するためのハッシュベースのメッセージ認証コード(HMAC)暗号鍵導出関数であるHKDFを実装し得る。ともにM*N個のサーバ暗号化識別子に対する復号鍵は、クライアント導出復号鍵のセットと呼ばれる。
クライアント202は、クエリを生成し暗号化する(228)。いくつかの実装形態では、クライアント202は、プロセス300を使用して計算されたバケットidを使用して長さn/Pのインジケータベクトルを生成し、ここで、バケットidに等しいインデックスを有する要素は1であり、他の要素は0である(Pはシャードの数であり、n/Pは別個のバケットidの数であることを思い出されたい)。いくつかの実装形態では、インジケータベクトルは、知られている圧縮技法を使用して圧縮され得る。クライアント202は、M*N個のサーバ暗号化識別子の各々に対してインジケータベクトルを生成する。
いくつかの実装形態では、クライアント202は、M*N個のインジケータベクトルの各々を暗号化して、対応するFHE暗号化バケットベクトルを生成し得る。概して、準同型暗号化は、ユーザがその暗号化されたデータを最初に復号せずに、そのデータに対して演算を実行することを可能にする暗号化の形態である。これらの結果として得られた計算は、暗号化された形態で残り、復号されるとき、生み出されたものが暗号化されていないデータに動作を実行させた同一出力を生じさせる。FHEのプロパティは、加算、乗算、および吸収を含み得る。例示のために、{x}がxのFHEを示す場合、加算{x}+{y}は、x、y、またはx+yを明らかにせずに{x+y}をもたらし得る。同様に、乗算{x}*{y}は、x、y、またはxyを明らかにせずに{xy}をもたらすことができ、吸収{x}*yは、xを明らかにせずに{xy}をもたらすことができる。いくつかの実装形態では、FHEのプロパティは、ベクトル内のアイテムに関するいかなる詳細も明らかにせずに、暗号化ベクトルを指定数の個別の暗号化値(ベクトル内の各項目に対して1つ)に変換する能力を含み得る。
インジケータベクトルの各々を暗号化した後、クライアント202は、対応するシャードインデックスおよび対応するFHE暗号化バケットベクトルを含む対応するクエリ(クライアント暗号化クエリと呼ばれる)を生成し得る。各クエリは、FHE QUERY(データベース,クエリ)と示されてよく、ここで、データベースは鍵および値のマッピングを記憶するデータストレージを表し、すなわち、データベースは、複数の鍵と、各鍵に対する、対応する値とを記憶する。そのような実装形態では、クライアントは合計M*N個のクエリを生成し、ここで、各クエリはサーバ暗号化識別子に対応する。
概して、それに関してクライアント202がサーバデータベースからデータを検索している一意のエンティティ識別子の数は、サーバデータベース内の一意のエンティティ識別子(鍵-値ペアの鍵)の数未満である。いくつかの実装形態では、真のクエリおよびプロセス200のステップ224で生成されたシャードに対するそれらの配信をマスキングするために、クライアント202は、サーバ204に送信され得るパディングクエリを生成し得る。クライアント202は、たとえば、サーバ204によって提供された情報に基づいて、必要とされるパディングクエリの数を決定し得る。たとえば、サーバ204は、クライアント202によって提出されている現実の各クエリに対して、一定数のパディングクエリ(たとえば、99個のパディングクエリまたは別の適切な数のパディングクエリ)がクライアント202によって生成され提出されることが必要とされることを指定し得る。
クライアント202は、クエリをサーバ204に送信する(230)。たとえば、M*N個のサーバ暗号化識別子の各々に対するクライアント暗号化クエリおよびパディングクエリを生成した後、クライアント202は、ネットワーク102上でクエリのフルセットをサーバ204に送信する。いくつかの実装形態では、サーバがクエリを(たとえば、バッチ処理で)同時に処理することができるように、複数のクエリがバッチでサーバに送信される。
サーバ204はデータベースを暗号化し区分する(232)。データベースを暗号化することによって、各データベースエントリがサーバ暗号化され、対応する復号鍵によって復号されることが可能であるように、サーバはデータベース内に記憶されたデータのセットを暗号化している。サーバ204はまた、クライアント202がサーバ-クライアント暗号化識別子を受信した後、クライアント202によって構成された1つまたは複数のクエリの受信に先立って、サーバデータベースを暗号化することもできる。たとえば、サーバ204がサーバデータベースを構築しているか、または情報をデータベースに加えているとき、サーバは、準同型暗号化がデータに適用される前に、サーバデータベース内に記憶されているデータを暗号化することができる。いくつかの実装形態では、サーバ204は、高度暗号化規格(AES)など暗号化技法を使用してサーバデータベースを暗号化する。たとえば、サーバ204は、HMACベースの抽出および拡張鍵導出関数(HKDF)および鍵-値ペアの対応する鍵を使用して生成されたAES鍵に基づくAES暗号化技法を使用して、サーバデータベースの各鍵-値ペアの値を暗号化する。サーバデータベースの鍵-値ペアの各鍵は、鍵を範囲[0,n)内の整数にマッピングするハッシュ関数(たとえば、SHA256)を使用して生成された整数(記録鍵と呼ばれる)によってさらに置換され、ここで、nは、サーバ204とクライアント202の両方に知られている同調可能なパラメータである。これは、サーバデータベース内の鍵-値ペアの各々の代わりに、記録鍵-AES暗号化値ペアを生じさせる。ハッシュ関数は、ハッシングの前に鍵-値ペアの各鍵に加えられた暗号ソルトをさらに利用し得る。いくつかの実装形態では、暗号ソルトもまたクライアント202に知られており、クエリを暗号化する間にクライアント202によって使用され得る。
いくつかの実装形態では、サーバ204は、たとえば、シャードインデックスを導出するためにクライアントによって使用される同じ技法を使用することによって記録鍵からシャードインデックスを導出することによって、サーバデータベースをシャードに区分する。各シャードは、複数の記録鍵-AES暗号化値ペアを含み得る。いくつかの実装形態では、サーバ204は、クライアントが使用した同じ技法を使用してシャード内の各記録鍵に対してバケットidを導出することによって、各シャードを、バケットと呼ばれる、さらにより小さな区分に区分する。たとえば、変換された数がPによって除算されるとき、シャードインデックスおよびバケットidは、それぞれ剰余および整数商として計算され得る。これは、シャード当たりせいぜいn/P個のバケットを生み出すことに注目されたい。
各シャードを複数のバケットに区分した後、記録鍵-AES暗号化値ペアの記録鍵がシャードとシャード内のバケットの両方をインデックス付けするように、記録鍵-AES暗号化値ペアのAES暗号化値は各バケット内に記憶される。サーバ204は、クライアント202と同じ方法論を使用して、サーバデータベース内の鍵-値ペアの各鍵からのシャード数およびバケットidを導出することに留意されたい。
いくつかの実装形態では、サーバ204は各バケットのAES暗号化値を連結してバイト列にする。たとえば、特定のバケットが3個のAES暗号化値を含む場合、この3個のAES暗号化値はバイト列を生成するために次々に連結される。サーバ204は、AES暗号化値のオフセット値(バイト列のインデックスロケーション)を識別し、対応する記録鍵に基づいて、AESなどの暗号化技法を使用してオフセット値を暗号化する。たとえば、バイト列が一様の長さの3個のAES暗号値を含む場合、サーバは、記録鍵-AES暗号化値ペアのそれぞれの記録鍵に基づいてAESを使用してバイト列内のこの3個のAES暗号化値の各々のオフセット値を暗号化する。暗号化オフセット値を生成した後、サーバ203は暗号化オフセット値をバイト列にプリペンドする。サーバ204はいくつかのAES暗号化値をバイト列にさらにプリペンドする。この例では、サーバ204はこの値3をバイト列にプリペンドする。サーバ204は、バイト列をcバイトのチャンクにさらにスプリットし、ここで、cはクライアントとサーバの両方に事前に知られている整数である。cバイトチャンクは、バイト列内のそれらの相対位置に基づいてさらにインデックス付けされ得る。たとえば、c=1である場合、バケットBは、B=[「p」,「q」,「r」,「s」]として表すことができ、ここで、「pqrs」は、バケット内にそれぞれインデックス1~4を有するcバイトチャンク「p」、「q」、「r」、および「s」にスプリットされるバイト列であり得る。別の例では、c=2である場合、バケットBは、B=[「pq」,「rs」,「tu」,「v」]として表すことができ、ここで、「pqrstuv」は、それぞれバケット内にインデックス1~4を有するcバイトチャンク「pq」、「rs」、「tu」、および「v」にスプリットされるバイト列であり得る。
サーバ204はサーバOPRFデータベースを生成する(234)。いくつかの実装形態では、サーバ204は、ステップ230を参照しながら説明したように、AESなどの暗号化技法を使用して暗号化されたサーバデータベース内の鍵-値ペアの値の各々に対して復号鍵を生成し得る。たとえば、サーバ204は、最初に、決定論的可換暗号化を使用してサーバデータベースの鍵-値ペアの鍵を暗号化し、次いで、サーバ暗号化鍵に基づいてHKDFを使用して対応する復号鍵を生成することができる。いくつかの実装形態では、サーバ204によって生成される復号鍵は、サーバ暗号化復号鍵を生成するために決定論的可換暗号化を使用してさらに暗号化される。本明細書を通して使用する「サーバ暗号化復号鍵」という句は、クライアントによって暗号化されるのではなく、サーバによって暗号化された復号鍵を指す。
いくつかの実装形態では、サーバ204は、サーバ暗号化復号鍵を記憶するデータベース(サーバOPRFデータベースと呼ばれる)を作成することによって、サーバ暗号化復号鍵を維持し得る。そのような実装形態では、サーバ暗号化データベースは、サーバ暗号化鍵と、各サーバ暗号化鍵に対して、対応するサーバ暗号化復号鍵とを記憶する。言い換えれば、サーバ暗号化データベース内の各エントリは、サーバ暗号化鍵とサーバ暗号化復号鍵のペアである。
いくつかの実装形態では、サーバ204は、サーバ暗号化データベースを(サーバデータベースと同様に)シャードに区分する。サーバ暗号化データベースを区分するために、サーバ暗号化データベース内のペアの各サーバ暗号化鍵は、鍵を範囲[0,n)内の整数にマッピングするハッシュ関数(たとえば、SHA256)を使用して生成された(ステップ230において生成された記録鍵と同一である)符号なし整数によってさらに置換され、ここで、nは、サーバ204とクライアント202の両方に知られている同調可能なパラメータである。サーバ204は、シャードインデックスを導出するためにクライアントによって使用される同じ技法を使用することによって符号なし整数からシャードインデックスを導出することによってサーバ暗号化データベースを区分する。
各シャードは、サーバ暗号化鍵とサーバ暗号化復号鍵の複数のペアを含み得る。いくつかの実装形態では、サーバ204は、クライアントが使用した同じ技法を使用してシャード内の各符号なし整数に対してバケットidを導出することによって、各シャードを、バケットと呼ばれる、さらにより小さな区分に区分する。たとえば、変換された数がPによって除算されるとき、シャードインデックスおよびバケットidは、それぞれ剰余および整数商として計算され得る。
各シャードを複数のバケットに区分した後、サーバ暗号化データベース内のペアのサーバ暗号化復号鍵は、符号なし整数がシャードとシャード内のバケットの両方をインデックス付けするように、各バケット内に記憶される。サーバ204はシャード数およびバケットidを導出するためにクライアント202と同じ方法論を使用することに留意されたい。
サーバデータベースと同様に、サーバ204は各バケットのサーバ暗号化復号鍵を連結してバイト列にする。たとえば、特定のバケットが3個のサーバ暗号化復号鍵を含む場合、この3個のサーバ暗号化復号鍵はバイト列を生成するために次々と連結される。サーバ204は、サーバ暗号化復号鍵のオフセット値(バイト列のインデックスロケーション)を識別し、対応する符号なし整数に基づいて、AESなどの暗号化技法を使用してオフセット値を暗号化する。たとえば、バイト列が一様の長さの3個のサーバ暗号化復号鍵を含む場合、サーバは、サーバ暗号化データベース対のそれぞれの符号なし整数に基づいてAESを使用してバイト列内の3個のサーバ暗号化復号鍵の各々のオフセット値を暗号化する。暗号化オフセット値を生成した後、サーバ203は暗号化オフセット値をバイト列にプリペンドする。サーバ204はいくつかのサーバ暗号化復号鍵をバイト列にさらにプリペンドする。この例では、サーバ204はこの値3をバイト列にプリペンドする。サーバ204は、バイト列をcバイトのチャンクにさらにスプリットし、ここで、cはクライアントとサーバの両方に事前に知られている整数である。cバイトチャンクは、バイト列内のそれらの相対位置に基づいてさらにインデックス付けされ得る。
サーバ204は、クエリを実行し、復号鍵をマッチさせることによって、サーバ暗号化復号鍵のセットを識別する(236)。いくつかの実装形態では、サーバ204は、M*N個の暗号化クエリの各々を実行して、サーバOPRFデータベース内の複数のサーバ暗号化復号鍵の中からクライアント暗号化クエリに対応するサーバ暗号化復号鍵のセットを識別する。
サーバ204は、サーバOPRFデータベースからコンテンツを検索するために必要とされるリソース消費を低減する最適化されたバッチプロセスを使用してクライアント暗号化クエリを処理し得る。最適化プロセスは、サーバ暗号化データベースをより小さなチャンク(シャードと呼ばれ、シャードインデックスを使用して識別される)にスプリットし、それらを複数のコンピューティングシステム上で並行して処理することによって、同時処理を容易にする方法で実装され得、それにより、サーバOPRFデータベースからサーバ暗号化復号鍵のセットを検索するために必要とされる計算リソースを低減する。これは、図4を参照しながらさらに説明される。
いくつかの実装形態では、サーバ204はサーバ暗号化復号鍵を随意にシャッフルする(238)。サーバ204は、サーバ暗号化復号鍵のセットをクライアント202に送信するのに先立って、そのセット内のM*N個のサーバ暗号化復号鍵をシャッフルする。これは、クライアント暗号化クエリがクライアント202から受信された順序と比較されたとき、サーバ暗号化復号鍵の順序をランダムに変更することを必要とする。
サーバ204は、たとえば、サーバ暗号化復号鍵の順序をクライアント暗号化クエリの順序にマッピングするマッピングを記憶することによって、シャッフリングプロセスを追跡する。いくつかの実装形態では、サーバ204は、たとえば、サーバ-クライアント暗号化識別子をシャッフルし、後の時点で順序シーケンスを生成するために使用され得る、たとえば、シード値に対するパラメータの固定セットを用いたシャッフリングアルゴリズムを実装し得る。サーバ204は、シャッフルされたシーケンスの順序を非公開に維持し、それをクライアント202と共有しない。たとえば、マッピングまたはシード値は、サーバ204において記憶され、クライアント202と共有されない。
次の技法のより良い理解のために、プロセス200のステップ238においてサーバ204によって生成されたサーバ暗号化復号鍵のセットを最初に分析する。本明細書で前に説明したように、クライアント202は、指定数のエンティティに対するコンテンツをサーバデータベースから検索するためにクエリを提出し、ここで、各エンティティに複数のエンティティ識別子が割り当てられる。たとえば、クライアント202は、M個のエンティティを有し、M個のエンティティの各々にはN個のエンティティ識別子が割り当てられている。サーバデータベースは、M個を超えるエンティティに対する、かつサーバデータベース内の各エンティティに対するコンテンツを含み、サーバは、(サーバデータベースの鍵と呼ばれる)複数の識別子を含み得ることに留意されたい。複数の識別子の数は、クライアント202によってエンティティに割り当てられたN個のエンティティ識別子と相関し得ることにも留意されたい。サーバOPRFデータベース上でクエリを実行した後、サーバ204は、サーバ暗号化復号鍵のセットを識別し、サーバ暗号化復号鍵は、M*N個のエンティティ識別子に対応する復号鍵である。しかしながら、M個のエンティティの各々に対して、サーバ204は、それぞれのエンティティに割り当てられたすべての識別子の中からベストマッチである1つの特定のエンティティ識別子に基づいてコンテンツを選択することになる。いくつかの実装形態では、ベストマッチング識別子は、それに関してマッチが検出される最も明確に定義された識別子である。たとえば、1つのマッチング識別子が電子メールアドレスであり、第2のマッチング識別子が電子メールアドレスおよび郵便番号であると仮定する。この例では、第2の識別子に関連して記憶されたコンテンツがクエリに応答して提供されることになるように、第2のマッチング識別子は電子メールアドレスだけよりもより多くの情報を提供するため、第2のマッチング識別子が最も明確に定義される。プロセス200の次の技法は、クライアント202がコンテンツを選択するためにサーバ204によってどのエンティティ識別子が使用されたかについてのいかなる知識も有さずに、1つの特定のエンティティ識別子に基づいてコンテンツを選択する。
サーバ204は、サーバ暗号化識復号鍵のセットをクライアント202に送信する(240)。たとえば、サーバ暗号化データベース上でクライアント暗号化クエリを実行し、サーバ暗号化復号鍵のセットのサーバ暗号化復号鍵をシャッフルすることによって、そのセットを識別した後、サーバ204は、ネットワーク102上で1人または複数のユーザのシャッフルされたサーバ暗号化復号鍵のセットをクライアント202に送信する。
クライアント202は、クライアント-サーバ暗号化復号鍵を取得するために、サーバ暗号化復号鍵を暗号化する(242)。サーバ暗号化復号鍵のセットをサーバ204から受信した後、クライアント202は、サーバ暗号化復号鍵のセット内のM*N個のサーバ暗号化復号鍵を再暗号化して(たとえば、さらに暗号化して)、クライアント-サーバ暗号化復号鍵のセットを生成する。言い換えれば、クライアント202は、サーバ暗号化復号鍵の各々に対して別の暗号化層を加える。復号鍵はサーバ204によってすでに暗号化されたため、クライアント202は、平文のサーバ暗号化復号鍵に対するアクセスを有さないことに留意されたい。本明細書を通して使用する「クライアント-サーバ暗号化復号鍵」という句は、サーバおよびクライアントによって暗号化された復号鍵を指す。
クライアント202は、クライアント-サーバ暗号化復号鍵のセットをサーバ204に送信する(244)。たとえば、サーバ暗号化復号鍵のセット内のサーバ暗号化復号鍵を暗号化した後、クライアント202は、ネットワーク102上でクライアント-サーバ暗号化復号鍵のセットをサーバ204に送信する。次に、サーバは、クライアントデバイスによってさらに暗号化されているサーバ暗号化復号鍵のセットを含むクライアント-サーバ暗号化復号鍵のセットをクライアントデバイスから受信する。
サーバがステップ238において復号鍵をシャッフルした場合、サーバ204はクライアント-サーバ暗号化復号鍵をアンシャッフルする(246)。いくつかの実装形態では、サーバ204は、M*N個のクライアント-サーバ暗号化復号鍵を受信した後、クライアント-サーバ暗号化復号鍵をアンシャッフルして、プロセス200のステップ238においてサーバによって実行されたシャッフリングを無効にする。復号鍵をシャッフルおよびアンシャッフルすることによって、サーバ204は、エンティティ識別子の順序に関してのいかなる情報もクライアント202に漏らすことなく、クライアント-サーバ暗号化復号鍵のセットをクライアント202から取得し得る(ステップ242~246)ことに留意されたい。
クライアント202は、クライアント導出復号鍵を暗号化して、クライアント暗号化/クライアント導出復号鍵を取得する(248)。プロセス200のステップ226においてクライアント導出復号鍵のセットを生成した後、クライアント202は、クライアント導出復号鍵のセット内のクライアント導出復号鍵の各々を暗号化して、クライアント暗号化/クライアント導出復号鍵のセットを生成する。言い換えれば、クライアント202は、クライアント導出復号鍵の各々に対して暗号化層を加える。本明細書を通して使用する「クライアント暗号化/クライアント導出復号鍵」という句は、サーバによって暗号化されるのではなく、クライアントによって暗号化されるクライアント導出復号鍵を指す。
クライアント202は、クライアント暗号化/クライアント導出復号鍵をサーバ204に送信する(250)。たとえば、クライアント導出復号鍵のセット内のクライアント導出復号鍵の各々を暗号化した後、クライアント202は、ネットワーク102上でクライアント暗号化/クライアント導出復号鍵のセットをサーバ204に送信する。次に、サーバ205は、(i)サーバ暗号化復号鍵のセットとは無関係にクライアントデバイスによって導出された、および(ii)クライアントデバイスによって暗号化されるクライアント暗号化/クライアント導出復号鍵のセットをクライアント202から受信する。
サーバは、クライアント暗号化/クライアント導出復号鍵を暗号化する(252)。いくつかの実装形態では、サーバ204は、クライアント暗号化/クライアント導出復号鍵のセットを受信した後、セット内のクライアント暗号化/クライアント導出復号鍵の各々を暗号化して、対応するサーバ-クライアント暗号化/クライアント導出復号鍵を生成する。言い換えれば、サーバ204は、クライアント暗号化/クライアント導出復号鍵の各々に対して暗号化層を加える。
サーバ204は、クライアント暗号化クエリをフィルタ処理する(254)。いくつかの実装形態では、サーバ204は、サーバ-クライアント暗号化/クライアント導出復号鍵のセットとクライアント-サーバ暗号化復号鍵のセットとを比較して、サーバ-クライアント暗号化/クライアント導出復号鍵のセットとクライアント-サーバ暗号化復号鍵のセットの両方の中に存在する暗号化復号鍵を識別する。サーバ-クライアント暗号化/クライアント導出復号鍵のセットは、行列PのM*N個の識別子に基づいてクライアント202によって生成されたクライアント暗号化クエリのセットに関連付けられ、クライアント-サーバ暗号化復号鍵のセットは、サーバデータベース内に存在する鍵-値ペアに関連付けられることに留意されたい。
ステップ254を実装するために、サーバ204は次元MxNのインジケータ行列を生成することができ、ここで、インジケータ行列の各要素は0または1のいずれかである。たとえば、要素がマッチング復号鍵である場合、インジケータ行列内の要素は値1を有する。要素がマッチング復号鍵でない場合、その値は0と設定される。
いくつかの実装形態では、サーバ204は、マッチング復号鍵マップとも呼ばれるインジケータ行列(または、マッチング復号鍵)に基づいてクライアント暗号化クエリのセットから有効なクエリをフィルタ処理し得る。クライアント暗号化クエリのセットは、次元MxNの行列Pに基づいてクライアント202によって生成され、ここで、Mは、エンティティの数であり、Nは、エンティティ識別子の数であり、ここで、各エンティティ識別子は、クライアント202がプロセス200のステップ222において前のクライアント暗号化を除去した後に暗号化されたサーバであったことを思い出されたい。クライアント202は、各サーバ暗号化識別子に対してクライアント暗号化クエリを生成して、M*N個のクライアント暗号化クエリを生じさせたことをさらに思い出されたい。クライアント暗号化クエリのセットから有効なクエリをフィルタ処理するために、サーバ204は、それに関してインジケータ行列の対応する要素が値1を有するクライアント暗号化クエリを選択する。言い換えれば、サーバ204は、それに関して対応するクライアント-サーバ暗号化復号鍵がマッチング復号鍵であるクエリをクライアント暗号化クエリのセットから選択する。それに関してインジケータ行列内の対応する要素が値0を有する残りのクライアント暗号化クエリは選択されない。
サーバ204は、サーバデータベース内のベストマッチを有するクライアント暗号化クエリを選択する(256)。前に述べたように、クライアント202は、複数のエンティティ識別子を1つまたは複数のエンティティの各々に割り当てることができる。たとえば、クライアント202はM人のユーザを有し、M人のユーザの各々に対して、クライアント202はN個のエンティティ識別子を割り当てる。サーバ204は、複数のクライアント暗号化クエリを受信した後、そのクエリに基づいて、サーバデータベース内のベストマッチであるデータを選択する。クエリ選択は、たとえば、サーバが最高優先順位および/または順序が割り当てられたエンティティ識別子に対応するコンテンツを選択することができるフィルタを使用して実行され得る。
プロセス200は、N個のエンティティ識別子は順序通り(1からN)であり、サーバ204はその順序に基づいてコンテンツを選択することができると仮定するため、サーバ204は、同じ順序を使用してクライアント暗号化クエリを選択し得る。たとえば、M人のユーザの中から特定のユーザにN個のエンティティ識別子とインジケータ行列内の対応する2進ベクトルとが割り当てられる。この例では、サーバ204は、2進ベクトル内のその対応する値が1であり、同時に2進ベクトル内に1が最初に発生するエンティティ識別子に基づく単一のクライアント暗号化クエリを選択することになる。サーバ204によって実装されるこの論理は、選択されたクエリが、有効であることと、クライアント202とサーバ204の両方によって事前に指定されたエンティティ識別子の順序に従うことの両方を可能にする。
サーバ204は、サーバデータベース上で、フィルタ処理されたクライアント暗号化クエリを実行する(258)。有効であり、かつエンティティ識別子の順序に従うクエリをフィルタ処理した後、サーバ204は、サーバ暗号化データベース上でクエリを実行して、コンテンツを検索し得る。サーバ204は、(プロセス200のステップ236を参照しながら説明した)プロセス400を使用して、クエリのシャードインデックスを使用してシャードを識別し、次いで、シャード内の各バケットに問い合わせて、サーバ204によって実行される吸収動作を使用して選択されたFHE暗号化値のリストを生成する。
サーバ204は、FHE暗号化値のリストをクライアント202に送信する(260)。サーバ204は、バケットベクトルのFHE暗号化値およびフィルタ処理されたクエリの各々に対するcバイトチャンクのリストを生成した後、ネットワーク102上で1つまたは複数のリストをクライアント202に送信する。
クライアント202は、クライアント導出復号鍵を使用してFHE暗号化を復号する(262)。いくつかの実装形態では、バケットベクトルのFHE暗号化値およびクライアント202が送信したクエリの各々に対するcバイトチャンクのリストを受信した後、クライアントは、プロセス200のステップ226において生成された復号鍵を使用してFHE暗号化を復号し、問い合わされ、当初サーバデータベース上に記憶された鍵-値ペアの値を取得することができる。
図3は、サーバ暗号化識別子からクエリを生成する例示的なプロセス300の流れ図である。プロセス300について、単一の識別子を参照しながら説明するが、複数の識別子に対して実行されてよい。プロセス300の動作は、たとえば、クライアント202、または別のエンティティからコンテンツを検索するために本明細書で説明する技法を実装する任意のエンティティによって実装され得る。プロセス300の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
図3は、例示的な識別子350(john.smith@example.com)を使用してクエリを生成するプロセス300について説明する。プロセス200のステップ222を使用して識別子350を処理した後、識別子350を表すサーバ暗号化識別子360は、SERV_ENC{john.smith@example.com}:=adhf8f2g&34!d0sfgn2として表され、ここで、SERV_ENCは、クライアント202がステップ214において加えられたクライアント暗号化を除去した後の識別子350のサーバ暗号化であり、「adhf8f2g&34!d0sfgn2」は、サーバ暗号化識別子350の暗号文を表す。
クライアント202は、符号なし整数を生成するためにサーバ暗号化識別子をハッシュする(310)。いくつかの実装形態では、クライアント202は、サーバ暗号化識別子360を処理するように構成されたハッシュ関数を実装して、符号なし整数370を生成し得る。これは、HASH_FN[SERV_ENC{john.smith@example.com}]:= 324423510001001110として表すことができ、ここで、HASH_FNは、クライアント202によって実装されるハッシュ関数であり、「324423510001001110」は符号なし整数である。ハッシュ関数(暗号学的ハッシュ関数とも呼ばれる)は、実際には反転または逆転が実行不可能であり、任意のサイズのデータを固定サイズ値にマッピングするために使用され得る任意の一方向性関数であってよい。そのようなハッシュ関数の例には、MD5メッセージ-ダイジェストアルゴリズム、セキュアハッシュアルゴリズム1、2および3がある。
クライアント202は、符号なし整数を指定範囲内にある変換数に変換する(320)。いくつかの実装形態では、クライアント202は、符号なし整数370を処理して指定範囲内にある変換数380を生成するように構成された変換関数を実装し得る。ハッシュ関数および変換関数はクライアント202とサーバ204の両方に知られているため、変換関数を使用して生成される変換数の範囲は事前に指定される。この例では、変換数380は、CONV[HASH_FN[SERV_ENC{ john.smith@example.com }]]:=324425と表され、ここで、CONVは、クライアント202によって実装される変換関数である。一例として、符号なし整数を0から9999までの数に変換する1つの方法は、10000で除算された符号なし整数の剰余を使用することである。
クライアント202は、変換数をシャードインデックスおよびバケットidにスプリットする(330)。シャードインデックスは、0とP-1との間の数になり、ここで、Pはシャードの数である。バケットidは、0からn/P-1に及ぶことになり、ここで、nは、ステップ320において生成された変換数380がとり得る最大値である。いくつかの実装形態では、クライアント202は、第1の部分がシャードインデックスであり、第2の部分がバケットidであるように、ステップ320において生成された変換数380を2つの部分にスプリットする。たとえば、nが、変換数380がとり得る最大値である場合、数nを表すために必要とされるビット数は、log2nビットである。そのようなシナリオでは、Pが2の冪であり、P=2^Kである場合、クライアント202は、第1のKビットをシャードインデックスとして使用し、残りのlog_2n-Kビットをバケットidとして使用することができる。この例では、クライアント202は、図3に示すように、変換数380を2つの部分にスプリットし、結果390として、シャードインデックスは32であり、バケットidは4425である。別の実装形態では、Pがシャードの数を表す場合、変換数がPによって除算されるとき、シャードインデックスは剰余として計算され得る。この場合、変換数がPによって除算されるとき、バケットidは、整数商として計算され得る。この場合、P=100である場合、シャードインデックスは25であり、バケットidは3244である。
図4は、サーバ暗号化復号鍵のセットをサーバ暗号化データベースから検索するためにクエリを処理する例示的なプロセス400の流れ図である。プロセス400の動作は、たとえば、クライアント204、またはそこからコンテンツが検索されているデータベースを実装する任意のエンティティによって実装され得る。プロセス400の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
各クエリに対して、サーバ204は、クエリのシャードインデックスを使用してサーバ暗号化データベース内のシャードを識別する(402)。プロセス200のステップ224~228を参照しながら前に述べたように、各クエリは、シャードインデックスと、対応するFHE暗号化バケットベクトルとを含む。クエリを受信した後、サーバ204は、クエリのシャードインデックスに基づいて特定のシャードを識別する。たとえば、クエリのシャードインデックスが32である場合、サーバは、サーバ暗号化データベースのシャードインデックスに基づいて、第32のシャードを識別する。さらに、問い合わされたシャードに基づいてクエリについてのいかなる情報も収集されるのを防ぐために、システムは、シャードの各々がまったく同じ回数選択されるように設計される。
各クエリに対して、サーバ204は、シャード内の各バケットに問い合わせ、サーバ暗号化復号鍵のセットを生成する(404)。いくつかの実装形態では、サーバは、サーバ暗号化復号鍵のセットがクライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対するサーバ暗号化復号鍵を含むように、クライアント暗号化クエリ内に含まれたデータベースバケット識別子に基づいて、サーバ暗号化復号鍵のセットを作成し得る。いくつかの実装形態では、サーバ204は、クエリからのFHE暗号化バケットベクトルを使用して、シャードインデックスによって識別された特定のシャードの各バケットに問い合わせる。たとえば、クエリからのシャードインデックスを使用して識別されたシャード内に32個のバケットが存在する場合、サーバ204は32個のバケットの各々に問い合わせることになる。
バケットに問い合わせることができる様々な方法が存在し、いずれの適切なバケット問合せ技法が使用されてよい。たとえば、サーバ204は、クエリからのFHE暗号化バケットベクトルに対してオブリビアスな拡張動作を実行して、特定のバケットに対するFHE暗号化値を取得する。次いで、サーバ204は、特定のバケットに対するFHE暗号化値とバケット内の各cバイトチャンクとの間の個別のFHE吸収動作を実行する。これは、次の非限定的例を用いて論理的に説明され得る。
例のために、特定のシャード内に4個のバケットが存在すると仮定する。第1のバケットは以下のチャンク[「A」,「B」,「C」,「D」]を有するとさらに仮定する。同様に、第2、第3、および第4のバケットはそれぞれ以下のチャンク[「E」,「F」,「G」]、[「H」]、および[「I」,「J」,「K」]を有する。インジケータベクトルが[0,1,0,0]であるとさらに仮定する。吸収動作は、[0,「E」,0,0]として表すことができるすべての4個のバケットにわたって、インデックス1を有するチャンクのサーバ暗号化復号鍵を生成することになる。同様に、すべての4個のバケットにわたりインデックス2~4を有するチャンクのFHE暗号化値は、それぞれ[0,「F」,0,0]、[0,「G」,0,0]、および[0,0,0,0]である。
いくつかの実装形態では、サーバ204は、すべてのバケットにわたってFHE追加動作を使用してバケットベクトルのサーバ暗号化復号鍵の値およびcバイトチャンクの値をアグリゲートし、サーバ暗号化復号鍵のセットを生成し得る。言い換えれば、同じクエリおよびchunk_indexを用いて前に説明したトリプルのセット内のすべてのエントリは、サーバ暗号化復号鍵を加算することによって1つに組み合わされる。たとえば、バケットベクトルのサーバ暗号化復号鍵の値および特定のインデックス、たとえば、インデックス1を有するcバイトチャンクの値に対するアグリゲーション動作は、シャードのすべての4個のバケットにわたってインデックス1を有するすべてのチャンクの中からチャンク「E」を選択することになる。同様に、第2、第3、および第4のインデックスにおけるチャンクのアグリゲートされた値は、シャードのすべてのバケットにわたってそれぞれ「F」、「G」、および0である。サーバ204は、バケットからチャンクを選択した後、サーバ暗号化復号鍵のセットを生成し、そのセットをクライアント202に送信する。たとえば、サーバは、吸収動作を使用して選択されたサーバ暗号化復号鍵のセット[「E」、「F」、「G」]を生成し、そのセットをクライアント202に送信し得る。
プロセス400は、複数のクエリが複数のコンピューティングシステム上で並行して処理される方法で実装される。いくつかの実装形態では、すべてのクエリがクエリのバッチとして処理されることを可能にするマップリデュースプロセスが使用され得、これは、クエリに対する応答を生成するために必要とされる時間を低減し、各クエリを個々に処理することに関する処理リソースを節約する。たとえば、データベースは鍵をハッシュすることによってn個のバケットに区分され、バケットは先行するkビットに基づいてシャードに区分される。この例では、サーバは、各クエリとともに提出される、提供されたシャードイデックスに基づいてシャードによってクエリを区分し得る。サーバは、次いで、暗号化バケット選択器を圧縮解除することによって、各クエリをそのシャード内のサーバ暗号化復号鍵バケットにファンアウトする。各シャード内で、各バケットは、そのバケットに対するクエリからのサーバ暗号化復号鍵と接合される。各バケットに対して、クエリからのサーバ暗号化復号鍵とバケットのチャンクとのデカルト積の各ペアに対して、FHE吸収を実行する。このステップの出力は、(query_id,chunk_index)ペアからサーバ暗号化復号鍵へのマルチマップである。値はアグリゲータとしてFHE加算を使用してアグリゲートされる。これはマルチマップではなく、各鍵がちょうど1つのサーバ暗号化復号鍵を有することを除いて、これは、前のステップと同じ出力フォーマットを有する。chunk_indexによってソートされたサーバ暗号化復号鍵のセットはアグリゲートされ、出力フォーマットはクエリからサーバ暗号化復号鍵のセットへのマップである。シャードごとに、および適切なシャーディングで、同じ数のクエリを提供することによって、クエリの配信についてのいかなる情報も公開せずに、多くのシャードを有することによって計算コストは低減され得る。
クライアント202は、サーバデータベース内に記憶された鍵-値ペアの値のサブセットのみに問い合わせる。サーバ204は、鍵-値ペアおよびクライアント暗号化クエリに関連付けられた復号鍵のセットを選択するために、サーバ暗号化データベース上でクエリを実行して、サーバデータベースの他の鍵-値ペアに関連付けられない復号鍵をフィルタで除去する。言い換えれば、サーバ204は、クライアント暗号化クエリに対応するサーバ暗号化復号鍵を選択する。
図5は、クライアントクエリに応答してデータを提供するための例示的なプロセス500の流れ図である。プロセス500の動作について、サーバ204によって実行されるとして以下で説明する。プロセス500の動作について、例示のためにのみ以下で説明する。プロセス500の動作は、任意の適切なデバイスまたはシステム、たとえば、任意の適切なデータ処理装置によって実行され得る。プロセス500の動作はまた、非一時的コンピュータ可読媒体上に記憶された命令として実装され得る。命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させる。
サーバ204は、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを受信する(502)。クライアント202は、1つまたは複数のエンティティ識別子を1つまたは複数のエンティティの各々に割り当てることによって、1つまたは複数のエンティティを一意に識別し得る。クライアント202は、次元MxNの(行列Pと呼ばれる)行列としてエンティティ識別子を維持してよく、ここで、Mは、エンティティの数であり、Nは、エンティティ識別子の数である。
前に論じたように、サーバ204が平文のエンティティ識別子にアクセスすることを防ぐために、クライアント202は、決定論的可換暗号化技法を使用して行列Pのエンティティ識別子を暗号化して、暗号化された形態のエンティティ識別子(「クライアント暗号化識別子」と呼ばれる)を生成し、クライアント暗号化識別子をサーバ204に送信する。クライアント暗号化識別子を受信した後、サーバ204は、可換暗号化技法を使用してクライアント暗号化識別子を再暗号化して、暗号化された形態のクライアント暗号化識別子(「サーバ-クライアント暗号化識別子」と呼ばれる)を生成し、それらをクライアント202に送信し戻す。
いくつかの実装形態では、サーバ204は、サーバ-クライアント暗号化識別子をクライアント202に送信し戻す前に、それらのセットをシャッフルすることもできる。このシャッフリングは、サーバ-クライアント暗号化識別子のセットとは異なる順序を有する、シャッフルされたサーバ-クライアント暗号化識別子のセットを生じさせ、これは、クライアントが、サーバ-クライアント暗号化識別子のうちのどれがサーバ204に当初提出されたクライアント暗号化識別子に対応するかを識別することが可能であることを防ぐ。これらの実装形態では、サーバ204は、シャッフルされたサーバ-クライアント暗号化識別子をクライアントデバイス202に送信する。さらに、サーバがシャッフリングを実行するとき、サーバは、シャッフルされたサーバ-クライアント暗号化識別子のセットを使用して生成された、シャッフルされたクライアント暗号化クエリのセットを受信することになるが、それは、それらのクエリはシャッフルされたサーバ-クライアント暗号化識別子を使用してクライアントによって生成されることになるためである。
サーバ-クライアント暗号化識別子のセットを受信した後、クライアント202は、ステップ214においてクライアント202によって実行された暗号化を復号(または、除去)してサーバ-クライアント暗号化識別子の各々から「サーバ暗号化識別子」を生成するための技法を使用する。クライアント202は、(図3およびプロセス300を参照しながら説明した)ハッシング技法を実装することによって、各サーバ暗号化識別子に対するシャードインデックスおよびバケット識別子を生成して、シャードインデックスおよびバケット識別子(バケットidとも呼ばれる)を含み得るクエリを生成する。クライアント202は、クライアント暗号化クエリのセットと呼ばれるM*N個のサーバ-クライアント暗号化識別子の各々に対するクエリを生成する。クライアント202は、次いで、クライアント暗号化クエリのセットをサーバ204に送信する。
サーバ204は、サーバ暗号化復号鍵のセットを識別する(504)。上記で論じたように、サーバ204は、AESなどの暗号化技法を使用して暗号化されたサーバデータベース内の鍵-値ペアの値の各々に対して復号鍵を生成し得る。サーバ204は、サーバ暗号化復号鍵を記憶するデータベース(サーバ暗号化データベースと呼ばれる)を作成することによって、サーバ暗号化復号鍵を維持し得る。サーバ204は、サーバ暗号化データベースをシャードに区分し、シャードをバケットに区分する。サーバ暗号化復号鍵のセットを識別するために、サーバ204は、プロセス400を使用してサーバ暗号化データベース上でM*N個のクライアント暗号化クエリの各々を実行して、サーバ暗号化復号鍵のセットを生成する。
サーバ204は、サーバ暗号化復号鍵のセットをクライアント202に送信する(506)。たとえば、サーバ暗号化復号鍵のセットを生成した後、サーバ204は、サーバ暗号化復号鍵のセット内のM*N個のサーバ暗号化復号鍵をシャッフルする。サーバ204は、ネットワーク102上で、シャッフルされたサーバ暗号化復号鍵のセットをクライアント202に送信する。
サーバ204は、クライアント-サーバ暗号化復号鍵のセットを受信する(508)。上記で論じたように、サーバ暗号化復号鍵のセットをサーバ204から受信した後、クライアント202は、可換暗号化技法を使用してサーバ暗号化復号鍵のセット内のM*N個のサーバ暗号化復号鍵を再暗号化して(たとえば、さらに暗号化して)、クライアント-サーバ暗号化復号鍵のセットを生成する。クライアント202は、ネットワーク102上でクライアント-サーバ暗号化復号鍵のセットをサーバ204に送信する。サーバ204は、クライアント暗号化/クライアント導出復号鍵のセットを受信する(510)。たとえば、プロセス200のステップ226においてクライアント導出復号鍵のセットを生成した後、クライアント202は、可換暗号化技法を使用してクライアント導出復号鍵のセット内のクライアント導出復号鍵の各々を暗号化して、クライアント暗号化/クライアント導出復号鍵のセットを生成する。クライアント導出復号鍵のセット内のクライアント導出復号鍵の各々を暗号化した後、クライアント202は、ネットワーク102を介してクライアント暗号化/クライアント導出復号鍵のセットを送信し、クライアント暗号化/クライアント導出復号鍵はサーバ204によって受信される。上記で論じたように、サーバがサーバ-クライアント暗号化識別子のセットをシャッフルしていた場合、クライアントによって生成された復号鍵(すなわち、クライアント導出復号鍵)がシャッフルされることになる。これらの状況において、サーバ204は、(i)シャッフルされたサーバ-クライアント暗号化識別子を使用してクライアントデバイスによって導出された、および(ii)クライアントデバイスによって暗号されるクライアント暗号化/クライアント導出復号鍵のシャッフルされたセットを受信することになる。次に、サーバ204はシャッフリングを除去し得る。
サーバは、(i)クライアント-サーバ暗号化復号鍵のセットと(ii)クライアント暗号化/クライアント導出復号鍵のセットとの間のマッチを指定するマッチング復号鍵マップを生成する(512)。クライアント-サーバ暗号化復号鍵のセットを受信した後、サーバ204は、ステップ242においてサーバ204によって実行された暗号化を復号(または、除去)するための技法を使用して、M*N個のクライアント-サーバ暗号化復号鍵の各々に対して「クライアント暗号化復号鍵」を生成する。
サーバ204が復号鍵をシャッフルした状況において、サーバ204は、M*N個のサーバ暗号化復号鍵を生成した後、サーバ暗号化復号鍵をアンシャッフルして、プロセス200のステップ238においてサーバによって実行されたシャッフリングを無効にする。サーバ204は、クライアント暗号化/クライアント導出復号鍵のセットとクライアント暗号化復号鍵のセットとを比較して、クライアント暗号化/クライアント導出復号鍵のセットとクライアント暗号化復号鍵のセットの両方の中に存在するクライアント暗号化復号鍵を識別する。サーバ204は次元MxNのインジケータ行列を生成することができ、ここで、インジケータ行列の各要素は0または1のいずれかである。たとえば、要素がマッチング復号鍵である場合、インジケータ行列内の要素は値1を有する。要素がマッチング復号鍵でない場合、その値は0と設定される。
本明細書を通して使用する「マッチング復号鍵マップ」という句は、クライアント暗号化/クライアント導出復号鍵をその表現の形態にかかわらずクライアント暗号化復号鍵と比較することによって識別されたマッチング復号鍵のセットの何らかの表現を指す。マッチング復号鍵マップは、(i)クライアント-サーバ暗号化復号鍵のセットと(ii)クライアント暗号化/クライアント導出復号鍵のセットとの間のマッチを指定する。
いくつかの実装形態では、マッチング復号鍵マップを生成することは、サーバが、サーバ暗号化をクライアント-サーバ暗号化復号鍵から除去し、クライアント暗号化復号鍵の復元されたセットを生じさせることを含み得る。クライアント暗号化復号鍵の復元されたセットは、各々がクライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する復号鍵に対応するクライアント暗号化バージョンを含む。マッチング復号鍵マップの生成はまた、サーバがクライアント暗号化復号鍵の復元されたセットをクライアント暗号化/クライアント導出復号鍵のセットと比較することと、その比較に基づいて、クライアント暗号化復号鍵の復元されたセットとクライアント暗号化/クライアント導出復号鍵のセットの両方の中に含まれたマッチングクライアント暗号化復号鍵の指示を作成することとを含み得る。
サーバ204は、フィルタ処理されたクライアント暗号化クエリのセットを作成するために、マッチング復号鍵マップを使用してクライアント暗号化クエリをフィルタ処理する(514)。サーバ204は、インジケータ行列(または、マッチング復号鍵)に基づいてクライアント暗号化クエリのセットから有効なクエリをフィルタ処理し得る。クライアント暗号化クエリのセットから有効なクエリをフィルタ処理するために、サーバ204は、それに関してインジケータ行列の対応する要素が値1を有するクライアント暗号化クエリを選択する。言い換えれば、サーバ204は、それに関して対応するクライアント暗号化復号鍵がマッチング復号鍵であるクエリをクライアント暗号化クエリのセットから選択する。それに関してインジケータ行列内の対応する要素が値0を有する残りのクライアント暗号化クエリは選択されない。いくつかの実装形態では、クライアント暗号化クエリのセットのフィルタ処理は、クライアント暗号化/クライアント導出復号鍵のうちのいずれにもマッチしないクライアント暗号化復号鍵の復元されたセットに対応するデータベースエントリに対するバケット識別子を有するクエリをクライアント暗号化クエリから除去することによって実行される。
サーバ204は、複数のクライアント暗号化クエリを受信した後、サーバデータベース内のベストマッチであるクエリに基づいてデータを選択する。たとえば、サーバは、最高優先度および/または順序が割り当てられているエンティティ識別子に対応するコンテンツを選択し得る。たとえば、M人のユーザの中から特定のユーザにN個のエンティティ識別子とインジケータ行列内の対応する2進ベクトルとが割り当てられる。サーバ204は、2進ベクトル内のその対応する値が1であり、同時に2進ベクトル内に1が最初に発生するエンティティ識別子に基づく単一のクライアント暗号化クエリを選択することになる。いくつかの状況では、それは、前に論じたように、マッチする最も明確に定義されたクエリになる。サーバ204によって実装されるこの論理は、選択されたクエリが、有効であることと、クライアント202とサーバ204の両方によって事前に指定されたエンティティ識別子の順序に従うことの両方を可能にする。
サーバ204は、フィルタ処理されたクライアント暗号化クエリのセットを使用してクエリ結果のセットを生成する(516)。有効であり、かつエンティティ識別子の順序に従うクエリをフィルタ処理した後、サーバ204は、サーバデータベース上でクエリを実行して、コンテンツを検索し得る。サーバ204は、(プロセス200のステップ236を参照しながら説明した)プロセス400を使用して、クエリのシャードインデックスを使用してシャードを識別し、次いで、シャード内の各バケットに問い合わせて、サーバ204によって実行される吸収動作を使用して選択されたFHE暗号化値のリストを生成する。当然、クエリをフィルタ処理する代わりに、クエリが実行され結果がフィルタ処理され得るが、それは、クエリの実行前にクエリをフィルタ処理することがより効率的な情報検索プロセスを生じさせるように、より多くの処理を必要とすることになる。
図6は、上で説明した動作を実行するために使用され得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、記憶デバイス630、および入出力デバイス640を含む。構成要素610、620、630、および640の各々は、たとえば、システムバス650を使用して、相互接続され得る。プロセッサ610は、システム600内で実行するための命令を処理することが可能である。いくつかの実装形態では、プロセッサ610は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ610は、マルチスレッドプロセッサである。プロセッサ610は、メモリ620内または記憶デバイス630上に記憶された命令を処理することが可能である。
メモリ620は、システム600内に情報を記憶する。一実装形態では、メモリ620はコンピュータ可読媒体である。いくつかの実装形態では、メモリ620は揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
記憶デバイス630は、システム600に対する大容量記憶装置を提供することが可能である。いくつかの実装形態では、記憶デバイス630は、コンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入出力デバイス640は、システム600のための入出力動作を行う。いくつかの実装形態では、入出力デバイス640は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成された、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実装形態が使われてもよい。
例示的な処理システムが図6で説明されているが、本明細書で説明した主題および機能的動作の実装形態は、他のタイプのデジタル電子回路において、もしくは本明細書で開示する構造およびそれらの構造等価物を含む、コンピュータソフトウェア、ファームウェア、または、ハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。
主題の実施形態および本明細書で説明する動作は、デジタル電子回路において、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加として、プログラム命令は、データ処理装置による実行のために、好適な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械生成の電気、光、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されるかまたは他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは上記のものの組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング基盤およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとして含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)によって実行され得、装置もそれらとして実装されてよい。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらからデータを受信することもしくはそれらにデータを転送すること、またはその両方を行うために、動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有することは必須でない。その上、コンピュータは、ほんのいくつかの例を挙げれば、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。
ユーザとの対話を行うために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、陰極線管(CRT)モニタまたは液晶ディスプレイ(LCD)モニタ、ならびにキーボード、およびユーザがそれによってコンピュータに入力を提供することができるポインティングデバイス、たとえば、マウスまたはトラックボールを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を行うために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の知覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取ることができる。加えて、コンピュータは、ユーザによって使用されるデバイスへ文書を送信すること、およびそうしたデバイスから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザへウェブページを送信することによって、ユーザと対話することができる。
本明細書で説明する主題の実施形態は、たとえば、データサーバとして、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明する主題の一実装形態と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行し互いにクライアント-サーバ関係を有することによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示するとともにそのユーザからユーザ入力を受信するために)データ(たとえば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装形態の詳細を含むが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実施され得る。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の好適な部分組合せにおいて実施され得る。その上、特徴はいくつかの組合せで働くものとして上記で説明されることがあり、当初はそのようなものとして特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。
同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示した特定の順序もしくは逐次的な順序で実行されること、または例示したすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
100 環境
102 ネットワーク
104 ユーザデバイス
106 コンテンツプラットフォーム
110 コンテンツプロバイダ
150 クライアント
160 サーバ
162 エンティティ識別子
164 serverOPRF
166 クライアント導出OPRF値のセット、クライアント導出OPRF値、セット
168 クエリ、クエリグループ
170 サーバOPRFデータベース
172 サーバ暗号化OPRFクエリ結果のセット、セット
174 clientPRF
176 クライアント-サーバ暗号化OPRFクエリ結果のセット、セット
178 クライアント暗号化/クライアント導出OPRF値のセット、クライアント暗号化/クライアント導出OPRFクエリ値のセット、セット
180 serverPRF
182 サーバ-クライアント暗号化/クライアント導出OPRF値のセット、サーバ-クライアント暗号化/クライアント導出OPRFクエリ値のセット、セット
186 マッチングクエリのセット
190 クエリのサブセット
192 サーバデータベース、データベース
194 クエリ結果、サーバ暗号化クエリ結果、サーバ暗号化検索クエリ結果
196 クエリメタデータ
200 プロセス
202 クライアント
204 サーバ
300 プロセス
350 識別子
360 サーバ暗号化識別子
370 符号なし整数
380 変換数
390 結果
400 プロセス
500 プロセス
600 コンピュータシステム、システム
610 プロセッサ、構成要素
620 メモリ、構成要素
630 記憶デバイス、構成要素
640 入出力デバイス、構成要素
660 外部デバイス

Claims (17)

  1. コンピュータ実装方法であって、
    1つまたは複数のプロセッサを含むサーバが、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記クライアントデバイスから受信するステップと、
    前記サーバが、クライアント暗号化クエリの前記セットに基づいて、サーバ暗号化復号鍵のセットを識別するステップと、
    前記サーバが、サーバ暗号化復号鍵の前記セットを前記クライアントデバイスに送信するステップと、
    前記サーバが、前記クライアントデバイスによってさらに決定論的可換暗号化技法を使用して暗号化されているサーバ暗号化復号鍵の前記セットを含むクライアント-サーバ暗号化復号鍵のセットを前記クライアントデバイスから受信するステップと、
    前記サーバが、(i)サーバ暗号化復号鍵の前記セットとは無関係に前記クライアントデバイスによって導出された、および(ii)前記クライアントデバイスによって決定論的可換暗号化技法を使用して暗号化されるクライアント暗号化/クライアント導出復号鍵のセットを前記クライアントデバイスから受信するステップと、
    前記サーバが、(i)クライアント-サーバ暗号化復号鍵の前記セットと(ii)クライアント暗号化/クライアント導出復号鍵の前記セットとの間のマッチを指定するマッチング復号鍵マップを生成するステップであって、マッチング復号鍵マップを前記生成するステップが、
    前記サーバが、サーバ暗号化をクライアント-サーバ暗号化復号鍵の前記セットから除去し、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する各対応する復号鍵のクライアント暗号化バージョンを含むクライアント暗号化復号鍵の復元されたセットを生じさせるステップと、
    前記サーバが、クライアント暗号化復号鍵の前記復元されたセットをクライアント暗号化/クライアント導出復号鍵の前記セットと比較するステップと、
    前記比較に基づいて、クライアント暗号化復号鍵の前記復元されたセットとクライアント暗号化/クライアント導出復号鍵の前記セットの両方の中に含まれたマッチングクライアント暗号化復号鍵の指示を作成するステップと
    を含む、ステップと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリのセットを作成するために、前記マッチング復号鍵マップを使用してクライアント暗号化クエリの前記セットをフィルタ処理するステップであって、クライアント暗号化クエリの前記セットを前記フィルタ処理するステップが、前記クライアント暗号化/クライアント導出復号鍵のうちのいずれにもマッチしないクライアント暗号化復号鍵の前記復元されたセットに対応するデータベースエントリに対するバケット識別子を有するクエリを前記クライアント暗号化クエリから除去するステップを含む、ステップと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリの前記セットを使用してクエリ結果のセットを生成するステップと
    を含む、コンピュータ実装方法。
  2. 決定論的可換暗号化技法を使用して暗号化されたクライアント暗号化エンティティ識別子のセットを前記クライアントデバイスから受信するステップと、
    前記サーバが、サーバ-クライアント暗号化識別子のセットを作成するために、クライアント暗号化エンティティ識別子の前記セットを、決定論的可換暗号化技法を使用して暗号化するステップと、
    前記サーバが、サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに送信するステップと
    をさらに含む、請求項1に記載のコンピュータ実装方法。
  3. 前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用してクエリのセットを生成するステップと、
    前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用して復号鍵のセットを生成するステップと、
    前記クライアントデバイスが、前記クライアント暗号化クエリを作成するために、クエリの前記セットを暗号化するステップと
    をさらに含む、請求項2に記載のコンピュータ実装方法。
  4. 前記サーバが、データベース内に記憶されたデータのセットを暗号化するステップであって、前記データベース内の複数のエントリに対して、各データベースエントリが、サーバ暗号化され、対応する復号鍵によって復号されることが可能である、暗号化するステップと、
    前記サーバが、前記データベース内の前記複数のエントリに対して各対応する復号鍵を、決定論的可換暗号化を使用して暗号化するステップと、
    前記サーバが、前記クライアント暗号化クエリ内に含まれたデータベースバケット識別子に基づいて、サーバ暗号化復号鍵の前記セットを作成するステップであって、サーバ暗号化復号鍵の前記セットが、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する前記サーバ暗号化復号鍵を含む、作成するステップと
    をさらに含む、請求項3に記載のコンピュータ実装方法。
  5. 前記サーバが、サーバ-クライアント暗号化識別子の前記セットをシャッフルして、サーバ-クライアント暗号化識別子の前記セットとは異なる順序を有するシャッフルされたサーバ-クライアント暗号化識別子のセットを生じさせるステップ
    をさらに含み、
    サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに前記送信するステップが、前記シャッフルされたサーバ-クライアント暗号化識別子を前記クライアントデバイスに送信するステップを含み、
    前記クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記受信するステップが、シャッフルされたサーバ-クライアント暗号化識別子の前記セットを使用して生成された、シャッフルされたクライアント暗号化クエリのセットを受信するステップを含む
    請求項3に記載のコンピュータ実装方法。
  6. クライアント暗号化/クライアント導出復号鍵のセットを前記受信するステップが、(i)前記シャッフルされたサーバ-クライアント暗号化識別子を使用して前記クライアントデバイスによって導出された、および(ii)前記クライアントデバイスによって暗号化されるクライアント暗号化/クライアント導出復号鍵のシャッフルされたセットを受信するステップを含む、請求項5に記載のコンピュータ実装方法。
  7. システムであって、
    1つまたは複数のプロセッサを含むサーバが、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記クライアントデバイスから受信することと、
    前記サーバが、クライアント暗号化クエリの前記セットに基づいて、サーバ暗号化復号鍵のセットを識別することと、
    前記サーバが、サーバ暗号化復号鍵の前記セットを前記クライアントデバイスに送信することと、
    前記サーバが、前記クライアントデバイスによってさらに決定論的可換暗号化技法を使用して暗号化されているサーバ暗号化復号鍵の前記セットを含むクライアント-サーバ暗号化復号鍵のセットを前記クライアントデバイスから受信することと、
    前記サーバが、(i)サーバ暗号化復号鍵の前記セットとは無関係に前記クライアントデバイスによって導出された、および(ii)前記クライアントデバイスによって決定論的可換暗号化技法を使用して暗号化されるクライアント暗号化/クライアント導出復号鍵のセットを前記クライアントデバイスから受信することと、
    前記サーバが、(i)クライアント-サーバ暗号化復号鍵の前記セットと(ii)クライアント暗号化/クライアント導出復号鍵の前記セットとの間のマッチを指定するマッチング復号鍵マップを生成することであって、マッチング復号鍵マップを前記生成することが、
    前記サーバが、サーバ暗号化をクライアント-サーバ暗号化復号鍵の前記セットから除去し、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する各対応する復号鍵のクライアント暗号化バージョンを含むクライアント暗号化復号鍵の復元されたセットを生じさせることと、
    前記サーバが、クライアント暗号化復号鍵の前記復元されたセットをクライアント暗号化/クライアント導出復号鍵の前記セットと比較することと、
    前記比較に基づいて、クライアント暗号化復号鍵の前記復元されたセットとクライアント暗号化/クライアント導出復号鍵の前記セットの両方の中に含まれるマッチングクライアント暗号化復号鍵の指示を作成することと
    を含む、ことと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリのセットを作成するために、前記マッチング復号鍵マップを使用してクライアント暗号化クエリの前記セットをフィルタ処理することであって、クライアント暗号化クエリの前記セットを前記フィルタ処理することが、前記クライアント暗号化/クライアント導出復号鍵のうちのいずれにもマッチしないクライアント暗号化復号鍵の前記復元されたセットに対応するデータベースエントリに対するバケット識別子を有するクエリを前記クライアント暗号化クエリから除去することを含む、ことと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリの前記セットを使用してクエリ結果のセットを生成することと
    を含む、システム。
  8. 決定論的可換暗号化技法を使用して暗号化されたクライアント暗号化エンティティ識別子のセットを前記クライアントデバイスから受信することと、
    前記サーバが、サーバ-クライアント暗号化識別子のセットを作成するために、クライアント暗号化エンティティ識別子の前記セットを、決定論的可換暗号化技法を使用して暗号化することと、
    前記サーバが、サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに送信することと
    をさらに含む、請求項7に記載のシステム。
  9. 前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用してクエリのセットを生成することと、
    前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用して復号鍵のセットを生成することと、
    前記クライアントデバイスが、前記クライアント暗号化クエリを作成するために、クエリの前記セットを暗号化することと
    をさらに含む、請求項8に記載のシステム。
  10. 前記サーバが、データベース内に記憶されたデータのセットを暗号化することであって、前記データベース内の複数のエントリに対して、各データベースエントリが、サーバ暗号化され、対応する復号鍵によって復号されることが可能である、暗号化することと、
    前記サーバが、前記データベース内の前記複数のエントリに対する各対応する復号鍵を、決定論的可換暗号化を使用して暗号化することと、
    前記サーバが、前記クライアント暗号化クエリ内に含まれたデータベースバケット識別子に基づいて、サーバ暗号化復号鍵の前記セットを作成することであって、サーバ暗号化復号鍵の前記セットが、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する前記サーバ暗号化復号鍵を含む、作成することと
    をさらに含む、請求項9に記載のシステム。
  11. 前記サーバが、サーバ-クライアント暗号化識別子の前記セットをシャッフルして、サーバ-クライアント暗号化識別子の前記セットとは異なる順序を有するシャッフルされたサーバ-クライアント暗号化識別子のセットを生じさせること
    をさらに含み、
    サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに前記送信することが、前記シャッフルされたサーバ-クライアント暗号化識別子を前記クライアントデバイスに送信することを含み、
    前記クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記受信することが、シャッフルされたサーバ-クライアント暗号化識別子の前記セットを使用して生成された、シャッフルされたクライアント暗号化クエリのセットを受信することを含む
    請求項9に記載のシステム。
  12. クライアント暗号化/クライアント導出復号鍵のセットを前記受信することが、(i)前記シャッフルされたサーバ-クライアント暗号化識別子を使用して前記クライアントデバイスによって導出された、および(ii)前記クライアントデバイスによって暗号化されるクライアント暗号化/クライアント導出復号鍵のシャッフルされたセットを受信することを含む、請求項11に記載のシステム。
  13. 命令を記憶するコンピュータ可読記憶媒体であって、前記命令が、1つまたは複数のデータ処理装置によって実行されると、前記1つまたは複数のデータ処理装置に、
    1つまたは複数のプロセッサを含むサーバが、クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記クライアントデバイスから受信することと、
    前記サーバが、クライアント暗号化クエリの前記セットに基づいて、サーバ暗号化復号鍵のセットを識別することと、
    前記サーバが、サーバ暗号化復号鍵の前記セットを前記クライアントデバイスに送信することと、
    前記サーバが、前記クライアントデバイスによってさらに決定論的可換暗号化技法を使用して暗号化されているサーバ暗号化復号鍵の前記セットを含むクライアント-サーバ暗号化復号鍵のセットを前記クライアントデバイスから受信することと、
    前記サーバが、(i)サーバ暗号化復号鍵の前記セットとは無関係に前記クライアントデバイスによって導出された、および(ii)前記クライアントデバイスによって決定論的可換暗号化技法を使用して暗号化されるクライアント暗号化/クライアント導出復号鍵のセットを前記クライアントデバイスから受信することと、
    前記サーバが、(i)クライアント-サーバ暗号化復号鍵の前記セットと(ii)クライアント暗号化/クライアント導出復号鍵の前記セットとの間のマッチを指定するマッチング復号鍵マップを生成することであって、マッチング復号鍵マップを前記生成することが、
    前記サーバが、サーバ暗号化をクライアント-サーバ暗号化復号鍵の前記セットから除去し、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する各対応する復号鍵のクライアント暗号化バージョンを含むクライアント暗号化復号鍵の復元されたセットを生じさせることと、
    前記サーバが、クライアント暗号化復号鍵の前記復元されたセットをクライアント暗号化/クライアント導出復号鍵の前記セットと比較することと、
    前記比較に基づいて、クライアント暗号化復号鍵の前記復元されたセットとクライアント暗号化/クライアント導出復号鍵の前記セットの両方の中に含まれるマッチングクライアント暗号化復号鍵の指示を作成することと
    を含む、ことと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリのセットを作成するために、前記マッチング復号鍵マップを使用してクライアント暗号化クエリの前記セットをフィルタ処理することであって、クライアント暗号化クエリの前記セットを前記フィルタ処理することが、前記クライアント暗号化/クライアント導出復号鍵のうちのいずれにもマッチしないクライアント暗号化復号鍵の前記復元されたセットに対応するデータベースエントリに対するバケット識別子を有するクエリを前記クライアント暗号化クエリから除去することを含む、ことと、
    前記サーバが、フィルタ処理されたクライアント暗号化クエリの前記セットを使用してクエリ結果のセットを生成することと
    を含む動作を実行させる、コンピュータ可読記憶媒体。
  14. 決定論的可換暗号化技法を使用して暗号化されたクライアント暗号化エンティティ識別子のセットを前記クライアントデバイスから受信することと、
    前記サーバが、サーバ-クライアント暗号化識別子のセットを作成するために、クライアント暗号化エンティティ識別子の前記セットを、決定論的可換暗号化技法を使用して暗号化することと、
    前記サーバが、サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに送信することと
    をさらに含む、請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用してクエリのセットを生成することと、
    前記クライアントデバイスが、サーバ-クライアント暗号化識別子の前記セットを使用して復号鍵のセットを生成することと、
    前記クライアントデバイスが、前記クライアント暗号化クエリを作成するために、クエリの前記セットを暗号化することと
    をさらに含む、請求項14に記載のコンピュータ可読記憶媒体。
  16. 前記サーバが、データベース内に記憶されたデータのセットを暗号化することであって、前記データベース内の複数のエントリに対して、各データベースエントリが、サーバ暗号化され、対応する復号鍵によって復号されることが可能である、暗号化することと、
    前記サーバが、前記データベース内の前記複数のエントリに対する各対応する復号鍵を、決定論的可換暗号化を使用して暗号化することと、
    前記サーバが、前記クライアント暗号化クエリ内に含まれたデータベースバケット識別子に基づいて、サーバ暗号化復号鍵の前記セットを作成することであって、サーバ暗号化復号鍵の前記セットが、前記クライアント暗号化クエリ内に含まれたバケット識別子に対応する各データベースエントリに対する前記サーバ暗号化復号鍵を含む、作成することと
    をさらに含む、請求項15に記載のコンピュータ可読記憶媒体。
  17. 前記サーバが、サーバ-クライアント暗号化識別子の前記セットをシャッフルして、サーバ-クライアント暗号化識別子の前記セットとは異なる順序を有するシャッフルされたサーバ-クライアント暗号化識別子のセットを生じさせること
    をさらに含み、
    サーバ-クライアント暗号化識別子の前記セットを前記クライアントデバイスに前記送信することが、前記シャッフルされたサーバ-クライアント暗号化識別子を前記クライアントデバイスに送信することを含み、
    前記クライアントデバイスによって暗号化されたクライアント暗号化クエリのセットを前記受信することが、シャッフルされたサーバ-クライアント暗号化識別子の前記セットを使用して生成された、シャッフルされたクライアント暗号化クエリのセットを受信することを含む
    請求項15に記載のコンピュータ可読記憶媒体。
JP2022565671A 2021-10-19 2021-10-19 マルチキー情報検索 Active JP7440662B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/055514 WO2023069072A1 (en) 2021-10-19 2021-10-19 Multi-key information retrieval

Publications (2)

Publication Number Publication Date
JP2023548727A JP2023548727A (ja) 2023-11-21
JP7440662B2 true JP7440662B2 (ja) 2024-02-28

Family

ID=78617513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022565671A Active JP7440662B2 (ja) 2021-10-19 2021-10-19 マルチキー情報検索

Country Status (5)

Country Link
US (1) US20230318809A1 (ja)
EP (2) EP4283485A3 (ja)
JP (1) JP7440662B2 (ja)
KR (1) KR20230058314A (ja)
WO (1) WO2023069072A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128398A (ja) 2010-12-10 2012-07-05 Mitsubishi Electric Research Laboratories Inc プライバシを保護したまま暗号化された要素の順序を選択するための方法およびシステム
US20160344707A1 (en) 2015-05-21 2016-11-24 Nili Philipp Encrypted query-based access to data
US20180212756A1 (en) 2017-01-20 2018-07-26 Enveil, Inc. Secure Web Browsing via Homomorphic Encryption
US10691754B1 (en) 2015-07-17 2020-06-23 Hrl Laboratories, Llc STAGS: secure, tunable, and accountable generic search in databases
US20200342118A1 (en) 2019-04-24 2020-10-29 Google Llc Response-Hiding Searchable Encryption

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4315137A1 (en) * 2021-06-15 2024-02-07 Google LLC Encrypted information retrieval

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128398A (ja) 2010-12-10 2012-07-05 Mitsubishi Electric Research Laboratories Inc プライバシを保護したまま暗号化された要素の順序を選択するための方法およびシステム
US20160344707A1 (en) 2015-05-21 2016-11-24 Nili Philipp Encrypted query-based access to data
US10691754B1 (en) 2015-07-17 2020-06-23 Hrl Laboratories, Llc STAGS: secure, tunable, and accountable generic search in databases
US20180212756A1 (en) 2017-01-20 2018-07-26 Enveil, Inc. Secure Web Browsing via Homomorphic Encryption
US20200342118A1 (en) 2019-04-24 2020-10-29 Google Llc Response-Hiding Searchable Encryption

Also Published As

Publication number Publication date
JP2023548727A (ja) 2023-11-21
US20230318809A1 (en) 2023-10-05
EP4283485A2 (en) 2023-11-29
KR20230058314A (ko) 2023-05-03
EP4193290A1 (en) 2023-06-14
WO2023069072A1 (en) 2023-04-27
EP4283485A3 (en) 2024-02-21
EP4193290B1 (en) 2023-12-06

Similar Documents

Publication Publication Date Title
EP3058678B1 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
US10476662B2 (en) Method for operating a distributed key-value store
Baldimtsi et al. Sorting and searching behind the curtain
US10664610B2 (en) Method and system for range search on encrypted data
Yavuz et al. Dynamic searchable symmetric encryption with minimal leakage and efficient updates on commodity hardware
CN107077469B (zh) 服务器装置、检索系统、终端装置以及检索方法
CN111026788B (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
US20240104234A1 (en) Encrypted information retrieval
CN109361644B (zh) 一种支持快速搜索和解密的模糊属性基加密方法
Zhang et al. Dynamic and Efficient Private Keyword Search over Inverted Index--Based Encrypted Data
Sun et al. A dynamic and non-interactive boolean searchable symmetric encryption in multi-client setting
Lucani et al. Secure generalized deduplication via multi-key revealing encryption
US20230006813A1 (en) Encrypted information retrieval
Dhumal et al. Confidentiality-conserving multi-keyword ranked search above encrypted cloud data
JP7440662B2 (ja) マルチキー情報検索
US11310045B2 (en) Compression and oblivious expansion of RLWE ciphertexts
Duan et al. A searchable encryption scheme with hidden search pattern and access pattern on distributed cloud system
Hu et al. Toward Complex Search for Encrypted Mobile Cloud Data via Index Blind Storage
Jordão et al. Secure data storage in distributed cloud environments
CN117951730A (zh) 一种基于哈希索引的云端安全可搜索加密方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221121

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20221121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240215

R150 Certificate of patent or registration of utility model

Ref document number: 7440662

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150