Multisig(マルチシグ)って何?
(18/1/27追記)
coincheckのハック事件を受けて、「マルチシグ」という単語に注目が集まり、こちらの記事へのアクセスも増えていますが、勘違いが広がる前に何点か加筆。
- 今回の事件はマルチシグを利用していたかどうか、より、いわゆる多額のXEMをホットウォレットで管理していたことが問題です。
- ホットウォレットとは運用/業務の効率性を上げるためにサーバー上で秘密鍵を管理している状態で、それゆえハックなどの被害にあいやすいというリスクもあります。
- 通常は資産の大部分は、ハックなどされないようにオフラインの「コールドウォレット」に保管するのがベストプラクティスですが、今回はそれが出来てなかったのが問題です。
- マルチシグは上手く利用すれば、通常のシングルシグネチャ方式よりセキュリティを強化したり、内部犯行を含む資金の持ち逃げを難しくしたりなどのメリットがありますが、こちらも鍵の生成や管理方法が悪ければハック対象になります。
- などなど、今回のコインチェックハックの一件で、利用者、メディアなど共にまだまだリテラシーが低いことが改めて露呈されたので、上記含めた解説は今後もこちらのビットコインダンジョンのブログやビットコイナー反省会の方で動画で細かくしていく予定です。
以下マルチシグに関する解説(2015年に書いた記事ですが…)↓
最近国内でもよく聞くMultisig(マルチシグ)とセキュリティーの話。少し前にbitFlyerが対応し、最近Bitbankのwalletも対応したというニュースもありました。
このブログでもしょっちゅうこの単語は使いますが、そもそもマルチシグとは何なのでしょうか?日本語で情報がないか探してもわかりやすい説明をしているものはない気がするので、今日はマルチシグってどういうもので、どんな利点があり、どのように応用できるのか、についてまとめてみます。(もしかしたらこのブログを読んでいてる人たちにとってはこれくらいもう常識かもしれませんが・・・)
技術的な難しい話はしませんが、もし興味がある人はこちらのスライドを参考にしてください。(Pay-to-script-hash(P2SH)の詳細とか、楕円曲線とかかなりマニアックです笑)
マルチシグとは?
マルチシグ(マルチシグ対応のアドレス)とは簡単に言えば、ビットコインの秘密鍵が一つではなく、複数に分割されており、ビットコインへのアクセスは一定数以上の鍵を合わせる必要があるようなイメージです。
通常(マルチシグでないもの)、秘密鍵は一つの端末やパスワードに依存しています。つまりパソコンやスマホがウィルスにかかったり、パスワードをハックされたりすると自分のビットコインを失うリスクがあることになります。攻撃の対象が一つ(Single point of failure)ということです。
マルチシグアドレスの場合、鍵、というか文字通り署名が複数あり(マルチ=複数、シグネチャ=署名)それを分散して管理することで仮に一つの端末がハックされたり、パスワードが一つ流出したりしても、ビットコインの盗難を防ぐことができます。ハッカーは複数の端末やサーバーなどを同時に攻撃する必要があり、鍵が複数必要なことでセキュリティーが何倍、何十倍も上がると考えられています。
想像するのはそんなに難しいことではないと思います。金庫の鍵も1つよりは、2つ、2つよりは3つあった方がセキュリティーが高くなるのは明らかでしょう。
なぜかあまり書いている人は少ないのですが、通常のビットコインアドレスは1から始まりますが、マルチシグのアドレスは3から始まります。3から始まるビットコインアドレスを見たことがある人もいると思いますが、それはマルチシグ対応のアドレスだということです。
マルチシグの利点とは?
マルチシグの利点は何でしょうか?前述の通り、鍵を複数にすることによるセキュリティーの向上が最も大きな利点だと思います。
ただし、それだけではありません。うっかりパスワード紛失への保険になったり、マウントゴックス倒産(現在捜査継続中ですが)のような、ビットコインスペースで頻発する詐欺もマルチシグを使うことで防げるケースが多いです。
具体例を考えてみましょう。鍵を3つに分散し、2つ以上を必要とする「2 of 3」が最も一般的ですが、もし3つの鍵の内2つを自分が保有し、1つをウォレットのプロバイダーに預けたとします。
普段は自分が管理している二つの鍵を使って(2重にパスワードをかけていたとしましょう)で、自分のビットコインへアクセス(送金)できます。ウォレットプロバイダは鍵は一つしか持ってないので、あなたのビットコインを勝手に送ったりすることはできません。
もし自分がうっかりパスワードの一つを忘れたとしても、もう一つのパスワードさえ覚えておけば、そのパスワードと、ウォレットプロバイダーが持っている鍵一つと合わせれば「2 of 3」がそれでも成立するので、あなたはビットコインへのアクセスを失いません。(逆に言えば、2つとも失くしてしまった場合はさすがにあきらめるしかないということですが・・・)
マルチシグに対応していない1から始まるビットコインアドレスの場合だと、自分が鍵を失くしたり、パスワードを忘れたりすると二度と取り戻せないのと対照的です。(パスワードを忘れてビットコインを失くしてしまった人も少なからずいると思います)
このようにマルチシグはセキュリティーを高めるだけでなく、利便性を高めたり単一の秘密鍵では出来ないような応用を可能にします。次に具体的な応用例を紹介します。
マルチシグの代表的な応用例、マルチシグエスクロー
マルチシグを利用して、一時的にブロックチェーン上に資金を預けておく(エスクロー)することです。
例えば、見ず知らずの相手とオンラインショッピング(ヤフオクのようなイメージ)をする時に、商品が送られてこないのにお金を持ち逃げされた、というようなリスクをマルチシグエスクローで軽減できます。
例えば、ビットコインで中古タブレットを買うとします。商品を注文するために、マルチシグアドレスに10000円をまずデポジットします。このマルチシグアドレスの鍵は3つあり、1つはあなたが、1つは取引相手が、もう1つはサービス運営者(Yahoo的な会社)が持っています。つまり単独では誰もこの10,000円分のビットコインにアクセスできる人はいません。
デポジットを確認したら、取引相手はタブレットをあなたあてに郵送します。商品が到着して問題がないことを確認したら、あなたは受取を宣言します。これが鍵の解放の一つになります。相手もそれに応じれば、2 of 3が成立するのでブロックチェーン上に預けられいたビットコインは相手に解放されこれで取引成立です。この場合運営者は仲介する必要は何もありません。
もし相手が商品を送ってこない場合は、あなたは運営者に連絡し、状況を第3者の視点で仲裁してもらいます。もしあなたの主張が認められれば、運営者が鍵の一つを行使し、あなた自身の鍵とあわせて2 of 3が成立するので1万円分のビットコインはあなたに戻ってきます。
以上がマルチシグエスクローの基本的な流れです。
これを今まで通りのシングルシグネチャでやろうとすると、相手に先にお金を送らなくてはいけないので、資金を持ち逃げされたり、商品に欠陥などがあった時などに返金を拒否されたりしてしまう可能性があります。
マルチシグエスクローを使うことで、仲介者の介入が最低限になると同時に、素性がわからない人とでも安全に取引できるのです。なお、この仕組みを利用した代表的なプロジェクトとしてOpen Bazaarなどが挙げられます。
他にもマルチシグの応用例として、会社内部の資金持ち逃げや使い込みを防ぐために、会社資金への鍵を分散して社内で管理することなども可能です。これを使えば、少し前に話題になったマウントゴックスのような取引所の社長が、個人の判断で資金を流用したりするリスクがかなり軽減できます。
他にもクラウドファンディングに応用することで、プロジェクトが調達した資金を持ち逃げ出来ないようにする、マイルストーンベースクラウドファンディングが可能になったりもします。(詳しくはこちらの記事をどうぞ)
最後に身近な応用例として、お小遣い制のサラリーマンには酷ですが、自分と妻で鍵を2つに分散して管理することで、お小遣いの条件設定などが出来ます。妻の承認がないと月3万円以上のビットコインを使えない、とか、夜12時以降はビットコインの支払いができない、など細かい制限設定が可能です。一部の人にとってこれは悪夢ですね笑
マルチシグ対応のウォレット
何かマルチシグすごそうだというところがわかったところで、マルチシグに対応しているウォレットをいくつか紹介します。全て無料で利用できます。
Bitgo
マルチシグウォレットのパイオニアと言える、BitGoは取引所などにマルチシグソリューションを提供しています。
ただし、個人でもBitGoが公開しているWebウォレットを利用することが可能です。ビットコインにアクセスするには、パスワード二つとスマホを利用した2段階認証が必要です。
Green Address
Green Addressはマルチシグ対応のモバイルウォレットです。iOSとAndroid両方に対応しています。
ビットコインへのアクセスにはパスコード、SMSなどの二段階認証などが必要となっています。(自分でセキュリティーレベルは選択可能)
他にもFacebookの友達に送金できるなどのソーシャル連携もやっているようです(使ったことはないですが・・・)マルチシグ対応のモバイルアプリとしては一番古株ですね。
他には、UIが非常に美しいモバイルウォレット、Ninki WalletやBitPayが少し前に公開したHDマルチシグウォレットCopayもおすすめです。
マルチシグの課題は?
基本的には利点ばかりのマルチシグですが、課題、弱点として以下のようなものがあります。
- 設定が面倒
鍵をいくつも設定することになるので、秘密鍵一つのものと比べ登録は時間がかかるし、面倒です。場合によっては設定している途中で面倒くさくなって投げ出してしまう人もいると思います。セキュリティー向上のためには仕方ないですが、弱点と一応言えます。
- セキュリティーの穴
例えばバックアップ用の鍵を保存するために、プリンターで紙に保存したとします。この時プリンターがウィルスにやられていたとしたら、せっかく何重にパスワードをかけてもあっさりハックされてしまうおそれがあります。その点では、Trezorの用に本体に秘密鍵が保管されているハードウェアウォレットよりはセキュリティーに劣るとは言えるかもしれません。(もちろんやり方次第でいくらでもセキュリティーは向上しますが)
- 鍵の持ち主を誰に指定するか
鍵を分散して持つことが可能になりますが、鍵を誰に預けるか慎重に決める必要があります。もし10人に鍵を分割して、7 of 10で保管すれば内部犯行などは起きない、と考えていても、仮に自分以外が全員ぐるだったとしたら簡単に内部犯行は可能です。誰に鍵を預けるのか、それぞれどのようなインセンティブがあるのかは慎重に決める必要があります。
最後に(今後の展望)
まだまだ1から始まるアドレスを使っている人が大半ですが、今後段々3から始まるマルチシグのアドレスを普段から使う人が増えるのではないかと考えています。
また、現在のマルチシグに対応していないウォレットも最終的にはほぼ全てマルチシグになっていくのではないでしょうか。
また、取引所などもほぼ間違いなくマルチシグが最低条件に今後なっていきます。海外ではCoinbase, Bitstampなど主要な取引所はすでに対応していますし、国内でもbitFlyer、Bitbankは対応済みです。
他にも、マルチシグをクレバーに使った、分散型取引所や今ではまだ考えられていない応用例なども考案されていくでしょう。とりあえず今までマルチシグを使ったことがなかったという人は、実験でもいいので上記のウォレットをちょっといじってみることをお勧めします。
2014年はマルチシグの年と一部の人には言われていたので、2015年の今さらという感じもありますが、日本語で丁寧に解説しているところがあまりなかったので書いてみました。
それでは。