RC-S620/Sの簡易コマンドリファレンスが更新されて、Targetになるコマンドが公開された。
公開されたといっても、この手順はNFC-DEPとして使うためのものである。
なぜかというと、SetParametersコマンドにて自動的にATR_RESを返さない手順で書かれているからだ。
ATR_REQを受信したことを確認してからATR_RESを返しましょう、という説明になっていると思う。
では、ATR_REQ以外を受信したらどうなるか。
同じである。
ATR_REQを受信したらATR_REQがまるまるレスポンスとして返されるように、それ以外のコマンドを受信したとしたら、そのコマンドがまるまるレスポンスとして返ってくる。
しかし、1つ覚えておこう。
Pollingは、コマンド扱いではない、ということだ。
あれは脊髄反射的な応答をRWがするので、Hostまで返ってこない。
まあ、PollingのたびにHostへ確認が来ていたら、時間が間に合わないだろうがね。
ちなみにNXPのPN533では、TgInitAsTargetというコマンドがある。
私はこれを見ながら、NFC-DEPの実装をしていた。
主な違いは、historical byte。
何かの歴史的に残してあるパラメータらしいのだが、TgInitTargetにはこれがない。
そのため、パケットを作るときに妙な動きをしていたことがあった。
いろいろと試していって、RC-S620/SのTgInitAsTargetにはhistorical byteはない、と推測したのだった。
解析のいいところは、答え合わせして正解だったときに喜びを得ることができるというところだろうか。
まあ、答え合わせできないということの方が多いんだがね。
まあ、自分でやっていてなんだが、DEP目的以外でTargetになるのは控えた方がよいな。
李下に冠を正さず、といいますか。
やってみたらわかるけど、Targetを実装するのはかなりめんどうだ。
アトリエのどかさんも取り組まれているようだが、動かすところよりも動いてからの方で考え込まれているようだ。
ふはははは、悩め悩め(ひどい…)!
NFC QUESTの魔王は紳士的(というよりも業界人的?)なのだが、私は人が悪いので、ちゃかすくらいしかしない。
私もけっこうなおじさんなので、技術を若い人に追い抜かれるのは時間の問題だろう。
かといって、楽々と追い抜かせるのは気にくわない。
まあ、ここらへんはもうちょっと酔っぱらったら書くことにしようかね。
>ふはははは、悩め悩め(ひどい…)!
返信削除ひどいw
>李下に冠を正さず、といいますか。
はい、すみません。
ただ、IDmの偽装(というかなんというか)が知らない人からみて一番興味を持ってもらいやすい実演なのかな、という気はしています。それで中には悪いこと考えちゃう方がいらっしゃるから、広げ方が難しいのかもですが。
ここらへん個人的にもデリケートな話であるとは認識しています。
だから参考リンクとか一生懸命探して書きました。内容もぼかしぼかしです。……コマンドそのものは明かしちゃいましたが。
一番いいのは、「IDmだけだと(素朴な実装)破られてしまうよね→そうしないためにこういう施策があるよ!(真面目な実装)」という流れなのですが、NFCタグ的にいうとどの辺になるのでしょう。
あれです。
返信削除疑われるのは私だけでいいだろう、というだけなのです(疑われてはないですが)。
ターゲット側になる動作は必要ですし、ターゲットになれる以上は世の中の荒波にも対応できなくてはならないと思います(今までの製品が)。
個人の感想からいえば、消費者団体などがNFC対応鍵のセキュリティを試してほしいところです。
実装されたのでおわかりでしょうが、IDmをまねするだけなんて、あっという間です。
IDmだけの認証なんて「机の中にパスワード書いてるけど見るなよ!」といってるのと同じだと思ってます。
私としては、NFCを扱う以上はカードエミュレーションをやってみるのはいいことだと思っています。
とりあえずヒントは書いたので、あとは自己解決ということで。。