2

ネイティブ モードで desfire カードを使用して認証したいと考えています。これが私の現在の手順です:

  • マスター アプリケーションを選択します(AID = 0×00 0×00 0×00)
  • カードからの応答 (「チャレンジ」、randB) を受け取る
  • 次に、2 番目のステップで、応答 (randA) を生成します。8 バイトの rand A と、復号化およびローテーションされた 8 バイトの rand B を連結します。
  • 暗号化してカードに送り返します。

答えが返ってきました91 aeが、理由がわかりません。メッセージのシーケンスは次のとおりです。

  • カードへ: 90 0A 00 00 01 00 00
  • カードから 5B 57 69 C7 CE 4B 16 7B 91 AF
  • 暗号化された RandB = 5B 57 69 C7 CE 4B 16 7B
  • 解読された RandB' = 17 8D 23 57 10 C9 32 D5
  • 1 バイト lshitf RandB' = 8D 23 57 10 C9 32 D5 17
  • 生成されたランド A = 43 9D 17 8E 9A 5F BA 70
  • Rand A と Rand B を連結する'' = 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17
  • 暗号化された Rand A + Rand B'' = 9E ED DC 4F BC E7 BE BD 09 02 CF 99 F7 40 34 7B
  • カードへ: 90 AF 00 00 10 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17 00
  • カードから: 91 AE

何か間違っているところがありましたらご指摘いただけますでしょうか。どのような問題が発生する可能性がありますか?

4

4 に答える 4

2

返信が少し遅れていることは承知していますが、とにかくそれに答えます-私自身は昨日だけ認証を正しく取得できました。91 ae は認証エラーを表します。つまり、連結と暗号化の後に RandA を使用して送信する RandB' は、PICC (Ev1) によって期待されるものではありません。問題は暗号化にある可能性があります。EV1 データシートの例でロジックの暗号化をクロスチェックできますか?

それが役に立てば幸いです(すでに自分で問題を解決できなかった場合)

于 2013-01-29T11:23:16.587 に答える
1

マスター キーとその他のアプリケーション認証は、同じロジックで機能します。Android でのDeFire認証に関する私の質問と回答を次に示します。それが役に立てば幸い。

ここでの問題は、暗号化/解読にあるはずです。no-paddingを使用して 3DES または AES で CBC を実行する必要があります。

于 2013-03-31T19:50:44.503 に答える
0

私の経験では、ほとんどの場合、間違った方法で行われた暗号化です。応答を暗号化するために正しいモードを使用していますか? (ところで、DES、TDES、または AES を使用していますか?) DES を使用している場合、リバース モードで CBC を使用していますか? IIRC、応答を暗号化するには、「逆」アルゴリズムを使用する必要があります (通常、チパリングに使用するアルゴリズム)。また、キーにパリティが必要かどうかを確認します。

于 2013-01-29T11:39:20.537 に答える