2012/01/31

[nfc]NFCID (2)

風邪っぽいので、短めの話を選んだ。
「みんなでNFCのお勉強」シリーズ(シリーズ?)。
NFCIDについてだ。

NFCIDというのは、NFCのIDだ。
0, 1, 2, 3とt, iがある。
tとiは、普通付けない。
tは「Target」で、iは「Initiator」だ。
カードエミュレーションやDEPするときのように、どっち側のNFCIDかを区別したいときに付けるだけなので、そんなに気にしなくてよい。
以下、自作の資料に書いていたものを参考に書いているので、間違ってたらすまん。

NFCID0は、NFC-B。
4byte固定。

NFCID1は、NFC-A。SENS_RESの上位2ビットでサイズが決まる。
single : 4byte
double : 7byte
triple : 10byte
4byteのUIDは、ユニークではない。
Mifare 1Kは4byteだったが、Ultralightは7byteだった。
「18092では4byte固定になっている」と当時の私は書いている(Digital Protocol - 4.6.3.2)。
NFCID1 CLnは、カスケードレベル、というものらしい。
名前は聞くが、どういうものかはまだ調べていない。
4byte固定らしい。

NFCID2は、NFC-F。8byte固定。
先頭の2byteでサポートするプロトコルがわかる。
01 FE : NFC-DEPサポート(NFCIP-1)。3~8byteはランダム。
02 FE : Tag Type3サポート。3~8byteはランダム。
03 FE : FeliCa Plug。
それ以外 : Tag Type3サポート。1~8byteはプロプライエタリ(FN管理?)。
なお、システムが複数あるものは、システムごとにNFCID2がある。
共通領域とサイバー領域とか。

NFCID3は、NFC-DEPで使う。10byte固定。
NFC-Fの場合は、10byte中先頭8byteはNFCID2で、残り2byteは0とか。

NFCID1の4byte版はユニークじゃない、となっている。
NFCID2もユニークではない、というのはどこかで読んだのだが、忘れた。
FeliCa Networks社の用語集だったか・・・と思ってサイトを見たら、今日更新されてた。
そして用語集はなくなっていた・・・。
とりあえず、技術情報ページのリンクを載せておく。
SDB-200がある!と思ったが、ツールだけなのね。
まあ、個人で買えるとは思わんが。。

技術情報のページではやはりよくわからなかったので、SONYの技術サイトにある「FeliCa技術方式の各種コードについて」をリンクしよう(English)。

私としても、NFCID2(IDm)でのみのカード識別はやめていただきたい。
怖いからだ。
あくまであれは、PCD(リーダライタ)がPICC(カード)に一時的にアクセスするために取得する
だってねぇ、あれは私でも同じIDmを持つカード機能を作ることができてしまうくらい簡単なものなのだ。
やったことないけど、FeliCa Liteくらいならフルエミュレーションできるんじゃなかろうか。
もしIDmのみで重要な情報(家の鍵代わりとか)を運用しているメーカーなどがあって、鍵が破られてしまうようなことがあると、私のような善人が疑われてしまう可能性があるのだ。
そうなるのは、いやなので、やーやー言っているのだ。
ほら、技術的に可能であったら、技術者としてはやってしまいたくなるではないか。
倫理の問題でもあるのだけど、なるべくなら「そういう状況」が存在しない方がよい。
食欲や睡眠欲と違って、知識欲ってのは何か底が深くて怖いからね。

なんだかんだ言って、長くなってしまった。
私の今回の収穫は、FeliCa Networks社の技術情報サイトだ。
FALP受信をやっていて、サブコマンド一覧にないデータが出てきていたのだ。
まあ、わかったからといってFALP受信ができるようになるわけではないのだけど、知識欲が満たされたので満足だ。

6 件のコメント:

  1. 初めまして。treby と申します。
    先日@sdk4felicaさんのtweetからこちらのブログに到達しまして
    nfc タグのついた記事を全て読ませていただきました。
    すごい情報量でただただ感服するばかりです。
    (全部読むのに丸一日かかりました。勉強になります)

    今度3月頭に福岡でNFC勉強会をやりたいなと目論んでいるのですが
    宜しければhiro99ma様も参加していただけませんでしょうか

    本来ならメール等でお知らせすべきところ、
    連絡先を見つけられなかったためコメントにて失礼しました。
    よろしくお願いします。

    返信削除
  2. コメント、ありがとうございます。
    (trebyさんのサイトも、SDK for NFC Starter Kitのことを検索しているときに、こそっと見ていました。)

    まさか、nfcタグのものを全部読んでいただけるとは。。
    うれしいかぎりです。
    まあ、適当なことを書いていることも結構ありますので、そこは見なかったことにしてください。

    NFC勉強会、おもしろそうですね。
    福岡で、というのがすばらしいです!
    あまり勉強会など行ったことがないのですが、大丈夫ですかね?

    仕事さえない休日であれば、ほぼOKです。
    (あ、書いてませんが社会人やってます。しかも15年くらい・・・。)

    連絡先などは、そういえばここには書いてなかったですね。
    探させて済みません。
    このサイトの中段辺りに追加してみました。
    コメントでもメールでも、どっちでも(たぶん)大丈夫です。

    返信削除
    返信
    1. 匿名17:57

      hiro99maさま
      ライブラリlibnfcpcd.jarのほうについて、
      ちょっと質問をしたいので、
      連絡方法を教えて頂けますでしょうか?

      私の連絡先は:
      lych4191@gmail.com

      よろしくお願い致します。

      削除
    2. すみません、できればどういった内容の質問かを簡単に説明していただけますか。
      基本的に、公開しているものについてはコメントでお答えしたいです。

      削除
  3. 匿名11:17

    hiro99maさま

    お世話になります、SOFERと申します。
    お忙しいところ、申し訳ありませんが、
    下記の質問をお聞きしたいと思います。

    ①ライブラリlibnfcpcd.jarはServiceクラスの下に利用すると、NullPointExceptionは発生しており、
    Activityの下に利用するのは基本でしょうか?

    ②データ領域の読み取りもしたくて、
    詳細資料などありますでしょうか?

    ③ライブラリを利用する際に、
    商用でも可能でしょうか?
    どういうライセンスで公開されているのでしょうか?

    すみませんが、よろしくお願い致します。

    返信削除
  4. コメントありがとうございます。

    ①USB Host機能を使っているのですが、そのときの問い合わせ画面などを含んでいたと思います。よって、Activityを含まないのであれば使えないのだと思います。

    ②NfcPcdDoc.zipに、APIの使い方を非常に簡単にですが書いています。資料は、それしか作っていません。

    ③商用利用は、ご遠慮ください。「技術的にはできる」ということを示すために作っているだけで、SONY様の了承を得ているわけではありません。
    ソースファイルを公開していないのも、「何かあったら困る」というだけの理由です。
    ビジネスやライセンスに疎いため、そのようにしています。

    またこのライブラリですが、新しいPaSoRiであるRC-S380には使えません。S380で使われているチップの仕様書が、SONY様の技術資料ページにないためです。
    商用でPaSoRiを使うことを考えておられるのでしたら、まずSONY様に相談した方がよいかと思います。
    (2013/03/05~08まで東京で展示会が行われているので、そこだと話がしやすいかもしれませんね。)

    あまり参考にならず申し訳ありませんが、以上です。

    返信削除

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

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