
SeedSignerでSatochipを使ってみよう!
今回、CryptoGuide氏が開発中のSeedSignerフォーク版を使用して、Satochipカードのセットアップから署名までを一通り試してみました。 カード型ハードウェアウォレットであるSatochipを、SeedSignerと組み合わせてどう活用できるのかを紹介します。
Satochipとは?
Satochipは、ICチップに保持したシードを使ってブラインド署名できるカード型のハードウェアウォレットです。
Satochip公式サイト
しかしカード型のハードウェアウォレットにはいくつかの弱点があります。
- ディスプレイが無く、トランザクション内容を直接確認できない
- セットアップ時にシードをPC上のウォレットアプリや専用アプリで扱う必要があり、その過程で漏洩リスクがある
今回のフォーク版を使えば、Satochipカードのセットアップから署名まで、すべてSeedSignerだけで完結させることができます。 シードは常にSatochipカード内に保持され外部へ出ることがなく、トランザクション内容もSeedSignerの画面で確認できるため、セキュリティ面でも安心して利用できます。
DIYで作れるSatochip
Satochipはオープンソースプロジェクトです。 製品版カードを購入することも可能ですが、空のスマートカード(J3R180)を用意して自分でアプレットをインストールすればDIYすることもできます。
本来、アプレットのインストールには専用のツールを準備する必要があり、自分のような非テックな人間にはやや敷居が高いのですが、今回のフォーク版SeedSignerにはこのインストール機能が組み込まれており、SeedSigner上の操作だけで手軽にカードを構築できます。
使用したSeedSignerフォーク版
フォーク版の現行最新版ではアプレットのインストールと初期セットアップまでしか対応していないのですが、プレリリース版では署名まで可能になっています。今回はプレリリース版を使用しました。
GitHubリリースページ
※プレリリース版は開発途中なので、実用ではなくテスト目的での使用に留めるのが無難です。
スマートカードへのアプレットインストール
まずは空のスマートカードをSeedSignerに挿入。
Tools → Smartcard Tools → DIY Tools → Install Applet
と進み、「Satochip-0.12-official.cap」を選択すると、数秒でインストールが完了します。
シードの準備
次にSatochipに書き込むシードを用意します。方法は自由で、例えば:
- SeedSignerで新規生成(カメラ、サイコロ)
- SeedQRから既存のシードをロード
- SeedKeeperに保管しているシードをロード
いずれの方法でもOKです。今回はSeedKeeperからロードしておきます。
カードへのシード書き込み
シードを準備したら、Satochipカードに書き込みます。
Tools → Smartcard Tools → Satochip Functions → Initialise with Seed
を選択すると、PINコードの設定を求められます。 任意のPINを入力して確定すると、次にSeedSignerにロード済みのシード一覧が表示されます。 ここでカードに書き込みたいシードを選択すれば、Satochipカードへの保存が完了します。
一度シードを書き込んだSatochipカードに新たなシードを上書きすることはできないようです。カードをリセットして別のシードを使いたい場合、現状ではアプレットを一旦アンインストールする必要があります。
PINはSatochipカードにアクセスするための鍵であり、署名やXpubエクスポートの際に必ず入力を求められます。 このPINを知らなければカードを利用できないため、シードをカード外に出さずに安全に保護する仕組みになっています。
PINを5回連続で間違えるとカード内部のデータは自動的に消去されます。 この仕組みによってブルートフォース攻撃などを防ぐことができ、不正アクセスに強い設計になっています。
Xpubのエクスポートとウォレット作成
次に、Sparrow WalletへXpubをエクスポートしてウォレットを作成します。
Tools → Smartcard Tools → Satochip Functions → Export Xpub
XpubのQRコードを表示させたら、Sparrow Wallet側の手順は通常のSeedSignerの場合と同じです。
最後にVerifyのためにSparrowの受取アドレスをスキャンするよう求められます。
トランザクション署名の流れ
実際の署名は以下の流れです。
- Sparrow WalletでPSBTを作成
- QRコードをSeedSignerでスキャン
- 「Use Satochip card」を選択
トランザクション内容がSeedSignerの画面に表示されるので確認し、問題なければ署名して、Sparrow WalletにQRコードで戻し、ブロードキャストすれば完了です。
まとめ
今回、SeedSignerフォーク版を使ってSatochipのセットアップから署名までを試しました。 SeedSignerだけでSatochipの初期化から署名まで完結できるのは画期的だと感じました。
通常のSeedSignerはシードを一時的にRAMに保持する仕組みで、電源を切れば揮発しますが、その間は保護されていない状態になります。 一方、Satochipを組み合わせれば、シードは常にスマートカード内で安全に保持され、外部に漏れることはありません。 この点で、よりセキュアなワークフローを構築できるのが大きなメリットです。
興味のある方はぜひテストにチャレンジしてみてください。
ここまで読んでいただき、どうもありがとうございました。
今回はCryptoGuide氏が作製し販売している専用カードリーダーボードを組み込んだSeedSignerを利用しましたが、一般的なUSB接続のスマートカードリーダーを使っても動作させることが可能です。