执行生物特征APDU验证指令返回69 87错误的技术咨询
智利身份证指纹验证6987错误排查方案
核心错误原因定位
6987返回码代表卡已经识别到你启用了安全报文流程,但报文结构不符合SM规范要求,结合你已确认密钥、MAC参数正常、明文请求返回6988的前提,问题100%出在APDU的SM封装格式上,和指纹数据转换、密钥协商无关。
分点排查项
- CLA字段设置错误:你当前使用的
00是明文APDU的CLA值,启用安全报文时必须将CLA设置为0C(对应位:无逻辑通道、无命令链、启用安全报文、无响应校验),CLA位错误是该场景下6987报错的最高发原因 - SM标签不符合规范要求:按照你所用卡片遵循的IAS ECC v1.0.1、ISO 7816-4规范,加密VERIFY指令必须携带两个必填SM对象:
85标签封装加密后的生物特征数据、99标签封装8字节MAC值,你当前使用的81、95标签不符合SM封装要求,会被卡判定为SM对象缺失 - 生物特征数据封装错误:卡上匹配的指纹minutiae数据需要嵌套在
7F2E(生物特征数据容器)→81标签的TLV结构内,要确认你转换后的ISO 19794-2:2005数据已经剔除ANSI 378格式的私有头字段,数据长度和卡内预置模板的长度匹配 - Lc字段计算错误:确认你当前APDU中的Lc值
BE等于SM对象的总长度(加密数据长度+MAC长度+各TLV标签、长度字段的总开销),Lc计算错误会导致卡无法完整读取SM对象
正确结构参考
# 带安全报文的VERIFY指令通用结构(适配智利身份证规范) 0C 21 00 00 [Lc总长度] 85 [加密数据长度] [加密后的7F2E容器数据] 99 08 [8字节MAC值] 00
内容的提问来源于stack exchange,提问作者Tito
相关产品推荐
相关产品推荐

