HID Omnikey 5321 リーダーを使用して、Mifare DESFire EV1 タグと通信しています。標準データファイルに 16 バイトを書き込みたい。WinSCard DLL (C++) を使用して、ネイティブ DESFire コマンドを ISO 7816 APDU メッセージ構造にラップしています。アプリケーションの選択と認証は正常に行われましたが、Write Data コマンドに問題があります。ファイルの通信設定は、完全に暗号化された AES に設定されています。
File Nb : 00
Offset : 00 00 00
Length : 10 00 00 (LSB first)
Data (16 bytes) : 23 00 00 00 00 00 00 08 12 34 56 78 00 00 00 00
Native コマンドから CRC を計算します。
Native command : 3D (File Nb) (Offset) (Length) (Data)
CRC = 7B 8A 60 0F
次に、セッション キーと IV を 00 に設定して暗号化します。
32 bytes data to encipher : (Data) (CRC) 80 00 00 00 00 00 00 00 00 00 00 00
APDU が送信されました:
90 3D 00 00 27 00 00 00 00 10 00 00 (32 bytes enciphered data) 00
応答として、CRC またはパディング エラーを意味する「 1E 」ステータス コードを取得します。どこに問題があるのかわかりませんが、なんとかデータを読み取れるので、AES 暗号化アルゴリズムは良さそうです。
それはCRCかIVかもしれません。CMAC でデータを XOR する必要がありますか?