一种智能密钥设备的工作方法_3

文档序号:9433384阅读:来源:国知局
Certificate的内容;即使用智能密钥设备内 预存的私钥对TBSCertificate的内容进行签名操作;
[0150] 步骤112 :智能密钥设备根据密钥索引保存生成的用户密钥对;
[0151] 在本实施例中,用户密钥对的保存格式是预定的,具体为:4字节用户密钥对的密 钥句柄+32字节注册地应用参数+96字节用户密钥对+4字节计数器(注册时为0);
[0152] 其中,计数器用于表示对使用智能密钥设备对身份进行验证操作的次数,初始值 为〇,每成功认证一次,计数器加1 ;
[0153] 步骤113 :智能密钥设备按照第一预设格式给上位机返回注册响应数据,返回步 骤 104 ;
[0154] 在本实施中,注册响应数据包括数字证书和第一签名结果,第一预设格式具体 为:
[0157] 步骤114 :智能密钥设备根据认证请求命令中的密钥句柄长度和密钥句柄判断对 应的密钥句柄是否被注册过,是则执行步骤115,否则报错,返回步骤104 ;
[0158] 在本实施例中,步骤114具体包括:
[0159] 步骤114-1 :智能密钥设备判断认证请求命令中的密钥句柄长度是否与保存的密 钥句柄长度相同,是则执行步骤114-2,否则报错,返回步骤104 ;
[0160] 步骤114-2 :智能密钥设备判断认证请求命令中的密钥句柄是否与保存的密钥句 柄相同,是则执行步骤115,否则报错,返回步骤104 ;
[0161] 步骤115 :智能密钥设备判断认证请求命令中的注册地应用参数是否与保存的注 册地应用参数一致,是则执行步骤116,否则报错,返回步骤104 ;
[0162] 具体的,本实施例中,密钥索引、密钥句柄、注册地应用参数、用户密钥对--对应 保存;
[0163] 步骤116 :智能密钥设备等待用户按键信息,并判断是否在预设时间内接收到用 户按键信息,是则执行步骤117,否则报错,返回步骤104 ;
[0164] 步骤117 :智能密钥设备根据认证请求命令中的密钥句柄获取对应的用户密钥 对,根据预设算法使用用户密钥对中的私钥,对认证请求命令的数据域进行签名得到第二 签名结果;
[0165] 在本实施例中,步骤117中的数据域包括:32字节的注册地应用参数、1字节的用 户存在字节、4字节的计数器、32字节的挑战参数;
[0166] 步骤118 :智能密钥设备按照第二预设格式给上位机返回认证响应数据,返回步 骤 104。
[0167] 在本实施例中,第二预设格式为:
[0169] 步骤119 :智能密钥设备返回预设的字符串,返回步骤104 ;
[0170] 具体的,本实施例中的预设的字符串为U2F_V2。
[0171] 实施例三
[0172] 本发明实施例三提供一种智能密钥设备的工作方法,在本实施例中,只能注册一 次(即不允许重复进行注册),然后再进行身份认证,如图3所示,本实施例的方法包括:
[0173] 步骤201 :智能密钥设备上电,进行初始化;
[0174] 步骤202:当智能密钥设备接收到上位机发送的枚举描述符命令时,智能密钥设 备设置描述符;
[0175] 具体的,在本实施例中,智能密钥设备设置描述符具体为:
[0176] 步骤202-1 :设置配置描述符内容为HID设备;
[0177] 步骤202-2 :设置报告描述符;
[0178] 在本实施例中,报告描述符格式具体为:
[0179] Usage Page,//用途页
[0180] Usage,//用途
[0181] Collection,//应用集合
[0182] //Input Report 结构
[0183] Usage (X),Usage (Y),//用途 X/Y
[0184] Logical Minimum(O),//逻辑最小值 0
[0185] Logical Maximum (255),//逻辑最大值 255
[0186] Feature Size (8),//报告大小是 8bit
[0187] Feature Count (M),//报告数目 64bit
[0188] Input (Data, Variable, Relative),// 输入用
[0189] //Output Report 结构
[0190] Usage (X),Usage (Y),//用途 X/Y
[0191] Logical Minimum(O),//逻辑最小值 0
[0192] Logical Maximum (255),//逻辑最大值 255
[0193] Feature Size (8),//报告大小是 8bit
[0194] Feature Count (M),//报告数目 64bit
[0195] Input (Data, Variable, Relative),// 输出用
[0196] End Collection//应用集合结束
[0197] 设置报告描述符具体为:将全局Usage Page设为Ox dOfl,将局部Usage设为 0x01,将在 Input Report 结构中的 Usage 设为 0x20,将 Output Report 结构中的 Usage 设 为 0x21 ;
[0198] 步骤203 :智能密钥设备将描述符返回给上位机,执行步骤204 ;
[0199] 步骤204 :当智能密钥设备接收到上位机发送的命令,判断该命令的类型,如为协 议命令则执行步骤205,如为功能命令则执行步骤206 ;
[0200] 在本实施例中,根据命令中的第5个字节进行判断,如该字节为83H则表示为功能 命令,如为81H或86H则为协议命令;
[0201] 步骤205 :智能密钥设备将相应的数据返回,返回步骤204 ;
[0202] 在本实施例中,如令中的第五个字节为第一数据则返回接收到的数据;如令中的 第五个字节为第二数据则返回十七个有效字节的数据;优选的,第一数据为81H,第二数据 为 86H ;
[0203] 步骤206 :智能密钥设备判断功能命令的类型,如为注册请求命令则执行步骤 207,如为认证请求命令则执行步骤214,如为获取版本号命令则执行步骤219 ;
[0204] 具体的,在本实施例中,智能密钥设备根据命令中数据域的第二字节判断功能命 令的类型,如数据域的第二字节上的数据为01则为注册请求命令,如数据域的第二字节 上的数据为02则为认证请求命令,如数据域的第二字节上的数据为03则为获取版本号命 令;
[0205] 在本实施例中,注册请求命令的数据域包括32字节的挑战参数和32字节的注册 地应用参数,其中,挑战参数是客户信任端数据;注册地应用参数是注册用户信息;认证请 求命令数据域包括32字节的挑战参数、32字节的注册地应用参数、1字节的密钥句柄长度 和密钥句柄;认证请求命令符合APDU格式,具体为:CL IN P1P2LC数据域Le,具体的,在本 实施例中,Pl表示控制字符,如Pl的值为0x07则表示智能密钥设备必须返回身份验证响应 信息;如Pl的值为0x03则表示智能密钥设备进行签名与身份验证操作并返回响应消息;
[0206] 步骤207 :智能密钥设备判断当前用户是否已经注册过,是则报错,返回步骤204, 否则执行步骤208 ;
[0207] 步骤208 :智能密钥设备生成用户密钥对,根据生成的用户密钥对和注册请求命 令中的注册地应用参数得到密钥信息,获取空闲的密钥索引;
[0208] 在本实施例中,每一个密钥索引对应于密钥句柄、注册地应用参数、密钥对、计数 器;
[0209] 步骤209 :智能密钥设备判断是否在预设时间内接收到用户按键信息,是则执行 步骤210,否则报错,返回步骤204 ;
[0210] 在本实施例中的预设时间优选为5秒;
[0211] 步骤210:智能密钥设备将生成的用户密钥对与密钥索引进行关联,并根据预设 算法对注册请求命令中的数据域部分进行签名,得到第一签名结果并保存;
[0212] 优选的,在本实施例中,用户密钥对为ECC密钥对,长度为96字节;预设算法为 E⑶SA算法,还可以为SM2算法;
[0213] 具体的,本实施例中进行签名的待签名数据包括:1字节的保留字符(例如0x00)、 32字节应答参数、32字节注册地应用参数、用户密钥对的密钥句柄和65字节的用户公钥;
[0214] 具体的,在本实施中,进行签名的具体实现过程为:根据预设算法对注册请求命令 中的数据域部分进行哈希计算得到第一哈希值,使用用户密钥对中的私钥对第一哈希值进 行签名得到第一签名结果;
[0215] 步骤211 :智能密钥设备使用预置的根密钥对的私钥对用户密钥对颁发一个数字 证书;
[0216] 具体的,本实施例中的数字证书中包括:用户信息、用户公钥等注册地应用参数;
[0217] 在本实施例中,生成数字证书的过程具体为:智能密钥设备内部保存一个证书模 板,然后智能密钥设备生成证书序列号,用该证书序列号和用户公钥更新证书中的序列号、 用户公钥,使用智能密钥设备内预存的私钥对证书模板中的版本号和公钥等数据进行签名 操作,把签名结果放到证书模板的签名项中;
[0218] 颁发证书的过程包括:智能密钥设备内预置一对根密钥对,该根密钥对的公钥存 在服务器端,智能密钥设备使用根密钥对的私钥对用户密钥对颁发一个数字证书;服务器 端可以使用根密钥对对的公钥验证这个证书的合法性,达到双向认证的目的;
[0219] 在本实施中,优选的,数字证书为X. 509证书,具体格式为:
[0220] [Certificate:: = SEQUENCE{
[0221] tbsCertificate TBSCertificate, //证书信息,结构见下
[0222] signatureAlgorithm AlgorithmIdentif ier, // 办法者签名算法标识
[0223] signature BIT STRING //颁发者的签名
[0224] }
[0225] 其中第一项 TBSCertificate 的结构:
[0226] TBSCertificate:: = SEQUENCE{
[0227] version [0]EXPLICIT Version DEFAULT vl, //X. 509 版本号
[0228] serialNumber Certif icateSerialNumber, // 证书序列号
[0229] signature AlgorithmIdentifier, //签名算法标不符
[0230] issuer Name,
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1