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

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

▶ トリプルブラインド,インク.の特許一覧

特表2023-506238データおよびアルゴリズムを暗号化するためのシステムおよび方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-02-15
(54)【発明の名称】データおよびアルゴリズムを暗号化するためのシステムおよび方法
(51)【国際特許分類】
   G09C 1/00 20060101AFI20230208BHJP
   G06F 21/60 20130101ALI20230208BHJP
【FI】
G09C1/00 650Z
G06F21/60
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022536507
(86)(22)【出願日】2020-12-10
(85)【翻訳文提出日】2022-06-10
(86)【国際出願番号】 US2020064387
(87)【国際公開番号】W WO2021119365
(87)【国際公開日】2021-06-17
(31)【優先権主張番号】62/948,105
(32)【優先日】2019-12-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/828,085
(32)【優先日】2020-03-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】522232628
【氏名又は名称】トリプルブラインド,インク.
(74)【代理人】
【識別番号】110000659
【氏名又は名称】弁理士法人広江アソシエイツ特許事務所
(72)【発明者】
【氏名】ストーム,グレッグ
(72)【発明者】
【氏名】ダス,リッディマン
(72)【発明者】
【氏名】ギルカレイ,ババック,プーレブラヒム
(57)【要約】
データおよびデータに対して動作するアルゴリズムの両方に対するプライバシーを実現するためのシステム、方法、およびコンピュータ可読媒体。システムは、アルゴリズムプロバイダからアルゴリズムを受信することと、データプロバイダからデータを受信することと、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割し、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信し、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信することと、アルゴリズムプロバイダから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、データプロバイダから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を伴うことができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
システムであって、
少なくとも1つのプロセッサと、
命令を記憶するコンピュータ可読記憶デバイスと、を含み、前記命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、
アルゴリズムプロバイダからアルゴリズムを受信することと、
データプロバイダからデータを受信することと、
第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータセットの別個かつ独立した処理のために、前記アルゴリズムを、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットに分割することであって、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットが、組み合わされたときに、前記アルゴリズムを構成する、分割することと、
前記データを第1のデータサブセットおよび第2のデータサブセットに分割することと、
処理のために、前記第1のアルゴリズムサブセットおよび前記第1のデータサブセットを、第1のエンティティに送信することと、
処理のために、前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットを、第2のエンティティに送信することであって、前記第1のエンティティが、前記第1のアルゴリズムサブセットを、前記第1のデータサブセットで処理し、前記第2のエンティティが、前記第2のアルゴリズムサブセットを、前記第2のデータで処理し、前記第1のエンティティおよび前記第2のエンティティが、前記第1のアルゴリズムサブセットを、前記第1のデータサブセットで処理し、前記第2のアルゴリズムサブセットを、前記第2のデータで処理しながら、中間部分結果を交換する、送信することと、
前記第1のエンティティから、前記第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、前記第2のエンティティから、前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットに基づく第2の部分結果を受信することと、
前記第1の部分結果および前記第2の部分結果に基づく組み合わされた結果を判定することと、を行わせる、システム。
【請求項2】
前記コンピュータ可読記憶デバイスが、追加の命令を記憶し、前記追加の命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、
前記アルゴリズムをブール論理ゲートセットに変換することであって、前記第1のアルゴリズムサブセットが、前記ブール論理ゲートセットの第1のブール論理ゲートサブセットに対応し、前記第2のアルゴリズムサブセットが、前記ブール論理ゲートセットの第2のブール論理ゲートサブセットに対応する、変換することを行わせる、請求項1に記載のシステム。
【請求項3】
前記第1のブール論理ゲートサブセットおよび前記第2のブール論理ゲートサブセットが、ANDゲートおよびXORゲートを含む、請求項2に記載のシステム。
【請求項4】
前記アルゴリズムプロバイダが、少なくとも1つの第1の計算デバイスを含み、前記データプロバイダが、少なくとも1つの第2の計算デバイスを含む、請求項1に記載のシステム。
【請求項5】
前記コンピュータ可読記憶デバイスが、追加の命令を記憶し、前記追加の命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、
前記組み合わされた結果を前記データプロバイダに送信し、前記組み合わされた結果の表現を表示することを行わせる、請求項1に記載のシステム。
【請求項6】
前記コンピュータ可読記憶デバイスが、追加の命令を記憶し、前記追加の命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、
前記組み合わされた結果を前記アルゴリズムプロバイダに送信し、前記組み合わされた結果の表現を表示することを行わせる、請求項1に記載のシステム。
【請求項7】
前記アルゴリズムが、前記アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択される、請求項1に記載のシステム。
【請求項8】
前記アルゴリズムが、ブール論理セット、ニューラルネットワーク、または代数的回路のうちの1つによって表される、請求項1に記載のシステム。
【請求項9】
前記コンピュータ可読記憶デバイスが、追加の命令を記憶し、前記追加の命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、
前記アルゴリズムを暗号化し、前記データを暗号化することを行わせる、請求項1に記載のシステム。
【請求項10】
方法であって、
少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムを受信することと、
前記少なくとも1つのプロセッサによって、データプロバイダからデータを受信することと、
前記少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータセットの別個かつ独立した処理のために、前記アルゴリズムを、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットに分割することであって、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットが、組み合わされたときに、前記アルゴリズムを構成する、分割することと、
前記少なくとも1つのプロセッサによって、前記データを第1のデータサブセットおよび第2のデータサブセットに分割することと、
処理のために、前記第1のアルゴリズムサブセットおよび前記第1のデータサブセットを、第1のエンティティに送信することと、
処理のために、前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットを、第2のエンティティに送信することであって、前記アルゴリズムプロバイダが、前記第1のアルゴリズムサブセットおよび前記第1のデータサブセットを処理し、前記データプロバイダが、前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットを処理し、前記第1のエンティティおよび前記第2のエンティティが、前記第1のアルゴリズムサブセットを前記第1のデータサブセットで処理し、前記第2のアルゴリズムサブセットを前記第2のデータで処理しながら、複数の中間部分結果を交換する、送信することと、
前記少なくとも1つのプロセッサによって、前記第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットに基づく第2の部分結果を受信することと、
前記少なくとも1つのプロセッサによって、前記第1の部分結果および前記第2の部分結果に基づく組み合わされた結果を判定することと、を含む、方法。
【請求項11】
前記アルゴリズムを、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割する前記のことが、
前記アルゴリズムをブール論理ゲートセットに変換することであって、前記第1のアルゴリズムサブセットが、前記ブール論理ゲートセットの第1のブール論理ゲートサブセットによって表され、前記第2のアルゴリズムサブセットが、第2のブール論理ゲートセットによって表される、変換することをさらに含む、請求項10に記載の方法。
【請求項12】
前記第1のブール論理ゲートサブセットおよび前記第2のブール論理ゲートサブセットが、ANDゲートおよびXORゲートを含む、請求項11に記載の方法。
【請求項13】
前記アルゴリズムプロバイダが、少なくとも1つの第1の計算デバイスを含み、前記データプロバイダが、少なくとも1つの第2の計算デバイスを含む、請求項10に記載の方法。
【請求項14】
前記組み合わされた結果を前記データプロバイダに送信し、前記組み合わされた結果の表現を表示することをさらに含む、請求項10に記載の方法。
【請求項15】
前記組み合わされた結果を前記アルゴリズムプロバイダに送信し、前記組み合わされた結果の表現を表示することをさらに含む、請求項10に記載の方法。
【請求項16】
前記アルゴリズムが、前記アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択される、請求項10に記載の方法。
【請求項17】
前記アルゴリズムが、ブール論理セット、ニューラルネットワーク、または代数的回路のうちの1つによって表される、請求項10に記載の方法。
【請求項18】
前記アルゴリズムを暗号化し、前記データを暗号化することをさらに含む、請求項10に記載の方法。
【請求項19】
命令を内部に記憶した非一時的なコンピュータ可読記憶媒体であって、前記命令が、1つ以上のプロセッサによって実行されたときに、前記1つ以上のプロセッサに、
アルゴリズムプロバイダからアルゴリズムを受信することと、
データプロバイダからデータを受信することと、
第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータの別個かつ独立した処理のために、前記アルゴリズムを、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットに分割することであって、前記第1のアルゴリズムサブセットおよび前記第2のアルゴリズムサブセットが、組み合わされたときに、前記アルゴリズムを構成する、分割することと、
前記データを、第1のデータサブセットおよび第2のデータサブセットに分割することと、
前記第1のアルゴリズムサブセットおよび前記第1のデータサブセットを第1のエンティティに送信することと、
前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットを第2のエンティティに送信することであって、前記第1のエンティティおよび前記第2のエンティティが、前記第1のアルゴリズムサブセットを前記第1のデータサブセットで処理し、前記第2のアルゴリズムサブセットを前記第2のデータで処理しながら、中間部分結果を交換する、送信することと、
前記第1のエンティティから前記第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、前記第2のエンティティから前記第2のアルゴリズムサブセットおよび前記第2のデータサブセットに基づく第2の部分結果を受信することと、
前記第1の部分結果および前記第2の部分結果に基づく組み合わされた結果を判定することと、を行わせる、非一時的なコンピュータ可読記憶媒体。
【請求項20】
命令を記憶し、前記命令が、前記1つ以上のプロセッサによって実行されたときに、前記1つ以上のプロセッサに、
前記アルゴリズムをブール論理ゲートセットに変換することであって、前記第1のアルゴリズムサブセットが、前記ブール論理ゲートセットの第1のブール論理ゲートサブセットに対応し、前記第2のアルゴリズムサブセットが、前記ブール論理ゲートセットの第2のブール論理ゲートサブセットに対応する、変換することを行わせる、命令を記憶する、請求項19に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年3月24日に出願された米国仮特許出願第16/828,085号の優先権を主張し、これは、「Systems and Methods for Encryption」と題する、2019年12月13日に出願された米国仮特許出願第62/948,105号の優先権を主張し、その開示は、参照により本明細書に組み込まれる。
【0002】
関連出願
本開示は、2020年3月24日に各々出願された出願第16/828,216号(整理番号213-0101)、出願第16/828,354号(整理番号213-0102)および出願第16/828,420号(213-0103)に関するものであり、それらの各々は参照により本明細書に組み込まれる。
【0003】
本技術は、データ、アルゴリズム、ニューラルネットワーク、および他の情報を暗号化し、スプリットまたは暗号化されたデータに対する複雑な動作を正確かつより効率的に実行することに関する。
【背景技術】
【0004】
人、エンティティ、または会社が、別の人、エンティティ、または会社と対話し得る状況が多数存在する。これらの状況では、ジョブ、プロジェクト、またはタスクに対して作業するために、第1のエンティティが第2のエンティティと情報を交換し、第2のエンティティが第1のエンティティと情報を交換する必要があり得る。しかしながら、第1のエンティティは、その情報が専有情報を含み得るため、第2のエンティティがその情報を閲覧することができることを制限することを欲し得る。さらに、第2のエンティティは、その情報が専有情報を含み得るため、第1のエンティティがその情報を閲覧することができることを制限することを欲し得る。
【0005】
上に列挙した、および本開示の他の利点ならびに特徴を得ることができる様態を記載するために、簡潔に上述した原理のより具体的な説明を、別添の図面に例示されたその特有の実施形態を参照することによって行う。これらの図面は、本開示の例示的な実施形態のみを描写し、したがって、その範囲を限定するものと考えられるべきではないと理解し、本明細書の原理は、添付の図面の使用を通じて、さらなる具体性かつ詳細によって記載および説明される。
【図面の簡単な説明】
【0006】
図1】様々な実施形態による、例示的な計算環境を示す。
図2】様々な実施形態による、データプロバイダおよびアルゴリズムプロバイダを示す。
図3】様々な実施形態による、データを分割するデータプロバイダ、およびアルゴリズムを分割するアルゴリズムプロバイダを示す。
図4A】様々な実施形態による、アルゴリズムを共同で計算するデータプロバイダおよびアルゴリズムプロバイダを示す。
図4B】データプロバイダとアルゴリズムプロバイダとの間の情報の通信を示す。
図4C】アルゴリズムプロバイダ、データプロバイダ、およびアグリゲータ間のデータの通信を示す。
図4D】安全なマルチパーティ算出アプローチの適用を含む、アルゴリズムプロバイダ、データプロバイダ、およびアグリゲータ間のデータの通信を示す。
図5】様々な実施形態による、複数のデータプロバイダおよび複数のアルゴリズムプロバイダを示す。
図6】様々な実施形態による、アルゴリズムに関連付けられた例示的な回路を示す。
図7】様々な実施形態による、隠れ回路に変換される例示的なアルゴリズムを示す。
図8】様々な実施形態による、第1のスプリットおよび第2のスプリットに分割された隠れ回路を示す。
図9A】データをアルゴリズムに提供するデータプロバイダからアルゴリズムを隠すもしくは暗号化するか、またはデータに対して動作するアルゴリズムを提供するアルゴリズムプロバイダからデータを隠すもしくは暗号化するための例示的な方法を示す。
図9B】別の例示的な方法を示す。
図9C】ビーバーセットの使用に関するさらに別の例示的な方法を示す。
図9D】別の例示的な方法を示す。
図10】例示的なニューラルネットワークを示す。
図11】ニューラルネットワークで使用される様々な層の別の例を示す。
図12】ニューラルネットワークにおけるフィルタの使用に関連付けられた例示的な方法を示す。
図13】様々な実施形態による例示的な計算デバイスを示す。
【発明を実施するための形態】
【0007】
例示的な実施形態の説明
本開示の様々な実施形態が、以下で詳細に考察される。具体的な実装態様が考察されるが、これは例示の目的のために行われることが理解されるべきである。当業者は、他の構成要素および構成が、本開示の趣旨および範囲から逸脱することなく使用され得ることを認識するであろう。
【0008】
概説
続く説明において、本開示の追加の特徴および利点を述べ、一部は、説明から明らかであるか、または本明細書に開示される原理の実践により知得できる。本開示の特徴および利点は、別添の特許請求の範囲で特に指摘される器具および組み合わせによって実現および取得することができる。本開示のこれらおよび他の特徴は、以下の説明および別添の特許請求の範囲からより完全に明らかになるか、または本明細書で述べる原理の実践によって知得することができる。
【0009】
本明細書で開示されているのは、データ、アルゴリズム、ニューラルネットワーク、および他の情報を暗号化し、スプリットまたは暗号化されたデータに対して複雑な動作を正確かつより効率的に実行するためのシステム、方法、およびコンピュータ可読媒体である。少なくとも1つの例によれば、データおよびデータに対して動作するアルゴリズムの両方に対するプライバシーを達成するためのシステムが提供される。システムは、メモリと、メモリによって記憶された命令を実行するための少なくとも1つのプロセッサとを含む少なくとも1つの計算デバイスとすることができる。少なくとも1つの計算デバイスは、アルゴリズムプロバイダからアルゴリズムを受信することができ、データプロバイダからデータを受信することができる。アルゴリズムは、アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択され得、データは、データプロバイダによってデータベースから取り出され得る。データベースは、ディスク、RAM、キャッシュなどの任意のタイプのメモリからアクセスすることができる。さらに、計算デバイスは、アルゴリズムを暗号化し、データを暗号化し得る。一例では、計算デバイスは、アルゴリズムプロバイダに関連付けられた計算デバイスであってもよい。別の例では、計算デバイスは、データプロバイダに関連付けられた計算デバイスであってもよい。さらなる例では、計算デバイスは、サードパーティの計算デバイスであってもよく、アルゴリズムプロバイダまたはデータプロバイダに関連付けられていなくてもよい。
【0010】
以下の開示物は、データに対して動作するであろうアルゴリズムを、どのようにして少なくとも2つのサブ部分にスプリットまたは分割することができるかを記載する。データはまた、サブ部分に分割することができる。アルゴリズムプロバイダとデータプロバイダとの間のプライバシーを維持するためのデータサブ部分に対するアルゴリズムサブ部分の動作。アルゴリズムを分割するプロセスおよびその後の処理は、いくつかの異なる方法で達成することができる。例えば、アルゴリズムは、ブール論理ゲートセットに変換することができるか、またはニューラルネットワークもしくは代数的もしくは非ブール回路として表すことができる。これらの様々なアプローチは、各々、新しい方法でアルゴリズムを介してデータを処理する、より一般的なアイデアに適用される。
【0011】
少なくとも1つの計算デバイスは、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することができ、データを第1のデータサブセットおよび第2のデータサブセットに分割することができる。少なくとも1つの計算デバイスは、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信することができ、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信することができる。次に、少なくとも1つの計算デバイスは、アルゴリズムプロバイダから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信することができ、データプロバイダから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することができる。少なくとも1つの計算デバイスは、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することができる。
【0012】
さらなる例では、アルゴリズムに関連付けられたブール論理ゲートセットがあり得る。このアルゴリズムは、ブール論理ゲートセットに変換することができる。計算デバイスは、第1のアルゴリズムサブセットをブール論理ゲートセットからの第1のブール論理ゲートサブセットに変換し得、第2のアルゴリズムサブセットをブール論理ゲートセットからの第2のブール論理ゲートサブセットに変換し得る。これは、非ニューラルネットワークに使用されるアプローチである。元のブール論理ゲートサブセットは、ANDゲートおよびXORゲートを含むことができ、サブセットは、単に割り当てられた符号化のシェアである。例えば、システムが1、1でANDゲートを符号化する場合、第1のサブセットは、0、1とすることができ、第2のサブセットは、1、0とすることができる。本明細書で考察されるように、アルゴリズムプロバイダは、少なくとも1つの第1の計算デバイスを含み得、データプロバイダは、少なくとも1つの第2の計算デバイスを含み得る。一例では、組み合わされた結果は、データプロバイダに送信され得、データプロバイダは、組み合わされた結果の表現を表示し得る。別の例では、組み合わされた結果は、アルゴリズムプロバイダに送信され得、アルゴリズムプロバイダは、組み合わされた結果の表現を表示し得る。別の例では、組み合わされた結果は、別の計算デバイスに送信され得、他の計算デバイスは、組み合わされた結果の表現を表示し得る。
【0013】
ニューラルネットワークの場合、本開示は、重みに従ってアルゴリズムをスプリットする概念を導入し、ブール論理ゲートセットは、ネットワークの構造によって置き換えられる。基本的に、ニューラルネットワークは(非ブール)回路そのものとして扱われる。別の態様では、この概念は、(単なるアルゴリズムのブール論理ゲートセットの分解ではなく)アルゴリズムの代数的分解に一般化することができる。例えば、ニューラルネットワークの場合に、システムは、ノードがゲートを表し、それらの間の接続がワイヤを表す、ニューラルネットワークのノードのアーキテクチャをそれ自身の回路として扱うことができる。本開示はまた、純粋に代数的構造におけるアルゴリズムを表すものを網羅する。したがって、アルゴリズムは、これらの3つの方法(回路、ニューラルネットワーク、代数的構造)で表すことができる。アルゴリズムは、同様に他の構造として変換または表現され得ることがさらに企図される。本開示は、アルゴリズムを表すリストされた3つの方法に限定されない。
【0014】
別の例では、データおよびデータに対して動作するアルゴリズムの両方に対してプライバシーを達成するための方法が提供される。方法は、少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムを受信することと、少なくとも1つのプロセッサによって、データプロバイダからデータを受信することと、少なくとも1つのプロセッサによって、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することと、少なくとも1つのプロセッサによって、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信することと、少なくとも1つのプロセッサによって、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信することと、少なくとも1つのプロセッサによって、アルゴリズムプロバイダから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、データプロバイダから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、少なくとも1つのプロセッサによって、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を含むことができる。
【0015】
例示的なシステムは、1つ以上のプロセッサと、コンピュータ命令を記憶するコンピュータ可読記憶デバイスと、を含むことができ、そのコンピュータ命令が、少なくとも1つのプロセッサによって実行されると、プロセッサに、アルゴリズムプロバイダからアルゴリズムを受信することと、データプロバイダからデータを受信することと、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することと、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信することと、を含む動作を実行させる。動作はさらに、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信することと、アルゴリズムプロバイダから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信することと、データプロバイダから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を含む動作を実行させる。
【0016】
別の例では、データおよびデータに対して動作するアルゴリズムの両方に対するプライバシーを達成するための非一時的なコンピュータ可読記憶媒体が提供される。非一時的なコンピュータ可読記憶媒体は、命令を記憶することができ、命令が、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサに、先に記載された方法および/または動作を実行させる。例えば、命令は、1つ以上のプロセッサに、アルゴリズムプロバイダからアルゴリズムを受信することと、データプロバイダからデータを受信することと、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割し、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信することと、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信することと、アルゴリズムプロバイダから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、データプロバイダから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を行わせることができる。
【0017】
別の例示的な方法は、少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムを受信することと、少なくとも1つのプロセッサによって、データプロバイダからデータを受信することと、少なくとも1つのプロセッサによって、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することと、少なくとも1つのプロセッサによって、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、を含む。方法は、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットを処理することと、少なくとも1つのプロセッサによって、第2のアルゴリズムサブセットおよび第2のデータサブセットを処理することと、を含むことができる。方法はまた、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、少なくとも1つのプロセッサによって、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を含むことができる。
【0018】
本開示の別の態様は、アルゴリズムサブセットによってデータサブセットを処理するときに追加の効率を提供することに関する。アルゴリズムは、2つの部分にスプリットされ、次いで、トランザクションにおいて2つのパーティ間に配分される。制御ビットは、異なるデータサブセット、および実際の最終評価が回路の何であるかを最終的に解読するアルゴリズムサブセットに対する算出を実行する2つの異なるスポットまたは場所間で使用されるだろう。
【0019】
本明細書に開示される1つのアプローチは、ビーバーセットを使用して、通信ホップを前処理ステップに移動させることによって、より少ない通信ホップでの乗算を可能にする。ビーバーセットは、算出時(例えば、アルゴリズムが暗号化および/または配分された後)に用いられ、計算が発生している異なるデバイスまたは場所間の交換の量を低減する。このアプローチにより、交換が必要になる前に、より多くの算出をより高速に実行することが可能になる。このアプローチは、ニューラルネットワークの様々な層におけるフィルタのコンテキストで記載される。
【0020】
例示的な方法は、1つ以上の計算デバイスを介して、ニューラルネットワークの第1の層における複数のフィルタを第1のフィルタセットおよび第2のフィルタセットに分割することと、1つ以上の計算デバイスを介して、第1のフィルタセットの各々を、ニューラルネットワークの入力に適用して、第1の出力セットを生成することと、第2のフィルタセットに関連付けられた第2の出力セットを取得することと、を含み、第2の出力セットは、第2のフィルタセットの各々のニューラルネットワークの入力への適用に基づく。複数のフィルタからの同じフィルタに対応する第1のフィルタセットおよび第2のフィルタセットにおける各フィルタセットに対して、方法は、1つ以上の計算デバイスを介して、ニューラルネットワークの第2の層において、フィルタセットにおける第1のフィルタに関連付けられた第1の出力セットのそれぞれの1つと、フィルタセットにおける第2のフィルタに関連付けられた第2の出力セットのそれぞれの1つとをアグリゲートして、第1のフィルタセットおよび第2のフィルタセットに関連付けられたアグリゲートされた出力セットを生成することを含む。
【0021】
本方法は、1つ以上の計算デバイスを介して、ニューラルネットワークの各残りの層において活性化された特定のニューロンのそれぞれの重みをスプリットして、第1の重みセットおよび第2の重みセットを生成することをさらに含み、特定のニューロンは、アグリゲートされた出力セットに適用された1つ以上の活性化関数に基づいて活性化される。各残りの層からの各特定のニューロンにおいて、本方法は、1つ以上の計算デバイスを介して、各特定のニューロンに関連付けられたそれぞれのフィルタおよび第1の重みセットからの第1の対応する重みを適用して、第1のニューロン出力セットを生成することと、特定のニューロンに関連付けられた第2のニューロン出力セットを取得することであって、第2のニューロン出力セットは、各特定のニューロンに関連付けられたそれぞれのフィルタの、第2の重みセットからの第2の対応する重みへの適用に基づく、取得することと、各特定のニューロンに対して、特定のニューロンに関連付けられた第1のニューロン出力セットのうちの1つと、特定のニューロンに関連付けられた第2のニューロン出力セットのうちの1つをアグリゲートして、特定のニューロンに関連付けられアグリゲートされたニューロン出力を生成することと、アグリゲートされたニューロン出力のうちの1つ以上に基づくニューラルネットワークの出力を生成することと、を含む。上記方法は、任意の順序で識別されたステップのうちの任意の1つ以上を含むことができる。
【0022】
一例では、ビーバーセット(または同様の数学的構造)の使用は、アルゴリズムおよびデータをスプリットし、本明細書に開示される動作を実行するために必要とされる算出の量を低減するために使用することができる。ビーバーセットは、通常、乗算を安全に実行するために過去に使用されている。本開示は、より少ない通信ホップで乗算を達成するために、新しい方法でビーバーセットを適用することによって、最新技術を拡張する。一般に、ビーバーセットは乗算を計算するために使用される。本開示は、ビーバーセットを除算および指数関数の計算に適用するために、ビーバーセットの使用を拡大する。例示的な方法は、各パーティまたはエンティティが、アルゴリズムサブセットを受信することと、ファーストパーティによって、第1のアルゴリズムの性質(または他の要因)に基づく第1のビーバーセットの2つのシェアを生成することと、セカンドパーティによって、第2のアルゴリズムサブセットの性質(または他の要因)に基づく第2のビーバーセットの2つのシェアを生成することと、次いで、第1のデータサブセットをファーストパーティに提供し、第2のデータサブセットをセカンドパーティに提供することと、第1のビーバーセットの2つのシェアに基づいて第1のアルゴリズムサブセットを第1のデータサブセットに対して実行して、第1の出力サブセットを取得することと、第2のビーバーセットの2つのシェアに基づいて第2のアルゴリズムサブセットを第2のデータサブセットに対して実行して、第2の出力サブセットを取得することと、を含む。次いで、システムは、最終結果として第1の出力サブセットおよび第2の出力サブセットを組み合わせる。
【0023】
この簡単な導入は、特許請求の範囲の主題の主要または本質的な特徴を識別することを意図しておらず、特許請求の範囲の主題の範囲を判定するために単独で使用されることを意図していない。主題は、本特許の明細書全体の適切な部分、いずれかまたはすべての図面、および各請求項を参照することによって理解されるべきである。
【0024】
上記は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照すると、より明らかになるであろう。
<発明を実施するための形態>
【0025】
開示されている技術は、データ、アルゴリズム、ニューラルネットワーク、および他の情報を暗号化し、スプリットまたは暗号化されたデータに対して複雑な動作を正確かつより効率的に実行するためのシステム、方法、およびコンピュータ可読媒体を伴う。本技術は、以下の開示において以下のように記載される。考察は、この技術を適用できる一般的なシナリオの紹介から始まり、次にマルチパーティ計算の概説を行う。
【0026】
本明細書に開示されている概念を適用できる1つの例示的なシナリオは、医療コンテキストにおけるものである。個人の医療データは、HIPAA(Health Insurance Portability and Accountability Act)などの法律によって保護されている。場合によっては、畳み込みニューラルネットワーク(CNN)が、画像内のパターンを識別するための価値がある。患者は、心電図(EKG)を評価してもらう必要があり得る。通常、CNN(アルゴリズム)は、患者の識別につながる可能性のあるEKGデータを「見る」。別の態様では、専有CNNの特徴はまた、データを提供する者から取得され得る。企業は、患者データを識別から保護することを欲し得るだけでなく、専有アルゴリズムを開示することから保護することを欲するであろう。本明細書に開示される概念は、アルゴリズムが、データおよびアルゴリズムの両方を識別から保護する方法でデータに対して動作することを可能にする。本開示は、以下でより完全に医療、クレジットカード、保険などの様々なシナリオに対処するだろう。
【0027】
次に、図1に示されるように、例示的なマルチパーティ計算環境の説明、ならびに図2図9Bに示されるように、データおよびデータに対して動作するアルゴリズムの両方に対するプライバシーを達成するための例示的な方法および技術の説明を提供する。図9C図12は、本明細書に開示されている実施形態のさらなる例示を提供し、効率的な方式でアルゴリズムおよびデータの両方に対するプライバシーを達成することに関する様々な方法の畳み込みニューラルネットワークおよびフロー図を含む。考察は、図13に示されるように、マルチパーティ計算動作を実行するのに好適な例示的なハードウェア構成要素を含む例示的な計算デバイスアーキテクチャの説明で終わる。一態様では、標準的または暗号化されていないアルゴリズムも、同様に安全なマルチパーティ計算で処理され得る。これは、本明細書に記載されるように、準同型暗号化、安全な要素(ハードウェアベースまたはそれ以外)ベースのアプローチの使用に加えるものである。システムは、暗号化された標準的なアルゴリズムを使用することにより、(安全なマルチパーティ計算を使用せずに)準同型暗号化されたデータ、または安全なエンクレーブを使用してさえも対話することができる。ここで、本開示は、マルチパーティ計算の導入概説に移る。
【0028】
図1に示されるように、本明細書におけるアプローチは、データ108をアルゴリズム106に提供するデータプロバイダ102からアルゴリズム106を隠すまたは暗号化し、データ108に対して動作するアルゴリズム106を提供するアルゴリズムプロバイダ102からデータ108を隠すまたは暗号化するためのシステムおよび/またはプロセスを提供する。いくつかの例では、アルゴリズム106は、アルゴリズムを共同で実行する少なくとも1つのパーティ間で分割またはスプリットされ得る。さらに、いくつかの例では、データ108は、少なくとも1つのパーティ間でスプリットまたは分割され得る。一態様では、通信ネットワーク110は、データプロバイダ102とアルゴリズムプロバイダ104との間で構成され得る。本明細書で考察されるシステムは、データおよびデータに対する動作するアルゴリズムの両方に対する暗号化によってプライバシーを達成し得る。一例として、ファーストパーティによって提供される専有アルゴリズム106を、セカンドパーティには秘密にしておくことができ、セカンドパーティからの専有データ108を、ファーストパーティには秘密にしておくことができる。別の例では、サードパーティが関与し得る。
【0029】
一例として、安全なマルチパーティ計算(MPC)は、任意の専有情報を取得する各データセットの所有者または管理者なしで、2つのデータセットに対する関数の動作を可能にし得る。MPCは、秘密シェアリングなどの多数の暗号化ツールおよび戦略に基づく。例として、ファーストパーティは、10などの数を表すデータを所有していてもよい。数10は、動作6+4などの複数の数を使用して表され得る。セカンドパーティは、5などの数を表すデータを所有していてもよい。数5は、動作7+(-2)などの複数の数を使用して表され得る。一例として、ファーストパーティおよびセカンドパーティは、データを識別することなく、加算などのデータに対する動作を実行することができる。
【0030】
ファーストパーティは、それらのデータの一部をセカンドパーティに送信し得、セカンドパーティは、それらのデータの一部をファーストパーティに送信し得る。ファーストパーティは、データを表す2つの数字のうちの1つ、例えば4をセカンドパーティに送信し得る。セカンドパーティは、データを表す2つの数字のうちの1つ、例えば7をファーストパーティに送信し得る。ファーストパーティは、残りの数、例えば6を、セカンドパーティからの2つの数のうちの1つ、例えば7と加算して、合計13を判定し得る。セカンドパーティは、残りの数、例えば-2を、ファーストパーティからの2つの数のうちの1つ、例えば4と加算して、合計2を判定し得る。ファーストパーティまたはセカンドパーティのいずれかは、合計を加算して、15の結果を判定し得る。
【0031】
本明細書で考察されるような安全なマルチパーティ計算は、例示的なプロトコルに基づき、以下で考察されるシナリオなどのいくつかのシナリオにおいて、いくつかの利点を提供する。上記のように一例では、医師は、心電図(EKG)情報などの患者に関連付けられたデータを取得し得る。従来、医師はEKG情報を分析し、EKG情報に異常がないかどうかの診断を行っていたことがある。異常は、心房細動などの患者に関連付けられた1つ以上の状態があることを示し得る。そのような判定を行うことが非常に難しい可能性がある。しかしながら、診断を改善する方法があり、各患者は、各診断を互いに異なるものにする特定の属性を有し得る。一例として、患者の年齢、患者の性別、および他の情報は、診断に関連し得る。医師は、マルチパーティ計算を利用して、おそらく診断を改善することができる。
【0032】
医師は、ファーストパーティを表し得、データのより詳細な分析を実行するためにアルゴリズムへのアクセスを有するセカンドパーティと通信することを望み得る。データは、患者に関連付けられた識別情報を含み得る。セカンドパーティは、EKG情報をEKG情報のライブラリと比較することによってEKG情報の分析を実行し、患者に関連付けられた異常があり得るかどうかを判定するアルゴリズム保持者であってもよい。CNNが、EKG情報を評価するためのアルゴリズムであってもよい。例として、セカンドパーティは、患者のEKG情報をライブラリ内のEKG情報の各インスタンスと比較することによって、画像分析を実行することが可能であり得る。これにより、EKG情報をEKG情報のライブラリと比較することにより、医師がより正確な診断を提供することを可能にし得る。別の態様では、EKG情報の分析のためにCNNを提供する所有者またはエンティティは、それらのアルゴリズムに関する詳細が開示または公開されないようにすることを欲し得る。本明細書に開示されているアプローチは、データが処理されている間に、データおよびアルゴリズムの両方が相手のパーティに識別可能であることから保護する特定の技術的な方式で、データをアルゴリズムによって処理することを可能にする。
【0033】
上記の例は、EKG情報の分析に限定されない。別の例では、医師は、X線、磁気共鳴画像(MRI)画像、コンピュータ断層撮影(CT)スキャン、または別のタイプの画像などの患者を表す医療画像を取得し得る。医師は、医療画像を取得し、医療画像に基づいて診断を実行することを欲し得る。医師は、マルチパーティ計算を利用して、おそらく診断を改善することができる。医師は、ファーストパーティを表し得、データの詳細な分析を実行するためにアルゴリズムへのアクセスを有するセカンドパーティと通信することを望み得る。例として、セカンドパーティは、医療画像を医療画像のライブラリと比較することによって医療画像の分析を実行し、患者に関連付けられた異常あり得るかどうかを判定するアルゴリズム保持者であってもよい。アルゴリズムは、提示された医療データで問題を診断する目的で様々な医療画像に対して訓練されたCNNまたは機械学習もしくは人工知能システムとすることができる。本明細書で考察されるシステムおよび方法は、患者のプライバシーおよびアルゴリズム保持者のプライバシーを維持する方法で、医師が医療画像をアルゴリズム保持者と通信することを可能にすることができる。識別データおよび患者に関連付けられた医療画像は、HIPAA保護データであってもよい。同様に、アルゴリズム保持者は、アルゴリズムが専有性を維持するように、アルゴリズムを医師とシェアすることなく、医療画像に対して分析を実行し得る。
【0034】
別の例では、小売店舗は、クレジットアカウントを開くことを望む顧客を有し得、顧客は、名前、住所、および社会保障番号などの顧客を表す一意の識別情報などの顧客に関連付けられたデータを提供するように要求され得る。小売店舗は、ファーストパーティであってもよい。小売店舗は、データを分析することが可能であってもよいが、追加の情報およびアルゴリズムへのアクセスを取得することによって、データのより徹底的な分析を実行することが可能であり得る。小売店舗は、マルチパーティ計算を利用して、おそらく分析を改善することができる。小売店舗は、顧客データの詳細な分析を実行し、クレジットアカウントを開くかどうかを判定するために、1つ以上のアルゴリズムへのアクセスを有するセカンドパーティと通信することを望み得る。本明細書で考察されるシステムおよび方法は、小売店舗が、顧客のプライバシーを維持する方法で、顧客データをアルゴリズム保持者と通信することを可能にすることができる。同様に、アルゴリズム保持者は、アルゴリズムが専有性を維持するように、小売店舗とアルゴリズムをシェアすることなく、顧客データに対して分析を実行し得る。
【0035】
別の例として、顧客は、車両保険または財産保険などの保険を取得するプロセス中であってもよい。顧客は、名前、住所、および社会保障番号などの顧客を表す一意の識別情報などの顧客に関連付けられたデータを提供するように要求され得る。保険代理店が、ファーストパーティであってもよい。保険代理店はデータを分析することが可能であってもよいが、追加の情報およびアルゴリズムへのアクセスを取得することによって、データのより徹底的な分析を実行することが可能であり得る。保険代理店は、マルチパーティ計算を利用して、おそらく分析を改善することができる。保険代理店は、顧客データの詳細な分析を実行し、顧客に保険を提供するかどうかを判定するために、1つ以上のアルゴリズムへのアクセスを有するセカンドパーティと通信することを望み得る。本明細書で考察されるシステムおよび方法は、保険代理店が、顧客のプライバシーを維持する方法で、顧客データをアルゴリズム保持者と通信することを可能にすることができる。同様に、アルゴリズム保持者は、アルゴリズムが専有性を維持するように、保険代理店とアルゴリズムをシェアすることなく、顧客データに対して分析を実行し得る。
【0036】
上記のように、図1は、いくつかの例による、例示的な計算環境100を示す。図1に示されるように、例示的な計算環境は、少なくとも1つのデータプロバイダ計算デバイス102を含み得、少なくとも1つのアルゴリズムプロバイダ計算デバイス104を含み得る。少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、1つ以上のアルゴリズム106に関連付けられた情報へのアクセスを有し得、および/またはその情報を記憶し得る。少なくとも1つのデータプロバイダ計算デバイス102は、データ108へのアクセスを有し得、および/またはデータ108を記憶し得る。データ108は、1つ以上のデータベースに記憶され得る。少なくとも1つのデータプロバイダ計算デバイス102は、通信ネットワーク110を使用して、少なくとも1つのアルゴリズムプロバイダ計算デバイス104と通信し得る。
【0037】
少なくとも1つのデータプロバイダ計算デバイス102は、通信ネットワーク110を介して少なくとも1つのアルゴリズムプロバイダ計算デバイス104からデータを受信し、および/またはこれにデータを送信するように構成されている。少なくとも1つのデータプロバイダ計算デバイス102が単一の計算デバイスとして示されるが、少なくとも1つのデータプロバイダ計算デバイス102が複数の計算デバイスを含み得ることが想定される。
【0038】
通信ネットワーク110は、インターネット、イントラネット、または別の有線もしくは無線通信ネットワークとすることができる。例えば、通信ネットワーク110は、移動体通信(GSM)ネットワーク、コード分割多重アクセス(CDMA)ネットワーク、第3世代パートナーシッププロジェクト(GPP)ネットワーク、インターネットプロトコル(IP)ネットワーク、無線アプリケーションプロトコル(WAP)ネットワーク、WiFiネットワーク、Bluetoothネットワーク、衛星通信ネットワーク、またはIEEE802.11標準ネットワーク、ならびにそれらの様々な通信を含み得る。他の従来のおよび/または後に開発された有線および無線ネットワークも使用され得る。
【0039】
少なくとも1つのデータプロバイダ計算デバイス102は、データを処理するための少なくとも1つのプロセッサおよびデータを記憶するためのメモリを含む。プロセッサは、通信を処理し、通信を構築し、メモリからデータを取得し、メモリにデータを記憶する。プロセッサおよびメモリはハードウェアである。メモリは、揮発性および/または不揮発性メモリ、例えば、キャッシュ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、またはアプリケーションの一部もしくは構成要素などのデータおよび/またはコンピュータ可読実行可能命令を記憶するための他のメモリなどのコンピュータ可読記憶媒体を含み得る。さらに、少なくとも1つのデータプロバイダ計算デバイス102は、通信、メッセージ、および/または信号を送信および受信するための少なくとも1つの通信インターフェースをさらに含む。
【0040】
少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、データを処理するための少なくとも1つのプロセッサおよびデータを記憶するためのメモリを含む。プロセッサは、通信を処理し、通信を構築し、メモリからデータを取得し、メモリにデータを記憶する。プロセッサおよびメモリはハードウェアである。メモリは、揮発性および/または不揮発性メモリ、例えば、キャッシュ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、またはアプリケーションの一部もしくは構成要素などのデータおよび/またはコンピュータ可読実行可能命令を記憶するための他のメモリなどのコンピュータ可読記憶媒体を含み得る。さらに、少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、通信、メッセージ、および/または信号を送信および受信するための少なくとも1つの通信インターフェースをさらに含む。
【0041】
少なくとも1つのデータプロバイダ計算デバイス102は、ラップトップコンピュータ、スマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ、標準パーソナルコンピュータ、または別の処理デバイスとすることができる。少なくとも1つのデータプロバイダ計算デバイス102は、データおよび/またはグラフィカルユーザインターフェースを表示するためのコンピュータモニタなどのディスプレイを含み得る。少なくとも1つのデータプロバイダ計算デバイス102はまた、グラフィカルおよび/または他のタイプのユーザインターフェースにデータを入力するか、またはそれと対話するために、カメラ、キーボード、またはポインティングデバイス(例えば、マウス、トラックボール、ペン、またはタッチスクリーン)などの入力デバイスを含み得る。例示的な実施形態では、ディスプレイおよび入力デバイスは、スマートフォンまたはタブレットコンピュータのタッチスクリーンとして一緒に組み込まれてよい。
【0042】
少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、ラップトップコンピュータ、スマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ、標準パーソナルコンピュータ、または別の処理デバイスとすることができる。少なくとも1つのデータプロバイダ計算デバイス102は、データおよび/またはグラフィカルユーザインターフェースを表示するためのコンピュータモニタなどのディスプレイを含み得る。少なくとも1つのアルゴリズムプロバイダ計算デバイス104はまた、グラフィカルおよび/または他のタイプのユーザインターフェースにデータを入力するか、またはそれと対話するために、カメラ、キーボード、またはポインティングデバイス(例えば、マウス、トラックボール、ペン、またはタッチスクリーン)などの入力デバイスを含み得る。例示的な実施形態では、ディスプレイおよび入力デバイスは、スマートフォンまたはタブレットコンピュータのタッチスクリーンとして一緒に組み込まれてよい。
【0043】
専有アルゴリズムによってデータを処理するために、本明細書に開示されるアルゴリズムまたはアルゴリズムを実装するように動作する計算デバイスは、専用計算デバイスと考えられる。例えば、図13に関連して説明されるアルゴリズムを実行する計算デバイスは、計算デバイスが実行するようにプログラムされるステップまたは動作によって定義されるような専用計算デバイスである。
【0044】
図2は、例示的な計算環境100の別の表現200を示す。図2に示されるように、少なくとも1つのデータプロバイダ計算デバイス102は、平文データ206へのアクセスを有し得、および/または平文データ206を記憶し得る。少なくとも1つのデータプロバイダ計算デバイス102は、平文データを暗号化されたデータ204に暗号化し得る。さらに、少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、アルゴリズム214へのアクセスを有し得、および/またはアルゴリズム214を記憶し得る。少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、アルゴリズムを暗号化して、暗号化されたアルゴリズム212を生成し得る。少なくとも1つのデータプロバイダ計算デバイス102は、暗号化されたデータ204をユーザまたはアグリゲータ202に送信し得る。さらに、少なくとも1つのアルゴリズムプロバイダ計算デバイス104は、暗号化されたアルゴリズム212をユーザまたはアグリゲータ202に送信し得る。ユーザまたはアグリゲータ202は、暗号化されたアルゴリズムを暗号化されたデータ208に対して実行して、専有プロセス210を実行し得る。ユーザまたはアグリゲータ202は、少なくとも1つのデータプロバイダ計算デバイス102であってもよいが、ユーザまたはアグリゲータ202は、異なるエンティティであってもよい。別の例では、ユーザまたはアグリゲータ202は、アルゴリズムプロバイダ計算デバイス104であってもよい。この例では、アルゴリズムプロバイダがアルゴリズムを暗号化しているが、これは任意選択的である。さらに、この例では、データプロバイダがデータを暗号化しているが、これは任意選択的である。アルゴリズムおよび/またはデータが暗号化されていない場合、これは、アルゴリズムが比例的により速く実行され得るようなパフォーマンスの改善を可能にし得る。
【0045】
一例では、アグリゲータ202は、専有の畳み込みニューラルネットワーク(CNN)を開発したエンティティなどのアルゴリズムプロバイダが、本明細書に開示される専有の方法でEKGを評価するためにそのアルゴリズムを提供することを可能にするエンティティと考えることができ、アグリゲータ202が医師からEKGデータを受信し、EKGデータを処理し、出力データの指定された受信者に出力を提供することができるようにする。このようにして、アグリゲータ202は、データおよびアルゴリズムの両方に対してプライバシーが維持されることを可能にする構成の下で、データおよびアルゴリズムが一緒に実行することができる「マーケットプレイス」を動作させることができる。
【0046】
図3は、様々な実施形態による、安全なマルチパーティ計算アプローチをセットアップするために、データを分割するデータプロバイダ計算デバイス102およびアルゴリズムを分割するアルゴリズムプロバイダ計算デバイス104を示す。図3に示されるように、データプロバイダ計算デバイス102は、データベース302からデータを取り出し、データを第1のサブセットまたは第1のシェア304および第2のサブセットまたは第2のシェア306に分割するための動作を実行することができる。さらに、図3に示されるように、アルゴリズムプロバイダ計算デバイス104は、元のアルゴリズムが二値化されるブール論理ゲートセット形態でのアルゴリズムの表現であり得るアルゴリズム308を取得し、アルゴリズム309を匿名化し、アルゴリズム309を第1のサブセットまたは第1のアルゴリズム310および第2のサブセットまたは第2のアルゴリズム312に分割するための動作を実行し得る。例えば、システムは、まず、アルゴリズムをブール論理セット309に変換し、次いで、これは、第1のブール論理サブセット310および第2のブール論理サブセット212にスプリットされ得る。計算デバイスは、コンピュータ可読命令をバイナリ決定またはブール論理動作もしくはゲート309に低減することによって動作を実行することができる。したがって、データプロバイダ計算デバイス102およびアルゴリズムプロバイダ計算デバイス104は、アルゴリズムを、データおよび/またはアルゴリズムを表し、回路を匿名化することができるエミュレート回路または仮想化回路に低減し得る。別の例では、回路は、ハードウェアによって表され得る。一例として、第1のデータサブセットおよび第2のデータサブセットは、データの意味のないスプリットであってもよい。さらに、第1のアルゴリズムサブセット310および第2のアルゴリズムサブセット312は、意味のないスプリットであってもよい。2つのパーティは、アルゴリズムのそれぞれのスプリットに対して動作し得る。いずれのパーティも、データセット全体に対してアルゴリズム全体を実行せず、アルゴリズム全体が何を判定するかを理解しない。データのスプリットおよび/またはアルゴリズムのスプリットは、本明細書に開示される構成要素のいずれかで発生することができる。例えば、エンティティは、データがアグリゲータ202などのエンティティに送信される前に、暗号化およびデータスプリットの1つ以上の観点からデータを前処理または準備することができるデータプロバイダ102にプログラミングを提供する可能性がある。アグリゲータは、単にデータを受信し、同様に暗号化およびその計算システム上でのスプリットも実行する可能性がある。同様のプロセスは、アルゴリズムプロバイダ104に対して発生することができる。
【0047】
図4Aは、様々な実施形態による、ブール論理ゲートセットの形態のアルゴリズム308およびデータ302を処理する計算デバイスを示す。一例として、データベース302は、第1のデータサブセット304および第2のデータサブセット306に分割され得る。さらに、アルゴリズム308は、匿名化回路(ブール論理ゲートセット309)に変換され得、次いで、(ブール論理ゲートセット309を第1のブール論理ゲートサブセットに分割することによって)第1のアルゴリズムサブセット310および(ブール論理ゲートセット309を第2のブール論理ゲートサブセットに分割することによって)第2のアルゴリズムサブセット312に分割され得る。データプロバイダ計算デバイス102は、第2のデータサブセットをアルゴリズムプロバイダ計算デバイス104、またはアグリゲータ202に送信し得る。アルゴリズムプロバイダ計算デバイス104は、第1のアルゴリズムサブセット310をデータプロバイダ計算デバイス102、またはアグリゲータ202に送信し得る。データプロバイダ計算デバイス102またはアグリゲータ202は、第1のデータサブセット304に対して第1のアルゴリズムサブセット310を実行し得る。さらに、アルゴリズムプロバイダ計算デバイス104またはアグリゲータ202は、第2のデータサブセット306に対して第2のアルゴリズムサブセット312を実行し得る。データプロバイダ計算デバイス102およびアルゴリズムプロバイダ計算デバイス104(またはアグリゲータ202)は、それらの部分結果を一緒にマージして、最終結果または回答402を形成し得る。
【0048】
上記に概説したように、本開示のコンテキストは、他のパーティとシェアすることが許されていないいくつかのプライベートな情報を含むデータベースを有するパーティAに関する。パーティBは、アルゴリズムを有し、何らかのセキュリティ上の理由により、パーティBは、そのアルゴリズムをシェアまたは開示することができない。このコンテキストから生じるこの問題に対処するために、いくつかの利用可能な解決策がある。例えば、パーティAが、病院であり、パーティBが、がん診断アルゴリズムを有する場合、パーティAは暗号化されたバージョンの患者の医療記録を送信することができ、パーティBはパーティAの入力に対して準同型にアルゴリズムを適用し、結果をパーティAに戻すように送信することができる。最後に、パーティAは結果を復号する。別のシナリオでは、パーティAが顔データセットを有し、パーティBがパーティAのデータベースに基づいてモデルを訓練したいと仮定する。安全なマルチパーティ計算(SMPC)が、可能な解決策である。しかしながら、MPCの欠点は、パーティAがパーティBの訓練されたアルゴリズムに関する情報を学習することである。本明細書で開示されるのは、以前のスキームよりも速い新しいSMPCスキームである。また、ゲート情報を回路への入力に変換する新しい回路隠れスキームも開示されている。開示されているSMPCのアイデアは、多項式環で中国の余剰定理を使用して、多項式の次数を低く保ち、計算の後、得られる多項式が再構成可能であるようにすることである。このアプローチはまた、パーティAがパーティBのアルゴリズムに関して何も学ばないことを保証する。これらのアイデアは次に構築される。
【0049】
図4Bは、アルゴリズムプロバイダ410とデータプロバイダ414との間の対話を示す408。アルゴリズムプロバイダ410は、パラメータを選択し、アルゴリズムを使用してデータの処理に関連付けられたコンテキストを構築する。コンテキスト416は、データプロバイダ414に通信される。アルゴリズムプロバイダは、アルゴリズムを論理ゲート418に合成し、図7などの本明細書に開示されている原理を使用してアルゴリズム420を「隠す」。隠れプロセスの結果は、ゲート422および一般または汎用回路424を含む。アルゴリズムプロバイダ410は、一般回路426をデータプロバイダ414に送信する。次に、アルゴリズムプロバイダは、本明細書に開示されるようにシェア428を生成し、データプロバイダ414は、入力436からシェアを生成する。アルゴリズムプロバイダ410は、シェア434をデータプロバイダ414に送信し、データプロバイダ414は、シェア442をアルゴリズムプロバイダ410に送信する。アルゴリズムプロバイダ410は、アルゴリズムプロバイダのゲートシェア430、およびデータプロバイダのゲートシェア432を使用するプロセスを実行する。データプロバイダ414は、アルゴリズムプロバイダの入力シェア438およびデータプロバイダの入力シェア440を使用してプロセスを実行する。アルゴリズムプロバイダの生成がデータプロバイダの入力からシェアした後、2つのパーティはMPCプロトコルを開始する準備ができている。図6および本明細書における関連する考察を参照のこと。
【0050】
「隠れ」は、アルゴリズムプロバイダが匿名化回路内の各ゲートを汎用回路に置き換え、機能「一般回路」424を生成し、各ゲートの情報を別個のテーブルに記憶するときに発生する。各ゲートを汎用回路に置き換えることで、回路を隠し、回路のほとんどの情報をゲートテーブルに転送する。残っているのは、図7に示す各ゲートの位置のみである。図7の隠れ回路702は、公開されているものの例を示しており、各ゲートの位置のみを確認することができるものとしての例を示す。回路の一般構造は明らかにされる。このアプローチのセキュリティは、各ゲートに関する情報がゲートテーブルに別個に記憶されるため、回路隠れ方法の上に使用されるMPC方式のセキュリティに依存する。各ゲートの実際の出力は、相手方のパーティに利用可能ではなく、その一部のみ利用可能であるため、相手方による各ゲートの計算された出力を回路のリバースエンジニアリングに使用することができない。回路プロバイダは、それらのゲートの出力を計算する可能性のみを許可する。
【0051】
MPCの問題の1つは、異なるパーティ間の通信の数である。MPCプロトコルは、計算中に多くの通信を伴う可能性がある。その主な理由は、「乗算」または「AND」動作計算の複雑さである。ビーバートリプル(Beaver Triplet)を使用することは、乗算(ANDゲート)を扱うための実用的な方法の1つである。ただし、このアプローチは、プロトコルにいくつかの前処理計算を追加し、各乗算に対して2つの通信を必要とし、GMW(Goldreich-Micali-Wigderson)プロトコルの場合と同じ問題である。
【0052】
本明細書に開示されているのは、いかなる通信もなしでデータのシェアに対する加算および乗算をサポートするシステムである。言い換えると、システムが、データセットAをA1、A2にスプリットし、別のデータセットBをB1、B2にスプリットする場合、システムが、A*Bをどのように効率的に計算するかである。最も望ましい解決策は、A1*B1およびA2*B2を使用してA*Bを計算することができ、A1+B1およびA2+B2を使用してA+Bを計算することも可能であることである。現在、これを行うことができるSMPCスキームはない。
【0053】
GMWは加算のみをサポートし、乗算を計算するためにオンライン通信が必要である。GMWが乗算をサポートしていない理由は、システムが2つの多項式を加算する場合、多項式の次数は増加しないが、システムが2つの多項式を乗算する場合、次数は増加するため、GMWは多項式の次数を低いままにするために通信を必要とすることによる。本開示の主なアイデアは、商多項式環を使用して多項式の次数を低いままにして、利用可能な点を使用してそれを再構築できるようにすることである(ラグランジュ多項式再構築)。中国の余剰定理(CRT)は、主イデアルのルートを知ることにより、主イデアルへの任意の多項式の低減(主イデアルが十分なルートを有する場合)を計算するための強力なツールを提供する。
【0054】
BGW(Ben-Or,Goldwasser,Wigderson)プロトコルは、GMWプロトコル上に構築され、計算設定で安全なマルチパーティ計算を考える。BGWプロトコルは、準同型算出を自然にサポートする多項式秘密シェアアイデアを使用する。システムが、いくつかの多項式にそれらの多項式の定数値としてデータを記憶する場合、2つの多項式を乗算した後、記憶されたデータが乗算されることが期待され得る。
【0055】
例えば、次の2つのデータセットを考える。
データA:4 対応する多項式:P(x)=2x+3x+4
データB:7 対応する多項式:P(x)=x+7
およびpを乗算すると、以下を提供する。すなわち、p*p=2x+17x+25x+28である。p*pの定数値は、確かにデータA*データB=28に等しいことが確認できる。しかし、問題は、多項式の次数が増加し、システムは最終多項式を再構築するためにより多くの点が必要になるということである。
【0056】
最終多項式を再構築するためにより多くのデータを必要とすることに対する解決策は、多項式の次数を小さいままにするため、整数環において係数を有する商多項式環の使用で見つけることができる。残念ながら、このアプローチは他にも2つの問題を引き起こす。第1に、低減後に定数値を保持しない。第2の問題は、システムがいくつかの点しか有さないときに、秘密多項式を別の多項式に低減することができることである。
【0057】
第1の問題の例として、以下を考える。
データA:4 対応する多項式:P(x)=x+4
データB:7 対応する多項式:P(x)=x+7
主イデアル=x+1を考える
coeff.modulus(q)=1001
*p=x+11x+28=11x+27 mod(x+1)
*pmod x^2+1の定数値は27であり、これは28に等しくない。
【0058】
しかし、上の環多項式を使用するときに、低減の後に保持される他の情報、すなわち、
【数1】
で得られる多項式の評価とxでの環多項式の評価がある。すなわち、
【数2】
は、xでの得られる多項式の評価=xでの低減された多項式の評価(xでの主イデアルのmod評価)を意味する。
【0059】
一例では、x=10とする。
*p(10)=11x+27=137=36 mod 101
(10)*p(10)=36 mod 101
101は、10でのx^2+1の評価である。
次の点は価値があり、解決策の基礎となる。係数にオーバーフローがある場合、この事実はもう有効ではない。したがって、coeff modulus=1001の代わりに、システムが17のようなより小さなcoeffを使用する場合、結果は間違っている。
【0060】
一例として、x=1を評価点とし、円分多項式オーダ2を主イデアルとする。
【0061】
これらの決定により、システムは、係数の和としてビットを多項式に隠すことができ、円分多項式オーダ2は、
【数3】
の形態になるため、したがって、P(1)=2であり、すべてが、所望のように、mod 2となる。
【0062】
このアプローチを使用して、いくつかの情報は、別の多項式によって多項式を低減した後に保存されるため、プロセスは、他の技術を用いて多項式にデータを隠す必要がある。しかし、上記に特定された第2の問題は依然として存在し、それは、多項式のいくつかの点のみが知られているときに、どのようにして多項式を別の多項式に低減することができるかである。
【0063】
この問題に対する1つの解は、中国の剰余定理を適用することであり得る。このアイデアをより明確にするために、本開示は多項式環に対する中国の剰余定理の一例を提供する。
データA:4 対応する多項式:P(x)=x+4
データB:7 対応する多項式:P(x)=x+7
主イデアル(I)=x+1
商環=Z17[x]/I
*p=11x+27 mod x+1=11x+10 mod(x+1,17)
システムは、別の方法で11x+10を算出することができた。
+1=(x+4)(x+12)mod 17であり、ルートは4、-4である。
(4)=8,P(-4)=0,
(4)=11,P(-4)=3
乗算を算出するために、システムは、p(root1)*p(root1)=Aおよびp(root2)*p(root2)=Bを乗算し、2つの点(root1,A)および(root2,B)で多項式を再構築することができる。(4,88)=(4,3)と(-4,0)を通過する線は、11x+10 mod 17である。
【0064】
本開示は次に、マルチパーティ計算(MPC)プロトコルをより詳細に考察する。プロトコルは、1つのゲート(XORまたはAND)のみを実行するために、パーティAからの1ビットa∈{1,0}およびパーティBからの1ビットb∈{1,0}に対して2つのパーティ間で説明される。
q=coeff.modulus
n=形態2の多項式の次数
B=多項式係数に対する境界
【0065】
プロトコルでは、Zに低減された任意の数は
【数4】

【数5】
との間にある。プロトコルは、(1)λ(セキュリティパラメータ)に基づいて、q、n、Bが選択され、(2)Zにわたって多項式P(x)=x+1個のnルートが2つのセット
【数6】
に記憶される。例えば、Z17にわたってx+1である場合、S={4}であり、S={-4}である。
【0066】
ステップ(3)において、パーティAは、
【数7】
であるように多項式次数n Pにおいてビット「a」を記憶し、パーティBは、
【数8】
であるように多項式次数n Pにおいてビット「b」を記憶する。ステップ(4)において、パーティAは、
【数9】
を記憶し、
【数10】
をパーティBに送信する。
【0067】
さらに、パーティBは、
【数11】
を記憶し、
【数12】
をパーティAに送信する。ステップ(5)において、
【数13】
を計算するために、パーティAは、SAA+SBAを計算し、パーティBは、SBB+SABを計算する。ステップ(6)において、
【数14】
を計算するために、パーティAは、SAA×SBAを計算し、パーティBは、SBB×SABを計算する。これらは、要素ごとの乗算である。ステップ(7)において、計算の最後に、両方のパーティが最終結果をシェアし、得られる多項式Pを、n個の点
【数15】
を使用して共同で再構築する。すなわち、XORゲートに対して、
【数16】
であり、ANDゲートに対して
【数17】
である。
【0068】
ステップ(8)において、最終結果を計算するために、P(1)∈Z[X]mod 2が計算される。
【0069】
このプロトコルは、多項式の係数にオーバーフローがない場合に機能する(係数はqより大きくなる)。このようなオーバーフローは、より多くのゲートを評価した後に発生する可能性がある。オーバーフローを避けるために、2つの方法が提案されている。第1の方法は、計算をサポートするのに十分に大きいパラメータを選択することである。例えば、システムが多項式、言うなれば、xを計算する場合、法qは3Bより大きくするべきであり、Bは、多項式係数に対する境界である。多項式の領域が許容可能なセキュリティを達成するのに十分に大きくすべきことが有用である。
【0070】
計算の制限のため、システムが、システムが回路を正しく計算することを可能にするために望まれる可能性があるものほど大きいqを単に選択することができない。次に、オーバーフローを防止するために係数を低減するための方法を提案する。本開示は、ここで言及する係数が、他で参照されるシェアとは異なっていることに留意する。シェアは、オーバーフローする可能性がある。
【0071】
提案されている方法は、多項式環Pの更新を伴う。多項式環における中国の余剰定理(CRT)と全く等価なラグランジュ多項式再構成に基づいて、以下の式を仮定する。
【数18】
【0072】
λは、容易に算出され、公開情報である。Sは秘密シェアであり、そのうちの半分がパーティAによって保持され、他の半分がパーティBによって保持される。Sをシェアする場合、多項式を再構築することができ、ビット値を明らかにされる。以下のプロトコルを使用して、2つのパーティが多項式を更新することができる。このプロセスを記載する別の方法は、多項式をより小さな係数を有する新しい多項式に置き換えることである。
【0073】
ステップ(1)において、パーティAは、
【数19】
を計算し、
【数20】

となり、P係数がBによって境界されるようなPを生成し、パーティAは、
【数21】
を計算する。
【0074】
ステップ(2)において、パーティAは、パーティBにSAB、SsA+rand(1,0)を送信する。ステップ(3)において、パーティBは、
【数22】
である場合、
【数23】

を計算する。パーティBは、
【数24】
となるようなPを生成し、そうでなければ、パーティBは、
【数25】
を生成し、
【数26】
を計算する。ステップ(4)において、パーティBは、SBAをパーティAに送信し、ステップ(5)において、パーティAは、SBA+SAAを計算し、パーティBは、SBB+SABを計算する。
【0075】
このプロトコルを実行した後、両方のパーティは、元のノイズ多項式として復号されるが、更新された多項式の係数が2Bによって境界される更新された多項式のシェアを有する。
【0076】
3つ以上のパーティに対しては、各パーティが環多項式のいくつかのルートを制御するという点で、アイデアは同様である。以下のセクションでは、本開示は、このプロトコルの適用を記載する。図4Cは、新しい入力464およびいくつかのプライベートデータベースに対してプライベート関数(アルゴリズムプロバイダ410によって提供される)を実行したいデータプロバイダ414およびアグリゲータ462のグループがいる「マルチパーティ問題」へのMPCの適用450を示す。パーティは、どのパーティが多項式環のどのルートを担当するかという合意に達する必要があり、次いで、プロトコルは、アルゴリズムプロバイダ410で開始する。両パーティは、2つのパーティの問題と同じステップのうちのいくつかを取り、「ゲートシェア」458および「一般回路」458を他のパーティとシェアする。データベースプロバイダ414は、データベース460のシェアをアグリゲータ462に提供する。このプロトコルと2つのパーティのプロトコルとの間の唯一の違いは、新しい入力454、456のシェアがあり、ルートにおける多項式の評価が異なるパーティによって保持されることである。
【0077】
図4Dは、SMPCを適用するアプローチ470を示す。新しい入力472は、アグリゲータ478に提供される。アグリゲータ478は、データプロバイダの公開鍵KPd476を使用するデータプロバイダ474から暗号化されたデータを受信する。アグリゲータはまた、アルゴリズムプロバイダの公開鍵KPa480の下で暗号化された、暗号化された関数fをアルゴリズムプロバイダ482から受信する。どちらの暗号化も準同型暗号であり、これは、ユーザが復号を必要とせずに、暗号化されたデータのみを使用して暗号化された結果を計算することを可能にする。アグリゲータ478は、準同型暗号を使用して結果484を計算する。結果は、新しい入力およびデータに基づく関数結果を含むことができる。計算の終了時に、データプロバイダ474およびアルゴリズムプロバイダ482は、SMPCを使用して復号アルゴリズムを計算する。SMPC486は、結果、KSdおよびKSaを復号するために使用することができる。SMPCプロトコルでは、アルゴリズムプロバイダ入力は、その対応する秘密鍵KSaであり、データプロバイダ入力は、秘密鍵KSdである。
【0078】
図5は、様々な実施形態による、複数のデータプロバイダおよび複数のアルゴリズムプロバイダを示す。本明細書で考察されるアプローチは、1つのデータプロバイダまたは1つのアルゴリズムプロバイダに限定されない。一例として、データは、複数のプロバイダによって提供され得、アルゴリズムは、複数のプロバイダによって提供され得る。一例として、図5は、第1のデータプロバイダ502および第2のデータプロバイダ508を有する配置500を示す。さらに、図5は、第1のアルゴリズムプロバイダ518および第2のアルゴリズムプロバイダ524を示す。図5に示されるように、第1のデータプロバイダ502からの第1のデータ506および第2のデータプロバイダ504からの第2のデータ512は、暗号化(504、510)され得る。さらに、第1のアルゴリズムプロバイダ518からのアルゴリズム522および第2のアルゴリズムプロバイダ524からのアルゴリズム528は、暗号化(520、526)され得る。その結果、複数のデータプロバイダおよび複数のアルゴリズムプロバイダは、互いに通信し、互いに機能し得る。
【0079】
ユーザまたはアグリゲータ510は、第1のデータプロバイダ502から暗号化されたデータ504および第2のデータプロバイダ508から第2の暗号化されたデータ510を受信し得、第1のアルゴリズムプロバイダ518から暗号化されたアルゴリズム520および第2のアルゴリズムプロバイダ524から第2の暗号化されたアルゴリズム526を受信し得る。ユーザまたはアグリゲータ510は、データに対してアルゴリズムを実行し、専有ビジネスプロセス516を含み得る結果を判定し得る。上記のように、ユーザまたはアグリゲータ510は、第1のデータプロバイダ502または第2のデータプロバイダ508、第1のアルゴリズムプロバイダ518、第2のアルゴリズムプロバイダ5524のうちの1つであってもよく、または異なるエンティティであってもよい。アグリゲータ510はまた、それぞれのデータプロバイダおよび/またはそれぞれのアルゴリズムプロバイダの組み合わせまたはハイブリッドであってもよい。アグリゲータ510はまた、一態様では、暗号化されていないデータまたはアルゴリズムを受信し、アグリゲータ510内で暗号化動作を実行することができる。
【0080】
図6は、様々な実施形態による、アルゴリズムに関連付けられた例示的な回路600を示す。いくつかの安全なマルチパーティ計算(MPC)では、回路ガーブリングは、ガーブラーおよび評価者などの2つの参加者間の安全な通信のために使用されている。本明細書で考察される実施形態は、回路ガーブリングとは異なる。マルチパーティ計算(MPC)は、乗算(AND)および加算(XOR)を含む2つの動作を実行することができる。その結果、複雑な動作および機能を実行するために、動作および機能は、ANDおよびXORの動作に分解されることになる。図6に示される例示的な回路600は、XOR、AND、およびNOTゲートのみを含む。NOTゲートは、回路がANDおよびXORゲートのみを表すことを可能にする「1」のビットでXORゲートに置き換えられる。
【0081】
実施形態によれば、アルゴリズムを隠すために、ゲートは、図6に示すように、汎用回路を有するAおよびBを含む入力で置き換えられ得る。図6の入力g0およびg1が、g1g0=11であるときに、回路全体がAおよびBに対するANDゲートとして作用し得るように、制御ビットとして作用し得る。g1g0が01に等しいときに、回路全体がA EXOR Bに等しくてもよく、g1g0=10であるときに、回路全体がNOT Aとして作用し得る。
【0082】
アルゴリズムは、図6に示されるような特定の回路600にアルゴリズムを変換することによって、論理回路またはエミュレート回路に符号化され得る。回路は、それがアルゴリズムを表すようなゲートの正しい数および配置を含み得る。回路内の特定のゲートの各々は、汎用ゲートスロットに置き換えられ得る。汎用ゲートスロットの各々は、ゲートをそのまま機能させるために、正しいビットパターンで投入され得る。次いで、ゲート情報は、行列にコピーされ得る。
【0083】
一例では、真理値表は、図6に示されるゲートを実際のゲートに記述または解決するために使用することができる。例えば、以下の真理値表を使用することができる。
【表1】
【0084】
図7は、様々な実施形態による、隠れ回路309に変換される(700)例示的なアルゴリズム308を示す。隠れ回路は、例えば、図3に示されるブール論理ゲートセット309であり得る。一例として、図6に示される回路内のゲートに関連付けられた情報は、図7に示されるように、匿名化され隠れ表現309と置き換えられ得る。一例として、アルゴリズム308は、隠れ表現309に変換され得る。これは、回路構造を匿名化する1つの例示的な方法を提供する。匿名化への他のアプローチが、同様に適用可能であり得る。
【0085】
図8は、様々な実施形態による、第1のスプリットまたは第1のサブセット310および第2のスプリットまたは第2のサブセット312に分割される隠れ回路309を示す(800)。言い換えると、隠れ表現309は、2つのスプリットまたはサブセットに分割され得る。第1のアルゴリズムサブセット310は、ファーストパーティ、第1の計算デバイスまたは第1の仮想計算環境によって評価され得、第2のアルゴリズムサブセット312は、セカンドパーティ、第2の計算デバイスまたは第2の仮想計算環境によって評価され得る。一般的に言えば、ブール論理ゲートセット309のこれらの異なるスプリットは、異なる計算スポット、場所、部分、物理的な構成要素または仮想的な構成要素に分離されており、それらの分離された処理が分離された方法で実行され得るようになっている。
【0086】
図9Aは、データをアルゴリズムに提供するデータプロバイダからアルゴリズムを隠すまたは暗号化し、データをデータに対して動作するアルゴリズムを提供するアルゴリズムプロバイダからデータを隠すまたは暗号化するための例示的な方法900を示す。方法は、任意の順序で実行される任意の1つ以上のステップを含むことができる。本明細書に開示される順序は、例としてである。例示的な方法によれば、ステップ902において、アルゴリズムプロバイダは、計算デバイスにアルゴリズムプロバイダを送信し得る。さらに、データプロバイダは、データを計算デバイスに送信し得る。計算デバイスは、アルゴリズムを受信し、データを受信し得る。アルゴリズムは、アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択され得、データは、データプロバイダによってデータベースから取り出され得る。さらに、計算デバイスは、アルゴリズムを暗号化し、データを暗号化し得る。一例では、計算デバイスは、アルゴリズムプロバイダに関連付けられた計算デバイスであってもよい。別の例では、計算デバイスは、データプロバイダに関連付けられた計算デバイスであってもよい。さらなる例では、計算デバイスは、サードパーティの計算デバイスであってもよく、アルゴリズムプロバイダまたはデータプロバイダに関連付けられていなくてもよい。
【0087】
ステップ904において、計算デバイスは、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割し得る。第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットは、等しいサイズのサブセットではなくてもよい。一例として、第1のアルゴリズムサブセットは、アルゴリズムに関連付けられた動作の3分の1を含み得、第2のアルゴリズムサブセットは、アルゴリズムに関連付けられた動作の3分の2を含み得る。代替的に、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットは、等しいサイズのサブセットに分割され得る。上記のように、代替的なステップは、一般にアルゴリズムまたはアルゴリズムサブセットを匿名化することを含む。
【0088】
さらに、計算デバイスは、データを第1のデータサブセットおよび第2のデータサブセットに分割し得る。一例として、第1のデータサブセットは、データの3分の1を含み得、第2のデータサブセットは、データの3分の2を含み得る。代替的に、第1のデータサブセットおよび第2のデータサブセットは、等しいサイズのサブセットに分割され得る。ステップ906において、計算デバイスは、第1のアルゴリズムサブセットおよび第1のデータサブセットをアルゴリズムプロバイダに送信し得る。ステップ908において、計算デバイスは、第2のアルゴリズムサブセットおよび第2のデータサブセットをデータプロバイダに送信し得る。ステップ910において、計算デバイスは、アルゴリズムプロバイダから第1の部分結果を受信し得る。第1の部分結果は、第1のアルゴリズムサブセットおよび第1のデータサブセットに基づき得る。さらに、計算デバイスは、データプロバイダから第2の部分結果を受信し得る。第2の部分結果は、第2のアルゴリズムサブセットおよび第2のデータサブセットに基づき得る。ステップ912において、計算デバイスは、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定し得る。
【0089】
さらなる例では、アルゴリズムに関連付けられたブール論理ゲートセットがあり得る。このアルゴリズムは、ブール論理ゲートセットに変換することができる。これは、アルゴリズムプロバイダによって実行されることができる。計算デバイスは、第1のアルゴリズムサブセットをブール論理ゲートセットからの第1のブール論理ゲートサブセットに変換し得、第2のアルゴリズムサブセットをブール論理ゲートセットからの第2のブール論理ゲートサブセットに変換し得る。第1のブール論理ゲートサブセットおよび第2のブール論理ゲートサブセットは、ANDゲートおよびXORゲートを含む。本明細書で考察されるように、アルゴリズムプロバイダは、少なくとも1つの第1の計算デバイスを含み得、データプロバイダは、少なくとも1つの第2の計算デバイスを含み得る。一例では、組み合わされた結果は、データプロバイダに送信され得、データプロバイダは、組み合わされた結果の表現を表示し得る。別の例では、組み合わされた結果は、アルゴリズムプロバイダに送信され得、アルゴリズムプロバイダは、組み合わされた結果の表現を表示し得る。別の例では、組み合わされた結果は、別の計算デバイスに送信され得、他の計算デバイスは、組み合わされた結果の表現を表示することができる。
【0090】
別の態様では、計算デバイスは、第1のアルゴリズムサブセットおよび第1のデータサブセットならびに第2のアルゴリズムサブセットおよび第2のデータサブセットを任意のエンティティに保持または送信し得る。例えば、アグリゲータ202などのエンティティは、分割ステップおよび処理ステップを実行して、第1の部分結果および第2の部分結果を取得することができる。一般に、システムは、第1のデータサブセットで第1のアルゴリズムサブセットを、第2のデータサブセットで第2のアルゴリズムサブセットを別個に処理することができ、それぞれのアルゴリズムおよびデータが互いに開示されないようにする。
【0091】
図9Bは、別の例示的な方法918を示す。この例示的な方法は、ステップ920において、少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムを受信することと、ステップ922において、少なくとも1つのプロセッサによって、データプロバイダからデータを受信することと、を含む。方法はまた、ステップ924において、少なくとも1つのプロセッサによって、アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することと、ステップ926において、少なくとも1つのプロセッサによって、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、ステップ928において、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットを処理することと、ステップ930において、少なくとも1つのプロセッサによって、第2のアルゴリズムサブセットおよび第2のデータサブセットを処理することと、を含むことができる。方法はまた、ステップ932において、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信することと、ステップ934において、少なくとも1つのプロセッサによって、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することと、を含むことができる。
【0092】
アルゴリズムを分割するプロセスおよびその後の処理は、いくつかの異なる方法で達成することができる。例えば、アルゴリズムは、ブール論理ゲートセットに変換することができるか、またはニューラルネットワークもしくは代数もしくは非ブール回路として表され得る。
【0093】
いくつかの実施形態では、アルゴリズムは、(例えば、CNNの間で一般的である)数千の動作が行に一緒にストリングされたアルゴリズムを含む、大規模で複雑な代数式を含むことができる。そのような複雑なアルゴリズムを扱うために、例えば、2つ以上のパーティ間のより少ない通信交換(例えば、データプロバイダ、アルゴリズムプロバイダ、アグリゲータなどの間のより少ない通信交換)を使用して、多数の任意の動作のはるかに高速な算出を実行するために、ビーバーセットベースの数学技術を使用することができる。通常、乗算に使用されるビーバーセットを、計算を前処理ステップに変換するために、本明細書に開示される概念に新しい方法で適用することができる。ビーバーセットは通常、前処理を使用する。全体のプロセスに対する本明細書に開示されている追加の概念は、除算および指数をサポートするために異なって処理を行う能力、ならびにより高速な乗算を含む。図9Cは、例えば、本明細書に開示される原理を実装するときに、コンピュータ計算要件を改善するためにビーバーセットを使用することに関連付けられた例示的な方法を示す。
【0094】
マルチパーティ計算の1つの問題は、データプロバイダ計算デバイス102とアルゴリズムプロバイダ計算デバイス104との間の通信ネットワーク110を介して送信され得る通信の数に関連付けられ得る。通信は、乗算および「AND」動作計算の複雑さに関連付けられ得る。MPCは加算および乗算をサポートすることができるが、乗算は通常制限される。乗算されている数がサイズを増加させ続けると、MPCの算出能力は、整数サイズの制限および計算ストレージの制限により、上限に近づき、それに達し始める。限界に遭遇すると、MPCは、動作を実行する計算デバイス間で情報を交換することを目指す。この交換は、全体的な計算パフォーマンスを低下させる。
【0095】
本明細書で考察される実施形態は、通信およびネットワークオーバーヘッドを低減するために、ビーバーセット乗算を利用して、データプロバイダ計算デバイス102とアルゴリズムプロバイダ計算デバイス104との間の通信を制限する。ビーバーセット乗算の使用は、本明細書に記載されるように、処理のために、データをスプリットし、アルゴリズムをスプリットするために使用される任意の2つのデバイスまたは仮想マシンに適用され得る。したがって、問題は、本明細書に開示される原理に関連して使用され得る、仮想または物理的な任意の2つのデバイス間で生じる可能性がある。いくつかの実施形態では、1つのビーバーセットトリプルが、各動作(例えば、乗算動作またはANDゲート)に使用され得る。ビーバーセットトリプルは、2つのパーティが一緒に作業して組み合わされた結果を判定するときに、一方のパーティまたは一方の計算デバイスによって予め生成され得る。一例として、データプロバイダ計算デバイス102は、ビーバーセットを予め生成し得、アルゴリズムプロバイダ計算デバイス104は、ビーバーセットを予め生成し得る。別の態様では、アグリゲータ202は、アルゴリズム、データ、アルゴリズムのサブセット、およびデータのサブセットのうちの1つ以上に対して様々なビーバーセットを予め生成することができる。
【0096】
実施形態によれば、ビーバーセットは、算出時(例えば、アルゴリズムが暗号化され、データプロバイダ計算デバイス102とアルゴリズムプロバイダ計算デバイス104との間で配分された後)に利用することができる。例えば、アルゴリズムが暗号化され、スプリットされ、2つのパーティに配分された後、ビーバーセットは、パーティの一方または両方が算出を実行する準備ができているときに用いられ得る。暗号化された回路の算出が遅いため、ビーバーセット(交換を行う前に各パーティがより多くの数学的算出を行うことを可能にする)を使用することにより、2つのパーティ間の情報交換の量を低減することは、アルゴリズムおよびデータ処理全体の速度および効率を増加させる。言い換えると、以下のビーバーセットベースの技術は、以前のアプローチよりもはるかに高速に、スプリットデータおよび/またはアルゴリズムに対して複雑な動作を実行することができる。なぜなら、この技術は、2つのパーティ間の交換が必要になる(例えば、閾値誤差を超える)前に、分離されている間に、より多くの動作を算出することを可能にするためである。
【0097】
図9Cに示される例示的な方法938は、各パーティまたはエンティティが、ステップ940において、少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムサブセットを受信することを含むことができる。アルゴリズムサブセットは、例えば、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割されたアルゴリズムからの第1のアルゴリズムサブセットとすることができる。ステップ942において、ファーストパーティは、第1のアルゴリズムサブセットの性質に基づく、または他のパラメータに基づく、ビーバーセットの2つのシェアを生成することができる。
【0098】
例えば、ファーストパーティ(例えば、データプロバイダ計算デバイス102またはアルゴリズムプロバイダ計算デバイス104などのユーザA)は、N×3の行列、Beavを生成することができる。Beavは、ランダムに生成される第1および第2の列を含むことができ、第3の列は、アルゴリズムサブセットの動作を含むことができる。Beavは、部分的にランダムに生成され得るか、またはおそらく非ランダムプロセスに基づいて生成され得る。この例示的な実施形態では、第3の列は、最初の2つの列の乗算を含む。ビーバーセットの最初の2つの列は、実際のデータ(EKGシェア)をマスクするためにランダムに生成することができ、第3の列は、用途(乗算、除算、指数関数、..)に応じて計算することができる。実際のデータを隠すことができるように、最初の2つの列をランダムに生成することが好ましい。
【0099】
次いで、ユーザAは、Beavの2つのシェア、[Beavおよび[Beavを生成することができる。次いで、ユーザAは、公開鍵および暗号化を使用して、pk
【数27】
をセカンドパーティ(例えば、データプロバイダ計算デバイス102またはアルゴリズムプロバイダ計算デバイス104などのユーザB)に送信することができ、pkは公開鍵Aであり、
【数28】
は公開鍵Aを使用した暗号化された[Beavである。
【0100】
いくつかの実施形態では、ENCは、1回の乗算および1回の加算のための準同型暗号化をサポートする。準同型暗号は、暗号文に対する計算を可能にする暗号化の形態であり、復号化されたときに、あたかも平文に対して実行された動作の結果と一致する暗号化された結果を生成する。準同型暗号は、秘密鍵にアクセスすることなく暗号化されたデータにわたって計算するための追加の評価能力を有する暗号化の形態である。そのような計算結果は、暗号化されたままである。
【0101】
ステップ944において、セカンドパーティ(ユーザB)は、第2のアルゴリズムサブセットの性質に基づく、または他の要因に基づく、ビーバーセットのその2つのシェアを生成することができる。データプロバイダ計算デバイス102またはアルゴリズムプロバイダ計算デバイス104などのユーザBは、N×3行列、Beav、およびビーバーセットと同じサイズ(Nx3)を有するランダム行列Rを生成することができる。行列Rはまた、非ランダムプロセスに基づいて生成され得る。Beavと同様に、Beavは、ランダムに生成されるか、またはいくつかの非ランダムプロセスに基づいて生成される第1および第2の列を含み得、第3の列は、アルゴリズムサブセットの動作を含むことができる。この例示的な実施形態では、第3の列は、最初の2つの列の乗算を含む。
【0102】
次いで、ユーザBは、Beavの2つのシェア、[Beavおよび[Beavを生成することができる。次いで、ユーザBは、[Beav]=[Beav×[Beav-Rおよび
【数29】

をセットすることができる。次いで、ユーザBは、vおよび[BeavをユーザAに送信することができる。
【0103】
ファーストパーティおよびセカンドパーティのデータプロバイダ計算デバイス102およびアルゴリズムプロバイダ計算デバイス104は、以下を実行することができる。ユーザAは、
【数30】
をセットすることができる。次いで、ユーザBは、[Beav]=[Beav×[Beav-Rのシェアを有し、ユーザAは、
【数31】
のシェアを有する。いくつかの実施形態では、ビーバーセットは、データプロバイダ計算デバイス102とアルゴリズムプロバイダ計算デバイス104との間の除算動作にも使用することができる。2つのパーティは、例えば、6つの通信のみを使用して、除算を実行するために一緒に作業し得る。一例として、2つのパーティは、e、dおよびe/dビーバートリプルを使用して、x/yの除算動作を実行し得る。例えば、eは、ビーバーセットの第1の列とすることができ、dは、ビーバーセットの第2の列とすることができる。第3の列は、e/d(eをdで除算したもの)とすることができる。最初の2つの列はランダムに生成され、第3の列は、第1の列を第2の列で除算したものとすることができる。
【0104】
ファーストパーティ(ユーザA)および/またはセカンドパーティ(ユーザB)は、第3の列が、第1の列を第2の列で除算したものを含む、N×3行列ビーバートリプルセットを生成することができる。次いで、ユーザAおよびユーザBは、x’=x×dおよびy’=y×eを協働して計算することができる(例えば、両パーティは、x’およびy’の値を知っているであろう)。次いで、ユーザAは、[xd]を計算することができ、ユーザBは、[xd]を計算することができる。次いで、ユーザAおよびユーザBの両方は、xdを共同で再構築することができる。
【0105】
一態様では、データプロバイダ計算デバイス102およびアルゴリズムプロバイダ計算デバイス104は、除算の
【数32】
および除算の
【数33】
を実行することができる。
【0106】
ステップ946において、データプロバイダは、スプリットデータセットを2つのパーティに提供し、対応するビーバーセットを使用して、スプリットデータセットに対してスプリットアルゴリズムを実行することができる。いくつかの実施形態では、データは、機密情報(例えば、人口統計、性別、年齢、人種、または患者識別を明らかにする他の生体認証などを明らかにするパターン)をさらに隠すために、完全なデータセットのランダムなシェアにスプリットされ得る。この点において、方法は、第1の数学的セットの2つのシェアに基づいて第1のスプリットデータサブセットに対して第1のアルゴリズムサブセットを実行して、第1の出力サブセットを生成し、第2の数学的セットの2つのシェアに基づいて第2のスプリットデータサブセットに対して第2のアルゴリズムサブセットを実行して、第2の出力サブセットを生成することを含むことができる。次いで、方法は、第1の出力サブセットと第2の出力サブセットとを組み合わせることを含むことができる。
【0107】
いくつかの実施形態では、算出速度は、高価な関数呼び出しの結果を記憶し、同じ入力が再び発生したときにキャッシュされた結果を返すことによって計算を高速化するために使用され得る最適化技術である1つ以上のメモ化技術を通じてさらに増加させることができる。メモ化された関数は、例えば、特定の入力のいくつかのセットに対応する結果をキャッシュすることができる。(キャッシュからの)思い出される入力を有する後続の呼び出しは、再度算出することなく思い出される結果を返すことができるため、所与のパラメータを有する呼び出しの主要なコストは、これらのパラメータを持つ関数に対して最初に行われた呼び出しを除き除去される。したがって、メモ化は、必要に応じて、事前にではなく、その結果のキャッシュを透過的にオンザフライで投入することができる。
【0108】
別の例では、チェスゲームでは、1人のプレイヤーが利用可能なオープニングムーブの数を計算したいと仮定する。最初のムーブの後、プレイヤーはその最初のムーブの結果として可能なムーブなどを計算する。プレイヤーは、そのムーブの結果として可能なすべてのムーブを再度算出する代わりに、チェスゲームがより高速になるように、特定の設定に従って行うことができるすべての可能なムーブのリストを保持する。プレイヤーは、毎回可能なムーブを再度算出する代わりに、メモを保持する。この例示的なモデルは、システムができるだけ誤差を少なく蓄積することを可能にする動作のメモ化に関係するビーバーセットに適用される。各パーティは、各自でビーバーセットを生成する。アルゴリズムの例では、システムは、ビーバーセットを生成し、データに対してアルゴリズムを実行する。
【0109】
別の例として、メモ化技術は、両パーティ間の各トランザクションに適用することができる。一例では、多数のEKG(例えば、50個のEKG)をバッチ処理のために指定することができる。同じビーバーセットは、セット内の各EKGについて再度算出するのではなく、すべての50個のEKGに対して使用され得る。しかしながら、パターン認識を妨げるために、ビーバーセットは、配分方式で次のトランザクション(例えば、次のバッチのEKG)で再生成される。
【0110】
本開示の別の態様は、アルゴリズムサブセットによってデータサブセットを処理するときに追加の効率を提供することに関する。アルゴリズムは、2つの部分にスプリットされ、次いで、トランザクションにおいて2つのパーティ間に配分される。制御ビットは、回路の実際の最終評価が何であるかを最終的に解読する、異なるデータサブセットおよびアルゴリズムサブセットに対して算出を実行する2つの異なるスポットまたは位置の間で使用されるだろう。
【0111】
本明細書に開示される1つのアプローチは、ビーバーセットを使用して、より少ない通信ホップでの乗算を可能にする。ビーバーセット(または同様の数学的構造)は、上記で導入され、算出時(例えば、アルゴリズムが暗号化および/または配分された後)に用いられて、デバイス、または計算が発生している異なる場所間の交換の量を低減することができる。このアプローチにより、交換が必要になる前に、計算をより高速に実行することが可能になる。次に、このアプローチは、ニューラルネットワークの様々な層におけるフィルタのコンテキストで記載される。
【0112】
図9Dは、例示的な方法948を示す。方法は、ステップ950において、1つ以上の計算デバイスを介して、ニューラルネットワークの第1の層における複数のフィルタを第1のフィルタセットおよび第2のフィルタセットに分割することと、ステップ952において、1つ以上の計算デバイスを介して、第1のフィルタセットの各々をニューラルネットワークの入力に適用して、第1の出力セットを生成することと、ステップ954において、第2のフィルタセットに関連付けられた第2の出力セットを取得することと、を含み、第2の出力セットは、第2のフィルタセットの各々のニューラルネットワークの入力への適用に基づく。ステップ956において、複数のフィルタからの同じフィルタに対応する第1のフィルタセットおよび第2のフィルタセットにおける各フィルタセットに対して、方法は、1つ以上の計算デバイスを介して、ニューラルネットワークの第2の層で、フィルタセットにおける第1のフィルタに関連付けられた第1の出力セットのそれぞれの1つと、フィルタセットにおける第2のフィルタに関連付けられた第2の出力セットのそれぞれの1つとをアグリゲートして、第1のフィルタセットおよび第2のフィルタセットに関連付けられたアグリゲートされた出力セットを生成することを含む。
【0113】
方法は、ステップ958において、1つ以上の計算デバイスを介して、ニューラルネットワークの各残りの層において活性化された特定のニューロンのそれぞれの重みをスプリットして、第1の重みセットおよび第2の重みセットを生成することをさらに含み、特定のニューロンは、アグリゲートされた出力セットに適用された1つ以上の活性化関数に基づいて活性化される。各残りの層からの各特定のニューロンにおいて、方法は、ステップ960において、1つ以上の計算デバイスを介して、各特定のニューロンに関連付けられたそれぞれのフィルタおよび第1の重みセットからの第1の対応する重みを適用して、第1のニューロン出力セットを生成することと、ステップ962において、特定のニューロンに関連付けられた第2のニューロン出力セットを取得することであって、第2のニューロン出力セットは、各特定のニューロンに関連付けられたそれぞれのフィルタの、第2の重みセットからの第2の対応する重みへの適用に基づく、取得することと、ステップ964において、各特定のニューロンに対して、特定のニューロンに関連付けられた第1のニューロン出力セットのうちの1つと特定のニューロンに関連付けられた第2のニューロン出力セットのうちの1つをアグリゲートして、特定のニューロンに関連付けられアグリゲートされたニューロン出力を生成することと、ステップ966において、アグリゲートされたニューロン出力のうちの1つ以上に基づくニューラルネットワークの出力を生成することと、を含む。上記方法は、任意の順序で識別されたステップのうちの任意の1つ以上を含むことができる。
【0114】
図10は、本明細書に説明されるように処理されるアルゴリズムを表すことができる例示的なニューラルネットワーク1000を示す。ニューラルネットワークは、多くの場合、視覚画像を分析または評価するために使用されるか、または画像認識、ビデオ認識、音声もしくは自然言語処理などに使用され得る。畳み込みニューラルネットワーク(CNN)は、入力を受信し、入力を畳み込み、それを次の隠れ層104Aまたは隠れ層1004A、1004B、1004Cのグループに渡す入力層1002を有する。各層は、前の層の制限されたサブエリアであり得る前の層から入力を受信する。CNN1000の隠れ層は、乗算または他のドット積で畳み込む一連の畳み込み層を含むことができる。活性化関数、またはRe-LU層は、その後、隠れ層1004A、1004B、1004Cと呼ばれる、プーリング層、全結合層、および正規化層などの追加の畳み込みが続く。「隠れ」という用語は、入力および出力が活性化関数および最終畳み込みによってマスクされているために使用される。最終畳み込みは、出力層1006で最終生成物をより正確に重み付けするための逆伝播を伴うことができる。数学的には、「畳み込み」は、スライディングドット積または相互相関を適用することを含むことができる。
【0115】
ニューラルネットワーク内の各ニューロンは、出力値を計算する。前の層からの入力値に特定の関数を適用する。適用される関数は、重みおよびバイアスのベクトルによって判定され得る。学習プロセスには、バイアスおよび重みに対する調整を反復的に行うことを伴う。一態様では、重みおよびバイアスのベクトルはフィルタと呼ばれ、入力における特定の特徴を表す。例えば、特徴は、画像の色、または形状を含むことができる。CNNでは、一部のニューロンは、同じフィルタをシェアすることができ、これは、単一のフィルタがグループにわたって使用され得るか、またはフィルタをシェアするすべての受容野にわたって使用され得るため、メモリ要件を低減することができる。他の態様では、各受容野は、独自のバイアスおよびベクトル重み付けを有し得る。出力層1006は、ニューラルネットワークプロセスの結果を提供する。
【0116】
CNNが、本開示において主に言及されるが、本開示は、任意の特定のタイプのニューラルネットワークまたは機械学習技術に限定されない。
【0117】
図11は、CNN1100の例示的な用途を示す。入力層1102は、示されるように画像または画像の特定の部分を処理し始める。画像は、1つ以上の畳み込み隠れ層1104Aによって上述のように処理され、次いでプーリング隠れ層1104Bに通信される。プーリング層は、1つの層におけるニューロンクラスタの出力を次の層における単一のニューロンに組み合わせることによって、データの次元を低減することができる。グローバルプーリングは、畳み込み層のすべてのニューロンに対して動作することができる。さらに、プーリングは、最大または平均を計算し得る。最大プーリングは、前の層におけるニューロンのクラスタの各々からの最大値を使用する。平均プーリングは、前の層におけるニューロンのクラスタの各々からの平均値を使用する。プーリング層1104Aは、これらの動作のうちのいずれかを実行することができる。
【0118】
全結合層1104Cは、ある層におけるすべてのニューロンを別の層におけるすべてのニューロンに接続する。この層は、従来の多層パーセプトロンニューラルネットワーク(MLP)と類似している。フラット化された行列は、画像を分類するために全結合層を通過する。フラット化層は、シェアの再配置を伴う可能性のあるデータの再配置である。次いで、出力画像1110を分類することができる。例えば、出力は、画像を公園、または都市などとして識別し得る。
【0119】
畳み込みニューラルネットワークは、多くの異なる層を通じてデータを処理する。システムは、最初にCNNの1つの層において畳み込み動作を適用する。1100.次いで、次の層は、各行列に畳み込み動作を適用した後にシステムが最大値を取る最大プールとすることができる。CNNの第1の層では、システムは畳み込み動作を実行しているが、CNNのスプリットバージョンを実行している。画像データに対して、例えばシステムは、依然として、画像全体にわたって、ピクセルごとに同じウィンドウを実行する。しかし、フィルタ(重み、バイアス、または言い換えれば、数)は、2つのスプリットに変換され、フィルタの1は.5になり、2は1および1になり、3は2および1になる。このように画像をスプリットすることもできる。
【0120】
システムは、次いで、この画像のスプリットバージョンに対して再び動作を実行する。一例では、システムは、色チャネルの各々に対して、ピクセル値をランダムにスプリットすることができる。色コンテキストでは、値は、0~256の任意の値であってもよい。同様に、システムは、反対側が何らかの動作が起こっていることを認識しているが、フィルタが何であるかを具体的に知らない畳み込み動作を実行することができる。次に、次の層である最大プール層でアグリゲーションが発生することができる。次に、畳み込みおよび最大プール動作がどのように起こるかに基づいて、ニューラルネットワークの特定の点を活性化することができる。これらの点は通常、ニューラルネットワークにおけるニューロンと呼ばれ、活性化関数は、Re-LU関数、シグモイド関数、または他の関数とすることができる。
【0121】
Re-LU関数の例示的な用途では、Re-LU関数は、本質的に、特定の.0[point 0]までであり、その後、ニューロンは、1である。ニューロンはオンまたはオフのいずれかである。画像の入力値に応じて、Re-LU関数はニューラルネットワークにおける特定の点をオンにし、本質的にニューロンをオンおよびオフに分離し、それらの異なるニューロンは異なって重み付けされる。本開示によれば、システムは、交換に参加するエンティティが、それらがそれ自体何をしているか知らないように、ここで重みをスプリットする。
【0122】
システムは、層がこれらの種類の動作を適用することによって、層ごとにデータを処理することに進む。最後の層は、ソフトマックス層とすることができる。アプローチは、システムが複雑な数学を実行してそれを隠すにもかかわらず、同じソフトマックス層を出力する。ソフトマックス層はニューラルネットワークの出力を明らかにするものである。このプロセスの1つの技術的な利点は、より少ないネットワークホップで結果を取得することである。
【0123】
さらに、図11およびCNNの様々な層を参照すると、本開示は、CNN1100の例示的な評価を通じて次のステップに進む。一例では、入力A:n*m*dと仮定する。各カーネルに対応する重みを隠すことによって、畳み込み層1104Aを隠すことができる。したがって、各カーネルは、(m*n)サイズおよび深さdで入力の各層に沿って移動する。この例では、層内および層間の乗算および加算がある。通信の数を最小限に抑えるために、本開示は、最初にすべての乗算を計算し、次いで、加算を計算することを提供する。各カーネルに対して、システムは通信上で必要となる。
【0124】
フラット化層を使用して、シェアを再配置することができる。最大プーリング層1104Bを使用することができる。最大プーリングには2つの例示的なアプローチがある。最初に、入力>入力である場合、関数f=max(入力,入力)の出力はAである。このような場合に、システムは、SMPCを使用して2つの通信で最大2つの入力を求めることができる。別の例では、入力>入力である場合、関数f=max(入力,入力)の出力は、入力とすることができる。この場合に、システムは比較回路を作成し、((1-(A>B))*B+(A>B)*Aを使用して、より大きな値を出力する必要がある。第1の方法に対するこの方法の利点は、どのパーティも最大値の場所について学習しないことであるが、一方で、計算および時間の観点からは費用がかかる。
【0125】
シグモイド関数は、上記で言及した。シグモイド関数は、e/(1+e)である。入力Xに対してこの関数を評価するには、以下のように新しいアイデアが適用される。プロセスは、2つの部分に分割される。最初に、システムは、本明細書に開示されているビーバーセットのアイデアを使用して、eを計算する。以下を含む前処理部分がある。
・ユーザAおよびユーザBは、第1の列がランダムであり、第2の列がランダムであり、第2の列が1/eAおよび1/eBとなるように2つのランダムビーバーセットを生成し、rおよびrは、第1の列における値である。
・ユーザAは、enc(r)およびenc(1/eA)をユーザBに送信する。
・ユーザBは、最終的なビーバーセットからユーザBのシェアであるランダム列[a]=mおよび[b]=mを生成する。
・ユーザBは、enc(m-(r+r))およびenc(m-(1/eAx1/eB)を計算し、それらをユーザAに送信する。
・ユーザAのシェアは、[a]=(r+r)-mおよび[b]=(1/eAx1/eB)-mである。
【0126】
次に、eを計算するアプローチを示す。
・ユーザAは、[x]+[a]をオープンにし、ここで、aは第1の列であり、第nの行(nは、システムが1行にわたって消費する各aに対するカウンタである。
・ユーザBは、[x]+[a]をオーブンにし、ここで、両方のパーティが、x+aを学習する。
・eのユーザAのシェアは、(e(x+a))x[b]であり、eのユーザBのシェアは、(e(x+a)x[b])である。
【0127】
Nestは、x/yに対する除算アルゴリズムの一例を示す。
・ユーザAおよびユーザBは、2つのランダム数[r]および[r]を選択し、共同でyrおよび1/yrを計算する。
・ユーザAおよびユーザBは、[xr]および[xr]を共同で計算する。
・除算のユーザAのシェアは、[xr]/yrであり、ユーザBのシェアは、[xr]/yrである。
【0128】
シグモイド関数は、除算および指数関数からなるため、システムは、上記に説明したようにそれを計算することができる。本開示は、指数関数的発明を使用して、次いで、ニューラルネットワークに対するReLU活性化を計算する。これは、シグモイド様関数を介して近似的にReLUによって達成される。Relu関数は、シグモイド様関数として機能し、上記のアイデアの導関数として計算することもできる。Reluを計算するためのいくつかの可能なアプローチがある。まず、両パーティは、xがゼロより大きいか小さいかを学習する。ゼロより大きい場合、パーティはシェアを変更しない。ゼロより小さい場合、それらのシェアは0に置き換えられる。このアプローチには、いくつかのセキュリティ上の問題を有する。別のアプローチでは、パーティは何も学習しないが、ゲートレベルで動作するため、より遅い。
【0129】
全結合層1104Cでは、各層は、入力に対する行列乗算として作用し、SMPCは、加算および乗算をサポートする。この層を隠すために、システムは、すべてゼロに等しい入力重みでいくつかのダミーノードを追加するため、重みもネットワークの構造も学習されない。
【0130】
畳み込みニューラルネットの基本的なアイデアは、システムが次の層まで畳み込みネットの出力を必要としないということである。システムは、乗算通信を延期することができる。言い換えると、各フィルタ、fおよび入力Iに対して、システムは、フィルタを沿って移動させ、部分的に乗算を計算することができる。あるいは、システムは、次の層への通信が発生する前に、必要なことは何でも実行することができる。
【0131】
図12は、本明細書に開示される原理によるニューラルネットワークを処理する方法1200を示す。ステップ1202において、方法は、ニューラルネットワークの第1の層における複数のフィルタを、第1のフィルタセットおよび第2のフィルタセットに分割することを含む。ステップ1204において、方法は、第1のフィルタセットの各々をニューラルネットワークの入力に適用して、第1の出力セットを生成することと、ステップ1206において、第2のフィルタセットに関連付けられた第2の出力セットを取得することと、を含み、第2の出力セットは、第2のフィルタセットの各々のニューラルネットワークの入力への適用に基づく。ステップ1208において、複数のフィルタからの同じフィルタに対応する第1のフィルタセットおよび第2のフィルタセットにおける各フィルタセットに対して、方法は、ニューラルネットワークの第2の層で、フィルタセットにおける第1のフィルタに関連付けられた第1の出力セットのそれぞれ1つと、フィルタセットにおける第2のフィルタに関連付けられた第2の出力セットのそれぞれ1つとをアグリゲートして、第1のフィルタセットおよび第2のフィルタセットに関連付けられたアグリゲートされた出力セットを生成することを含む。ステップ1210において、方法は、ニューラルネットワークの各残りの層において活性化された特定のニューロンのそれぞれの重みをスプリットして、第1の重みセットおよび第2の重みセットを生成することを含み、特定のニューロンは、アグリゲートされた出力セットに適用された1つ以上の活性化関数に基づいて活性化される。ステップ1212において、方法は、各残りの層からの各特定のニューロンにおいて、各特定のニューロンに関連付けられたそれぞれのフィルタおよび第1の重みセットからの第1の対応する重みを適用して、第1のニューロン出力セットを生成することを含む。ステップ1214において、方法は、特定のニューロンに関連付けられた第2のニューロン出力セットを取得することを含み、第2のニューロン出力セットは、各特定のニューロンに関連付けられたそれぞれのフィルタの第2の重みセットからの第2の対応する重みへの適用に基づく。方法は、ステップ1216において、各特定のニューロンに対して、特定のニューロンに関連付けられた第1のニューロン出力セットのうちの1つと特定のニューロンに関連付けられた第2のニューロン出力セットのうちの1つをアグリゲートして、特定のニューロンに関連付けられアグリゲートされたニューロン出力を生成することと、ステップ1218において、アグリゲートされたニューロン出力のうちの1つ以上に基づいてニューラルネットワークの出力を生成することと、を含む。
【0132】
一態様では、複数のフィルタは、複数のフィルタ値を含むことができ、第1のフィルタセットは、第1の値セットを含み、第2のフィルタセットは、第2の値セットを含む。上述のように、ニューラルネットワークの入力は、画像データまたは任意の他のタイプのデータを含むことができる。第1の出力セットは、第1のフィルタセット内の各フィルタからの第1のそれぞれの出力をさらに含み得る。
【0133】
一態様では、ニューラルネットワークの第1の層は、畳み込み層を含むことができ、ニューラルネットワークは、畳み込みニューラルネットワークを含むことができる。しかしながら、上述したように、本開示は、特定の畳み込みニューラルネットワークに限定されない。ニューラルネットワーク内の少なくとも1つの残りの層は、プーリング層、正規化層、完全接続層、および出力層のうちの少なくとも1つを含むことができる。正規化層は、非表示層の1つにすることができる。最先端の深層ニューラルネットワークを訓練することは、計算コストがかかる可能性がある。訓練時間を短縮する1つの方法は、ニューラルネットワーク内のニューロンの活動を正規化することである。バッチ正規化は、トレーニングケースのミニバッチにわたるニューロンへの合計された入力の分布を使用して、平均と分散を計算し、これを使用して各トレーニングケースでそのニューロンへの合計された入力を正規化する。これにより、フィードフォワード型ニューラルネットワークの訓練時間が大幅に短縮される。一態様では、正規化層を使用することは、隠れた状態のダイナミクスを安定させることができる。
【0134】
別の態様において、1つ以上の活性化関数は、整流された線形単位関数、シグモイド関数、双曲線接線関数、およびソフトマックス関数のうちの少なくとも1つを含むことができる。
【0135】
ニューラルネットワークの入力は、画像を含むことができ、ニューラルネットワークの出力は、画像内で検出された1つ以上の特徴の表示および/または画像内の1つ以上の特徴の分類の少なくとも1つを含むことができる。
【0136】
別の態様では、複数のフィルタを第1のフィルタセットおよび第2のフィルタセットに分割することは、複数のフィルタ内の各フィルタを、組み合わされたときに、フィルタの値に等しい第1の値および第2の値のセットにランダムに分割することを含むことができる。
【0137】
方法は、第2のフィルタセットをリモート計算デバイスに送信し、リモート計算デバイスから第2のフィルタセットに関連付けられた第2の出力セットを取得することをさらに含むことができる。別の態様では、方法は、重みの第2のセットをリモート計算デバイスに送信することと、特定のニューロンと関連付けられたニューロン出力の第2のセットをリモート計算デバイスから取得することとを含むことができる。
【0138】
図13は、データ動作および要求を処理し、データコンテンツおよび/またはメタデータを記憶し、他の計算動作を実行するために使用され得るシステム1300の例示的な計算システムアーキテクチャを示す。この例では、システム1300の構成要素は、バスなどの接続1305を使用して互いに電気通信する。システム1300は、処理ユニット(CPUまたはプロセッサ)1310と、プロセッサ1310に、読み出し専用メモリ(ROM)1320およびランダムアクセスメモリ(RAM)1325などのメモリ1315を含む様々なシステム構成要素を結合する接続1305と、を含む。システム1300は、プロセッサ1310に直接接続されるか、プロセッサ1310に近接するか、またはプロセッサ1310の一部として一体化される高速メモリのキャッシュを含むことができる。システム1300は、プロセッサ1310による迅速なアクセスのために、メモリ1315および/または記憶デバイス1330からキャッシュ1312にデータをコピーすることができる。このようにして、キャッシュは、データを待つ間プロセッサ1310の遅延を回避するパフォーマンスブーストを提供することができる。これらおよび他のモジュールは、様々なアクションを実行するようにプロセッサ1310を制御する、または制御するように構成され得る。他のメモリ1315が、同様に利用可能であってもよい。メモリ1315は、異なる性能特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ1310は、プロセッサ1310を制御するように構成された、任意の汎用プロセッサ、およびハードウェア、または記憶デバイス1330に記憶されるサービス1 1332、サービス2 1334、およびサービス3 1336などのソフトウェアサービス、ならびにソフトウェア命令が実際のプロセッサ設計に組み込まれた専用プロセッサを含むことができる。プロセッサ1310は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む完全に自己完結型の計算システムであってもよい。マルチコアプロセッサは、対称的または非対称的であり得る。
【0139】
計算システム1300とのユーザ対話を可能にするために、入力デバイス1345は、発話用マイク、ジェスチャまたはグラフィカル入力用のタッチ感知スクリーン、キーボード、マウス、モーション入力、発話などの任意の数の入力機構を表すことができる。出力デバイス1335はまた、当業者に既知のいくつかの出力機構のうちの1つ以上とすることができる。場合によっては、マルチモーダルシステムは、ユーザが計算システム1300と通信するために複数のタイプの入力を提供することを可能にすることができる。通信インターフェース1340は、一般に、ユーザ入力およびシステム出力を統括および管理することができる。任意の特定のハードウェア配置に対する動作に制限はなく、したがって、ここでの基本的な特徴は、それらが開発されるにつれて、改善されたハードウェアまたはファームウェア配置に容易に代替され得る。
【0140】
記憶デバイス1330は、不揮発性メモリであり、ハードディスク、または磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル汎用ディスク、カートリッジ、ランダムアクセスメモリ(RAM)1325、読み出し専用メモリ(ROM)1320、およびそれらのハイブリッドなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体とすることができる。
【0141】
記憶デバイス1330は、プロセッサ1310を制御するためのサービス1332、1334、1336を含むことができる。他のハードウェアまたはソフトウェアモジュールが企図される。記憶デバイス1330は、接続1305に接続され得る。一態様では、特定の機能を実行するハードウェアモジュールは、機能を実施するために、プロセッサ1310、接続1305、出力デバイス1335などの必要なハードウェア構成要素に関連してコンピュータ可読媒体に記憶されたソフトウェア構成要素を含むことができる。
【0142】
説明を明確にするために、いくつかの例では、本技術は、デバイス、デバイス構成要素、ソフトウェアに具現化された方法におけるステップもしくはルーチン、またはハードウェアおよびソフトウェアの組み合わせを含む、個々の機能ブロックを含むものとして提示され得る。
【0143】
いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含有するケーブルまたは無線信号を含むことができる。ただし、言及されるとき、非一時的なコンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明示的に除外する。
【0144】
上述の例による方法は、コンピュータ可読媒体に記憶されているか、またはそうでなければコンピュータ可読媒体から利用可能なコンピュータ実行可能命令を使用して実装することができる。このような命令は、例えば、特定の機能または機能のグループを実行するために汎用コンピュータ、専用コンピュータ、または専用処理デバイスを生じさせるか、または他の方法で構成する命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形態命令、ファームウェア、またはソースコードであってもよい。説明された例による方法中に作成された命令、使用される情報、および/または情報を記憶するために使用され得るコンピュータ可読媒体の例としては、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク記憶デバイスなどを含む。
【0145】
これらの開示による方法を実装するデバイスは、ハードウェア、ファームウェア、および/またはソフトウェアを含むことができ、多様なフォームファクターのうちのいずれかを取ることができる。このようなフォームファクターの典型的な例として、ラップトップ、スマートフォン、小型フォームファクタパーソナルコンピュータ、パーソナルデジタルアシスタント、ラックマウントデバイス、スタンドアロンデバイスなどが挙げられる。本明細書に記載される機能性はまた、周辺機器またはアドインカードにおいて具現化され得る。このような機能性はまた、さらなる例として、単一のデバイスで実行される異なるチップまたは異なるプロセスの間で回路基板上に実装することができる。
【0146】
命令、そのような命令を搬送するための媒体、それらを実行するための計算リソース、およびそのような計算リソースをサポートするための他の構造は、これらの開示で記載される機能を提供するための手段である。
【0147】
多様な実施例および他の情報が別添の特許請求の範囲内の態様を説明するために使用されたが、当業者であれば、これらの実施例を使用して多種多様な実装形態を導出することができるため、特許請求の範囲の限定は、このような実施例の特定の特徴または配置に基づいて含意されるものではない。さらに、いくつかの主題は、構造的特徴および/または方法ステップの例に特有の言語で記載され得るが、添付の特許請求の範囲で定義される主題が、必ずしもこれらの記載された特徴または行為に限定されないことを理解されたい。例えば、このような機能性は、本明細書で識別されるもの以外の構成要素において異なるように配分され得るか、または実施され得る。むしろ、記載される特徴およびステップは、別添の特許請求の範囲内のシステムおよび方法の構成要素の例として開示されている。
【0148】
セット「のうちの少なくとも1つ」を列挙する請求項の言語は、セットの1つのメンバーまたはセットの複数のメンバーが請求項を満たすことを示す。例えば、「AおよびBのうちの少なくとも1つ」を列挙する請求項の言語は、A、B、またはAおよびBを意味する。
【0149】
ステートメントバンク
ステートメント1:システムであって、少なくとも1つのプロセッサと、命令を記憶するコンピュータ可読記憶デバイスと、を含み、命令が、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、アルゴリズムプロバイダからアルゴリズムを受信することと、データプロバイダからデータを受信することと、アルゴリズムを、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータセットの別個かつ独立した処理のために第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することであって、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットが、組み合わされたときに、アルゴリズムを構成する、分割することと、を行わせる。ステップはさらに、プロセッサに、データを第1のデータサブセットおよび第2のデータサブセットに分割することと、処理のために、第1のアルゴリズムサブセットおよび第1のデータサブセットを、第1のエンティティに送信することと、処理のために、第2のアルゴリズムサブセットおよび第2のデータサブセットを、第2のエンティティに送信することであって、第1のエンティティが、第1のアルゴリズムサブセットを第1のデータサブセットで処理し、第2のエンティティが、第2のアルゴリズムサブセットを第2のデータで処理し、第1のエンティティおよび第2のエンティティが、第1のアルゴリズムサブセットを第1のデータサブセットで処理し、第2のアルゴリズムサブセットを第2のデータで処理しながら、中間部分結果を交換する、送信することと、を行わせることを含むことができる。ステップはさらに、プロセッサに、第1のエンティティから、第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、第2のエンティティから、第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信すること、および/または第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することを行わせることを含むことができる。ステートメント1のステップのうちの任意の1つ以上は、任意の順序で実行され得る。
【0150】
ステートメント2:コンピュータ可読記憶デバイスが、追加の命令を記憶し、追加の命令が、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、アルゴリズムをブール論理ゲートセットに変換することであって、第1のアルゴリズムサブセットが、ブール論理ゲートセットの第1のブール論理ゲートサブセットに対応し、第2のアルゴリズムサブセットが、ブール論理ゲートセットの第2のブール論理ゲートサブセットに対応する、変換することを行わせる、ステートメント1に記載のシステム。
【0151】
ステートメント3.第1のブール論理ゲートサブセットおよび第2のブール論理ゲートサブセットが、ANDゲートおよびXORゲートを含む、先行ステートメントのいずれか1つに記載のシステム。
【0152】
ステートメント4.アルゴリズムプロバイダが、少なくとも1つの第1の計算デバイスを含み、データプロバイダが、少なくとも1つの第2の計算デバイスを含む、先行ステートメントのいずれか1つに記載のシステム。
【0153】
ステートメント5.コンピュータ可読記憶デバイスが、追加の命令を記憶し、追加の命令が、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、組み合わされた結果をデータプロバイダに送信し、組み合わされた結果の表現を表示することを行わせる、先行ステートメントのいずれか1つに記載のシステム。
【0154】
ステートメント6.コンピュータ可読記憶デバイスが、追加の命令を記憶し、追加の命令が、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、組み合わされた結果をアルゴリズムプロバイダに送信し、組み合わされた結果の表現を表示することを行わせる、先行ステートメントのいずれか1つに記載のシステム。
【0155】
ステートメント7.アルゴリズムが、アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択される、先行ステートメントのいずれか1つに記載のシステム。
【0156】
ステートメント8.アルゴリズムが、ブール論理セット、ニューラルネットワーク、または代数的回路のうちの1つによって表される、先行ステートメントのいずれか1つに記載のシステム。
【0157】
ステートメント9.コンピュータ可読記憶デバイスが、追加の命令を記憶し、追加の命令が、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、アルゴリズムを暗号化し、データを暗号化することを行わせる、先行ステートメントのいずれか1つに記載のシステム。
【0158】
ステートメント10.以下のステップ:少なくとも1つのプロセッサによって、アルゴリズムプロバイダからアルゴリズムを受信するステップ、少なくとも1つのプロセッサによって、データプロバイダからデータを受信するステップ、少なくとも1つのプロセッサによって、アルゴリズムを、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータセットの別個かつ独立した処理のために第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割するステップであって、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットが、組み合わされたときに、アルゴリズムを構成する、分割するステップ、少なくとも1つのプロセッサによって、データを第1のデータサブセットおよび第2のデータサブセットに分割するステップ、処理のために、第1のアルゴリズムサブセットおよび第1のデータサブセットを、第1のエンティティに送信するステップ、処理のために、第2のアルゴリズムサブセットおよび第2のデータサブセットを、第2のエンティティに送信するステップであって、アルゴリズムプロバイダが、第1のアルゴリズムサブセットおよび第1のデータサブセットを処理し、データプロバイダが、第2のアルゴリズムサブセットおよび第2のデータサブセットを処理し、第1のエンティティおよび第2のエンティティが、第1のアルゴリズムサブセットを第1のデータサブセットで処理し、第2のアルゴリズムサブセットを第2のデータで処理しながら、複数の中間部分結果を交換する、送信するステップ、少なくとも1つのプロセッサによって、第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信するステップ、および/または少なくとも1つのプロセッサによって、第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定するステップ、のうちの任意の1つ以上を任意の順序で含む方法。
【0159】
ステートメント11.アルゴリズムを第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することが、アルゴリズムをブール論理ゲートセットに変換することであって、第1のアルゴリズムサブセットが、ブール論理ゲートセットの第1のブール論理ゲートサブセットによって表され、第2のアルゴリズムサブセットが、第2のブール論理ゲートセットによって表される、変換することをさらに含む、ステートメント10に記載の方法。
【0160】
ステートメント12.第1のブール論理ゲートサブセットおよび第2のブール論理ゲートサブセットが、ANDゲートおよびXORゲートを含む、先行ステートメントのいずれか1つに記載の方法。
【0161】
ステートメント13.アルゴリズムプロバイダが、少なくとも1つの第1の計算デバイスを含み、データプロバイダが、少なくとも1つの第2の計算デバイスを含む、先行ステートメントのいずれか1つに記載の方法。
【0162】
ステートメント14.組み合わされた結果をデータプロバイダに送信し、組み合わされた結果の表現を表示することをさらに含む、先行ステートメントのいずれか1つに記載の方法。
【0163】
ステートメント15.組み合わされた結果をアルゴリズムプロバイダに送信し、組み合わされた結果の表現を表示することをさらに含む、先行ステートメントのいずれか1つに記載の方法。
【0164】
ステートメント16.アルゴリズムが、アルゴリズムプロバイダによって提供されるアルゴリズムのリストから選択される、先行ステートメントのいずれか1つに記載の方法。
【0165】
ステートメント17.アルゴリズムが、ブール論理セット、ニューラルネットワーク、または代数的回路のうちの1つによって表される、先行ステートメントのいずれか1つに記載の方法。
【0166】
ステートメント18.アルゴリズムを暗号化し、データを暗号化することをさらに含む、先行ステートメントのいずれか1つに記載の方法。
【0167】
ステートメント19.命令を内部に記憶した非一時的なコンピュータ可読記憶媒体であって、命令が、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサに、以下の動作のうちの任意の1つ以上を任意の順序で行わせる、非一時的なコンピュータ可読記憶媒体。すなわち、アルゴリズムプロバイダからアルゴリズムを受信すること、データプロバイダからデータを受信すること、アルゴリズムを、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットによるそれぞれのデータの別個かつ独立した処理のために第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットに分割することであって、第1のアルゴリズムサブセットおよび第2のアルゴリズムサブセットが、組み合わされたときに、アルゴリズムを構成する、分割すること、データを第1のデータサブセットおよび第2のデータサブセットに分割すること、第1のアルゴリズムサブセットおよび第1のデータサブセットを第1のエンティティに送信すること、第2のアルゴリズムサブセットおよび第2のデータサブセットを第2のエンティティに送信することであって、第1のエンティティおよび第2のエンティティが、第1のアルゴリズムサブセットを第1のデータサブセットで処理し、第2のアルゴリズムサブセットを第2のデータで処理しながら、中間部分結果を交換する、送信すること、第1のエンティティから第1のアルゴリズムサブセットおよび第1のデータサブセットに基づく第1の部分結果を受信し、第2のエンティティから第2のアルゴリズムサブセットおよび第2のデータサブセットに基づく第2の部分結果を受信すること、および/または第1の部分結果および第2の部分結果に基づく組み合わされた結果を判定することである。
【0168】
ステートメント20.命令を記憶し、命令が、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサに、アルゴリズムをブール論理ゲートセットに変換することであって、第1のアルゴリズムサブセットが、ブール論理ゲートセットの第1のブール論理ゲートサブセットに対応し、第2のアルゴリズムサブセットが、ブール論理ゲートセットの第2のブール論理ゲートサブセットに対応する、変換することを行わせる、ステートメント19に記載の非一時的なコンピュータ可読記憶媒体。
図1
図2
図3
図4A
図4B
図4C
図4D
図5
図6
図7
図8
図9A
図9B
図9C
図9D-1】
図9D-2】
図10
図11
図12-1】
図12-2】
図13
【国際調査報告】