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

文档序号:3211803阅读:140来源:国知局
专利名称:一种签名方法及装置的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种签名方法及装置。
背景技术
随着计算机网络以及通信技术的飞速发展,人类已逐步迈入信息化社会。在社会信息化进程中,互联网的发展极大地方便了人们的学习、工作和生活,计算机应用已经渗透到政治、经济、军师、科学文化和家庭生活等社会的各个领域。在不知不觉中,信息成为了最重要的一种资源和财富,但是由于信息的传递、存储、处理等过程往往是在开放的通信网络上进行的,所以信息容易受到窃听、截取、修改、伪造、重放等各种攻击手段的威胁。数字签名作为保障网络信息安全的手段之一,可以有效解决网络信息传输过程中伪造、抵赖、冒充和篡改的问题,在密钥分配、电子银行、电子证券、电子商务和电子政务等领域都有广泛的应用。但是,现有技术的签名过程只对待签名数据进行一次签名,安全性较低。

发明内容
本发明的目的是为了克服现有技术的不足,提供一种签名方法及装置。本发明提供了一种签名方法,包括步骤SI :等待并接收主机发送的数据包;步骤S2 :对所述接收到的数据包进行解析,并判断解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3 ;步骤S3 :按照第一摘要算法对所述解析结果进行计算得到第一摘要值,使用当前用户私钥对所述第一摘要值进行签名得到签名结果,并将所述签名结果返回给所述主机,返回步骤SI ;步骤S4 :从所述解析结果中提取关键信息,将所述关键信息通过液晶显示屏输出;步骤S5 :判断是否接收到按键信息,是则执行步骤S6,否则结束本次操作,返回步骤SI ;步骤S6 :检测所述按键信息的类型,如是确认键则执行步骤S7,如是取消键则结束本次操作,返回步骤SI,如是其他键则返回步骤S5 ;步骤S7 :使用所述第一摘要算法对所述交易报文进行计算得到第一摘要值,并按照预设规定将所述第一摘要值拆分成第一组数据和第二组数据;步骤S8 :按照第一预设规则对所述第二组数据的高位进行补位得到补位后的第二组数据,并将所述第一组数据和所述补位后的第二组数据顺序组合为第一数据;步骤S9 :根据所述第一摘要算法获取对应的算法标识,根据预设编码方式对所述算法标识和所述第一数据进行编码得到第一编码数据;步骤SlO :按照第二预设规则对所述第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用所述当前用户私钥分别对所述第一组编码数据和所述第二组编码数据进行签名,得到第一签名值和第二签名值;步骤Sll :将所述第一签名值和所述第二签名值顺序组合为签名结果并将其返回给所述主机,返回步骤SI。其中,在所述步骤SI和步骤S2之间包括判断是否接收完全部的数据包,是则执行步骤S2,否则返回步骤SI。其中,所述步骤SI和步骤S2分别替换为步骤SI’ ’和步骤S2’ ’ ;步骤SI’ ’ 等待并接收主机发送的数据包,对接收到的数据包进行解析;
步骤S2’ ’ 判断解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3。其中,所述数据包中包含报文长度,所述数据包分包进行接收;所述判断是否接收完全部的数据包具体为判断所有数据包的总长度是否等于所述报文长度,是则接收完全部的数据包,否则未接收完全部的数据包。其中,所述步骤SI和步骤S2分别替换为步骤SI’和步骤S2’ ;步骤SI,:等待并接收主机发送的数据包,当接收到一个数据包后逐个字符进行解析;步骤S2’ 判断所述解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3。其中,在所述步骤SI’和步骤S2’之间包括判断是否接收完全部的数据包,是则执行步骤S2’,否则返回步骤SI,。其中,所述判断是否接收完全部的数据包具体为判断接收到的指令中Pl的值是否为OxFF,是则执行步骤S2’,否则返回步骤SI,。其中,在所述步骤S4中提取所述关键信息与输出所述关键信息之间包括判断所述关键信息是否大于输出空间,是则,结束本次操作,返回步骤Si,否则将所述关键信息通过所述液晶显示屏输出。其中,在所述步骤S2与步骤S3之间、所述步骤S4中提取所述关键信息与输出所述关键信息之间包括判断是否已经通过认证,是则继续,否则结束本次操作,返回步骤SI。其中,在所述步骤S2和所述步骤S3之间、在所述步骤S6和所述步骤S7之前包括步骤al :判断是否存在指定摘要标识,是则根据所述摘要标识获取对应的所述第一摘要算法,继续,否则,结束本次操作,返回步骤Si ;步骤a2 :判断是否存在有效的所述当前用户私钥,是则继续,否则,结束本次操作,返回步骤SI。本发明又提供了一种签名装置,包括接收模块,用于接收主机发送的数据包;解析模块,用于对接收到的数据包进行解析;第一判断模块,用于判断解析结果是否为交易报文,是则提取模块工作,否则第一计算模块工作;
所述第一计算模块,用于按照第一摘要算法对所述解析结果进行计算得到第一摘要值,使用当前用户私钥对所述第一摘要值进行签名得到签名结果;所述提取模块,用于从所述交易报文中提取关键信息;输出模块,用于将所述关键信息通过液晶显示屏输出;第二判断模块,用于判断是否接收到按键信息,是则检测模块工作,否则结束本次操作;所述检测模块,用于检测所述按键信息的类型,如是确认键则第二计算模块工作,如是取消键则结束,如是其他键则所述第二判断模块工作; 所述第二计算模块,用于使用所述第一摘要算法对所述交易报文进行计算得到第一摘要值,并按照预设规定将所述第一摘要值拆分成第一组数据和第二组数据;补位组合模块,用于按照第一预设规则对所述第二组数据的高位进行补位得到补位后的第二组数据,并将所述第一组数据和所述补位后的第二组数据顺序组合为第一数据;编码模块,用于根据所述第一摘要算法获取对应的算法标识,根据预设编码方式对所述算法标识和所述第一数据进行编码得到第一编码数据;拆分签名模块,用于按照第二预设规则对所述第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用所述当前用户私钥分别对所述第一组编码数据和所述第二组编码数据进行签名,得到第一签名值和第二签名值;组合模块,用于将所述第一签名值和所述第二签名值顺序组合为签名结果;返回模块,用于将所述第一计算模块或所述组合模块的签名结果返回给所述主机。其中,所述装置还包括第三判断模块,用于判断是否接收完全部的数据包,是则所述解析模块工作,否则所述接收模块工作。其中,所述接收模块还用于接收所述主机下发的报文长度指令;所述解析模块还用于对接收到报文长度指令时对其进行解析得到报文长度;所述第三判断模块具体用于判断所有数据包的总长度是否等于所述报文长度,是则所述解析模块工作,否则所述接收模块工作。其中,所述解析模块还用于对接收到的一个数据包后逐个字符进行解析。其中,所述第三判断模块具体用于判断接收到的指令中Pl的值是否为OxFF,是则所述解析模块工作,否则所述接收模块工作。其中,所述装置还包括第四判断模块,用于判断所述关键信息是否大于输出空间,是则结束本次操作,否则所述输出模块工作。其中,所述装置还包括第五判断模块,用于判断是否已经通过认证,是则所述第一计算模块或所述输出模块工作,否则结束本次操作。其中,所述装置还包括第六判断模块,用于判断是否存在指定摘要标识,是则根据所述摘要标识获取对应的所述第一摘要算法;第七判断模块,用于判断是否存在有效的所述当前用户私钥。
本发明与现有技术相比,具有以下优点本发明提供了一种使用SM2算法对交易报文进行签名的方法及装置,签名过程中指定预设算法,通过补位方式分两次对交易信息进行签名,提高了安全强度,有效防止骗签和伪签名。


图I为本发明实施例一提供的一种签名方法的流程图;图2为本发明实施例二提供的一种签名方法的流程图;图3为本发明实施例三提供的一种SM2签名方法的流程图;图4为本发明实施例四提供的一种签名装置的方框示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一本发明实施例一提供一种签名方法,如图I所示,包括步骤SI :等待并接收主机发送的数据包;步骤S2 :对接收到的数据包进行解析,并判断解析结果是否为交易报文,是则执行步骤S3,否则执行步骤S4;本实施例中在步骤SI和步骤S2之间包括判断是否接收完全部的数据包,是则执行步骤S2,否则返回步骤SI。 本实施例中可以接收到一个数据包就进行解析,或者接收完全部的数据包再进行解析;优选的,本实施例中以接收完全部的数据包再进行解析为例进行说明;则在步骤Si之前包括等待并接收主机下发的报文长度指令,当接收到报文长度指令时对其进行解析得到报文长度;判断是否接收完全部的数据包具体为判断所有数据包的总长度是否等于报文长度,是则接收完全部的数据包,否则未接收完全部的数据包;本实施例中,如接收到一个数据包就进行解析则有两种实现方案,(一)步骤SI和步骤S2分别替换为步骤SI’’和步骤S2’ ’ ;步骤SI’ ’ 等待并接收主机发送的数据包,对接收到的数据包进行解析;步骤S2’’ 判断解析结果是否为交易报文,是则执行步骤S3,否则,结束;在步骤SI’’和步骤S2’’之间也可包括判断是否接收完全部的数据包,是则执行步骤S2’ ’,否则返回步骤SI”。具体判断是否接收完全部的数据包的方法和上述方法一致;(二)步骤SI和步骤S2分别替换为步骤SI’和步骤S2’ ;步骤SI,:等待并接收主机发送的数据包,当接收到一个数据包后逐个字符进行解析;步骤S2’ 判断解析结果是否为交易报文,是则执行步骤S3,否则,结束。
在步骤SI’和步骤S2’之间也可包括判断是否接收完全部的数据包,是则执行步骤S2’,否则返回步骤SI’。判断是否接收完全部的数据包具体为判断接收到的指令中Pl的值是否为OxFF,是则执行步骤S2’,否则返回步骤SI,。本实施例中判断解析结果是否为交易报文具体为判断交易报文中是否有<F>1</F>标签和<SX/S>标签,是则为交易报文,否则不为交易报文;步骤S3 :按照第一摘要算法对解析结果进行计算得到第一摘要值,使用当前用户私钥对第一摘要值进行签名得到签名结果 ,并将签名结果返回给主机,返回步骤SI ;步骤S4 :从解析结果中提取关键信息,将关键信息通过液晶显示屏输出;本实施例中在提取关键信息与输出关键信息之间包括判断关键信息是否大于输出空间,是则,结束,否则将关键信息通过液晶显示屏输出;步骤S5 :判断是否接收到按键信息,是则执行步骤S6,否则结束本次操作,返回步骤SI ;步骤S6 :检测按键信息的类型,如是确认键则执行步骤S7,如是取消键则结束本次操作,返回步骤SI,如是其他键则返回步骤S5 ;步骤S7 :使用第一摘要算法对交易报文进行计算得到第一摘要值,并按照预设规定将第一摘要值拆分成第一组数据和第二组数据;步骤S8 :按照第一预设规则对第二组数据的高位进行补位得到补位后的第二组数据,并将第一组数据和补位后的第二组数据顺序组合为第一数据;步骤S9 :根据第一摘要算法获取对应的算法标识,根据预设编码方式对算法标识和第一数据进行编码得到第一编码数据;步骤SlO :按照第二预设规则对第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用当前用户私钥分别对第一组编码数据和第二组编码数据进行签名,得到第一签名值和第二签名值;步骤Sll :将第一签名值和第二签名值顺序组合为签名结果并将其返回给主机,返回步骤SI。本实施例方法的实现过程中,在进行签名之前需判断是否通过认证、指定摘要算法和有效用户私钥是否存在;即在步骤S3与步骤S4之间、步骤S5中提取关键信息与输出关键信息之间判断是否已经通过认证,是则继续,否则结束。在步骤S3和步骤S4之间、在步骤S7和步骤S8之间包括步骤al :判断是否存在指定摘要标识,是则根据指定摘要标识获取对应的第一摘要算法,继续,否则,结束本次操作,返回步骤SI ;步骤a2 :判断是否存在有效的用户私钥,是则继续,否则,结束本次操作,返回步骤SI ;本实施例中可以先执行步骤al后执行步骤a2,或者先执行步骤a2后执行步骤
al ο本实施例中也可只进行一次签名,则在步骤S6中判断为否时就结束,S7中如为取消键则结束,步骤S3和步骤Sll后都结束,如要再次进行签名,需要重新插入Key。实施例二
本发明实施例二提供一种签名方法,如图2所示,包括步骤101 :等待并接收主机发送的数据包;本实施例中如主机发送的数据大于1024字节,则需要进行分包发送;具体的,设备接收到的主机发送的第一包数据为报文长度的数据包;步骤102 :判断是否接收完全部的数据包,是则执行步骤103,否则返回步骤101 ;本实施例中步骤102具体为判断所有数据包的总长度是否等于报文长度,是则接收完全部的数据包,否则没有接收完,返回步骤101继续接收;本实施例中接收到的第一个数据中包含报文长度;如未接收到包含报文长度的数据包则不接收剩余数据包;步骤103 :对接收到的数据包进行解析,并判断解析结果是否为交易报文,是则执 行步骤106,否则执行步骤104 ;本实施例中,可全部接收完所有的数据包再进行解析,实现过程参见步骤101-步骤103 ;也可接收到一个数据包先对该数据包进行解析再接收剩余的数据包,即将步骤101和步骤103分别替换为步骤101”和步骤103,,;步骤101’’ 等待并接收主机发送的数据包,对接收到的数据包进行解析;步骤103’ ’ 判断解析结果是否为交易报文,是则执行步骤106,否则执行步骤104 ;本实施例中,步骤101-步骤103还可替换为步骤101’ 等待接收主机发送的数据包,当接收到一个数据包后逐个字符进行解析;步骤102’ 判断是否接收完全部的数据包,是则执行步骤103’,否则返回步骤101,;本实施例中步骤102’具体为判断接收到的APDU指令中Pl的值是否为OxFF,是则执行步骤103’,否则返回步骤101’ ;步骤103’ 判断解析结果是否为交易报文,是则执行步骤106,否则执行步骤104 ;本实施例中步骤103’的实现过程参照步骤103中的判断方法,在此不再赘述;例如解析结果格式如下< xml version="l. O" encoding="UTF_8" >〈Trade〉<B>原始交易包</B><F>1</F><S> 帐号HB0200009280365金额100.00 RMB姓名张三</S>〈/Trade〉上述解析结果中具有第一预设字符串<F>1〈/F>标签和<SX/S>标签,所以解析结果为交易报文;例如解析结果的格式为< xml version="l. O" encoding="UTF_8" >〈Trade〉
〈B〉原始交易包〈/B〉<F>0</F>〈S〉帐号HB0200009280365金额100.00 RMB姓名张三〈/S〉〈/Trade〉上述解析结果中只有<F>1〈/F>标签而没有<SX/S>标签,所以上述解析结果不是交易报文; 步骤104 :判断是否已经通过认证,是则执行步骤105,否则结束本次操作,返回步骤 101 ;具体的,本实施例中步骤104包括将接收到的用户PIN码通过内部RSA密钥进行加密,将加密结果发送给COS程序进行认证,并判断COS程序返回的认证结果,如认证结果为认证成功,则通过认证,如认证结果为认证失败,则未通过认证;步骤105 :按照第一摘要算法对解析结果进行计算得到第一摘要值,使用当前用户私钥对第一摘要值进行签名得到签名结果,并将签名结果返回给主机,返回步骤101 ;本实施例中,在步骤104和步骤105之间还包括步骤al :判断是否存在指定摘要标识,是则根据指定摘要标识获取对应的第一摘要算法,执行步骤a2,否则,结束本次操作,返回步骤SI ;本实施例中的指定摘要标识可以为本次签名过程中主机下发的,也可以为上几次签名过程主机下发的;步骤a2 :判断是否存在有效的当前用户私钥,是则执行步骤105,否则,结束本次操作,返回步骤Si ;上述步骤al和步骤a2的顺序可调用,即可先执行步骤a2,判断为是时再执行步骤al ;如本实施例在设备中有多个用户私钥时,则需根据主机下发的密钥标识获取对应的用户私钥;具体的,本实施例中有效的用户私钥为SM2私钥;具体的,第一摘要算法包括SHA256或SM3 Hash算法,优选地,本实施中的第一摘要算法为SM3 Hash算法;本实施例中第一摘要值的长度为32字节,签名结果的长度为64字节;优选地,本实施例中使用SM3 Hash算法,对解析结果进行计算得到的第一摘要值为692CCE2A0AFD335E2CEBE186FC54EF06DD7E0AD3A07B1A4869D18932CE9047CC ;得到的签名结果为000E9AA35E60FA421607E0A743B8D78D48DD00BA9E005514B556D9F1DBCDCEE53900FE1DA955374814FA034ACEA7FB0F7AEE4CB422543A7CA0BC78B8C903E865 ;如使用SHA256算法,对解析结果进行计算得到第一摘要值为AAF213FF61DFEAC214D53R)B76BFA7EDA080899B8099E516BBECDC63DC9D58B6,得到的签名结果为 AB88EDDF6338BA6DA3A13D2E5D3A247C4AE502BE41390FF473FD8CE5798748E2F6A1636637104690148377EBDA77B0310C9AEB46978EEE8355656CD675653579 ;步骤106 :从解析结果中提取关键信息,并判断关键信息是否大于输出空间,是则结束本次操作,返回步骤101,否则执行步骤107 ;
具体的,本实施例中的显示空间为1024字节;步骤107 :判断是否已经通过认证,是则执行步骤108,否则结束本次操作,返回步骤 101 ;本实施例中该步骤的认证过程与步骤104的实现方法相同,在此不再赘述;步骤108 :将关键/[目息通过液晶显不屏输出;步骤109 :判断是否接收到按键信息,是则执行步骤110,否则结束本次操作,返回步骤101 ;优选的,在本实施例中,判断在预设时间内是否收到按键信息,是则执行步骤110,否则结束本次操作,返回步骤101 ;步骤110 :检测按键信息的类型,如是确认键则执行步骤111,如是取消键则结束 本次操作,返回步骤101,如是其他键则返回步骤109 ;步骤111 :使用第一摘要算法对解析结果进行计算得到第一摘要值;本实施例中在步骤110和步骤111之间可包括步骤al :判断是否存在摘要标识,是则根据摘要标识获取对应的第一摘要算法,执行步骤a2,否则,结束本次操作,返回步骤101 ;本实施例中的摘要标识可以为本次签名过程中主机下发的,也可以为上几次签名过程主机下发的;步骤a2 :判断是否存在有效的用户私钥,是则执行步骤111,否则,结束本次操作,返回步骤101 ;上述步骤al和步骤a2的顺序可调用,即可先执行步骤a2,判断为是时再执行步骤al ;如本实施例在设备中有多个用户私钥时,则需根据主机下发的密钥标识获取对应的用户私钥;具体的,本实施例中有效的用户私钥为SM2私钥;具体的,本实施例中的第一摘要算法包括SHA256或SM3 Hash算法,优选地,本实施例中的第一摘要算法为SM3 Hash算法;本实施例中第一摘要值为32字节数据,使用SM3 Hash算法对解析结果进行计算得到的第一摘要值具体为16658E684B1CDFADD60048151C63F260EDE2709E09B123D5740939609C156CEE ;如使用SHA256算法对解析结果进行计算得到的第一摘要值为B97B104DEF62D3A842D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤112 :按照预设规定将第一摘要值拆分成第一组数据和第二组数据;本实施例中,第一组数据为第一摘要值的前8个字节数据,第二组数据为第一摘要值剩余的24个字节数据;如步骤111中使用SM3 Hash,则第一组数据具体为16658E684B1CDFAD,第二组数据具体为D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步骤111中使用SHA256算法,则步骤112中得到的第一组数据为B97B104DEF62D3A8,得到的第二组数据为42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤113 :按照第一预设规则对第二组数据的高位进行补位得到补位后的第二组数据;本实施例中第一预设规则为在第二组数据的高位进行补位的数据为0009FFFFFFFFFF00,补位后的第二组数据长度为32字节;如步骤112中得到的第二组数据为 D60048151C63F260EDE2709E09B123D5740939609C156CEE,则补位后的数据具体为0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步骤112 中得到的第二组数据为 42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;则补位后的第二组数 据为0009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤114 :将第一组数据和补位后的第二组数据顺序组合为第一数据;具体的,本实施例中的第一数据长度为40个字节,在步骤111中使用SM3 Hash计算的,在该步骤中得到的第一数据具体为16658E684B1CDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;在步骤 111 中使用 SHA256算法进行计算的,在该步骤中得到的第一数据具体为B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤115 :根据第一摘要算法获取对应的算法标识,根据预设编码方式对算法标识和第一数据进行编码得到第一编码数据;具体的,本实施例中在步骤111中使用SM3 Hash计算的,在该步骤中得到的第一编码数据为3038300c06082A811CCF550183110500042816658E684BlCDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如本实施例中在步骤111中使用SHA256算法进行计算的,在该步骤中得到的第一编码数据为3039300d060960864801650304020105000428 B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤116 :按照第二预设规则对第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据;在本实施例中的第二预设规则为第二编码数据的长度为64字节,用于补位的数据为0009FFFFFF00 ;第一组编码数据和第二组编码数据的长度为32字节;如步骤111中使用SM3 Hash计算的,在该步骤中得到的第二编码数据具体为0009FFFFFF003038300c06082A811CCF550183110500042816658E684B1CDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE,第一组编码数据为0009FFFFFF003038300c06082A811CCF550183110500042816658E684B1CDFAD,第二组编码数据为0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步骤111中使用SHA256算法进行计算的,在该步骤中得到的第二编码数据具体为0009FFFF003039300d060960864801650304020105000428 B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F,第一组编码数据为0009FFFF003039300d060960864801650304020105000428B97B104DEF62D3A8,第二组编码数据为0009FFFFFFFFFF00 42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步骤117 :使用内部存储的当前用户私钥分别对第一组编码数据和第二组编码数据进行签名,得到第一签名值和第二签名值;在本实施例中,如步骤111中使用SM3 Hash计算的,在该步骤中得到的第一签名值具体为83FB83A31DEB21F3AF9DC4CC16CD1912C6^F0DCB68A943A7392D29341C18DE37059835951D3A4B9A061889B0B598D6DBC99BD1A749A6AA970F15A278DF96FCB ;第二签名值具体为:6A4865D6F7DC5407FD4DB35D7DDF83DF386F92814078EF8A15A5259721CC69A637A56575C0E81B00650E45FCF80662DDD94869256848AAF7A4FF3B363C3BF7E2 ;如步骤111中使用SHA256算法进行计算的,在该步骤中得到的第一签名值具体为:2F88779CD873E910AF2A02D67F2E4976F1C444D8A14EEAF6A6F1F5EF9BC4291D192D82D2149776BE78D659371194A429AB233FB59BD43BE4B462A34D3C229EBE ;第二签名值具体为AE28C906A32D12011764D514B55A835E36D65B26C897BF84D018F1B86D7AA7D1DEEA0EC364A03C85D28BC77F5F7E4399CF04DCE0FC8A73D5C1ACF2EA34F0881D ;步骤118 :将第一签名值和第二签名值顺序组合为签名结果并将其返回给主机,返回步骤101 ;在本实施例中,结果签名值为128字节的数据,如步骤111中使用SM3 Hash计算 的,在该步骤中得到的签名结果具体为83FB83A31DEB21F3AF9DC4CC16CD1912C6^F0DCB68A943A7392D29341C18DE37059835951D3A4B9A061889B0B598D6DBC99BD1A749A6AA970F15A278DF96FCB6A4865D6F7DC5407FD4DB35D7DDF83DF386F92814078EF8A15A5259721CC69A637A56575C0E81B00650E45FCF80662DDD94869256848AAF7A4FF3B363C3BF7E2 ;如步骤111中使用SHA256算法进行计算的,在该步骤中得到的签名结果具体为2F88779CD873E910AF2A02D67F2E4976F1C444D8A14EEAF6A6F1F5EF9BC4291D192D82D2149776BE78D659371194A429AB233FB59BD43BE4B462A34D3C229EBEAE28C906A32D12011764D514B55A835E36D65B26C897BF84D018F1B86D7AA7D1DEEA0EC364A03C85D28BC77F5F7E4399CF04DCE0FC8A73D5C1ACF2EA34F088ID。本实施例的方法在签名过程中指定预设算法,通过补位方式分两次对交易信息进行签名,提高了安全强度,有效防止骗签和伪签名。实施例三本发明实施例三提供一种SM2的签名方法,在该方法中均以二进制数进行计算和处理;如图3所示,本实施例方法包括步骤201 :对待签名数据进行摘要算法得到第一摘要值;本实施例中的摘要算法为SHA256或SM3 ;步骤202 :用随机数发生器生成随机数;步骤203 :判断随机数是否大于预设数值,是则返回步骤202,否则执行步骤204 ;步骤204 :从椭圆曲线上获取一点值;步骤205 :用预设数值对点值的横坐标与第一摘要值的和进行取余得到第一余数;步骤206 :判断第一余数是否为O或者第一余数与随机数的模加结果是否等于预设数值,是则返回步骤202,否则执行步骤207 ;步骤207 :用I与用户私钥进行模加得到模加值,用第一余数与用户私钥进行模乘得到模乘值,用随机数与模乘值进行模减得到模减值;用预设数值对模加值的逆与模减值的模乘结果进行取余得到第二余数;步骤208 :判断第二余数是否为0,是则返回步骤202,否则根据第一余数和第二余数生成签名结果。实施例四本发明实施例四提供一种签名装置,如图4所示,包括接收模块401,用于接收主机发送的数据包;解析模块402,用于对接收到的数据包进行解析;第一判断模块403,用于判断解析结果是否为交易报文,是则提取模块405工作,否则第一计算模块404工作;在本实施例中,第一判断模块403具体用于判断所有数据包的解析结果中是否包含〈F〉I〈F〉标签和<SX/S>标签;
第一计算模块404,用于按照第一摘要算法对解析结果进行计算得到第一摘要值,使用当前用户私钥对第一摘要值进行签名得到签名结果,并将签名结果返回给主机;提取模块405,用于从交易报文中提取关键信息;输出模块406,用于将关键信息通过液晶显示屏输出;第二判断模块407,用于判断是否接收到按键信息,是则检测模块408工作,否则结束本次操作;检测模块408,用于检测按键信息的类型,如是确认键则第二计算模块409工作,如是取消键则结束,如是其他键则第二判断模块407工作;第二计算模块409,用于使用第一摘要算法对交易报文进行计算得到第一摘要值,并按照预设规定将第一摘要值拆分成第一组数据和第二组数据;补位组合模块410,用于按照第一预设规则对第二组数据的高位进行补位得到补位后的第二组数据,并将第一组数据和补位后的第二组数据顺序组合为第一数据;编码模块411,用于根据第一摘要算法获取对应的算法标识,根据预设编码方式对算法标识和第一数据进行编码得到第一编码数据;拆分签名模块412,用于按照第二预设规则对第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用当前用户私钥分别对第一组编码数据和第二组编码数据进行签名,得到第一签名值和第二签名值;组合模块413,用于将第一签名值和第二签名值顺序组合为签名结果;返回模块414,用于将第一计算模块或组合模块的签名结果返回给主机。本实施例中的装置还可包括第三判断模块,用于判断是否接收完全部的数据包,是则解析模块402工作,否则接收模块401工作。本实施例中的接收模块401还用于接收主机下发的报文长度指令;解析模块402还用于对接收到报文长度指令时对其进行解析得到报文长度;第三判断模块具体用于判断所有数据包的总长度是否等于报文长度,是则解析模块402工作,否则接收模块401工作。本实施例中的解析模块402还用于对接收到的一个数据包后逐个字符进行解析;第三判断模块具体用于判断接收到的指令中Pl的值是否为OxFF,是则解析模块402工作,否则接收模块401工作。本实施例中的装置还包括第四判断模块、第五判断模块、第六判断模块和第七判断模块;其中,
第四判断模块,用于判断关键信息是否大于输出空间,是则结束本次操作,否则输出模块406工作;第五判断模块,用于判断是否已经通过认证,是则第一计算模块405或输出模块406工作,否则结束本次操作;第六判断模块,用于判断是否存在指定摘要标识,是则根据摘要标识获取对应的
第一摘要算法;第七判断模块,用于判断是否存在有效的用户私钥;
本实施例中在第一计算模块404或第二计算模块409工作之前,需先第六判断模块和第七判断模块进行工作,优选的,本实施例中,第六判断模块先工作,判断为是时第七判断模块再工作,第七判断模块判断为是时第一计算模块404或第二计算模块409工作。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种签名方法,其特征在于,包括 步骤Si:等待并接收主机发送的数据包; 步骤S2 :对所述接收到的数据包进行解析,并判断解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3; 步骤S3 :按照第一摘要算法对所述解析结果进行计算得到第一摘要值,使用当前用户私钥对所述第一摘要值进行签名得到签名结果,并将所述签名结果返回给所述主机,返回步骤SI ; 步骤S4 :从所述解析结果中提取关键信息,将所述关键信息通过液晶显示屏输出; 步骤S5 :判断是否接收到按键信息,是则执行步骤S6,否则结束本次操作,返回步骤 SI; 步骤S6 :检测所述按键信息的类型,如是确认键则执行步骤S7,如是取消键则结束本次操作,返回步骤SI,如是其他键则返回步骤S5 ; 步骤S7 :使用所述第一摘要算法对所述交易报文进行计算得到第一摘要值,并按照预设规定将所述第一摘要值拆分成第一组数据和第二组数据; 步骤S8 :按照第一预设规则对所述第二组数据的高位进行补位得到补位后的第二组数据,并将所述第一组数据和所述补位后的第二组数据顺序组合为第一数据; 步骤S9 :根据所述第一摘要算法获取对应的算法标识,根据预设编码方式对所述算法标识和所述第一数据进行编码得到第一编码数据; 步骤SlO :按照第二预设规则对所述第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用所述当前用户私钥分别对所述第一组编码数据和所述第二组编码数据进行签名,得到第一签名值和第二签名值; 步骤Sll :将所述第一签名值和所述第二签名值顺序组合为签名结果并将其返回给所述主机,返回步骤SI。
2.如权利要求I所述的方法,其特征在于,在所述步骤SI和步骤S2之间包括判断是否接收完全部的数据包,是则执行步骤S2,否则返回步骤SI。
3.如权利要求2所述的方法,其特征在于,所述步骤SI和步骤S2分别替换为步骤SI’’和步骤S2’’ ; 步骤SI’’ 等待并接收主机发送的数据包,对接收到的数据包进行解析; 步骤S2’ ’ 判断解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3。
4.如权利要求2或3所述的方法,其特征在于,所述数据包中包含报文长度,所述数据包分包进行接收; 所述判断是否接收完全部的数据包具体为判断所有数据包的总长度是否等于所述报文长度,是则接收完全部的数据包,否则未接收完全部的数据包。
5.如权利要求I所述的方法,其特征在于,所述步骤SI和步骤S2分别替换为步骤SI,和步骤S2’ ; 步骤SI,:等待并接收主机发送的数据包,当接收到一个数据包后逐个字符进行解析; 步骤S2’ 判断所述解析结果是否为交易报文,是则执行步骤S4,否则执行步骤S3。
6.如权利要求5所述的方法,其特征在于,在所述步骤SI,和步骤S2’之间包括判断是否接收完全部的数据包,是则执行步骤S2’,否则返回步骤SI’。
7.如权利要求6所述的方法,其特征在于,所述判断是否接收完全部的数据包具体为判断接收到的指令中Pl的值是否为OxFF,是则执行步骤S2’,否则返回步骤SI,。
8.如权利要求1、3、5任意一项所述的方法,其特征在于,在所述步骤S4中提取所述关键信息与输出所述关键信息之间包括判断所述关键信息是否大于输出空间,是则,结束本次操作,返回步骤SI,否则将所述关键信息通过所述液晶显示屏输出。
9.如权利要求1、3、5任意一项所述的方法,其特征在于,在所述步骤S2与步骤S3之间、所述步骤S4中提取所述关键信息与输出所述关键信息之间包括判断是否已经通过认证,是则继续,否则结束本次操作,返回步骤SI。
10.如权利要求1、3、5任意一项所述的方法,其特征在于,在所述步骤S2和所述步骤S3之间、在所述步骤S6和所述步骤S7之前包括 步骤al :判断是否存在指定摘要标识,是则根据所述摘要标识获取对应的所述第一摘要算法,继续,否则,结束本次操作,返回步骤SI ; 步骤a2 :判断是否存在有效的所述当前用户私钥,是则继续,否则,结束本次操作,返回步骤SI。
11.一种签名装置,其特征在于,包括 接收模块,用于接收主机发送的数据包; 解析模块,用于对接收到的数据包进行解析; 第一判断模块,用于判断解析结果是否为交易报文,是则提取模块工作,否则第一计算模块工作; 所述第一计算模块,用于按照第一摘要算法对所述解析结果进行计算得到第一摘要值,使用当前用户私钥对所述第一摘要值进行签名得到签名结果; 所述提取模块,用于从所述交易报文中提取关键信息; 输出模块,用于将所述关键信息通过液晶显示屏输出; 第二判断模块,用于判断是否接收到按键信息,是则检测模块工作,否则结束本次操作; 所述检测模块,用于检测所述按键信息的类型,如是确认键则第二计算模块工作,如是取消键则结束,如是其他键则所述第二判断模块工作; 所述第二计算模块,用于使用所述第一摘要算法对所述交易报文进行计算得到第一摘要值,并按照预设规定将所述第一摘要值拆分成第一组数据和第二组数据; 补位组合模块,用于按照第一预设规则对所述第二组数据的高位进行补位得到补位后的第二组数据,并将所述第一组数据和所述补位后的第二组数据顺序组合为第一数据;编码模块,用于根据所述第一摘要算法获取对应的算法标识,根据预设编码方式对所述算法标识和所述第一数据进行编码得到第一编码数据; 拆分签名模块,用于按照第二预设规则对所述第一编码数据进行补位得到第二编码数据,将补位后的第二编码数据拆分成等长的第一组编码数据和第二组编码数据,使用所述当前用户私钥分别对所述第一组编码数据和所述第二组编码数据进行签名,得到第一签名值和第二签名值; 组合模块,用于将所述第一签名值和所述第二签名值顺序组合为签名结果;返回模块,用于将所述第一计算模块或所述组合模块的签名结果返回给所述主机。
12.如权利要求11所述的装置,其特征在于,还包括 第三判断模块,用于判断是否接收完全部的数据包,是则所述解析模块工作,否则所述接收模块工作。
13.如权利要求12所述的装置,其特征在于,所述接收模块还用于接收所述主机下发的报文长度指令; 所述解析模块还用于对接收到报文长度指令时对其进行解析得到报文长度; 所述第三判断模块具体用于判断所有数据包的总长度是否等于所述报文长度,是则所 述解析模块工作,否则所述接收模块工作。
14.如权利要求12所述的装置,其特征在于,所述解析模块还用于对接收到的一个数据包后逐个字符进行解析。
15.如权利要求14所述的装置,其特征在于,所述第三判断模块具体用于判断接收到的指令中Pl的值是否为OxFF,是则所述解析模块工作,否则所述接收模块工作。
16.如权利要求11、13、15任意一项所述的装置,其特征在于,还包括第四判断模块,用于判断所述关键信息是否大于输出空间,是则结束本次操作,否则所述输出模块工作。
17.如权利要求11、13、15任意一项所述的装置,其特征在于,还包括第五判断模块,用于判断是否已经通过认证,是则所述第一计算模块或所述输出模块工作,否则结束本次操作。
18.如权利要求11、13、15任意一项所述的装置,其特征在于,还包括 第六判断模块,用于判断是否存在指定摘要标识,是则根据所述摘要标识获取对应的所述第一摘要算法; 第七判断模块,用于判断是否存在有效的所述当前用户私钥。
全文摘要
本发明公开一种签名方法及装置,该方法包括对接收到的数据包进行解析,判断解析结果是否为交易报文,否则对解析结果进行计算,使用当前用户私钥对计算结果进行签名并将签名结果返回给主机;是则从解析结果中提取关键信息并输出;如接收到确认按键信息,对交易报文进行计算并将计算结果拆分成两组数据;将第一组数据和补位后的第二组数据组合为第一数据;根据预设编码方式对算法标识和第一数据进行编码;对编码结果进行补位后拆成等长的两个数据段,使用用户私钥分别对两个数据段进行签名,将两个签名值顺序组合为签名结果返回给主机。在签名过程中指定预设算法,通过补位方式分两次对交易信息进行签名,提高了安全强度,有效防止骗签和伪签名。
文档编号H04L9/32GK102970145SQ201210564398
公开日2013年3月13日 申请日期2012年12月21日 优先权日2012年12月21日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1