本稿について
COSMOSのホワイトペーパー、最終更新日: 2018/4/7時点のものを対象とします。本稿では「Appendix」の日本語訳を掲載します。
原文はこちらになります。
スポンサードサーチ
Appendix(続き)
ロングレンジ攻撃を防ぐ
十分に耐性のあるブロードキャストネットワークの集まりと静的なバリデータの集合を仮定すると、ブロックチェーンのあらゆるフォークは検出可能で攻撃を行ったバリデータの保証金は削られる。Vitalik Buterinが2014年の始めに初めて提唱したこのイノベーションは他のPoS型暗号通貨のNothing-at-Stake問題を解決した(関連研究を参照)。だがバリデータの集合は変更できなければならず長い時間が経てばもとのバリデータはみな担保解除となる可能性があるので、ジェネシスブロックから自由に新しいチェーンを作成できるようになるのに、既に保証金はロック解除されているので何らのコストもかからない。この攻撃は、その時点で担保を預け入れているバリデータがフォークを引き起こすと罰することができるショートレンジ攻撃(TendermintコンセンサスのようなフォークアカウンタビリティのあるBFTアルゴリズムを想定)と対比してロングレンジ攻撃(LRA)として知られるようになった。ロングレンジ攻撃はよくPoSに対する致命的な攻撃であると考えられている。
幸いにもLRAは次のように緩和することが可能である。まず、バリデータが担保解除する(つまり担保とした保証金を復元し、コンセンサス参加の手数料をもう得られないようにする)には、"担保解除期間"という一定期間についてはその担保とした保証金を移転不能にする。これはだいたい数週間から数ヶ月だろう。続いてライトクライアントをセキュアにするために、初めてネットワークに接続するときは信頼できるソース(可能であれば複数のソースだと好ましい)に対して最新のブロックハッシュを検証しなければならないようにする。この条件は時々"weak subjectivity"(筆者注:後述)と呼ばれる。最後に、安全性を維持するために、ライトクライアントは最低でも担保解除期間の長さと同程度の頻度で最新のバリデータの集合と同期しなければならないようにする。以上のようにすれば、バリデータが自身の担保資金を解除してステークしていない状態になってから担保を預け入れたブロック高まで遡って新しいブロックを生成・ロングレンジ攻撃を実行しライトクライアントを欺く(攻撃者は十分に多くの初期の秘密鍵をコントロールできると仮定)ことができるようになる前にライトクライアントがバリデータの変更について把握することができる。
この方法でLRAを克服するにはPoWのオリジナルのセキュリティモデルを総点検する必要があるということを付け加えておきたい。PoWでは、ライトクライアントは単純に各ブロックヘッダのPoWを処理することでいつでも信頼できるジェネシスブロックから現在のブロック高まで同期できると仮定されている。しかしLRAを克服するには、ライトクライアントがバリデータの集合に対する変更を追跡するために定期的にオンラインになること、ライトクライアントが初めてオンラインになる場合にはネットワークから受け取った情報を信頼できるソースに照らして極めて慎重に認証するということが必須である。もちろん後述の要件はBitcoinのそれと似通っていて、プロトコルとソフトウェアも信頼できるソースから入手せねばならない。
LRAを防ぐ上述の手法はTendermintにより動くブロックチェーンのバリデータやフルノードにとても適している。というのもこれらのノードはネットワークとの接続を維持することを意味するからだ。この手法はネットワークと頻繁に同期することが求められるライトクライアントにも適している。しかし、インターネットやブロックチェーンネットワークへの高頻度のアクセスが求められないライトクライアントにとっては、LRA克服に別の手法を利用できる。バリデータでないトークン所有者は非常に長い担保解除期間(例えばバリデータの担保解除期間よりもはるかに長い期間)の担保としてトークンを入れることができ、現在と過去のブロックハッシュを証明する二次的な手法でライトクライアントの役に立つことができる。これらのトークンはブロックチェーンのコンセンサスのセキュリティに考慮されるわけではないが、それでもライトクライアントに強力な保証を提供する。もし過去のブロックハッシュ問い合わせがEthereumでサポートされれば、誰もが特別に設計されたコントラクトにトークンを担保として預け入れて決済サービスの証明を提供し、効率的にライトクライアントのLRAセキュリティ市場を作ったことだろう。
筆者注:weak subjectivityについて
コンセンサスアルゴリズムの分類方法の一つとして客観的(Objective)か主観的(Subjective)かというものがある。前者はプロトコルの定義と、ブロックと重要なメッセージ以外に何も知らない新規参入ノードでも必ず現在のステートに関して同じ正しい結論に達するようなコンセンサスアルゴリズムを指し、例えばPoWはこれにあたる。常に最も多くのPoWがなされたものが正だからだ。後者はノードが違えば結論も違うような安定したステートを持つシステムで参加には評判などの膨大な社会的情報が必要なコンセンサスアルゴリズムを指し、例えばRippleなどはこれにあたる。たくさんのノードに信頼されるノードの発言権が強いからだ。
弱主観的(weakly subjective)は両方の中間のようなものともいえる。プロトコルの定義と、ブロックと重要なメッセージと、有効であることが分かっているNブロック以内のステート以外に何も知らない新規参入ノードでも、攻撃者が恒久的に一定割合以上のコンセンサスに関わる集団を支配しているのでなければ同じ正しい結論に達するというものである。この制限を設けることでロングレンジ攻撃対策になる。
参考:Proof of Stake: How I Learned to Love Weak Subjectivity, Vitalik Buterin
(COSMOSホワイトペーパー日本語訳13 ←← 前)|(次 →→ COSMOSホワイトペーパー日本語訳15)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。