2017-08-16 108 views
-1

當發送FormatPICC命令到MIFARE DESFire非EV1卡,我觀察以下行爲:MIFARE DESFire非EV1認證和MAC

 
PCD ---> PICC 
-------------- 
0xFC ---> 
    <--- 0x00 or 0x00 + MAC or ERROR CODE  
  1. 如果驗證用命令的0x0A(傳統(3)DES驗證) ,對FormatPICC命令的響應只有一個字節(0x00)。
  2. 如果使用命令0xAA(AES身份驗證)進行身份驗證,則對FormatPICC命令的響應是狀態字節(0x00)加上MAC。

當我發送另一個命令(例如GetVersion(0x60))時,無論使用哪種認證(0x0A或0xAA),響應都不包含MAC。

這是爲什麼呢?我還應該爲這些命令計算MAC嗎(更新密碼狀態)?有沒有解釋這個問題的文件?

+0

我相信這個問題對您有意義。但我根本無法解釋**。我甚至無法理解問題標題。這是一種編程語言嗎?確切的問題是什麼? – wally

回答

0

你的觀察似乎是錯誤的。使用AuthenticateISO(0x1A)與TDES或AuthenticateAES(0xAA)進行身份驗證後,MIFARE DESFire EV1將響應所有命令(當然,除了身份驗證命令和SelectApplication,它們都會重置身份驗證)返回MAC。

因此,應該返回一個MAC來響應GetVersion命令。但是請注意,GetVersion命令分爲3個幀。 MAC僅附加到最後一個幀(狀態碼爲0x00的那個)上:

 
PCD ---> PICC 
-------------- 
0x60 ---> 
    <--- 0xAF + DATA 
0xAF ---> 
    <--- 0xAF + DATA 
0xAF ---> 
    <--- 0x00 + DATA + MAC 
相關問題