NFC通信 - Mifare Desfire AES - 更改键命令

时间:2014-06-03 16:27:45

标签: key aes nfc mifare contactless-smartcard

我使用HID Omnikey 5321阅读器与Mifare DESFire EV1标签进行通信。我使用WinSCard DLL(在C ++中)将Native DESFire命令包装在ISO 7816 APDU消息结构中。在标签上,我有一个带有3个键的应用程序。由于密钥设置设置为0x0B,我使用应用程序主密钥进行身份验证以更改密钥值。

我设法更改应用程序主密钥,但不是密钥1和2。

使用应用程序主密钥进行AES身份验证后,我尝试更改密钥2:

Old Key 2 = 00...00
New Key 2 = 22...22

我计算CRC over(旧密钥2)XOR(新密钥2)

CRCxor = F1 4A D1 C0

我通过Native Command计算CRC

Native Command = C4 02 (New Key 2)
CRCnc = C9 1F 03 80

然后我用会话密钥加密,IV设置为00

32 bytes data to encipher : (New Key 2 XOR Old Key 2) (CRCxor) (CRCnc) 00...00

APDU发了

90 C4 00 00 21 02 (enciphered data) 00

作为回应我得到" 1E"状态代码,表示CRC或填充错误。

我也尝试没有XORing数据。我只是通过Native Command附加CRC计算,就像我成功更改Master密钥一样,但我仍然有同样的错误。

我不知道问题出在哪里。

0 个答案:

没有答案