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

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

▶ 富士通株式会社の特許一覧

特開2022-165910トラステッド・エグゼキューション環境を使用した検索可能なデータセット
<>
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図1
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図2A
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図2B
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図2C
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図3A
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図3B
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図4
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図5
  • 特開-トラステッド・エグゼキューション環境を使用した検索可能なデータセット 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022165910
(43)【公開日】2022-11-01
(54)【発明の名称】トラステッド・エグゼキューション環境を使用した検索可能なデータセット
(51)【国際特許分類】
   H04L 9/10 20060101AFI20221025BHJP
   G09C 1/00 20060101ALI20221025BHJP
   H04L 9/08 20060101ALI20221025BHJP
   G06F 21/60 20130101ALI20221025BHJP
   G06F 16/901 20190101ALI20221025BHJP
   G06F 21/72 20130101ALI20221025BHJP
【FI】
H04L9/10 A
G09C1/00 660D
H04L9/08 B
H04L9/08 E
G06F21/60 360
G06F21/60 320
G06F16/901
G06F21/72
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022044735
(22)【出願日】2022-03-18
(31)【優先権主張番号】17/235884
(32)【優先日】2021-04-20
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】ロイ・アーナブ
(72)【発明者】
【氏名】モンゴメリー・ハート
(72)【発明者】
【氏名】マンダル・アブラディップ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA01
(57)【要約】      (修正有)
【課題】トラステッド・エグゼキューション環境を使用する検索可能なデータセットを提供する方法及び記憶媒体を提供する。
【解決手段】方法は、秘密対称鍵(SSK)を、第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)、第2のシステムの第2のTEE及び第3のシステムの第3のTEEの間で交換する。第1のシステムによって、第2のシステムから暗号化された第1のデータセットを受信する。第1のTEEによって、SSKを使用して、暗号化された第1のデータセットを復号する。第1のシステムによって、第3のシステムから暗号化されたクエリを受信する。第1のTEEによって、SSKを使用して、暗号化されたクエリを復号する。第1のTEEによって、インデックスセットを使用して、暗号化されたクエリに対するクエリ結果を判定する。第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信する。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することと、
前記第1のシステムによって、前記第2のシステムからの暗号化された第1のデータセットを受信することであって、前記暗号化された第1のデータセットは、行で組織化されており、前記暗号化された第1のデータセットは、前記SSKを使用して前記第2のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の暗号化された第1のデータセットにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化された第1のデータセットを復号することと、
前記第1のシステムによって、前記第3のシステムから暗号化されたクエリを受信することであって、前記暗号化されたクエリは、前記SSKを使用して前記第3のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の前記暗号化されたクエリにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化されたクエリを復号することと、
前記第1のTEEによって、前記復号されたクエリに対するクエリ結果を判定することであって、前記クエリ結果は、前記復号されたクエリに応答する前記第1のデータセットの判定されたインデックスを含む、判定することと、
前記第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信することであって、前記暗号化されたクエリ結果は、前記判定されたインデックスに対応する前記暗号化された第1のデータセットの行を含む、ことと、を含む、方法。
【請求項2】
公開鍵暗号を使用して、前記第1のシステムの前記第1のTEE、前記第2のシステムの前記第2のTEE、および前記第3のシステムの前記第3のTEEの間で前記SSKを交換することをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のシステムで、前記暗号化された第1のデータセットを記憶することをさらに含む、請求項1に記載の方法。
【請求項4】
前記第2のシステムから受信される前記暗号化された第1のデータセットは、ダミー行を含む、請求項1に記載の方法。
【請求項5】
前記ダミー行は、前記第2のシステムによって前記第1のデータセットに追加される、請求項4に記載の方法。
【請求項6】
前記ダミー行は、前記第2のTEEによって前記暗号化された第1のデータセットに追加される、請求項4に記載の方法。
【請求項7】
前記第1のシステムの前記第1のTEEは、前記判定されたインデックスに対する追加のインデックスを含み、前記追加のインデックスは、前記第3のシステムに送信される前記暗号化されたクエリ結果に対するダミー行として作用する、請求項1に記載の方法。
【請求項8】
前記受信され暗号化されたクエリは、前記受信され暗号化されたクエリの発信システムに関して、前記第1のシステムには匿名である、請求項1に記載の方法。
【請求項9】
前記第1のTEEによって、前記復号された第1のデータセットのインデックスセットを生成することであって、前記インデックスセットは、前記第1のデータセットの検索を可能にするように構成されている、ことと、
前記第1のTEEによって、前記SSKを使用して、前記インデックスセットを暗号化することによって暗号化されたインデックスセットを生成することと、
前記第1のTEEによって、前記暗号化されたインデックスセットを前記第1のシステムに送信することと、をさらに含む、請求項1に記載の方法。
【請求項10】
動作を実行するか、前記動作の実行を制御するプロセッサデバイスによって実行可能であるコンピュータ実行可能命令が記憶された非一時的なコンピュータ可読記憶媒体であって、前記動作は、
第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することと、
前記第1のシステムによって、前記第2のシステムからの暗号化された第1のデータセットを受信することであって、前記暗号化された第1のデータセットは、行で組織化されており、前記暗号化された第1のデータセットは、前記SSKを使用して前記第2のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の暗号化された第1のデータセットにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化された第1のデータセットを復号することと、
前記第1のシステムによって、前記第3のシステムから暗号化されたクエリを受信することであって、前記暗号化されたクエリは、前記SSKを使用して前記第3のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の前記暗号化されたクエリにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化されたクエリを復号することと、
前記第1のTEEによって、前記暗号化されたクエリに対するクエリ結果を判定することであって、前記クエリ結果は、前記復号されたクエリに応答する前記第1のデータセットの判定されたインデックスを含む、判定することと、
前記第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信することであって、前記暗号化されたクエリ結果は、前記判定されたインデックスに対応する前記暗号化された第1のデータセットの行を含む、ことと、を含む、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示において議論される実施形態は、トラステッド・エグゼキューション環境を使用する検索可能なデータセットに関係する。
【背景技術】
【0002】
データセットは、組織化されたデータの集合を提供する。データベースは、データセットの例であってもよい。データセットにおいて位置するデータは、関連する情報セグメントを要求者に提供するためにクエリされてもよい。さらに、データセットに含まれるデータに関してセキュリティおよび制御を維持することが望ましいことがある。例えば、データセットに含まれるデータにおいて位置する一部のデータは、プライベート、または機密であることがある。
【0003】
本開示における特許請求の範囲の主題は、何らかの欠点を解決するか、または上記のような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本開示で記載されるいくつかの実施形態が実施され得る1つの例示的な技術を示すためにのみ提供されている。
【発明の概要】
【0004】
例示的な実施形態において、方法は、第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することを含んでもよい。方法はまた、第1のシステムによって、第2のシステムからの暗号化されたデータの第1のセットを受信することを含んでもよく、暗号化された第1のデータセットは、行で組織化されてもよく、暗号化された第1のデータセットは、SSKを使用して第2のTEEによって暗号化されていてもよい。方法はまた、第1のTEEによって、第1のシステム上の暗号化された第1のデータセットにアクセスすることを含んでもよい。方法はまた、第1のTEEによって、SSKを使用して、暗号化された第1のデータセットを復号することを含んでもよい。方法はまた、第1のTEEによって、復号された第1のデータセットのインデックスセットを生成してもよく、インデックスセットは、第1のデータセットの検索を可能にするように構成されていてもよい。方法はまた、第1のTEEによって、SSKを使用して、インデックスセットを暗号化することによって暗号化されたインデックスセットを生成することを含んでもよい。方法はまた、第1のTEEによって、暗号化されたインデックスセットを第1のシステムに送信することを含んでもよい。方法はまた、第1のシステムによって、第3のシステムから暗号化されたクエリを受信してもよく、暗号化されたクエリは、SSKを使用して第3のTEEによって暗号化されていてもよい。方法はまた、第1のTEEによって、第1のシステム上の暗号化されたクエリおよび暗号化されたインデックスセットにアクセスすることを含んでもよい。方法はまた、第1のTEEによって、SSKを使用して暗号化されたクエリおよび暗号化されたインデックスセットを復号することを含んでもよい。この方法はまた、第1のTEEによって、インデックスセットを使用して、復号されたクエリに対するクエリ結果を判定することを含んでもよく、クエリ結果は、復号されたクエリに応答し得る第1のデータセットの判定されたインデックスを含んでもよい。この方法はまた、第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信することを含んでもよく、暗号化されたクエリ結果は、判定されたインデックスに対応する暗号化された第1のデータセットの行を含んでもよい。
【0005】
本実施形態の目的および利点は、少なくとも特許請求の範囲において特に指摘された要素、特徴、および組み合わせによって実現され、達成される。
【0006】
上述の一般的記載および下記の発明を実施するための形態は両方とも、例として示されており、説明的であり、特許請求の範囲に記載された本発明を限定するものではない。
【図面の簡単な説明】
【0007】
例示的な実施形態は、添付の図面を使用することを通して、追加の具体性および詳細と共に記載および説明される。
【0008】
図1】トラステッド・エグゼキューション環境を使用して検索可能なデータセットを含む、例示的な動作環境のブロック図を示す。
【0009】
図2A】トラステッド・エグゼキューション環境を使用して検索可能なデータセットに関連する例示的な動作を示す。
【0010】
図2B図2Aの例示的な動作の続きである。
【0011】
図2C図2Aおよび図2Bの例示的な動作の続きである。
【0012】
図3A】システムが、トラステッド・エグゼキューション環境を使用して、データセットに関して、受信、記憶、およびクエリされる例示的な方法のフローチャートを示す。
【0013】
図3B図3Aのフローチャートの続きである。
【0014】
図4】第2のシステムがデータを暗号化し第1のシステムに送信するフローチャートを示す。
【0015】
図5】第3のシステムがクエリを暗号化し第1のシステムに送信し、第1のシステムからクエリ結果を受信して復号するフローチャートを示す。
【0016】
図6】例示的なコンピューティングシステムを示す。
【発明を実施するための形態】
【0017】
データセットは、様々な形式および量のデータを記憶するための組織化された構造を提供する。例えば、データベースは、データセットの例であってもよい。したがって、本開示において、「データベース」および関連する動作への言及は、データセットおよびそれに関して実行され得る関連する動作の例として機能してもよい。例えば、データセットのいくつかは、所与の業務のための在庫品目および数量を含んでもよい。データセットの組織化された構造のために、クエリを使用して、そこに含まれるデータ、またはデータに関係する情報を要求することが可能であってもよい。クエリは、データセットから応答データを生成するように構成されたデータセットに提出されるプレーンテキスト要求であってもよい。状況によっては、データセットが機密データおよび/またはプライベートデータを含むことがある。例えば、病院は、患者記録および他の機密医療情報を含むデータセットを含んでもよい。しかし、病院の主たる業務機能は、データストレージをホスティングするのではなく、医療サービスを提供することである。状況によっては、クラウドベースのストレージサービスを使用するなどして、データストレージに対してリモートシステムを利用することが病院にとって有益であることがある。しかし、病院データは機密データおよび/またはプライベートデータを含むことがあるため、望ましくない。例えば、場合によっては、クラウドベースのストレージサービスのような場所に記憶するときに、機密データおよび/またはプライベートデータが秘密のままであるという規制が存在してもよい。
【0018】
本開示の1つ以上の実施形態によれば、1つ以上のシステムプロセッサの部分は、トラステッド・エグゼキューション環境またはTEEと呼ばれるセキュアエリアを含んでもよい。TEEは、システムプロセッサが実行することができないことがある動作を実行するように構成されてもよい。例えば、TEEは、システムプロセッサがアクセスしない暗号化方式にアクセスしてもよく、TEEは、システムプロセッサが閲覧するか、そうでなければ操作することができないデータを暗号化および復号することができてもよい。これらおよび他の実施形態において、TEE内に含まれるデータは、システムプロセッサから不明瞭にされてよく、システムプロセッサがTEE内の内容を判定することができないようにしてもよい。代替的または追加的に、TEE内で実行される動作は、システムプロセッサが機能およびその動作を判定することができないまま完了されてもよい。複数のTEEが、互いに通信するように構成されてもよく、また、通信において暗号化方式を使用してもよく、関係するシステムプロセッサが暗号化されたデータの基礎となるデータを判定することができないようする。
【0019】
例えば、第1のシステム(例えば病院システム)は、第1のTEE内の対称鍵暗号化方式を使用して、データセット(例えば、患者記録)を暗号化してもよく、その対称鍵はすでに第2のTEEと共有されていてもよい。次いで、暗号化されたデータが記憶システムに送信されてもよい。記憶システムは、第1のTEEから送信され暗号化されたデータの基礎となるデータに関するいかなる情報も判定することができなくてもよい。さらに、暗号化されたクエリが、対称鍵へのアクセスを有するTEEによって生成されてもよく、記憶システムに記憶された暗号化されたデータに向けられてもよい(クエリは、病院または暗号化されたデータへのアクセスを付与された何らかの第三者に由来してもよい)。そのような例において、暗号化されたクエリを受信する記憶システムは、基礎となるクエリへのアクセス有さなくてもよく、代わりに、処理のために関係するTEEに暗号化されたクエリを送信してもよい。
【0020】
例えば、暗号化された病院記録を保持する記憶システムは、病院システムまたは第三者システムのいずれかから暗号化されたクエリを受信して、暗号化されたデータセットのいくつかの基礎となるデータを判定してもよい。しかしながら、暗号化のために、記憶システムは、基礎となるクエリからいかなる情報も判定できないことがあり、記憶システムに関係するTEEに暗号化されたクエリを送信してもよい。TEEは、他のTEE間で共有されている対称鍵を使用して、暗号化されたクエリを復号し、暗号化されたデータセットからクエリに対する応答行を判定してもよい。応答行を判定した後、TEEは、応答行として、クエリ応答を、暗号化されたクエリを使用してデータを要求したシステムに送信し返すことができ、クエリ応答は、依然として、暗号化され、基礎となるデータを記憶システムおよび要求システムの観点から遮蔽するようにしてもよい。いくつかの実施形態において、暗号化されたデータセット、暗号化されたクエリ、および暗号化されたクエリ応答のうちの1つ、いくつか、または全ては、ダミー行を含んでもよく、いかなるシステムも、データセット、クエリ、またはクエリ応答に含まれる基礎となるデータの量を判定することができないようにしてもよい。
【0021】
状況によっては、本開示の実施形態は、データについての暗号化方式を維持することによって、コンピュータデバイスに対して改良されたセキュリティおよびプライバシーを、データセットに記憶されたデータに対してのものを含め、促進することができる。例えば、病院患者記録などの機密データは、暗号化され、記憶のためにデータ記憶システムに送信されてもよいが、暗号化された形態のままでデータセットへのクエリを許可しながら、データ記憶システムが暗号化されたデータの内容にアクセスできないようにしてもよい。追加的に、本開示の実施形態は、クエリについての暗号化方式を維持することによって、データセットからのデータを要求するクエリのための改良されたセキュリティおよびプライバシーを促進することができる。例えば、病院は、記憶システムに記憶された患者記録にアクセスすることを研究グループに許可してもよい。研究グループは、暗号化されたクエリを記憶システムに提出してもよいが、データ記憶システムが暗号化されたクエリの内容にアクセスできないようにする。
【0022】
いくつかの実施形態において、ダミー行が、データセット、クエリ、クエリ応答、または3つの組み合わせのいずれかに追加され、転送されるデータの量を損なうことなく、追加のセキュリティおよびプライバシーを促進してもよい。例えば、データセットは、10行のデータを含んでもよく、10行のダミー行を含んでもよい。20行全てを暗号化されたデータとして受信する記憶システムは、20行のデータが記憶のために送信されたことのみを知ってもよい。
【0023】
これらおよび他の実施形態において、グループ署名が、クエリを提出するシステム、デバイス、またはユーザの識別を隠蔽することによって、別の層のプライバシーおよびセキュリティを促進し得る提出されたクエリに含まれてもよい。例えば、第三者研究グループは、記憶システムに記憶された暗号化されたデータに向けられた暗号化されたクエリを準備してもよく、グループ署名で暗号化されたクエリに署名してもよい。記憶システムは、暗号化されたクエリが有効な要求であることのみを判定し、クエリが起源とする場所からシステム、デバイス、またはユーザを判定することができなくてもよい。いくつかの実施形態において、対称暗号方式により、非対称暗号方式と比較したときに、本開示の実施形態が、暗号化および復号プロセスを実行するのに要する時間を短縮することを可能にしてもよい。その結果、対称暗号方式は、本開示に記載されるように、大量のデータが暗号化され、転送されるときに有利であり得る。いくつかの実施形態において、グループ署名は、グループのいずれかのメンバに署名されてもよい。代替的または追加的に、グループ署名で署名されたシステム、デバイス、またはユーザは、関連するグループ署名マスター鍵にアクセスできなくてもよいすべての者に対して匿名のままでよい。例えば、第1のグループメンバが、グループ署名で暗号化されたクエリに署名してもよいが、第2のグループメンバまたは第1の外部メンバのいずれも、どのグループのメンバがグループ署名を提供したかを判定しなくてもよい。この例を続けると、第3のグループメンバが、グループ署名に関連するマスター鍵にアクセスしてもよく、第3のグループメンバは、第1のグループメンバがグループ署名で暗号化されたクエリに署名したと判定してもよい。
【0024】
追加的に、機密データを生成するデバイスが、機密データをデータ記憶のために構成されたシステム上に記憶することを可能にすることは、生成デバイス上のリソースを解放し、大量のデータを記憶するシステムが、そのようなもののために最適化され、スケールメリットを享受することを可能にする。例えば、病院患者記録を生成し得るデバイスは、データを暗号化し、データをシステムに送信し、データを記憶するために別の方法で使用されていてもよいシステムリソースを維持してもよい。追加的に、他のデバイスが暗号化されたデータへのクエリを出すことを試みるときに、患者記録を生成したデバイスが、データを検索し、応答を生成する任務を負わなくてもよく、これもまた、システムリソースのドレーンを減少させることがある。
【0025】
図1は、本開示に記載された少なくとも1つの実施形態による、トラステッド・エグゼキューション環境(TEE)を使用する検索可能なデータセットを含む例示的な環境100を示す。環境100は、ネットワーク102、第1のTEE112を含み得る第1のシステム110、データストレージ114、第2のTEE122を含み得る第2のシステム120、および第3のTEE132を含み得る第3のシステム130を含んでもよい。
【0026】
ネットワーク102は、第1のシステム110、第2のシステム120、および第3のシステム130を通信的に結合するように構成されてもよい。いくつかの実施形態において、ネットワーク102は、システム間の通信を送信および受信するように構成されている任意のネットワークまたはネットワークの構成であってもよい。いくつかの実施形態において、ネットワーク102は、有線ネットワーク、光ネットワーク、および/または無線ネットワークを含んでもよく、環境100内のシステムを通信的に結合するための複数の異なるタイプのネットワーク、ネットワーク接続、およびプロトコルを含む、多数の異なる構成を含んでもよい。
【0027】
第1のシステム110、第2のシステム120、および第3のシステム130の各々は、任意の電子またはデジタルコンピューティングシステムを含んでもよい。例えば、第1のシステム110、第2のシステム120、および第3のシステム130の各々は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、携帯電話、タブレットコンピュータ、サーバ、処理システム、または本開示に記載された動作を実行し、第1のシステム110、第2のシステム120、および第3のシステム130間でデータを通信するために使用され得る他の任意のコンピューティングシステムまたはコンピューティングシステムセットを含んでもよい。このようなコンピューティングシステムの一例が、図6を参照して以下に記載される。
【0028】
いくつかの実施形態において、第1のシステム110は、第1のTEE112を含んでもよい。例示的な実施形態において、第1のシステム110は、サーバシステムを含んでもよい。第1のシステム110がサーバシステムである場合、サーバシステムは、データを送信および受信することを含み得るデータ生成クライアントおよびデータ受信クライアントなどの他のシステムと通信するように構成されてもよい。代替的または追加的に、サーバシステムは、データストレージ114などのデータ記憶デバイスにデータを記憶し、ここからデータを取得するように構成されてもよい。いくつかの実施形態において、第1のTEE112は、第1のシステム110のシステムプロセッサのパーティションであってもよい。例えば、TEEは、システムプロセッサの分離された部分を占有ししてもよく、システムプロセッサと並列に動作する。いくつかの実施形態において、第1のTEE112は、第1のシステム110のシステムプロセッサのセキュアエリアであってもよい。これらおよび他の実施形態において、第1のTEE112は、第1のシステム110、または第1のTEE112の外部の任意の他のコンポーネント、デバイス、もしくはシステムによって見られる際にブラックボックスユニットとして作用してもよい。例えば、TEEは、動作、機能、結果などの任意の詳細をその対応するシステムに開示することなく、動作を実行するように構成されてもよい。また、対応するシステムがTEE内の動作、機能、結果などに関係する詳細を取得できなくてもよい。いくつかの実施形態では、例として、第1のTEE112は、ARM(登録商標) TrustZone(登録商標)、Intel(登録商標)Software Guard Extensions (SGX)技術、または任意の他の好適な技術を用いてもよい。
【0029】
いくつかの実施形態において、第2のシステム120は、第2のTEE122を含んでもよい。例示的な実施形態において、第2のシステム120は、データ生成クライアントを含んでもよい。第2のシステム120がデータ生成クライアントである場合、データ生成クライアントは、サーバシステム(例えば、サーバシステムとして動作する第1のシステム110)などの他のデバイスまたはシステムと通信するように構成されてもよい。これらまたは他の実施形態において、データ生成クライアントは、データストレージおよび/または将来のアクセスのために、サーバシステム(または任意の他の適切なシステムもしくはデバイス)にデータを送信してもよい。第2のシステム120と第2のTEE122との間の関係および機能は、第1のシステム110と第1のTEE112との間の関係および機能に類似していてもよい。
【0030】
いくつかの実施形態において、第3のシステム130は、第3のTEE132を含んでもよい。例示的な実施形態において、第3のシステム130は、データクエリクライアントを含んでもよい。第3のシステム130がデータクエリクライアントである場合、データクエリクライアントは、サーバシステム(例えば、サーバシステムとして動作する第1のシステム110)などの他のデバイスまたはシステムと通信するように構成されてもよい。データクエリクライアントは、サーバシステム(または任意の他の好適なシステムまたはデバイス)からのデータを要求して、データ処理および分析などの追加の使用のためにデータを受信してもよい。これらまたは他の実施形態において、サーバシステムからの要求されたデータは、データ生成クライアント(例えば、データ生成クライアントとして動作する第2のシステム120)によってサーバシステムに送信されるデータであってもよい。第3のシステム130と第3のTEE132との間の関係および機能は、第1のシステム110と第1のTEE112との間の関係および機能に類似していてもよい。
【0031】
いくつかの実施形態において、第1のシステム110およびデータストレージ114は、第1のシステム110とデータストレージ114との間でデータが渡されることを可能にするように通信的に結合されてもよい。いくつかの実施形態において、第1のシステム110とデータストレージ114との間で渡されるデータは、暗号化されたデータであってもよい。データストレージ114は、第1のシステム110または第1のTEE112のいずれかから発行されたコマンドに応答するように構成されてもよい。データストレージ114は、第1のシステム110によって要求されたことに応答して、暗号化されたデータを第1のシステム110に送信するように構成されてもよい。これらおよび他の実施形態において、第1のシステム110は、暗号化されたクエリを使用して、データストレージ114からのデータを要求することができる。いくつかの実施形態では、データストレージ114は、第1のシステム110から送信され暗号化されたデータを受信し、記憶するように構成されてもよい。
【0032】
いくつかの実施形態において、第1のシステム110とデータストレージ114との間の通信リンクは、第1のシステム110とデータストレージ114との間の通信を送信および受信するように構成されたネットワーク要素の任意の構成であってもよい。これらおよび他の実施形態において、データは、デジタルデータ転送において一般的な方法を使用して、第1のシステム110とデータストレージ114との間で渡されてもよい。このようなシステムおよび/または方法には、PCI、PCI Express、Ethernet(登録商標)、Bluetooth(登録商標)、Wi-Fi(登録商標)、WiMAX、セルラー通信などの無線転送を含んでもよい。
【0033】
データストレージ114は、暗号化されたデータを含みうるデータを記憶するように構成されてもよい。いくつかの実施形態において、データストレージ114は、行に組織化されたデータを記憶してもよい。いくつかの実施形態において、データストレージ114は、より高速および/またはより効率的な検索を可能にし得るインデックス付けがされてもよい。代替的または追加的に、データストレージ114のインデックスは、暗号化されたインデックスとして記憶されてもよく、これは、インデックスを復号することができるシステム/デバイスによってのみアクセス可能であってもよい。例えば、データ記憶デバイスにおけるデータは、最初にインデックス付けされ、次いで、インデックスが暗号化されてもよい。この例を続けると、特定のデータを求めるクエリがデータ記憶デバイスに提示されると、暗号化されたインデックスが復号されてもよく、データ記憶デバイスにおけるデータを効率的に検索するために使用され得るインデックスをもたらすことがある。データストレージ114は、RAM(Random Access Memory)、ROM(Read-Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、CD-ROM(Compact Disc Read-Only Memory)、または他の光ディスクストレージ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、または汎用または特殊目的のコンピュータによってアクセスされ得るデータまたはデータ構造を搬送または記憶するために使用され得る任意の他の記憶媒体などのコンピュータ可読記憶媒体を含んでもよい。
【0034】
いくつかの実施形態において、データは、1つ以上の要素を含む情報の集合であってもよい。いくつかの実施形態において、第1のデータは、第1のデータに関係し得る他のデータと共に、データセットに組織化されてもよい。いくつかの実施形態において、第1のデータは、鍵値のペアなど、第1のデータに関係するデータとペアにされてもよい。
【0035】
例えば、病院からの第1の患者記録は、年齢、診断、治療、および結果などの要素を含む第1のデータであってもよい。例において、第1の患者が第1のキーであってもよく、関係するデータ、例えば、年齢、診断、治療、および結果は、第1のキーに関係する第1のペアを構成してもよい。第1の患者記録は、年齢、診断、治療、および結果を含む第1の患者記録と同様の要素を含み得る第2の患者記録と結合されてもよく、データセットをもたらす。追加の患者記録が第1の患者記録と第2の患者記録に追加され、データセットにおけるデータの量を増加させる。
【0036】
いくつかの実施形態において、データセットは、単一のエントリに関係する情報が、固有の要素によって列に概説された単一の行上に位置し得るように構造化されてもよい。例えば、第1の患者がデータセットの第1の行を占有し、患者の年齢、診断、治療、および結果が各々第1の行の固有の列を占有してもよい。いくつかの実施形態において、データセットは、データベースとして組織化されてもよい。例えば、いくつかの実施形態では、患者記録がデータベースに組織化されてもよい。
【0037】
いくつかの実施形態において、データセットを記憶するシステムは、データセットに含まれるデータに向けられたクエリ要求を受信するように構成されてもよい。例えば、病院での医師は、第2の患者に関係する全ての情報について、データセットを記憶しているシステムにクエリを出してもよい。代替的または追加的に、クエリは、データセットにおけるデータに対する複合検索を含んでもよい。例えば、病院での医師は、がんがあると診断された患者および治療として放射線療法を処方された患者について、データセットを記憶しているシステムにクエリを出してもよい。記載のように、クエリは、列内の要素または行内のエントリのいずれかに向けられてもよい。いくつかの実施形態において、データセットを記憶しているシステムは、内部に含まれるデータにセキュリティのレベルを提供するように構成されてもよい。例えば、データセットを記憶しているシステムは、データにアクセスするための要求を監視および記録し、データにアクセスするユーザがデータと行う種々の相互作用を監視および記録してもよい。
【0038】
いくつかの実施形態において、第1のシステム110、第2のシステム120、および第3のシステム130は、第1のTEE112、第2のTEE122、および第3のTEE132に加えて、上述のようにネットワーク102を介してデータを通信および共有するように構成されてもよい。いくつかの実施形態において、第1のTEE112、第2のTEE122、および第3のTEE132は、データを暗号化および復号し、アクセスが許可されたシステムおよびデバイスを除き、プライベートデータがアクセス不能になるように構成されてもよい。これらおよび他の実施形態において、第1のデータセットは、第1のシステム110で受信されてもよく、第1のシステム110は、第1のデータセットを記憶してもよい。いくつかの実施形態において、受信された第1のデータセットは、第2のTEE122などによって暗号化されてもよく、暗号化された第1のデータセットの基礎となるデータが第1のシステム110にはアクセス不能としてもよい。これらおよび他の実施形態では、第1のTEE112は、暗号化された第1のデータセットを復号してもよい。さらに、第1のシステム110は、第3のTEE132などの遠隔システムから暗号化されたクエリなどの暗号化されたクエリを受信してもよい。いくつかの実施形態において、第1のTEE112は、第1のシステム110から暗号化されたクエリにアクセスしてもよく、受信され暗号化されたクエリに対する応答行を判定することができてもよい。いくつかの実施形態において、暗号化された第1のデータセットの基礎となるデータおよび暗号化されたクエリの基礎となるクエリは、第1のシステム110にはアクセス不能としてもよい。上述した機能のさらなる詳細は、以下の図2A、2B、および2Cに関して提供される。
【0039】
本開示の範囲から逸脱することなく、環境100に修正、追加、または省略が行われてもよい。例えば、いくつかの実施形態において、環境100は、第3のシステム130を含まなくてもよい。いくつかの実施形態において、第3のシステム130は、通信するように構成されたデータストレージを含んでもよい。代替的または追加的に、図示および記載された3つのシステムは、単に、システムの例の数として与えられているに過ぎず、限定的であることを意図していない。
【0040】
図2A、2B、および2Cは、TEEを使用して検索可能なデータセットに関係する例示的な動作200を示す。動作200は、本開示に記載された少なくとも1つの実施形態に従ってアレンジされてもよい。図示の例において、動作200は、第1のシステム206、第2のシステム202、第3のシステム210、第1のTEE208、第2のTEE204、および第3のTEE212の間であってもよい。いくつかの実施形態では、第1のシステム206、第2のシステム202、第3のシステム210、第1のTEE208、第2のTEE204、および第3のTEE212は、それぞれ図1の第1のシステム110、第2のシステム120、第3のシステム130、第1のTEE112、第2のTEE122、および第3のTEE132に類似していてもよい。代替的または追加的に、動作200は、図1の環境100の要素の動作の一例であってもよい。
【0041】
いくつかの実施形態において、動作200は、第1のシステム206、第2のシステム202、第3のシステム210、第1のTEE208、第2のTEE204、および第3のTEE212の間の通信および相互作用の例であり得る。いくつかの実施形態において、第1のシステム206、第2のシステム202、および第3のシステム210の間の相互作用は、ネットワーク上で実行されてもよい。例えば、ネットワークは、図1のネットワーク102に類似していてもよい。
【0042】
一般に、動作200は、機密データを記憶し、記憶された機密データを他のシステムおよびデバイスにクエリ可能にすることに関係してもよい。これらおよび他の実施形態において、動作200は、データのセキュリティおよびプライバシーを維持するために、TEE間で機密データを暗号化、復号、および共有することを含んでもよい。図示された動作200は、網羅的ではなく、発生し得る動作200を単に表わしたものに過ぎない。さらに、図示されるような1つの動作は、1つ以上の通信、動作、および/またはデータ交換を表してもよい。
【0043】
動作220では、第1のシステム206の第1のTEE208、第2のシステム202の第2のTEE204、および第3のシステム210の第3のTEE212は、各々公開鍵暗号方式の固有の秘密鍵を保持してもよい。いくつかの実施形態において、第1のTEE208、第2のTEE204、および第3のTEE212は、それぞれ、第1のシステム206、第2のシステム202、および第3のシステム210に、公開鍵暗号方式の一部として公開鍵を交換するように指示することができる。これらおよび他の実施形態において、秘密鍵を保持する第1のTEE208、第2のTEE204、および第3のTEE212の各々は、関連するシステム(例えば、それぞれ、第1のシステム206、第2のシステム202、および第3のシステム210)に、他のシステムとの動作200の公開鍵交換を開始するように指示してもよい。例えば、秘密鍵を保持する第2のTEE204は、第2のシステム202に、対応する公開鍵を第1のシステム206および第3のシステム210と交換するように指示してもよい。代替的または追加的に、第1のTEE208、第2のTEE204、および第3のTEE212は、各TEE秘密鍵に関連する公開鍵を直接交換してもよい。例えば、第1のTEE208は、第1のTEE208の秘密鍵に対応する公開鍵を、第2のTEE204および第3のTEE212と交換してもよい。
【0044】
動作222では、第1のTEE208、第2のTEE204、および第3のTEE212は、対称鍵暗号方式の一部として秘密対称鍵(SSK)を交換してもよい。いくつかの実施形態において、動作222は、TLSおよび他の類似の暗号プロトコルと同様に動作してもよい。いくつかの実施形態において、SSKは、動作220に記載されるように公開鍵を交換した公開鍵暗号方式を使用して、第1のTEE208、第2のTEE204、および第3のTEE212の間で交換されてもよい。例えば、第1のTEE208は、第2のシステム202および第3のシステム210からの公開鍵を使用してSSKを暗号化してもよく、第2のTEE204および第3のTEE212とSSKを交換してもよい。この例を続けると、第2のTEE204は、その秘密鍵を使用し、第3のTEE212は、その秘密鍵を使用して、それぞれ、第2のシステムからの公開鍵、および第3のシステム210からの公開鍵で暗号化され、第第1のTEE208から送信されたSSKを受信し、復号してもよい。代替的または追加的に、第2のTEE204または第3のTEE212のいずれかは、第1のシステム206、第2のシステム202、または第3のシステム210からの共有公開鍵を使用して、SSKを暗号化し、次いで、これは、必要に応じて残りの2つのシステムと交換されてもよい。例えば、第3のTEE212は、第1のシステム206からの公開鍵および第2のシステム202からの公開鍵を使用してSSKを暗号化してもよく、第3のTEE212は、第1のTEE208および第2のTEE204とSSKを共有してもよい。いくつかの実施形態において、第1のシステム206、第2のシステム202、および第3のシステム210は、第1のTEE208、第2のTEE204、および第3のTEE212の間で交換されるSSKに関与しなくてもよい。
【0045】
動作230では、第2のシステム202は、第1のセットのデータを第2のTEE204に送信してもよい。いくつかの実施形態において、第1のデータセットは、秘密に保持されることが望ましいことがある機密情報を含んでもよい。いくつかの実施形態において、第1のデータセットは、行で組織化されてもよい。いくつかの実施形態において、第1のデータセットを第2のTEE204に送信する第2のシステム202は、第2のシステム202に記憶された第1のデータセットへのアクセスを第2のTEE204に提供することを含んでもよい。
【0046】
動作232では、第2のTEE204は、SSKを使用して第1のデータセットを暗号化してもよい。これらおよび他の実施形態において、第2のTEE204によって暗号化された第1のデータセットの基礎とするデータは、第2のシステム202にはアクセス不能としてもよい。代替的または追加的に、暗号化された第1のデータセットの基礎となるデータは、SSKへのアクセスを有するものを除き、システムおよびデバイスにはアクセス不能としてもよい。
【0047】
いくつかの実施形態において、第2のTEE204は、暗号化される前に第1のデータセットを有するダミー行を含んでもよく、暗号化された第1のデータセットは、基礎となるデータおよびダミー行の両方を含むようにする。ダミー行は、第1のデータセットにおけるデータの行と長さおよび構造が類似しているデータの行であってもよく、それ以外は、第1のデータセットとは関係がなくてもよい。例えば、第1のデータセットにおける行が5つの列に分割された5つの要素を含む場合、ダミー行はデータで充填された5つの列を含んでもよい。追加的に、第1の列における第1の要素が数である場合、ダミー行の第1の列における第1の要素も数であってよい。いくつかの実施形態において、ダミー行は、第1のデータセットと同じ分布からサンプリングされたデータを含んでもよいが、ダミー行は、第1のデータセットから独立していてもよい。代替的または追加的に、第1のデータセットが第2のTEE204に送信される前に、動作230でダミー行が第2のシステム202によって追加されてもよい。これらおよび他の実施形態において、基礎となるデータと組み合わされたダミー行を含む第1のデータセットを暗号化することは、SSKへのアクセスなしのシステム、デバイス、および/またはユーザが、送信されおよび/または記憶される第1のデータセットに関係する基礎となるデータの量を判定することをより困難にしてもよい。いくつかの実施形態において、第2のTEE204は、どの行が第1のデータセットに含まれ、どの行がダミーの行であるかを示し得る、暗号化された第1のデータセット内の表示を提供してもよい。
【0048】
動作234では、第2のTEE204は、暗号化された第1のデータセットを第1のシステム206に送信してもよい。いくつかの実施形態において、第2のTEE204は、第2のシステム202の1つ以上の要素に暗号化された第1のデータセットを送信するように指示することによって、暗号化された第1のデータセットを送信してもよい。追加的または代替的に、第2のTEE204は、暗号化された第1のデータセットを第2のシステム202の1つ以上の他の要素に送信することによって、暗号化された第1のデータセットを送信することができ、1つ以上の他の要素は、暗号化された第1のデータセットを送信してもよい。
【0049】
いくつかの実施形態において、暗号化された第1のデータセットは、ネットワークを介して第1のシステム206に送信されてもよい。いくつかの実施形態において、ネットワークは、図1のネットワーク102に類似していてもよい。いくつかの実施形態において、暗号化された第1のデータセットは、暗号化プロセスの完了時に、第2のTEE204によって集合体で送信されてもよい。例えば、患者記録の行を含む第1のデータセットは、第2のTEE204によって暗号化されたデータの各行を有することができ、データの全ての行が第1のシステム206に送信されてもよい。
【0050】
代替的または追加的に、個々の行が暗号化されると、暗号化された第1のデータセットが送信されてもよい。例えば、患者記録の行を含む第1のデータセットは、第2のTEE204によって暗号化され、第1のシステム206に送信されるデータの第1の行を有してもよい。この例において、データの行を暗号化して送信するプロセスは、第1のデータセット全体が暗号化され、第2のTEE204から第1のシステム206に送信されるまで、反復的に実行されてもよい。代替的または追加的に、第2のTEE204によって以前に暗号化され送信された第1のデータセットの更新されたデータは、追加の暗号化された第1のデータセットとして暗号化され送信されてもよい。例えば、暗号化された第1のデータセットが第2のTEE204から第1のシステム206に送信されることに続いて、第1のデータセットのデータ要素が更新されてもよい。更新された第1のデータセットは、第2のTEE204によって暗号化され、第1のシステム206によって以前に受信され暗号化された第1のデータセットに対する更新されたデータとして第1のシステム206に送信されてもよい。
【0051】
動作236では、第1のシステム206は、第2のTEE204から受信され暗号化された第1のデータセットを記憶してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、第1のシステム206に関連するデータストレージに記憶されてもよい。いくつかの実施形態において、第1のシステム206に関連するデータ記憶デバイスは、図1のデータストレージ114に類似していてもよい。いくつかの実施形態において、暗号化された第1のデータセットは、受信され暗号化された状態で記憶されてもよい。いくつかの実施形態において、暗号化された第1のデータセットは、第1のシステム206上の忘却型RAMに記憶されてもよい。いくつかの実施形態において、第1のTEE208、第2のTEE204、および第3のTEE212は、限定された量のメモリを含んでもよく、これにより、TEEは、関連するシステム上に暗号化されたデータを記憶してもよい(すなわち、第1のTEEが、第1のシステム上に暗号化されたデータを記憶する)。これらおよび他の実施形態において、忘却型RAMは、暗号化されたデータの内容の詳細を関連するシステムに明らかにすることなく、TEEが、暗号化されたデータを関連するシステム上に記憶することを可能にしてもよい。
【0052】
いくつかの実施形態において、忘却型RAMは、受信された入力から独立したデータアクセスパターンを有するように構成されてもよい。追加的に、パターンのシーケンスおよび/または動作に関する情報は、忘却型RAMをホストするシステムに秘匿されてもよい。例えば、第1のシステムにおける偏りのある忘却型RAMは、暗号化鍵を記憶し、データセットを記憶する義務を負ってよく、2つの記憶動作に対して同じアクセスパターンを使用してもよい。この例において、暗号化鍵とデータセットは、異なるサイズであってもよく、異なるデータ構造を含んでもよいが、忘却型RAMは、暗号化鍵とデータセットを記憶するために、依然として、同じアクセスパターンを使用してもよい。
【0053】
動作238では、第1のTEE208は、第1のシステム206に記憶されていてもよいデータの暗号化された第1のデータセットにアクセスしてもよい。いくつかの実施形態において、第1のシステム206は、暗号化された第1のデータセットが受信され記憶されたことの通知を第1のTEE208に送信してもよい。例えば、第1のシステム206は、第1のTEE208にフラグを送信して、暗号化された第1のデータセットが受信され記憶されたことの表示を提供する。
【0054】
動作240では、第1のTEE208は、SSKを使用して暗号化された第1のデータセットを復号してもよい。いくつかの実施形態において、第1のTEE208は、復号された第1のデータセットへのアクセスを共有しないか、そうでなければ提供せず、復号された第1のデータセットが、第1のシステム206または他の任意のシステムもしくはデバイスにはアクセス不能としてもよい。
【0055】
動作242では、第1のTEE208は、復号された第1のデータセットのインデックスセットを生成してもよい。いくつかの実施形態において、インデックスセットは、第1のセットのデータに含まれる特定の列に関係し得るデータ構造であってもよい。いくつかの実施形態において、データ構造は、キーと呼ばれてもよい。これらおよび他の実施形態において、キーは、第1のデータセットの列におけるエントリのコピーであってもよい。例えば、医療機関は、年齢、身長、体重、診断、治療、結果などの列を含む第1のデータセットを提供してもよい。この例において、年齢の列は、インデックスセットを表し得る年齢キーとしてコピーされてもよい。クエリが最初のデータセットから特定の年齢を要求した場合、システムは、第1のデータセットの追加の列を検索する必要なく、年齢キーにわたって繰り返してもよい。これらおよび他の実施形態において、インデックスセットは、復号された第1のデータセット内の個々の行のデータを介した繰り返しによる検索と比較して、より高速な検索方法を可能にしてもよい。
【0056】
動作244では、第1のTEE208は、SSKを使用して動作242で生成されたインデックスセットを暗号化することによって、暗号化されたインデックスセットを生成してもよい。これらおよび他の実施形態において、第1のTEE208によって暗号化された基礎となるインデックスセットは、第1のシステム206にはアクセス不能としてもよい。代替的または追加的に、暗号化されたインデックスセットの基礎となるインデックスセットは、SSKへのアクセスを有するものを除き、システムおよびデバイスにはアクセス不能としてもよい。
【0057】
動作246では、第1のTEE208は、暗号化されたインデックスセットを第1のシステム206に送信してもよい。本開示においては、それぞれのTEEが対応するシステムの一部であっても、対応するシステムとの間でデータを送受信するそれぞれのTEE(例えば、第1のシステム206との間でデータを送受信する第1のTEE208)への参照は、それぞれのTEEの外側の対応するシステムの別の部分との間でデータを送受信するそれぞれのTEEを指してもよい。いくつかの実施形態において、第1のTEE208は、第1のシステム206の1つ以上の他の要素に、暗号化されたインデックスセットが記憶される準備ができていることの通知を送信してもよい。例えば、第1のTEE208は、第1のシステム206に、暗号化されたインデックスセットが記憶される準備ができていることの表示を提供するフラグを送信してもよい。
【0058】
動作248では、第1のシステム206は、第1のTEE208から受信した暗号化されたインデックスセットを記憶してもよい。いくつかの実施形態において、暗号化されたインデックスセットは、第1のシステム206に関連するデータストレージに記憶されてもよい。いくつかの実施形態において、第1のシステム206に関連するデータストレージは、図1のデータストレージ114に類似していてもよい。いくつかの実施形態において、暗号化されたインデックスセットは、暗号化された状態で記憶されてもよい。いくつかの実施形態において、暗号化されたインデックスセットは、第1のシステム206上の忘却型RAMに記憶されてもよい。
【0059】
動作250では、第3のTEE212は、クエリを取得してもよい。いくつかの実施形態において、クエリは、ユーザから取得されてもよい。例えば、クエリは、第3のシステム210上のユーザインターフェースを介してユーザから取得されてもよい。代替的または追加的に、クエリは、第3のシステム210から取得されてもよい。これらおよび他の実施形態において、クエリは、データセットからデータを要求するように構築されてもよい。いくつかの実施形態において、クエリは、平文データセットからデータを要求する平文クエリであってもよい。
【0060】
動作252では、第3のTEE212は、SSKを使用してクエリを暗号化してもよい。これらおよび他の実施形態において、暗号化されたクエリの基礎となるクエリは、SSKへのアクセスを有するものを除き、システムおよびデバイスにはアクセス不能としてもよい。
【0061】
いくつかの実施形態において、第3のTEE212は、暗号化される前にクエリとともにダミー行を含んでもよく、暗号化されたクエリが基礎となるクエリとダミー行の両方を含むようにする。代替的または追加的に、ダミー行は、クエリが第3のTEE212に送信される前に、動作250で第3のシステム210によって追加されてもよい。これらおよび他の実施形態において、基礎となるクエリと組み合わされたダミー行を含むクエリを暗号化することは、SSKへのアクセスなしのシステム、デバイス、および/またはユーザが、送信されおよび/または記憶されるクエリに関係する基礎となるデータの量を判定することをより困難にしてもよい。いくつかの実施形態において、第3のTEE212は、どの行がクエリに含まれ、どの行がダミー行であるかを示し得る、暗号化されたクエリ内の表示を提供してもよい。
【0062】
動作254において、第3のTEE212は、暗号化されたクエリを第1のシステム206に送信してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、ネットワークを介して第1のシステム206に送信されてもよい。いくtかの実施形態において、ネットワークは、図1のネットワーク102に類似していてもよい。いくつかの実施形態において、第1のシステム206は、第3のTEE212によるクエリの暗号化がSSKを使用し、第1のシステムがSSKへのアクセスを有しないことにより、第3のTEE212から送信され暗号化されたクエリの基礎となるクエリへのアクセスを有しなくてもよい。例えば、いくつかの例では、第3のシステム210によって生成され暗号化されたクエリの基礎となるクエリは、第1のシステム206、またはSSKへのアクセスを欠く他のシステムに明らかにされなくてもよい。この例を続けると、基礎となるクエリは、第1のTEE208およびSSKにアクセスを有する他のTEEによってクリアに見えてもよい。
【0063】
いくつかの実施形態において、暗号化されたクエリは、第1のシステム206に送信する前に、第3のTEE212によってグループ署名で署名されてもよい。いくつかの実施形態において、グループ署名方式は、匿名認証の方法を含んでもよく、グループに含まれる署名者が、もしなければグループの外側のシステム、デバイス、および/またはユーザには制限がかかるかもしれない情報へのアクセスを許可されるようにする。さらに、グループ署名方式は、グループのメンバの追加または削除をそれぞれすることができるグループマネージャを含んでもよい。いくつかの実施形態において、第1のセットデータの所有者が、グループマネージャであってもよい。例えば、元々第1のシステムに第1のデータセットを送信した第2のシステムが、グループマネージャであってもよく、第2のシステムは、グループに他のシステムを追加することによって、第1のデータセットをクエリする許可を他のシステムに与えてもよい。いくつかの実施形態において、グループマネージャは、認証システムができないことがあるときでも、署名者のアイデンティを判定することができてもよい。グループ署名は、署名者が第1のシステム206に記憶された第1のデータセットにおけるデータにアクセスおよび/またはクエリすることを許可される認証を提供してもよい。グループ署名は、第3のTEE212に匿名性を提供してもよく、第1のシステム206が、暗号化されたクエリが起源とするシステムおよび/またはTEEを判定することができなくてもよい。いくつかの実施形態において、有効なグループ署名は、暗号化されたクエリを第1のシステム206に提出するシステムおよび/またはデバイスが、暗号化されたクエリに関連する情報を要求することを許可されることの表示を提供してもよい。
【0064】
動作256では、第1のシステム206は、第3のTEE212から受信され暗号化されたクエリを記憶してもよい。いくつかの実施形態において、暗号化されたクエリは、第1のシステム206に関連付けられたデータストレージに記憶されてもよい。いくつかの実施形態において、第1のシステム206に関連するデータストレージは、図1のデータストレージ114に類似していてもよい。いくつかの実施形態において、暗号化されたクエリは、受信され暗号化された状態で記憶されてもよい。いくつかの実施形態において、暗号化されたクエリは、第1のシステム206上の忘却型RAMに記憶されてもよい。いくつかの実施形態において、暗号化されたクエリが動作254に記載されたようなグループ署名で署名される場合、第1のシステム206は、暗号化されたクエリのソースを判定することができなくてもよい。これらおよび他の実施形態において、第1のシステム206は、グループ署名を記憶してもよい。いくつかの実施形態において、グループマネージャは、暗号化されたクエリを提出した起源とするシステムをトレースするために、記憶されたグループ署名を使用することができてもよい。
【0065】
動作258では、第1のTEE208は、暗号化されたクエリおよび暗号化されたインデックスセットにアクセスしてもよく、これらの両方は、第1のシステム206に関連するデータストレージに記憶されていてもよい。いくつかの実施形態において、第1のシステム206は、第1のTEE208に、暗号化されたクエリが受信されたことの通知を送信してもよい。例えば、第1のシステム206は、第1のTEE208に、暗号化されたクエリが受信されたことの表示を提供するフラグを送信してもよい。いくつかの実施形態において、暗号化されたクエリに関連してグループ署名が使用される場合、第1のTEE208が、グループ署名を検証してもよいこれらおよび他の実施形態において、第1のTEE208は、グループ署名で署名されていない、またはそのグループ署名が無効である暗号化されたクエリに対する応答を提供しなくてもよい。
【0066】
動作260では、第1のTEE208は、暗号化されたクエリを復号してもよく、SSKを使用して暗号化されたインデックスセットを復号してもよい。いくつかの実施形態において、第1のTEE208は、復号されたクエリまたは復号されたインデックスセットへのアクセスを共有しないか、そうでなければ提供しなくてもよく、復号されたクエリまたは復号されたインデックスセットの両方が第1のシステム206または任意の他のシステムもしくはデバイスにはアクセス不能としてもよい。
【0067】
動作262では、第1のTEE208は、復号されたクエリに対する結果を判定してもよい。いくつかの実施形態において、第1のTEE208は、復号されたインデックスセットを使用して、暗号化された第1のデータセットのクエリ結果を判定してもよい。例えば、第1のTEE208は、復号されたインデックスセットを使用して、復号されたクエリに応答する暗号化された第1のデータセットの1つ以上のインデックスを判定してもよい。いくつかの実施形態において、第1のTEE208は、復号されたクエリに対する応答行のインデックスを判定してもよい。これらおよび他の実施形態において、第1のTEE208は、決定されたインデックスを使用して、暗号化された第1のデータセットからの行を、復号されたクエリに対する応答行として選択してもよい。
【0068】
いくつかの実施形態において、第1のTEE208は、クエリ結果の一部として判定されたインデックスを有する追加のインデックスを含んでもよく、追加のインデックスは、クエリ結果に含まれるダミー行を表してもよい。いくつかの実施形態において、第2のTEE204から受信され暗号化された第1のデータセットは、第1のTEE208がクエリ結果にダミー行として含めてもよい、データセットにおけるダミー行を含んでいてもよい。例えば、暗号化された第1のデータセットは、偶数行が全てダミー行である10行を有してもよい。この例を続けると、暗号化されたクエリを受信したことに応答して、TEEは、第1および第5の行が暗号化されたクエリに応答すると判定してもよい。この例を続けると、TEEは、クエリ対する応答行が、第1、第2、第4、および第5の行を含み、第1および第5行が応答であり、第2および第4行がダミー行であることを示してもよい。代替的または追加的に、第1のTEE208は、応答行に追加されるダミー行を生成してもよく、生成されたダミー行は、応答行と長さおよび構造が類似したデータ行であってもよい。これらおよび他の実施形態において、第1のTEE208は、どの行がクエリに応答し、どの行がダミーの行として含まれるかを示す表示をクエリ結果において提供してもよい。例えば、4つの列に4つの要素を含むクエリ応答内のデータ行は、行が応答行またはダミー行のいずれかであることを示す表示を提供する第5の列における第5の要素を有してもよい。
【0069】
動作264では、第1のTEE208は、暗号化されたクエリ結果を第3のシステム210に送信してもよい。いくつかの実施形態において、第1のシステム206は、暗号化および暗号化されたクエリ結果に追加されたダミー行により、暗号化されたクエリ結果に関するいかなる識別データも判定することができなくてもよい。例えば、第1のシステム206は、第3のシステム210に送信され暗号化されたクエリ結果が大量のデータであることをなんとかして判定してもよいが、暗号化されたクエリ結果のうちどれだけが第1のデータセットからのデータであるか、または単にダミー行であるかを判定することができなくてもよい。いくつかの実施形態において、暗号化されたクエリ結果は、ネットワークを介して第3のシステム210に送信されてもよい。いくつかの実施形態において、ネットワークは、図1のネットワーク102に類似していてもよい。いくつかの実施形態において、第3のシステム210は、第1のTEE208から送信され暗号化されたクエリへのアクセスを有さなくてもよい。
【0070】
動作266では、第3のシステム210は、第1のTEE208から受信され暗号化されたクエリを記憶してもよい。いくつかの実施形態において、暗号化されたクエリは、第3のシステム210に関連するデータ記憶デバイスに記憶されてもよい。いくつかの実施形態において、第3のシステム210に関連するデータストレージは、図1のデータストレージ114に類似していてもよい。いくつかの実施形態において、暗号化されたクエリは、受信され暗号化された状態で記憶されてもよい。
【0071】
動作268では、第3のTEE212は、第3のシステム210によって記憶されていてもよい暗号化されたクエリ結果にアクセスしてもよい。いくつかの実施形態において、第3のシステム210は、第3のTEE212に、暗号化されたクエリ結果が受信され記憶されたことの通知を送信してもよい。例えば、第3のシステム210は、第3のTEE212に、暗号化されたクエリ結果が受信され記憶されたことのフラグを送信してもよい。
【0072】
動作270では、第3のTEE212は、SSKを使用して暗号化されたクエリ結果を復号してもよい。いくつかの実施形態において、復号されたクエリ結果は平文データであってもよい。代替的または追加的に、復号されたクエリ結果は、動作250に記載された第3のシステム210を起源とするクエリに対する応答行を含んでもよい。
【0073】
動作272では、第3のTEE212は、クエリ結果を第3のシステム210に送信してもよい。いくつかの実施形態において、クエリ結果は、データのセットからクエリされてもよい応答行を含んでもよい。例えば、クエリ結果は、動作250に記載されたクエリが生成されたときに所望されたデータを含んでもよい。
【0074】
本開示の範囲から逸脱することなく、動作200に修正、追加、または省略が行われてもよい。例えば、動作250において記載されたクエリは、第3のシステム210ではなく第2のシステム202を起源としてもよい。これらおよび他の実施形態において、動作250に続く動作、具体的には動作252~272は、第2のシステム202、第2のTEE204、第1のシステム206、および第1のTEE208の間で実行されてもよく、第3のシステム210および第3のTEE212は全く使用されなくてもよい。
【0075】
別の例として、いくつかの実施形態において、動作200は、異なる順序でアレンジされてもよく、または実質的に同時に実行されてもよい。例えば、動作250および252は、動作222の後の任意の時点で実行されてもよい。
【0076】
図3Aおよび3Bは、システムが、トラステッド・エグゼキューション環境を使用して、データセットに関して、受信、記憶、およびクエリされる例示的な方法300のフローチャートを示す。方法300は、本開示に記載された少なくとも1つの実施形態に従ってアレンジされてもよい。方法300の1つ以上の動作は、いくつかの実施形態において、図1の第1のシステム110、第2のシステム120、および/または第3のシステム130、図2A図2B、および/または図2Cの第1のシステム206、第2のシステム202、および/または第3のシステム210、および/または図6のシステム600、または別のデバイス、デバイスの組み合わせ、またはシステムなどのデバイスまたはシステムによって実行されてもよい。これらおよび他の実施形態において、方法300は、1つ以上の非一時的なコンピュータ可読媒体に記憶された命令の実行に基づいて実行されてもよい。個別ブロックとして図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されてもよく、より少ないブロックに結合されてもよく、または除去されてもよい。
【0077】
方法300は、第1のシステムの第1のTEEが秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換するブロック305で開始してもよい。例えば、第1のTEEはSSKを第2のTEEおよび第3のTEEに送信してもよい。いくつかの実施形態において、第1のシステムは、SSKを交換する前に、公開鍵暗号方式において、公開鍵を第2のシステムおよび第3のシステムと交換してもよい。第1のシステム、第2のシステム、および第3のシステム間の公開鍵の交換は、対応する第1のTEE、第2のTEE、および第3のTEEと共に、それぞれ、図2A、2B、および2Cに記載された動作220に類似していてもよい。例えば、第1のTEEは秘密鍵を保持してもよく、対応する公開鍵を第2のシステムおよび第3のシステムと共有するように第1のシステムに指示してもよい。いくつかの実施形態において、第1のTEEは、公開鍵暗号方式を使用して、SSKを第2のTEEおよび第3のTEEと交換してもよい。これらおよび他の実施形態において、第1のTEEは、SSKを第1のシステムと共有しなくてもよい。いくつかの実施形態において、第1のシステムは、第1のTEEからのSSKへのアクセスを有さなくてもよく、第1のTEEは、第1のシステムとのブラックボックス関係を維持することを可能にしてもよく、第1のシステムが、第1のTEEにおいて処理されている基礎となる命令またはデータのいかなる詳細も判定することができなくてもよい。
【0078】
ブロック310では、第1のシステムは、第2のシステムから暗号化された第1のデータセットを受信してもよく、暗号化された第1のデータセットは、行に組織化されてもよく、暗号化された第1のデータセットは、SSKを使用して、第2のシステムの第2のTEEによって暗号化されてもよい。いくつかの実施形態において、第1のシステムは、暗号化のために、暗号化された第1のデータセットにアクセスできなくてもよい。例えば、第1のシステムがSSKにアクセスしない場合、暗号化された第1のデータセットは、第1のシステムには解読不能であってもよい。代替的あるいは追加的に、暗号化された第1のデータセットは、SSKへのアクセスを有さない任意のシステムには解読不能であってもよい。いくつかの実施形態において、第1のシステムは、暗号化された第1のデータセットをデータ記憶デバイスに記憶してもよい。例えば、第1のシステムは、基礎となるデータの内容を判定することなく、暗号化された第1のデータセットを記憶してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、プライバシーの層を追加し得るダミー行を含んでもよい。例えば、第1のデータセットは、第1のデータセットに含まれる行数と実質的に等しくあり得るダミー行を含んでもよい。代替的または追加的に、第1のデータセットに含まれるダミー行の数は、第1のデータセットに含まれるデータ行の数より多くても少なくてもよい。
【0079】
いくつかの実施形態において、第1のシステムは、第2のシステムから追加の行を受信してもよく、追加の行は、受信され暗号化された第1のデータセットと実質的に同様のフォーマットであってもよい。いくつかの実施形態において、受信される追加の行は、暗号化された第1のデータセットよりも行が多くても少なくてもよい。
【0080】
ブロック315では、第1のTEEは、第1のシステム上の暗号化された第1のデータセットにアクセスしてもよい。いくつかの実施形態において、第1のシステムは、第1のTEEに、暗号化された第1のデータセットがアクセス可能であることの通知を提供してもよい。
【0081】
ブロック320では、第1のTEEは、SSKを使用して、暗号化された第1のデータセットを復号してもよい。いくつかの実施形態において、復号された第1のデータセットは、第1のTEEによってプライベートに保持されてもよく、第1のシステムは、復号された状態の間、第1のデータセットにアクセスすることを制限されてもよい。
【0082】
ブロック325では、第1のTEEは、復号された第1のデータセットのインデックスセットを生成してもよく、インデックスセットは、第1のデータセットの検索を可能にするように構成されてもよい。
【0083】
ブロック330では、第1のTEEは、SSKを使用して、インデックスセットを暗号化することによって、暗号化されたインデックスセットを生成してもよい。
【0084】
ブロック335では、第1のTEEは、暗号化されたインデックスセットを第1のシステムに送信してもよい。いくつかの実施形態において、第1のシステムは、第1のTEE208から受信した暗号化されたインデックスセットを記憶してもよい。
【0085】
ブロック340では、第1のシステムは、第3のシステムから暗号化されたクエリを受信してもよく、暗号化されたクエリは、SSKを使用して第3のシステムの第3のTEEによって暗号化されてもよい。いくつかの実施形態において、第1のシステムは、暗号化されたクエリを記憶してもよい。いくつかの実施形態において、暗号化されたクエリは、グループ署名を含んでもよく、これは、暗号化されたクエリが、暗号化された第1のデータセットにアクセスすることが許可されることを第1のシステムに示してもよい。いくつかの実施形態において、グループ署名を含まない暗号化されたクエリ、または無効なグループ署名で署名された暗号化されたクエリは、第1のシステムによって記憶されてもよい。代替的または追加的に、第1のシステムは、暗号化されていない受信されたクエリを記憶しなくてもよい。
【0086】
ブロック345では、第1のTEEは、第1のシステム上の暗号化されたクエリおよび暗号化されたインデックスセットにアクセスしてもよい。いくつかの実施形態において、第1のシステムは、第1のTEEに、暗号化されたクエリがアクセス可能であることの通知を提供してもよい。
【0087】
ブロック350において、第1のTEEは、SSKを使用して、暗号化されたクエリおよび暗号化されたインデックスセットを復号してもよい。いくつかの実施形態において、第1のシステムは、第1のTEEによって、復号されたクエリまたは復号されたインデックスセットにアクセスすることを許可されなくてもよい。
【0088】
ブロック355において、第1のTEEは、復号されたインデックスセットを使用して復号されたクエリへのクエリ結果を判定してもよく、クエリ結果は、復号されたクエリに応答し得る第1のデータセットの判定されたインデックスを含んでもよい。クエリ結果の判定は、図2Cに記載される動作262に類似していてもよい。いくつかの実施形態において、クエリ結果の判定は、第1のTEEが復号されたインデックスセットを使用して、復号されたクエリに応答するインデックスを判定することを含んでもよい。これらおよび他の実施形態において、第1のTEEは、クエリ結果に追加のインデックスを含んでもよく、追加のインデックスはダミー行を含んでもよい。いくつかの実施形態において、ダミー行は、第1のデータセットに含まれてもよい。代替的または追加的に、第1のTEEは、追加のインデックスとしてクエリ結果に含められるデータの余分な行を生成してもよい。
【0089】
ブロック360において、第1のTEEは、暗号化されたクエリ結果を第3のシステムの第3のTEEに送信してもよく、暗号化されたクエリ結果は、判定されたインデックスに対応する暗号化された第1のデータセットの行を含んでもよい。
【0090】
本開示の範囲から逸脱することなく、図3Aおよび3Bに修正、追加、または省略が行われてもよい。例えば、実行される機能および/または動作は、開示された実施形態の本質を損なうことなく、異なる順序で実行されてもよいし、より少ない機能および動作に組み合わされるか、追加の機能および動作に拡張されてもよい。例えば、方法300は、本開示において示され記載されたものよりも多くの、または少ない要素を含んでもよい。
【0091】
図4は、第2のシステムがデータを暗号化し第1のシステムに送信する例示的な方法400のフローチャートを示す。方法400は、本開示に記載された少なくとも1つの実施形態に従ってアレンジされてもよい。方法400の1つ以上の動作は、いくつかの実施形態において、図1の第1のシステム110、第2のシステム120、および/または第3のシステム130、図2A図2B、および/または図2Cの第1のシステム206、第2のシステム202、および/または第3のシステム210、および/または図6のシステム600、または別のデバイス、デバイスの組み合わせ、またはシステムなどのデバイスまたはシステムによって実行されてもよい。これらおよび他の実施形態において、方法400は、1つ以上の非一時的なコンピュータ可読媒体に記憶された命令の実行に基づいて実行されてもよい。個別ブロックとして図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されてもよく、より少ないブロックに結合されてもよく、または除去されてもよい。
【0092】
方法400は、第2のシステムが公開鍵暗号化方式で公開鍵を第1のシステムおよび第3のシステムと交換するブロック410で開始してもよい。いくつかの実施形態において、第2のシステムの第2のTEEは、第2のシステムが以前に共有していた公開鍵に関連するそれぞれの秘密鍵を維持してもよい。いくつかの実施形態において、第2のTEEは、第2のシステムに、その秘密鍵に関連する公開鍵を共有するように指示してもよい。
【0093】
ブロック420において、第2のTEEは、秘密対称鍵(SSK)を第1のTEEおよび第3のTEEと交換してもよい。いくつかの実施形態において、TEE間で交換されるSSKは、ブロック410からの公開鍵暗号化方式を使用して実行されてもよい。ブロック420は、図3Aのブロック305と同様または同等であってもよい。
【0094】
ブロック430において、ダミー行は、第1のデータセットに追加されてもよい。いくつかの実施形態において、第2のシステムは、ダミー行を第1のデータセットに追加してもよい。代替的または追加的に、第2のTEEは、ダミー行を第1のデータセットに追加してもよい。いくつかの実施形態において、ダミー行は、第1のデータセットにおけるデータと同じデータ構造を有してもよい。例えば、第1のデータセットにおける行が5つの列に配設された5つの要素を含んだ場合、ダミー行は5つの列に配設された5つの要素を含んでもよい。いくつかの実施形態において、ダミー行のデータ型は、第1のデータセットにおける行のデータ型と同一であってもよい。例えば、第1のデータセットが、それぞれ、数字、文字、文字列を含む行内の各列に対するデータ型で3つの行を含む場合、ダミー行のデータ型は、数字、文字、文字列を含んでもよく、したがって、第1のデータセットのデータ型と一致する。いくつかの実施形態において、ダミー行は、第1のデータセットと同じ分布からサンプリングされたデータを含んでもよいが、ダミー行は、第1のデータセットから独立していてもよい。
【0095】
ブロック440において、第2のTEEは、SSKを使用して、第1のデータセットを暗号化して、暗号化された第1のデータセットを生成してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、SSKへのアクセスを有さないシステムおよび/またはデバイスにはアクセス不能としてもよい。
【0096】
ブロック450では、第2のTEEは、暗号化された第1のデータセットを第1のシステムに送信してもよい。いくつかの実施形態では、第2のTEEは、第2のシステムに、暗号化された第1のデータセットを第1のシステムに送信するように指示してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、ネットワークを介して送信されてもよい。いくつかの実施形態において、ネットワークは、図1のネットワーク102に類似していてもよい。
【0097】
本開示の範囲から逸脱することなく、図4に修正、追加、または省略を行ってもよい。例えば、実行される機能および/または動作は、開示された実施形態の本質を損なうことなく、異なる順序で実行されてもよいし、より少ない機能および動作に組み合わされるか、追加の機能および動作に拡張されてもよい。例えば、方法400は、本開示において示され記載されたものよりも多くの、または少ない要素を含んでもよい。
【0098】
図5は、第3のシステムがクエリを暗号化して第1のシステムに送信し、第1のシステムからクエリ結果を受信して復号するフローチャートを示す。方法500は、本開示に記載された少なくとも1つの実施形態に従ってアレンジされてもよい。方法500の1つ以上の動作は、いくつかの実施形態において、図1の第1のシステム110、第2のシステム120、および/または第3のシステム130、図2A図2B、および/または図2Cの第1のシステム206、第2のシステム202、および/または第3のシステム210、および/または図6のシステム600、または別のデバイス、デバイスの組み合わせ、またはシステムなどのデバイスまたはシステムによって実行されてもよい。これらおよび他の実施形態において、方法500は、1つ以上の非一時的なコンピュータ可読媒体に記憶された命令の実行に基づいて実行されてもよい。個別ブロックとして図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されてもよく、より少ないブロックに結合されてもよく、または除去されてもよい。
【0099】
方法500は、第3のシステムが公開鍵暗号化方式で公開鍵を第1のシステムおよび第3のシステムと交換するブロック510で開始してもよい。いくつかの実施形態において、第3のシステムの第3のTEEは、第3のシステムが以前に共有していた公開鍵に関連するそれぞれの秘密鍵を維持してもよい。いくつかの実施形態において、第3のTEEは、第3のシステムに、その秘密鍵に関連する公開鍵を共有するように指示してもよい。ブロック510は、図4のブロック410と同様または同等であってもよい。
【0100】
ブロック520では、第3のTEEは、秘密対称鍵(SSK)を第1のTEEおよび第3のTEEと交換してもよい。いくつかの実施形態において、TEE間で交換されるSSKは、ブロック510からの公開鍵暗号化方式を使用して実行されてもよい。ブロック520は、図3Aのブロック305と同様または同等であってもよい。
【0101】
ブロック530では、第3のTEE212は、クエリを取得してもよい。いくつかの実施形態において、クエリは、ユーザから取得されてもよい。例えば、クエリは、第3のシステム上のユーザインターフェースを介してユーザから取得されてもよい。代替的または追加的に、クエリは、第3のシステムから取得されてもよい。これらおよび他の実施形態において、クエリは、データセットからデータを要求するように構築されてもよい。いくつかの実施形態において、クエリは、平文データセットからデータを要求する平文クエリであってもよい。
【0102】
ブロック540では、第3のTEEは、SSKを使用して、クエリを暗号化してもよい。これらおよび他の実施形態において、暗号化されたクエリの基礎となるクエリは、SSKへのアクセスを有するものを除き、システムおよびデバイスにはアクセス不能としてもよい。いくつかの実施形態において、第3のTEEは、暗号化される前にクエリとともにダミー行を含んでもよく、暗号化されたクエリが基礎となるクエリとダミー行の両方を含むようにする。追加的または代替的に、ダミー行は、クエリが第3のTEEに送信される前に、第3のシステムによって追加されてもよい。いくつかの実施形態において、第3のTEEは、どの行がクエリに含まれ、どの行がダミー行であるかを示し得る、暗号化されたクエリ内の表示を提供してもよい。
【0103】
ブロック550では、第3のTEEは、暗号化されたクエリを第1のシステムに送信してもよい。いくつかの実施形態において、暗号化された第1のデータセットは、ネットワークを介して第1のシステムに送信されてもよい。いくつかの実施形態において、第1のシステムは、第3のTEE212によるクエリの暗号化がSSKを使用し、第1のシステムがSSKへのアクセスを有しないことにより、第3のTEE212から送信され暗号化されたクエリの基礎となるクエリへのアクセスを有しなくてもよい。
【0104】
ブロック560では、第3のシステムは、暗号化されたクエリ結果を第1のシステムから受信してもよい。いくつかの実施形態において、現時点では、第3のシステムは、暗号化および暗号化されたクエリ結果に追加されたダミー行により、暗号化されたクエリに関するいかなる識別データも判定することができなくてもよい。例えば、第3のシステムは、第1のシステムから送信され暗号化されたクエリ結果が大量のデータであることを判定してもよいが、暗号化されたクエリ結果のうちどれだけが第1のデータセットからのデータであるか、または単にダミー行であるかを判定することができなくてもよい。いくつかの実施形態において、暗号化されたクエリ結果は、ネットワークを介して第1のシステムから受信されてもよい。
【0105】
ブロック565では、第3のシステムは、第1のTEEから受信され暗号化されたクエリを記憶してもよい。いくつかの実施形態において、暗号化されたクエリは、第3のシステムに関連するデータストレージに記憶されてもよい。いくつかの実施形態において、暗号化されたクエリは、受信され暗号化された状態で記憶されてもよい。
【0106】
ブロック570では、第3のTEEは、第3のシステムによって記憶されていてもよい暗号化されたクエリ結果にアクセスしてもよい。いくつかの実施形態において、第3のシステムは、第3のTEEに、暗号化されたクエリ結果が受信され記憶されたことの通知を送信してもよい。例えば、第3のシステムは、第3のTEEに、暗号化されたクエリ結果が受信され記憶されたことのフラグを送信してもよい。
【0107】
ブロック580では、第3のTEEは、SSKを使用して、暗号化されたクエリ結果を復号してもよい。いくつかの実施形態において、復号されたクエリ結果は平文データであってもよい。代替的または追加的に、復号されたクエリ結果は、ブロック530に記載された第3のシステムを起源とするクエリに対する応答行を含んでもよい。
【0108】
ブロック590では、第3のTEEは、クエリ結果を第3のシステムに送信してもよい。いくつかの実施形態において、クエリ結果は、ブロック530に記載された取得されたクエリのように、クエリの結果であると判定されていてもよいデータデータの行を含んでもよい。例えば、クエリ結果は、ブロック530に記載されたクエリが生成されたときに所望されたデータを含んでもよい。
【0109】
本開示の範囲から逸脱することなく、図5に修正、追加、または省略が行われてもよい。例えば、実行される機能および/または動作は、開示された実施形態の本質を損なうことなく、異なる順序で実行されてもよいし、より少ない機能および動作に組み合わされるか、追加の機能および動作に拡張されてもよい。例えば、方法500は、本開示において示され記載されたものよりも多くの、または少ない要素を含んでもよい。例えば、第3のシステムによって取得されたクエリ結果は、ユーザインターフェース(例えば、ディスプレイなど)を介して第3のシステムによってユーザに提示されてもよい。
【0110】
図6は、本開示の少なくとも1つの実施形態による、プライベート検索可能なデータのセットで使用されるようにアレンジされた例示的なコンピューティングデバイス600を示すブロック図である。システム600は、プロセッサ610、メモリ612、通信ユニット616、およびユーザインターフェースユニット620を含んでもよく、これらはすべて通信的に結合されてもよい。いくつかの実施形態において、システム600は、本開示に記載されるシステムまたはデバイスのいずれかの一部であってもよい。
【0111】
例えば、システム600は、図1の第1のシステムの一部であってもよく、第1のシステムに関して上述した動作のうちの1つ以上を実行するように構成されてもよい。別の例として、システム600は、図1の第2のシステムの一部、または第3のシステムの一部であってもよく、上述した機能のうちの1つ以上を実行するように構成されてもよい。
【0112】
一般的に、プロセッサ610は、種々のコンピュータハードウェアまたはソフトウェアモジュールを含む、任意の適切な特殊目的もしくは汎用コンピュータ、計算エンティティ、または処理デバイスを含んでもよく、任意の適用可能なコンピュータ可読記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ610は、マイクロプロセッサ、マイクロコントローラ、グラフィック処理ユニット(GPU)もしくはテンソル処理ユニット(TPU)などの並列プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラム命令を解釈および/または実行する、および/またはデータを処理するように構成されている任意の他のデジタルもしくはアナログ回路を含んでもよい。
【0113】
図6において単一のプロセッサとして示されているが、プロセッサ610は、本明細書に記載された任意の数の動作を個別にまたは集合的に実行するように構成された任意の数のネットワークまたは物理的位置にわたって分散された任意の数のプロセッサを含んでもよいことが理解される。いくつかの実施形態において、プロセッサ610は、メモリ612に記憶されたプログラム命令を解釈および/または実行する、および/またはデータを処理してもよい。いくつかの実施形態において、プロセッサ610は、メモリ612に記憶されたプログラム命令を実行してもよい。
【0114】
例えば、いくつかの実施形態において、プロセッサ610は、プライベート検索可能なデータのセットに関係するメモリ612に記憶されたプログラム命令を実行してもよく、システム600が、命令によって指示されるように、それに関連する動作を実行するか、または実行の指示することができるようにしてもよい。これらおよび他の実施形態において、命令は、図2図5に関して上述した1つ以上の動作を実行するために使用されてもよい。
【0115】
メモリ612は、コンピュータ実行可能な命令もしくはデータ構造を搬送するか、またはそれが記憶されるためのコンピュータ可読記憶媒体、または1つ以上のコンピュータ可読記憶媒体を含んでもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ610のような汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であってもよい。
【0116】
例として、限定するものではないが、そのようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能なプログラマブル読み取り専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)、もしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージ、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、またはコンピュータ実行可能な命令もしくはデータ構造の形態で特定のプログラムコードを搬送または記憶するために使用されてもよく、汎用もしくは特殊目的のコンピュータによってアクセスされ得る任意の他の記憶媒体を含む非一時的なコンピュータ可読記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ可読記憶媒体の範囲内に含まれてもよい。
【0117】
コンピュータ実行可能な命令は、例えば、プロセッサ610に本開示に記載されたような特定の動作または動作のグループを実行させるように構成されている命令およびデータを含んでもよい。これらおよび他の実施形態において、本開示で説明されるような「非一時的」という用語は、In re Nuijten, 500 F.3d 1346のFederal Circuit decision(Fed. Cir. 2007)において特許可能な主題の範囲外であることが分かったタイプの一時的媒体のみを除外するように解釈されるべきである。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれてもよい。
【0118】
通信ユニット616は、ネットワークを介して情報を送信または受信するように構成された任意のコンポーネント、デバイス、システム、またはそれらの組み合わせを含んでもよい。いくつかの実施形態において、通信ユニット616は、他の場所、同じ場所での他のデバイス、または同じシステム内の他のコンポーネントとでさえも通信してもよい。例えば、通信ユニット616は、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス、無線通信デバイス(アンテナなど)、および/またはチップセット(Bluetooth(登録商標)デバイス、802.6デバイス(例えば、メトロポリタンエリアネットワーク(MAN))、WiFi(登録商標)デバイス、WiMaxデバイス、携帯電話通信設備など)などを含んでもよい。通信ユニット616は、本開示に記載されたネットワークおよび/または任意の他のデバイスまたはシステムとでデータが交換されることを許可してもよい。
【0119】
ユーザインターフェースユニット620は、ユーザがシステム600とインターフェースすることを可能にする任意のデバイスを含んでもよい。例えば、ユーザインターフェースユニット620は、デバイスでもとりわけ、マウス、トラックパッド、キーボード、ボタン、カメラ、および/またはタッチスクリーンを含んでもよい。ユーザインターフェースユニット620は、ユーザからの入力を受信し、プロセッサ610に入力を提供してもよい。
【0120】
本開示の範囲から逸脱することなく、システム600に修正、追加、または省略が行われてもよい。例えば、いくつかの実施形態において、システム600は、明示的に示されるいか、または記載されないことがある任意の数の他のコンポーネントを含んでもよい。さらに、特定の実装に応じて、システム600は、図示および説明されたコンポーネントのうちの1つ以上を含まなくてもよい。
【0121】
上記に示したように、本明細書に記載された実施形態は、以下により詳細に論じられるように、種々のコンピュータハードウェアまたはソフトウェアモジュールを含む特殊目的または汎用コンピュータ(例えば、図6のプロセッサ610)の使用を含んでもよい。さらに、上記に示したように、本明細書に記載された実施形態は、コンピュータ実行可能な命令もしくはデータ構造を搬送するか、それが記憶されるためのコンピュータ可読媒体(例えば、図6のメモリ612)を使用して実装されてもよい。
【0122】
いくつかの実施形態において、本明細書に記載された異なるコンポーネント、モジュール、エンジン、およびサービスは、(例えば、別個のスレッドとして)コンピューティングシステムで実行されるオブジェクトまたはプロセスとして実装されてもよい。本開示に記載されたシステムおよび方法のいくつかは、一般的に、(汎用ハードウェアに記憶される、および/またはそれによって実行される)ソフトウェアで実装されるものとして記載されているが、特定のハードウェア実装またはソフトウェアと特定のハードウェア実装との組み合わせも可能であり、かつそのことが企図されている。
【0123】
一般的なプラクティスに従って、図面に示された様々な特徴は、縮尺通りに描かれないことがある。本開示において提示される図示は、いかなる特定の装置(例えば、装置、システムなど)または方法の実際の図であることも意図しておらず、単に、本開示の様々な実施形態を記載するために用いられる理想化された表現である。したがって、様々な特徴の寸法は、明確にするために任意に拡大または縮小されてもよい。追加的に、図面の一部は、明確にするために簡略化されてもよい。したがって、図面は、所与の装置(例えば、デバイス)のコンポーネントの全て、または特定の方法の全ての動作を描かないことがある。
【0124】
本明細書において、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般的に「開放的」な用語として意図されている(例えば、用語「含んでいる」は、「含んでいるが、これに限定されない」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む」は、「含むが、これに限定されない」解釈されるべきであるなど)。
【0125】
さらに、特定の数の導入された請求項の規定が意図されている場合、そのような意図は請求項に明示的に規定され、そのような規定がない場合、そのような意図は存在しない。例えば、理解を助けるために、以下の添付の特許請求の範囲は、請求項の規定を導入するために、「少なくとも1つ」および「1つ以上」の導入語句の使用を含有することがある。しかし、そのような語句の使用は、不定冠詞「a」または「an」による請求項の規定の導入が、そのような導入された請求項の規定を含有する任意の特定の請求項を、ただ1つのそのような規定を含有する実施形態に限定することを示唆するように解釈されるべきではなく、これは、同じ請求項が、導入語句「1つ以上」または「少なくとも1つ」および「a」または「an」(例えば、「a」および/または「an」は、「少なくとも1つ」または「1つ以上」を意味すると解釈されるべきである)などの不定冠詞を含むときでも同様であり、同じことは、請求項の規定を導入するために使用される不定冠詞の使用の場合に当てはまる。
【0126】
追加的に、導入された請求項の規定の特定の数が明示的に規定されている場合であっても、そのような規定は、少なくとも規定された数を意味すると解釈されるべきであると理解する(例えば、「2という規定」の単なる規定では、他の修飾語なしでは、少なくとも2つの規定、または2つ以上の規定を意味する)。さらに、「A、BおよびCのうちの少なくとも1つ」または「A、BおよびCなどのうちの1つ以上」と類似の慣習が使用されている場合、一般的に、そのような構造は、A単独、B単独、C単独、AとB、AとC、BとC、またはAとBとCなどを含むことが意図されている。例えば、「および/または」という用語の使用は、このように解釈されることを意図している。
【0127】
さらに、明細書、特許請求の範囲、または図面のいずれかにあるかを問わず、2つ以上の代替的な用語を提示する任意の言葉または語句は、その用語のうちの1つ、用語のうちのいずれか、またはその用語の両方を企図するように理解されるべきである。例えば、語句「AまたはB」は、「A」もしくは「B」または「AおよびB」の可能性を含むように理解されるべきである。
【0128】
さらに、「第1」、「第2」、「第3」などの用語の使用は、本明細書において要素の特定の順序または数を暗示するために必ずしも使用されない。一般に、「第1」、「第2」、「第3」などの用語は、一般的な識別子として異なる要素を区別するために使用される。「第1」、「第2」、「第3」などの用語が特定の順序を暗示することを示さずに、これらの用語が特定の順序を暗示していると理解すべきではない。さらに、「第1」、「第2」、「第3」などの用語が要素の特定の数を暗示することを示さずに、これらの用語は、要素の特定の数を暗示していると理解すべきではない。例えば、第1のウィジェットは、第1の側面を有し、第2のウィジェットは第2の側面を有していると記載されてもよい。第2のウィジェットに関する「第2の側面」という用語の使用は、第2のウィジェットのそのような側面を第1のウィジェットの「第1の側面」と区別し、第2のウィジェットが2つの側面を有していることを暗示しないようにすることができる。
【0129】
本明細書に規定されたすべての例および条件付き言語は、本発明および発明者が当該技術分野を促進するために寄与した概念を理解する際に読者を助けるための教育的目的とすることが意図されており、このように具体的に規定された例および条件に限定されるものではないと解釈されるべきである。本開示の実施形態が詳細に記載されているが、これに対して本開示の精神および範囲から逸脱することなく、種々の変更、置換、および交換が行われ得ると理解されたい。
【0130】
本開示は以下の発明を含む。
(付記1) 第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することと、
前記第1のシステムによって、前記第2のシステムからの暗号化された第1のデータセットを受信することであって、前記暗号化された第1のデータセットは、行で組織化されており、前記暗号化された第1のデータセットは、前記SSKを使用して前記第2のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の暗号化された第1のデータセットにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化された第1のデータセットを復号することと、
前記第1のシステムによって、前記第3のシステムから暗号化されたクエリを受信することであって、前記暗号化されたクエリは、前記SSKを使用して前記第3のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の前記暗号化されたクエリにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化されたクエリを復号することと、
前記第1のTEEによって、前記復号されたクエリに対するクエリ結果を判定することであって、前記クエリ結果は、前記復号されたクエリに応答する前記第1のデータセットの判定されたインデックスを含む、判定することと、
前記第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信することであって、前記暗号化されたクエリ結果は、前記判定されたインデックスに対応する前記暗号化された第1のデータセットの行を含む、ことと、を含む、方法。
(付記2) 公開鍵暗号を使用して、前記第1のシステムの前記第1のTEE、前記第2のシステムの前記第2のTEE、および前記第3のシステムの前記第3のTEEの間で前記SSKを交換することをさらに含む、付記1に記載の方法。
(付記3) 前記第1のシステムで、前記暗号化された第1のデータセットを記憶することをさらに含む、付記1に記載の方法。
(付記4) 前記第2のシステムから受信される前記暗号化された第1のデータセットは、ダミー行を含む、付記1に記載の方法。
(付記5) 前記ダミー行は、前記第2のシステムによって前記第1のデータセットに追加される、付記4に記載の方法。
(付記6) 前記ダミー行は、前記第2のTEEによって前記暗号化された第1のデータセットに追加される、付記4に記載の方法。
(付記7) 前記第1のシステムの前記第1のTEEは、前記判定されたインデックスに対する追加のインデックスを含み、前記追加のインデックスは、前記第3のシステムに送信される前記暗号化されたクエリ結果に対するダミー行として作用する、付記1に記載の方法。
(付記8) 前記受信され暗号化されたクエリは、前記受信され暗号化されたクエリの発信システムに関して、前記第1のシステムには匿名である、付記1に記載の方法。
(付記9) 前記受信され匿名の暗号化されたクエリは、グループ署名で署名される、付記8に記載の方法。
(付記10) 前記第1のTEEによって、前記復号された第1のデータセットのインデックスセットを生成することであって、前記インデックスセットは、前記第1のデータセットの検索を可能にするように構成されている、ことと、
前記第1のTEEによって、前記SSKを使用して、前記インデックスセットを暗号化することによって暗号化されたインデックスセットを生成することと、
前記第1のTEEによって、前記暗号化されたインデックスセットを前記第1のシステムに送信することと、をさらに含む、付記1に記載の方法。
(付記11) 動作を実行するか、前記動作の実行を制御するプロセッサデバイスによって実行可能であるコンピュータ実行可能命令が記憶された非一時的なコンピュータ可読記憶媒体であって、前記動作は、
第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することと、
前記第1のシステムによって、前記第2のシステムからの暗号化された第1のデータセットを受信することであって、前記暗号化された第1のデータセットは、行で組織化されており、前記暗号化された第1のデータセットは、前記SSKを使用して前記第2のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の暗号化された第1のデータセットにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化された第1のデータセットを復号することと、
前記第1のシステムによって、前記第3のシステムから暗号化されたクエリを受信することであって、前記暗号化されたクエリは、前記SSKを使用して前記第3のTEEによって暗号化されている、ことと、
前記第1のTEEによって、前記第1のシステム上の前記暗号化されたクエリにアクセスすることと、
前記第1のTEEによって、前記SSKを使用して、前記暗号化されたクエリを復号することと、
前記第1のTEEによって、前記暗号化されたクエリに対するクエリ結果を判定することであって、前記クエリ結果は、前記復号されたクエリに応答する前記第1のデータセットの判定されたインデックスを含む、判定することと、
前記第1のTEEによって、暗号化されたクエリ結果を第3のシステムに送信することであって、前記暗号化されたクエリ結果は、前記判定されたインデックスに対応する前記暗号化された第1のデータセットの行を含む、ことと、を含む、非一時的なコンピュータ可読記憶媒体。
(付記12) 公開鍵暗号を使用して、前記第1のシステムの前記第1のTEE、前記第2のシステムの前記第2のTEE、および前記第3のシステムの前記第3のTEEの間で前記SSKを交換することをさらに含む、付記11に記載の非一時的なコンピュータ可読記憶媒体。
(付記13) 前記第1のシステムで、前記暗号化された第1のデータセットを記憶することをさらに含む、付記11に記載の非一時的なコンピュータ可読記憶媒体。
(付記14) 前記第2のシステムから受信される前記暗号化された第1のデータセットは、ダミー行を含む、付記11に記載の非一時的なコンピュータ可読記憶媒体。
(付記15) 前記ダミー行は、前記第2のシステムによって前記第1のデータセットに追加される、付記14に記載の非一時的なコンピュータ可読記憶媒体。
(付記16) 前記ダミー行は、前記第2のTEEによって前記暗号化された第1のデータセットに追加される、付記14に記載の非一時的なコンピュータ可読記憶媒体。
(付記17) 前記第1のシステムの前記第1のTEEは、前記判定されたインデックスに対する追加のインデックスを含み、前記追加のインデックスは、前記第3のシステムに送信される前記暗号化されたクエリ結果に対するダミー行として作用する、付記11に記載の非一時的なコンピュータ可読記憶媒体。
(付記18) 前記受信され暗号化されたクエリは、前記受信され暗号化されたクエリの発信システムに関して、前記第1のシステムには匿名である、付記11に記載の非一時的なコンピュータ可読記憶媒体。
(付記19) 前記受信され匿名の暗号化されたクエリは、グループ署名で署名される、付記18に記載の非一時的なコンピュータ可読記憶媒体。
(付記20) 第1のシステムの第1のトラステッド・エグゼキューション環境(TEE)によって、秘密対称鍵(SSK)を第2のシステムの第2のTEEおよび第3のシステムの第3のTEEと交換することと、
前記第1のTEEによって、前記復号された第1のデータセットのインデックスセットを生成することであって、前記インデックスセットは、前記第1のデータセットの検索を可能にするように構成されている、ことと、
前記第1のTEEによって、前記SSKを使用して、前記インデックスセットを暗号化することによって暗号化されたインデックスセットを生成することと、
前記第1のTEEによって、前記暗号化されたインデックスセットを前記第1のシステムに送信することと、をさらに含む、付記11に記載の非一時的なコンピュータ可読記憶媒体。
【符号の説明】
【0131】
110 第1のシステム
112 第1のTEE
114 データベースストレージ
102 ネットワーク
120 第2のシステム
122 第2のTEE
130 第3のシステム
132 第3のTEE
図1
図2A
図2B
図2C
図3A
図3B
図4
図5
図6