Ledger nanoの導入とLedger製品のレビュー

Table of Contents

そもそもなぜハードウェアウォレットが必要なのか

ビットコイン(に限らず全ての暗号通貨)は「自分がこの支払いをする資格を持っている」ということを証明するために デジタル署名を必要とする のだが、当然ながら署名にはメモリとCPUが必要になる。

秘密鍵の保持だけならばストレージだけがあれば良く、これはコールドストレージと呼ばれる。

ただ、支払いを行う際には秘密鍵を用いてトランザクションに署名する必要があるので、CPUを持つデバイス上に持ってくる必要がある。

ここで問題が生じる。普段からネットに接続し、別のことに使っているコンピュータの場合、 「マルウェアに侵されていない」ということを確信することができない。

そこで普段使うデバイスとは別に独立した小さいコンピュータを持つ必要がある。これがハードウェアウォレット

実質、ただの小さなコンピュータなのでRaspberry piで自作することもできる

市販のハードウェアウォレットと、Raspberry Piによる自作で何が違うのかというと、「デバイス自体が盗まれた際の安全性」が違う。

例えば攻撃者がデバイス自体を盗んで取得したとしよう。 ハードウェアウォレットは署名に当たってPINコードの入力が必要なので、デバイスを持っていても送金はできない。

これ自体はRaspberry piでも同様のことが実現できるのだが、熟達した攻撃者であれば

  1. Brute forceする
  2. メモリをダンプする
  3. マルウェアでサイドチャネルを仕込む

で回避する方法は色々ある。

それを防ぐにはPINの入力を一定回数誤ったらファームウェアレベルでロックするとか、メモリ上のデータを自動で暗号化するなどといった、高度に特殊化したハードウェアを作る必要がある。

もちろん、特殊化したファームウェアであろうともクラックすることは原理上不可能ではないので、完璧ではない。 この点に関しては製造会社を信用するしかない。

したがって、 Yubikeyの製造元であるYubicoではハードウェアはクローズに、ソフトウェアはオープンにの原則を貫いており、 Ledger Nano Sの販売元であるLedger社も同様の方針を取っている。

ソフトウェアがオープンである利点は、言うまでもなくリーナスの法則に尽きる のだが、ハードウェアがクローズドである点は議論の余地がある。(クラックしにくいということにどれだけの意味がある?製造元がサイドチャネルを仕込むかもしれないじゃないか。ということらしい)

Ledger社は以下の理由からクローズドソースを肯定している。

  1. 他のスマートカードも同様の方針であること
  2. 仕様はオープンになっていて検証可能であること

Trezorの製造元であるSatoshiLabsは対象的に「ハードウェアもオープンに」の姿勢を取っている。keep keyも同様 そもそもハードウェアをなくした時点でアウトなので気にするなということか

長々と議論したが、 どんなハードウェアウォレットを持っていても5$レンチ攻撃(現実世界での物理攻撃)には無力なので、 数十万BTCを保持しているとか、ボディガードをつけるような身分であるとかでない限り、 どちらを選んでも大差ないので好きな方を選ぶと良いと思う。

大まかな方針としては

  1. 保持BTCが月収以下ならウェブウォレットで
  2. 月収以上年収以下ならLedger nanoで
  3. 年収以上ならLedger nano S、Trezor、KeepKeyで

管理するくらいが良いと思う(もちろん金額の絶対量にもよるが)

自分は大してBTCを持っていないので、今回はLedger製品でも一番安いLedger nanoを購入した。

Ledger nano

値段は29ユーロ

写真に撮り忘れたけど、はじめは全体がラップで包まれていて、それが未開封の証明になっている。

こんな感じ。

中身はこう。

左から

  1. 本体
  2. ストラップ用の紐と箱
  3. リカバリーシート … 秘密鍵QRコードと24単語のメモスペース、本体をなくした際の復旧用
  4. 説明書
  5. 2段階認証のためのセキュリティカード

本体はこれ

実際に設定してみる

初回設定作業はセキュアなコンピュータ上で行う。

全5種類のLedger製品のリスト

今回はLedger Nanoなので、クリックしてこちらに飛ぶ。

ここでGoogle chromeの拡張としてwalletが自動でインストールされる。 初めてのLedger製品だとインストールされるらしい。 されない場合はこちらから。

アプリを起動するとこんな画面が立ち上がる。

今回は「新しいウォレットの作成」を行う。

4桁のPINコードを設定し、24単語のリカバリーフレーズを紙にメモする。

PINコードは(デフォルトでOKとは思うが)一応何回かシャッフルしておく。

24単語のリカバリーフレーズが出るので、絶対にメモして、厳重に保管しておく 、リカバリーシート内にメモをするところがある。

その後、一度抜き差しすると設定完了。もう普段のPCに移して使用しても大丈夫。

振り込んでみる

appの左上の「受信」タブをクリックすると以下のような画面が出る

QRコードをスキャンするか、アドレスを送って別のウォレットから送信

以下のように結果が画面に表示される。

支払ってみる

受け取りと同様に「送信」タブをクリックすると以下の画面に。

アドレス(カメラが付いているデバイス上ならQRコードも使える)と代金を入力し、手数料を3段階のうちから一つ選び、送信する。

2段階認証を聞かれるので、セキュリティカードを見て打ち込むか、スマートフォンをペアリングして送信する。

完了すると受信時と同様に画面にその旨が出る。

その他のapp

メジャーなデスクトップクライアントであるElectrumMyCeliumで設定することもできるらしい(が、私は上述のChrome appで満足なので試していない)

Ledger nanoの問題点

  1. 認証時 … PIN
  2. 送金時 … 4桁の鍵

を打ち込んでいるが、自分のコンピュータ上で行うので、もしそのコンピュータがキーストロークを読み取るタイプのマルウェアに侵されていた場合、無意味になる。

このタイプの攻撃に対処するため、同梱のセキュリティカードに入力文字列をシャッフルさせる シーザー暗号 の鍵が入っているが、よくできたマルウェアならば何回も入力しているうちに解読できてしまうので、100%セキュアではない

後述のLedger nano Sや老舗のTrezorは キーボード自体をwalletにつけてしまうことでこの問題に対処している。

その他のLedger製品

Ledger Unplugged

値段は29ユーロ

Java card(JVMをカード上で実行できるようにしたもの)ベースのウォレット

Ledger nanoに比べると、USB端子がない端末でも使用できるという利点がある。

無線でやり取りすると通信を傍受される危険があるんじゃないの? という危惧が生まれるが、それは大丈夫らしい。 こちらの解説がわかりやすい

Java card自体も実績のあるものなので問題はないと思う。

Ledger HW.1

値段は15ユーロ

マルチシグ用に複数鍵を管理するためのデバイスということになっているが、 実はLedger nanoと機能は全く同じ

違うのは

  1. サイズ
  2. 値段
  3. 耐久性(多分)

だけなので初めての購入にちょうどよいかもしれない

Ledger nano S

値段は58ユーロ

Ledger nanoより高機能だが若干高い

TrezorやKeepKeyと同様、トランザクションをデバイス上で完結させることができるので、前述のマルウェアの問題がない。

また、EthereumやZcashのwalletとしても使用でき、 アプリケーションごとにマイクロカーネルを立てるので、Ethereumのアプリのバグがビットコインの秘密鍵流出につながるということがない。

現時点での対応コインは以下

ついでにFIDO U2Fの機能もあるので、Yubikeyの代用としても使えるっぽい

Zaifの公式ページで紹介している。

Ledger Blue

値段は … 公式が在庫切れで見れない。多分200ユーロくらい?

一言で言うと「全部入り」。 上記の機能が全て入っている。

ジョブズの息吹を感じるデザインをしているが、

  1. アプリケーション間の不干渉を徹底している(nano Sと同じ)
  2. 好きなappを入れたり外したりできる。

という点もApple製品っぽい。

明らかに拡張性を意識しているので、対応アルトコインはこれから増えていくはず

まとめ

Ledger製品はTrezorやKeepkeyに比べてアルトコイン指向が強いので、ビットコイン原理主義者ならばTrezor・Keepkeyで、アルトコインも保有したいならばLedger nano SかLedger blueを持つのが良いと思う。

こちらもどうぞ

参考


comments powered by Disqus