智能密码钥匙常用APDU命令分析

智能密码钥匙常用APDU命令分析

一、APDU命令简介

USB数据包主要参照GM/T 0017-2012《智能密码钥匙密码应用接口数据格式规范》进行分析。

1.1 APDU报文结构

智能密码钥匙应用接口与设备之间的数据交换以APDU的形式进行编码
在这里插入图片描述在这里插入图片描述在这里插入图片描述![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9e281fcc6cf94823a717908e0dd838fc.png

1.2 APDU字段

在这里插入图片描述![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/29ff8680dbdb44b8b423c61139268085.png

1.3APDU中INS代码指令表

此处主要记录常用的3项,ExportCertificate、ECCSignData、DigestUpdate。
在这里插入图片描述![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e09ca04ecd5f428d9d51c1ff8bfbbbb8.png

二、USBKey数据包流程分析

2.1 ExportCertificate

使用wireshark【v4.2.5】分析报文,在十六进制值检索框输入80 4e进行筛选,即ExportCertificate,导出数字证书,参数为应用ID和容器ID。
若USBKey存在不同应用多个证书,数据包中将存在多个80 4e定位。可先检索定位DigestInit,选择前方前1-2个数据流,大概率是对应的签名证书。也可通过证书管理工具导出对应应用的证书。
在这里插入图片描述命令APDU:CLA-80 INS-4e P1-01 P2-00 Lc-00 00 04 数据-10 00 30 02 Le-00 00 00
在这里插入图片描述响应APDU:Lr-01 f2 之后的值都是证书的一部分
在这里插入图片描述响应报文SW1、SW2值为6a 9e表示数据在上个会话数据长度不足,需要将2个会话流拼接为一个证书。
在这里插入图片描述在这里插入图片描述响应报文SW1、SW2值为90 00表示传输成功。
在这里插入图片描述

在这里插入图片描述复制NO.609-NO.635中间2.7.1发送给host in的Padding值,第一个会话中H:01f2——D:498字节,从01f2后择498字节,以6a 9e结尾;第二个会话中H:0068——D:104字节,从0068后择104字节,以90 00结尾。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

余下数据,剔除证书长度4字节,拼接后,从证书中提取到公钥值:
04ce791c5c69922d64ebde24069fc3b703a767c8edeb7c84cce33b5aa77632f40cf6cb1730cf1996a7c65dfd8bc010c4d47579e3e8735b77b4c72478e12690086a

2.2 DigestUpdate

在十六进制值检索框输入80 b8进行筛选,即为DigestUpdate,也就是传输的是待杂凑的数据。
在这里插入图片描述命令APDU:CLA-80 INS-b8 P1-00 P2-00 Lc-00 00 04 数据-31 32 33 34 无Le,随机数值H:31323334——D:1234。

2.3 ECCSignData

在十六进制值检索框输入80 74进行筛选,即为ECCSignData,也就是采用ECC对数据进行签名。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

复制NO.667-NO.669中间2.7.1发送给host in的Padding值,拼接值为密钥位长度、X坐标、Y坐标,SM2签名值:aeed63b79158bc22f701c1f2b2de3cc0775ecdb32442c4fc359686741d9514567ab6813e216ad6f4ac378e5adef1f8508bd8ca2cdd3fab2bbec944d2f86e4873

三、数据验证

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述对比前端浏览器F12捕获的数据,值相同,使用密码工具成功验签。

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值