カナゴールドの仮想通貨ブログ

カナゴールドが推す銘柄を紹介します

Enigma ホワイトペーパーの日本語訳及び解説 part3

解説の続きです。翻訳してると理解が深まります。

 

5.1.2 Correctness (malicious adversaries)

 

ここまで、我々はプライバシーの性質について議論した。

活性(仕様通りに動くこと)は正直な人がマジョリティを占めていることを条件に成り立つが、中間値や出力値の再構成がうまくいくためにはそれが最重要である。

しかし、現在のフレームワークでは、出力の正確さについては保証されていない。ネットワーク内の誰かが、演算処理中に無効な結果を送信して出力を無効なものにする可能性がある。 BGWは検証可能なMPC情報理論上の解決策を提示したが、実際的な複雑さは、単純な実装ではn^8のオーダーくらい悪くなる。

したがって、我々の目標は、悪意ある者に対して安全であるが、n^2のオーダーと同じ複雑さを持つ「半正直」MPCフレームワークを設計することになる。後に、これをさらに最適化する。

 

つい最近、Baumらが、 すべてのコンピューティングノードがひそかに悪意を持つ者であったり、または単一のノードを除いて他すべてが能動的に悪意を持っている場合でも、正当性を保証する、公に監査可能なセキュアなMPCシステムを開発した。 彼らの最先端の結果は、SPDZの一形態(speedzと発音)に基づいており、各計算のトレイルを保存している追記専用の掲示板に依拠している。

 

これにより、公開元帳の証明証のトレイルと比較することによって、監査当事者が出力をチェックすることができる。 我々のシステムでは掲示板としてブロックチェーンが使用されているため、全体的なセキュリティの問題は、そのホスティングブロックチェーンのセキュリティの問題に帰着される。

 

SPDZ

悪意のある敵対者(不正直なマジョリティ)に対して安全なプロトコルで、MPCの正当性を保証するもの。 本質的にそのプロトコルは、ランダム性を共有するために「ちょっとだけ準同形暗号」(SHEsomewhat homomorphic encryption)を使用する計算負荷の高いオフライン(前処理)ステップから構成される。

次に、オンライン段階では、計算はパッシブケースに似ており、計算負荷の高い公開鍵暗号は含まれていない。 オンライン段階では、すべての部品は、次のように加算な部品とそのMACで表される。

 

<s>pi = ([s]pi , [γ(s)]pi ), s.t. γ(s) = αs,

 

ここで、αは固定された秘密共有MACキーであり、<>iは加算準同型である修正秘密共有方式を表す。 <>-sharingは、グローバルMACキーαを公開せずに動作するため、再利用が可能である。

 

前述のように、乗算は加算より複雑である。 乗算は{<a><b><c>}の三つの組(c=abとして前処理ステップで生成される)を必要とする。 次に、<>-sharingを使用して共有される2つの秘密s1およびs2が与えられると、次のように三つの組を用いることによって、生成物s = s1s2の秘密共有が達成される。

 

<s> = <c> + ε<b> + δ<a> + εδ

ε= <s1> − <a>, δ = <s2>− <b>

 

前述したように、三つの組の生成は、SHEに基づく計算負荷の高い処理である。セキュリティプルーフを含む完全なプロトコル2014年のbaumの論文にある。

 

γ − αs = 0,

 

によって検証される。

 

ここで、一般性を失うことなく、秘密sは任意の安全な計算の再構築された結果である。 直観的にはこれは、計算された結果にMACキーをかけたものと、MACの上から計算したものとの比較にすぎない。

実際の比較を行っていないのは、αを秘密にして再利用できるようにするためである。

 

ここまでで、<>-sharingSSSと同様の性質を持っていることが分かる。つまり、準同型であり、乗算(n^2のオーダーの通信の複雑さ)のための再共有ラウンドが必要だが、 最大n-1人の敵に対して耐性がある。

 

オフラインラウンドは、別々のマシンでの計算に分割することができ、他の計算が実行されている間に並列で計算することができるため、全体的な効率に大きな影響はない。

 

Publicly verifiable SPDZ

公に検証可能なケースでは、MACとコミットメントがブロックチェーンに格納されているため、コンピューティング参加者がすべて悪意を持っていても安全なスキームになる。

2014年の論文の表記に従って《・》-sharingを表現すると、

 

s = (<s>,<r>,<g^s*h^r>),

 

sは秘密、rはランダムな値、c = g^s*h^rPedersen commitmentであり、ghはジェネレータとして機能する。 《・》-sharingは加算準同型性を保持しており、少し修正された多重化プロトコルでは、三つの組(《a》、《b》、《c})をオフラインで生成するという同じ考え方を再利用できる。

 

ここでの主要な知見は、ノードがコミットメント上ではなく、<>-sharing値のまま計算すればよい点である。 これらはブロックチェーンに格納され、出力を持つ任意のパブリックバリデーターによって後で処理される。 1つのノードがコミットメントを壊したとしても、それは監査人には明らかとなる。