長期保存向けマルチシグアドレスのセットアップ方法:Glacier Protocol
私がマルチシグ推しであることは恐らく皆さんもご存知のことでしょう。マルチシグウォレットを使い、送金の手順に移動やコミュニケーションを必要とすることは、特に5ドルレンチ攻撃(家に来た強盗にハードウェアウォレットのPINを吐くまで鈍器で殴られる)などの強盗対策に有効です。(鍵を集める際に時間もかかるし通報の機会が生まれ、失敗リスクが高い)
今日はマルチシグを活用したもっとも堅牢なコールドストレージのプロトコルの1つであるGlacier Protocolについて紹介します。
実際に実行される際は、この抄訳ではなく、より詳細で正確な原文を使用してください:

GLACIER PROTOCOLとは
多額のビットコインを自身で管理したい方向けのプロトコルで、技術的な知識はそれほど必要ありませんが、Glacier(氷河)という名のとおり、Glacier Protocolに則って資金の安全を確保するには時間と労力が必要です。
セキュリティの観点
ビットコインの保管時に考えたいリスクは大きく分けると下記です:
・鍵の紛失リスク(アクセスできなくなる)
→記憶媒体の紛失によるもの(人的ミス)
→記憶媒体の故障・消滅によるもの(不可抗力)
・鍵の盗難リスク(第三者に鍵を窃盗・強盗される)
→マルウェアによるもの(サイバー攻撃)
→物理的な盗難(窃盗・強盗)
→鍵の情報漏洩によるもの(人的ミス)
Glacier Protocolはペーパーウォレットを利用した2-of-4 multisigを設定し、秘密鍵を自宅と3箇所の貸金庫などに分散することで鍵の紛失リスクと物理的な盗難に対策し、秘密鍵の生成や署名には一度もインターネットに接続されていないコールドストレージ専用パソコンを利用することでサイバー攻撃の可能性を低減し、詳細なマニュアルで意図せぬ漏洩を防ぎます。
コスト
Glacier Protocolに記述されている方法に必要なものは、
・メーカーの違う新品ノートパソコン2台
・メーカーの違う新品のUSBメモリを2本ずつ
・インターネットアクセスと管理者権限のあるパソコン2台
(うち1台は他人の所有物か新品、もしくは長期間使用しているもの)
・プリンター
・カメラ付きのスマートフォン
・新品のUSBメモリをさらに2本
・精密機器用ドライバー (ノートパソコンのWifi機能を除去します)
・絶縁テープ
・カジノダイス (各面が出る確率が限りなく1/6に近いサイコロです)
・ファラデーバッグ (ワイヤーメッシュ入りの、電波を通さない袋)
・扇風機 (盗聴対策のホワイトノイズ発生機として)
・家庭用金庫
・耐久性の強いコピー用紙 (防水性、耐候性、耐熱性、破れにくさ)
・ボール紙の封筒 (中身が透けることがないように)
・封印シール (開封されたかわかるやつ)
と、かなり多岐に渡ります。安く揃えても6-8万円と見積もります。
メーカーが違うデバイスを使用する理由は、メーカー特有の脆弱性がもしも悪用された際に、同じ処理で違う結果が出力されたことに気づくためです。
もはや儀式のようなレベルですが、取引所などのコールドストレージへのアクセス手順も似たように儀式的なものです。
手順
イメージを掴みやすいので、手順を抄訳しました。
① 手順書をダウンロードし、検証し、印刷 (SHA256チェックサムを検証)
② インターネットアクセスと管理者権限のある2台のパソコンでそれぞれウィルススキャンをする(なければセキュリティソフトをインストールする)。
③ 新品のハードウェアを「新品パソコン1台と、メーカーが同一のUSBメモリ2本」×2組に分ける。絶対に混ぜない。(付箋を貼って区別推奨)
④ イーサネットポートがあれば封印シールを貼り、パソコンを分解してWifi基盤・Bluetooth基盤を取り外す (多くの場合同一のカード)
⑤ ②のパソコン両方でUbuntuをダウンロードし、検証する。③で分けたのとは別の新品USB2本にそれぞれのパソコンからUbuntuの起動イメージを書き込む。
⑥ ②のパソコン両方を、⑤で作った起動イメージの入ったUSBで起動する。起動したUbuntuから再びUbuntuをダウンロード・検証し、③で分けたUSBのうち1本ずつにそれぞれのパソコンからUbuntuの起動イメージを書き込む。(新品でないパソコンに③のセットからUSBを挿すのはこの1回のみで、以後は取り外し、セットとなるPC以外からは永遠に隔離する)
⑦ 次に、②のパソコン両方に、③のセットからまだ使用していないUSBをそれぞれ挿し、GlacierやBitcoin Core、qrencode、zbar-toolsなどをインストールし検証。(新品でないパソコンに③のセットからUSBを挿すのはこの1回のみで、以後は取り外し、セットとなるPC以外からは永遠に隔離する)
ここまでのポイント:
デバイス自体やハードウェアのメーカーを分けて、同じプロセスを並行して2回行うことで不正の検知を行っています。また、隔離PCの起動ドライブの作成をクリーンなOSから実行することでマルウェアの存在確率を下げるほか、手順もケースが1つしかないので指示しやすくなります。
⑧ 部屋のサイドチェネル攻撃対策を行う。カメラや別の人間からの視線をすべて遮る。室内にカメラがないか確認する。外に音が漏れにくい部屋を選ぶ。マイク付きのデバイスの電源を切り、扇風機をつける。新品パソコンは事前に充電し、ACアダプタを抜き、Glacier Protocolのプロセスを行う間は電池でのみ稼働させる。部屋のPCやスマホの電源をすべて切り、ファラデーバッグに入るものはすべて入れる。デスクトップパソコンは電源ケーブルを抜く。
⑨ それぞれの新品PCを、対応する起動ドライブから起動し、Bitcoin Coreなどが入ったもう1本のUSBメモリを挿す。ファイルをPCに移し、インストールする。
⑩ サイコロとコンピューターからエントロピーを提供し、秘密鍵を4つと、マルチシグアドレスとRedemption ScriptとQRコードを生成する。両方のコンピューターで同じデータが表示されていることを確認する。違いがあれば再確認し、それでも違いがあれば続行しない。
⑪ 秘密鍵を手書きで1枚に1つずつ、紙に書き写し、確認する。日付とGlacier Protocolのバージョン番号も記載する。
⑫ 新品パソコンのメモ帳(Scratchpad)にコールドストレージアドレスとRedemption Scriptをコピペし、ターミナルの表示をclearで消去する。⑪の紙をすべて視界の外に隠す。(裏返すだけではダメ)
⑬ スマホをファラデーバッグから取り出し、新品パソコンでコールドストレージアドレスをQRコードとして表示し、スマホから読み取ったものが同一か確認する。違いがあれば続行しない。スマホからそのコールドストレージアドレスをインターネットアクセスのあるPCに送るなどする。
⑭ Redemption Scriptについても、⑬と同じ手順を踏む。
⑮ スマホの電源を切りファラデーバッグに戻し、新品パソコンの電源を2台とも切る。
ここまでのポイント:
これで理論上、自分だけしか知らない秘密鍵4つが生成され、マルチシグアドレスとRedemption Scriptを任意の場所に保存できました。
⑯ インターネットアクセスのあるパソコンで先程スマホから送信したマルチシグアドレスとRedemption Script、日付、Glacierのバージョンを記載したPDFを作成し保管、また、4部以上印刷する。
⑰ パソコンをシャットダウンし、手書きの秘密鍵1つと⑯のプリント1枚をそれぞれボール紙の封筒に入れ、視界の外に置く。
⑱ テストとして、マルチシグアドレスに少額入金する。また、出金フロー(㉓~㉗)もテストし、ここまでの情報に間違いがなかったか確認する。
⑲ 封筒の内容物を確認し、糊付けした上に封印シールを貼る。すぐに自宅内で一番安全な場所に置く。
⑳ すべてのUSBに封印シールを貼る。新品パソコンすべてを閉じ、封印シールで開けないようにする。間違って使われないところに保管する。
㉑ 6ヶ月後に「メンテナンス」(㉘~㉜)の予定を入れる。
㉒ なるべく早く、封筒を貸金庫などそれぞれの保管場所に移動する。同じ建物に封筒が2つ存在しないようにする。
ここまでのポイント:
これで、保管が完了しました。あとはメンテナンスや引き出しだけです。
引き出し
㉓ マルチシグアドレスとRedemption Scriptが記載されたプリント(PDF)を元に、そのアドレスに存在するUTXOのtxidをすべて記録し、フルノードやブロックチェーンエクスプローラからraw unspent transactionを取得する。
㉔ raw unspent transaction、コールドストレージアドレス、Redemption Script、送金先アドレスをそれぞれQRコードにし、印刷し、検証する。送金手数料相場を確認する。
㉕ 新品パソコンでQRコードを読み取り、トランザクションを作成して検証し、(安全を確かめて)秘密鍵を使って署名する。
㉖ 署名したraw signed transactionをQRコードにしてスマホで読み取り、検証したらパソコンに送るなどし、新品パソコンを両方シャットダウンする。
㉗ インターネットアクセスのあるパソコンでraw signed transactionを開き、内容を確認し、ビットコインネットワークに配信する。(ノードやcoinb.inなどを使用)
メンテナンス
㉘ マルチシグアドレスの残高を、ノードやブロックチェーンエクスプローラで確認し、異常がないことを確かめる。
㉙ Glacierにセキュリティアップデートが出ていないか確かめる。ある場合は従う。
㉚ 秘密鍵を含む封筒の中身を1つ1つ、目視で確認する。封筒が正しい置き場所にあること、置き場所のセキュリティに問題がないこと、封筒自体のコンディションがいいこと、封印が破られていないことを確認する。
㉛ 少額の出金を試す(㉓~㉗)。
㉜ 1年後にまたメンテナンスの予定を入れる。
現実的に使えるのか
Glacier Protocolはさすがに非常にセキュリティが強固な保管方法です。しかし、こだわりだすとセキュリティにはキリがありません。ただ、どこまでのコストをかけるかのバランス判断が難しいので、これに従っていればひとまず安心という意味では有意義なプロトコルだと思います。
しかしやはり大半の人にとって、実行の難度やコストを下げる多少のアレンジを加えることでGlacier Protocolを使いやすくしたものを活用する、というほうが現実的かと思います。結局重要なのは、秘密鍵が漏れうる経路をできる限りつぶすことです。
例えばCoinkite Coldcardは、エアギャップで使用できるハードウェアウォレットで、Glacier Protocolでいう新品のノートパソコンの役割を果たすことができます。これがあるだけで、起動ドライブを作成したりする手間は大幅に省けます。つまり、このようなエアギャップウォレットを活用すればセットアッププロセスは:
① 作業場所のサイドチェネル攻撃対策を行う
② サイコロとエアギャップウォレットで秘密鍵を4つ生成作成
③ エアギャップウォレットでマルチシグアドレスを作成し、QRコードでスマホに転送しバックアップ
④ Redemption Scriptも筆記かQRコードで転送しバックアップ
⑤ 秘密鍵を封印、保管場所に移動
⑥ エアギャップウォレットを封印または破壊
と、かなりシンプルになります。これで99.5%の人は十分でしょう。
また、生の秘密鍵でなく、ハードウェアウォレットを使うというケースも考えられます。この場合は、脆弱性対策としてウォレットのメーカーを分散させつつ共通の規格に対応させるところが少し面倒かもしれませんが、多数のアドレスを作れるのでプライバシー的には吉かもしれません。
おわりに
とても長い記事になってしまいました。ビットコインを真剣に安全に保管しようとすると、かなり長い手順が必要で、これでも大きな犯罪組織や政府機関などに狙われたら全然足りないです。しかし、そのようなターゲットにならないと考えるなら、終盤で提案したエアギャップハードウェアウォレットやハードウェアウォレットを使ってアレンジしたバージョンも考えられます。
もし皆さんが長期保有目的でマルチシグを活用する場合は、Glacier Protocolを利用するしないに関わらず、手順で意識されているポイントを踏まえて、気をつけて保管しましょう。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション