2012/04/04

FeliCa Lite-Sの相互認証はこんな感じだろうか

FeliCa Lite-Sのドキュメントをじっくり読みたいところだが、体力がない。。。
ざっとした印象だけで書くので、また間違っているところがあることだろう。


FeliCa Standardには、相互認証機能がある。
FeliCa Liteには、片側認証(内部認証)がある。

FeliCa Lite-Sにも相互認証機能があるが、それはFeliCa Standardのものとは異なる。
異なるらしい。FeliCa Standardはよくわかってないので、知らないのだ。
あちらには、プロプライエタリなコマンドがあるので、もっと細かい認証が可能であろう。

Lite-Sは、Liteにあった内部認証と、新しくできた外部認証を組み合わせて相互認証を実現するらしい。

 

■内部認証

これは、読み書きする側が認証するしくみ。
特定の値を書き込むと、特定の値をカードが演算して返すので、その結果を自分が想定する結果と比較する、というもの。
結果が正しければ「これは自分が発行したカードだ」などという判断をする。
その判断は読み書きした人しかできず、カードは単に言われた通りにアクセスできてしまうので「片側」と呼ばれているのだろう。

名前が変わったので、カードを発行した人が自分内部だけで認証する、という意味になったのかな。

 

■外部認証

これは、カード側が認証するしくみ。
単独でやるのではなく、内部認証に引き続き実施する想定のようだ。
内部認証で得るときには同時に複数のブロックデータを取得するのだが、そのデータを使って読み書き側が演算して認証データを作成。
その認証データを特定のブロックに書き込むと、認証済みEXT_AUTHフラグが立つらしい。
そうなると、ブロックごとに指定できる「認証後読み込み」や「認証後書き込み」の指定がされているブロックにアクセスできるようになるらしい。


なんとなく、わかったような気がする。

EXT_AUTHはいつフラグが落ちるのか、とか、EXT_AUTHはそもそもReadOnlyなのか、とかの疑問はまだ残っているのだが、資料を読んでいけば解決するのだろう。

最後はやはり、実物で確認だな。

4 件のコメント:

  1. これは面白い。「EXT_AUTH」がデバイスをものにないぶでしたか?

    返信削除
  2. こんばんは。

    >「EXT_AUTH」がデバイスをものにないぶでしたか?
    この部分が、日本語の順番になっていませんでした。
    単語は、こうではないかと思います。

    デバイス : device
    もの(物?) : thing, object
    ないぶ(内部?) : inner, inside

    どうでしょう?

    返信削除
  3. はい。ありがとうございます。My question was supposed to mean "What's actually happening internally (in the reader) when calling the "EXT_AUTH" command?" - since I suspected that some implied "magic" (low-level invocation of proprietary commands) was happening, given that documentation on authentication in FeliCa is scarce.

    返信削除
  4. > What's actually happening internally (in the reader) when calling the "EXT_AUTH" command?

    「"EXT_AUTH"コマンドが呼び出されたとき、実際には(NFCリーダの)内部で何が行われますか?」
    などになると思います。

    説明をしていませんでしたが、EXT_AUTHはLite-S内の情報で、メモリを読むときと同じRead without Encrptionコマンドを使って読むことができます。



    > since I suspected that some implied "magic" (low-level invocation of proprietary commands) was happening, given that documentation on authentication in FeliCa is scarce.

    Lite-Sで使うことができるコマンドはNFC-Fと同じで、
    - Polling
    - CHECK (Read without Encryption)
    - UPDATE (Write without Encryption)
    です。

    FeliCaのproprietery(プロプライエタリ)コマンドは、「FeliCa Standard」と呼ばれるカードでしか使うことができませんし、ドキュメントは一般には公開されていません。

    返信削除

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