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

2,119 views
2,080 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,119
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
18
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. 注:NDEFはないよ
  2. 2. 今日のお洋服はPASMOっぽいわね そういうあなたも Suicaカラーだわ 今月の内容はこちらです!第1章 Type 3 Tagの基本第2章 Type 3 TagとFeliCa第3章 FeliCaとNFC
  3. 3. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界第1章 Type 3 Tagの基本 Tag Type 3 Tag をおさらいしよう。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-
  4. 4. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 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 種類にはそれぞれ値があり、「サービスコード」と呼ばれている。 サービス しときました! -2-
  5. 5. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 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 カードを識別できる前提になっ ているものもあるが、セキュリティが必要なところではそういうやり方はしないように注意しよう。 システムで使うなら しっかりと考えよう -3-
  6. 6. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界アクセス 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 の説明を読んだが、「電源を切ると、それ以降アクセスできないようにできる」というよう に、電源が切れることによって設定が完了するものもあるので、気にしておくとよいかもしれない。 無線が 降ってくるわ -4-
  7. 7. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 第2章 Type 3 TagとFeliCa Tag じゃあ、Type 3 Tag = FeliCa でよいね?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-S FeliCa Lite Type 3 Tag そんなものかねFeliCa Lite は何が追加されている?減算レジスタブロック Reg 1 ブロック分のユーザブロックだが、ランダムサービスのブロックのように自由に書き込めるわけでは なく、条件を満たした場合のみ書き込みができる。 まず、 16 byte が以下のように 3 分割されている。 ・RegA : 4 byte 分 ・RegB : 4 byte 分 ・RegC : 8 byte 分 RegA と RegB は、リトルエンディアンの 32bit 値として扱われる(RegC は自由)。 以下の条件を満たすとき、このブロックに書き込みができる。 ・RegA : 現在の値以下の値 ・RegB : 現在の値以下の値 -5-
  8. 8. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 わかりづらいので、例を挙げよう。 なお、私は Reg ブロックを使ったことがないので、間違っていたら申し訳ない。■例 Reg ブロックの値 : 67 45 23 01 EF CD AB 89 xx xx xx xx xx xx xx xx RegA : 0x01234567 RegB : 0x89ABCDEF この場合、書き込みたいのであれば、 RegA : 0x00000000 ~ 0x01234567 RegB : 0x00000000 ~ 0x89ABCDEF の値を書き込むことになる。 1 ブロック単位でしかアクセスできないので、一部だけ書き込みたい場合 でも 16 byte 指定して書き込むことになる。 つまり、 RegA や RegB に現在値よりも小さい値を書き込むと、それより大きい値に戻すことはできな いことになる。 使い道としては、回数券のように、制限を設けたい場合だろう。 RegA と RegB は同値でも書き込め るので、書き込み回数が必ず制限されている、ということではないが、そこら辺は運用で考えることに なるだろう。片側認証 カードを発行した側が「このカードは第3者に書き込まれていないだろう」と認証する方法。 FeliCa Lite には「カード鍵ブロック」という値を書き込むブロックがある。そのブロックは書き込み専用 なので、書き込んだ人しかその値を知らない。 別のブロックとして「ランダムチャレンジブロック」というものがあり、そこに値を書き込むと、カード鍵の 値と書き込んだ値を使って、あるアルゴリズムを使った計算を行い、結果を「 MAC ブロック」として読 み込めるようになる。 カードを発行した人は、カード鍵の値と、ランダムチャレンジに書き込んだ値と、計算するアルゴリズム がわかるので自分で計算し、読み込んだ MAC ブロックの値と比較して、カード鍵が発行したときと同 じものかどうかが識別できる、という考え方だ。 実際はもう少し手が込んでいるのだが、難しいので説明しない。 仕様書もあるので興味がある人は調べてみよう。 ネズミにしか 興味がないな -6-
  9. 9. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 第3章 FeliCaとNFC Tag じゃあ、FeliCa と NFC の関係はどうなのだ? 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 に沿っている。 NFC Forum NFC-A NFC-B NFC-F Type 3 Type 1 Type 4B Type 2 FeliCa Type 4A -7-
  10. 10. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 世の中には、 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 がそれにあたるが、セ キュリティについては取り決めがないため、決済のような目的には使うことが難しい。 -8-
  11. 11. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界決済方面での普及はゆっくりじゃなかろうか 「 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 方式のことと思われる。携帯電話の決済、つ まりモバイルペイメントの方である。 詳しくないので語るものがないが、なかなか大変そうである。 こりゃ大変だ -9-
  12. 12. 特集 FeliCa! 語らずにはいられないッ! Type 3 Tag の世界 編集後記 「月刊 NDEF 」というタイトルなのに、 NDEF のことを書かな いという暴挙に出てしまいました・・・。すみません。 3 月は卒業シーズンということで、 NDEF からも卒業する、と か、 NFC から卒業するとか、そういうネタも考えたのですが、 そんなことをすると私の売り物がなくなってしまうのでやめまし た。卒業するのは、今勤めている会社を辞める、という程度の 意味ですな。 さて、今回は FeliCa についていろいろと書いてみました。 Type 3 Tag という観点よりも、 NFC を使った決済システムのことを考えてしまったため、内容が偏っ てしまったように思います。 日本の人にとって FeliCa を使った決済システムは身近すぎるため、その裏側で動いているものがお 金を使うためのシステムであることを忘れがちなのかもしれないですね。数人で飲み会をするときのお 金だってああだこうだ問題になることがあるのに、それをシステムとして破綻しないようにするというの は、ひどく難しいように思います(一緒にするなって言われそうですが)。 私は仕事として NFC をやってるわけではないので、そういう難しいことは考えていません。 NFC は 「通信方法の一種」くらいなものです。インターネットみたいに他とつながることがないので、バグがあ っても気が楽だ、とか、そんなところです。 4 月は忙しくなると思うので、ようやく不定期発行に戻ることができるかと思います。 では、ごきげんよう。 2013/03/01 14:52 - 10 -

×