前回の続きっぽい物。完全に自分用メモであってるかどうかすら分からないので鵜呑みにしないでください。結論としてマルチシグ環境でもハードウェアウォレット不要じゃね?って記事です。コメントによりテノヒラクルーする可能性大。
=========
前回の疑問点として、オフライン環境でマルチシグを作成できんの?って話で、調べてみたらできそうだって所まで分かった。
で、色々見て思ったのが、オフライン環境さえあればマルチシグであろうとも、ハードウェアウォレットってひょっとしていらなくね???と思ったのが今回の記事。
何故かというと、ハードウェアウォレット単体でマルチシグ環境は作れず、結局オフラインPC上でシードフレーズを複数作ってマルチシグ専用ウォレットを作る必要がありそうかなっていうのが今の知識です。今回は本当にそうなのかについても深堀していく予定。
主目的はビットコを保存する目的は使うためじゃなくて保管するためのものとします。つまり、普段使いだったらHWWはあった方が絶対便利だと思いますが、もう10年ぐらい保管しっぱなしでいいか~みたいに思ってるならHWW不要じゃないってこと。
私の中の頭の中のシナリオ
- オフラインPCを用意します
- OSをUbuntuとかWindows以外の方が安全度高そう(適当)
- Sparrow Walletとかのソフトウェアをインストール(ここはUSBとかで持ってこざるを得ないリスクポイント。ただしmd5sum値とか改ざんチェックして確認すればなんとかなると思いこむことにする。ソフトウェアではなく、USB自体にハックソフトが入っていた場合はオフラインだからセーフということにする)
- シードフレーズを1つ作って紙とかの物理媒体に保管
- ガチでやるならここでOS初期化!手順を3回繰り返してシードフレーズを3つ作る(※AIに聞いたらできる、とのこと)
- シードフレーズを作るウォレットアプリは3種類別々の物を使う。Sparrow WalletとかElectrumとか色々あるらしいので3つ選んで使う(※使ったことないのでどれがいいとか分からん)
- シードフレーズ3つ作れたら改めてOSとSparrowを入れなおして、そこにシードフレーズ2つ(2-of-3想定)ぶっこんで復元できるかチェック
- オフラインPCから送金テストをする。なんかトランザクション情報?的なファイルができるらしいので、それをオンラインのメインPCのSparrow Walletとかのソフトウェアにインポートして、送金チェック(※最悪オンラインPCがハックされてて、この送金が盗まれる可能性があるが、秘密鍵は盗まれていないため、今回の送金1回分だけやられる程度で被害は押さえられる)
- オフラインPCは盗まれるリスクを考慮するなら破壊する。もしくは完全初期化しておく。※これで秘密鍵はバックアップしたシードフレーズ3つのみ管理でOK
うん。全然いけるよね。やっぱHWWいらなくない?
で、今ひらめいたんだけど、仮想OS使って、かつ、そのメインPCの物理LANを物理的に抜いてから上記をやればほぼ問題ないんじゃない?
これなら仮想環境の設定でLAN接続を無効化する設定は当然として、オンラインに接続する前に仮想環境をディスク消去ツールで削除してから仮想OSそのものを削除してしまえばいい。こうすること仮想環境の仮想ディスクはディスク消去で完全に消えるし仮想OSそのものも無くなってるのでメインPCハックされても、さすがにそこまでハック者もみないだろう読み。
もっと言えば、1つのシードフレーズを作成した後にOS初期化して再度別のウォレットをインストールする方法なら更に盤石じゃなかろうか。というか、それは流石にやり過ぎな気もする。
ということで、今日もAIえもんに聞いてみました。
===============
🎯 では、仮想OSを毎回初期化して1つずつ作る必要がある?
結論から言うと:
👉 そこまでの手順(毎回OS初期化)はほとんどの現実的な攻撃シナリオでは不要 です。
理由:
-
一つの仮想OSで複数ウォレットを順に立ち上げ、シード生成 → 紙に記録 → 仮想OS削除、でリスクは十分低い。
-
仮想OS自体がホストOSに監視されていたら、何度作り直してもホスト側に記録される可能性は消せません。
-
つまり「仮想OSを作り直す手間をかけるより、ホストOSが本当に安全か」を気にする方が重要。
🌟 補足ポイント
運用案 | 実効安全度 | コメント |
---|---|---|
仮想OS 1つで 3つのシードを作成 → 仮想OS削除 | ★★★★★ | 実際の攻撃リスクに対して十分。 |
仮想OSを初期化し直し、毎回1つずつ作成 | ★★★★★★(理論上は強い) | 理屈としては強いが、現実的リスク低下効果はほとんどない。手間が大きい。 |
ライブUSBで直接PCを起動し、毎回再起動・OS不要 | ★★★★★★★ | 仮想環境のホスト依存リスクを排除できる最強運用。手間は増えるが安全度最高。 |
=================
あーーーー!なるほどね!ライブ環境でやればもっと安全ってことね!!!
今使ってるメインPCが危ういなら、最初からライブUSBを使って別のOS環境を立ち上げて、その場限りでやってしまえばいいってことか!仮想OSすら不要だしホストOSの汚染とか全く気にならなくなるってやつか!物理的にLAN線抜いてるし問題なさそう!
なるほどなぁ・・・なんか見えてきました。
また、全然話は変わるけど、xpubファイルをオンラインPCのウォレットに入れておくことで、受信専用(残高確認専用)の環境ができるから便利だしセキュリティ的にもウォレットの中身最悪見られるだけなので安全ということも理解した。なるほどねぇ。
なので、ライブUSBはあくまで秘密鍵、メインPCはxpubファイルをインポートした読み取り専用マシーンかつ送金時の一時利用ウォレットとして運用すればOKということか。
署名は秘密鍵がある所で承認(オフライン環境)で、その承認後のファイルをオンラインのウォレットで使うと送金が可能と。良くできてるなぁ。5年間ビットコ持ってましたが、署名の意味が初めてなんとなく分かりました。(無知)
ただライブUSB使うの、若干手間なんだよなぁ・・・仮想OS上でサラっとやりたい。いやいや、財産掛かってるからちゃんとやった方がいいんだけども・・・一応聞いてみた。
==============
🎯 あなたの3つのパターン比較
① 仮想OS(物理LAN抜き)で3つウォレット導入 | ★★★☆☆ | ★★★☆☆ | ネット遮断前提なら現実的に使える。ただしホストOSが安全であることが絶対条件。
② 仮想OSでライブUSB起動 | ★★★★☆ | ★★★★★ | 仮想化ホストを介す分、物理USB直起動よりは若干リスク。手間も大きい。
③ メインPCでライブUSB直接起動 | ★★★★★ | ★★★★☆ | ホストOSの影響ゼロ。手間がやや増えるが安全度は最高クラス。
🎯 仮想OSで3つウォレットを入れるパターン、ダメ?
👉 結論:ダメではない!条件付きで十分実用範囲です。
✅ 前提条件がクリアできればOKです👇
-
物理LANケーブルを抜く、Wi-Fi無効化で完全オフライン
-
仮想OS環境のディスクイメージを削除 or ディスク消去ツールでクリア
これが守れているなら、仮想OS内で3ウォレットを順に動かして
✅ シードフレーズを紙に記録
✅ 仮想OSを削除
という運用は合理的で、現実の脅威モデルでも十分高水準です。
=============
まぁ結局そこに到達するよね。ただ、更に調べるとディスクイメージの削除を消去ツール使ってやるのって非推奨で物理ディスクを目的としたものが殆どらしいので、その辺考えてもライブUSBでやった方が無難かなと思いました。
では復元方法はどうすればいいでしょうか。
復元方法
- ライブUSBを使って改めてSparrow Wallet等をインストールしてシードフレーズ2個インポート
- オフライン環境で送金トランザクションを作成
- 署名してオンラインPCにPSBTというファイルを移して送金
正直復元方法はめんどい。オンラインPCにはSparrow Walletとかでxpub3つを入れて受信専用(秘密鍵無し/残高チェック可能)な状態のものがあると思うので、そこにPSBTファイルを入れればいいということになる。
ここでHWWを2台買ってきて復元することもできるそうだ。とはいえ、HWWが今度はセキュリティリスクにさらされるので、やっぱりハードウェアウォレット、いらない気がするなぁ・・・
HWWのもう一つのデメリットは、HWWを信頼し過ぎると、物理的に故障した時に結局あたふたすること。また、Ledger Nano Sがサポート終了すると発表があったのですが、こういう4,5年経った後にサポート終了したら結構アタフタするのではないだろうか。
それを言ったらソフトウェアウォレット側もどうなんだけど、最悪シードフレーズを元にどう復元するか、という運用を確立さえすれば、その復元先のウォレットはハードウェアでもいいしソフトウェアでもよくなるのではないだろうか。
で、ここで気になったのが復元する際の互換性。これについてもAIに聞いてみる。
シードフレーズの互換性について
基本的にBIP39対応のウォレットであれば、同じシードフレーズを使って復元できます。
つまり、Ledgerで作ったBIP39シードをElectrumやSparrow、Trezorなど他のBIP39対応ウォレットにインポートして復元可能です。
ただし注意点としては:
-
派生パス(Derivation Path)がウォレットごとに違う場合があるので、復元時に正しい派生パスを設定しないと、アドレスや残高が見えなかったり、間違った鍵が生成されることがあります。
-
これは特にマルチシグ構成で複数ウォレットを組み合わせる際に重要です。
派生パス?良く分からん!
「シードフレーズが3つ手元にあります。派生パスがあって無いからインポートできません。派生パスの設定を変更したらインポートできました。こういうシナリオですか?」って聞いてみた
マルチシグでのシードフレーズと派生パスの関係
基本ルール
-
シードフレーズごとに派生パスは1つ決まる
-
各シードフレーズから鍵を作るときに「どの派生パスを使うか」を指定します。
-
そのシードの派生パスはウォレットやデバイスの種類によって初期設定が異なる場合があります。
-
-
マルチシグを構成する時は、各参加者(各シード)の派生パスが一致している必要はない
-
各参加者のxpub(公開鍵)は異なる派生パスのものであってもOK。
-
マルチシグ構成の際に、各xpubのパス情報も含めてセットにするので、一貫性が取れます。
-
-
重要なのは復元時に同じ派生パスで各シードのxpubを再生成すること
-
つまり、マルチシグを作ったときの「シード+派生パスの組み合わせ」を正しく復元すれば良いのです。
-
例で説明
たとえば:
シード | デバイス | 派生パス |
---|---|---|
シード1 | Ledger | m/48'/0'/0'/2' |
シード2 | Coldcard | m/48'/0'/0'/2' |
シード3 | Sparrowソフト生成 | m/48'/0'/0'/2' |
このように揃えるのが運用上はおすすめです。
でも仮に:
シード | デバイス | 派生パス |
---|---|---|
シード1 | Ledger | m/48'/0'/0'/2' |
シード2 | Coldcard | m/45'/0'/0' |
シード3 | Electrum | m/48'/0'/0'/1' |
のように混じっていても、マルチシグ作成時にこれらの派生パスも含めた設定で構成されるため、後で復元する際にその情報を忘れず再現すればOK です。
結論
✅ マルチシグ構成時に使った派生パスを、各シード復元時に正しく指定できることが大事。
✅ 派生パスは全シードで一致していなくてもマルチシグ自体は成立しますが、管理が複雑になるので全シードで派生パスを揃えた方が後々楽です。
==================
なるほどねぇ!分からんけど分かった!!!
とにかくマルチシグにおいてシードフレーズを作る時の派生パスは全部合わせておこうって話ね!理解した!!!
ということで、最後に自分用。
「先ほど例を挙げていただいたハードウェアウォレットおよびソフトウェアウォレットのデフォルトの派生パスを一覧でください」
==================
ウォレット | シングルシグ(P2PKH / P2SH / P2WPKH) | マルチシグ(P2WSH / P2SH-P2WSH) |
---|---|---|
Ledger (Nano S/X/Plus) | m/44'/0'/0' (P2PKH Legacy) m/49'/0'/0' (P2SH-P2WPKH) m/84'/0'/0' (Native SegWit) |
m/48'/0'/0'/2' (P2WSH Multisig) m/48'/0'/0'/1' (P2SH-P2WSH Multisig) |
Trezor (One/Model T) | 同上(Ledgerと同じBIP44/49/84) | m/48'/0'/0'/2' (P2WSH) m/48'/0'/0'/1' (P2SH-P2WSH) |
Coldcard | m/84'/0'/0' (Native SegWit) | m/48'/0'/0'/2' (Native SegWit Multisig) |
Electrum | 独自 (m / or m/0') (Electrumスタイル)※BIP39入力時に派生パス選択可 | デフォルトはElectrum独自。BIP39入力時は任意に指定可能 |
Sparrow Wallet | 指定可 (デフォルトではBIP84 m/84'/0'/0' を推奨) | m/48'/0'/0'/2' (P2WSH) デフォルト推奨。任意変更可 |
Specter Desktop | ユーザー指定(デフォルトはBIP84 m/84'/0'/0') | m/48'/0'/0'/2' (P2WSH) デフォルト推奨。任意変更可 |
=================
むずいいいいいいい!!!
「m/48'/0'/0'/2' 」で良いかな?って思ったのに、かっこ書きで
(P2WSH)と (Native SegWit Multisig)の二つあるのなんでやねん!!!
==============
🌟「m/48'/0'/0'/2'」の意味と名称の違い
m/48'/0'/0'/2'
は BIP48 で定義されている「マルチシグ用の派生パス」です。
そしてその「出力スクリプトタイプ」によって呼び方が変わるだけで、同じものを指しています。
呼び方 | 意味 | 実際のスクリプト |
---|---|---|
P2WSH | Pay to Witness Script Hash | ネイティブSegWit マルチシグ |
Native SegWit Multisig | ネイティブSegWit形式のマルチシグ | 同上(つまりP2WSHのこと) |
つまり:
👉 P2WSH = Native SegWit マルチシグ
どちらも m/48'/0'/0'/2' の派生パスを使ったネイティブSegWitマルチシグ構造 を指しています。
💡 なぜ2つの呼び方があるの?
これは単に「スクリプト技術の名前(P2WSH)」と「SegWitマルチシグの説明的な名前(Native SegWit Multisig)」の言い換えです。
ウォレットやドキュメントによってどちらの表現を使うかが違うだけです。
=================
あ、同じなのね。良かった。「m/48'/0'/0'/2」を選んでおけば基本OKっぽ曹と回答もらえたので、シードフレーズ作る際はこれを選んでみたいと思います。
あぁ、そうか。「m/48'/0'/0'/2」って昔みたことあって、bc1から始まるアドレスのやつだ。なんか手数料とか安くなって最新のアドレスのやつですよーってやつ。
で、また新たな疑問で、bc1から始まるやつと、1や3から始まるやつで送金可能なのかってこと。聞いたら全部可能で問題ないとのこと。bc1が一番手数料安いので、「m/48'/0'/0'/2」を使うことにします。
つーか難しすぎ!こんなの理解しても30分後に忘れる自信ある!もう記事に書いたから後から見ればなんとかなるけど、手順必須ですねこれは・・・
・・・あ!後一つごめん!パスフレーズってマルチシグネチャだとどういう扱いになるの!?
===========
🌟 マルチシグとパスフレーズの基本ルール
👉 各シードフレーズごとに独立してパスフレーズを設定します。
✅ 具体的な構造イメージ
たとえば2-of-3のマルチシグを組む場合:
👉 各「シード+パスフレーズ」の組み合わせが、それぞれ1つのマルチシグ参加鍵を生成します。
🌱 運用上のポイント
✅ 各シード+パスフレーズの組み合わせを必ず記録・保管すること(どのシードにどのパスフレーズか絶対に混同しない)
✅ パスフレーズを設定しなかったシードには「パスフレーズなし」がそのシードの設定として一貫される
✅ パスフレーズは任意ですが、使う場合はマルチシグの復元難易度が跳ね上がるので本当に必要かよく検討を
=====================ー
なるほどねぇ。シードフレーズ1つ毎にパスフレーズ1つ用意する必要があるってことね。分かりました。ただ、マルチシグ環境で更にパスフレーズをやると難易度上がるって話ね。確かに。導入するかどうかは要件等かな。
ちなみにシード1だけパスフレーズ有、その他は無し、とかもできるそうです。更に今回上に挙げたウォレットなら対応しているとのこと。悩むねぇ。一応一つだけ作っておいて入れるのもありかも。
まとめ
- 利便性考えるとHWW持つのが好ましいが、保存を目的として長期間送金する気が無いならHWW不要かなぁ
- HWW買ってもライブUSBにしても結局「シードフレーズ」の保管方法をどうするかに帰結するので、長期保管目的ならやっぱりHWWを買う必要性は減る。
- HWWを複数買って管理することも可能だと思うがコスパ高いのと、HWWが壊れた場合の対処方法やHWWのバージョンが古くなってサポートが切れるリスク(最近Ledgerでありましたね)とかを加味するとHWW維持管理コストも普通にめんどい。(※と個人的に思ってしまう)
- ただ、シードフレーズを外国とか物理的に超絶分散管理すると気軽に復元できないってなると、HWWを手元に置いておいた方が無難とかそういう話になる。やっぱ保管方法に帰結する
どういう実装しても結局「シードフレーズのバックアップ」問題なんよね。マルチシグ環境然り。ということでした。ほんと、結局シードフレーズどうするか問題なのよ。貸金庫使えないし、どうすんのこれ・・・って話でした。結局過ぎる。
ともあれ、今回マルチシグ環境のこと色々知れたのは良かったです。シングル構成よりもはるかにセキュリティが高く管理できるようになりそうですし、面白くなってきたので今度遊んでみようと思います。
後はどこで保管するか問題。一生答えでないやつ。あぁ悩ましい。