CN118101206A - 数据处理方法、装置、设备和计算机可读存储介质 - Google Patents

数据处理方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN118101206A
CN118101206A CN202211492979.XA CN202211492979A CN118101206A CN 118101206 A CN118101206 A CN 118101206A CN 202211492979 A CN202211492979 A CN 202211492979A CN 118101206 A CN118101206 A CN 118101206A
Authority
CN
China
Prior art keywords
contract
data
target
result
block data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211492979.XA
Other languages
English (en)
Inventor
刘汉卿
王宗友
时一防
朱耿良
廖志勇
刘区城
黄杨峻
聂凯轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211492979.XA priority Critical patent/CN118101206A/zh
Publication of CN118101206A publication Critical patent/CN118101206A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请公开了一种数据处理方法、装置、设备和计算机可读存储介质,属于计算机技术领域。通过从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提高数据处理的安全性。

Description

数据处理方法、装置、设备和计算机可读存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种数据处理方法、装置、设备和计算机可读存储介质。
背景技术
区块链是由节点参与的分布式数据库***,其由一个个区块组成,每个区块中保存一定的信息,并按照时间顺序连接而成;而联盟链属于具有准入机制的区块链,其一般包含共识节点、见证节点和其他节点。其中,见证节点可从共识节点中同步区块数据,以对区块数据进行验证,并向用户提供查询接口,以满足用户对相应业务数据的查询需求。
在对现有技术的研究和实践过程中,本申请的发明人发现,见证节点在验证区块数据的同时,该区块数据一般是对外公开的,任何人都可以读取到联盟链中所有的交易数据,这使得节点中交易数据的隐私性较差,导致出现信息安全问题,降低了用户的体验。
发明内容
本申请实施例提供一种数据处理方法、装置、设备和计算机可读存储介质,可保护区块数据的隐私性,避免信息泄露的现象,提升了数据处理的安全性,提高了用户的体验。
本申请实施例提供一种数据处理方法,包括:
从共识节点中获取加密区块数据,并将所述加密区块数据输入可信执行空间,所述可信执行空间为保护区块数据的私密性的运行空间;
在所述可信执行空间中对所述加密区块数据进行解密,得到目标区块数据,所述目标区块数据包括合约摘要信息和合约数据;
执行所述合约数据,得到合约执行结果;
当根据所述合约执行结果对所述合约摘要信息的验证通过时,对所述合约执行结果进行加密,得到执行结果密文;
接收待校验合约结果,并根据所述执行结果密文对所述待校验合约结果进行检验。
相应的,本申请实施例提供一种数据处理装置,包括:
获取单元,用于从共识节点中获取加密区块数据,并将所述加密区块数据输入可信执行空间,所述可信执行空间为保护区块数据的私密性的运行空间;
解密单元,用于在所述可信执行空间中对所述加密区块数据进行解密,得到目标区块数据,所述目标区块数据包括合约摘要信息和合约数据;
执行单元,用于执行所述合约数据,得到合约执行结果;
加密单元,用于当根据所述合约执行结果对所述合约摘要信息的验证通过时,对所述合约执行结果进行加密,得到执行结果密文;
检验单元,用于接收待校验合约结果,并根据所述执行结果密文对所述待校验合约结果进行检验。
在一些实施方式中,所述执行单元,还用于:
基于所述封闭空间中的数据状态更新机制,查询所述合约数据对应的合约运行逻辑;
根据所述合约运行逻辑执行所述合约数据,得到合约执行结果。
在一些实施方式中,所述目标区块数据包含多个合约数据,所述合约摘要信息包括待验证状态树和待验证根哈希,所述数据处理装置包括验证单元,用于:
获取每个合约数据关联的状态更新地址和合约执行结果,根据所述状态更新地址和合约执行结果构建对应的状态数据结构,得到所述目标区块数据对应的目标状态树;
确定每个合约数据对应的目标哈希,并按照递归算法对相邻的所述目标哈希进行哈希计算,得到所述目标区块数据对应的目标根哈希;
当所述目标状态树对所述待验证状态树的验证通过,且当所述目标根哈希对所述待验证根哈希的验证通过,则确定根据所述合约执行结果对所述合约摘要信息的验证通过。
在一些实施方式中,所述解密单元,还用于:
查询所述共识节点存储在所述可信执行空间中的共识私钥;
根据所述共识私钥对所述加密区块数据进行解密,得到目标区块数据。
在一些实施方式中,所述加密区块数据包含对称密钥密文和区块数据密文,所述解密单元,还用于:
根据所述共识私钥对所述对称密钥密文进行解密,得到对称密钥;
根据所述对称密钥对所述区块数据密文进行解密,得到目标区块数据。
在一些实施方式中,所述数据处理装置还包括密钥处理单元,用于:
响应共识节点指向可信执行空间的私钥存储请求,在所述可信执行空间中随机生成目标私钥,并根据远程认证机制构建所述目标私钥对应的认证响应公钥;
将所述认证响应公钥发送给所述共识节点进行远程认证,使得所述共识节点在远程认证通过后反馈共识私钥密文和共识随机公钥至所述可信执行空间;
联合所述共识随机公钥和目标私钥对所述共识私钥密文进行解密,并存储解密得到的共识私钥。
在一些实施方式中,所述密钥处理单元,还用于:
根据椭圆曲线加密算法选取公钥基值,并将所述公钥基值和所述目标私钥之间的乘积确定为目标公钥;
则所述密钥处理单元,还用于基于远程认证机制,在所述可信执行空间中生成所述目标公钥对应的认证响应公钥。
在一些实施方式中,所述加密单元,还用于:
在所述可信执行空间中随机生成状态密钥;
根据所述状态密钥对所述合约执行结果进行加密,得到执行结果密文。
在一些实施方式中,所述数据处理装置还包括存储单元,用于:
确定所述合约数据对应的目标哈希;
根据所述状态密钥对所述目标哈希进行加密,得到所述执行结果密文关联的目标加密哈希;
将所述执行结果密文和目标加密哈希存储至所述可信执行空间之外的存储空间。
在一些实施方式中,所述检验单元,还用于:
确定所述待校验合约结果关联的待校验哈希;
根据所述状态密钥分别对所述待校验哈希和待校验合约结果进行加密,得到待校验加密哈希和待校验结果密文;
从所述存储空间中查询与所述待校验加密哈希匹配的目标加密哈希,并将与所述目标加密哈希关联的执行结果密文传输至所述可信执行空间;
根据所述可信执行空间中的执行结果密文对所述待校验结果密文进行校验。
在一些实施方式中,所述数据处理装置还包括数据检验单元,用于:
确定所述合约数据关联的数字签名信息和目标哈希;
当检测到对所述数字签名信息校验通过时,根据所述目标哈希确定所述合约数据的执行状态;
则所述执行单元,还用于当识别到所述执行状态为未执行时,在所述可信执行空间执行所述合约数据,得到合约执行结果;
当识别到所述执行状态为已执行时,根据所述目标哈希查询对应的已执行结果,并将所述已执行结果确定为所述合约数据在所述可信执行空间中的合约执行结果。
此外,本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序实现本申请实施例提供的任一种数据处理方法中的步骤。
此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。
此外,本申请实施例还提供一种计算机程序产品,包括计算机指令,所述计算机指被执行时实现本申请实施例所提供的任一种数据处理方法中的步骤。
本申请实施例可以从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。由此可得,本方案首先将加密的区块数据输入可信执行空间进行数据处理,以在可信执行空间对加密区块数据进行解密,然后,在可信执行空间中执行解密得到的合约数据,以实现在数据封闭环境中去重新计算合约结果,并根据合约执行结果对合约摘要信息进行验证,以确定合约摘要信息的真实性,最后,在验证通过后,将验证通过的合约执行结果进行加密,以便通过结果密文的校验方式对请求校验的合约结果进行校验;以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提升了数据处理的安全性,保护用户的信息,提高了用户的体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据处理***的场景示意图;
图2是本申请实施例提供的数据处理方法的步骤流程示意图;
图3是本申请实施例提供的状态树的结构示意图;
图4是本申请实施例提供的哈希树的结构示意图;
图5是本申请实施例提供的数据处理方法的另一步骤流程示意图;
图6是本申请实施例提供的数据处理方法对应的联盟链的结构示意图;
图7是本申请实施例提供的数据处理方法的场景示意图;
图8是本申请实施例提供的共识节点的共识私钥存储方法的时序流程图;
图9是本申请实施例提供的待校验合约结果的检验方法的时序流程图;
图10是本申请实施例提供的数据处理装置的结构示意图;
图11是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种数据处理方法、装置、设备和计算机可读存储介质。具体地,本申请实施例将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是用户终端等设备。其中,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,用户终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电、车载终端、智能语音交互设备、飞行器等,但并不局限于此。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息、用户使用记录、用户状况等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本申请实施例提供的数据处理方法可应用于各种数据处理的场景,这些场景不限于通过云服务、区块链或结合等方式实现,具体通过如下实施例进行说明:
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营管理等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营管理模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
在本申请中,该区块链在架构上可至少包括共识节点和见证节点,而客户端可以分别共识节点与见证节点之间进行数据交互。其中,该共识节点用于对上链的数据(如执行某合约的数据及状态)达成共识以实现账本状态的更新,并将上链凭证返给客户端。其中,该见证节点可以理解为部署的一个或多个权威的第三方节点,其可同步全部/部分的区块数据,并对同步的区块数据进行验证,以增加共识节点管理的区块数据的可信度。其中,客户端可用于请求执行数据上链,如智能合约数据的上链,以及,可向见证节点请求校验数据是否上链成功以及上链的结果是否正确等。
参见图1,为本申请实施例提供的数据处理***的场景示意图。该数据处理***可应用于区块链上的区块数据处理的应用场景,如可应用于区块数据验证、区块上的智能合约的状态验证等相关数据处理过程的应用场景;其中,该数据处理***可包括共识节点的服务器、见证节点的服务器和包含客户端的终端。
具体的,该见证节点的服务器用于从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文。此外,见证节点的服务器还用于接收终端上的服务器发送的待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。
其中,数据处理过程可以包括:将共识节点的加密区块数据输入可信执行空间、对加密区块数据进行解密、执行合约数据、加密执行合约结果、根据执行结果密文检验待校验合约结果等步骤。
示例性的,以资源转移事件的智能合约的数据处理场景为例,用户通过客户端请求执行资源转移事件,使得客户端向共识节点请求上链合约的相关数据;共识节点会针对资源转移事件执行的合约数据和状态进行共识达成,在达成共识以后,共识节点会将资源转移事件的待校验哈希和待校验合约结果返回给客户端。进而,为了以提高资源转移事件的区块数据和状态的可信度,具有权威的见证节点的服务器可从共识节点同步区块数据进行验证。需要说明的是,为了保护资源转移事件的区块数据的隐私性,共识节点可通过相关密钥对区块数据进行加密,并在数据同步过程中,将加密后的加密区块数据同步给见证节点的服务器。进而,见证节点的服务器在从共识节点获取到加密区块数据后,将该加密区块数据输入可信执行空间进行处理,具体的,在可信执行空间中对加密区块数据进行解密,得到目标区块数据,其中,区块头数据包含合约摘要信息,区块体数据包含合约数据,通过执行合约数据,以计算对应的合约执行结果,进而,根据合约执行结果对合约摘要信息进行验证,以在验证通过时将合约执行结果进行加密处理,以将加密处理得到的执行结果密文存储至见证节点的可信执行空间外的存储空间,可避免可信执行空间外的见证节点其他区域获取到区块数据,提高数据的隐私性。进而,当客户端向见证节点请求对待校验合约结果的检验时,通过查找对应的执行结果密文,并根据查找到的执行结果密文对待校验合约结果进行检验。
以下分别进行详细说明。需说明的是,以下实施例的顺序不作为对实施例优选顺序的限定。
在本申请实施例中,将从数据处理装置的角度进行描述,以该数据处理装置具体可以集成在计算机设备如服务器中。参见图2,图2为本申请实施例提供的一种数据处理方法的步骤流程示意图,本申请实施例以数据处理装置具体集成在服务器上为例,服务器上的处理器执行数据处理方法对应的程序指令时,具体流程如下:
101、从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间。
在本申请实施例中,该区块链可以是具有准入机制的联盟链,其在架构上至少包括共识节点和见证节点。该共识节点可以执行链上的任一个智能合约,并在多个共识节点之间对合约执行结果达成共识,而见证节点则可对共识节点间达成共识的区块数据进行验证,以增加共识节点的区块数据的可信度。
其中,智能合约,属于计算机化的协议。其中,在执行某个合约的条款时,可以通过执行部署在共享账本上的代码实现,在某些场合下,这些代码可以具有相应的执行条件。在实际应用中,可通过执行实际的业务需求代码来完成自动化的状态更新事件,如资源转移事件为例,可查询买家所购买商品的物流状态,在买家签收货物后将买家的支付资源转移到商户的地址;当然,智能合约不仅限于执行用于资源转移的合约,还可以执行对接收的信息进行处理的合约。
其中,该共识节点可以理解为联盟链中的记账节点,联盟链上可具有多个共识节点,链上的任一个智能合约都需要所有共识节点执行,若执行结果一致,则共识节点之间可以达成共识。
其中,该见证节点可以理解为部署在联盟链中具有权威验证的第三方节点,其可从共识节点上同步区块数据并进行验证,并提供数据查询接口,以供客户端基于数据查询接口对上链凭证(如哈希、合约结果等)进行检验。需要说明的是,见证节点的执行主体为本申请实施例中的服务器,用于执行数据处理方法,以对区块数据进行可信度的验证和响应客户端的结果检验请求。
本申请实施例中,由于见证节点所处理的数据对外开放,为了提高区块数据的隐私性,可在区块数据传输至见证节点之前,共识节点可基于协定的密钥对区块数据进行加密,得到加密区块数据,并在见证节点的特定区域内处理加密区块数据,以实现在对达成共识的区块数据进行验证的同时,确保区块数据的隐私性,使得链上数据同时满足可信度和隐私性。
需要说明的是,为了确保见证节点在验证区块数据过程中的数据隐私性,本申请实施例针对该见证节点设定了可信运行空间(即上述的特定区域),该可信执行空间为区块数据的封闭式的运行空间,即属于一个封闭性的运行环境空间,该可信执行空间可保护区块数据和相关数据的机密性,不对本空间之外的任意环境和节点直接公开区块数据和相关处理结果;此外,该可信执行空间在与任意的外部环境和节点进行交互时,是通过密文方式来对数据进行交互,例如,以确定需要处理的区块数据和处理结果为例,需要处理的区块数据和处理结果进行加密保护,具体可以是通过开发方的硬件密钥对区块数据和处理结果进行加密保护,以便将密文形式的数据存储至外部环境中。
其中,该可信执行空间为通过软硬件方法在服务器处理器(CPU)中构建了一个安全区域,其可保护该区域内加载的程序和数据的机密性和完整性。因此,该见证节点可在硬件资源和软件资源规划上包括两个执行环境空间,具体为可信的执行环境空间和不可信的开放运行空间(普通的运行空间),开放运行空间与可信执行空间属于同一见证节点下的分区管理,且开放运行空间无法从可信执行空间中直接读取未加密的区块数据和进程内存,具有可靠性。
其中,该加密区块数据可以是在共识节点上完成加密的区块数据。具体的,为了确保区块数据的隐私性,避免见证节点的不可信的开放运行空间泄露区块数据的隐私,共识节点可通过密钥对区块数据进行加密,再将加密区块数据传输至见证节点。
为了便于理解,将对保护区块数据隐私性的实施过程进行介绍,其可包含两部分,分别为(A)和(B),具体如下:
(A)基于共识节点与见证节点中可信执行空间之间协定的共识私钥对区块数据进行解密,以保护区块数据在传输至可信执行空间之前的数据隐私性。
具体的,为了确保来自共识节点的区块数据在传输过程中的隐私性,避免由于区块数据在传输过程中被拦截而导致区块数据泄漏,共识节点可以通过密钥来对需要传输的区块数据进行加密,以使得后续可信执行空间需要处理该加密区块数据时再解密使用。由于区块数据在处理过程的隐私性是由见证节点中的可信执行空间保护,因此,共识节点需要与可信执行空间之间协定用于解密的共识私钥,并将共识节点的共识私钥存储在见证节点的可信执行空间中,具体可以存储在可信执行空间中的密钥管理模块内,以用于后续可信执行空间在处理加密区块数据之前利用共识私钥进行解密。
需要说明的是,见证节点的可信执行空间可以在任意时间段响应共识节点的密钥存储请求,以完成可信执行空间与共识节点之间关于共识私钥的协定。例如,可在见证节点的可信执行空间接收加密区块数据之前进行协定,或者,在可信执行空间接收加密区块数据时进行协定。
在一些实施方式中,可在加密区块数据传输之前完成共识节点与可信执行空间之间的共识私钥的存储协定。则步骤“从共识节点中获取加密区块数据”之前,可以包括:
(101.1)响应共识节点指向可信执行空间的私钥存储请求,在可信执行空间中随机生成目标私钥,并根据远程认证机制构建目标私钥对应的认证响应公钥。
其中,该目标私钥可以是可信执行空间对应的私钥,该目标私钥可由见证节点中的可信执行空间随机生成,属于有限值域中的随机标量,具有私密性(即不直接提供给可信执行空间之外的任意运行环境),可用于协助保护共识私钥的传输,以确保共识私钥在传输至见证节点的可信执行空间中的隐蔽性。例如,可结合目标私钥对共识私钥进行加密,以便将加密的共识私钥传输至可信执行空间进行解密后存储。
其中,该远程认证机制可以是针对可信执行空间生成的密钥的认证机制,用于对可信执行空间生成的密钥(如目标公钥或目标私钥)进行认证。具体的,该可信执行空间可以根据目标私钥来生成远程认证响应的信息,即认证响应公钥,以便后续基于远程认证机制来对可信执行空间生成的认证响应公钥进行远程认证。需要说明的是,该远程认证是指任意运行环境向可信执行空间的硬件服务平台发起关于密钥(如认证响应公钥)的远程认证,为了便于描述,本申请实施例将“可信执行空间的硬件服务平台”定义为“认证响应服务平台”,后续将引用此定义进行描述。
其中,该认证响应公钥可以是可信执行空间中根据目标私钥构建的认证响应信息,可以理解为可信执行空间的密钥的载体信息,在远程认证时可基于该认证响应公钥来判定密钥的真实性,具有密钥防伪认证的作用。可以理解的是,当该认证响应公钥由可信执行空间生成时,该认证响应公钥可在认证响应服务平台中认证成功,反之,当该认证响应公钥不是由见证节点中的可信执行空间生成,则该认证响应公钥可在认证响应服务平台中认证失败,视为伪造的“认证响应公钥”。
具体的,共识节点可向联盟链中的见证节点发起私钥存储请求,该共识节点的私钥的存储位置需要与后续区块数据的处理环境空间是一致,因此,当后续需要在见证节点的封闭环境空间中处理加密区块数据,则需要向见证节点中的可信执行空间发起私钥存储请求,以便后续实现将共识私钥存储至可信执行空间中,以避免共识私钥泄露至可信执行空间之外的其他运行环境。
进一步的,为了避免共识私钥泄露的现象,可信执行空间需要向共识节点提供目标私钥以及目标私钥相关的认证响应信息,以用于协助对共识节点的共识私钥进行加密,以便后续仅限于可信执行空间可获取到共识节点的共识私钥。其中,可信执行空间在生成认证响应信息时,需要涉及到可信执行空间的目标公钥,而该目标公钥可结合目标私钥来生成。
其中,在结合目标私钥来生成目标公钥时,可以先确定生成公钥的参数,并将该参数与目标私钥结合来生成可信执行空间的目标公钥。例如,则骤(101.1)中的“根据远程认证机制构建目标私钥对应的认证响应公钥”之前,可以包括:(101.1.a)根据椭圆曲线加密算法选取公钥基值,并将公钥基值和目标私钥之间的乘积确定为目标公钥;进而,构建目标公钥对应的认证响应公钥,具体为:(101.1.b)基于远程认证机制,在可信执行空间中生成目标公钥对应的认证响应公钥。
其中,椭圆曲线加密算法(Elliptic Curve Cryptography,ECC),是基于椭圆曲线数学理论实现的一种非对称加密算法,具有短密钥,高安全性的特性。具体的,该公钥基值为椭圆曲线上的一个基点值,通过在椭圆曲线上选取一个基点值与目标私钥进行相乘,得到目标私钥对应的目标公钥,从而构建得到一对非对称密钥(包含目标公钥和目标私钥),需要说明的是,由于在椭圆曲线上包含很多个基点,当随机选取一个基点确定基点值时,其所生成的目标公钥无法反向获取到目标私钥,基于此,有效避免目标私钥在可信执行空间之外的任意环境(包含共识节点的环境)中泄露。
此后,即可按照可信执行空间与对应的认证响应服务平台之间的远程认证机制,以目标公钥作为远程认证响应的挑战值或挑战参数,生成目标公钥对应的认证响应公钥,以便将该认证响应公钥发送给共识节点,使得共识节点后续向认证响应服务平台发起关于认证响应公钥的认证。
(101.2)将认证响应公钥发送给共识节点进行远程认证,使得共识节点在远程认证通过后反馈共识私钥密文和共识随机公钥至可信执行空间。
具体的,在得到认证响应公钥后,可信执行空间即可将认证响应公钥反馈给共识节点,具体可以非对称密钥对的形式进行反馈,如以目标公钥作为非对称密钥对中的公钥,以认证响应公钥作为非对称密钥对中的私钥。进而,使得共识节点向认证响应服务平台发起关于认证响应公钥的认证,以验证其中目标公钥为可信执行空间生成的真实性。可以理解的是,当认证响应公钥可在认证响应服务平台中远程认证通过,则表示认证响应公钥由可信执行空间生成;反之,当该认证响应公钥可在认证响应服务平台中远程认证失败,则表示该认证响应公钥不是由见证节点中的可信执行空间生成。
进一步的,当认证响应公钥可在认证响应服务平台中远程认证通过,共识节点已经确定该认证响应公钥和目标公钥是由可信执行空间生成的,可将共识私钥存储至交互的可信执行空间中。
其中,共识节点在发送共识私钥至可信执行空间时,可结合可信执行空间的目标公钥来对共识私钥进行加密,该加密过程具体如下:共识节点按照椭圆曲线加密算法生成共识节点的非对称密钥对,该共识节点的非对称密钥对包含共识随机私钥、共识随机私钥与椭圆曲线基点值生成的共识随机公钥。此时,可将共识随机私钥与可信执行空间的目标公钥结合(如相乘)来对共识节点的共识私钥进行加密,得到共识私钥密文,以对共识私钥进行加密保护,实现共识私钥的保密传输;进而,以共识随机公钥作为公钥,以共识私钥密文作为私钥,来构建用于传输共识私钥的非对称密钥对,并将用于传输共识私钥的非对称密钥对发送给见证节点的可信执行空间,以将加密的共识私钥发送给可信执行空间。以此,可保护共识私钥的隐私性,有效避免可信执行空间之外的其他运行环境获取到共识私钥,影响后续区块数据的安全性。
(101.3)联合共识随机公钥和目标私钥对共识私钥密文进行解密,并存储解密得到的共识私钥。
由于该共识私钥是由(可信执行空间的)目标公钥与(共识节点的)共识随机私钥之间的联合乘积进行加密保护,而随机私钥对应的共识随机公钥由共识节点根据椭圆曲线加密算法生成,具体为结合椭圆曲线上的基点与随机私钥之间的乘积得到。然而,目标公钥与共识随机公钥之间的基点值相同或相通,因此,可信执行空间在解密获取共识私钥时,可以将公共识随机公钥与自身的目标私钥联合(如相乘),以根据联合结果来对共识私钥密文进行解密,得到共识节点的共识私钥。进而,将共识私钥存储至可信执行空间内,以便后续用于对来自共识节点的加密区块数据进行解密,以协助保护区块数据的隐私性。
需要说明的是,由于共识私钥密文是联合共识节点的共识随机私钥和可信执行空间的目标公钥来对共识私钥加密得到,即便包含共识随机公钥和共识私钥密文的非对称密钥对被其他运行环境截获,由于缺少可信执行空间的目标私钥,其他运行环境也无法解密获取到共识私钥。因此,通过以上可加强对共识节点的共识私钥的保护作用,有效避免共识私钥泄露而影响后续区块数据的隐私安全。
此后,共识节点在将共识私钥存储至可信执行空间后,即可对需要同步至可信执行空间的区块数据进行加密保护,以在加密后将加密区块数据同步给见证节点中的可信执行空间。
其中,共识节点在对区块数据进行加密时,为了进一步提高区块数据的安全性,联合对称密钥和非对称密钥来对区块数据进行双重保护;需要说明的是,该双重保护的区块数据在数据结构上可以是数字信封的结构形式,具体可包括对称密钥密文和区块数据密文。具体的,联合对称密钥和非对称密钥对区块数据进行加密的过程为:共识节点随机生成一个对称密钥,并获取共识私钥对应的共识公钥,该共识公钥与共识私钥组成一个非对称密钥对的组合,进而,通过共识公钥将对称密钥进行加密,得到对称密钥密文,以及通过对称密钥对区块数据进行加密,得到区块数据密文,从而,根据对称密钥密文和区块数据密文构建成加密区块数据。
(B)通过见证节点中可信执行空间来处理加密区块数据,以确保区块数据的数据隐私性。
具体的,见证节点在从共识节点获取加密后的加密区块数据后,可将该加密区块数据输入可信执行空间,该可信执行空间为不对外开放的运行环境空间,使得加密区块数据在该封闭的运行环境中进行数据处理,确保区块数据的隐私性。
通过以上方式,可将共识私钥存储至可信执行空间中,并将从共识节点获取的加密区块数据输入可信执行空间中,以便后续可信执行空间中对加密区块数据进行处理,如解密、验证等。
102、在可信执行空间中对加密区块数据进行解密,得到目标区块数据。
在本申请实施例中,可信执行空间在获取到加密区块数据后,即可对加密区块数据进行解密,得到目标区块数据,以便后续基于解密得到的目标区块数据来验证执行合约后的结果和状态,从而,确定达成共识后的结果和状态的真实性,提高区块数据对应的合约结果的可信度。
在一些实施方式中,由于共识节点与见证节点中的可信执行空间之间已经协定了由于解密区块数据的共识私钥,而该共识私钥已经预先存储在可信执行空间中。则可信执行空间在对加密区块数据进行解密时,步骤102“对加密区块数据进行解密,得到目标区块数据”,可以包括:
(102.1)查询共识节点存储在可信执行空间中的共识私钥;
(102.2)根据共识私钥对加密区块数据进行解密,得到目标区块数据。
需要说明的是,假若在存储共识私钥时,将共识私钥与共识节点标识进行绑定后存储,则在查询共识私钥时,可以根据共识节点的标识来查询对应的共识私钥。
此后,在利用共识私钥对加密区块数据进行解密时,由于加密区块数据的结构不同,包含的数据不同,其解密过程也不同。当共识节点联合对称密钥和非对称密钥来对区块数据进行双重保护时,则加密区块数据在数据结构上包含对称密钥密文和区块数据密文,此时,在对加密区块数据进行解密时,步骤(102.2)可以包括:根据共识私钥对对称密钥密文进行解密,得到对称密钥;根据对称密钥对区块数据密文进行解密,得到目标区块数据。
例如,以数字信封的数据结构作为加密区块数据为例,加密区块数据表示为“Env(pk,msg)”,其中,该加密区块数据包括对称密钥密文和区块数据密文,可表示为“Env(pk,msg)={Enc(pk,key),Enc(key,msg)}”,其中,该Enc(pk,key表示共识节点利用共识随机密钥pk将对称密钥key加密得到的对称密钥密文,该Enc(key,msg)表示共识节点利用对称密钥将区块数据msg加密得到的区块数据密文。需要说明的是,结合前述可得,共识节点采用非对称密钥对(pk,sk)中的共识公钥pk来加密对称密钥key,则可信执行空间在对数字信封形式的加密区块数据进行解密时,可利用非对称密钥对中的共识私钥sk(存储在可信执行空间)来对加密区块数据中的对称密钥密文Enc(pk,key)进行解密,得到对称密钥key,进而,根据得到的对称密钥key对加密区块数据中的区块数据密文Enc(key,msg)进行解密,得到目标区块数据msg。
需要说明的是,在对加密区块数据进行解密后,得到的目标区块数据与共识节点中达成共识的区块数据一致。具体的,目标区块数据包括区块头数据和区块体数据;以智能合约的相关数据为例,该区块头数据可以是合约摘要信息,如合约摘要信息包含达成共识后的梅克尔树(merkle树,即哈希树)、状态树(如MPT树)和共识节点投票结果等数据,区块体数据可包含合约数据、目标哈希、合约发送者、数字签名信息等数据。
通过以上方式,可在可信执行空间对加密区块数据进行解密,得到目标区块数据,以便后续基于解密得到的目标区块数据来验证执行合约后的结果和状态,以确定达成共识后的结果和状态的真实性。
103、执行合约数据,得到合约执行结果。
在本申请实施例中,为了验证已达成共识的区块数据的结果和状态的真实性,可信执行空间需要对重新执行一遍区块数据,以便后续结合执行得到的合约执行结果来验证区块数据的结果和状态。
其中,该合约数据可以是联盟链中的智能合约的相关数据,其不限于包括合约的方法、内容等相关的数据,每一个合约数据表示一个需要更新状态的事件。例如,以资源转移事件为例,第一资源账户需要向第二资源账户执行资源转移事件,如第一资源账户向第二资源账户转移目标数量的资源,在资源转移事件执行完毕后,第一资源账户和第二资源账户中的资源数量会发生变化,且该目标数量的资源的存储位置也更新,因此,资源转移事件属于需要更新状态的事件,而合约数据可以包含目标数量、资源转移突途径、履行资源转移的条件等用于执行资源转移事件的数据。
其中,该合约执行结果可以是可信执行空间在执行合约数据后的状态结果,具体为可信执行空间按照共识节点上的相同逻辑来重新执行一次合约数据,得到的合约执行结果,其可理解为可信执行空间按照共识节点的合约逻辑重新计算一次合数数据对应的合约结果。
需要说明的是,每一合约数据在可信执行空间执行后都会产生合约执行结果,该合约执行结果经过处理后会存储至相应的存储空间,此后,将该合约数据在可信执行空间中的执行状态记录为已执行状态。而对于相同的合约数据,在可信执行空间中执行后得到的合约执行结果是一致的,为了避免可信执行空间重复执行合约数据,可在执行合约数据之前,查询当前待执行的合约数据在可信执行空间的执行状态。此外,在查询当前待执行的合约数据在可信执行空间的执行状态之前,还可先对验证当前共识节点是否可信,如,通过对目标区块数据中数字签名信息进行验证。
综上,步骤103“执行合约数据,得到合约执行结果”之前,还可包括:
(103.a.1)确定合约数据关联的数字签名信息和目标哈希;
(103.a.2)当检测到对数字签名信息校验通过时,根据目标哈希确定合约数据的执行状态。
其中,该数据签名信息可以是合约发起者的签名信息。例如,以资源转移事件为例,第一资源账户向第二资源账户发起资源转移的请求,可根据资源转移的目标数量、转移途径(可视为第二资源账户的资源存储地址)、履行资源转移的条件等信息来建立合约,即得到合约数据,第一资源账户可以理解为合约发起者,而在合约执行前或执行后,合约发起者可对合约或执行结果进行数字签名,以通过数字签名信息来表示确认该合约。因此,每一合约数据具有关联的数字签名信息。
在对数字签名信息进行校验时,可信执行空间可以获取合约发起者的公钥,并根据合约发起者的公钥对合约数据关联的数字签名信息进行校验,当对数字签名信息的校验通过时,确定合约并未被篡改,说明同步加密区块数据至当前可信执行空间的共识节点是可信的,后续可执行合约数据。反之,当对数字签名信息的校验不同通过时,表示当前的共识节点是不可信的,则取消对该合约数据的执行。
进一步的,当对数字签名信息的校验通过时,由于可信执行空间需要执行该合约数据,因此,为了避免重复执行相同的合约数据,可先根据目标哈希来确定该合约数据在可信执行空间中的执行状态,以确定可信执行空间在过去的时间内是否已经执行了合约数据。例如,可以通过目标哈希去相应的存储空间查询是否包含对应的已执行结果,当查询到目标哈希对应的已执行结果,则表示该合约数据在过去时间内已经在可信执行空间中执行完毕,即该合约数据的执行状态为已执行;反之,当未查询到目标哈希对应的已执行结果,则表示该合约数据在过去时间内并未在可信执行空间中执行,即该合约数据的执行状态为未执行。
此后,一方面,当识别到合约数据的执行状态为已执行时,步骤103可以包括:根据目标哈希查询对应的已执行结果,并将已执行结果确定为合约数据在可信执行空间中的合约执行结果。以此,以避免可信执行空间重复执行相同的合约数据,节省可信执行空间的运行资源,具有可靠性。
另一方面,当识别到合约数据的执行状态为未执行时,步骤103可以包括:在可信执行空间执行合约数据,得到合约执行结果。
具体的,可信执行空间在执行合约数据时,其可以理解为数据状态更新的过程,每一合约数据可具有对应的合约执行逻辑,具体是根据对应的逻辑来执行合约数据。则在执行合约数据时,步骤103可以包括:
(103.1)基于封闭空间中的数据状态更新机制,查询合约数据对应的合约运行逻辑;
(103.2)根据合约运行逻辑执行合约数据,得到合约执行结果。
其中,该数据状态更新机制可以理解为针对合约数据对应的事件的状态更新机制。具体的,通过执行合约数据,会产生新的结果和状态,使得合约数据的事件的状态发生更新,可以理解的是,而针对不同类型的合约数据,数据状态更新机制可对应不同的合约运行逻辑。
示例性的,以资源转移事件为例,第一资源账户需要向第二资源账户进行资源转移,区块头数据包含表示在执行资源转移事件后的结果和状态的合约摘要信息,区块体数据至少包括资源转移事件的合约数据。可以理解的是,联盟链中各节点之间可具备相同的运行逻辑,并预先存储至联盟链中的各个节点,即见证节点上具有与共识节点相同的合约运行逻辑,以便执行同一合约数据辑。因此,可信执行空间可以根据数据状态更新机制,查找该合约数据在共识节点上执行时的合约运行逻辑,并根据预存储的合约运行逻辑来执行合约数据,得到在可信执行空间中生成的合约执行结果。
通过以上方式,可以在见证节点上的可信执行空间中重新执行一次共识节点同步过来的合约数据,得到合约执行结果,以便后续结合执行得到的合约执行结果来验证共识节点上的区块数据的结果和状态,以提高共识节点上的区块数据的可信度。
为了对共识节点上达成共识的区块数据中的合约结果和状态进行验证,本申请实施例的可信执行空间在执行合约数据后,可联合其他数据和合约执行结果来对区块数据中的合约摘要信息进行验证。
需要说明的是,该合约摘要信息可以表示区块体中多个合约数据被执行后的结果和状态。具体的,每一区块数据可包含多个合约数据包,即每一合约数据包对应一个状态更新事件,每一合约数据包不限于包括目标哈希、合约数据、合约发送者、数字签名信息等数据。例如,每一目标区块数据所包含的数据可表示如下:
【表1】
由上表1可得,每一目标区块数据可包含多个状态更新事件的相关数据,该合约摘要信息可表示整个目标区块中多个状态更新事件被执行后的整体结果和状态。因此,本申请实施例在对达成共识的区块数据的结果和状态进行验证时,可以联合多个合约执行结果和相关区块数据来对合约摘要信息中进行验证。
在一些实施方式中,为了提高对共识节点的区块数据的验证力度,可信执行空间可对合约摘要信息包含的多个信息进行验证。例如,合约摘要信息包括待验证状态树和待验证根哈希,则可信执行空间在执行合约数据后,即可对待验证状态树和待验证根哈希进行验证。具体验证过程如下:
(103.b.1)获取每个合约数据关联的状态更新地址和合约执行结果,根据状态更新地址和合约执行结果构建对应的状态数据结构,得到目标区块数据对应的目标状态树。
其中,该待验证状态树为共识节点根据多个执行结果构建得到的状态树,该状态树经过多个共识节点达成共识。具体的,区块数据包含多个合约数据,共识节点在执行每一合约数据后,根据多个执行结果来构建状态树,并通过多个共识节点对状态树达成共识。
需要说明的是,可信执行空间在对目标区块数据的结果进行验证时,可以对待验证状态树进行验证。具体的,可信执行空间在对待验证状态树进行验证时,可以根据多个合约执行结果来构建合约结果状态树,即目标状态树,以便根据目标状态树来对共识节点生成的待验证状态树进行验证。
其中,该目标状态树的构建过程如下:确定每一合约数据对应的状态更新地址和合约执行结果,以状态更新地址中的字符信息作为状态树的树枝节点,并以状态更新地址中的最后一个字符信息作为状态树的叶子节点,并在叶子节点处为每一状态更新地址赋予对应的合约执行结果,即将执行结果作为状态值。按照以上方式,根据每一状态更新地址和对应的合约执行结果构建得到整个目标区块数据对应的目标状态树。
示例性的,参见图3所示,假设一个区块包含4个合约数据,每一合约数据关联有一个状态更新地址,如分别包括A211355、A27d337、A27d397和A2f9365,每个状态更新地址关联有一个状态值,用于表示每一合约执行结果。在构建目标状态树时,尽可能地将状态更新地址中相同的部分字符作为第一个节点,如以上4个地址在前部分仅有“A2”相同,则以“A2”作为目标状态树的第一个节点,该第一个节点可以理解为目标状态树从上往下的第一层(顶层);然后,在第一个节点的基础上进行分支,第二层的分支节点可分别包括第1个状态更新地址的“1”分支节点、第2个和第3个状态更新地址的“7”分支节点、第4个状态更新地址的“f”分支节点;接着,第三层的节点包括:第1个状态更新地址的叶子节点“1355”和执行结果1,第2个和第3个状态更新地址的“d3”扩展节点、第4个状态更新地址的叶子节点“9365”和执行结果4;第四层包括第2个状态更新地址的“3”分支节点、第3个状态更新地址的“9”分支节点;最后一层的节点包括第2个状态更新地址的叶子节点“7”和执行结果2,还包括第3个状态更新地址的叶子节点“7”和执行结果3。通过以上,构建目标状态树完毕,以上的状态更新地址仅为示例,此处不做限定。
其中,在根据目标状态树来对共识节点生成的待验证状态树进行验证时,可以将目标状态树与待验证状态树之间进行对比,当目标状态树与待验证状态树一致,表示可信执行空间对达成共识的待验证状态树的验证通过,则共识节点在执行合约数据时的结果是正确的。反之,当目标状态树与待验证状态树不一致,表示可信执行空间对达成共识的待验证状态树的验证不通过,则共识节点在执行合约数据时的结果是错误确。
(103.b.2)确定每个合约数据对应的目标哈希,并按照递归算法对相邻的目标哈希进行哈希计算,得到目标区块数据对应的目标根哈希。
其中,该待验证根哈希为共识节点根据多个合约数据对应的哈希值计算得到,该待验证根哈希经过多个共识节点达成共识。具体的,每一合约数据关联一个哈希,共识节点可根据多个哈希来构建哈希树(merkle树),将哈希树的顶点作为待验证根哈希。需要说明的是,由于一个哈希值的变化将会影响整个哈希树的变化,则根哈希也发生变化,对此,可信执行空间在对目标区块数据进行验证时,还可对待验证根哈希进行验证。
具体的,可信执行空间在对待验证根哈希进行验证时,可以先构建目标哈希树(merkle树),以便根据目标哈希树的目标根哈希来验证共识节点生成的待验证根哈希。
其中,可信执行空间在构建目标哈希树时,具体过程为:确定每一合约数据对应的目标哈希,得到多个目标哈希,将多个目标哈希进行排序,得到目标哈希序列,将目标哈希序列中每相邻的两个目标哈希进行两两组合,得到多个目标哈希对;以每个目标哈希对作为哈希计算的第一层参数,分别对每一目标哈希对中的两个目标哈希进行哈希计算,得到每一目标哈希对的联合哈希;进而,将联合哈希作为第二层参数,按照递归算法将第二层中相邻的两个联合哈希之间继续进行哈希计算,从下往上,以此类推,直至得到一个最终哈希。按照以上方式,以每一次哈希计算的结果作为树的其中一个节点,相邻两个哈希计算结果作为树的其中一个枝干,以最终哈希作为根节点,从而完成构建目标哈希树,该根节点对应的哈希为目标根哈希。
示例性的,参见图4所示,假设一个区块包含4个事件,每一事件对应一个合约,则分别表示为合约1、合约2、合约3和合约4,每个合约数据关联一个哈希。在构建merkle树时,将(目标)哈希1和(目标)哈希2进行哈希计算,得到哈希12,以及将(目标)哈希3和(目标)哈希4进行哈希计算,得到哈希34;进而,对哈希12和哈希34进行哈希计算,得到哈希1234,该哈希1234表示最终的哈希,从而构建得到merkle树,其中,该哈希1234表示目标根哈希。
其中,在根据目标根哈希来对共识节点生成的待验证根哈希进行验证时,可以将目标根哈希与待验证根哈希之间进行对比,当目标根哈希与待验证根哈希一致,表示可信执行空间对达成共识的待验证根哈希的验证通过。反之,当目标状态树与待验证状态树不一致,表示可信执行空间对达成共识的待验证状态树的验证不通过。
(103.b.3)当目标状态树对待验证状态树的验证通过,且当目标根哈希对待验证根哈希的验证通过,则确定根据合约执行结果对合约摘要信息的验证通过。
具体的,可信执行空间可根据目标状态树对待验证状态树进行验证,以及,根据目标根哈希对待验证根哈希进行验证;一方面,当同时对待验证状态树和待验证根哈希的验证通过时,即可确定可信执行空间根据合约执行结果对合约摘要信息的验证通过,表示共识节点在执行合约数据后产生的结果和状态可信,或代表结果和状态为正确的;另一方面,当对待验证状态树和/或待验证根哈希的验证不通过时,则表示共识节点在执行合约数据后产生的结果和状态不可信,或代表结果和状态为错误的。以此,可对共识节点执行合约数据的结果和状态验证完毕,且多重验证方式可提高对共识节点的区块数据的验证力度。
此外,本申请实施例还对合约摘要信息包含的共识节点的投票信息进行验证。具体的,可信执行空间获取合约摘要信息中包含的投票信息,根据投票信息确定参与投票的目标共识节点信息,将目标共识节点信息与链状态数据中的共识节点信息进行对比,该链状态数据记录有联盟链上任一共识节点和其他节点的信息,当目标共识节点信息与与链状态数据中的共识节点信息相同,则表示可信执行空间对共识节点的投票信息验证通过。以此,可进一步提高对共识节点的区块数据的验证力度。
104、当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文。
在本申请实施例中,当对合约摘要信息的验证通过时,表示可信执行空间确认共识节点在执行合约数据后的结果和状态是可信的,可对合约执行结果和相关数据进行保存,以用于后续客户端户在请求校验结果时的校验依据。需要说明的是,在保存合约执行结果和相关数据时,由于需要将合约执行结果和相关数据存储至见证节点中可信执行空间之外的存储空间,为了保护合约执行结果以及相关数据的隐私性,在存储前,可对护合约执行结果以及相关数据进行加密,得到相关的密文,以便将密文形式的数据存储至见证节点中可信执行空间之外的存储空间。
在一些实施方式中,可信执行空间在对合约执行结果和相关数据进行加密时,可以随机生成一个状态密钥,并通过状态密钥来对上述数据进行加密。例如,以对合约执行结果进行加密为例,步骤104“对合约执行结果进行加密,得到执行结果密文”,可以包括:
(104.1)在可信执行空间中随机生成状态密钥;
(104.2)根据状态密钥对合约执行结果进行加密,得到执行结果密文。
其中,该状态密钥可以是可信执行空间随机生成的状态密钥,其可以理解为可信执行空间中由于加密信息数据的密钥。如,在的本申请实施例中对合约执行结果进行加密,以得到执行结果密文,以便后续将执行结果密文存储至可信执行空间之外的存储空间。
需要说明的是,该执行结果密文需要作为结果校验依据,用于在可信执行空间中对用户的请求检验的合约结果进行检验。基于此,在将执行结果密文存储至可信执行空间之外的存储空间时,为了便于后续调用存储的执行结果密文,以用于校验用户请求检验的合约结果,本申请实施例还可在存储执行结果密文之前,对该执行结果密文的索引信息进行加密,并将加密的索引信息与执行结果密文之间进行关联后,存储至见证节点中可信执行空间之外的存储空间。
在一些实施方式中,以合约数据关联的目标哈希作为索引信息,可对目标哈希进行加密,并在完成加密后将两者进行储存。例如,步骤(104.2)之后,还可包括:
(104.2.1)确定合约数据对应的目标哈希;
(104.2.2)根据状态密钥对目标哈希进行加密,得到执行结果密文关联的目标加密哈希;
(104.2.3)将执行结果密文和目标加密哈希存储至可信执行空间之外的存储空间。
具体的,确定合约数据关联的目标哈希,由于合约数据与合约执行结果相对应,则目标哈希是与合约执行结果是关联的。进而,获取可信执行空间生成的状态密钥,该状态密钥可以是用于加密合约执行结果的密钥,并根据状态密钥对该目标哈希进行加密,得到目标加密哈希,其可以理解为(目标)哈希密文;进一步的,可建立目标加密哈希与执行结果密文之之间的关联关系,将具有关联关系的目标加密哈希与执行结果密文存储至见证节点中可信执行空间之外的存储空间,以便于作为后续用户请求检验的合约结果的校验依据。
通过以上方式,可在可信执行空间执行合约数据完毕后,将合约执行结果进行加密,以便于存储和管理,确保合约执行结果和相关数据在存储和管理时的隐私性。
105、接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。
在本申请实施例中,见证节点对应的服务器在对合约执行结果进行加密后,可实时检测客户端发送的结果校验请求,以获取结果校验请求对应的待校验合约结果,并根据加密后的执行结果密文来对待校验合约结果进行检验。
在一些实施方式中,由于执行结果密文存储在见证节点中可信执行空间之外的存储空间,在调用对应的执行结果密文来作为校验依据时,可以哈希作为索引信息,以调用对应的执行结果密文来检验相应的待校验合约结果。
具体的,步骤105中的“根据执行结果密文对待校验合约结果进行检验”,可以包括:确定待校验合约结果关联的待校验哈希;根据状态密钥分别对待校验哈希和待校验合约结果进行加密,得到待校验加密哈希和待校验结果密文;从存储空间中查询与待校验加密哈希匹配的目标加密哈希,并将与目标加密哈希关联的执行结果密文传输至可信执行空间;根据可信执行空间中的执行结果密文对待校验结果密文进行校验。
其中,该待校验哈希可以是待校验合约结果关联的哈希值,为了调用相应的执行结果密文,首先,可信执行空间可以利用状态密钥对待校验哈希进行加密,得到待校验加密哈希,同时,利用状态密钥对待校验合约结果进行加密,得到待校验结果密文;然后,以该待校验加密哈希作为索引,在见证节点中可信执行空间之外的存储空间进行哈希匹配,以从存储空间中匹配出与待校验加密哈希相同的目标加密哈希;接着,基于关联关系,查询出该目标加密哈希关联的执行结果密文,并将目标加密哈希关联的执行结果密文调用至可信执行空间;最后,在可信执行空间中,将目标加密哈希关联的执行结果密文与待校验结果密文之间进行对比,得到对比结果,即检验结果,并将检验结果返回给客户端。
可以理解的是,当检验结果为待校验结果密文与执行结果密文一致,则表示对待校验合约结果的校验通过,说明客户端请求校验的合约上链成功,且被共识节点正确执行。反之,当无法查询到待校验加密哈希对应的执行结果密文时,表示合约上链失败;此外,当可查询到待校验加密哈希对应的执行结果密文,但校验不通过,可表示合约上链成功,但未被共识节点正确执行,或达成共识有误。
示例性的,以资源转移事件为例,第一资源账户需要向第二资源账户进行资源转移,联盟链上的共识节点将会结合该资源转移事件对应的需要转移的资源数量、转移途径、履行资源转移的条件等生成合约数据,并执行合约数据,以根据执行合约数据的结果和其他数据来相应生成合约摘要信息,并将合约数据、哈希、签名信息等相关的数据进行打包并上链,以达成共识;而联盟链中的见证节点的可信执行空间会对达成共识的区块数据进行验证,以提高已达成共识的区块数据的可信度。进而,假若第一资源账户的用户需要查询相应的资源转移事件是否被正确执行,则可通过相关的客户端向见证节点的可信执行空间发送待校验哈希和待校验合约结果,而见证节点的可信执行空间可将根据待校验哈希来查询对应的验证通过后得执行结果密文,并根据验证通过后得执行结果密文来对待校验合约结果进行检验,将检验结果反馈至客户端,使得第一资源账户的用户获悉相应的资源转移事件是否被正确执行。
通过以上方式,可实时检测客户端发送的关于合约结果的校验请求,并对待校验合约结果进行检验,以将检验结果反馈给客户端,使得相应的目标对象不仅可获悉该相关合约是否上链,还可获悉合约是否被正确执行,提高用户的体验。
由上可知,本申请实施例可以从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。由此可得,本方案首先将加密的区块数据输入可信执行空间进行数据处理,以在可信执行空间对加密区块数据进行解密,然后,在可信执行空间中执行解密得到的合约数据,以实现在数据封闭环境中去重新计算合约结果,并根据合约执行结果对合约摘要信息进行验证,以确定合约摘要信息的真实性,最后,在验证通过后,将验证通过的合约执行结果进行加密,以便通过结果密文的校验方式对请求校验的合约结果进行校验;以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提升了数据处理的安全性,保护用户的信息,提高了用户的体验。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
本申请实施例以数据处理为例,对本申请实施例提供的数据处理方法作进一步叙述。
图5是本申请实施例提供的数据处理方法的另一步骤流程示意图;图6是本申请实施例提供的数据处理方法对应的联盟链的结构示意图;图7是本申请实施例提供的数据处理方法的场景示意图;图8是本申请实施例提供的共识节点的共识私钥存储方法的时序流程图;图9是本申请实施例提供的待校验合约结果的检验方法的时序流程图。为了便于理解,本申请实施例结合图5-9进行描述。
在本申请实施例中,将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在计算机设备如服务器中,当服务器上的处理器执行数据处理方法对应的程序指令时,该数据处理方法的具体流程如下:
需要说明的是,该服务器代表区块链中的见证节点,为了便于理解,一下将以见证节点表示本申请实施例中的服务器。
501、见证节点响应共识节点指向可信执行空间的私钥存储请求,在可信执行空间中随机生成目标私钥。
为了确保见证节点在验证区块数据过程中的数据隐私性,本申请实施例针对该见证节点设定了可信执行空间(即上述的特定区域),该可信执行空间为保护区块数据的私密性的运行空间,即属于一个封闭性的运行环境空间。具体的,该可信执行空间为通过软硬件方法在服务器处理器(CPU)中构建了一个安全区域,其可保护该区域内加载的程序和数据的机密性和完整性。
为了确保来自共识节点的区块数据在传输过程中的隐私性,避免由于区块数据在传输过程中被拦截而导致区块数据泄漏,共识节点可以通过密钥来对需要传输的区块数据进行加密。因此,共识节点需要与可信执行空间之间协定用于解密的共识私钥,并将共识节点的共识私钥存储在见证节点的可信执行空间中,以使得后续可信执行空间根据存储的共识私钥来解密该加密区块数据,再进行处理。
其中,该目标私钥可以是可信执行空间随机生成的私钥,属于有限值域中的随机标量,可用于协助保护共识私钥的传输,以确保共识私钥在传输至见证节点的可信执行空间中的隐蔽性。
502、见证节点根据椭圆曲线加密算法选取公钥基值,并将公钥基值和目标私钥之间的乘积确定为目标公钥。
其中,椭圆曲线加密算法(Elliptic Curve Cryptography,ECC),是基于椭圆曲线数学理论实现的一种非对称加密算法,具有短密钥,高安全性的特性。
需要说明的是,可以在得到目标私钥后,根据椭圆曲线加密算法来生成对应的目标公钥。此外,还可利用椭圆曲线加密算法同时生成一个包含目标公钥和目标私钥的非对称密钥对。
具体的,在根据椭圆曲线加密算法来生成对应的目标公钥时,可在椭圆曲线上选取一个基点值与目标私钥进行相乘,得到目标私钥对应的目标公钥,从而构建得到一对非对称密钥(包含目标公钥和目标私钥)。
503、见证节点基于远程认证机制,在可信执行空间中生成目标公钥对应的认证响应公钥。
需要说明的是,可信执行空间具有与其对应的硬件服务平台之间的远程认证机制,该远程认证机制可以是针对可信执行空间生成的密钥的认证机制,用于对可信执行空间生成的密钥(如目标公钥或目标私钥)进行认证。其中,为了便于描述,将该硬件服务平台定义为“认证响应服务平台”。
具体的,以目标公钥作为远程认证响应的挑战值或挑战参数,生成远程认证响应的信息,即得到认证响应公钥,以便将该认证响应公钥发送给共识节点进行远程认证。
504、见证节点将认证响应公钥发送给共识节点进行远程认证,使得共识节点在远程认证通过后反馈共识私钥密文和共识随机公钥至可信执行空间。
需要说明的是,在得到认证响应公钥后,可信执行空间可以非对称密钥的形式将认证响应公钥进行发送。具体的,以目标公钥作为非对称密钥对中的公钥,以认证响应公钥作为非对称密钥对中的私钥,从而构建得到非对称密钥;进而,将包含认证响应公钥的非对称密钥发送给共识节点。
以此,使得共识节点向认证响应服务平台发起关于认证响应公钥的认证,以确定目标公钥属于可信执行空间生成的真实性。进而,当共识节点已经确定该认证响应公钥和目标公钥是由可信执行空间生成时,可将共识私钥存储至交互的可信执行空间中。
其中,共识节点在发送共识私钥至可信执行空间时,可结合可信执行空间的目标公钥来对共识私钥进行加密,该加密过程具体如下:共识节点按照椭圆曲线加密算法生成共识节点的非对称密钥对,该共识节点的非对称密钥对包含共识随机私钥、共识随机私钥与椭圆曲线基点值生成共识随机公钥,此时,可将共识随机私钥与可信执行空间的目标公钥结合(如相乘)来对共识节点的共识私钥进行加密,得到共识私钥密文,以对共识私钥进行加密保护,实现共识私钥的保密传输;进而,以共识随机公钥作为公钥,以共识私钥密文作为私钥,来构建非对称密钥对,并将非对称密钥对发送给见证节点的可信执行空间,以将加密的共识私钥发送给可信执行空间。以此,可保护共识私钥的隐私性,有效避免可信执行空间之外的其他运行环境获取到共识私钥,影响后续区块数据的安全性。
505、见证节点联合共识随机公钥和目标私钥对共识私钥密文进行解密,并存储解密得到的共识私钥。
具体的,由于该共识私钥是由(可信执行空间的)目标公钥与(共识节点的)共识随机私钥之间的联合乘积进行加密保护,而随机私钥对应的共识随机公钥由共识节点根据椭圆曲线加密算法生成。基于目标公钥与共识随机公钥之间的基点值相同或相通性,可信执行空间在解密获取共识私钥时,可以将公共识随机公钥与自身的目标私钥联合(如相乘),以根据联合结果来对共识私钥密文进行解密,得到共识节点的共识私钥。以此,可加强对共识节点的共识私钥的保护作用,有效避免共识私钥泄露而影响后续区块数据的隐私安全。
此后,共识节点在将共识私钥存储至可信执行空间后,即可对需要同步至可信执行空间的区块数据进行加密保护,以将加密区块数据同步给见证节点中的可信执行空间。
506、见证节点从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间。
具体的,见证节点在从共识节点获取加密后的加密区块数据后,可将该加密区块数据输入可信执行空间,使得加密区块数据在该封闭的运行环境中进行数据处理,确保区块数据的隐私性。
507、见证节点在可信执行空间中,根据共识私钥对加密区块数据进行解密,得到目标区块数据。
其中,该加密区块数据可以是数字信封的数据结构形式的数据。在可信执行空间对加密区块数据进行解密时,具体过程为:根据共识私钥对对称密钥密文进行解密,得到对称密钥,并根据对称密钥对区块数据密文进行解密,得到目标区块数据。
其中,该目标区块数据包括区块头数据和区块体数据。具体的,以智能合约的相关数据为例,该区块头数据可以是合约摘要信息,如合约摘要信息包含达成共识后的梅克尔树(merkle树,即哈希树)、状态树(如MPT树)和共识节点投票结果等数据。具体的,该区块体数据可包含合约数据、目标哈希、合约发送者、数字签名信息等数据。
508、见证节点在可信执行空间中执行合约数据,得到合约执行结果。
其中,该合约数据可以是联盟链中的智能合约数据,其不限于包括合约的方法、内容等相关的数据,每一个合约数据表示一个需要更新状态的事件。
其中,该合约执行结果可以是可信执行空间在执行合约数据后的状态结果,具体为可信执行空间按照共识节点上的相同逻辑来重新执行一次合约数据,得到的合约执行结果。
具体的,在可信执行空间中执行合约数据时,该过程可以为:基于封闭空间中的数据状态更新机制,查询合约数据对应的合约运行逻辑;根据合约运行逻辑执行合约数据,得到合约执行结果。
509、见证节点在可信执行空间中,根据合约执行结果对合约摘要信息进行验证。
为了对共识节点上达成共识的区块数据中的合约结果和状态进行验证,可联合其他区块体数据和合约执行结果来对区块数据中的合约摘要信息进行验证。具体的,可信执行空间可根据目标状态树对待验证状态树进行验证,以及,根据目标根哈希对待验证根哈希进行验证。以此,可对共识节点执行合约数据的结果和状态验证完毕,且多重验证方式可提高对共识节点的区块数据的验证力度,提高共识节点在执行合约数据后产生的结果和状态的可信度。
510、见证节点在可信执行空间中对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文。
当对合约摘要信息的验证通过时,表示可信执行空间确认共识节点在执行合约数据后的结果和状态是可信的,可对合约执行结果和相关数据进行加密保存,以用于后续客户端在请求校验结果时的校验依据。
其中,可信执行空间在对合约执行结果和相关数据进行加密时,可以随机生成一个状态密钥,并通过状态密钥来进行加密。具体的,在可信执行空间中随机生成状态密钥;根据状态密钥对合约执行结果进行加密,得到执行结果密文;根据状态密钥对目标哈希进行加密,得到执行结果密文关联的目标加密哈希;将执行结果密文和目标加密哈希存储至可信执行空间之外的存储空间。
511、见证节点接收客户端发送的待校验合约结果,在可信执行空间中根据执行结果密文对待校验合约结果进行检验,得到检验结果。
具体的,由于执行结果密文存储在见证节点中可信执行空间之外的存储空间,在调用对应的执行结果密文来作为校验依据时,可以哈希作为索引信息,以调用对应的执行结果密文来检验相应的待校验合约结果。其中,该检验过程为:在可信执行空间中,将目标加密哈希关联的执行结果密文与待校验结果密文之间进行对比,得到对比结果,即检验结果。
512、见证节点的可信执行空间将检验结果反馈给客户端。
需要说明的是,检验结果为待校验结果密文与执行结果密文一致,则表示对待校验合约结果的校验通过,说明客户端请求校验的合约上链成功,且被共识节点正确执行。反之,当无法查询到待校验加密哈希对应的执行结果密文时,表示合约上链失败;此外,当可查询到待校验加密哈希对应的执行结果密文,但校验不通过,可表示合约上链成功,但未被共识节点正确执行,或达成共识有误。
需要说明的是,针对本申请实施例中的步骤501-512的实施过程,还可参考前述实施例中的描述进行解释,此处不做赘述。
为了便于对本申请实施例的理解,将以具体的应用场景实例对本申请实施例进行描述。具体的,通过执行以上步骤501-512,以及结合图6-图9,对该应用场景实例进行描述。其中,以该数据处理的应用场景可适用于资源转移的合约执行和验证、对接收的信息进行处理等场景实例。以资源转移的合约执行和验证的实例为例,该数据处理场景实例的描述具体如下:
一、数据处理***对应的架构
参见图6,该数据处理***可以是区块链节点的分布式***,具体可以是具有准入机制的联盟链的***,该***包括共识节点、见证节点和客户端,客户端可与见证节点之间通信连接。
具体的,见证节点处于见证网络中,共识节点处于共识网络中,客户端处于公网中。需要说明的是,该见证网络与共识网络之间隔离,且见证网络与公网联通。因此,任一用户可基于客户端,从公网向见证节点发送资源转移事件的验证请求,以向见证网络验证某一个资源转移事件是否已经上链,以及可验证某一个区块是否属于链上的区块等信息,此外,还可验证资源转移事件对应的合约是否被正确执行。
其中,见证节点上部署了一个可信执行环境区域(即可信执行空间),其可理解为保护区块数据的私密性的运行空间。具体的,通过软硬件方法在服务器处理器(CPU)中构建了一个安全区域,该安全区域为可信执行环境区域(即可信执行空间),可将部分数据处理过程置于该可信执行环境区域内执行,以保护该区域内数据的机密性和完整性。例如,可信执行环境区域外的其他应用程序或运行环境都无法获取到在可信执行环境区域内进程的内存,可信执行环境区域内产生的存储数据也被相应的硬件密钥(如状态密钥)保护,以此,保护该区域内加载的程序和数据的机密性和完整性。
二、该数据处理方法的场景的描述
在资源转移(如支付场景)中,第一资源账户需要向第二资源账户进行资源转移,联盟链上的共识节点将会结合该资源转移事件对应的需要转移的资源数量、转移途径、履行资源转移的条件等生成合约数据,并执行合约数据,以根据执行合约数据的结果和其他数据来相应生成合约摘要信息,并将合约数据、哈希、签名信息等相关的数据进行打包并上链,以达成共识;而联盟链中的见证节点的可信执行空间会对达成共识的区块数据进行验证,以提高已达成共识的区块数据的可信度。进而,第一资源账户对应的用户可通过客户端向见证节点的可信执行空间发送待校验哈希和待校验合约结果,而见证节点的可信执行空间可将根据待校验哈希来查询对应的验证通过后得执行结果密文,并将执行结果密文与待校验合约结果进行对比检验,将检验结果反馈至客户端,使得第一资源账户的用户获悉相应的资源转移事件是否被正确执行。
为了便于理解以上场景实施例,先对见证节点的架构进行介绍。参见图7所示,该见证节点的可信执行环境区域(可信执行空间)内包含可信执行程序(Tee程序),而该Tee程序中包含密钥管理模块、密码组件、链虚拟机模块;此外,见证节点的非可信执行环境区域外还包括链npc模块(交互模块)、链存储模块、链同步模块等。具体的,共识节点将私钥(共识私钥)存储在见证节点的可信执行环境内的密钥管理模块,并向见证节点同步加密后的链数据(加密区块数据);见证节点在可信执行环境内处理链数据后,将其加密后存储到链存储模块;处于公网的用户可以与见证节点链npc模块进行交互,以发送待校验合约结果的检验请求。需要说明的是,链虚拟机模块则用于按照共识节点上的相同逻辑来执行合约数据,还可执行“数据处理方法”对应的其他程序。
为了更好理解该应用实例,以下将通过三部分对该实例的实施方式进行介绍,具体如下:
(1)共识节点在见证节点的可信执行环境中存储密钥,并同步加密后的链数据:
为了使得见证节点的可信执行空间可对共识节点同步过来的加密链数据进行解密,共识节点需要将链数据加密后再同步给见证节点。为了使得见证节点可解密链数据,以用于验证,且仅允许见证节点的可信执行空间可获取到解密后的链数据(目标区块数据),需要在见证节点的可信执行环境区域中存储共识节点的共识私钥,后续数据的解密也需要在可信执行环境区域中执行。
其中,共识节点在见证节点的可信执行环境区域中存储共识私钥时,可结合图8所示,将的非对称密钥对(共识公钥pk,共识私钥sk)存储至见证节点的Tee环境(即可信执行环境)中;其中,图9中a、b表示有限域上的两个随机标量,G表示椭圆曲线上的基点,则{a,G*a}可以构成一个椭圆曲线上的公私钥对,a表示可信执行环境区域的目标私钥,G*a是可信执行环境区域的目标公钥,从目标公钥G*a无法推算出目标私钥a。具体的,在见证节点的可信执行环境区域中存储共识私钥的过程,该过的相关介绍具体如下:
(1.01)共识节点向见证节点的可信执行环境区域发送建立可信通道请求(即密钥存储请求),以便于需要存储的共识私钥进行协定。
(1.02)Tee环境中的密钥管理模块根据椭圆曲线加密算法,为共识节点随机生成一个公私密钥对{a,G*a},以便后续将会把公钥G*a发送给共识节点。
(1.03)Tee环境中的密钥管理模块存储目标私钥a。
(1.04)Tee环境中的密钥管理模块为返回值G*a认证。Tee虚拟机向共识节点返回公钥G*a,并以公钥G*a为挑战,生成向硬件服务平台远程认证的认证响应quote(G*a)。以此,使得共识节点确定公钥G*a是由见证节点的可信执行环境中生成的。
(1.05)共识节点向可信执行环境区域的硬件服务平台发送认证服务发送请求,做远程证明,验证quote(G*a)的真实性。
(1.06)共识节点在本地随机生成一个公私密钥对{b,G*b}。
(1.07)共识节点使用G*a与b相乘得到协商密钥G*a*b。共识节点用G*a*b将需要存储的共识私钥sk加密得到Enc(G*a*b,sk),并将G*b与Enc(G*a*b,sk)发送给Tee环境中的密钥管理模块。
(1.08)Tee环境中的密钥管理模块使用G*b与a相乘得到协商密钥G*a*b,解密sk并存储。
通过以上流程,可以将共识节点的共识私钥存储在可信执行空间(Tee环境)中的密钥管理模块内,以用于后续可信执行空间的加密区块数据的解密。
此后,共识节点需要向见证节点的Tee环境同步加密后链数据。具体的,将共识节点需要向见证节点传输的消息明文记做msg,共识节点使用密钥sk与明文消息msg制作成的数字信封Env(pk,msg)。其中,数字信封的制作流程为:共识节点随机生成一个对称密钥key,并使用非对称密钥{pk,sk}加密得到{Enc(pk,key),Enc(key,msg)},该数据结构被称为数字信封。
(2)见证节点在可信执行环境中处理数据:
见证节点在收到数字信封Env(pk,msg)={Enc(pk,key),Enc(key,msg)}后,将Env(pk,msg)输入见证节点的Tee环境中。在Tee环境内,见证节点使用密钥管理模块内的共识私钥sk,解析Enc(pk,key)得到对称密钥key,再使用key解析Enc(key,msg)得到链数据msg。
其中,该msg为区块数据,该区块数据包含区块头、区块体等信息;区块头中包含merkle树、执行结果的状态树、共识节点投票信息等数据;区块体可包含多个资源转移事件对应的数据包,每一资资源转移事件的数据包可包含哈希、合约发送者、合约数据、数字签名信息等数据。
具体的,见证节点的可信执行环境区域中的链虚拟机模块可执行数据处理过程,具体流程如下:
(2.01)随机生成一个状态密钥。
(2.02)对于区块中的每一个资源转移事件的合约,验证其数字签名信息,并根据哈希去见证节点的可信执行环境区域外的链存储模块中查询是否有重复执行的资源转移事件的合约。
(2.03)执行每一资源转移事件的合约数据,获得每一资源转移事件的合约数据的合约执行结果。
(2.04)验证每一区块体中所有资源转移事件的哈希是否可以构造出区块头中的merkle树。
(2.05)验证每一区块体的所有资源转移事件的合约执行结果是否可以构造出区块头中的状态树。
(2.06)验证区块头中的共识节点投票信息。
(2.07)使用状态密钥加密,对执行合约数据过程中需要存储的状态数据进行加密。
(2.08)使用状态密钥对于合约执行结果进行加密。
(2.09)向Tee环境外的链存储模块输出加密后的状态数据与区块执行结果。
(2.10)Tee环境外的链存储模块存储数据。
通过以上流程,可确保联盟链上的每一资源转移事件的合约都被正确的执行。
(3)公网用户向见证节点发送验证请求:
见证节点还需要随时响应外部请求,证明一个资源转移事件是否生成合约并上链。具体的,参见图9所示,客户端向见证节点的可信执行环境区域验证的流程具体如下:
(3.01)客户端向见证节点发送待校验哈希和待校验执行结果。
(3.02)见证节点收到交易哈希与交易执行结果,由于见证节点存储模块存储的是加密数据,因此无法直接去存储中查询。
(3.03)见证节点将待校验哈希和待校验执行结果输入Tee环境,并在Tee环境中加密待校验哈希与待校验执行结果,得到待校验哈希密文和待校验执行结果密文。
(3.04)见证节点在Tee环境中根据待校验哈希密文,查询对应的合约执行结果密文。
(3.05)见证节点在Tee环境中将存储的合约执行结果密文与待校验执行结果密文之间进行对比。
(3.06)见证节点将结果返回给客户端。
通过以上流程,可适用于与资源转移事件的结果查询和验证,以使得用户获悉联盟链是否针对资源转移事件生成合约并上链,以及验证资源转移事件的结果。
此外,通过执行以上(1)、(2)和(3)这三部分,除了实现资源转移事件的场景示例外,还可实现其他示例。例如,以存证业务查询为例,假设业务B是一个存证业务的平台,该平台可将用户发来的电子数据凭证信息在联盟链上存证;用户a是业务B的一个用户,用户a向业务B的机构发送了一个业务请求,业务B向用户a返回请求响应、存证业务的哈希、存证业务的执行结果,以用于证明用户a的业务请求已经存证在链上。然而,用户a虽然没有接入联盟链的权限,但是,用户a可向见证节点查询存证业务的哈希对应的存证业务是否在链上,并查询是否被正确执行。
又如,以商品购买为例,假设买家C在线上商户D的商铺上购买一件商品d,且买家C向中间平台支付了款项资源,使得买家C收到商品d后,中间平台再把款项资源转给商户D,则共识节点可将该商品买卖记录、物流状态等相关电子信息数据生成的合约数据并上链,当查询到买家签收货物后将买家的款项资源转移到商户D的资源存储地址上。进而,返给买家C或商户D一个上链的哈希、合约执行结果等户数,从而,买家C或商户D可以根据哈希和合约执行结果向见证节点查询合约是否在链上,且合约是否被正确执行。
由以上可知,本申请实施例可首先将加密的区块数据输入可信执行空间进行数据处理,以在可信执行空间对加密区块数据进行解密,然后,在可信执行空间中执行解密得到的合约数据,以实现在数据封闭环境中去重新计算合约结果,并根据合约执行结果对合约摘要信息进行验证,以确定合约摘要信息的真实性,最后,在验证通过后,将验证通过的合约执行结果进行加密,以便通过结果密文的校验方式对请求校验的合约结果进行校验;以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提升了数据处理的安全性,保护用户的信息,提高了用户的体验。
为了更好地实施以上方法,本申请实施例还提供一种数据处理装置。例如,如图10所示,该数据处理装置1000可以包括获取单元1001、解密单元1002、执行单元1003、加密单元1004和检验单元1005。
获取单元1001,用于从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;
解密单元1002,用于在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;
执行单元1003,用于执行合约数据,得到合约执行结果;
加密单元1004,用于当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;
检验单元1005,用于接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。
在一些实施方式中,执行单元1003,还用于:基于封闭空间中的数据状态更新机制,查询合约数据对应的合约运行逻辑;根据合约运行逻辑执行合约数据,得到合约执行结果。
在一些实施方式中,目标区块数据包含多个合约数据,合约摘要信息包括待验证状态树和待验证根哈希,数据处理装置包括验证单元,用于:获取每个合约数据关联的状态更新地址和合约执行结果,根据状态更新地址和合约执行结果构建对应的状态数据结构,得到目标区块数据对应的目标状态树;确定每个合约数据对应的目标哈希,并按照递归算法对相邻的目标哈希进行哈希计算,得到目标区块数据对应的目标根哈希;当目标状态树对待验证状态树的验证通过,且当目标根哈希对待验证根哈希的验证通过,则确定根据合约执行结果对合约摘要信息的验证通过。
在一些实施方式中,解密单元1002,还用于:查询共识节点存储在可信执行空间中的共识私钥;根据共识私钥对加密区块数据进行解密,得到目标区块数据。
在一些实施方式中,加密区块数据包含对称密钥密文和区块数据密文,解密单元1002,还用于:根据共识私钥对对称密钥密文进行解密,得到对称密钥;根据对称密钥对区块数据密文进行解密,得到目标区块数据。
在一些实施方式中,数据处理装置还包括密钥处理单元,用于:响应共识节点指向可信执行空间的私钥存储请求,在可信执行空间中随机生成目标私钥,并根据远程认证机制构建目标私钥对应的认证响应公钥;将认证响应公钥发送给共识节点进行远程认证,使得共识节点在远程认证通过后反馈共识私钥密文和共识随机公钥至可信执行空间;联合共识随机公钥和目标私钥对共识私钥密文进行解密,并存储解密得到的共识私钥。
在一些实施方式中,密钥处理单元,还用于:根据椭圆曲线加密算法选取公钥基值,并将公钥基值和目标私钥之间的乘积确定为目标公钥;则密钥处理单元,还用于基于远程认证机制,在可信执行空间中生成目标公钥对应的认证响应公钥。
在一些实施方式中,加密单元1004,还用于:在可信执行空间中随机生成状态密钥;根据状态密钥对合约执行结果进行加密,得到执行结果密文。
在一些实施方式中,数据处理装置还包括存储单元,用于:确定合约数据对应的目标哈希;根据状态密钥对目标哈希进行加密,得到执行结果密文关联的目标加密哈希;将执行结果密文和目标加密哈希存储至可信执行空间之外的存储空间。
在一些实施方式中,检验单元1005,还用于:确定待校验合约结果关联的待校验哈希;根据状态密钥分别对待校验哈希和待校验合约结果进行加密,得到待校验加密哈希和待校验结果密文;从存储空间中查询与待校验加密哈希匹配的目标加密哈希,并将与目标加密哈希关联的执行结果密文传输至可信执行空间;根据可信执行空间中的执行结果密文对待校验结果密文进行校验。
在一些实施方式中,数据处理装置还包括数据检验单元,用于:确定合约数据关联的数字签名信息和目标哈希;当检测到对数字签名信息校验通过时,根据目标哈希确定合约数据的执行状态;
则执行单元1005,还用于:当识别到执行状态为未执行时,在可信执行空间执行合约数据,得到合约执行结果;当识别到执行状态为已执行时,根据目标哈希查询对应的已执行结果,并将已执行结果确定为合约数据在可信执行空间中的合约执行结果。
由以上可知,本申请实施例可将加密的区块数据输入可信执行空间进行数据处理,以在可信执行空间对加密区块数据进行解密,然后,在可信执行空间中执行解密得到的合约数据,以实现在数据封闭环境中去重新计算合约结果,并根据合约执行结果对合约摘要信息进行验证,以确定合约摘要信息的真实性,最后,在验证通过后,将验证通过的合约执行结果进行加密,以便通过结果密文的校验方式对请求校验的合约结果进行校验;以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提升了数据处理的安全性,保护用户的信息,提高了用户的体验。
本申请实施例还提供一种计算机设备,如图11所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器1101、一个或一个以上计算机可读存储介质的存储器1102、电源1103和识别单元1104等部件。本领域技术人员可以理解,图11中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1101是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1102内的软件程序和/或模块,以及调用存储在存储器1102内的数据,执行计算机设备的各种功能和处理数据。可选的,处理器1101可包括一个或多个处理核心;优选的,处理器1101可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1101中。
存储器1102可用于存储软件程序以及模块,处理器1101通过运行存储在存储器1102的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1102可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1102还可以包括存储器控制器,以提供处理器1101对存储器1102的访问。
计算机设备还包括给各个部件供电的电源1103,优选的,电源1103可以通过电源管理***与处理器1101逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源1103还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括识别单元1104,该识别单元1104可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本申请实施例中,计算机设备中的处理器1101会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1102中,并由处理器1101来运行存储在存储器1102中的应用程序,从而实现各种功能,如下:
从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由此可得,本方案可将加密的区块数据输入可信执行空间进行数据处理,以在可信执行空间对加密区块数据进行解密,然后,在可信执行空间中执行解密得到的合约数据,以实现在数据封闭环境中去重新计算合约结果,并根据合约执行结果对合约摘要信息进行验证,以确定合约摘要信息的真实性,最后,在验证通过后,将验证通过的合约执行结果进行加密,以便通过结果密文的校验方式对请求校验的合约结果进行校验;以此,可在确保见证节点在验证区块数据的真实性的同时,保护区块数据的隐私性,有效避免信息泄露的现象,提升了数据处理的安全性,保护用户的信息,提高了用户的体验。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。例如,该指令可以执行如下步骤:
从共识节点中获取加密区块数据,并将加密区块数据输入可信执行空间,可信执行空间为保护区块数据的私密性的运行空间;在可信执行空间中对加密区块数据进行解密,得到目标区块数据,目标区块数据包括合约摘要信息和合约数据;执行合约数据,得到合约执行结果;当根据合约执行结果对合约摘要信息的验证通过时,对合约执行结果进行加密,得到执行结果密文;接收待校验合约结果,并根据执行结果密文对待校验合约结果进行检验。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种数据处理方法、装置、设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种数据处理方法,其特征在于,包括:
从共识节点中获取加密区块数据,并将所述加密区块数据输入可信执行空间,所述可信执行空间为保护区块数据的私密性的运行空间;
在所述可信执行空间中对所述加密区块数据进行解密,得到目标区块数据,所述目标区块数据包括合约摘要信息和合约数据;
执行所述合约数据,得到合约执行结果;
当根据所述合约执行结果对所述合约摘要信息的验证通过时,对所述合约执行结果进行加密,得到执行结果密文;
接收待校验合约结果,并根据所述执行结果密文对所述待校验合约结果进行检验。
2.根据权利要求1所述的方法,其特征在于,所述执行所述合约数据,得到合约执行结果,包括:
基于所述封闭空间中的数据状态更新机制,查询所述合约数据对应的合约运行逻辑;
根据所述合约运行逻辑执行所述合约数据,得到合约执行结果。
3.根据权利要求1或2所述的方法,其特征在于,所述目标区块数据包含多个合约数据,所述合约摘要信息包括待验证状态树和待验证根哈希,所述执行所述合约数据,得到合约执行结果之后,还包括:
获取每个合约数据关联的状态更新地址和合约执行结果,根据所述状态更新地址和合约执行结果构建对应的状态数据结构,得到所述目标区块数据对应的目标状态树;
确定每个合约数据对应的目标哈希,并按照递归算法对相邻的所述目标哈希进行哈希计算,得到所述目标区块数据对应的目标根哈希;
当所述目标状态树对所述待验证状态树的验证通过,且当所述目标根哈希对所述待验证根哈希的验证通过,则确定根据所述合约执行结果对所述合约摘要信息的验证通过。
4.根据权利要求1所述的方法,其特征在于,所述对所述加密区块数据进行解密,得到目标区块数据,包括:
查询所述共识节点存储在所述可信执行空间中的共识私钥;
根据所述共识私钥对所述加密区块数据进行解密,得到目标区块数据。
5.根据权利要求4所述的方法,其特征在于,所述加密区块数据包含对称密钥密文和区块数据密文,所述根据所述共识私钥对所述加密区块数据进行解密,得到目标区块数据,包括:
根据所述共识私钥对所述对称密钥密文进行解密,得到对称密钥;
根据所述对称密钥对所述区块数据密文进行解密,得到目标区块数据。
6.根据权利要求1所述的方法,其特征在于,所述从共识节点中获取加密区块数据之前,还包括:
响应共识节点指向可信执行空间的私钥存储请求,在所述可信执行空间中随机生成目标私钥,并根据远程认证机制构建所述目标私钥对应的认证响应公钥;
将所述认证响应公钥发送给所述共识节点进行远程认证,使得所述共识节点在远程认证通过后反馈共识私钥密文和共识随机公钥至所述可信执行空间;
联合所述共识随机公钥和目标私钥对所述共识私钥密文进行解密,并存储解密得到的共识私钥。
7.根据权利要求6所述的方法,其特征在于,所述根据远程认证机制构建所述目标私钥对应的认证响应公钥之前,包括:
根据椭圆曲线加密算法选取公钥基值,并将所述公钥基值和所述目标私钥之间的乘积确定为目标公钥;
则所述根据远程认证机制构建所述目标私钥对应的认证响应公钥,包括:
基于远程认证机制,在所述可信执行空间中生成所述目标公钥对应的认证响应公钥。
8.根据权利要求1所述的方法,其特征在于,所述对所述合约执行结果进行加密,得到执行结果密文,包括:
在所述可信执行空间中随机生成状态密钥;
根据所述状态密钥对所述合约执行结果进行加密,得到执行结果密文。
9.根据权利要求8所述的方法,其特征在于,所述根据所述状态密钥对所述合约执行结果进行加密,得到执行结果密文之后,还包括:
确定所述合约数据对应的目标哈希;
根据所述状态密钥对所述目标哈希进行加密,得到所述执行结果密文关联的目标加密哈希;
将所述执行结果密文和目标加密哈希存储至所述可信执行空间之外的存储空间。
10.根据权利要求9所述的方法,其特征在于,所述根据所述执行结果密文对所述待校验合约结果进行检验,包括:
确定所述待校验合约结果关联的待校验哈希;
根据所述状态密钥分别对所述待校验哈希和待校验合约结果进行加密,得到待校验加密哈希和待校验结果密文;
从所述存储空间中查询与所述待校验加密哈希匹配的目标加密哈希,并将与所述目标加密哈希关联的执行结果密文传输至所述可信执行空间;
根据所述可信执行空间中的执行结果密文对所述待校验结果密文进行校验。
11.根据权利要求1所述的方法,其特征在于,所述执行所述合约数据,得到合约执行结果之前,还包括:
确定所述合约数据关联的数字签名信息和目标哈希;
当检测到对所述数字签名信息校验通过时,根据所述目标哈希确定所述合约数据的执行状态;
则所述在所述可信执行空间执行所述合约数据,得到合约执行结果,包括:
当识别到所述执行状态为未执行时,在所述可信执行空间执行所述合约数据,得到合约执行结果;
当识别到所述执行状态为已执行时,根据所述目标哈希查询对应的已执行结果,并将所述已执行结果确定为所述合约数据在所述可信执行空间中的合约执行结果。
12.一种数据处理装置,其特征在于,包括:
获取单元,用于从共识节点中获取加密区块数据,并将所述加密区块数据输入可信执行空间,所述可信执行空间为保护区块数据的私密性的运行空间;
解密单元,用于在所述可信执行空间中对所述加密区块数据进行解密,得到目标区块数据,所述目标区块数据包括合约摘要信息和合约数据;
执行单元,用于执行所述合约数据,得到合约执行结果;
加密单元,用于当根据所述合约执行结果对所述合约摘要信息的验证通过时,对所述合约执行结果进行加密,得到执行结果密文;
检验单元,用于接收待校验合约结果,并根据所述执行结果密文对所述待校验合约结果进行检验。
13.一种计算机设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,实现权利要求1至11任一项所述的数据处理方法中的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至11任一项所述的数据处理方法中的步骤。
15.一种计算机程序产品,包括计算机指令,所述计算机指被执行时实现权利要求1至11任一项所述的数据处理方法中的步骤。
CN202211492979.XA 2022-11-25 2022-11-25 数据处理方法、装置、设备和计算机可读存储介质 Pending CN118101206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211492979.XA CN118101206A (zh) 2022-11-25 2022-11-25 数据处理方法、装置、设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211492979.XA CN118101206A (zh) 2022-11-25 2022-11-25 数据处理方法、装置、设备和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN118101206A true CN118101206A (zh) 2024-05-28

Family

ID=91162273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211492979.XA Pending CN118101206A (zh) 2022-11-25 2022-11-25 数据处理方法、装置、设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN118101206A (zh)

Similar Documents

Publication Publication Date Title
US11842317B2 (en) Blockchain-based authentication and authorization
CN112214780B (zh) 一种数据处理方法、装置、智能设备及存储介质
US11038670B2 (en) System and method for blockchain-based cross-entity authentication
US10917246B2 (en) System and method for blockchain-based cross-entity authentication
CN110602138B (zh) 区块链网络的数据处理方法、装置、电子设备及存储介质
CN111914027B (zh) 一种区块链交易关键字可搜索加密方法及***
CN111429254B (zh) 一种业务数据处理方法、设备以及可读存储介质
CN109409122B (zh) 文件存储方法及其电子设备、存储介质
US10846372B1 (en) Systems and methods for trustless proof of possession and transmission of secured data
EP1662691A1 (en) Device authentication system
EP3219050A1 (en) Manicoding for communication verification
CN114329529A (zh) 一种基于区块链的资产数据管理方法及***
CN110096894B (zh) 一种基于区块链的数据匿名共享***及方法
US9398024B2 (en) System and method for reliably authenticating an appliance
CN114866323B (zh) 一种用户可控的隐私数据授权共享***及方法
CN111049806B (zh) 一种联合权限控制方法、装置、电子设备和存储介质
CN110910110A (zh) 一种数据处理方法、装置及计算机存储介质
CN111753321A (zh) 一种基于区块链的数据安全共享方法及***
CN116975901A (zh) 基于区块链的身份验证方法、装置、设备、介质及产品
US20230045486A1 (en) Apparatus and Methods for Encrypted Communication
Chen et al. How to bind a TPM’s attestation keys with its endorsement key
CN118101206A (zh) 数据处理方法、装置、设备和计算机可读存储介质
EP4287560A1 (en) Encryption and decryption of transactions of a distributed ledger
EP3219074A1 (en) Network based identity federation
CN115276998A (zh) 物联网身份认证方法、装置和物联网设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication