CN101807237B - 签名方法及装置 - Google Patents
签名方法及装置 Download PDFInfo
- Publication number
- CN101807237B CN101807237B CN201010115810A CN201010115810A CN101807237B CN 101807237 B CN101807237 B CN 101807237B CN 201010115810 A CN201010115810 A CN 201010115810A CN 201010115810 A CN201010115810 A CN 201010115810A CN 101807237 B CN101807237 B CN 101807237B
- Authority
- CN
- China
- Prior art keywords
- signature
- instruction
- main frame
- state
- intelligent cipher
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000007689 inspection Methods 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 abstract 1
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008676 import Effects 0.000 description 5
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 3
- 239000003607 modifier Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种签名方法及装置,涉及信息安全技术领域,保证用户的真实身份。本发明中智能密钥设备与主机建立连接,接收主机下发的指令;接收创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;接收数据传输指令后,缓存接收到的数据;将当前安全状态设置为不可用状态;接收验证PIN码指令后,对PIN码进行验证,验证成功,则设为可用状态;验证失败,则设为不可用状态;接收到关键操作指令后,检查当前的安全状态,当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。本发明主要用于各种智能密钥装置的签名操作中。
Description
技术领域
本发明涉及信息安全领域,尤其涉及签名方法及装置。
背景技术
智能密钥装置能够很好的满足个人身份认证的需要,可通过计算机的数据通讯接口与计算机连接。并且智能密钥装置在进行身份认证时将与计算机相连,用户在计算机上输入PIN码,智能密钥装置会自动校验该PIN码的正确性,当用户输入的PIN码正确时,表示用户的个人身份合法。智能密钥装置内置有主控芯片,其中固化了智能密钥装置的安全操作系统(COS),并且主控芯片内含RSA算法处理器和对称算法处理器,能够在内部加密数据,也能够在内部产生RSA密钥对,并利用RSA密钥对数据进行“签名”和“解签名”。
由于智能密钥装置具有高安全的特性,所以很多要求安全性较高的领域都采用智能密钥装置进行身份认证,以保证操作的安全性。例如银行系统利用智能密钥装置认证柜员和用户的身份。
在使用上述智能密钥装置的过程中,发明人发现现有技术中至少存在如下问题:用户在一次通过PIN码验证后,后续过程中利用智能密钥装置进行签名等操作时不需要再次进行PIN码验证,但是用户在一次通过PIN码验证后,计算机可能被黑客或者其他人控制,真正在操作计算机的并不是用户本人,此时同样能够进行签名等操作,但已经不能保证用户的真实身份。
发明内容
本发明的实施例提供一种签名方法及装置,确保每次进行签名操作时都需要先进行P I N验证,保证用户的真实身份。
为达到上述目的,本发明的实施例采用如下技术方案:
一种签名方法,包括:
智能密钥设备与主机建立连接,并等待接收所述主机下发的指令;
所述智能密钥设备接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;
所述智能密钥设备接收到数据传输指令后,缓存接收到的数据;
所述智能密钥设备将当前安全状态设置为不可用状态;
所述智能密钥设备接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状态;
所述智能密钥设备接收到关键操作指令后,检查当前的安全状态,如果当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
一种签名装置,包括:
连接单元,用于将智能密钥设备与主机建立连接;
接收单元,用于在所述连接单元将所述智能密钥设备与所述主机建立连接后,等待接收所述主机下发的指令;
第一执行单元,用于在所述接收单元接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;
第二执行单元,用于在所述接收单元接收到数据传输指令后,缓存接收到的数据;
第三执行单元,用于将所述智能密钥设备的当前安全状态设置为不可用状态;
验证单元,用于在所述接收单元接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将所述智能密钥设备的当前安全状态设为可用状态;如果验证失败,则将所述智能密钥设备的当前安全状态设为不可用状态;
检查单元,用于在所述接收单元接收到关键操作指令后,检查所述智能密钥设备的当前的安全状态;
返回单元,用于当所述检查单元的检查结果为当前安全状态是可用状态时,向所述主机返回操作结果;当所述检查单元的检查结果为当前安全状态是不可用状态时,向所述主机返回安全状态不满足的状态码。
本发明实施例提供的签名方法及装置,在执行普通的操作指令后需要将状态机设置为不可用状态,而在需要返回签名结果时如果遇到状态机位不可用状态则不能返回签名结果。为了能够返回签名结果需要使得PIN验证成功才能将状态机的状态修改为可用状态,此时才能够正确返回签名结果。采用本发明实施例之后可以使得在返回签名结果之前必须进行PIN验证,保证了用户的真实性和合法性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例签名方法流程图;
图2为本发明实施例签名装置框图;
图3为本发明实施例1中签名方法流程图;
图4为本发明实施例2中签名方法流程图;
图5为本发明实施例3中签名方法流程图。
具体实施方式
本发明实施例提供了一种签名方法,需要说明的是,本发明实施例提供的智能密钥设备内部保存原有PIN码和私钥。本实施例以USBKEY这种较为典型的智能密钥设备作为该方法的执行主体进行说明,但并不用以限制该方法的执行主体,本领域技术人员所熟知的智能密钥设备均在本发明的保护范围之内。
USB KEY内置SHA1(Secure Hash Algorithm安全哈希算法)和RSA算法,所述USB KEY从主机中接收指令,接收到的指令为APDU(应用协议数据单元)格式的指令,所述USB KEY根据指令完成各种操作。主机中安装有配合USB KEY使用的中间件,它向上层应用程序(如IE)提供微软定义的CryptoAPI接口。当应用程序调用CryptoAPI接口时,中间件生成相应的APDU指令序列发给USB KEY,通知USB KEY进行各种操作。
USB KEY连接上计算机后只需要等待接收指令,接收到指令后执行相应的操作,之后回到等待接收指令的状态,直到USB KEY接收到下电指令或USB KEY与主机断开连接,结束等待接收指令的状态。
本发明实施例提供一种签名方法,如图1所示,该方法包括:
101、智能密钥设备在工作时需要与主机建立连接,并等待接收所述主机下发的指令;
102、如果所述智能密钥设备接收到主机下发的创建安全环境指令,智能密钥设备清空缓存,然后设置签名算法,并指定签名所使用的密钥ID;
103、如果所述智能密钥设备接收到数据传输指令,则所述智能密钥设备缓存接收到的数据;
104、在执行上述指令后,所述智能密钥设备将当前安全状态设置为不可用状态;
105、为了保证该智能密钥装置能够正常返回签名结果,需要对PIN进行验证,所述智能密钥设备接收到验证PIN码指令后,对接收到的P I N码进行验证,如果验证成功,则将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状态;
106、所述智能密钥设备接收到关键操作指令后,检查当前的安全状态,如果当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。如此一来便使得返回签名结果之前必须进行PIN验证,保证了用户的真实性和合法性。
本发明实施例还提供了一种签名装置,如图2所示,该装置包括:连接单元21、接收单元22、第一执行单元23、第二执行单元24、第三执行单元25、验证单元26、检查单元27、返回单元28。
其中,连接单元21用于将所述智能密钥设备与主机建立连接;接收单元22用于在所述连接单元将所述智能密钥设备与所述主机建立连接后,等待接收所述主机下发的指令;第一执行单元23用于在所述接收单元接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;第二执行单元24用于在所述接收单元接收到数据传输指令后,缓存接收到的数据;第三执行单元25用于将所述智能密钥设备的当前安全状态设置为不可用状态;验证单元26用于在所述接收单元接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将所述智能密钥设备的当前安全状态设为可用状态;如果验证失败,则将所述智能密钥设备的当前安全状态设为不可用状态;检查单元27用于在所述接收单元接收到关键操作指令后,检查所述智能密钥设备的当前的安全状态;返回单元28用于当所述检查单元的检查结果为当前安全状态是可用状态时,向所述主机返回操作结果;当所述检查单元的检查结果为当前安全状态是不可用状态时,向所述主机返回安全状态不满足的状态码。
本发明实施例提供的签名方法及装置,在执行普通的操作指令后需要将状态机设置为不可用状态,而在需要返回签名结果时如果遇到状态机位不可用状态则不能返回签名结果。为了能够返回签名结果需要使得PIN验证成功才能将状态机的状态修改为可用状态,此时才能够正确返回签名结果。采用本发明实施例之后可以使得在返回签名结果之前必须进行PIN验证,保证了用户的真实性和合法性。
本发明实施例中的第一执行单元23还用于在所述接收单元接收到创建安全环境指令后,清空缓存,并判断所述智能密钥设备的当前安全状态是否为可用状态;如果是可用状态,则设置签名算法,并指定签名所需要的密钥ID;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
在所述数据传输指令为hash指令或put hash指令时,本发明实施例中的第二执行单元24执行hash指令还包括:缓存接收到的待签名数据的原文;第二执行单元24执行put hash指令还包括:缓存接收到的待签名数据原文的哈希值。
进一步地,本发明实施例中第三执行单元25将当前安全状态设置为不可用状态之前,如果所述接收单元22接收到第一操作指令后,则所述第三执行单元25执行所述第一操作指令;其中,所述第一操作指令包括解密指令和不需要返回签名结果的签名指令。
具体而言,所述第三执行单元25执行解密指令包括:判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥I D,如果有,则执行签名操作,缓存签名结果,并将当前安全状态设为不可用状态,如果没有,向所述主机返回错误码;
所述第三执行单元25执行不需要返回签名结果的签名指令包括:所述智能密钥设备判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID,如果有,进行签名操作,并缓存签名结果,将当前安全状态设为不可用状态,如果没有,则向所述主机返回错误码。
如果所述接收单元22接收到第一操作指令,则所述接收单元22接收到的关键操作指令为取所述第一操作指令的操作结果指令。
本发明实施例中检查单元27的具体实现还包括:判断模块271,所述判断模块271用于判断所述智能密钥设备是否缓存有签名结果;
所述返回单元28还用于在所述判断模块271的判断结果是所述智能密钥设备没有缓存签名结果时,向所述主机返回错误码;所述检查单元27在所述判断模块271的判断结果是所述智能密钥设备缓存有签名结果,则判断当前安全状态是否是可用状态;所述返回单元28还用于在当前安全状态是可用状态时,向所述主机返回签名结果;在当前安全状态是不可用状态时,向所述主机返回安全状态不满足的状态码。
为了说明本发明方案的具体应用,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
USB KEY内部使用“状态机”实现对文件访问的限制,“状态机”是一个变量,每一级DF(Dedicated File:一组或几组应用数据的入口)都有一个“状态机”。USB KEY的“状态机”缺省安全状态为public状态(不可用状态),在这种状态下USB KEY没有访问私钥的权限;在public状态,如果USB KEY验证PIN码成功,则“状态机”的安全状态转为user状态(可用状态),此时USB KEY具有访问私钥的权限;在“状态机”的安全状态为user状态下,如果USB KEY验证PIN码失败,则“状态机”的安全状态转变为public状态。
本发明实施例提供一种签名方法,利用USB KEY的“状态机”实现返回签名结果的控制,如图3所示,该方法包括:
301、USB KEY在与主机(一般是计算机)建立连接后,等待接收主机下发的指令;
302、USB KEY接收到主机下发的操作指令后,判断主机下发的命令是MS E指令、hash指令、验证PIN码指令或是签名指令的哪一种,本实施例中的签名指令是指需要返回签名结果的签名指令;
如果是MSE指令,则执行303;
如果是hash指令,则执行305;
如果是验证PIN码指令,则执行307;
如果是签名指令,则执行步310;
303、USB KEY清空当前缓存的待签名数据及hash值和签名,并设置当前使用的签名算法和密钥;具体实现时,USB KEY接收到MSE指令后,根据MSE指令中的标识检索签名操作所使用的签名算法和密钥。
所以,使用不同签名算法时MSE指令的具体内容是不同的,以USBKEY接收到主机下发的APDU格式的MSE指令为例,其基本格式如下:
//MSE指令标识,设置签名算法为SHA1-RSA,以及所使用的RSA密钥ID
该格式对应的具体指令为:00 22 41 B6 07 80 01 12 81 02 00 01…
304、向主机返回预先约定的表示操作成功的状态字0x9000,并返回执行302;
305、USB KEY在接收到主机下发的hash指令后,USB KEY对传入的待签名数据进行hash运算,并将当前安全状态设为public状态;在本实施例中,USB KEY接收到主机下发hash指令后,可以使用内置的SHA1算法对传入的待签名数据进行hash运算,并将运算得到的Hash值缓存在USB KEY内部。
具体地,USB KEY对hash指令中包含的待签名数据进行hash运算,USB KEY接收到的APDU指令序列格式如下:
//hash指令标识,在此指令中传入待签名的数据原文
该格式对应的具体指令可以为:00 2a 90 80…
306、向主机返回预先约定的表示操作成功的状态字:0x9000,并返回执行302;
307、USB KEY接收到主机下发的验证PIN码指令后,对主机下发的PIN码进行验证,如果PIN码验证成功,则执行308;如果PIN码验证失败,则执行309;
具体地,USB KEY接收到的验证PIN码指令的APDU指令序列格式为://验证PIN码指令;
其对应的具体指令可以为:00 20 00 00 04 00
本发明实施例在进行PIN验证后还可以开始计次,用于最大输入次数限制处理,如果累计输入PIN码次数超过约定的最大输入次数,则USB KEY操作结束,向主机返回事先约定的表示操作取消的状态码:0x7777;这样一来可以再多次输入错误的PIN后停止验证,保证了账户的安全;
308、将当前安全状态设为user状态,向主机返回“PIN码验证成功”的状态码:0x9000,并返回执行302;
309、将当前安全状态设为public状态,向主机返回“PIN码验证失败”的状态码:0x6d12,并返回执行302;
310、USB KEY接收到需要返回签名结果的签名指令后,USB KEY检查当前是否设置过签名算法及密钥、并保存有hash值,如果设置了签名算法及密钥,并保存有hash值,则执行311;否则,执行315;
具体地,USB KEY接收到的APDU指令序列格式如下:
//签名指令
其对应的具体指令可以为:00 2a 9E 00 00 00
311、由于需要返回签名结果的签名指令是关键操作指令,故而本发明实施例中USB KEY检查当前安全状态是user状态还是public状态,如果是user状态,则执行312,如果是public状态,则执行314;
312、USB KEY进行签名操作以得到签名结果,并将得到的签名结果上传主机,然后执行313;
具体地,利用根据MSE指令设置的密钥及根据hash指令计算得到的hash值计算签名结果,将计算得到的签名结果上传主机;
313、向主机返回预先约定的表示操作成功的状态字:0x9000,签名操作结束,返回执行302;
314、向主机返回“安全状态不满足”的状态字:0x6982,并返回执行302;
315、向主机返回错误码0x6d00,并返回执行302。
需要说明的是,USB KEY在执行过需要返回签名结果的签名指令后(即已向主机返回了签名结果),将当前缓存的签名结果清除,并返回等待接收主机下发指令的状态,当前的签名操作流程结束,此时,如果USB KEY重复接收到需要返回签名结果的签名指令,则向主机报错;
需要说明的是,在本实施例中,主机是可以通过下发put hash指令来替代下发的hash指令的,如果主机下发了put hash指令,则USBKey在接收到put hash指令后,保存接收到待签名数据原文的哈希值至USB KEY缓存中,并将当前的安全状态设置为不可用状态;
USB KEY接收到的APDU指令序列格式如下:
//put hash值指令,在此指令中传入hash值
该格式对应的具体指令可以为:00 2a 90 81 14…
USB KEY根据接收到的操作指令进行相应的操作,在本实施例中,执行需要返回签名结果的签名指令时需要检查当前的安全状态,只有在当前安全状态处于user状态,才能执行签名操作,并将签名结果上传主机。而本发明实施例在接收哈希指令时将安全状态设为了public状态;为了保证签名的正常进行,本发明实施例可以通过对PIN码进行验证,并根据PIN码验证结果来改变当前的安全状态,在PIN码验证通过后将安全状态修改为user状态。这就保证了在返回签名结果之前必须要验证PIN码,并在验证PIN码成功的情况下,USB KEY才能将签名结果返回给主机,从而保证了交易主体的合法性。
实施例2
本发明实施例提供的一种签名方法,如图4所示,该方法包括:
401、USB KEY在与主机(一般是计算机)建立连接后,等待接收主机下发的指令;
402、USB KEY接收到主机下发的操作指令后,USB KEY判断主机下发的命令是MS E指令,put hash指令、签名指令、验证PIN码指令或是获取签名结果指令的哪一种;本实施例中的签名指令是指不需要返回签名结果的签名指令;
如果是MSE指令,则执行403;
如果是put hash指令,则执行408;
如果是签名指令,则执行410;
如果是验证PIN码指令,则执行414;
如果是获取签名结果指令,则执行417;
403、USB KEY接收到主机下发的MSE指令后,清空当前缓存的待签名数据及hash值和签名;
404、USB KEY检查当前安全状态是user状态还是public状态,如果是user状态,则执行405;如果是public状态,则执行407;
其中,如果USB KEY上电后接收过主机下发的验证PIN码指令,且USB KEY在步骤404前验证PIN码的结果是成功,则当前安全状态就是User状态,在该状态下,USB KEY执行405以便设置签名算法和密钥;
405、USB KEY根据接收到的主机下发的MSE指令来设置签名算法和密钥;USB KEY接收到MSE指令后,根据MSE指令中的标识检索签名操作所使用的签名算法和密钥;
所以,使用不同签名算法时MSE指令的具体内容是不同的,以USBKEY接收到主机下发的APDU格式的MSE指令为例,其基本格式如下:
//MSE指令标识,设置签名算法为SHA1-RSA,以及所使用的RSA密钥ID
该格式对应的具体指令为:00 22 41 B6 07 80 01 12 81 02 00 01…
406、向主机返回预先约定的表示操作成功的状态字0x9000,并返回执行402;
407、向主机返回“安全状态不满足”的状态字:0x6982,并返回执行402;
执行上述403至407的流程可以保证只有在user状态下才能设置签名算法和密钥,在public状态不能设置签名算法和密钥,这就间接地使得在public状态不能执行进行签名算法,只有通过后续的PIN验证成功后才能设置签名算法和密钥;故而采用上述流程后,需要在验证PIN码成功的情况下,USB KEY才能进行签名,从而保证了交易主体的合法性。
408、USB KEY接收到主机下发的put hash值指令后,把接收到的hash值缓存在USB KEY内部;
USB KEY接收到的APDU指令序列格式如下:
//put hash值指令,在此指令中传入hash值
该格式对应的具体指令可以为:00 2a 90 81 14…
409、向主机返回预先约定的表示操作成功的状态字:0x9000,并返回执行402;
410、本实施例中的签名指令为不需要返回签名结果的签名指令,所以,USB KEY接收到主机下发的签名指令后,USB KEY检查当前是否设置过签名算法及密钥、并保存有hash值,如果设置了签名算法及密钥,并保存有hash值,则执行411;否则,执行413;
USB KEY接收到的APDU指令序列格式为://签名指令;
该格式对应的具体指令可以为:00 2a 9E 00 00 00;
411、USB KEY接收到签名指令后,使用根据MSE指令设置的密钥并根据保存的hash值进行签名计算,并将计算结果缓存在设备内部;然后将当前安全状态设为Public状态;
412、向主机返回操作成功的状态码0x9000,并返回执行402;
413、向主机返回错误码0x6d00,并返回执行402;
414、USB KEY接收到主机下发的验证PIN码指令后,对主机下发的PIN码进行验证,如果PIN码验证成功,则执行415;如果PIN码验证失败,则执行416;
具体地,USB KEY接收到的验证PIN码指令的APDU指令序列格式为://验证PIN码指令;
其对应的具体指令可以为:00 20 00 00 04 00
本发明实施例在进行PIN验证后还可以开始计次,用于最大输入次数限制处理,如果累计输入PIN码次数超过约定的最大输入次数,则USB KEY操作结束,向主机返回事先约定的表示操作取消的状态码:0x7777;这样一来可以再多次输入错误的PIN后停止验证,保证了账户的安全;
415、将当前安全状态设为user状态,向主机返回“PIN码验证成功”的状态码:0x9000,并返回执行402;
416、将当前安全状态设为public状态,向主机返回“PIN码验证失败”的状态码:0x6d12,并返回执行402;
417、USB KEY接收到获取签名结果的指令后,检查当前是否保存有签名结果,如果保存有签名结果,则执行418;如果没有保存签名结果,则返回执行402;
USB KEY接收到的APDU指令序列格式为://获取签名结果指令;其对应的具体指令可以为:80 E3 00 00 00 00;
418、由于获取签名结果的指令是关键操作指令,所以本发明实施例中USB KEY检查当前安全状态是user状态还是public状态,如果是user状态,则执行419,如果是public状态,执行420;
419、将签名结果上传主机,并向主机返回预先约定的表示成功的状态字:0x9000,签名操作结束,返回执行402;
420、向主机返回事先约定的标识“安全状态不满足”的状态字:0x6982,并返回执行402。
需要说明的是,USB KEY在执行过取签名结果指令后(即已向主机返回了签名结果),将当前缓存的签名结果清除,并返回等待结收主机下发的指令的状态,当前一次的签名操作流程结束,此时,如果USB KEY重复接收到取签名结果指令,则向主机报错。
需要说明的是,本发明实施例中主机可以通过下发hash指令来替代下发的put hash指令,则USB KEY接收到主机下发的hash指令后,根据内置的SHA1算法对接收到的待签名数据的原文进行哈希运算,并将计算得到的哈希值保存至USB KEY缓存内;
USB KEY接收到的APDU指令序列格式如下:
//hash指令标识,在此指令中传入待签名的数据原文
该格式对应的具体指令可以为:00 2a 90 80…
本发明实施例中的签名指令并不需要返回签名结果,故而可以在执行完签名指令后将当前安全状态修改为public状态,而在执行获取签名结果指令的时候,需要当前安全状态处于user状态才能正确返回签名结果。而当前安全状态需要在PIN码验证成功后才能变更为user状态,这就保证了在执行获取签名结果操作之前必须要验证PIN码,并在验证PIN码成功的情况下,USB KEY才能返回签名结果,从而保证了交易主体的合法性。
实施例3
本发明实施例提供的一种签名方法,如图5所示,该方法包括:
501、USB KEY在与主机(一般是计算机)建立连接后,等待接收主机下发的指令;
502、USB KEY接收到主机下发的操作指令后,判断主机下发的命令是MSE指令,解密指令、验证PIN码指令或是获取签名结果指令的哪一种;
如果是MSE指令,则执行503;
如果是解密指令,则执行505;
如果是验证PIN码指令,则执行509;
如果是获取签名结果指令,则执行512;
503、USB KEY清空当前缓存的待签名数据及hash值和签名,并设置当前使用的签名算法和密钥,然后将当前安全状态设为public状态;具体实现时,USB KEY接收到MSE指令后,根据MSE指令中的标识检索签名操作所使用的签名算法和密钥。
所以,使用不同签名算法时MSE指令的具体内容是不同的,以USBKEY接收到主机下发的APDU格式的MSE指令为例,其基本格式如下:
//MSE指令标识,设置签名算法为SHA1-RSA,以及所使用的RSA密钥ID
该格式对应的具体指令为:00 22 41 B6 04 81 02 00 01
504、向主机返回预先约定的表示操作成功的状态字0x9000,并返回执行502;
505、USB KEY在接收到解密指令后,检查当前是否设置过密钥,如果设置过密钥,则执行506;如果没有设置过密钥,则执行508;
USB KEY接收到的APDU指令序列格式如下:
//解密指令,在此指令中包含传入的数据;
该格式对应的具体指令为:00 2a 90 03......
这里的解密指令属于第一操作指令,在实际运用时,第一操作指令还包括但不限于:不需要返回签名结果的签名指令。
506、USB KEY保存传入的操作数据,并根据MSE指令设置的密钥进行签名计算,将签名结果保存在USB KEY内部;该操作数据是经过补位、带有MD5算法标识符的待签名数据的MD5 hash值,这样,即使USB KEY没有内置MD5算法,也可计算MD5-RSA的签名;
同时,本发明实施例还需要将当前安全状态设为public状态;
这里的签名计算是指:USB KEY根据MSE指令设置的密钥对伴随解密指令传入的数据进行运算。
507、向主机返回预先约定的表示成功的状态字0x9000,并返回执行502;
508、向主机返回错误码0x6d00,并返回执行502;
509、USB KEY接收到PIN码验证指令后,对主机下发的PIN码进行验证,如果验证成功,则将执行510;如果验证失败,执行511;
本发明实施例在进行PIN码验证后还可以开始计次,用于最大输入次数限制处理,如果累计输入PIN码次数超过约定的最大输入次数,则USB KEY操作结束,向主机返回事先约定的表示操作取消的状态码:0x7777;这样一来可以再多次输入错误的PIN后停止验证,保证了账户的安全;
510、将当前安全状态设为user状态,并返回执行502;
511、将当前安全状态设为public状态,并返回执行502;
512、USB KEY接收到获取签名结果的指令后,检查当前是否保存有签名结果,如果保存有签名结果,则执行513;如果没有保存签名结果,则执行516;
USB KEY接收到的APDU指令序列格式为://获取签名结果指令;其对应的具体指令可以为:00 2a 9E 03......;
513、由于获取签名结果的指令是关键操作指令,所以本发明实施例中的USB KEY检查当前安全状态是user状态还是public状态,如果是user状态,则执行514,如果是public状态,执行515;
514、将签名结果上传主机,并向主机返回预先约定的表示成功的状态字:0x9000,签名操作结束,返回执行502;
515、向主机返回事先约定的标识“安全状态不满足”的状态字:0x 6982,并返回执行502。
516、向主机返回错误码0x6d00,并返回502;
需要说明的是,USB KEY执行过取签名结果指令后(即已向主机返回了签名结果),将当前缓存的签名结果进行清除,并返回等待接收主机下发指令的状态,USB KEY当前签名操作流程结束,此时,如果USBKEY重复接收到取签名结果指令,则向主机报错;
USB KEY根据接收到的操作指令进行相应的操作,在本实施例中,执行需要返回签名结果的获取签名结果指令时需要检查当前的安全状态,只有在当前安全状态是user状态,才能将签名结果上传主机。而本发明实施例在接收解密指令时将当前安全状态设为了public状态;为了保证签名的正常进行,本发明实施例可以通过对PIN码进行验证的结果来改变当前安全状态,在PIN码验证通过后将当前安全状态修改为user状态。这就保证了在执行签名操作之前必须要验证PIN码,并在验证PIN码成功的情况下,USB KEY才能执行签名操作,从而保证了交易主体的合法性。
本发明实施例中除了上述方案中提到的创建安全环境指令、哈希指令、解密指令、Put hash指令、或者不需要返回签名结果的签名指令外,在执行其他指令的时候也可以采用本发明提供的方案,将状态机修改为public状态,以保证每次返回签名结果都需要在验证PIN码成功的情况下进行。
本发明实施例主要用于各种智能密钥装置的签名方法中,包括但不限于USB KEY中的签名方法。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (16)
1.一种签名方法,其特征在于,包括:
智能密钥设备与主机建立连接,并等待接收所述主机下发的指令;
所述智能密钥设备接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;
所述智能密钥设备接收到数据传输指令后,缓存接收到的数据;
所述智能密钥设备将当前安全状态设置为不可用状态;
所述智能密钥设备接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状态;
所述智能密钥设备接收到关键操作指令后,检查当前的安全状态,如果当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
2.根据权利要求1所述的签名方法,其特征在于,所述智能密钥设备接收到创建安全环境指令后,所述方法还包括:
清空缓存,并判断当前安全状态是否为可用状态;
如果当前安全状态是可用状态,则设置签名算法,并指定签名所需要的密钥ID;
如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
3.根据权利要求1所述的签名方法,其特征在于,所述数据传输指令为hash指令或put hash指令;
当所述智能密钥设备接收到hash指令后,缓存接收到的待签名数据原文;
当所述智能密钥设备接收到put hash指令后,缓存接收到的待签名数据原文的哈希值。
4.根据权利要求1所述的签名方法,其特征在于,所述智能密钥设备将当前安全状态设置为不可用状态之前,所述方法还包括:
所述智能密钥设备接收到第一操作指令,并执行所述第一操作指令;
其中,所述第一操作指令包括解密指令或不需要返回签名结果的签名指令。
5.根据权利要求4所述的签名方法,其特征在于,所述智能密钥设备接收到解密指令后:检查当前是否设置过密钥,如果是,则执行签名操作,缓存签名结果,并将当前安全状态设为不可用状态,如果不是,则向所述主机返回错误码;
所述智能密钥设备接收到不需要返回签名结果的签名指令后:所述智能密钥设备判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID,如果有,进行签名操作,并缓存签名结果,将当前安全状态设为不可用状态,如果没有,则向所述主机返回错误码。
6.根据权利要求4所述的签名方法,其特征在于,当所述智能密钥设备接收到第一操作指令时,则所述关键操作指令为取所述第一操作指令的操作结果指令。
7.根据权利要求6所述的签名方法,其特征在于,所述智能密钥设备接收到取所述第一操作指令的操作结果指令时,判断当前缓存中是否有所述第一操作指令的操作结果,如果没有,则向所述主机返回错误码,如果有,所述智能密钥设备判断当前安全状态是否是可用状态;
如果是可用状态,则向所述主机返回所述第一操作指令的操作结果,并清空缓存;
如果是不可用状态,则向所述主机返回安全状态不满足的状态码。
8.根据权利要求1所述的签名方法,其特征在于,所述关键操作指令为需要返回签名结果的签名指令;
当所述智能密钥设备接收到所述需要返回签名结果的签名指令后,
所述智能密钥设备判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名密钥的ID;
如果没有,则向所述主机返回错误码;
如果有,所述智能密钥设备判断当前安全状态是否是可用状态;
如果是可用状态,则执行签名操作,并将签名结果上传所述主机;
如果是不可用状态,向所述主机返回安全状态不满足的状态码。
9.根据权利要求1所述的签名方法,其特征在于,所述方法还包括:
所述智能密钥设备接收到验证PIN码指令时,对接收到的PIN码进行验证的同时,对验证PIN码的验证次数进行最大输入次数限制处理,如果累计输入PIN码次数超过约定的最大输入次数,则所述智能密钥设备的操作结束。
10.一种签名装置,其特征在于,包括:
连接单元,用于将智能密钥设备与主机建立连接;
接收单元,用于在所述连接单元将所述智能密钥设备与所述主机建立连接后,等待接收所述主机下发的指令;
第一执行单元,用于在所述接收单元接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;
第二执行单元,用于在所述接收单元接收到数据传输指令后,缓存接收到的数据;
第三执行单元,用于将所述智能密钥设备的当前安全状态设置为不可用状态;
验证单元,用于在所述接收单元接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将所述智能密钥设备的当前安全状态设为可用状态;如果验证失败,则将所述智能密钥设备的当前安全状态设为不可用状态;
检查单元,用于在所述接收单元接收到关键操作指令后,检查所述智能密钥设备的当前的安全状态;
返回单元,用于当所述检查单元的检查结果为当前安全状态是可用状态时,向所述主机返回操作结果并清空缓存;当所述检查单元的检查结果为当前安全状态是不可用状态时,向所述主机返回安全状态不满足的状态码。
11.根据权利要求10所述的签名装置,其特征在于,所述第一执行单元还用于在所述接收单元接收到创建安全环境指令后,清空缓存,并判断所述智能密钥设备的当前安全状态是否为可用状态;如果是可用状态,则设置签名算法,并指定签名所需要的密钥ID;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
12.根据权利要求10所述的签名装置,其特征在于,所述数据传输指令为hash指令或put hash指令;
所述第二执行单元执行hash指令包括:缓存接收到的待签名数据的原文;
或
所述第二执行单元执行put hash指令包括:缓存接收到的待签名数据原文的哈希值。
13.根据权利要求10所述的签名装置,其特征在于,所述第三执行单元将当前安全状态设置为不可用状态之前还包括,所述第三执行单元在所述接收单元接收到第一操作指令后,所述第三执行单元执行所述第一操作指令;
其中,所述第一操作指令包括解密指令和不需要返回签名结果的签名指令。
14.根据权利要求13所述的签名装置,其特征在于,所述第三执行单元执行解密指令包括:检查当前是否设置过密钥,如果是,则执行签名操作,缓存签名结果,并将当前安全状态设为不可用状态,如果不是,则向所述主机返回错误码;
所述第三执行单元执行不需要返回签名结果的签名指令包括:所述智能密钥设备判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID,如果有,进行签名操作,并缓存签名结果,将当前安全状态设为不可用状态,如果没有,则向所述主机返回错误码。
15.根据权利要求13所述的签名装置,其特征在于,所述接收单元接收到第一操作指令,则所述接收单元接收到的关键操作指令为取所述第一操作指令的操作结果指令。
16.根据权利要求11所述的签名装置,其特征在于,所述检查单元还包括:
判断模块,用于判断所述智能密钥设备是否缓存有签名结果;
所述返回单元还用于在所述判断模块的判断结果是所述智能密钥设备没有缓存签名结果,则向所述主机返回错误码;
所述检查单元在所述判断模块的判断结果是所述智能密钥设备缓存有签名结果,则判断当前安全状态是否是可用状态;
所述返回单元还用于在当前安全状态是可用状态时,向所述主机返回签名结果;在当前安全状态是不可用状态,向所述主机返回安全状态不满足的状态码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010115810A CN101807237B (zh) | 2010-03-01 | 2010-03-01 | 签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010115810A CN101807237B (zh) | 2010-03-01 | 2010-03-01 | 签名方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101807237A CN101807237A (zh) | 2010-08-18 |
CN101807237B true CN101807237B (zh) | 2012-10-03 |
Family
ID=42609026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010115810A Active CN101807237B (zh) | 2010-03-01 | 2010-03-01 | 签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101807237B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389520A (zh) * | 2015-11-11 | 2016-03-09 | 中国建设银行股份有限公司 | 一种数据访问控制方法和装置以及移动存储介质 |
CN106850700B (zh) * | 2017-04-11 | 2018-11-20 | 北京深思数盾科技股份有限公司 | 安全操作合法性验证方法及装置 |
CN107070918B (zh) * | 2017-04-14 | 2019-07-30 | 天地融科技股份有限公司 | 一种网络应用登录方法和系统 |
CN108199834B (zh) * | 2018-01-16 | 2021-07-02 | 飞天诚信科技股份有限公司 | 一种智能密钥设备工作的方法及装置 |
CN110190950B (zh) * | 2019-06-11 | 2021-04-27 | 飞天诚信科技股份有限公司 | 一种安全签名的实现方法及装置 |
CN114816737B (zh) * | 2022-04-11 | 2024-03-22 | 中国电子科技集团公司第三十研究所 | 高性能杂凑运算方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009555A (zh) * | 2006-12-29 | 2007-08-01 | 北京飞天诚信科技有限公司 | 一种智能密钥装置及其与主机进行信息交互的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001105690A (ja) * | 1999-10-05 | 2001-04-17 | Sharp Corp | 画像形成装置および印刷システムならびに印刷制御方法 |
DE10056135A1 (de) * | 2000-11-07 | 2002-05-08 | Deutsche Telekom Ag | Verfahren und Anordnung für ein Rechte-Ticket-System zur Erhöhung der Sicherheit bei der Zugangskontrolle zu Rechnerrecourcen |
US20040109567A1 (en) * | 2002-12-05 | 2004-06-10 | Canon Kabushiki Kaisha | Encryption key generation in embedded devices |
-
2010
- 2010-03-01 CN CN201010115810A patent/CN101807237B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009555A (zh) * | 2006-12-29 | 2007-08-01 | 北京飞天诚信科技有限公司 | 一种智能密钥装置及其与主机进行信息交互的方法 |
Non-Patent Citations (1)
Title |
---|
JP特开2001-105690A 2001.04.17 |
Also Published As
Publication number | Publication date |
---|---|
CN101807237A (zh) | 2010-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11743721B2 (en) | Protection of a communication channel between a security module and an NFC circuit | |
US11963004B2 (en) | Detection of a rerouting of a communication channel of a telecommunication device connected to an NFC circuit | |
US10716007B2 (en) | Protection of a security module in a telecommunication device coupled to an NFC circuit | |
CN100419737C (zh) | 应用鉴别系统、安全设备和终端设备 | |
CN110348853B (zh) | 一种基于标识认证的区块链离线交易方法和系统 | |
US9185561B2 (en) | Protection against rerouting in an NFC circuit communication channel | |
CN101807237B (zh) | 签名方法及装置 | |
EP3780484B1 (en) | Cryptographic operation and working key creation method and cryptographic service platform and device | |
CN101351027A (zh) | 业务鉴权处理方法及系统 | |
CN109960903A (zh) | 一种应用加固的方法、装置、电子设备及存储介质 | |
CN102763112A (zh) | 从外部管理的安全和验证处理设备 | |
CN111314172A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
KR102011763B1 (ko) | 보안 터널 기반 인증 방법 및 장치 | |
CN101155112B (zh) | 虚拟专用终端、网络服务系统、以及服务接入方法 | |
CN101540677B (zh) | 签名方法、设备及系统 | |
CN111062059B (zh) | 用于业务处理的方法和装置 | |
CN111221904A (zh) | 智能合约部署、执行方法、装置、电子设备及存储介质 | |
CN101931530A (zh) | 动态口令生成方法、认证方法和装置及网络系统 | |
KR102663133B1 (ko) | 전자 장치의 무결성 검사 | |
US11972419B2 (en) | Method for authenticating payment data, corresponding devices and programs | |
CN105871840A (zh) | 一种证书管理方法及系统 | |
CN105516111A (zh) | 智能设备实时数据交互方法 | |
CN116455605A (zh) | 一种基于可信执行环境的账号数据交互方法 | |
KR101215927B1 (ko) | 보안토큰을 이용한 전자서명 장치 및 그 방법 | |
CN105141623A (zh) | 电子账户的控制方法、系统及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085 Patentee after: Feitian Technologies Co.,Ltd. Country or region after: China Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing Patentee before: Feitian Technologies Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |