2011/04/19

[nfc]カードエミュレーション

NFCの標準仕様には、3つのモードがあるらしい

  • カードエミュレーションモード
  • リーダ/ライタモード
  • 相互接続モード

出所は見つけられなかったが、ここが一番近そうだ。
タグは受動型で、R/Wからデータを読み書きされる方、みたいなことを書かれている。

つまりNFCデバイスとは、NFCチップ、しかもホストCPUから制御できるような代物を指していることになる。
なんとなく、ICカードも含めているのかと思っていたので、ほほー、と思った。


モバイルFeliCaチップの場合、普通はカードエミュレーションモードで動かしている。
これはまあ、モバイルSuicaなどになっているから、感覚的にわかるであろう。

iアプリの「iCタグリーダ」は、リーダ/ライタモード。
これも、スマートポスターなんかが読み取れるので、わかりやすい。

相互接続モード。
これは英語の方がわかりやすい。peer-to-peer mode。P2P。
NFCチップ同士のデータ交換というところか。
FALPはそうなんだけど、NFC Forumの仕様でやりとりしているわけではない。
どちらかといえば、IrDA、やBluetoothでのやりとりに近い。
NFCはLLCPとなっている。
PHY-MAC-LLC、のLLCP。
ネットワークには詳しくないのだが、とにかくそのあたりだ。


さて、Nexus SにはNXPのPN544が載っている。
これはR/Wモードで動作しているようだ。
調べてはいないが、カードエミュレーションが無効にされているという。
ライブラリを見た感じでは、SWPも使えるようではあった。無効にされているかどうかはしらん。
アプリからは、Android APIでアクセスする。

一方、日本のIS-05などはFeliCaが搭載されている。
もちろん、カードエミュレーションモードで動いている。
アプリからは、FNさんが提供しているライブラリ経由のアクセスになる。
なんというか、おなじみのライブラリだ。

モバイルFeliCaチップは、NFCには対応していないらしい。
なので「カードエミュレーション」と呼んでよいのかどうかわからない。
一方、RC-S620/Sに搭載されているFeiCaチップは、NFCに対応しているようなものだと思う。
(かといって、PN544に近いわけでもないと思う。よく知らないが。)
この人がカードエミュレーションできるのは、前回書いた。

カードエミュレーションするとき、まずUIDが必要だ。
どうやるかというと、コマンドのパラメータに、Type-A、Type-B、FeliCaのUIDをすべて指定するのだ。
Type-Aはなんか制限があるけど、FeliCaのはIDmもPMmも指定する。
ポーリングすると、そのIDmやPMmが読める。
コマンドが来たら、適当に作って返すことができる。
そりゃまあ、カードエミュレーションだからな。

じゃあこれを使って電車に乗るデータを偽造してやれ!と思う人がいるかもしれないが、まあ無理だ。
理由は説明しないがね。
少なくとも、犯罪を助長する気はない。


なんでPN544をカードエミュレーションで動かせないようにしているかは推測だが、やはり怖かったからではなかろうか。
能力的には、MIFAREとして振る舞うことができるんだと思うのだ。
そういう機能があるなら、技術さえあれば試してみたくなるではないか。
そして、行き着くところまでいってしまうかもしれない。

そんな心配をするよりも、私としてはP2Pモードだけ使えるようなチップがほしいのだ。
ねー。

0 件のコメント:

コメントを投稿

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

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