一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数字签名及验签方法、装置、设备及计算机可读介质与流程

2022-12-07 02:50:37 来源:中国专利 TAG:


1.本技术涉及信息安全技术领域,尤其涉及一种数字签名及验签方法、装置、设备及计算机可读介质。


背景技术:

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


技术实现要素:

5.本技术提供了一种数字签名及验签方法、装置、设备及计算机可读介质,以解决大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
6.根据本技术实施例的一个方面,本技术提供了一种数字签名方法,包括:
7.接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;
8.调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;
9.接收所述gpu端返回的所述目标数据,将目标数据返回给第一对象。
10.可选地,基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据包括:
11.置其中,m为待签名数据,za为级联字节流(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为第一对象提供的目标公钥;
12.确定其中,hv为sm3哈希算法,e为待签名数据的哈希值,e的数据类型为整数;
13.用随机数发生器产生随机数k∈[1,n-1],并基于随机数k确定椭圆曲线上的目标点(x1,y1)=[k]g,其中,x1的数据类型为整数,g为sm2曲线的基点,n为sm2曲线标准中给定的值;
[0014]
确定r=(e x1)mod n、s=(1 da)-1
·
(k-r
·
da)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端返回的所述验签结果,将验签结果返回给第二对象。
[0034]
可选地,待验签数据为m

,待验签数据中包括数字签名(r

,s

),基于gpu端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果包括:
[0035]
在r

∈[1,n-1]且s

∈[1,n-1]的情况下,置其中,m

为待验签数据,za为级联字节流(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为第一对象提供的目标公钥,n为sm2曲线标准中给定的值;
[0036]
确定其中,hv为sm3哈希算法,e

为待验签数据的哈希值,e

的数据类型为整数;
[0037]
将r

、s

转换为整数,并确定t=(r

s

)mod n;
[0038]
在t≠0的情况下确定椭圆曲线上的目标点(x1′
,y1′
)=[s

]g [t]pa,其中,x1′
的数据类型为整数,g为sm2曲线的基点,pa为目标公钥;
[0039]
确定r=(e

x1′
)mod n,并将r与r

进行对比;
[0040]
在r与r

一致的情况下,确定验签通过。
[0041]
可选地,将r与r

进行对比具体包括:
[0042]
在雅可比坐标系下对比r与r


[0043]
可选地,调取gpu端上的验签服务,并将待验签数据和目标公钥输入验签服务之前,所述方法还包括:
[0044]
将第二对象的对象信息作为数据标识嵌入到待验签数据中,并将数据标识作为当前验签任务的格式化标识,以使gpu端根据格式化标识为对应的当前验签任务分配内核;
[0045]
将多个待处理任务填充至一个数据包后打包发送给gpu端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0046]
可选地,调取gpu端上的验签服务包括:
[0047]
向gpu端发送资源查询请求;
[0048]
接收gpu端响应资源查询请求返回的gpu可用资源,其中,所述gpu可用资源包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量中的至少一种;
[0049]
根据包含当前验签任务的数据包的任务量和gpu可用资源,对gpu的多个内核进行初始化,以在多个内核中为当前验签任务分配的目标内核上启动验签服务。
[0050]
可选地,调取gpu端上的验签服务,并将待签名数据和目标私钥输入签名服务还包括:
[0051]
基于可变时间方式进行验签。
[0052]
可选地,所述将所述待验签数据和所述目标公钥输入所述验签服务包括:将所述待验签数据和所述目标公钥按照第一数据结构进行组织排布后输入到所述验签服务中,其中,所述第一数据结构用于使所述验签服务访问所述待验签数据和所述目标公钥时减少产生的访存事务的数量。
[0053]
可选地,所述接收所述gpu端返回的所述验签结果包括:接收所述gpu端对处理结果按照第二数据结构进行组织排布后返回的所述验签结果,其中,所述第二数据结构用于减少内存缺页的数量。
[0054]
可选地,在接收到多个验签请求的情况下,所述方法还包括:
[0055]
将多个所述验签请求缓存至目标队列;
[0056]
按照预设分配策略将多个所述验签请求分配至多个gpu内核,以使多个所述gpu内核按照并行执行策略在所述目标队列中读取并处理所述验签请求,其中,每个所述gpu内核同时处理至少一个所述验签请求。
[0057]
根据本技术实施例的另一方面,本技术提供了一种数字签名装置,包括:
[0058]
签名请求接收模块,用于接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;
[0059]
签名服务调取模块,用于调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;
[0060]
签名结果返回模块,用于接收gpu端返回的目标数据,将目标数据返回给第一对象。
[0061]
根据本技术实施例的另一方面,本技术提供了一种验签装置,包括:
[0062]
验签请求接收模块,用于接收第二对象发送的验签请求,所述验签请求包括待验签数据和目标公钥,其中,待验签数据为第一对象在接受目标业务的服务时对目标业务产生的业务数据进行签名得到的,目标公钥与目标私钥组成密钥对,密钥对为第一对象生成的;
[0063]
验签服务调取模块,用于调取gpu端上的验签服务,并将待验签数据和目标公钥输入验签服务,以基于gpu端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果;
[0064]
验签结果返回模块,用于接收gpu端返回的验签结果,将验签结果返回给第二对象。
[0065]
根据本技术实施例的另一方面,本技术提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
[0066]
根据本技术实施例的另一方面,本技术还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
[0067]
本技术实施例提供的上述技术方案与相关技术相比具有如下优点:
[0068]
本技术提供的一种数字签名的技术方案包括接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服
务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;接收所述gpu端返回的所述目标数据,将目标数据返回给第一对象。本技术将数字签名、验签与核心业务解耦,将签名和验签模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
附图说明
[0069]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
[0070]
为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0071]
图1为根据本技术实施例提供的一种可选的数字签名及验签方法硬件环境示意图;
[0072]
图2为根据本技术实施例提供的一种可选的数字签名方法流程示意图;
[0073]
图3为根据本技术实施例提供的一种可选的以行优先排列数据的示意图;
[0074]
图4为根据本技术实施例提供的一种可选的以列优先排列数据的示意图;
[0075]
图5为根据本技术实施例提供的一种可选的验签方法流程示意图;
[0076]
图6为根据本技术实施例提供的一种可选的数字签名及验签整体流程示意图;
[0077]
图7为根据本技术实施例提供的一种可选的数字签名及验签架构示意图;
[0078]
图8为根据本技术实施例提供的一种可选的数字签名装置框图;
[0079]
图9为根据本技术实施例提供的一种可选的验签装置框图;
[0080]
图10为本技术实施例提供的一种可选的电子设备结构示意图。
具体实施方式
[0081]
为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0082]
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本技术的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
[0083]
首先对本技术中出现的名词进行解释:
[0084]
椭圆曲线加密算法:即:elliptic curve cryptography,简称ecc,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比rsa,ecc优势是可以使用更短的密钥,来实现与rsa相当或更高的安全。据研究,160位ecc加密安全性相当于1024位rsa加密,210位ecc加
密安全性相当于2048位rsa加密。
[0085]
sm2算法:sm2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。sm2算法和rsa算法都是公钥密码算法,sm2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换rsa算法。随着密码技术和计算机技术的发展,目前常用的1024位rsa算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用sm2椭圆曲线算法替换rsa算法。
[0086]
gpu:图形处理器(英语:graphics processing unit,缩写:gpu),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。gpu使显卡减少了对cpu的依赖,并进行部分原本cpu的工作,尤其是在3d图形处理时gpu所采用的核心技术有硬件t&l(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件t&l技术可以说是gpu的标志。gpu的生产商主要有nvidia和ati。
[0087]
相关技术中,开发人员往往将数字签名及验签方法集成到核心业务中。对于中小型项目应用来说,这是比较好的选择,但一旦项目体量增大到一定程度,这种方式便会造成开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳等问题。
[0088]
为了解决背景技术中提及的问题,根据本技术实施例的一方面,提供了一种数字签名及验签方法的实施例。
[0089]
可选地,在本技术实施例中,上述数字签名及验签方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如数字签名服务、验签服务等),可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101包括但不限于pc、手机、平板电脑等。下面分别对数字签名方法和验签方法进行说明。
[0090]
本技术实施例中的一种数字签名方法可以由服务器103来执行,还可以是由服务器103和终端101共同执行,如图2所示,该方法可以包括以下步骤:
[0091]
步骤s202,接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;
[0092]
步骤s204,调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;
[0093]
步骤s206,接收所述gpu端返回的所述目标数据,将目标数据返回给第一对象。
[0094]
通过上述步骤s202至s206,本技术将数字签名与核心业务解耦,将签名模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与签名方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0095]
不仅如此,本技术技术方案将数字签名的模块化方法实现在gpu上,充分利用gpu强大的多核并行计算能力。而且fpga和asic芯片的价格也远远高于gpu的价格,因此还能进
一步降低成本,也推动了将gpu的含义从图形处理器扩展为通用处理器的进程。
[0096]
在步骤s202中,第一对象为签名者,同时也是目标业务的服务接受者,目标业务包括金融交易、数据存证、安防协同、电子商务、数字出版、软件发布等领域的业务。目标私钥和目标公钥为第一对象生成并提供的密钥对,其生成方式可以是对称加密方式,也可以是非对称加密方式。上述待签名数据即为目标业务为第一对象提供服务时产生的业务数据。
[0097]
在步骤s204中,可选地,调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务之前,所述方法还包括:
[0098]
步骤1,将第一对象的对象信息作为数据标识嵌入到待签名数据中,并将数据标识作为当前签名任务的格式化标识,以使gpu端根据格式化标识为对应的当前签名任务分配内核;
[0099]
步骤2,将多个待处理任务填充至一个数据包后打包发送给gpu端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0100]
本技术实施例中,签名请求到达后,考虑到gpu在处理大批量数据时性能表现远超cpu,因此需要对签名请求进行标识与打包后交由gpu集中处理,其中数据标识是将用户信息即第一对象的对象信息嵌入待签名数据中,因为打包时并不区分用户,仅按照任务不同分为签名和验签,而在gpu端进行内核初始化时,再根据数据标识为签名任务分配内核并启动签名服务,为验签任务分配内容并启动验签服务。此外考虑到gpu特性,每批次处理数量是32的整数倍时性能最佳,但不能通过对业务量(签名请求或验签请求数量)进行限制来达到此目的,因此预处理阶段在打包时会按需进行数据填充,确保gpu单批次处理的数量是32的整数倍,最大程度发挥gpu性能。
[0101]
可选地,调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务之前,所述方法还包括:
[0102]
将待签名数据中的点坐标由仿射坐标系转换为雅可比坐标系之后,再调取gpu端上的签名服务。
[0103]
本技术实施例中,由于sm2签名和验签算法过程中涉及除法运算,为了避免昂贵的除法开销,业界普遍采用对点坐标进行转换的方式来规避除法运算,雅可比(加重)坐标系是最常被使用的一种。由仿射坐标系转换为雅可比坐标系,至少要进行一次模逆操作,该操作的主流实现方式有扩展欧几里得算法和费马小定理两种,前者计算开销较后者小,但在gpu上使用会出现严重的线程束分化现象,因此gpu并不是一个计算模逆的理想平台,本技术实施例采用在cpu端完成坐标转换后再交由gpu处理的方式,省去gpu端模逆运算的高昂代价,同时,考虑到cpu本来就要对用户请求数据进行预处理,所以增加的cpu端计算代价完全可以接受。
[0104]
之后,由于要使用gpu进行计算,需要将cpu端(即主机端)内存数据复制到gpu端(即设备端),然后通过内核编译及执行调用gpu进行计算,因此,在步骤s204中,调取gpu端上的签名服务包括:
[0105]
步骤1,向gpu端发送资源查询请求;
[0106]
步骤2,接收gpu端响应资源查询请求返回的gpu可用资源,其中,所述gpu可用资源包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量中的至少一种;
[0107]
步骤3,根据包含当前签名任务的数据包的任务量和gpu可用资源,对gpu的多个内核进行初始化,以在多个内核中为当前签名任务分配的目标内核上启动签名服务。
[0108]
本技术实施例中,调取gpu端上的签名服务时,首先查询gpu可用情况,包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量等基础信息,然后会根据查询到的硬件信息,再结合一个数据包中的任务量按需进行内核初始化。
[0109]
在步骤s204中,可选地,基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据包括:
[0110]
步骤1,置其中,m为待签名数据,za为级联字节流(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为第一对象提供的目标公钥;
[0111]
步骤2,确定其中,hv为sm3哈希算法,e为待签名数据的哈希值,e的数据类型为整数;
[0112]
步骤3,用随机数发生器产生随机数k∈[1,n-1],并基于随机数k确定椭圆曲线上的目标点(x1,y1)=[k]g,其中,x1的数据类型为整数,g为sm2曲线的基点,n为sm2曲线标准中给定的值;
[0113]
步骤4,确定r=(e x1)mod n、s=(1 da)-1
·
(k-r
·
da)mod n,得到数字签名(r,s);在r=0、r k=n以及s=0三个条件出现其中任意一个的情况下,重新产生随机数进行签名。
[0114]
本技术实施例中,可以进一步充分利用空间局部性进行访存优化。具体的,将所述待签名数据和所述目标私钥输入所述签名服务包括:将所述待签名数据和所述目标私钥按照第一数据结构进行组织排布后输入到所述签名服务中,其中,所述第一数据结构用于使所述签名服务访问所述待签名数据和所述目标私钥时减少产生的访存事务的数量;接收所述gpu端返回的所述目标数据包括:接收所述gpu端对处理结果按照第二数据结构进行组织排布后返回的所述目标数据,其中,所述第二数据结构用于减少内存缺页的数量。
[0115]
本技术实施例中,上述第一数据结构、第二数据结构可以根据实际情况进行设置,优选的,如图3、图4所示,可以将以行优先排列的数据转换为以列优先排列,即第一数据结构、第二数据结构可以以列优先排列。将数据以列优先排列时,gpu将纵向访问内存,从而实现合并访问的效果,提升处理效率。
[0116]
本技术实施例中,可以进一步充分利用gpu强大的多核并行计算性能进行签名,具体的,在接收到多个签名请求的情况下,所述方法还包括:
[0117]
将多个所述签名请求缓存至目标队列;
[0118]
按照预设分配策略将多个所述签名请求分配至多个gpu内核,以使多个所述gpu内核按照并行执行策略在所述目标队列中读取并处理所述签名请求,其中,每个所述gpu内核同时处理至少一个所述签名请求。
[0119]
本技术实施例设计了一个队列来缓存网络服务请求,gpu卡可以同时处理队列中的多个用户请求,充分利用gpu算力,提供尽可能高的签名/验签吞吐量。同时,考虑到gpu内核调用的异步性,多个内核并发执行不会带来任何负面影响,本实例使用类流水线方式进行内核启动与执行,尽可能压缩主机内存与设备内存(gpu显存)之间数据传输带来的i/o开销。
[0120]
本技术将数字签名与核心业务解耦,将签名和验签模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与签名方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0121]
根据本技术实施例的另一方面,本技术提供了一种验签方法。本技术实施例中的一种验签方法可以由服务器103来执行,还可以是由服务器103和终端101共同执行,如图5所示,该方法可以包括以下步骤:
[0122]
步骤s502,接收第二对象发送的验签请求,所述验签请求包括待验签数据和目标公钥,其中,待验签数据为第一对象在接受目标业务的服务时对目标业务产生的业务数据进行签名得到的,目标公钥与目标私钥组成密钥对,密钥对为第一对象生成的;
[0123]
步骤s504,调取gpu端上的验签服务,并将待验签数据和目标公钥输入验签服务,以基于gpu端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果;
[0124]
步骤s506,接收所述gpu端返回的所述验签结果,将验签结果返回给第二对象。
[0125]
通过上述步骤s502至s506,本技术将验签与核心业务解耦,将验签模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0126]
不仅如此,本技术技术方案将验签的模块化方法实现在gpu上,充分利用gpu强大的多核并行计算能力。而且fpga和asic芯片的价格也远远高于gpu的价格,因此还能进一步降低成本,也推动了将gpu的含义从图形处理器扩展为通用处理器的进程。
[0127]
在步骤s502中,第一对象为签名者,同时也是目标业务的服务接受者,目标业务包括金融交易、数据存证、安防协同、电子商务、数字出版、软件发布等领域的业务。目标私钥和目标公钥为第一对象生成并提供的密钥对,其生成方式可以是对称加密方式,也可以是非对称加密方式。上述待验签数据为第一对象在接受目标业务的服务时对目标业务产生的业务数据进行签名得到的。上述第二对象为验签者。
[0128]
在步骤s504中,可选地,调取gpu端上的验签服务,并将待验签数据和目标公钥输入验签服务之前,所述方法还包括:
[0129]
步骤1,将第二对象的对象信息作为数据标识嵌入到待验签数据中,并将数据标识作为当前验签任务的格式化标识,以使gpu端根据格式化标识为对应的当前验签任务分配内核;
[0130]
步骤2,将多个待处理任务填充至一个数据包后打包发送给gpu端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0131]
本技术实施例中,验签请求到达后,考虑到gpu在处理大批量数据时性能表现远超cpu,因此需要对验签请求进行标识与打包后交由gpu集中处理,其中数据标识是将用户信息即第二对象的对象信息嵌入待验签数据中,因为打包时并不区分用户,仅按照任务不同分为签名和验签,而在gpu端进行内核初始化时,再根据数据标识为签名任务分配内核并启动签名服务,为验签任务分配内容并启动验签服务。此外考虑到gpu特性,每批次处理数量是32的整数倍时性能最佳,但不能通过对业务量(签名请求或验签请求数量)进行限制来达到此目的,因此预处理阶段在打包时会按需进行数据填充,确保gpu单批次处理的数量是32
的整数倍,最大程度发挥gpu性能。
[0132]
之后,由于要使用gpu进行计算,需要将cpu端(即主机端)内存数据复制到gpu端(即设备端),然后通过内核编译及执行调用gpu进行计算,因此,在步骤s304中,调取gpu端上的验签服务包括:
[0133]
步骤1,向gpu端发送资源查询请求;
[0134]
步骤2,接收gpu端响应资源查询请求返回的gpu可用资源,其中,所述gpu可用资源包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量中的至少一种;
[0135]
步骤3,根据包含当前验签任务的数据包的任务量和gpu可用资源,对gpu的多个内核进行初始化,以在多个内核中为当前验签任务分配的目标内核上启动验签服务。
[0136]
本技术实施例中,调取gpu端上的验签服务时,首先查询gpu可用情况,包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量等基础信息,然后会根据查询到的硬件信息,再结合一个数据包中的任务量按需进行内核初始化。
[0137]
本技术实施例中,填充任务时可以同时装入签名任务和验签任务,将cpu端(即主机端)内存数据复制到gpu端(即设备端),然后通过内核编译及执行调用gpu进行计算,最终对gpu计算结果进行验证及返回,其整体流程如图6所示。
[0138]
在步骤s504中,可选地,待验签数据为m

,待验签数据中包括数字签名(r

,s

),基于gpu端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果包括:
[0139]
步骤1,在r

∈[1,n-1]且s

∈[1,n-1]的情况下,置其中,m

为待验签数据,za为级联字节流(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为第一对象提供的目标公钥,n为sm2曲线标准中给定的值;
[0140]
步骤2,确定其中,hv为sm3哈希算法,e

为待验签数据的哈希值,e

的数据类型为整数;
[0141]
步骤3,将r

、s

转换为整数,并确定t=(r

s

)mod n;
[0142]
步骤4,在t≠0的情况下确定椭圆曲线上的目标点(x1′
,y1′
)=[s

]g [t]pa,其中,x1′
的数据类型为整数,g为sm2曲线的基点,pa为目标公钥;
[0143]
步骤5,确定r=(e

x1′
)mod n,并将r与r

进行对比;
[0144]
步骤6,在r与r

一致的情况下,确定验签通过。
[0145]
可选地,将r与r

进行对比具体包括:
[0146]
在雅可比坐标系下对比r与r


[0147]
本技术实施例中,由于在签名的预处理阶段就将待签名数据中的点坐标由仿射坐标系转换为雅可比坐标系,因此在验签阶段,可以直接使用雅可比坐标进行比较,避免了业界常用的第二次坐标转化带来的额外开销(第一次:仿射坐标转换为雅可比坐标进行计算;第二次:雅可比坐标转换为放射坐标进行比较)。
[0148]
可选地,调取gpu端上的验签服务,并将待签名数据和目标私钥输入签名服务之后,所述方法还包括:
[0149]
基于可变时间方式进行验签。
[0150]
本技术实施例中,在验签环节使用可变时间方式实现(签名时采用恒定时间方式抵抗侧信道攻击)。由于签名时要用到用户私钥,属于非公开信息,因此必须使用恒定时间方式进行内部计算,否则可能受到侧信道攻击造成隐私信息泄露的风险,但是在验签时,所使用的公钥、签名及消息哈希均为公开信息,无需考虑隐私信息泄露问题。业界在实现时,往往会对两个模块采用同样的底层基础运算模块,如此一来,要么都使用可变时间方式实现,要么都使用恒定时间方式实现,前者可能造成用户私钥泄露,后者会引入不必要的性能损失。本技术实施例在两个模块中使用不同实现方式,既在必要时能够抵御侧信道攻击,又能充分提升性能表现。
[0151]
本技术实施例中,可以进一步充分利用空间局部性进行访存优化。具体的,将所述待验签数据和所述目标公钥输入所述验签服务包括:将所述待验签数据和所述目标公钥按照第一数据结构进行组织排布后输入到所述验签服务中,其中,所述第一数据结构用于使所述验签服务访问所述待验签数据和所述目标公钥时减少产生的访存事务的数量;接收所述gpu端返回的所述验签结果包括:接收所述gpu端对处理结果按照第二数据结构进行组织排布后返回的所述验签结果,其中,所述第二数据结构用于减少内存缺页的数量。
[0152]
本技术实施例中,上述第一数据结构、第二数据结构可以根据实际情况进行设置,优选的,可以将以行优先排列的数据转换为以列优先排列,即第一数据结构、第二数据结构可以以列优先排列。将数据以列优先排列时,gpu将纵向访问内存,从而实现合并访问的效果,提升处理效率。
[0153]
本技术实施例中,可以进一步充分利用gpu强大的多核并行计算性能进行签名,具体的,在接收到多个验签请求的情况下,所述方法还包括:
[0154]
将多个所述验签请求缓存至目标队列;
[0155]
按照预设分配策略将多个所述验签请求分配至多个gpu内核,以使多个所述gpu内核按照并行执行策略在所述目标队列中读取并处理所述验签请求,其中,每个所述gpu内核同时处理至少一个所述验签请求。
[0156]
本技术实施例设计了一个队列来缓存网络服务请求,gpu卡可以同时处理队列中的多个用户请求,充分利用gpu算力,提供尽可能高的签名/验签吞吐量。同时,考虑到gpu内核调用的异步性,多个内核并发执行不会带来任何负面影响,本实例使用类流水线方式进行内核启动与执行,尽可能压缩主机内存与设备内存(gpu显存)之间数据传输带来的i/o开销。
[0157]
本技术将验签与核心业务解耦,将验签模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0158]
为了更直观的说明本技术技术方案将签名、验签与核心业务解耦的模块化构思,下面结合图7进行说明。
[0159]
如图7所示,左侧为核心业务侧,核心业务为用户提供服务的过程中,用户生成签名请求和验签请求。右侧为签名、验签模块化示意,签名请求和验签请求通过数据交换唤起相应的模块,签名与验签的过程基本相同,即经过数据预处理,由cpu将数据装载至gpu,由gpu处理后返回给cpu,最后由cpu返回给用户。
[0160]
由于通过gpu来实现签名、验签需要跨cpu、gpu两个不同的计算平台,因此本技术技术方案还采用opencl来作为cpu与gpu之间的桥梁,opencl是一种开放跨平台的硬件语言架构,通过使用开放的api,可以在cpu、gpu等异构计算设备之间跨平台移植和计算。相比于cuda只能在nvidia的gpu上使用,使用opencl则没有这个限制。opencl定义的平台模型用来对硬件系统做一个抽象描述,将硬件系统划分为主机端与设备端,相应的,其执行模型主要包括主机端程序与设备端内核程序,内核程序主要运行在设备端,主机端程序使用opencl api进行管理、定义内核程序的运行环境,并与设备端交互。
[0161]
本技术将数字签名、验签与核心业务解耦,将签名和验签模块化,这种松耦合的方式既可以降低业务开发人员的工作难度,也可以充分发挥gpu强大的多核并行计算性能,解决大体量项目应用中核心业务与签名验签方法高度耦合导致开发难度急剧上升,成本加大,承载服务器计算压力大,并行性能不佳的技术问题。
[0162]
根据本技术实施例的又一方面,如图8所示,提供了一种数字签名装置,包括:
[0163]
签名请求接收模块801,用于接收第一对象发送的签名请求,所述签名请求包括待签名数据和目标私钥,其中,待签名数据为第一对象在接受目标业务的服务时由目标业务产生的业务数据,目标私钥与目标公钥组成密钥对,密钥对为第一对象生成的;
[0164]
签名服务调取模块803,用于调取gpu端上的签名服务,并将待签名数据和目标私钥输入签名服务,以基于gpu端上的签名服务,利用目标私钥对待签名数据进行签名,得到携带有数字签名的目标数据;
[0165]
签名结果返回模块805,用于接收所述gpu端返回的所述目标数据,将目标数据返回给第一对象。
[0166]
需要说明的是,该实施例中的签名请求接收模块801可以用于执行本技术实施例中的步骤s202,该实施例中的签名服务调取模块803可以用于执行本技术实施例中的步骤s204,该实施例中的签名结果返回模块805可以用于执行本技术实施例中的步骤s206。
[0167]
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
[0168]
可选地,该数字签名装置,还包括签名模块,具体用于:
[0169]
置其中,m为待签名数据,za为级联字节流(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为第一对象提供的目标公钥;
[0170]
确定其中,hv为sm3哈希算法,e为待签名数据的哈希值,e的数据类型为整数;
[0171]
用随机数发生器产生随机数k∈[1,n-1],并基于随机数k确定椭圆曲线上的目标点(x1,y1)=[k]g,其中,x1的数据类型为整数,g为sm2曲线的基点,n为sm2曲线标准中给定的值;
[0172]
确定r=(e x1)mod n、s=(1 da)-1
·
(k-r
·
da)mod n,得到数字签名(r,s);
[0173]
在r=0、r k=n以及s=0三个条件出现其中任意一个的情况下,重新产生随机数进行签名。
[0174]
可选地,该数字签名装置,还包括标识与打包模块,具体用于:
[0175]
将第一对象的对象信息作为数据标识嵌入到待签名数据中,并将数据标识作为当前签名任务的格式化标识,以使gpu端根据格式化标识为对应的当前签名任务分配内核;
[0176]
将多个待处理任务填充至一个数据包后打包发送给gpu端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0177]
可选地,该签名服务调取模块,具体用于:
[0178]
向gpu端发送资源查询请求;
[0179]
接收gpu端响应资源查询请求返回的gpu可用资源,其中,所述gpu可用资源包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量中的至少一种;
[0180]
根据包含当前签名任务的数据包的任务量和gpu可用资源,对gpu的多个内核进行初始化,以在多个内核中为当前签名任务分配的目标内核上启动签名服务。
[0181]
可选地,该数字签名装置,还包括坐标转换模块,具体用于:
[0182]
将待签名数据中的点坐标由仿射坐标系转换为雅可比坐标系之后,再调取gpu端上的签名服务。
[0183]
可选地,该签名服务调取模块,还用于:将所述待签名数据和所述目标私钥按照第一数据结构进行组织排布后输入到所述签名服务中,其中,所述第一数据结构用于使所述签名服务访问所述待签名数据和所述目标私钥时减少产生的访存事务的数量。
[0184]
可选地,该签名结果返回模块,还用于:接收所述gpu端对处理结果按照第二数据结构进行组织排布后返回的所述目标数据,其中,所述第二数据结构用于减少内存缺页的数量。
[0185]
可选地,该数字签名装置,还包括签名请求分配模块,具体用于:
[0186]
在接收到多个签名请求的情况下,将多个所述签名请求缓存至目标队列;
[0187]
按照预设分配策略将多个所述签名请求分配至多个gpu内核,以使多个所述gpu内核按照并行执行策略在所述目标队列中读取并处理所述签名请求,其中,每个所述gpu内核同时处理至少一个所述签名请求。
[0188]
根据本技术实施例的另一方面,如图9所示,本技术提供了一种验签装置,包括:
[0189]
验签请求接收模块901,用于在接收到第二对象发送的验签请求的情况下,从验签请求中提取出待验签数据和目标公钥,其中,待验签数据为第一对象在接受目标业务的服务时对目标业务产生的业务数据进行签名得到的,目标公钥与目标私钥组成密钥对,密钥对为第一对象生成的;
[0190]
验签服务调取模块903,用于调取gpu端上的验签服务,并将待验签数据和目标公钥输入验签服务,以基于gpu端上的验签服务,利用目标公钥对待验签数据进行验签,得到验签结果;
[0191]
验签结果返回模块905,用于在接收到gpu端返回的验签结果的情况下,将验签结果返回给第二对象。
[0192]
需要说明的是,该实施例中的验签请求接收模块901可以用于执行本技术实施例中的步骤s502,该实施例中的验签服务调取模块903可以用于执行本技术实施例中的步骤s504,该实施例中的验签结果返回模块905可以用于执行本技术实施例中的步骤s506。
[0193]
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不
限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
[0194]
可选地,该验签装置,还包括验签模块,具体用于:
[0195]
在r

∈[1,n-1]且s

∈[1,n-1]的情况下,置其中,m

为待验签数据,za为级联字节流(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为第一对象提供的目标公钥,n为sm2曲线标准中给定的值,待验签数据为m

,待验签数据中包括数字签名(r

,s

);
[0196]
确定其中,hv为sm3哈希算法,e

为待验签数据的哈希值,e

的数据类型为整数;
[0197]
将r

、s

转换为整数,并确定t=(r

s

)mod n;
[0198]
在t≠0的情况下确定椭圆曲线上的目标点(x1′
,y1′
)=[s

]g [t]pa,其中,x1′
的数据类型为整数,g为sm2曲线的基点,pa为目标公钥;
[0199]
确定r=(e

x1′
)mod n,并将r与r

进行对比;
[0200]
在r与r

一致的情况下,确定验签通过。
[0201]
可选地,该验签模块,还用于:
[0202]
在雅可比坐标系下对比r与r


[0203]
可选地,该验签装置,还包括标识与打包模块,具体用于:
[0204]
将第二对象的对象信息作为数据标识嵌入到待验签数据中,并将数据标识作为当前验签任务的格式化标识,以使gpu端根据格式化标识为对应的当前验签任务分配内核;
[0205]
将多个待处理任务填充至一个数据包后打包发送给gpu端,其中,待处理任务包括签名任务和/或验签任务,待处理任务的数量为32的整数倍。
[0206]
可选地,该验签服务调取模块,具体用于:
[0207]
向gpu端发送资源查询请求;
[0208]
接收gpu端响应资源查询请求返回的gpu可用资源,其中,所述gpu可用资源包括可用gpu数量、每个可用gpu的可用计算资源量以及每个可用gpu的显存数量中的至少一种;
[0209]
根据包含当前验签任务的数据包的任务量和gpu可用资源,对gpu的多个内核进行初始化,以在多个内核中为当前验签任务分配的目标内核上启动验签服务。
[0210]
可选地,该验签模块,还用于:
[0211]
基于可变时间方式进行验签。
[0212]
可选地,该验签服务调取模块,还用于:将所述待验签数据和所述目标公钥按照第一数据结构进行组织排布后输入到所述验签服务中,其中,所述第一数据结构用于使所述验签服务访问所述待验签数据和所述目标公钥时减少产生的访存事务的数量。
[0213]
可选地,该验签结果返回模块,还用于:接收所述gpu端对处理结果按照第二数据结构进行组织排布后返回的所述验签结果,其中,所述第二数据结构用于减少内存缺页的数量。
[0214]
可选地,该验签装置,还包括验签请求分配模块,具体用于:
[0215]
在接收到多个验签请求的情况下,将多个所述验签请求缓存至目标队列;
[0216]
按照预设分配策略将多个所述验签请求分配至多个gpu内核,以使多个所述gpu内
核按照并行执行策略在所述目标队列中读取并处理所述验签请求,其中,每个所述gpu内核同时处理至少一个所述验签请求。
[0217]
根据本技术实施例的另一方面,本技术提供了一种电子设备,如图10所示,包括存储器1001、处理器1003、通信接口1005及通信总线1007,存储器1001中存储有可在处理器1003上运行的计算机程序,存储器1001、处理器1003通过通信接口1005和通信总线1007进行通信,处理器1003执行计算机程序时实现上述方法的步骤。
[0218]
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
[0219]
存储器可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0220]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0221]
根据本技术实施例的又一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例的步骤。
[0222]
可选地,在本技术实施例中,计算机可读介质被设置为存储用于所述处理器执行以上步骤的程序代码。
[0223]
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
[0224]
本技术实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
[0225]
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
[0226]
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
[0227]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出
本技术的范围。
[0228]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0229]
在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0230]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0231]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0232]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0233]
以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献