
SeedSignerを作ろう!
皆さん、SeedSignerというハードウェアウォレットをご存じでしょうか。
公式サイトはこちら。
Ledger、Trezor、COLDCARD、Jadeなどと比べ、日本ではまだあまり知られていませんが、海外のビットコイナーの間ではホットなアイテムとして支持されつつあります。
SeedSignerはシードを生成して署名をするところは、普通のハードウェアウォレットと一緒なんですが、シードの取り扱い方がちょっと独特です。
まずはSeedSignerの特徴をサクッと紹介。
1. オープンソース
SeedSignerはオープンソースプロジェクトです。透明性が高く、誰でもソースコードを確認して安全性を検証することができます。
2. 複数のシードを扱える
ハードウェアウォレットって高いですよね。マルチシグなんてやろうとしたらハードウェアウォレットをいくつも買わないといけないので大変です。SeedSignerは生成したシードをSeedQRと呼ばれる特殊なQRコードでバックアップするのですが、これをカメラでスキャンすることで複数のシードを取り込めるので、1台でハードウェアウォレット何台分もの役目を果たします。
3. シードを保持しない
他のハードウェアウォレットと一線を画す最大の特徴は「シードを本体内に保存しない」という斬新なアプローチです。通常ハードウェアウォレットはデバイス内にシードを永続的に閉じ込めますが、SeedSignerは通電している間だけしかシードをその内部に保持しません。電源を落とすと内部に保持されていたシードはメモリからクリアされます。シードを保持する機能を捨てて署名機能に特化した、まさに"SeedSigner"と名付けられてる所以でもあります。
5. 自分で組み立てる
SeedSignerは既製品ではありません。公式サイトから必要な部品リストと組み立て手順が提供されており、ラズベリーパイといった安価な電子部品を使って簡単に組み立てできます。組み立てに自信がない人は、SeedSigner愛好家によって3Dプリントで自作したケースにパーツを組み込んだ完成品を販売されているので、それらを購入することも出来ます。
SeedSignerを自作しよう!
完成品を購入してもいいのですが、それでもやはり自分の手で作ってみるのをお勧めしたいです。
近年、悪い輩(政府)がハードウェアウォレットの購入時の履歴情報を元に個人を特定してビットコインを強奪するという恐ろしい事件が稀に起こり、今ではハードウェアウォレットの潜在的なリスクの一つとされています。
その点、SeedSignerで使われる電子部品は汎用性が高く、部品単体を見ればハードウェアウォレットを連想させる物はあまりありません。自分で部品を調達し組み立てることでビットコインを所有を気付かれるリスクを格段に下げます。
そんなわけで早速、SeedSignerを自作してみましょう。
準備
まずはパーツリストです。
構成部品:
- Raspberry Pi Zero WH
- Waveshare 1.3インチ 240x240 LCDディスプレイ
- Raspberry Pi Zero用スパイカメラ
- エンクロージャー(ケース)
- microSDカード(16GB程度で充分)
- USBケーブル(片方がMicro USB)
※公式ではWi-FiとBluetooth機能がないRaspberry Pi Zero v1.3を推奨していますが、ディスプレイを接続するGPIOピンを自分で半田付けしなければならないため、今回は予めGPIOピンがセットされているRaspberry Pi Zero WHを使用します(これにはWi-FiとBluetooth機能がついていますが、組み立ての際に無効にします)。
街に出て部品を調達
今回は念のため部品調達の際にもなるべく痕跡を残さないように努めます。あえてネット通販は使わず、秋葉原の電気街などで購入します。
履歴が残るクレジットカードやキャッシュレス決済はもちろん使いません。本当はビットコインで支払いたいところですが、多分対応してくれませんし、店員さんに自分がビットコイナーだとバレてしまうので、ここは素直に現金で決済します。
※これらのパーツ自体はハードウェアウォレットを連想させる物ではないので、実際はネット通販でもキャッシュレス決済でも問題はないと思います。
パーツを購入できました。
エンクロージャー(ケース)発注
おそらく、エンクロージャーは日本のどの店舗にも売っていないでしょう。海外のSeedSigner愛好家が作成し販売しているエンクロージャーをネット通販で買うのが一般的です。しかし、その利用目的を知られたうえで販売者に個人情報を渡すのはちょっと不安が残りますよね。幸い、販売されているエンクロージャーのいくつかは3Dデータとしてネットで配布されている場合があります。自分は3Dモデリングや3Dプリントの知識が無く、高価なプリンターも持っていないのですが、今回はそれらの3Dデータをダウンロードし、3Dプリントサービスを利用してエンクロージャーを自作することにします(プリントサービス会社に発注した履歴は残りますが、相手に利用目的は推測されないはず)。
エンクロージャーの3Dデータは、GoBrrr氏の「Rugged Pill」を使用させてもらいました。
データ配布先
https://www.printables.com/model/427519-rugged-pill-seedsigner-case
(感謝の気持ちを込めてsatsでドネーションしました)
3Dプリントサービスは「DMM.make」を利用します。知識がないので素材選びに迷いましたが、コストが安くてそれっぽい素材ということで、筐体部分にはナイロン系の『PA11』、コントロール部分には柔軟性のある『PP』を選びました。
データをアップロードして素材を指定。あとは到着を待つだけす。
OSをSDカードに焼く
エンクロージャーの到着を待つ間に、SDカードの準備をします。まずは公式のGithubからOSをダウンロード。
https://github.com/SeedSigner#downloading-the-software
いくつか種類があるのですが、 Pi Zero 1.3用、Pi Zero W用のOS、seedsigner_os.0.7.0.pi0.img
でいいと思います。
(ダウンロードしたファイルが本物かどうか検証する場合はこちら)
次にBalenaを使ってSDカードにOSを焼きます。
https://etcher.balena.io
アプリをダウンロードして起動し、先ほどのimgファイルを選択してSDに焼くだけです。
エンクロージャーが到着
発注してから約半月ほど経ち、エンクロージャーが無事自宅に到着。結構待たされました。着色無しの素地ですが、なんかカッコいい感じです。研磨無しにしたのでかなりザラザラしてますが、触り心地は悪くありません。
価格は送料込みで何とか1万円以下に。海外製のエンクロージャーは円安もあって、送料を含めると意外と高くつくので、これはアリかもしれません。
組み立てる
部品が揃ったので早速組み立てます。
Wi-FiとBluetoothの無効化
参考記事https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware
まず最初にラズパイのWi-FiとBluetooth機能を無効にします。おそらく有効になってても問題ないですが、もしかして自分の知らないうちにどこかでバックドアが仕掛けられ、無線で秘密鍵を送信されてしまうかもしれません(ビットコイナー的パラノイア思考)。念のため少し細工をして無効にしておきましょう。
細工と言っても大したことはしません。下の画像にある小さなパーツをピンセットやニッパーといった工具で引っこ抜くだけです(自己責任でお願いします!)。
これで無事、Wi-FiとBluetooth機能は無効になりました。
カメラとディスプレイをラズパイに組み込みむ
スロットに挿していくだけなので簡単です。SDカードスロットの反対側の辺にあるカメラコネクタのロックピンの爪を引いて解除してカメラを挿し込んでから再び爪を押し込んでロックします。次にGPIOピンにディスプレイ、SDスロットにOSを焼いたSDカードを挿しておきます。
一度モバイルバッテリーに繋いで動作をチェックして、問題なければケースに組み込みます。
注意点
ディスプレイに付属しているラズパイ基盤への固定用のビスとナットは使用しない方がいいです。ケースを使用しない場合はいいのですが、ケースを使用する場合は大抵の場合、これらが干渉してケースに収まらなくなります。
全体の組み立ての流れは動画で見た方が分かりやすいので、自分が参考にさせてもらったYouTube動画のリンクを貼っておきます。
完成!
無事SeedSignerが完成しました。いい感じ!
Raspberry Pi ZeroにはUSBポートが2つあり、一つは電源供給、もう一つは拡張ポートになっています。SeedSignerはエアギャップを基本とするので、電気供給のUSBポートのみ使用します(大抵のエンクロージャーは拡張ポートにアクセス出来ないように塞がれています)。
最後に
具体的な使い方などもいずれ記事にしたいと思います。UX/UIがとても優れているので、COLDCARDなどエアギャップのハードウェアウォレットに慣れてる人なら割と直感で使えると思います。元からシードを守る機能がないので、PIN入力などの儀式めいたことなども必要なく、他のハードウェアウォレットと比べて格段に気軽に扱えます。
この記事を読んで興味がわいた方、まずはSeedSignerを組み立ててみてはいかがでしょうか。
ここまで読んでいただきありがとうございました。
(有料記事にパーツの購入先とパーツ代の累計を書いておきます)