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

问题描述 投票:0回答:1

我正在使用 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

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

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 或填充错误。

我也尝试不对数据进行异或。我只是附加通过 Native Command 计算的 CRC,就像我成功更改主密钥所做的那样,但我仍然有相同的错误。

我不知道问题出在哪里。

key aes nfc mifare contactless-smartcard
1个回答
0
投票

九年多后 - 我在使用 Omnikey 5022 读卡器时遇到了同样的问题。

我使用 SK-AD3 发卡器更改了正在使用的卡的密钥,使用 Omnikey 设备发出相同的 APDU 例程来更改卡的密钥会产生 91 1E、CRC/MAC 错误。如果我猜的话,我会说 Omnikey 阅读器本身的硬件中发生了一些问题,导致了此错误。我浏览了该设备的软件开发指南,但找不到任何相关内容。确实没有任何理由认为相同的 APDU 应该在一台设备上工作,而不能在另一台设备上工作。

基本上,Omnikey 设备上的 C4 命令有问题。 APDU 本身坚如磐石。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.