こんにちは。AndGoのハードウェア担当の片山です。
前々回と前回はオープンソースのハードウェアウォレットのColdcard (https://coldcard.com/) のハードウェアについて解析してきました。オープンソースのハードウェアウォレットでありながらATECC608Aというセキュアチップを搭載しています。今回はそのカスタマイズ版であるATECC608A-TNGTLSというチップが搭載されたM5Stack(マイコンモジュール)用のモジュールを入手しましたので報告します。
ATECC608A(-TNGTLS)とは?
ATCC608AはMicrochip Technologyのチップです。MicrochipといえばPICマイコンで有名なアメリカの会社です。2016年にはAtmelというArduinoに搭載されているAVRマイコンを製造している会社を買収しました。PICもAVRもどちらも非常にポピュラーなマイコンで様々な電子機器の制御に使われていますし,アマチュアの電子工作でもよく採用されます。
ATCC608AはIoT機器用のセキュアチップでチップ内に安全に秘密鍵を保存しつつ,署名ができるものです。SHA256といったハッシュ計算を行うための機能や,乱数発生器も内蔵しています。実はクレジットカードやSIMカードなどのICカード(金色の端子が出ているやつ)にも使われているものと同タイプで,身近に使われています。そもそも製品仕様が詳細に公開されていないので市場から購入することができる製品は少ない中で,ATCC608Aは誰でも購入できるものになっています。ただし,仕様はMicrochip社と秘密保持契約を結ばないと開示してくれませんので,購入しても使うのは難しいでしょう。
ATCC608Aそのものは最大で16個の鍵,証明書,データをセキュアに保存できる領域があり(もちろん耐タンパー性があり,一度書き込んでロックしたら取り出すのはほぼ不可能),楕円曲線暗号が使えます。SHA256やHMACといったハッシュをハードウェアでサポートしているので,マイコン側のリソースを割かずに済みます。共通鍵暗号のAES-128もサポートしています。乱数発生器やカウンタなども内蔵しています。
今回入手したATCC608A-TNGTLSはColdcardに搭載されているATCC608Aとは異なり,すでにIoT機器がクラウドサービスとセキュアな通信ができるように設定等が書き込まれたものです。もちろん用途は特定されるものの開発や製品の製造がしやすくなっています。具体的には秘密鍵がすでにセットアップされた状態で,Microchip社より秘密鍵と証明書も提供されるようです。通常,チップメーカーにこのようなカスタマイズをしてもらうためには10万個程度の単位で購入する必要があるのですが,ATCC608A-TNGTLSは10個単位で購入ができます。