艦これ

NFC搭載Android端末について(Mifareとして読み取り可能?)

仕事で、これが原因で面倒なことになったので覚書。
※あんまり深くは書けない。まだまだ知識が浅いので・・・。

NFC搭載の携帯端末は今まで「FeliCa」としてのみ読取り可能だったが、
去年から「TypeA(Mifare)」としても読取り可能な端末が出てきたらしい。

おサイフケータイの方式が増えた。

NFC対応携帯端末に搭載されている「おサイフケータイ」の決済サービスには
FeliCa」と「TypeA/TypeB」という2種類の方式が存在する。

「FeliCaってなに?TypeA?TypeB?」って人まずググって下さい。
まぁ、そんな人はこのページ来ることはないだろうけど・・・。

とりあえずチョーざっくりと説明。

FeliCaとは?

・Sonyが作った非接触型ICカードの規格。
・日本では「SuiCa」に代表され、「nanaco」や「Edy」もその一つ。
・日本でのシェアが強いが、世界基準で見れば「Mifare」には敵わない。

Type A とは?

・TypeAはNXP作った非接触型ICカードの規格。主に「Mifare」と呼ばれる。
・「TypeA = Mifare」と思っていて支障はないが、微妙に違う。
・日本では「tasupo」や社員カード(?)みたいなもので使うことが多い。
・日本ではまだまだ馴染みが薄いが、世界的にはトップシェア。

Type B とは?

・Motorola社が開発した非接触型ICカードの規格。
・日本では「住民基本台帳カード」や「免許書」がこれになる。
・Aとの違いは通信速度の違いぐらいらしい・・・(これはあまり接点がない)。

※以後、TypeA・TypeBは「Mifare」として表記。

何がどうなった?

今まで(2013年度上期まで?)は日本では基本的に「FeliCa」方式を
採用したNFC対応携帯端末が支流となっていたが2013年度から
NTT docomoが海外でもおサイフケータイを使用できるように
するために、「TypeA/TypeB」方式を採用してきた。
参考URL:https://www.nttdocomo.co.jp/info/notice/page/130222_00.html

・・・で、それが何?

基本的にこの部分に関しては、ユーザー側は全く意識する必要ない。
「海外でもおサイフケータイ使えるの!やった~(・∀・)!」って
思っていればそれでいい。

ただ、その携帯端末側を読み取って何かしらの処理をする
リーダー/ライター(以下:R/W)を作っている側はそうも行かない。

問題点は?

「FeliCaもMifareもどっちも読み取り可能です!」というR/Wの場合。
今までは「FeliCa」としてしか反応しなかった携帯が「Mifare」としても
捉えることが可能になったということ。

つまり、しっかりとした識別処理をしていなければNFC対応携帯を
2つのICカード(FeliCa or Mifare)として判断してしまう。

システム的にどちらか片方だけに使える。
というのであれば問題はないが、両方OKの場合。
面倒なことになる可能性がある。

そして、Android側も(゚∀゚)!

Android 4.4 (KitKat)からNFCの機能に対し新機能が搭載される。
以下、「Android Developers Host-based Card Emulation」からの
直訳抜粋によるもの。詳細は公式サイトへGo。

NFC ホストベースカードエミュレーション(以下:HCE)

・ Android端末を「ISO14443A(TypeA)」としてR/Wに認識を可能にする。
・「ISO14443A 106kbps」のポーリング(カードを読み取る処理)で認識可能。
・ 認識された端末のUIDは全てランダムな値となる。
・ HCEの応答だと判断するにはSEL_REQで判断することが可能。

HCEからの応答だと判断する方法

上記にも記載はしているが、判断方法としてはカード読み取りの際の
識別タグ(SEL_RES)で判断する。尚、カードの種類(SENS_RES)は
「Mifare 1K」として応答があるので、SENS_RESだけではHCEを
判別は出来ないみたいです。

詳細はNXP発行「MIFARE Type Identification Procedure」の
P10 3.2 Coding of Select Acnowledge(SAK)の表を見るとわかりやすい。

個人的に色々試してみた結果

試しに、私が持っている「Xperia Z1」(Android 4.2.2 / docomo)が
Mifareとして読み取り可能かどうか、手持ちのR/Wで確認してみた所
ランダムなUIDの読取りに成功した。(NFCのON/OFFの関係なし。)

SIMカード(ピンク)を抜くと読み取れないことから、
Mifareとしての応答はSIMカードからだとわかる。
まぁ、Androidのバージョンがまだ4.2だし当たり前だけど。

で、結局の所。

今回の件は、多分俺の知識不足。
というか、「何を今更?」ってぐらいのもの
なんだろうなぁ・・・(´・ω・`;)

まったくこの業界は変化が多すぎて
バカはついていくのがやっとですよ・・・。

  • この記事を書いた人

白夜霧

現役のIT土方・社畜・カフェイン中毒者。趣味のために生きる。サラリーマンの雑記ブログ。さり気なくYouTuberデビューしました\(^o^)/

-艦これ
-

© 2024 My,WebNote - 備忘録 -