質問: 「マルチシグ」を導入することによりbitcoinの送金など重要な処理のセキュリティを高める方法を知りたいです。 ここで、マルチシグ導入の時にユーザーにも暗号鍵をもたせ、サーバー側の暗号鍵とペアにすることで起動すると言うのは、ユーザーの初期フローに影響があるのと、アプリなどを削除してなくしてしまった時の処理が大変なので行わないこととし、あくまでサーバー内のみでマルチシグを完結させることを前提とします。 簡単のために、マルチシグは2-of-3の構成にして、1つの暗号鍵は完全に保管用、残りの2つはネットワークに繋がったところに置く前提で話を進められるとうれしいです。(この前提ではうまくいかない場合はそこも変えてください) この暗号鍵の保存場所をたとえ2箇所のサーバー(A,Bとする)にわけたとしても、bitcoinの送金の命令出すサーバー(Cとする)はこの2つの暗号鍵を使わないといけないので、Cに侵入されれば、A,B両方の暗号鍵が盗まれてしまうためあまりセキュリティ的に高くなっていると思えません。 実際、ハッカーからしても送金の命令を出しているサーバーCが一番外部に触れるところにあるため攻撃しやすく、わざわざAやBだけ攻撃してくるケースも考えにくいと思います。 https://bitflyer.com/Security によると、大手仮想通貨取引所のbitflyerはサーバー内でマルチシグに対応しているようなのでできないことは無いと思うのですが、どうもセキュリティー的に向上する構成にする方法がわかりません。 どなたか詳しい方、ご回答よろしくお願いします。
回答: 2 of 3のマルチシグを使って安全性を高めたい場合はA鍵をインターネット上のAサーバーに置き、B鍵をプライベートネットワークのBサーバーに置き、C鍵を金庫に入れます。 Aサーバーは未署名トランザクションを作成しA鍵を使って署名します。 A鍵を使って署名されたトランザクションをメールなど使ってBサーバーに送信します。(どこのサーバーにトランザクションを送信しているのかわからないようにします。トランザクション送信側のサーバーで鍵のある場所が特定されなければどんな方法でもOK) Bサーバーでトランザクションを受け取ったらB鍵で署名します。 A鍵とB鍵のトランザクションで署名されたトランザクションをネットワークにブロードキャストします。 質問者はマルチシグと鍵をバラバラにするシャミアの秘密分散法と勘違いしているかと思います。 シャミアの秘密分散法であれば懸念のとおり、鍵を一箇所に集める必要があります マルチシグはトランザクションを鍵を持っているサーバーに対してたらい回しにします