JP7000601B2 - 劣線形公開鍵演算による非公開情報検索 - Google Patents

劣線形公開鍵演算による非公開情報検索 Download PDF

Info

Publication number
JP7000601B2
JP7000601B2 JP2020562672A JP2020562672A JP7000601B2 JP 7000601 B2 JP7000601 B2 JP 7000601B2 JP 2020562672 A JP2020562672 A JP 2020562672A JP 2020562672 A JP2020562672 A JP 2020562672A JP 7000601 B2 JP7000601 B2 JP 7000601B2
Authority
JP
Japan
Prior art keywords
data blocks
total
data
untrust
storage device
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
JP2020562672A
Other languages
English (en)
Other versions
JP2021521490A (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 JP2021521490A publication Critical patent/JP2021521490A/ja
Application granted granted Critical
Publication of JP7000601B2 publication Critical patent/JP7000601B2/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/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

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

Description

本開示は、劣線形暗号化演算による非公開(プライベート)情報検索に関する。
企業および個人は、複数のメモリロケーションに亘るメモリにデータを記憶するために分配ストレージシステム(すなわち、クラウドストレージサービス)を使用する。記憶されたデータに対して検索クエリを行うなどのクラウドストレージサービスによって提供される基本的な機能を使用するために、企業は、クラウドストレージサービスへのプレーンテキストアクセスを要求される。結果として、多くの政府および衛生、財政、および法律などの繊細で非公開の分野では、増加する利便性およびコストの有意性に反して、クラウドストレージサービスの使用を躊躇する。例えば、ユーザによるデータアクセスのパターンは、データおよび/またはユーザについての相当量の情報を提供することができる。
非公開情報検索(PIR)のスキームは、1以上のストレージデバイスをホストしているサーバに対してユーザまたは取り出したデータについてのいかなる知識も明らかにすることなく、ユーザが1以上のストレージデバイスからデータを取り出すことを可能にする。
PIRについて、サーバストレージデバイスは、一般的には、保護されておらず、非公開情報は、ストレージデバイス全体からデータをダウンロードするためにすべて許可されたサブスクライバのグループと共に、公開ストレージデバイスまたはサーバストレージデバイスのいずれかから取り出される。ユーザは、単にサーバストレージデバイスからコンテンツのすべてをダウンロードしてもよく、これによって、アクセスのパターンが明らかにされない一方で、複数のストレージデバイスに広がっているクラウドストレージサービスからすべてのコンテンツをダウンロードしなければならず、これは、長くかかり過ぎる。さらに、複数のユーザに対してアクセスを可能にさせる従来のPIRのスキームは、一般的に、ユーザ間において衝突または競合なく同時におよび独立してクエリ照会を行わせるために、状態無し(ステートレス)をユーザに対して要求する。ユーザが状態を保持しないので、これらの従来のPIRのスキームは、n個のブロックのデータベースに対してΩ(n)の暗号化演算をサーバに要求するので、計算コストが高くなる。
複数クライアントを伴うシングル‐サーバの非公開情報検索(PIR)システムにおいて、サーバは、ストレージ資源上のデータのプレーンテキストのブロックのセットを記憶する。サーバがデータブロックを生成し記憶する担当である一方で、ストレージ資源からの特定のデータブロックを取り出すクライアントは、どのブロックがクライアントによって取り出されたかをサーバが識別することができないという保証を望む。例えば、プレーンテキストデータブロックは、サーバが複数の異なる用途のために生成および分配する機械学習モデルを含んでもよい。クライアントがプレーンテキスト形式で機械学習モデルを取り出した場合、サーバおよびサーバに関連付けられている最終的なエンティティは、PIRによって提供された保証がない場合、クライアントについての重要な非公開情報を学習することができてしまう。
各々が共同でプレーンテキストデータをホストして複数のクライアントによるアクセスを提供することを担当する2つ以上のサーバを使用する既存のPIRの手順では、サーバは、非結託サーバ、つまり、サーバはサーバ間で情報を共有しないという想定が存在する。しかしながら、プレーンテキストデータを共同でホストする、サーバに関連付けられている異なるエンティティは、互いに競合同士であることができるので、実世界のシナリオにおいては、マルチ‐サーバによるPIRの手順は、実現不可能である。他方、シングル‐サーバを使用する既存のPIRの手順で は、クライアントデバイスが同時にプレーンテキストのデータブロックに独立してアクセスできることを保証するために、クライアントデバイスが状態を保持しないことを必要とする。しかしながら、スマートフォンなどの近代的なクライアントデバイスは、アプリケーションに100メガバイトのデータを記憶させることを可能にするので、クライアントについてのステートレス要件は、意味のないものであり、かつ、シングルサーバが行わなければならない暗号化処理の数に起因して計算量が多い。
本実施形態は、各クライアントが他のクライアントの状態とは独立して状態を保つことを可能にする非同期クライアントストレージモデルを使用するシングル‐サーバPIRのルーチンに向けられたものである。したがって、クライアントデバイスは、サーバによって管理されているストレージ資源に記憶されているプレーンテキストのデータブロックに対してクエリ照会を行った後に、他のクライアントデバイスの状態とは独立してそれ自体の状態を更新してもよい。同様に、クライアント状態が消失したとき、状態を再び取得するためにそのクライアンだけがサーバとの計算を行う必要がある。クライアントがローカルのストレージを使用して互いから独立して状態を保つことが可能になった結果、シングル‐サーバPIRルーチンは、サーバに対して秘匿的な態様においてデータブロックが取り出されることを保証するために必要とされる暗号化処理の数を最小化することによって、計算効率を著しく向上させた。例えば、100万の暗号化処理(べき乗)は、分単位のCPU時間を必要とし、他方で、100万のプレーンテキスト処理(例えば、加算/XOR)は、1秒未満の時間を必要とする。
忘却型ランダムアクセスメモリ(RAM)の手順では、ローカルのクライアントストレージを使用して効率を向上させる一方で、忘却型RAMの手順では、しばしば、複数のクライアントからのクエリ照会を行う能力を容易に犠牲にしている。例えば、ローカルのクライアントストレージを使用する忘却型RAMの手順では、クエリ照会を行っているクライアントが状態を更新する必要があるだけでなく、他のすべてのクエリ照会を行っていないクライアントもまた状態を更新しなければならないように、クライアントが同期した状態を有することを必要とする。結果として、クライアント状態の同期を保つために、クライアント同士が互いに通信することを必要とするか、または、サーバが各クライアントの状態を追跡しなければならず、これにより、サーバに対するより大きなストレージを導く。さらに、ほとんどの忘却型RAMの手順では、クライアントがストレージ資源に対して並行してアクセスすることは可能ではなく、または、パラレル忘却型RAMの手順に対してクライアント‐クライアント通信が必要とされる。
他方、二重効率PIRの手順では、すべてのクライアントが非公開鍵を共有し、互いに正直であるということを信頼するという犠牲を払って、より高速な計算時間を実現する。例えば、二重効率PIRの手順では、円滑なローカルの復号可能コード(例えば、リード‐マラー符号)の使用を通じて各ストレージ資源の要素に対しての処理を行うことを回避するが、各クライアントが単一の非公開鍵を共有してストレージ資源に対してクエリ照会を行うことを必要とする専用のクライアントモデルの使用を必要とする。複数のクライアントが単一の非公開鍵を共有するシナリオにおいて、単一のクライアントによる非公開鍵のサーバに対する漏洩は、サーバがすべてのクライアントのクエリ照会を行われたすべての指標を判別することを可能にする。さらに、二重効率PIRの手順では、q個のクエリを確実に操作することを可能にするために多くの(N,q)データベースのサイズを記憶しなければならない。q個のクエリの後、データベースは、単一のクライアントによって非公開で再び初期化されなければならず、新たな鍵がすべてのクライアントに提供されなければならない。クライアントが状態を保持することを可能にすることによって、本開示のシングル‐サーバPIRルーチンは、多くのクライアントに亘って再び初期化することを回避し、特定のクライアントがq個のクエリを実行した後、そのクライアントだけが効率的なクエリ照会を継続するためにサーバに対して状態を更新しなければならない一方で、他のクライアントは、状態を維持し、自由にクエリ照会を継続する。
本開示の1つの態様は、非公開情報検索(PIR)を使用してアントラストストレージデバイス上のデータブロックを秘匿的に取り出すための方法を提供する。方法は、クライアントデバイスのデータ処理ハードウェアが、非公開バッチ合計検索命令を実行して、アントラストストレージデバイスからのデータブロックのc個の合計Oを計算することによって、クライアントデバイス上のクライアント状態を初期化する工程であって、計算された合計Oの各々は、クライアントデバイスのメモリハードウェアに記憶されており、かつ、対応するサブセットSの丁度k個のデータブロックの合計を含む、初期化する工程を備える。方法は、データ処理ハードウェアが、クエリ命令を実行してアントラストストレージデバイスに記憶されているクエリブロックBを取り出す工程であって、メモリハードウェアに記憶されているデータブロックのc個の合計Oの各々を繰り返し処理してクエリブロックBを含まないc個の合計Oのうちの1つを識別し、アントラストストレージデバイスを管理しているサービスに対して、アントラストストレージデバイスのn個のデータブロックを、各々がk+1個のデータブロックを含むn/(k+1)個のパーティションに疑似ランダムに区分けするよう命令し、および、n/(k+1)個のパーティションの各々におけるk+1個のデータブロックを合計して、n/(k+1)個のパーティションの各々について、対応する暗号化されたデータブロック合計を決定し、n/(k+1)個のパーティションの1つは、クエリブロックBを含まない識別されたデータブロックのc個の合計Oを含む固定のパーティションを備え、固定のパーティションを含むn/(k+1)個のパーティションの暗号化されたデータブロック合計をアントラストストレージデバイスを管理しているサービスから取り出し、暗号化されたデータブロック合計を復号化して、クライアントデバイスのメモリハードウェアに記憶されている識別されたデータブロックのc個の合計Oから減算してクエリブロックBを得る、ことによる、クエリブロックBを取り出す工程と、をさらに備える。方法は、さらに、データ処理ハードウェア(124)が、クエリ(q)の数がクエリしきい値を超えているかどうかを決定する工程と、データ処理ハードウェア(124)が、クエリ(q)の数がクエリしきい値を超えている場合、クライアント状態を再び初期化する工程と、を備える。
本開示の実施形態は、以下の任意の特徴の1以上を備えてもよい。いくつかの実施形態において、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、クライアントデバイスにアントラストストレージデバイスに記憶されているすべてのデータブロックをクラス分けする工程であって、アントラストストレージデバイスは、n個のデータブロックを記憶する、クラス分け工程と、アントラストストレージデバイスからクラス分けされた選択されたデータブロックをデータブロックのc個のサブセットSのうちの対応するサブセットSに割り当てる工程と、対応するサブセットSに割り当てられた選択されたデータブロックを合計することによって、データブロックのc個の合計Oの各々を計算する工程と、を備える。他の実施形態において、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、アントラストストレージデバイスからm個のデータブロックをダウンロードして、メモリハードウェア上のストレージのためのデータブロックのc個の合計Oを計算する工程を備える。ここで、クライアントデバイスによってダウンロードされたm個のデータブロックの数は、k個のデータブロックの数とデータブロックのc個の合計Oの数との積に等しい。
さらに他の実施形態では、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、クライアントデバイスからアントラストストレージデバイスを管理しているサービスに対して非公開情報検索要求を送信して、t個のデータブロックをk個のバケットの各々から取り出す工程であって、非公開情報要求は、各々のt個のデータブロックをサービスに暗号化させ、および、アントラストストレージデバイス上に対応する非公開情報検索結果として記憶させる、工程と、加法準同型暗号のベクトルを生成する工程と、加法準同型暗号のベクトルをアントラストストレージデバイスにアップロードする工程であって、加法準同型暗号のベクトルは、アントラストストレージデバイスを管理しているサービスに、加法準同型暗号のベクトルを使用して非公開情報検索結果に対して加法準同型暗号計算を実行させ、加法準同型暗号計算は、データブロックの対応するc個の合計Oに対する暗号化テキスト値に対応する、工程と、アントラストストレージデバイスを管理しているサービスから暗号化テキストを受信し暗号化して、データブロックの対応するc個の合計Oを得る工程と、を備える。加法準同型暗号計算は、ドット積演算を含む。追加的に、または、代替え的に、tは1に等しくてもよい。
いくつかの例では、アントラストストレージデバイスを管理しているサービスに対して、アントラストストレージデバイスのn個のデータブロックを、n/(k+1)個のパーティションに疑似ランダムに区分けするよう命令することは、アントラストストレージデバイスのn個のデータブロックをn/(k+1)個のパーティションへと疑似ランダムに区分けするための命令を含む、疑似ランダム置換区分け鍵(κ)のベクトルを生成する工程と、クライアントデバイスからアントラストストレージデバイスを管理しているサービスに対して、疑似ランダム置換区分け鍵(κ)のベクトルを含む要求を送信する工程であって、要求は、サービスにアントラストストレージデバイスのn個のデータブロックをn/(k+1)個のパーティションへと疑似ランダムに区分けさせ、n/(k+1)個のパーティションの1つは、クエリブロックBを含まないデータブロックの識別されたc個の合計Oを含む固定のパーティションを含む、工程と、を備える。疑似ランダムパーティションは、各行が対応するパーティションを備え、各列が各パーティションにおけるk+1個のブロックの対応する1つについて増加的に生成された疑似ランダム置換を備える、2次元行列を含む。
本開示のシステムの態様は、非公開情報検索(PIR)を使用してアントラストストレージデバイス上のデータブロックを秘匿的に取り出すための方法を提供する。システムは、クライアントデバイスのデータ処理ハードウェアと、データ処理ハードウェアと通信している、クライアントデバイスのメモリハードウェアと、を備える。メモリハードウェアは、データ処理ハードウェアによって実行されたとき、データ処理ハードウェアに、非公開バッチ合計検索命令を実行して、アントラストストレージデバイスからのデータブロックのc個の合計Oを計算することによって、クライアントデバイス上のクライアント状態を初期化する工程であって、計算された合計Oの各々は、クライアントデバイスのメモリハードウェアに記憶されており、かつ、対応するサブセットSの丁度k個のデータブロックの合計を含む、初期化する工程を含む処理を行わせる命令を記憶する。処理は、また、クエリ命令を実行してアントラストストレージデバイスに記憶されているクエリブロックBを取り出す工程であって、メモリハードウェアに記憶されているデータブロックのc個の合計Oの各々を繰り返し処理してクエリブロックBを含まないc個の合計Oのうちの1つを識別し、アントラストストレージデバイスを管理しているサービスに対して、アントラストストレージデバイスのn個のデータブロックを、各々がk+1個のデータブロックを含むn/(k+1)個のパーティションに疑似ランダムに区分けするよう命令し、および、n/(k+1)個のパーティションの各々におけるk+1個のデータブロックを合計して、n/(k+1)個のパーティションの各々について、対応する暗号化されたデータブロック合計を決定し、n/(k+1)個のパーティションの1つは、クエリブロックBを含まない識別されたデータブロックのc個の合計Oを含む固定のパーティションを備え、固定のパーティションを含むn/(k+1)個のパーティションの暗号化されたデータブロック合計をアントラストストレージデバイスを管理しているサービスから取り出し、暗号化されたデータブロック合計を復号化して、クライアントデバイスのメモリハードウェアに記憶されている識別されたデータブロックのc個の合計Oから減算してクエリブロックBを得る、ことによる、クエリブロックBを取り出す工程と、を含む。方法は、さらに、クエリ(q)の数がクエリしきい値を超えているかどうかを決定する工程と、クエリ(q)の数がクエリしきい値を超えている場合、クライアント状態を再び初期化する工程と、を含む。
本開示のこの態様は、以下の任意の特徴の1以上を含んでもよい。いくつかの実施形態では、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、クライアントデバイスにアントラストストレージデバイスに記憶されているすべてのデータブロックをクラス分けする工程であって、アントラストストレージデバイスは、n個のデータブロックを記憶する、クラス分け工程と、アントラストストレージデバイスからクラス分けされた選択されたデータブロックをデータブロックのc個のサブセットSのうちの対応するサブセットSに割り当てる工程と、対応するサブセットSに割り当てられた選択されたデータブロックを合計することによって、データブロックのc個の合計Oの各々を計算する工程と、を備える。他の実施形態では、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、アントラストストレージデバイスからm個のデータブロックをダウンロードして、メモリハードウェア上のストレージのためのデータブロックのc個の合計Oを計算する工程を備える、ここで、クライアントデバイスによってダウンロードされたm個のデータブロックの数は、k個のデータブロックの数とデータブロックのc個の合計Oの数との積に等しい。
さらに、他の実施形態では、非公開バッチ合計検索命令を実行して、データブロックのc個の合計Oを計算することは、クライアントデバイスからアントラストストレージデバイスを管理しているサービスに対して非公開情報検索要求を送信して、t個のデータブロックをk個のバケットの各々から取り出す工程であって、非公開情報要求は、各々のt個のデータブロックをサービスに暗号化させ、および、アントラストストレージデバイス上に対応する非公開情報検索結果として記憶させる、工程と、加法準同型暗号のベクトルを生成する工程と、加法準同型暗号のベクトルをアントラストストレージデバイスにアップロードする工程であって、加法準同型暗号のベクトルは、アントラストストレージデバイスを管理しているサービスに、加法準同型暗号のベクトルを使用して非公開情報検索結果に対して加法準同型暗号計算を実行させ、加法準同型暗号計算は、データブロックの対応するc個の合計Oに対する暗号化テキスト値に対応する、工程と、アントラストストレージデバイスを管理しているサービスから暗号化テキストを受信し暗号化して、データブロックの対応するc個の合計Oを得る工程と、を備える。加法準同型暗号計算は、ドット積演算を含む。追加的にまたは代替え的に、tは1に等しくてもよい。
いくつかの例では、アントラストストレージデバイスを管理しているサービスに対して、アントラストストレージデバイスのn個のデータブロックを、n/(k+1)個のパーティションに疑似ランダムに区分けするよう命令することは、アントラストストレージデバイスのn個のデータブロックをn/(k+1)個のパーティションへと疑似ランダムに区分けするための命令を含む、疑似ランダム置換区分け鍵(κ)のベクトルを生成する工程と、クライアントデバイスからアントラストストレージデバイスを管理しているサービスに対して、疑似ランダム置換区分け鍵(κ)のベクトルを含む要求を送信する工程であって、要求は、サービスにアントラストストレージデバイスのn個のデータブロックをn/(k+1)個のパーティションへと疑似ランダムに区分けさせ、n/(k+1)個のパーティションの1つは、クエリブロックBを含まないデータブロックの識別されたc個の合計Oを含む固定のパーティションを含む、工程と、を備える。疑似ランダムパーティションは、各行が対応するパーティションを備え、各列が各パーティションにおけるk+1個のブロックの対応する1つについて増加的に生成された疑似ランダム置換を備える、2次元行列を含む。
本開示の1以上の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
状態を保持している複数のクライアントデバイスに対して分散システムの非一時的なデータストレージに記憶されているデータブロックへの秘匿的なアクセスを可能にする、例示的な非公開情報検索システムの概略図。 状態を保持している複数のクライアントデバイスに対して分散システムの非一時的なデータストレージに記憶されているデータブロックへの秘匿的なアクセスを可能にする、例示的な非公開情報検索システムの概略図。 データベース全体をアントラストストレージデバイスから状態を保持しているクライアントデバイスへとクラス分けする、例示的な非公開バッチ合計検索命令の概略図。 指定された数のデータブロックを分配システムのアントラストストレージデバイスから状態を保持しているクライアントデバイスへとダウンロードする、例示的な非公開バッチ合計検索命令の概略図。 クライアントデバイスからのバッチコードを使用して、分散システムのアントラストストレージデバイスを、各々が一定数のデータブロックを含む指定された数のバケットに暗号化する、例示的な非公開バッチ合計検索ルーチンの概略図。 クライアントデバイスからのバッチコードを使用して、分散システムのアントラストストレージデバイスを、各々が一定数のデータブロックを含む指定された数のバケットに暗号化する、例示的な非公開バッチ合計検索ルーチンの概略図。 クライアントデバイスからのバッチコードを使用して、分散システムのアントラストストレージデバイスを、各々が一定数のデータブロックを含む指定された数のバケットに暗号化する、例示的な非公開バッチ合計検索ルーチンの概略図。 分散システムのアントラストストレージデバイスに記憶されているデータブロックを明らかに取り出すためにクライアントデバイスで実行される例示的なクエリ命令の概略図。 分散システムのアントラストストレージデバイスに記憶されているデータブロックを明らかに取り出すためにクライアントデバイスで実行される例示的なクエリ命令の概略図。 分散システムのアントラストストレージデバイスに記憶されているデータブロックを明らかに取り出すためにクライアントデバイスで実行される例示的なクエリ命令の概略図。 擬似ランダム区分け鍵のベクトルを生成するための例示的なアルゴリズムを提供する図。 クライアントデバイスによって生成された擬似ランダム区分け鍵のベクトルを使用してデータベースを区分けするための例示的なアルゴリズムを提供する図。 非公開バッチコードルーチンを実行することによって、クライアントデバイスを初期化するための例示的なアルゴリズムを提供する図。 アントラストストレージデバイスからクエリブロックを秘匿的に取り出すためのクエリ命令を実行するための例示的なアルゴリズムを提供する図。 疑似ランダム関数鍵を生成するための例示的なアルゴリズムを提供する図。 データベースを区分けし、クライアントデバイスによって生成された疑似ランダム区分けキーを使用して固定のパーティションを抽出するための例示的なアルゴリズムを提供する図。 非公開情報検索を使用して、アントラストストレージデバイスからデータブロックを秘匿的に取り出す方法の処理の例示的な構成のフローチャート。 明細書で説明されるシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイスの概略図。
様々な図面における同様の参照記号は、同様の要素を示す。
本明細書の実施形態は、各々が非同期の状態を有する複数のクライアントデバイスが、サービスプロバイダによって管理される信頼されていない(アントラスト)メモリに記憶されているデータブロックを秘匿的に取り出すことを可能にするシングル‐サーバ非公開情報検索(PIR)ルーチンに向けられている。アントラストメモリは、クライアントデバイスがアクセスできるクラウド環境で実行される分散ストレージシステムのストレージ資源を含んでもよい。アントラストメモリに記憶されているデータブロックは、公に知られており、かつ、暗号化されていない(例えば、プレーンテキスト)。したがって、独立したストレージ(例えば、非同期の状態)を有する複数のクライアントデバイスを備えたシングル‐サーバのPIRルーチンは、アントラストメモリから、公に知られ、かつ、暗号化されていないデータアクセスのパターンを効果的に隠す。1つの例では、ストレージ資源(例えば、アントラストメモリ)を管理するサービスプロバイダは、クライアントデバイスに提供するための機械学習モデルを生成してもよい。ここで、サーバプロバイダは、生成された機械学習モデルをストレージ資源上のデータブロックとして記憶してもよく、クライアントデバイスは、クライアントに関する非公開情報を使用して特定の機械学習モデルに対してクエリ照会することができる。シングル‐サーバのPIRルーチンは、機械学習モデルを提供するサービスプロバイダが、クライアントデバイスによって取り出された機械学習モデルを学習することを防ぐ。別の例では、出荷時設定へのリセットが行われているクライアントデバイスは、クライアントデバイスが企業グループまたは個人に関連付けられているかどうかを検査することがしばしばある。クライアントデバイスの製造元(またはクライアントデバイス上で実行されるオペレーティングシステムまたはその他のソフトウェアのプロバイダ)は、企業識別子と関連付けられているクライアント識別子のセットをプレーンテキストとして記憶することができる。クライアントデバイスが特定の企業グループに属している場合、出荷時設定へのリセットを完了するために追加の操作が必要になる場合がある一方で、クライアントデバイスが企業グループに属しない場合は、シングル‐サーバのPIRルーチンは、クライアントデバイスに関連付けられたクライアント識別子が製造元に決して漏洩されないことを確実にする。
非同期の状態は、アントラストメモリに記憶されたデータに対してクエリ照会を実行した後、クライアントデバイスが互いに独立して状態を更新できるようにするために、他のクライアントデバイスから独立したストレージを有する各クライアントデバイスを参照する。同様に、クライアントデバイスが状態を解放することを決定した場合、他のすべてのクライアントデバイスのクエリは、アントラストメモリを管理するサーバから隠されたままである。シングル‐サーバのPIRルーチンを構築し、後により効率的なオンラインクエリを提供するために、クライアントデバイスは、最初に非公開バッチ合計取得ルーチンを実行して状態を初期化し、その後、制約付き疑似ランダム区分け命令を実行し、これにより、クライアントデバイスがアントラストメモリに記憶されているデータブロックに対してクエリ照会を実行するときに、クライアントデバイスがアントラストメモリを管理するサービスへ固定のパーティションを通信することを可能にする。
図1および図2は、分配システム140上の公に知られ、かつ、暗号化されていないn個のデータブロック(B)102を記憶するための例示的なシステム100であって、非同期の状態250を保持している複数のクライアントデバイス120,120a-nが、クライアントデバイス120によるデータブロック(B)102上の検索機能を維持しつつ、アクセスのパターンを秘密にしてデータブロック(B)を秘匿的に取り出す非公開情報検索(PIR)を使用することを可能にするシステム100を示す。つまり、クライアントデバイス120は、データブロック102を所有しておらず、データブロック102のコンテンツは、構成されて公に利用可能である。クライアント10に関連付けられているクライアントデバイス120(例えば、コンピュータ)は、ネットワーク130を通じてスケーラブル/エラスティックな非一時的な抽象化ストレージ150を有する分配システム140と通信する。クライアントデバイス120は、関連付けられているメモリハードウェア122および関連付けられているデータ処理ハードウェア124を含んでもよい。クライアントデバイス120の各々は、抽象化ストレージ150に記憶されているデータブロック(B)102に対して問い合わせるためのクエリ命令300を実行するとき、1以上のデータブロック(B)102を記憶するために関連付けられているメモリハードウェア122を活用して状態250を保持する。抽象化ストレージ150(例えば、ファイルシステム、データストア等)は、ストレージ資源114の上に重ねられ、1以上のクライアントデバイス120によるストレージ資源114のスケーラブルな使用を可能にする。
いくつかの実施形態では、分配システム140は、抽象化ストレージ150へのアクセスを管理するコンピューティングデバイス112(例えば、サーバ)を実行する。例えば、サーバは、データブロックを生成し、プレーンテキスト形式で抽象化ストレージ上に記憶し、クライアントデバイス120は、抽象化ストレージ150からデータブロック102をプレーンテキスト形式で取り出す。本例示は、ネットワーク130を通じて分配システム140に関連付けられているアントラスト(信頼されていない)側と通信するクライアントデバイス120に関連付けられているトラスト(信頼されている)側を有するシステム100を示すが、システム100は、代替的に、トラストコンピューティングデバイス(CPU)およびアントラストデータストレージを有する大規模イントラネットに実装されてもよい。分配システム140またはデータストレージに関連付けられているアントラスト側は、「honest-but-curious」として考慮されており、これは、コンピューティングデバイス112は、正直にプロトコルに従うが、分配システム140によって漏洩した情報を使用して追加的な洞察を得るためにいずれかの多項式時間乱択アルゴリズムを行う。
いくつかの実施形態では、分配システム100は、資源110,110a-zを含む。資源110は、ハードウェア資源およびソフトウェア資源を含む。ハードウェア資源110は、コンピューティングデバイス112(データ処理デバイスおよびデータ処理ハードウェアとしても参照される)または非一時的メモリ114(メモリハードウェアおよびストレージ資源としても参照される)を含んでもよい。ソフトウェア資源11は、ソフトウェアアプリケーション、ソフトウェアサービス、アプリケーションプログラミングインタフェース(API)またはこれに類するものを含んでもよい。ソフトウェア資源110は、ハードウェア資源110内に常駐してもよい。例えば、ソフトウェア資源110は、メモリハードウェア114内に記憶されてもよく、またはハードウェア資源110(例えば、コンピューティングデバイス112)は、ソフトウェア資源110を実行してもよい。
ソフトウェアアプリケーション(すなわち、ソフトウェア資源110)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを参照する。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」として参照されてもよい。アプリケーションの例は、限定するものではないが、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲーミングアプリケーションを含む。
メモリハードウェア114,122は、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラムの状態情報)をコンピューティングデバイス112および/またはクライアントデバイス120(すなわち、クライアントデバイス120のデータ処理ハードウェア124)による使用のために一時的または永続的に記憶するために使用される物理的なデバイスであってもよい。メモリハードウェア114,122は、揮発的および/または不揮発的なアドレス可能な半導体メモリであってもよい。不揮発性メモリの例は、限定するものではないが、フラッシュメモリ、リードオンリーメモリ(ROM)/プログラム可能リードオンリーメモリ(PROM)/消去可能なプログラム可能リードオンリーメモリ(EPROM)/電気的に消去可能なプログラム可能リードオンリーメモリ(EEPROM)(例えば、ブートプログラム等のファームウェアに対して通常に使用される)を含む。揮発性メモリの例は、限定するものではないが、ディスクまたはテープと同様に、ランダムアクセスメモリ(RAM)、忘却型ランダムアクセスメモリ(ORAM)、ダイナミックアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)を含む。
ネットワーク130は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)および/またはインターネット等の様々なタイプのネットワークを含んでもよい。ネットワーク130は、長い範囲のネットワーク(例えば、インターネットまたはWAN)を表してもよいが、いくつかの実施形態では、ネットワーク130は、ローカルエリアネットワーク(LAN)等のより短い範囲のネットワークを含む。いくつかの実施形態では、ネットワーク130は、標準通信技術および/またはプロトコルを使用する。つまり、ネットワーク130は、イーサーネット(登録商標)、ワイヤレスフィディリティー(WiFi)(例えば、802.11)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMax)、3G、ロングタームエボリューション(LTE)、デジタルサブスクライバーライン(DSL)、非同期転送モード(ATM)、インフィニバンド、PCIエクスプレスアドバンストスイッチング、ブルートゥース(登録商標)、ブルートゥースローエナジー(BLE)等の技術を使用したリンクを含むことができる。同様に、ネットワーク130に使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)等を含むことができる。ネットワーク130を通じたデータ交換は、ハイパーマックアップ言語(HTML)、拡張可能なマーク付け言語(XML)等を含む技術および/または形式を使用して表されることができる。加えて、リンクのすべてまたはいくつかは、セキュアソケットレイヤ(SSL)、転送レイヤセキュリティ(TLS)、仮想プライベートネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)等の従来の暗号化技術を使用して暗号化されることができる。他の例では、ネットワーク130は、上述した技術に替えて、または、加えて、カスタムおよび/または専用のデータ通信技術を使用する。
データブロック102は、データの原子単位系に対応し、各々が、それぞれBバイトのサイズを有する。例えば、分配システム上のストレージに対するBの代表値は、64キロバイト(KB)から256バイト(B)であってもよい。nの表記は、ストレージ資源114に関連付けられ、および、PIRを使用して抽象化ストレージ150に記憶されているデータブロック102の数を表示する。n個のデータブロック(B)102の各々は、メモリハードウェア114に亘って重ねられている抽象化ストレージ150の対応するメモリ位置118,118a-n(図1B)に記憶されている。とりわけ、n個のデータブロック(B)102は、PIRストレージに関連付けられており、ここで、n個のデータブロック(B)102は、1以上のストレージ資源114に記憶され、および、暗号化されておらず、公に利用可能である。例えば、暗号化されていない、公のデータブロック(B)は、分配システム140によって生成された機械学習モデルに関連付けられ、および、クライアントデバイス120によってダウンロードのために入手可能であってもよい。
分配システム140の抽象化ストレージ150(例えば、データベース)によって記憶された公に知られているプレーンテキストのデータブロック120に対してより効率的なクエリ照会を提供するために、各クライアントデバイス120は、非公開バッチ合計検索(BSR)命令を実行することによって対応する状態250を初期化し、これによって、クライアントデバイス120は、クライアントデバイス120のメモリハードウェア122においてストレージのための抽象化ストレージ150からデータブロック120Oのc個の合計を計算する。ここで、計算されたc個の合計Oの各々は、対応するサブセットSの丁度k個のデータブロック120の合計を含む。いくつかの実施形態では、各クライアントデバイス120は、データブロック102のc個の合計O,O,...,Oの各々を計算する前に、ランダム置換(π,π,..,π)を生成し、対応するサブセットS,S,...,Sにおけるk番目の各ブロックに対して適用する 。クライアントデバイス120は、後の時間においてデータブロック102に対してより効率的なクエリ照会を提供するために、停止期間(例えば、夜間)に状態250を初期化し、非公開BSR命令200を実行してもよい。しきい値の数のクエリ照会を行った後に、各クライアントデバイス120は、他のクライアントデバイス120の状態250とは独立したその状態250を他のクライアントデバイス120によるクエリ照会を妨げることなく再び初期化する。
クライアントデバイス120は、限定するものではないが、データベースのサイズ(例えば、データブロック102のnの数)、計算要件、および/または、帯域要件を含む1以上の要素に基づいて、様々な非公開BSR命令200を選択してもよい。例えば、非公開BSR命令200は、抽象化ストレージ150からすべてのn個のデータブロック102をクラス分けして、データブロックのc個の合計Oの各々を計算するための対応するc個のサブセットSに選択したデータブロック102を割り当てるクラス分け非公開BSR200a,200(図2A)を含んでもよい。他の例では、非公開BSR命令200は、データブロックOのc個の合計を計算するためにm個のデータブロック102を抽象化ストレージ150からダウンロードするバッチ非公開BSR命令200b,200(図2B)を含んでもよい。さらに他の例では、非公開BSR命令200は、抽象化ストレージ150をk個のバケットに区分けし、c個の合計を計算されるデータブロック102の各々のOのために、k個のバケットの各々からt個のデータブロックをダウンロードしてメモリハードウェア122上のストレージのために(すなわち、状態250内に)データブロック120の対応するOの合計を計算するバッチコード非公開BSR命令200c,200(図2C~図2E)を含んでもよい。一般的に、小さなサイズのデータベースに対しては、クラス分け非公開BSR命令200aが最も効率的である一方で、より大きなサイズのデータベースに対しては、バッチコード非公開BSR命令200cが最も効率的である。バッチ非公開BSR命令200bは、中程度の大きさのデータベースに対して最も効率的なクエリ照会を提供する。
状態250を初期化した後、クライアントデバイス120は、抽象化ストレージ200に記憶されているクエリブロックBを秘匿的に取り出すためにクエリ命令300を実行する。ここで、クライアントデバイス120は、対応する状態250を繰り返し検索して、クエリブロックBを含まないc個の合計Oの1つを識別する。クエリブロックBを含まないc個の合計Oを識別するに際し、クライアントデバイス120は、n個のデータブロックの抽象化ストレージを疑似ランダムに区分けして各々がk+1個のデータブロックを含むn/(k+1)個のパーティション350にするよう命令する要求320を抽象化ストレージ150を管理しているサーバ(例えば、サーバ)160に対して送信してもよく、n/(k+1)個のパーティションの各々におけるk+1個のデータブロックを合計して、n/(k+1)個のパーティションの各々に対する対応する暗号化されたデータブロック合計302を決定する。n/(k+1)個のパーティションのパーティション350は、二次元配列を含んでもよい。有利には、区分け要求320は、n/(k+1)個のパーティションの1つの識別されたc個の合計Oを含む固定のパーティションを組み込んでもよく、ここで、識別されたc個の合計Oは、二次元配列のランダムな行(例えば、r番目の行)に組み込まれる。秘匿的に、サービス160は、クエリブロックB(例えば、+1ブロック)と共に、データブロック102(すなわち、k個のデータブロック)の識別されたc個の合計Oに対する固定のパーティションを含む暗号化されたデータブロック合計302を返す。暗号化されたデータブロック合計302の受信に応答して、クライアントデバイス120は、(例えば、データ処理ハードウェア124を通じて)復号化し、暗号化されたデータブロック合計302をデータブロック102の識別されたc個の合計Oから減算し、クエリブロックBを得る。つまり、命令300を実行することによって、クライアントデバイス120は、クライアントデバイス120による分配システム140に対して実行されたクエリ照会のシーケンスと共に、データブロック102のコンテンツを明らかにすることなく、データブロックBを取り出すことができる。サービス160は、データ処理ハードウェア112において実行されてもよい。
図1Bを参照して、いくつかの実施形態において、分配ストレージシステム140は、緩く結合されたメモリホスト110,110a-z(例えば、コンピュータまたはサーバ)を含み、各々は、データをキャッシュするために使用されてもよいストレージ資源114(例えば、メモリハードウェア、メモリハードウェア、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)および/またはディスク)と通信するコンピューティング資源112(例えば、1以上のプロセッサまたは中央処理装置(CPU))を有する。抽象化ストレージ150は、ストレージ資源114の上に重ねられてストレージ資源114の1以上のクライアントデバイス120,120a-nによるスケーラブルな使用を可能にする。クライアントデバイス120は、ネットワーク130を通じて(例えば、遠隔手続き呼出し(RPC)を通じて)メモリホスト110と通信してもよい。コンピューティング資源112は、サービス160を実行してもよい。
いくつかの実施形態では、分配ストレージシステム140は、「シングル-サイド」であり、これは、クライアントデバイス120がデータブロック102に対してクエリ(q)を実行する命令300を実行したとき、クライアントデバイス120からのクエリに応答するための抽象化ストレージ150からデータブロック102を取り出すいかなるサービスジョブの必要性も省く。「シングル-サイド」は、メモリホスト110において処理される要求のほとんどに対してメモリホスト110のCPU112においてソフトウェアによって行われるよりもハードウェアにおいて行われる方法を参照する。シングル-サイド分配キャッシュシステムに関するさらなる概念および特徴は、ここで参照によりその全体を本明細書に援用する米国特許第9,164,702号において確認することができる。
分配システム140は、データブロック102を遠隔メモリホスト110(例えば、抽象化ストレージ200)のストレージ資源114(例えば、メモリハードウェア)の周辺で秘匿的に移動させ、ネットワークインターフェイスコントローラ(NIC)116の機能を有するRPCを通じて、または、リモートダイレクトメモリアクセス(RDMA)を通じて、遠隔メモリホスト110からデータブロック102を取得する。ネットワークインターフェイスコントローラ116(ネットワークインタフェースカード、ネットワークアダプタ、またはLANアダプタとしても知られている)は、コンピューティングデバイス/資源112をネットワーク130に接続させるコンピュータハードウェア要素であってもよい。メモリホスト110a-zおよびクライアントデバイス120の両方は、各々がネットワーク通信のためのネットワークインタフェースコントローラ116を有してもよい。ハードウェア資源110の物理的なプロセッサにおいて実行される命令300は、メモリ114のリモートダイレクトメモリアクセス可能な領域/ロケーション118A-Nの1つのセットをネットワークインタフェースコントローラ116と共に登録する。各メモリロケーション118は、対応するデータブロック102を記憶するように構成される。
図2Aは、クライアントデバイス120上で実行され、各々の合計が丁度k個のデータブロックを含むデータブロック102のOのc個の合計を計算するためにPIR抽象化ストレージ114,150(例えば、抽象化ストレージ/データベース)のコンテンツ全体をクラス分けする、クラス分け非公開BSR命令200aの例を提供する。n個のデータブロック102のクラス分けを初期化するために、クライアントデバイス102は、ストリーム要求202をPIR抽象化ストレージ150を管理するサービス160に送信してもよい。n個のデータブロック102のすべてがクラス分けされるので、命令200aは、サーバ160に対してどのデータブロック102がクライアントデバイス120によってアクセスされたかを隠す必要がない。クライアントデバイス120は、クラス分けにおいて選択されたデータブロック102をデータブロック102のc個のサブセットの中からサブセットS,S,...,Sの対応するサブセットに対して割り当ててもよい。次いで、クライアントデバイス120は、対応するサブセットS,S,...,Sに割り当てられた選択されたk個のデータブロックを合計することによって、c個の合計O,O,...,O(例えば、出力)の各々を計算する。サブセットSの各々について、クライアントデバイス120は、サブセットSに含められているデータブロックB,B,...,Bの各々に対して、対応するランダム置換をさらに適用してもよい。クライアントデバイスのメモリハードウェア122に記憶されているデータブロックの総数mは、サブセットSの総数cに各サブセットに割り当てられたデータブロックkの数を乗じたものに等しい。クラス分け非公開BSR命令200aは、クライアントデバイス120において帯域O(n),加算O(m),およびローカルメモリO(c)を使用してもよい。
図2Bは、クライアントデバイス120上で実行され、各々がk個のデータブロックを含む合計であるデータブロック102のOのc個の合計を計算するために丁度m個のデータブロックをPIR抽象化ストレージ114,150からダウンロードするダウンロード要求204をクライアントデバイス120に送信させるバッチ非公開BSR命令200bの例を提供する。したがって、クラス分け非公開BSR命令200bがPIR抽象化ストレージ114,150からすべてのn個のデータブロックをクラス分けする一方で、バッチ非公開BSR命令200bは、クライアント状態250のc個のサブセットSを組み立てるのに必要なm個のデータブロック102だけをダウンロードする。クライアントデバイスによってダウンロードされたデータブロックの数であるmは、データブロックの数kとデータブロックのOを合計した数であるcとの積に等しいので、命令200bは、丁度k個のデータブロックをデータブロック102のc個のサブセットの中からサブセットS,S,...,Sの対応するサブセットに対して割り当てる。次いで、クライアントデバイス120は、対応するサブセットS,S,...,S(例えば、入力)に割り当てられた選択されたk個のデータブロックを合計することによって、c個の合計O,O,...,O(例えば、出力)の各々を計算する。サブセットSの各々について、クライアントデバイス120は、サブセットSに含められているデータブロックB,B,...,Bの各々に対して、対応するランダム置換をさらに適用してもよい。バッチ非公開BSR命令200bは、計算の帯域O(mlogn+λ+mB)およびO(n)を使用してもよい。
図2C~図2Eは、クライアントデバイス120上で実行され、n個のデータブロックのPIR抽象化ストレージ114,150をk個のバケット260へと区分け/分割/セグメント化し、クライアントデバイス120上のストレージのために計算されるデータブロック102のc個の合計Oの各々のためにt個のデータブロックをk個のバケット260の各々からダウンロードしてデータブロック102の対応する合計Oを計算するバッチコード非公開BSR命令200bの例を提供する。より小さなバケット260は、クライアントデバイス120がバッチコード非公開BSR命令200bの実行の間に状態250を初期化するとき、抽象化ストレージ150を小分けして帯域を増加させる。クライアントデバイス120によって区分けされた分配システム140におけるk個のバケット260の数は、保守および/または帯域要件に基づいて調整可能である。示す例では、抽象化ストレージ150のn個のデータブロック102は、4つのバケット260,260a―dに区分けされ、4つのバケット260,260a-dは、集合的にN(例えば、16)個のデータブロック102A-102Nを含む。さらに、k個のバケット260の各々の中のデータブロック102は、符号化関数を使用して暗号化される。
図2Cは、バッチコード262をサービス160に送信することによって命令200bを初期化し、これによって、サービス160に抽象化ストレージ150をk個のバケット250a-dへと区分けさせ、かつ、符号化関数を使用してすべてのk個のバケットに現れるN個のブロック102を符号化させるクライアントデバイスを示す。バッチコード262は、最大m個のアイテムを伴うサブセットSのいずれに対しても、k個のバケット260の各々における最大t個のアイテムを読み出すことによって、対応するサブセットSに割り当てられたブロックのセットが取り出されることを確実にする。ここで、実施形態は、tを1に等しく設定する。いくつかの例では、 バッチコード262は、カッコーバッチコードを含む。クライアントデバイス120は、データ処理ハードウェア124と通信している暗号化モジュール305を含み、バッチコード262を提供する。暗号化モジュール305は、データ処理ハードウェア124上で実行するソフトウェアを含むか、または、データ処理ハードウェア124と通信する分離したハードウェアを含んでもよい。例えば、図2Cは、第1および第2のサブセットS,S(例えば、cは2つのサブセットSに等しい)のための丁度k個のデータブロックを取り出すために初期化しているクライアントデバイス120の状態250をさらに示す。2つのサブセットのみが例として示されるが、他の例では、2つを超えるサブセットが含まれてもよい。
図2Dは、バッチコード非公開BSR命令200cを実行するに際し、第1のサブセットSのためのk個のバケット260a-260dの各々からt個のデータブロック102をダウンロードするためにサービス260にPIR要求を送信するクライアントデバイス120を示す。示されていないが、クライアントデバイス120は、第2のサブセットSに入力するためのk個のバケットの各々からt個のデータブロック102をダウンロードするために対応するPIR要求264も送信する。PIR要求264の受信に応答して、サービスは、k個のバケット260から取り出されたt個のデータブロック102の各々を暗号化して、第1のサブセットSに関連付けられている対応する非公開情報検索結果r,r,r,rとして記憶する。したがって、結果は、分配システム140のストレージ資源114上に記憶される。示される例では、tは、1に等しく、サービス160は、ブロック2をバケット1 260aからPIR結果rとしてランダムにダウンロードし、暗号化し、および、記憶し;ブロック7をバケット2 260bからPIR結果rとしてランダムにダウンロードし、暗号化し、および、記憶し;ブロック12をバケット3 260cからPIR結果rとしてランダムにダウンロードし、暗号化し、および、記憶し;ならびに、ブロック15をバケット4 260dからPIR結果rとしてランダムにダウンロードし、暗号化し、および、記憶する。
第1のサブセットSのためのバケット260の各々からt個のデータブロック102をダウンロードするためにPIR要求304を送信した後、クライアントデバイスは、加法準同型暗号のベクトル266生成し、その加法準同型暗号のベクトル(e,e,e,e)266を分配システム140(例えば、抽象化ストレージ150)にアップロードする。いくつかの例では、計算される合計Oiがバケット260のi番目から合計Oiの一部としてブロック102を必要とする場合に限り、準同型暗号eは、1の暗号であり、そうでない場合、準同型暗号eは、ゼロ(0)の暗号である。加法準同型暗号のベクトル(e,e,e,e)266は、サービス160に、第1のサブセットSに関連付けられている非公開情報検索結果r,r,r,rに対して加法準同型暗号のベクトル(e,e,e,e)266を使用して、加法準同型暗号計算268を実行させる。加法準同型暗号計算268は、データブロックの対応するc個の合計Oに対する暗号化テキスト値に対応する。加法準同型暗号は、サービス160に加法準同型暗号計算268を行わせ、これによって、k個のバケット260からダウンロードされた符号化された結果が合計され、よって、暗号化演算を行うことに関連する計算コストを軽減させる。示される例において、加法準同型暗号計算268は、ドット積演算を含む。次いで、サービス160は、対応するデータブロックのc個の合計O(例えば、図2Dの例における合計O)に対する暗号化テキスト値をクライアントデバイス120に返し、クライアントデバイス120は、暗号化テキスト値を復号化してデータブロックのc個の合計O(例えば、図2Dの例における合計O)をローカルのメモリハードウェア122上のストレージのために計算して、状態250を初期化する。この処理は、計算されるデータブロックのc個の合計Oの各々に対して繰り返される。
図3A~図3Cは、図2A~図2Eの非公開BSR命令200の実行を通じて状態150を初期化した後に抽象化ストレージ150からクエリブロックBを取り出すクライアントデバイス120上で実行するクエリ命令300の例を提供する。図3Aは、クエリブロックBを含まないc個の合計Oのうちの1つを識別するために、メモリハードウェア122に記憶されているデータブロック1-2のc個の合計Oの各々を繰り返し処理するクライアントデバイス120を示す。示される例では、3番目の合計OがクエリブロックBを含まないことを識別すると、クライアントデバイス120は、c個の合計Oを繰り返し処理することを中止する。合計O,OおよびOのすべてはクエリブロックを含む。抽象化ストレージ150は、n個のデータブロック102,102a-nのデータベースを含む。本開示における抽象化ストレージ150のデータベースは、部分合計の効率的な構造、アイテムの更新、および効率的な値の選択を可能にする1からnのオーダーの整数のオンラインの部分合計データ構造を含んでもよい。
図3Bは、クエリブロックBを含まないc個の合O(例えば、合計O3)を識別した後、鍵κのベクトルを生成(PRPartition.GenerateKey(n,k+1,S))するクライアントデバイス120を示す。図4Aは、鍵κのベクトルを生成するための例示的なアルゴリズム400aを提供する(PRPartition.GenerateKey(n,k+1,S))。クエリ命令200の実行の間にクライアントデバイス120によって生成された鍵κのベクトルは、アントラストストレージデバイスのn個のデータブロックを各々がk+1個のデータブロック102を含むn/k+1個のパーティション350へとランダムに区分けするための命令を含む。より詳細には、n/(k+1)個のパーティション350は、パーティションの1つが、クエリブロックBを含まないデータブロックの識別されたc個の合計O(例えば、合計O)を含む固定のパーティションである、制約付き疑似ランダムパーティションの2次元行列を含む。したがって、鍵κのベクトルは、抽象化ストレージ150および抽象化ストレージ150を管理しているサービス160から記憶していない態様で、クエリブロックBを含まないデータブロックの識別されたc個の合計O(例えば、合計O)に対応するサブセットS(例えば、サブセットS)を固定のパーティションとしてパーティション350のr(ランダム)番目の行に埋め込む。有意には、クライアントデバイス120は、抽象化ストレージ150を区分けするための鍵κのベクトルをいずれの計算も必要とすることなく分配システム140においてローカルに生成してもよい。
クライアントデバイス120は、制約付き疑似ランダム区分けを実行するようにサービス160に命令して空間効率的な表現で所与のサイズのデータのランダムなサブセットのサンプリングを行う。つまり、鍵κのベクトルは、[n]個の整数(例えば、ランダム鍵/シードκおよびセット{F(κ,1),...,F(κ,k)}を使用して、データブロック102)の抽象化ストレージ150(例えば、データベース)内の置換の疑似ランダムファミリーを使用する。結果として、要求320は、サービス160に、[n]個の整数をk+1のサイズのn/(k+1)個のセットの整数に、各行が対応するパーティションを2次元行列として区分けさせる。2次元行列は、初期は、空であり疑似ランダム置換は、行を選択してランダムに選択された順序でサブセットS入力を埋め込む。[n]個の整数の残りの要素は、空の行列にランダムに分配されるべきである。n/(k+1)個のパーティションのうちの1つは、丁度k個のデータブロック102の入力サブセットSに固定される。この固定された入力サブセットSは、クライアントデバイス120のメモリハードウェア122上にローカルに記憶されたデータブロック102の計算されたc個の合計Oのうちの1つに対応する。とりわけ、CPP命令300の実行は、ピボット,...,ピボット+(n/k)-1において生成された置換のn/(k+1)個のパーティションのうちの1つが所望の固定のサブセットSの入力であるようにピボットを選択することによって、固定のサブセットSの入力がBSR命令によって以前に計算されたc個の合計Oのうちの1つに対応することを確実にする。したがって、サブセットSの固定の入力は、n/(k+1)個の指標における置換の計算に対応する。
いくつかの例では、固定の要素sに関連付けられているピボットを見つけるために、生成されたサブセットにおいてsが出現することを確実にするように、ピボットは、π-1(s)-rに設定されてもよく、このとき、rは、{0,...,(n/k)-1}からランダムに一様に選択される。固定の要素の周辺において生成されたサイズ(n/k)-1のランダムなサブセットがサブセットの入力からのいずれの他の要素も含まないときだけ、サンプリングは成功する。ランダムサブセットがサブセット要素の入力を含まない確率は、以下のように記載されることができる。
Figure 0007000601000001
この手法に基づいて、置換鍵は、すべての列サブセットが行列の行のうちの1つに埋め込まれた固定されたサブセットSの入力からの丁度1つの要素を含むように、行列の各列におけるサブセットを表してもよい。さらに、すべての列サブセットは、対として交わりを有しないものでなくてはならない。いくつかの例では、命令300は、すべての取り得る残りのアイテムに亘る疑似ランダム置換のためのランダム鍵を生成する。疑似ランダム置換l:=F(K,i)の計算は、l番目に大きな残りの要素にマッピングを行う。置換πから指定されたkのサイズのサブセットは、単純にl番目,...,l番目に大きな残りの要素を含むセットであり、これによって、すべての将来的なサンプルのサブセットが以前に固定されたいずれのサブセット列とも交わりを有しないことを確実にする。交わりを有しないサンプルのサブセットを確実にする能力により、各サブセット列は、定数のサンプルを使用して生成されることができる。
すべての未使用な要素の明示的な記憶が線形のストレージを必要とする一方で、命令300は、サブセット入力からの残りの未使用のアイテムの知識を必要とするだけである。とりわけ、残りのサブセット入力要素の各々について、順位として凹んだ値がより小さい未使用のアイテムの数に関する知識が必要とされる。指標iまでの特定の合計がサブセット入力のi番目に大きな要素の順位と等しいというように、サブセット入力のアイテムは、記憶された順序で記憶される。データ構造を初期化するとき、記憶されたサブセット入力の隣り合った要素の間の差分が記憶され、 部分合計クエリを行うことによって順位が取り出されることを確実にする。未使用の要素のセットから1つの要素を除去することは、入力サブセットのすべての要素の順位を下げることを必要とし、これは、除去された要素よりも1つ大きい。これは、除去される要素よりも大きな入力サブセットにおける最も小さなアイテムの指標から単純に1を減算することによって実現できる。結果として、より大きな入力サブセットのすべての要素の順位もまた1つ小さくなる。除去された要素よりも大きな入力サブセットから最も小さな要素を見つけることは、単一のPartialSums.Select演算を必要とする一方で、順位を取り出し、エントリを更新することは、それぞれ、単一のPartialSums.Sum演算およびPartialSums.Update演算を必要とする。全体のデータ構造が入力サブセットのアイテムの各々について単一のエントリの記憶だけを必要とすることは、入力サブセットのサイズにおいて記憶要件が線形であることを意味する。
続いて図3Bを参照すると、クライアントデバイス120は、疑似ランダム置換区分け鍵κのベクトルを含む要求320をサービス160に送信する。サービス160によって受信されるとき、要求320は、サービス160に抽象化ストレージ150のn個のデータブロック102をn/(k+1)個のパーティション350へと疑似ランダム区分け(PRPartition.GetPartition(κ))を行わせ、n/(k+1)個のパーティション350の1つは、クエリブロックBを含まないデータブロック102の識別されたc個の合計O(例えば、合計O)を含む固定のパーティションを含む。図4Bは、疑似ランダム置換区分け鍵κのベクトルを使用して抽象化ストレージ150をn/(k+1)個のパーティション350に疑似ランダム区分けする例示的なアルゴリズム400bを提供する。示される例では、n/(k+1)個のパーティション350の3番目のパーティションPは、クエリブロックBと、クエリブロックBを含まないデータブロック102の識別されたc個の合計O(例えば、合計O)とを含む固定のパーティションを含む。ここで、3番目のパーティションPは、データブロック102の識別されたc個の合計Oのk個のブロックと、クエリブロックBを含む1つの追加的なブロックとを含む。3番目のパーティションPは、n/(k+1)個のパーティション350を表す2次元行列の3番目の行に対応する。サービス160によるPIR抽象化ストレージ150(例えば、データベース)の疑似ランダム区分けは、サービス160が、パーティション350の各々におけるk+1個のデータブロックを合計して、パーティションP,P,...,P(n/(k+1))の各々について、対応するデータブロックの暗号化された合計T,T,...,T(n/(k+1))302を決定することをさらに含む。
図3Cは、データブロック102の識別されたc個の合計Oのk個のブロックと、1つのクエリブロックBとを含む1つの追加的なブロックとを含む3番目のパーティションPのためのデータブロックの暗号化された合計T302を秘匿的に返す。データブロックの暗号化された合計T302の受信に応答して、クライアントデバイス120は、データブロックの暗号化された合計T302を復号化し、クエリブロックBを含まないデータブロック102の識別されたc個の合計O(例えば、合計O)を取り出し、k個のデータブロック102の識別されたc個の合計O3からデータブロックの復号化された合計T302を減算してクエリブロックBを得る。
図4Cは、上述の説明の非公開BSR命令200,200a,200b,200cの1つを実行することによって、クライアント状態250を初期化する例示的なアルゴリズム400cを提供する。図4Dは、クエリブロックBを取り出すためのクエリ(q)を実行するための例示的なアルゴリズム400dを提供する。例示的なアルゴリズム400dは、疑似ランダム区分け鍵κのベクトルをクライアントデバイス120においてローカルに生成するPRPartition.GenerateKey(n,k+1,S)工程と、疑似ランダム区分け鍵κのベクトルを使用してPIRストレージを疑似ランダム区分けするための後続のPRPartition.GetPartition(κ)工程とを含む。
他の実施形態では、制約付き疑似ランダム区分けは、疑似ランダム関数を使用する秘匿制約付き区分けに置き換えられる。mサイズのブロックの順序付き対象を抽象化ストレージ150のn個のデータブロック102から抽出することによって、サブルーチンが秘匿制約付きパーティションを生成してもよく、m個の別個の値に遭遇するまで疑似ランダム関数(PRF)を連続した入力に対して計算するためにいずれかのシード/鍵κが与えられる。シード/鍵κによって生成されるセットTκが与えられ、ルーチンは、Tκのr番目の要素をいずれかの値に固定してもよく、再び配向されたサブセットのr番目の値は、iであり、残りのm-1個の要素は、ランダムである。よって、ランダムκをサンプリングし、Tκを生成し、および、r番目の要素をn/(k+1)個のパーティション350を表す2次元行列に固定することによって、ランダム制約付きサブセットが生成されることができる。ここで、ランダムに生成された制約付きサブセットと固定の要素を超えた制約付きサブセットとが関わったかどうかを決定する検査のみが必要とされるので、サンプリングは、制約付きサブセットからの残りの未使用アイテムの知識のみを必要とする。言い換えれば、サンプリングは、残りの制約付きサブセット要素の各々よりも値の小さな未使用数の数の知識だけを必要とする。この知識は、各制約付きサブセット要素のクランクに対応する。よって、制約付きサブセットおよびすべての未使用アイテムにおける対応する順位だけが明示的なストレージを必要とする。したがって、サブセット列が固定となると、すべてのサブセット入力要素の順位は、もう使用されていないすべての固定のアイテムを反映させるために更新されなければならない。つまり、制約付きサブセットのすべての要素の順位は、列におけるより小さなすべてのアイテムだけ下がらなくてはならない。結果として、秘匿制約付き区分けを生成するためのサブルーチンは、順位を維持するためにO(k)ストレージのみを必要とする。
秘匿制約付き区分けを生成するためのルーチンは、鍵を生成するための鍵生成工程(OCP.GenerateKey)および固定されたパーティションを抽出するためのパーティション抽出工程(OCP.ExtractPartition)を含んでもよい。図4Eは、鍵を生成するためのOCP.GenerateKey工程の例示的なアルゴリズム400eを提供し、図4Fは、固定されたパーティションを抽出するための例示的なアルゴリズム400fを提供する。いくつかの実施形態では、クエリ命令300を実行してデータブロックBを取り出すための例示的なアルゴリズム400dは、本開示の範囲から逸脱することなく、疑似ランダム区分けに替えて疑似ランダム関数を使用する秘匿制約付き区分けに置き換えてもよい。ここで、アルゴリズム400dは、鍵を生成するために、PRPartition.GenerateKey(n,k+1,S)工程(図4A)をOCP.GenerateKey工程(図4F)に置き換えてもよく、PIRストレージを秘匿的に区分けし、PRF鍵に基づいて固定されたパーティションを抽出するために、続くPRPartition.GetPartition(κ)工程(図4B)をパーティション抽出工程OCP.ExtractPartition(図4F)に置き換えてもよい。
図5は、非公開情報検索(PIR)を使用して、アントラストストレージデバイス114,150上にプレーンテキストとして記憶された公に知られたデータブロック102を取り出す方法500のための演算の例示的な構成のフローチャートである。アントラストストレージデバイスは、分配システム140上の抽象化ストレージ150を実装する1以上のストレージデバイス114,150を含んでもよい。アントラストストレージデバイス114,150は、複数のクライアントデバイスがアクセスのために利用可能な公に知られ、かつ、暗号化されていないデータブロックを記憶するいずれかのデータストアまたはデータベースであってもよい。PIRの態様は、アントラストストレージデバイス150またはストレージデバイス150を管理しているサービス160がアクセスのパターンまたはストレージデバイス150から取り出されたデータを学習しないことを確実にする。各クライアントデバイス120のデータ処理ハードウェア124は、メモリハードウェア122上に記憶されている命令を実行することによって、方法500の演算を実行してもよい。演算502において、方法502は、非公開バッチ合計検索命令200を実行して、アントラストストレージデバイス50からのデータブロック102のc個の合計Oを計算することによって、クライアントデバイス120のクライアント状態250初期化する工程を含み、計算された合計Oの各々は、クライアントデバイス120のメモリハードウェア122上に記憶され、かつ、対応するサブセットSの丁度k個のデータブロック102の合計を含む。
演算504において、方法500は、クエリ命令300を実行して、クエリブロックBを含まないc個の合計Oのうちの1つを識別するためにメモリハードウェア124上に記憶されているデータブロック102のc個の合計Oの各々を通じて繰り返すことによって、アントラストストレージデバイス150上に記憶されたクエリブロックBを取り出す工程を含む。演算506において、クエリ命令300の実行は、アントラストストレージデバイス150を管理しているサービス160に対して、アントラストストレージデバイス150のn個のデータブロックを各々がk+1個のデータブロック102を含むn/(k+1)個のパーティション350に疑似ランダムに区分けするよう命令する工程と、n/(k+1)個のパーティション350の各々におけるk+1個のデータブロック102を合計して対応するデータブロックの暗号化された合計302を決定する工程と、をさらに含み、n/(k+1)個のパーティション350のうちの1つは、クエリブロックBを含まないデータブロックの識別されたc個の合計Oを含む固定されたパーティションを含む。演算506は、図4Aおよび図4Bのアルゴリズム400a,400bによって制約付き疑似ランダム区分けまたは図4Eおよび図4Fのアルゴリズム400e,400fによって秘匿制約付き区分けに基づいてパーティション350を生成してもよい。
演算508において、クエリ命令300の実行は、固定のパーティションを含むn/(k+1)個のパーティションのためのデータブロックの暗号化された合計302をアントラストストレージデバイス150を管理するサービスから検索する工程をさらに含む。演算510において、クエリ命令300の実行は、データブロックの暗号化された合計302を復号化して、クライアントデバイス120のメモリハードウェア122上に記憶されているデータブロックの識別されたc個の合計Oから減算して、クエリブロックBを得る工程をさらに含む。方法は、クエリ(q)の数がクエリしきい値を超えるかどうかを決定し、クエリ(q)の数がクエリしきい値を超えているとき、クライアント状態250を再び初期化する工程を含んでもよい。
図6は、本文書において記載されるシステムおよび方法を実装するあめに使用される例示的なコンピューティングデバイス600(例えば、データ処理ハードウェア)の図解である。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形式のデジタルコンピュータを表すことを意図する。ここで示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示的な目的でのみ示されており、本文書において記載され、および/または主張する発明の実施形態に限定することを意図するものではない。
コンピューティングデバイス600は、プロセッサ610、メモリ620、ストレージデバイス630、メモリ620および高速拡張ポート650に接続されている高速インタフェース/制御部640、ならびに低速バス670およびストレージデバイス630に接続されている低速インタフェース/制御部660を含む。構成要素610,620,630,640,650,および660の各々は、様々なバスを使用して、または、他の適切な態様で相互接続されており、および、これらは、共通のマザーボードに装着されてもよい。プロセッサ610は、高速インタフェース640に結合されているディスプレイ680などの外部入出力デバイス上にグラフィカルユーザインタフェース(GUI)のためのグラフィカルな情報を表示するためのメモリ620内またはストレージデバイス630上に記憶されている命令を含むコンピューティングデバイス600内の実行のための命令を処理することができる。他の実施形態では、複数のメモリおよびメモリのタイプとともに、複数のプロセッサおよび/または複数のバスが適切に使用されてもよい。また、複数のコンピューティングデバイス600は、必要な作業部分(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステム)を提供する各デバイスに接続されていてもよい。
メモリ620は、コンピューティングデバイス600内に非一時的に情報を記憶する。メモリ620は、コンピュータ読み取り可能媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的メモリ620は、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)をコンピューティングデバイス600による使用のために一時的または持続的に記憶するための物理的なデバイスであってもよい。不揮発性メモリの例は、これに限定されるものではないが、フラッシュメモリおよびリードオンリーメモリ(ROM)/プログラム可能リードオンリーメモリ(PROM)/消去可能なプログラム可能リードオンリーメモリ(EPROM)/電気的に消去可能なプログラム可能リードオンリーメモリ(EEPROM)(例えば、ブートプログラム等のファームウェアに対して通常に使用される)を含む。揮発性メモリの例は、限定するものではないが、ディスクまたはテープと同様に、ランダムアクセスメモリ(RAM)、ダイナミックアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)を含む。ストレージデバイス630(例えば、メモリハードウェア)は、コンピューティングデバイス600のための大容量ストレージを提供することができる。いくつかの実施形態では、ストレージデバイス630は、コンピュータ読み取り可能媒体である。様々な異なる実施形態では、ストレージデバイス630は、ストレージエリアネットワークまたは他の構成におけるデバイスを含む、フロッピー(登録商標)ディスクドライブ、ハードディスクドライブ、光ディスクドライブ、またはテープデバイス、フラッシュメモリまたは他の類似するソリッドステートメモリデバイス、またはデバイスのアレイであってもよい。追加的な実施形態では、コンピュータブログラム製品は、情報搬送においてタンジブルに具現化されている。命令を含むコンピュータプログラム製品は、実行されるとき、上述したように、1以上の方法が行われる。情報搬送は、メモリ620、ストレージデバイス630、またはプロセッサ610上のメモリなどのコンピュータまたは機械読み取り可能媒体である。
高速制御部640は、コンピューティングデバイス600のための帯域に集中した作業を管理する一方で、低速制御部660は、より低い帯域に集中した作業を管理する。そのような役割の割り当ては例示目的のみである。いくつかの実施形態では、高速制御部640は、メモリ620、ディスプレイ680(例えば、グラフィックプロセッサまたは加速器)および様々な拡張カード(図示せず)を受け入れてもよい高速拡張ポート650に結合されている。いくつかの実施形態では、低速制御部660は、ストレージデバイス630および低速拡張ポート670に結合されている。様々な通信ポート(例えば、USB、ブルートゥース、イーサーネット、無線イーサーネット)を含んでもよい低速拡張ポート670は、ぃーボード、ポインティングデバイス、スキャナ、またはスイッチまたはルータ(例えば、ネットワークアダプタを通じた)などのネットワーキングデバイスなどの1以上の入出力デバイスに結合されてもよい。
コンピューティングデバイス600は、図に示されるように、いくつかの異なる形態において実装されてもよい。例えば、標準サーバ600aとしてまたはそのようなサーバ600aのグループにおいて複数回実装されてもよく、ラップトップコンピュータ600bとして、または、ラックサーバシステム600cの一部として実装されてもよい。
ソフトウェアアプリケーション(すなわち、ソフトウェア資源)は、コンピューティングデバイスにタスクを行わせるコンピュータソフトウェアを参照する。いくつかの例において、ソフトウェアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」として参照されてもよい。アプリケーションの例は、限定するものではないが、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲーミングアプリケーションを含む。
ここで記載したシステムおよび技術の様々な実施形態は、デジタル電気および/または光学回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはこれらの組み合わせにおいて実現されることができる。これらの様々は実施形態は、特定または汎用目的であってもよく、データおよび命令をそこから受信するために、および、データおよび命令をそれに対して送信するために、ストレージシステムに結合される少なくとも1つのプログラム可能プロセッサ、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むプログラム可能システム上で実行可能および/または解釈可能な1以上のコンピュータプログラムにおける実施形態を含むことができる。
これらのコンピュータプログラム(プログラム、ソフトウェアアプリケーション、またはコードとしても知られている)は、プログラム可能なプロセッサのための機械命令を含み、高級手続き型および/またはオブジェクト指向プログラミング言語および/またはアセンブリ/機械言語において実装されることができる。ここで使用される「機械読み取り可能媒体」および「コンピュータ読み取り可能媒体」の用語は、機械命令を機械読み取り可能信号として受信する機械読み取り可能媒体を含む、プログラム可能プロセッサに機械命令および/またはデータを提供するために使用されるいずれのコンピュータプログラム製品、非一時的コンピュータ読み取り可能媒体、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、機械命令および/またはプログラマブルロジックデバイス(PLD))も参照する。「機械読み取り可能信号」の用語は、機械命令および/またはデータをプログラム可能プロセッサに提供するために使用されるいずれの信号にも参照する。
本明細書における処理およびロジックフローは、入力データを演算して出力を生成する関数を実行する1以上のコンピュータプログラムを実行する1以上のプログラム可能プロセッサによって行われることができる。処理およびロジックフローは、特定目的のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって行われることもできる。コンピュータプログラムの実行のために適したプロセッサは、例として汎用および特定目的のマイクロプロセッサ、ならびにデジタルコンピュータのいずれかの種類の1以上のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの基本要素は、命令を実行するためのプロセッサならびに命令およびデータを記憶するための1以上のメモリデバイスである。一般的に、コンピュータは、また、データを記憶するための1以上の大容量ストレージデバイス例えば、磁気ディスク、磁気光ディスク、または光ディスクを含む。すなわち、その大容量ストレージデバイスからデータを受信し、または、データを転送し、またはその両方を行うように、その大容量ストレージデバイスに動作可能に結合されている。しかしながら、コンピュータは、そのようなデバイスを有する必要がない。コンピュータプログラム命令およびデータを記憶するためのコンピュータ読み取り可能媒体は、すべての形式の不揮発性メモリ、例として、例えば、EPROM、EEPROM、およびフラッシュメモリデバイスを含む半導体メモリデバイス;磁気ディスク、例えば、内部ハードディスクまたは取り出し可能ディスク;磁気光ディスク;ならびにCDROMおよびDVD‐ROMディスクを含む。プロセッサおよびメモリは、特定目的ロジック回路によって補足され、または、これに取り入れられることができる。
ユーザとの対話を提供するために、本開示の1以上の態様は、ディスプレイデバイス、例えば、ユーザに情報を表示するためのCRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、またはタッチスクリーン、任意選択的に、ユーザがこれによってコンピュータに入力を提供することができるためのキーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールを有するコンピュータ上に実装されることができる。他の種類のデバイスもまたユーザとの対話を提供するために使用されることができ、例えば、ユーザに提供されるフィードバックは、例えば、ビジュアルフィードバック、オーディオフィードバック、または触覚フィードバックのセンサによるフィードバックのいずれかの形式であることができ;ユーザによる入力は、音響、発言、または触覚による入力を含むいずれかの形式により受信されることができる。さらに、コンピュータは、例えば、ウェブブラウザから受信した要求に応答して、ウェブページをユーザのクライアントデバイス上のウェブブラウザに送信することによって、ユーザによって使用されているデバイスと文書の送受信を行うことによってユーザと対話することができる。
いくつかの実施形態が記載された。それでも、本開示の精神および範囲から逸脱することなく様々は変形が行われてもよいことが理解されるであろう。したがって、他の実施形態は、以下の請求の範囲内のものである。

Claims (22)

  1. クライアントデバイス(120)のデータ処理ハードウェア(124)が、非公開バッチ合計検索命令(200)を実行して、アントラストストレージデバイス(150)からのデータブロック(102)のc個の合計Oを計算することによって、前記クライアントデバイス(120)上のクライアント状態(250)を初期化する工程であって、計算された合計Oの各々は、前記クライアントデバイス(120)のメモリハードウェア(122)に記憶されており、かつ、対応するサブセットSの丁度k個のデータブロック(102)の合計を含む、前記初期化する工程と、
    前記データ処理ハードウェア(124)が、クエリ命令(300)を実行して前記アントラストストレージデバイス(150)に記憶されているクエリブロックBを取り出す工程であって、
    前記メモリハードウェア(124)に記憶されているデータブロック(102)のc個の合計Oの各々を繰り返し処理して前記クエリブロックBを含まないc個の合計Oのうちの1つを識別し、
    前記アントラストストレージデバイス(150)を管理しているサービス(160)に対して、前記アントラストストレージデバイス(150)のn個のデータブロックを、各々がk+1個のデータブロック(102)を含むn/(k+1)個のパーティション(350)に疑似ランダムに区分けするよう命令し、および、前記n/(k+1)個のパーティション(350)の各々における前記k+1個のデータブロック(102)を合計して、前記n/(k+1)個のパーティション(350)の各々について、対応する暗号化されたデータブロック合計(302)を決定し、前記n/(k+1)個のパーティション(350)の1つは、前記クエリブロックBを含まない識別された前記データブロックのc個の合計Oを含む固定のパーティションを備え、
    前記固定のパーティションを含む前記n/(k+1)個のパーティションの暗号化された前記データブロック合計(302)を前記アントラストストレージデバイス(150)を管理している前記サービスから取り出し、
    暗号化された前記データブロック合計(302)を復号化して、前記クライアントデバイス(120)の前記メモリハードウェア(122)に記憶されている識別された前記データブロックのc個の合計Oから減算して前記クエリブロックBを得る、ことによる、前記クエリブロックBを取り出す工程と、
    前記データ処理ハードウェア(124)が、クエリ(q)の数がクエリしきい値を超えているかどうかを決定する工程と、
    前記データ処理ハードウェア(124)が、前記クエリ(q)の数が前記クエリしきい値を超えている場合、前記クライアント状態(250)を再び初期化する工程と、を備える方法(500)。
  2. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロックのc個の合計Oを計算することは、
    前記クライアントデバイス(120)に前記アントラストストレージデバイス(150)に記憶されているすべてのデータブロック(102)をクラス分けする工程であって、前記アントラストストレージデバイス(150)は、n個のデータブロックを記憶する、前記クラス分け工程と、
    前記アントラストストレージデバイス(150)からクラス分けされた選択されたデータブロック(102)をデータブロックのc個のサブセットSのうちの対応するサブセットSに割り当てる工程と、
    前記対応するサブセットSに割り当てられた選択された前記データブロック(102)を合計することによって、データブロックのc個の合計Oの各々を計算する工程と、を備える、請求項1に記載の方法(500)。
  3. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロックのc個の合計Oを計算することは、前記アントラストストレージデバイス(150)からm個のデータブロック(102)をダウンロードして、前記メモリハードウェア(122)上のストレージのための前記データブロック(102)のc個の合計Oを計算する工程を備える、請求項1または2に記載の方法(500)。
  4. 前記クライアントデバイス(120)によってダウンロードされた前記m個のデータブロック(102)の数は、k個のデータブロック(102)の数と前記データブロック(102)のc個の合計Oの数との積に等しい、請求項3に記載の方法(500)。
  5. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロック(102)のc個の合計Oを計算することは、
    前記アントラストストレージデバイス(150)のn個のデータブロック(102)をk個のバケット(260)に区分けする工程と、
    計算されるデータブロック(102)のc個の合計Oの各々について、前記k個のバケット(160)の各々からt個のデータブロック(102)をダウンロードして、前記メモリハードウェア(122)上のストレージのためのデータブロック(102)の前記対応する合計Oを計算する工程と、を備える、請求項1~4のいずれか1項に記載の方法(500)。
  6. 計算されるデータブロック(102)のc個の合計Oの各々について、前記k個のバケット(160)の各々からt個のデータブロック(102)をダウンロードすることは、
    前記クライアントデバイス(120)から前記アントラストストレージデバイス(150)を管理している前記サービス(160)に対して非公開情報検索要求(264)を送信して、前記t個のデータブロック(102)を前記k個のバケット(260)の各々から取り出す工程であって、前記非公開情報要求(264)は、各々のt個のデータブロック(102)を前記サービス(160)に暗号化させ、および、前記アントラストストレージデバイス(150)上に対応する非公開情報検索結果として記憶させる、工程と、
    加法準同型暗号のベクトル(266)を生成する工程と、
    前記加法準同型暗号のベクトル(266)を前記アントラストストレージデバイス(150)にアップロードする工程であって、前記加法準同型暗号のベクトル(266)は、前記アントラストストレージデバイス(150)を管理している前記サービス(160)に、前記加法準同型暗号のベクトル(266)を使用して前記非公開情報検索結果に対して加法準同型暗号計算(268)を実行させ、前記加法準同型暗号計算(268)は、データブロックの対応するc個の合計Oに対する暗号化テキスト値に対応する、工程と、
    前記アントラストストレージデバイス(150)を管理している前記サービス(160)から前記暗号化テキストを受信し暗号化して、前記データブロック(102)の対応するc個の合計Oを得る工程と、を備える、請求項5に記載の方法(500)。
  7. 前記加法準同型暗号計算(268)は、ドット積演算を含む、請求項6に記載の方法(500)。
  8. tは1に等しい、請求項5に記載の方法(500)。
  9. 前記クライアントデバイス(120)上の前記クライアント状態(250)を初期化する工程は、前記データブロック(102)のc個の合計Oを計算する前に、サブセットSの丁度k個のデータブロック(102)の各々について疑似ランダム置換(π)を生成することを含む、請求項1~8のいずれか1項に記載の方法(500)。
  10. 前記アントラストストレージデバイス(150)を管理しているサービス(160)に対して、前記アントラストストレージデバイス(150)のn個のデータブロックを、n/(k+1)個のパーティション(350)に疑似ランダムに区分けするよう命令することは、
    前記アントラストストレージデバイス(150)のn個のデータブロックをn/(k+1)個のパーティション(350)へと疑似ランダムに区分けするための命令を含む、疑似ランダム置換区分け鍵(κ)のベクトルを生成する工程と、
    前記クライアントデバイス(120)から前記アントラストストレージデバイス(150)を管理している前記サービス(160)に対して、前記疑似ランダム置換区分け鍵(κ)のベクトルを含む要求(320)を送信する工程であって、前記要求(320)は、前記サービス(160)に前記アントラストストレージデバイス(150)のn個のデータブロック(102)をn/(k+1)個のパーティション(350)へと疑似ランダムに区分けさせ、前記n/(k+1)個のパーティション(350)の1つは、前記クエリブロックBを含まない前記データブロック(102)の識別されたc個の合計Oを含む前記固定のパーティションを含む、工程と、を備える、請求項1~9のいずれか1項に記載の方法(500)。
  11. 前記疑似ランダムパーティション(350)は、各行が対応するパーティションを備え、各列が各パーティションにおける前記k+1個のブロック(102)の対応する1つについて増加的に生成された疑似ランダム置換を備える、2次元行列を含む、請求項1~10のいずれか1項に記載の方法(500)。
  12. クライアントデバイス(120)のデータ処理ハードウェア(124)と、
    前記データ処理ハードウェア(124)と通信している、前記クライアントデバイス(120)のメモリハードウェア(122)と、を備えるシステム(600)であって、前記メモリハードウェア(122)は、前記データ処理ハードウェア(124)によって実行されたとき、前記データ処理ハードウェア(124)に、
    非公開バッチ合計検索命令(200)を実行して、アントラストストレージデバイス(150)からのデータブロック(102)のc個の合計Oを計算することによって、前記クライアントデバイス(120)上のクライアント状態(250)を初期化する工程であって、計算された合計Oの各々は、前記クライアントデバイス(120)のメモリハードウェア(122)に記憶されており、かつ、対応するサブセットSの丁度k個のデータブロック(102)の合計を含む、前記初期化する工程と、
    クエリ命令(300)を実行して前記アントラストストレージデバイス(150)に記憶されているクエリブロックBを取り出す工程であって、
    前記メモリハードウェア(124)に記憶されているデータブロック(102)のc個の合計Oの各々を繰り返し処理して前記クエリブロックBを含まないc個の合計Oのうちの1つを識別し、
    前記アントラストストレージデバイス(150)を管理しているサービス(160)に対して、前記アントラストストレージデバイス(150)のn個のデータブロックを、各々がk+1個のデータブロック(102)を含むn/(k+1)個のパーティション(350)に疑似ランダムに区分けするよう命令し、および、前記n/(k+1)個のパーティション(350)の各々における前記k+1個のデータブロック(102)を合計して、前記n/(k+1)個のパーティション(350)の各々について、対応する暗号化されたデータブロック合計(302)を決定し、前記n/(k+1)個のパーティション(350)の1つは、前記クエリブロックBを含まない識別された前記データブロックのc個の合計Oを含む固定のパーティションを備え、
    前記固定のパーティションを含む前記n/(k+1)個のパーティションの暗号化された前記データブロック合計(302)を前記アントラストストレージデバイス(150)を管理している前記サービスから取り出し、
    暗号化された前記データブロック合計(302)を復号化して、前記クライアントデバイス(120)の前記メモリハードウェア(122)に記憶されている識別された前記データブロックのc個の合計Oから減算して前記クエリブロックBを得る、ことによる、前記クエリブロックBを取り出す工程と、
    クエリ(q)の数がクエリしきい値を超えているかどうかを決定する工程と、
    前記クエリ(q)の数が前記クエリしきい値を超えている場合、前記クライアント状態(250)を再び初期化する工程と、を含む処理を行わせる命令を記憶する、システム(600)。
  13. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロックのc個の合計Oを計算することは、
    前記クライアントデバイス(120)に前記アントラストストレージデバイス(150)に記憶されているすべてのデータブロック(102)をクラス分けする工程であって、前記アントラストストレージデバイス(150)は、n個のデータブロックを記憶する、前記クラス分け工程と、
    前記アントラストストレージデバイス(150)からクラス分けされた選択されたデータブロック(102)をデータブロックのc個のサブセットSのうちの対応するサブセットSに割り当てる工程と、
    前記対応するサブセットSに割り当てられた選択された前記データブロック(102)を合計することによって、データブロックのc個の合計Oの各々を計算する工程と、を備える、請求項12に記載のシステム(600)。
  14. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロックのc個の合計Oを計算することは、前記アントラストストレージデバイス(150)からm個のデータブロック(102)をダウンロードして、前記メモリハードウェア(122)上のストレージのための前記データブロック(102)のc個の合計Oを計算する工程を備える、請求項12または13に記載のシステム(600)。
  15. 前記クライアントデバイス(120)によってダウンロードされた前記m個のデータブロック(102)の数は、k個のデータブロック(102)の数と前記データブロック(102)のc個の合計Oの数との積に等しい、請求項14に記載のシステム(600)。
  16. 前記非公開バッチ合計検索命令(200)を実行して、前記データブロック(102)のc個の合計Oを計算することは、
    前記アントラストストレージデバイス(150)のn個のデータブロック(102)をk個のバケット(260)に区分けする工程と、
    計算されるデータブロック(102)のc個の合計Oの各々について、前記k個のバケット(160)の各々からt個のデータブロック(102)をダウンロードして、前記メモリハードウェア(122)上のストレージのためのデータブロック(102)の前記対応する合計Oを計算する工程と、を備える、請求項12~15のいずれか1項に記載のシステム(600)。
  17. 計算されるデータブロック(102)のc個の合計Oの各々について、前記k個のバケット(160)の各々からt個のデータブロック(102)をダウンロードすることは、
    前記クライアントデバイス(120)から前記アントラストストレージデバイス(150)を管理している前記サービス(160)に対して非公開情報検索要求(264)を送信して、前記t個のデータブロック(102)を前記k個のバケット(260)の各々から取り出す工程であって、前記非公開情報要求(264)は、各々のt個のデータブロック(102)を前記サービス(160)に暗号化させ、および、前記アントラストストレージデバイス(150)上に対応する非公開情報検索結果として記憶させる、工程と、
    加法準同型暗号のベクトル(266)を生成する工程と、
    前記加法準同型暗号のベクトル(266)を前記アントラストストレージデバイス(150)にアップロードする工程であって、前記加法準同型暗号のベクトル(266)は、前記アントラストストレージデバイス(150)を管理している前記サービス(160)に、前記加法準同型暗号のベクトル(266)を使用して前記非公開情報検索結果に対して加法準同型暗号計算(268)を実行させ、前記加法準同型暗号計算(268)は、データブロックの対応するc個の合計Oに対する暗号化テキスト値に対応する、工程と、
    前記アントラストストレージデバイス(150)を管理している前記サービス(160)から前記暗号化テキストを受信し暗号化して、前記データブロック(102)の対応するc個の合計Oを得る工程と、を備える、請求項16に記載のシステム(600)。
  18. 前記加法準同型暗号計算(268)は、ドット積演算を含む、請求項17に記載のシステム(600)。
  19. tは1に等しい、請求項16に記載のシステム(600)。
  20. 前記クライアントデバイス(120)上の前記クライアント状態(250)を初期化する工程は、前記データブロック(102)のc個の合計Oを計算する前に、サブセットSの丁度k個のデータブロック(102)の各々について疑似ランダム置換(π)を生成することを含む、請求項12~19のいずれか1項に記載のシステム(600)。
  21. 前記アントラストストレージデバイス(150)を管理しているサービス(160)に対して、前記アントラストストレージデバイス(150)のn個のデータブロックを、n/(k+1)個のパーティション(350)に疑似ランダムに区分けするよう命令することは、
    前記アントラストストレージデバイス(150)のn個のデータブロックをn/(k+1)個のパーティション(350)へと疑似ランダムに区分けするための命令を含む、疑似ランダム置換区分け鍵(κ)のベクトルを生成する工程と、
    前記クライアントデバイス(120)から前記アントラストストレージデバイス(150)を管理している前記サービス(160)に対して、前記疑似ランダム置換区分け鍵(κ)のベクトルを含む要求(320)を送信する工程であって、前記要求(320)は、前記サービス(160)に前記アントラストストレージデバイス(150)のn個のデータブロック(102)をn/(k+1)個のパーティション(350)へと疑似ランダムに区分けさせ、前記n/(k+1)個のパーティション(350)の1つは、前記クエリブロックBを含まない前記データブロック(102)の識別されたc個の合計Oを含む前記固定のパーティションを含む、工程と、を備える、請求項12~20のいずれか1項に記載のシステム(600)。
  22. 前記疑似ランダムパーティション(350)は、各行が対応するパーティションを備え、各列が各パーティションにおける前記k+1個のブロック(102)の対応する1つについて増加的に生成された疑似ランダム置換を備える、2次元行列を含む、請求項12~21のいずれか1項に記載のシステム(600)。
JP2020562672A 2018-05-07 2018-05-07 劣線形公開鍵演算による非公開情報検索 Active JP7000601B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/031369 WO2019216872A1 (en) 2018-05-07 2018-05-07 Private information retrieval with sublinear public-key operations

Publications (2)

Publication Number Publication Date
JP2021521490A JP2021521490A (ja) 2021-08-26
JP7000601B2 true JP7000601B2 (ja) 2022-01-19

Family

ID=62245440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020562672A Active JP7000601B2 (ja) 2018-05-07 2018-05-07 劣線形公開鍵演算による非公開情報検索

Country Status (6)

Country Link
US (2) US11593516B2 (ja)
EP (1) EP3776317B1 (ja)
JP (1) JP7000601B2 (ja)
KR (1) KR102308066B1 (ja)
CN (1) CN112400171B (ja)
WO (1) WO2019216872A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021087073A1 (en) 2019-10-30 2021-05-06 Via Science, Inc. Secure outsourcing of a multiplication
CN115269938B (zh) * 2022-09-22 2023-02-14 深圳市洞见智慧科技有限公司 基于同态加密的关键词匿踪查询方法、系统及相关装置
US11977657B1 (en) * 2023-02-22 2024-05-07 Lorica Cybersecurity Inc. Method and system for confidential repository searching and retrieval

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006210964A (ja) 2005-01-24 2006-08-10 National Institute Of Information & Communication Technology エルガマル暗号による情報授受伝達方法及び装置
JP2007124520A (ja) 2005-10-31 2007-05-17 Ntt Data Corp データ検索システム、情報処理装置、データ検索方法、及び、プログラム。
JP2008500598A (ja) 2004-05-20 2008-01-10 株式会社エヌ・ティ・ティ・ドコモ 通信効率の良い秘匿情報検索及び紛失通信のための方法及び装置
US20170277906A1 (en) 2016-03-22 2017-09-28 International Business Machines Corporation Privacy enhanced central data storage

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890151A (en) * 1997-05-09 1999-03-30 International Business Machines Corporation Method and system for performing partial-sum queries on a data cube
US8880905B2 (en) * 2010-10-27 2014-11-04 Apple Inc. Methods for processing private metadata
US8635465B1 (en) * 2012-03-28 2014-01-21 Emc Corporation Counter-based encryption of stored data blocks
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US10374807B2 (en) * 2014-04-04 2019-08-06 Hewlett Packard Enterprise Development Lp Storing and retrieving ciphertext in data storage
WO2015198098A1 (en) * 2014-06-26 2015-12-30 Telefonaktiebolaget L M Ericsson (Publ) Privacy-preserving querying mechanism on privately encrypted data on semi-trusted cloud
US10789207B2 (en) * 2015-07-27 2020-09-29 Sas Institute Inc. Distributed data storage grouping
US9946718B2 (en) * 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
US10503596B2 (en) * 2015-07-31 2019-12-10 Pure Storage, Inc. Accessing an encoded data slice in a dispersed storage network
CN107992582B (zh) * 2017-12-07 2021-01-29 深圳先达数据信息技术有限公司 一种基于锯齿解码的私有信息检索方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500598A (ja) 2004-05-20 2008-01-10 株式会社エヌ・ティ・ティ・ドコモ 通信効率の良い秘匿情報検索及び紛失通信のための方法及び装置
JP2006210964A (ja) 2005-01-24 2006-08-10 National Institute Of Information & Communication Technology エルガマル暗号による情報授受伝達方法及び装置
JP2007124520A (ja) 2005-10-31 2007-05-17 Ntt Data Corp データ検索システム、情報処理装置、データ検索方法、及び、プログラム。
US20170277906A1 (en) 2016-03-22 2017-09-28 International Business Machines Corporation Privacy enhanced central data storage

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MAYBERRY, T., BLASS, E.-O. and CHAN, A. H.,Efficient Private File Retrieval by Combining ORAM and PIR,Cryptology ePrint Archive,[online],2014年01月,pp.1-11,<URL:https://eprint.iacr.org/2013/086>

Also Published As

Publication number Publication date
US20210192076A1 (en) 2021-06-24
JP2021521490A (ja) 2021-08-26
CN112400171A (zh) 2021-02-23
EP3776317B1 (en) 2022-07-06
US20230185960A1 (en) 2023-06-15
US11593516B2 (en) 2023-02-28
WO2019216872A1 (en) 2019-11-14
KR20200142588A (ko) 2020-12-22
KR102308066B1 (ko) 2021-09-30
EP3776317A1 (en) 2021-02-17
CN112400171B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
US20230169201A1 (en) Encrypted Search Cloud Service with Cryptographic Sharing
EP3586260B1 (en) Encrypting data records and processing encrypted records without exposing plaintext
JP7124182B2 (ja) 差分プライバシーを備える忘却型アクセス
JP7000601B2 (ja) 劣線形公開鍵演算による非公開情報検索
Pitchai et al. Searchable encrypted data file sharing method using public cloud service for secure storage in cloud computing
CN110622142B (zh) 高效不经意的云存储
EP3616068B1 (en) Efficient oblivious permutation
US20240204986A1 (en) Data protection using portable data structures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201130

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: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211223

R150 Certificate of patent or registration of utility model

Ref document number: 7000601

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150