签名方法及装置的制作方法

文档序号:6598634阅读:138来源:国知局
专利名称:签名方法及装置的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及签名方法及装置。
背景技术
智能密钥装置能够很好的满足个人身份认证的需要,可通过计算 机的数据通讯接 口与计算机连接。并且智能密钥装置在进行身份认证时将与计算机相连,用户在计算机上 输入PIN码,智能密钥装置会自动校验该PIN码的正确性,当用户输入的PIN码正确时,表 示用户的个人身份合法。智能密钥装置内置有主控芯片,其中固化了智能密钥装置的安全 操作系统(COS),并且主控芯片内含RSA算法处理器和对称算法处理器,能够在内部加密数 据,也能够在内部产生RSA密钥对,并利用RSA密钥对数据进行“签名”和“解签名”。由于智能密钥装置具有高安全的特性,所以很多要求安全性较高的领域都采用智 能密钥装置进行身份认证,以保证操作的安全性。例如银行系统利用智能密钥装置认证柜 员和用户的身份。在使用上述智能密钥装置的过程中,发明人发现现有技术中至少存在如下问题 用户在一次通过PIN码验证后,后续过程中利用智能密钥装置进行签名等操作时不需要再 次进行PIN码验证,但是用户在一次通过PIN码验证后,计算机可能被黑客或者其他人控 制,真正在操作计算机的并不是用户本人,此时同样能够进行签名等操作,但已经不能保证 用户的真实身份。

发明内容
本发明的实施例提供一种签名方法及装置,确保每次进行签名操作时都需要先进 行PIN验证,保证用户的真实身份。为达到上述目的,本发明的实施例采用如下技术方案一种签名方法,包括智能密钥设备与主机建立连接,并等待接收所述主机下发的指令;所述智能密钥设备接收到创建安全环境指令后,清空缓存,设置签名算法,并指定 签名所使用的密钥ID;所述智能密钥设备接收到数据传输指令后,缓存接收到的数据;所述智能密钥设备将当前安全状态设置为不可用状态;所述智能密钥设备接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验 证成功,则将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状 态;所述智能密钥设备接收到关键操作指令后,检查当前的安全状态,如果当前安全 状态是可用状态,向所述主机返回操作结果,并清空缓存;如果当前安全状态是不可用状 态,则向所述主机返回安全状态不满足的状态码。。一种签名装置,所述签名装置为智能密钥设备,包括
连接单元,用于将所述智能密钥设备与主机建立连接;
接收单元,用于在所述连接单元将所述智能密钥设备与所述主机建立连接后,等 待接收所述主机下发的指令;第一执行单元,用于在所述接收单元接收到创建安全环境指令后,清空缓存,设置 签名算法,并指定签名所使用的密钥ID ;第二执行单元,用于在所述接收单元接收到数据传输指令后,缓存接收到的数 据;第三执行单元,用于将所述智能密钥设备的当前安全状态设置为不可用状态;验证单元,用于在所述接收单元接收到验证PIN码指令后,对接收到的PIN码进 行验证,如果验证成功,则将所述智能密钥设备的当前安全状态设为可用状态;如果验证失 败,则将所述智能密钥设备的当前安全状态设为不可用状态;检查单元,用于在所述接收单元接收到关键操作指令后,检查所述智能密钥设备 的当前的安全状态;返回单元,用于当所述检查单元的检查结果为当前安全状态是可用状态时,向所 述主机返回操作结果;当所述检查单元的检查结果为当前安全状态是不可用状态时,向所 述主机返回安全状态不满足的状态码。本发明实施例提供的签名方法及装置,在执行普通的操作指令后需要将状态机设 置为不可用状态,而在需要返回签名结果时如果遇到状态机位不可用状态则不能返回签名 结果。为了能够返回签名结果需要使得PIN验证成功才能将状态机的状态修改为可用状 态,此时才能够正确返回签名结果。采用本发明实施例之后可以使得在返回签名结果之前 必须进行PIN验证,保证了用户的真实性和合法性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。图1为本发明实施例签名方法流程图;图2为本发明实施例签名装置框图;图3为本发明实施例1中签名方法流程图;图4为本发明实施例2中签名方法流程图;图5为本发明实施例3中签名方法流程图。
具体实施例方式本发明实施例提供了一种签名方法,需要说明的是,本发明实施例提供的智能密 钥设备内部保存原有PIN码和私钥。本实施例以USBKEY这种较为典型的智能密钥设备作 为该方法的执行主体进行说明,但并不用以限制该方法的执行主体,本领域技术人员所熟 知的智能密钥设备均在本发明的保护范围之内。USB KEY 内置 SHAl (Secure Hash Algorithm安全哈希算法)和 RSA算法,所述 USBKEY从主机中接收指令,接收到的指令为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码指令后,对接收到的PIN码进行验证,如果验证成功,则 将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状态;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执行解密指令包括判断是否缓存有待签名数据 原文的哈希值及设置有签名算法和签名所使用的密钥ID,如果有,则执行签名操作,缓存签 名结果,并将当前安全状态设为不可用状态,如果没有,向所述主机返回错误码;所述第三执行单元25执行不需要返回签名结果的签名指令包括所述智能密钥 设备判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID, 如果有,进行签名操作,并缓存签名结果,将当前安全状态设为不可用状态,如果没有,则向 所述主机返回错误码。如果所述接收单元22接收到第一操作指令,则所述接收单元22接收到的关键操 作指令为取所述第一操作指令的操作结果指令。本发明实施例中检查单元27的具体实现还包括判断模块271,所述判断模块271 用于判断所述智能密钥设备是否缓存有签名结果;所述返回单元28还用于在所述判断模块271的判断结果是所述智能密钥设备没 有缓存签名结果时,向所述主机返回错误码;所述检查单元27在所述判断模块271的判断 结果是所述智能密钥设备缓存有签名结果,则判断当前安全状态是否是可用状态;所述返 回单元28还用于在当前安全状态是可用状态时,向所述主机返回签名结果;在当前安全状 态是不可用状态时,向所述主机返回安全状态不满足的状态码。为了说明本发明方案的具体应用,下面将结合本发明实施例中的附图,对本发明 实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实 施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造 性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例1USB KEY内部使用“状态机”实现对文件访问的限制,“状态机”是一个变量,每一 级DF(Dedicated File 一组或几组应用数据的入口)都有一个“状态机”。USB KEY的“状 态机”缺省安全状态为public状态(不可用状态),在这种状态下USB KEY没有访问私钥 的权限;在public状态,如果USB KEY验证PIN码成功,则“状态机”的安全状态转为user 状态(可用状态),此时USB KEY具有访问私钥的权限;在“状态机”的安全状态为user状态下,如果USB KEY验证PIN码失败,则“状态机”的安全状态转变为public状态。本发明实施例提供一种签名方法,利用USB KEY的“状态机”实现返回签名结果的 控制,如图3所示,该方法包括30UUSB KEY在与主机(一般是计算机)建立连接后,等待接收主机下发的指令;302、USB KEY接收到主机下发的操作指令后,判断主机下发的命令是MSE指令、 hash指令、验证PIN码指令或是签名指令的哪一种,本实施例中的签名指令是指需要返回 签名结果的签名指令;如果是MSE指令,则执行303 ;如果是hash指令,则执行305 ;如果是验证PIN码指令,则执行307 ;如果是签名指令,则执行步310 ;303.USB KEY清空当前缓存的待签名数据及hash值和签名,并设置当前使用的签 名算法和密钥;具体实现时,USB KEY接收到MSE指令后,根据MS E指令中的标识检索签名 操作所使用的签名算法和密钥。所以,使用不同签名算法时MSE指令的具体内容是不同的,以USBKEY接收到主机 下发的APDU格式的MSE指令为例,其基本格式如下//MSE指令标识,设置签名算法为SHA1-RSA,以及所使用的RSA密钥ID该格式对应的具体指令为0022 41 B6 07 80 01 12 81 02 00 01...304、向主机返回预先约定的表示操作成功的状态字0x9000,并返回执行302 ;305、USB KEY在接收到主机下发的hash指令后,USB KEY对传入的待签名数据进 行hash运算,并将当前安全状态设为public状态;在本实施例中,USB KEY接收到主机下 发hash指令后,可以使用内置的SHAl算法对传入的待签名数据进行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指令序列格式为..Il验证PIN 码指令;其对应的具体指令可以为00 20 00 00 04 00本发明实施例在进行PIN验证后还可以开始计次,用于最大输入次数限制处理, 如果累计输入PIN码次数超过约定的最大输入次数,则USB KEY操作结束,向主机返回事先 约定的表示操作取消的状态码0x7777 ;这样一来可以再多次输入错误的PIN后停止验证, 保证了账户的安全;308、将当前安全状态设为user状态,向主机返回“PIN码验证成功”的状态码 0x9000,并返回执行302 ;
309、将当前安全状态设为public状态,向主机返回“PIN码验证失败”的状态码 0x6dl2,并返回执行302 ;310,USB KEY接收到需要返回签名结果的签名指令后,USB KEY检查当前是否设置 过签名算法及密钥、并保存有hash值,如果设置了签名算法及密钥,并保存有hash值,则执 行311 ;否则,执行315 ;具体地,USB KEY接收到的APDU指令序列格式如下//签名指令其对应的具体指令可以为00 2a 9E 00 00 00311、由于需要返回签名结果的签名指令是关键操作指令,故而本发明实施例中 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指令的,如果主机下发了 puthash指令,则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所示,该方法包括
40UUSB KEY在与主机(一般是计算机)建立连接后,等待接收主机下发的指令;402,USB KEY接收到主机下发的操作指令后,USB KEY判断主机下发的命令是MSE 指令,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该格式对应的具体指令为0022 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指令序列格式为..Il验证PIN 码指令;其对应的具体指令可以为00 20 00 00 04 00本发明实施例在进行PIN验证后还可以开始计次,用于最大输入次数限制处理, 如果累计输入PIN码次数超过约定的最大输入次数,则USB KEY操作结束,向主机返回事先 约定的表示操作取消的状态码0x7777 ;这样一来可以再多次输入错误的PIN后停止验证, 保证了账户的安全;415、将当前安全状态设为user状态,向主机返回“PIN码验证成功”的状态码 0x9000,并返回执行402 ;416、将当前安全状态设为public状态,向主机返回“PIN码验证失败”的状态码 0x6dl2,并返回执行402 ;417、USB KEY接收到获取签名结果的指令后,检查当前是否保存有签名结果,如果 保存有签名结果,则执行418 ;如果没有保存签名结果,则返回执行402 ;USB KEY接收到的APDU指令序列格式为..Il获取签名结果指令;其对应的具体指 令可以为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指令后,根据内置的SHAl算法对接收到的待 签名数据的原文进行哈希运算,并将计算得到的哈希值保存至USB KEY缓存内;USB KEY接收到的APDU指令序列格式如下//hash指令标识,在此指令中传入待签名的数据原文该格式对应的具体指令可以为00 2a 90 80…
本发明实施例中的签名指令并不需要返回签名结果,故而可以在执行完签名指令后将当前安全状态修改为public状态,而在执行获取签名结果指令的时候,需要当前安全 状态处于user状态才能正确返回签名结果。而当前安全状态需要在PIN码验证成功后才 能变更为user状态,这就保证了在执行获取签名结果操作之前必须要验证PIN码,并在验 证PIN码成功的情况下,USB KEY才能返回签名结果,从而保证了交易主体的合法性。实施例3本发明实施例提供的一种签名方法,如图5所示,该方法包括50UUSB 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 01504、向主机返回预先约定的表示操作成功的状态字0x9000,并返回执行502 ;505、USB KEY在接收到解密指令后,检查当前是否设置过密钥,如果设置过密钥, 则执行506 ;如果没有设置过密钥,则执行508 ;USB KEY接收到的APDU指令序列格式如下Il解密指令,在此指令中包含传入的数据;该格式对应的具体指令为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指令序列格式为..Il获取签名结果指令;其对应的具体指 令可以为00 2a 9E 03......;513、由于获取签名结果的指令是关键操作指令,所以本发明实施例中的USB KEY 检查当前安全状态是user状态还是public状态,如果是user状态,则执行514,如果是 public状态,执行515 ;514、将签名结果上传主机,并向主机返回预先约定的表示成功的状态字0x9000, 签名操作结束,返回执行502;515、向主机返回事先约定的标识“安全状态不满足”的状态字0x6982,并返回执 行 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 中的签名方法。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳 的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
一种签名方法,其特征在于,包括智能密钥设备与主机建立连接,并等待接收所述主机下发的指令;所述智能密钥设备接收到创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;所述智能密钥设备接收到数据传输指令后,缓存接收到的数据;所述智能密钥设备将当前安全状态设置为不可用状态;所述智能密钥设备接收到验证PIN码指令后,对接收到的PIN码进行验证,如果验证成功,则将当前安全状态设为可用状态;如果验证失败,则将当前安全状态设为不可用状态;所述智能密钥设备接收到关键操作指令后,检查当前的安全状态,如果当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
2.根据权利要求1所述的签名方法,其特征在于,所述智能密钥设备接收到创建安全 环境指令后,所述方法还包括清空缓存,并判断当前安全状态是否为可用状态;如果当前安全状态是可用状态,则设置签名算法,并指定签名所需要的密钥ID ;如果当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。
3.根据权利要求1所述的签名方法,其特征在于,所述数据传输指令为hash指令或put hash指令;当所述智能密钥设备接收到hash指令后,缓存接收到的待签名数据原文;当所述智能密钥设备接收到put hash指令后,缓存接收到的待签名数据原文的哈希值。
4.根据权利要求1所述的签名方法,其特征在于,所述智能密钥设备将当前安全状态 设置为不可用状态之前,所述方法还包括所述智能密钥设备接收到第一操作指令,并执行所述第一操作指令;其中,所述第一操作指令包括解密指令或不需要返回签名结果的签名指令。
5.根据权利要求4所述的签名方法,其特征在于,所述智能密钥设备接收到解密指令 后判断是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID, 如果有,则执行签名操作,缓存签名结果,并将当前安全状态设为不可用状态,如果没有,则 向所述主机返回错误码;所述智能密钥设备接收到不需要返回签名结果的签名指令后所述智能密钥设备判断 是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥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,如果有,则执行签名操作,缓存签名结果,并将当前安全状态设为不可用状态,如果没 有,向所述主机返回错误码;所述第三执行单元执行不需要返回签名结果的签名指令包括所述智能密钥设备判断 是否缓存有待签名数据原文的哈希值及设置有签名算法和签名所使用的密钥ID,如果有, 进行签名操作,并缓存签名结果,将当前安全状态设为不可用状态,如果没有,则向所述主 机返回错误码。
15.根据权利要求13所述的签名装置,其特征在于,所述接收单元接收到第一操作指 令,则所述接收单元接收到的关键操作指令为取所述第一操作指令的操作结果指令。
16.根据权利要求11所述的签名装置,其特征在于,所述检查单元还包括判断模块,用于判断所述智能密钥设备是否缓存有签名结果;所述返回单元还用于在所述判断模块的判断结果是所述智能密钥设备没有缓存签名 结果,则向所述主机返回错误码;所述检查单元在所述判断模块的判断结果是所述智能密钥设备缓存有签名结果,则判 断当前安全状态是否是可用状态;所述返回单元还用于在当前安全状态是可用状态时,向所述主机返回签名结果;在当 前安全状态是不可用状态,向所述主机返回安全状态不满足的状态码。
全文摘要
本发明公开了一种签名方法及装置,涉及信息安全技术领域,保证用户的真实身份。本发明中智能密钥设备与主机建立连接,接收主机下发的指令;接收创建安全环境指令后,清空缓存,设置签名算法,并指定签名所使用的密钥ID;接收数据传输指令后,缓存接收到的数据;将当前安全状态设置为不可用状态;接收验证PIN码指令后,对PIN码进行验证,验证成功,则设为可用状态;验证失败,则设为不可用状态;接收到关键操作指令后,检查当前的安全状态,当前安全状态是可用状态,向所述主机返回操作结果,并清空缓存;当前安全状态是不可用状态,则向所述主机返回安全状态不满足的状态码。本发明主要用于各种智能密钥装置的签名操作中。
文档编号G06F21/00GK101807237SQ201010115810
公开日2010年8月18日 申请日期2010年3月1日 优先权日2010年3月1日
发明者于华章, 陆舟 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1