2013-01-14 45 views
2

我想用本機模式下的desfire卡進行身份驗證。 這裏是我的當前步驟:我如何在desfire ev1中進行本地身份驗證

  • 我從卡選擇主應用(AID = 0×00 0×00 0×00)
  • 我接收響應(一個「挑戰」,randB)
  • 然後,在第二步驟中,我生成響應(randA);我連接8個字節rand A和8個字節解密並旋轉的rand B
  • 我對它進行加密,並將其發送回卡。

我收到一個91 ae的答案,我不知道爲什麼。下面是消息序列:

  • 到卡:90 0A 00 00 01 00 00
  • 從卡5B 57 69 C7 CE 4B 16 7B 91 AF
  • 加密RandB = 5B 57 69 C7 CE 4B 16 7B
  • 破譯RandB '= 17 8D 23 57 10 C9 32 D5
  • 一個字節lshitf RandB'= 8D 23 57 10 C9 32 D5 17
  • 生成蘭德A = 43 9D 17 8E 9A 5F BA 70
  • 連接Rand A與Ra nd B「= 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17
  • 加密的蘭德A +蘭德B」= 9E ED DC 4F BC E7 BE BD 09 02 CF 99 F7 40 34 7B
  • 到卡:90 AF 00 00 10 43 9D 17 8E 9A 5F BA 70 8D 23 57 10 C9 32 D5 17 00
  • 從卡:91 AE

,能不能請你指出,如果你看到哪裏不對了?我可能會遇到哪些問題?

回答

2

我知道答覆有點遲,但無論如何回答 - 我自己只能在昨天才能獲得認證。 91 ae代表認證錯誤。這意味着你在連接和加密後與RandA發送的RandB'不如人保財險(Ev1)預期的那樣。問題可能在於加密。你可以用EV1數據表中的例子來檢查你的加密邏輯嗎?

希望它可以幫助(如果你不能夠自己已經解決的問題)

+0

請做一些格式化您的答案。 – Luv

0

根據我的經驗,大部分時間是在錯誤的方式進行加密。您是否使用正確的模式來加密響應? (順便說一下,你使用DES,TDES還是AES?)。如果您使用DES,您是否在反向模式下使用CBC? IIRC,加密你需要使用「反向」算法(你通常用於chipering)的響應。另外,檢查密鑰是否需要奇偶校驗。

1

主密鑰和其他應用程序認證使用相同的邏輯。 Here是我在Android中DesFire身份驗證主題中的問題和答案。希望能幫助到你。

你的問題在這裏必須在en/deciphering。你應該使用3DES或AES來做CBC,使用無填充

相關問題