12
注: NDEF はないよ

月刊NDEF 2013年3月号(卒業号)

Embed Size (px)

DESCRIPTION

Type 3 Tag特集ですが、NDEFのことは書いていません。。。

Citation preview

Page 1: 月刊NDEF 2013年3月号(卒業号)

注:NDEFはないよ

Page 2: 月刊NDEF 2013年3月号(卒業号)

第1章 Type 3 Tagの基本

第2章 Type 3 TagとFeliCa

今月の内容はこちらです!

今日のお洋服は

PASMOっぽいわね

そういうあなたも

Suicaカラーだわ

第3章 FeliCaとNFC

Page 3: 月刊NDEF 2013年3月号(卒業号)

- 1 -

NFC Forumの定義

Technology として「 NFC-F 」を使う唯一の Platformである。

Technology

NFC Forumの用語で、無線の通信方式を表している。

「通信」という動作を行う場合、だいたい次のようなことを考えることになる。

1. 物理的な接続方法(○○ケーブルで接続する、無線を使う、など)

2. 物理的な接続を行った後の、物理的な通信方式(通信速度や、 1 と 0をどう表すかなど)

3. 物理的に通信できるようになった後の、論理的な通信方式(パケットの構造など)

4. 通信を使ったアプリケーション

項目の 1 と 2 を表しているのが Technologyで、 3は Platform 、 4が NDEF 、のようなイメージでい

たら、だいたいよいのではなかろうか。

NFC-Fは、「 F 」とついているので気付いたかもしれないが、 FeliCaの通信方式である。国際規格の

ISO/IEC 18092にある「 212kbps / 424kbps 」の通信方式でもある。

あまり難しく考えず、「 FeliCa と同じなんだ」くらいわかっておけば十分だろう。

Platform

これも NFC Forumの用語である。

Technologyでは「無線通信」のところしか決めていないので、 Platformでソフトウェア的なアクセス方

法(パケットの構造)や、 Tag としてのメモリ構造などを決めている。

第1章 Type 3 Tagの基本

Type 3 Tagをおさらいしよう。Tag

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

難しいところは

洗い流しておくわ

Page 4: 月刊NDEF 2013年3月号(卒業号)

- 2 -

NFC-Fが FeliCaの通信方式だったように、 Type 3 Tag も FeliCaのアクセス方式になっている。

現在(2013年 2月)のところ、 FeliCaのタグとしては「 FeliCa Standard 」と「 FeliCa Lite / Lite-S 」が

ある。

Type 3 Tagは、 FeliCa Lite / Lite-Sを基本としている。

経緯は詳しくないのだが、 FeliCa Lite / Lite-S (以下、 Lite)は FeliCa Standardをベースに作られて

いると考えている(私は)。 FeliCa Standardは、 Suicaのような決済にも使えるほどのセキュリティと、

複数の FeliCa アプリ(Suica 、 nanaco など)の同居ができるような汎用性を考えているため、メモリア

クセスにいろいろな種類がある。

Lite はそのあたりを削除した簡易版と考えてよいが、通信方式が同じなので、ある程度の部分は概念

が残っている。

そういったこともあり、 Type 2 Tag と比べると多少の知識が必要になる。

メモリ構造

基本的な考え方■

FeliCa自体のメモリは、単なる RAM配列ではなく「ファイルシステム」という考え方になっている。

ハードディスクに「パーティション」「フォルダ」「ファイル」「クラスタ」があるように、 FeliCa には「システ

ム」「エリア」「サービス」「ブロック」がある。

「セクタは?」と思われそうだが、上記はクラスタでもセクタでもどっちでもよいだろう。

ブロック■

メモリの最小アクセス単位は「ブロック」である。 1ブロックは 16 byte (Type 2 Tagは 4 byte)。

ディスクのファイルシステムと照らし合わせると、 1 クラスタ = 1セクタ = 16 byte 、くらいになるだろ

うか。

サービス■

サービスとは、ブロックをグループにして、同一グループに対して同じアクセス方法を。

FeliCa Standardには、「ランダムサービス」「サイクリックサービス」「パースサービス」の 3つがある。

さらにその 3 つの中に、「読み書き可能」「読み込みのみ」や、「認証不要」「認証必要」などの属性が

あるため、種類としては 16あることになっている。

サービスの 16種類にはそれぞれ値があり、「サービスコード」と呼ばれている。

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

サービス

しときました!

Page 5: 月刊NDEF 2013年3月号(卒業号)

- 3 -

Type 3 Tagでは、その中で以下の2つをサポートしている(仕様書「 2.3.3 」)。

・ 「ランダムサービス」の「読み書き可能」で「認証不要」 : サービスコード = 0x0009

・ 「ランダムサービス」の「読み込みのみ」で「認証不要」 : サービスコード = 0x000B

ランダムサービスは、ブロック番号を指定してアクセスできる。ディスクのファイルシステムで考えると

「ファイル」と「ファイル属性」が一緒になったようなものと思えばよかろうか(ちょっと強引か)。

エリア■

FeliCa Standardには、エリアという考え方がある。

が、 Type 3 Tagにはないので、安心して忘れよう。

システム■

メモリ構造の一番上で、メモリにアクセスする場合には最初に指定することになる。

パーティションやドライブのようなイメージか。

たとえば Suica では「 0x0003 」というシステムを使っているが、 Edy では「 0xFE00 」というシステム

を使っている。かといって「 0x0003 」は Suica だけが使っているわけではなく、 nimoca など他のアプ

リもつかっているし、「 0xFE00 」も然りだ(なお、 0xFE00は「共通領域」というシステムで、他の人もた

くさんいる)。

Type 3 Tag では「 0x12FE 」というシステムを使うことになっている。 Lite はシステムとして

「 0x88B4 」を使っているが、設定によって「 0x12FE 」としても使うことができるようになっている。これ

は特殊な例で、通常1枚のカードが複数のシステムを持つ場合には、それぞれのシステムごとにメモ

リを分けるようになっている。

IDm■

Manufacture IDや NFCID2 とも呼ばれる(製造者コードだから Manufacturer ID じゃないのか?)。

主な用途としては、複数枚のカードが同時にかざされたとき、リーダライタが 1 枚を指定するために使

うものだと思っている(セッション IDみたいなものか)。

現在使われている製品には、 IDm だけで世の中から 1 枚の FeliCa カードを識別できる前提になっ

ているものもあるが、セキュリティが必要なところではそういうやり方はしないように注意しよう。

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

ないものは

忘れてしまえ

システムで使うなら

しっかりと考えよう

Page 6: 月刊NDEF 2013年3月号(卒業号)

- 4 -

アクセス

FeliCa Standardには多くのアクセスコマンドがあるが、 Type 3 Tagには 3つだけ用意されている。

Polling・

Check (Read Without Encryption)・

Update (Write Without Encryption)・

括弧内は、 FeliCaでの名称である。

詳細は仕様書を確認してほしいが、ここではわかりづらい(と私が思った)ところを説明する。

手順■

NFC リーダライタ側の目線で、アクセスする手順を書こう。

1 Polling(ワイルドカード)で、 Tagの存在を確認する

2 Polling(システムコード指定)で、アクセスしたいシステムを確認する

3 Checkや Updateを行う

4 接続を切る

Polling コマンドの戻り値として、 IDm と一緒にシステムコードを返してもらうこともできる。

このときに返ってくるシステムコードは「最初のシステムコード」である。携帯電話であればおそらく

「 FE00 」だろうし、 Liteであれば「 88B4 」である。

FeliCa Standardには「 Request SystemCode 」というコマンドがあり、カードが持っているシステム

コード一覧を取得することができるが、 Liteにはそれがない。つまり、 Liteは設定で Type 3 Tag とし

てアクセスできるようになっていたとしても、 Polling コマンドで取得することはできない。

どうするかというと、システムコード 12FC を指定して Polling を投げて確認するしかない。「なら、ワイ

ルドカードで Polling しなくていいではないか」と言われそうで、たぶんそうなのだろう。

いきなりアクセスできるか?■

システムコードもわかっていて、 IDm もわかっているならば、 Check や Update をいきなり使ってもよ

さそうだが、そうはいかない。

Pollingには「システムを捕捉する」という意味合いもあるので、やはり Pollingはいるのだ。

接続を切る?■

手順の最後で「接続を切る」と書いたが、これはリーダライタが送信している無線を止めることである。

ハード的に止めてもいいし、無線が届かない距離までカードを離してもよい。

NFC のタグは、だいたい電源を持っていない。リーダライタが送ってくる無線を使って発電してチップ

が動作するのだ。

FeliCa Lite の説明を読んだが、「電源を切ると、それ以降アクセスできないようにできる」というよう

に、電源が切れることによって設定が完了するものもあるので、気にしておくとよいかもしれない。

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

無線が

降ってくるわ

Page 7: 月刊NDEF 2013年3月号(卒業号)

- 5 -

Type 3 Tag と FeliCa Liteは同じものか?

Type 3 Tag と FeliCa Lite / Lite-Sの関係は、 Type 2 Tag と MIFARE Ultralightの関係と同じであ

る。

つまり「 Type 3 Tag 」は概念であり、それを製品化した一例が「 FeliCa Lite / Lite-S 」なのである。オ

ブジェクト指向っぽく考えると、 Type 3 Tag という基底クラスがあり、それを継承して FeliCa Lite とい

う派生クラスがある、という感じか。

FeliCa Liteは何が追加されている?

減算レジスタブロック Reg

1 ブロック分のユーザブロックだが、ランダムサービスのブロックのように自由に書き込めるわけでは

なく、条件を満たした場合のみ書き込みができる。

まず、 16 byteが以下のように 3分割されている。

RegA : 4 byte分・

RegB : 4 byte分・

RegC : 8 byte分・

RegA と RegBは、リトルエンディアンの 32bit値として扱われる(RegCは自由)。

以下の条件を満たすとき、このブロックに書き込みができる。

RegA : 現在の値以下の値・

RegB : 現在の値以下の値・

第2章 Type 3 TagとFeliCa

じゃあ、Type 3 Tag = FeliCaでよいね?Tag

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

Type 3 Tag

FeliCa Lite

FeliCa Lite-S

そんなものかね

Page 8: 月刊NDEF 2013年3月号(卒業号)

- 6 -

わかりづらいので、例を挙げよう。

なお、私は Regブロックを使ったことがないので、間違っていたら申し訳ない。

例■

Regブロックの値 : 67 45 23 01 EF CD AB 89 xx xx xx xx xx xx xx xxRegA : 0x01234567RegB : 0x89ABCDEF

この場合、書き込みたいのであれば、

RegA : 0x00000000~ 0x01234567RegB : 0x00000000~ 0x89ABCDEF

の値を書き込むことになる。 1 ブロック単位でしかアクセスできないので、一部だけ書き込みたい場合

でも 16 byte指定して書き込むことになる。

つまり、 RegA や RegB に現在値よりも小さい値を書き込むと、それより大きい値に戻すことはできな

いことになる。

使い道としては、回数券のように、制限を設けたい場合だろう。 RegA と RegB は同値でも書き込め

るので、書き込み回数が必ず制限されている、ということではないが、そこら辺は運用で考えることに

なるだろう。

片側認証

カードを発行した側が「このカードは第3者に書き込まれていないだろう」と認証する方法。

FeliCa Liteには「カード鍵ブロック」という値を書き込むブロックがある。そのブロックは書き込み専用

なので、書き込んだ人しかその値を知らない。

別のブロックとして「ランダムチャレンジブロック」というものがあり、そこに値を書き込むと、カード鍵の

値と書き込んだ値を使って、あるアルゴリズムを使った計算を行い、結果を「 MAC ブロック」として読

み込めるようになる。

カードを発行した人は、カード鍵の値と、ランダムチャレンジに書き込んだ値と、計算するアルゴリズム

がわかるので自分で計算し、読み込んだ MAC ブロックの値と比較して、カード鍵が発行したときと同

じものかどうかが識別できる、という考え方だ。

実際はもう少し手が込んでいるのだが、難しいので説明しない。

仕様書もあるので興味がある人は調べてみよう。

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

ネズミにしか

興味がないな

Page 9: 月刊NDEF 2013年3月号(卒業号)

- 7 -

FeliCa と NFCの関係は、MIFARE と NFCの関係と同じようなものだ。

ただ、 MIFARE について語ることができるほど私の知識は広くない。 FeliCa についてもそれほど広く

ないのだが、私の知っている範囲で書いていく。

NFC とは?

そもそも、「 NFC 」という語り方をしたときの「 NFC 」とは、一体なんなのだろうか。

13.56MHzの無線を使ったものを NFC と呼ぶのか、その通信距離が数 cmのものを呼ぶのか。

はたまた、 ISO/IEC 14443や ISO/IEC 18092を満たしているものを呼ぶのか。

どれも、間違っていないとは思うが、そうなると「 NFC ってなによ」というのが結局わからない。

なので私の場合は「 NFC Forumで規定している内容を満たしている(と思っている)」ものを NFC と呼

ぶようにしている。仕様を全部把握しているわけでもないので、この「月刊 NDEF 」シリーズもあやしい

ところはあるかもしれないが、気持ちとしてはそうしている。

NFC Forumから見ると?

NFC Forumでは、無線通信方式である Technology と、そのアクセス方式の Platform くらいまでし

か規定していない。

その視点からすると、 FeliCaは NFCに沿っている。

第3章 FeliCaとNFC

じゃあ、FeliCaと NFCの関係はどうなのだ?Tag

気持ちが大切でござい ます

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

NFC Forum

NFC-A NFC-B NFC-F

Type 1

Type 2

Type 4A

Type 4B

Type 3

FeliCa

Page 10: 月刊NDEF 2013年3月号(卒業号)

- 8 -

世の中には、 13.56MHz の無線を使って、数 cm のところでしか通信しないような規格がいくつもあ

り、それらは実際に運用されている。

NFC Forumでは、それらすべてを取り込もうとしている。だから、 NFC Forumから見ると、MIFARE

も NFC Forumの規格を満たしているし、 FeliCa も NFC Forumの規格を満たしている。

運用面から見ると?

MIFARE や FeliCa は、 NFC 製品と言うよりも、 NFC の規格を使ったシステムである。タグを使って

アクセスするのは、システムの一部に過ぎない。

システムについては詳しくないのだが、こういうイメージではなかろうか。

各拠点に NFC の R/W があり、そこで MIFARE なり FeliCa なりのカードにアクセスし、情報をやりと

りする。その情報はネットワークを介してサーバに集約される。最終的なお金の決済などは、サーバが

銀行のシステムなどとやりとりをする。

本当はもっと難しいシステムなのだろうが、こうやって見ると、 NFC の部分は大切ではあるけれども

わずかだ。大半は拠点とサーバをどうつなぐかとか、どうやって決済を行うだとか、そういうところが重

要になってくる。

NFC Forumでは、もちろんこういうことには触れていない。そもそも NFC通信のセキュリティには踏

み込んでいないので、実際に決済で使うのであれば各社が自前でセキュリティを用意するしかない。

その部分は「 NFC Forum対象外」なので、 NFC Forumの規格を守りつつ独自システムを組み入れ

ることは可能なのだ。

違う見方をすると、 NFC Forum としては MIFARE も FeliCa も規格内ではあるものの、相互交換が

できるのは NFC Forumで規定された範囲に限るのである。今のところ NDEFがそれにあたるが、セ

キュリティについては取り決めがないため、決済のような目的には使うことが難しい。

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

Page 11: 月刊NDEF 2013年3月号(卒業号)

- 9 -

決済方面での普及はゆっくりじゃなかろうか

「 NFC を使おう!」と考えたとき、このようなシステムを作ることを考えると、費用の面から二の足を踏

むだろう。既にクレジットカードのような金融システムがあることを考えると、爆発的に普及する、という

ことは難しいように思う。進んだとしても、ゆっくりじゃなかろうか。

もし NFC Forumがセキュリティにも言及した NDEF規格を作り、それがかなり万全なものであったと

しても、 MIFARE と FeliCaのタグにセキュアなアクセスができる、というところしか実現できない。

「海外で FeliCaを使いたい」と思ったときにやらないといけないのは、

現地で運用されている MIFAREなどの R/Wシステムを FeliCaにも対応・

MIFARE で運用しているシステムの決済方式と FeliCa で運用している運用方式をなんとかする・

と、可能ではあるけれども莫大な費用と時間がかかるようなことをやらないといかんのじゃなかろう

か。

そう思った矢先、 DoCoMoがいろいろとやっている話が出ていた。

http://www.itmedia.co.jp/mobile/articles/1302/27/news107.html

この記事にある「 NFC 」は、 GSMA が標準とした NFC 方式のことと思われる。携帯電話の決済、つ

まりモバイルペイメントの方である。

詳しくないので語るものがないが、なかなか大変そうである。

ゆっく り

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界

こりゃ大変だ

Page 12: 月刊NDEF 2013年3月号(卒業号)

- 10 -

「月刊 NDEF 」というタイトルなのに、 NDEF のことを書かな

いという暴挙に出てしまいました・・・。すみません。

3 月は卒業シーズンということで、 NDEF からも卒業する、と

か、 NFC から卒業するとか、そういうネタも考えたのですが、

そんなことをすると私の売り物がなくなってしまうのでやめまし

た。卒業するのは、今勤めている会社を辞める、という程度の

意味ですな。

さて、今回は FeliCaについていろいろと書いてみました。

Type 3 Tag という観点よりも、 NFCを使った決済システムのことを考えてしまったため、内容が偏っ

てしまったように思います。

日本の人にとって FeliCa を使った決済システムは身近すぎるため、その裏側で動いているものがお

金を使うためのシステムであることを忘れがちなのかもしれないですね。数人で飲み会をするときのお

金だってああだこうだ問題になることがあるのに、それをシステムとして破綻しないようにするというの

は、ひどく難しいように思います(一緒にするなって言われそうですが)。

私は仕事として NFC をやってるわけではないので、そういう難しいことは考えていません。 NFC は

「通信方法の一種」くらいなものです。インターネットみたいに他とつながることがないので、バグがあ

っても気が楽だ、とか、そんなところです。

4月は忙しくなると思うので、ようやく不定期発行に戻ることができるかと思います。

では、ごきげんよう。

2013/03/01 14:52

編集後記

特集 FeliCa! 語らずにはいられないッ! Type 3 Tagの世界