IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7124182差分プライバシーを備える忘却型アクセス
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-15
(45)【発行日】2022-08-23
(54)【発明の名称】差分プライバシーを備える忘却型アクセス
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220816BHJP
   G06F 16/182 20190101ALI20220816BHJP
【FI】
G06F21/62 318
G06F16/182
【請求項の数】 6
(21)【出願番号】P 2021112628
(22)【出願日】2021-07-07
(62)【分割の表示】P 2019567324の分割
【原出願日】2018-01-12
(65)【公開番号】P2021182402
(43)【公開日】2021-11-25
【審査請求日】2021-07-07
(31)【優先権主張番号】62/597,781
(32)【優先日】2017-12-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ヨー、ケビン
(72)【発明者】
【氏名】パテル、サルバール
(72)【発明者】
【氏名】ペルシアーノ、ジュゼッペ
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2014-044551(JP,A)
【文献】特開2016-081522(JP,A)
【文献】国際公開第2011/013490(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 16/182
(57)【特許請求の範囲】
【請求項1】
クライアント装置(120)のデータ処理ハードウェア(124)が、サーバ(110)上に記憶されている全体でN個の複数のデータ・ブロックのうちのデータ・ブロック(102)に対するクエリ(q)を実行するための命令(200)を実行する工程と、
前記サーバ(110)上に記憶されているK個のブロック(102)について、前記データ処理ハードウェア(124)から第1のダウンロード要求(202)を送信する工程であって、KはN未満であり、前記K個のブロックは、クエリの行われた前記データ・ブロック(102)を含まず、前記K個のブロックは、一様ランダムに選択される、工程と、
クエリの行われた前記データ・ブロック(102)とK-1個の他のブロック(102)とについて、前記データ処理ハードウェア(124)から第2のダウンロード要求(204)を送信する工程であって、前記K-1個の他のブロックは、一様ランダムに選択される、工程と、
前記サーバ(110)から前記第1のダウンロード要求(202)の前記K個のブロック(102)について、第1のダウンロード・シーケンス(212)を受信する工程と、
前記サーバ(110)から前記第2のダウンロード要求(204)のクエリの行われた前記データ・ブロック(102)と前記K-1個の他のブロック(102)とについて、第2のダウンロード・シーケンス(214)を受信する工程と、を備える方法。
【請求項2】
前記サーバ(110)は信頼済みでなく、前記サーバ(110)は、暗号化されていない複数の公開利用可能なデータ・ブロック(102)を記憶している、請求項1に記載の方法。
【請求項3】
前記データ処理ハードウェア(124)が、前記サーバ(110)から受信される第1のダウンロード・シーケンス(212)のうちの前記K個のブロック(102)を破棄する工程をさらに備える、請求項1または2に記載の方法。
【請求項4】
前記データ処理ハードウェア(124)が、前記サーバ(110)から受信される前記第2のダウンロード・シーケンス(224)のうちの前記K-1個の他のブロック(102)を破棄する工程をさらに備える、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1のダウンロード・シーケンス(212)は、エラー確率αに関連付けられており、前記第2のダウンロード・シーケンス(214)は、エラー確率1-αに関連付けられている、請求項1~4のいずれか一項に記載の方法。
【請求項6】
システムであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリ・ハードウェアと、を備え、前記メモリ・ハードウェアは、前記データ処理ハードウェア上で実行されたときに前記データ処理ハードウェアに請求項1~5のいずれか一項に記載の方法を含む動作を実行させる命令を記憶する、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、差分プライバシーを備えるメモリ上に記憶されているデータ・ブロックに関連する。
【背景技術】
【0002】
企業および個人は、複数のメモリ位置の上にあるメモリ上にデータを記憶するために、分散型のストレージ・システム(すなわち、クラウド・ストレージ・サービス)を使用している。そうした企業および個人の多くは、分散型のストレージ・システムの上にアップロードする前に、自身のデータを暗号化する。クラウド・ストレージ・サービスによって提示される不可欠な機能(記憶されているデータに対し検索クエリを実行することなど)を用いるために、企業は、クラウド・ストレージ・サービスに平文のアクセスを提供することを要求される。結果として、多くの政府および機密に関わる民間部門(健康、金融、および法律など)は、簡便性およびコスト優位性が高まるにもかかわらず、クラウド・ストレージ・サービスを使用したがらない。これに加えて、暗号化単独では、データ・プライバシを保証するには十分でない場合がある。単にデータのアクセス・パターンに関する知識だけでも、そのデータについて有意な量の情報を提供することが可能であり、データを復号する必要は全くないためである。
【図面の簡単な説明】
【0003】
図1A】分散型システムの非一時的なデータ・ストレージ上に記憶されているデータ・ブロックに対するクエリを忘却的に実行するための一例のシステムの概略図。
図1B】1または複数のクライアントが分散型ストレージ・システムの非一時的なデータ・ストレージ上に記憶されているデータ・ブロックに対するクエリを忘却的に実行することを可能とするための一例のシステムの概略図。
図2A】単一のサーバの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例の差分プライベート(DP)プライベート情報取出(PIR)ルーチンの概略図。
図2B】複数のサーバの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例の差分プライベート(DP)プライベート情報取出(PIR)ルーチンの概略図。
図3A】分散型システムの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例のDP忘却型ランダム・アクセス・メモリ(O-RAM)ルーチンの概略図。
図3B】分散型システムの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例のDP忘却型ランダム・アクセス・メモリ(O-RAM)ルーチンの概略図。
図3C】分散型システムの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例のDP忘却型ランダム・アクセス・メモリ(O-RAM)ルーチンの概略図。
図3D】分散型システムの非一時的なデータ・ストレージ上に記憶されているクエリを忘却的に実行するための一例のDP忘却型ランダム・アクセス・メモリ(O-RAM)ルーチンの概略図。
図4A】分散型システムの非一時的なデータ・ストレージ上に暗号化された形式によりデータ・ブロックを忘却的に入力するための一例のDP忘却型ストレージ・ルーチンの概略図。
図4B】分散型システムの非一時的なデータ・ストレージ上に暗号化された形式によりデータ・ブロックを忘却的に入力するための一例のDP忘却型ストレージ・ルーチンの概略図。
図4C】分散型システムの非一時的なデータ・ストレージ上に暗号化された形式によりデータ・ブロックを忘却的に入力するための一例のDP忘却型ストレージ・ルーチンの概略図。
図5A】データ・ブロックに対するクエリを実行するためにクライアント装置上で実行する一例のDP忘却型ストレージ命令の概略図。
図5B】データ・ブロックに対するクエリを実行するためにクライアント装置上で実行する一例のDP忘却型ストレージ命令の概略図。
図5C】データ・ブロックに対するクエリを実行するためにクライアント装置上で実行する一例のDP忘却型ストレージ命令の概略図。
図5D】データ・ブロックに対するクエリを実行するためにクライアント装置上で実行する一例のDP忘却型ストレージ命令の概略図。
図6】対応するバケツの中へ暗号化された形式によりデータ・ブロックを入力し、データ・ブロックに対するクエリを実行することにより、二分木を初期化する一例のアルゴリズムを提供する図。
図7】一例の逆指数関数木の概略図。
図8】対応するN個のバケツの中へ暗号化された形式によりデータ・ブロックを入力し、データ・ブロックに対するクエリを実行することにより、逆指数関数木を初期化する一例のアルゴリズムを提供する図。
図9】本明細書に記載のシステムおよび方法を実装するために用いられ得る一例のコンピューティング・デバイスの概略図。
【発明を実施するための形態】
【0004】
様々な図面における類似の参照符合は類似の要素を示す。
本開示の一態様では、差分プライバシーを有する忘却型アクセスのための方法を提供する。方法は、クライアント装置のデータ処理ハードウェアが、データ・ブロックに対するクエリ(q)を実行するための命令を実行する工程を備える。方法はまた、ダウンロード・フェーズ中、データ処理ハードウェアが、データ・ブロックがクライアント装置に存在するメモリ・ハードウェア上のブロック・スタッシュに記憶されているか否かを判定する工程を備える。データ・ブロックがブロック・スタッシュに記憶されている場合、方法はさらに次を備える:データ処理ハードウェアが、ブロック・スタッシュからデータ・ブロックを除去する工程;データ処理ハードウェアが、データ処理ハードウェアと通信状態にある分散型システムに偽クエリを送信する工程;および、データ処理ハードウェアが、分散型システムから取り出されたランダムなデータ・ブロックを破棄する工程。偽クエリは、分散型システムのメモリに記憶されているランダムなデータ・ブロックを取り出す。オーバライト・フェーズ中、方法は、データ処理ハードウェアが、ブロック・スタッシュから除去されたまたは分散型システムのメモリから取り出されたデータ・ブロックに対する読出または書込動作を実行する工程を備える。方法はさらに、データ処理ハードウェアが、確率に基づいて、データ・ブロックの現在のバージョンを、クライアント装置に存在するメモリ・ハードウェア上のブロック・スタッシュに記憶するか、分散型システムのメモリ上に記憶するかを決定する工程を備える。データ・ブロックがブロック・スタッシュに記憶されている場合、方法はさらに次を備える:データ処理ハードウェアが、分散型システムのメモリに記憶されている別のランダムなデータ・ブロックを取り出すために分散型システムに偽クエリを送信する工程;データ処理ハードウェアが、取り出されたランダムなデータ・ブロックを復号する工程;データ処理ハードウェアが、フレッシュなランダム性でランダムなデータ・ブロックを再暗号化する工程;および、データ処理ハードウェアが、分散型システムのメモリ上へ再暗号化したランダムなデータ・ブロックを再アップロードする工程。
【0005】
本開示の実装は、次の随意の機能のうちの1つ以上を含んでよい。いくつかの実装では、データ・ブロックがダウンロード・フェーズ中にブロック・スタッシュに記憶されていない場合、方法は、データ処理ハードウェアが、分散型システムのメモリからデータ・ブロックを取り出すために、分散型システムに真のクエリを送信する工程を備える。オーバライト・フェーズ中にデータ・ブロックに対する読出または書込動作を実行するとき、方法は、データ・ブロックの新しいバージョンによりデータ・ブロックを更新することによって書込動作を実行する工程も含んでよい。いくつかの構成では、確率は(C/N)未満であり、Cはブロック・スタッシュのストレージ容量であり、Nは分散型システム上の記憶用にデータ処理ハードウェアによってアウトソーシングされるデータ・ブロックの数である。
【0006】
いくつかの例では、データ・ブロックの現在のバージョンがオーバライト・フェーズ中にブロック・スタッシュに記憶されていない場合、方法はさらに次も備える:データ処理ハードウェアが、分散型システムのメモリからデータ・ブロックを取り出すために、分散型システムに真のクエリを送信する工程;データ処理ハードウェアが、データ・ブロックの現在のバージョンを暗号化する工程;および、データ処理ハードウェアが、分散型システムのメモリ上へデータ・ブロックの暗号化された現在のバージョンをアップロードする工程。ここで、方法はさらに、分散型システムのメモリから取り出されたデータ・ブロックを破棄する工程も備えてよい。
【0007】
本開示の別の態様では、差分プライバシーを有する忘却型アクセスのための方法を提供する。方法は、クライアント装置のデータ処理ハードウェアが、データ・ブロックに対するクエリ(q)を実行するための命令を実行する工程を備える。ダウンロード・フェーズ中、方法は、データ処理ハードウェアが、データ・ブロックがクライアント装置に存在するメモリ・ハードウェア上のブロック・スタッシュに記憶されているか否かを判定する工程を備える。データ・ブロックがブロック・スタッシュに記憶されている場合、方法は次も備える:データ処理ハードウェアが、ブロック・スタッシュからデータ・ブロックを除去する工程、データ処理ハードウェアが、データ処理ハードウェアと通信状態にある分散型システムに偽クエリを送信する工程、および、データ処理ハードウェアが、分散型システムから取り出されたランダムなデータ・バケツを破棄する工程。偽クエリは、分散型システムのメモリに記憶されている2つのランダムなデータ・バケツをダウンロードし、データ・バケツの各々は複数のデータ・ブロックを含む。オーバライト・フェーズ中、方法はさらに、データ処理ハードウェアが、ブロック・スタッシュから除去されたデータ・ブロックまたは分散型システムのメモリから取り出された対応するデータ・バケツから取得されたデータ・ブロックに対する読出または書込動作を実行する工程を備える。方法はまた、データ処理ハードウェアが、確率に基づいて、データ・ブロックの現在のバージョンを、ブロック・スタッシュに記憶するか、分散型システムのメモリ上に記憶するかを決定する工程も備える。現在のバージョンのデータ・ブロックがブロック・スタッシュに記憶されている場合、方法は次を備える:データ処理ハードウェアが、分散型システムのメモリに記憶されている別の2つのランダムなデータ・バケツをダウンロードするために分散型システムに偽クエリを送信し、各データ・バケツは複数のデータ・ブロックを含む;データ処理ハードウェアが、ランダムなデータ・バケツ内のデータ・ブロックの全てを復号する;データ処理ハードウェアが、フレッシュなランダム性でランダムなデータ・バケツ内のデータ・ブロックを再暗号化する;および、データ処理ハードウェアが、分散型システムのメモリ上へ再暗号化したデータ・ブロックを含むランダムなデータ・バケツを再アップロードする。
【0008】
本開示の実装は、次の随意の特徴のうちの1つ以上を含んでもよい。いくつかの構成では、データ・ブロックがダウンロード・フェーズ中にブロック・スタッシュに記憶されていない場合、方法は、データ処理ハードウェアが、分散型システムのメモリから一対のデータ・バケツをダウンロードするために、分散型システムに真のクエリを送信する工程;データ処理ハードウェアが、2つのデータ・バケツ内のデータ・ブロックの全てを復号する工程;および、データ処理ハードウェアが、2つのデータ・バケツのうちの1つがデータ・ブロックを含むか否かを判定する工程を備える。ここで、真のクエリに応答して分散型システムからダウンロードされるデータ・バケツの各々は、複数のデータ・ブロックと、データ・ブロックの識別子に関連付けられている対応する暗号識別子とを含む。これらの構成では、データ・バケツのうちの1つがデータ・ブロックを含む場合、方法はさらに、データ処理ハードウェアが、対応するデータ・バケツからデータ・ブロックを除去する工程;および、データ処理ハードウェアが、データ・バケツから残りのデータ・ブロックを破棄する工程を備える。
【0009】
いくつかの例では、データ・ブロックの識別子は文字列を含む。オーバライト・フェーズ中にデータ・ブロックに対する読出または書込動作を実行する工程は、データ・ブロックの新しいバージョンによりデータ・ブロックを更新することによって書込動作を実行する工程も含んでよい。確率は(C/N)未満であってよく、Cはブロック・スタッシュのストレージ容量であり、Nは分散型システム上の記憶用にデータ処理ハードウェアによってアウトソーシングされるデータ・ブロックの数である。
【0010】
いくつかの実装では、現在のバージョンのデータ・ブロックがオーバライト・フェーズ中にブロック・スタッシュに記憶されていない場合、方法は、データ処理ハードウェアが、分散型システムのメモリから一対のデータ・バケツをダウンロードするために、分散型システムに真のクエリを送信する工程を備える。ここで、真のクエリに応答して分散型システムからダウンロードされるデータ・バケツの各々は、複数のデータ・ブロックと、データ・ブロックの識別子に関連付けられている対応する暗号識別子とを含む。この実装では、データ・ブロックの現在のバージョンがオーバライト・フェーズ中にブロック・スタッシュに記憶されていない場合、方法は:データ処理ハードウェアが、データ・バケツ内のデータ・ブロックの全てを復号する工程;前記データ処理ハードウェアが、前記データ・バケツのうちの1つ内のデータ・ブロックの以前のバージョンを、データ・ブロックの現在のバージョンで置換する工程;データ処理ハードウェアが、データ・バケツ内のデータ・ブロックの現在のバージョンを含むデータ・ブロックの全てを再暗号化する工程;および、データ処理ハードウェアが、分散型システムのメモリ上へ再暗号化したデータ・ブロックを含むデータ・バケツを再アップロードする工程も備える。
【0011】
本開示のさらに別の態様では、差分プライバシーを有する忘却型アクセスのための方法を提供する。方法は、クライアント装置のデータ処理ハードウェアが、サーバ上に記憶されているデータ・ブロックに対するクエリ(q)を実行するための命令を実行する工程を備える。方法は、サーバ上に記憶されている、クエリの行われたデータ・ブロック以外のK個のブロックに対する第1のダウンロード要求を送信する工程と、クエリの行われたデータ・ブロックおよびK-1の他のブロックに対する第2のダウンロード要求を送信する工程とも備える。方法はさらに、サーバ(110)から第1のダウンロード要求のK個のブロックについて第1のダウンロード・シーケンスを受信する工程と、サーバから第2のダウンロード要求のクエリの行われたデータ・ブロックとK-1個の他のブロックとについて、第2のダウンロード・シーケンスを受信する工程と、を備える。
【0012】
本開示の実装は、次の随意の特徴のうちの1つ以上を含んでもよい。いくつかの例では、サーバは信頼済みでなく、サーバは、暗号化されていない複数の公開利用可能なデータ・ブロックを記憶している。方法は、データ処理ハードウェアが、サーバから受信される第1のダウンロード・シーケンスのうちのK個のブロックを破棄する工程を備えてもよい。これに加えてまたはこれに代えて、方法は、データ処理ハードウェアが、サーバから受信される第2のダウンロード・シーケンスのうちのK-1個の他のブロックを破棄する工程も含んでよい。Kの値は、セキュリティ・パラメータと、0より大きいエラー確率とに基づいてよい。
【0013】
忘却型ランダム・アクセス・メモリ(O-RAM)は、クライアントに所有されクライアントに暗号化された、信頼済みでないメモリ上に記憶されているデータに対するクライアントのアクセス・パターンを秘匿することができるものの、O-RAMに関連した大きな帯域幅オーバーヘッドおよび/または大きなクライアントストレージの要件のため、O-RAMを広範囲に展開することは制限されている。多くのシナリオでは、データ・コンテンツおよびアクセス・パターンが完全に隠されたままであることを保証するというO-RAMの安全保障は、強力すぎる。例えば、他のチャンネル(例えば、データのユーザ/クライアントに関する先験的な知識)を通じて漏れているアクセス・パターンに関する情報を秘匿することは、無意味である場合がある。その場合、クエリの小さな組のみが実際に機密であるときには、アクセス・シーケンス全体を隠すことは不要である。本明細書における実装は、一部の不要なセキュリティ要件を緩和することによって指数関数的に小さな帯域幅オーバーヘッドを達成するために、信頼済みでないメモリ上に記憶されているデータ・ブロックに対し差分プライベート・アクセスを用いることに関する。信頼済みでないメモリは、分散型システム(例えば、クラウド環境)の複数のメモリ位置にわたって存在するストレージ抽象化を生じる場合があり、クライアントは、それら複数のメモリ位置にわたって暗号化されたデータ・ブロックを記憶している場合がある。信頼済みでないメモリはまた、暗号化されていない、公開され知られているデータ・ブロックも記憶している場合がある。それらのシナリオでは、公開され知られている暗号化されていないデータのアクセス・パターンを信頼済みでないメモリから秘匿するために、差分プライベート・アクセスがプライベート情報取出(PIR)とともに用いられてもよい。図1Aおよび図1Bには、クライアント104によって所有されているN個のデータ・ブロック(B)102を分散型システム140上に記憶するとともに、クライアント104によるデータ・ブロック102に対する検索機能を保持しつつ、アクセス・パターンを秘匿するために差分プライベート・アクセスを用いてデータ・ブロック(B)102に対するクエリを忘却的に実行するための一例のシステム100を示す。クライアント104に関連付けられているクライアント装置120(例えば、コンピュータ)は、ネットワーク130を介して、スケーラブル/エラスティックな非一時的ストレージ抽象化150を有する分散型システム140と通信する。クライアント装置120は、関連するメモリ・ハードウェア122および関連するデータ処理ハードウェア124も備え得る。ストレージ抽象化150(例えば、キー/値ストア、ファイル・システム、データ・ストアなど)は、ストレージ・リソース114上にあり、1または複数のクライアント装置120によるストレージ・リソース114のスケーラブルな使用を可能とする。
【0014】
システム100は、随意では、公開され知られている暗号化されていないN個のデータ・ブロック102を1または複数のストレージ・リソース114にわたって記憶してもよい。したがって、クライアント装置120はデータ・ブロック102を所有しなくてもよく、データ・ブロック102のコンテンツが複数の構成において公開利用可能である。しかしながら、データ・ブロック102が1または複数のストレージ・リソース114から取り出される場合、差分プライベート・アクセスの使用によって同様にアクセス・パターンが隠されてもよい。
【0015】
いくつかの実装では、分散型システム140は、ストレージ抽象化150に対するアクセスを管理するコンピューティング・デバイス112を実行する。例えば、クライアント装置120は、データ・ブロック102を暗号化してストレージ抽象化150上に記憶してもよく、また、ストレージ抽象化150からデータ・ブロック102を取り出して復号してもよい。示した例では、分散型システム140に関連付けられている信頼済みでない側とネットワーク130を介して通信状態にあるクライアント装置120に関連付けられている信頼済みの側とを有するシステム100を示しているが、システム100は、これに代えて、信頼済みのコンピューティング・デバイス(CPU)と信頼済みでないデータ・ストレージとを有する大きなイントラネット上に実装されてもよい。分散型システム140またはデータ・ストレージに関連付けられている信頼済みでない側は、コンピューティング・デバイス112がプロトコルに正直に従うものの、追加の知見を得るために、分散型システム140によって漏らされた情報を用いて任意の確率的多項式時間アルゴリズムを実行し得るという点で、「正直だが好奇心に富む(honest-but-curious)」と考えられる。
【0016】
いくつかの実装では、分散型システム100は、リソース110,110a-zを備える。リソース110は、ハードウェア・リソースおよびソフトウェア・リソースを含んでよい。ハードウェア・リソース110は、コンピューティング・デバイス112(データ処理装置およびデータ処理ハードウェアとも呼ばれる)を含んでもよく、非一時的なメモリ114(メモリ・ハードウェアおよびストレージ・リソースとも呼ばれる)を含んでもよい。ソフトウェア・リソース110は、ソフトウェア・アプリケーション、ソフトウェア・サービス、アプリケーション・プログラム・インタフェース(API)などを含んでもよい。ソフトウェア・リソース110は、ハードウェア・リソース110に存在してもよい。例えば、ソフトウェア・リソース110がメモリ・ハードウェア114に記憶されてもよく、ハードウェア・リソース110(例えば、コンピューティング・デバイス112)がソフトウェア・リソース110を実行していてもよい。
【0017】
ソフトウェア・アプリケーション(すなわち、ソフトウェア・リソース110)は、コンピューティング・デバイスにタスクを実行させるコンピュータ・ソフトウェアを指す場合がある。いくつかの例では、ソフトウェア・アプリケーションは、「アプリケーション」、「アプリ(app)」または「プログラム」と呼ばれる場合がある。アプリケーションの例は、次に限定されないが、システム診断アプリケーション、システム管理アプリケーション、システム保守アプリケーション、文書処理アプリケーション、表計算アプリケーション、メッセージング・アプリケーション、メディア・ストリーミング・アプリケーション、ソーシャル・ネットワーキング・アプリケーション、およびゲーム・アプリケーションを含む。
【0018】
メモリ・ハードウェア114,122は、コンピューティング・デバイス112および/またはクライアント装置120(すなわち、クライアント装置120のデータ処理ハードウェア124)による使用のため、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的にまたは永続的に記憶するために用いられる物理デバイスであってよい。メモリ・ハードウェア114,122は、揮発性および/または不揮発性のアドレス可能な半導体メモリであってよい。不揮発性のメモリの例は、次に限定されないが、フラッシュ・メモリおよび読出専用メモリ(ROM)/プログラマブル読出専用メモリ(PROM)/消去可能プログラマブル読出専用メモリ(EPROM)/電子的に消去可能なプログラマブル読出専用メモリ(EEPROM)(例えば、ブート・プログラムなど典型的にはファームウェアに用いられる)を含む。揮発性メモリの例は、次に限定されないが、ランダム・アクセス・メモリ(RAM)、忘却型ランダム・アクセス・メモリ(ORAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープを含む。
【0019】
ネットワーク130は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、および/またはインターネットなど、様々な種類のネットワークを含んでよい。ネットワーク130は、長距離(long range)ネットワーク(例えば、インターネットまたはWAN)を表わす場合もあるが、いくつかの実装では、ネットワーク130は、ローカル・エリア・ネットワーク(LAN)など、より短い距離のネットワークを含む。いくつかの実装では、ネットワーク130は、標準的な通信技術および/またはプロトコルを用いる。したがって、ネットワーク130は、イーサネット(登録商標)、WiFi(Wireless Fidelity)(例えば、802.11)、WiMAX(worldwide interoperability for
microwave access)、3G、LTE(Long Term Evolution)、デジタル加入者線(DSL)、非同期転送モード(ATM)、インフィニバンド(InfiniBand)、PCIエクスプレス・アドバンスド・スイッチ(PCI Express Advanced Switching)、BLE(Bluetooth(登録商標) Low Energy)などの技術を用いるリンクを含む。同様に、ネットワーク130上において用いられるネットワーク・プロトコルは、MPLS(multiprotocol label switching)、TCP/IP(transmission control protocol/Internet protocol)、UDP(User Datagram Protocol)、HTTP(hypertext transport protocol)、SMTP(simple
mail transfer protocol)、FTP(file transfer protocol)などを含むことが可能である。ネットワーク130上において交換されるデータは、HTML(hypertext markup language)、XML(extensible markup language)を含む技術および/またはフォーマットを用いて表現されることが可能である。加えて、それらのリンクの全部または一部は、SSL(secure sockets layer)、TLS(transport layer security)、VPN(virtual private network)、IPsec(Internet Protocol security)など、従来の暗号化技術を用いて暗号化されることが可能である。他の例では、ネットワーク130は、上述のものに代えてまたは加えて、カスタマイズされたおよび/または専用のデータ通信技術を用いる。
【0020】
データ・ブロック102はアトム単位のデータに相当し、各々がBバイト毎のサイズを有する。例えば、分散型システム上のストレージに対する典型的なBの値は、64KB~256Bである。表記Nは、クライアント104に関連付けられており(または個人情報取出においてストレージ・リソース114に関連付けられており)忘却型ランダム・アクセス・メモリ(O-RAM)または忘却型ストレージ(OS)を用いてストレージ抽象化150上に記憶されている、データ・ブロック102の総数を示す。より詳細に以下に記載するように、OSは、データ・ブロック102がO-RAMによって用いられる単純なインデックス識別子の代わりに一意な文字列識別子によって識別されるという自然な拡張をOSが考慮することを除き、O-RAMと同じフレームワーク(すなわち、トランスクリプトおよびセキュリティ定義)を用いることができる。したがって、Nは、ストレージ抽象化150上のO-RAMまたはOSの容量を意味する場合がある。N個のデータ・ブロック102の各々は、メモリ・ハードウェア114にわたって存在するストレージ抽象化150の対応するメモリ位置118,118A-N(図1B)において記憶される。いくつかの実装では、N個のデータ・ブロック102は個人情報取出(PIR)ストレージに関連付けられ、その場合、そのN個のデータ・ブロック102は、1または複数のストレージ・リソース114上に記憶されており、暗号化されておらず、公開利用可能である。
【0021】
従来の暗号化スキームによって機密性が提供される一方、従来の暗号化スキームは、機密性の高い情報を信頼済みでない分散型システム140に対し暴露し得るデータ・アクセス・パターンを隠すには有効でない。さらに、従来の暗号化スキームでは、分散型システム140上に記憶されている暗号化されたデータ102を検索することがクライアント104に可能となるのは、クライアント104が分散型システム140にデータ102に対する平文のアクセスを提供した場合のみである。データ102がクライアント装置120に由来するので、クライアント装置120は信頼済みであると見なされる。
【0022】
いくつかの実装では、クライアント装置120および分散型システム140は、暗号化されたデータ・ブロック102をストレージ抽象化150において忘却的に移動させてデータ・アクセス・パターン(それらのデータ・ブロック102の読出/書込が行われた)を分散型システム140から完全に隠すために、忘却型転字ルーチン450を実行する。例えば、忘却型転字ルーチン450は、分散型システム140に、アレイAに配置された、再転字されたN個のデータ・ブロック102を記憶するためのストレージ抽象化150の新しいメモリ位置118を割り当てさせてもよく、ストレージ抽象化150を複数のデータ・バケツ350へと編成、分割、区分させてもよく、その両方であってもよい。いくつかの実装では、忘却型転字ルーチン450は、各データ・バケツ350が1または複数の真のデータ・ブロック102と1または複数のダミーのデータ・ブロック103との両方を記憶することが可能であるように、ストレージ抽象化150を、θ(log(logN))個のメモリ位置118を各々含むN個のデータ・バケツ350へと編成する。これらの実装では、ストレージ抽象化150は、θ(N×log(logN))に等しい総容量を有する。
【0023】
信頼済みの側において、クライアント装置120は、忘却型転字ルーチン450を実行する一方、一対の擬似ランダム関数F,Fおよび対応する識別子idを用いて、一度に2個のデータ・バケツ350を分散型システム140から反復的にダウンロードし、メモリ・ハードウェア122に対しブロック・スタッシュ370を割り当てることができる。受信される各データ・バケツ350について、クライアント装置120は、転字されたデータ・ブロックを生成するために、ランダムな転字を復号し、対応するデータ・バケツ350内のデータ・ブロック102に対し適用するとともに、各々の転字されたデータ・ブロック102に対する対応するバッファ・バケツ360を決定する。ストレージ抽象化150において暗号化されたデータ・ブロック102を忘却的に移動させるための忘却型転字ルーチンを実行する追加の詳細は、2017年4月27日に出願した米国特許出願62/490,804(その全体を引用によって本明細書に援用する)に見出される。いくつかの実装では、さらにクライアント装置120は、バケツ350の対からデータ・ブロック102をダウンロードすることによってローカルメモリ・ハードウェア122における忘却型シャッフルを初期化するとともに、新しく選択される擬似ランダム関数F’,F’を用いる新しいランダムに選択される転字に対しそれにしたがって再暗号化されたデータ・ブロック102をシャッフルする前にデータ・ブロック102を復号/再暗号化する。その後、クライアント装置120は、新しく選択された擬似ランダム関数F’,F’に基づいて、再転字されたデータ・ブロック102を対応するバッファ・バケツ360にアップロードする。古いバケツ350は、シャッフルが完了した後、削除されてもよい。この忘却型シャッフルは、忘却型転字ルーチン450をクライアント装置120および分散型システム140上で実行する時に生じてもよい。ストレージ抽象化150においてN個のデータ・ブロック102を忘却的にシャッフルする追加の詳細は、2017年5月19日に出願した、米国特許出願62/508,523(その全体を引用によって本明細書に援用する)に見出される。
【0024】
いくつかの実装では、クライアント装置120がストレージ抽象化150上に記憶されている暗号化されたデータ・ブロック102にアクセス(読出/書込)する必要がある場合、クライアント装置120のデータ処理ハードウェア124は、データ・ブロック102に対するクエリ(q)を実行するために命令300,400を実行する。命令300,400を実行することによって、クライアント装置120は、データ・ブロック102のコンテンツやクライアント装置120によって実行されるクエリ(q)のシーケンスを分散型システム140に暴露することなく、データ・ブロック102を取り出すことができる。クエリ(q)は、2つのフェーズ、すなわち、(1)ダウンロード・フェーズと、(2)オーバライト・フェーズとからなるので、分散型システム140は対応する動作が読出であるか書込であるかを意識しない。さらに、命令300,400の実行は、いずれのデータ・ブロック102が分散型システム140から読出/書込を行われたかを不要とする。命令300,400の実行には、クライアント装置120がデータ・ブロック102に対する対応するクエリ(q)を実行する場合、クライアント装置120と分散型システム140との間の2回のラウンドトリップが必要である。例えば、各クエリ(q)がダウンロード・フェーズとオーバライト・フェーズとを含むので、書込動作に関連付けられているオーバライト・ブロックのコンテンツは、ダウンロード・フェーズ中のダウンロードされるブロックのコンテンツに依存しない。したがって、2つのブロックは、1回のラウンドトリップを用いて要求されることが可能であり、2回目のラウンドトリップは、ストレージ抽象化150にオーバライト・ブロックをアップロードするために用いられることができる。
【0025】
図1Bを参照すると、いくつかの実装では、分散型のストレージ・システム140は、疎結合メモリ・ホスト110,110a-z(例えば、コンピュータまたはサーバ)を備え、各メモリ・ホストは、データをキャッシュするために用いられ得るストレージ・リソース114(例えば、メモリ・ハードウェア、メモリ・ハードウェア、フラッシュ・メモリ、ダイナミック・ランダム・アクセス・メモリ(DRAM)、相変化メモリ(PCM)、および/またはディスク)と通信状態にある、コンピューティング・リソース112(例えば、1または複数のプロセッサまたは中央処理装置(CPU))を有する。ストレージ・リソース114上にあるストレージ抽象化150は、1または複数のクライアント装置120,120a-nによるストレージ・リソース114のスケーラブルな使用を可能とする。クライアント装置120は、ネットワーク130を通じて(例えば、リモート・プロシージャ・コール(RPC)を介して)メモリ・ホスト110と通信してもよい。
【0026】
いくつかの実装では、分散型のストレージ・システム140は「シングル・サイド型(single-sided)」であり、クライアント装置120がデータ・ブロック102に対するクエリ(q)を実行するための命令300,400を実行するときに、クライアント装置120からの真のクエリ302,402および/または偽クエリ304,404に応答してストレージ抽象化150からデータ・ブロック102および/またはダミーのデータ・ブロック103を取り出すための、サーバ・ジョブの必要が除かれる。「シングル・サイド型」とは、メモリ・ホスト110に対する要求処理のほとんどが、メモリ・ホスト110のCPU112上でのソフトウェアによってではなく、ハードウェアにおいて行われ得る方法を指す。シングル・サイド型の分散型キャッシング・システムに関連する追加の概念および特徴は、米国特許9,164,702(その全体を引用によって本明細書に援用する)に見出される。
【0027】
分散型システム140は、リモート・メモリ・ホスト110(例えば、ストレージ抽象化200)のストレージ・リソース114(例えば、メモリ・ハードウェア)においてデータ・ブロック102を忘却的に移動させるとともに、RPCを介して、またはリモート・ダイレクト・メモリ・アクセス(RDMA)可能なネットワーク・インタフェース・コントローラ(NIC)116を介して、リモート・メモリ・ホスト110からデータ・ブロック102を得ることができる。ネットワーク・インタフェース・コントローラ116(ネットワーク・インタフェース・カード、ネットワーク・アダプタ、またはLANアダプタとしても知られている)は、ネットワーク130にコンピューティング・デバイス/リソース112を接続するコンピュータ・ハードウェア・コンポーネントであってもよい。メモリ・ホスト110a-zおよびクライアント装置120の両方は、各々、ネットワーク通信用のネットワーク・インタフェース・コントローラ116を有してもよい。命令300,400および/またはハードウェア・リソース110の物理的なプロセッサ112上で実行する忘却型転字ルーチン450は、メモリ114の1組のリモート・ダイレクト・メモリ・アクセス可能な領域/位置118A-Nをネットワーク・インタフェース・コントローラ116に登録する。各メモリ位置118は、対応するデータ・ブロック102を記憶するように構成されている。
【0028】
いくつかの実装では、クライアント装置120がデータ・ブロック102に対するクエリ(q)を実行するために命令300,400を実行し、クライアント装置120のメモリ・ハードウェア122におけるブロック・スタッシュ370上にデータ・ブロック102がローカルに記憶されていると判定する場合、クライアント装置120は、ブロック・スタッシュ370からデータ・ブロック102を取り出すとともに、ローカルメモリ・ハードウェア122におけるブロック・スタッシュ370からのデータ・ブロック102の取出を秘匿するべく、ランダムなブロック102(または、真のブロックおよび/または偽ブロック102,103を含むランダムなデータ・バケツ350)を取り出すために偽クエリ304,404をNIC116に送信する。クライアント装置120は、偽クエリ304,404によりダウンロードされるランダムなブロック102を破棄してもよい。一方、データ・ブロック102がストレージ抽象化150上に記憶されているとクライアント装置120が判定する場合、クライアント装置120は、ストレージ抽象化150から対応するデータ・ブロック102を取り出すために、NIC116に真のクエリ302,402を送信してもよい。
【0029】
図2Aおよび図2Bは、1または複数の談合(colluding)ストレージ・リソース114(図2A)または非談合複数のストレージ・リソースのうちの1つ(図2B)上に記憶されているデータ・ブロック102に対するダウンロード要求202,204を実行するためにクライアント装置120上において実行する、差分プライベート情報の情報取出(DP-IR)命令の一例を提供するO-RAMおよびOSとは異なり、N個のデータ・ブロック102のコンテンツが任意の敵対者を含む全てのパーティによって知られていると仮定される。この場合、信頼済みでないサーバは、クライアント装置120に対するアクセスを提供する前に、N個のデータ・ブロックを生成する。通常、PIRクライアント装置120は、データ・ブロック102が暗号化されておらず、それらのメモリ位置が公開利用可能であるので、ステートレスである。
【0030】
N個のデータ・ブロック102を生成および記憶する単一のサーバ110(例えば、1つのストレージ・リソース114)について、図2Aには、ストレージ・リソース114aからブロックB(102)をダウンロードするためにDP-IR命令200を実行するクライアント装置120を示す。ここで、ブロックBは、1つのストレージ・リソース114a上に記憶されている9個のNブロックB-Bのうちの1つに相当する。クライアント装置120は、クエリされたブロック102に関連付けられているインデックスi(例えば、i=1,2,3...、または9)を呼び出してもよい。DP-IR命令200は、下限に向かって漸近的に密になる一定なエラー確率(α)に対するセキュリティ・パラメータεを有する差分プライバシーを含む。セキュリティ・パラメータεは0以上であってよく、エラー確率αは0より大きくてよい。ダウンロードされたブロックBに対するアクセス・パターンを秘匿するために、DP-PIR命令200は、ブロックB以外のK個のブロックに対する確率αのダウンロード要求202と、ブロックBおよびK-1個の他のブロックに対する確率1-αの別のダウンロード要求204とを実行することによって、真のクエリを偽装する。従って、各ダウンロード要求202,204は、ストレージ・リソース114上に記憶されているN個のデータ・ブロック102のあいだの帯域幅のちょうどK個のブロックを要求する。ダウンロード要求202,204は、ブロックBが、クライアント装置120がダウンロードすることを望むブロックBに対し実際にクエリされるものである、という事実を秘匿する任意の順番で生じてよい。Kの値は、セキュリティ・パラメータεと、エラー確率(α)とに基づく。例えば、Kは以下のように表現されてもよい。
【0031】
【数1】
【0032】
単一のサーバの例では、クライアント装置120は、エラー確率αに関連付けられており、クエリされたブロックB以外のK個のブロックB,B,Bを返す第1のダウンロード・シーケンス212と、エラー確率1-αに関連付けられており、ブロックBおよびK-1個の他のブロックB,Bに対する第2のダウンロード・シーケンス214とを受信する。第2のダウンロード・シーケンス214は、クライアント装置120によって、第1のダウンロード・シーケンス212を受信する前に受信されてもよく、後に受信されてもよい。エラー確率αに関連付けられている第1のダウンロード・シーケンス212において返されるK個のブロックB,B,Bと、エラー確率1-αに関連付けられている第2のダウンロード・シーケンス214において返されるK-1個の他のブロックB,Bとは、クライアント装置120上において実行するDP-IR命令200によって、各々一様ランダムに選択されてよい。
【0033】
いくつかの実装では、複数のサーバ110,110a-nを運用するエンティティまたは組織(例えば、それぞれのサーバ110に関連付けられている2つ以上のストレージ・リソース114,114a-n)は、複数のサーバのうちのフラクションtのコラプションを生じる該複数のサーバのうちの1つを含む。互いに談合する様々なストレージ・リソース114a-nからデータ・ブロック102をダウンロードする場合にクライアント装置120によるアクセス・パターンを秘匿するこのシナリオにおいて、図2Aには、談合するストレージ・リソース114a-nの全てを分けて均等にブロックBを要求するのではなく、一様ランダムに選択されたストレージ・リソース114にダウンロード要求202,204を送信することによって、ブロックB(または別のブロックB)をダウンロードするためにDP-IR命令200を実行するクライアント装置120を示す。したがって、複数の談合するサーバの設定においてダウンロードされたブロックBに対するアクセス・パターンを秘匿するために、DP-PIR命令200は、ブロックB以外のK個のブロックに対する確率αを有するダウンロード要求202とブロックBおよびK-1個の他のブロックに対する確率1-αを有する他のダウンロード要求204とを実行することによって、一様ランダムに選択されたストレージ・リソース114に対し送信される真のクエリを偽装する。クライアント装置からのダウンロード要求202,204の各々を受信することに応じて、一様ランダムに選択されたストレージ・リソース114は、単一のサーバの設定に関連して上述したのと同じようにして、クエリされたブロックB以外のK個のブロックB,B,Bに対するエラー確率αに関連付けられている対応するダウンロード・シーケンス212と、ブロックBおよびK-1個の他のブロックB,Bに対するエラー確率1-αに関連付けられている対応するダウンロード・シーケンス214とを返す。
【0034】
図2Bを参照すると、クライアント装置120は、複数の非談合サーバ110(相互に信頼済みでなく、したがって、互いに情報を共有しない)のうちの1つ(例えば、2つ以上のストレージ・リソース114)からのデータ・ブロックB(102)をクエリする。例えば、非談合サーバ110は、クライアント装置120に対しアクセス可能であるが、契約上の義務または他の理由のために互いに情報を共有しない、別個のエンティティによって所有され得る。各非談合サーバ110は、各サーバ110がその対応するストレージ・リソース114上において実行されるメモリ・アクセス・パターンを全て監視できるように、対話しない敵対者に関連付けられてもよい。ダウンロードされたブロックBに対するアクセス・パターンを秘匿するために、DP-PIR命令200は、談合しないストレージ・リソース114の各々に対し送信される対応するダウンロード要求224(各ストレージ・リソース114から帯域幅のちょうどc個のランダムなブロックをダウンロードすることを要求する)を実行することによって、真のクエリを偽装する。クエリされたブロックBを記憶するストレージ・リソース114について、対応するダウンロード要求224は、クエリされたブロックBと、c-1個の他のブロックとに対するものである。残りのストレージ・リソース114について、各対応するダウンロード要求224は、クエリされたブロックB以外のc個のブロックに対するものである。各談合しないストレージ・リソース114に対するcの値は、セキュリティ・パラメータεと、非談合サーバの総数Dと、各ストレージ・リソース114上に記憶されているN個のデータ・ブロック102の対応する数とに基づく。例えば、各談合しないストレージ・リソース114については、cは次のように表現されてよい。
【0035】
【数2】
【0036】
いくつかの実装では、O-RAMは、クライアント装置120が、クライアントに所有されクライアントに暗号化されたデータ・ブロック102を、分散型システム140のストレージ抽象化150にわたって対応するメモリ位置118上にプライベートで記憶することを可能とする。図2Aおよび図2BのDP-IRの例とは対照的に、O-RAMに記憶されているデータ・ブロック102は、クライアント装置120によってプライベート・キーを用いて暗号化されており、各データ・ブロック102に関連付けられているメモリ位置118は、信頼済みでない分散型システム140から隠される。図3A図3Dには、分散型システム140にデータ・ブロック102のコンテンツやクライアント装置120によって実行されるクエリ(q)のシーケンスを暴露することなく、一例のクライアント装置120上において実行するストレージ抽象化150上に記憶されている暗号化されたデータ・ブロック102にアクセス(読出/書込)するクエリ(q)を実行するための差分プライベート-忘却型ランダム・アクセス・メモリ(DP-ORAM)命令300を示す。クエリ(q)は、2つのフェーズ、すなわち、(1)ダウンロード・フェーズと、(2)オーバライト・フェーズとからなるので、分散型システム140は対応する動作が読出であるか書込であるかを意識せず、またクエリされたデータ・ブロックBが存在しない場合のミスを暴露する。クライアント装置120(例えば、データ処理ハードウェア124上)において実行するDP-ORAM命令300は、最初に暗号化モジュール305を用いて長さkのプライベート・キーK,K,Kを生成し、N個の空のブロック・スロット(例えば、空のメモリ位置118)からなるストレージ抽象化150上のアレイAを初期化し、クライアント装置120のメモリ・ハードウェア122上のブロック・スタッシュ370を初期化してもよい。アレイAの各々の空のブロック・スロットは、対応するインデックスAを含んでよい。各々の空のブロック・スロットは、随意では、ダミーのブロック(例えば、0に等しい暗号化を有するブロック)で最初に満たされてもよい。
【0037】
いくつかの例では、クライアント装置120および分散型システム140は、忘却型転字ルーチン450を実行して、分散型システム140に、転字されたデータ・ブロック102または再転字されたデータ・ブロックの記憶のためにストレージ抽象化150の新しいメモリ位置118を割り当てさせ、ストレージ抽象化150を複数のM個のデータ・バケツ350,350a-nへと編成、分割、区分させる。各データ・バケツ350は、N個のデータ・ブロック102のうちの指定された数を記憶してもよい。いくつかの例では、データ・ブロック102は、M個のデータ・バケツ350へのストレージ抽象化150の分割が信頼済みでない分散型システム140に不明瞭/忘却型であるように、以前の忘却型転字ルーチン450中にクライアント装置120において実行された擬似ランダムな転字πによって各データ・バケツ350に対しランダムに割り当てられる。より小さなデータ・バケツ350によって、分散型システム140およびクライアント装置120が忘却型転字ルーチン450および命令300の実行中に転字動作を実行している時、帯域幅を増加させるためにストレージ抽象化150のO-RAMがさらに分割される。分散型システム140において初期化されるM個のデータ・バケツ350の数は、セキュリティおよび/または帯域幅の要件に基づいて調整可能である。
【0038】
ブロック・スタッシュ370は、クライアント装置120のメモリ・ハードウェア122上にCと等しいスペース/サイズ/容量を占有し、各データ・ブロック102は、ブロック・スタッシュ370(ストレージ抽象化150に加えて)に記憶される確率pを有する。ブロック・スタッシュ370の容量Cは、セキュリティおよび/または帯域幅の要件に基づいて調整可能である。例えば、ブロック・スタッシュ370の容量Cを増加させることによって、増加した帯域幅を犠牲にしてセキュリティが増大する。ブロック・スタッシュ370に記憶されているデータ・ブロックの確率pは、次のように表現されてよい。
【0039】
【数3】
【0040】
DP-ORAM命令300は、各暗号化されたデータ・ブロック102の実際の位置が分散型システム140から隠されるように、クライアント装置120に、プライベート・キーKを用いて各データ・ブロック102を暗号化させるとともに、転字πに基づき、各暗号化されたデータ・ブロックB(102)をストレージ抽象化150上の対応するランダムに選択された空のブロック・スロットAに反復的にアップロードさせる。さらに、データ・ブロック102が、クライアントに所有されたプライベート・キーKを用いてクライアント装置120によって信頼済みの側において暗号化されるので、ストレージ抽象化150上に記憶されているN個のデータ・ブロック102のコンテンツは、分散型システム150にも知られない。クライアント装置120は、要求されたデータ・ブロック102に関連付けられている対応するインデックスiとともに転字πを適用することによって、ストレージ抽象化150上に記憶されている対応するデータ・ブロック102に単純にアクセスしてもよい。
【0041】
図3Aを参照すると、データ・ブロック(B)102がクライアント装置120のメモリ・ハードウェア122上のブロック・スタッシュ370に記憶されている場合、データ処理ハードウェア124は、ダウンロード・フェーズ中にデータ・ブロック(B)102に対するクエリ(q)を実行する。Bは、暗号化されてストレージ抽象化150のアレイAの上に記憶されているN個のデータ・ブロック1-16のうちのいずれにも相当し得る。データ・ブロックB(102)は確率pでブロック・スタッシュ370に記憶されているので、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されている何らかのランダムなデータ・ブロック102をダウンロードしてブロック・スタッシュ370からのデータ・ブロック(B)の取出を難読化するために、ブロック・スタッシュ370から、要求されたデータ・ブロック(B)102を除去し、信頼済みでない分散型システム140に偽クエリ304を送信する。示した例では、偽クエリ304は、ストレージ抽象化150上に記憶されているN個のブロック102からなるアレイAの第3のデータ・バケツ350cから、ブロック11をランダムに選択し、ダウンロードする。ここで、偽クエリ304は、ストレージ抽象化150にA[j]を要求し、ここで、j(例えば、示した例ではjは「11」に等しい)は一様ランダムに選択される。ダウンロードされたデータ・ブロック(例えば、ブロック11)を偽クエリ304により受信すると、データ処理ハードウェア124は、クライアント装置120が単にランダムにブロックをダウンロードしてブロック・スタッシュ370からデータ・ブロック(B)の実際の読出を難読化することがあるので、単純にデータ・ブロック102を破棄してもよい。したがって、信頼済みでない分散型システム140は、取り出されたブロック(例えば、ブロック11)が真のクエリ302に応じてダウンロードされたか、偽クエリ304に応じてダウンロードされたかを、意識しない。データ処理ハードウェア124は、ブロック・スタッシュ370から取り出されたデータ・ブロック(B)に対し、読出動作または書込動作を実行するとともに、オーバライト・フェーズ中、確率pでブロック・スタッシュ370に、またはストレージ抽象化150に現在のバージョンのデータ・ブロック(B)を記憶してもよい。
【0042】
一方、図3Bには、データ・ブロック(B)102がクライアント装置120のメモリ・ハードウェア122上のブロック・スタッシュ370にローカルに記憶されていない場合、データ処理ハードウェア124が、ダウンロード・フェーズ中にデータ・ブロック(B)102に対するクエリ(q)を実行することを示す。データ・ブロックB(102)がブロック・スタッシュ370に記憶されていないので、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されているデータ・ブロックBをダウンロードするために、信頼済みでない分散型システム140に真のクエリ302を送信する。示した例では、Bは、ストレージ抽象化150の第2のデータ・バケツ350bにおけるブロック6に対応する。ここで、真のクエリ302は、ストレージ抽象化150にA[i]を要求し、i(例えば、示した例ではiは「6」に等しい)はクライアント装置120がアクセスを望むデータ・ブロック(B)102のインデックス/識別子に対応する。真のクエリ302によりデータ・ブロックB(102)を取り出す/ダウンロードすることに応じて、データ処理ハードウェア124はブロックBを復号する。例えば、データ処理ハードウェア124は、ブロック6のコンテンツを復号するために、暗号化モジュール305上にローカルに記憶されているプライベート・キーKにアクセスしてもよい。クライアント装置120は、取り出したブロックB(例えば、ブロック6)を保持してもよい(例えば、メモリ・ハードウェア122に)。
【0043】
図3Cを参照すると、データ処理ハードウェア124は、オーバライト・フェーズ中、確率pでブロック・スタッシュ370における現在のバージョンのデータ・ブロック(B’)をクライアント装置120のメモリ・ハードウェア122上に記憶する。オーバライト・フェーズは、対応するダウンロード・フェーズ(ブロック・スタッシュ370(図3A)から、またはストレージ抽象化150(図3B)から以前のバージョンのデータ・ブロック(B)を取り出した)に続く。いくつかの例では、クライアント装置120は、新しいバージョン(B’)によりデータ・ブロックを更新するために、ダウンロード・フェーズ中に取り出されたデータ・ブロック(B)に対し書込動作を実行する。本明細書で用いられるところでは、新しいバージョンB’により以前のバージョンBを更新することは、新しいバージョンB’により以前のバージョンBを置換して破棄することを含む。それらの例では、更新された新しいバージョン(B’)は、オーバライト・フェーズ中、確率pでブロック・スタッシュ370上に記憶される。他の例では、クライアント装置120は、ダウンロード・フェーズ中に取り出されたデータ・ブロック(B)に対する読出動作を単純に実行する。これらの例では、ブロック・スタッシュ370において記憶されている現在のバージョンは、ダウンロード・フェーズ中に取り出されたバージョンから変化していない。
【0044】
信頼済みでない分散型システム140から確率pでブロック・スタッシュ370における現在のバージョンのデータ・ブロック(B’)を記憶することを難読化するために、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されている何らかのランダムなデータ・ブロック102をダウンロードするべく、信頼済みでない分散型システム140に別の偽クエリ304を送信する。示した例では、偽クエリ304は、ストレージ抽象化150上に記憶されているN個のブロック102からなるアレイAの第2のデータ・バケツ350bから、ブロック8をランダムに選択し、ダウンロードする。ここで、偽クエリ304は、ストレージ抽象化150にA[j]を要求し、ここで、j(例えば、示した例ではjは「8」に等しい)は一様ランダムに選択される。偽クエリ304によりダウンロードされたデータ・ブロック(例えば、ブロック8)を受信すると、データ処理ハードウェア124は、ランダムなフレッシュ性によりブロックを復号および再暗号化し、次いで、分散型システム140のストレージ抽象化150上へ、再暗号化されたデータ・ブロック(例えば、ブロック8)をアップロードして戻す。ここで、データ処理ハードウェア124は、ブロックが読出/書込アクセスについて偽クエリ304に応じてアップロードされたか真のクエリ302に応じてアップロードされたかを分散型システム140が意識しないように、コンテンツを変化させることなく、データ・ブロック(例えば、ブロック8)を単純に再暗号化する。別の言い方をすると、データ処理ハードウェア124には、再暗号化されたデータ・ブロック102がオーバライトの結果として更新されたコンテンツを含むのか否かを、またはコンテンツが変化しているのか否かを知る方法がない。
【0045】
対して、現在のバージョンのデータ・ブロック(B’)がブロック・スタッシュ370に記憶されていない場合、図3Dには、クライアント装置120が現在のバージョンのデータ・ブロック(B’)を保持する(例えば、メモリ・ハードウェア122に)一方、データ処理ハードウェア124が、ストレージ抽象化150から対応するデータ・ブロック(B)(例えば、ブロック6)を取り出すために、信頼済みでない分散型システム140に真のクエリ302を送信することを示す。その後、データ処理ハードウェア124は、ストレージ抽象化150上のストレージ用に分散型システム140に現在のバージョンのデータ・ブロック(B’)を暗号化してアップロードするとともに、真のクエリ302により取り出された対応する以前のバージョンのデータ・ブロック(B)を破棄する。いくつかの例では、現在のバージョンのデータ・ブロック(B’)は、ダウンロード・フェーズ中に取り出された以前のバージョンのデータ・ブロック(B)に対する書込動作を実行した後にクライアント装置120によって更新されたブロック6の新しいバージョンに相当する。他の例では、クライアント装置120がダウンロード・フェーズ中に取り出されたデータ・ブロック(B)に対する読出動作しか実行しない場合、分散型システム140に対しアップロードされた現在のバージョンのデータ・ブロック(B’)(例えば、ブロック6)は、フレッシュに計算された暗号文(例えば、異なる暗号化)を有することを除き、対応する破棄されたデータ・ブロックBから変化していない場合がある。したがって、信頼済みでない分散型システム140は、クライアント装置120がプライベート・キーを用いてローカルにデータ・ブロック(B’)をフレッシュに暗号化したので、アップロードされた現在のバージョンのデータ・ブロック(B’)のコンテンツが変化しているか否かを意識しない。
【0046】
図3A図3DのO-RAMの構築には、クライアント104によってアウトソーシングされたN個のデータ・ブロック102の各々が一意なブロック識別子iを有する必要があるものの、この忘却型ストレージ(OS)の構築により、データ・ブロック102が文字列によって識別されることが可能となる。さらに、OSプロトコルは、動作がストレージ抽象化150上の現在記憶されているデータ・ブロック102を参照するか存在していないデータ・ブロックを参照する(すなわち、ブロック・ミス)かを敵対者が学習することが不可能であるように、現在記憶されているいずれのブロックにも対応しない識別子を参照する動作(読出/書込)を扱う必要がある。いくつかの実装では、このDP-ORAM構築/プロトコルでは、クライアント装置120に対する位置マップ(一意なインデックス[N]をN個のブロックの各々に割り付ける)を(例えば、メモリ・ハードウェア122に)記憶することによって、DP-OS構築/プロトコルに変換される。ここで、位置マップは、各ブロック識別子を対応するインデックスに翻訳し、以前に説明したDP-ORAMのように、クエリの残りの部分が正確に続くことを可能とする。これらの実装は、しかしながら、位置マップを記憶するのに大量のクライアント側ストレージが必要であるため、実用的でないことがある。対応するインデックスに対するブロック識別子(例えば、文字列)の1対1の位置マップをクライアントが記憶することを緩和するために、ここでの実装は、擬似ランダム関数(PRF)を用いてブロック識別子を小さな領域からのインデックスに翻訳することに向けられる。PRFが単一キーのストレージを必要とするので、クライアントのストレージ要件は、位置マップを記憶することと比較して、著しく低減される。
【0047】
図4A図4Cには、ストレージ抽象化150上に暗号化された形式によりN個のデータ・ブロック102を記憶するべくクライアント装置120および分散型システム140を初期化するためにクライアント装置120上において実行する、一例の差分プライベート-忘却型ストレージ(DP-OS)命令400を示す。図5A図5Dには、データ・ブロック102のコンテンツやクライアント装置120によって実行されるクエリ(q)のシーケンスを分散型システム140に暴露することなく、ストレージ抽象化150上に記憶されている暗号化されたデータ・ブロック102のうちの1つにアクセス(読出/書込)するクエリ(q)を実行するために、DP-OS命令400を実行するクライアント装置120を示す。
【0048】
図4Aを参照すると、データ処理ハードウェア124によるDP-OS命令400の実行によって、クライアント装置120に、暗号化モジュール305から取得された1または複数のプライベート・キーを用いてN個のデータ・ブロック102の各々を暗号化させ、クライアント装置120のメモリ・ハードウェア122上のブロック・スタッシュ370を初期化させ、確率pで、暗号化されたデータ・ブロック102のサブセットをブロック・スタッシュ370に記憶させる。確率pは、上述の式(3)を用いて表現されてよい。ORAMの場合のように、クライアント装置120におけるブロック・スタッシュ370は、セキュリティおよび帯域幅の要件に基づいて調整可能であるO(C)個のブロックのストレージの容量を有する。クライアント装置120(例えば、データ処理ハードウェア124)は、命令400を実行する場合、追加で、ブロック・スタッシュ370に記憶されている各データ・ブロック102に対応する一意な文字列識別子idを記憶するために識別子スタッシュ372を初期化する。
【0049】
各データ・ブロック102は、文字列として表現される対応する識別子idを含む。DP-OSの初期化中、命令400がクライアント装置120にさらにPRF(F,F)をランダムに生成させる一方、分散型システム140は、対応する暗号化されたブロック102,103を記憶するために、ちょうどm個のメモリ・スロットを各々有しラベル1-Nを有するN個のバケツ350,350A-Nを初期化する。示した例では、各バケツ350のメモリ・スロットmの数は次のように表現される。
【0050】
【数4】
【0051】
したがって、対応するバケツ350における各メモリ・スロットmは、暗号化された形式により真のデータ・ブロック102を記憶するか、または暗号化された形式によりダミーのデータ・ブロック103を記憶する。N個のバケツ350が初期化される場合、各バケツ350は、最初にダミーのブロック103で満たされてもよい。各ブロック102,103のメタデータおよびコンテンツは一緒に記憶されるので、各ブロック102,103は、そのブロックが真であるか偽(すなわち、ダミー)であるかを示す対応するタグを含んでもよい。分散型システム140は、N対のバケツ識別子の位置マップ355を記憶し、第i番目の対としてPosMap[i]を示してもよい。
【0052】
クライアント装置120は、データ・ブロック102や追加のキーK,Kのストレージを各々必要とするPRF(F,F)を暗号化/復号するための暗号キーを記憶するように、さらに構成されている。簡便のため、F(K,x)およびF(K,x)を用いることに代えて、キーのパラメータが省かれてもよい。明白であろうように、クライアント装置120によって生成されクライアント装置120上に記憶されるPRF(F,F)の使用によって、識別子idを有するデータ・ブロックBが、F(id)およびF(id)のラベルを有するかまたはブロック・スタッシュ370に記憶されている2個のバケツのうちの1個に常にあることが保証される。本明細書では、簡便のため、F(id)によって、(F(id),F(id))の対を表す。
【0053】
ブロックを暗号化し、N個のバケツ350A-Nを初期化し、PRF(F,F)をランダムに生成した後、命令400によって、分散型システム140のストレージ抽象化150上の忘却型ストレージのため、データ処理ハードウェア124にN個のデータ・ブロック102の各々を通じて反復させる。データ・ブロック(B)の配置に対応する現在の反復について、図4Bには、インデックスs=F(id)およびs=F(id)を有する1対のデータ・バケツ350を返す/ダウンロードするためにPRF(F,F)を用いるとともに、次いで、2個のバケツのいずれのロードが最少であるかを判定するために、ダウンロードされたデータ・バケツs,s内のブロック102,103の全てを復号するデータ処理ハードウェア124を示す。本明細書で用いられるところでは、ロードが最少のバケツは、最少量の真のデータ・ブロック102を有するデータ・バケツを指す。示した例では、データ・バケツsはより大きな数の真のデータ・ブロック102を含むので、データ・バケツsのロードが最少である(例えば、データ・バケツsは1個の真のデータ・ブロック102を含み、データ・バケツsは0個の真のデータ・ブロック102を含む)。したがって、データ処理ハードウェア124は、ロードが最少のバケツsからのダミーのブロック103のうちの1つを、現在の反復のデータ・ブロック(B)で置換する。置換されたダミーのブロック103は破棄されてもよい。一方、ダウンロードされたデータ・バケツs,sの各々が等しい数のダミーのブロック103を含む場合、クライアント装置120は、データ・ブロック(B)102の入力のために一方のバケツをランダムに選んでもよい。
【0054】
いくつかのシナリオでは、また特にデータ・バケツ350が真のデータ・ブロック102で一杯になっている後の方の反復では、現在の反復の2つのバケツs=F(id)およびs=F(id)は、ダミーのブロック103を含んでおらず、それによって、バケツを完全に一杯にするとともに、バケツに真のデータ・ブロック102を均等にロードする。これらのシナリオでは、命令400は単純に失敗し、現在処理されているデータ・ブロック(B)を入力するためのロードが最少のバケツを識別するために2個の新しいバケツがダウンロードされるように、中断される。
【0055】
図4Cには、ダウンロードされたバケツs,s内のブロック102,103の全てをフレッシュなランダム性で再暗号化し、次いで、バケツs,sをストレージ抽象化150内の同じ位置において分散型システム140へ再アップロードして戻すデータ処理ハードウェア124を示す。確率pで、Bがブロック・スタッシュ370に記憶され得る。残りの確率(すなわち、1-(C/N))では、Bは破棄される。分散型システム140はさらに、位置マップPosMap[i]をF(id)と等しく設定してもよく、ここで、F(id)は(F(id),F(id))の対を表す。
【0056】
ストレージ抽象化150上に暗号化された形式によりN個のデータ・ブロック102を忘却的に記憶し、確率pでブロック・スタッシュ370にデータ・ブロック102のサブセットを記憶することによって、DP-OSを初期化した後、図5Aには、データ・ブロック(B)102がクライアント装置120のメモリ・ハードウェア122上のブロック・スタッシュ370に記憶されている場合、データ処理ハードウェア124がダウンロード・フェーズ中にデータ・ブロック(B)102に対するクエリ(q)を実行することを示す。クエリ(q)は、ブロックBに対する識別子idと、そのブロックに対する動作(読出/書込)とを含む。現在のバージョンを表す新しいブロックも、動作が書込動作である場合、クエリ(q)に含まれてよい。ここで、データ処理ハードウェア124は、データ・ブロックB(102)がブロック・スタッシュ370に記憶されているかを判定するためにブロック・スタッシュ370をクエリするか、データ処理ハードウェア124は、データ・ブロックB(102)に関連付けられている対応する識別子id(例えば、文字列)を特定するために識別子スタッシュ372をクエリする。データ処理ハードウェア124は、ブロック・スタッシュ370からデータ・ブロックB(102)を除去する。確率pでデータ・ブロックB(102)がブロック・スタッシュ370に記憶されている(および/またはidが識別子スタッシュ372に記憶されている)ので、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されている2個のランダムなデータ・バケツ350をダウンロードしてブロック・スタッシュ370からのデータ・ブロック(B)の取出を難読化するために、信頼済みでない分散型システム140に偽クエリ404を送信する。示した例では、偽クエリ404はバケツとバケツとをランダムにダウンロードする。クライアント装置120は、2個のランダムにダウンロードされたバケツ350(例えば、バケツおよびバケツ)およびそれぞれのコンテンツを単純に破棄してもよい。
【0057】
一方、図5Bには、データ・ブロック(B)がローカルのブロック・スタッシュ370に記憶されておらず、また、対応する識別子idがクライアント装置120の識別子スタッシュ372にない場合、データ処理ハードウェア124がダウンロード・フェーズ中にデータ・ブロック(B)102に対するクエリ(q)を実行することを示す。データ・ブロックB(102)がブロック・スタッシュ370に記憶されていない(また、識別子idが識別子スタッシュ372にない)ので、データ処理ハードウェア124は、インデックスs=F(id)およびs=F(id)を有するデータ・バケツ350の対をダウンロードするために信頼済みでない分散型システム140に真のクエリ402を送信し、次いで、データ・ブロック(B)がバケツs,sのうちの1つに記憶されているか否かを判定するために、ダウンロードされたデータ・バケツs,s内のブロック102,103の全てを復号する。データ処理ハードウェア124は、暗号化モジュール305上にローカルに記憶されているプライベート・キーにアクセスすることによって、バケツの各々内のブロック102,103の全てを復号してもよい。示した例では、データ処理ハードウェア124は、ダウンロードされたバケツsからデータ・ブロック(B)を発見して除去する。除去されたデータ・ブロック(B)はメモリ・ハードウェア122におけるクライアント装置120上に一時的に記憶されてよく、各ダウンロードされたバケツs,sからの残りのブロック102,103が破棄されてもよい。いくつかのシナリオ(示していない)では、ブロック(B)に対するクエリ402によって、ブロック(B)が返されたバケツs,sに発見されない場合、ミスとなる。それらのシナリオでは、オーバライト・フェーズは、存在しないブロック(B)に関するミスをクライアント装置120が信頼済みでない分散型システム140に暴露しないように、クライアント装置120が2個のランダムに選択されたバケツに対し偽のオーバライトを実行することを含む。
【0058】
図5Cを参照すると、いくつかの実装では、図5Bのダウンロード・フェーズ中のブロック(B)に対するクエリ402によってミス(ブロック(B)が存在しないことを示す)となる場合、データ処理ハードウェア124は、このミスに関連付けられている識別子idを識別子スタッシュ372に追加する。識別子スタッシュ372に対する識別子idの追加を難読化するとともに、ブロック(B)のミスを信頼済みでない分散型システム140に暴露しないために、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されている2個のランダムなデータ・バケツ350(例えば、バケツおよびバケツ)をダウンロードするべく、信頼済みでない分散型システム140に偽クエリ404を送信する。データ処理ハードウェア124は、次いで、ストレージ抽象化150内の同じ位置において分散型システム140にバケツ(例えば、バケツおよびバケツ)をアップロードする前に、ランダムにダウンロードされたバケツ内のブロック102,103の全てを復号し、フレッシュなランダム性で再暗号化する。2個のランダムなバケツに対するダウンロード、復号、および再暗号化は、ランダムにダウンロードされたバケツ(例えば、バケツおよびバケツ)のコンテンツが変化していない(フレッシュに計算された暗号文(例えば、異なる暗号化)を有することを除いて)ので、分散型システム140からブロック・ミスを秘匿するための偽のオーバライトと呼ばれる。したがって、信頼済みでない分散型システム140は、取り出されたデータ・バケツ(例えば、バケツおよびバケツ)が真のクエリ402に応じてダウンロードされたか偽クエリ404に応じてダウンロードされたか否かを、意識しない。
【0059】
他の実装では、データ・ブロック(B)が存在する場合、図5Cには、データ処理ハードウェア124が、オーバライト・フェーズ中、確率pでブロック・スタッシュ370における現在のバージョンのデータ・ブロック(B)をクライアント装置120のメモリ・ハードウェア122上に記憶することを示す。オーバライト・フェーズは、対応するダウンロード・フェーズ(ブロック・スタッシュ370(図5A)から、またはストレージ抽象化150(図5B)からデータ・ブロック(B)を取り出した)に続く。いくつかの例では、クライアント装置120は、データ・ブロックの新しいバージョン(B’)によりデータ・ブロック(B)を更新するために、ダウンロード・フェーズ中に取り出されたデータ・ブロック(B)に対し書込動作を実行する。それらの例では、更新された新しいバージョンのデータ・ブロック(B’)は、オーバライト・フェーズ中、確率pでブロック・スタッシュ370上に記憶される。他の例では、クライアント装置120は、ダウンロード・フェーズ中に取り出されたデータ・ブロック(B)に対する読出動作を単純に実行する。これらの例では、ブロック・スタッシュ370において記憶されている現在のバージョンは、ダウンロード・フェーズ中に取り出されたバージョンから変化していない。
【0060】
信頼済みでない分散型システム140から確率pでブロック・スタッシュ370における現在のバージョンのデータ・ブロック(B’)を記憶することを難読化するために、データ処理ハードウェア124は、ストレージ抽象化150上に記憶されている2つのランダムなデータ・バケツ350(例えば、バケツおよびバケツ)をダウンロードするべく、信頼済みでない分散型システム140に偽クエリ404を送信する。データ処理ハードウェア124は、バケツ(例えば、バケツおよびバケツ)をストレージ抽象化150内の同じ位置において分散型システム140へアップロードして戻す前に、ランダムにダウンロードされたバケツ内のブロック102,103の全てを復号し、フレッシュなランダム性で再暗号化する。2個のランダムなバケツに対するダウンロード、復号、および再暗号化は、ランダムにダウンロードされたバケツ(例えば、バケツおよびバケツ)のコンテンツが変化していない(フレッシュに計算された暗号文(例えば、異なる暗号化)を有することを除いて)ので、現在のバージョンのデータ・ブロック(B’)をブロック・スタッシュ370に記憶することを分散型システム140から秘匿するための偽のオーバライトと呼ばれる。したがって、信頼済みでない分散型システム140は、取り出されたデータ・バケツ(例えば、バケツおよびバケツ)が真のクエリ402に応じてダウンロードされたか偽クエリ404に応じてダウンロードされたか否かを、意識しない。
【0061】
対して、残りの確率1-(C/N)で現在のバージョンのデータ・ブロック(B’)がブロック・スタッシュ370に記憶されていない場合、図5Dには、クライアント装置120が現在のバージョンのデータ・ブロック(B’)を保持する(例えば、メモリ・ハードウェア122に)一方、データ処理ハードウェア124がインデックスs=F(id)およびs=F(id)を有するデータ・バケツ350の対をダウンロードするために信頼済みでない分散型システム140に真のクエリ402を送信することを示す。データ・バケツs,sを受信すると、データ処理ハードウェア124は、ブロック102,103の全てを復号し、バケツs,sのうちの対応する1つにおける以前のバージョンのデータ・ブロック(B)を新しいバージョンのデータ・ブロック(B’)で置換し、データ・バケツs,s内の新しいバージョンのデータ・ブロック(B’)を含むブロック102,103の全てをフレッシュなランダム性で再暗号化する。データ処理ハードウェア124は、次いで、ストレージ抽象化150内の同じ位置において分散型システム140にバケツs,sを再アップロードして戻す。
【0062】
ブロック・スタッシュ370のサイズを小さくしておくために、DP-OS命令400がθ(N×logN)個のクエリ(q)を実行した後、命令400は、新しいシード(K’,K’)をランダムに選択すること(すなわち、新しいPRF(F’,F’)を生成して識別子スタッシュ372をリセットすること)および新しいシードに基づいてブロック102をバッファ・バケツ360に再び割り当てることによってシステムをリフレッシュするべくブロック・シャッフル(例えば、忘却型転字ルーチン450を実行することによって)を用いてもよい。ここで、分散型システム140は、各データ・ブロック102に関連付けられているキーのリストを維持する。したがって、各キーについて、キー(K,K)に関連付けられている2個のバケツ350がダウンロードされ、ブロック102,103は対応するデータ・ブロック102を特定して再暗号化するために復号される。その後、キー(K’,K’)に関連付けられている2個のバッファ・バケツ360がダウンロードされて復号され、2個のバケツ350を再暗号化して分散型システム140に再アップロードして戻す前に、データ・ブロック102が2個のバケツ350のうちロードが最少のものに追加される。したがって、命令400がN個のクエリ(q)を実行した後、シャッフル・バッファによって、新しいブロックおよび識別子スタッシュ370,372が初期化され、新しいPRF(F’,F’)に基づいて古いバケツ350から新しいデータ・バケツ360へデータ・ブロック102が全て移動され、古いデータ・バケツ350が削除される。クライアント装置120は、シャッフル・バッファを実行する時、データ処理ハードウェア124上に記憶されているPosMapを用いてもよい。
【0063】
いくつかの実装では、DP-OSは、オーバーラップするL個のバケツからなるハッシュ・スキーム(N個のデータ・ブロック102の各々が一意な有限の文字列識別子k-kに関連付けられており、L個のバケツのうちの1つへとハッシュされる)を用いる。このL個のバケツが信頼済みでない分散型システム140に対しアウトソーシングされてもよく、識別子k-kの値に関する情報を分散型システム140が推測可能でないように、各バケツが同じサイズを有してもよい。ハッシュ・スキームは、データ・ブロック102に対する識別子k-kの値を隠すように構成される。ハッシュ・スキームは、葉ノードがレベル0を占有して木の根に向かってレベルが増大する、二分木または逆指数関数木を用いてもよい。木の根は、木の最大のレベルを占有する。
【0064】
N≦L≦2N個の葉を有する二分木について、木の各ノードはちょうど1つのブロック102を記憶してよい。木は、0の暗号化を有するブロックなど、ダミーのブロック103で最初に満たされてもよい。木の葉の番号は左から右に1からLまで付けられてよく、各葉はL個のバケツのうちの1つに対応してよい。ここで、第i番目のバケツは、第i番目の葉から木の根まで一意な経路上のノードに記憶されている全てのブロックを含んでよい。これに加えて、クライアント装置120は、随意では、木からオーバフローするブロックを記憶するためにブロック・スタッシュ370を維持してもよい。図6には、対応するL個のバケツの中へ暗号化された形式によりデータ・ブロック102を入力し、データ・ブロック(B)に対するクエリ(q)を実行することにより、二分木を初期化する一例のアルゴリズム600を提供する。
【0065】
逆指数関数木は、記憶されているデータ・ブロックの数Nおよび選択の数Dによってパラメータ化されてもよい。図7には、N=7個のデータ・ブロックおよびD=2個の選択を有する一例の逆指数関数木700を示す。各レベルにおける子の数は、木を上ってゆくとき、2倍に指数関数的に増加する。L個のレベルについて、全てのノードはレベル1において最大C:=D個の子を有し、全てのノードはレベル2において最大C=(C:=D個の子を有する。レベルiにおいて、全てのノードは最大C=(Ci-1:=(Di-1を有する。レベル0において、葉のノードは存在しない。0より大きな全てのレベルは次のように表現できる。
【0066】
【数5】
【0067】
木は、各レベルがちょうど1つのノードを有する後に停止してよく、これは、レベル[log(logN)]において生じる。レベルiの各ノードには、左から右に1からNまでのラベルが付される。1以上のレベルiにおいて、ノードj∈{1,....,N}は、レベルi+1において(j-1)・C+1からj・Cのラベルが付されたC個の子ノードを有することになる。0以上の各レベルiの各ノードNは、丸めのためC個未満の子しか有しない場合がある。逆指数関数木は、N個のバケツ(第i番目のバケツ(1≦i≦N)が、根からiのラベルが付けられた葉ノードまでの一意な経路上の全てのノードを含む)をさらに有する。クライアント装置120は、随意では、オーバフロー・ブロック102を記憶するためにブロック・スタッシュ370を記憶してもよい。図8は、対応するN個のバケツの中へ暗号化された形式によりデータ・ブロック102を入力し、データ・ブロック(B)に対するクエリ(q)を実行することにより、逆指数関数木を初期化する一例のアルゴリズム800を提供する。
【0068】
図9は、本明細書に記載のシステムおよび方法を実装するために用いられ得る一例のコンピューティング・デバイス(例えば、データ処理ハードウェア)の概略図である。コンピューティング・デバイス900は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形態のデジタル・コンピュータを表すことが意図される。ここに示したコンポーネント、それらの接続および関係、ならびにそれらの機能は、例示的な意味でしかなく、本開示において記載され特許を請求される発明の実装を限定することを意味するものではない。
【0069】
コンピューティング・デバイス900は、プロセッサ910、メモリ920、ストレージ・デバイス930、メモリ920および高速拡張ポート950に接続する高速インタフェース/コントローラ940、ならびに低速バス970およびストレージ・デバイス930に接続する低速インタフェース/コントローラ960を備える。コンポーネント910,920,930,940,950、および960の各々は、様々なバスを用いて相互接続されており、共通のマザーボード上に、または他の適切な手法により、取り付けられてよい。プロセッサ910は、高速インタフェース940に結合されているディスプレイ980などの外部入力/出力装置上にグラフィカル・ユーザ・インタフェース(GUI)用のグラフィック情報を表示するためにメモリ920にまたはストレージ・デバイス930上に記憶されている命令を含む、コンピューティング・デバイス900内における実行用の命令を処理することが可能である。他の実装では、複数のメモリおよびメモリ種類に加えて、適切であるように複数のプロセッサおよび/または複数のバスが用いられてよい。また、各デバイスが必要な動作の一部分を提供する複数のコンピューティング・デバイス900が接続されてもよい(例えば、サーバ・バンク、ブレードサーバのグループ、またはマルチプロセッサ・システムとして)。
【0070】
メモリ920は、コンピューティング・デバイス900内に情報を非一時的に記憶する。メモリ920は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってよい。非一時的なメモリ920は、コンピューティング・デバイス900による使用のため、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的にまたは永続的に記憶するために用いられる物理デバイスであってよい。不揮発性のメモリの例は、次に限定されないが、フラッシュ・メモリおよび読出専用メモリ(ROM)/プログラマブル読出専用メモリ(PROM)/消去可能プログラマブル読出専用メモリ(EPROM)/電子的に消去可能なプログラマブル読出専用メモリ(EEPROM)(例えば、ブート・プログラムなど典型的にはファームウェアに用いられる)を含む。揮発性メモリの例は、次に限定されないが、ランダム・アクセス・メモリ(RAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープを含む。
【0071】
ストレージ・デバイス930(例えば、メモリ・ハードウェア)は、コンピューティング・デバイス900にマス・ストレージを提供することができる。いくつかの実装では、ストレージ・デバイス930はコンピュータ可読媒体である。様々な異なる実装では、ストレージ・デバイス930は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光学ディスク装置、もしくはテープ装置、フラッシュ・メモリまたは他の同様のソリッド・ステート・メモリ装置、またはストレージ・エリア・ネットワークもしくは他の構成における装置を含む装置のアレイであってよい。追加の実装では、コンピュータ・プログラム製品は情報キャリアにより有形に具体化される。コンピュータ・プログラム製品は、実行時に上述のものなど1または複数の方法を実行する、命令を含む。情報キャリアは、メモリ920、ストレージ・デバイス930、またはプロセッサ910上のメモリなど、コンピュータ可読媒体または機械可読媒体である。
【0072】
高速コントローラ940がコンピューティング・デバイス900用の帯域幅集約的な動作を管理する一方、低速コントローラ960は、より帯域幅集約的でない動作を管理する。そのような役割の割当は単に例示に過ぎない。いくつかの実装では、高速コントローラ940は、メモリ920、ディスプレイ980(例えば、グラフィックス・プロセッサまたはアクセラレータを通じて)、および高速拡張ポート950(様々な拡張カード(示していない)を受け入れることができる)に結合されている。いくつかの実装では、低速コントローラ960は、ストレージ・デバイス930および低速拡張ポート970に結合されている。低速拡張ポート970(様々な通信ポート(例えば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含んでよい)は、1または複数の入力/出力デバイス(キーボード、ポインティング・デバイス、スキャナなど)またはネットワーク・デバイス(スイッチもしくはルーターなど)に対し、結合されてよい(例えば、ネットワーク・アダプタを通じて)。
【0073】
コンピューティング・デバイス900は、図に示すように、多くの異なる形態により実装されてよい。例えば、1つの標準的なサーバ900aとして実装されてもよく、そのようなサーバ900aのグループにより複数回実装されてもよく、ラップトップ・コンピュータ900bとして、またはラック・サーバ・システム900cの一部として実装されてもよい。
【0074】
ソフトウェア・アプリケーション(すなわち、ソフトウェア・リソース)は、コンピューティング・デバイスにタスクを実行させるコンピュータ・ソフトウェアを指す場合がある。いくつかの例では、ソフトウェア・アプリケーションは、「アプリケーション」、「アプリ(app)」または「プログラム」と呼ばれる場合がある。アプリケーションの例は、次に限定されないが、システム診断アプリケーション、システム管理アプリケーション、システム保守アプリケーション、文書処理アプリケーション、表計算アプリケーション、メッセージング・アプリケーション、メディア・ストリーミング・アプリケーション、ソーシャル・ネットワーキング・アプリケーション、およびゲーム・アプリケーションを含む。
【0075】
非一時的なメモリは、コンピューティング・デバイスによる使用のため、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的にまたは永続的に記憶するために用いられる物理デバイスであってよい。非一時的なメモリは、揮発性および/または不揮発性のアドレス可能な半導体メモリであってよい。不揮発性のメモリの例は、次に限定されないが、フラッシュ・メモリおよび読出専用メモリ(ROM)/プログラマブル読出専用メモリ(PROM)/消去可能プログラマブル読出専用メモリ(EPROM)/電子的に消去可能なプログラマブル読出専用メモリ(EEPROM)(例えば、ブート・プログラムなど典型的にはファームウェアに用いられる)を含む。揮発性メモリの例は、次に限定されないが、ランダム・アクセス・メモリ(RAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープを含む。
【0076】
本明細書に記載のシステムおよび技術の様々な実装は、デジタルな電子回路および/または光回路、集積回路、特別に設計されたASIC(特定用途向けIC)、コンピュータ・ハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせにより実現可能である。それらの様々な実装は、ストレージ・システム、1つ以上の入力装置、および1つ以上の出力装置との間でデータおよび命令を送受信するように結合されている、1つ以上のプログラム可能な(専用または汎用の)プロセッサを備えるプログラム可能なコンピュータ上において実行可能および/または解釈可能である、1または複数のコンピュータ・プログラムによる実装を含むことが可能である。
【0077】
それらのコンピュータ・プログラム(プログラム、ソフトウェア、ソフトウェア・アプリケーション、またはコードとしても知られている)は、プログラム可能なプロセッサ用の機械命令を含み、高レベルの手続的および/またはオブジェクト指向のプログラミング言語により、アセンブリ/機械語により、またはそのバケツにより実装されることが可能である。本明細書で用いられるところでは、用語「機械可読媒体」および「コンピュータ可読媒体」は、機械可読信号として機械命令を受信する機械可読媒体を含め、プログラム可能なプロセッサに機械命令および/またはデータを提供するために用いられる、任意のコンピュータ・プログラム製品、非一時的なコンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能論理回路(PLD))を指す。用語「機械可読信号」は、プログラム可能なプロセッサに機械命令および/またはデータを提供するために用いられる任意の信号を指す。
【0078】
本明細書に記載の処理および論理フローは、入力データに対する演算と出力の生成とによって機能を実行するように1または複数のコンピュータ・プログラムを実行する1または複数のプログラム可能なプロセッサによって実行されることが可能である。処理および論理フローは、専用の論理回路(例えば、FPGA(field programmable gate array)またはASIC(特定用途向けIC))によって実行されることが可能である。コンピュータ・プログラムの実行に適切なプロセッサは、例として、汎用および専用のマイクロプロセッサ、および任意の種類のデジタル・コンピュータの1または複数のプロセッサの両方を含む。一般に、プロセッサは、読出専用メモリ、ランダム・アクセス・メモリ、またはその両方から命令およびデータを受け取るであろう。コンピュータの必須要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1または複数のメモリ・デバイスとである。一般に、コンピュータは、データを記憶するための1または複数のマス・ストレージ(例えば、磁気、光磁気ディスク、または光ディスク)を備えるか、データの受信、データの送信、またはその両方を行うように、該マス・ストレージに対し動作可能に結合されている。しかしながら、コンピュータがそのようなデバイスを備える必要はない。コンピュータ・プログラム命令およびデータを記憶するために適切なコンピュータ可読媒体は、例として、半導体メモリ・デバイス(例えば、EPROM、EEPROMおよび、フラッシュメモリ・デバイス)、磁気ディスク(例えば、内部ハードディスクまたはリムーバブル・ディスク)、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、全ての形式の不揮発性メモリ、メディア、およびメモリ・デバイスを含む。プロセッサおよびメモリは、専用論理回路によって補足されるか、専用論理回路に組み込まれることが可能である。
【0079】
ユーザとの対話を提供するため、本開示の1または複数の態様は、ユーザに情報を表示するためのディスプレイ・デバイス(例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、またはタッチ・スクリーン)を有する、また随意では、それによってユーザがコンピュータに入力を提供可能であるキーボードおよびポインティング・デバイス(例えば、マウスまたはトラックボール)を有する、コンピュータ上に実装されることが可能である。他の種類のデバイスもユーザとの対話を提供するために用いられることが可能である。例えば、ユーザに対し提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であることが可能であり、ユーザからの入力は、音響、音声、または触覚の入力を含む、任意の形態により受信されることが可能である。加えて、コンピュータは、ユーザによって用いられるデバイスとの間でドキュメントを送受信することによって(例えば、ウェブ・ブラウザから受信される要求に応じてユーザのクライアント装置上のウェブ・ブラウザにウェブ・ページを送信することによって)、ユーザと対話することが可能である。
【0080】
多くの実装について記載した。しかしながら、様々な変更が本開示の精神および範囲から逸脱することなくなされ得ることが理解されるであろう。したがって、他の実装は添付の特許請求の範囲内にある。
図1A
図1B
図2A
図2B
図3A
図3B
図3C
図3D
図4A
図4B
図4C
図5A
図5B
図5C
図5D
図6
図7
図8
図9