ハードウェアウォレット(HWW))を選ぶ際の注意点として、ハードウェアウォレット自体に画面がついているものを選ぶというのがあります。ハードウェアウォレット側で実際に署名するトランザクションの内容を確認することで、スマホやPCに表示されているトランザクションとは別の、悪意のあるトランザクションに署名することを防げるためです。

2月に起きたBybitのコールドウォレットからの流出も、トランザクションの内容をHWW側で確かめることができなかったのが直接的な原因の1つとなっています。

不正なトランザクションに署名させる攻撃の手法と対策
今週、Bybitが史上最大となる2000億円規模のハッキングを受けたことが話題になりました。これを受けてBybitでは大規模な引き出しラッシュが起こったことからも、この事件をきっかけに取引所に預けている姿勢を見直したユーザーもかなり多かったのではないでしょうか。 喉元すぎれば暑さ忘れる、というようにほとぼりが冷めたら再入金するユーザーもけっこういるのかもしれませんが。 今回の事件で特徴的だったことの1つは攻撃手法が割とすぐに明らかになったことでした。昨年5月末のDMM Bitcoinの事件について攻撃手法の詳細が未だに公表されていないのと対照的に、Bybitの事件は発生直後から原因がわかっており、それが早期の出金再開につながったとされています。 もし原因不明であれば別の資産への影響を調査するために出金を停止する必要が出てきます。とはいえ、いずれにしても出金は停止するほうが様々な賢明だったような気はしますが、結果的にはBybitはこの対応によってユーザーの信用を得られたようです どちらの事件も資金洗浄の特徴から北朝鮮の政府系ハッカー集団TraderTraitorによるものと考えら

考えてみると、HWWがサプライチェーン攻撃に遭ったり盗まれるよりも、スマホやPCが宛先アドレスを書き換えるタイプのマルウェア、あるいは秘密鍵を盗むマルウェアに感染してしまう可能性のほうが高いのではないでしょうか。だとすると、HWW側の画面はとても効果的なセキュリティ対策になります。

しかし、カード型のフォームファクタで提供されているハードウェアウォレットも巷にはあります。例えばTangemというものがマーケティングに力をいれています。(力を入れすぎている?)名前に聞き覚えがある方は、昨年Tangemのシードフレーズが特定の条件下でスマホアプリ側のログに残り、サーバーに送信されていた事案を覚えていらっしゃるのかもしれません。

そう、カード型のHWWにはもう1つ弱点があり、シードフレーズ/秘密鍵をバックアップしようにも、一度アプリ側に送信して表示する方法しかないように思われます。(通常はHWWの画面に表示されるため、シードがHWWから外に送信されることはありません。)これはシード・秘密鍵を外界から隔離するという原則に反しており、仮に一度きりのことであってもデバイス側のマルウェア感染やアプリのバグ・バックドアに脆弱で、少し不安なところです。

カード型のHWWといえば、自分の中ではTapsignerが思い浮かびます。TapsignerはColdcardやOpendimeと同じくCoinkite社の製品で、NFC経由で使えるお手軽なHWWです。画面はありませんが、価格も安いのでマルチシグの一部として使われることが想定されている模様です。対応している数少ないウォレットにマルチシグ重視のNunchukが含まれていることからも窺えます。

そんなTapsignerは、通常のHWWやTangemなどと比べてもクセのある設計になっています。今日はどういう工夫で秘密鍵のバックアップなどを実現しているか、使ってみて体感したTapsignerの特徴を挙げていきます。

💡
結論から言えば、普段使いのHWWにTapsignerを選ぶ必要はないと思いますが、安くてかさばらないのでお手軽にマルチシグを試すのには便利かもしれません。また、会社が独自デザインのものをノベルティとして配るのが一番のユースケースかもしれません。

・画面がある別のHWWとの併用が前提?

・NFCを使ったセットアップや使用方法

・対象ユーザーは誰?

画面がある別のHWWとの併用が前提?

まず、Tapsignerはカード型のHWWで画面がありません。カード型HWWの中には画面があるものもありますが(SBIが一時期推していたCool Walletなど)、大半は省いています。Block社のBitkeyも値段が安くないのに画面を省く判断をしたことを批判されていたように、オンラインのデバイスとは別端末の画面で実際に署名するトランザクションの詳細を見れることはハードウェアウォレットに求められる基本的な動作となっています。

したがって、仮にTapsignerを使ったシングルシグのウォレットを考えたときに、誤って意図と違うトランザクションを署名してしまうリスクがあります。信頼できるデバイスでしか使えないなら、もはやスマホ自体に鍵を保管すればよいのでは?という意見も暴論とはいえ痛いところを突いています。

ではなぜそのような設計になっているかというと、この割り切りはデバイス自体を安価にするという目的と、ユースケースとしてはもっとちゃんとしたHWWと組み合わせてマルチシグの一部として使う前提があったのかな?という気がします。

例えば別の、画面のあるHWWで先に内容を確認して署名したトランザクションにTapsignerでブラインド署名するケースだと、別のHWWで確認し署名したトランザクションがその後改変されることはないので、アドレス書き換え攻撃の対策は省略できます。

もしマルチシグが複数人で行うものであればやはり各々が画面付きのHWWを使ってトランザクションをダブルチェックし合うのが一番セキュアですが、1人でやるマルチシグであれば大丈夫です。

💡
なので、想定されている使い方は個人のマルチシグの一部、またはメリットが限定的だが廉価なHWWが欲しい(または配りたい)個人や法人なのかなと思います。そもそも個人のマルチシグや画面のないHWWがどれくらい有用かは諸説あるとして。

NFCを使ったセットアップや使用方法

最初に届いた時点ではTapsignerは秘密鍵が入っていません。これは通常のHWWと同じです。Tapsignerのセットアップ時に、外部からTapsignerに入力する乱数とTapsigner自体が生成する乱数を組み合わせて秘密鍵が生成されます。

このセットアップが独特なので対応しているウォレットは少なく、現在だとNunchukとSparrowに限られます。しかも自分が試したときはNunchukのPC版ではカードリーダーを使ったセットアップには対応していない(?)ようでしたし、Sparrowにはモバイル版はありません。したがって使えるウォレットの選択肢は非常に少なく、ここは利用する上で不便性ともリスクともいえるでしょう。

冒頭で紹介したTangemウォレットは生成したシードフレーズをバックアップするために外部にシードフレーズを漏らしているのが問題と説明しましたが、Tapsignerのバックアップはもう少しよくできていて、カードの裏面に記載されている「Backup Password」というAES鍵で暗号化した秘密鍵(xprv)のみ取り出すことはできます。この暗号化したファイルをどこかにバックアップしておけばTapsignerが壊れても、どこかのPCなどで秘密鍵を復元できるわけです。

Tapsignerの裏面(自分のを公開したくなかったので拾い画です)。Backup PasswordはAES鍵となっていて、暗号化された状態でバックアップできるTapsignerの秘密鍵を復号するのに使われます。
💡
別のTapsignerに取り込んで復元するようなことはできないので、バックアップはあくまで信頼できるPCなどで復号する想定です。BIP32のシードフレーズではないので、復元して使うにはある程度知識が必要かと思われます。

また、バックアップのみならず読み出しの際や署名の際にPINコードの入力が求められます。PINの認証に数回失敗すると、試行1回あたり15秒ほど読み取り時間がかかるようになり、認証に成功するまでこれが続きます。したがって、Tapsignerが攻撃者の手に落ちても、PINをランダムに再設定していれば総当たりに平均で3か月ほどかかります。

実際にスマホやPCのカードリーダーで使用してみたところ、NFCが不安定ということもなく、比較的使いやすかったです。(どちらかというと、Sparrowの上級者向けさやNunchukの使用感の独特さがハードルな気がします)

対象ユーザーは誰?

上では個人でマルチシグを試したい人を例に挙げましたが、実際にこの用途でNunchukかSparrowを使う予定の方であればおすすめできる水準の使いやすさではあります。ただ、あえて選ぶものでもないです。

Coinkiteのストアを覗いてみるとたくさんのデザインのTapsignerが並んでいます。

TAPSIGNER® Honey Badger
TAPSIGNER featuring the Bitcoin Honey Badger. Learn more at: tapsigner.com and see them all in our gallery of cards.

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

mempool.spaceとコラボした券面デザイン
Pubkeyというニューヨークにあるバーとコラボした券面デザイン

確かに一枚あたりの金額感としても割引された値段​$20と、ノベルティやおまけとして配れない金額でもありませんし、これだけをトラストして使うわけでなければ貰い物だったとしてもセキュリティ面である程度大目に見れそうです。

なので、ひょっとすると個人のマルチシグとかじゃなくて、単純にコレクターズアイテムだったりプロモーションアイテムという立ち位置なのかもしれません。