Desfire EV1通讯-如何分配IV

时间:2018-09-26 14:25:32

标签: encryption aes nfc apdu mifare

使用Desfire EV1卡的AES-128身份验证过程如下:

  • 获取应用程序ID: 90 6A 00 00 00
  • 选择应用程序: 90 5A 00 00 03 10 00 00 00 (AID:0x000010)
  • 使用密钥开始身份验证: 90 AA 00 00 01 02 00 (密钥:0x02)
  • 卡片响应有一个随机的16个字节的数组,可以调用 RANDOM_B
  • 现在卡需要更多数据才能继续进行身份验证,因此我们将这样做
  • 使用 KEY 空IV 解密 RANDOM_B ,我们称之为 RANDOM_B_DEC
  • 左移1个字节 RANDOM_B_DEC ,可以调用 RANDOM_B_DEC_LS
  • 创建一个16字节长的随机数组,让其调用 RANDOM_A
  • RANDOM_A RANDOM_B_DEC_LS 合并为一个32字节数组,让我们将其称为 ARRAY
  • 使用 KEY RANDOM_B作为IV 对此 ARRAY 进行加密,让我们致电 ARRAY_ENC
  • 发送 ARRAY_ENC 以继续身份验证过程: 90 AF 00 00 20 + ARRAY_ENC + 00
  • 现在有16字节移位并已加密的 RANDOM_A 卡响应,我们需要将其解密并与我们先前创建的 RANDOM_A 进行比较

这是我的问题:在解密收到的RANDOM_A(最后一步)时,我必须使用哪个IV阵列?

在那之后,我该如何从选定并经过身份验证的应用程序中的文件中读取数据?此数据也被加密了吗?如果可以,我将使用什么作为IV阵列进行解密?

谢谢

0 个答案:

没有答案