画面もなく、バックアップも単語型ではないカード型HWW:Tapsignerのクセはセキュリティ対策だった
ハードウェアウォレット(HWW))を選ぶ際の注意点として、ハードウェアウォレット自体に画面がついているものを選ぶというのがあります。ハードウェアウォレット側で実際に署名するトランザクションの内容を確認することで、スマホやPCに表示されているトランザクションとは別の、悪意のあるトランザクションに署名することを防げるためです。
2月に起きたBybitのコールドウォレットからの流出も、トランザクションの内容をHWW側で確かめることができなかったのが直接的な原因の1つとなっています。
考えてみると、HWWがサプライチェーン攻撃に遭ったり盗まれるよりも、スマホやPCが宛先アドレスを書き換えるタイプのマルウェア、あるいは秘密鍵を盗むマルウェアに感染してしまう可能性のほうが高いのではないでしょうか。だとすると、HWW側の画面はとても効果的なセキュリティ対策になります。
しかし、カード型のフォームファクタで提供されているハードウェアウォレットも巷にはあります。例えばTangemというものがマーケティングに力をいれています。(力を入れすぎている?)名前に聞き覚えがある方は、昨年Tangemのシードフレーズが特定の条件下でスマホアプリ側のログに残り、サーバーに送信されていた事案を覚えていらっしゃるのかもしれません。
そう、カード型のHWWにはもう1つ弱点があり、シードフレーズ/秘密鍵をバックアップしようにも、一度アプリ側に送信して表示する方法しかないように思われます。(通常はHWWの画面に表示されるため、シードがHWWから外に送信されることはありません。)これはシード・秘密鍵を外界から隔離するという原則に反しており、仮に一度きりのことであってもデバイス側のマルウェア感染やアプリのバグ・バックドアに脆弱で、少し不安なところです。
カード型のHWWといえば、自分の中ではTapsignerが思い浮かびます。TapsignerはColdcardやOpendimeと同じくCoinkite社の製品で、NFC経由で使えるお手軽なHWWです。画面はありませんが、価格も安いのでマルチシグの一部として使われることが想定されている模様です。対応している数少ないウォレットにマルチシグ重視のNunchukが含まれていることからも窺えます。
そんなTapsignerは、通常のHWWやTangemなどと比べてもクセのある設計になっています。今日はどういう工夫で秘密鍵のバックアップなどを実現しているか、使ってみて体感したTapsignerの特徴を挙げていきます。
・画面がある別のHWWとの併用が前提?
・NFCを使ったセットアップや使用方法
・対象ユーザーは誰?
画面がある別のHWWとの併用が前提?
まず、Tapsignerはカード型のHWWで画面がありません。カード型HWWの中には画面があるものもありますが(SBIが一時期推していたCool Walletなど)、大半は省いています。Block社のBitkeyも値段が安くないのに画面を省く判断をしたことを批判されていたように、オンラインのデバイスとは別端末の画面で実際に署名するトランザクションの詳細を見れることはハードウェアウォレットに求められる基本的な動作となっています。
したがって、仮にTapsignerを使ったシングルシグのウォレットを考えたときに、誤って意図と違うトランザクションを署名してしまうリスクがあります。信頼できるデバイスでしか使えないなら、もはやスマホ自体に鍵を保管すればよいのでは?という意見も暴論とはいえ痛いところを突いています。
ではなぜそのような設計になっているかというと、この割り切りはデバイス自体を安価にするという目的と、ユースケースとしてはもっとちゃんとしたHWWと組み合わせてマルチシグの一部として使う前提があったのかな?という気がします。
例えば別の、画面のあるHWWで先に内容を確認して署名したトランザクションにTapsignerでブラインド署名するケースだと、別のHWWで確認し署名したトランザクションがその後改変されることはないので、アドレス書き換え攻撃の対策は省略できます。
もしマルチシグが複数人で行うものであればやはり各々が画面付きのHWWを使ってトランザクションをダブルチェックし合うのが一番セキュアですが、1人でやるマルチシグであれば大丈夫です。
NFCを使ったセットアップや使用方法
最初に届いた時点ではTapsignerは秘密鍵が入っていません。これは通常のHWWと同じです。Tapsignerのセットアップ時に、外部からTapsignerに入力する乱数とTapsigner自体が生成する乱数を組み合わせて秘密鍵が生成されます。
このセットアップが独特なので対応しているウォレットは少なく、現在だとNunchukとSparrowに限られます。しかも自分が試したときはNunchukのPC版ではカードリーダーを使ったセットアップには対応していない(?)ようでしたし、Sparrowにはモバイル版はありません。したがって使えるウォレットの選択肢は非常に少なく、ここは利用する上で不便性ともリスクともいえるでしょう。
冒頭で紹介したTangemウォレットは生成したシードフレーズをバックアップするために外部にシードフレーズを漏らしているのが問題と説明しましたが、Tapsignerのバックアップはもう少しよくできていて、カードの裏面に記載されている「Backup Password」というAES鍵で暗号化した秘密鍵(xprv)のみ取り出すことはできます。この暗号化したファイルをどこかにバックアップしておけばTapsignerが壊れても、どこかのPCなどで秘密鍵を復元できるわけです。

また、バックアップのみならず読み出しの際や署名の際にPINコードの入力が求められます。PINの認証に数回失敗すると、試行1回あたり15秒ほど読み取り時間がかかるようになり、認証に成功するまでこれが続きます。したがって、Tapsignerが攻撃者の手に落ちても、PINをランダムに再設定していれば総当たりに平均で3か月ほどかかります。
実際にスマホやPCのカードリーダーで使用してみたところ、NFCが不安定ということもなく、比較的使いやすかったです。(どちらかというと、Sparrowの上級者向けさやNunchukの使用感の独特さがハードルな気がします)
対象ユーザーは誰?
上では個人でマルチシグを試したい人を例に挙げましたが、実際にこの用途でNunchukかSparrowを使う予定の方であればおすすめできる水準の使いやすさではあります。ただ、あえて選ぶものでもないです。
Coinkiteのストアを覗いてみるとたくさんのデザインのTapsignerが並んでいます。

中にはTapsigner Metro Cardのようにステルス性を高めたものや、ビットコインアートのようなものもありますが、企業コラボのデザインもいくつか見当たります。


確かに一枚あたりの金額感としても割引された値段$20と、ノベルティやおまけとして配れない金額でもありませんし、これだけをトラストして使うわけでなければ貰い物だったとしてもセキュリティ面である程度大目に見れそうです。
なので、ひょっとすると個人のマルチシグとかじゃなくて、単純にコレクターズアイテムだったりプロモーションアイテムという立ち位置なのかもしれません。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション