MIFARE DESFire EV1身份验证和MAC

时间:2017-08-16 09:05:24

标签: authentication nfc rfid mifare contactless-smartcard

将FormatPICC命令发送到MIFARE DESFire EV1卡时,我发现以下行为:

PCD  ---> PICC
--------------
0xFC --->
     <--- 0x00   or   0x00 + MAC   or   ERROR CODE     
  1. 如果使用命令0x0A(legacy(3)DES身份验证)进行身份验证,则对FormatPICC命令的响应仅为一个字节(0x00)。
  2. 如果使用命令0xAA(AES身份验证)进行身份验证,则对FormatPICC命令的响应是状态字节(0x00)加上MAC。
  3. 当我发送另一个命令(例如GetVersion(0x60))时,无论使用哪种认证(0x0A或0xAA),响应都不包含MAC。

    为什么会有这种差异?我还应该为这些命令计算MAC(更新加密状态)吗?是否有一些文件可以解释这一点?

1 个答案:

答案 0 :(得分:0)

你的观察似乎是错误的。使用带有TDES的AuthenticateISO(0x1A)或AuthenticateAES(0xAA)进行身份验证后,MIFARE DESFire EV1将返回MAC以响应所有命令(当然,除了身份验证命令和SelectApplication,它们都会重置身份验证)。

因此,应该返回MAC以响应GetVersion命令。但请注意,GetVersion命令分为3帧。 MAC仅附加到最后一帧(状态码为0x00的帧):

PCD  ---> PICC
--------------
0x60 --->
     <--- 0xAF + DATA
0xAF --->
     <--- 0xAF + DATA
0xAF --->
     <--- 0x00 + DATA + MAC