买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】数字签名生成方法和装置_数安时代科技股份有限公司_201611271028.4 

申请/专利权人:数安时代科技股份有限公司

申请日:2016-12-30

公开(公告)日:2020-05-15

公开(公告)号:CN106789080B

主分类号:H04L9/32(20060101)

分类号:H04L9/32(20060101)

优先权:["20160408 CN 2016102182747"]

专利状态码:有效-授权

法律状态:2020.05.15#授权;2017.06.23#实质审查的生效;2017.05.31#公开

摘要:本发明涉及一种数字签名生成方法和装置,其方法包括:服务器接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果,服务器根据所述第一部分签名结果和私钥私密份额确定最终签名结果。或者,服务器接收目标客户端发送的第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果;将所述第二部分签名结果返回给所述目标客户端,所述目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。根据本发明的方案,一方面有效发挥云计算的便利性,随时随地签署,可以降低系统部署和实施成本。另一方面确保用户私钥的安全性,同时还支持存储海量用户密钥。

主权项:1.一种数字签名生成方法,所述方法应用于服务器,其特征在于,包括:接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;根据所述第一部分签名结果和私钥私密份额确定最终签名结果;还包括:通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额;所述私钥私密份额包括所述第一混淆因子;在与所述服务器连接的密码机内部引用所述第一混淆因子,并在密码机内部根据所述第一混淆因子对所述原始私钥进行分解。

全文数据:数字签名生成方法和系统技术领域[0001]本发明涉及密码学与信息安全技术领域,特别涉及一种数字签名生成方法和系统。背景技术[0002]数字证书认证机构CA可以为企业签发用于电子发票业务的电子发票专用证书。企业通过互联网连接税务机关建设的电子发票业务系统,为消费者开具增值税电子发票。由于一个企业可能有多个电子发票业务员,要求他们在获得授权的条件下,都可以同时独立地完成开具电子发票的业务。任何一位发票业务员所开具的电子发票,均应由企业的电子发票专用证书来签署数字签名。[0003]为了便于企业方便地完成开具电子发票的业务,要求在云环境中集中管理所有企业的电子发票专用证书及对应的私钥,企业的管理员可以为多个电子发票业务员赋予开具电子发票的权限。与此同时,云签名平台需要支持存储海量密钥,并且满足电子发票业务的性能要求,支持大量企业用户并发处理。[0004]传统的数字签名方案包括:[0005]一移动证书签名方案[0006]基本思路:为企业的特定员工签发移动证书,在系统中使用机构证书对个人的移动证书进行授权,获得授权的移动证书可以在电子发票系统中生成电子发票的数字签名。[0007]存在问题:出具发票的主体是企业,而数字签名却由个人订户证书来生成,不具备法律效力。[0008]二代理签名方案[0009]基本思路:在一个代理签名方案中,一个被指定的代理签名者可以代表原始签名者生成有效的签名。企业管理人员使用机构数字证书来签署委托,授权特定人员的移动证书可以执行代理签名的权限,然后由移动证书来生成电子发票的数字签名。[0010]存在问题:尽管此方案可以解决数字签名法律效力的问题,但是代理签名方案的签名结果与标准数字签名并不相同。代理签名方案所产生的TOF交换文档格式的电子发票,无法被类似AdobeReader的PDF阅读器正确识读并验证数字签名的有效性,而必须由定制的TOF客户端来进行验证,因此用户体验不佳。[0011]三电子发票专用证书多副本方案[0012]基本思路:CA为企业签发多个电子发票专用证书的副本,每个持有电子发票专用证书副本的个人均可以代表企业生成电子发票的数字签名。[0013]存在问题:[0014]1按照常规的数字证书签发流程,每一张电子发票专用证书的副本均有不同的签名密钥对,对应不同的密钥标识符。不同的用户可能收到由不同电子发票专用证书签署的电子发票,不利于鉴别电子发票的真伪。[0015]2电子发票专用证书副本由企业中的多位员工保管,增加了电子发票专用证书的管理复杂度,增加了电子发票专用证书遗失的风险,相应地吊销证书的可能性也会提高,给用户及CA机构带来成本。[0016]—种改进的数字签名方案是云签名服务平台方案,这种方案的基本思路:企业的电子发票专用证书及其私钥均托管在GDCA云计算服务提供商建设的云签名服务平台,在云环境中集中管理及使用密钥。在企业授权的个人要生成电子发票数字签名时,通过PC或移动设备的目标客户端软件连接云签名服务平台,调用云签名服务平台的API来完成电子发票签名。这种云签名服务平台方案具有诸多优点,例如,保证了数字签名的法律效力,便于验证数字签名的有效性,降低了电子发票证书管理的复杂度等等。[0017]然而,现有的云签名服务平台方案却存在如下问题:由于企业数量较大几十万),在企业完成电子发票的签署业务时,需要将电子发票的文件传送到云签名服务平台,还要调用服务平台的云密码机来生成数字签名,再将签名结果文件传送到客户端进行展现,这些过程对云密码机、云签名服务系统、数据中心的网络带宽、密码运算资源等方面均提出较高的并发处理性能要求,大大增加系统部署及方案实施的成本。发明内容[0018]本发明的目的在于提供一种数字签名生成方法和系统,可以降低系统部署和实施成本。[0019]本发明的目的通过如下技术方案实现:[0020]一种数字签名生成方法,包括:[0021]接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;[0022]根据所述第一部分签名结果和私钥私密份额确定最终签名结果。[0023]一种数字签名生成系统,包括:[0024]接收单元,用于接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;[0025]处理单元,用于根据所述第一部分签名结果和私钥私密份额确定最终签名结果。[0026]一种数字签名生成方法,包括:[0027]根据私钥公开份额执行签名操作得到第一部分签名结果;[0028]向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果。[0029]一种数字签名生成系统,包括:[0030]签名单元,用于根据私钥公开份额执行签名操作得到第一部分签名结果;[0031]请求单元,用于向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果。[0032]根据上述本发明的方案,其是接收目标客户端发送的第一签名请求,该第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果,根据所述第一部分签名结果和私钥私密份额确定最终签名结果。由于第一部分签名结果是在目标客户端获得的,使得在服务器侧,不需要再执行这一签名操作,可以同时满足较大数量用户的数字签名需求,降低了系统部署和实施成本。同时,由于最终签名结果的获得需要由目标客户端与服务器协同完成计算,缺少任何一方都无法完成签名操作,使得任何一方都无法伪造数字签名,保证的签名的安全性。[0033]一种数字签名生成方法,其特征在于,包括:[0034]接收目标客户端发送的第二签名请求;[0035]在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果;[0036]将所述第二部分签名结果返回给所述目标客户端,以使所述目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。[0037]一种数字签名生成方法,包括:[0038]向服务器发送第二签名请求;[0039]接收所述服务器在接收到所述第二签名请求后返回的根据私钥私密份额执行签名操作得到的第二部分签名结果;[0040]根据所述第二部分签名结果和私钥公开份额确定最终签名结果。[0041]根据上述本发明的方案,其是接收目标客户端发送的第二签名请求,在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果,将所述第二部分签名结果返回给所述目标客户端,目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。由于根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果是在目标客户端完成,对于服务器而言,仅需要私钥私密份额执行签名操作得到第二部分签名结果,将私钥公开份额和该第二部分签名结果发送给目标客户端,可以同时满足较大数量用户的数字签名需求,降低了系统部署和实施成本,特别是在多个用户的私钥私密份额均相同的情况下,可以降低对密码机内存的需求,进一步降低了系统部署和实施成本。同时,由于最终签名结果的获得需要由目标客户端与服务器协同完成计算,缺少任何一方都无法完成签名操作,使得任何一方都无法伪造数字签名,保证的签名的安全性。附图说明[0042]图1为本发明实施例一的数字签名生成方法的实现流程示意图;[0043]图2为本发明实施例二的数字签名生成方法的实现流程示意图一;[0044]图3为本发明实施例二的数字签名生成方法的实现流程示意图二;[0045]图4为本发明实施例四的数字签名生成方法的实现流程示意图;[0046]图5为本发明实施例五的数字签名生成方法的实现流程示意图;[0047]图6为本发明实施例六的数字签名生成方法的实现流程示意图;[0048]图7为本发明实施例七的数字签名生成系统的组成结构示意图;[0049]图8为本发明实施例八的数字签名生成系统的组成结构示意图;[0050]图9为本发明实施例九的数字签名生成系统的组成结构示意图;[0051]图10为本发明实施例十的数字签名生成系统的组成结构示意图。具体实施方式[0052]为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。[0053]本发明的如下实施例一到实施例四是以最终签名结果(即最终的数字签名结果)在服务器确定为例进行说明。如下实施例五和实施例六是以最终签名结果在目标客户端确定为例进行说明。[0054]实施例一[0055]本发明实施例一提供一种数字签名生成方法,图1为本发明的一个实施例中的数字签名生成方法的实现流程示意图。如图1所示,该实施例中的数字签名生成方法包括:[0056]步骤S101:接收目标客户端发送的私钥签发请求;[0057]这里,所述目标客户端一般是指与一原始私钥绑定的用户账号所登录的客户端。[0058]这里,所述私钥签发请求是指请求签发私钥公开份额的信息。[0059]步骤S102:根据所述私钥签发请求向所述目标客户端返回加密后的私钥公开份额;[0060]这里,所述私钥公开份额是指所述原始私钥的下发给客户端的份额。[0061]具体地,可以将所述私钥公开份额加密后,通过与目标客户端间的安全通道将加密后的所述私钥公开份额推送到目标客户端。此外,目标客户端在接收到私钥公开份额较佳的保存方式是将该私钥公开份额存储在内存中,而不要存储在永久存储介质(如硬盘、Flash等)。[0062]—般地,对于私钥公开份额存在两种情况:一种情况是目标客户端在生成密钥阶段获得所述私钥公开份额并保存以供签名时用于产生部分签名结果;另一种情况是每次要产生签名时由服务器将该私钥公开份额下发到目标客户端,由目标客户端持有的密钥解密获得公开份额之后用于产生部分签名结果。也就是说,私钥公开份额可以已保存在目标客户端本地,也可以是在需要签名时向服务器请求后获得,但获得的是加密后的私钥公开份额,需要在目标客户端侧进行解密操作。[0063]需要说明的是,私钥公开份额并非指任何用户都可以获取的,一般都处于加密状态,而只是相对于某一客户端例如目标客户端才可以解密,譬如通过客户端的硬件ID、用户生物特征、用户PIN码等因素相互结合才能够将私钥公开份额进行解密。[0064]对于私钥公开份额已保存在目标客户端本地的情况例如在目标客户端端首次签名时保存了私钥公开份额),可以不执行上述步骤S101和步骤S102,而直接从如下步骤S103开始执行例如,在目标客户端非首次签名时)。[0065]步骤S103:接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;[0066]具体地,客户端根据所述私钥公开份额执行并通过指定的签名算法执行签名操作得到的第一部分签名结果,将该第一部分签名结果发送给服务器。[0067]步骤S104:根据所述第一部分签名结果和私钥私密份额确定最终签名结果;[0068]这里,所述私钥私密份额是指所述原始私钥的私密份额,对于任何用户均是不可知的。[0069]具体地,使用所述私钥私密份额在获取到的第一部分签名结果基础上计算最终签名结果,即计算出最终的数字签名结果。在获得最终签名结果后,一般还将该最终签名结果返回给所述目标客户端。[0070]本发明实施例中,步骤S101至S104的执行主体为服务器,例如,对于步骤S101具体为:服务器接收目标客户端发送的私钥签发请求;对于步骤S103,服务器接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果。[0071]据此,根据上述本实施例的方案,其是接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果,根据所述第一部分签名结果和私钥私密份额确定最终签名结果。由于第一部分签名结果是在目标客户端获得的,使得在服务器侧,不需要再执行这一签名操作,可以同时满足较大数量用户的数字签名需求,降低了系统部署和实施成本。同时,由于最终签名结果的获得需要由目标客户端与服务器协同完成计算,缺少任何一方都无法完成签名操作,使得任何一方都无法伪造数字签名,保证的签名的安全性。[0072]在其中一个实施例中,在步骤S102之前,本发明的数字签名生成方法,还可以包括:通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额。[0073]一般地,第一混淆因子为一随机整数。[0074]具体地,可以在引用第一混淆因子后,调用预设的分解算法对原始私钥进行分解,获得私钥公开份额和私钥私密份额。其中,可以基于并发处理效率和私钥安全性的不同要求,采用不同的分解算法。分解算法可以是加法运算、减法运算、乘法运算、除法运算、指数运算、对数运算等等中的任意一种或者任意多种的组合。[0075]采用本实施例中的方案,由于通过引用的第一混淆因子对原始私钥进行了分解,可以对原始私钥进行有效隐藏,提升了原始私钥的安全性。[0076]其中,为了保证引用的第一混淆因子的安全性,在其中一个实施例中,是在密码机内部引用第一混淆因子,在密码机内部根据该第一混淆因子对在密码机内部生产的原始私钥进行分解。[0077]此外,为了保证原始私钥的安全性,在其中一个实施例中,在通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额之后,还可以包括:删除所述原始私钥。[0078]实施例二[0079]本发明实施例二提供一种数字签名生成方法,该实施例二中以对所述原始私钥进行乘法分解为例进行说明。[0080]基于私钥安全性的考虑,在本实施例中,所述通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额可以包括:通过所述第一混淆因子对所述原始私钥进行乘法分解,获得所述私钥公开份额和所述私钥私密份额。[0081]其中,乘法分解的具体方式可以是,用所述原始私钥除以所述第一混淆因子,得到的商值作为私钥公开份额,余数和第一混淆因子作为所述私钥私密份额。这种方式下,原始私钥=第一混淆因子*私钥公开份额+余数。但需要说明的是,这里的等式关系可能隐含了对模数N的取模操作。譬如,对于RSA算法,上述关系的模数N为RSA公开密钥中的模数n;对于椭圆曲线ECC算法,上述关系的模数N为生成元G的阶。[0082]在本实施例中,由于采用的是乘法分解,使得私钥公开份额和原始私钥之间没有任何一部分是完全相同的,不会泄露原始私钥的信息,提升了原始私钥的安全性。如果不考虑运算效率方面的问题,分割的私密份额与公开份额都可以是一个比特长度与模数N的比特长度接近或者相同的大整数,它们的乘积对模数N取模之后才与原始私钥相关联,这样可以获得与原始私钥基本一致的密钥算法强度。为此,在其中一个实施例中,所述私钥公开份额和和所述私钥私密份额的比特长度与模数N的比特长度相匹配,这里相匹配包括相同和接近即比特长度差值小于一设定的正数)。[0083]以下以乘法分解为例,就本发明的数字签名生成方法的几个实施例进行说明,在下述实施例中,是以目标客户端向服务器请求后获得私钥公开份额为例进行说明,但这并不构成对本发明方案的限定。[0084]考虑到目前的不少数字签名算法都是基于RSA算法的,在其中一个实施例中,可以根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解,根据RSA算法计算所述第一部分签名结果和所述最终签名结果。其中,RSA算法中的用于生成数字签名的核心算法为模幂算法,即Sigdm=hmdmodN,以下以模幂算法进行说明。[0085]在其中一个实施例中,根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解可以包括:根据d=dpri•dpub+domodN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,dpri和do表示私钥私密份额,且^:还表示第一混淆因子。[0086]在其中一个实施例中,以根据RSA算法计算所述第一部分签名结果和所述最终签名结果为例,所述第一签名请求还包括摘要信息,所述第一部分签名结果根据得到;[0087]所述最终签名结果根据:I确定;[0088]其中,hm表示待签名数据的摘要信息表示第一部分签名结果,Sigdm表示最终签名结果。[0089]如图2所示,为另一个实施例中的数字签名生成方法的实现流程示意图。该实施例是以根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解,根据RSA算法计算所述第一部分签名结果和所述最终签名结果为例。如图2所示,该实施例中的数字签名生成方法包括如下步骤:[0090]步骤S201:接收目标客户端发送的私钥签发请求;[0091]步骤S202:根据d=dpri•dpub+d〇modN将原始私钥分解成私钥公开份额和私钥私密份额;[0092]其中,d表不原始私钥,dpub表不私钥公开份额,dPri和do表不私钥私密份额,且dPri还表示第一混淆因子;[0093]步骤S203:对所述私钥公开份额进行加密处理,向所述目标客户端返回加密后的所述私钥公开份额;[0094]步骤S204:获取所述目标客户端返回的根振所确定的第一部分签名结果;[0095]其中,hm表示待签名数据的摘要信息,"0表示第一部分签名结果。[0096]其中,第一部分签名结果的确定过程具体可以包括:对加密后的所述私钥公开份额进行解密操作,使用预设的摘要算法计算待签名数据的摘要信息hm,然后使用私钥公开份额dpub对该摘要信息进行模幂运算;目标客户端在确定第一部分签名结果后,将摘要信息hm和模幂运算结果返回给服务器或者称为云签名服务平台)。[0097]步骤S205:根据确定所述最终签名结果;[0098]其中,Sigdm表示最终签名结果。[0099]此外,当大量用户将私钥保存在云签名服务平台,考虑到一般密码机内部存储容量有限,不足以满足存储海量用户私钥的需求。但如果将用户私钥保存在密码机外部,一方面在运算是导入私钥需要消耗额外的时间,另一方面增加了私钥泄密的风险。为此,在其中一个实施例中,可以将对于多个用户均相同的所述私钥私密份额保存在密码机内部,由于是根据所述第一部分签名结果和私钥私密份额确定最终签名结果,采用本实施例中的这种将私钥私密份额保存在密码机内部的方式,依赖于内部存储的私钥私密份额即可,不需要额外的导入私钥的时间,也可以降低私钥泄密的风险,同时,也不需要满足存储海量用户私钥。另外,还可以是将对于多个用户均相同的第一混淆因子保存在密码机内部以保证第一混淆因子的安全性。[0100]在其中一个实施例中,在所述第一混淆因子对于各个用户均相同且保持不变时,为了增强原始私钥的安全性,可以将d=dpri•dpub+domodN中的余数do作为第二混淆因子,为不同原始私钥分配不同的第二混淆因子。也就是说,原始私钥的乘法分割关系表达为d=dpri•dpub+djmodN,dj表示对第j个原始私钥进行乘法分割后的余数,也即第j个原始私钥的第二混淆因子。在分割原始私钥后,可以将对于多个用户均相同的第一混淆因子dpri保存在云签名服务平台的密码机内部,将第二混淆因子山保存云签名服务平台的在数据库中。采用本实施例中的,即使获得了某个用户的证书私钥或者称为原始私钥)、密钥公开份额dpub,由于第二混淆因山子对于每个证书私钥而言都是不同的,也无法推导出私钥私密份额dpri,采用本实施例中的方案,可以进一步增强安全性。[0101]此外,除了可以将d=dpri•dpub+dQmodN中的余数do作为第二混淆因子,根据需要还可以额外引用第三混淆因子。在其中一个是示例中,本发明的数字签名生成方法,还可以包括:采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;[0102]所述根据所述第一签名请求向所述目标客户端返回私钥公开份额包括:将混淆处理后的所述私钥公开份额下发给目标客户端;[0103]所述接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果包括:获取所述目标客户端返回的根据混淆处理后的所述私钥公开份额执行签名操作得到的第一部分签名结果;[0104]所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据获取到的第一部分签名结果和混淆处理后的所述私钥私密份额确定最终签名结果。[0105]具体地,如图3所示,提供一种数字签名生成方法,该实施例中是以用第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理为例进行说明,本实施例中的数字签名生成方法包括:[0106]步骤S301:接收目标客户端发送的私钥签发请求;[0107]步骤S302:通过引用的第一混淆因子对原始私钥进行乘法分解获得私钥公开份额;[0108]步骤S303:采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;[0109]在其中一个实施例中,对于乘法分解,混淆处理后的所述私钥公开份额为Wdh,混淆处理后的所述私钥私密份额为dprl•dh,dpub表示私钥公开份额,1_表示私钥私密份额,dh表示第三混淆因子。[0110]步骤S304:将混淆处理后的所述私钥公开份额下发给目标客户端;[0111]步骤S305:获取所述目标客户端返回的根据混淆处理后的所述私钥公开份额执行签名操作得到的第一部分签名结果;[0112]以模幂运算为例,该步骤具体为:获取所述目标客户端返回的根据所确定的第一部分签名结果。[0113]步骤S306:根据获取到的第一部分签名结果和混淆处理后的所述私钥私密份额确定最终签名结果;[0114]以模幂运算为例,该步骤具体为:根振确定所述最终签名结果。[0115]其中,第三混淆因子基于不同的考虑可以采用不同的生成方式,以下提供其中几种第三混淆因子的生成方式,可以根据实际需要,采用下述任意一种方式生成第三混淆因子dh。[0116]方式一,周期性的生成所述第三混淆因子,其中前后两个周期内的第三混淆因子不同。[0117]也就是说,以周期性的混淆因子作为第三混淆因子。在这种方式中,如果对于所有的用户都使用相同的私钥私密份额dpri,并且保持不变,存在某个用户私钥被泄漏可能威胁其它用户私钥的风险。为了增强安全性,引入了周期性的混淆因子dpericld,服务器下发的密钥公开份额为:dpubdpe5ricd,相应地服务器基于dpri•dpe5ri〇d计算最终签名结果。[0118]服务器维护第三混淆因子生存期,在该周期之内第三混淆因子dperi〇d才有效,一旦过了这个周期,将重新生成第三混淆因子。[0119]在更新第三混淆因子时,必须要在目标客户端获得同步之后,服务端才能使用新的第三混淆因子。每个第三混淆因子都应该分配一个ChangeCount参数,相当于第三混淆因子的新鲜性标志,在目标客户端提交部分签名时应携带这个参数,而服务器则需要缓存曾经使用的历史第三混淆因子,确保可以使用与目标客户端一致的第三混淆因子来确定数字签名,即最终签名结果。[0120]方式二,对在线的活跃用户进行分组,分别为各组生成不同的第三混淆因子;[0121]由于用户可能从其他CA机构申请签发数字证书,然后导入到云签名服务平台使用,这种情况下用户可以同时获得原始私钥及密钥公开份额dpub,进而可以计算出私钥私密份额dprl,这样会对其他用户的原始私钥形成安全威胁。[0122]为了进一步增强安全性,可以将在线的活跃用户分割为N个组,每个组的用户使用不相同的第三混淆因子山。在极端情况下,每个分组只有1个用户,此时每个用户的混淆因子均不相同,即使泄漏了1个用户的混淆因子,也不会对其他用户的私钥形成安全威胁。[0123]方式三,对在线的活跃用户进行分组,周期性的分别为各组生成不同的第三混淆因子;[0124]该方式三是将上述的方式一和方式二进行结合,具有上述方式一和方式二的有益效果。[0125]具体地,将在线的活跃用户分割为N个组,每个组的用户使用不相同的第三混淆因子dwmod,其中,每个分组的第三混淆因子山,perlCld周期性的生成,可以参见上述方式一和方式二的描述,在此不予赘述。[0126]方式四,为用户分配标识符,根据所分配的标识符计算对应用户的第三混淆因子。[0127]在方式四中,每个用户都分配唯一的标识符如用户证书的序列号、可以区分用户的生物特征信息等)。[0128]在分割私钥的过程中,根据用户的标识符来计算第三混淆因子djifUserid。月艮务器下发的密钥公开份额为:dpub山,相应地服务器基于dpri•山计算最终签名结果。密码机中仅存储私钥私密份额dpri,在云签名平台执行签名运算时,需要将用户的标识符Userid也送入密码机,由Userid来计算出用于计算最终签名结果的份额(即混淆处理后的私钥私密份客页dpri•dj=dpri•fUserid,最后完成最终签名结果的计算过程。[0129]实施例三[0130]本发明实施例三提供一种数字签名生成方法,该实施例三中以对所述原始私钥进行加法分解为例进行说明。[0131]基于并发处理效率的考虑,在本实施例中,所述通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额可以包括:通过所述第一混淆因子对所述原始私钥进行加法分解,获得所述私钥公开份额和所述私钥私密份额。[0132]其中,加法分解过程具体可以是用所述原始私钥减去所述第一混淆因子,得到的差值作为所述私钥公开份额,而所述第一混淆因子作为所述私钥私密份额。即原始私钥=私钥公开份额+私钥私密份额。但需要说明的是,这里的等式关系也可能隐含了对模数N的取模操作。譬如,对于RSA算法,上述关系的模数N为RSA公开密钥中的模数n;对于椭圆曲线ECC算法,上述关系的模数N为生成元G的阶。[0133]在对所述原始私钥进行加法分解时,所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果可以包括:根据所述私钥私密份额执行签名操作得到的第二部分签名结果,对所述第一部分签名结果和第二部分签名结果进行合成运算,得到所述最终签名结果。[0134]在本实施例中,通过加法分解对原始私钥进行分解,由于第一部分签名结果和第二部分签名结果可以由目标客户端和服务器并行计算,然后由服务器来合成最终结果,相对于乘法分解方式需要一方先计算,然后另一方在此基础上进行模幂运算可以具有较高的处理速度,在并发处理效率方面有较高要求的场合,应该优先选择加法分解方案。[0135]在其中一个实施例中,可以根据RSA算法并通过所述第一混淆因子对所述原始私钥进行加法分解,根据RSA算法计算所述第一部分签名结果和所述最终签名结果。[0136]其中,所述根据RSA算法并通过所述第一混淆因子对所述原始私钥进行加法分解包括:根据d=dpri+dpubmodN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,dpri表示私钥私密份额,且dpri作为第一混淆因子。[0137]在其中一个实施例中,对于数字签名算法为RSA算法的情况,所述第一签名请求还可以包括摘要信息,所述第一部分签名结果根据)得到;[0138]所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据十算第二部分签名结果,根据合成最终签名结果;[0139]其中,hm表示待签名数据的摘要信息,、S也表示第一部分签名结果,㈨表示第二部分签名结果,細,,m表示最终签名结果。[0140]在其中一个实施例中,本发明的数字签名生成方法,还可以包括:采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;[0141]所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据获取到的第一部分签名结果和混淆处理后的所述私钥私密份额确定最终签名结果。[0142]其中,对于加法分解,同样也可以采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;但对于加法分解,混淆处理后的所述私钥公开份额为dpub_dh,混淆处理后的所述私钥私密份额为dpri+dh,dpub表示私钥公开份额,dpri表示私钥私密份额,dh表示第三混淆因子。[0143]其中,第三混淆因子基于不同的考虑可以采用不同的生成方式,以下提供其中几种第三混淆因子的生成方式,可以根据实际需要,采用下述任意一种方式生成第三混淆因子dh。[0144]方式一,周期性的生成所述第三混淆因子,其中前后两个周期内的第三混淆因子不同。[0145]也就是说,以周期性的混淆因子作为第三混淆因子。在这种方式中,如果对于所有的用户都使用相同的私钥私密份额dpri,并且保持不变,存在某个用户私钥被泄漏可能威胁其它用户私钥的风险。为了增强安全性,引入了周期性的混淆因子dpericid,服务器下发的密钥公开份额为:dpub-dperiod,相应地服务器基于dpri+dpMiod计算最终签名结果。[0146]服务器维护第三混淆因子生存期,在该周期之内第三混淆因子dpericld才有效,一旦过了这个周期,将重新生成第三混淆因子。[0147]在更新第三混淆因子时,必须要在目标客户端获得同步之后,服务端才能使用新的第三混淆因子。每个第三混淆因子都应该分配一个ChangeCount参数,相当于第三混淆因子的新鲜性标志,在目标客户端提交部分签名时应携带这个参数,而服务器则需要缓存曾经使用的历史第三混淆因子,确保可以使用与目标客户端一致的第三混淆因子来确定数字签名,即最终签名结果。[0148]方式二,对在线的活跃用户进行分组,分别为各组生成不同的第三混淆因子;[0149]由于用户可能从其他CA机构申请签发数字证书,然后导入到云签名服务平台使用,这种情况下用户可以同时获得原始私钥及密钥公开份额dpub,进而可以计算出私钥私密份额dpri,这样会对其他用户的原始私钥形成安全威胁。[0150]为了进一步增强安全性,可以将在线的活跃用户分割为N个组,每个组的用户使用不相同的第三混淆因子山。在极端情况下,每个分组只有1个用户,此时每个用户的混淆因子均不相同,即使泄漏了1个用户的混淆因子,也不会对其他用户的私钥形成安全威胁。[0151]方式三,对在线的活跃用户进行分组,周期性的分别为各组生成不同的第三混淆因子;[0152]该方式三是将上述的方式一和方式二进行结合,具有上述方式一和方式二的有益效果。[0153]具体地,将在线的活跃用户分割为N个组,每个组的用户使用不相同的第三混淆因子dwmod,其中,每个分组的第三混淆因子dwmod周期性的生成,可以参见上述方式一和方式二的描述,在此不予赘述。[0154]方式四,为用户分配标识符,根据所分配的标识符计算对应用户的第三混淆因子。[0155]在方式四中,每个用户都分配唯一的标识符如用户证书的序列号、可以区分用户的生物特征信息等)。[0156]在分割私钥的过程中,根据用户的标识符来计算第三混淆因子山=fUserid。月艮务器下发的密钥公开份额为:dpub_山,相应地服务器基于dpri+山计算最终签名结果。密码机中仅存储私钥私密份额dpri,在云签名平台执行签名运算时,需要将用户的标识符Userid也送入密码机,由Userid来计算出用于计算最终签名结果的份额(即混淆处理后的私钥私密份客页dpri+dj=dpri+fUserid,最后完成最终签名结果的计算过程。[0157]以上实施例一至三是以服务器的处理过程为了进行说明。以下实施例四以目标客户端的处理过程为例进行说明。[0158]实施例四[0159]如图4所示,为本发明实施例四的数字签名生成方法的实现流程示意图。参见图4所示,该实施例中的数字签名生成方法可以包括如下步骤:[0160]步骤S401:向服务器发送的私钥签发请求;[0161]步骤S402:接收所述服务器根据所述私钥签发请求返回的加密后的所述私钥公开份额;[0162]具体地,在服务器接收到私钥签发请求后,可以在密码机内部生成一个密钥对,该密钥对包括公钥和所述原始私钥,将该原始私钥分解成两个份额,这两个份额分别是私钥公开份额和私钥私密份额,所述私钥公开份额和私钥私密份额由所述服务器可以通过引用的第一混淆因子将原始私钥分解而成。服务器将公钥和加密后的私钥公开份额通过与目标客户端间的安全通道推送到目标客户端,目标客户端接收该公钥和加密后的私钥公开份额。[0163]其中,对于目标客户端已存储有私钥公开份额的情况,也可以不执行上述步骤S401和S402,而从下述的步骤S403开始执行。[0164]步骤S403:根据私钥公开份额执行签名操作得到第一部分签名结果;[0165]在采用RSA算法作为数字签名算法时,根据私钥公开份额执行签名操作得到的第一部分签名结果的具体过程是:根据得到的第一部分签名结果;[0166]其中,hm表示待签名数据的摘要信息,$也表示第一部分签名结果。[0167]步骤S404:向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果;[0168]在采用RSA算法作为数字签名算法时,若对原始私钥进行的乘法分解,则根据第一部分签名结果和私钥私密份额确定最终签名结果具体包括:根据确定所述最终签名结果;其中,Sigdm表示最终签名结果。若对原始私钥进行的加法分解,则根据第一部分签名结果和私钥私密份额确定最终签名结果具体包括:根据计算第二部分签名结果,根据合成最终签名结果。[0169]在其中一个实施例中,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。[0170]本发明实施例中,步骤S401至S404的执行主体为目标客户端。需要指出的是:本实施例提供的数字签名生成方法与上述实施例一至三中的数字签名生成方法的描述是类似的,并且具有上述数字签名生成方法的有益效果,为节约篇幅,不再赘述;因此,在本实施例四中未披露的技术细节,请参照上述实施例一至三中的描述。[0171]实施例五[0172]在其中一个实施例中,还提供一种数字签名生成方法,该实施例中的数字签名生成方法是以服务器的处理过程,且以最终的数字签名结果在目标客户端确定为例进行说明。如图5所示,该实施例中的数字签名生成方法可以包括如下步骤:[0173]步骤S501:接收目标客户端发送的私钥签发请求;[0174]步骤S502:根据所述私钥签发请求向所述目标客户端返回加密后的私钥公开份额;[0175]其中,对于目标客户端已存储有私钥公开份额的情况,也可以不执行上述步骤S501和S502,而从下述的步骤S503开始执行。[0176]步骤S503:接收目标客户端发送的第二签名请求;[0177]步骤S504:在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果;[0178]具体地,所述第二签名请求可以包括待签名的摘要信息,根据该摘要信息和私钥私密份额执行签名操作得到第二部分签名结果。[0179]在采用RSA算法作为数字签名算法时,该过程具体包括:根据计算第二部分签名结果,其中,hm表示待签名数据的摘要信息,表示第二部分签名结果。[0180]步骤S505:将所述第二部分签名结果返回给所述目标客户端,以使所述目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。[0181]在采用RSA算法作为数字签名算法时,若对原始私钥进行的乘法分解,则根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果具体包括:根据确定所述最终签名结果。[0182]在采用RSA算法作为数字签名算法时,若对原始私钥进行的加法分解,则根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果具体包括:根据得到的第一部分签名结果,根据合成最终签名结果;[0183]其中,hm表示待签名数据的摘要信息良示第一部分签名结果,"力表示第二部分签名结果,Sigdm表示最终签名结果。[0184]在其中一个实施例中,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。[0185]根据上述本发明的方案,其是服务器接收目标客户端发送的第二签名请求,在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果,将所述第二部分签名结果返回给所述目标客户端,目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。由于根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果是在目标客户端完成,对于服务器而言,仅需要私钥私密份额执行签名操作得到第二部分签名结果,将私钥公开份额和该第二部分签名结果发送给目标服务器,可以同时满足较大数量用户的数字签名需求,降低了系统部署和实施成本,特别是在多个用户的私钥私密份额均相同的情况下,可以降低对密码机内存的需求,进一步降低了系统部署和实施成本。同时,由于最终签名结果的获得需要由目标客户端与服务器协同完成计算,缺少任何一方都无法完成签名操作,使得任何一方都无法伪造数字签名,保证的签名的安全性。[0186]需要说明的是,上述实施例一至三中提出的进一步改进的方案也适用于本实施例五中的数字签名生成方法,因此,在本实施例五中未披露的技术细节,请参照上述实施例一至三中的描述。[0187]实施例六[0188]在其中一个实施例中,还提供一种数字签名生成方法,该实施例中的数字签名生成方法是以目标客户端的处理过程,且以最终的数字签名结果在目标客户端确定为例进行说明。如图6所示,该实施例中的数字签名生成方法可以包括如下步骤:[0189]步骤S601:向服务器发送私钥签发请求;[0190]步骤S602:接收所述服务器根据所述私钥签发请求向所述目标客户端返回加密后的所述私钥公开份额;[0191]具体地,服务器在接收到私钥签发请求后,在密码机内部生成一个密钥对,该密钥对包括公钥和所述原始私钥,将该原始私钥分解成两个份额,这两个份额分别是私钥公开份额和私钥私密份额,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。服务器将公钥和加密后的私钥公开份额通过与目标客户端间的安全通道推送到目标客户端,目标客户端接收该公钥和加密后的私钥公开份额。[0192]步骤S603:向服务器发送第二签名请求;[0193]步骤S604:接收所述服务器在接收到所述第二签名请求后返回的根据私钥私密份额执行签名操作得到的第二部分签名结果;[0194]在采用RSA算法作为数字签名算法时,根据所述私钥私密份额执行签名操作得到的第二部分签名结果具体可以包括:根据计算第二部分签名结果,其中,hm表示待签名数据的摘要信息,"0表示第二部分签名结果。[0195]步骤S605:根据所述第二部分签名结果和私钥公开份额确定最终签名结果。[0196]在采用RSA算法作为数字签名算法时,若对原始私钥进行的乘法分解,则根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果具体包括:根据确定所述最终签名结果。[0197]在采用RSA算法作为数字签名算法时,若对原始私钥进行的加法分解,则根据所述私钥公开份额和所述第二部分签名结果确定最终签名结果具体包括:根据I到的第一部分签名结果,根据合成最终签名结果;[0198]其中,hm表示待签名数据的摘要信息,5^,,...表示第一部分签名结果,表示第二部分签名结果,Sigdm表示最终签名结果。[0199]在其中一个实施例中,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。[0200]本实施例六中提供的数字签名生成方法与上述实施例五中的数字签名生成方法的描述是类似的,并且具有上述实施例五中的数字签名生成方法的有益效果,为节约篇幅,不再赘述;同时,在本实施例六中未披露的技术细节,也请参照上述实施例一至三中的描述。[0201]为了便于理解本发明的方案,以下通过一个具体的应用示例对本发明实施例中的数字签名生成方法进行说明。[0202]初始化阶段[0203]云签名服务平台在初始化阶段选择一个随机密钥dpri,并存储在密码机内部以保证该密钥的隐私性。[0204]签发证书阶段[0205]用户向CA机构申请办理云签名数字证书,CA系统从密码机申请用户证书密钥对。[0206]HSM内部生成一个RSA密钥对(公钥和原始私钥),并将其中的原始私钥根据d=dpri•dpub+d〇modN分解出私钥公开份额dpri和私钥私密份额dpub:[0207]将公钥及私钥公开份额dpub返回给CA系统。[0208]CA系统为用户签发数字证书,证书中包含了用户的公钥。然后CA系统将用户的数字证书及私钥私密份额dpub推送到云签名服务平台。[0209]提取密钥阶段[0210]用户在云签名目标客户端输入登录凭证,云签名服务平台验证用户的身份,并查询获得注册用户的UserID。在识别用户成功之后,云签名服务平台通过安全通道将私钥公开份额dpub推送到云签名客户端相当于上述的目标客户端)。云签名客户端将私钥公开份额dpub存储在内存中,不要存储到永久存储介质如硬盘、Flash等)。[0211]使用密钥阶段[0212]当云签名客户端要使用密钥进行数字签名运算时,云签名客户端首先使用MD5、SHA1、或者SHA256等摘要算法计算待签名数据的摘要hm,然后使用私钥公开份额dpub进行模幂运算I,再将摘要hm及模幂运算结果同时发送到云签名服务平台。[0213]云签名服务平台使用平台密钥份额dplatf_和摘要hm计算最终签名结果,具体地根据确定所述最终签名结果。[0214]退出阶段[0215]当云签名客户端退出登录状态时,销毁存储在内存中的私钥公开份额。[0216]本发明实施例中的数字签名生成方法可以较佳的应用于电子发票签名业务中。以下对在电子发票签名业务的应用进行说明。[0217]1用户管理[0218]用户管理的关键步骤如下:[0219]1企业代表向CA申请专门用于电子发票业务的电子发票专用证书,CA在审核之后采用机构证书的模板来签发电子发票专用证书。[0220]⑵企业的管理员、业务员分别在CA注册,并分别申请移动证书。[0221]3企业持有预先从CA申请的UKey,其中包含机构证书,企业代表借助机构证书在电子发票业务系统申请注册,成为系统的合法机构用户。[0222]⑷企业管理员、业务员分别在电子发票业务系统申请注册,成为系统的合法个人用户。[0223]5企业代表使用机构证书登录电子发票业务系统,将企业帐号与管理员、业务员之间建立绑定关系。[0224]⑶电子发票业务系统将用户信息同步推送到云签名服务平台。[0225]2权限控制模型[0226]由于一个企业中可能设置多个业务员,并且不排除企业可以持有多张不同用途的电子发票专用证书,若采用基于角色的访问控制RBAC,则指派为业务员角色的个人可以访问所有电子发票专用证书。因此,本系统宜采用RBAC与访问控制列表ACL相结合的访问控制模型。[0227]实施RBAC模型,可以设置若干用户组,属于一个组的成员可以继承组的访问权限。然后,将每个电子发票专用证书作为资源对待,为其建立ACL,分配系统用户的操作权限。[0228]3基本业务流程[0229]3.1签发证书[0230]用户向CA机构申请办理云签名数字证书的时候,提交企业的机构证书,并对申请信息执行签名。在完成资料审核之后,CA系统签发云签名证书,并将证书及私钥发送到云签名服务平台,云签名服务平台使用机构证书的公钥来加密私钥私密份额dpub,并在数据库中存储,然后销毁原始私钥。[0231]3.2授权管理[0232]业务员使用移动证书登录云签名服务平台,发起使用本企业某个电子发票专用证书的申请,该申请将会提交给企业管理员进行审核。[0233]企业管理员使用UKey中的机构证书登录云签名服务平台,审核电子发票业务员提交的申请,如果审核通过并选择授权使用,管理平台将业务员的移动证书与电子发票专用证书、企业电子印章建立关联。[0234]与此同时,管理员还将私钥公开份额dpub的密文下载到客户端,使用机构证书的私钥来解密钥公开份额dpub,然后再使用电子发票业务员的移动证书公钥来加密钥公开份额dpub,并将密文上传到证书管理平台。[0235]3.3客户端登录及初始化流程[0236]电子发票业务员登录电子发票目标客户端的步骤如下:[0237]1打开电子发票目标客户端,连接电子发票业务系统。[0238]2业务员选择移动证书并输入PIN,电子发票业务系统在成功验证业务员证书的有效性之后,目标客户端完成登录。[0239]3客户端显示电子发票专用证书的列表,由业务员选择当前要使用的证书。[0240]⑷客户端向云签名服务平台提交下载电子发票专用证书密钥的申请。[0241]5云签名服务平台确认该业务员拥有访问该电子发票专用证书的权限之后,将电子发票专用证书密钥的用户密钥份额下发到相应的客户端。[0242]⑶目标客户端使用业务员移动证书的私钥来解密密钥公开份额dpub。[0243]如果上述登录流程成功执行,现在客户端已经持有电子发票专用证书以及密钥公开份额dpub,可以执行开具电子发票的相关操作。[0244]3.4签名流程[0245]开具电子发票的签名流程包括如下步骤:[0246]1业务员选择要开具发票的模板名称;[0247]2业务员在客户端输入要开具发票的具体项目内容单位名称、发票内容、金额等;[0248]3客户端将数据填充到预先设计的发票模板中,生成待签名的PDF文件;数据传送到电子发票业务系统;[0249]4电子发票目标客户端使用电子发票专用证书对应密钥的密钥公开份额dpub来计算部分数字签名相当于上述的第一部分签名结果);[0250]5电子发票目标客户端向电子发票业务系统发起第一签名请求,消息内容包含交易ID、发票内容、PDF文件及摘要、电子发票专用证书、部分数字签名等信息;[0251]6电子发票业务系统向云签名服务平台发送签名通告,将相关数据发送给云签名服务平台;[0252]7云签名服务平台在收到签名通告之后,立即启动后台计算,使用电子发票专用证书对应密钥的平台密钥份额来计算部分数字签名,合成最终的数字签名并写入roF文件,返回给电子发票业务系统;[0253]⑶电子发票业务系统将TOF文件返回给电子发票目标客户端展现给用户,结束签名流程。[0254]3.5验证流程[0255]如果云签名服务平台输出的电子发票为带有RSA签名的PDF文件,可以使用任何支持roF数字签名的目标客户端来验证发票的有效性。[0256]在目标客户端验证数字签名有效性的过程中,需要连接CA机构提供的在线证书状态查询服务0CSP来验证证书及证书链的有效性,还需要验证时间戳的有效性。[0257]3.6解绑业务员流程[0258]企业管理员可以通过机构证书在云签名服务平台申请解除电子发票专用证书与业务员移动证书之间的绑定关系。与此同时,证书管理平台将被相应业务员移动证书公钥加密的用户密钥份额的密文删除。解除绑定之后,业务员登陆目标客户端将无法下载电子发票专用证书的密钥。[0259]3.7证据存储[0260]每张电子发票的签名过程都在云签名服务平台保存了记录,电子发票业务系统还可以为消费者开放一个发票查询接口。当用户上传一个PDF文件,电子发票业务系统通过与云签名服务平台进行交互,提取该发票的相关信息,包括生成时间、具体内容等取证信息。[0261]其中,不同分解方式的比较:[0262]加法分解方案的混淆因子与私钥之间执行加法运算,如果第一混淆因子的长度比原始私钥小得多,则原始私钥的低位比特获得保护,而高位比特基本上都以原始状态发送到目标客户端,就是说泄漏了原始私钥的部分信息。[0263]乘法分解方案在引入混淆因子时采用了乘法运算,基本上私钥公开份额dpub与原始私钥之间没有任何一个部分是完全相同的,所以不会泄漏原始私钥的信息。如果不考虑运算效率方面的问题,分割的私钥私密份额与私钥公开份额都可以是一个比特长度与模数N相同的大整数,它们的乘积对模数N取模之后才与原始私钥相关联,这样可以获得与原始私钥基本一致的密钥算法强度。[0264]在执行效率方面,加法分解方案的私钥私密份额和私钥公开份额可以由客户端、服务端并行计算,然后由任何一方来合成最终结果。乘法分解方案则需要由客户端、服务端依次计算,可以由任意一方先进行计算,然后另一方在此基础上再进行模幂运算,才能够获得最终结果。[0265]由此可见,在并发处理效率方面有较高要求的场合下,应该优先选择加法分解方案;在私钥安全性有较高要求的场合下,应该优先选择乘法分解方案。[0266]此外,获取用于数字签名的原始私钥的方式一般有两种,一种是在密码机内部生成,另一种是从密码机外部导入。在获取用于数字签名的原始私钥时,若所述原始私钥是从所述密码机外部导入的,为了确保私钥私密份额的安全性,要求对于每个用户的第一混淆因子均不相同。而在获取用于数字签名的原始私钥时,若所述原始私钥是在所述密码机内部生成的,由于安全性有保证,为了密码机内部空间,可以采用对于每个用户的第一混淆因子均相同的模式,但在条件允许的情况下(例如内部空间足够大),也可以采用均不相同的第一混淆因子。[0267]实施例七[0268]根据上述实施例一至三中的数字签名生成方法,在其中一个实施例中,还提供一种数字签名生成系统。参见图7所示,为该实施例中的数字签名生成系统的组成结构示意图,需要说明的是,图7示出的是本发明的数字签名生成系统一个较佳的组成结构,根据需要,可以包括图7中的全部,也可以仅包括其中的一部分。以下对其中几个实施例进行阐述。[0269]在其中一个实施例中的数字签名生成系统,包括图7中的接收单元701和处理单元702,其中:[0270]接收单元701,用于接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;[0271]处理单元702,用于根据所述第一部分签名结果和私钥私密份额确定最终签名结果。[0272]在其中一个实施例中,如图7所示,该实施例中的数字签名生成系统,还包括返回单元703;所述接收单元701还用于接收目标客户端发送的私钥签发请求,返回单元703用于根据所述私钥签发请求向所述目标客户端返回加密后的所述私钥公开份额。[0273]在其中一个实施例中,如图7所示,本发明的数字签名生成系统还可以包括分解单元704,该分解单元704用于通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额。[0274]在其中一个实施例中,分解单元704可以通过所述第一混淆因子对所述原始私钥进行乘法分解,获得所述私钥公开份额和所述私钥私密份额。[0275]在其中一个实施例中,分解单元704可以根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解,目标客户端可以根据RSA算法计算所述第一部分签名结果,第一处理单元704可以根据RSA算法计算最终签名结果。[0276]在其中一个实施例中,分解单元704可以根据d=dpri•dpub+domodN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,dpri和do表示私钥私密份额,且dpri还表示第一混淆因子。[0277]在其中一个实施例中,所述第一签名请求还包括摘要信息,所述第一部分签名结果根I|得到;[0278]所述最终签名结果根据确定;[0279]其中,hm表示待签名数据的摘要信息,两,〜.."〇表示第一部分签名结果,Sigdm表示最终签名结果。[0280]在其中一个实施例中,如图7所示,本发明的数字签名生成系统还可以包括混淆单元705,该混淆单元705用于将do作为第二混淆因子,为不同用户的原始私钥分配不同的第二混淆因子。[0281]在其中一个实施例中,如图7所示,本发明的数字签名生成系统还可以包括存储单元706,该存储单元706用于将所述第一混淆因子保存在密码机内部,将所述第二混淆因子保存在数据库中。[0282]在其中一个实施例中,分解单元704可以通过所述第一混淆因子对所述原始私钥进行加法分解,获得所述私钥公开份额和所述私钥私密份额。[0283]在其中一个实施例中,处理单元702可以根据所述私钥私密份额执行签名操作得到的第二部分签名结果,对所述第一部分签名结果和第二部分签名结果进行合成运算,得到所述最终签名结果。[0284]在其中一个实施例中,分解单元704可以根据RSA算法并通过所述第一混淆因子对所述原始私钥进行加法分解,目标客户端可以根据RSA算法计算所述第一部分签名结果,第一处理单元704可以根据RSA算法计算最终签名结果。[0285]在其中一个实施例中,分解单元704可以根据d=dpri+dpubmodN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,dpri表示私钥私密份额,且dpri作为第一混淆因子。[0286]在其中一个实施例中,所述第一签名请求还包括摘要信息,所述第一部分签名结果根据)•得到;[0287]处理单元702可以根据汁算第二部分签名结果,根据合成最终签名结果;[0288]其中,hm表示待签名数据的摘要信息良示第一部分签名结果,w表示第二部分签名结果,Sigdm表示最终签名结果。[0289]在其中一个实施例中,混淆单元705也可以采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;[0290]返回单元703可以将混淆处理后的所述私钥公开份额加密后下发给目标客户端;[0291]所述第一部分签名结果根据混淆处理后的所述私钥公开份额执行签名操作得到;[0292]处理单元702可以根据获取到的第一部分签名结果和混淆处理后的所述私钥私密份额确定最终签名结果。[0293]在其中一个实施例中,混淆处理后的所述私钥公开份额为dpubdh,混淆处理后的所述私钥私密份额为dpri•dh,dpub表示私钥公开份额,dpri表示私钥私密份额,dh表示第三混淆因子。[0294]在其中一个实施例中,混淆处理后的所述私钥公开份额为dpub_dh,混淆处理后的所述私钥私密份额为dpri+dh,dpub表示私钥公开份额,dpri表示私钥私密份额,dh表示第三混淆因子。[0295]在其中一个实施例中,所述第三混淆因子采用下述任意一种方式生成;[0296]方式一,周期性的生成所述第三混淆因子,其中前后两个周期内的第三混淆因子不同;[0297]方式二,对在线的活跃用户进行分组,分别为各组生成不同的第三混淆因子;[0298]方式三,对在线的活跃用户进行分组,周期性的分别为各组生成不同的第三混淆因子;[0299]方式四,为用户分配标识符,根据所分配的标识符计算对应用户的第三混淆因子。[0300]在其中一个实施例中,如图7所示,本发明的数字签名生成系统还可以包括删除单元707,用于在第一分解单元通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额之后,删除所述原始私钥。[0301]实施例八[0302]根据上述实施例四中的数字签名生成方法,在其中一个实施例中,还提供一种数字签名生成系统。参见图8所示,为该实施例中的数字签名生成系统的组成结构示意图。如图8所示,该实施例中的数字签名生成系统包括签名单元801和请求单元802,其中:[0303]签名单元801,用于根据私钥公开份额执行签名操作得到第一部分签名结果;[0304]请求单元802,用于向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果。[0305]在其中一个实施例中,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。[0306]需要说明的是,在其中一些实施例中,上述实施例一至三中进一步限定的技术特征也可以作该实施例八中的一些技术特征的进一步限定,在此不予赘述。[0307]实施例九[0308]根据上述实施例五中的数字签名生成方法,在其中一个实施例中,还提供一种数字签名生成系统。参见图9所示,为该实施例中的数字签名生成系统的组成结构示意图。如图9-所示,该实施例中的数字签名生成系统包括接收单元901、签名单元902和发送单元903,其中:[0309]接收单元901,用于接收目标客户端发送的第二签名请求;[0310]签名单元902,用于在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果;[0311]发送单元903,用于将所述第二部分签名结果返回给所述目标客户端,以使所述目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。[0312]在其中一个实施例中,如图9所示,本发明的数字签名生成系统还可以包括分解单元904,该分解单元904用于通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额。[0313]需要说明的是,在其中一些实施例中,上述实施例一至三中进一步限定的技术特征也可以作该实施例九中的一些技术特征的进一步限定,在此不予赘述。[0314]实施例十[0315]根据上述实施例六中的数字签名生成方法,在其中一个实施例中,还提供一种数字签名生成系统。参见图10所示,为该实施例中的数字签名生成系统的组成结构示意图。如图10所示,该实施例中的数字签名生成系统包括请求单元1001、接收单元1002和处理单元1003,其中:[0316]请求单元1001,用于向服务器发送第二签名请求;[0317]接收单元1002,用于接收所述服务器在接收到所述第二签名请求后返回的根据私钥私密份额执行签名操作得到的第二部分签名结果;[0318]处理单元1003,用于根据所述第二部分签名结果和私钥公开份额确定最终签名结果。[0319]在其中一个实施例中,所述私钥公开份额和私钥私密份额由所述服务器通过引用的第一混淆因子将原始私钥分解而成。[0320]需要说明的是,在其中一些实施例中,上述实施例一至三中进一步限定的技术特征也可以作该实施例十中的一些技术特征的进一步限定,在此不予赘述。[0321]本发明实施例提供的数字签名生成系统,需要指出的是:以上对于数字签名生成系统的描述,与上述在目标客户端侧执行的数字签名生成方法的描述是类似的,并且具有上述在目标客户端侧执行的数字签名生成方法的有益效果,为节约篇幅,不再赘述;因此,以上对本发明实施例提供的数字签名生成系统中未披露的技术细节,请参照上述提供的在目标客户端侧执行的数字签名生成方法的描述。[0322]以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0323]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

权利要求:1.一种数字签名生成方法,其特征在于,包括:接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;根据所述第一部分签名结果和私钥私密份额确定最终签名结果。2.根据权利要求1所述的数字签名生成方法,其特征在于,还包括:接收目标客户端发送的私钥签发请求,根据所述私钥签发请求向所述目标客户端返回加密后的所述私钥公开份额。3.根据权利要求1或2所述的数字签名生成方法,其特征在于,还包括:通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额。4.根据权利要求3所述的数字签名生成方法,其特征在于,所述通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额包括:通过所述第一混淆因子对所述原始私钥进行乘法分解,获得所述私钥公开份额和所述私钥私密份额。5.根据权利要求4所述的数字签名生成方法,其特征在于,根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解,根据RSA算法计算所述第一部分签名结果和所述最终签名结果。6.根据权利要求5所述的数字签名生成方法,其特征在于,所述根据RSA算法并通过所述第一混淆因子对所述原始私钥进行乘法分解包括:根据d=dpri·dpub+d〇modN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,cWdPdo表示私钥私密份额,且!^还表示第一混淆因子。7.根据权利要求1或6所述的数字签名生成方法,其特征在于:所述第一签名请求还包括摘要信息,所述第一部分签名结果根据跑^«=吵得到;所述最终签名结果根据确定;其中,hm表示待签名数据的摘要信息,...0«表示第一部分签名结果,Sigdm表示最终签名结果。8.根据权利要求6所述的数字签名生成方法,其特征在于,将do作为第二混淆因子,为不同用户的原始私钥分配不同的第二混淆因子。9.根据权利要求8所述的数字签名生成方法,其特征在于,将所述第一混淆因子保存在密码机内部,将所述第二混淆因子保存在数据库中。10.根据权利要求3所述的数字签名生成方法,其特征在于,所述通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额包括:通过所述第一混淆因子对所述原始私钥进行加法分解,获得所述私钥公开份额和所述私钥私密份额。11.根据权利要求10所述的数字签名生成方法,其特征在于,所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据所述私钥私密份额执行签名操作得到的第二部分签名结果,对所述第一部分签名结果和第二部分签名结果进行合成运算,得到所述最终签名结果。12.根据权利要求10所述的数字签名生成方法,其特征在于,根据RSA算法并通过所述第一混淆因子对所述原始私钥进行加法分解,根据RSA算法计算所述第一部分签名结果和所述最终签名结果。13.根据权利要求12所述的数字签名生成方法,其特征在于,所述根据RSA算法并通过所述第一混淆因子对所述原始私钥进行加法分解包括:根据d=dpri+dpubmodN将原始私钥分解成私钥公开份额和私钥私密份额,其中,d表示原始私钥,dpub表示私钥公开份额,dpri表示私钥私密份额,且dpri作为第一混淆因子。14.根据权利要求1或13所述的数字签名生成方法,其特征在于:所述第一签名请求还包括摘要信息,所述第一部分签名结果根得到;所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据没心_7”=冲”广1動4竭计算第二部分签名结果,根据没笔1?細:=力》1〜',.对?7〇‘]110.1祝)合成最终签名结果;其中,hm表示待签名数据的摘要信息,表示第一部分签名结果,表示第二部分签名结果,Sigdm表示最终签名结果。15.根据权利要求3、4或10所述的数字签名生成方法,其特征在于:还包括:采用引入的第三混淆因子分别对所述私钥公开份额和所述私钥私密份额进行混淆处理,得到混淆处理后的所述私钥公开份额和所述私钥私密份额;所述第一部分签名结果根据混淆处理后的所述私钥公开份额执行签名操作得到;所述根据所述第一部分签名结果和私钥私密份额确定最终签名结果包括:根据获取到的第一部分签名结果和混淆处理后的所述私钥私密份额确定最终签名结果。16.根据权利要求15所述的数字签名生成方法,其特征在于,混淆处理后的所述私钥公开份额为dpubdh,混淆处理后的所述私钥公开份额为dpri·dh,dpub表示私钥公开份额,dpri表示私钥私密份额,dh表示第三混淆因子。17.根据权利要求15所述的数字签名生成方法,其特征在于,混淆处理后的所述私钥公开份额为dpub_dh,混淆处理后的所述私钥私密份额为dpri+dh,dpub表示私钥公开份额,dpri表示私钥私密份额,dh表示第三混淆因子。18.根据权利要求16或17所述的数字签名生成方法,其特征在于,所述第三混淆因子采用下述任意一种方式生成;方式一,周期性的生成所述第三混淆因子,其中前后两个周期内的第三混淆因子不同;方式二,对在线的活跃用户进行分组,分别为各组生成不同的第三混淆因子;方式三,对在线的活跃用户进行分组,周期性的分别为各组生成不同的第三混淆因子;方式四,为用户分配标识符,根据所分配的标识符计算对应用户的第三混淆因子。19.根据权利要求3所述的数字签名生成方法,其特征在于,在通过引用的第一混淆因子将原始私钥分解成所述私钥公开份额和所述私钥私密份额之后,还包括:删除所述原始私钥。20.—种数字签名生成系统,其特征在于,包括:接收单元,用于接收目标客户端发送的第一签名请求,所述第一签名请求包括所述目标客户端根据私钥公开份额执行签名操作得到的第一部分签名结果;处理单元,用于根据所述第一部分签名结果和私钥私密份额确定最终签名结果。21.—种数字签名生成方法,其特征在于,包括:根据私钥公开份额执行签名操作得到第一部分签名结果;向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果。22.—种数字签名生成系统,其特征在于,包括:签名单元,用于根据私钥公开份额执行签名操作得到第一部分签名结果;请求单元,用于向服务器发送第一签名请求,所述第一签名请求包括所述第一部分签名结果,以使所述服务根据第一部分签名结果和私钥私密份额确定最终签名结果。23.—种数字签名生成方法,其特征在于,包括:接收目标客户端发送的第二签名请求;在接收到所述第二签名请求后,根据私钥私密份额执行签名操作得到第二部分签名结果;将所述第二部分签名结果返回给所述目标客户端,以使所述目标客户端根据私钥公开份额和所述第二部分签名结果确定最终签名结果。24.—种数字签名生成方法,其特征在于,包括:向服务器发送第二签名请求;接收所述服务器在接收到所述第二签名请求后返回的根据私钥私密份额执行签名操作得到的第二部分签名结果;根据所述第二部分签名结果和私钥公开份额确定最终签名结果。

百度查询: 数安时代科技股份有限公司 数字签名生成方法和装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。