考察とは名ばかりで感想?

最近は主にゲーム(戦略系)と資産運用(FXで食ってくぞ!)

自作ハードウェアウォレットのススメ

最近仮想通貨こと暗号通貨に手を出したくるっとです。取引所のウォレットに入れたままだとリスクがあるから、多額の暗号通貨を扱う場合はハードウェアウォレットを使おう!って耳にたこレベルで言われまくってるんですけど、正直市販のハードウェアウォレットって微妙すぎません?? ということで自前で何とかしました。自作ハードウェアウォレット(っぽいもの)です!!

(画像はネタバレ)

そもそもの話

ハードウェアウォレットについて調べた途端に行き着いたのがこちらの記事
「ハードウェアウォレットって買った方がいいの?」簡単な判断基準はコレっ! - ニシカズのゲス戦略日記
これは確かに管理が面倒くさい! ていうか必要な操作に対してかすっかすのインターフェースしかないのが大問題。そして1万円からとなかなかお値段が張る
それだけ出せばスティックPCが買えますよ! USB or Blutoothでマウスやキーボードが使えるし、HDMIでモニタに出力できますよ!
そこで思いつきました。「スティックPCにローカルウォレット入れて、使わないときは電源切ってオフラインにすればハードウェアウォレットになるのでは?」というわけで実際に自作ハードウェアウォレットをやってみました

本題に入る前に

前提になる用語等の説明を

そもそもウォレットって?

ウォレット=財布といいますが、この財布に入っているのはお金(暗号通貨)ではなく、お金を引き出すためのキャッシュカード(秘密鍵)になります。もっと正確にはキャッシュカード+暗証番号、または預金通帳+銀行印という、これさえあれば預金引出や振込ができる重要なパスワードが秘密鍵です。まとめると

銀行 暗号通貨
銀行の台帳 ブロックチェーンなどの分散台帳
口座 アドレス
カード+暗証番号+通帳+銀行印 秘密鍵
↑の入った財布 ウォレット

みたいな感じ*1

ちなみに復元パスフレーズとかリカバリフレーズとか呼ばれるものもありますが、これは万一ウォレットが失われた場合に中身を復元するためのものです。復元パスフレーズは割と互換性があるので、元とは別のウォレットに復元できたりします。
(参考:ビットコインウォレットのパスフレーズの互換性の話(簡単なHDウォレットの仕組み) - ビットコインの情報サイトの運営者ブログ
 実際に異なるハードウェアウォレットに復元してみた方→もしTREZORやLedger社が倒産した場合ハードウェアウォレット内の仮想通貨はどうなるのか? | 貯金1000万を仮想通貨に換えた男のブログ
なので他人に復元パスフレーズが知られてしまうと、割と好き勝手に自分のウォレットの中身をコピーされて暗号通貨が奪われてしまうので、管理は厳重に

ウォレットあれこれ

暗号通貨のウォレットは次のように分類できます。

ウェブウォレット
オンライン上のウォレット。ウォレットというより、運営者に暗号通貨を預けておく形。メリット:インターネットを経由して場所や端末を問わずアクセスできる。デメリット:運営者が倒産したりハッキングを受けて暗号通貨が失われるリスクがある。取引所にデフォルトでついてくるが、ウェブウォレット単体のサービスもある
ローカルウォレット
自分のPCやスマホ上のウォレット。ソフトウェアをインストールして、そこで秘密鍵を管理する。メリット:ウェブウォレット運営者によるリスクがない。デメリット:デバイスの故障やハッキングにより暗号通貨が失われるリスクがある。ブロックチェーンをローカルにダウンロードするタイプ(容量を食うし動作も重い)と、外部のブロックチェーンを参照するタイプがある。各暗号通貨の公式が用意していることも多い
ハードウェアウォレット
外付けデバイスのウォレット。PCやスマホに接続したデバイス秘密鍵を保管し、使用しない時はデバイスを取り外す。メリット:オフラインで管理できるので安全性が高い。デメリット:デバイスの破損や紛失のリスクがある
ペーパーウォレット
紙に印刷したウォレット。アドレスと秘密鍵が印刷されている。メリット:オフラインで管理できるので安全性が高い。デメリット:紙の破損や紛失のリスクがある。ハードウェアウォレットより管理が容易だが、紙そのものを盗まれた場合は即座に秘密鍵が奪われてしまう(ハードウェアウォレットはデバイスにパスワードがかかっているため、盗まれても直ちに秘密鍵が奪われることはない)

それにしても取引所が潰れると預けた暗号通貨がぱぁというのはなかなか暗号通貨関連の仕組みが未整備なのを実感できますね。取引所によっては保険に加入していて一定額保証されますが、銀行は必ず1000万円まで保証されますし、証券会社は分別管理により顧客の資産は全て返ってきます。

スティックPCとは

詳しいことは各自ググれば把握できると思いますが、スティックPCという、タブレットPCのスペックに最低限のインターフェースを備えた安価かつ小型のPCがあります。価格はWindows搭載機で1万円以上数万円程度と、ちょうどハードウェアウォレットと同じくらいの価格帯ですね。

自作ハードウェアウォレットの目論見

というわけで、
ウェブウォレットは運営側で何かある危険が→ローカルウォレットで自分で管理
ローカルウォレットはPCのセキュリティリスクが→ハードウェアウォレットでオフラインで管理
という流れですが、別にオフラインにしたいならローカルウォレットを入れたPCをオフラインにすればいいだけなんですよね。普段使うPCをオフラインにしておくのは困りますが、そこは暗号通貨の取引専用PCとしてスティックPCを用意しておけばいいわけです。導入コストもハードウェアウォレットと同程度ですし。むしろ取引以外にインターネットにアクセスする必要がないので、その点は普段使うPCとハードウェアウォレットの組み合わせよりリスクが低いですね

実際にやってみた

ここで取り出したるはDiginnos Stick DG-STK3。1万円弱というWindows搭載スティックPCの中でもお安いモデルで、以前自作ネットワークオーディオプレイヤーとしていじり倒すために手に入れたものを引っ張り出してきました。これに手元にあるモニタとマウス、キーボードをつないでやれば後は単なる低スペックPCなので、ローカルウォレットのソフトをインストールして…… と思ったらElectrum-LTCもExodusも動かないぞ??*2 せっかくライトコインを用意したのですが、ライトコイン公式ウォレットはブロックチェーンを全部ダウンロードするタイプなのでスティックPCのスペックでは保存用の空き容量が足りません。というわけで別の通貨で見繕った結果、Lisk公式の軽量版ウォレットであるLisk Nanoを入れてみました。まあ後はアドレスに換金したLiskを送金して残高が増えてるのを確認して終わりです*3。これで電源を切っておけばオフラインなので安心です と。

さらにこだわるなら

android用のローカルウォレットもあるわけですが、スティックPCもandroid機があり、Windows機よりもお安くなっているので、こちらを使うのもよいかもしれませんね。ここまでくると安いスマホでもいいかもしれませんが。ちなみに流石にインターフェース改善の要望があったのか、タッチパネル搭載で結構なスマホ並みのお値段のハードウェアウォレットも出ています

デジタルペーパーウォレットという発想

とまあここまで散々自作ハードウェアウォレットだどうだ!みたいなことをやってきてあれですが、アドレスと秘密鍵を実はオフラインで作成できて、暗号通貨を引出してアドレス使い捨てる最期のとこまでオフラインでできるペーパーウォレットの方がさらに安心ですよね*4。しかし、ペーパーウォレットはアドレスと秘密鍵がそのまま書かれてるので盗まれたら一発アウトだとか、紙とか印刷物の物理的な脆弱性とかの問題があります
そこで思いつきました。「印刷しないで画像データのまま保存しておけばよいのでは?」 自作ハードウェアウォレットではローカルウォレットのデータとしてスティックPCに秘密鍵が保存されているので、まあペーパーウォレットの画像データを保存しても一緒ですよねという。印刷したペーパーウォレットと違ってPCにパスワードがかかっているので、PCが盗まれても秘密鍵漏洩のリスクを低くすることができます。通常のハードウェアウォレットと同様に外付けのデバイス(という名のUSBメモリ)に保存するというのもありですが、他のPCに挿せば当然読み込めるので暗号化してパスワードかけましょう。USBメモリに保存して切り離すのであれば、普段使うPCをオフラインにしてペーパーウォレットを作成してもまあましだと思いますが、理想的には専用に安いPCを用意してウィルス等の感染の危険を低くしておくべきでしょうね
破損や紛失のリスクを考えるとバックアップを用意しておくべきですので、スティックPC内部に保存するデータ*5と、USBメモリに書き出したデータの2本立てで保存するのがよいかと*6。ところで、オフラインにしておくことでリスクを避けるわけですが、それなりの間隔でウェブに繋いでペーパーウォレット作成ツール、セキュリティソフト、OSの更新をした方が良いでしょう
ちなみにアドレスと秘密鍵の文字列をテキストで保存してもほとんど同じことですが、ペーパーウォレットの画像にしているのはQRコードで表示して読み取る方が利便性があるからです。スマホにウォレットアプリを用意しておけば、アドレスを読み取って送金→アドレスを読み取って残高確認→秘密鍵を読み取って出金 とスムーズにできます。ペーパーウォレットは手間がかかるみたいなことが言われますが別に簡単ですね

終わりに

以上、ハードウェアウォレットなんざなくても同じくらいのコストでいくらでも工夫できる というかもっと便利で安全にできるのでは? というお話でした。ちなみに自分は取引所が全部保証してくれないほどの額はまだ突っ込んでないので、しばらくはこの手のウォレットを真面目に活用する予定はありません。将来的にはこういう個人で安全に保管する方法が普及するのではなく、保証制度と取引所のセキュリティが証券会社並みになって、株みたいに多額の暗号通貨を普通に預けるようになるんじゃないかと思いますね

*1:上手いこと大学時代以来の公開鍵暗号の復習をせずに済んだぞ!

*2:何やら64bitOS用しかないExodusが32bitOS搭載機にインストールできないのはしょうがないとしてElectrumは何で

*3:てかこのウォレット、パスワード代わりに復元パスフレーズをログインのたびに入力させる仕様だ

*4:ローカルウォレットやハードウェアウォレットの高度な機能を活用できないというのはありますが

*5:これも暗号化しておくのが望ましい

*6:同じ中身のUSBメモリを2つ用意する手もあると思いますが