You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BAC认证成功后读取智能卡二进制数据遇6A82文件未找到错误

智能卡BAC认证后DG选择返回6A82错误的解决方案

问题描述

我正在开发一款智能卡应用,已通过MRZ信息派生密钥完成Basic Access Control(BAC)流程,成功连接卡片:可正确选择Applet并收到9000响应码,完成基础认证并获取卡片挑战码。但封装Data Group(DG)选择APDU指令发送后,收到6A82“文件未找到”错误,无法读取二进制数据。

已完成操作:

  • 从MRZ数据计算SEED,派生kEnc和kMac密钥;
  • 成功选择Applet,响应码9000;
  • 完成基础认证,获取卡片挑战码;
  • 封装DG选择APDU并发送,返回6A82错误。

已尝试的排查:

  • 验证APDU指令封装正确性;
  • 确认Send Sequence Counter(SSC)已正确递增;
  • 确认卡片连接状态为9000。

问题:

  1. 如何修改现有代码以成功选择DG并读取二进制数据?
  2. 在此场景下正确封装和发送带安全消息的APDU还有哪些注意事项?

问题1:修改代码以成功选择DG并读取数据

1. 校验DG文件ID的准确性

不同智能卡(如ePassport、区域eID)的DG文件ID存在差异,禁止硬编码固定值。例如ePassport的DG1 ID为0101、DG2为0102,但部分地区eID可能采用不同ID段。需通过读取卡片MF(主文件)或目标DF(专用文件)下的FCI(文件控制信息),确认卡片实际支持的DG列表,再使用对应ID。

2. 修正DG选择APDU格式

选择DG的标准APDU格式应为:

00 A4 02 0C 02 [DG_ID]

参数说明:

  • 00:原始CLA(指令类别),后续封装安全消息时需调整CLA字段;
  • A4:INS(选择文件指令);
  • 02:P1(选择子文件);
  • 0C:P2(返回FCI);
  • 02:LC(DG ID的字节长度,固定为2字节);
  • [DG_ID]:2字节的目标DG文件ID。

若格式错误(如P1/P2设置错误、DG ID长度不符),会直接触发6A82错误。

3. 确认DF上下文切换

选择Applet后,需切换至对应DG所在的DF上下文。以ePassport为例:

  1. 选择Applet(如APDU:00 A4 04 0C 07 A0000002471001);
  2. 切换至DF01(APDU:00 A4 01 0C 02 0100);
  3. 再发送DG选择指令。

若未切换至正确DF,直接选择DG会因上下文错误导致文件未找到。

4. 完善安全消息封装逻辑

BAC认证后,所有APDU必须封装为安全消息(含MAC校验,无数据域时无需加密):

  • 计算MAC时,需包含SSC、完整原始APDU指令、kMac密钥,严格遵循ISO/IEC 9797-1算法;
  • 确保SSC在每次发送安全消息后无符号32位递增,且与卡片端同步;
  • 封装后的CLA需设置为0C(仅含MAC)或04(含加密+MAC),匹配卡片要求。

问题2:带安全消息的APDU封装与发送注意事项

  • SSC严格同步:终端与卡片的SSC必须完全一致,每次发送安全消息后终端需主动递增SSC。若同步失败,卡片会返回6982(安全状态不满足),需重新执行BAC流程。
  • 封装顺序合规:先构造原始APDU,再计算MAC(SSC + APDU命令 + kMac),最后将MAC附加到APDU后,遵循TS 102 201等行业标准格式。
  • CLA字段匹配要求:根据卡片支持的安全消息类型设置CLA,错误的CLA会导致卡片无法解析安全消息,触发各类错误。
  • 密钥派生准确性:从MRZ计算SEED时,需确保MRZ校验位计算正确,SEED派生(如SHA-1)、kEnc/kMac生成严格符合ISO规范。密钥错误会导致BAC认证后安全消息校验失败,引发隐性错误。
  • 长度限制合规:封装后的APDU总长度不得超过卡片支持的最大传输长度(通常为255字节),超长需分块处理(DG选择指令一般无需分块)。
  • 错误重试逻辑:收到6982时需重新执行BAC同步SSC;收到6A82优先检查DG ID、DF上下文、APDU格式;其他安全类错误需校验密钥或封装流程。

内容的提问来源于stack exchange,提问作者Shehab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:39:52