※2018年6月27日公開
※2018年6月27日編集
N−Village CTOの林田です。
前回の記事では、Hedera Hashgraphの仮想投票について考察しました。今回は、Hedera Hashgraphのコンセンサスアルゴリズムにおける、セキュリティ耐性について考えてみたいと思います。
想定される攻撃パターン
Hashgraphに対する攻撃パターンは、次のようなものが想定されると思います。
- 嘘のイベント(トランザクション)を作って送る
- 送られてきたイベントを改ざんして他のメンバーに送る
- 送られてきたイベントを無視して他のメンバーに送らない
- 適当なメッセージを大量に作って送る(DoS/DDoS攻撃)
これがすべてではありませんが、今回の記事ではこれらについて考えます。それでは、攻撃パターン別に見ていきましょう。
嘘のイベント(トランザクション)を作って送る
次のような攻撃を想定します。
メンバーBが悪意を持っていたとき、Bが勝手に「AからBに100万円送った」というイベントをねつ造してCに送る
この時、Cは送られてきたイベントの内容をチェックします。
Bが生成した嘘のイベントの中には「AからBに100万円送った」というトランザクションが記録されています。しかし、本来このトランザクションにはA本人による電子署名がされているべきですが、送られてきたトランザクションにはそれがありません。したがって、Cはこのイベントが嘘の内容であると判断することができます。
送られてきたイベントを改ざんして他のメンバーに送る
次のような攻撃を想定します。
メンバーBが悪意を持っていたとき、Aから送られてきたイベントのトランザクション内容を書き換えてCに送る
この時、Cは送られてきたイベントの内容をチェックします。
Bが生成した嘘のイベントの中には「AからBに200万円送った」というトランザクションが記録されています。しかし、トランザクションの内容とAの電子署名から生成されるハッシュ値が異なります。したがって、Cはこのイベントが嘘の内容であると判断することができます。
Bが完璧な改ざんをするには、Aの電子署名を偽造する必要があるため、不可能です。
送られてきたイベントを無視して他のメンバーに送らない
次のような攻撃を想定します。
メンバーBが悪意を持っていたとき、Aから送られてきたイベントを無視して他のメンバーに送らない
AはBだけに限らず、当該イベントの仮想投票が行われるまで、CやDなどに対してランダムにゴシップを続けます。そのため、Bだけが無視したとしても正しく仮想投票が行われます。
適当なメッセージを大量に作って送る(DoS/DDoS攻撃)
次のような攻撃を想定します。
メンバーBが悪意を持っていたとき、Bが適当なメッセージを大量に作成して他のメンバーに送りつけ、コンセンサスが確立されにくくする
通常、他のブロックチェーンにおけるDoS/DDoS攻撃では、コミュニティ全体の機能を効率的に低下させるために、コミュニティ内のコンセンサスの確立に大きく貢献しているメンバーに対してのみDDoS攻撃を仕掛けます。具体的には、ラウンドロビンで採択されたリーダーや、マイニングパワーに優れたメンバーなどが対象となります。
ところが、Hashgraphではメンバー全員がコンセンサスの確立に対して平等に権限を有しています。そのため、DDoS攻撃を成功させるためにはコミュニティ全体の大部分のメンバーを機能不全にしてしまう程に大量のメッセージを送る必要があります。これは経済合理性から考えて現実的ではありません。したがって、Hashgraphはブロックチェーンと比較して強力なDoS/DDoS攻撃耐性を備えているといえます。
セキュリティについての所感
改ざんへの対処として電子証明書やハッシュを活用する部分はブロックチェーンと大きく違いませんが、DoS/DDoS攻撃耐性はHashgraphが優れている印象です。今後執筆する「その2」記事では、以下の攻撃パターンについても考えてみたいと思います。
- コミュニティ全体の1/3以上のメンバーをコントロール下に置く
- ネットワークが一時的に隔離された複数メンバーに対してイベントを送る
内容に間違いがあればご指摘いただけますと幸いです。よろしくお願いいたします。