こんにちは。AndGoのハードウェア担当の片山です。毎週水曜日はAndGoのエンジニアが交代で技術に関するマニアックな記事を皆様にお送りしています。

今回はオープンソースのハードウェアウォレットのColdcard (https://coldcard.com/) について解析していきたいと思います。Coldcardはカナダ発のハードウェアウォレットです。電卓みたいな見た目でタッチ式のキーパッドがあり比較的シンプルな形状をしています。bitcoin.org でも紹介されています(https://bitcoin.org/ja/wallets/hardware/coldcard/)。Micro SDカードへのバックアップできることが特徴的です。

ファームウェアとハードウェアがオープンソースとしてGitHubで公開されています(https://github.com/Coldcard)。firmware > hardware > schematic-mark3b.pngとたどっていくと回路図を見ることができます。ColdcardもSTM32を採用していて,STM32L496を使用していることがわかります。ちなみにTrezorは不正に秘密鍵を取り出すために使われている電圧グリッチという方法があります。Trezorに使われているマイコンはSTM32FシリーズでColdcardのものとは構造が異なっていることから,Coldcardでは同じ手段が使えない可能性があります。

そしてオープンソースのハードウェアウォレットとしてはATECC608Aというセキュアチップを搭載しています。データシートを見てみると(http://ww1.microchip.com/.../jp/DeviceDoc/40001977A_JP.pdf) 鍵のためのストレージ,楕円曲線暗号,SHA-256,真性乱数発生機を搭載していてビットコイン用としてはピッタリです。IoT用のチップのようです。もちろんそれなりに仕様が公開されているので,Ledgerに使われているチップと比較するとセキュリティ性能は劣る可能性があります。実際にチップを購入して試してみたいところです。

回路図をさらに見てみるとMX25L8006というチップがあります。これは1MBのフラッシュメモリのようです。STM32L496シリーズは1MBのフラッシュメモリを搭載していますが,ファームウェアアップデートのためにフラッシュメモリを半分ずつの領域に分けて交互にアップデートをして切り替えるような方法を取らないといけないため実際には512kBしか使えず容量不足になりがちです。もしくは鍵以外の保存しておきたい情報を入れておくためのストレージのために使われている可能性があります。

その他ハードウェアの特徴としては128 x 64の有機ELディスプレイを使っていたり,電源周りが安定化するような様々な工夫がされていたり,タッチ式のキーパットが非常にシンプルに構成されていたりと,エンジニアのセンスが感じられますので,次回は詳細に踏み込んで見たいと思います。