本稿は、コラム連載企画の6回目の記事です。前回の記事は以下からご覧ください。

前回の記事紹介
前回の記事では、ビットコインと銀行システムを比較しつつ、フィッシングやDNSハイジャックなど攻撃手法についての解説をしました。 フィッシングやDNSハイジャックの手法とは? 敵の手口を知って資産防衛|ビットコインプロトコルのセキュリティ編(2)
初回記事はこちら 非中央集権で信頼を担保する ビットコイン(BTC)ネットワークの仕組みを解説|仮想通貨プロトコルの概要編(1)

本連載は論文の翻訳そのままではなく独自の解説を行っていますが、各章のタイトルには論文と対応する番号を振っていますので参考にしてください。今回は盗難の防止について解説していきます。

2.2盗難の防止

Bitcoinが盗まれるケースというのは限定されています。秘密鍵を盗まれたり、悪用されてしまうというのが主な原因です。ハードウェアウォレットに格納したり、普段使いとは別のパソコンを用意したり、そういった対策が一般的だと思います。

また、Bitcoinではマルチシグと呼ばれる署名の仕組みを使うことが可能で、利用する鍵の数と総数を並べて、「m of n」という呼ばれ方をします。

例えば秘密鍵が3つあり、そのうち2つを使う署名は「2 of 3」です。 このマルチシグでは、複数の秘密鍵を使わないと署名ができません。つまり、トランザクションを生成できません。「2 of 3」の状態では、攻撃者は 3つ存在する秘密鍵のうち、2つを盗み出さないといけないのです

ユーザーが鍵を複数の場所に格納することでセキュリティを高めることができる、というのが一つ目の利点、二つ目の利点は、幾つかの鍵が失われても資金を失うことがない、という点です。

例えば「2 of 3」のマルチシグでは、1つの鍵が失われてしまっても引き続き使うことができます。もちろん「3 of 3」のような仕組みでも、セキュリティを高めるという 1つめの利点はあります。が、ひとつでも鍵が失われてしまうと資金が失われてしまうというリスクがあります。

また、マルチシグには上記以外にもセキュリティを高める役割があります。それは、公開鍵と署名から秘密鍵を推測できる仕組みを持っていたとしても、攻撃が難しくなるという点です。

極端な例ですが、「3 of 7」のマルチシグを考えてみましょう。ユーザーは、毎回違う鍵の組み合わせを試すことができます。このとき、鍵の組み合わせは 35通りあります。

さて、攻撃者の立場に立ってみましょう。攻撃者は、公開鍵と署名から秘密鍵を推測できる能力があります。しかし、こういった攻撃では計算するためのたくさんのデータ、つまり署名を集めることが必要になることがあります。(ここでは、公開鍵から秘密鍵を直ちに特定できる可能性は排除します。Bitcoinの仕組み自体が破壊されることになり、議論の意味がなくなるためです)

例えば、第二次世界大戦のドイツ軍が用いた暗号エニグマでは、最初に使う文字列が固定になっていたことが暗号解読の手掛かりにもなりました。

マルチシグに話を戻すと、例えば7つの鍵「ABCDEFG」があったとしましょう。最初は「ABC」、次に「ABD」…と署名をしたとします。 (Bitcoinでは毎回違う鍵を使うことが望ましいですが、ここでは攻撃側が有利になるように再利用しているケースを考えます)

攻撃者は署名を集めて復号を試みますが、ひとつだけの秘密鍵で署名している場合と比べて、同じ署名のものを集めることが難しくなるのはおわかりになるでしょうか。上記の 3 of 7の例だと、35倍の量を集めた上で分類し、A, B, C, D…と個別に秘密鍵を推測しなければなりません。

組み合わせの問題が非常に難しいことは、数学的にはナップサック問題としてよく知られています。

分かりやすさのため、かなり簡略化していますが、面倒であってもマルチシグによる運用が望ましい点はお分かりいただけたと思います。数学的にみると、以前にも説明したように、鍵の空間は10の77乗なので、ランダムに生成した鍵が既存のものとぶつかる可能性は無視できるほど低いといえます。

加えて、10の25乗以上の大きな値を用いて鍵生成していれば、攻撃者がブルートフォースで 1, 2, 3…と鍵の計算を総当たりで行ったとしても、1秒あたり10億回のチェックで 300年以上が必要になります。秒あたりの処理能力、時間、どちらも現実的な数値とはいえません。

一方で、Bitcoinのアルゴリズムで利用されているECDLP(楕円曲線離散対数問題)は、これまでにもさまざまな研究で効率的な計算が模索されています。

2012年には、PS3を用いて112bitの素数を解読したという事例もありました。しかし、現実的に脅威となりうるものとはいえません。

将来にわたって確実に安全とはいえませんが、他の一般的な公開鍵暗号と同様に、数学的な裏付けを持つ計算量によってBitcoinは守られているのです。

まとめ

今回は盗難の防止、そしてマルチシグについてのお話でした。 次回はトランザクションの改ざんについて、どのように抑止されているのかを解説したいと思います。

坪 和樹

クラウド業界で働くエンジニア、アイルランド在住。 MtGox や The DAO では被害を受けたが、ブロックチェーンのセキュリティに興味を持ち続けている。セキュリティカンファレンスでの講演、OWASP Japan の運営協力や Mini Hardening といったイベント立ち上げなど、コミュニティ活動も実績あり。

トランザクションの改ざんはどう防がれている? 「50%攻撃」の可能性についても解説|ビットコインプロトコルのセキュリティ編(4)

次回記事では、いくつかのシナリオからどうやってトランザクションの改ざんを防いでいるかについて解説します。また「51%攻撃」について、その仕組みと実現可能性について検討していきます。

おすすめの記事