数字签名处理方法、装置、计算机设备以及存储介质转让专利

申请号 : CN202010257435.X

文献号 : CN111464315B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李茂材王宗友张劲松黄焕坤周开班时一防刘区城刘攀蓝虎杨常青朱耿良

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例公开了一种数字签名处理方法、装置、计算机设备以及存储介质,数字签名处理方法包括:签名节点获取针对第一凭证用户的消费凭证信息,以及获取消费凭证信息的第一数字签名;签名节点采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名;签名节点将消费凭证信息、第一数字签名和第二数字签名发送至共识节点,指示共识节点验证第一数字签名和第二数字签名,并使得共识节点在第一数字签名和第二数字签名均验证通过后将消费凭证信息添加至业务区块链。采用本申请,可以增强用户私钥的安全性。

权利要求 :

1.一种数字签名处理方法,其特征在于,包括:签名节点获取针对第一凭证用户的消费凭证信息,以及获取所述消费凭证信息的第一数字签名;所述第一数字签名是所述签名节点采用所述第一凭证用户的第一协商私钥以及签名客户端采用所述第一凭证用户的第二协商私钥对所述消费凭证信息进行协同签名得到;第一协商私钥和第二协商私钥是分别存储在签名节点和签名客户端的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密;

所述签名节点采用与所述第一凭证用户具有关联关系的第二凭证用户的私钥对所述消费凭证信息进行签名,得到第二数字签名;

所述签名节点将所述消费凭证信息、所述第一数字签名和所述第二数字签名发送至共识节点,指示所述共识节点验证所述第一数字签名和所述第二数字签名,并使得所述共识节点在所述第一数字签名和所述第二数字签名均验证通过后将所述消费凭证信息添加至业务区块链。

2.根据权利要求1所述的方法,其特征在于,所述获取所述消费凭证信息的第一数字签名,包括:

所述签名节点接收所述签名客户端发送的第二协商参数,采用第一协商参数和所述第二协商参数对所述消费凭证信息进行签名,得到第一协商签名;所述第一协商参数是根据所述第一协商私钥以及与所述第二协商私钥对应的第二公钥确定的;

所述签名节点采用所述第一协商私钥对所述第一协商签名加密,得到第二协商签名,将所述第二协商签名发送至所述签名客户端,指示所述签名客户端采用所述第二协商私钥对所述第二协商签名进行签名,得到第三协商签名;

所述签名节点接收所述签名客户端发送的第三协商签名,根据所述第一协商签名和所述第三协商签名,生成第四协商签名,将所述第一协商签名和所述第四协商签名组合为所述第一数字签名。

3.根据权利要求2所述的方法,其特征在于,所述签名节点将所述消费凭证信息、所述第一数字签名和所述第二数字签名发送至共识节点,包括:所述签名节点获取所述第一凭证用户的公钥,以及获取所述第二凭证用户的公钥;

所述签名节点将所述第一凭证用户的公钥、所述第二凭证用户的公钥、所述消费凭证信息、所述第一数字签名和所述第二数字签名封装为广播消息,并将所述广播消息发送至所述共识节点。

4.根据权利要求3所述的方法,其特征在于,还包括:响应于针对所述第一凭证用户的协商私钥生成请求,所述签名节点调用随机数生成器,生成所述第一协商私钥;

所述签名节点接收所述签名客户端发送的所述第二公钥;所述第二公钥是所述签名客户端为响应所述协商私钥生成请求,调用所述随机数生成器生成的所述第二协商私钥对应的公钥;

所述签名节点根据所述第一协商私钥和所述第二公钥,生成所述第一凭证用户的公钥。

5.根据权利要求1所述的方法,其特征在于,所述签名节点采用与所述第一凭证用户具有关联关系的第二凭证用户的私钥对所述消费凭证信息进行签名,得到第二数字签名,包括:

所述签名节点获取所述消费凭证信息的数据指纹;

所述签名节点采用与所述第一凭证用户具有关联关系的所述第二凭证用户的私钥对所述数据指纹加密,得到所述第二数字签名。

6.一种数字签名处理方法,其特征在于,包括:签名客户端获取针对第一凭证用户的消费凭证信息,将所述消费凭证信息发送至签名节点;

所述签名客户端接收所述签名节点发送的第二协商签名;所述第二协商签名是所述签名节点采用所述第一凭证用户的第一协商私钥对所述消费凭证信息进行签名得到;

所述签名客户端采用所述第一凭证用户的第二协商私钥对所述第二协商签名进行签名,得到第三协商签名;第一协商私钥和第二协商私钥是分别存储在签名节点和签名客户端的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密;

所述签名客户端将所述第三协商签名发送至所述签名节点,指示所述签名节点根据所述第三协商签名生成所述消费凭证信息的第一数字签名,以及采用与所述第一凭证用户具有关联关系的第二凭证用户的私钥对所述消费凭证信息进行签名,得到所述消费凭证信息的第二数字签名。

7.根据权利要求6所述的方法,其特征在于,还包括:响应于针对所述第一凭证用户的协商私钥生成请求,所述签名客户端调用随机数生成器,生成所述第二协商私钥,获取与所述第二协商私钥对应的第二公钥;

所述签名客户端将所述第二公钥发送至所述签名节点,指示所述签名节点根据所述第二公钥以及所述第一协商私钥生成所述第一凭证用户的公钥。

8.一种数字签名处理方法,其特征在于,包括:共识节点接收签名节点发送的广播消息;所述广播消息包括针对第一凭证用户的消费凭证信息、所述第一凭证用户的第一数字签名以及与所述第一凭证用户具有关联关系的第二凭证用户的第二数字签名;所述第一数字签名是所述签名节点采用所述第一凭证用户的第一协商私钥以及签名客户端采用所述第一凭证用户的第二协商私钥对所述消费凭证信息进行协同签名得到;第一协商私钥和第二协商私钥是分别存储在签名节点和签名客户端的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密;

所述共识节点对所述第一数字签名以及所述第二数字签名进行验证;

当所述第一数字签名的验证结果和所述第二数字签名的验证结果均为验证通过时,所述共识节点将所述消费凭证信息添加至业务区块链。

9.根据权利要求8所述的方法,其特征在于,所述广播消息还包括所述第一凭证用户的公钥以及所述第二凭证用户的公钥;

所述共识节点对所述第一数字签名以及所述第二数字签名进行验证,包括:所述共识节点根据所述消费凭证信息和所述第一凭证用户的公钥,对所述第一数字签名进行验证,得到所述第一数字签名的验证结果;

所述共识节点根据所述消费凭证信息和所述第二凭证用户的公钥,对所述第二数字签名进行验证,得到所述第二数字签名的验证结果。

10.根据权利要求9所述的方法,其特征在于,所述共识节点将所述消费凭证信息添加至业务区块链,包括:

所述共识节点将所述消费凭证信息、所述第一凭证用户的公钥以及所述第二凭证用户的公钥添加至业务区块;

所述共识节点将所述业务区块添加至所述业务区块链。

11.一种数字签名处理装置,其特征在于,包括:第一获取模块,用于获取针对第一凭证用户的消费凭证信息;

第二获取模块,用于获取所述消费凭证信息的第一数字签名;所述第一数字签名是所述数字签名处理装置采用所述第一凭证用户的第一协商私钥以及签名客户端采用所述第一凭证用户的第二协商私钥对所述消费凭证信息进行协同签名得到;第一协商私钥和第二协商私钥是分别存储在所述数字签名处理装置和签名客户端的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密;

第一加密模块,用于采用与所述第一凭证用户具有关联关系的第二凭证用户的私钥对所述消费凭证信息进行签名,得到第二数字签名;

第一发送模块,用于将所述消费凭证信息、所述第一数字签名和所述第二数字签名发送至共识节点,指示所述共识节点验证所述第一数字签名和所述第二数字签名,并使得所述共识节点在所述第一数字签名和所述第二数字签名均验证通过后将所述消费凭证信息添加至业务区块链。

12.一种数字签名处理装置,其特征在于,包括:第二发送模块,用于获取针对第一凭证用户的消费凭证信息,将所述消费凭证信息发送至签名节点;

第一接收模块,用于接收所述签名节点发送的第二协商签名;所述第二协商签名是所述签名节点采用所述第一凭证用户的第一协商私钥对所述消费凭证信息进行签名得到;

第二加密模块,用于采用所述第一凭证用户的第二协商私钥对所述第二协商签名进行签名,得到第三协商签名,将所述第三协商签名发送至所述签名节点,指示所述签名节点根据所述第三协商签名生成所述消费凭证信息的第一数字签名,以及采用与所述第一凭证用户具有关联关系的第二凭证用户的私钥对所述消费凭证信息进行签名,得到所述消费凭证信息的第二数字签名,第一协商私钥和第二协商私钥是分别存储在签名节点和所述数字签名处理装置的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密。

13.一种数字签名处理装置,其特征在于,包括:第二接收模块,用于接收签名节点发送的广播消息;所述广播消息包括针对第一凭证用户的消费凭证信息、所述第一凭证用户的第一数字签名以及与所述第一凭证用户具有关联关系的第二凭证用户的第二数字签名;所述第一数字签名是所述签名节点采用所述第一凭证用户的第一协商私钥以及签名客户端采用所述第一凭证用户的第二协商私钥对所述消费凭证信息进行协同签名得到;第一协商私钥和第二协商私钥是分别存储在签名节点和签名客户端的第一凭证用户的子私钥,被第一协商私钥和第二协商私钥协同加密后的数据由所述第一凭证用户的公钥解密;

验证模块,用于对所述第一数字签名以及所述第二数字签名进行验证;

添加模块,用于当所述第一数字签名的验证结果和所述第二数字签名的验证结果均为验证通过时,将所述消费凭证信息添加至业务区块链。

14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1‑10中任一项所述方法的步骤。

15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1‑10任一项所述的方法。

说明书 :

数字签名处理方法、装置、计算机设备以及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种数字签名处理方法、装置、计算机设备以及存储介质。

背景技术

[0002] 随着互联网技术的发展和各种电子应用的普及,产生了越来越多的用户交易数据,随之引发的数据安全存储的问题也愈加明显。现有的信息安全存储方案大都采用中心
化的安全管理,用户交易数据由中心化服务器进行维护,一旦服务器遭受恶意攻击,用户交
易数据必然有外泄的风险。
[0003] 区块链技术具有去中心化、分布式存储、时间戳、不可篡改等特征,这些特征能够完美的解决中心化信息安全存储方面的不足。
[0004] 目前,当某一个用户的用户交易数据需要存储至区块链时,该用户所在的客户端采用存储在本地的用户私钥对用户交易数据进行签名,将用户交易数据以及签名打包发送
至区块链的其余节点,待其余节点验证通过后,可以将用户交易数据存储至区块链。
[0005] 将用户私钥存储在客户端本地容易造成用户私钥泄露,降低用户私钥的安全性。

发明内容

[0006] 本申请实施例提供一种数字签名处理方法、装置、计算机设备以及存储介质,可以增强用户私钥的安全性。
[0007] 本申请实施例一方面提供了一种数字签名处理方法,包括:
[0008] 签名节点获取针对第一凭证用户的消费凭证信息,以及获取消费凭证信息的第一数字签名;第一数字签名是签名节点采用第一凭证用户的第一协商私钥以及签名客户端采
用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到;
[0009] 签名节点采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名;
[0010] 签名节点将消费凭证信息、第一数字签名和第二数字签名发送至共识节点,指示共识节点验证第一数字签名和第二数字签名,并使得共识节点在第一数字签名和第二数字
签名均验证通过后将消费凭证信息添加至业务区块链。
[0011] 本申请实施例一方面提供了一种数字签名处理方法,包括:
[0012] 签名客户端获取针对第一凭证用户的消费凭证信息,将消费凭证信息发送至签名节点;
[0013] 签名客户端接收签名节点发送的第二协商签名;第二协商签名是签名节点采用第一凭证用户的第一协商私钥对消费凭证信息进行签名得到;
[0014] 签名客户端采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名;
[0015] 签名客户端将第三协商签名发送至签名节点,指示签名节点根据第三协商签名生成消费凭证信息的第一数字签名,以及采用与第一凭证用户具有关联关系的第二凭证用户
的私钥对消费凭证信息进行签名,得到消费凭证信息的第二数字签名。
[0016] 本申请实施例一方面提供了一种数字签名处理方法,包括:
[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] 其中,添加模块,具体用于将消费凭证信息、第一凭证用户的公钥以及第二凭证用户的公钥添加至业务区块,将业务区块添加至业务区块链。
[0043] 本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述各实施例中的方法。
[0044] 本申请实施例一方面提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行上述各实施例中的方
法。
[0045] 本申请中的消费凭证信息对应的两个数字签名,只有两个数字签名均验证通过时,该消费凭证信息才能存储至区块链上,相比一个数字签名,两个数字签名可以增强消费
凭证信息的资产安全性。同时,其中一个数字签名是客户端和签名节点之间的协同签名,不
论的客户端,或是签名节点中都不会存储完整的用户私钥,可以避免用户私钥被泄露的风
险,增强用户私钥的安全性。

附图说明

[0046] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0047] 图1是本申请实施例提供的一种业务区块链示的意图;
[0048] 图2a‑图2d是本申请实施例提供的一种数字签名的场景示意图;
[0049] 图3是本申请实施例提供的一种数字签名系统的交互示意图;
[0050] 图4是本申请实施例提供的一种数字签名处理方法的流程示意图;
[0051] 图5是本申请实施例提供的一种数字签名处理方法的流程示意图;
[0052] 图6是本申请实施例提供的一种数字签名处理方法的流程示意图;
[0053] 图7是本申请实施例提供的一种数字签名处理装置的结构示意图;
[0054] 图8是本申请实施例提供的一种数字签名处理装置的结构示意图;
[0055] 图9是本申请实施例提供的一种数字签名处理装置的结构示意图;
[0056] 图10是本申请实施例提供的一种计算机设备的结构示意图;
[0057] 图11是本申请实施例提供的一种计算机设备的结构示意图;
[0058] 图12是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0059] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0060] 区块链(Block chain)是分布式数据存储、点对点传输(P2P,Peer To Peer)、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是
一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一个或多个交易信息,
用于验证其信息的有效性(防伪)和生成下一个区块。
[0061] 请参见图1,是本申请实施例提供的一种业务区块链的示意图,节点1、节点2、节点3以及节点4可以组合为区块链系统,每个节点都可以存储并维护业务区块链,上述4个节点
也可以称为业务区块链的区块链节点,每个节点都可以包括硬件层、中间层、操作系统层和
应用层。
[0062] 业务区块链包括至少一个业务区块,本申请中的业务区块用于存储消费凭证信息,在将消费凭证信息添加至业务区块链之前,第一凭证用户以及第二凭证用户需要对消
费凭证信息分别签名,以表明消费凭证信息的来源。只有对两个签名都验证通过后,才可以
将消费凭证信息存储至业务区块链上,相比只有一个签名,两个签名可以提高消费凭证信
息的资产安全性,且第一凭证用户的签名是第一凭证用户所在的客户端和节点之间的协同
签名,可以防止第一凭证用户的私钥泄露,增强用户私钥的安全性。
[0063] 图1所示的节点等可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、可穿戴设备(例如智能手表、智能手环等)或者服务器等。
[0064] 下述实施例在消费凭证信息是发票信息的前提下,以签名客户端、业务区块链的签名节点以及业务区块链的共识节点如何将发票信息存储至业务区块链上为例进行具体
说明:
[0065] 将发票和区块链技术有机结合,此时开具的发票也称为区块链发票。在区块链发票场景下,消费者产生了消费行为,商户(或者是企业)需要为消费者开具发票,开票大致流
程为:商户所在的商户节点为本次消费行为构建发票信息(发票信息可以包括:消费金额,
消费时间等),商户节点采用商户的私钥对发票信息进行签名,商户节点将签名结果、商户
的公钥以及发票信息一并发送至共识节点,共识节点对签名结果进行验证,验证通过后共
识节点可以将发票信息添加至业务区块链。至此,就完成了商户向消费者开具发票的行为,
可以知道,开具的发票是电子发票,也称区块链发票。后期需要抵扣发票或者报销发票时,
依赖于区块链的完整,且不可篡改特性,可以从业务区块链上追溯到本次消费行为所产生
的发票,以避免虚假发票的情况。
[0066] 虽然商户节点和共识节点都是业务区块链的区块链节点,但由于加入业务区块链的商户节点有多个(例如,酒店A对应的商户节点,酒店B对应的商户节点,餐馆A对应的商户
节点等),因此为了保护商户的商业隐私,一般来说,商户节点只会存储与自己相关的区块,
其他商户的具体发票信息会被过滤掉。
[0067] 对应地,只有共识节点会存储完整的业务区块链。
[0068] 可以直接将移动终端(例如,手机,平板电脑等)作为商户节点,但移动终端本地就会存储商户的私钥,从密码安全的角度来说,存储在移动终端中的私钥不具有安全性。
[0069] 对应地,认为存储在服务器中私钥具有安全性,但需要商户花费一定的资源购买服务器,以将该服务器作为商户节点,后期还需要维护这个服务器。对规模较小的一些小商
户(或者小企业)来说,经济压力较大,成本较高,会阻碍区块链发票的应用推广。
[0070] 因而可以由税务局牵头,由税务局布局一台spv(SimplifiedPaymentVerification,简单支付验证)节点,商户的私钥可以托管在税局的税
局spv节点中,当商户需要开具发票时,商户通过移动终端(例如,手机,平板电脑等)通知税
局spv节点,由税局spv节点执行开票行为,相当于将商户将开票权限托管给了税局spv节
点。
[0071] 税局spv节点可以不参与区块链的共识,而仅仅是提供签名服务以及向共识节点同步最新生成的区块,因而税局spv节点的性能要求可以远远低于共识节点的性能要求。
[0072] 这种方式,虽然节约了商户的经济成本,以及最大程度降低了税务局的经济成本,但税局spv节点会存储商户的私钥,税局甚至可以冒用商户的私钥随意开票,而不存在任何
约束,进而不能保证商户(或者企业)的发票资产安全。
[0073] 在这种前提下,本申请提出的数字签名处理方法既可以保证私钥的安全性,又可以保证企业的发票资产安全性。
[0074] 如图2a所示,维护业务区块链的节点包括共识节点1、共识节点2以及签名节点,共识节点1、共识节点2以及签名节点都是区块链节点,签名客户端与签名节点具有连接关系。
[0075] 签名客户端主要用于和签名节点采用商户(或者企业)的开票员的私钥进行协同签名,避免开票员的完整私钥泄露,签名客户端所在的终端设备可以对应前述中的移动终
端,例如,签名客户端是开票员的个人手机中的应用程序。
[0076] 签名节点可以对应前述中的税局spv节点,签名节点主要用于和签名客户端采用开票员的私钥进行协同签名,以及采用企业的私钥再签名,以使一张发票对应两个签名。
[0077] 签名节点可以不参与区块链的共识,而仅仅是提供签名服务以及向共识节点同步最新生成的区块。
[0078] 共识节点1和共识节点2的主要功能是对待上链的发票的签名进行验证,验证成功后即生成新区块,并添加至区块链上。
[0079] 如图2a所示,此时业务区块链包括3个业务区块。
[0080] 当企业需要向消费者开具发票时,该企业的开票员向签名客户端输入本次消费的消费金额,消费类型等,签名客户端自动拉取当前时间作为消费时间以及获取发票销售企
业的名称(称为发票销售企业名称),其中发票销售企业即是开票企业。签名客户端可以将
上述消费金额、消费时间、消费类型以及发票销售企业名称组合为发票信息20a,以及将发
票信息20a发送至签名节点。
[0081] 至此,签名节点就获取了发票信息20a。
[0082] 如图2b所示,签名节点采用开票员的第一协商私钥20b对发票信息20a进行协同签名,得到第一协商签名20c和原始协商签名20x。签名节点将第一协商签名20c发送至签名客
户端。
[0083] 签名客户端采用开票员的第二协商私钥20d对第一协商签名20c进行协同签名,得到第二协商签名20e。签名客户端将第二协商签名20e发送至签名节点。
[0084] 如图2c所示,签名节点根据原始协商签名20x和第二协商签名20e,得到发票信息20a的第一数字签名20f。
[0085] 签名节点采用发票销售企业的私钥对发票信息20a进行签名,得到发票信息20a的第二数字签名20h。
[0086] 其中,签名节点获取第一数字签名20f和第二数字签名20h的前后顺序没有限定。
[0087] 至此,签名节点就获取了发票信息20a的两个数字签名,其中一个数字签名是与开票员相关的签名,另一个数字签名是与发票销售企业相关的签名。
[0088] 开票员可以是发票销售企业的法人,或者财务主管等,开票员可以具体到某一个人,而发票销售企业是具体到某一个企业。
[0089] 还需说明的是,虽然开票员的私钥有两部分,但开票员的公钥只有一个。
[0090] 如图2d所示,签名节点将发票信息20a,第一数字签名20f以及第二数字签名20h发送至共识节点1,假设共识节点1相比共识节点2具有更高的算力,因此由共识节点1来进行
验证以及上链。
[0091] 共识节点1采用开票员的公钥对第一数字签20f名进行验证,采用发票销售企业的公钥对第二数字签20h名进行验证。当第一数字签20f和第二数字签20h均验证通过时,共识
节点1将发票信息20a添加至区块体。共识节点1计算发票信息20a的默克尔根,获取当前业
务区块链中最后一个业务区块的哈希散列值,将发票信息20a的默克尔根、最后一个业务区
块的哈希散列值以及当前时间戳添加至区块头,将上述区块头以及存储了发票信息20a的
区块体组合为业务区块20j。
[0092] 共识节点1将业务区块20j添加至本地维护的业务区块链,以及将业务区块20j发送至共识节点2和签名节点,使得共识节点1、共识节点2以及签名节点各自维护的业务区块
链达到同步。
[0093] 如图2d所示,此时业务区块链包括4个业务区块,最后一个业务区块是新生成的与发票信息20a相关的业务区块20j。
[0094] 上述可知,由于开票员的完整私钥既没有存储在签名客户端,也没有存储在签名节点,可以避免开票员的私钥被泄露的风险;一张发票上有两个签名,相比一个签名,可以
避免签名节点随意开票的情况,提高企业的发票资产安全性,由于存在开票员的签名,后期
需要发票追责时,可以追责到个人;同时,对发票销售企业来说,不需要专门布局自己的签
名节点,而是将签名服务托管在公用的签名节点(签名节点可以向多个发票销售企业提供
签名服务)上,可以降低发票销售企业的经济压力。
[0095] 其中,签名节点和签名客户端如何协同签名,以获取第一数字签名(如上述实施例中的第一数字签名20f),签名节点如何获取第二数字签名(如上述实施例中的第二数字签
名20h),共识节点(如上述实施例中的共识节点1)如何将消费凭证信息(如上述实施例中的
发票信息20a)存储至业务区块链的具体过程可以参见下述图3‑图6对应的实施例。
[0096] 请参见图3,是本申请实施例提供的一种数字签名系统的交互示意图,数字签名系统包括签名客户端,签名节点以及共识节点。下述实施例主要描述签名客户端,签名节点以
及共识节点之间的交互过程。
[0097] 数字签名的交互过程包括如下步骤:
[0098] 由于本申请涉及签名客户端和签名节点之间的协同签名,因此在进行协同签名之前,双方需要协商一些参数,首先对参数的协商过程进行说明:
[0099] 签名客户端生成针对第一凭证用户的协商私钥生成请求,并将该协商私钥生成请求发送至签名节点。
[0100] 签名节点响应于该协商私钥生成请求,调用随机数生成器,生成第一凭证用户的‑1
第一协商私钥D1,计算第一协商私钥D1对应的公钥,称之为第一公钥P1=D1 [*]G,其中[*]
表示椭圆曲线点乘运算,G是椭圆曲线的基点,阶为n。
[0101] 同样地,签名客户端响应于该协商私钥生成请求,调用随机数生成器,生成第一凭‑1
证用户的第二协商私钥D2,计算第二协商私钥D2对应的公钥,称之为第二公钥P2=D2 [*]
G。
[0102] 签名节点将第一公钥P1发送至签名客户端,签名客户端将第二公钥P2发送至签名节点,即是签名节点和签名客户端之间互相交换第一公钥P1和第二公钥P2。
[0103] 签名节点根据第一协商私钥D1、第二公钥P2生成第一协商参数W1=D1‑1[*]P2,根据第一协商参数W1生成第一凭证用户的公钥P=W1[‑]G,其中,[‑]表示椭圆曲线点减运算。
[0104] 签名客户端根据第二协商私钥D2以及第一公钥P1生成第三协商参数W2=D2‑1[*]P1。
[0105] 至此,参数的协商过程就完成了。此时,签名节点获取到第一凭证用户的第一协商私钥D1,和第一协商参数W1;签名客户端就获取到第一凭证用户的第二协商私钥D2,以及第
三协商参数W2。第一协商私钥D1可以理解为第一凭证用户的部分私钥,第二协商私钥D2可
以理解为第一凭证用户的另一部分私钥。
[0106] 此处的第一协商私钥D1可以对应前述图2a‑图2d对应实施例中的第一协商私钥20b,第二协商私钥D2可以对应前述图2a‑图2d对应实施例中的第二协商私钥20d。
[0107] 步骤S101,签名客户端获取针对第一凭证用户的消费凭证信息,将消费凭证信息发送至签名节点。
[0108] 具体的,签名客户端获取第一凭证用户的消费凭证信息(如上述图2a‑图2d对应实施例中的发票信息20a),将第一凭证用户的消费凭证信息封装为签名请求。签名客户端根
据第三协商参数W2生成第二协商参数Q1=k1[*]W2,其中,k1是签名客户端基于本次签名请
求所生成的随机数,[*]表示椭圆曲线点乘运算。
[0109] 签名客户端将第二协商参数Q1一并添加至签名请求中,将包含了消费凭证信息以及第二协商参数Q1的签名请求发送至签名节点。
[0110] 消费凭证信息可以是发票,第一凭证用户可以是开票企业的开票员,开票员可以是开票企业的法人,或者财务主管等。
[0111] 签名客户端所在的终端设备可以是开票员的个人移动设备(例如,手机,电脑等)。
[0112] 签名节点可以是spv节点,且开票企业可以向签名节点授权,允许签名节点存储开票企业的私钥,以及采用开票企业的私钥对消费凭证信息进行签名,签名节点可以是性能
和安全性更优的是服务器。
[0113] 步骤S102,签名节点采用第一协商参数和第二协商参数对消费凭证信息进行签名,得到第一协商签名。
[0114] 具体的,签名节点响应该签名请求,采用加密算法计算消费凭证信息的数据指纹,消费凭证信息的数据指纹可以表示为:H。
[0115] 数据指纹是一串可以标识消费凭证信息的密文,且不与其他数据的数据指纹相冲突。
[0116] 一般来说,数据指纹的长度固定,且数据指纹通常用一个短的随机字母和数字组成的字符串来表示。
[0117] 其中,签名节点可以采用哈希算法(例如,MD5算法、SHA1算法、SHA256算法等)来计算消费凭证信息的数据指纹H;也可以采用HMAC(Hash‑based Message Authentication 
Code,哈希消息认证码)算法(例如,HmacMD5算法、HmacSHA1算法、HmacSHA256算法等)来计
算费凭证信息的数据指纹H。若数据指纹H是采用哈希算法计算得到的,数据指纹H也可以称
为哈希值,或者哈希散列值;若数据指纹H是采用HMAC算法那计算得到的,数据指纹H也可以
称为哈希消息认证码。
[0118] 签名节点根据数据指纹H、第二协商参数Q1以及第一协商参数W1,生成第一协商签名r=x1+Hmodn。
[0119] 其中,(x1,y1)=k2[*]G[+]Q1[+]k3[*]W1,k2,k3均是签名节点基于本次签名请求所生成的随机数,[+]表示椭圆曲线点加运算,mod表示求模运算。
[0120] 步骤S103,签名节点采用第一协商私钥对第一协商签名加密,得到第二协商签名,将第二协商签名发送至签名客户端。
[0121] 具体的,签名节点根据第一协商签名r和第一协商私钥D1,计算第二协商签名s1=D1*(r+k2)modn,将第二协商签名s1发送至签名客户端,此处的第二协商签名s1可以对应前
述图2a‑图2d对应实施例中的第一协商签名20c,此处的第一协商签名r可以对应前述图2a‑
图2d对应实施例中的原始协商签名20c。
[0122] 步骤S104,签名客户端采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名。
[0123] 具体的,签名客户端采用第二协商私钥D2对第二协商签名s1进行签名,生成第三协商签名s2=k1+D2*s1modn,将第三协商签名s2发送至签名节点,此处的第三协商签名s2
可以对应前述图2a‑图2d对应实施例中的第二协商签名20e。
[0124] 步骤S105,签名节点根据第一协商签名和第三协商签名,生成第一数字签名。
[0125] 具体的,签名节点根据第一协商签名r和第三协商签名s2,生成第四协商签名s=s2+k3‑rmodn,将第一协商签名r以及第四协商签名s组合为第一数字签名(r,s),第一数字
签名可以对应上述图2a‑图2d对应实施例中的第一数字签名20f。
[0126] 上述步骤S101‑步骤S105即是签名客户端和签名节点之间进行协同签名的过程,协同签名后得到的第一数字签名可以采用第一凭证用户的公钥P进行验证。
[0127] 步骤S106,签名节点采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名。
[0128] 具体的,与第一凭证用户具有关联关系的第二凭证用户可以是开票企业。
[0129] 签名节点获取第二凭证用户的私钥,采用第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名(如上述图2a‑图2d对应实施例中的第二数字签名20h)。
[0130] 后续,签名节点将消费凭证信息、第一数字签名和第二数字签名发送至共识节点。
[0131] 第一凭证用户可以是开票企业,第二凭证用户可以是开票员,在这种情况下,开票企业的完整私钥既没有存储在签名客户端,也没有存储在签名节点,可以避免开票企业的
私钥被泄露的风险。
[0132] 进一步地,签名节点不仅会存储第一凭证用户的第一协商私钥,第二凭证用户的私钥,还可以存储其他凭证用户的私钥。仍以发票为例,签名节点可以是税务局设置的托管
spv节点,所有具有开票权限的企业都可以向签名节点授开票权限,那么所有已经授权的开
票企业的私钥都会存储在签名节点中,以使签名节点可以对发票信息签名。
[0133] 其中,签名节点可以不参与区块链的共识,而仅仅是提供签名服务以及向共识节点同步最新生成的区块。
[0134] 步骤S107,共识节点对第一数字签名以及第二数字签名进行验证,当第一数字签名的验证结果和第二数字签名的验证结果均为验证通过时,将消费凭证信息添加至业务区
块,并将业务区块添加至业务区块链。
[0135] 具体的,共识节点是业务区块链中用于签名验证以及生成新区块的的节点,共识节点采用第一凭证用户的公钥对第一数字签名进行验证,采用第二凭证用户的公钥对第二
数字签名进行验证。
[0136] 若第一数字签名验证通过,且第二数字签名也验证通过,那么共识节点可以将消费凭证信息添加至业务区块(如上述图2a‑图2d对应实施例中的业务区块20j),将业务区块
添加至共识节点本地所维护的业务区块链,以及向业务区块链的其他节点发送新生成的业
务区块,以使所有的节点各自维护的业务区块链达到同步。
[0137] 上述可知,由于第一凭证用户的完整私钥既没有存储在签名客户端,也没有存储在签名节点,可以避免第一凭证用户的私钥被泄露的风险;同时,一个消费凭证信息对应两
个签名,相比一个签名,两个签名在保证消费凭证信息的隐私的前提下,可以提高消费凭证
信息的资产安全性;对第二凭证用户来说,将签名服务托管在公用的签名节点,可以降低第
二凭证用户的经济成本。
[0138] 请参见图4,是本申请实施例提供的一种数字签名处理方法的流程示意图,本实施例从签名节点侧,说明如何生成消费凭证信息的第一数字签名和第二数字签名,数字签名
处理方法可以包括如下步骤:
[0139] 步骤S201,签名节点获取针对第一凭证用户的消费凭证信息,以及获取消费凭证信息的第一数字签名;第一数字签名是签名节点采用第一凭证用户的第一协商私钥以及签
名客户端采用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到。
[0140] 具体的,签名节点接收签名客户端发送的签名请求,签名请求中包括第一凭证用户的消费凭证信息以及第二协商参数。
[0141] 消费凭证信息可以是发票,第一凭证用户可以是开票企业的开票员,开票员可以是开票企业的法人,或者财务主管等,第二凭证用户可以是开票企业。
[0142] 签名客户端所在的终端设备可以是开票员的个人移动设备(例如,手机,电脑等)。
[0143] 其中,签名客户端生成签名请求的具体过程可以参见上述图3对应实施例中的步骤S101。
[0144] 签名节点获取第一协商参数,以及计算消费凭证信息的数据指纹,根据第一协商参数、第二协商参数以及数据指纹生成第一协商签名。
[0145] 其中,签名节点生成第一协商签名的具体过程可以参见上述图3对应实施例中的步骤S102。
[0146] 签名节点采用第一凭证用户的第一协商私对第一协商签名进行加密,生成第二协商签名。
[0147] 其中,签名节点生成第二协商签名的具体过程可以参见上述图3对应实施例中的步骤S103。
[0148] 签名节点将第二协商签名发送至签名客户端,指示签名客户端采用第一凭证用户的第二协商私钥和第二协商签名进行签名,以生成第三协商签名。
[0149] 签名节点获取签名客户端发送的第三协商签名,根据第一协商签名和第三协商签名,生成第四协商签名,将第一协商签名和第四协商签名组合为第一数字签名。
[0150] 其中,签名节点生成第一数字签名的具体过程可以参见上述图3对应实施例中的步骤S105。
[0151] 步骤S202,签名节点采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名。
[0152] 具体的,签名节点获取与第一凭证用户具有关联关系的第二凭证用户的私钥,采用加密算法,计算消费凭证信息的数据指纹,采用第二凭证用户的私钥对数据指纹加密,得
到第二数字签名。
[0153] 此处的,对数据指纹进行加密的加密算法可以是RSA加密算法,ECC(椭圆曲线密码学,Elliptic curve cryptography)算法,或者SM2椭圆曲线公钥密码算法等。
[0154] 值得注意的是,签名节点获取第一数字签名和第二数字签名的先后顺序没有限定。
[0155] 步骤S203,签名节点将消费凭证信息、第一数字签名和第二数字签名发送至共识节点,指示共识节点验证第一数字签名和第二数字签名,并使得共识节点在第一数字签名
和第二数字签名均验证通过后将消费凭证信息添加至业务区块链。
[0156] 具体的,签名节点获取第一凭证用户的公钥,以及第二凭证用户的公钥。将消费凭证信息,第一数字签名,第二数字签名,第一凭证用户的公钥以及第二凭证用户的公钥封装
为广播消息,向区块链网络广播该广播消息,以使区块链网络中的共识节点对第一数字签
名和第二数字签名进行验证,第一数字签名和第二数字验证均通过后,将消费凭证信息添
加至业务区块链。
[0157] 第一凭证用户的公钥是签名节点和签名客户端预先协商好的,第一协商私钥、第二协商私钥以及第一凭证用户的公钥是互相对应关系,且第一凭证用户的公钥是根据第一
协商私钥以及第二协商私钥对应的第二公钥确定的。
[0158] 下面对第一协商私钥,第二协商私钥以及第一凭证用户的公钥的协商过程进行说明:
[0159] 签名节点接收签名客户端发送的针对第一凭证用户的协商私钥生成请求,签名节点响应于该协商私钥生成请求,调用随机数生成器,生成第一协商私钥。
[0160] 签名节点接收签名客户端发送的第二公钥,其中第二公钥是签名客户端为响应协商私钥生成请求,调用随机数生成器生成的第一协商私钥对应的公钥。
[0161] 签名节点根据第一协商私钥和第二公钥生成第一凭证用户的公钥。
[0162] 由于第一凭证用户的完整私钥既没有存储在签名客户端,也没有存储在签名节点,可以避免第一凭证用户的私钥被泄露的风险;同时,一个消费凭证信息对应两个签名,
相比一个签名,两个签名在保证消费凭证信息的隐私的前提下,可以提高消费凭证信息的
资产安全性;对第二凭证用户来说,将签名服务托管在公用的签名节点,可以降低第二凭证
用户的经济成本。
[0163] 请参见图5,是本申请实施例提供的一种数字签名处理方法的流程示意图,本实施例从签名客户端侧,说明如何生成消费凭证信息的第一数字签名,数字签名处理方法可以
包括如下步骤:
[0164] 步骤S301,签名客户端获取针对第一凭证用户的消费凭证信息,将消费凭证信息发送至签名节点。
[0165] 具体的,签名客户端获取第一凭证用户的消费凭证信息,以及根据第三协商参数生成第二协商参数。
[0166] 签名客户端将第一凭证用户的消费凭证信息以及第二协商参数封装为签名请求,发送至签名节点。
[0167] 消费凭证信息可以是发票,第一凭证用户可以是开票企业的开票员,开票员可以是开票企业的法人,或者财务主管等,第二凭证用户可以是开票企业。
[0168] 签名客户端所在的终端设备可以是开票员的个人移动设备(例如,手机,电脑等)。
[0169] 其中,签名客户端生成签名请求的具体过程可以参见上述图3对应实施例中的步骤S101。
[0170] 步骤S302,签名客户端接收签名节点发送的第二协商签名,采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名;第二协商签名是签名节点采
用第一凭证用户的第一协商私钥对消费凭证信息进行签名得到。
[0171] 具体的,签名客户端接收签名节点发送的第二协商签名,第二协商签名是签名节点采用第一凭证用户的第一协商私钥对消费凭证信息进行签名得到,签名节点根据签名请
求生成第二协商签名的具体过程可以参见上述图3对应实施例中的步骤S102‑步骤S103。
[0172] 签名客户端采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名。
[0173] 其中,签名客户端生成第三协商签名的具体过程可以参见上述图3对应实施例中的步骤S104。
[0174] 步骤S303,签名客户端将第三协商签名发送至签名节点,指示签名节点根据第三协商签名生成消费凭证信息的第一数字签名,以及采用与第一凭证用户具有关联关系的第
二凭证用户的私钥对消费凭证信息进行签名,得到消费凭证信息的第二数字签名。
[0175] 具体的,签名客户端将第三协商签名发送至签名节点,指示签名节点根据第一协商签名和第三协商签名生成第一凭证用户的第一数字签名,以及指示签名节点采用第二凭
证用户的私钥对消费凭证信息进行签名,得到第二数字签名,其中第二协商签名是由第一
协商签名确定的。
[0176] 下面对第一协商私钥,第二协商私钥以及第一凭证用户的公钥的协商过程进行说明:
[0177] 签名客户端生成针对第一凭证用户的协商私钥生成请求,将该协商私钥生成请求发送至签名节点。
[0178] 签名客户端响应于该协商私钥生成请求,调用随机数生成器,生成第二协商私钥,计算第二协商私钥对应的公钥,称之为第二公钥。
[0179] 签名客户端将第二公钥发送至签名节点,以使签名节点根据第一协商私钥和第二公钥生成第一凭证用户的公钥,其中第一协商私钥是签名节点为响应协商私钥生成请求,
调用随机数生成器生成的私钥。
[0180] 由于第一凭证用户的完整私钥既没有存储在签名客户端,也没有存储在签名节点,在保证完整签名的前提下可以避免第一凭证用户的私钥被泄露的风险;同时,一个消费
凭证信息对应两个签名,相比一个签名,两个签名在保证消费凭证信息的隐私的前提下,可
以提高消费凭证信息的资产安全性;对第二凭证用户来说,将签名服务托管在公用的签名
节点,可以降低第二凭证用户的经济成本。
[0181] 请参见图6,是本申请实施例提供的一种数字签名处理方法的流程示意图,本实施例从共识节点侧,说明如何对第一数字签名和第二数字签进行验证,数字签名处理方法可
以包括如下步骤:
[0182] 步骤S401,共识节点接收签名节点发送的广播消息;广播消息包括针对第一凭证用户的消费凭证信息、第一凭证用户的第一数字签名以及与第一凭证用户具有关联关系的
第二凭证用户的第二数字签名;第一数字签名是签名节点采用第一凭证用户的第一协商私
钥以及签名客户端采用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到。
[0183] 具体的,共识节点接收签名节点发送的广播消息,其中广播消息包括第一凭证用户的消费凭证信息、第一凭证用户的第一数字签名、第二凭证用户的第二数字签名、第一凭
证用户的公钥,以及第二凭证用户的公钥。
[0184] 第一数字签名是签名节点采用第一凭证用户的第一协商私钥和签名客户端采用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到,第二数字签名是签名节
点采用第二凭证用户的私钥对消费凭证信息进行签名得到。
[0185] 消费凭证信息可以是发票,第一凭证用户可以是开票企业的开票员,开票员可以是开票企业的法人,或者财务主管等,第二凭证用户可以是开票企业。
[0186] 签名客户端所在的终端设备可以是开票员的个人移动设备(例如,手机,电脑等)。
[0187] 需要说明的,虽然第一凭证用户的私钥是两个,即第一协商私钥和第二协商私钥,但第一凭证用户的公钥只有一个。
[0188] 步骤S402,共识节点对第一数字签名以及第二数字签名进行验证。
[0189] 具体的,共识节点采用加密算法计算消费凭证信息的数据指纹,采用第一凭证用户的公钥对第一数字签名解密;
[0190] 若第一数字签名的解密结果和消费凭证信息的数据指纹相同,说明第一数字签名的验证结果为验证通过;
[0191] 若第一数字签名的解密结果和消费凭证信息的数据指纹不相同,说明第一数字签名的验证结果为验证不通过。
[0192] 共识节点采用第二凭证用户的公钥对第二数字签名解密;
[0193] 若第二数字签名的解密结果和消费凭证信息的数据指纹相同,说明第二数字签名的验证结果为验证通过;
[0194] 若第二数字签名的解密结果和消费凭证信息的数据指纹不相同,说明第二数字签名的验证结果为验证不通过。
[0195] 需要说明的是,共识节点对第一数字签名和第二数字签名的验证顺序没有限定。
[0196] 步骤S403,当第一数字签名的验证结果和第二数字签名的验证结果均为验证通过时,共识节点将消费凭证信息添加至业务区块链。
[0197] 具体的,若第一数字签名的验证结果为验证通过,且第二数字签名的验证结果也为验证通过时,共识节点将消费凭证信息、第一凭证用户的公钥以及第二凭证用户的公钥
添加至区块体。共识节点计算消费凭证信息、第一凭证用户的公钥以及第二凭证用户的公
钥的默克尔根,获取当前业务区块链上最后一个业务区块的哈希散列值,将上述默克尔根、
最后一个业务区块的哈希散列值以及当前时间戳添加至区块头。将上述区块头和区块体组
合的业务区块,将业务区块添加至共识节点本地所维护的业务区块链,以及向其余的节点
发送这个业务区块,以使业务区块链的所有节点中所维护的业务区块链达到同步。
[0198] 其中,业务区块的哈希散列值=hash(业务区块的区块头数据)。
[0199] 若第一数字签名的验证结果为验证不通过,或者第二数字签名的验证结果为验证不通过,那么共识节点可以向签名节点验证失败的通知消息,签名节点可以将该通知消息
转发至签名客户端,以提示第一凭证用户和第二凭证用户需要重新签名。
[0200] 由于第一凭证用户的完整私钥既没有存储在签名客户端,也没有存储在签名节点,可以避免第一凭证用户的私钥被泄露的风险;同时,一个消费凭证信息对应两个签名,
相比一个签名,两个签名在保证消费凭证信息的隐私的前提下,可以提高消费凭证信息的
资产安全性;对第二凭证用户来说,将签名服务托管在公用的签名节点,可以降低第二凭证
用户的经济成本。
[0201] 进一步的,请参见图7,是本申请实施例提供的一种数字签名处理装置的结构示意图。如图7所示,数字签名处理装置1可以应用于上述图3‑图6对应实施例中的签名节点,具
体的,数字签名处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),
例如该数字签名处理装置1为一个应用软件;该数字签名处理装置1可以用于执行本申请实
施例提供的方法中的相应步骤。
[0202] 数字签名处理装置1可以包括:第一获取模块11、第二获取模块12、第一加密模块13以及第一发送模块14。
[0203] 第一获取模块11,用于获取针对第一凭证用户的消费凭证信息;
[0204] 第二获取模块12,用于获取消费凭证信息的第一数字签名;第一数字签名是数字签名处理装置采用第一凭证用户的第一协商私钥以及签名客户端采用第一凭证用户的第
二协商私钥对消费凭证信息进行协同签名得到;
[0205] 第一加密模块13,用于采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名;
[0206] 第一发送模块14,用于将消费凭证信息、第一数字签名和第二数字签名发送至共识节点,指示共识节点验证第一数字签名和第二数字签名,并使得共识节点在第一数字签
名和第二数字签名均验证通过后将消费凭证信息添加至业务区块链。
[0207] 第二获取模块12,具体用于接收签名客户端发送的第二协商参数,采用第一协商参数和第二协商参数对消费凭证信息进行签名,得到第一协商签名;第一协商参数是根据
第一协商私钥以及与第二协商私钥对应的第二公钥确定的;采用第一协商私钥对第一协商
签名加密,得到第二协商签名,将第二协商签名发送至签名客户端,指示签名客户端采用第
二协商私钥对第二协商签名进行签名,得到第三协商签名,接收签名客户端发送的第三协
商签名,根据第一协商签名和第三协商签名,生成第四协商签名,将第一协商签名和第四协
商签名组合为第一数字签名。
[0208] 第一发送模块14,具体用于获取第一凭证用户的公钥,以及获取第二凭证用户的公钥,将第一凭证用户的公钥、第二凭证用户的公钥、消费凭证信息、第一数字签名和第二
数字签名封装为广播消息,并将广播消息发送至共识节点。
[0209] 第一加密模块13,具体用于获取消费凭证信息的数据指纹,采用与第一凭证用户具有关联关系的第二凭证用户的私钥对数据指纹加密,得到第二数字签名。
[0210] 其中,第一获取模块11、第二获取模块12、第一加密模块13以及第一发送模块14的具体功能实现方式可以参见上述图4对应实施例中的步骤S201‑步骤S203,这里不再进行赘
述。
[0211] 请参见图7,数字签名处理装置1可以包括:第一获取模块11、第二获取模块12、第一加密模块13以及第一发送模块14;还可以包括:第一调用模块15
[0212] 第一调用模块15,用于响应于针对第一凭证用户的协商私钥生成请求,签名节点调用随机数生成器,生成第一协商私钥,接收签名客户端发送的第二公钥;第二公钥是签名
客户端为响应协商私钥生成请求调用随机数生成器生成的第二协商私钥对应的公钥,根据
第一协商私钥和第二公钥,生成第一凭证用户的公钥。
[0213] 其中,第一调用模块15的具体功能实现方式可以参见上述图4对应实施例中的步骤S203,这里不再进行赘述。
[0214] 进一步的,请参见图8,是本申请实施例提供的一种数字签名处理装置的结构示意图。如图8所示,数字签名处理装置2可以是上述图3‑图6对应实施例中的签名客户端;该数
字签名处理装置2可以用于执行本申请实施例提供的方法中的相应步骤。
[0215] 数字签名处理装置2可以包括:第二发送模块21、第一接收模块22以及第二加密模块23。
[0216] 第二发送模块21,用于获取针对第一凭证用户的消费凭证信息,将消费凭证信息发送至签名节点;
[0217] 第一接收模块22,用于接收签名节点发送的第二协商签名;第二协商签名是签名节点采用第一凭证用户的第一协商私钥对消费凭证信息进行签名得到;
[0218] 第二加密模块23,用于采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名,将第三协商签名发送至签名节点,指示签名节点根据第三协商签名
生成消费凭证信息的第一数字签名,以及采用与第一凭证用户具有关联关系的第二凭证用
户的私钥对消费凭证信息进行签名,得到消费凭证信息的第二数字签名。
[0219] 其中,第二发送模块21、第一接收模块22以及第二加密模块23的具体功能实现方式可以参见上述图5对应实施例中的步骤S301‑步骤S303,这里不再进行赘述。
[0220] 请参见图8,数字签名处理装置2可以包括:第二发送模块21、第一接收模块22以及第二加密模块23;还可以包括:第二调用模块24。
[0221] 第二调用模块24,用于响应于针对第一凭证用户的协商私钥生成请求,调用随机数生成器,生成第二协商私钥,获取与第二协商私钥对应的第二公钥,将第二公钥发送至签
名节点,指示签名节点根据第二公钥以及第一协商私钥生成第一凭证用户的公钥。
[0222] 其中,第二调用模块24的具体功能实现方式可以参见上述图5对应实施例中的步骤S303,这里不再进行赘述。
[0223] 进一步的,请参见图9,是本申请实施例提供的一种数字签名处理装置的结构示意图。如图9所示,数字签名处理装置3可以应用于上述图3‑图6对应实施例中的共识节点,具
体的,数字签名处理装置3可以是运行于计算机设备中的一个计算机程序(包括程序代码),
例如该数字签名处理装置3为一个应用软件;该数字签名处理装置3可以用于执行本申请实
施例提供的方法中的相应步骤。
[0224] 数字签名处理装置3可以包括:第二接收模块31、验证模块32以及添加模块33。
[0225] 第二接收模块31,用于接收签名节点发送的广播消息;广播消息包括针对第一凭证用户的消费凭证信息、第一凭证用户的第一数字签名以及与第一凭证用户具有关联关系
的第二凭证用户的第二数字签名;第一数字签名是签名节点采用第一凭证用户的第一协商
私钥以及签名客户端采用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得
到;
[0226] 验证模块32,用于对第一数字签名以及第二数字签名进行验证;
[0227] 添加模块33,用于当第一数字签名的验证结果和第二数字签名的验证结果均为验证通过时,将消费凭证信息添加至业务区块链。
[0228] 广播消息还包括第一凭证用户的公钥以及第二凭证用户的公钥;
[0229] 验证模块32,具体用于根据消费凭证信息和第一凭证用户的公钥,对第一数字签名进行验证,得到第一数字签名的验证结果,根据消费凭证信息和第二凭证用户的公钥,对
第二数字签名进行验证,得到第二数字签名的验证结果。
[0230] 添加模块33,具体用于将消费凭证信息、第一凭证用户的公钥以及第二凭证用户的公钥添加至业务区块,将业务区块添加至业务区块链。
[0231] 其中,第二接收模块31、验证模块32以及添加模块33的具体功能实现方式可以参见上述图6对应实施例中的步骤S401‑步骤S403,这里不再进行赘述。
[0232] 进一步地,请参见图10,是本申请实施例提供的一种计算机设备的结构示意图。上述图3‑图6对应实施例中的签名节点可以为计算机设备1000,如图10所示,计算机设备1000
可以包括:用户接口1002、处理器1004、编码器1006以及存储器1008。信号接收器1016用于
经由蜂窝接口1010、WIFI接口1012、...、或NFC接口1014接收或者发送数据。编码器1006将
接收到的数据编码为计算机处理的数据格式。存储器1008中存储有计算机程序,处理器
1004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。存储器1008可包括易
失性存储器(例如,动态随机存取存储器DRAM),还可以包括非易失性存储器(例如,一次性
可编程只读存储器OTPROM)。在一些实例中,存储器1008可进一步包括相对于处理器1004远
程设置的存储器,这些远程存储器可以通过网络连接至计算机设备1000。用户接口1002可
以包括:键盘1018和显示器1020。
[0233] 在图10所示的计算机设备1000中,处理器1004可以用于调用存储器1008中存储计算机程序,以实现:
[0234] 获取针对第一凭证用户的消费凭证信息,以及获取消费凭证信息的第一数字签名;第一数字签名是计算机设备1000采用第一凭证用户的第一协商私钥以及签名客户端采
用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到;
[0235] 采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消费凭证信息进行签名,得到第二数字签名;
[0236] 将消费凭证信息、第一数字签名和第二数字签名发送至共识节点,指示共识节点验证第一数字签名和第二数字签名,并使得共识节点在第一数字签名和第二数字签名均验
证通过后将消费凭证信息添加至业务区块链。
[0237] 应当理解,本申请实施例中所描述的计算机设备1000可执行前文图4所对应实施例中对数字签名处理方法的描述,也可执行前文图7所对应实施例中对数字签名处理装置1
的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0238] 此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的数字签名处理装置1所执行的计算机程序,且计算机程序包
括程序指令,当处理器执行程序指令时,能够执行前文图4所对应实施例中对数字签名处理
方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进
行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请
方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上执行,或者在位于
一个地点的多个计算机设备上执行,又或者,分布在多个地点且通过通信网络互联的多个
计算机设备上执行,分布在多个地点且通过通信网络互联的多个计算机设备可以组合为区
块链网络。
[0239] 进一步地,请参见图11,是本申请实施例提供的一种计算机设备的结构示意图。上述图3‑图6对应实施例中的签名客户端所在的终端设备可以为计算机设备2000,如图11所
示,计算机设备2000可以包括:用户接口2002、处理器2004、编码器2006以及存储器2008。信
号接收器2016用于经由蜂窝接口2010、WIFI接口2012、...、或NFC接口2014接收或者发送数
据。编码器2006将接收到的数据编码为计算机处理的数据格式。存储器2008中存储有计算
机程序,处理器2004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。存储
器2008可包括易失性存储器(例如,动态随机存取存储器DRAM),还可以包括非易失性存储
器(例如,一次性可编程只读存储器OTPROM)。在一些实例中,存储器2008可进一步包括相对
于处理器2004远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备2000。
用户接口2002可以包括:键盘2018和显示器2020。
[0240] 在图11所示的计算机设备2000中,处理器2004可以用于调用存储器2008中存储计算机程序,以实现:
[0241] 获取针对第一凭证用户的消费凭证信息,将消费凭证信息发送至签名节点;
[0242] 接收签名节点发送的第二协商签名;第二协商签名是签名节点采用第一凭证用户的第一协商私钥对消费凭证信息进行签名得到;
[0243] 采用第一凭证用户的第二协商私钥对第二协商签名进行签名,得到第三协商签名;
[0244] 将第三协商签名发送至签名节点,指示签名节点根据第三协商签名生成消费凭证信息的第一数字签名,以及采用与第一凭证用户具有关联关系的第二凭证用户的私钥对消
费凭证信息进行签名,得到消费凭证信息的第二数字签名。
[0245] 应当理解,本申请实施例中所描述的计算机设备2000可执行前文图5所对应实施例中对数字签名处理方法的描述,也可执行前文图8所对应实施例中对数字签名处理装置2
的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0246] 此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的数字签名处理装置2所执行的计算机程序,且计算机程序包
括程序指令,当处理器执行程序指令时,能够执行前文图5所对应实施例中对数字签名处理
方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进
行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请
方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上执行,或者在位于
一个地点的多个计算机设备上执行,又或者,分布在多个地点且通过通信网络互联的多个
计算机设备上执行,分布在多个地点且通过通信网络互联的多个计算机设备可以组合为区
块链网络。
[0247] 进一步地,请参见图12,是本申请实施例提供的一种计算机设备的结构示意图。上述图3‑图6对应实施例中的共识节点可以为计算机设备3000,如图12所示,计算机设备3000
可以包括:用户接口3002、处理器3004、编码器3006以及存储器3008。信号接收器3016用于
经由蜂窝接口3010、WIFI接口3012、...、或NFC接口3014接收或者发送数据。编码器3006将
接收到的数据编码为计算机处理的数据格式。存储器3008中存储有计算机程序,处理器
3004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。存储器3008可包括易
失性存储器(例如,动态随机存取存储器DRAM),还可以包括非易失性存储器(例如,一次性
可编程只读存储器OTPROM)。在一些实例中,存储器3008可进一步包括相对于处理器3004远
程设置的存储器,这些远程存储器可以通过网络连接至计算机设备3000。用户接口3002可
以包括:键盘3018和显示器3030。
[0248] 在图12所示的计算机设备3000中,处理器3004可以用于调用存储器3008中存储计算机程序,以实现:
[0249] 接收签名节点发送的广播消息;广播消息包括针对第一凭证用户的消费凭证信息、第一凭证用户的第一数字签名以及与第一凭证用户具有关联关系的第二凭证用户的第
二数字签名;第一数字签名是签名节点采用第一凭证用户的第一协商私钥以及签名客户端
采用第一凭证用户的第二协商私钥对消费凭证信息进行协同签名得到;
[0250] 对第一数字签名以及第二数字签名进行验证;
[0251] 当第一数字签名的验证结果和第二数字签名的验证结果均为验证通过时,将消费凭证信息添加至业务区块链。
[0252] 应当理解,本申请实施例中所描述的计算机设备3000可执行前文图6所对应实施例中对数字签名处理方法的描述,也可执行前文图9所对应实施例中对数字签名处理装置3
的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0253] 此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的数字签名处理装置3所执行的计算机程序,且计算机程序包
括程序指令,当处理器执行程序指令时,能够执行前文图6所对应实施例中对数字签名处理
方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进
行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请
方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上执行,或者在位于
一个地点的多个计算机设备上执行,又或者,分布在多个地点且通过通信网络互联的多个
计算机设备上执行,分布在多个地点且通过通信网络互联的多个计算机设备可以组合为区
块链网络。
[0254] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述程序可存储于一计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述存储介质可为磁碟、
光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access 
Memory,RAM)等。
[0255] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。