区块链中实现隐私保护的方法、节点和存储介质与流程

文档序号:18218571发布日期:2019-07-19 22:49阅读:126来源:国知局
区块链中实现隐私保护的方法、节点和存储介质与流程

本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链中实现隐私保护的方法、节点和存储介质。



背景技术:

区块链技术构建在传输网络(例如点对点网络)之上。传输网络中的网络节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。这些区块链网络中的节点有时需要增加。

目前企业级的区块链平台技术上最大的两个挑战就是隐私和性能,往往这两个挑战很难同时解决。大多解决方案都是通过损失性能换取隐私,或者不大考虑隐私去追求性能。常见的解决隐私问题的加密技术,如同态加密(homomorphicencryption)和零知识证明(zero-knowledgeproof)等复杂度高,通用性差,而且还可能带来严重的性能损失。

在解决隐私方面,可信执行环境(trustedexecutionenvironment,tee)是另一种解决方式。tee可以起到硬件中的黑箱作用,在tee中执行的代码和数据都无法被操作系统层偷窥,只有通过代码中预先定义的接口才能对其进行操作。在效率方面,由于tee的黑箱性质,在tee中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程没有效率损失,因此与tee相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注tee的方案,几乎所有主流的芯片和软件联盟都有自己的tee解决方案,包括软件方面的tpm(trustedplatformmodule,可信赖平台模块)以及硬件方面的intelsgx(softwareguardextensions,软件保护扩展)、armtrustzone(信任区)和amdpsp(platformsecurityprocessor,平台安全处理器)。



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种区块链中实现隐私保护的方法、节点和存储介质。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种区块链中实现隐私保护的方法,包括:

第一区块链节点执行从客户端接收的交易,得到明文收据数据;

第一区块链节点在确定所述交易为隐私交易时,使用密钥将所述明文收据数据加密为密文收据数据后,存储所述密文收据数据。

根据本说明书一个或多个实施例的第二方面,提出了一种区块链中实现隐私保护的节点,包括:

执行单元,用于执行从客户端接收的交易,得到明文收据数据;

存储单元,用于在确定所述交易为隐私交易时,使用密钥将所述明文收据数据加密为密文收据数据后,存储所述密文收据数据。

根据本说明书一个或多个实施例的第三方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。

附图说明

图1是一示例性实施例提供的一种区块链中实现隐私保护的方法的流程图。

图2是一示例性实施例提供的一种交易场景的示意图。

图3是一示例性实施例提供的一种区块链中实现隐私保护的节点的组成图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

区块链一般被划分为三种类型:公有链(publicblockchain),私有链(privateblockchain)和联盟链(consortiumblockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。

不论是公有链、私有链还是联盟链,在交易执行后都可以生成相应的收据(receipt)数据,以用于记录该交易相关的收据信息。以以太坊为例,节点执行交易所得的收据数据可以包括下述字段:

blockhash字段,表示交易所在块的哈希值;

blocknumber字段,表示交易在所处块的序号;

transactionhash字段,表示交易的哈希值;

transactionindex字段,表示交易在所处块中的序号;

from字段,表示交易生成方的账户地址;

to字段,表示交易对象的账户地址(当交易用于创建智能合约时,to字段为空);

contractaddress字段,当交易用于创建智能合约时,表示所创建智能合约的地址,否则为空;

logs字段,表示交易的日志。

节点在执行某一区块所含的各个交易时,每一交易被执行后都会生成相应的收据数据,而节点可以按照预定义的树状结构和处理逻辑,组织该区块所含各个交易对应的收据数据,形成一颗收据树。通过组织生成收据树,使得在针对收据数据进行查询或验证时,能够极大地提升相应的查询或验证效率。例如,以太坊中采用mpt(merklepatriciatree)结构组织生成上述的收据树,该收据树的叶子为该区块所含各个交易对应的收据数据的哈希值,而收据树根(receiptroot)为根据叶子处的收据数据的哈希值依次向上生成的根哈希。当然,在其他区块链网络还可以采用其他类型的树状结构。

以下结合图1所示说明本说明书一实现隐私保护的方法实施例的实现过程:

步骤102,第一区块链节点执行从客户端接收的交易,得到明文收据数据。

交易可以由客户端提交至第一区块链节点。例如,用户通过对应的账户在客户端生成该交易后,通过该客户端将交易提交至第一区块链节点。以图2为例,第一区块链节点中包含交易/查询接口,该接口可与客户端对接,使得客户端可以向第一区块链节点提交交易。

第一区块链节点执行上述交易后,除了获得相应的交易执行结果之外,还会生成收据数据,该收据数据为明文形式,即上述的明文收据数据。

基于不同的隐私保护需求,可以将交易划分为明文类型的明文交易、隐私类型的隐私交易。可以在交易中添加类型字段,使得第一区块链节点可以据此识别交易类型为明文交易或隐私交易。在相关技术中,例如在以太坊网络中,交易通常包含to、value、data等字段。而本实施例在相关技术的基础上,在交易中增加一类型字段,比如表征为type字段,并基于该类型字段的取值,表明相关交易的类型;例如,当类型字段为第一取值时,表明相关交易为明文交易,当类型字段为第二取值时,表明相关交易为隐私交易。

明文交易的所有内容均采用明文形式,即该交易的各个字段均采用明文形式,使得第一区块链节点可以直接对该明文交易的各个字段进行读取,以实施相关处理;同时,明文交易以明文形式被打包成块,进而以明文形式记录于区块链中。隐私交易除了类型字段采用明文形式之外,其他字段均采用密文形式,使得一方面第一区块链节点能够在无需解密的情况下,快速识别交易类型,从而针对明文交易和隐私交易实施差异化处理,另一方面通过采用密文形式使其仅能够被持有密钥的对象进行解密和读取,避免交易信息发生泄露,并且隐私交易以密文形式被打包成块,进而以密文形式记录于区块链中。

以太坊网络中的所有交易均为明文交易。而第一区块链节点可以在此基础上扩展出兼顾明文交易与隐私交易的混合处理方案。例如图2所示,第一区块链节点可以划分为常规执行环境和可信执行环境,客户端提交的交易首先进入常规执行环境中的“交易/查询接口”进行类型识别(譬如识别上文所述的type字段),将识别出的明文交易留在常规执行环境中进行处理,而将识别出的隐私交易传递至可信执行环境中进行处理。当第一区块链节点在可信执行环境中对明文收据数据进行加密时,为了确保加密操作顺利实施,一些场景下可以将明文交易传入可信执行环境中予以执行,与隐私交易的区分仅在于无需对明文交易进行解密、无需对相应的明文执行结果进行加密。

常规执行环境对明文交易进行处理时,整个处理过程完全采用明文方式,即第一区块链节点对明文交易进行处理后,得到上述的明文收据数据,并在常规执行环境中对该明文收据数据进行直接存储。而可信执行环境与常规执行环境相互隔离,隐私交易在进入可信执行环境之前处于加密状态(除了上述的type字段),而在可信执行环境内则被解密为明文交易内容,从而在确保数据安全的前提下,使得该明文交易内容能够在可信执行环境中实现高效处理,并在可信执行环境中生成相应的明文收据数据;进一步地,在针对该明文收据数据进行存储时,则需要加密为相应的密文收据数据,然后存储至常规执行环境中,譬如存储位置与上述明文交易对应的明文收据数据相同,均可以为如图2所示的“打包+存储”模块。

本说明书中的交易可以用于实现相对简单的处理逻辑,比如类似于相关技术中的转账逻辑。此时无论是上述的明文交易或隐私交易,均可与智能合约无关。

本说明书中的交易还可以用于实现相对复杂的处理逻辑,这里可以借助于上述的智能合约来实现。以以太坊为例,支持用户在以太坊网络中创建和/或调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(evm),每个以太坊节点都可以运行evm。evm是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在evm上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。

在一实施例中,本说明书的智能合约可以划分为明文类型的明文合约、隐私类型的隐私合约。明文合约的合约代码和合约状态均以明文形式存储于节点处,而隐私合约的合约代码和合约状态均以密文形式存储于节点处,使得隐私合约具有相对更高的私密性。当交易用于创建和/或调用智能合约时,该智能合约可以被认为对应于该交易。

由于第一区块链节点在可信执行环境之外对明文交易进行处理,且直接将处理得到的明文执行结果(如发生变化的合约状态等)存储至外部存储空间,因而当明文交易用于创建智能合约时,该智能合约必然以明文形式存储于外部存储空间,因而该智能合约必然为明文合约。同时,当明文交易调用智能合约时,由于仅在可信执行环境内能够对隐私合约进行解密,因而明文交易调用的智能合约仅能够为明文合约。

第一区块链节点可以在可信执行环境(trustedexecutionenvironment,tee)中解密隐私交易。tee是基于cpu硬件的安全扩展,且与外部完全隔离的可信执行环境。tee最早是由globalplatform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。arm的trustzone技术最早实现了真正商用的tee技术。

伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对tee提出了更多的需求。tee的概念也得到了高速的发展和扩充。现在所说的tee相比与最初提出的概念已经是更加广义的tee。例如,服务器芯片厂商intel,amd等都先后推出了硬件辅助的tee并丰富了tee的概念和特性,在工业界得到了广泛的认可。现在提起的tee通常更多指这类硬件辅助的tee技术。不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用tee的第一步就是要确认tee的真实可信。因此现在的tee技术都引入了远程证明机制,由硬件厂商(主要是cpu厂商)背书并通过数字签名技术确保用户对tee状态可验证。同时仅仅是安全的资源隔离也无法满足的安全需求,进一步的数据隐私保护也被提出。包括intelsgx,amdsev在内的商用tee也都提供了内存加密技术,将可信硬件限定在cpu内部,总线和内存的数据均是密文防止恶意用户进行窥探。例如,英特尔的软件保护扩展(sgx)等tee技术隔离了代码执行、远程证明、安全配置、数据的安全存储以及用于执行代码的可信路径。在tee中运行的应用程序受到安全保护,几乎不可能被第三方访问。

以intelsgx技术为例,sgx提供了围圈(enclave,也称为飞地),即内存中一个加密的可信执行区域,由cpu保护数据不被窃取。以第一区块链节点采用支持sgx的cpu为例,利用新增的处理器指令,在内存中可以分配一部分区域epc(enclavepagecache,围圈页面缓存或飞地页面缓存),通过cpu内的加密引擎mee(memoryencryptionengine)对其中的数据进行加密。epc中加密的内容只有进入cpu后才会被解密成明文。因此,在sgx中,用户可以不信任操作系统、vmm(virtualmachinemonitor,虚拟机监控器)、甚至bios(basicinputoutputsystem,基本输入输出系统),只需要信任cpu便能确保隐私数据不会泄漏。实际应用中,可以将隐私数据加密后以密文形式传递至围圈中,并通过远程证明将对应的秘钥也传入围圈。然后,在cpu的加密保护下利用数据进行运算,结果会以密文形式返回。这种模式下,既可以利用强大的计算力,又不用担心数据泄漏。

由于隐私交易在tee中执行,因而隐私交易对应的智能合约可以为隐私合约,比如隐私交易可以在tee中创建智能合约,该智能合约的合约代码和合约状态均可以在tee中被加密,从而创建相应的隐私合约;再比如隐私交易可以调用隐私合约,该隐私合约在tee中被解密和执行,且执行后发生更新的合约状态可以被更新并重新加密存储;又比如隐私交易可以调用明文合约,该明文合约在tee中被执行后,发生更新的合约状态仍以明文形式进行存储。

假定上述的隐私交易在某一客户端处生成,该客户端可以首先生成明文交易内容,然后将该明文交易内容用密钥加密。所述加密,可以采用对称加密,也可以采用非对称加密。相应地,第一区块链节点可以用对应的密钥解密所述隐私交易,以获得明文交易内容。如果客户端用对称加密方式,即用对称加密算法的对称密钥对明文交易内容加密,则相应地,第一区块链节点可以用所述对称加密算法的对称密钥解密所述隐私交易。对称加密采用的加密算法,例如是des算法,3des算法,tdea算法,blowfish算法,rc5算法,idea算法等。对称加密算法的对称密钥,例如可以是由所述隐私交易的生成方生成,或由客户端和第一区块链节点协商确定,或由密钥管理服务器发送得到。

如果用非对称加密方式,即用非对称加密算法的公钥对明文交易内容加密,则相应地,第一区块链节点可以用所述非对称加密算法的私钥解密所述隐私交易。非对称加密算法,例如是rsa、elgamal、背包算法、rabin、d-h、ecc(椭圆曲线加密算法)等。非对称加密算法的密钥,例如可以是由第一区块链节点生成一对公钥和私钥,并将公钥预先发送至所述客户端,从而所述客户端可以将明文交易内容用该公钥加密。

非对称加密算法的密钥,也可以由一个密钥管理服务器生成。通过远程证明的方式,密钥管理服务器将私钥发送至第一区块链节点,具体的,可以是传入第一区块链节点的围圈中。第一区块链节点可以包含多个围圈,而上述私钥可以被传入这些围圈中的安全围圈;例如,该安全围圈可以为qe(quotingenclave)围圈,而非ae(applicationenclave)围圈。对于非对称加密的公钥,可以由密钥管理服务器发送至所述客户端。因而客户端可以用该公钥加密明文交易内容,相应地,第一区块链节点可以用所述私钥解密所述隐私交易,以得到该隐私交易包含的明文交易内容。

客户端也可以采用对称加密结合非对称加密相结合的方式。例如,客户端采用对称加密算法加密明文交易内容,即采用对称加密算法的对称密钥加密明文交易内容,并用非对称加密算法加密对称加密算法中采用的对称密钥。一般的,采用非对称加密算法的公钥加密对称加密算法中采用的对称密钥。这样,第一区块链节点接收到加密的交易后,可以先采用非对称加密算法的私钥进行解密,得到对称加密算法的对称密钥,进而用对称加密算法的对称密钥解密得到明文交易内容。

例如,密钥管理服务器通过远程证明可以将非对称加密算法的私钥发送至第一区块链节点的围圈,并将非对称加密算法的私钥发送至所述客户端。因而,所述客户端可以采用对称加密算法的对称密钥加密明文交易内容,即采用对称加密算法的对称密钥加密明文交易内容,并用非对称加密算法的公钥加密对称加密算法中采用的对称密钥。进而,所述客户端可以将所述隐私交易和加密私钥(由非对称加密算法的公钥对所述对称加密算法中采用的对称密钥进行加密后得到)发送至第一区块链节点。第一区块链节点接收到所述隐私交易和加密私钥后,可以先用非对称加密算法的私钥对该加密私钥进行解密得到对称加密算法的对称密钥,进而用该对称加密算法的对称密钥解密所述隐私交易,得到明文交易内容。这里的加密方式一般称为数字信封加密。

第一区块链节点对隐私交易进行解密后,得到明文交易内容。明文交易内容可以包含智能合约的代码,以用于在区块链中创建智能合约;明文交易内容可以包含区块链中已创建的某一智能合约的合约地址,以用于调用该智能合约。

无论是用于创建或调用智能合约,第一区块链节点可以通过执行该智能合约的代码,以完成交易。第一区块链节点可以在可信执行环境中执行所述智能合约的代码。当智能合约的代码位于隐私交易中时,第一区块链节点通过对隐私交易进行解密得到上述的明文交易内容,该明文交易内容中包含明文的智能合约的代码;当智能合约预先已创建、隐私交易用于调用该智能合约时,如果该智能合约预先被第一区块链节点进行加密存储,而该第一区块链节点可以通过将密文的智能合约的代码读入可信执行环境中,并解密得到明文的智能合约的代码。智能合约之间可以实现多重嵌套结构;例如智能合约1中的代码调用了智能合约2,而智能合约2中的代码指向了经创建智能合约代码生成的合约地址3,从而当隐私交易调用智能合约1中的代码时,间接调用了所述合约地址3中的智能合约代码。

当隐私交易用于创建智能合约时,该隐私交易中包含智能合约的代码,第一区块链节点可以在可信执行环境中对该隐私交易进行解密得到其所含智能合约的代码,并进而在可信执行环境中执行该明文代码。当隐私交易用于调用隐私类型的智能合约时,第一区块链节点可以在可信执行环境中对该智能合约进行解密得到相应的明文代码,并进而在可信执行环境中执行该明文代码。当隐私交易用于调用明文类型的智能合约时,第一区块链节点直接读取该智能合约的明文代码,并在可信执行环境中执行该明文代码。具体的,第一区块链节点可以利用cpu中新增的处理器指令,在内存中分配一部分区域epc,通过cpu内的加密引擎mee对上述的明文代码进行加密存入所述epc中。epc中加密的内容进入cpu后被解密成明文。在cpu中,对所述明文代码进行运算,完成执行过程。

sgx技术中,执行所述智能合约的明文代码,可以将evm加载进所述围圈中。在远程证明过程中,所述密钥管理服务器可以计算本地evm代码的hash值,并与第一区块链节点中加载的evm代码的hash值比对,比对结果正确作为通过远程证明的一个必要条件,从而完成对第一区块链节点sgx围圈加载的代码的度量。经过度量,正确的evm可以在sgx中执行所述智能合约代码。

步骤104,第一区块链节点在确定所述交易为隐私交易时,使用密钥将所述明文收据数据加密为密文收据数据后,存储所述密文收据数据。

cpu执行所述明文代码后,除了生成相应的明文执行结果之外,还生成明文收据数据。明文收据数据的内容可以包括上文所述的若干字段所含信息,或者其他扩展信息,本说明书并不对此进行限制。

第一区块链节点通过对密文收据数据进行加密,使得只有部分对象(如发起交易的客户端)能够解密得到相应的明文收据数据,而避免明文收据数据被暴露。例如,当某一用户通过客户端向第一区块链节点发起一笔交易,该交易用于查询某一合约状态的取值,那么虽然该交易执行后并不会对该合约状态的取值造成变化,但是该交易执行后产生的收据数据将暴露该用户实施了相关查询操作,因而通过对明文收据数据进行加密,可以保护该用户的隐私。

与相关技术中生成收据树的过程相类似的,上述密文收据数据同样被用于计算收据树的树根,且该树根被包含于所述交易所处区块的区块头中。例如,当采用mpt树状结构时,上述密文收据数据的哈希值将被用于构成收据树的叶子;当然,一些情况下也可以直接存储明文收据数据,那么这些明文收据数据的哈希值同样被用于构成收据树的叶子,这部分情况将在下文详述。

第一区块链节点首先生成明文收据数据,然后将该明文收据数据用密钥加密。所述加密,可以采用对称加密,也可以采用非对称加密。如果第一区块链节点用对称加密方式,即用对称加密算法的对称密钥对明文收据数据加密,则客户端(或其他持有密钥的对象)可以用所述对称加密算法的对称密钥解密所述密文收据数据。

第一区块链节点用对称加密算法的对称密钥对明文收据数据进行加密时,该对称密钥可由客户端预先提供至第一区块链节点。那么,由于只有客户端(实际应当为客户端上的已登录账户对应的用户)和第一区块链节点掌握该对称密钥,使得仅该客户端能够解密相应的加密收据数据,避免无关用户甚至不法分子对加密收据数据进行解密。

例如,客户端在向第一区块链节点发起交易时,如果该交易为隐私交易,客户端可以用对称加密算法的初始密钥对明文交易内容进行加密,以得到该隐私交易;相应地,第一区块链节点可以通过获得该初始密钥,以用于直接或间接对明文收据数据进行加密。譬如,该初始密钥可以由客户端与第一区块链节点预先协商得到,或者由密钥管理服务器发送至客户端和第一区块链节点,或者由客户端发送至第一区块链节点。当初始密钥由客户端发送至第一区块链节点时,客户端可以通过非对称加密算法的公钥对该初始密钥进行加密后,将加密后的初始密钥发送至第一区块链节点,而第一区块链节点通过非对称加密算法的私钥对该加密后的初始密钥进行解密,得到初始密钥,即上文所述的数字信封加密,此处不再赘述。

第一区块链节点可以采用上述的初始密钥对明文收据数据进行加密。不同交易采用的初始密钥可以相同,使得同一用户所提交的所有交易均采用该初始密钥进行加密,或者不同交易采用的初始密钥可以不同,比如客户端可以针对每一交易随机生成一初始密钥,以提升安全性。

第一区块链节点可以根据初始密钥与影响因子生成衍生密钥,并通过该衍生密钥对明文收据数据进行加密。相比于直接采用初始密钥进行加密,衍生密钥可以增加随机度,从而提升被攻破的难度,有助于优化数据的安全保护。影响因子可以与交易相关;例如,影响因子可以包括交易哈希值的指定位,比如第一区块链节点可以将初始密钥与交易哈希值的前16位(或前32位、后16位、后32位,或者其他位)进行拼接,并对拼接后的字符串进行哈希运算,从而生成衍生密钥。

第一区块链节点还可以采用非对称加密方式,即用非对称加密算法的公钥对明文收据数据加密,则相应地,客户端可以用所述非对称加密算法的私钥解密所述密文收据数据。非对称加密算法的密钥,例如可以是由客户端生成一对公钥和私钥,并将公钥预先发送至第一区块链节点,从而第一区块链节点可以将明文收据数据用该公钥加密。

虽然第一区块链节点可以对所有交易对应的明文收据数据进行加密,但是不同用户的需求往往不同,比如一部分用户相对而言更加关注于效率、可以接受对明文收据数据进行存储,另一部分用户相对而言更加关注于隐私、可以接受对收据数据的加解密对效率的影响,那么可以针对不同场景确定是否需要对明文收据数据进行加密。

第一区块链节点可以根据交易类型来确定是否对明文收据数据进行加密。基于上文描述可知,第一区块链节点可以识别客户端提交的交易是否为明文类型或隐私类型。针对隐私交易,第一区块链节点可以使用密钥将该隐私交易对应的明文收据数据加密。例如,第一区块链节点收到交易后,可以通过如图2所示的“交易/查询接口”模块将识别出的隐私交易传入可信执行环境,使得该隐私交易在可信执行环境中被执行,并生成明文收据数据,进而在可信执行环境中对该明文收据数据进行加密,得到密文收据数据。而针对明文交易,第一区块链节点可以直接存储相应的明文收据数据。例如,第一区块链节点收到交易后,可以通过如图2所示的“交易/查询接口”模块将识别出的明文交易在可信执行环境之外的常规执行环境中予以执行,然后以明文形式进行存储。

第一区块链节点通过执行交易得到相应的明文收据数据,并通过密钥将明文收据数据加密为相应的密文收据数据后,可以主动将密文收据数据反馈至发起所述交易的客户端,以作为该交易的回执。第一区块链节点可以存储该密文收据数据,使得客户端可以随时向第一区块链节点请求并获取该密文收据数据。当然,如果交易对应的明文收据数据不需要加密,那么第一区块链节点可以向客户端返回明文收据数据,或者第一区块链节点可以存储明文收据数据,并基于客户端的响应而返回该明文收据数据。

第一区块链节点通过运行用于实现某一功能的代码,以实现该功能。因此,对于需要在可信执行环境中实现的功能,同样需要执行相关代码。而对于在可信执行环境中执行的代码,需要符合可信执行环境的相关规范和要求;相应地,对于相关技术中用于实现某一功能的代码,需要结合可信执行环境的规范和要求重新进行代码编写,不仅存在相对更大的开发量,而且容易在重新编写过程中产生漏洞(bug),影响功能实现的可靠性和稳定性。

因此,第一区块链节点可以通过在所述可信执行环境之外执行存储功能代码,将可信执行环境中生成的密文收据数据存储至所述可信执行环境之外的外部存储空间(当然,可信执行环境中的明文收据数据可能不需要加密,上述存储功能代码同样可以将这部分明文收据数据存储至外部存储空间;此处以密文收据数据的存储过程为例进行说明),使得该存储功能代码可以为相关技术中用于实现存储功能的代码、不需要结合可信执行环境的规范和要求重新进行代码编写,即可针对该密文收据数据实现安全可靠的存储,不仅可以在不影响安全、可靠程度的基础上,减少相关代码的开发量,而且可以通过减少可信执行环境的相关代码而降低tcb(trustedcomputingbase,可信计算基),使得tee技术与区块链技术进行结合的过程中,额外造成的安全风险处于可控范围。

在一实施例中,第一区块链节点可以在可信执行环境内执行写缓存功能代码,以将所述明文收据数据存入所述可信执行环境内的写缓存中,比如该写缓存可以对应于如图2所示的“缓存”。进一步的,第一区块链节点将所述写缓存中的数据加密后从所述可信执行环境输出,以存储至所述外部存储空间。其中,所述写缓存功能代码可以以明文形式存储于所述可信执行环境中,可以直接在可信执行环境中执行该明文形式的缓存功能代码;或,所述写缓存功能代码可以以密文形式存储于所述可信执行环境之外,比如存储于上述的外部存储空间(比如图2所示的“打包+存储”,其中“打包”表示第一区块链节点在可信执行环境之外对交易进行打包成块),可以将该密文形式的写缓存功能代码读入可信执行环境、在可信执行环境中进行解密为明文代码,并执行该明文代码。

写缓存是指在将数据写入外部存储空间时,为了避免造成对外部存储空间的“冲击”而提供的“缓冲”机制。例如,可以采用buffer实现上述的写缓存;当然,写缓存也可以采用cache来实现,本说明书并不对此进行限制。实际上,由于可信执行环境为隔离的安全环境,而外部存储空间位于可信执行环境之外,使得通过采用写缓存机制,可以对缓存内的数据进行批量写入外部存储空间,从而减少可信执行环境与外部存储空间之间的交互次数,提升数据存储效率。同时,可信执行环境在不断执行各条明文交易内容的过程中,可能需要调取已生成的数据,如果需调用的数据恰好位于写缓存中,可以直接从写缓存中读取该数据,这样一方面可以减少与外部存储空间之间的交互,另一方面免去了对从外部存储空间所读取数据的解密过程,从而提升在可信执行环境中的数据处理效率。

当然,也可以将写缓存建立于可信执行环境之外,比如第一区块链节点可以在可信执行环境之外执行写缓存功能代码,从而将所述密文收据数据存入所述可信执行环境外的写缓存中,并进一步将所述写缓存中的数据存储至所述外部存储空间。

在一实施例中,第一区块链节点可以根据客户端发起的查询请求,对所述明文收据数据加密后从可信执行环境输出,以返回至所述客户端。

例如,第一区块链节点可以从所述外部存储空间中读取所述密文收据数据,通过图2所示的交易/查询接口向客户端返回加密后的明文收据数据。

再例如,第一区块链节点可以从可信执行环境内的读缓存中读取所述明文收据数据,并对所述明文收据数据加密后从可信执行环境输出;其中,所述明文收据数据由第一区块链节点预先在可信执行环境内执行读缓存功能代码,从所述外部存储空间中读取所述密文收据数据,将所述密文收据数据解密为所述明文收据数据后,读入所述可信执行环境并存入所述读缓存中。换言之,第一区块链节点从所述外部存储空间中读取所述密文收据数据,将所述密文收据数据解密为所述明文收据数据后,可以通过在可信执行环境内执行读缓存功能代码,将该明文收据数据存入可信执行环境内的读缓存中,比如该读缓存可以对应于图2所示的“缓存”;进一步地,针对客户端发起的查询请求,或者对于可信执行环境在执行明文交易内容时所需的数据,可以优先从该读缓存中进行数据读取,若能读取相关数据则无需从外部存储空间中读取,从而减少与外部存储空间的交互次数、免除数据解密过程。

读缓存是指在将数据从外部存储空间读入可信执行环境后,为了减少与外部存储空间的交互次数,可以将已读取的数据以明文形式存储于可信执行环境中的读缓存空间内。例如,可以采用cache实现上述的读缓存;当然,读缓存也可以采用buffer来实现,本说明书并不对此进行限制。

第一区块链节点可以同时支持上述的读缓存机制和写缓存机制。而随着缓存技术的不断发展,同一缓存可以不仅用于实现数据读取或数据写入,甚至可以同时支持数据的读写操作,使得读缓存与写缓存之间的界线有时并不十分清晰,因而图2中仅以“缓存”进行示意,而并未具体区分其具体类型,可以根据实际需求进行配置和调整。

当然,上述可信执行环境中的缓存机制,同样可以应用于常规执行环境中,例如通过图2所示的常规执行环境中的“缓存”来实现,不过此时的数据读写仅涉及到明文读写,不需要实施数据加解密操作,此处不再赘述。

以下结合图3介绍本说明书一种区块链中实现混合交易的节点实施例,包括:

执行单元301,用于执行从客户端接收的交易,得到明文收据数据;

存储单元302,用于在确定所述交易包含加密标识时,使用密钥将所述明文收据数据加密为密文收据数据后,存储所述密文收据数据。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1