セキュリティを楽しく学ぶ、触れる。セキュリティごった煮ブログ

ネットエージェント
セキュリティごった煮ブログ

 コース:こってり

NFCのセキュリティの話

ν (ニュー)

IC乗車券や電子マネーを支えている技術として、NFCがあります。
NFCに対応したカード等を利用している際に「安全性はどうなんだろう?」と思ったことはありませんか。

ということで今回は、NFCのセキュリティの話です。

NFCとは

NFC(Near Field Communication、近距離無線通信)とは、極短距離(数cm程度)の範囲における無線通信技術のことです。
一般的にはかざして通信するカード等を指し、以下のような分野に応用されています。

  • IC乗車券
  • 電子マネー
  • 電子錠・入退室管理

NFCの詳しい定義に関してはFeliCa「NFCの定義」のページを参照してください。

NFCのカード規格

NFCでは主に3種類のカード規格(TypeA、TypeB、TypeF)が存在します。
日本ではTypeFのカードが一般的ですが、世界的にはTypeAのカードが一般的です。

  TypeA TypeB TypeF
規格 ISO/IEC 14443
ISO/IEC 18092
ISO/IEC 14443 ISO/IEC 18092
主導 NXP モトローラ ソニー
名称 MIFARE - FeliCa
使用例 成人識別ICカード ICカード免許証 サイバネ規格ICカード

カード固有のID

各カードには固有のIDが振られており、複数枚重ねてかざされた際の対象カードの選択等に利用されます。
固有IDはNFC TypeAではUID、TypeFではIDmと呼ばれています。
NFC TypeBで固有IDに近いものとしてPUPI(Pseudo-Unique PICC Identifier)がありますが、カードがかざされるたびにランダムに生成されるため完全に同一のものではありません。

カード固有のIDは、NFC TagInfoのようなアプリケーションを利用することで調べることができます。

カード固有IDの例(MIFARE:7BB95DB3

カード固有IDの例(FeliCa:012E3D14490DBF5A

カード固有のIDのみの認証の危険性

もしNFCを電子錠に使うとしたら、どのように認証するのが正しいのでしょうか?
カード固有のIDを使って認証すれば良いと思うかもしれませんが、これは危険なことです。
なぜならば、カード固有のIDは偽造することができるためです。

NFCのリーダライタは一定間隔でポーリングという、通信可能範囲内にカードがあるか調べる動作を行っています。
カード固有のIDはポーリングに対する応答に平文で含まれています。そのため、偽造が可能なのです。

偽造には、カードとして振舞うモードに設定できるリーダライタを使用します。
このような装置は高価な専門機器ではないかと思わるかもしれませんが、一般に入手可能なリーダライタの一部でも設定可能です。
実際に、一般に入手可能なリーダライタを使用して偽造したID(CAFEBABEFEEDFEED)を読み込ませている様子が以下の写真になります。

安全に認証を行うには

カード固有のIDのみを使用して認証を行うのは危険であり、偽造のリスクがあることを示しました。
このリスクへの対策として、以下のような方法が挙げられます。

いずれの方法でも秘密にするべき鍵などが存在するため、それらの情報の管理には注意が必要です。

メルマガ読者募集 セキュリティを学ぶ

月別