コンテンツへスキップ

← NFC.cool Blogに戻る

NTAG 424 DNA:偽物ではないと自ら証明するNFCタグ

iPhoneに当てられたNTAG 424 DNAタグ。本物と検証された結果が、タグの設定画面とともに表示されている

少し前から、同じ主張を何度も目にするようになりました。高級ブランドが製品にNFCチップを仕込んでいて、バッグやボトルにスマホをかざせば、それが偽物ではなく本物だとわかる、というものです。どの記事も同じ耳ざわりのいい一文を並べるだけで、どうやってなのかを語るものは一つもありませんでした。偽造業者がハンドバッグごとチップをコピーするのを、実際に何が食い止めているのでしょうか。

そこで私は、タグが気になったときにいつもやることをしました。AliExpressに行き、「NTAG 424 DNA」タグの出品を見つけ、少しだけ注文して、封筒が届くのを待ったのです。数ユーロと数週間で、あのブランド保護システムの土台になっているのと同じシリコンが、私の机の上に並びました。そして一枚をかざして、何をするのか確かめてみました。

NTAG 424 DNAタグの正体

見た目はごく普通のNFCタグです。安物の山の中から選び出すことはできませんし、どんなスマホも文句なく読み取ります。私のNFCタグの種類のガイドを読んでいれば、これはiPhoneが喜んで読み取るType 4タグの一つとして、すんなり収まります。

違うのは「DNA」の部分です。チップの内部には、いくつかのAES-128鍵と小さな暗号エンジンが入っていて、普通のNTAG215やマルチパックのステッカーにはできないことができます。一回一回のタップに署名することです。その署名こそが、すべてです。「これがリンクです」と言うだけのタグと、「これがリンクです。そして、まさにこの本物のチップである私が、いま、それを提供しているという暗号的な証明もここにあります」と言うタグとの、違いなのです。

高級ブランドが実際にお金を払っているのは、まさにそこです。リンクそのものではなく、本物のチップがそれを提供しているという証明に対して、です。

SUNとSDMの仕組み:タップのたびに自分自身を書き換えるリンク

腑に落ちた瞬間のことをお話しします。タグが実際に何を送っているのかを見たとき、私はそれを理解するための仕組みの大半を、すでに自分で作っていたことに気づいたのです。

今年のはじめ、私はNFCタップカウンター機能をリリースしました。自分が何回読み取られたかを数え、その数字をURLに入れるタグです。おかげでリンクは、それが誰かにとって47回目のスキャンだと知ることができます。NTAG 424 DNAタグはそれと同じ発想に、偽造を不可能にする暗号化の層を巻きつけたものです。

この仕組みはSUN(Secure Unique NFC)と呼ばれます。NXPのデータシートを読んでいるならSDM(Secure Dynamic Messaging)です。タグにはhttps://example.comのような普通のリンクを保存します。ただし、タップされるたびにそのリンクの一部をその場で書き換えるよう、チップに指示しておくのです。だから、あなたのスマホが実際に受け取るのは、こちらに近いものになります。

https://example.com/?picc_data=A1B2...&cmac=9F3C...

この2つの値は飾りではありません。picc_dataは、タグの本当のIDとタップカウンターを暗号化したコピーで、チップの外に決して出ない鍵でかき混ぜられています。cmacは、そのデータに対する暗号署名です。どちらもタップのたびに変わります。同じタグを2回かざせば、まったく異なる2つのURLが得られ、そのどちらもチップによって、その都度新しく署名されています。

私は普通のNFCタグを、店のショーウィンドウに貼られた印刷された看板のようなものだと考えています。誰でもそれを写真に撮り、まったく同じコピーを印刷できます。SUNタグはむしろ、あなたが入ってくるたびに、一枚ごとに番号が振られ判子が押された新しい受領書を手渡してくれる警備員のようなものです。昨日の受領書をコピーしても意味がありません。今日の番号は違いますし、本物なのは警備員の判子だけだからです。

クローンされたNTAG 424 DNAタグが見破られる理由

ここが、私の最初の疑問に答えてくれる部分です。偽造業者は、タグの中身なら間違いなくクローンできます。URLを読み取り、1バイトずつコピーし、空のチップに書き込めます。これは昔からずっと本当のことで、だからこそ「QRコードを貼っておけばいい」では、実は何も証明できないのです。

彼らにできないのは、次の有効な署名を作り出すことです。署名鍵は本物のチップの内部にとどまり続け、タップの最中でさえ、決して外に出てきません。つまり、タップが何らかの意味を持つのは、実際にその鍵を握っている相手に対してだけなのです。本物のブランド保護の仕組みでは、タグのリンクは製造者が運用するサーバーを指していて、そのサーバーが各タップを復号し、署名を計算し直して鍵が一致することを確かめ、上がっていくカウンターを追い続けます。

クローンを捕まえるのは、その最後の部分です。偽造業者が偽物に載せられる唯一のURLは、本物のタップから捕らえたもの、つまりそのタップがたまたま運んでいたカウンターの値のまま凍りついたものです。それを再生すると、サーバーはすでに見たことのある数字を見ることになります。そして本物のチップのカウンターは前へ進む一方なので、同じ値や後戻りした値は、その再生を暴いてしまいます。新しくて、より大きなカウンターを、なおかつ検証を通る署名とともに送るには、鍵が必要です。そして鍵を手に入れるには、AESを破るか、チップを物理的に開けて中身を取り出すしかありません。偽物のハンドバッグのために、そのどちらかが起きることはありません。

これが、あのマーケティング文句の正直な言い換えです。チップは製品のコピーを不可能にするわけではありません。真正性の証明のコピーを不可能にし、その証明を、偽造業者には再現できないものの上へと移すのです。

NFC.coolがタグの本物かどうかを検証する仕組み

タグを理解してしまうと、私はアプリに、ただ16進数のダンプを表示するだけでなく、一連の処理をきちんとやってほしくなりました。そこでNFC.cool Toolsは、iPhoneAndroidで、NTAG 424 DNAを完全に扱えるようになりました。真正性を独立した2つの方法で確かめ、さらにそのために作られたタグでは、3つ目の物理的な方法でも確かめます。

チップの出所。 本物のNXPチップはどれも、自分自身のIDに対する工場出荷時の署名を、NXPの秘密鍵で署名した状態で持っています。NFC.coolはその署名を読み取り、NXPの公開鍵に照らして、スマホ上でそのまま検証します。問題がなければ、シンプルに「本物のNXP」という結果が出ます。これには設定も、あなたからの鍵も要りません。「これは本物のNXPのシリコンなのか、それとも名もなきクローンなのか」に答えるものです。

タップそのもの。 これがSUNのチェックです。NFC.coolはpicc_dataを復号し、タグIDとタップカウンターを取り出し、署名を計算し直して、タグが送ってきたcmacと比べます。一致すれば、そのタップは本物かつ新鮮であり、「認証済み」と表示されます。こちらはより多くのことを証明する分、より多くを求めます。タグの鍵が必要なのです。工場出荷時のデフォルトのままの新品のタグなら、何も入力せずに検証できます。誰かが自分の鍵でロックしたタグは、その鍵を保存している場合にかぎり、認証済みとして検証されます。

物理的な封印。これに対応して作られたタグの場合。 このタグの一種であるNTAG 424 DNA TagTamperは、開封の痕跡が残る封印になるよう作られています。細い追加の配線が通ったステッカーで、守りたいものをまたぐように貼ります。箱のフラップの上や、ボトルのキャップのまわりに、といった具合です。いまの「破ると保証無効」ステッカーと同じ役目です。中身を開ければステッカーが破れ、配線が切れます。NFC.coolはタップのときにその配線を確かめ、封印がまだ無事なのか、それとも破られたのかを、はっきりと教えてくれます。うまくできているのは、それが一方向のラッチだという点です。一度切れると、チップは永遠に覚えています。だから、一度開けられたあとに丁寧に貼り直されたものでも、開封済みとして読み取られます。暗号はチップが本物であることを証明し、こちらは誰も箱の中に手を入れていないことを証明します。

これらすべてが、誰にとっても無料です。タグを読み取ること、リンク、タップカウンター、ファイル構成、封印がまだ無事かどうか、そして2つの暗号チェックを実行すること、そのどれにも費用はかかりません。「これは本物なのか」という問いに、タグをかざした人なら誰でも答えを出せるようにしたかったのです。

自分だけのセキュアなタグを書き込む

読み取りは半分にすぎません。もう半分は、AliExpressで買ったあの空のタグを、あなた自身が書き込めるということです。NFC.coolはそれを、きちんと認証された暗号化チャネルを通じて行います。チップが要求するのと同じセキュアメッセージングであって、うまくいくことを祈るだけの生の書き込みではありません。

簡単なやり方なら、3ステップで済みます。自分のリンクを書き込む。これは無料です。SUNをオンにして、タグがすべてのタップに署名し始めるようにする。そして工場出荷時の鍵を、自分の鍵に置き換える。パスフレーズとして設定するので、32文字の16進数の文字列と格闘する必要はなく、キーチェーンに保存されます。その時点から、タグはあなたに固定されます。かざした人には誰にでも本物だと証明し続けますが、書き換えられるのはあなただけになります。

私はそこで止めることもできました。これらのタグに近づく数少ないアプリは、そこで止めています。私は止めませんでした。

iPhoneやAndroidからNTAG 424 DNAチップのすべてを設定する

これらのタグと過ごした夜更かし続きの一週間のどこかで、私はある決断をしました。NFC.cool Toolsは、NTAG 424 DNAの仕様の100%をカバーする。どの「かざして検証」チュートリアルも止まってしまう、デモ向けのほんの一部ではなく、です。これを世界一のNFCアプリにしたいのなら、「NTAG 424 DNAに対応しています」が、こっそり「簡単だった一つの鍵と一つのモードに対応しています」を意味するわけにはいきません。だから私はデータシートをたどり、残りを作り込みました。

NTAG 424 DNAチップの鍵は一つではありません。五つあります。NFC.coolはいまや、そのすべてを管理します。どのスロットも変更でき、工場出荷時にリセットでき、あるいは別の端末で設定した鍵を入力して、このスマホでもタグを操作できるようにできます。SUNも、あの主鍵で署名しなければならないわけではありません。タップの暗号化を一つの鍵に、その署名を別の鍵に向けることができ、タグがIDを平文のまま映すのか、暗号化したまま保つのかも決められます。

チップ上のすべてのファイルは、それぞれ独自のアクセスルールを持っていて、いまはそれを編集できます。誰がファイルを読めるのか、誰が書き込めるのか、誰がその設定を変えられるのか。それぞれを特定の鍵に設定することも、全開放にすることも、永久に閉じることもできます。ファイルの下にはチップ自身の設定があり、それもここにあります。ランダムIDをオンにして、タグがすれ違うすべてのリーダーに同じシリアル番号を送り続けるのをやめさせたり(これは本物のプライバシーの利点です)、自らをロックするまでに何回の解錠失敗を許すかを制限したり、そしてほとんどの人が決して触る必要のない、いくつかの下位レベルのスイッチもあります。

チップは、小さなプライベートな金庫まで持っています。あなたのKey 0でロックされた暗号化ファイルがあり、サーバー上に置かれる代わりに、タグそのものに載って移動します。小さな秘密をそこにしまっておけば、誰かのデータベースの上ではなくタグとともに旅する何かとして持ち歩けて、それを読み戻せるのはあなたの鍵だけです。NFC.coolがあなたのために、それを書き込み、読み取ります。

もしこれを以前やったことがあるなら、机の上でやったはずです。NXPはTagXplorerというWindows用のツールを配っていて、USBリーダーをパソコンに挿し、そこからチップの設定をクリックして進めていきます。NFC.coolは同じことをすべて行いますが、耐え忍ぶためではなく、使われるために作られています。TagXplorerが生の16進数と難解なフィールドで埋め尽くされたデスクトップであるのに対し、NFC.coolは、すでにあなたのポケットにあるスマホ上の、平易な言葉で書かれた画面です。生の鍵の代わりにパスフレーズがあり、取り返しのつかないことの前には警告があります。スマホをタグに1、2秒当てるだけで、その一切を操作できます。

NTAG 424 DNAのLRPモードとは何か、そして取り消せない変更

そして、LRPがあります。最初のバージョンの設計メモには、「LRPモード」のすぐ隣に、こう書いていました。「対応予定なし。風変わりで、消費者向けアプリには不要」と。LRPはLeakage-Resilient Primitiveの略で、これはタグの、本当に偏執的なほど用心深いモードです。ふだんチップは、ありふれたAESで鍵を守っていて、鍵を盗むにはAESそのものを破らなければなりません。ところが、もっとずるい攻め方があります。チップを作業台に載せ、暗号処理を走らせている間の、電力消費のかすかなふらつきや電磁的なうなりを観察するのです。そうしたトレースが十分に集まれば、数式には一切手を触れずに、その漏れだけから秘密鍵を再構成できてしまいます。LRPは、その漏れに手がかりを一切与えないよう設計し直された、セキュアなチャネルです。ワインボトルに貼るステッカーには本当にやりすぎで、だからこそほとんどのタグはそれをオンにせず、ほとんどのツールはそれを話せるようにもなりません。それでも私の頭から離れず、そして「仕様全体をカバーする」には「難しいところを除いて」という脚注は付いてこないので、私はそれを作りました。NFC.coolはいまLRPを話せます。つまり、取り消せない一方向のスイッチで、タグがひとたびそのモードに切り替えられたあとでも、アプリはそれに対して認証し、他のどんなタグとも同じように管理できるのです。ここまで踏み込む他のスマホアプリを、私は知りません。

危ういところについても率直に言っておきます。いまはそれが増えているからです。これらのコマンドの多くは永続的です。LRPを有効にすることは取り消せません。ランダムIDをオンにすることも取り消せません。ファイルの「変更」権限を「不可」に設定すれば、そのファイルはタグの一生のあいだ凍結されます。間違った鍵は、スロットを永久にロックしかねません。アプリはその瞬間にはっきりと声を上げます。本当に取り返しのつかない操作については、正確な結果を明記した警告を通じて確認を求めます。とはいえ、ここでも言っておく価値があります。大事なタグに触れる前に、予備で練習してください。

偽造防止NFCタグが実際に使われる場所

正直なところ?NFCタグをかざすほとんどの人は、こんなものは何一つ必要としませんし、それでいいのです。リンクを開くステッカーは、すばらしくて、退屈で、役に立つものです。

けれども、これを一枚でも手にしてしまえば、使い道は明らかです。高級バッグは、自分が本物だと証明できます。ワインやウイスキーのボトルは、こっそり栓を抜かれて安物で継ぎ足されたことが一度もないと示せます。その半分は開封防止の封印が担います。薬の箱は、中身が本物の薬であることと、誰も封を破っていないことの両方を保証します。限定生産の製品やアートは、誰にも偽造できない証明書を手にし、イベントのチケットは、スクリーンショットを撮って回し配りできるものではなくなります。ドアのそばや棚の上にタグを置けば、タップは、誰かがソファから保存したリンクを再生したのではなく、実際にそこに立ったことを証明します。スニーカーやトレーディングカードは、それが出来のいい偽物ではなく本物の商品だと証明します。そしてどんな個人の作り手も、自分の作品が自分の作品だと証明できるようにできます。これは、EUデジタル製品パスポートが規制の側から回り込んでいるのと同じ真正性の問題を、一つひとつの物のレベルで解いたものです。

私がこれを作ったのは、千人のユーザーが求めたからではありません。好奇心からインターネットで変わったタグを買い、その仕組みを解き明かし、そうしてデータシートの一ページも残さずめくらずにはいられなくなったから作ったのです。たいてい、良い機能はそうやって生まれます。

NTAG 424 DNAタグの結論

NTAG 424 DNAタグは、NFCが持つものの中で、改ざん不可能な封印にいちばん近いものです。誰かが製品をコピーするのを止めることはできませんが、製品の本物であることの証明を偽造不可能にします。その証明が、本物のチップだけが作り出せる、その都度新しい暗号署名だからです。

NFC.cool Toolsはいまや、それらを読み取り、チップ、タップ、そして開封防止の封印を無料で検証し、そしてチップのすべてをあなたの手に委ねて設定させます。すべての鍵、すべてのファイルの権限、その最下層の設定、LRPまで。あなた自身のタグを、スマホからそのまま用意できます。タップがどうやって本物と偽物を見分けられるのか気になったことがあるなら、iPhoneAndroidで手に入れ、こういったタグを数ユーロで何枚か注文して、自分でかざしてみてください。なかなか良い沼ですよ。