Enigma ホワイトペーパーの日本語訳及び解説 part4
part1からpart4で全訳になります。日本語解説ブログをお書きになる方はご自由に利用しちゃってください。
5.2 Hierarchical secure MPC
情報理論によると、セキュアなMPCプロトコルには、各計算ノードが(O(n^2)の複雑さで)他のすべてのノードとつながっており、a constant number of rounds(一定数のラウンド)ともつながっていることが要求される。
LSSSの場合、この計算の複雑さはすべての乗算演算に当てはまるが、加算演算は相互通信なしで並列に計算できる。前述したように、安全な加算と乗算のプロトコルは、コードを安全に評価する汎用インタプリタを構築するのに十分である。
Cohenらは、図3に示すように、一定サイズのMPCゲートの対数式を使用してnパーティのセキュアなプロトコルをシミュレートする方法を最近提案した。
我々は彼らの結果をLSSSに拡張することで、乗算の対話の複雑さを二次のオーダーから一次のオーダーに削減することができ、その際に増大した計算の複雑さは並列処理によって対応することができた。
図4は、シンプルなMPCが当事者の数によってどのように制限されるかを示しているが、我々の実装では任意の大規模なネットワークにまで拡大することができるのである。
5.3 Network reduction
ネットワークの計算能力を最大にするために、ネットワーク削減技術として、ネットワーク全体からランダムに選ばれたサブセットが計算を実行することになる。
ランダムにノードを選ぶ際には、ロードバランシング要件と、公開検証アクションによって積み重なった評判が高いものが優先的に選択される。 これにより、いかなる時点においても、ネットワークがフル活用される。
5.4 Adaptable circuits
私たちのシステムで評価されたコードは、不正直な多数が結集しない限り(t≥n/2)、情報を漏らさないことが保証されている。これは、入力値の場合だけでなく、コードが評価されている間に計算された中間変数にも当てはまる。
注意深い読者は、関数が入力から出力まで評価されるとき、中間結果は概して記述が少なくなり、より集約的になることに気付くだろう。
シンプルな関数や入力が殆どない関数の場合はその限りではないが、そもそもこれらの関数は計算が高速であるため、追加の手順は必要ない。
しかし、多くの行のコードと多数の入力を伴う計算コストの高い関数では、関数評価プロセス全体で固定nを使用する代わりに、計算ノード数を動的に減らすことができる。
具体的には、入力から出力までの結果を伝播するフィードフォワードネットワーク(図5)を設計する。元のコードが再編成され、まず入力に加算ゲートを処理し、次に乗算ゲートを処理する。中間結果はN/c個のノードと秘密共有され、プロセスは再帰的に繰り返される。
5.5 Scripting
前述のように、エンドツーエンドの分散アプリケーションは、プライベートコントラクトを使用して開発されており、さらにオンチェーンとオフチェーンの実行に分割されている。 オフチェーンコードは結果を秘密にしたまま返し、ブロックチェーンに正確性の証明を送信する。 簡単にするために、スクリプト言語は、よく知られているプログラミング言語と構文が似ている。 スクリプト言語には、主に2つ追加された点があるが、それらは詳しく説明する必要がある。
5.6 Private data types
開発者はprivateキーワードを使用してプライベートオブジェクトを指定する必要がある。 これにより、これらのオブジェクトを含む計算がセキュアかつプライベートになることが自動的に保証される。 プライベートオブジェクトを扱う場合、データ自体はローカルで手に入るのではなく、それらの参照が与えられるのである。
5.7 Data access
このシステムには3つの異なる分散データベースがあり、それぞれがグローバルシングルトンディクショナリからアクセスできる。 具体的には -
公開元帳
ブロックチェーンの公開元帳は、Lによってアクセスおよび操作することができる。
たとえば、L [k]←1は、すべてのノードの鍵kを更新する。 元帳は完全に公開されていて追記のみ可能であるため、履歴全体が保存されており、読み込み専用でL.get(k、t)を使用してアクセス可能である。
DHT
オフチェーンデータはDHTに保存され、公開元帳と同じ方法でアクセスできる。 デフォルトでは、データは送信前にローカルで暗号化され、署名した人のみがデータを復元できる。 そうでなければ、DHT.set(k、v、p)(ここでkは鍵、vは値、pは条件、すなわち - p:X→{0,1}) pが満たされている場合のみ、kを通してvにアクセス可能である。
公開鍵のリストへのアクセスを制限するなど、いくつかの組み込み述語言語を提供している。 暗号化をしない場合、既定の述語は∀x p(x)= 1であるため、データは公開されているが、オフチェーンで分散されることになる。
MPC
構文的には、MPCを使用することはDHTと同等だが、背景にあるプロセスは異なる。
具体的には、MPC.set(k、v、p)シークレットシェアvを実行する。シェアはローカルビューにシェアを格納する潜在的コンピューティングパーティに配布される。 現在、pを使用すると、vを表示せずにvref←MPC [k]を使用して誰が計算用データを参照できるかを指定することができる。
デフォルトでは、元のディーラーのみがv←MPC.declassify(k )によって、共有プロセスと同様に、さまざまな関係者からシェアを収集し、秘密値をローカルに再構築する。 さらに、同じ共有アイデンティティに属する他のエンティティは、計算のためにデータを参照することができる。 共有アイデンティティの詳細については、6.1節を参照。
わかりやすくするために、L、DHT、MPCディクショナリのすべてのキーを単一の名前空間を使用するものとして扱ったが、実際にはより細かい粒度を使用できるため、データベース、テーブル、及び細かい階層に分けることができる。
6 Blockchain interoperability
このセクションでは、Enigmaがブロックチェーンとどのように相互運用されるかを説明する。 具体的には、ブロックチェーンと自動的に互換性のあるデジタル署名を使用して複雑なアイデンティティがどのように形成されるかについて詳しく説明する。 次に、エニグマのオフチェーンストレージと計算をブロックチェーンにリンクするコアプロトコルについて詳しく説明する。
6.2.1 Access control
プロトコル1は、共有アイデンティティを作成するプロセスを示し、プロトコル2は、述語を満たすための公的に検証可能なコントラクトを実装する。
6.2.2 Store and Load
DHTを介した直接アクセスのためのデータの格納とロードは、プロトコル3に示されている。データを格納するために、書き込み権限が与えられたqstore述語で検査される。 格納者は、誰がデータを読むことができるかを検証するためのカスタム述語を提供することができる。 これは、スクリプト言語でDHTシングルトンオブジェクトを使用して抽象化される基本プロセスである。
(数式略)
6.2.3 Share and Compute
プロトコル4で示されているように、シェアと計算は、処理を可能にするので、ストアとロードプロトコルのMPCに相当する。 内部的には、DHTからのシェアを保存およびロードし、データを安全に保ちながらデータへの参照を処理できるようにする。
(数式略)
7 Incentives
エニグマは暗号通貨でもブロックチェーンでもないため、インセンティブスキームはマイニング報酬ではなく、計算資源の提供への対価としてのフィーに基づいている。 フルノードになるためにはトークンの預託をする必要があり、それによって悪意のある行為は罰せられるスキームになっている。
7.1 Security Deposits
MPCプロトコルに対する潜在的な攻撃は、プロトコルにおいて公平性が保証されていないことを利用するものである。特定の条件下では、悪意のある当事者は、他の当事者もアウトプットを知る前に、アウトプットを知った上でプロトコルを中止することができる。この攻撃は、過半数によって行われた場合には防止することはできないが、ペナルティを課すことはできるのである。
MPCで悪意のあるノードを処罰するために、Bitcoinセキュリティーデポジットを使用する方法について、最近何人かの学者によってリサーチされている。
同様のモデルを使用し、SPDZプロトコル(5.1.2節参照)によって検証された正確性を破るなど、他の悪意ある動作にもペナルティを課すなどへと拡張した。
ネットワークに参加し、データを格納し、計算を実行し、フィーを受け取るには、いかなるノードも最初にシークレットコントラクトに保証金を提出しなければならない。
各計算が完了した後、シークレットコントラクトは正当性を検証し、公平性が維持される。
あるノードがその結果について嘘をついたり、または途中で計算を中止すると、デポジットが失われ、他の正直なノード間で分配される。
計算は、悪意のあるノードなしで(例えば、そのノードのデータシェアを0に設定することによって)続行される。
7.2 Computation Fees
ストレージ、データ検索、または計算のためのネットワーク内のすべてのリクエストは、EthereumのGasのコンセプトと同様に固定価格である。 すべての計算がすべてのノードによって実行されるEthereumとは異なり、エニグマでは異なるノードが各計算の異なる部分を実行し、ラウンドごとに測定された貢献度に従って報酬を与える必要がある。
各関数は、加算および乗算ゲートの回路に還元され、それぞれが1つ以上のラウンドとなることに留意する。
計算に参加しているノードには、提供したラウンド数と実行した演算(加算、乗算)の加重和に従って支払われる。 プラットフォームがチューリング完全であるため、要求の正確なコストを事前に計算することはできない。 したがって、計算が完了した時点で、各ノードが保有する口座残高から各リクエストのコストが差し引かれる。 口座残高が最小限の基準を超えない限り、リクエストは処理されないことになる。
7.3 Storage Fees
データストレージの料金は市場ベースであり、時間制限がある。 ホスティング契約は、所有者のアカウント残高を使用して自動的に更新される。 残高が低すぎる場合、データへのアクセスが制限され、追加の資金が入金されない限り、一定期間内にデータが削除される。
8 Applications
8.1 Data Marketplace
直接消費者からデータのビジネス市場。 保証されたプライバシー、自律的な管理、強化されたセキュリティのもと、消費者はデータへのアクセス権を販売できる。 例えば、臨床試験のための患者を探している製薬会社は、候補者のゲノムデータベースをスキャンすることができる。 市場は、莫大な量のコンフリクトを排除し、顧客獲得のためのコストを削減し、消費者に新しい収入源を提供することとなる。
8.2 Secure Backend
今日、多くの企業が大量の顧客データを保管している。 これらのデータを使用して、パーソナライズされたサービスを提供したり、個人の好みに合わせたり、ターゲットを絞った広告を打つことができる。
エニグマでは、企業は今日と同じ目的でデータを使用することができるが、企業はサーバーでデータを保存または処理することがなくなるため、セキュリティリスクなく顧客のプライバシーを保護することができるようになる。
8.3 Internal Compartmentalization
大規模な組織では、エニグマを使用することで、産業スパイや不正な従業員からデータや営業秘密を保護することができる。 従業員は組織の利益のためにデータを使用し分析することはできますが、データを盗むことはできない。 より多くの人々がより多くのデータにアクセスできるようになり、セキュリティ上のコストが低くなるため、組織内の生産性が向上する。
8.4 N-Factor Authentication
Enigmaで保存された音声、顔、指紋の認識などは、そのユーザーのみがこれらのデータにアクセスできる。 追加の鍵が必要な場合のポリシーは、シークレットコントラクトの中で設定することができ、潜在的な攻撃者には公開されない。
8.5 Identity
完全に匿名かつ正しいことが検証可能な方法で、アイデンティティを認証して安全に保存することは、エニグマにとっては簡単で、数行のコードで書けるのである。 このプロセスはシンプルで、ユーザーは認証に必要な個人情報を秘匿したままシェアをする。 ユーザがログインすると、認証用のプライベートコントラクトが実行され、ユーザを検証し、その人を公的な擬似アイデンティティと結びつける。このプロセスは完全にトラストレスで、プライバシーが保護されている。
8.6 IoT
分散化されたトラストレスなクラウドで、IoTデバイスによって収集された(とてもセンシティブな)データを格納、管理、使用することができる。
8.7 Distributed Personal Data Stores
管理権限と所有権を維持しながら第三者との間でデータを保存し、共有する。 プライベートコントラクトで各サービスの特定のポリシーを設定する。 データ共有の決定は常に取り消すことができるため、アイデンティティは真に保護されている。サービスは生データへのアクセス権がなく、セキュアな計算を実行するだけなのである。
8.8 Crypto Bank
プライベートな内部の詳細を公開せずにフルサービスの暗号化銀行を実行できる。 ユーザーは、財務状況を公然と明らかにすることなく、ブロックチェーンの自律的な管理によってローンを受け取り、暗号化された資金を預け入れたり、投資商品を購入することができる。
8.9 Blind E-Voting
政治的選挙から企業理事会会議に至るまで、最終成果の他に何も公開することなく、どんな投票も行うことができる。 それぞれの有権者のプライバシーは維持されているだけでなく、投票数までも非公開にできる。 例えば、選挙で何らかの過半数の投票が必要だがその分布についての詳細がない場合、全会一致の決定なのか、たった一人の投票で決定されたものなのか、区別がつかなくさせることができる。
8.10 Bitcoin Wallet
1.分散型秘密鍵の生成 - 複数のエニグマノードがキーのセグメントをローカルに作成するが、完全なキーはそのユーザーによってのみ組み立てられる。 エビデンスの証跡はどこにも残らない。
2.分散トランザクション署名 - 秘密鍵を公開したり、証跡を残すことなく署名されたトランザクション。
3.分散型コントロール - プライベートスクリプトを使用して、支出制限、マルチシグネチャ、CHECKLOCKTIMEVERIFYコントロールなどを設定する。 潜在的な攻撃者には、ロック時間、制限または必要な署名の数は完全に見えない。