ハードウェアウォレットColdcardMk4を徹底レビュー。Mk3との差は…?
こんにちは。AndGoのハードウェア担当の片山です。
前回までオープンソースのハードウェアウォレットのColdcard (https://coldcard.com/) について解析してきました。Coldcardはオープンソースのハードウェアウォレットでありながら,セキュアエレメントが搭載されています。現在すぐに入手できるのはMk3までですが,現在,Mk4は予約販売が開始されているようですので詳細を見ていきたいと思います。
Coldcard Mk4 vs Mk3
Coinkideのウェブサイト(https://coldcard.com/docs/coldcard-mk4)にMk4とMk3の比較が書かれています。まずはセキュアエレメントの数が1個から2個になっています。これまでMicrochip ATECC609シリーズが使われていましたが,さらにMaximのDS28C36B (Maximは現在Analog Devicesの傘下に入っている米国の半導体メーカー)が搭載されます。これによって何が変わるかは後ほどご紹介します。
CPUについては80MHzから120MHzにアップグレードされていています。おそらくSTMicroelectronicsのチップではありますが,具体的にはどの型番のものであるかは明らかになっていません。フラッシュメモリも4kBから512kBに増強され,よりマルチシグ運用がしやすくなったようです。RAMも8MB積んでいますが,マイコンの中では巨大すぎるので,外付けのRAMを積んでいるものと思われます。トランザクションのサイズも2MBまで処理可能になりました。

比較表ではDebug Serial PortがPhysical (Pins)からVirtual (USB)に変更されています。これまではUSBポートからデバッグ可能になっていたようですが,これが物理ピンに変わっています。ファームウェア開発時にはデバッグ機能を有効にしておくことで,USB経由でファームウェアの書き込みができたり,デバッグのために内部のメモリの読み書きができたりします。製品出荷時には無効にして,さらに再び有効にする手段もありませんし,ユーザーとしては若干不安な感じもしてくるため,別のピンにデバッグ用のポートを割り当てたということなのだと想像しています。これにより,微々たるものですが物理的な攻撃に対するセキュリティが向上しています。
他,地味なアップデートですが,USBコネクタもType-Cに変わっていたり,USBを使用している際のLEDが搭載されているようです。
NFC
SUICAなどでおなじみNFC(Near Field Communication)が搭載されています。対応するデバイスにタッチすることで,署名(マルチシグも対応)したり,アドレスの共有ができたりするようです。非接触で情報がやりとりできてしまうので不安を感じる方もいると思います。デフォルト設定では無効になっていて,デバイスの設定で有効にしないと使用できないようになっています。こちらの記事(https://bitcoinmagazine.com/.../inside-the-new-coldcard-mk4)ではCoinkideのコメントとして,NFCによってコストを下げ,UXを向上させたいと述べています。現在QRコードに対応したウォレットが出ていますが,それほど大きな情報を載せることはできませんし,読み取るためにはカメラが必要ですので,必然的にハードウェアウォレットそのものの製造コストも増加してしまいます。確かにNFCであれば基板上のアンテナパターンとチップだけで対応ができ,通信帯域も数百kbpsあるので,トランザクション程度の情報量であれば余裕を持って通信が可能です。
Lightning決済などが普及し,小口のハードウェアウォレットとして使用する分にはNFC対応は,ユーザーにとって大きなメリットがあります。しかし,資産を安全に保管しておくためとしては非接触で通信できるのは少々不安が残ります。NFCを物理的に無効にすることもできるそうで,基板上のパターンを切断するようです。おそらくNFCのアンテナを切断するのでしょう。確実にNFCを無効にできますが,基板がむき出しになっているColdcardだからこそできる方法です。
セキュアエレメント
ColdcardはこれまでセキュアエレメントとしてMicrochip製のATECC609シリーズを搭載していましたが,Mk4ではもう1個セキュアエレメントを搭載するようです。Mixim(現在はAnalog Devicesの傘下に入っているアメリカの半導体メーカー)のDS28C36Bというチップです。データシート(https://datasheets.maximintegrated.com/en/ds/DS28C36.pdf)を見てみると,ECDSAによる暗号化やハッシュ関数,乱数発生器などを搭載しています。残念ながらsecp256k1には対応しておらず(対応しているのはsecp256r1),セキュアエレメント内部でのトランザクションの署名はできないようです。GitHubのリポジトリのドキュメントにはMk4のセキュアエレメントの使われ方について記載がされています(https://github.com/.../blob/mk4/docs/mk4-secure-elements.md)。Fig. 2に抜粋しました。

基本的にはMk3までで使用されていたATECC609B (以降SE1と呼びます)のセキュアな領域に暗号化されたニモニックが保管されています。そしてマイコンとDS28C36B(以降SE2と呼びます)がニモニックを復号化するためのキーを別々に持っています。マイコンからSE2に入っているキーを取り出すためにはSE1による署名が必要で,それにはPINコードが必要になります。
ドキュメントを読むと,SE1とSE2が同時に攻撃されない限りニモニックを盗み出すことができず,異なるメーカーのチップを同時に攻撃するのは難しいと書かれています。たしかにその通りではあるのですが,マイコンが攻撃されて,なおかつPINコードが盗まれた場合には上記の復号化が可能になってしまうので,セキュアエレメントを2つ搭載する意味があるのかは継続調査が必要です。
その他
その他の機能としてはUSBバーチャルディスクモードというものがあります。ColdcardをPCに接続するとPC側からはUSBメモリとして認識されるようで,トランザクションデータの転送がMicroSDカードを介さずにできるようです。また,Trick PINというDuressウォレットという強盗に襲われたとき用に少額しか入っていない偽のウォレットとして動作させたり,ハードウェアウォレットそのものを破壊もしくは初期化したりするためのPINをよりカスタマイズできるようになったようです。
盗難や強盗などの被害に遭ってしまった際など運用面をサポートするような機能があると安心感が増します。しかし加害者側にも知識があった場合には無意味である可能性もあり,そもそも命が狙われては元も子もないです。ハードウェアウォレットとしてのセキュリティも重要ではあるものの,それ以上に自分の身を守るための対策も必要でしょう。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション