2013/11/06

[android]HCEはMIFARE DESFireみたいな動きをするのか

Android4.4 のHCEは、まだうちでは動かせていない。
情報だけで妄想しよう。

ISO/IEC 7816-4、というのが、一番上のプロトコルスタックになっている。
通信関係は詳しくないのだが、「プロトコルスタック」というのは、一番上の層が素のデータに近く、下の層に行くにしたがって層のしきたりでデータを包んでいく、というイメージだ。
だからプロトコルスタックが薄い方がデータサイズなどは小さくなるけど、別に好きでそうしているわけではなく、汎用性とか安全性とかを考えた末にスタックが積まれていくものだと思っている。

なので、HCEがユーザに取りあえず見えるのはISO/IEC 7816-4だろう。
ICカードというかメモリカードというか、その辺って昔からアクセスのルールがあったように思う。
10年くらい前にSIMのメモリアクセスを調べたときに、EFなんとかってのがあるのを見てそう思ったのだ。

まあ、それはともかくとして、ISO/IEC 7816-4というのは「一般的な」アクセス方式というかプロトコルらしい。
NFCだと、Type4が相当するようだ。
HCEが標準でサポートしているのはNFC-Aなので、TechnologyがNFC-A、PlatformがType4となると、該当するのはType4Aとなる(Type4Bというのもあるが、これはNFC-B)。

持ってないけど、Type4Aは、タグで言えばMIFARE DESFireだろう。
私にとって、DESFireはFeliCa Standardと同じくらいの位置づけだと思っている(勝手な思いだが)。

MIFARE Ultralight C  ----- FeliCa Lite(/S)
MIFARE DESFire       ----- FeliCa Standard

こんなイメージがある。

Ultralight CもLiteも、決済系に使うにはセキュリティが弱いと思っている。
Ultralight Cはセキュアなアクセスができるけど(ドキュメントは申請が必要なので、見たことない)、無線区間は平文なんじゃないか・・・となんとなく思っている。
これはまったく根拠がないので、間違っていたら教えてほしいところだ。
私がそう思う根拠は、「それにしてはタグの値段が安い」というだけのことだ。

Liteは、少なくとも無線区間は平文だ。
領域をRead Onlyにすることはできるけど、セキュアなアクセスはできない。
Lite/Sになると双方向認証っぽいものがあるのだけど、どちらにしても無線区間は平文だ。
傍受すれば解読はたやすい。

DESFireになると、全然わからない。
使ったことないし、見たこともない。
しかし、NFC-Aで決済と言えばDESFire、というイメージがある。

同じく、FeliCaも決済系ならばStandardだ。
これは、FeliCa Standardのファイルシステムが、フォルダを降りるごとに鍵が必要だったりするためだと思う(そういうアクセスは自分でできないので、読んだ情報だけ)。
交通関係はスピードが要求されるので(特に東京か)、そのフォルダを一気に駆け下りる縮退鍵なんてものもあり、いろいろ考慮されている。
まあ、そのせいか、「悪い人じゃないんだけど、お付き合いするにはちょっと・・・」という感じで、あまり世界的には広がっていない。


さて、HCEだが、読んでる感じからすると、Type4Aっぽいと思う。
Type4Aは、カードの検出まで終わったら、あとはISO-DEPを使ってデータ交換するらしい。
そう、AndroidではAPIが提供されていたものの、なんだかよくわからないあいつだ。

このISO-DEPについては、PN532のドキュメントにある情報がわかりやすいのではないか。
もちろん、PN544やPN65、MFCが持つような機能は、NFC R/Wチップが持つ機能とは異なる。
が、規格として決まっているところについては読みやすいんじゃなかろうかね。

私もそのうち読みたいものだ。

0 件のコメント:

コメントを投稿

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

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