- モントリオールMétroの使い捨て紙製乗車券は、見た目とは異なり NFCタグ として動作し、内部のMIFARE Ultralight EV1チップと金属箔アンテナが改札機と通信する
- 改札機リーダーが作る 磁界 が乗車券に電力を供給し、同時にデータをやり取りすることで、チケットの検証はまばたきよりも速い35ms以内に完了する
- このチップは48バイトまたは108バイトのユーザーEEPROMを備える低価格構成で、暗号化機能はないが、7バイトUID、UID署名、メモリロック、24ビット単方向カウンタを備える
- 内部はRFインターフェース、EEPROM、チャージポンプ、標準セルベースのデジタルロジックで構成されており、約180nmプロセス、約8,000ゲート・45,000トランジスタ規模と推定される
- ウェハ単位での販売と超小型ダイのおかげで、チップ価格は1個あたり約 9セント まで下がり、アンテナシートや印刷コストを加えても使い捨て乗車券に組み込める
紙の乗車券の中にあるNFC構造
- モントリオールMétroの紙製乗車券は、改札機にかざすと通れる NFCタグ として動作する
- 表面右側の金色の模様は、クレジットカードのEMVチップ接点のように見えるが、実際の接点ではなくインクで印刷された偽の模様である
- 実際の回路は紙の内側にある薄い プラスチックシート に入っている
- 金属箔層がコイル状アンテナを形成している
- 小さな黒い点のように見えるNFCチップがアンテナ配線の両端に接続されている
- 左上の斜めの金属ストライプは、2次元シート上で渦巻き状アンテナ回路を完成させるブリッジの役割を果たす
- チップサイズは 570µm × 485µm で塩の粒ほどしかなく、厚さは75µmまたは120µmのため乗車券の中で触っても分からない
バッテリーなしで35ms以内に検証される仕組み
- NFCは、リーダーとタグが短距離で 磁界 を使ってデータをやり取りする方式である
- 改札機リーダーが作る磁界は、タグに電力を供給しながら同時にデータも送る
- リーダーとタグはどちらもコイル状アンテナを持っており、近づくと変圧器の巻線のように 誘導結合 によって信号をやり取りする
- 乗車券を改札機にかざすと、NFC通信は 35ms 以内に完了し、これはまばたきより速い
- タグが有効なチケットデータを提示すれば地下鉄に入場できる
MIFARE Ultralight EV1の機能とセキュリティ
- 乗車券に入っているチップはNXPの MIFARE Ultralight EV1 で、使い捨てチケット用途の低価格チップである
- 基本的な役割は、リーダーにデータブロックを提供することにある
- データは小さなEEPROMに保存される
- あるバージョンは48バイトのユーザーメモリを提供する
- 別のバージョンは108バイトのユーザーメモリを提供する
- Ultralightチップには、より高機能なチップにある暗号化サポートはない
- QRコードやバーコードが印刷された公演チケットと比べても、セキュリティ水準は大きく変わらない
- 同一チケットの重複使用を防ぎ、データを検証する責任はリーダーとバックエンドシステム側にある
- 印刷チケットより優れている機能もある
- 製造時に固有の 7バイトUID が書き込まれる
- UIDには署名が付けられ、偽のUID生成を防ぐ
- UID署名はECCアルゴリズムで作られるが、チップ自体が暗号演算を行うわけではなく、製造時に記録された署名バイトを提供する
- パスワード保護されたメモリアクセスとメモリページロックをサポートする
- パスワードは暗号化なしで送信されるため、セキュリティは弱い
- 3つの 24ビット単方向カウンタ は、利用回数制限のような機能に活用できる
- カウンタは増加のみ可能で、減少はできない
- カウンタは更新中にカードを離しても部分更新を避けるためのanti-tearing機能を備える
チップを取り出して撮影した手順
- チップを撮影するには、紙製乗車券からアンテナ付きのプラスチックシートを取り出した後、シリコンダイだけを残す必要がある
- 処理は複数の段階で進められる
- 乗車券を水に浸して紙を柔らかくしたあと削り取り、プラスチックコアを露出させる
- チップを含む小さなプラスチック片を切り取り、約30秒間沸騰した硫酸に入れてプラスチックと接着剤を除去する
- 表面保護層であるパッシベーションは窒化ケイ素とPSGからなる厚さ1.1µmの層で、これを沸騰したリン酸で除去する
- Armour Etchと塩酸による処理を繰り返して酸化膜と金属層を除去する
- 金属層とポリシリコンを除去すると シリコン構造 が現れる
- ドープされたシリコン領域はトランジスタを示す
- 白い長方形はコンデンサである
- コンデンサはアンテナとの共振周波数を合わせ、電源をフィルタし、チャージポンプで電圧を上げるために使われる
- チップは非常に小さいため、処理中に紛失する危険が大きい
- チップに触れたり息を吹きかけたりするだけで飛んでしまうことがある
- ピンセットでつまむ際に弾かれて見失うこともある
- 処理工程と顕微鏡スライドの間を移動させるときは、水滴に入れてピペットで移す方法が最も安全だった
内部ブロック: RF、デジタルロジック、EEPROM
- チップ左側にはアンテナに接続される RFインターフェース がある
- 高周波信号をデジタルデータに変換する
- アンテナ信号から電力を取り出してチップを駆動する
- チップの大部分は、リーダーから受け取れる18個のコマンドを処理する デジタルロジック が占めている
Wake-up, Halt コマンドはチップ状態を制御する
Read, Write コマンドはEEPROMストレージにアクセスする
Read_Cnt, Incr_Cnt コマンドはカウンタにアクセスする
- 複数のカードが同時にリーダーに提示された場合でも、anticollision機能により衝突せずに読み取れる
- 衝突が検出されると、リーダーは標準NFCアルゴリズムで識別番号に基づいてカードを1枚ずつ選択する
- このアルゴリズムはチップコマンド4個を使用する
- EEPROMは電源がなくてもデータを保持する
- データ保持期間は10年を想定して設計されている
- EEPROM書き込みには、チップの他の部分より高い電圧が必要となる
- EEPROMインターフェース回路が必要な信号を生成する
- ダイ上で見える主なブロックは次のとおり
- 上部のEEPROM記憶セルアレイ
- EEPROM右側の チャージポンプ
- EEPROMとデジタルロジックの間にあるEEPROMインターフェース
- 4つのボンディングパッドはアンテナ接続点で、必要であれば並列アンテナ2本にも対応できる
- アナログ回路の一部については識別が確定していない
- 大きな楕円形構造は、負荷を変えてリーダーへデータを返すためのRFトランジスタかもしれない
- あるいはチップ電圧を調整するツェナーダイオードかもしれない
- 下側の構造は、アンテナ信号を整流してチップ電源を作るRFダイオードである可能性がある
タグがデータを返す負荷変調
- タグは送信機をオンにする代わりに、負荷変調(load modulation) によってデータをリーダーへ返す
- アンテナ両端の負荷を変えると、リーダー側で吸収されるエネルギーがわずかに変化する
- リーダーは自身の送信アンテナ電圧の変化としてこの差を検出する
- 負荷変調信号は送信信号より80dB弱いが、リーダーはこれを検出してデータビットを取り出せる
- 動作周波数はいくつかの段階に分かれている
- リーダーは 13.56MHz の搬送波で送信する
- タグは848kHzで負荷をオン・オフし、これは搬送波の1/16に当たる
- ビット転送は106kbit/sで行われ、これは変調周波数の1/8である
- NFCタグの負荷は抵抗またはコンデンサになりうる
- 抵抗は信号を直接吸収する
- コンデンサはアンテナの共振周波数を変え、タグに伝わる信号量を調整する
- ダイにはコンデンサが多く、大きな抵抗は見えないため、このチップはコンデンサを負荷として使っていると推定される
製造プロセスと標準セルロジック
- ダイ拡大写真のドープ済みシリコン領域とMOSトランジスタのゲート幅を基準にすると、チップのフィーチャサイズは約 180nm と推定される
- 180nmプロセスは1990年代後半に広く使われており、MIFARE Ultralight EV1が2012年10月に発売された当時でも、最新の22nmに比べて古いプロセスだった
- 古いプロセスは、このチップの特性とコスト構造に適している
- チップ面積のかなりの部分をアナログ回路と4つのボンディングパッドが占めるため、デジタルロジックを縮小しても全体面積は大きく減らない
- これ以上小さいチップはアンテナに取り付けるうえで実用的に難しい
- 使い捨ての低価格市場向けチップなので、可能な限り安く製造する必要がある
- より新しいプロセスならウェハあたりのチップ数は増やせるが、ウェハ製造コストも上がる
- デジタル回路は 標準セルロジック で実装されている
- NANDゲートやフリップフロップなどの標準セルライブラリから始める
- セルは固定高さで設計され、行単位で配置される
- セル上の金属配線で目的の回路を構成する
- 完全カスタムレイアウトより密度や効率は劣るが、設計は速く安い
- チップはCMOSロジックを使う
- 各論理ゲートはNMOSとPMOSトランジスタで構成される
- 製造を簡素化するため、NMOSとPMOSは別々の行に配置される
- PMOSトランジスタのほうが大きいため、写真でも見分けられる
- ロジック領域は約 8,000ゲート、約45,000トランジスタと推定される
- この規模は、単純な8051のようなマイクロコントローラをようやく載せられる程度である
- マイクロコントローラがあるならソフトウェア保存領域も必要になる
- プロトコルが単純でトランジスタ数も少ないため、マイクロコントローラより状態機械とカウンタ中心のハードウェア実装である可能性が高い
EEPROMと電圧昇圧回路
- チップのデータは、フラッシュメモリに似た EEPROM に保存される
- 部品番号に応じて640ビットまたは1312ビットのEEPROMを提供する
- 2つのバージョンは同じEEPROM実装を共有し、安価なバージョンでは利用可能容量を制限しているように見える
- ダイ写真のEEPROMは64×64格子のように見え、4Kビット ストレージのように見える
- 表示容量より大きく見える理由は確定していない
- セル構造によって容量を誤って数えている可能性がある
- 単方向カウンタやUID署名のように、EEPROMメモリマップに含まれないデータが保存されている可能性がある
- チップにマイクロコントローラがあるなら、追加EEPROM領域がコード保存に使われている可能性もある
- EEPROMはビット保存のために10〜20Vの比較的高い電圧を必要とする
- この電圧は、コンデンサを高周波でスイッチングする チャージポンプ 回路が生成する
- EEPROM右側にある大きなコンデンサ群の回路がチャージポンプと推定される
使い捨て乗車券を可能にするコスト構造
- NFCチップを使い捨て乗車券に入れられるのは、チップを非常に安く作れるためである
- 価格を下げるため、チップはパッケージ部品ではなく ウェハ単位 で販売され、その後チケットに実装される
- Digikeyでは8インチシリコンウェハを9,000ドルで購入できる
- ウェハ1枚から100,587個のチップが得られる
- 1個あたりの価格は約9セントである
- データシートによれば、潜在的な良品ダイはウェハあたり103,682個である
- 実際の歩留まりは97%で、ウェハにはどのダイが良品かを示すファイルが付属する
- 一般的なチップ製造では不良ダイにインク点を打つが、このチップは各ダイがインク点より小さいため、その方法は適していない
- より多くのチップが必要なら、12インチウェハを19,000ドルで購入できる
- 12インチウェハでは215,712個のチップが得られる
- チケットメーカーは各チップをアンテナシートに実装した後、チケットを印刷する
- この工程で数セント上乗せされるが、結果として一度使って捨てられる低価格乗車券になる
OccasionalカードとOpusカードの違い
- 分析対象はモントリオールのOccasionalカード、L’Occasionnelle である
- 1回の乗車、または最長3日間利用できる
- チャージ式ではなく、使用後に廃棄する
- 長期利用には Opus カードが使われる
- 紙ではなくプラスチックカードである
- より長く使用できる
- Calypso標準を実装し、より高いセキュリティを提供する
- CalypsoはAES、DES、ECCなどの暗号化を使い、より大きなEEPROMストレージを提供する
- Opusカード内部チップの種類と製造元は分析されていない
1件のコメント
Hacker Newsのコメント
実際にはかなり似ています。物理通信層は違いますが、上位プロトコル層はほぼ同じです
接触式スマートカードはISO 7816に従い、MIFAREの非接触カードはISO 14443 Type Aで、プロトコルはISO 7816-4に従います
接触式スマートカードのエコシステムが、ホストソフトウェア、リーダー、カード内部ロジックを最小限の変更で非接触カードまで対応させたいと考えていたことを思えば、驚くことではありません。クレジットカード、銀行カード、FIDOデバイスのように、同じデバイスが接触式と非接触式の両方をサポートする例も多くあります
WiFiと有線Ethernetの関係に似ています。物理層は大きく違いますが、論理的には互換性があり、同じソフトウェアがどちらにも対応します
当時広く使われていた紙の請求書を支払えるもので、最初のUIはラベルと入力欄がある普通のHTMLテーブルでした。紙の請求書画像を背景に敷き、実際に数字が書かれている位置に入力欄を置く試作品を作ってみました
ユーザーは郵送で受け取った紙の請求書を横に置き、画面上に紙と1対1で対応するコピーを作るように数字を入力すればよい仕組みでした。どの数字をどこに入れればよいのか、誰にでも簡単に理解できました
反応はすぐに現れ、すべてのフォームがこの原則に従うようになり、すべての銀行アプリがこれを実装し、今でも使われています
MIFARE Ultralightは実際には14443-4/7816/スマートカード式APDUを実装していません。ICの性能がずっと低く、はるかに単純です
さらにややこしいのは、一部のMIFARE ICは本当にISO 14443-4を実装している点です。たとえば固定機能型のMIFARE DESFireカードや、SmartMXのようなプログラム可能なスマートカードICがそうですが、すべてがそうというわけではありません
QRコードのほうがチケット媒体としてはよさそうに見えます
このカードは約100バイトですが、QRコードなら2KB以上格納できます
これは安価なプラスチック基板の上にインクで印刷したものですが、QRコードは単なるインクです。望めば、さらに安価な印刷工程も可能です
この方式では、今後数十年にわたって特定のチケット技術ベンダーに依存しなければなりません。QRコードは画面に表示することも紙に印刷することもでき、モバイルアプリから紙の種類、物理プリンターやリーダー機器に至るまで、すべての構成要素のベンダーを自由に変更できます。公共交通のチケットのように数十年単位で運用される領域では、この柔軟性を過小評価すべきではありません
代替チケットの発行も、この方式では現物の受け取りが必要ですが、QRコードならメール、WhatsApp、スクリーンショット、写真で送ることができ、望めば紙のQRコードを交換することもできます
このRFIDリーダーは安価で耐久性があります。QRコード用の光学リーダーもほぼ同じくらい安価で頑丈にできますが、完全に同じではないので、この点だけはRFIDが僅差で勝っています
QRコードの問題は4つあります。印刷されたものはコピーでき、動的QRコードもスクリーンショットが可能で、定義上読み取り専用であり、リーダーが遅く、ユーザーが向きをうまく合わせる必要があります
NFCは読み書きが可能で、約10cmの範囲を持ち、大きなカードなら最大4KBのデータを格納できます。Ultralightは1回券の代替になり、出口で回収される磁気式チケットのように再利用することもできます
世界で最も混雑する鉄道駅でこの種のシステムを大規模にうまく動かすために、何十年もの研究開発が行われましたが、QRコードは要件を満たしませんでした。初期の研究開発の一端はhttps://www.jreast.co.jp/e/development/tech/pdf_6/tec-06-40-...で見ることができ、こうしたシステムが満たすべき技術要件を扱っています
Montrealのことは分かりませんが、Moscowの公共交通も似た紙チケットを使っており、やはりMIFARE Ultralightで、複数回分として購入できます。チケットを使うと、改札機や検札機が一方向カウンターを増やし、次の機器が残り回数を分かるようにします
QRコードでは、リーダーやユーザー端末が中央サーバーに継続的にインターネット接続してすべてのチケット状態を追跡しない限り、このようなことは不可能で、それは現実的ではありません
チケット検証にインターネット接続を使わず、チケット自体を使用済み状態に更新します
はるかにレジリエントな方式だと言いたいところですが、運賃を徴収できていないバスをあまりに多く見てきたので、本当にそうなのかは確信が持てません
それ以外のあらゆる面では、非接触ICのほうが強力です。書き換え可能なので再利用チケットが可能で、チャレンジレスポンス認証をサポートできるため安全なオフライン利用が可能になり、その結果ゲートでの取引が速くなります。体感としても、スキャンはずっとシビアではありません
興味深い。最近ヨーロッパでこういうチケットを初めて使ったのですが、NFCチップが入っている可能性を思いつかず、どうスキャンすればいいのか分からなくて苦労しました。
一方で、まったく技術系の人ではない妻は、当然タップするものだと思って、すぐ直感的に理解していました。
誰も使い方を見せてくれなければ、おそらくどこかに差し込む方法を探していたと思います。妻はこういうものや小さな道具をまったく苦にしません。
IKEAも同じで、いつも説明書に頼ってその通りに進め、説明書で一段階でも抜けていると非常にイライラします。
最近知ったのですが、印刷業者に100ドルくらい払えばカスタムNFCカードを作ってくれます。数百万枚規模の長期契約を結んだ大手交通機関である必要も、カスタムJavaCard NFCアプリを別途開発する必要もありません。
これを使って友人のバーのQRコード会員カードをNFCカード版に置き換えたのですが、財布に入れておくと、ほかのバーのふにゃふにゃした紙のスタンプカードよりずっと格好よく見えます。
理論上は、カードのエンコードから印刷までを一か所で全部処理でき、カスタム情報も入れられます。
家や車の周辺で場所タップの自動化に使えます。NFCタグをタップすると、スマートフォンがローカル動作用のカスタムショートカットや、Linux SBC/マイクロPCへ向かうSSHスクリプトを実行できます。応答時間は約1秒で、iPhone SE2にもNFCリーダーがあります。
視覚障害者向けにNFCタグを物に貼っておき、スマートフォンをその物にタップすると音声説明を読み上げるようにもできます。
NFCチップに関する質問は著者が直接受け付けます :-)
旧式の磁気ストライプチケットや光学スキャン/バーコード方式のほうが、製造面ではずっと安いのでしょうか?
磁気ストライプは改札で読み取り失敗率が高くなって問題を起こしそうですし、磁気ストライプも光学スキャンもチケットを機械に挿入する必要があるため、複雑さと可動部品が増えそうです。
ウェハー上のチップは最初はすべて同一のはずですが、工程のどの時点で個別に選択され、固有の性格を与えられるのか気になります。その後、切り離す前の直接電気接触で行うのか、それとも近距離リンクを使うのか知りたいです。
生産工程全体で75µm/120µmウェハーを使っているわけではないはずで、それは文字通り人間の髪の毛ほどの厚さです。200/300mmウェハーがその厚さで自重を支えられるのか、生産工程のすべてのストレスに耐えられるのか気になります。
DESFireやほかのセキュアなNFCチップで複製を防いでいる実際の仕組みが何なのか気になります。
Omny、Clipper、Smartripのような大規模な地下鉄システムは何を使っているのか、AppleやGoogleはデバイス上で一部のNFCプロトコルをよりプログラマブルな形で実装していますが、それがどう動作するのか、クレジットカードで使われているプロトコルと関係があるのかも気になります。
日本で広く使われているFeliCaとはどういう関係なのかも気になります。しばらく前にチップを作っていた工場が火災に遭ってチップ不足が起き、AppleがiPhone NFCで市場に入る隙ができたというニュースがありました。
「Ultralightチップには印刷チケットよりいくつか機能が多い。製造時に固有の7バイト識別コード(UID)が入り、UIDは署名されているため偽のUIDを作れない」という部分で問題なのは、それらも非常に簡単に複製できるという点。普通のFlipper Zeroでも可能
本当のセキュリティが欲しいなら、challenge-response方式にするべき。つまり、すべてのカードが工場で固有の秘密鍵/公開鍵ペアを受け取り、公開鍵は工場が署名する。真偽を確認するとき、端末が任意のnonceを渡すとカードが秘密鍵で署名し、端末は工場の公開鍵で検証する
「チップを落として、顕微鏡下のホコリとチップを見分けなければならなかった」という部分が本当に驚き。人間が扱うのも難しいものを機械がどう製造し、ボンディング工程が動くようにどう一貫して向きを合わせているのか想像がつかない
1回券ならUID署名を検証し、初回使用時に使用済みとしてマークし、その後の使用はすべて拒否すればよい
カードを複製すれば1回は動作する。つまり、誰かが適切な機材を持って通りがかりにチケットを盗み、正当な所有者より先に使える。Flipper Zeroだけでは範囲が短すぎて不十分だが、可能ではある。地下鉄の1回券では大きく心配することではないと思う
回数券のセキュリティを高めるにはローリングコードを使える。チケットがスキャンされUIDが検証されるたびに、NFCメモリから何らかのコードを読み、それが順番と一致していなければならず、次のコードをメモリに書き戻して次回提示させる。こうすれば複製品は無効化される。チケットを盗むことはできるが、サーバー側の暗号を破らない限りシステムには勝てない
通勤定期券のような、より価値のあるチケットにはchallenge-response方式を使えばよい
コンピューターの不正使用、詐欺、その他何でも適用されうる。カメラのある全駅で4ドルのチケット代を節約するためにそんなことをする理由はない
実際のリスクは、誰かが購入後まだ使っていないチケットを複製する場合だが、セキュリティ上の欠陥ではあっても、現実の利用ではごく些細な問題である可能性が高い
1日券では少し問題になるかもしれない。1日券を1枚買って、複製をより安い価格で売ることができる。それでも、より高価なチップを使って防ぐほどの問題ではない可能性が高い
ボンディング工程もそれほど一貫していない。失敗率は3%で、注文を受けるたびに固有の「故障チップ」マップを受け入れなければならない
中にチップが入ったチケットを何百万枚も作るというのは、廃棄物の観点であまりにひどく見えて驚く
理解する限り、使い捨てのようだ
インドのニューデリー地下鉄は以前、このようなチップ入りのプラスチックトークンを使っていたが、旅程が終わって駅を出るにはチップを返却しなければならなかった
最近は印刷QRシステムを使っており、紙すらなくした。モバイルアプリでチケットを買い、UPI即時決済で支払った後、スマートフォンのQRコードをスキャナーに見せれば移動できる
月間定期券の保有者にはRFIDチップベースのカードが発行される
プラスチックのOpusカードも、十分に多く使わなければ、プラスチックとチップの質量基準ではむしろより無駄になりうる。たとえば1回利用は観光客向けであることが多く、その場合フルチップのOpusカードは本当に無駄
人々がコードを正しい向きで表示し、スキャンできるよう明るさを十分に上げるのに時間がかかることが多い。電車に乗らなければならないときに直面したいことではない
1回券とOpusカードの利用比率に関するデータは見つけられなかったが、膨大な量ではないことを願う。定期的に公共交通機関を使う人の大半は、使い捨てチケットを使わないと思う
MIFAREはロンドンのOyster cardで20年間使われてきたし、香港ではそれより前から使われている。もちろんUltralight版ではない。
ただ、Oysterはほとんどの用途で退場しつつある。定期券でないなら、非接触決済、特にスマートフォンのほうがずっと便利で、無駄もはるかに少ない。
サンクトペテルブルクはMIFARE Classicとトークンを使い、モスクワはチャージ式のTroikaカードにMIFARE Classic、使い捨てにMIFARE Ultralightを使っている。ドバイの「nol」カードはMIFARE DESFire、ロサンゼルスの「tap」カードはMIFARE Classic、ロンドンのOysterはMIFARE DESFire EV1だ。実際に手元の交通カードの山をあさって、はっきりしないものはスキャンしてみた。
私が見た中で、MIFAREではなくAndroidでも読み取れないがFlipper Zeroでは読めるものは、ブリュッセルの紙のチケットだけだった。もちろんNFCではないチケットもある。パリのかわいい小さなチケットやNYC MetroCardのように磁気ストライプを使うものだ。
概念的にはMIFAREとかなり似ている。完全オフラインのストアドバリュー型ウォレットを実装した固定機能ICだが、ISO 14443 Aとはほぼすべてのレイヤーで異なるスタックを使っている。ISO 14443 Cになる可能性も計画されていたが、結局そうはならなかった。
いつか、こうしたトレードオフのどれかを選ばなくてよくなることを期待している。
なんてことだ。最後にモントリオールの地下鉄に乗りに行ったとき、この手のチケットを買う列があまりに長くて、結局あきらめた。
直接支払って地下鉄に入る方法はなく、必ずこのチケットのどれかを買わなければならなかった。トロントではクレジットカードをタップして地下鉄に乗れる。
それに、モントリオールのカードが道端のあちこちに捨てられているのも見かける。モントリオールのこのカードシステムは本当にめちゃくちゃに見える。