PIV小程序中ISO7816-4 INS 87通用认证命令技术问询
PIV智能卡INS 87(通用认证)命令APDU解析
问题背景
正在开展智能卡通信项目,针对PIV(个人身份验证)小程序,对ISO7816-4标准中INS 87(通用认证)命令的数据域构造及响应含义存在疑问,无法解码特定APDU序列的数据域部分,请求详细解释。
已知参数说明
- INS:
87,通用认证命令 - P1:
03,算法标识(对应PIV规范中的椭圆曲线类密码算法) - P2:
9B,卡槽标识(对应PIV中与PIN关联的认证密钥存储槽) - 标签(TAG)定义:
7C:构造标签,用于封装多个子标签80(Witness):零知识证明凭证,空Witness(长度为0)表示向卡请求生成凭证81(Challenge):认证挑战值,用于用户身份验证的随机值82(Response):认证响应值,卡端返回的验证结果
APDU序列详细解析
第一次交互:请求Witness凭证
发送APDU 1
00 87 03 9B 04 7C 02 80 00
字段解析:
- CLA:
00,默认指令类 - INS:
87,通用认证 - P1:
03,指定算法 - P2:
9B,指定目标卡槽 - Lc:
04,数据域总长度为4字节 - 数据域:
7C 02 80 007C 02:构造标签,子标签总长度为2字节80 00:子标签80,长度为0,表示向卡请求生成Witness凭证
响应APDU
7C 0A 80 08 35 34 03 6D 14 98 63 F3 90 00
字段解析:
- 数据域:
7C 0A 80 08 35 34 03 6D 14 98 63 F37C 0A:构造标签,子标签总长度为10字节80 08:子标签80,凭证长度为8字节35 34 03 6D 14 98 63 F3:卡生成的8字节Witness凭证
- SW:
90 00,操作执行成功
第二次交互:完成挑战-响应认证
发送APDU 2
00 87 03 9B 16 7C 14 80 08 1F DE 85 70 42 9D 2F CE 81 08 59 8D 59 47 DC D3 94 15
字段解析:
- CLA:
00 - INS:
87 - P1:
03 - P2:
9B - Lc:
16,数据域总长度为22字节 - 数据域:
7C 14 80 08 1F DE 85 70 42 9D 2F CE 81 08 59 8D 59 47 DC D3 94 157C 14:构造标签,子标签总长度为20字节80 08 1F DE 85 70 42 9D 2F CE:子标签80,携带8字节的Witness(客户端对卡返回的凭证做处理后的值)81 08 59 8D 59 47 DC D3 94 15:子标签81,携带客户端生成的8字节Challenge挑战值
响应APDU
7C 0A 82 08 41 88 14 09 EB 08 09 A5 90 00
字段解析:
- 数据域:
7C 0A 82 08 41 88 14 09 EB 08 09 A57C 0A:构造标签,子标签总长度为10字节82 08:子标签82,响应值长度为8字节41 88 14 09 EB 08 09 A5:卡端用卡槽9B对应的密钥对Challenge计算得到的8字节认证响应值
- SW:
90 00,认证流程执行成功
参考资料
- ISO/IEC 7816-3:2006(智能卡 触点式卡的物理特性和接口)
- ISO/IEC 7816-4:2020(智能卡 组织、安全和命令)
- NIST SP 800-78-4(联邦信息处理标准 密码算法的选择:非对称算法)
内容的提问来源于stack exchange,提问作者Mehul Savaliya
相关产品推荐
相关产品推荐

