こんにちは,AndGoのハードウェア担当です。

以前、ビットコイン研究所ではBolt Cardについて取り扱いました(https://coinkeninfo.com/bolt-card/ ) Bolt CardはNTAG 424 DNAというNFCチップが使われています。

今、AndGoの技術者の中ではNFCが密かなブームになっています。今回はNFCの規格についてと、NFCを使ったハードウェアウォレットについて見ていきます。

NFCの規格

NFC (Near Field Communication)は短距離無線技術で、10cm以下での通信を実現するものです。NFCというとNFCをつかったICカードが想像されますが、無線技術のことを指します。

NFCは現在はType A/Type B/FeliCaと3種類の規格があります。Type AはオランダのNXPセミコンダクター(元Philipseの半導体部門)が開発した形式で、日本国内ですとタバコを購入する際に使用するtaspoや2023年から導入される電子化された車検証などに使われています。

Type Bはアメリカのモトローラ社によってい開発されています。日本国内ではマイナンバーカード、運転免許証、パスポートなどに使われています。Type AとType Bは変調方式が異なるほか、Type Aはストレージとしての利用だけでCPUを搭載しない構成が可能であり、低コストで生産できるという特徴があります。

FeliCaはソニーが開発したもので、処理速度の速さが特徴です。SuicaやICOCAなどの交通系のICカードや、多くの電子マネーで使用されています。日本国内で普及しているNFCカードの8割以上がこのタイプと言われていますが、日本国外ではあまり使われておらず、日本がガラパゴス化してしまっている一つの例になっています。

iPhoneではiPhone 6からNFCが搭載されましたがFeliCaは非対応でiPhone 7から日本向けモデルでFeliCaに対応し、Suicaなどが利用できるようになりました。

複数の規格が存在しますが、どれも13.56MHzの周波数を利用して情報と(必要に応じて)電力伝送を行っています。この周波数帯はラジオのFM放送で使われているもので、人体に大きな影響はありませんし、電池を搭載していないカードの場合には電力供給ができないとそもそもカードが起動しないいため、たとえば数メートル離れたような場所からカードの情報を読み取られる心配もありません。

電波による通信の速度は送受信電力と距離、周波数で物理的に決まってきます。NFCの場合は通信速度は数百kbpsです。WiFiは数十メートル離れていても通信ができますが、周波数が2.4GHzもしくは5GHzを使っているので高速で通信ができます。

似たような規格としてRFID (Radio Frequency Identification)があります。RFIDはより長距離(10m程度)の距離離れていても使えるほか、複数のRFIDタグと同時に通信ができるという特徴があります。しかしNFCのような高度な暗号化や計算処理のようなことができず、基本的にはRFIDに書き込まれているIDを読み取るという使い方になります。RFIDタグは非常に安価なので、物流管理や、図書館での図書管理につかうことができます。

ColdCard mk4

ColdCardではmk4からNFCが使用できるようになりました。PubKeyのエクスポートやスマートフォン上のウォレット(NunchakWallet)で作成したトランザクションをColdCard上で署名するような使い方がことができます。https://youtu.be/eLG8Atcd-l4 を見るとその使い方がよくわかります。これまでSDカード経由で行っていた作業をNFCでできるというイメージとなります。スマートフォンでSDカードを使うのは少々面倒なので、NFCを使うことでスマートフォンとの連携がやりやすくなったと言えるでしょう。

ワイヤレスでスマートフォンと通信をするということを考えるとBluetoothが比較対象になります。NFCはほぼ接触していないと使えないのに対し、Bluetoothは距離が離れていても使用することができます。トランザクションに署名をするような使い方であれば、秘密鍵はColdCard本体に入っているので、トランザクションの内容さえColdCardで確認できればセキュリティの心配はないと考えられますが、接触していないと使えないという点ではNFCのほうが安心感はありますが、Bluetoothも通信内容はしっかりと暗号化されているので十分です。

せっかくなのでColdCardのGitHubリポジトリhttps://github.com/Coldcard/firmware/tree/master/hardware を見てみます。以前の記事でBOM(部品表)を見ました。NFCに関係するチップはSTMicroelectronicsのST25DV54KCです。このチップType Vという規格に対応しています。実はこれ、Type A/Type B/FeliCaとは違う別の規格のようで、RFIDに近いもののようです。

回路図の一部を示しますが、左にマイコン本体と通信をする端子(I2Cという汎用的な規格です)、右にはNFCコイルのアンテナがあります。アンテナは回路基板に配線のパターンとして作られています。

ST25DV54KCのデータシートを読んでみると、このチップはメモリを積んでいるようで、マイコン側もしくはNFC側からデータを一時的に保存してバケツリレーのようにデータを受け渡しするようです。

TapSigner

ColdCardを開発しているCoinkiteはTapSignerというNFCカード型のプロダクトを持っています。こちらはSamsung社製のチップを搭載しており、ISO 15408 EAL 6+という非常に強度の高いセキュリティ基準に準拠しています。秘密鍵のストレージとしての使い方となります。

現在はスマートフォンのホットウォレットであるNunchukやPCで使用するSparrowに対応しており、SDKも提供しているので、他のウォレットとの連携も期待できそうです。

TapSignerそのものが壊れてしまったらどうなるのか、というのも気になり調べてみました。どうやらバックアップを取ることができ、AESで暗号化された秘密鍵として取り出すことができるようです。復元するにはバックアップキーが必要で、そのバックアップキーはカードの裏面に書いてあるとのことです。カードが盗まれたら秘密鍵を盗まれてしまいそうですね・・・。なかなか鍵の管理はソリューションが無いので難しいところです。

まとめ

今回はNFCという切り口でウォレットについて触れてみました。ビットコインそのものも暗号技術の社会実験の場になっていますが、ハードウェアについても様々なものが試されていてユニークな仕組みがでている点で技術者としても楽しめますね。その他にもNFCを使ったプロダクトがあるので機会があれば取り上げたいと思います。