数字签名及验签方法、装置、设备及计算机可读介质制造方法及图纸

技术编号:35862048 阅读:18 留言:0更新日期:2022-12-07 10:52
本申请涉及一种数字签名及验签方法、装置、设备及计算机可读介质。该方法包括:接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;调取GPU端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于GPU端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;接收所述GPU端返回的所述目标数据,将目标数据返回给第一对象。本申请解决大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度大,服务器性能不佳的技术问题。服务器性能不佳的技术问题。服务器性能不佳的技术问题。

【技术实现步骤摘要】
数字签名及验签方法、装置、设备及计算机可读介质


[0001]本申请涉及信息安全
,尤其涉及一种数字签名及验签方法、装置、设备及计算机可读介质。

技术介绍

[0002]互联网行业的井喷式发展导致电子商务、数字出版、软件发布等业务在线交易量迅速激增。为了确保交易的安全,在线交易过程需要保证四个基本安全要素:1)信息的保密性;2)信息的完整性;3)信息的不可否认性;4)身份的真实性。作为密码学中的重要手段,公钥密码体系能够有效地解决公共信道上的身份认证、数据私密性、不可否认性等问题,其中,椭圆曲线密码由于在安全性、计算量、处理速度、存储空间等方面的诸多优势,已经成为继RSA密码算法后被高度重视的公钥密码算法。国际上的相关标准化组织已经对其进行标准化工作,国内也将SM2椭圆曲线公钥密码算法作为密码行业标准。在信息安全领域,SM2公钥密码算法既可以用于数据加解密,又可以用于数字签名认证,具有广泛应用市场。其中,数字签名在身份认证、抗抵赖性等方面具有重要作用,例如电子货币系统,商家或消费者需要使用数字签名对电子货币进行签署或验证,以确保电子货币信息的安全性与正确性。当同时对大量的电子现金进行数字签名或验证时,会大幅度降低整个系统的运行效率。
[0003]目前,相关技术中,开发人员往往将数字签名及验签方法集成到核心业务中。对于中小型项目应用来说,这是比较好的选择,但一旦项目体量增大到一定程度,这种方式便会造成开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳等问题。
[0004]针对大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的问题,目前尚未提出有效的解决方案。

技术实现思路

[0005]本申请提供了一种数字签名及验签方法、装置、设备及计算机可读介质,以解决大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0006]根据本申请实施例的一个方面,本申请提供了一种数字签名方法,包括:
[0007]接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;
[0008]调取GPU端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于GPU端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;
[0009]接收所述GPU端返回的所述目标数据,将目标数据返回给第一对象。
[0010]可选地,基于GPU端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据包括:
[0011]置其中,M为待签名数据,Z
A
为级联字节流(ENTL||ID||a||b||x_G||y_G||x_A||y_A)的SM3杂凑值,“||”表示字节流的拼接,ENTL是用两个字节表示的第一对象的数据标识的比特长度,ID为第一对象的数据标识,a、b、x_G以及y_G是SM2曲线标准中给定的值,x_A和y_A为第一对象提供的目标公钥;
[0012]确定其中,H
v
为SM3哈希算法,e为待签名数据的哈希值,e的数据类型为整数;
[0013]用随机数发生器产生随机数k∈[1,n

1],并基于随机数k确定椭圆曲线上的目标点(x1,y1)=[k]G,其中,x1的数据类型为整数,G为SM2曲线的基点,n为SM2曲线标准中给定的值;
[0014]确定r=(e+x1)mod n、s=(1+d
A
)
‑1·
(k

r
·
d
A
)mod n,得到数字签名(r,s);
[0015]在r=0、r+k=n以及s=0三个条件出现其中任意一个的情况下,重新产生随机数进行签名。
[0016]可选地,调取GPU端上的签名服务,并将待签名数据和目标私钥输入签名服务之前,所述方法还包括:
[0017]将第一对象的对象信息作为数据标识嵌入到待签名数据中,并将数据标识作为当前签名任务的格式化标识,以使GPU端根据格式化标识为对应的当前签名任务分配内核;
[0018]将多个待处理任务填充至一个数据包后打包发送给GPU端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0019]可选地,调取GPU端上的签名服务包括:
[0020]向GPU端发送资源查询请求;
[0021]接收GPU端响应资源查询请求返回的GPU可用资源,其中,所述GPU可用资源包括可用GPU数量、每个可用GPU的可用计算资源量以及每个可用GPU的显存数量中的至少一种;
[0022]根据包含当前签名任务的数据包的任务量和GPU可用资源,对GPU的多个内核进行初始化,以在多个内核中为当前签名任务分配的目标内核上启动签名服务。
[0023]可选地,调取GPU端上的签名服务,并将待签名数据和目标私钥输入签名服务之前,所述方法还包括:
[0024]将待签名数据中的点坐标由仿射坐标系转换为雅可比坐标系之后,再调取GPU端上的签名服务。
[0025]可选地,所述将所述待签名数据和所述目标私钥输入所述签名服务包括:将所述待签名数据和所述目标私钥按照第一数据结构进行组织排布后输入到所述签名服务中,其中,所述第一数据结构用于使所述签名服务访问所述待签名数据和所述目标私钥时减少产生的访存事务的数量。
[0026]可选地,所述接收所述GPU端返回的所述目标数据包括:接收所述GPU端对处理结果按照第二数据结构进行组织排布后返回的所述目标数据,其中,所述第二数据结构用于减少内存缺页的数量。
[0027]可选地,在接收到多个签名请求的情况下,所述方法还包括:
[0028]将多个所述签名请求缓存至目标队列;
[0029]按照预设分配策略将多个所述签名请求分配至多个GPU内核,以使多个所述GPU内核按照并行执行策略在所述目标队列中读取并处理所述签名请求,其中,每个所述GPU内核
同时处理至少一个所述签名请求。
[0030]根据本申请实施例的另一方面,本申请提供了一种验签方法,包括:
[0031]接收第二对象发送的验签请求,所述验签请求包括待验签数据和目标公钥,其中,待验签数据为第一对象在接受目标业务的服务时对目标业务产生的业务数据进行签名得到的,目标公钥与目标私钥组成密钥对,密钥对为第一对象生成的;
[0032]调取GPU端上的验签服务,并将待验签数据和目标公钥输入验签服务,以基于GPU端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果;
[0033]接收所述GPU端返回的所述验签结果,将验签结果返回给第二对象。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数字签名方法,其特征在于,包括:接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,所述待签名数据为所述第一对象在接受目标业务的服务时由所述目标业务产生的业务数据,所述目标私钥与目标公钥组成密钥对,所述密钥对为所述第一对象生成的;调取GPU端上的签名服务,并将所述待签名数据和所述目标私钥输入所述签名服务,以基于所述GPU端上的所述签名服务,利用所述目标私钥对所述待签名数据进行签名,得到携带有数字签名的目标数据;接收所述GPU端返回的所述目标数据,将所述目标数据返回给所述第一对象。2.根据权利要求1所述的方法,其特征在于,所述基于所述GPU端上的所述签名服务,利用所述目标私钥对所述待签名数据进行签名,得到携带有数字签名的目标数据包括:置其中,M为所述待签名数据,Z
A
为级联字节流(ENTL||ID||a||b||x_G||y_G||x_A||y_A)的SM3杂凑值,“||”表示字节流的拼接,ENTL是用两个字节表示的所述第一对象的数据标识的比特长度,ID为所述第一对象的所述数据标识,a、b、x_G以及y_G是SM2曲线标准中给定的值,x_A和y_A为所述第一对象提供的所述目标公钥;确定其中,H
v
为SM3哈希算法,e为所述待签名数据的哈希值,e的数据类型为整数;用随机数发生器产生随机数k∈[1,n

1],并基于所述随机数k确定椭圆曲线上的目标点(x1,y1)=[k]G,其中,x1的数据类型为整数,G为SM2曲线的基点,n为SM2曲线标准中给定的值;确定r=(e+x1)mod n、s=(1+d
A
)
‑1·
(k

r
·
d
A
)mod n,得到所述数字签名(r,s);在r=0、r+k=n以及s=0三个条件出现其中任意一个的情况下,重新产生随机数进行签名。3.根据权利要求1所述的方法,其特征在于,所述调取GPU端上的签名服务,并将所述待签名数据和所述目标私钥输入所述签名服务之前,所述方法还包括:将所述第一对象的对象信息作为数据标识嵌入到所述待签名数据中,并将所述数据标识作为当前签名任务的格式化标识,以使所述GPU端根据所述格式化标识为对应的所述当前签名任务分配内核;将多个待处理任务填充至一个数据包后打包发送给所述GPU端,其中,所述待处理任务包括签名任务和/或验签任务,所述待处理任务的数量为32的整数倍。4.根据权利要求3所述的方法,其特征在于,所述调取GPU端上的签名服务包括:向所述GPU端发送资源查询请求;接收所述GPU端响应所述资源查询请求返回的GPU可用资源,其中,所述GPU可用资源包括可用GPU数量、每个可用GPU的可用计算资源量以及每个可用GPU的显存数量中的至少一种;根据包含所述当前签名任务的所述数据包的任务量和所述GPU可用资源,对所述GPU的多个内核进行初始化,以在所述多个内核中为所述当前签名任务分配的目标内核上启动所述签名服务。5.根据权利要求1所述的方法,其特征在于,所述调取GPU端上的签名服务,并将所述待
签名数据和所述目标私钥输入所述签名服务之前,所述方法还包括:将所述待签名数据中的点坐标由仿射坐标系转换为雅可比坐标系之后,再调取所述GPU端上的所述签名服务。6.根据权利要求1所述的方法,其特征在于,所述将所述待签名数据和所述目标私钥输入所述签名服务包括:将所述待签名数据和所述目标私钥按照第一数据结构进行组织排布后输入到所述签名服务中,其中,所述第一数据结构用于使所述签名服务访问所述待签名数据和所述目标私钥时减少产生的访存事务的数量;所述接收所述GPU端返回的所述目标数据包括:接收所述GPU端对处理结果按照第二数据结构进行组织排布后返回的所述目标数据,其中,所述第二数据结构用于减少内存缺页的数量。7.根据权利要求1所述的方法,其特征在于,在接收到多个签名请求的情况下,所述方法还包括:将多个所述签名请求缓存至目标队列;按照预设分配策略将多个所述签名请求分配至多个GPU内核,以使多个所述GPU内核按照并行执行策略在所述目标队列中读取并处理所述签名请求,其中,每个所述GPU内核同时处理至少一个所述签名请求。8.一种验签方法,其特征在于,包括:接收第二对象发送的验签请求,所述验签请求包括待验签数据和目标公钥,其中,所述待验签数据为第一对象在接受目标业务的服务时对所述目标业务产生的业务数据进行签名得到的,所述目标公钥与目标私钥组成密钥对,所述密钥对为所述第一对象生成的;调取GPU端上的验签服务,并将所述待验签数据和所述目标公钥输入所述验签服务,以基于所述GPU端上的所述验签服务,利用所述目标公钥对所述待验签数据进行验签,得到验签结果;接收所述GPU端返回的所述验签结果,将所述验签结果返回给所述第二对象。9.根据权利要求8所述的方法,其特征在于,调取GPU端上的验签服务,并将待验签数据和目标公钥输入验签服务之前,所述方法还包括:将第二对象的对象信息作为数据标识嵌入到所述待验签数据中,并将数据标识作为当前验签任务的格式化标识,以使GPU端根据格式化标识为对应的当前验签任务分配内核;将多个待处理任务填充至一个数据包后打包发送给GPU端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。10.根据权利要求8所述的方法,其特征在于,调取GPU端上的验签服务包括:向GPU端发送资源查询请求;...

【专利技术属性】
技术研发人员:黄方蕾邱炜伟崔璨张珂杰乔沛杨
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1