执行Dynamic Data Authentication(DDA)时INTERNAL AUTHENTICATE返回6985错误排查
动态数据认证(DDA)流程中INTERNAL AUTHENTICATE命令返回6985错误排查
问题描述
执行Dynamic Data Authentication(DDA)流程时,发送INTERNAL AUTHENTICATE命令(APDU:0088000004E153F3E800)后,卡片返回6985响应,未返回预期的、包含经ICC私钥加密随机数的证书。
完整APDU交互序列
send: 00A404000E325041592E5359532E444446303100 resp: 6F5B840E325041592E5359532E4444463031A549BF0C4661224F07A0000000031010500A5649534120444542495487010142034741655F5502555361204F07A00000009808405008555320444542495487010242034741655F550255539000 send: 00A4040007A000000003101000 resp: 6F4F8407A0000000031010A544500A564953412044454249548701019F38189F66049F02069F03069F1A0295055F2A029A039C019F37045F2D02656EBF0C129F5A0511084008405F5502555342034741659000 send: 80A800002383212700400000000000000300000000000008400000000000084022121000E153F3E800 resp: 7781E7820220009408080606001001030057134242424242424242D22010110000000718001F5F200F43415244484F4C4445522F564953415F3401009F100706061203A000009F260855C7CDB65C5FEFE09F2701809F360201289F4B8180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C9810BE00EBEB933E55312CDA041DCA6BCAB1E537A854799E0E157ABB03C8FB1AC6F197EDA255D7205B195A226CB1FBD5A6E826329BA61D003C95625FD073660F3C55CEEEF26F670A49681834A138B0CB1C14BC534775190BC9D44FE9C4DA6D75BCC2D0BBCC24675CC4C857549238DCB59F6C0200009F6E04207000009000 send: 0088000004E153F3E800 resp: 6985
错误原因分析
6985响应码核心含义为使用条件不满足,结合DDA流程,可能的触发原因包括:
- 前置流程不完整或错误:虽GENERATE AC(
80A8)返回9000,但需确认PDOL(9F38)解析是否正确、GENERATE AC命令的数据域是否符合卡片要求,是否遗漏必要认证参数。 - 挑战值不匹配或格式错误:INTERNAL AUTHENTICATE发送的4字节随机数
E153F3E8需与GENERATE AC中终端提供的挑战值完全一致,需排查字节序是否反转、数据是否被篡改。 - 卡片状态异常:卡片可能处于锁定、未激活DDA功能,或当前交易上下文不允许执行认证操作。
- 命令参数错误:INTERNAL AUTHENTICATE的P1/P2(
00/00)可能不符合卡片规范,部分卡片要求特定P1/P2值指定认证模式;LC参数(04)是否匹配卡片预期的数据长度。 - 密钥相关问题:卡片的ICC私钥未正确加载、密钥索引错误,或私钥已过期/失效。
排查步骤
- 查阅卡片官方规范,确认
6985在该卡片中的具体触发场景,缩小排查范围。 - 重新校验PDOL解析和GENERATE AC数据构造:确保PDOL标签(
9F38)中的所有要求参数都已正确包含在80A8命令的数据域中。 - 验证挑战值一致性:对比
80A8命令末尾的4字节挑战值与0088命令中的数据,确认完全一致且字节序正确。 - 查询卡片状态:使用
GET DATA命令读取卡片状态相关标签(如9F10、9F6C),确认卡片未锁定、DDA功能已启用。 - 调整命令参数测试:尝试修改INTERNAL AUTHENTICATE的P1/P2值(如
00/01)或LC值(如00),看是否能得到正确响应。 - 测试SDA流程:执行静态数据认证(SDA)验证卡片的基本认证功能是否正常,排除硬件或底层功能故障。
内容的提问来源于stack exchange,提问作者mysaes_jgo
相关产品推荐
相关产品推荐

