APDU分析-智能密码钥匙密码应用接口规范
好,我需要帮用户总结一篇文章的内容,控制在100字以内,而且不需要特定的开头。首先,我看看文章主要讲了什么。 文章主要讨论智能密码钥匙的应用接口数据交换,使用APDU格式。里面提到了设备管理、访问控制和密码服务等指令。每个指令都有具体的命令和响应对,比如设置标签、获取设备信息、认证、修改密钥等。还详细说明了ECC签名过程中的数据处理和报文分析。 接下来,我要把这些内容浓缩到100字以内。重点包括APDU的使用、主要指令类型以及签名过程的分析。 最后,确保语言简洁明了,直接描述文章内容,不使用任何开头词。 </think> 文章介绍了智能密码钥匙应用接口的数据交换机制,基于APDU格式进行命令与响应的交互。主要内容包括设备管理指令(如设置标签、获取设备信息)、访问控制指令(如设备认证、修改密钥)以及密码服务指令(如ECC签名)。文章还详细解释了ECC签名过程中的数据处理和APDU报文分析方法,并提供了具体实例说明签名控件与智能密码钥匙的交互流程。 2026-1-22 03:24:59 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

智能密码钥匙应用接口与设备之间的数据交换以 APDU 的形式进行编码。应用协议中的一个步骤由发送命令、接收实体处理它以及发回响应组成。因此,特定的响应对应于特定的命令,称作为命令响应对。APDU 可包含有命令报文或响应报文,它从接口设备发送到密码钥匙,或者相反地由密码钥匙发送到接口设备。

相关标准:

GM/T 0017-2012 《智能密码钥匙密码应用接口数据格式规范》

主要命令报文编码,主要构成如下图

1769051329_697194c1d3aa69772f515.png!small

CLA为指令的类别,是对于INS来说是具体的指令代码。

1769051337_697194c96056bfa26343b.png!small

1769051344_697194d0b3d84f3cb8cda.png!small

1.设备管理指令:

  • SetLabel(设置设备标签)

SetLabel命令用于设置或修改设备的标签,以80 02开头进行筛选

1769051350_697194d645cea1bf94803.png!small

  • GetDevInfo(获取设备信息)

GetDevInfo 命令用于获取设备的一些特征信息,包括设备标签、广商信息、支持的算法等。以80 04开头进行筛选

1769051353_697194d9eedaf1e0ad7a0.png!small

2.访问控制指令:

  • DevAuth(设备认证)

DevAuth 命令是设备对应用程序的认证,以80 10开头进行筛选,注意:执行此命令前,需要通过取随机数命令从设备获取8字节随机数。

  • ChangeDevAuthKey(修改设备认证密钥)

ChangeDevAuthKey 命令用于更改设备认证密钥,以84 12开头进行筛选。

1769051556_697195a46de6d9d8cc63a.png!small

  • GetPinInfo(获取PIN 信息)

GetPinlnfo命令是获取指定应用下的PIN 码信息,包括最大重试次数、当前剩余重试次数,以及当前 PIN 码是否出厂默认 PIN 码。

1769051566_697195ae4861fccdadb65.png!small

  • ChangePin(修改 PIN)

ChangePin 命令用来修改指定应用的管理员 PIN 值或者用户 PIN值。

1769051574_697195b6916cc537559ed.png!small

  • VerifyPin(校验 PIN)

VerifyPin 命令是校验 PIN码。校验成功后,会获得相应的权限,如果 PIN 码错误,会返回PIN码的重试次数,当重试次数为。时表示 PIN 码已经锁死。

1769051582_697195bee5456b8ab842e.png!small

3.密码服务指令

  • ECCSignData(ECC 签名)

ECCSignData 命令采用指定容器中ECC签名私钥对输入数据进行签名并返回签名数据。

1769051590_697195c6eb7978e1db4bc.png!small

注意:

在进行APDU分析时,需要关注在智能密码钥匙中发生的具体业务,再根据命令报文进行分析,OUT和IN是成对出现。

例1 提取签名过程中的数据:

请分析A1.pcap和A1.txt数据,验证用户终端调用智能密码钥匙进行签名过程的真实性,指出调用过程,提交下表中数据。

终端用户1登录时抓取的智能密码钥匙的数据A1.txt

问题答案
提交APDU签名命令报文和待签名数据
提交APDU签名响应报文并说明报文内容(截图或粘贴数据)
提交签名证书和签名算法
提交签名原文、签名值、PKCS标准格式
简述用户终端调用签名控件和智能密码钥匙完成签名的过程(说明过程,并附证据截图)
解答:

题目说的是调用智能密码钥匙进行签名的过程,根据A1.pcap数据包的分析,使用了ECC-SM2-SM3算法套件,所以在GM/T 0017中,查看ECC签名中智能密码钥匙的命令报文。

在A1.txt中搜索80 74开头的内容

1769051607_697195d73686a32a45d82.png!small

各项值解释:

80 74: 长度占2个字节表示ECC签名

02: P1,占1个字节,在描述中这样解释:

当为1时:输入待签名数据的原文。当使用SM2算法时,需在设备内进行SM2 预处理,然后对预处理结果进行签名操作

当为2时:输入的待签名数据原始数据的杂凑值。当使用SM2算法时,该待签名数据为原始数据经过SM2签名预处理的结果(SM2的预处理过程见GM/T AAAA)其他值暂不支持

所以这里表示输入的待签名数据原始数据的杂凑值。

00:P2,不做解释

00 00 24: 长度3个字节,表示命令报文数据长度

10 00 30 01 f2 52 71 e2 cf 00 77 93 c3 57 6d 85 91 b7 d2 f8 cc 69 fd 0a b1 17 37 d6 37 82 63 b0 a1 43 51 bd 1c:

DATA值,当P1=1时,应用ID(2字节)+容器ID(2字节)+用户 ID长度(4/字节)十用户ID 值+输入的待签名数据

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/database/467659.html
如有侵权请联系:admin#unsafe.sh