CN105162594A - 一种快速签名方法及签名设备 - Google Patents
一种快速签名方法及签名设备 Download PDFInfo
- Publication number
- CN105162594A CN105162594A CN201510462903.6A CN201510462903A CN105162594A CN 105162594 A CN105162594 A CN 105162594A CN 201510462903 A CN201510462903 A CN 201510462903A CN 105162594 A CN105162594 A CN 105162594A
- Authority
- CN
- China
- Prior art keywords
- hash
- signature
- display confirmation
- instruction
- middleware
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种快速签名方法和签名设备,属于信息安全领域。所述方法包括签名设备接收中间件下发的哈希指令和签名指令,当接收到哈希指令时,从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值;当接收到哈希指令时,检测用户的确认操作,并当检测到用户的确认操作时对待签名摘要值进行签名,将签名结果返回给中间件。本发明的有益效果在于减少签名过程中由签名设备外部传入签名设备的数据量以及数据传输时间,提高签名的整体执行效率,并且可以支持大数据量报文的签名。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种快速签名方法及签名设备。
背景技术
现有技术中,为了提高签名的逻辑复杂性,会尽量增加签名原始数据的长度,而我们知道,通常的签名过程包括签名设备首先对传入的签名原始数据进行哈希运算得到哈希值,再对哈希值进行签名得到签名值,因此,现有技术中存在如下技术问题:当签名原始数据的长度较长时,在传输签名原始数据、对签名原始数据进行哈希计算的过程中将耗费较多时间,影响签名的整体执行效率,尤其是当采用蓝牙、音频等通讯方式时,传输签名原始数据的过程将耗费大量时间。
发明内容
本发明的目的是克服现有技术的缺陷,提供一种快速签名方法及签名设备。
本发明方法是通过下述技术方案实现的:
一方面,本发明提供一种快速签名方法,包括:
签名设备接收中间件下发的指令;
当接收到中间件下发的哈希指令时,所述签名设备从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,并向所述中间件返回哈希指令应答;
当接收到中间件下发的签名指令时,所述签名设备检测用户的确认操作,当检测到用户的确认操作时对待签名摘要值进行签名,并向所述中间件返回签名结果;
所述签名设备从哈希指令中获取分组哈希结果和显示确认信息之后,所述检测用户的确认操作之前,还包括:根据所述显示确认信息显示相应信息。
进一步地,所述方法还包括:
所述中间件接收网银客户端下发的包含待签名文件路径和显示确认信息的数据,按照所述待签名文件路径获取待签名文件,根据所述待签名文件和所述显示确认信息组织中间报文,对所述中间报文进行分组哈希,根据分组哈希结果以及所述显示确认信息组织数据域报文,根据所述数据域报文生成哈希指令,向所述签名设备发送哈希指令;
所述中间件接收所述签名设备返回的哈希指令应答,向所述签名设备发送签名指令。
更进一步地,所述网银客户端下发的数据中还包括显示报文;
所述中间件向所述签名设备发送哈希指令之前,还包括:解析所述显示报文,得到显示数据,输出包含所述显示数据的签名提示信息;
所述中间件根据所述待签名文件和所述显示确认信息组织中间报文,具体包括:所述中间件将所述显示报文、所述待签名文件的文件名、所述待签名文件以及所述显示确认信息按照预定格式进行组织,得到中间报文;
所述中间件按照所述待签名文件路径获取待签名文件之后,还包括:对所述待签名文件进行编码,得到所述待签名文件的编码数据;
所述中间件根据所述待签名文件和所述显示确认信息组织中间报文,具体包括:所述中间件将所述显示报文、所述待签名文件的文件名、所述待签名文件的编码数据以及所述显示确认信息按照预定格式进行组织,得到中间报文;
所述中间件对所述中间报文进行分组哈希,具体包括:
步骤A、所述中间件对所述中间报文进行顺序分组;若所述中间报文的长度是分组长度的整数倍,则分组得到分组报文,若所述中间报文的长度不是分组长度的整数倍,则分组得到分组报文和不足分组长度的分组剩余数据;
步骤B、依序对分组得到的分组报文进行哈希,得到中间摘要值;
所述中间件根据分组哈希结果以及所述显示确认信息组织数据域报文,具体包括:所述中间件将分组哈希结果以及所述显示确认信息按照:中间摘要值长度、中间摘要值、分组剩余数据长度、分组剩余数据、TLV格式报文长度、TLV格式报文的格式顺序拼接,得到数据域报文;所述TLV格式报文由预设标签、显示确认信息长度和显示确认信息顺序组成;
所述中间件根据所述数据域报文生成哈希指令,具体为:所述中间件将所述数据域报文作为指令的数据域生成哈希指令;
所述签名设备从哈希指令中获取分组哈希结果和显示确认信息之前,还包括:所述签名设备判断哈希指令的数据域的长度是否合法,是则执行所述从哈希指令中获取分组哈希结果和显示确认信息,否则向所述中间件返回错误状态,结束;
所述方法还包括:所述中间件向所述签名设备发送签名环境初始化指令,所述签名设备接收到签名环境初始化指令后初始化签名环境,选择当前密钥,指定哈希算法,并向所述中间件返回签名环境初始化指令应答;
所述签名设备从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,具体包括:
步骤1-1、所述签名设备判断哈希指令中是否包含中间摘要值,是则获取哈希指令中的中间摘要值,执行步骤1-2,否则向所述中间件返回错误状态,结束;
步骤1-2、所述签名设备判断哈希指令中是否包含分组剩余数据和显示确认信息,若包含分组剩余数据和显示确认信息则以所述中间摘要值为初始参数,使用所述哈希算法对分组剩余数据和显示确认信息进行哈希运算,得到待签名摘要值;若仅包含显示确认信息则以所述中间摘要值为初始参数,使用所述哈希算法对显示确认信息进行哈希运算,得到待签名摘要值;若仅包含分组剩余数据则向所述中间件返回错误状态,结束;
所述签名设备判断哈希指令中是否包含中间摘要值具体包括:所述签名设备判断哈希指令中的中间摘要值长度是否等于0,是则哈希指令中不包含中间摘要值,否则哈希指令中包含中间摘要值,所述签名设备根据所述中间摘要值长度获取签名指令中的中间摘要值;
所述签名设备判断哈希指令中是否包含分组剩余数据和显示确认信息具体包括:所述签名设备判断哈希指令中的分组剩余数据长度是否等于0,是则哈希指令中不包含分组剩余数据,否则哈希指令中包含分组剩余数据,所述签名设备根据所述分组剩余数据长度获取签名指令中的分组剩余数据;所述签名设备判断哈希指令中的显示确认信息长度是否等于0,是则哈希指令中不包含显示确认信息,否则哈希指令中包含显示确认信息,所述签名设备根据所述显示确认信息长度获取签名指令中的显示确认信息;
所述签名设备判断哈希指令中包含显示确认信息时,还包括:所述签名设备判断哈希指令中的显示确认信息的长度是否合法,若不合法则向所述中间件返回错误状态,结束;若合法则继续判断哈希指令中的显示确认信息是否完整,若完整则执行所述获取哈希指令中的显示确认信息,若不完整则向所述中间件返回错误状态,结束;
所述签名设备接收到中间件下发的哈希指令时,还包括:判断所述当前密钥是否为预设密钥,是则执行所述从哈希指令中获取分组哈希结果和显示确认信息,否则向所述中间件返回错误状态,结束。
进一步地,所述签名设备接收到中间件下发的签名指令后,还包括:提示用户确认显示信息。
另一方面,本发明还提供一种签名设备,包括:
接收模块,用于接收中间件下发的指令;
获取模块,用于当所述接收模块接收到中间件下发的哈希指令时,获取哈希指令中的分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值;
显示模块,用于根据所述获取模块获取到的显示确认信息显示相应信息;
确认签名模块,用于当所述接收模块接收到签名指令时,检测用户的确认操作,并当检测到用户的确认操作时对所述获取模块获取的待签名摘要值进行签名,得到签名结果;
指令应答模块,用于向中间件返回哈希指令应答和签名结果。
所述签名设备还包括:签名环境初始化模块,用于在所述接收模块接收到签名环境初始化指令时,初始化签名环境,选择当前密钥,指定哈希算法。
进一步地,所述签名设备还包括:判断模块,用于判断所述签名环境初始化模块选择的当前密钥是否为预设密钥;
所述获取模块,具体用于当所述接收模块接收到哈希指令,且所述判断模块判断所述签名环境初始化模块选择的当前密钥是预设密钥时,获取哈希指令中的分组哈希结果和显示确认信息,根据所述获取模块获取到的分组哈希结果和显示确认信息获取待签名摘要值。
所述显示模块还用于提示用户确认显示信息。
所述获取模块具体包括获取单元和哈希单元:
所述获取单元用于当所述接收模块接收到中间件下发的哈希指令时,从哈希指令中获取中间摘要值、分组剩余数据和显示确认信息;
所述哈希单元用于当所述获取单元获取到中间摘要值、分组剩余数据和显示确认信息时,以所述中间摘要值为初始参数,对所述分组剩余数据和所述显示确认信息进行哈希运算,得到待签名摘要值;当所述获取单元获取到中间摘要值和显示确认信息时,以所述中间摘要值为初始参数,对所述显示确认信息进行哈希运算,得到待签名摘要值。
本发明方法通过将待签名数据中的部分数据在签名设备外部进行哈希运算,达到了减少签名过程中由签名设备外部传入签名设备的数据量,缩短签名过程中数据由签名设备外部传入签名设备的时间,提高签名的整体执行效率的有益效果,进一步地,本发明能够支持对大数据量报文进行签名,在尽量增加签名原始数据的长度的前提下采用本发明提供的方法,能够实现既增加签名的逻辑复杂性又不会降低签名的整体执行效率的效果。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例二提供的一种快速签名方法的流程图;
图2为本发明实施例三提供的一种快速签名方法的流程图;
图3为本发明实施例四提供的一种签名设备的结构方框图;
图4为本发明实施例四提供的一种签名设备的工作方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种快速签名方法,所述方法包括:
签名设备接收中间件下发的指令;
当接收到中间件下发的哈希指令时,所述签名设备从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,并向所述中间件返回哈希指令应答;
当接收到中间件下发的签名指令时,所述签名设备检测用户的确认操作,当检测到用户的确认操作时对待签名摘要值进行签名,并向所述中间件返回签名结果;
所述签名设备从哈希指令中获取分组哈希结果和显示确认信息之后,检测用户的确认操作之前,还包括:根据所述显示确认信息显示相应信息。
本实施例提供的方法,签名设备接收到的哈希指令中包含中间件对待签名数据中的部分数据进行分组哈希得到的分组哈希结果,相比较于现有技术中接收中间件下发的全部待签名数据,减少了向签名设备传入的数据量,缩短了向签名设备传入数据耗费的时间,可达到提高签名整体执行效率的效果。
实施例二
本实施例提供一种快速签名方法,如图1所示,所述方法包括:
步骤S1、中间件接收网银客户端下发的包含待签名文件路径和显示确认信息的数据,按照待签名文件路径获取待签名文件,根据待签名文件的文件名、待签名文件以及显示确认信息组织中间报文;
步骤S2、中间件对中间报文进行分组哈希,根据分组哈希结果和显示确认信息组织数据域报文,根据数据域报文生成哈希指令,发送哈希指令给签名设备;
步骤S3、签名设备接收哈希指令,对哈希指令进行解析,获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,向中间件返回哈希指令应答;
步骤S4、中间件向签名设备发送签名指令;
步骤S5、签名设备接收到签名指令后,检测用户的确认操作,当检测到用户的确认操作时对待签名摘要值进行签名,向中间件返回签名结果。
本实施例中签名设备从哈希指令中获取分组哈希结果和显示确认信息之后,检测用户的确认操作之前,还包括:根据所述显示确认信息显示相应信息;签名设备接收到签名指令后,还包括:提示用户确认显示信息。
本实施例中,步骤S1之前还包括:中间件向签名设备发送签名环境初始化指令;签名设备接收到签名环境初始化指令后初始化签名环境,选择当前密钥,向中间件返回签名环境初始化指令应答;
步骤S1中,中间件按照待签名文件路径获取到待签名文件后,还可以包括对待签名文件进行编码,得到待签名文件的编码数据;相应的,中间件根据待签名文件的文件名、待签名文件的编码数据以及显示确认信息组织中间报文。
本实施例中,网银客户端下发的数据中还可以包括显示报文,相应地:中间件根据显示报文、待签名文件的文件名、待签名文件的编码数据以及显示确认信息组织中间报文;步骤S1中还包括中间件对显示报文进行解析得到显示数据,输出包含显示数据的签名提示信息。
实施例三
本实施例提供一种快速签名方法,如图2所示,所述方法包括:
步骤101、中间件接收网银客户端下发的包含显示报文、待签名文件路径和显示确认信息的数据;
步骤102、中间件按照待签名文件路径下载待签名文件,并对待签名文件进行编码,得到待签名文件的编码数据;对显示报文进行解析得到显示数据,输出包含显示数据的签名提示信息;
优选地,中间件对待签名文件进行base64编码。
步骤103、中间件根据显示报文、待签名文件的文件名、待签名文件的编码数据以及显示确认信息组织中间报文;
具体地,中间件按照预设的格式生成包含显示报文、待签名文件的文件名、待签名文件的编码数据以及显示确认信息的中间报文;
例如,中间件生成TLV格式的中间报文,具体格式可以为:Tag1(0x11)+Len1(Len1之后的数据的总长度)+Tag2(0x21)+Len2(显示报文长度)+显示报文+Tag3(0x23)+Len3(待签名文件的文件名的长度与待签名文件的编码数据的长度的和)+待签名文件的文件名和待签名文件的编码数据+Tag4(0x22)+Len4(Len4之后的数据的总长度)+Tag5(0x22)+Len5(显示确认信息长度)+显示确认信息,Len1、Len2、Len3、Len4、Len5的长度均为8字节。
步骤104、中间件对中间报文进行分组哈希运算,得到分组哈希结果;
本实施例中,当中间报文的长度是分组长度的整数倍时,分组哈希结果包括中间摘要值,当中间报文的长度不是分组长度的整数倍时,分组哈希结果包括中间摘要值和分组剩余数据。优选地,当中间报文的长度不足分组长度时,中间件提示错误。
具体地,中间件根据SM3、MD5、SHA1、SHA256、SHA384或SHA512算法对中间报文进行分组哈希运算;本实施例以中间件根据SM3算法对中间报文进行分组哈希运算为例,步骤104具体包括:
步骤104-1、中间件按照SM3分组长度对中间报文进行分组;
具体地,若中间报文的长度是SM3分组长度的整数倍,则分组得到n个长度等于SM3分组长度的分组报文,若中间报文的长度不是SM3分组长度的整数倍,则分组得到n个长度等于SM3分组长度的分组报文和不足SM3分组长度的分组剩余数据,n=|中间报文的长度/SM3分组长度|;
例如,SM3分组长度具体为64字节,若中间报文的长度为56字节,则中间件提示错误;若中间报文的长度为130字节,则按照SM3分组长度对中间报文进行分组,得到2个长度等于64字节的分组报文和32字节的分组剩余数据;若中间报文的长度为192字节,则按照SM3分组长度对中间报文进行分组,得到3个长度等于64字节的分组报文,没有分组剩余数据。
步骤104-2、中间件使用SM3算法依次对分组得到的各分组报文进行哈希运算,得到中间摘要值。
步骤105、中间件根据分组哈希结果和显示确认信息生成哈希指令;
优选地,中间件根据分组哈希结果和显示确认信息生成哈希指令具体包括:
步骤105-1、中间件生成包含分组哈希结果和显示确认信息的数据域报文;
具体地,中间件按照预设的格式生成包含分组哈希结果和显示确认信息的数据域报文;
例如,中间件按照“Len6(中间摘要值长度)+中间摘要值+Len7(分组剩余数据长度)+分组剩余数据+Len8(Len8之后的TLV的长度)+Tag5(0x22)+Len5(显示确认信息长度)+显示确认信息”的格式生成数据域报文;当中间报文的长度是分组长度的整数倍时,Len7等于0;Len6和Len8的长度均为2字节,Len7的长度为1字节,Len5的长度为8字节。
步骤105-2、中间件将数据域报文作为指令的数据域生成哈希指令。
步骤106、中间件向签名设备发送哈希指令;
步骤107、签名设备获取哈希指令中的分组哈希结果和显示确认信息;
进一步地,签名设备接收到哈希指令后执行步骤107之前,还可以包括:判断哈希指令的数据域的长度是否合法,是则执行步骤107,否则向中间件返回错误状态,结束;
优选地,哈希指令包括指令头、数据域的长度和数据域,签名设备判断哈希指令的数据域的长度是否合法具体包括:签名设备判断哈希指令中的数据域的长度是否超过预设长度,若超过则哈希指令的数据域的长度不合法,若未超过则哈希指令的数据域的长度合法;
例如,预设长度为1024字节,若哈希指令中的数据域的长度超过1024字节,则哈希指令的数据域的长度不合法,若哈希指令中的数据域的长度未超过1024字节,则哈希指令的数据域的长度合法。
步骤108、签名设备根据获取到的分组哈希结果和显示确认信息获得待签名摘要值;
具体地,步骤108包括:
签名设备判断哈希指令中是否包含中间摘要值;
若不包含中间摘要值,则向中间件返回错误状态,结束;
若包含中间摘要值,则获取哈希指令中的中间摘要值,并继续判断哈希指令中是否包含分组剩余数据和显示确认信息,若既包含分组剩余数据又包含显示确认信息则以中间摘要值为初始参数,使用与中间件相同的哈希算法对分组剩余数据和显示确认信息进行哈希运算,得到待签名摘要值;若仅包含显示确认信息则以中间摘要值为初始参数,使用与中间件相同的哈希算法对显示确认信息进行哈希运算,得到待签名摘要值;否则向中间件返回错误状态,结束;
优选地,签名设备中可预置与中间件对中间报文进行分组哈希运算采用的哈希算法相对应的哈希算法引擎,步骤107至步骤108可以具体包括:
步骤1-1、签名设备判断哈希指令中是否包含中间摘要值,是则获取哈希指令中的中间摘要值,调用哈希算法引擎的hash_init接口,将中间摘要值写入哈希算法引擎,执行步骤1-2,否则向中间件返回错误状态,结束;
具体地,签名设备判断哈希指令中是否包含中间摘要值包括:签名设备判断哈希指令中的中间摘要值长度是否等于0,若等于0则哈希指令中不包含中间摘要值,若不等于0则哈希指令中包含中间摘要值;
步骤1-2、签名设备判断哈希指令中是否包含分组剩余数据,是则获取哈希指令中的分组剩余数据,调用哈希算法引擎的hash_update接口将分组剩余数据写入哈希算法引擎,执行步骤1-3,否则直接执行步骤1-3;
具体地,签名设备判断哈希指令中是否包含分组剩余数据包括:签名设备判断哈希指令中的分组剩余数据长度是否等于0,若等于0则哈希指令中不包含分组剩余数据,若不等于0则哈希指令中包含分组剩余数据;
步骤1-3、签名设备判断哈希指令中是否包含显示确认信息,是则获取哈希指令中的显示确认信息,调用哈希算法引擎的hash_update接口将显示确认信息写入哈希算法引擎,执行步骤1-4,否则向中间件返回错误状态,结束;
具体地,签名设备判断哈希指令中是否包含显示确认信息包括:签名设备判断哈希指令中的显示确认信息长度是否等于0,若等于0则哈希指令中不包含显示确认信息,若不等于0则哈希指令中包含显示确认信息;
步骤1-4、签名设备调用哈希算法引擎的hash_final接口,获取待签名摘要值。
进一步地,步骤1-3中,当签名设备判断出哈希指令中包含显示确认信息之后,还包括:签名设备判断哈希指令中的显示确认信息的长度是否合法,若不合法则向中间件返回错误状态,结束;若合法则继续判断哈希指令中的显示确认信息是否完整,若完整则执行步骤1-4,若不完整则向中间件返回错误状态,结束。
步骤109、签名设备向中间件返回哈希指令执行成功应答。
本发明实施例中,步骤101之前还包括:中间件向签名设备发送签名环境初始化指令;签名设备接收到签名环境初始化指令后初始化签名环境、选择当前密钥,指定哈希算法,向中间件返回签名环境初始化指令应答。
本发明实施例中,步骤109之后还包括:中间件向签名设备发送签名指令;签名设备接收到签名指令后提示用户确认显示信息,当检测到用户的确认操作时使用当前密钥对待签名摘要值进行签名,向中间件返回签名结果。进一步地,本实施例中,也可以在签名设备输出显示确认信息后即提示用户确认显示信息。
实施例四
本实施例提供的一种签名设备及其工作方法,如图3所示,签名设备具体包括:
接收模块11,用于接收中间件下发的指令;
获取模块12,用于当接收模块11接收到中间件下发的哈希指令时,获取哈希指令中的分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值;
显示模块13,用于根据所述获取模块12获取到的显示确认信息显示相应信息;
确认签名模块14,用于当所述接收模块11接收到签名指令时,检测用户的确认操作,并当检测到用户的确认操作时对获取模块12获取到的待签名摘要值进行签名,得到签名结果;
指令应答模块15,用于向中间件返回哈希指令应答和签名结果。
本实施例中,签名设备还可以包括签名环境初始化模块16,用于在接收模块11接收到签名环境初始化指令时,初始化签名环境,选择当前密钥,指定哈希算法;
相应地,确认签名模块14具体用于当所述接收模块11接收到签名指令时,检测用户的确认操作,并当检测到用户的确认操作时使用签名环境初始化模块16选择的当前密钥对获取模块12获取到的待签名摘要值进行签名,得到签名结果;
指令应答模块15还用于向中间件返回签名环境初始化指令应答。
进一步地,本实施例中,签名设备还可以包括判断模块17,用于判断签名环境初始化模块16选择的当前密钥是否为预设密钥;
相应地,获取模块12,具体用于当接收模块11接收到哈希指令,且判断模块17判断出签名环境初始化模块16选择的当前密钥是预设密钥时,获取哈希指令中的分组哈希结果和显示确认信息,根据获取模块12获取到的分组哈希结果和显示确认信息获取待签名摘要值。
本实施例中,显示模块13还用于提示用户确认显示信息。
本实施例中,获取模块12具体包括获取单元121和哈希单元122:
所述获取单元121用于当接收模块11接收到中间件下发的哈希指令时,从哈希指令中获取中间摘要值、分组剩余数据和显示确认信息;
所述哈希单元122用于当所述获取单元121获取到中间摘要值、分组剩余数据和显示确认信息时,以所述中间摘要值为初始参数,对所述分组剩余数据和所述显示确认信息进行哈希运算,得到待签名摘要值;当所述获取单元121获取到中间摘要值和显示确认信息时,以所述中间摘要值为初始参数,对所述显示确认信息进行哈希运算,得到待签名哈希值。
如图4所示,签名设备的工作方法包括签名设备上电初始化后执行以下步骤,具体地,签名设备通过与上位机连接上电,上位机安装有中间件和网银客户端:
步骤201、等待中间件下发指令,当接收到中间件下发的指令时,执行步骤202;
步骤202、判断指令的类型,若为签名环境初始化指令则执行步骤203,若为哈希指令则执行步骤204,若为签名指令则执行步骤212,否则根据接收到的指令进行操作并将操作结果返回给中间件,返回步骤201;
步骤203、初始化签名环境,选择当前密钥,指定哈希算法,向中间件返回指令应答,返回步骤201;
具体地,本实施例中,签名设备根据签名环境初始化指令指定与中间件进行分组哈希所用的哈希算法相同的哈希算法。
步骤204、判断是否已完成初始化签名环境,是则执行步骤205,否则执行步骤211;
优选地,签名设备内部预置签名状态,相应地:
本实施例中,签名设备进行初始化时设置签名状态为初始状态;
步骤203中,签名设备执行完初始化签名环境后更新签名状态为预设状态,例如预设状态为MSE状态;
步骤204中,签名设备通过检查签名状态是否为预设状态判断是否已完成初始化签名环境,若签名状态为预设状态,则已完成初始化签名环境,否则判定未完成初始化签名环境。
步骤205、判断当前密钥是否为预设密钥,是则执行步骤206,否则执行步骤211;
本实施例中,设备通过检查设备内部的密钥描述判断当前密钥是否为预设密钥,具体地,设备判断密钥描述中的密钥用途判断当前密钥是否为预设密钥,例如:
若要进行的是SM2签名,则判断密钥描述中的密钥用途是否为SM2,若为SM2则当前密钥是预设密钥,若不为SM2则当前密钥不是预设密钥;
若要进行的是RSA签名,则判断密钥描述中的密钥用途是否为RSA,若为RSA则当前密钥是预设密钥,若不为RSA则当前密钥不是预设密钥。
步骤206、判断哈希指令的数据域的长度是否合法,是则执行步骤207,否则执行步骤211;
步骤207、获取哈希指令中的中间摘要值,调用哈希算法引擎的hash_init接口将获取到的中间摘要值写入哈希算法引擎;
签名设备执行步骤207之前还包括:判断哈希指令中是否包含中间摘要值,是则执行步骤207,否则直接执行步骤208或者向中间件返回错误状态,结束。
步骤208、获取哈希指令中的分组剩余数据和显示确认信息,调用哈希算法引擎的hash_update接口将获取到的分组剩余数据和显示确认信息顺序写入哈希算法引擎;
设备执行步骤208之前,还包括判断哈希指令中是否包含分组剩余数据和显示确认信息,若均包含则执行步骤208;若只包含分组剩余数据,则向中间件返回错误状态,结束,或者获取哈希指令中的分组剩余数据,调用哈希算法引擎的hash_update接口将获取到的分组剩余数据写入哈希算法引擎,然后执行步骤209;若只包含显示确认信息,则获取哈希指令中的显示确认信息,调用哈希算法引擎的hash_update接口将获取到的显示确认信息写入哈希算法引擎,然后执行步骤209;
当设备判断出哈希指令中包含显示确认信息时还包括:判断哈希指令中的显示确认信息的长度是否合法以及哈希指令中的显示确认信息是否完整,若显示确认信息的长度合法且显示确认信息完整则继续执行后续操作,否则向上位机返回错误状态,返回步骤201。
步骤209、调用哈希算法引擎的hash_final接口获取待签名摘要值;
步骤210、根据获取到的显示确认信息显示相应信息,向中间件返回正确状态,返回步骤201;
步骤211、向中间件返回错误状态,返回步骤201;
步骤212、根据当前密钥对待签名摘要值进行签名,向中间件返回签名结果,返回步骤201。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (20)
1.一种快速签名方法,其特征在于,包括:
签名设备接收中间件下发的指令;
当接收到中间件下发的哈希指令时,所述签名设备从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,并向所述中间件返回哈希指令应答;
当接收到中间件下发的签名指令时,所述签名设备检测用户的确认操作,当检测到用户的确认操作时对待签名摘要值进行签名,并向所述中间件返回签名结果;
所述签名设备从哈希指令中获取分组哈希结果和显示确认信息之后,所述检测用户的确认操作之前,还包括:根据所述显示确认信息显示相应信息。
2.如权利要求1所述的方法,其特征在于,还包括:
所述中间件接收网银客户端下发的包含待签名文件路径和显示确认信息的数据,按照所述待签名文件路径获取待签名文件,根据所述待签名文件和所述显示确认信息组织中间报文,对所述中间报文进行分组哈希,根据分组哈希结果以及所述显示确认信息组织数据域报文,根据所述数据域报文生成哈希指令,向所述签名设备发送哈希指令;
所述中间件接收所述签名设备返回的哈希指令应答,向所述签名设备发送签名指令。
3.如权利要求2所述的方法,其特征在于,所述网银客户端下发的数据中还包括显示报文;
所述中间件向所述签名设备发送哈希指令之前,还包括:解析所述显示报文,得到显示数据,输出包含所述显示数据的签名提示信息。
4.如权利要求3所述的方法,其特征在于,所述中间件根据所述待签名文件和所述显示确认信息组织中间报文,具体包括:所述中间件将所述显示报文、所述待签名文件的文件名、所述待签名文件以及所述显示确认信息按照预定格式进行组织,得到中间报文。
5.如权利要求3所述的方法,其特征在于,所述中间件按照所述待签名文件路径获取待签名文件之后,还包括:对所述待签名文件进行编码,得到所述待签名文件的编码数据;
所述中间件根据所述待签名文件和所述显示确认信息组织中间报文,具体包括:所述中间件将所述显示报文、所述待签名文件的文件名、所述待签名文件的编码数据以及所述显示确认信息按照预定格式进行组织,得到中间报文。
6.如权利要求2所述的方法,其特征在于,所述中间件对所述中间报文进行分组哈希,具体包括:
步骤A、所述中间件对所述中间报文进行顺序分组;若所述中间报文的长度是分组长度的整数倍,则分组得到分组报文,若所述中间报文的长度不是分组长度的整数倍,则分组得到分组报文和不足分组长度的分组剩余数据;
步骤B、依序对分组得到的分组报文进行哈希,得到中间摘要值。
7.如权利要求6所述的方法,其特征在于,所述中间件根据分组哈希结果以及所述显示确认信息组织数据域报文,具体包括:所述中间件将分组哈希结果以及所述显示确认信息按照:中间摘要值长度、中间摘要值、分组剩余数据长度、分组剩余数据、TLV格式报文长度、TLV格式报文的格式顺序拼接,得到数据域报文;所述TLV格式报文由预设标签、显示确认信息长度和显示确认信息顺序组成。
8.如权利要求7所述的方法,其特征在于,所述中间件根据所述数据域报文生成哈希指令,具体为:所述中间件将所述数据域报文作为指令的数据域生成哈希指令。
9.如权利要求8所述的方法,其特征在于,所述签名设备从哈希指令中获取分组哈希结果和显示确认信息之前,还包括:所述签名设备判断哈希指令的数据域的长度是否合法,是则执行所述从哈希指令中获取分组哈希结果和显示确认信息,否则向所述中间件返回错误状态,结束。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:所述中间件向所述签名设备发送签名环境初始化指令,所述签名设备接收到签名环境初始化指令后初始化签名环境,选择当前密钥,指定哈希算法,并向所述中间件返回签名环境初始化指令应答。
11.如权利要求10所述的方法,其特征在于,所述签名设备从哈希指令中获取分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值,具体包括:
步骤1-1、所述签名设备判断哈希指令中是否包含中间摘要值,是则获取哈希指令中的中间摘要值,执行步骤1-2,否则向所述中间件返回错误状态,结束;
步骤1-2、所述签名设备判断哈希指令中是否包含分组剩余数据和显示确认信息,若包含分组剩余数据和显示确认信息则以所述中间摘要值为初始参数,使用所述哈希算法对分组剩余数据和显示确认信息进行哈希运算,得到待签名摘要值;若仅包含显示确认信息则以所述中间摘要值为初始参数,使用所述哈希算法对显示确认信息进行哈希运算,得到待签名摘要值;若仅包含分组剩余数据则向所述中间件返回错误状态,结束。
12.如权利要求11所述的方法,其特征在于,所述签名设备判断哈希指令中是否包含中间摘要值具体包括:所述签名设备判断哈希指令中的中间摘要值长度是否等于0,是则哈希指令中不包含中间摘要值,否则哈希指令中包含中间摘要值,所述签名设备根据所述中间摘要值长度获取签名指令中的中间摘要值;
所述签名设备判断哈希指令中是否包含分组剩余数据和显示确认信息具体包括:所述签名设备判断哈希指令中的分组剩余数据长度是否等于0,是则哈希指令中不包含分组剩余数据,否则哈希指令中包含分组剩余数据,所述签名设备根据所述分组剩余数据长度获取签名指令中的分组剩余数据;所述签名设备判断哈希指令中的显示确认信息长度是否等于0,是则哈希指令中不包含显示确认信息,否则哈希指令中包含显示确认信息,所述签名设备根据所述显示确认信息长度获取签名指令中的显示确认信息。
13.如权利要求11所述的方法,其特征在于,所述签名设备判断哈希指令中包含显示确认信息时,还包括:所述签名设备判断哈希指令中的显示确认信息的长度是否合法,若不合法则向所述中间件返回错误状态,结束;若合法则继续判断哈希指令中的显示确认信息是否完整,若完整则执行所述获取哈希指令中的显示确认信息,若不完整则向所述中间件返回错误状态,结束。
14.如权利要求10所述的方法,其特征在于,所述签名设备接收到中间件下发的哈希指令时,还包括:判断所述当前密钥是否为预设密钥,是则执行所述从哈希指令中获取分组哈希结果和显示确认信息,否则向所述中间件返回错误状态,结束。
15.如权利要求1所述的方法,其特征在于,所述签名设备接收到中间件下发的签名指令后,还包括:提示用户确认显示信息。
16.一种签名设备,其特征在于,包括:
接收模块,用于接收中间件下发的指令;
获取模块,用于当所述接收模块接收到中间件下发的哈希指令时,获取哈希指令中的分组哈希结果和显示确认信息,根据获取到的分组哈希结果和显示确认信息获取待签名摘要值;
显示模块,用于根据所述获取模块获取到的显示确认信息显示相应信息;
确认签名模块,用于当所述接收模块接收到签名指令时,检测用户的确认操作,并当检测到用户的确认操作时对所述获取模块获取的待签名摘要值进行签名,得到签名结果;
指令应答模块,用于向中间件返回哈希指令应答和签名结果。
17.如权利要求16所述的签名设备,其特征在于,所述签名设备还包括:签名环境初始化模块,用于在所述接收模块接收到签名环境初始化指令时,初始化签名环境,选择当前密钥,指定哈希算法。
18.如权利要求17所述的签名设备,其特征在于,所述签名设备还包括:判断模块,用于判断所述签名环境初始化模块选择的当前密钥是否为预设密钥;
所述获取模块,具体用于当所述接收模块接收到哈希指令,且所述判断模块判断所述签名环境初始化模块选择的当前密钥是预设密钥时,获取哈希指令中的分组哈希结果和显示确认信息,根据所述获取模块获取到的分组哈希结果和显示确认信息获取待签名摘要值。
19.如权利要求16所述的签名设备,其特征在于,所述显示模块还用于提示用户确认显示信息。
20.如权利要求16所述的签名设备,其特征在于,所述获取模块具体包括获取单元和哈希单元:
所述获取单元用于当所述接收模块接收到中间件下发的哈希指令时,从哈希指令中获取中间摘要值、分组剩余数据和显示确认信息;
所述哈希单元用于当所述获取单元获取到中间摘要值、分组剩余数据和显示确认信息时,以所述中间摘要值为初始参数,对所述分组剩余数据和所述显示确认信息进行哈希运算,得到待签名摘要值;当所述获取单元获取到中间摘要值和显示确认信息时,以所述中间摘要值为初始参数,对所述显示确认信息进行哈希运算,得到待签名摘要值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510462903.6A CN105162594B (zh) | 2015-07-31 | 2015-07-31 | 一种快速签名方法及签名设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510462903.6A CN105162594B (zh) | 2015-07-31 | 2015-07-31 | 一种快速签名方法及签名设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105162594A true CN105162594A (zh) | 2015-12-16 |
CN105162594B CN105162594B (zh) | 2018-03-30 |
Family
ID=54803359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510462903.6A Active CN105162594B (zh) | 2015-07-31 | 2015-07-31 | 一种快速签名方法及签名设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105162594B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789087A (zh) * | 2017-01-26 | 2017-05-31 | 数安时代科技股份有限公司 | 确定消息的数据摘要、基于多方的数字签名的方法及*** |
CN111832081A (zh) * | 2020-07-21 | 2020-10-27 | 杭州天谷信息科技有限公司 | 一种ofd快捷签方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631022A (zh) * | 2009-08-04 | 2010-01-20 | 北京飞天诚信科技有限公司 | 一种签名方法和*** |
WO2010022767A1 (en) * | 2008-08-26 | 2010-03-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet forwarding in a network |
CN103763103A (zh) * | 2013-12-31 | 2014-04-30 | 飞天诚信科技股份有限公司 | 一种智能卡生成脱机认证凭据的方法 |
CN104639328A (zh) * | 2015-01-29 | 2015-05-20 | 华南理工大学 | 一种goose报文认证方法及*** |
-
2015
- 2015-07-31 CN CN201510462903.6A patent/CN105162594B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010022767A1 (en) * | 2008-08-26 | 2010-03-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet forwarding in a network |
CN101631022A (zh) * | 2009-08-04 | 2010-01-20 | 北京飞天诚信科技有限公司 | 一种签名方法和*** |
CN103763103A (zh) * | 2013-12-31 | 2014-04-30 | 飞天诚信科技股份有限公司 | 一种智能卡生成脱机认证凭据的方法 |
CN104639328A (zh) * | 2015-01-29 | 2015-05-20 | 华南理工大学 | 一种goose报文认证方法及*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789087A (zh) * | 2017-01-26 | 2017-05-31 | 数安时代科技股份有限公司 | 确定消息的数据摘要、基于多方的数字签名的方法及*** |
CN111832081A (zh) * | 2020-07-21 | 2020-10-27 | 杭州天谷信息科技有限公司 | 一种ofd快捷签方法 |
CN111832081B (zh) * | 2020-07-21 | 2024-05-31 | 杭州天谷信息科技有限公司 | 一种ofd快捷签方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105162594B (zh) | 2018-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389177A (zh) | 一种软件版本确认方法、装置及*** | |
CN111356114A (zh) | 车内电子控制单元升级方法、装置、设备和车辆*** | |
CN111433773B (zh) | 对变电站中的网关的更新 | |
CN103501391B (zh) | 一种管理用户刷机行为的方法及*** | |
CN104579748A (zh) | Scd在线校核的网络分析方法及*** | |
WO2014067547A1 (en) | Nfc controller architecture for emulation of multiple nfc-a devices | |
CN115795513A (zh) | 文件加密和文件解密方法、装置以及设备 | |
US9781010B2 (en) | Managing remote devices | |
CN109788251B (zh) | 视频处理方法、装置及存储介质 | |
CN105162594A (zh) | 一种快速签名方法及签名设备 | |
CN113517982A (zh) | 口令的生成方法、口令的执行方法及终端 | |
CN115333851A (zh) | 自动驾驶数据的传输方法、装置和电子设备 | |
CN113703689B (zh) | 智能电表的数据存储方法、装置、智能电表以及存储介质 | |
WO2015180504A1 (en) | A method, device, and system for flow process error control | |
CN113311745B (zh) | 用于产品监控的方法、***、装置和设备 | |
CN110018854B (zh) | 一种固件匹配方法、设备和计算机可读存储介质 | |
CN115426111A (zh) | 一种数据加密方法、装置、电子设备及存储介质 | |
CN109656562B (zh) | 一种直流控制保护程序远程编译方法及*** | |
CN107066360B (zh) | 一种信息传输方法及服务器 | |
CN110548285B (zh) | 游戏通信控制方法及装置、介质及电子设备 | |
CN110971716B (zh) | 地址配置方法、装置、***和计算机可读存储介质 | |
CN109358875B (zh) | 基于Ubuntu***的硬件钱包离线升级装置和方法 | |
CN112288060A (zh) | 用于识别标签的方法和装置 | |
CN112994707B (zh) | Sas的扰码编码电路 | |
CN104967640A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |