CN110032883A - 区块链中实现隐私保护的方法、***和节点 - Google Patents

区块链中实现隐私保护的方法、***和节点 Download PDF

Info

Publication number
CN110032883A
CN110032883A CN201910100724.6A CN201910100724A CN110032883A CN 110032883 A CN110032883 A CN 110032883A CN 201910100724 A CN201910100724 A CN 201910100724A CN 110032883 A CN110032883 A CN 110032883A
Authority
CN
China
Prior art keywords
block chain
contract
intelligent contract
transaction
chain node
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.)
Granted
Application number
CN201910100724.6A
Other languages
English (en)
Other versions
CN110032883B (zh
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910100724.6A priority Critical patent/CN110032883B/zh
Publication of CN110032883A publication Critical patent/CN110032883A/zh
Application granted granted Critical
Publication of CN110032883B publication Critical patent/CN110032883B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本说明书实施例提供一种区块链中实现隐私保护的方法、***和节点,该方法可以包括:客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。

Description

区块链中实现隐私保护的方法、***和节点
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链中实现隐私保护的方法、***和节点。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。传输网络中的网络节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。这些区块链网络中的节点有时需要增加。
目前企业级的区块链平台技术上最大的两个挑战就是隐私和性能,往往这两个挑战很难同时解决。大多解决方案都是通过损失性能换取隐私,或者不大考虑隐私去追求性能。常见的解决隐私问题的加密技术,如同态加密(Homomorphic encryption)和零知识证明(Zero-knowledge proof)等复杂度高,通用性差,而且还可能带来严重的性能损失。
在解决隐私方面,可信执行环境(Trusted Execution Environment,TEE)是另一种解决方式。TEE可以起到硬件中的黑箱作用,在TEE中执行的代码和数据操作***层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程效率没有损失,因此与TEE相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,包括软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(Software Guard Extensions,软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)。
区块链2.0时代中出现的智能合约,将区块链的应用范围提升到了一个新高度。有了智能合约,区块链能做不再是单一的转账交易,而是还可以调用一段代码,而这段代码可以由用户自定义。
在传统的区块链与TEE相结合的解决方案中,为了实现隐私保护,智能合约整体被当作需要隐私保护的数据在TEE中进行运算并将全部合约状态加密存储在区块链上。而实际上智能合约中部分内容可能是敏感的,才需要进行隐私保护,而其它内容并不敏感,可以公开。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种区块链中实现隐私保护的方法、***和节点。
本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链中实现隐私保护的方法,包括:
客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链中实现隐私保护的方法,包括:
第一区块链节点接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码;
第一区块链节点在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
根据本说明书一个或多个实施例的第三方面,提出了一种区块链中实现隐私保护的***,包括客户端和第一区块链节点,其中:
客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
根据本说明书一个或多个实施例的第四方面,提出了一种区块链中实现隐私保护的节点,包括:
接收单元,用于接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
解密单元,用于解密所述交易以确定对应的智能合约的代码;
执行单元,用于在可信执行环境中执行所述智能合约的代码;
加密单元,用于在存储所述隐私标识符标明的合约状态时,用密钥加密;
确定单元,用于在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述第二方面所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第二方面所述方法的步骤。
附图说明
图1为本说明书一个实施例的创建智能合约的图示过程;
图2为本说明书一个实施例的调用智能合约的图示过程;
图3为本说明书一个实施例中创建智能合约和调用智能合约的示意图;
图4为本说明书一实现隐私保护的方法实施例的流程图;
图5为本说明书一实现隐私保护的方法实施例的流程图;
图6为本说明书一实现隐私保护的***实施例的组成图;
图7为本说明书一实现隐私保护的节点实施例的组成图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化***,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链***上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。交易的data字段保存的可以是字节码,交易的to字段为一个空的账户。节点间通过共识机制达成一致后,这个合约成功创建,后续用户可以调用这个合约。
合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码和账户存储将保存在该合约账户中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
前述提到,包含创建智能合约的交易的data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。高级语言编写的智能合约代码,经过编译器编译,生成字节码,进而该字节码可以部署到区块链上。以太坊支持的高级语言很多,如Solidity、Serpent、LLL语言等。
以Solidity语言为例,用其编写的合约与面向对象编程语言中的类(Class)很相似,在一个合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储中的值,用于保存合约的状态。
如下是以Solidity语言编写的一个简单的智能合约的代码示例1:
一般的,这个合约部署在区块链后,“balance”这个状态变量对应的存储状态是明文,任何人都可以看到其状态,无隐私保护的设置和能力。如果用户想将状态隐私保护起来,目前采用零知识证明、同态加密的解决方案,需要重新改写这个合约,使得“balance”这个状态变量加密保护起来,且需要支持balance在加密域上的所有运算。一般这种加密方式运算复杂,而且很难设计适合的算法在加密域上予以支持。而在有些区块链与TEE相结合的解决方案中,为了实现隐私保护,智能合约的全部合约状态被当作需要隐私保护的数据存储在区块链上。所述区块链,是存储在节点的数据库中特定逻辑组织而成的数据集合。所述数据库,如后所述,其物理载体可以存储介质,例如持久性存储介质。实际上,智能合约中可能只有“balance”这个合约状态是敏感的,才需要进行隐私保护,而其它内容并不敏感,可以公开。
此外,如图2所示,仍以以太坊为例,Bob将一个包含调用智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图中2中交易的from字段是发起调用智能合约的账户的地址,to字段中的“0x692a70d2…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点查看balance的当前值。
智能合约可以通过规定的方式在区块链网络中的每个节点独立地执行,所有执行记录和数据都保存在区块链上,所以当这样的交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式地运行在以太坊网络中每个节点的虚拟机中。
以下结合图4所示说明本说明书一实现隐私保护的方法实施例的实现过程:
S402:客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件。
在编写智能合约代码的过程中,可以采用隐私标识符来标识需要隐私保护的合约状态。
以采用Solidity语言编写“创建智能合约”为例,在编写过程中,可以采用隐私标识符来标识需要隐私保护的合约状态。这里的合约状态例如是编程语言中的状态变量。类似的,在采用Serpent、LLL语言等编写智能合约过程中,也可以采用隐私标识符来标识需要隐私保护的状态变量。
Solidity语言目前主要支持状态变量类型可以是:Booleans,Integers,FixedPoint Numbers,Address,Fixed-size byte array,Address Literals,Rational andinteger Literals,String Literals,Hexadecimal Literals,Enums.
这里的隐私标识符可以是专门标明需要隐私保护的标识符,例如通过Confidential这一关键字表示。那么,如果要对上述Solidity语言支持的状态变量进行隐私保护,可以在前面增加Confidential这一隐私标识符。这样,通过Confidential作为前缀可以标明需要隐私保护的状态变量。例如,Solidity语言支持隐私保护的状态变量类型可以是:Confidential Booleans,Confidential Integers,Confidential Fixed PointNumbers,Confidential Address,Confidential Fixed-size byte array,ConfidentialAddress Literals,Confidential Rational and integer Literals,ConfidentialString Literals,Confidential Hexadecimal Literals,and Confidential Enums。
对上面提到的代码示例1,如果想将“balance”隐私保护起来,可以用隐私标识符Confidential在定义balance的类型int前标明(当然也可以将隐私标识符Confidential置于定义balance的类型int之后),如下代码示例2所示(下划线的部分表示隐私标识符):
基于上述的隐私标识符对需要隐私保护的状态变量进行标识,使得第一区块链节点在读取上述智能合约代码后,可以针对诸如balance对应的合约状态进行隐私保护,譬如通过密钥对balance对应的合约状态进行加密后存储,例如可以存储至第一区块链节点对应的数据库中。
通过对隐私标识符所标明的需要隐私保护的状态变量进行加密存储,使得只有掌握加密时所采用的密钥,才能够解密得到状态变量的明文取值。但如果可以随意向第一区块链节点发起针对已加密的状态变量的访问操作,可能导致增加合约状态的泄露风险。
因此,在编写智能合约代码的过程中,针对上述需要隐私保护的合约状态,可以进一步添加针对该需要隐私保护的合约状态的访问条件,使得用户针对该需要隐私保护的合约状态进行访问时,可以实现相应的访问控制,限制随意访问的情况发生。
智能合约代码中添加的访问条件可以包括人员限制条件,即针对不同人员进行访问权限管理。例如,可以通过定义访问白名单,使得访问请求的发起方处于所述隐私标识符标明的合约状态对应的访问白名单时,才针对该访问请求进行响应,否则可以拒绝响应或采取其他限制措施。
以上述的代码示例2为例,如果需要对被隐私保护的“balance”进行访问控制,可以在getBalance函数中添加相关描述,如下代码示例3所示:
在该代码示例3中,定义了访问白名单为“allowedReaders”,只有位于该allowedReaders中的用户发起访问请求时,第一区块链节点才会返回balance的取值,否则返回空。
类似地,可以通过定义访问黑名单,使得访问请求的发起方不处于所述隐私标识符标明的合约状态对应的访问黑名单时,才针对该访问请求进行响应,否则可以拒绝响应或采取其他限制措施。仍以上述的代码示例2为例,如果需要对被隐私保护的“balance”进行访问控制,可以在getBalance函数中添加相关描述,如下代码示例4所示:
在该代码示例4中,定义了访问黑名单为“forbiddenReaders”,当位于该forbiddenReaders中的用户发起访问请求时,第一区块链节点将会返回空,而其他用户发起访问请求时,第一区块链节点将返回balance的取值。
在上述实施例中,访问白名单或访问黑名单可以被直接记录于上述的智能合约代码中;换言之,用户在编写上述的智能合约代码时,可以在该智能合约代码中添加上述的访问白名单或访问黑名单。或者,访问白名单或访问黑名单可以被记录于另一智能合约中,而上述的智能合约代码中可以对该另一智能合约所记录的访问白名单或访问黑名单进行调用。
智能合约代码中添加的访问条件可以包括状态限制条件,即根据合约状态对访问操作进行管理。
可以根据需要隐私保护的合约状态的取值,限制对该需要隐私保护的合约状态的访问权限;譬如,智能合约代码中可以定义第一预设阈值,使得当需要隐私保护的合约状态的取值达到该第一预设阈值时,允许针对该需要隐私保护的合约状态进行访问,否则不允许。根据需要隐私保护的合约状态的取值变化情况,第一预设阈值可以为取值上限和/或取值下限。
例如,需要隐私保护的合约状态可以存在合理取值范围,而第一预设阈值可以为该合理取值范围的边界值。因此,当该需要保护的合约状态的取值处于合理取值范围、未达到该第一预设阈值时,可以阻止针对该需要保护的合约状态进行访问;而当该需要保护的合约状态的取值达到该第一预设阈值时,表明该取值超出了合理取值范围,可以允许针对该需要保护的合约状态进行访问。
可以根据区别于需要隐私保护的合约状态的其他合约状态的取值,限制对该需要隐私保护的合约状态的访问权限;譬如,智能合约代码中可以定义第二预设阈值,使得该其他合约状态的取值达到该第二预设阈值时,允许针对该需要隐私保护的合约状态进行访问,否则不允许。根据需要隐私保护的合约状态的取值变化情况,第二预设阈值可以为取值上限和/或取值下限。
需要隐私保护的合约状态与该其他合约状态所对应的状态变量可以位于同一智能合约的代码中;或者,需要隐私保护的合约状态所处的智能合约可以对另一智能合约进行调用,而该其他合约状态对应的状态变量可以位于该另一智能合约中。
需要隐私保护的合约状态与该其他合约状态可以存在一定关联,使得可以基于该其他合约状态的取值来控制对需要隐私保护的合约状态的访问操作。例如,需要隐私保护的合约状态与该其他合约状态之间可以满足一定的数值关系,而当该其他合约状态未达到第二预设阈值时,表明需要隐私保护的合约状态的取值处于合理取值范围,可以阻止针对该需要保护的合约状态进行访问;而当该其他合约状态达到第二预设阈值时,表明需要隐私保护的合约状态的取值超出了合理取值范围,可以允许针对该需要保护的合约状态进行访问。
访问条件可以包含多种类型的条件。例如,访问条件可以同时包含上述的人员限制条件和状态限制条件,这些条件之间可以为“且”或“或”的关系,以用于实现对需要隐私保护的合约状态的访问控制。当多个条件之间采用“且”的关系时,需要同时满足这些条件时才能够对需要隐私保护的合约状态进行访问;当多个条件之间采用“或”的关系时,仅需满足这些条件中至少之一,即可对需要隐私保护的合约状态进行访问。
第一区块链节点接收的交易中的智能合约,可以是用户在第一区块链节点上用高级语言编写的智能合约,也可以是接收用户在客户端上用高级语言编写的智能合约,还可以是接收第二区块链节点发来的交易中的智能合约。具体的,可以是所述客户端通过第二区块链节点发来的交易中的智能合约。
如前所述,部署在区块链上的智能合约一般是字节码的形式。如果是用户在第一区块链节点上用高级语言编写的智能合约,则第一区块链节点还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。如果接收用户在客户端上用高级语言编写的智能合约,则用户在客户端上书写智能合约后,所述客户端还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码,进而将字节码形式的智能合约发送至第一区块链节点,这样,第一区块链节点接收的是字节码形式的智能合约。此外,用户在客户端上书写智能合约后,还可以是直接将高级语言编写的智能合约发送到第一区块链节点,进而第一区块链节点可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。对于第一区块链节点接收的第二区块链节点发来的交易中的智能合约,一般来说是字节码形式的智能合约;当然也可以是用高级语言编写的智能合约,进而第一区块链节点可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。
在通过编译器对高级语言编写的智能合约编译的过程中,需要对编译器进行调整,以对隐私标识符标明的合约状态进行处理。
对于代码示例1中的传统的Solidity语言编写智能合约的C()函数部分,编译器编译结果例如为如下所示的代码示例5(/*…*/中…的部分为注释,后面如有汉字则为对应的中文注释):
/*compile function C()balance+=1编译函数C()balance+=1*/
tag_2
/*pushes 1onto stack将1压入栈顶,这个1就是要赋值的1*/
0x1
/*pushes 0onto stack将0压入栈顶,这个0是指balance这个数据将要存储到合约账户数据存储的0号位置。上面这两句执行完后,堆栈里从顶往下,就有了0和1两个数据*/
0x0
/*balance+=1将balance赋值为balance+1后的值*/
dup2/*复制栈中从顶往下数的第二项,所以这时堆栈从顶往上就有了1、0、1三个数据*/
swap1/*交换栈顶的两项数据,这时堆栈从顶往下存储的是0、1、1*/
/*store(0x0,0x1)存储(0x0,0x1),从栈顶往下数,将第二项数据存储到第一项标识的位置上,同时将这两项弹出堆栈。这里便是将数据1存储到0号位置,前面因为已经将balance与0号位置做了绑定,所以就完成了balance=1的赋值。这时堆栈里就只剩一层数据:1*/
sstore
pop/*丢弃栈顶数据,这时堆栈变成空,等待下一条指令的执行*/
对于代码示例2中包含隐私标识符标明合约状态的Solidity语言编写的智能合约,编译器编译结果如下所示的代码示例6(/*…*/中…的部分为注释,汉字为对应的中文):
/*compile function C()balance+=1编译函数C()balance+=1*/
tag_2
/*pushes 1onto stack将1压入栈顶,这个1就是要赋值的1*/
0x1
/*pushes 0onto stack将0压入栈顶,这个0是指balance这个数据将要存储到合约账户数据存储的0号位置。上面这两句执行完后,堆栈里从顶往下,就有了0和1两个数据*/
0x0
/*balance+=1将balance赋值为balance+1后的值*/
dup2/*复制栈中从顶往下数的第二项,所以这时堆栈从顶往上就有了1、0、1三个数据*/
swap1/*交换栈顶的两项数据,这时堆栈从顶往下存储的是0、1、1*/
/*Confidential_sstore(0x0,0x1)加密存储(0x0,0x1),从栈顶往下数,将第二项数据存储到第一项标识的位置上,同时将这两项弹出堆栈。这里即是将数据1存储到0号位置,前面已经将balance与0号位置做了绑定,所以这里就完成了balance=1的赋值。这时堆栈里就只剩一层数据:1*/
Confidential_sstore
pop/*丢弃栈顶数据,这时堆栈变成空,等待下一条指令的执行*/
在上述字节码中,通过隐私标识符Confidential标明了需要进行隐私保护的合约状态balance。
这里的字节码中也采用了Confidential这一个关键词表示需要隐私保护的操作,与Solidity语言编写的智能合约中相同,即与代码示例2中的相同。本领域技术人员明白,字节码中可以采用不同于代码示例2中的隐私标识符,即字节码中可以采用不同于高级语言编写的代码中的隐私标识符。若字节码中采用不同于高级语言编写的代码中的隐私标识符,假设高级语言编写的代码中的隐私标识符为第一标识符,字节码形式的代码中的隐私标识符为第二隐私标识符,则第一隐私标识符与第二隐私标识符存在对应关系。
如前所述,如果是用户在第一区块链节点上直接用高级语言编写智能合约,即第一区块链节点接收的交易对应的智能合约是用高级语言编写的,则第一区块链节点还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。生成的字节码形式的智能合约中,通过隐私标识符在智能合约代码中标明需要进行隐私保护的合约状态。所述高级语言编写的智能合约中包括通过隐私标识符标明了需要进行隐私保护的合约状态。高级语言编写的代码中的隐私标识符对应于字节码形式的代码中的隐私标识符。
如果用户在客户端上用高级语言编写的智能合约,则用户在客户端上书写智能合约后,所述客户端还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码,进而将字节码形式的智能合约发送至第一区块链节点。这样,第一区块链节点接收交易时,该交易对应的智能合约是字节码形式的智能合约。该字节码形式的智能合约中包括通过隐私标识符标明需要进行隐私保护的合约状态。所述高级语言编写的智能合约中包括通过隐私标识符标明了需要进行隐私保护的合约状态。高级语言编写的代码中的隐私标识符对应于字节码形式的代码中的隐私标识符。
此外,用户在客户端上书写智能合约后,还可以是直接将高级语言编写的智能合约发送到第一区块链节点。所述高级语言编写的智能合约中包括通过隐私标识符标明了需要进行隐私保护的合约状态。进而,第一区块链节点可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。生成的字节码形式的智能合约中,通过隐私标识符在智能合约代码中标明需要进行隐私保护的合约状态。高级语言编写的代码中的隐私标识符对应于字节码形式的代码中的隐私标识符。
如前所述,对于第一区块链节点接收的第二区块链节点发来的交易中的智能合约,一般来说是字节码形式的智能合约,当然也不排除是高级语言形式的智能合约。后者可以由第一区块链节点进一步编译而形成字节码。类似的,后者高级语言编写的代码中的隐私标识符对应于字节码形式的代码中的隐私标识符。
客户端可以将包含创建智能合约的交易用密钥加密。所述加密,可以采用对称加密,也可以采用非对称加密。对称加密采用的加密算法,例如是DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等。非对称加密算法,例如是RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
或者,客户端可以将包含创建智能合约的交易用密钥加密,还可以采用对称加密结合非对称加密相结合的方式。例如,客户端采用对称加密算法加密交易内容,即采用对称加密算法的私钥加密包含创建智能合约的交易,并用非对称加密算法加密对称加密算法中采用的私钥。一般的,采用非对称加密算法的私钥加密对称加密算法中采用的私钥。这样,第一区块链节点接收到加密的交易后,可以先采用非对称加密算法的私钥进行解密,得到对称加密算法的私钥,进而用对称加密算法的私钥解密得到交易内容,即得到创建智能合约的代码。
第一区块链节点接收包含智能合约的交易,所述智能合约的代码中包括通过隐私标识符标明的需要进行隐私保护的合约状态。
客户端发送给第一区块链节点的交易中,也可以是包含调用智能合约的交易。对于这种情况,客户端可以将包含调用智能合约的交易用密钥加密,并将加密后的所述交易发给第一区块链节点。被调用的智能合约中可以包括通过隐私标识符标明的合约状态。交易中可以包含被调用的智能合约的合约地址,可以基于该合约地址对相关智能合约进行调用,以获得该智能合约所含的代码。被调用的智能合约可以对其他智能合约进行调用;或者,交易中可以包含智能合约的代码,该代码可以对其他智能合约进行调用,从而形成智能合约之间的多重嵌套结构。当智能合约之间实现多重嵌套结构时,例如智能合约1中的代码调用了智能合约2,而智能合约2中的代码指向了经创建智能合约代码生成的合约地址3,从而,调用智能合约1中的代码间接调用了所述合约地址3中的智能合约代码,而合约地址3中的代码中可以包括通过隐私标识符标明的合约状态。这样,相当于调用智能合约1中包含了通过隐私标识符标明的合约状态。具体实现过程与上述过程类似,在此不再赘述。
客户端发送给第一区块链节点的交易中,也可以是包含创建和调用智能合约的交易。对于这种情况,客户端可以将包含创建和调用智能合约的交易用密钥加密,并将加密后的所述交易发给第一区块链节点,所述智能合约中包括通过隐私标识符标明的合约状态。具体实现过程与上述过程类似,在此不再赘述。
S404:第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
如前所述,第一区块链节点接收的交易,例如可以是用于创建和/或调用智能合约的交易。例如在以太坊中,第一区块链节点接收到客户端发来的交易后,可以检查交易是否有效、格式是否正确,验证交易的签名是否合法等。
一般来说,以太坊中的节点一般也是争夺记账权的节点,因此,第一区块链节点作为争夺记账权的节点可以在本地执行所述交易。如果争夺记账权的节点中的一个在本轮争夺记账权的过程中胜出,则成为记账节点。第一区块链节点如果在本轮争夺记账权的过程中胜出,就成为记账节点;当然,第一区块链节点如果在本轮争夺记账权的过程中没有胜出,则不是记账节点,而其它节点可能成为记账节点。
智能合约类似于面向对象编程中的类,执行的结果生成对应该智能合约的合约实例,类似于生成类对应的对象。执行交易中创建智能合约的代码的过程,会创建合约账户,并在账户空间中部署合约。以太坊中,智能合约账户的地址是由发送者的地址(如图1中的0xf5e…或图2中的0x14c5f88a…)和交易随机数(nonce)作为输入,通过加密算法生成的。图2中的合约地址即由发送者的地址0x14c5f88a…和交易中的nonce经加密算法生成。
一般的,采用工作量证明(Proof of Work,POW)以及股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法的支持智能合约的区块链网络中,争夺记账权的节点都可以在接收到包含创建智能合约的交易后执行所述交易。争夺记账权的节点中可能其中一个在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将该与智能合约相关的交易与其它交易一起打包并生成新的区块,并将生成的新的区块发送至其它节点进行共识。采用、
对于实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等机制的支持智能合约的区块链网络中,具有记账权的节点在本轮记账前已经商定好。因此,第一区块链节点接收到与智能合约相关的交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点(可以是第一区块链节点),在将该与智能合约相关的交易打包并生成新区块的过程中或者之前,或在将该与智能合约相关的交易与其它交易一起打包并生成新区块的过程中或者之前,可以执行所述与智能合约相关的交易。所述记账节点将该与智能合约相关的交易打包(或还包括其它交易一起打包)并生成新的区块后,将生成的新的区块或者区块头发送至其它节点进行共识。
如上所述,采用POW机制的支持智能合约的区块链网络中,或者采用POS、DPOS、PBFT机制的支持智能合约的区块链网络中,本轮的记账节点都可以将该与智能合约相关的交易打包并生成新的区块,并将生成的新的区块或区块头发送至其它节点进行共识。如果其它节点接收到所述区块或区块头后经验证没有问题,可以将该新的区块追加到原有的区块链末尾,从而完成记账过程,达成共识,也就完成了智能合约在区块链网络上的部署。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行所述区块中的与智能合约相关的交易。
所述执行过程,一般可以通过虚拟机执行,例如以太坊中的虚拟机(EthereumVirtual Machine,EVM)。一般的,EVM执行字节码形式的智能合约。当EVM执行到如代码示例5中的sstore时,传统的,是以键值对(key-value pair)的方式将合约状态写入数据库。用代码表示的话,如setstorage(key,value)。
本实施例中,第一区块链节点可以在可信执行环境(Trusted ExecutionEnvironment,TEE)中执行所述解密的智能合约代码。TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作***为应用程序提供可信安全的执行环境。ARM的Trust Zone技术最早实现了真正商用的TEE技术。
伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求。TEE的概念也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE。例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。现在提起的TEE通常更多指这类硬件辅助的TEE技术。不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用TEE的第一步就是要确认TEE的真实可信。因此现在的TEE技术都引入了远程证明机制,由硬件厂商(主要是CPU厂商)背书并通过数字签名技术确保用户对TEE状态可验证。同时仅仅是安全的资源隔离也无法满足的安全需求,进一步的数据隐私保护也被提出。包括Intel SGX,AMD SEV在内的商用TEE也都提供了内存加密技术,将可信硬件限定在CPU内部,总线和内存的数据均是密文防止恶意用户进行窥探。例如,英特尔的软件保护扩展(SGX)等TEE技术隔离了代码执行、远程证明、安全配置、数据的安全存储以及用于执行代码的可信路径。在TEE中运行的应用程序受到安全保护,几乎不可能被第三方访问。
以Intel SGX技术为例,SGX提供了围圈(enclave,也称为飞地),即内存中一个加密的可信执行区域,由CPU保护数据不被窃取。以第一区块链节点采用支持SGX的CPU为例,利用新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),通过CPU内的加密引擎MEE(Memory Encryption Engine)对其中的数据进行加密。EPC中加密的内容只有进入CPU后才会被解密成明文。因此,在SGX中,用户可以不信任操作***、VMM(Virtual Machine Monitor,虚拟机监控器)、甚至BIOS(BasicInput Output System,基本输入输出***),只需要信任CPU便能确保隐私数据不会泄漏。实际应用中,可以将隐私数据加密后以密文形式传递至围圈中,并通过远程证明将对应的秘钥也传入围圈。然后,在CPU的加密保护下利用数据进行运算,结果会以密文形式返回。这种模式下,既可以利用强大的计算力,又不用担心数据泄漏。
如S402中所述,客户端可以将包含与智能合约相关的交易用密钥加密。所述加密,可以采用对称加密,也可以采用非对称加密。S404中,相应地,第一区块链节点可以用对应的密钥解密所述交易。如果S402中客户端用对称加密方式,即用对称加密算法的私钥对交易加密,则S404中,相应地,第一区块链节点可以用所述对称加密算法的私钥解密所述交易。对称加密采用的加密算法,例如是DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等。对称加密算法的密钥,例如可以是由客户端和第一区块链节点协商确定。
如果S402中客户端用非对称加密方式,即用非对称加密算法的私钥对与智能合约相关的交易加密,则S404中,相应地,第一区块链节点可以用所述非对称加密算法的私钥解密所述交易。非对称加密算法,例如是RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。非对称加密算法的密钥,例如可以是由第一区块链节点生成一对公钥和私钥,并将公钥在S402之前发送至所述客户端,从而S402中所述客户端可以将交易用密钥加密。
非对称加密算法的密钥,也可以由一个密钥管理服务器生成。通过远程证明的方式,密钥管理服务器将私钥发送至第一区块链节点,具体的,可以是传入第一区块链节点的围圈中。第一区块链节点可以包含多个围圈,而上述私钥可以被传入这些围圈中的安全围圈;例如,该安全围圈可以为QE(Quoting Enclave)围圈,而非AE(Application Enclave)围圈。对于非对称加密的公钥,可以由密钥管理服务器发送至所述客户端。从而,S402中,所述客户端可以用该公钥加密所述与智能合约相关的交易,相应地,第一区块链节点可以用所述私钥解密所述交易,以得到该交易包含或调用的智能合约的代码。
如S402中所述,客户端也可以采用对称加密结合非对称加密相结合的方式。例如,客户端采用对称加密算法加密交易内容,即采用对称加密算法的私钥加密与智能合约相关的交易,并用非对称加密算法加密对称加密算法中采用的私钥。一般的,采用非对称加密算法的公钥加密对称加密算法中采用的私钥。这样,第一区块链节点接收到加密的交易后,可以先采用非对称加密算法的私钥进行解密,得到对称加密算法的私钥,进而用对称加密算法的私钥解密得到交易内容,从而可以得到智能合约的代码。
例如,密钥管理服务器通过远程证明可以将非对称加密算法的私钥发送至第一区块链节点的围圈,并将非对称加密算法的私钥发送至所述客户端。这样,S402中,所述客户端可以采用对称加密算法的私钥加密交易内容,即采用对称加密算法的私钥加密与智能合约相关的交易,并用非对称加密算法的公钥加密对称加密算法中采用的私钥。进而,所述客户端可以将所述加密后的交易和加密私钥(由非对称加密算法的公钥对所述对称加密算法中采用的私钥进行加密后得到)发送至第一区块链节点。第一区块链节点接收到所述加密后的交易和加密私钥后,可以先用非对称加密算法的私钥对该加密私钥进行解密得到对称加密算法的私钥,进而用该对称加密算法的私钥解密所述交易,得到交易明文,从而确定相关智能合约的代码明文;对于创建智能合约的场景,交易明文中包含用于创建智能合约的代码明文,对于调用智能合约的场景,交易明文中包含用于调用其他智能合约的智能合约代码明文,或者交易明文中包含所需调用的智能合约的地址明文。这里的加密方式一般称为数字信封加密。
这样,第一区块链节点可以在可信执行环境中执行明文的所述智能合约的代码。具体的,第一区块链节点可以利用CPU中新增的处理器指令,在内存中可以分配一部分区域EPC,通过CPU内的加密引擎MEE对上述解密得到的明文代码进行加密存入所述EPC中。EPC中加密的内容进入CPU后被解密成明文。在CPU中,对所述明文的代码进行运算,完成执行过程。
SGX技术中,执行所述智能合约的代码,可以将EVM加载进所述围圈中。在远程证明过程中,所述密钥管理服务器可以计算本地EVM代码的hash值,并与第一区块链节点中加载的EVM代码的hash值比对,比对结果正确作为通过远程证明的一个必要条件,从而完成对第一区块链节点SGX围圈加载的代码的度量。经过度量,正确的EVM可以在SGX中执行所述智能合约代码。
一般的,CPU执行所述明文代码后,所述合约状态会发生变化。在可信执行环境中执行所述智能合约的明文代码,所述智能合约中通过隐私标识符标明的合约状态,其状态也会发生变化。
将合约状态存入区块链,从区块链节点的角度,是将该合约状态写入数据库,例如本地的数据库。所述数据库,一般存储于存储介质之中,更多见的是持久性存储介质。所述持久性存储介质,可以是磁盘、软盘,也可以是通电后可恢复数据从而可以持久存储的内存之类。
写入数据库的操作,用代码表示的话,如setstorage(key,ENC(value,secret_key))。setstorage(key,ENC(value,secret_key))中,键(key)可以与传统的键写入方式相同。至于value的写入,可以采用Intel SGX技术,ENC表示enclave,secret_key表示采用SGX技术中写入数据库时采用的密钥。所述密钥可以是对称加密的密钥,例如是seal(SimpleEncrypted Arithmetic Library)密钥。所述seal密钥,例如可以是通过远程证明后由密钥管理服务器发送给第一区块链节点,再例如可以是区块链中的各个节点(如第一区块链节点与其他区块链节点)之间协商得到。所述密钥也可以是非对称加密的密钥。所述密钥可以被存储于第一区块链节点的围圈中。第一区块链节点可以包含多个围圈,而上述私钥可以被传入这些围圈中的安全围圈;例如,该安全围圈可以为QE围圈,而非AE围圈。
这样,对于智能合约代码中通过所述隐私标识符标明的合约状态,可以加密存储在所述数据库中。对于智能合约代码中没有通过所述隐私标识符标明的合约状态,可以仍然是明文存储在所述数据库中。相对于现有技术中智能合约的全部合约状态被当做需要隐私保护的数据在TEE中运算并存储在数据库中,本实施例可以灵活的针对标明隐私保护的合约状态进行加密存储。
同时,通过在智能合约中添加针对该需要隐私保护的合约状态的访问条件,使得用户针对该需要隐私保护的合约状态进行访问时,可以基于访问条件对该用户的访问操作加以控制,限制对该需要隐私保护的合约状态进行随意访问,从而有助于降低合约状态的泄露风险,提升数据安全性。
以下附图5说明本说明书一实现隐私保护的方法实施例。该实施例侧重从第一区块链节点的角度描述实现过程。如图5所示,该方法实施例包括:
S502:第一区块链节点接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件。
如前所述,所述合约状态,可以包括采用的编程语言编写的代码中的状态变量。以用户采用Solidity语言编写“创建智能合约”为例,在编写过程中,可以采用隐私标识符来标识需要隐私保护的合约状态。这里的合约状态例如是编程语言中的状态变量。这里的隐私标识符可以是专门标明需要隐私保护的标识符,例如通过Confidential这一关键字表示。那么,如果要对上述Solidity语言支持的状态变量进行隐私保护,可以在前面增加Confidential这一隐私标识符。这样,通过Confidential作为前缀可以标明需要隐私保护的状态变量。
如前所述,在编写智能合约代码的过程中,针对上述需要隐私保护的合约状态,可以进一步添加针对该需要隐私保护的合约状态的访问条件,使得用户针对该需要隐私保护的合约状态进行访问时,可以实现相应的访问控制,限制随意访问的情况发生。比如该访问条件可以包括人员限制条件、状态限制条件,或者同时包括人员限制条件和状态限制条件等,可以从一个或多个维度对访问发起方进行有效的访问控制。
第一区块链节点接收的交易对应的智能合约,可以包括:
用户在第一区块链节点上用高级语言编写的智能合约;或,
用户在客户端上用高级语言编写的智能合约;或,
第二区块链节点发来的交易中的智能合约。
如前所述,部署在区块链上的智能合约一般是字节码的形式。如果是用户在第一区块链节点上直接用高级语言编写智能合约,则第一区块链节点还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。如果接收用户在客户端上用高级语言编写的智能合约,则用户在客户端上书写智能合约后,所述客户端还可以采用编译器对高级语言编写的智能合约进行编译,生成字节码,进而将字节码形式的智能合约发送至第一区块链节点,这样,第一区块链节点接收的是字节码形式的智能合约。此外,用户在客户端上书写智能合约后,还可以是直接将高级语言编写的智能合约发送到第一区块链节点,进而第一区块链节点可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。对于第一区块链节点接收的第二区块链节点发来的交易中的智能合约,一般来说是字节码形式的智能合约;当然也可以是用高级语言编写的智能合约,进而第一区块链节点可以采用编译器对高级语言编写的智能合约进行编译,生成字节码。
在通过编译器对高级语言编写的智能合约编译的过程中,需要对编译器进行调整,以对隐私标识符标明的合约状态进行处理。具体请参见图4对应的实施例。如前述代码示例5、6中,编译后的字节码中也采用了Confidential这一个关键词表示需要隐私保护的操作,与Solidity语言编写的智能合约中相同,即与代码示例2中的相同。本领域技术人员明白,字节码中可以采用不同于代码示例2中的隐私标识符,即字节码中可以采用不同于高级语言编写的代码中的隐私标识符。即使字节码中采用不同于高级语言编写的代码中的隐私标识符,假设高级语言编写的代码中的隐私标识符为第一标识符,字节码形式的代码中的隐私标识符为第二隐私标识符,则第一隐私标识符与第二隐私标识符存在对应关系。
第一区块链节点接收的经过加密的与智能合约相关的交易,所述加密方式采用对称加密方式或非对称加密方式,或采用对称加密结合非对称加密的方式。例如,客户端可以将上述交易用密钥加密。所述加密,可以采用对称加密,也可以采用非对称加密。或者,客户端可以采用对称加密结合非对称加密相结合的方式。用对称加密的私钥对上述交易加密时,第一区块链节点用对应的对称加密的私钥解密所述交易得到所述智能合约的代码;或,用非对称加密算法的私钥对上述交易进行加密时,第一区块链节点用对应的非对称加密算法的私钥解密所述交易得到所述智能合约的代码。所述对称加密结合非对称加密的方式,包括数字信封加密方式。
对于采用对称加密算法的私钥加密包含智能合约的交易,并用非对称加密算法的私钥加密对称加密算法中采用的私钥,第一区块链节点可以采用非对称加密算法的私钥进行解密得到对称加密算法的私钥,并用所述对称加密算法的私钥解密得到交易内容。所述对称加密算法的私钥,以由加密方与第一区块链节点协商得到,或由密钥管理服务器发送得到。所述对称加密算法的私钥也可以由加密方生成,密钥管理服务器通过远程证明将所述非对称加密算法的私钥发送至第一区块链节点的围圈,将所述非对称加密算法的私钥发送至所述加密方。
S504:第一区块链节点解密所述交易以确定对应的智能合约的代码。
解密过程如上所述,不再赘述。
S506:第一区块链节点在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
第一区块链节点可以利用CPU中新增的处理器指令,在内存中可以分配一部分区域EPC,通过CPU内的加密引擎MEE对上述解密得到的明文代码进行加密存入所述EPC中。EPC中加密的内容进入CPU后被解密成明文。在CPU中,对所述明文的代码进行运算,完成执行过程。
SGX技术中,执行所述智能合约的代码,可以将EVM加载进所述围圈中。远程证明过程中,所述密钥管理服务器可以计算本地EVM代码的hash值,并与第一区块链节点中加载的EVM代码的hash值比对,比对结果正确作为通过远程证明的一个必要条件,从而完成对第一区块链节点SGX围圈加载的代码的度量。经过度量,正确的EVM可以在SGX中执行所述智能合约代码。
一般的,CPU执行所述明文代码后,所述合约状态会发生变化。在可信执行环境中执行所述智能合约的明文代码,所述智能合约中通过隐私标识符标明的合约状态,其状态也会发生变化。
从区块链节点的角度,是将该合约状态写入数据库,例如本地的数据库。所述数据库,一般存储于存储介质之中,更多见的是持久性存储介质。所述持久性存储介质,可以是磁盘、软盘,也可以是通电后可恢复数据从而可以持久存储的内存之类。
所述密钥包括对称加密的密钥或非对称加密的密钥。所述对称加密的密钥包括seal密钥。所述seal密钥可以在第一区块链节点的SGX通过远程证明后由密钥管理服务器发送。
上述实施例中提到的编译器,适用于编译型语言。即,代码在运行前,需要整体由编译器将人类可以理解的语言(编程语言)转换成机器可以理解的语言。进而,经编译后的代码由虚拟机执行,如上述EVM。编译型语言编写的应用在编译后能直接运行。编译型语言的特点是运行速度快,效率高。
此外,还存在一种解释型语言。这类解释型语言也是人类可以理解的语言(编程语言),也需要转换成机器可以理解的语言才能执行,但是转换操作发生在运行时。换句话说,解释型语言是直接以源代码的形式出现,运行的时候再实时解析为机器码并执行。解释型语言的程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。解释型语言每执行一次就要翻译一次,效率比较低。例如JavaScript即属于解释型语言,这就表示每句代码只有在运行时,***才知道这句代码是否有错。换句话说,由于编译型语言在运行前进行了编译,编译器对所有代码都进行了检查,这样就不会产生一些低级错误,例如使用了不存在的名字,或者使用了错误的名字。而JavaScript就可能会出现这些问题。
上述实施例中,可以用解释型语言代替编译型语言。即第一区块链节点接收到的可以是解释型语言编写的智能合约代码,不需要经过编译器编译。执行时,可以由解释器执行智能合约代码。解释器例如是JVM(Java Virtual Machine,Java虚拟机)这种JIT编译(Just In Time compilation)。
类似的,SGX技术中,执行所述智能合约的代码,可以将JVM加载进所述围圈中。远程证明过程中,所述密钥管理服务器可以计算本地JVM代码的hash值,并与第一区块链节点中加载的JVM代码的hash值比对,比对结果正确作为通过远程证明的一个必要条件,从而完成对第一区块链节点SGX围圈加载的代码的度量。经过度量,正确的JVM可以在SGX中执行所述智能合约代码。
以下结合图6,介绍本说明书一种区块链中实现隐私保护的***实施例。该实施例中,所述实现隐私保护的***包括客户端601和第一区块链节点602,其中:
客户端601将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点602解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
其中,所述访问条件包括下述人员限制条件:所述访问请求的发起方处于所述隐私标识符标明的合约状态对应的访问白名单中;或,所述访问请求的发起方未处于所述隐私标识符标明的合约状态对应的访问黑名单中。所述访问白名单或所述访问黑名单位于所述交易对应的智能合约中;或,所述访问白名单或所述访问黑名单位于所述交易对应的智能合约所调用的另一智能合约中。
其中,所述访问条件包括下述状态限制条件:所述隐私标识符标明的合约状态的取值达到第一预设阈值;或,区别于所述隐私标识符标明的合约状态的其他合约状态的取值达到第二预设阈值。
以下结合图7介绍本说明书一种区块链中实现隐私保护的节点实施例,包括:
接收单元701,用于接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
解密单元702,用于解密所述交易以确定对应的智能合约的代码;
执行单元703,用于在可信执行环境中执行所述智能合约的代码;
加密单元704,用于在存储所述隐私标识符标明的合约状态时,用密钥加密;
确定单元705,用于在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
其中,所述访问条件包括下述人员限制条件:所述访问请求的发起方处于所述隐私标识符标明的合约状态对应的访问白名单中;或,所述访问请求的发起方未处于所述隐私标识符标明的合约状态对应的访问黑名单中。所述访问白名单或所述访问黑名单位于所述交易对应的智能合约中;或,所述访问白名单或所述访问黑名单位于所述交易对应的智能合约所调用的另一智能合约中。
其中,所述访问条件包括下述状态限制条件:所述隐私标识符标明的合约状态的取值达到第一预设阈值;或,区别于所述隐私标识符标明的合约状态的其他合约状态的取值达到第二预设阈值。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (58)

1.一种区块链中实现隐私保护的方法,包括:
客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
2.根据权利要求1所述的方法,所述访问条件包括下述人员限制条件:
所述访问请求的发起方处于所述隐私标识符标明的合约状态对应的访问白名单中;或,
所述访问请求的发起方未处于所述隐私标识符标明的合约状态对应的访问黑名单中。
3.根据权利要求2所述的方法,
所述访问白名单或所述访问黑名单位于所述交易对应的智能合约中;或,
所述访问白名单或所述访问黑名单位于所述交易对应的智能合约所调用的另一智能合约中。
4.根据权利要求1所述的方法,所述访问条件包括下述状态限制条件:
所述隐私标识符标明的合约状态的取值达到第一预设阈值;或,
区别于所述隐私标识符标明的合约状态的其他合约状态的取值达到第二预设阈值。
5.根据权利要求1所述的方法,所述密钥包括对称加密算法的密钥或非对称加密算法的密钥。
6.根据权利要求5所述的方法,所述对称加密算法的密钥包括seal密钥。
7.根据权利要求6所述的方法,
所述seal密钥在第一区块链节点的SGX通过远程证明后由密钥管理服务器发送;或,
所述seal密钥由第一区块链节点与其他区块链节点之间协商得到。
8.根据权利要求1所述的方法,所述密钥存储于第一区块链节点的围圈中。
9.根据权利要求8所述的方法,第一区块链节点存在若干围圈,所述密钥存储于安全围圈中。
10.根据权利要求9所述的方法,所述安全围圈包括QE围圈。
11.根据权利要求1所述的方法,所述交易对应的智能合约包括:
用户在第一区块链节点上用高级语言编写的智能合约;或,
用户在客户端上用高级语言编写的智能合约;或,
客户端通过第二区块链节点发来的交易中的智能合约。
12.根据权利要求11所述的方法,还包括:
针对用户在第一区块链节点上用高级语言编写的智能合约,第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
13.根据权利要求11所述的方法,针对用户在客户端上用高级语言编写的智能合约,所述客户端还采用编译器对高级语言编写的智能合约进行编译,生成字节码,进而将字节码形式的智能合约发送至第一区块链节点;
相应地,第一区块链节点接收所述交易时,所述交易对应的智能合约为字节码形式的智能合约。
14.根据权利要求11所述的方法,针对用户在客户端上用高级语言编写的智能合约,所述客户端将所述高级语言编写的智能合约发送到第一区块链节点;相应地,第一区块链节点接收所述交易时,所述交易对应的智能合约为高级语言形式的智能合约;所述方法还包括:
第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
15.根据权利要求11所述的方法,所述客户端通过第二区块链节点发来的交易中的智能合约,包括字节码形式的智能合约或用高级语言编写的智能合约。
16.根据权利要求15所述的方法,还包括:
针对第二区块链节点发来的用高级语言编写的智能合约,第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
17.根据权利要求12-16中任一项所述的方法,所述高级语言形式的智能合约中包括通过第一隐私标识符标明的需要进行隐私保护的合约状态,所述字节码形式的智能合约中包括通过第二隐私标识符标明的需要进行隐私保护的合约状态;
第一隐私标识符与第二隐私标识符相同或存在对应关系。
18.根据权利要求1所述的方法,所述客户端将所述交易加密时,加密方式采用对称加密方式或非对称加密方式,或采用对称加密结合非对称加密的方式。
19.根据权利要求18所述的方法,所述客户端将所述交易用对称加密算法的私钥加密,第一区块链节点用所述对称加密算法的私钥解密所述交易,以确定出所述智能合约的代码;或,
所述客户端将所述交易用非对称加密算法的私钥加密,第一区块链节点用所述非对称加密算法的私钥解密所述交易,以确定出所述智能合约的代码。
20.根据权利要求18所述的方法,所述对称加密结合非对称加密的方式,包括数字信封加密方式。
21.根据权利要求20所述的方法,所述客户端采用对称加密算法的私钥加密所述交易,并用非对称加密算法的私钥加密对称加密算法中采用的私钥;
相应地,第一区块链节点接收到所述加密的交易后,采用非对称加密算法的私钥进行解密得到对称加密算法的私钥,并用所述对称加密算法的私钥解密得到交易内容。
22.根据权利要求19或21所述的方法,所述对称加密算法的私钥,由所述客户端与第一区块链节点协商得到,或由密钥管理服务器发送得到。
23.根据权利要求21所述的方法,所述对称加密算法的私钥由所述客户端生成,密钥管理服务器通过远程证明将所述非对称加密算法的私钥发送至第一区块链节点的围圈,将所述非对称加密算法的私钥发送至所述客户端。
24.根据权利要求1所述的方法,所述交易用于创建和/或调用智能合约。
25.根据权利要求1所述的方法,所述隐私标识符标明的合约状态存储于持久性存储介质。
26.根据权利要求25所述的方法,所述持久性存储介质包括磁盘、软盘或通电后可恢复数据从而可以持久存储的内存。
27.根据权利要求1所述的方法,所述可信执行环境包括Intel SGX或AMD SEV或ARMTrustzone。
28.一种区块链中实现隐私保护的方法,包括:
第一区块链节点接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码;
第一区块链节点在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
29.根据权利要求28所述的方法,所述访问条件包括下述人员限制条件:
所述访问请求的发起方处于所述隐私标识符标明的合约状态对应的访问白名单中;或,
所述访问请求的发起方未处于所述隐私标识符标明的合约状态对应的访问黑名单中。
30.根据权利要求29所述的方法,
所述访问白名单或所述访问黑名单位于所述交易对应的智能合约中;或,
所述访问白名单或所述访问黑名单位于所述交易对应的智能合约所调用的另一智能合约中。
31.根据权利要求28所述的方法,所述访问条件包括下述状态限制条件:
所述隐私标识符标明的合约状态的取值达到第一预设阈值;或,
区别于所述隐私标识符标明的合约状态的其他合约状态的取值达到第二预设阈值。
32.根据权利要求28所述的方法,所述密钥包括对称加密算法的密钥或非对称加密算法的密钥。
33.根据权利要求32所述的方法,所述对称加密算法的密钥包括seal密钥。
34.根据权利要求33所述的方法,
所述seal密钥在第一区块链节点的SGX通过远程证明后由密钥管理服务器发送;或,
所述seal密钥由第一区块链节点与其他区块链节点之间协商得到。
35.根据权利要求28所述的方法,所述密钥存储于第一区块链节点的围圈中。
36.根据权利要求35所述的方法,第一区块链节点存在若干围圈,所述密钥存储于安全围圈中。
37.根据权利要求36所述的方法,所述安全围圈包括QE围圈。
38.根据权利要求28所述的方法,所述交易对应的智能合约包括:
用户在第一区块链节点上用高级语言编写的智能合约;或,
用户在客户端上用高级语言编写的智能合约;或,
客户端通过第二区块链节点发来的交易中的智能合约。
39.根据权利要求38所述的方法,还包括:
针对用户在第一区块链节点上用高级语言编写的智能合约,第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
40.根据权利要求38所述的方法,针对用户在客户端上用高级语言编写的智能合约,所述客户端还采用编译器对高级语言编写的智能合约进行编译,生成字节码,进而将字节码形式的智能合约发送至第一区块链节点;
相应地,第一区块链节点接收所述交易时,所述交易对应的智能合约为字节码形式的智能合约。
41.根据权利要求38所述的方法,针对用户在客户端上用高级语言编写的智能合约,所述客户端将所述高级语言编写的智能合约发送到第一区块链节点;相应地,第一区块链节点接收所述交易时,所述交易对应的智能合约为高级语言形式的智能合约;所述方法还包括:
第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
42.根据权利要求38所述的方法,所述客户端通过第二区块链节点发来的交易中的智能合约,包括字节码形式的智能合约或用高级语言编写的智能合约。
43.根据权利要求42所述的方法,还包括:
针对第二区块链节点发来的用高级语言编写的智能合约,第一区块链节点采用编译器对所述高级语言编写的智能合约进行编译,生成字节码。
44.根据权利要求39-43中任一项所述的方法,所述高级语言形式的智能合约中包括通过第一隐私标识符标明的需要进行隐私保护的合约状态,所述字节码形式的智能合约中包括通过第二隐私标识符标明的需要进行隐私保护的合约状态;
第一隐私标识符与第二隐私标识符相同或存在对应关系。
45.根据权利要求28所述的方法,所述客户端将所述交易加密时,加密方式采用对称加密方式或非对称加密方式,或采用对称加密结合非对称加密的方式。
46.根据权利要求45所述的方法,所述客户端将所述交易用对称加密算法的私钥加密,第一区块链节点用所述对称加密算法的私钥解密所述交易,以确定出所述智能合约的代码;或,
所述客户端将所述交易用非对称加密算法的私钥加密,第一区块链节点用所述非对称加密算法的私钥解密所述交易,以确定出所述智能合约的代码。
47.根据权利要求45所述的方法,所述对称加密结合非对称加密的方式,包括数字信封加密方式。
48.根据权利要求47所述的方法,所述客户端采用对称加密算法的私钥加密所述交易,并用非对称加密算法的私钥加密对称加密算法中采用的私钥;
相应地,第一区块链节点接收到所述加密的交易后,采用非对称加密算法的私钥进行解密得到对称加密算法的私钥,并用所述对称加密算法的私钥解密得到交易内容。
49.根据权利要求46或48所述的方法,所述对称加密算法的私钥,由所述客户端与第一区块链节点协商得到,或由密钥管理服务器发送得到。
50.根据权利要求48所述的方法,所述对称加密算法的私钥由所述客户端生成,密钥管理服务器通过远程证明将所述非对称加密算法的私钥发送至第一区块链节点的围圈,将所述非对称加密算法的私钥发送至所述客户端。
51.根据权利要求28所述的方法,所述交易用于创建和/或调用智能合约。
52.根据权利要求28所述的方法,所述隐私标识符标明的合约状态存储于持久性存储介质。
53.根据权利要求52所述的方法,所述持久性存储介质包括磁盘、软盘或通电后可恢复数据从而可以持久存储的内存。
54.根据权利要求28所述的方法,所述可信执行环境包括Intel SGX或AMD SEV或ARMTrustzone。
55.一种区块链中实现隐私保护的***,包括客户端和第一区块链节点,其中:
客户端将交易加密后发送至第一区块链节点,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
第一区块链节点解密所述交易以确定对应的智能合约的代码,在可信执行环境中执行所述智能合约的代码;在存储所述隐私标识符标明的合约状态时,用密钥加密;在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
56.一种区块链中实现隐私保护的节点,包括:
接收单元,用于接收经过加密的交易,所述交易对应的智能合约的代码中包含通过隐私标识符标明的合约状态、针对所述隐私标识符标明的合约状态的访问条件;
解密单元,用于解密所述交易以确定对应的智能合约的代码;
执行单元,用于在可信执行环境中执行所述智能合约的代码;
加密单元,用于在存储所述隐私标识符标明的合约状态时,用密钥加密;
确定单元,用于在响应于针对所述隐私标识符标明的合约状态的访问请求时,确定所述访问条件被满足。
57.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求28-54中任一项所述的方法。
58.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求28-54中任一项所述方法的步骤。
CN201910100724.6A 2019-01-31 2019-01-31 区块链中实现隐私保护的方法、***和节点 Active CN110032883B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910100724.6A CN110032883B (zh) 2019-01-31 2019-01-31 区块链中实现隐私保护的方法、***和节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910100724.6A CN110032883B (zh) 2019-01-31 2019-01-31 区块链中实现隐私保护的方法、***和节点

Publications (2)

Publication Number Publication Date
CN110032883A true CN110032883A (zh) 2019-07-19
CN110032883B CN110032883B (zh) 2020-05-29

Family

ID=67235552

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910100724.6A Active CN110032883B (zh) 2019-01-31 2019-01-31 区块链中实现隐私保护的方法、***和节点

Country Status (1)

Country Link
CN (1) CN110032883B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110766550A (zh) * 2019-09-05 2020-02-07 阿里巴巴集团控股有限公司 基于区块链的资产查询方法及装置、电子设备
CN110990855A (zh) * 2019-12-02 2020-04-10 中国银行股份有限公司 区块链信息记录和查询方法、装置、***
CN111090888A (zh) * 2020-03-18 2020-05-01 支付宝(杭州)信息技术有限公司 验证合约的方法及装置
CN111125741A (zh) * 2019-12-31 2020-05-08 广东卓启投资有限责任公司 一种基于区块链零知识验证方法
WO2020108138A1 (zh) * 2018-11-30 2020-06-04 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法
CN111523110A (zh) * 2019-11-08 2020-08-11 支付宝(杭州)信息技术有限公司 基于链代码的权限查询配置方法及装置
CN111563253A (zh) * 2020-07-16 2020-08-21 百度在线网络技术(北京)有限公司 智能合约运行方法、装置、设备及存储介质
CN111737256A (zh) * 2020-06-12 2020-10-02 北京众享比特科技有限公司 一种基于可信执行环境和区块链的数据库表操作方法和***
CN111770206A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN111768184A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法及区块链节点
CN111770205A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、***和存储介质
CN111770113A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN111815310A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111814202A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111931251A (zh) * 2020-07-01 2020-11-13 陈子祺 一种基于区块链的可信计算芯片
CN113360883A (zh) * 2021-06-10 2021-09-07 网易(杭州)网络有限公司 一种智能合约的处理方法、装置、计算机设备及存储介质
US11301222B2 (en) 2020-08-31 2022-04-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11327732B2 (en) 2020-08-31 2022-05-10 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11379830B2 (en) 2020-08-31 2022-07-05 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
TWI829963B (zh) * 2019-09-20 2024-01-21 南韓商三星電子股份有限公司 用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
CN107342858A (zh) * 2017-07-05 2017-11-10 武汉凤链科技有限公司 一种基于可信环境的智能合约保护方法和***
CN108776936A (zh) * 2018-06-05 2018-11-09 中国平安人寿保险股份有限公司 保险理赔方法、装置、计算机设备和存储介质
US20180326291A1 (en) * 2016-05-02 2018-11-15 Bao Tran Smart device
CN109214197A (zh) * 2018-08-14 2019-01-15 上海点融信息科技有限责任公司 基于区块链来处理隐私数据的方法、装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
US20180326291A1 (en) * 2016-05-02 2018-11-15 Bao Tran Smart device
CN107342858A (zh) * 2017-07-05 2017-11-10 武汉凤链科技有限公司 一种基于可信环境的智能合约保护方法和***
CN108776936A (zh) * 2018-06-05 2018-11-09 中国平安人寿保险股份有限公司 保险理赔方法、装置、计算机设备和存储介质
CN109214197A (zh) * 2018-08-14 2019-01-15 上海点融信息科技有限责任公司 基于区块链来处理隐私数据的方法、装置及存储介质

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11049099B2 (en) 2018-11-30 2021-06-29 Advanced New Technologies Co., Ltd. Methods for implementing privacy protection in blockchain
WO2020108138A1 (zh) * 2018-11-30 2020-06-04 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法
CN110766550A (zh) * 2019-09-05 2020-02-07 阿里巴巴集团控股有限公司 基于区块链的资产查询方法及装置、电子设备
CN110766550B (zh) * 2019-09-05 2021-06-22 创新先进技术有限公司 基于区块链的资产查询方法及装置、电子设备
TWI829963B (zh) * 2019-09-20 2024-01-21 南韓商三星電子股份有限公司 用於在鍵值鏈中鏈接多個鍵值區塊的方法、系統以及非暫時性電腦可讀媒體
CN111523110A (zh) * 2019-11-08 2020-08-11 支付宝(杭州)信息技术有限公司 基于链代码的权限查询配置方法及装置
CN111523110B (zh) * 2019-11-08 2023-05-02 支付宝(杭州)信息技术有限公司 基于链代码的权限查询配置方法及装置
CN110990855A (zh) * 2019-12-02 2020-04-10 中国银行股份有限公司 区块链信息记录和查询方法、装置、***
CN111125741A (zh) * 2019-12-31 2020-05-08 广东卓启投资有限责任公司 一种基于区块链零知识验证方法
CN111125741B (zh) * 2019-12-31 2022-07-01 广东卓启投资有限责任公司 一种基于区块链零知识验证方法
CN111090888A (zh) * 2020-03-18 2020-05-01 支付宝(杭州)信息技术有限公司 验证合约的方法及装置
CN111737256A (zh) * 2020-06-12 2020-10-02 北京众享比特科技有限公司 一种基于可信执行环境和区块链的数据库表操作方法和***
CN111931251B (zh) * 2020-07-01 2024-01-12 陈子祺 一种基于区块链的可信计算芯片
CN111931251A (zh) * 2020-07-01 2020-11-13 陈子祺 一种基于区块链的可信计算芯片
CN111563253A (zh) * 2020-07-16 2020-08-21 百度在线网络技术(北京)有限公司 智能合约运行方法、装置、设备及存储介质
CN111770206A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
US11513827B2 (en) 2020-08-31 2022-11-29 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes and storage media for executing smart contracts
CN111770206B (zh) * 2020-08-31 2020-12-29 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN111770205B (zh) * 2020-08-31 2020-12-04 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、***和存储介质
CN111814202A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768184A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法及区块链节点
US11301222B2 (en) 2020-08-31 2022-04-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11327732B2 (en) 2020-08-31 2022-05-10 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11366677B2 (en) 2020-08-31 2022-06-21 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, and node devices for executing smart contract
CN111815310A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
US11379830B2 (en) 2020-08-31 2022-07-05 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11385917B2 (en) 2020-08-31 2022-07-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract and blockchain node
US11416272B2 (en) 2020-08-31 2022-08-16 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, systems and storage media for executing smart contract
CN111814202B (zh) * 2020-08-31 2020-12-11 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
US11513780B2 (en) 2020-08-31 2022-11-29 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes and storage media for deploying smart contract
US11544044B2 (en) 2020-08-31 2023-01-03 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, and storage media for executing smart contract
CN111770113A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN111770205A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、***和存储介质
CN113360883A (zh) * 2021-06-10 2021-09-07 网易(杭州)网络有限公司 一种智能合约的处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN110032883B (zh) 2020-05-29

Similar Documents

Publication Publication Date Title
CN110032883A (zh) 区块链中实现隐私保护的方法、***和节点
CN110033368A (zh) 区块链中实现隐私保护的方法
CN110266467B (zh) 基于区块高度实现动态加密的方法及装置
CN110245506A (zh) 基于区块链的智能合约管理方法及装置、电子设备
CN109831298A (zh) 区块链中安全更新密钥的方法及节点、存储介质
CN110020855A (zh) 区块链中实现隐私保护的方法、节点、存储介质
CN110033267A (zh) 区块链中实现隐私保护的方法、节点、***和存储介质
CN110008736A (zh) 区块链中实现隐私保护的方法及节点、存储介质
CN110245944B (zh) 基于用户类型的收据存储方法和节点
CN109886682A (zh) 区块链中实现合约调用的方法及节点、存储介质
CN110020856B (zh) 区块链中实现混合交易的方法、节点和存储介质
CN110008735A (zh) 区块链中实现合约调用的方法及节点、存储介质
CN110223172A (zh) 有条件的结合代码标注与类型维度的收据存储方法和节点
CN110263544A (zh) 结合交易类型和判断条件的收据存储方法和节点
CN110264195A (zh) 结合代码标注与交易、用户类型的收据存储方法和节点
CN110060054A (zh) 区块链中实现隐私保护的方法、节点、***和存储介质
CN110032884A (zh) 区块链中实现隐私保护的方法及节点、存储介质
CN110245947A (zh) 结合交易与用户类型的条件限制的收据存储方法和节点
CN110266644A (zh) 结合代码标注与交易类型的收据存储方法和节点
CN110278193A (zh) 结合代码标注与交易、事件类型的收据存储方法和节点
CN110245489A (zh) 基于明文日志的收据存储方法、节点和***
CN110245945A (zh) 结合代码标注与用户类型的收据存储方法和节点
CN110263086A (zh) 结合用户类型与事件函数类型的收据存储方法和节点
CN110263087A (zh) 基于多维度信息且具有条件限制的收据存储方法和节点
CN110264196A (zh) 结合代码标注与用户类型的有条件的收据存储方法和节点

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010909

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.