基于区块链的信息处理方法和装置
文献发布时间:2023-06-19 11:16:08
技术领域
本公开涉及金融技术领域和其他技术领域,特别是涉及一种基于区块链的信息处理方法和装置,一种电子设备、一种计算机可读存储介质和一种计算机程序产品。
背景技术
传统的区块链系统利用认证中心(CA)为合法用户颁发数字证书,用户访问交易数据前,需要提供数字证书进行身份核验,以保证数据分享的安全性和机密性。该方案类似于以认证中心(CA)作为第三方公证人进行的身份认证。
在实现本公开发明构思的过程中,发明人发现:在传统的区块链系统中,当认证中心(CA)出现系统故障或因网络攻击受到破坏时,数据访问将受到影响,甚至会增加机要信息泄露的风险。
发明内容
本公开的第一方面提供了一种基于区块链的信息处理方法,包括:获取交易数据的存储地址,其中,所述交易数据由多个交易方参与完成;对所述存储地址进行加密,以获得涉及所述交易数据的密文;针对所述多个交易方中每个交易方,获取关联的标识信息;利用获取的关联标识信息,对所述密文进行签名,以获得涉及所述交易数据的签名;基于所述获取的关联标识信息、所述签名和所述密文,生成交易数据报文;以及将所述交易数据报文广播至区块链中。
可选地,所述利用获取的关联标识信息,对所述密文进行签名,包括通过以下公式得到签名数据:S
可选地,所述函数f包括:hash散列函数。
可选地,r包括交易方的用户名和/或用户地址。
可选地,所述交易数据报文包括:安全参数字段,用于表征所述交易数据报文的安全性。
可选地,所述关联标识信息包括与用户名和节点名同时关联的标识信息,其中,所述用户名包括交易方的用户名,所述节点名包括所述交易方所使用的区块链节点的名称。
本公开的第二方面提供了另一种基于区块链的信息处理方法,包括:获取交易数据,其中,所述交易数据由多个交易方参与完成;对所述交易数据进行加密,以获得交易数据密文;针对所述多个交易方中每个交易方,获取关联的标识信息;利用获取的关联标识信息,对所述交易数据密文进行签名,以获得交易数据签名;基于所述获取的关联标识信息、所述交易数据签名和所述交易数据密文,生成交易数据报文;以及将所述交易数据报文广播至区块链中。
本公开的第三方面提供了另一种基于区块链的信息处理方法,包括:从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成;基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的存储地址的密文和针对所述密文的实际签名;基于获取的关联标识信息和所述密文,对所述签名进行验签;响应于表征验签通过,对所述密文进行解密,以获得所述存储地址的明文;以及基于所述存储地址的明文,对所述交易数据进行访问。
可选地,基于获取的关联标识信息和所述密文,对所述签名进行验签,包括:基于所述获取的关联标识信息和所述密文,获取针对所述密文的预期签名;比较所述预期签名与所述实际签名是否一致;以及响应于所述预期签名与所述实际签名一致,表征验签通过。
本公开的第四方面提供了另一种基于区块链的信息处理方法,包括:从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成;基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的密文和针对所述密文的实际签名;基于获取的关联标识信息和所述密文,对所述签名进行验签;以及响应于表征验签通过,对所述密文进行解密,以获得所述交易数据的明文并进行访问。
本公开的第五方面提供了一种基于区块链的信息处理装置,包括:第一获取模块,用于获取交易数据的存储地址,其中,所述交易数据由多个交易方参与完成;第一加密模块,用于对所述存储地址进行加密,以获得涉及所述交易数据的密文;第二获取模块,用于针对所述多个交易方中每个交易方,获取关联的标识信息;第一签名模块,用于利用获取的关联标识信息,对所述密文进行签名,以获得涉及所述交易数据的签名;第一生成模块,用于基于所述获取的关联标识信息、所述签名和所述密文,生成交易数据报文;以及第一广播模块,用于将所述交易数据报文广播至区块链中。
本公开的第六方面提供了一种基于区块链的信息处理装置,包括:第三获取模块,用于获取交易数据,其中,所述交易数据由多个交易方参与完成;第二加密模块,用于对所述交易数据进行加密,以获得交易数据密文;第四获取模块,用于针对所述多个交易方中每个交易方,获取关联的标识信息;第二签名模块,用于利用获取的关联标识信息,对所述交易数据密文进行签名,以获得交易数据签名;第二生成模块,用于基于所述获取的关联标识信息、所述交易数据签名和所述交易数据密文,生成交易数据报文;以及第二广播模块,用于将所述交易数据报文广播至区块链中。
本公开的第七方面提供了一种基于区块链的信息处理装置,包括:第五获取模块,用于从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成;第六获取模块,用于基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的存储地址的密文和针对所述密文的实际签名;第一验签模块,用于基于获取的关联标识信息和所述密文,对所述签名进行验签;第一解密模块,用于响应于表征验签通过,对所述密文进行解密,以获得所述存储地址的明文;以及第一访问模块,用于基于所述存储地址的明文,对所述交易数据进行访问。
本公开的第八方面提供了一种基于区块链的信息处理装置,包括:第七获取模块,用于从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成;第八获取模块,用于基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的密文和针对所述密文的实际签名;第二验签模块,用于基于获取的关联标识信息和所述密文,对所述签名进行验签;第二解密模块,用于响应于表征验签通过,对所述密文进行解密,以获得所述交易数据的明文;以及第二访问模块,用于对所述交易数据的明文进行访问。
本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本公开实施例所述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现本公开实施例所述的方法。
本公开的另一方面提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本公开实施例所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的适于基于区块链的数据处理方法和装置的系统架构;
图2示意性示出了根据本公开实施例的基于区块链的数据处理方法的流程图;
图3示意性示出了根据本公开实施例的多主体签名的区块链数据分享原理的示意图;
图4示意性示出了根据本公开实施例的交易数据报文格式的示意图;
图5示意性示出了根据本公开实施例的区块链共识节点的示意图;
图6示意性示出了根据本公开另一实施例的基于区块链的数据处理方法的流程图;
图7示意性示出了根据本公开实施例的多主体签名的区块链数据传输系统的加密流程图;
图8示意性示出了根据本公开实施例的基于区块链的数据访问方法的流程图;
图9示意性示出了根据本公开另一实施例的基于区块链的数据访问方法的流程图;
图10示意性示出了根据本公开实施例的多主体签名的区块链数据传输系统的解密流程图;
图11示意性示出了根据本公开实施例的多主体签名的区块链数据传输系统的数据处理流程图;
图12示意性示出了根据本公开实施例的基于区块链的数据处理装置的框图;
图13示意性示出了根据本公开另一实施例的基于区块链的数据处理装置的框图;
图14示意性示出了根据本公开实施例的基于区块链的数据访问装置的框图;
图15示意性示出了根据本公开另一实施例的基于区块链的数据访问装置的框图;以及
图16示意性示出了根据本公开实施例的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
应该理解,区块链技术是一种去中心化的共识记账技术,该技术采用群体共识的方法保证交易的一致性。群体共识是一种采用多节点共同记账和表决的机制。具体地说,区块链网络由若干共识记账节点构成,每个记账节点都存储有全量账本数据并自主表决,最终汇集形成群体决策,故少数节点对全量账本的恶意修改,并不能影响群体表决的结果,这就决定了区块链系统具有不可篡改、安全可靠的特性。
区块链网络可以具有多个参与方及其参与记帐的共识节点,所产生的交易数据存储在每个共识记账节点中,用户可通过调用智能合约进行数据访问。由于交易数据具有机密性、隐私性和敏感性等特点,因而并不适合向所有访问者公开。例如,私人物品交易、专属信息分享、资产转移等,涉及多个相对封闭的授权主体(即多个交易方),因此需要多个交易方对访问者的身份进行验证和授权,以确保合法用户能够安全访问机要信息。
在实现本公开发明构思的过程中,发明人发现:在传统的区块链系统中,当认证中心(CA)出现系统故障或因网络攻击受到破坏时,数据访问将受到影响,甚至会增加机要信息泄露的风险。
鉴于此,本公开实施例提供了一种改进型的基于区块链的数据处理方案。在该方案中,摒弃了传统的区块链系统利用认证中心为合法用户颁发数字证书并且用户访问交易数据需要提供数字证书进行身份核验的方案,而是采用多主体群体签名的数据共享和访问方法。该方法更适合应用于去中心化的分布式环境,与以往的方法比,该方法无需第三方公证人参与,就能够实现主体群体签名的交易信息的密文验证,可以提高交易信息的可信度。
具体地,本公开的实施例提供了一种基于区块链的数据处理方法以及能够应用该方法的基于区块链的数据处理装置。该方法包括:获取交易数据的存储地址,其中,交易数据由多个交易方参与完成;对存储地址进行加密,以获得涉及交易数据的密文;针对多个交易方中每个交易方,获取关联的标识信息;利用获取的关联标识信息,对密文进行签名,以获得涉及交易数据的签名;基于获取的关联标识信息、签名和密文,生成交易数据报文;以及将交易数据报文广播至区块链中。
图1示意性示出了根据本公开实施例的适于基于区块链的数据处理方法和装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,该区块系统100包括:区块链基础设施云101、区块链共识记账节点102(简称共识记账节点)和区块链授权中心103(简称授权中心)。应该理解,在区块链中,不同交易参与人(即不同交易方)可以基于不同共识记账节点参与交易并记录交易数据。
区块链基础设施云101负责根据用户的组网资源请求,提供分配网络资源、计算资源和存储资源,以及创建区块链组网等服务,支持根据用户的区块链产品标准,选择区块链产品镜像,配置虚拟节点资源,创建区块链网络。
在区块链基础设施云101中,共识记账节点102为虚拟计算节点,是区块链网络的基本组成部分。区块链网络具有若干个区块链共识记账节点。共识记账节点102主要负责区块链交易接入和处理,提供智能合约执行、交易共识和交易记账;同时也为交易数据提供数据加密、解密、身份验证等安全服务。
交易方即执行区块链共识交易的参与方用户。本公开实施例中,如图1所示,交易方A、B、C、D、E可以透过不同区块链共识记账节点接入区块链网络,在区块链网络执行智能合约进行交易,产生交易数据,拥有对交易数据进行加密、授权及信息分享等权限,可作为交易数据发送方,将交易信息传递和分享给接收方。
区块链授权中心103可以提供安全加密算法及公共参数。
需要说明的是,本公开实施例提供的基于区块链的数据处理方法,采用多主体(即多个交易方)身份签名的区块链数据传输方法,数据发送者可以由多个主体构成,他们对交易数据的真实性及访问对象的可靠性进行负责。首先,多主体(假设为A,A={A
需要说明的是,在本公开实施例中,可以为区块链网络中的每个区块节点用户配置唯一的全局标识GID。GID可以形式化表示为:
GID={id|id={0,1}
应该理解,GID是区块链节点及用户在区块链网络中的身份ID,它可以通过区块链网络同步到每个共识记账节点上,并存储在区块中。区块链网络提供智能合约,为访问者提供查询服务。
图2示意性示出了根据本公开实施例的基于区块链的数据处理方法的流程图。
如图2所示,该方法可以包括操作S210~S260。
在操作S210,获取交易数据的存储地址。
其中,该交易数据是由多个交易方参与完成的。
在操作S220,对存储地址进行加密,以获得涉及交易数据的密文。
在操作S230,针对多个交易方中每个交易方,获取关联的标识信息。
在操作S240,利用获取的关联标识信息,对密文进行签名,以获得涉及交易数据的签名。
在操作S250,基于获取的关联标识信息、签名和密文,生成交易数据报文。
在操作S260,将交易数据报文广播至区块链中。
在本公开的一个实施例中,可以仅对交易数据的存储地址进行加密,而不是直接对交易数据本身进行加密,由此在数据共享时可以仅在区块链中共享加密后的存储地址,不无需共享加密后的交易数据,因而可以节约区块链的存储资源。
在本公开实施例中,每个交易方可以使用其在区块链中的全局标识GID作为关联标识信息,对交易数据的存储地址的密文进行签名。
在本公开实施例中,在完成数据加密和数据签名后,可以基于得到的密文、签名与完成交易数据的所有交易方的关联标识信息,生成交易数据报文,并广播至区块链中,以便接受者能够正常访问。
需要说明的是,在本公开实施例中,上述密文、签名和关联标识信息在交易数据报文中可以分别作为单独的字段。并且,交易数据报文中除了包括上述字段外,还可以包括但不限于安全参数字段和校验标识字段等。其中,接受者在访问交易数据时可以基于交易数据报文中的关联标识信息字段进行数据验签,并且可以基于安全参数字段对报文的合法性进行校验,并且可以基于校验标识字段对交易数据的完整性进行校验。
通过本公开实施例,在区块链网络中,采用通过多个交易方群体决策实现签名(即多主体进行签名),可以避免因采用区块链CA进行验签或者采用其他第三方平台进行验签而数据泄露的风险较高,同时避免影响数据访问。
需要说明的是,在本公开实施例中,在操作S220,可以采用接收方的公钥对将交易数据的存储地址进行加密。
示例性的,交易数据提供者A可以将交易数据存储在访问地址Waddr中。然后,通过相应的共识记账节点执行Encrypt(Waddr,kd(B)),用交易数据接收者B的公钥加密访问地址Waddr,产生密文C;接着,再通过执行Sign(C,Gid(B)),用交易数据接收者B的GID对C进行签名,产生签名信息S(简称签名S);最后,通过共识记账节点将C和S打包成交易数据报文,向区块链网络广播。
具体地,加密算法Encrypt(Waddr,kd(B))的模型元素定义为:
κ={(n,p,q,a,b):ab≡1(modφ(n))}
定义Encrypt函数为:
其中,W
作为一种可选的实施例,利用获取的关联标识信息,对密文进行签名,可以包括通过以下公式得到签名数据:
S
其中,公式(1)中,C表示所涉及的交易数据的密文,Gid
gcd(e,φ(n))=1;
t通过以下公式获得:
t=r
其中,r为用户随机挑选的整数,例如可以是用户名。
需要说明的是,在本公开实施例中,p和q可以是两个大素数,e也可以是大素数。
作为一种可选的实施例,上述公式中的函数f可以包括:hash散列函数。由此可以防止不同用户间的GID出现乘法关系攻击。比如,如果两个交易方的用户名均为“小明”,通过本公开实施例,可以避免这两个交易方间的GID出现乘法关系攻击。
作为一种可选的实施例,上述公式中的r可以包括交易方的用户名和/或用户地址。
作为一种可选的实施例,上述交易数据报文可以包括:安全参数字段,用于表征交易数据报文的安全性。
应该理解,在区块链网络中,可以通过事先设定的安全参数字段来验证报文是否是被允许在区块链网络中合法传播的报文。
作为一种可选的实施例,上述关联标识信息可以包括与用户名和节点名同时关联的标识信息。其中,用户名可以包括交易方的用户名,节点名可以包括交易方所使用的区块链节点的名称。
图3示意性示出了根据本公开实施例的多主体签名的区块链数据分享原理的示意图。
如图3所示,交易数据发送者A可以包括交易参与人301、302和303(交易参与人又称交易方),交易数据接收者B可以包括接收者304、305和306中的至少之一。区块链网络307包括共识记账节点VP0至VP5。交易参与人301、302和303依次通过共识记账节点VP0至VP2接入区块链网络307;接收者304、305和306依次通过共识记账节点VP3至VP5接入区块链网络307。
交易数据发送者A可以将交易数据存储在访问地址Waddr中。然后,通过相应的共识记账节点执行Encrypt(Waddr,kd(B)),用交易数据接收者B的公钥加密访问地址Waddr,产生密文C;接着,再通过执行Sign(C,Gid(B)),用交易数据接收者B的GID对C进行签名,产生签名信息S(简称签名S);最后,通过共识记账节点将C和S打包成交易数据报文,向区块链网络广播。
示例性的,可以引入RSA加密算法作为身份签名算法的基础,输入安全参数1
S
其中,公式(1)中,C表示交易数据M的存储地址的密文,Gid
gcd(e,φ(n))=1 公式(2)
t可以通过以下公式获得:
t=r
其中,r为用户随机挑选的整数,例如可以是用户名。
完成交易数据的多个交易方A
g
根据欧拉扩展定理,在已知n和e的情况下,g较容易计算得出。
此外,在本公开实施例中,可以使用加密函数Encrypt(Waddr,kd(B))对交易数据的存储地址进行加密,实现基于存储地址的加密操作,生成对应的密文C。具体地,加密算法Encrypt(Waddr,kd(B))的模型元素定义为:
κ={(n,p,q,a,b):ab≡1(modφ(n))}
定义Encrypt函数为:
其中,W
此外,在本公开实施例中,可以使用签名函数Sign(C,Gid
t=r
将上式代入公式(1),则身份加密算法变成为公式(3):
s
根据公式(2),即e与φ(n)互质,公式(3)可进一步约简为公式(4):
S≡g.r
其中,函数f为单向函数,本公开实施例函数f采用hash散列函数,其作用是可以防止不同用户GID间的“乘法关系攻击”(multiplicative relationship between theidentities)。
此外,在本公开实施例中,可以用P
P
其中,GID
交易数据接收者B,即区块链共识交易数据的访问者,同时也是交易数据提供者A传递交易数据的目标用户。交易数据接收者B可以通过共识记账节点VP3获取交易数据报文。获取到交易数据报文后,首先,可以执行签名验证函数ChkSign(S),验证交易数据发送者A的签名;然后,如果签名验证通过,则执行解密函数Decrypt(C),将交易数据的存储地址的密文C转换为对应的明文;接着,执行身份认证函数ChkIdent(C),校验交易数据接收者B是否具有交易数据访问权限;最后,响应于通过访问权限校验,可以通过数据地址获取交易数据M。
需要说明的是,在本公开实施例中,签名验证函数ChkSign(S)可以如公式(1)所示。该函数用于检查S是否为被访问的交易数据所涉及的所有交易方的数字身份签名,验证方法为从交易数据报文中解析出所有交易方的GID,并将其代入如下公式(即公式(1)):
S
其中,公式(1)中,C表示交易数据M的存储地址的密文,Gid
gcd(e,φ(n))=1 公式(2)
t可以通过以下公式获得:
t=r
其中,r为用户随机挑选的整数,例如可以是用户名。
应该理解,在本公开实施例中,通过签名验证函数ChkSign(S)计算得到的S如果与通过解析交易数据报文中包含的签名字段得到的S一致,则表示签名正确,则签名验证通过。否则,签名验证不通过。
具体地,在验签过程中,交易数据的多个交易方A
g
根据欧拉扩展定理,在已知n和e的情况下,g较容易计算得出。
用户随机挑选整数r∈Z并计算:
t=r
将上式代入公式(1),则签名验证算法变成为公式(3):
s
根据公式(2),e与φ(n)互质,公式(3)可进一步约简为公式(4):
S≡g.r
此外,在本公开实施例中,可以通过解密函数Decrypt(C)对密文C进行解密,生成交易数据的存储地址的明文Waddr,定义为:
其中,C∈Z
共识记账节点22:为区块链网络的共识记账节点,存储交易世界状态,身份加密数据报文信息,接收交易发送者、交易接收者的指令,提供数据信息路由、信息收发等服务。
在本公开实施例中,交易参与人是执行区块链共识交易的交易方。交易参与人301可以通过区块链网络向交易参与人302传递交易数据,交易参与人在区块链网络执行智能合约交易,产生交易数据,拥有对交易数据进行加密、授权及信息分享等权限,可作为交易数据发送者,将交易数据传递和分享给交易数据接收者。
区块链网络307是采用共识记账技术构建的去中心化网络,区块链网络由共识/记账节点、认证节点等构成,该技术采用群体共识的方法保证交易的一致性,账本数据保存在共识记账节点,交易数据具有去中心化、不可篡改、安全可靠等特性。
如图5所示,在一个实施例中,区块链共识节点可以包括:主控单元501、初始化单元502、数据处理单元503、交易数据收发端504。
主控单元501负责数据传递以及各处理单元的总体调用。
初始化单元502用于执行GlobalSetup()算法来初始化变量,输入随机安全参数λ,输出全局安全参数params,即:
GlobalSetup(λ)→Params
数据处理单元503负责执行Encrypt()算法对交易方提供的交易数据的存储地址进行加密,执行Decrypt()算法对交易数据的存储地址进行解密,执行Sign()算法对交易数据的存储地址的密文进行签名,执行ChkSign()实现签名验证。同时,还能接收身份授权申请及身份授权。数据处理单元503可以包括交易数据加密模块5031、身份信息签名模块5032、交易数据解密模块5033、身份权限验证模块5034和身份授权模块5035。各模块介绍如下。
交易数据加密模块5031负责对交易数据的存储地址进行属性加密。执行Encrypt()算法进行数据加密,实现基于存储地址的RSA加密操作。加密算法的模型元素定义为:
κ={(n,p,q,a,b):ab≡1(modφ(n))}
定义Encrypt函数为:
其中,W
身份信息签名模块5032用于对交易数据的存储地址的密文进行身份签名,用户可以随机挑选整数r∈Z,并计算:
t=r
将上式代入公式(1),则签名算法变成为公式(4):
s≡g.r
函数f为单向函数,本公开实施例中函数f可以采用hash散列函数。
交易数据解密模块5033用于实现基于存储地址的RSA解密操作。定义解密算法Decrypt()为:
其中,C∈Z
身份权限验证模块5034用于检查上述签名是否为所有交易方的数字身份签名,验证方法为将所有交易方的身份GID代入如下公式(公式1):
S
其中,公式(1)中,C表示所涉及的交易数据的密文,Gid
gcd(e,φ(n))=1;
t通过以下公式获得:
t=r
其中,r∈Z,且r为用户随机挑选的整数,例如可以是用户名。
将上式t=r
s
e与φ(n)互质,公式(3)可进一步约简为以下公式(4):
S≡g.r
身份授权模块5035用于对交易数据接收者B的数据访问请求进行授权。
交易数据收发端504用于接收交易数据请求方提交的交易数据请求报文,向交易数据请求方发送交易数据的相关信息。
本公开实施例还提供了另一种基于区块链的数据处理方法。
图6示意性示出了根据本公开另一实施例的基于区块链的数据处理方法的流程图。
如图6所示,该方法可以包括操作S610~S660。
在操作S610,获取交易数据。
其中,交易数据由多个交易方参与完成。
在操作S620,对交易数据进行加密,以获得交易数据密文。
在操作S630,针对多个交易方中每个交易方,获取关联的标识信息。
在操作S640,利用获取的关联标识信息,对交易数据密文进行签名,以获得交易数据签名。
在操作S650,基于获取的关联标识信息、交易数据签名和交易数据密文,生成交易数据报文。
在操作S660,将交易数据报文广播至区块链中。
在本公开的一个实施例中,可以直接对交易数据本身进行加密,而不是对交易数据的存储地址进行加密,由此在数据共享时可以在区块链中共享加密后的交易数据,而不是共享加密后的交易数据的存储地址,因而可以可能会浪费区块链的存储资源。
在本公开实施例中,每个交易方可以使用其在区块链中的全局标识GID作为关联标识信息,对交易数据的密文进行签名。
在本公开实施例中,在完成数据加密和数据签名后,可以基于得到的密文、签名与完成交易数据的所有交易方的关联标识信息,生成交易数据报文,并广播至区块链中,以便接受者能够正常访问。
需要说明的是,在本公开实施例中,上述密文、签名和关联标识信息在交易数据报文中可以分别作为单独的字段。并且,交易数据报文中除了包括上述字段外,还可以包括但不限于安全参数字段和校验标识字段等。其中,接受者在访问交易数据时可以基于交易数据报文中的关联标识信息字段进行数据验签,并且可以基于安全参数字段对报文的合法性进行校验,并且可以基于校验标识字段对交易数据的完整性进行校验。
通过本公开实施例,在区块链网络中,采用通过多个交易方群体决策实现签名(即多主体进行签名),可以避免因采用区块链CA进行验签或者采用其他第三方平台进行验签而数据泄露的风险较高,同时避免影响数据访问。
如图7所示,该加密流程可以包括如下操作。
在操作S710,区块链网络中的授权中心(CA)启动初始化程序GlobalSetup(),执行GlobalSetup()算法用于初始化变量,输入随机安全参数λ,输出全局安全参数params,即:
GlobalSetup(λ)→Params
其中,λ表示随机安全参数,params表示全局安全参数。Params可以通过区块链网络分享到其它共识记账节点,以便用于生成合法的报文。
在操作S720,交易数据发送者A将交易数据M存储在地址Waddr,然后对Waddr执行加密函数Encrypt(Waddr),执行过程中引入交易数据接收者B的公钥kd
κ={(n,p,q,a,b):ab≡1(mod φ(n))}
定义Encrypt函数为:
其中,W
在操作S730,交易数据发送者A
交易数据的多个主体(多个交易方)A
g
用户可以随机挑选整数r∈Z,并计算:
t=r
将上式代入公式(1),则签名算法变成为下公式(3):
s
进一步约简为下式即公式(4):
S≡g.r
其中,函数f为单向函数,本公开实施例中函数f采用hash散列函数。
在操作S740,区块链共识节点执行交易智能合约,打包产生交易数据报文P
假设P
P
其中,GID
本公开实施例还提供了一种基于区块链的数据访问方法。
图8示意性示出了根据本公开实施例的基于区块链的数据防问方法的流程图。
如图8所示,该方法可以包括操作S810~S860。
在操作S810,从区块链中获取交易数据报文。
其中,交易数据报文涉及的交易数据由多个交易方参与完成。
在操作S820,基于交易数据报文,获取多个交易方中每个交易方的关联标识信息、交易数据的存储地址的密文和针对密文的实际签名。
在操作S830,基于获取的关联标识信息和密文,对签名进行验签。
在操作S840,响应于表征验签通过,对密文进行解密,以获得存储地址的明文。
在操作S850,基于存储地址的明文,对交易数据进行访问。
进一步,作为一个可选的实施例,基于获取的关联标识信息和密文,对签名进行验签,包括如下操作。
基于获取的关联标识信息和密文,获取针对密文的预期签名。
比较预期签名与实际签名是否一致。
响应于预期签名与实际签名一致,表征验签通过。
在本公开实施例中,由于每个交易方可以使用其在区块链中的全局标识GID作为关联标识信息,对交易数据的存储地址的密文进行签名。因而,在本公开实施例中,也可以使用所涉交易数据的所有交易方的全局标识GID对交易数据报文中包含的签名进行验签。具体地,可以从获取的交易数据报文中解析出所有GID,并将其代入上述的公式(1),获得对应的预期签名,然后从该交易数据报文中解析出对应的实际签名,并将其与前述的预期签名进行比对。如果两者一致,则表示签名验签通过;如果两者不一致,则表示签名验签不通过。
在本公开实施例中,在完成数据验签后,可以进行数据解密,从而得到交易数据的存储地址的明文,通过访问该地址明文可以访问到该交易数据。
需要说明的是,在本公开实施例中,交易数据报文可以包括密文字段、签名字段和关联标识信息字段,因而解析该交易数据报文可以获取对应的密文、签名和关联标识信息,这些数据可以作为签名验签和解密的基础数据。
具体地,在本公开实施例中,在解密和验签部分,首先可以解包交易数据报文,以获取签名和交易数据的存储地址的密文;然后用多交易方身份进行验签,检查签名是否正确;接着采用交易数据接收者的私钥解密上述地址的密文,从而获得交易数据的访问地址;最后交易数据接收者通过访问该地址,可以获得交易数据的明文。
通过本公开实施例,不仅可以解决多个授权主体的签名验证问题,而且可以对所有交易方的签名实现批量验签。
本公开实施例还提供了另一种基于区块链的数据访问方法。
图9示意性示出了根据本公开实施例的基于区块链的数据访问方法的流程图。
如图9所示,该方法可以包括操作S910~S940。
在操作S910,从区块链中获取交易数据报文,其中,交易数据报文涉及的交易数据由多个交易方参与完成。
在操作S920,基于交易数据报文,获取多个交易方中每个交易方的关联标识信息、交易数据的密文和针对密文的实际签名。
在操作S930,基于获取的关联标识信息和密文,对签名进行验签。
在操作S940,响应于表征验签通过,对密文进行解密,以获得交易数据的明文并进行访问。
需要说明的是,在本公开实施例中,针对签名采用验签方法与图8所示的数据访问方法中针对签名采用验签方法相同,本公开实施例在此不再赘述。
如图10所示,该解密流程包括如下操作。
在操作S1010,交易数据接收者B可以调用智能合约,获取交易数据报文P
在操作S1020,根据针对交易数据的存储地址的密文C的签名S,结合多主体身份GID,即Gid(A1),…Gid(An),执行签名验签算法ChkSign(),验证交易数据报文P
S
其中,公式(1)中,C表示所涉及的交易数据的密文,Gid
gcd(e,φ(n))=1;
t通过以下公式获得:
t=r
其中,r为用户随机挑选的整数,例如可以是用户名。
交易数据的多个交易方A
g
将上式t=r
s
e与φ(n)互质,公式(3)可进一步约简为以下公式(即公式(4)):
S≡g.r
在操作S1030,如果签名验证通过,即签名合法,则交易数据接收者B可以通过共识验证节点执行解密算法Decrypt(),结合(p,q,b)等安全参数,产生交易数据的访问地址Waddr,并返回给交易数据接收者B,最终实现交易数据的访问。
可以定义解密算法Decrypt()为:
其中,C∈Z
如图11所示,该基于区块链的数据传输和访问方可以包括如下操作。
步骤S1110,交易数据发送者A将交易数据存储在存储地址Waddr,并用交易数据接收者B的公钥对该地址Waddr进行加密,生成对应的密文C;然后用多主体的身份GID,即Gid(A1),…Gid(An),对密文C进行签名,产生签名S。
步骤S1120,将签名S和密文C及安全参数以及多主体的身份GID打包成报文P
步骤S1130,共识记账节点执行智能合约,将报文P
步骤S1140,交易数据接收者B从区块链共识记账节点接收报文P
步骤S1150,读取chksum,检查报文数据完整性是否正常,若发现异常,则退出本处理流程,否则继续执行下一步操作。
步骤S1160,从报文P
步骤S1170,执行Decrypt(C)函数,用交易数据接收者B的私钥对密文C解密,解密过程中若发生异常,则退出本处理流程,否则继续执行下一步操作。
步骤S1180,对密文C解密后,生成地址明文Waddr,可供交易数据接收者B进行交易数据访问。
图12示意性示出了根据本公开实施例的基于区块链的数据处理装置的框图。
如图12所示,装置1200包括第一获取模块1201、第一加密模块1202、第二获取模块1203、第一签名模块1204、第一生成模块1205和第一广播模块1206。该装置可以执行上面参考图2所示方法以及其变形实施方式对应的方法,在此不再赘述。
第一获取模块1201,用于获取交易数据的存储地址,其中,所述交易数据由多个交易方参与完成。
第一加密模块1202,用于对所述存储地址进行加密,以获得涉及所述交易数据的密文。
第二获取模块1203,用于针对所述多个交易方中每个交易方,获取关联的标识信息。
第一签名模块1204,用于利用获取的关联标识信息,对所述密文进行签名,以获得涉及所述交易数据的签名。
第一生成模块1205,用于基于所述获取的关联标识信息、所述签名和所述密文,生成交易数据报文。
第一广播模块1206,用于将所述交易数据报文广播至区块链中。
图13示意性示出了根据本公开另一实施例的基于区块链的数据处理装置的框图。
如图13所示,装置1300包括第三获取模块1301、第二加密模块1302、第四获取模块1303、第二签名模块1304、第二生成模块1305和第二广播模块1306。该装置可以执行上面参考图6所示方法以及其变形实施方式对应的方法,在此不再赘述。
第三获取模块1301,用于获取交易数据,其中,交易数据由多个交易方参与完成。
第二加密模块1302,用于对交易数据进行加密,以获得交易数据密文。
第四获取模块1303,用于针对多个交易方中每个交易方,获取关联的标识信息。
第二签名模块1304,用于利用获取的关联标识信息,对交易数据密文进行签名,以获得交易数据签名。
第二生成模块1305,用于基于获取的关联标识信息、交易数据签名和交易数据密文,生成交易数据报文。
第二广播模块1306,用于将交易数据报文广播至区块链中。
图14示意性示出了根据本公开实施例的基于区块链的数据访问装置的框图。
如图14所示,装置1400包括第五获取模块1401、第六获取模块1402、第一验签模块1403、第一解密模块1404和第一访问模块1405。该装置可以执行上面参考图8所示方法以及其变形实施方式对应的方法,在此不再赘述。
第五获取模块1401,用于从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成。
第六获取模块1402,用于基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的存储地址的密文和针对所述密文的实际签名。
第一验签模块1403,用于基于获取的关联标识信息和所述密文,对所述签名进行验签。
第一解密模块1404,用于响应于表征验签通过,对所述密文进行解密,以获得所述存储地址的明文。
第一访问模块1405,用于基于所述存储地址的明文,对所述交易数据进行访问。
图15示意性示出了根据本公开另一实施例的基于区块链的数据访问装置的框图。
如图15所示,装置1500包括第七获取模块1501、第八获取模块1502、第二验签模块1503、第二解密模块1504和第二访问模块1505。该装置可以执行上面参考图9所示方法以及其变形实施方式对应的方法,在此不再赘述。
第七获取模块1501,用于从区块链中获取交易数据报文,其中,所述交易数据报文涉及的交易数据由多个交易方参与完成。
第八获取模块1502,用于基于所述交易数据报文,获取所述多个交易方中每个交易方的关联标识信息、所述交易数据的密文和针对所述密文的实际签名。
第二验签模块1503,用于基于获取的关联标识信息和所述密文,对所述签名进行验签。
第二解密模块1504,用于响应于表征验签通过,对所述密文进行解密,以获得所述交易数据的明文。
第二访问模块1505,用于对所述交易数据的明文进行访问。
需要说明的是,装置部分的实施例方式与方法部分的实施例方式对应类似,并且所达到的技术效果也对应类似,在此不再赘述。
根据本公开的实施例的模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块1201、第一加密模块1202、第二获取模块1203、第一签名模块1204、第一生成模块1205和第一广播模块1206中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块1201、第一加密模块1202、第二获取模块1203、第一签名模块1204、第一生成模块1205和第一广播模块1206中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块1201、第一加密模块1202、第二获取模块1203、第一签名模块1204、第一生成模块1205和第一广播模块1206中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图16示意性示出了根据本公开实施例的电子设备的框图。图16示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图16所示,电子设备1600包括处理器1610、计算机可读存储介质1620。该电子设备1600可以执行根据本公开实施例的方法。
具体地,处理器1610例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1610还可以包括用于缓存用途的板载存储器。处理器1610可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质1620,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;等等。
计算机可读存储介质1620可以包括计算机程序1621,该计算机程序1621可以包括代码/计算机可执行指令,其在由处理器1610执行时使得处理器1610执行根据本公开实施例的方法或其任何变形。
计算机程序1621可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1621中的代码可以包括一个或多个程序模块,例如包括1621A、模块1621B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1610执行时,使得处理器1610可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,第一确定模块501、第二确定模块502、第一比对模块503和部署模块504中的至少一个可以实现为参考图16描述的计算机程序模块,其在被处理器1610执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
- 基于区块链通信的支付信息处理方法及区块链信息平台
- 一种基于区块链的信息处理方法、装置及区块链网络