検証可能なコンピューティング(または検証済み計算、検証済みコンピューティング)は、コンピュータが検証可能な結果を維持しながら、ある関数の計算を、おそらく信頼できない他のクライアントにオフロードすることを可能にします。他のクライアントは関数を評価し、関数の計算が正しく実行されたことの証明とともに結果を返します。この概念の導入は、SETI@homeのようなプロジェクトで信頼できないユーザーに計算を「アウトソーシング」するという現象がますます一般的になっていること、また、クラウド コンピューティングのように、計算能力の低いデバイスが計算タスクをより強力な計算サービスにアウトソーシングできるようにしたいという要望が高まっていることに起因しています。この概念は、Babai らの研究[ 1 ]に遡り、「計算のチェック」(Babai ら)、「計算の委任」[ 2 ] 、 「認証済み計算」[ 3 ]、検証可能なコンピューティングなど、さまざまな用語で研究されてきました。検証可能なコンピューティングという用語自体は、ロザリオ・ジェンナロ、クレイグ・ジェントリー、ブライアン・パルノによって形式化され[ 4 ]、ミカリの「認証済み計算」[ 3 ]を反映している。
比較的弱い計算デバイス(クライアント)からより強力な計算サービス(ワーカー)へ計算タスクをアウトソーシングしたいという願望の高まりと、実際の作業を行わずにクライアントのソフトウェアを改変してもっともらしい結果を返す不正なワーカーの問題[ 5 ]が、検証可能な計算の概念の形式化を促した。[ 4 ]
検証可能なコンピューティングは、クライアントの入力に基づいてアウトソーシングされた関数の結果を取得し、その正当性を証明することだけでなく、クライアントが関数をゼロから計算する場合よりもはるかに少ない計算量で証明を検証できることにも関係しています。
信頼できないワーカーによって実行される関数の計算の検証には、セキュア コプロセッサの使用[ 6 ] [ 7 ] 、トラステッド プラットフォーム モジュール(TPM) [ 8 ] 、対話型証明[ 9 ] [ 10 ]、確率的に検証可能な証明[ 11 ] [ 12 ]、効率的な引数[ 13 ] [ 14 ]、および Micali の CS 証明[ 15 ]など、かなりの注意が払われてきました。これらの検証は、クライアントがワーカーと対話して正当性の証明を検証する必要がある対話型[ 13 ] [ 14 ]か、ランダム オラクルモデルで証明できる非対話型プロトコル[ 15 ]のいずれかです。
検証済みの計算の中で最大規模のもの(SETI@home)は、複製による検証を採用している。
SETI @homeの検証プロセスは、1台のクライアントマシンと多数のワーカーマシンで構成されます。クライアントマシンは、同一の作業単位を複数のコンピュータ(少なくとも2台)に送信します。
機械の電源が誤って切れたり、通信障害が発生したりして、妥当な時間内に十分な結果が得られない場合、または計算エラーや、実際に作業を行わずに虚偽のデータを提出するなどの不正行為によって結果が一致しない場合、クライアントマシンは他のワーカーマシンにさらに同一の作業単位を送信します。結果の最小クォーラム(多くの場合2)が一致すると、クライアントはそれらの結果(およびその作業単位の他の同一の結果)が正しいとみなします。クライアントは、正しい結果を返したすべてのマシンに報酬を与えます。
Gennaro ら[ 4 ] は、検証可能な計算スキームの概念を、関数 F: {0,1} n → {0,1} mの計算で協力する 2 つの多項式時間当事者間のプロトコルとして定義した。このスキームは、主に次の 3 つのフェーズから構成される。
検証可能な計算スキームの定義概念は、クライアントとワーカー間のやり取りをちょうど2つのメッセージに最小限に抑え、プロトコルのさまざまなフェーズで各当事者から相手方へ1つのメッセージが送信されます。[ 4 ]
Gennaroら[ 4 ]は、 Yaoの難読回路[ 16 ] [ 17 ]と完全準同型暗号システムを組み合わせた、任意の関数Fに対する検証可能な計算スキームを定義した。
この検証可能な計算スキームVCは次のように定義されます。[ 4 ]
VC = (KeyGen、ProbGen、Compute、Verify)は、以下の 4 つのアルゴリズムで構成されています。
Gennaroら[ 4 ]によって定義された検証可能な計算スキームのプロトコルは、次のように機能します。
関数 F は、鍵生成アルゴリズムが適用されるブール回路として表現する必要があります。鍵生成アルゴリズムは、このブール回路に対して Yao のガーブリング手順を実行して、公開鍵と秘密鍵を計算します。公開鍵 (PK) は、ガーブリングされた回路を表すすべての暗号文で構成され、秘密鍵 (SK) は、すべてのランダムなワイヤラベルで構成されます。生成された秘密鍵は、問題生成アルゴリズムで使用されます。このアルゴリズムは、まず準同型暗号化方式用の新しい公開鍵と秘密鍵のペアを生成し、次にこれらの鍵を準同型方式で使用して、ガーブリングされた回路の秘密鍵として表される正しい入力ワイヤを暗号化します。生成された暗号文は、ワーカーに与えられる入力 (σx) の公開符号化を表し、秘密鍵 (τx) はクライアントによって秘密に保持されます。その後、ワーカーは、問題生成アルゴリズムによって生成された暗号文に対して Yao プロトコルの計算手順を適用します。これは、ゲート暗号文を再帰的に復号化して最終的な出力ワイヤ値(σy)に到達するまで繰り返すことで行われます。暗号化方式の準同型性により、ワーカーは正しい出力ワイヤの暗号化結果を得ることができます。最後に、ワーカーは出力の暗号文をクライアントに返し、クライアントはそれを復号化して実際の出力 y = F(x) または ⊥ を計算します。
検証可能な計算スキームの定義によれば、そのスキームは正当かつ安全でなければならない。スキームの正当性は、問題生成アルゴリズムが、正直なワーカーが検証に成功し、かつ入力に対する関数Fの評価に対応するエンコードされた出力値を計算できるような値を生成する場合に達成される。一方、検証可能な計算スキームは、悪意のあるワーカーが、与えられた関数Fと入力xに対して、検証アルゴリズムに誤った出力を受け入れるよう説得できない場合に安全である。
検証可能な計算は理論的には可能であることが示されているものの(完全準同型暗号や確率的に検証可能な証明を用いる場合)、既知の構成のほとんどは実際には非常にコストがかかる。最近、検証可能な計算を実用化しようとする研究者がいくつか現れている。その一つがテキサス大学オースティン校の研究者による研究である。[ 18 ]著者らは、確率的に検証可能な証明に基づく議論システムから始め、そのコストを10 20分の1に削減した。また、 Pepperシステムにこの技術を実装した。著者らは、「これまでのところ、安全なシステムを構築するためのツールとして、PCPと議論システムは無駄なものではないという結論に至っている」と述べている。
現在ではさまざまなグループによる多数の実装を含む全体的な領域が調査された。[ 19 ]
2010年代には、検証可能なコンピューティング技術がブロックチェーン技術において実用的な応用例が増加した。[ 20 ]
{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)