2013/11/16

[nfc]Type2のカードエミュレーション(PCD)

Proximity Coupling Device。略してPCD。
なんのことやらって感じだが、NFCのR/Wはこう呼ばれている。
NFC Laboの用語集にも書いてあるのよ。

Android4.4のHCEは、Type4のカードエミュレーションらしい(まだ動かせてないので)。
私がよく使っている、RC-S620/SやRC-S370、あるいはNXPのPN533、PN532などでもカードエミュレーションできる。
そこで行っているのは、Type2やType3のカードエミュレーションだ。
先に言っておくと、これは私から見た範囲の話だ。
手近にあるカードが、Type2とType3しかないので、それ以外を調べていないのだ。

 

さて、RC-S620/S・・・というか、RC-S956チップやPN532チップでは、Type2のカードエミュレーションができる。
また、Type3のカードエミュレーションもできる。
「Type2」とおおざっぱに書いたが、実はいくつか細かな製品分岐がある。
それは、NFCID1のサイズだ。
Type2のNFCIDサイズは、Single、Double、Tripleの3種類がある。
それぞれ、4byte、7byte、10byteだ。
NXPのコマンド仕様書は無料でダウンロードできるので見てみると、Cascade、という言葉で説明してある。
まず、基本は4byte。
続きがあるなら、さらに続けて3byte。
まだあるなら、もう3byte。
4+3+3で10byte、というわけだ。

RC-S956, PN532系の場合、カードエミュレーションで実現できるNFCIDは、4byteまでだ。
しかも、先頭1byteが固定なので、実質は3byteが可変。SEL_RESも0x40固定。
ここが、NFCID2が8byteまるまる変更できるのと異なる点だ。
なんでもエミュレーションできるNFCID2に比べ、制約があるのだ。

まあ、そもそもNFCID1が4byteのやつは、すたれている[pdf]。
PCDでNFCID1が7byteとか10byteのって知らないので(私が知らんだけか)、もともと影響が少ない。
少ないというか、Type2の完全なエミュレーションをする機能がRC-S956やPN533にはない、というべきか。

これは私の知っている情報だけなので、企業でNDA契約とかすると、「実はこのオプションがありまして」なんてことはあるのかもしれない(ないと思うけど)。

が、これはあくまで、SONYやNXPのチップを使った場合だ。
自分で13.56MHzの送受信ができる装置を作れば、このあたりは暗号化がかかっているわけでもないので、ソフトだけで簡単に実現できそうだ。
製品のPCDチップがよい点は、NFCの取り決めをだいたいチップが吸収してくれているという点だ。
そんなに通信速度が速いわけでもないので、NFC周波数での送受信と少々の演算パワーさえあれば、このあたりは簡単に偽造できるのだ。
「そんなチップがあるのか?」といわれると知らないのだけど、無線のチップなんてたくさんあるんだから、探せばあるんじゃなかろうかね。

 

だから、だ。
NFCのセキュリティについてはやーやーいわれているのだ。
FeliCaが世界標準にならなかったのも関係ありそうだし、HCEでソフトからカードエミュレーションができるようになったといっても安心できないのも、そういう理由からだ。
しょせん、誰かが読めるように作ったデータは、どうにかすれば他人も読めるはずなのだ。
銀行のパスワードが、定期的に変更する+ワンタイムパスワード、のような形式になってきているのも、パスワードは破られるのが当然という考え方が根底にあるんだと思う。
パスワードの組み合わせが1億通りあります!とかいっても、1発目で当たったら意味ないし。

脱線してしまったが、Type2のNFCIDは、Type3よりもまねしにくい、ということは説明できたんじゃなかろうか。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。