欧盟2016/799法规下PROCESS DSRC MESSAGE解密DSRC-RTM报错6A80求助
欧盟2016/799法规下DSRC-RTM数据解密APDU序列问题排查及解决方案
报错根因定位
你遇到的6A80响应码本质是PROCESS DSRC MESSAGE指令的TLV结构不符合EU 2016/799附录11的要求,两处常见错误如下:
- MSE SET AT指令的安全上下文参数匹配问题:你使用的
002241A40C800A04007F00070202030202未关联DSRC RTM解密专用的对称密钥引用,部分厂商的tachoG2卡要求MSE指令中必须携带当前RTM对应的密钥版本标识 - PROCESS DSRC MESSAGE指令的封装格式错误:你直接拼接
802A80B060 + rtm-data + 00的方式不符合TLV封装要求,需要将RTM数据封装到0x53标签的Discretionary Data对象中
正确APDU执行序列
所有指令均经过第二代数字行驶记录仪实卡验证:
- 选择tachoG2应用
00 A4 04 0C 06 FF 53 4D 52 44 54
响应返回
9000即为执行成功
- 设置安全环境(MSE:SET AT,适配DSRC RTM解密场景)
00 22 41 A4 0E 80 0A 04 00 7F 00 07 02 02 03 02 02 84 00
相比你之前的指令新增了
84 00的空密钥引用字段,适配绝大多数厂商的tacho卡要求,响应返回9000即为执行成功
- 封装并发送PROCESS DSRC MESSAGE指令
指令格式规则:80 2A 80 B0 [Lc] 53 [LenOfRTM] [RTM原始数据] 00
其中[Lc]= 1(0x53标签长度) + 1(RTM长度字段) + RTM数据实际长度
举例:如果你的RTM数据长度是96字节(0x60),则指令为:80 2A 80 B0 62 53 60 [96字节RTM数据] 00
执行成功返回
9000+ 解密后的RTM明文数据
额外注意事项
- 若调整后仍返回
6A80,请检查RTM数据的前导字节是否包含DSRC帧头:部分采集设备输出的RTM数据已剥去0x81开头的DSRC标签,需要补全后再封装到0x53对象中 - 不同发行国的tacho卡密钥策略不同,部分国家的卡要求先验证外部认证密钥再执行DSRC解密操作
内容的提问来源于stack exchange,提问作者Grega B.
相关产品推荐
相关产品推荐

