2020年7月27日月曜日

NTAG424 DNA で遊ぶ その4(キー設定編)

その3で設定までできました。もう1つ重要な設定が残っています。それが暗号化キーの変更です。暗号化キーは0~4まで5つあります。0番のキーはマスターキーと呼ばれていて、各種設定を行う際に使用されるキーです。一方 SDM の方は AN12196 では2番のキーを使うように設定しています。

これらのキーはすべて初期値はオール0の16バイトに設定されていますので、このまま使うと設定の変更やせっかく SDM を使って暗号化した URL パラメータを簡単に解読できてしまいます。そこでキーの変更を行うわけです。

というわけで AN12196 の Change Key のところ(6.16.1章)を見てみます。最初にキーを設定するには0番のキーで認証をしている必要がある旨記載されています。続いて Old Key(00000000000000000000000000000000)と新しいキー(C8EE97FD8B00185EDC7598D7FEBC818A)が記載されてます。そして次、「New Key = AES-Diversified New Key by UID」の記載が。だいばーしふぁいど?何それ?聞いたことないし。そういえばだいばーしふぁいどがどうしたとかさっき参照があったな。参照によると AN10922 を参照しろと。

えー、また何か文章見るのー?とブツブツ言いながら仕方なく見ていくと何か変換の方法のようだ。サンプルも載ってるから一個一個検証していけばいいか。何かすごい面倒なことになってきたけどここでやめるわけにもいかないしなー。変換に必要なものとして、UID、Application ID、System Identifier の3つが必要らしい。おー、UIDとか使うんだなるほどねー、で、アプリケーションID?、しすてむあいでんてぃふぁいあ?また何かわけのわからないものが出てきた。Application ID は DF Name のことか?などなど半日ぐらいいろいろ試したり調べたりするが全く何のことだかわからない。これはさすがに詰んだか。そうなのか。ここまでか。思えばよく頑張った。そう、頑張ったのだ。もうそれでいいではないか。

その時、サンプルの Application ID の説明のところが気になった。「3- byte DESFire AID」。...デスファイア?...そうか!この文章はデスファイア用に書かれているのか!NTAG424 DNA は NTAG の進化版ではなく、デスファイアの機能制限版というか若干機能を落としたものなのだ。ということはもしかして AN12196 で躓いただいばーしふぁいど、これはデスファイアの話であって、NTAG424 では不要なのではないか?要するにAN12196 の元となるデスファイアの資料があって、それを手直しして作るときに間違って残ってしまった記述なのではないか?

早速 NTAG424 の資料の方の Change Key の仕様を見てみる。「(NewKey XOR OldKey) || KeyVer || CRC32」。...そこにはだいばーしふぁいどなる記述は一切無い。まさしくビンゴ。ビンゴなのに何にも嬉しくない。何なんだこれは。一体誰と戦っているんだ。

気を取り直して先に進む。CRC32は普通にCRC32計算すればいいのかな? AN12196 のサンプルによれば F3847D627727ED3BC9C4CC050489B966 の CRC32 が 789DFADC らしい。計算サイトで計算してみると...合わない。違う。なにこれ。しかし待て、記載が間違っている可能性だってあるのだ。そう、記載が違うのだ。というわけで気にせず実装してみると、...やっぱり通らない。エラーを返してきやがる。するとCRCの計算方法が違うのか?調べてみるとCRCの計算方法にもいろいろあるらしい、というか計算は一緒だけど初期ベクトルみたいのが様々あるらしい。それらの計算結果を一度に表示してくれるサイトもある。ところが 789DFADC に一致するものが見当たらない。だめか。とうとう詰んだか。

は!そうだ。NTAG424 のコマンドはリトル・エンディアンで記載するのだ。ということは逆だ。789DFADC と思っていたのは DCFA9D78 なのだ。もう一度サイトの値を見直してみる。そうするとあった!あったぞ DCFA9D78 が。その計算は CRC32/JAMCRC というらしい。これで解決!

APDU の例を記載したかったですが、このコマンドは Full モードでのアクセスになるので設定編で行ったゴニョゴニョをやらなければならずここでは割愛いたします。

長かった戦いもこれで終わりを迎えます。いや、ほんとに長かった。

0 件のコメント:

コメントを投稿