Desfire EV1 通讯 - 如何分配 IV

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

使用 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_ARANDOM_B_DEC_LS 组合成一个 32 字节数组,我们称之为 ARRAY
  • 使用 KEYRANDOM_B 加密这个 ARRAY 作为 IV,我们称之为 ARRAY_ENC
  • 发送 ARRAY_ENC 以继续身份验证过程: 90 AF 00 00 20 + ARRAY_ENC + 00
  • 现在卡响应经过 16 个字节的移位和加密 RANDOM_A,我们需要解密并与我们之前创建的 RANDOM_A 进行比较

这是我的问题:在解密收到的 RANDOM_A (最后一步)时,我必须使用什么 IV 数组?

之后,如何从选定且经过身份验证的应用程序中的文件中读取数据?这些数据是否也被加密接收?如果是的话,我将使用什么作为 IV 数组来解密?

谢谢

encryption aes nfc apdu mifare
1个回答
0
投票

你的问题对我帮助很大 RANDOM_A 我自己带了一个空的静脉输液 我认为每个人都可以创建自己的 RANDOM_A

© www.soinside.com 2019 - 2024. All rights reserved.