本文へ移動
The NFC Mint
The NFC Mintメニュー

タグが真正性を証明する仕組み

当社のタグにはNXP NTAG 424 DNAチップを使用しています。スキャンのたびに単調増加カウンターの値が増え、チップの秘密鍵を使ってAES-CMAC認証コードを生成します。当社の検証サービスはコードとカウンターを確認し、検証済みのコードを拒否します。コピーしたリンクからは、秘密鍵なしで新しい有効なコードを生成できません。スキャンの検証に成功すると、タグの真正性が確認されます。タグの付いた品物が本物だと証明するものではありません。

単調増加カウンターによる保護の仕組みを示す図

単調増加カウンターで複製を防ぐ仕組み

NTAG 216など、データの保存だけを行うNFCタグには、情報を提供する機能はあっても、真正性を保護する機能はありません。保存されている固定の情報は、どのリーダーでも複製できます。当社のNFCタグでは、スキャンのたびに内部のカウンターが1ずつ増えます。この値をタグ固有のデータおよび秘密鍵と組み合わせ、AES-CMAC(暗号ベースのメッセージ認証コード)で認証コードを生成します。スキャンのたびにカウンターが変わるため、同じタグでも毎回異なる認証コードになります。

認証コードは次の式で求めます。

CMAC = AES-CMAC(K, UID || Counter || Data)

Kは秘密鍵、UIDはタグ固有の識別子、Counterはスキャンのたびに増えるカウンター、Dataはタグのペイロードです。偽造タグは秘密鍵を知らなければ、今後のカウンター値に対応する有効な認証コードを予測・生成できません。計算量の面で、複製は現実的ではありません。

ハードウェアセキュリティモジュールがマスター鍵を保管し、その鍵とタグのUIDからタグごとに固有の鍵を導出します。その鍵をNTAG 424 DNAチップに一度だけ書き込みます。書き込んだ鍵はチップから読み出せません。仮に1つのタグから鍵を取り出しても、別のタグで有効なコードは生成できません。

固定データのNFCタグと当社のNTAG 424 DNAタグの比較

機能 固定データのNFCタグ 当社のNTAG 424 DNAタグ
固定のシリアル番号 容易に複製可能 ほかの情報と併用
単調増加カウンター 搭載されていても認証コードによる保護なし スキャンごとに増加
AES-CMACによる検証 保護なし AES-CMACで検証
複製の検知 非対応 カウンター値の不一致
チップの検証 なし ECC secp224r1
物理的な開封・改ざんの検知 非対応 TagTamperの検知線

関連記事

誰でもできる真正性の確認

検証サービスの結果の見方