JP2024505105A - データベースクエリ結果を検証するための方法及びそのデバイス - Google Patents
データベースクエリ結果を検証するための方法及びそのデバイス Download PDFInfo
- Publication number
- JP2024505105A JP2024505105A JP2023548199A JP2023548199A JP2024505105A JP 2024505105 A JP2024505105 A JP 2024505105A JP 2023548199 A JP2023548199 A JP 2023548199A JP 2023548199 A JP2023548199 A JP 2023548199A JP 2024505105 A JP2024505105 A JP 2024505105A
- Authority
- JP
- Japan
- Prior art keywords
- query
- database
- commitment
- proof
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012795 verification Methods 0.000 claims abstract description 110
- 230000004044 response Effects 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 16
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 abstract description 20
- 238000010200 validation analysis Methods 0.000 abstract description 17
- 238000004891 communication Methods 0.000 description 25
- 239000000543 intermediate Substances 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000037406 food intake Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データを受信し、そのデータをデータベースのテーブルに保存し、データベーステーブルに関連付けられたクエリを受信する方法、非一時的なコンピュータ可読媒体、及びクエリ検証装置が開示される。クエリプラン及びクエリ結果がクエリに対して生成され、1つまたは複数の部分的証明が1つまたは複数のコミットメントから生成され、全体的な証明が1つまたは複数の部分的証明から生成される。いくつかの例では、1つまたは複数の部分的証明のそれぞれが、有向非巡回グラフを含み得るクエリプランの少なくとも1つのノードに関連付けられる。全体的な証明は、クエリ結果の検証を容易にするために、クエリに応答してクエリ結果とともに返される。いくつかの例では、1つまたは複数のGPUが1つまたは複数のコミットメントを生成するように構成され、それによって、検証プロセスが加速され、データベースのスケーラビリティが向上する。【選択図】図1
Description
本出願は、2022年8月26日に出願された米国特許出願第17/897,102号に対する優先権を主張し、同出願は2022年7月1日に出願された米国仮特許出願第63/357,930号に対する優先権を主張し、それぞれ参照により、その全体が本明細書に組み込まれる。
分野
本技術は一般に、アウトソーシングされたデータベースのセキュリティに関し、より詳細には、アウトソーシングされたデータベースのクエリ結果を改ざん軽減のために検証する方法及びデバイスに関する。
本技術は一般に、アウトソーシングされたデータベースのセキュリティに関し、より詳細には、アウトソーシングされたデータベースのクエリ結果を改ざん軽減のために検証する方法及びデバイスに関する。
背景
データの保存及び取得のために、アウトソーシングされたデータベースが、ますます利用されるようになっている。集中型データベースを含め、データベースは任意の数のトポロジを持つことができるが、アウトソーシングされたデータベースのユビキタスな展開タイプの1つは、(クラウドネットワークなどで)複数のサーバ、他のコンピューティングデバイス、または他のハードウェアリソースにわたってホストされる分散型データベースである。一例として、ブロックチェーンネットワークは、ブロックチェーンネットワーク上に保存されたデータをカプセル化する分散型台帳の形式でデータベースを維持する分散ノードを含む。
データの保存及び取得のために、アウトソーシングされたデータベースが、ますます利用されるようになっている。集中型データベースを含め、データベースは任意の数のトポロジを持つことができるが、アウトソーシングされたデータベースのユビキタスな展開タイプの1つは、(クラウドネットワークなどで)複数のサーバ、他のコンピューティングデバイス、または他のハードウェアリソースにわたってホストされる分散型データベースである。一例として、ブロックチェーンネットワークは、ブロックチェーンネットワーク上に保存されたデータをカプセル化する分散型台帳の形式でデータベースを維持する分散ノードを含む。
しかしながら、アウトソーシングされたデータベースをホストしているリソースの所有者は、保存されているデータや、ホストされているデータベースから送信されたクエリの結果を改ざんする能力を有し得る。ブロックチェーンネットワークでは、分散型データベースを構成するノードは一般に信頼できず、特に保存されたデータ(例えば、暗号通貨データ)の性質によって悪意のある者が動機付けられている場合、改ざんやその他の悪意のある行動の影響を受けやすい。集中型データベースと分散型データベースはどちらも信頼できない可能性があるが、完全に分散型のトポロジでは誰でもデータベースホストとして行動する能力を有するため、改ざんのリスクが増し、データベースから返されるクエリ結果の信頼性が低下する。
残念ながら、現在、信頼できないサードパーティのネットワーク参加者(複数可)が提供するリソース上でホストされているアウトソーシングされたデータベースによって維持されているデータに対して実行されたデータベースクエリ結果を証明する効率的な方法は無い。より具体的には、データベースクエリ結果を検証する現在の試みでは、データベースクエリ自体に大量の計算と関連するオーバーヘッドが追加され、データベースのスケーラビリティが制限される。
概要
クエリ検証装置によって実行され、かつ、受信データから第1のコミットメントを生成及び記憶することと、少なくとも1つの証明デバイスがホストするデータベースのテーブルに挿入するために受信データを少なくとも1つの証明デバイスに送信することとを含む、データベースクエリ結果を検証するための方法が開示される。クエリ結果及び全体的な証明は、受信クエリが少なくとも1つの証明デバイスに転送され、かつ少なくともデータベーステーブルを含む1つまたは複数のテーブルに関連付けられることに応答して、少なくとも1つの証明デバイスから受信される。全体的な証明は、少なくとも1つの証明デバイスの1つまたは複数のグラフィックス処理ユニット(GPU)を使用して1つまたは複数の中間値から生成された1つまたは複数の中間コミットメントを少なくとも部分的に含む1つまたは複数の部分的証明から生成される。第1のコミットメント及び全体的な証明を使用して生成された、クエリ結果に対する第2のコミットメントに基づいてクエリ結果を検証した後に、クエリに応答して、クエリ結果とともに成功フラグが返される。
クエリ検証装置によって実行され、かつ、受信データから第1のコミットメントを生成及び記憶することと、少なくとも1つの証明デバイスがホストするデータベースのテーブルに挿入するために受信データを少なくとも1つの証明デバイスに送信することとを含む、データベースクエリ結果を検証するための方法が開示される。クエリ結果及び全体的な証明は、受信クエリが少なくとも1つの証明デバイスに転送され、かつ少なくともデータベーステーブルを含む1つまたは複数のテーブルに関連付けられることに応答して、少なくとも1つの証明デバイスから受信される。全体的な証明は、少なくとも1つの証明デバイスの1つまたは複数のグラフィックス処理ユニット(GPU)を使用して1つまたは複数の中間値から生成された1つまたは複数の中間コミットメントを少なくとも部分的に含む1つまたは複数の部分的証明から生成される。第1のコミットメント及び全体的な証明を使用して生成された、クエリ結果に対する第2のコミットメントに基づいてクエリ結果を検証した後に、クエリに応答して、クエリ結果とともに成功フラグが返される。
第1のプログラム命令が記憶されている第1のメモリと、第1のプロセッサと、1つまたは複数のGPUとを備える証明デバイスを含む、クエリ検証装置も開示される。第1のプロセッサは、記憶された第1のプログラム命令を実行して、検証デバイスからデータを受信し、受信したデータをデータベースのテーブルに保存し、検証デバイスからクエリを受信するように構成される。クエリは、少なくともデータベーステーブルを含む1つまたは複数のテーブルに関連付けられる。クエリプランとクエリ結果がクエリに対して生成され、1つまたは複数の部分的証明が1つまたは複数のコミットメントから生成され、全体的な証明が1つまたは複数の部分的証明から生成される。1つまたは複数の部分的証明のそれぞれは、クエリプランの少なくとも1つのノードに関連付けられる。全体的な証明は、クエリ結果の検証を容易にするために、クエリに応答してクエリ結果とともに返される。この例では、1つまたは複数のGPUは、記憶された第1のプログラム命令を実行して、1つまたは複数のコミットメントを生成するように構成される。
さらに、データベースクエリ結果を検証するための命令を記憶した非一時的なコンピュータ可読媒体が開示される。この媒体は、実行可能コードを含み、実行可能コードは、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、受信データから第1のコミットメントを生成及び記憶させ、少なくとも1つの証明デバイスがホストするデータベースの少なくとも1つのテーブルに挿入するために受信データを少なくとも1つの証明デバイスに送信させる。クエリ結果及び全体的な証明は、受信クエリが少なくとも1つの証明デバイスに転送され、かつ少なくともデータベーステーブルを含む1つまたは複数のテーブルに関連付けられることに応答して、少なくとも1つの証明デバイスから受信される。全体的な証明は1つまたは複数の部分的証明から生成され、部分的証明のそれぞれは、受信クエリから生成されたクエリプランの少なくとも1つのノードに関連付けられる。第1のコミットメント及び全体的な証明を使用して生成された、クエリ結果に対する第2のコミットメントに基づいてクエリ結果を検証した後に、クエリに応答して、クエリ結果とともに成功フラグが返される。
この技術は、信頼できない集中型及び分散型データベースホストから生成されたクエリ結果の信頼性を有利に促進する方法、非一時的なコンピュータ可読媒体、及びクエリ検証装置を含む多くの利点を提供する。いくつかの例では、この技術は、コミットメント、GPU、及び/またはクエリプランのうちの1つまたは複数を活用して、クエリ結果の精度を検証する。コミットメントは更新可能であり、クエリ結果は、データベースに保存されたデータにアクセスできないデバイス(クライアントデバイス、サードパーティの仲介者またはゲートウェイなど)によって検証される。したがって、この技術は、データベースのクエリをより効果的かつ効率的に検証し、スケーラビリティを大幅に向上させる。この大幅に向上したスケーラビリティにより、桁違いに大きなデータ量の処理など、この分野の技術の実用的な応用が促進される。
詳細な説明
図1を参照すると、通信ネットワーク(複数可)106(1)を介してクライアントデバイス108(1)~108(n)に結合され、通信ネットワーク(複数可)106(2)を介して、データベース112をホストする証明デバイス110(1)~110(n)に結合された検証デバイス104を有するクエリ検証装置102を含む例示的なネットワーク環境100が示されている。ネットワーク環境100は、例えば1つまたは複数のルータまたはスイッチなどの他のネットワークデバイスを含んでよく、これらは当技術分野で既知のため、本明細書では説明しない。この技術は、信頼できないアウトソーシングデータベースを信頼できるデータベースに効果的に変換するための、向上したセキュリティを有する、データを取り込み、クエリ結果を返す方法、非一時的なコンピュータ可読媒体、及びデバイスを含む、多くの利点を提供する。
図1を参照すると、通信ネットワーク(複数可)106(1)を介してクライアントデバイス108(1)~108(n)に結合され、通信ネットワーク(複数可)106(2)を介して、データベース112をホストする証明デバイス110(1)~110(n)に結合された検証デバイス104を有するクエリ検証装置102を含む例示的なネットワーク環境100が示されている。ネットワーク環境100は、例えば1つまたは複数のルータまたはスイッチなどの他のネットワークデバイスを含んでよく、これらは当技術分野で既知のため、本明細書では説明しない。この技術は、信頼できないアウトソーシングデータベースを信頼できるデータベースに効果的に変換するための、向上したセキュリティを有する、データを取り込み、クエリ結果を返す方法、非一時的なコンピュータ可読媒体、及びデバイスを含む、多くの利点を提供する。
この特定の例では、クライアントデバイス108(1)~108(n)、検証デバイス104、及び証明デバイス110(1)~110(n)が、専用ハードウェアデバイスとして図1に開示されている。しかしながら、クライアントデバイス108(1)~108(n)、検証デバイス104、または証明デバイス110(1)~110(n)の1つまたは複数は、ネットワーク環境100の1つまたは複数の他のデバイス内のソフトウェアに実装することもできる。一例として、検証デバイス104、ならびにそのコンポーネントまたはアプリケーションのいずれかは、クライアントデバイス108(1)~108(n)の1つで実行されるソフトウェアとして実装することができ、他の例では、実装及びネットワークトポロジの他の多くの変更及びタイプも使用することができる。
図1~2を参照すると、クエリ検証装置102の検証デバイス104は、証明デバイス110(1)~110(n)がホストするデータベース112に保存されるデータを取り込み、証明デバイス110(1)~110(n)からのクエリ結果を処理するために、クライアントデバイス108(1)~108(n)にインタフェースを提供することを含む任意の数の機能を実行することができる。この例における検証デバイス104は、バス206によって相互に結合された中央処理装置(CPU)(複数可)200、メモリ202、及び通信インタフェース204を含むが、他の構成では、検証デバイス104は他のタイプまたは数の要素を含み得る。
検証デバイス104のCPU(複数可)200は、本明細書で説明及び図示される任意の数の機能について、検証デバイス104のメモリ202に記憶されたプログラム命令を実行し得る。CPU(複数可)200は、例えば、1つまたは複数の処理コアを備えた1つまたは複数の汎用プロセッサを含み得るが、他のタイプのプロセッサ(複数可)も使用することができる。他の例では、検証デバイス104は、証明デバイス110及び図3の対応するハードウェアを参照して以下でより詳細に説明する機能を実行するように構成された1つまたは複数のグラフィックス処理ユニット(GPU)を含み得る。
メモリ202は、本明細書に説明及び図示される本技術の1つまたは複数の態様のために、これらのプログラム命令を記憶するが、プログラム命令の一部またはすべては、他の場所に記憶することができる。ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、ハードディスク、ソリッドステートドライブ、フラッシュメモリ、または、プロセッサ(複数可)に結合された、磁気的、光学的、または他の読み取り及び書き込みシステムによって読み取り及び書き込みが行われる他のコンピュータ可読媒体などの、様々な異なるタイプのメモリストレージデバイスを、メモリ202に使用することができる。
したがって、メモリ202は、コンピュータ実行可能命令を含み得るアプリケーションを記憶することができ、コンピュータ実行可能命令は、CPU(複数可)200によって実行されると、検証デバイス104に、例えば、ネットワークメッセージ及び要求の送信、受信、またはその他の処理などのアクション、ならびに以下に説明及び図示されている他のアクションを実行させる。アプリケーション(複数可)は、例えば、他のアプリケーション、オペレーティングシステム拡張機能、及び/またはプラグインのコンポーネントとして実装することができる。
さらに、アプリケーション(複数可)は、サービスとしてのソフトウェア(SaaS)モデルを介してアクセスが提供されるクラウドベースのコンピューティング環境で動作可能であってよい。アプリケーション(複数可)は、クラウドベースのコンピューティング環境で管理し得る仮想マシン(複数可)または仮想サーバ(複数可)内で、または仮想マシンまたは仮想サーバとして実行することができる。また、アプリケーション(複数可)、さらには検証デバイス104自体も、特定の物理ネットワークコンピューティングデバイスに結び付けられるのではなく、クラウドベースのコンピューティング環境で実行される仮想サーバ(複数可)に配置されてよい。また、アプリケーション(複数可)は、検証デバイス上で実行されかつハイパーバイザによって管理または監視される仮想マシン(VM)で実行されてよい。
この特定の例では、メモリ202は、コミットメントデータ208及び検証モジュール210を含む。検証モジュール210は、以下でより詳細に説明及び図示されるように、データの取り込み時にコミットメントを生成するように構成される。コミットメントは、コミットメントデータ208に記録された列ごとの値であり、これらの値は、以下でより詳細に説明及び図示されるように、証明デバイス110(1)~110(n)から返されたクエリ結果を検証するために検証モジュール210によって使用される。他の例では、他の情報をメモリ202に記憶することができ、他の例では、他のデータストア及び/またはアプリケーションまたはモジュールも検証デバイス104によってホストすることができる。
検証デバイス104の通信インタフェース204は、検証デバイス104、クライアントデバイス108(1)~108(n)、及び証明デバイス110(1)~110(n)の間を動作可能に結合し、通信する。これらは、この特定の例では、通信ネットワーク106(1)及び106(2)によって少なくとも部分的に一緒に結合されているが、他のデバイスまたは要素への他のタイプもしくは数の接続または構成を有する他のタイプもしくは数の通信ネットワークまたはシステムを使用することもできる。通信ネットワーク106(1)及び106(2)は、例えば、ワイドエリアネットワーク(WAN)(複数可)及び/またはローカルエリアネットワーク(LAN)(複数可)であってよく、イーサネット上のTCP/IP及び業界標準プロトコルを使用することができるが、他のタイプもしくは数のプロトコルまたは通信ネットワークを使用することもできる。通信ネットワーク(複数可)106は、例えばイーサネットベースのパケットデータネットワーク(PDN)を含む、任意の適切なインタフェース機構及びネットワーク通信技術を採用することができる。
この例では、検証デバイス104は単一のデバイスを含むものとして示されているが、他の例では、検証デバイス104は、複数のデバイスを含んでよく、それらのそれぞれが、この技術の1つまたは複数のステップを実施する1つまたは複数のプロセッサ(各プロセッサは1つまたは複数の処理コアを有する)を有する。これらの例では、デバイスの1つまたは複数は、専用の通信インタフェースまたはメモリを有し得る。あるいは、デバイスの1つまたは複数は、検証デバイス104に含まれる1つまたは複数の他のデバイスのメモリ、通信インタフェース、または他のハードウェアもしくはソフトウェアコンポーネントを利用することができる。さらに、他の例では、まとまって検証デバイス104を構成するデバイスの1つまたは複数は、スタンドアロンデバイスであってもよいし、1つまたは複数の他のデバイスもしくは装置と統合されてもよい。
より具体的に図1及び3を参照すると、クエリ検証装置102の証明デバイス110は、例えば、データベース112をホストすること、データベース112のコンテンツからクエリ結果を生成するようにクエリを処理すること、及び検証デバイス104によるクエリ結果の検証を容易にする証明を生成することを含む、任意の数の機能を実行し得る。この例の証明デバイス110は、バス308によって相互に結合されたCPU(複数可)300、GPU(複数可)302、メモリ304、及び通信インタフェース306を含むが、証明デバイス110は、他のタイプまたは数の要素を他の構成で含むことができる。
証明デバイス110のCPU(複数可)300及びGPU(複数可)302は、本明細書で説明及び図示する任意の数の機能についてメモリ304に記憶されたプログラム命令を実行し得る。CPU(複数可)300は、例えば、1つまたは複数の処理コアを備えた1つまたは複数の汎用プロセッサを含み得るが、他のタイプのプロセッサ(複数可)も使用することができる。GPU(複数可)302は、特定の処理機能を加速するために、比較的大きなデータブロックを並行して処理するように構成することができる。以下でより詳細に説明及び図示するいくつかの例では、GPU(複数可)302はコミットメントを生成するために使用され、CPU(複数可)300は証明デバイス110の残りの機能を促進するが、他の実装も使用することができる。
メモリ304は、本明細書に説明及び図示される本技術の1つまたは複数の態様のために、これらのプログラム命令を記憶するが、プログラム命令の一部またはすべてを他の場所に記憶することもできる。RAM、ROM、ハードディスク、ソリッドステートドライブ、フラッシュメモリ、または、CPU(複数可)300及び/またはGPU(複数可)302に結合された、磁気的、光学的、または他の読み取り及び書き込みシステムによって読み取り及び書き込みが行われる他のコンピュータ可読媒体などの、様々な異なるタイプのメモリストレージデバイスを、メモリ304に使用することができる。
したがって、メモリ304は、コンピュータ実行可能命令を含み得るアプリケーションを記憶することができ、コンピュータ実行可能命令は、CPU(複数可)300及び/またはGPU(複数可)302によって実行されると、証明デバイス110に、例えば、ネットワークメッセージ及び要求の送信、受信、またはその他の処理などのアクション、ならびに以下に説明及び図示されている他のアクションを実行させる。アプリケーション(複数可)は、例えば、他のアプリケーション、オペレーティングシステム拡張機能、及び/またはプラグインのコンポーネントとして実装することができる。
さらに、アプリケーション(複数可)は、サービスとしてのソフトウェア(SaaS)モデルを介してアクセスが提供されるクラウドベースのコンピューティング環境で動作可能であってよい。アプリケーション(複数可)は、クラウドベースのコンピューティング環境で管理できる仮想マシン(複数可)または仮想サーバ(複数可)内で、または仮想マシンまたは仮想サーバとして実行することができる。また、アプリケーション(複数可)、さらには証明デバイス110自体も、特定の物理ネットワークコンピューティングデバイスに結び付けられるのではなく、クラウドベースのコンピューティング環境で実行される仮想サーバ(複数可)に配置されてよい。また、アプリケーション(複数可)は、検証デバイス上で実行され、ハイパーバイザによって管理または監視されるVMで実行されてよい。
この特定の例では、メモリ304は、クエリ実行エンジン310及び証明モジュール312を含む。クエリ実行エンジン310は、クライアントデバイス108(1)~108(n)から受信したクエリをデータベース112に対して実行し、クエリ結果を生成するように構成される。いくつかの例では、データベース112は構造化クエリ言語(SQL)データベースであってよく、したがってクエリ実行エンジン310はSQLエンジンであってよいが、本明細書で説明及び図示される技術は、以下でさらに詳細に説明するように、NoSQL及び他のタイプのデータベースと共に動作可能である。
証明モジュール312は、以下にさらに詳細に説明及び図示するように、検証デバイス104によるクエリ結果の検証を容易にするために、クエリ結果とともに検証デバイス104に提供できる証明を生成するように構成される。他の例では、他の情報をメモリ304に記憶することができ、他の例では、他のデータストア及び/またはアプリケーションまたはモジュールも検証デバイス110によってホストすることができる。
証明デバイス110の通信インタフェース306は、検証デバイス104及び証明デバイス110(1)~110(n)の別のものとの間を動作可能に結合及び通信する。証明デバイス110(1)~110(n)は、例えば、通信ネットワーク(複数可)(例えば、WANまたはLAN(複数可))(図示せず)または直接接続によって少なくとも部分的に互いに結合される。いくつかの例では、証明デバイス110(1)~110(n)は、分散型ネットワークに展開され、通信ネットワーク(複数可)を介して通信されるデータベースサーバであり、データベース112は分散型データベースであるが、他のタイプの実装も使用することができる。さらに、他の例では、他のタイプもしくは数のネットワーク、ならびに他のデバイスもしくは要素への他のタイプもしくは数の構成との接続も使用することができる。
この例では、証明デバイス110は単一のデバイスを含むものとして示されているが、他の例では、検証デバイス110は、複数のデバイスを含んでよく、それらのそれぞれが、この技術の1つまたは複数のステップを実施する1つまたは複数のプロセッサ(各プロセッサは1つまたは複数の処理コアを有する)を有する。これらの例では、デバイスの1つまたは複数が専用の通信インタフェースまたはメモリを備えることができる。あるいは、デバイスのうちの1つまたは複数は、証明デバイス110に含まれる1つまたは複数の他のデバイスのメモリ、通信インタフェース、または他のハードウェアもしくはソフトウェアコンポーネントを利用することができる。さらに、他の例では、まとまって証明デバイス110を構成するデバイスの1つまたは複数は、スタンドアロンデバイスであってもよいし、1つまたは複数の他のデバイスもしくは装置と統合されてもよい。
この例におけるネットワーク環境100のクライアントデバイス108(1)~108(n)のそれぞれは、モバイル、デスクトップ、ラップトップ、またはタブレットコンピューティングデバイス、仮想マシン(クラウドベースのコンピュータを含む)など、ネットワークデータを交換できる任意のタイプのコンピューティングデバイスを含む。この例におけるクライアントデバイス108(1)~108(n)のそれぞれは、プロセッサ、メモリ、及び通信インタフェースを含み、これらはバスまたは他の通信リンク(図示せず)によって一緒に結合されるが、他の数またはタイプのコンポーネントも使用することができる。
クライアントデバイス108(1)~108(n)のそれぞれは、標準的なウェブブラウザまたはスタンドアロンアプリケーションなど、サービス及び/またはインタフェースアプリケーションを実行してよく、これらは、通信ネットワーク(複数可)106を介して検証デバイス104と通信するインタフェースを提供し得る。クライアントデバイス108(1)~108(n)のそれぞれは、例えば、ディスプレイスクリーンもしくはタッチスクリーンなどの表示デバイス、またはキーボードもしくはマウスなどの入力デバイスをさらに含み得る(図示せず)。
クライアントデバイス108(1)~108(n)、検証デバイス104、証明デバイス110(1)~110(n)、ならびに通信ネットワーク106(1)及び106(2)を有する例示的なネットワーク環境100が、本明細書で説明及び図示されているが、他のトポロジにおける他のタイプもしくは数のシステム、デバイス、コンポーネント、または要素を使用することもできる。なお、本明細書にて説明されている例でのシステムは、例示目的のためであることが理解されるべきであり、関連する技術分野の当業者によって理解されるように、例を実施するために使用される特定のハードウェア及びソフトウェアの多くの変形形態が可能である。
例えば、クライアントデバイス108(1)~108(n)、検証デバイス104、または証明デバイス110(1)~110(n)など、ネットワーク環境100に示されるコンポーネントの1つまたは複数は、同じ物理マシン上で仮想インスタンスとして動作するように構成されてよい。換言すれば、クライアントデバイス108(1)~108(n)、検証デバイス104、または証明デバイス110(1)~110(n)のうちの1つまたは複数は、通信ネットワーク106(1)及び/または106(2)を介して通信する別個のデバイスとしてではなく、同じ物理デバイス上で動作することができる。さらに、図1に示すより多くのまたは少ないクライアントデバイス、検証デバイス、または証明デバイスがあってもよい。
この技術の例は、本明細書で例を挙げて説明及び図示するように、本技術の1つまたは複数の態様について、メモリ202及び/または304などに記憶された命令を有する1つまたは複数の非一時的なコンピュータ可読媒体として具体化することもできる。いくつかの例において、命令は、実行可能コードを含み、実行可能コードは、CPU(複数可)200及び/もしくは300ならびに/またはGPU(複数可)302などの1つまたは複数のプロセッサによって実行されると、プロセッサに、本技術の例での方法を実施するために必要なステップを実行させる。本明細書において、それについて、説明及び図に示す。
ここで図4を参照すると、データベースクエリ結果の検証を容易にするためにデータを取り込む例示的な方法のタイミング図が示されている。この例のステップ400では、クライアントデバイス108は、要求と共に含まれるデータを、証明デバイス110によって少なくとも部分的にホストされるデータベース112に保存するために、通信ネットワーク(複数可)106を介して要求を送信する。したがって、この特定の例では、検証デバイス104は、事実上、クライアントデバイス108と証明デバイス110の間に配置されたゲートウェイである。
ステップ402において、クエリ検証装置102の検証デバイスは、クライアントデバイス108からの要求を受信またはインターセプトし、データベース112に保存される、要求に関連付けられたデータ(例えば、データを保存する、データベース112におけるテーブル)に対するコミットメントを生成し、ローカルに(例えば、メモリ304に)記憶する。この例におけるコミットメントは、データの比較的小さな「ダイジェスト」であり、例示的なコミットメントスキームとともに以下でより詳細に説明及び図示するように、その後データが改ざんされていないことを保証するのに十分な情報を保持する。
ステップ404において、検証デバイス104は、データベース112に保存するためにデータをクエリ検証装置102の証明デバイス110に送信する。ステップ406において、証明デバイス110はデータベース112(例えば、SQLデータベース、ただし任意の他のタイプのデータベースも使用可能)にテーブルを作成し、データをテーブル(または他のデータベースストレージ構造)に挿入する。ステップ408において、証明デバイス110は、任意選択で確認応答を検証デバイス104に送信し、検証デバイス104は、ステップ410において、任意選択で、データベース112への要求されたデータの保存が成功したことを示す別の確認応答をクライアントデバイス108に送信する。
本明細書で説明及び図示する例では、コミットメントは、検証デバイス104が古い既存のデータにアクセスする必要なしに、検証デバイス104によって有利に更新可能である。図5を参照すると、新しいデータの取り込みに続いてコミットメントを更新するための例示的な方法のタイミング図が示されている。この例のステップ500では、クライアントデバイス108は、データベース112に向けられた保存要求の一部として新しいデータを送信する。この例では、新しいデータは、図4のステップ406で作成されたのと同じテーブルにアペンドされることになる。
ステップ502において、検証デバイス104は、クライアントデバイス108から要求を受信し、関連データに対する記憶されたコミットメントを取得し、取得したコミットメントをステップ504において更新する。検証デバイス104が、テーブルに保存されている古い既存のデータにアクセスすることなしに、取得した古いコミットメントと受信する新しいデータと組み合わせて、更新されたテーブル全体に対する新しいコミットメントを作成できるようにするために、ペダーセンコミットメント及び関連するスキームが一部の例で使用できるが、他のタイプのアルゴリズムを使用して、例えばKZGコミットメントやFRIコミットメントなどの他のタイプのコミットメントを生成することもできる。
ペダーセンコミットメントスキームは、開発の迅速化と市場投入までの時間の短縮に役立ち、有利な数学的特性を備えている。特定の一例では、
は、(例えば、データベーステーブルの)データの列であり、ペダーセンコミットメントは、
であり、ここで、Giのものは、他のコミットメントスキームで必要とされる、信頼できるセットアップフェーズを必要としない「ランダムな」パブリックで透過的なパラメータである。
は、(例えば、データベーステーブルの)データの列であり、ペダーセンコミットメントは、
であり、ここで、Giのものは、他のコミットメントスキームで必要とされる、信頼できるセットアップフェーズを必要としない「ランダムな」パブリックで透過的なパラメータである。
また、ペダーセンコミットメントは比較的簡単に更新できるため、コミットメントにアペンドするために必要なのは、新しいデータごとに上記の合計に追加の項を加えることだけである。さらに、ペダーセンコミットメントの計算速度は、楕円曲線としてCurve25519を使用し、並列処理のためにGPU(複数可)302を使用して向上させることができる。Curve25519については、Bernstein,Daniel,Curve25519:New Diffie-Hellman Speed Records、2016、3958、207-228.10.1007/11745853_14に記載されており、その全体が参照により本明細書に組み込まれる。ペダーセンコミットメントは、Pedersen,T.P.,「Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing」、Advances in Cryptology-CRYPTO’91(129~140ページ)、Springer Berlin Heidelbergにさらに記載されており、その全体が参照により本明細書に組み込まれる。
したがって、ステップ504におけるコミットメントの更新に続いて、検証デバイス104は、ステップ506において新しいデータを証明デバイス110に送信する。ステップ508において、証明デバイス110は、データベース112の以前に作成された既存のテーブルに新しいデータをアペンドする。ステップ510において、証明デバイス110は任意選択で、確認応答を検証デバイス104に送信し、検証デバイス104は任意選択で、ステップ512において、要求された新しいデータのデータベース112への保存に成功したことを示す別の確認応答をクライアントデバイス108に送信する。
図6を参照すると、記憶されたコミットメントを使用してデータベースクエリ結果を検証する例示的な方法のタイミング図が示されている。この例のステップ600では、クライアントデバイス108はデータベース112にクエリを送信して、例えば少なくとも1つのテーブルから保存されたデータを抽出する。ステップ602において、検証デバイス104は、クライアントデバイス108からクエリを受信し、データベース112の少なくとも一部をホストする証明デバイス110にクエリを転送する。
ステップ604において、証明デバイス110は、クエリ実行エンジン310を使用して、検証デバイス104から受信したクエリをデータベース112に対して実行し、結果を生成する。ステップ606において、証明デバイス110は証明を生成する。この証明は、Bunz,Benediktの「Bulletproofs:Short Proofs for Confidential Transactions and More」(2018 IEEE Symposium on Security and Privacy(SP)、2018年5月20~24日)(これは、その全体が参照により本明細書に組み込まれる)に記載されているペダーセンコミットメントスキームと同様の方法を使用して生成することができるが、証明を生成するための他のスキーム及び方法も使用することができる。
さらに、証明は、例えば、Fiat-Shamirヒューリスティックを使用して非対話型にすることができる。一例では、証明は、図7のステップ704~712を参照して以下でより詳細に説明及び図示するように、ステップ606で生成されるが、他の例では他の方法で証明を生成することができる。次に、ステップ608及び610で、証明デバイス110は、生成した結果及び証明をそれぞれ検証デバイス104に送信する。
ステップ612で、検証デバイス104は、ステップ600で受信したクエリが向けられた少なくとも1つのテーブルについて記憶されたコミットメントを取得する。ステップ614において、検証デバイス104は、取得したコミットメントを使用して、ステップ610で証明デバイス110から受信した証明をステップ608で証明デバイスから受信した結果と照合し、それによって証明デバイス110がクエリに対して正しい結果を生成したかどうかを検証する。
検証デバイス104が、証明デバイス110がクエリに対して正しい結果を生成したと判断した場合、検証デバイス104は、ステップ616で、クエリの発信元であるクライアントデバイス108に結果を送信する。任意選択で、検証デバイス104は、ステップ618で、ステップ616で送信された結果とともに、またはステップ616で送信された結果に続いて、改ざん防止成功フラグを送信する。改ざん防止成功フラグは、結果が検証され、したがってクエリが改ざんされていないことを示す印とすることができる。
しかしながら、検証デバイス104がステップ614で証明が不合格であると判断した場合、検証デバイス104は結果をクライアントデバイス108にルーティングせず、代わりに失敗メッセージを送信する。他の例では、検証デバイス104は、改ざん防止失敗フラグを付けて結果をクライアントデバイスに送信することができ、さらに他の例では、検証デバイス104側の検証の成功及び/または失敗を示す他のタイプの通信も使用することができる。
図7を参照すると、データベースクエリ結果の検証を容易にするためにGPU(複数可)302の少なくとも1つを使用する例示的な方法のタイミング図が示されている。この技術の計算コストのかなりの部分は、コミットメントを計算することに関係している。ただし、特にペダーセンコミットメントの構造は相対的に反復的であり、計算は並列化することができる。有利なことには、この技術はGPU302を活用して、コミットメント計算のためのハードウェア・アクセラレーションを提供し、それによってデータベース112のスケーラビリティを向上させる。この例ではGPU302がコミットメント計算に利用されているが、本明細書で説明及び図示される方法の1つまたは複数のうちの1つまたは複数の他の態様も、GPU302を使用して加速させることができる。
この特定の例では、ステップ700及び702は、それぞれ、図6のステップ602及び604を参照して上で説明及び図示したように、CPU(複数可)300の少なくとも1つによって実行される。しかしながら、ステップ704では、証明デバイス110のCPU300は、ステップ706で中間値をGPU302に送信することによって証明の生成を開始する。GPU302は、ステップ708で中間値に基づいてコミットメントを計算する。
証明デバイス110は、結果の証明を生成する際に、多くの中間列または中間値を計算する。場合によっては、これらの中間値に対するコミットメントを最初から計算する必要はないが、多くの場合、証明デバイス110は検証デバイス104に中間値に対するコミットメントを提供しなければならない。その結果、証明デバイス110は、ステップ708において、大規模なデータセットに対して一度に多くのコミットメントを計算することが必要な場合がある。
ペダーセンコミットメントは、高度に並列性のある多重指数化(multi-exponentiation)として扱うことができる。さらに、いくつかのコミットメントを一緒に計算する必要があるため、これらの多重指数化も並行して実行することができる。いくつかの例では、GPU302は、単一のステップで多くの指数を計算し、次に、それらを所望のコミットメントに集約する。他の例では、最適化を使用することができる。
例えば、Pippengerのアルゴリズムは、Pippenger,Nicholas、「On the Evaluation of Powers and Monomials」、SIAM Journal on Computing9.2(1980)、230~250ページ(その全体が参照により本明細書に組み込まれる)に記載されており、最適な漸近ランタイムを促進するために使用することができる。他の例では、スパースなデータセットを素朴なアルゴリズムを使用するよりも効率的に処理でき、データに小さな値が含まれている場合は、速度を高めるために、指数の計算を切り捨てることができる。さらに他の例では、他の最適化を使用することもできる。
図7を参照すると、ステップ710で、証明デバイス110のGPU302は、コミットメントのセットをCPU300に返す。次に、ステップ712で、CPU300は証明の生成を完了し、それぞれ、図6のステップ608及び610を参照して上で説明及び図示したように、ステップ714及び716を実行する。
ここで、証明を生成する例示的な方法について、図8~10を参照して説明及び図示する。この特定の例では、データベース112はSQLデータベースであり、クエリ実行エンジン310はSQLエンジンであり、クエリはSQLクエリであるが、他の例では、NoSQLデータベース、実行エンジン、及びクエリを含む、他のタイプのデータベース、実行エンジン、及び/またはクエリを使用することができる。クエリ実行エンジン310は、クエリを解析し、有向非巡回グラフ(DAG)であり得るクエリプランを作成することによって、クエリの実行を開始することができる(例えば、図6のステップ604及び/または図7のステップ702で)。以下に詳細に説明及び図示する例において、例示的なSQLクエリ(本明細書では「サンプルクエリ」と呼ぶ)を次のように提供する。
また、本明細書で説明及び図示する例のために、以下のトランザクション及びユーザのテーブルをそれぞれテーブル1及びテーブル2として提供する。
より具体的に図8を参照すると、クエリ例に対するクエリ結果を生成するために使用される例示的なクエリプラン800のフロー図が示されている。クエリ例は、図8に示すように、2つのFILTERノードと1つのJOINノードからなるDAGに、クエリ実行エンジン310によって分解することができる。クエリ例の結果を計算するために、クエリ実行エンジン310は、2つのテーブルのそれぞれをFILTERノードに渡し、次に、それらのノードからの中間結果をJOINノードに渡す。JOINノードの出力がクエリの結果である。
より具体的に図9を参照すると、クエリ例に対する証明を生成するために使用される例示的な証明プラン900のフロー図が示されている。クエリ例の証明は、この例では、クエリ実行エンジン310によって使用されるDAGをミラーリングする。したがって、各FILTERまたはJOIN操作には対応する証明が必要であるため、クエリプラン800のクエリ実行ノードごとに証明ノードが作成される。クエリの実行によって中間ステップがすでに計算されているため、証明ノードはそれらの中間結果を使用することができる。各証明ノードは部分的証明を生成し、その後、部分的証明は全体的な証明に集約される(例えば、図6のステップ606)。
より具体的に図10を参照すると、並行して証明プラン900が示されているクエリプラン800のフロー図が示されている。図10に示される方法は、いくつかの例では証明デバイス110によって実行することができる。有利なことに、この例では、証明の生成は、クエリ実行エンジン310との統合に基づいて比較的効率が良く、クエリ例に基づいてクエリ実行エンジン310によって生成されるDAGのノードに対応する中間ノードは、部分的証明の生成に使用され、部分的証明が集約されて、検証デバイス104に返される証明を形成する。
図11を参照すると、証明プラン900を介して生成された証明とクエリプラン800を介して生成された結果とを使用してクエリ例に対するクエリ結果を検証する例示的な方法のフロー図が示されている。図11に示す方法は、いくつかの例では、検証デバイス104によって実行することができる。この特定の例では、検証デバイス104は、クエリ例に基づいてクエリ実行エンジン310によって生成されたDAGもミラーリングする。しかしながら、検証デバイス104はデータベース112に保存されたデータにアクセスできないため、コミットメントに対してのみ機能することができる。
より具体的には、検証デバイス104は、検証デバイス104がクエリ例の検証を試みるこの例では、トランザクションテーブル及びユーザテーブルに対して以前に生成された記憶済みのコミットメントを取得することから始める。証明デバイス110がクエリ例の1つのステップに応答してデータを変換するとき、検証デバイス104は、対応する変換を関連データのコミットメントに適用しなければならない。このアプローチでは、検証デバイス104によるコミットメントの計算は、証明デバイス110から検証デバイス104にデータを送信し、その後検証デバイス104が計算を実行することに比べて比較的効率が良い。
検証デバイス104がコミットメントに関する計算を完了すると、結果に対するコミットメントが完了し、次に、結果が結果に対するそのコミットメントとマッチまたは合致するかどうかを判断することができる。合致する場合、検証デバイス104は、それが正しい結果であることを認識し、合致しない場合、検証デバイス104は、結果をリジェクトすることを認識する。いくつかの例では、計算能力が制約されている可能性がある検証デバイス104に必要な計算リソースを削減するために、証明の一部分(複数可)が任意選択で証明デバイス110によって検証デバイス104に提供される。
本明細書で説明及び図示する技術に従ってデータベースクエリを検証する例示的な方法が次に説明される。この例では、クライアントデバイス108のユーザはテーブルを作成し、それにアペンドし、その後テーブルにクエリを実行する。したがって、クライアントデバイス108は、以下のテーブル3に示す従業員テーブルを作成する要求と共にデータを検証デバイス104に送信する。
検証デバイス104は、このデータを受け入れ、各列へのコミットメントを計算する。この場合、これらのコミットメントは以下のようになる。
次に、検証器はこれらのコミットメントをローカルに記憶し、データを証明デバイス110に送信し、証明デバイス110はデータベース112に新しい従業員テーブルを作成する。
次に、検証器はこれらのコミットメントをローカルに記憶し、データを証明デバイス110に送信し、証明デバイス110はデータベース112に新しい従業員テーブルを作成する。
この特定の例では、クライアントデバイス108は、次に、従業員テーブルにアペンドされる新しいデータ行を検証デバイス104に送信する。これを以下のテーブル4に示す。
検証デバイス104は、このデータを受け入れ、各列へのコミットメントを更新する。この例では、新しいコミットメントは次のようになる。
次に、検証デバイス104は、新しい行を証明デバイス110に送信し、証明デバイス110は、それらをデータベース112内の従業員テーブルにアペンドする。
次に、検証デバイス104は、新しい行を証明デバイス110に送信し、証明デバイス110は、それらをデータベース112内の従業員テーブルにアペンドする。
この例のクライアントデバイス108は次に、総報酬を決定するために、データベース112にSQLクエリ:SELECT Pay*52+Bonus FROM Employeesを送信し、これを検証デバイス104が受信する。検証デバイス104は、クエリを証明デバイス110にルーティングし、証明デバイス110は、給料列を取得し、給料列に52を乗算し、ボーナス列を加算することによってクエリ実行エンジン310を介してクエリを実行して、クエリ結果を生成し、クエリ結果は、検証デバイス104に送り返され、以下のテーブル5に反映される。
このクエリは比較的単純であるため、この特定の例における証明デバイス110は、追加の証明を検証デバイス104に送信する必要がなく、検証デバイス104は証明デバイス110からテーブル5の結果列のみを受信する。クエリ結果(すなわち、テーブル5の結果列)を検証するために、検証デバイス104は、給料コミットメントを取得し、それに52を乗算し、ボーナスコミットメントを加算することによって、証明デバイス110の計算をミラーリングする。これは、まさに、あるべき結果に対するコミットメントであり、すなわち、
である。
である。
次に、検証デバイス104は、証明デバイス110から送信されたクエリ結果に対するコミットメントを計算する。証明デバイス110が正しい結果を送信した場合、これは以下のようになる。
しかしながら、証明デバイス110が間違った結果を送信した場合、この計算は別の値を生み出すことになる。次に、検証デバイス104は、
のようになるかどうかを確認し、そうなる場合、検証デバイス104は、クエリ結果が正しいことを確認するフラグとともにクエリ結果をクライアントデバイス108に送信する。2つの値が等しくない場合、検証デバイス104は、例えばエラーがあったことを示す失敗メッセージをクライアントデバイス108に送信する。
しかしながら、証明デバイス110が間違った結果を送信した場合、この計算は別の値を生み出すことになる。次に、検証デバイス104は、
のようになるかどうかを確認し、そうなる場合、検証デバイス104は、クエリ結果が正しいことを確認するフラグとともにクエリ結果をクライアントデバイス108に送信する。2つの値が等しくない場合、検証デバイス104は、例えばエラーがあったことを示す失敗メッセージをクライアントデバイス108に送信する。
上記の例はSQL操作の証明に関するものであるが、この技術は任意のタイプのデータベースクエリに適用することができる。例えば、ニューヨーク州ニューヨーク市のMongoDB社が提供するMongoDBは、キー-バリューストアに構築されたNoSQLクエリ実行エンジンの一例である。キーと値のルックアップは、キーのフィルタとして扱うことができる。その結果、以下の例で説明するように、キーと値のルックアップを証明することができる。MongoDBは、条件に基づくフィルタリングもサポートしており、これは、以下で説明する例のように証明することもできる。これら2つの操作は最も一般的なMongoDBクエリをカバーするが、他のクエリや他のタイプのクエリ実行エンジンに関連付けられた他の操作も、本明細書で詳細に説明及び図示されている技術を使用して証明することができる。
クエリ例、具体的にはクエリ例の、SELECT*FROM transactions WHERE amount>10000フィルタ操作の抜粋を再度参照すると、以下のテーブル6は、量>10000である述語(predicate)の評価を加えたトランザクションテーブル(つまり、上記のテーブル1)示しており、ここで、0は偽値を示し、1は真値を示す。
クエリ例のこの抜粋に関連付けられたフィルタノードの証明は、(1)述語の評価の証明と(2)フィルタされた結果の証明の2つのコンポーネントに分けることができる。この場合、例えば、述語は範囲証明を使用して証明できるが、他の例では他の式を他の手法を使用して証明することができる。以下のテーブル7は、フィルタリングされた正しい結果を示す。
一例では、述語列と他の3つの列のそれぞれを乗算することで、上記の結果が正しいことが証明できる。この計算の結果は、削除する必要がある行をゼロに変換して、以下に示すテーブル8になる。
テーブル8の列へのコミットメントは、フィルタの結果のデータに完全に依存する。フィルタがクエリ全体の最終結果である場合、証明デバイス110が、フィルタ結果を元のテーブル(すなわち、テーブル1)の各行のインデックスとともに検証デバイス104に送信するだけで十分となる。これにより、検証デバイス104がコミットメントを再構築し、それを証明された積と照合することができるようになる。
本明細書の例によって説明及び図示するように、この技術は、信頼できない分散型データベースを含む信頼できないデータベースから生成されたクエリ結果の検証をより効果的かつ効率的に促進する。この技術は、コミットメント、GPU、及び/またはクエリプラン(例えば、SQLクエリ実行エンジンによって生成されたDAG)を活用して、データベースのスケーラビリティを向上させ、クエリ結果の精度を検証する。コミットメントは更新可能であり、クエリ結果は、データベースによってホストされるデータへのそのデバイスまたはサービスによるアクセスを必要とせずに、例えば、仲介デバイスまたはサービスによって検証される。
このように、本発明の基本概念を説明したが、前述の詳細な開示は、単なる例として示すことを意図しており、これに限定されるものではないことは、当業者には明らかであろう。本明細書に明示的に述べられていないが、種々の変更、改良、及び修正が発生するだろう、かつそれらは当業者を対象としている。これらの変更、改良、及び修正は、本明細書により示唆されることを意図しており、かつそれらは本発明の趣旨及び範囲内である。さらに、処理要素もしくは順序の記載順序、または番号、文字、もしくは他の指定の使用は、特許請求の範囲で指定される場合を除き、特許請求したプロセスをいかなる順序にも限定することを意図していない。したがって、本発明は、以下の特許請求の範囲及びその均等物によってのみ制限される。
Claims (20)
- クエリ検証装置によって実行され、かつ、
受信データから第1のコミットメントを生成及び記憶し、少なくとも1つの証明デバイスによってホストされるデータベースのテーブルに挿入するために前記受信データを前記少なくとも1つの証明デバイスに送信することと、
受信クエリが前記少なくとも1つの証明デバイスに転送され、かつ少なくとも前記データベーステーブルを含む1つまたは複数のテーブルに関連付けられることに応答して、前記少なくとも1つの証明デバイスからクエリ結果及び全体的な証明を受信することであって、前記全体的な証明が、前記少なくとも1つの証明デバイスの1つまたは複数のグラフィックス処理ユニット(GPU)を使用して1つまたは複数の中間値から生成された1つまたは複数の中間コミットメントを少なくとも部分的に含む1つまたは複数の部分的証明から生成される、前記受信することと、
前記第1のコミットメント及び前記全体的な証明を使用して生成された、前記クエリ結果に対する第2のコミットメントに基づいて前記クエリ結果を検証した後に、前記受信クエリに応答して、前記クエリ結果とともに成功フラグを返すことと
を含む、データベースクエリ結果を検証するための方法。 - 前記受信クエリからクエリプランを生成することをさらに含み、
前記1つまたは複数の部分的証明のそれぞれが、前記クエリプランの少なくとも1つのノードに関連付けられる、
請求項1に記載の方法。 - 前記データベースが構造化クエリ言語(SQL)データベースであり、前記方法が、SQLエンジンを用いて前記クエリプランを生成することをさらに含み、
前記クエリプランが、少なくとも1つのノードを含む有向非巡回グラフ(DAG)を含む、
請求項2に記載の方法。 - 前記少なくとも1つの証明デバイスが複数の証明デバイスを含み、前記第1のコミットメントを生成及び記憶すること、前記クエリを受信すること、ならびに前記成功フラグを返すことが、前記複数の証明デバイスとは別個の検証デバイスによって実行され、前記データベースが分散型データベースを含む、請求項1に記載の方法。
- 前記データベーステーブルにアペンドされる追加データの受信に続いて、前記記憶された第1のコミットメントを更新することと、
前記追加データを前記少なくとも1つの証明デバイスに送信することと
をさらに含む、請求項1に記載の方法。 - 第1のプログラム命令を記憶した第1のメモリと、第1のプロセッサと、1つまたは複数のグラフィックス処理ユニット(GPU)とを備える証明デバイスを含む、クエリ検証装置であって、
前記第1のプロセッサが、前記記憶された第1のプログラム命令を実行して、
検証デバイスからデータを受信し、前記受信したデータをデータベースのテーブルに保存し、前記検証デバイスから、少なくともデータベーステーブルを含む1つまたは複数のテーブルに関連付けられるクエリを受信することと、
前記クエリに対するクエリプラン及びクエリ結果と、1つまたは複数のコミットメントからの1つまたは複数の部分的証明と、前記1つまたは複数の部分的証明からの全体的な証明とを生成することであって、前記1つまたは複数の部分的証明のそれぞれが前記クエリプランの少なくとも1つのノードに関連付けられる、前記生成することと、
前記クエリ結果の検証を容易にするために、前記クエリに応答して前記クエリ結果とともに前記全体的な証明を返すことであって、前記1つまたは複数のGPUが、前記記憶された第1のプログラム命令を実行して、前記1つまたは複数のコミットメントを生成するように構成される、前記返すことと
を行うように構成される、
前記クエリ検証装置。 - 前記第1プロセッサが、前記記憶された第1のプログラム命令を実行して1つまたは複数の中間値を生成するようにさらに構成される、請求項6に記載のクエリ検証装置。
- 前記1つまたは複数のGPUが、前記記憶された第1のプログラム命令を実行して、前記1つまたは複数の中間値から前記1つまたは複数のコミットメントを生成するようにさらに構成される、請求項7に記載のクエリ検証装置。
- 前記第1のプロセッサが、前記記憶された第1のプログラム命令を実行して、前記1つまたは複数のコミットメントから前記1つまたは複数の部分的証明を生成するようにさらに構成される、請求項8に記載のクエリ検証装置。
- 検証デバイスをさらに含み、
前記検証デバイスが、第2のプログラム命令を記憶した第2のメモリと、第2のプロセッサとを備え、
前記第2のプロセッサが、前記記憶された第2のプログラム命令を実行して、
第1のクライアントデバイスからデータを受信し、前記受信したデータから第1のコミットメントを生成及び記憶し、前記受信したデータを前記証明デバイスに送信することと、
第2のクライアントデバイスからクエリを受信し、前記クエリを前記証明デバイスに転送し、前記クエリに応答して前記証明デバイスから前記クエリ結果及び前記全体的な証明を受信することと、
前記第1のコミットメント及び前記全体的な証明を使用して生成された、前記クエリ結果に対する第2のコミットメントに基づいて、前記クエリ結果を検証することと、
前記クエリに応答して、前記クエリ結果とともに成功フラグを前記第2のクライアントデバイスに返すことと
を行うように構成される、
請求項6に記載のクエリ検証装置。 - 前記第2のプロセッサが、前記記憶された第2のプログラム命令を実行して、
前記データベーステーブルにアペンドされる追加データの受信に続いて、前記記憶された第1のコミットメントを更新することと、
前記追加データを前記証明デバイスに送信することと
を行うようにさらに構成される、請求項10に記載のクエリ検証装置。 - 前記データベースが構造化クエリ言語(SQL)データベースであり、前記第1のプロセッサが、前記記憶された第1のプログラム命令を実行してSQLエンジンを用いて前記クエリプランを生成するようにさらに構成され、
前記クエリプランが、少なくとも1つのノードを含む有向非巡回グラフ(DAG)を含む、
請求項6に記載のクエリ検証装置。 - 前記証明デバイスが、前記データベースをホストする複数の証明デバイスを含み、前記検証デバイスが、前記複数の証明デバイスとは別個であり、前記データベースが、分散型データベースを含む、請求項6に記載のクエリ検証装置。
- 実行可能コードを含む、クエリ結果を検証するための命令を記憶した、非一時的なコンピュータ可読媒体であって、
前記実行可能コードが、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
受信データから第1のコミットメントを生成及び記憶し、少なくとも1つの証明デバイスによってホストされるデータベースの少なくとも1つのテーブルに挿入するために前記受信データを前記少なくとも1つの証明デバイスに送信することと、
受信クエリが前記少なくとも1つの証明デバイスに転送され、かつ少なくとも前記データベーステーブルを含む1つまたは複数のテーブルに関連付けられることに応答して、前記少なくとも1つの証明デバイスからクエリ結果及び全体的な証明を受信することであって、前記全体的な証明が、1つまたは複数の部分的証明から生成され、前記部分的証明のそれぞれが、前記受信クエリから生成されたクエリプランの少なくとも1つのノードに関連付けられる、前記受信することと、
前記第1のコミットメント及び前記全体的な証明を使用して生成された、前記クエリ結果に対する第2のコミットメントに基づいて前記クエリ結果を検証した後に、前記受信クエリに応答して、前記クエリ結果とともに成功フラグを返すことと
を行わせる、
前記非一時的なコンピュータ可読媒体。 - 前記1つまたは複数の部分的証明が、1つまたは複数のグラフィックス処理ユニット(GPU)を使用して1つまたは複数の中間値から生成された1つまたは複数のコミットメントから生成される、請求項14に記載の非一時的なコンピュータ可読媒体。
- 前記データベースが構造化クエリ言語(SQL)データベースであり、前記実行可能コードが、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、SQLエンジンを介して前記クエリプランを生成させる、請求項14に記載の非一時的なコンピュータ可読媒体。
- 前記クエリプランが、少なくとも1つのノードを含む有向非巡回グラフ(DAG)を含む、請求項14に記載の非一時的なコンピュータ可読媒体。
- 前記少なくとも1つの証明デバイスが複数の証明デバイスを含み、前記データベースが分散型データベースを含む、請求項14に記載の非一時的なコンピュータ可読媒体。
- 前記少なくとも1つの証明デバイスとは別個の検証デバイスによって、前記第1のコミットメントが生成及び記憶され、前記クエリが受信され、前記成功フラグが返される、請求項14に記載の非一時的なコンピュータ可読媒体。
- 前記実行可能コードが、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
前記データベーステーブルにアペンドされる追加データの受信に続いて、前記記憶された第1のコミットメントを更新することと、
前記追加データを前記少なくとも1つの証明デバイスに送信することと
を行わせる、
請求項14に記載の非一時的なコンピュータ可読媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263357930P | 2022-07-01 | 2022-07-01 | |
US63/357,930 | 2022-07-01 | ||
US17/897,102 US11526622B1 (en) | 2022-07-01 | 2022-08-26 | Methods for verifying database query results and devices thereof |
US17/897,102 | 2022-08-26 | ||
PCT/US2022/081344 WO2023102574A1 (en) | 2022-07-01 | 2022-12-12 | Methods for verifying database query results and devices thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024505105A true JP2024505105A (ja) | 2024-02-02 |
Family
ID=84426725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023548199A Pending JP2024505105A (ja) | 2022-07-01 | 2022-12-12 | データベースクエリ結果を検証するための方法及びそのデバイス |
Country Status (7)
Country | Link |
---|---|
US (3) | US11526622B1 (ja) |
EP (1) | EP4244750A4 (ja) |
JP (1) | JP2024505105A (ja) |
KR (1) | KR102648532B1 (ja) |
CN (1) | CN117642744A (ja) |
IL (1) | IL303764B1 (ja) |
WO (1) | WO2023102574A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157733A (zh) * | 2021-03-23 | 2021-07-23 | 华中科技大学 | 一种面向多链数据关联性的高效溯源查询方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008147400A1 (en) * | 2006-11-30 | 2008-12-04 | Brown University | Authentication for operations over an outsourced file system stored by an untrusted unit |
WO2014123552A1 (en) * | 2013-02-08 | 2014-08-14 | Mellmo Inc. | Executing database queries using multiple processors |
US20210109917A1 (en) * | 2019-10-10 | 2021-04-15 | The Hong Kong Polytechnic University | System and Method for Processing a Database Query |
-
2022
- 2022-08-26 US US17/897,102 patent/US11526622B1/en active Active
- 2022-12-12 KR KR1020237024743A patent/KR102648532B1/ko active IP Right Grant
- 2022-12-12 CN CN202280008892.2A patent/CN117642744A/zh active Pending
- 2022-12-12 JP JP2023548199A patent/JP2024505105A/ja active Pending
- 2022-12-12 IL IL303764A patent/IL303764B1/en unknown
- 2022-12-12 US US18/079,381 patent/US11874948B1/en active Active
- 2022-12-12 EP EP22902452.6A patent/EP4244750A4/en active Pending
- 2022-12-12 WO PCT/US2022/081344 patent/WO2023102574A1/en active Application Filing
-
2023
- 2023-12-04 US US18/527,580 patent/US20240111888A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20240003751A (ko) | 2024-01-09 |
IL303764A (en) | 2023-08-01 |
CN117642744A (zh) | 2024-03-01 |
US11874948B1 (en) | 2024-01-16 |
KR102648532B1 (ko) | 2024-03-15 |
EP4244750A1 (en) | 2023-09-20 |
US20240111888A1 (en) | 2024-04-04 |
US11526622B1 (en) | 2022-12-13 |
US20240005025A1 (en) | 2024-01-04 |
IL303764B1 (en) | 2024-05-01 |
WO2023102574A1 (en) | 2023-06-08 |
EP4244750A4 (en) | 2024-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11177962B2 (en) | Optimizations for verification of interactions system and method | |
US11917051B2 (en) | Systems and methods for storage, generation and verification of tokens used to control access to a resource | |
EP4184405A1 (en) | Block awareness | |
US8458451B2 (en) | Database outsourcing with access privacy | |
KR20210003234A (ko) | 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 | |
US20200372015A1 (en) | Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database | |
US11468044B2 (en) | Optimizations for verification of interactions system and method using probability density functions | |
CN110753105B (zh) | 数据传输方法、装置、系统、电子设备及存储介质 | |
US20240111888A1 (en) | Methods for verifying vector database query results and devices thereof | |
CN113095827A (zh) | 匿名多重签名方法、计算机设备和存储介质 | |
WO2023051308A1 (zh) | 数据校验方法、装置、设备及存储介质 | |
CN111640018A (zh) | 一种区块链交易存在性验证方法及装置 | |
Huang et al. | Blockchain-based continuous data integrity checking protocol with zero-knowledge privacy protection | |
US11949784B2 (en) | Auditing for events | |
Zhang et al. | CorrectMR: Authentication of distributed SQL execution on MapReduce | |
Ji et al. | A personal information management using blockchain | |
Ghosh et al. | Fully-dynamic verifiable zero-knowledge order queries for network data | |
US11947525B1 (en) | Methods for verifying vector database query results and devices thereof | |
Geng et al. | Blockchain-inspired Framework for Runtime Verification of IoT Ecosystem Task Fulfillment | |
CN112019350B (zh) | 区块链的区块验证方法及装置 | |
US11233640B2 (en) | Mutation processing for events | |
US11818259B2 (en) | Query and projection processing for events | |
Zaid et al. | Blockchain based integrity assurance framework for COVID‐19 information management & decision making at National Command Operation Center, Pakistan | |
US20230239153A1 (en) | System and method for digital proof generation | |
Wang et al. | The Analysis of Schnorr Multi-Signatures and the Application to AI |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230807 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20230807 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240227 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240520 |