Contenu connexe
Similaire à 一人でもNFC開発 (20)
Plus de Hirokuma Ueno (20)
一人でもNFC開発
- 4. 開発風景
NFC カード
パソコン
NFC リーダライタ
こたつ
4 / 34
- 5. 環境作り (1)
ホスト
パソコン
● Windows XP
– cygwin
– VC# + SDK for NFC Starter Kit (Sony)
● どちらも無償版
● Linux Ubuntu
– gcc + libusb
Android タブレット ICONIA A500
● Android 3.2
– USB Host 機能が使える
– ( 液晶画面が壊れて見えない・・・ )
5 / 34
- 6. 環境作り (2)
NFC のリーダライタ
– Sony の RC-S370( いわゆる PaSoRi)
● Amazon : 2,500 くらい
● パソコンからは” FeliCa Port” に見える
● 開発用途ではない ( 業務用でもないみたい )
黒パソリ
6 / 34
- 7. 環境作り (2)
NFC のリーダライタ
– Sony の RC-S620/S + USB シリアル変換
● スイッチサイエンス社: 3,500
● USB シリアル変換は 700 くらい
● パソコンからはシリアルポートに見える
● 開発用途 ( 組み込み用 )
電源を逆に差して壊した…
せっかくなので開いたときの写真 7 / 34
- 8. 環境作り (3)
NFC のカード
– FeliCa Lite
● スイッチサイエンス社: 350
– Mifare Classic
– Mifare Ultralight
● Amazon :値段は忘れた
– nimoca
● FeliCa Standard
– FeliCa 入り携帯電話 ( 非スマートフォン )
● Mobile FeliCa Chip
8 / 34
- 9. NFC カードたち
FeliCa Lite Mifare Ultralight
Mifare Classic 1K
nimoca
P906i
9 / 34
- 10. 情報集め
NFC 専門の本は ( 今のところ ) ない
– 雑誌 Interface にときどき情報が出る
主にネット
– Sony 技術情報
– NXP 技術情報
– NFC Forum
– 規格 ( 次ページ )
– あとは検索頼み・・・
● あまり出てこん
10 / 34
- 11. 規格
ISO 18092
ISO 14443 Mifare
NFCIP-1
Type-A
106Kbps
ISO-DEP
NFC-A
NFC-DEP
Type-B
106Kbps
NFC Forum
NFC-B ISO 21481
NFCIP-2
FeliCa
ISO 15693
212/424Kbps NFC-V
NFC-F
11 / 34
- 13. リーダライタから RF を出し始める
● 搬送波がリーダライタから出る
● カード側のアンテナが受信
● 電気が生まれる!
● カード側の OS が起動する
● ポーリング待ちになる
有線コマンド送信
搬送波
13 / 34
- 14. カードの捕捉
● R/W からポーリングコマンドを送信
● カード側が応答を返す
● R/W が、捕捉したカード情報をレスポンスで返す
● 以降は、そのカードに対してアクセスする
NFC-A/B/F でパラメータが異なる
ターゲット (target)
InListPassiveTarget 送信
無線レスポンス受信 Polling 送信
イニシエータ (initiator) InListPassiveTarget レスポンス
14 / 34
- 15. 終わり方
● 搬送波の圏外に出る
● カード側の電気が作られなくなる!
● おしまい
もちろん、搬送波を止めてもよい
搬送波
15 / 34
- 17. 有線プロトコルの例
FeliCa Lite のポーリング (InListPassiveTarget)
有線コマンド
00 00 ff 09 f7 d4 4a 01 02 00 ff ff 01 00 e0 00
有線レスポンス IDm
00 00 ff 18 e8 d5 4b 01 01 14 01 01 27 00 5d 19
fd 67 c0 00 f0 00 00 02 06 03 00 88 b4 d0 00
PMm SC
17 / 34
- 18. 無線プロトコルの例
InListPassiveTarget
有線コマンド
00 00 ff 09 f7 d4 4a 01 02 00 ff ff 01 00 e0 00
同じプロトコルでも、
規格によって呼び名が異なる
NFC Forum : SENSF_REQ
JIS-X6319 : REQC
ECMA-340 : Polling
規格名 上記のプロトコル名称
18 / 34
- 19. ● カードへのアクセス方法
無線プロトコル→有線プロトコルで送信
CommunicateThruEX (Sony 系 )
InDataExchange(Sony, NXP 系 )
InCommunicateThru(Sony, NXP 系 )
ライブラリを使う
SDK for NFC Starter Kit (Windows)
Android API (Android 2.3 以降 )
libpafe
libnfc
OpenNFC 他にもいろいろあります
nfcpy
19 / 34
- 21. 最初に困ったこと
Sony の R/W を買ったのはいいが、コマンドが不明
コマンド資料は、 Sony から別途購入が必要
Sony の資料は、企業向けの販売しかない
もったいない・・・
21 / 34
- 22. RC-S956 のコマンド
PaSoRi や RC-S620/S に入っているチップ
NXP の PN533 のコマンドと、かなり近い
PN533 のドキュメントはダウンロード可能
けっこう、そのまま使える
パラメータがわかれば使えるのだが・・・
22 / 34
- 23. 解析をする
どうやって実現させているかわからないものは、実
際のパケットを見てみる
これは、かなり行儀が悪い・・・
というよりも、怒られるような・・・
解析の仕方
R/W との送受信データを見る
送ってきた無線データを見る
有線コマンド送信
無線レスポンス受信 無線コマンド送信
有線レスポンス受信
23 / 34
- 24. その前に PaSoRi
シリアルと違って、 USB なのでドライバがいる
libnfc などでアクセスしているので、簡単そうだ
適当に libusb でコマンドを転送
あ、レスポンスが返ってきた・・・
libusb で PaSoRi 用の簡易ドライバを作成
ついでに Android 用のドライバも作成
Android 3.2 は USB Host 機能がある
アプリから PaSoRi の制御ができる
24 / 34
- 25. R/W との送受信データを見る (1)
やりたいこと
自分の携帯電話にデータを送りたい
パソコンソフトから FALP 送信させることはできる
やること
パソコンから、携帯電話に FALP 送信
PaSoRi にアクセスするデータを見る!
USB
PaSoRi パソコン
25 / 34
- 28. R/W との送受信データを見る (4)
FALP 解析結果
自作ソフトで FALP 送信できるようになった。
携帯電話からのデータを受信したかったが、これは
サンプルにするデータがないため、断念
備考
非常につらい作業だった・・・
今なら、 SDK for NFC Starter Kit でできる
SDK for NFC Starter Kit の FALP は、 Android の
おサイフケータイ向けでやる方がよい。
28 / 34
- 29. 送ってきた無線データを見る (1)
昔からの懸念
IDm だけで判定するのはセキュリティ的に危険!
・・・とは言われているものの、なんだろう?
カードエミュレーションしてみるとわかる?
やりたいこと
R/W をカードとして認識してもらう
やること
RC-S620/S でカードエミュレーション
29 / 34
- 31. 送ってきた無線データを見る (3)
結果
デモをする
かざしたカードの IDm をそのままカードエミュレーションする、
というデモをやりました。
備考
R/W がカードとして振る舞える以上、サービス側が
認証付きのアクセスをするようにすべし
Sony の技術情報には、 IDm のユニーク性を保証し
ないことが書かれていたように思う
場所を見つけられなかった・・・
31 / 34
- 32. IDm (1)
製造番号 (manufacturer ID)
NFCID2
システムごとに振られる
共通領域とサイバネ領域では異なる、など
FeliCa Networks 社が管理 ( 確か… )
なので、「市場に出回っている」カードの IDm は
ほぼユニークになっていると思う ユニーク性の保証はしてない
ちょっと技があれば「なりすませる」
IDm のユニーク性は、識別には使えるけれども、
セキュリティとしては使えない
32 / 34
- 33. IDm (2)
NFCID だけでの識別は危険
特に NFCID2
NFCID1 は 3byte しか指定できないので。
「どんなカードでも鍵にできます」というタイプ
大丈夫かしら・・・
IDm しか見ないの?
カードに自分の情報を持たないということ?
認証無しの情報しか使わないということ?
危険性を回避した上での製品であってほしい・・・
33 / 34