LINEの個人情報が中国から閲覧できる状態になっていたとの報道を聞いた時、
もうどこのウェブサービスも信用できない…!
と感じました。
と同時に、自分のビットコインの保管方法がセキュリティ的に危ういのではないかと思い始めました。なぜなら、Ledger Nano Sの24個のリカバリーフレーズを思いっきりエバーノートにメモしていたからです。エバーノートは2段階認証を設定していたので「大丈夫だろう」と安易に考えていました。でも、ハッキングされなかったとしても、他国の管理者がのぞき見できる可能性を考えるとかなり危険。
さらに、24個のリカバリーフレーズはメモ帳に記録して、いくつかのUSBにも保管していました。何が危ないかって、パソコンでリカバリーフレーズを入力(コピー)していたこと。もしPCにウイルスが感染していて、その入力したリカバリーフレーズが流出でもしたらめちゃめちゃ危険やないか!
で、どうすればビットコインを安全に保管できるのかを考えに考えて実行しました。その結果、ものすごく安心できる状態になりました。
このページでは、Ledger Nano Sでパスフレーズを設定する方法や、パスフレーズの互換性、リカバリーフレーズをどう管理するかについて書いていこうと思います。
パスフレーズの設定手順を動画にしました↓
どうやったらBTCを安全に保管できるのか考えた
ハードウェアウォレットを使ってビットコインを保管する場合、24個のリカバリーフレーズを誰にも知られないように厳重に管理しなければなりません。
じゃあどうやってリカバリーフレーズを保管すればいいのか?紙に書いておくにしても、バックアップが紙だけだと家が火事になった時に失われてしまう可能性があります。耐火性の金庫も考えたけど、金庫ごと盗まれたらモヤモヤするし、金庫って「大事なものがこの中にありますよ」とあからさま過ぎるので、あえて買おうとは思わない。
本当はネット上にメモして、いつでもどこでも把握できるようにしておきたいけど、ハッキング等のリスクがあって危険。パソコンで入力すること自体も危険(ウイルス感染による流出の危険性)。
また、リカバリーフレーズの総当たり攻撃も、可能性はほぼないんだろうけど、ゼロでない限り気にしてしまう性格。
最近、24個のリカバリーフレーズがBIP39の2048個のワードの組み合わせであることを知りました
人生で初めて無量大数という単位を使う場面に遭遇しました。
これだけ組み合わせがあるなら基本的に盗まれる心配はない。のですが、万が一、いや、無量大数が一を考えて何か対策をしておきたい。
ビットコインをいくつかのアドレスに分けて保管することも考えましたが、そうすると24個のリカバリーフレーズの管理が面倒くさくなるし、総当たりで突破される可能性がゼロになったわけでもない。やはり気になってモヤモヤして寝れない。
で、結論として、Ledger Nano Sでパスフレーズを設定し、さらに24個のリカバリーフレーズは自分にしか分からないような形にしてネット上に保管することにしました。
パスフレーズには、BIP39の2048個の中から選んだワードを使う必要はなく、自分の好きなフレーズを決めることができます。だから総当たりの脅威から逃れられます。
いろいろ対策を考えるところからBTCを送金、確認作業が終わるまで丸3日かかり、確定申告した時並みに眼精疲労が溜まりました。
パスフレーズを設定する前にやったこと
まずパスフレーズを設定する前に、Ledger Nano Sをリセットして、新しい秘密鍵によるビットコインアドレスを作りました。
上でも書いたけど、今使っているビットコインアドレスについては24個のリカバリーフレーズをエバーノートにメモしてしまっていたから、もう使いたくないのだ!
Ledger Nano Sのリセット方法は簡単。Ledger Nano Sを起動した時に入力するPINコードを3回連続で間違えればいいだけ。
リセットすると、Ledger Nano Sは最初からとなり、画面の説明を進んでいくと
- 「Set up as new device(新しいデバイスとして設定する)」
- 「Restore from recovery phrase(リカバリーフレーズから復元する)」
の2択から選べるようになります。「Set up as new device(新しいデバイスとして設定する)」を選んで、
- PINコードの設定(これからLedger Nano Sで使いたいPINコードを決める)
- 新しい24個のリカバリーフレーズのメモ
を行っていきます。
たとえLedger Nano Sをリセットしても、以前使っていたビットコインアドレスが無効になったり、失われたりすることはありません。「Restore from recovery phrase(リカバリーフレーズから復元する)」を選択後、以前の24個のリカバリーフレーズをLedger Nano S本体に入力すれば、前のビットコインアドレスにアクセスできるようになり、送受信も可能になります。
Ledger Nano Sに25個目のパスフレーズを設定する方法
やり方は公式サイトに書いてあります。
このページでは写真付きで紹介します。
メニューの「Settings」でボタン同時押し。
(バージョン2.0.0時点では「Settings」でボタン同時長押し→さらに「Settings」をボタン同時押し)
「Security」を選択してボタン同時押し。
「Passphrase」を選択してボタン同時押し。
と出てきます。右ボタン押して進みます。
Read manual at ledger.com/support(マニュアル読むんやで)
マニュアルはたぶんこれのこと↓
右ボタン押して進みます。
「Back」と出てきますが、さらに右ボタンを押して進みます。
Set up passphrase
ボタン同時押し。
すると、選択肢が2つ出てきます。
- Attach to PIN(新たなPINを作ってパスフレーズと紐づける)
- Set temporary(一時的にパスフレーズを適用する)
どちらも本質的には同じものです。違うのは、PIN入力だけで楽にパスフレーズを設定したアドレスを使用できるようになるか、毎回パスフレーズを入力しなければならないか、です。
Attach to PINの設定では、Ledger Nano Sを起動する時のPINをもう1つ作って、それからパスフレーズを自分で決めます。すると、新しく作ったPINでLedger Nano Sを起動するとパスフレーズが適用された状態になります。
「123456」だと【24個のリカバリーフレーズ】が秘密鍵のビットコインアドレス、「898989」だと【24個のリカバリーフレーズ+パスフレーズ「Z%3g」】が秘密鍵のビットコインアドレスにアクセスできるということです。
どちらも【24個のリカバリーフレーズ】が共通なので、もしかしたら、「パスフレーズを設定すると、これまでのビットコインアドレスが無効になったり無くなるんじゃないか?」とか、「設定さえすれば、今保有しているBTCが自動的にパスフレーズ有効のアドレスになるんでしょ?」と思っている人もいるかもしれません。
でも実際にはそうではなくて、パスフレーズを設定するということは、秘密鍵自体が変わるということなので、全く別物のアカウント(ビットコインアドレス)が新たに作られます。だから、これまで使っていたビットコインアドレスがなくなるということはありません。また、新しくパスフレーズありのビットコインアドレスでBTCを保管したいなら、今BTCが保管されているビットコインアドレスから、パスフレーズありのビットコインアドレスに移動(送金)させなければなりません。
BTCが大量にある場合、送金するの怖いよね。ちょっとでもアドレス間違ったらセルフGOXするから…
パスフレーズについては、同じ24個のリカバリーフレーズ下でいくつでも何度でも設定できます。パスフレーズを作れば作るほど、パスフレーズ毎に新しいアカウント(ビットコインアドレス)が使えるようになります。
また、例えば「SKY」というパスフレーズを作ってから、新たに「sea」というパスフレーズを設定しても、以前の「SKY」というパスフレーズによるビットコインアドレスが使えなくなったり無効になったりするようなことはありません。「sea」に設定した後でも、また「SKY」に設定し直せば、『24個のリカバリーフレーズ+パスフレーズ「SKY」』のビットコインアドレスで保管していたBTCを送受信できるようになります。
ほかにも、例えばパスフレーズ「SKY」を設定していたLedger Nano Sが壊れてしまっても、別のLedger Nano S等を使い、24個のリカバリーフレーズで復元し、さらにパスフレーズを「SKY」に設定すれば、『24個のリカバリーフレーズ+パスフレーズ「SKY」』のビットコインアドレスで保管していたBTCを送受信できるようになります。パスフレーズは自由に設定できるものでありながら、設定したデバイスのみに適用されるものではなく、別のデバイスとも互換性があります。
さらには、例えばパスフレーズ「SKY」を設定していたLedger Nano Sが壊れてしまって、Ledger社も倒産してLedgerの商品が手に入らなくなったとしても、互換性のある他社のウォレットを手に入れて『24個のリカバリーフレーズ+パスフレーズ「SKY」』で復元すれば復活できます。僕はLedger製品以外は持っていないので他社のハードウェアウォレットでは試せてませんが、ビットコイン専用のウォレット『Electrum』でならパスフレーズ込みで復元してみて、ちゃんとアドレスに残高が反映されているのを確認しました。
復元したのは、実験用に作成したパスフレーズ込みのビットコインアドレス。基本的に24個のリカバリーフレーズやパスフレーズをPCに打ち込むのは危険行為だから、Electrum等のウォレットで復元するのは最終手段にする。今回は、ただLedger製品以外のウォレットでも復元できるのか、パスフレーズにも互換性があるのか確認したかっただけ
Attach to PINの設定方法
「Attach to PIN」でボタン同時押し。
Choose PIN code for passphrase(パスフレーズを適用する時のPINコードを選ぶ)
まずはPINコードを決めます。パスフレーズはその後です。
とりあえずボタン同時押し。
PINコードを選んでいきます。決まったらボタン同時押し。
Confirm PIN code for passphrase(パスフレーズのPINコードを確認する)
ボタン同時押し。
確認のため、今作ったPINコードをもう一度入力しましょう。できたらボタン同時押し。
Enter passphrase(パスフレーズを入力)
パスフレーズを決めていきましょう。ボタン同時押し。
パスフレーズは、小文字のローマ字、大文字のローマ字、数字、記号から自由に選択することができます。最大100文字。
Trezorではパスフレーズを最大50バイト(50文字)でしか設定できないから、もしLedger製品で51文字以上のパスフレーズを設定してしまったら、Trezorでは復元できないかも
パスフレーズを決めたらチェックマークのところでボタン同時押し。
ここでは例として「Z%3g」にしてるよ
確認のため、パスフレーズが表示されます。
右ボタンを押して進みます。
Confirm passphrase
パスフレーズを確認したならボタン同時押し。
やっぱりやめたいと思ったら右ボタンを押して、
Cancelでボタン同時押し。
「Confirm passphrase」でボタン同時押ししたとして、
Enter current PIN code(現在のPINコードを入力)
今決めたパスフレーズ用のPINコードではなく、このLedger Nano Sを起動した時のPINコード(今回の例ならパスフレーズなしの時に入力したPINコード)を入力します。
入力できたらボタン同時押し。
Prosessing(処理中)
ちょっとだけ待ちます。
Passphrase set
パスフレーズが設定されました!ボタン同時押し。
パスフレーズが適用されたビットコインアドレスを扱いたい場合は、一度Ledger Nano Sの電源を断って、新たに作ったパスフレーズ用のPINコードで起動させましょう。
「Attach to PIN」では、別のパスフレーズで上書きするか、デバイスがリセットされるまで、パスフレーズがデバイスに保存されるとのこと。なんか怖っ!
Set temporaryの設定方法
「Set temporary」はPINコードを決める手順がないだけで、あとは「Attach to PIN」と同じです。
「Set temporary」でボタン同時押し。
Enter passphrase(パスフレーズを入力)
ボタン同時押し。
パスフレーズは、小文字のローマ字、大文字のローマ字、数字、記号から自由に選択可能。最大100文字。
パスフレーズを決めたらチェックマークのところでボタン同時押し。
確認のため、パスフレーズが表示されます。
右ボタンを押して進みます。
Confirm passphrase
パスフレーズを確認したならボタン同時押し。
やっぱりやめたいと思ったら右ボタンを押して、
Cancelでボタン同時押し。
「Confirm passphrase」でボタン同時押ししたとして、
Enter current PIN code(現在のPINコードを入力)
Ledger Nano Sを起動した時のPINコードを入力します。
入力できたらボタン同時押し。
Prosessing(処理中)
ちょっとだけ待ちます。
Passphrase set
パスフレーズが設定されました。
「Set temporary」でパスフレーズを設定すると、この時点でパスフレーズが適用されたビットコインアドレスを扱えるようになります。デバイスの電源を切ったりして、再度PINコードを入力して起動するとパスフレーズなしのビットコインアドレスにアクセスできます。
「Set temporary」では、一時的にパスフレーズを適用するに過ぎません。そのため毎回「Set temporary」の設定からパスフレーズを入力しなければなりません。ほとんどBTCを動かさないのであれば気になりませんが、頻繁に送受信する人は「Attach to PIN」でPINを設定したほうが楽です。
Ledger Liveの使い方
パスフレーズを設定したら、Ledger Liveを起動して、新しくアカウントを作成します。
Ledger Nano Sにパスフレーズが適用された状態で、「Accounts」ページ→「Add account」でBTCを選択して「Continue」をクリック。
途中、segwit(3から始まるビットコインアドレス)のアカウントと、native segwit(bc1から始まるビットコインアドレス)のアカウント、どちらを作成するか選択することになります。
native segwit(bc1から始まるビットコインアドレス)だと取引所によっては対応しておらず、送金先のアドレスとして扱えないようなので、segwit(3から始まるビットコインアドレス)のアカウントを選びました。
アカウントは秘密鍵毎に、また、segwitやnative segwit毎に作ることができます。アカウントには名前を付けられます。アカウントを作ることで受信用のアドレスを見ることができたり、BTCを送金できたりします。
上の例で言うと、
- BTC(長期):新しい24個のリカバリーフレーズで作成したアカウントにパスフレーズを追加したもの
- 初代Security:24個のリカバリーフレーズをエバーノートにメモしてしまったヤバイアカウントにパスフレーズを追加したもの
- BTC(教育費積立):新しい24個のリカバリーフレーズで作成したアカウント
- 初代:24個のリカバリーフレーズをエバーノートにメモしてしまったヤバイアカウント
と4つのBTCのアカウントを作成しています。
作成したアカウントは、秘密鍵の異なるLedger Nano SでLedger Liveに接続した時に見えなくなるとかいうことはありません。
なので、自分が今Ledger Liveに接続しているLedger Nano Sの秘密鍵が、どのアカウントのものなのかを把握していないといけません。
でも確認するのは簡単で、
アカウントを開いて「Receive」→「Continue」をクリック。
Something went wrong(何かがうまくいかなかった)
Please check that your hardware wallet is set up with recovery phrase or passphrase associated to the selected account.
(選択したアカウントに関連付けられたリカバリフレーズまたはパスフレーズがハードウェアウォレットに設定されていることを確認してください。)
このように出てきたらLedger Nano Sの秘密鍵とアカウントが合っていないということです。
逆に受信アドレスが表示されれば↓
Ledger Nano Sの秘密鍵とアカウントが合っているということ。
ちなみにアカウントは簡単に削除することができますが、削除しても保有しているBTCが失われることはありません。またアカウントを作成しようとすれば、新しいアカウントの項目のほかに、すでに残高があるアカウントの項目も表示されて、それを選べばアカウントは復活できます。
パスフレーズの互換性を確認してみた
Ledger Nano Sでパスフレーズを設定した状態で、万が一Ledger社が倒産してLedger製品が手に入らなくなってしまったら、ほかのウォレットで復元できるのだろうか…?
ネットで調べたところできるらしいけど、自分で試してみないと信じられないので、実際にやってみることにしました。
パスフレーズを設定したアカウントに少量のBTCを送金したので、これをビットコイン専用のウォレット『Electrum』で復元してみたいと思います。
PCはWindowsで、普通にデスクトップにインストールするやつを使おうと思ったので『Windows Installer』をインストール。
起動。
ウォレット名は適当でいいと思ったので、「default_wallet」のままで「次へ」をクリック。
「スタンダードウォレット」が選択された状態で「次へ」をクリック。
今回は復元するので「既存のシードを使用する」を選択して「次へ」をクリック。
欄に24個のリカバリーフレーズを入力していきます。単語を入力すると候補が出てくるようになっています。単語を1つ入力する度にEnterを押すと半角スペースが入力され、次の単語を同じ要領で入力。24個の単語を入力し終わったら「オプション」をクリック。
よく分からないけど、2つ共にチェックを入れます。ネットで調べたら英語でそう書いてありました。
チェック後、「OK」→「次へ」をクリック。
拡張シードの欄が出てくるので、ここにパスフレーズを入力します。そして「次へ」をクリック。
ウォレットのアドレスタイプを選びます。これはLedger Nano Sでアカウントを作る時の「segwitかnative segwitか」みたいなもの。
僕はsegwit(3で始まるビットコインアドレス)にBTCを保管していたので「p2sh-segwit(p2wpkh-p2sh)」を選択して「次へ」をクリック。
最後に、このウォレットを開く時のパスワード(Ledger Nano Sで言うところのPINコード)を決めて「次へ」をクリック。
すると、ちゃんとLedger Liveで表示されていた残高と同じ数値が表示されました。
※最初、単位がmBTCだったので、どっかの設定を変えてBTCにしました
互換性、あったわ
まとめ
リカバリーフレーズの保管方法は、自分にしか分からないように形を変えてネット上に保存しておきました。復元できるか試しにやってみましたが、30~40分くらい時間がかかったのでもうやりたくないです。
これにて、セキュリティは今までより強固なものとなりました。
パスフレーズ設定したアカウントに送金する時はだいぶ緊張しました…。成功して良かった。これでセルフGOXしたら人生詰む