CN110580413A - 基于链下授权的隐私数据查询方法及装置 - Google Patents

基于链下授权的隐私数据查询方法及装置 Download PDF

Info

Publication number
CN110580413A
CN110580413A CN201911085168.6A CN201911085168A CN110580413A CN 110580413 A CN110580413 A CN 110580413A CN 201911085168 A CN201911085168 A CN 201911085168A CN 110580413 A CN110580413 A CN 110580413A
Authority
CN
China
Prior art keywords
contract
transaction
authority
query
inquiry
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
CN201911085168.6A
Other languages
English (en)
Other versions
CN110580413B (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.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202010393375.4A priority Critical patent/CN111475827A/zh
Priority to CN201911085168.6A priority patent/CN110580413B/zh
Publication of CN110580413A publication Critical patent/CN110580413A/zh
Application granted granted Critical
Publication of CN110580413B publication Critical patent/CN110580413B/zh
Priority to PCT/CN2020/116474 priority patent/WO2021088536A1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • 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/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Mathematical Physics (AREA)
  • Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Medical Informatics (AREA)
  • Development Economics (AREA)
  • Computational Linguistics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (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,平台安全处理器)。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于链下授权的隐私数据查询方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于链下授权的隐私数据查询方法,应用于区块链节点;所述方法包括:
接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易;
响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
根据本说明书一个或多个实施例的第二方面,提出了一种隐私数据的查询方法,应用于区块链节点;所述方法包括:
接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息;
当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限;
当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
根据本说明书一个或多个实施例的第三方面,提出了一种基于链下授权的隐私数据查询装置,应用于区块链节点;所述装置包括:
接收单元,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易;
权限确定单元,响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
数据获取单元,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
根据本说明书一个或多个实施例的第四方面,提出了一种隐私数据的查询装置,应用于区块链节点;所述装置包括:
接收单元,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息;
第一权限确定单元,当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
第二权限确定单元,当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限;
数据获取单元,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第二方面所述的方法。
根据本说明书一个或多个实施例的第七方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
根据本说明书一个或多个实施例的第八方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第二方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种调用业务合约的示意图。
图4是一示例性实施例提供的一种基于链下授权的隐私数据查询方法的流程图。
图5是一示例性实施例提供的一种隐私数据的查询方法的流程图。
图6-8是一示例性实施例提供的另一种隐私数据的查询方法的流程图。
图9是一示例性实施例提供的一种设备的结构示意图。
图10是一示例性实施例提供的一种隐私数据的管理装置的框图。
图11是一示例性实施例提供的另一种设备的结构示意图。
图12是一示例性实施例提供的一种隐私数据的管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图中1中的“0x6f8ae93…”代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
如图2所示,仍以以太坊为例,Bob将一个用于调用智能合约的交易发送到以太坊网络后,某一节点的EVM可以执行这个交易并生成对应的合约实例。图中2中交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
区块链网络中的节点在执行Bob发起的交易后,会生成相应的收据(receipt)数据,以用于记录该交易相关的收据信息。这样,可以通过查询交易的收据来获得该交易执行结果的相关信息。以以太坊为例,节点执行交易所得的收据数据可以包括如下内容:
Result字段,表示交易的执行结果;
Gas used字段,表示交易消耗的gas值;
Logs字段,表示交易产生的日志,日志可以进一步包括From字段、To字段、Topic字段和Log data字段等,其中From字段表示调用的发起方的账户地址、To字段表示被调用对象(如智能合约)的账户地址、Topic字段表示日志的主题、Log data字段表示日志数据;
Output字段,表示交易的输出。
一般的,交易执行后生成的收据数据以明文形式进行存储,任何人都可以看到收据数据所含的上述各个收据字段的内容,无隐私保护的设置和能力。而在一些区块链与TEE相结合的解决方案中,为了实现隐私保护,收据数据的全部内容均被当作需要隐私保护的数据存储在区块链上。所述区块链,是存储在节点的数据库中特定逻辑组织而成的数据集合。所述数据库,如后所述,其物理载体可以是存储介质,例如持久性存储介质。实际上,收据数据中可能只有部分内容是敏感的,而其它内容并不敏感,只需要针对敏感的内容进行隐私保护、其他内容可以公开,甚至在一些情况下可能需要对部分内容实施检索以驱动相关操作的实施,那么针对这部分内容实施隐私保护将影响检索操作的实施。
其中,保护用户隐私的过程可如图3所示:
步骤302,用户A创建一笔调用业务合约的交易,并将创建好的交易发送至区块链节点。
用户A可通过创建一笔交易(包含所调用智能合约的账户地址)来调用部署于区块链上的智能合约(即业务合约),以使得区块链节点执行业务合约来完成相应的业务。出于隐私保护,用户A可采用数字信封加密的方式对创建好的交易进行加密,该数字信封加密结合对称加密算法和非对称加密算法。具体而言,采用对称加密算法加密交易内容(即采用自身使用的对称密钥对交易内容进行加密),再采用非对称加密算法的公钥对该对称密钥进行加密。
步骤304,区块链节点执行业务合约。
区块链节点在接收到被加密的交易后,将该交易读入TEE内部,先采用该非对称加密算法的私钥进行解密得到对称密钥,再采用解密得到的对称密钥对交易进行解密得到交易内容,进而在TEE内部执行业务合约的业务代码。
步骤306,区块链节点存储与交易相关的目标隐私数据。
一方面,区块链节点在接收到交易后,(通过共识之后)会将交易(被采用数字信封的形式进行加密)发布至区块链上进行存证。另一方面,区块链节点在执行交易后,还会将执行交易得到的相关数据进行加密存储(发布至区块链上进行存证,或者存储在本地);其中,针对对应于交易的交易收据,可采用用户A使用的对称密钥进行加密,针对响应于交易执行业务合约而得到的合约状态数据,可采用TEE内部的特定对称密钥进行加密。另外,针对用户A的账户属性信息、业务合约的账户属性信息、业务合约的合约代码等数据,也可采用TEE内部的特定对称密钥进行加密。而上述这些区块链节点加密的数据,均属于用户A在区块链上的隐私数据,即与用户A在步骤302中创建的交易相关的隐私数据。
由此可见,用户可通过发起交易来调用部署在区块链上的智能合约以完成相应的业务,并且相关的数据被加密存储。针对上述隐私保护的场景,区块链的管理员可赋予指定用户可查询区块链上交易、收据、账户属性信息、合约代码、合约状态数据等隐私数据的权限,从而由指定用户对区块链的隐私数据进行管理。例如,由指定用户(可理解为隐私数据的管理方)来监测链上数据,从而防止链上数据出现违规、过期等问题。因此,区块链的管理员可通过部署权限控制合约来控制管理方查询隐私数据的权限。以下结合图4对基于链下授权的隐私数据查询的过程进行说明。
请参见图4,图4是一示例性实施例提供的一种基于链下授权的隐私数据查询方法的流程图。如图4所示,该方法应用于区块链节点,可以包括以下步骤:
步骤402,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易。
在本实施例中,区块链的管理员可授予一些查询方作为管理方来查询区块链上所有隐私数据的权限;例如,可查询区块链上所有的历史交易、交易收据等。那么权限控制规则可将查询方的身份信息作为依据,作为一示例性实施例,查询方的身份信息为查询方的账户ID(即区块链账户的账户地址),该账户ID可记录于查询交易的from字段中。进一步的,权限控制规则可以白名单的形式定义,白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权。
步骤404,响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权。
在本实施例中,区块链的管理员可在区块链上部署权限控制合约以控制用户访问隐私数据的权限。其中,权限控制合约为系统级别的智能合约,其中维护有白名单,该白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权。其中,白名单记录的链下授权可以权限控制代码的形式定义。那么,当白名单中记录有查询方时,可确定查询方针对目标隐私数据的查询权限为允许查询。因此,查询方构建的查询交易为调用权限控制合约的交易。以以太坊为例,查询交易的from字段内容为查询方的账户地址,to字段内容为权限控制合约的合约地址,白名单中记录的是获得链下授权的用户的区块链账户地址。当区块链节点接收到查询交易时,调用权限控制合约以确定所维护的白名单中是否包含有查询交易from字段中记录的账户地址;若包含,则确定查询方的查询权限为允许查询,否则确定查询方的查询权限为禁止查询。
用户可通过与区块链管理员在链下进行交互来获得链下授权。例如,用户向区块链管理员发送授权请求,该授权请求中包含用户申请授权的相关信息;区块链管理员在接收到该授权请求后,根据该相关信息对用户进行审核。当审核通过后,区块链管理员可将该用户的账户地址更新至权限控制合约维护的白名单中。同时,区块链管理员向该用户返回授权成功的回执以告知该用户授权结果。
步骤406,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
在本实施例中,出于上述对用户隐私数据的保护,隐私数据被加密存储。因此,当确定出查询方的查询权限为允许查询时,区块链节点可获取相应的目标隐私数据,并将获取到的目标隐私数据读入可信执行环境进行解密,以由查询方作为管理方获取。而根据目标隐私数据中包含的数据类型的不同,所采用的解密方式也不同(因为加密方式不同)。其中,由于目标隐私数据与历史交易相关,查询交易中可包含历史交易的交易标识,进而区块链节点可根据查询交易中包含的历史交易的交易标识获取该目标隐私数据。
当目标隐私数据包括历史交易(即在此之前区块链用户发起的交易,比如图3中用户A发起的交易)和/或历史交易的交易收据时,由上述图3所示实施例可知,历史交易和历史交易的交易收据均被采用历史交易的发起方使用的对称密钥进行加密。因此,在获取到历史交易和/或历史交易的交易收据后,可先获取发起方(在图3所示实施例中即为用户A)使用的对称密钥,再在TEE内通过该对称密钥对历史交易和/或历史交易的交易收据进行解密。而对于发起方使用的对称密钥的获取,可先获取用于加密历史交易的对称密钥(该对称密钥被发起方使用的公钥加密,即上述图3所示实施例中采用数字信封进行加密的方式),在TEE内通过与发起方使用的公钥对应的私钥,对该对称密钥进行解密以得到解密后的对称密钥。
其中,发起方使用的对称密钥可由发起方通过对称加密算法生成,或由发起方与区块链节点之间通过协商得到,或由密钥管理服务器发送得到。而对于对称加密算法,例如可以是DES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。发起方使用的公钥由密钥管理服务器通过远程证明发送至发起方,区块链节点的TEE由SGX架构建立,与公钥对应的私钥由密钥管理服务器通过远程证明发送至区块链节点的围圈(enclave,也称为飞地)。而用于生成公钥和私钥的非对称加密算法,例如可以是RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
当目标隐私数据包括历史交易的发起方的账户属性信息、业务合约的账户属性信息、业务合约的合约代码、业务合约的合约状态数据中至少之一时,由上述图3所示实施例可知,这些目标隐私数据均被采用TEE内部的特定对称密钥进行加密。因此,在获取到这些目标隐私数据后,可在TEE内通过区块链节点的特定对称密钥对这些目标隐私数据进行解密。而对于TEE内部的特定对称密钥,在区块链节点的SGX架构通过远程证明后由密钥管理服务器发送,或者由区块链节点与其他区块链节点之间进行协商得到。
在本说明书的技术方案中,除获得区块链管理员链下授权的管理方查询目标隐私数据外,还存在除管理方以外的普通用户查询目标隐私数据的情况。例如,在上述隐私保护的场景下,用户可能需要将自身利用区块链所实现业务相关的隐私数据分享给一些特定的用户查看,也即这些特定的用户可查看与该用户发起的历史交易相关的隐私数据。那么,可针对用户的隐私数据设定查询权限,以供允许查询的其他用户进行查看。以下结合图5对本说明书的隐私数据的查询方案进行说明。
请参见图5,图5是一示例性实施例提供的一种隐私数据的查询方法的流程图。如图5所示,该方法应用于区块链节点,可以包括以下步骤:
步骤502,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息。
在本实施例中,区块链节点在接收到查询交易后,先确定查询方的身份信息,进而针对查询方不同的身份采取不同的隐私数据查询流程。具体而言,查询方的身份类型可以包括区块链的管理方和区别于管理方的其他用户。其中,管理方查询的隐私数据针对全网(不区分用户),而其他用户则是针对与任一用户发起的历史交易相关的目标隐私数据。
步骤504,当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权。
在本实施例中,步骤504的过程与上述图4所示实施例中步骤404的过程类似,在此不再赘述。
步骤506,当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限。
在本实施例中,在开发业务合约时,除了在业务合约中定义业务代码之外,还需要在业务合约中定义与调用该业务合约的交易相关的隐私数据的权限控制代码,以用于判定针对该隐私数据的查询方是否被允许查询。通过上述在业务合约中定义权限控制代码的方式,可将隐私数据与控制该隐私数据的查询权限的权限控制代码建立关联关系,从而使得各个业务合约可以控制与调用自身的交易相关的隐私数据。
可由区块链用户、区块链成员、区块链管理员等角色来完成对业务合约的开发和部署。以联盟链为例,由具备记账权限的区块链成员(或者区块链用户、管理员)来设定权限控制规则,并将权限控制规则以权限控制代码的形式定义在业务合约(还定义了业务代码)中。在完成对业务合约的开发后,该区块链成员可以通过联盟链中的任一节点设备将该业务合约发布至联盟链,并在该业务合约由该联盟链中的部分指定的成员节点设备(比如,联盟链中指定的若干个具有记账权限的权威节点设备)完成共识后,收录至该联盟链的分布式数据库(即分布式账本)。基于上述部署业务合约的方式,业务合约的部署方(即具备记账权限的普通用户或者普通成员)可控制是否允许其他人来查询与发送至该业务合约的交易(即调用该业务合约的交易)相关的隐私数据。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work, POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中包含的交易。
基于上述部署用于控制查询权限的业务合约的方式,各个业务合约仅控制与调用自身的交易相关的隐私数据的查询权限。因此,当用户(作为查询方)发起一笔针对与历史交易(由其他任一用户发起)相关的隐私数据的查询交易时,区块链节点需确定出控制隐私数据的查询权限的业务合约,进而才可调用该业务合约来实现权限控制。
而针对区块链节点调用业务合约来实现权限控制的方式,可在区块链上部署分发合约以用于识别区块链节点接收到的交易是否为查询交易,以及在接收到的交易为查询交易时,进一步调用相应的智能合约(包括权限控制合约和各个业务合约)来执行权限控制代码(可理解为将查询交易分发给相应的智能合约)。具体而言,可在分发合约中定义分发代码,该分发代码用于调用智能合约执行定义在该智能合约中的权限控制代码。因此,查询方创建的查询交易为用于调用分发合约的交易;那么,当区块链节点接收到的任一交易用于调用分发合约时,可将该任一交易作为查询交易,并调用分发合约以执行分发合约中定义的分发代码。进一步的,针对查询方属于区块链的管理方的情况,区块链节点执行分发合约中定义的分发代码,以调用权限控制合约执行该权限控制合约中定义的权限控制代码;针对查询方属于区别于管理方的其他用户的情况,区块链节点执行分发合约中定义的分发代码,以调用历史交易调用的业务合约执行该业务合约中定义的权限控制代码。
基于分发合约起到“分发查询交易”的作用,可将分发合约设计为系统级别的智能合约。因此,可由区块链的管理员来完成对分发合约的开发和部署。同样以联盟链为例,由具备管理权限的管理员来开发分发逻辑(根据查询交易中记录的历史交易调用的业务合约的合约地址,调用该业务合约),并将分发逻辑以分发代码的形式定义在分发合约中。在完成对分发合约的开发后,管理员可将该分发合约发布至联盟链上进行部署。比如,在管理员构建的针对分发合约的合约创建交易中,to字段是一个空字符串,在data字段中指定了初始化合约的二进制代码,在之后合约被调用时,该代码的执行结果将作为合约代码(即分发代码)。
在本说明书的技术方案中,除上述通过部署分发合约来调用业务合约以实现权限控制之外,还可将上述分发逻辑以分发代码的形式固化到链代码中,跟随链代码一起发布,从而不需要管理员后续再部署,并且合约代码固化在链代码中,使得合约代码可控,有效提高了安全性。换言之,将查询交易分发至相应业务合约的操作,由区块链节点自身来完成,而无需通过调用智能合约来完成。
需要说明的是,接入区块链的用户在区块链上发起的请求的类型,具体可以是指传统的区块链中所采用的交易(transaction)。当然,接入区块链的用户在区块链上发起的请求的类型,具体也可以是交易以外的,其它形式的具有标准的数据结构的指令、消息等,本说明书一个或多个实施例并不进行特别限定。在以下的各实施例中,将以接入区块链的用户在区块链上发起的请求为交易为例进行说明。
在本实施例中,针对查询方属于区别于所述管理方的其他用户的情况,该其他用户在构建查询交易时,可仅在查询交易中写入与待查询的隐私数据相关的历史交易的交易标识。其中,历史交易的交易标识可由历史交易的发起方和查询方之间通过线下分享的方式得到,或者通过其他任意方式得到。在该情况下,区块链节点可根据查询交易中包含的交易标识获取历史交易,并基于获取到的历史交易确定该历史交易调用的业务合约,进而通过分发合约调用该业务合约,以执行该业务合约中定义的权限控制代码。
以以太坊为例,其他用户在创建查询交易时,可将历史交易的发起方告知的该历史交易的hash值(作为交易标识)记录在查询交易的data字段中。那么,区块链节点在接收到该查询交易时,根据该hash值获取存证在区块链上的历史交易,进而根据历史交易的to字段(用于记录调用的智能合约的合约地址)确定该历史交易调用的业务合约。区块链节点在确定出历史交易调用的业务合约之后,调用分发合约以执行分发合约中定义的分发代码,从而调用确定出的业务合约执行权限控制代码。
在另一实施例中,其他用户在构建查询交易时,可在查询交易中写入与待查询的隐私数据相关的历史交易的交易标识,和该历史交易调用的业务合约的合约地址;其中,历史交易的交易标识和业务合约的合约地址可由历史交易的发起方和查询方之间通过线下分享的方式得到,或者通过其他任意方式得到。在该情况下,区块链节点可根据查询交易中包含的历史交易调用的业务合约的合约地址确定相应的业务合约,并调用确定出的业务合约以执行相应的权限控制代码来确定查询方的查询权限。需要注意的是,查询交易由查询方创建,该查询交易中包含的历史交易调用的业务合约的合约地址由查询方来声明,那么该合约地址并不一定是历史交易实际调用的业务合约的合约地址,即存在查询方伪造合约地址的风险。因此,在通过业务合约确定出查询方的查询权限为允许查询时,区块链节点可进一步根据查询交易中包含的交易标识(即交易ID,通常为交易的hash值)获取该历史交易,并根据获取到的历史交易确定出该历史交易实际调用的业务合约的合约地址。当确定出的合约地址与查询交易中包含的历史交易调用的业务合约的合约地址不一致时,判定查询方的查询权限为禁止查询,从而可有效排除查询方通过伪造合约地址来盗取用户目标隐私数据的情况。
在本实施例中,业务合约中以权限控制代码形式定义的权限控制规则,可根据实际需求灵活设定;当然,本说明书一个或多个实施例并不对权限控制规则的具体内容进行限制。在一种情况下,可将查询方的身份信息作为权限控制的依据。相应的,查询方在创建查询交易时,查询交易中应包含查询方的身份信息。例如,查询方的身份信息为查询方的账户ID(即账户地址),该账户ID可记录于查询交易的from字段中。进一步的,权限控制规则可以设定为当查询方的身份信息符合特定的条件时,允许该查询方查询相应的隐私数据。比如,当查询方属于预先指定的查询用户集合时,可确定该查询方的查询权限为允许查询,或者当查询方的信用评分超过预设信用阈值时,可确定该查询方的查询权限为允许查询等等。因此,在确定查询方的查询权限时,可执行业务合约中定义的权限控制代码,以根据查询方的身份信息确定查询方针对隐私数据的查询权限。
在另一种情况下,可将查询方的身份信息和历史交易的发起方的身份信息共同作为权限控制的依据。那么,权限控制规则可以设定为当查询方的身份信息和发起方的身份信息符合特定的条件时,允许该查询方查询相应的隐私数据。比如,在权限控制规则中记录查询组和被查询组,属于查询组的成员允许查看被查询组成员的隐私数据;或者,权限控制规则中直接记录各个用户可以查看哪些其他用户的对应关系;或者当查询方和发起方属于同一团队时,可确定该查询方的查询权限为允许查询等等。因此,在确定查询方的查询权限时,可执行业务合约中定义的权限控制代码,以根据查询方的身份信息和发起方的身份信息确定查询方针对隐私数据的查询权限。其中,查询方可在创建的查询交易中写入历史交易的发起方的身份信息,或者由区块链节点(通过执行新版本链代码)根据查询交易中包含的交易标识获取历史交易,并基于获取到的历史交易得到。
在又一种情况下,可将历史交易的发起方的身份信息作为权限控制的依据。那么,权限控制规则可以设定为当发起方的身份信息符合特定的条件时,允许该查询方查询相应的隐私数据。比如,当发起方属于预先指定的可被查询用户集合时,可确定查询方的查询权限为允许查询,或者当发起方的信用评分超过预设信用阈值时,可确定查询方的查询权限为允许查询等等。因此,在确定查询方的查询权限时,可执行业务合约中定义的权限控制代码,以根据发起方的身份信息确定查询方针对隐私数据的查询权限。
当权限控制的依据包括历史交易的发起方的身份信息时,由于查询交易中包含的发起方的身份信息仅仅是查询方声明的身份信息,而该身份信息并不一定是历史交易的发起方实际的身份信息,即存在查询方伪造发起方身份信息的风险。因此,在根据权限控制代码确定出查询方的查询权限为允许查询后,区块链节点可根据查询交易中包含的历史交易的交易标识(即交易ID,通常为交易的hash值)获取该历史交易,从而根据获取到的历史交易确定出该历史交易的发起方的身份信息(即发起方实际的身份信息)。当确定出的身份信息与查询交易中包含的发起方的身份信息不一致时,禁止执行获取隐私数据的操作(即判定查询权限为禁止查询),从而可有效排除查询方通过伪造发起方身份信息来盗取用户隐私数据的情况。
在本实施例中,当确定出查询方的查询权限为禁止查询时,无需执行上述通过获取历史交易来校验发起方的身份信息或者校验业务合约的合约地址的步骤。由于在查询方的查询权限为禁止查询的情况下,该校验步骤为不必要的操作,因此可减少对区块链节点处理资源的占用,从而提高区块链节点的性能。同时,当确定出查询方的查询权限为禁止查询时,可生成用于表示该查询方禁止查询隐私数据的合约收据以由查询方查看。
步骤508,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
在本实施例中,类似于上述对历史交易进行加密以保护隐私的方式,查询方在发起查询交易时,同样可采用自身使用的对称密钥对创建好的查询交易进行加密,并用自身使用的公钥对该对称密钥进行加密。因此,区块链节点在接收到查询交易后,先在TEE内通过与查询方使用的公钥对应的私钥对加密查询交易的对称密钥解密,再通过解密得到的对称密钥对查询交易进行解密,以获取查询交易包含的交易内容。而在获取到目标隐私数据并对目标隐私数据进行解密后,区块链节点可通过查询方的对称密钥对解密后的目标隐私数据进行加密,使得查询方可通过自身使用的对称密钥对目标隐私数据进行解密查看,从而避免目标隐私数据被泄露。
其中,上述针对查询方进行隐私保护所使用的对称密钥、公钥和私钥的来源与上述类似,在此不再赘述。当然,该过程中使用的非对称密钥(公钥和私钥),可以是上述针对历史交易的发起方进行隐私保护所使用的非对称密钥。
为了便于理解,下面结合图6-8对查询方查看隐私数据的过程进行举例说明。
请参见图6,图6是一示例性实施例示出的另一种隐私数据的查询方法的流程图。如图6所示,该方法应用于区块链节点,可以包括以下步骤:
步骤602,接收查询方发起的交易。
步骤604,识别交易类型。
在本实施例中,查询方创建的查询交易为用于调用分发合约的交易。因此,当区块链节点接收到的交易用于调用分发合约时,可将该接收到的交易作为查询交易,并调用分发合约以执行分发合约中定义的分发代码,从而调用相应的智能合约以实现权限控制。例如,查询交易的to字段中记录分发合约的合约地址,那么区块链节点可根据接收到的交易的to字段内容确定该交易是否为查询交易,即当接收到的交易的to字段内容为分发合约的合约地址时,可确定该交易为查询交易。
步骤606,识别查询方的身份。
在本实施例中,查询方的身份类型可以包括区块链的管理方和区别于管理方的其他用户。其中,管理方查询的目标隐私数据针对全网(不区分用户),而其他用户则是针对与任一用户发起的历史交易相关的目标隐私数据。例如,可在查询交易的data字段(或其他任意字段,比如还可以是在to字段中)中记录表明查询方身份类型的信息,进而使得区块链节点可根据data字段中记录的身份类型直接确定出查询方属于管理方还是其他用户。或者,可在查询交易的to字段中记录查询方的账户地址,由区块链节点根据该账户地址查询预先配置的账户地址与身份类型的对应关系(例如,预先存证在区块链上,或者记录在特定区块链账户中),进而确定出查询方属于管理方还是其他用户。
步骤608,当查询方属于管理方时,执行管理方的权限查询流程。
在本实施例中,对应于管理方的权限查询流程,可参考上述图4所示的实施例,在此不再赘述。
步骤610,当查询方属于其他用户时,执行其他用户的权限查询流程。
下面结合图7-8对与其他用户对应的权限查询流程进行详细说明。
承接于上述图3的场景,在用户A发起调用业务合约的交易后,用户A可向用户B分享与该交易(在该场景下作为历史交易)相关的目标隐私数据,或者用户B存在查看该目标隐私数据的需求。如图7所示,用户B作为查询方查询目标隐私数据的过程可包括以下步骤:
步骤702,用户B通过使用的客户端创建查询交易。
在本实施例中,查询交易的to字段记录的是分发合约的合约地址,同时还可在查询交易的data字段(或者其他字段)中记录历史交易的hash值(即交易ID)、from字段的内容(历史交易的发起方的地址)和to字段的内容(历史交易调用的业务合约的合约地址)。其中,历史交易的hash值、发起方的地址和业务合约的合约地址可由用户B与用户A之间通过线下分享的方式得到,或者通过其他任意方式得到。
步骤704,用户B通过客户端采用数字信封加密查询交易。
步骤706,用户B通过客户端向区块链节点发起查询交易。
步骤708,区块链节点在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提供了围圈,即内存中一个加密的可信执行区域,由CPU 保护数据不被窃取。以区块链节点采用支持SGX的CPU为例,利用新增的处理器指令,在内存中可以分配一部分区域 EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),通过 CPU 内的加密引擎 MEE(Memory Encryption Engine)对其中的数据进行加密。EPC中加密的内容只有进入 CPU 后才会被解密成明文。因此,在 SGX 中,用户可以不信任操作系统、VMM(Virtual Machine Monitor,虚拟机监控器)、甚至 BIOS(Basic Input OutputSystem,基本输入输出系统),只需要信任 CPU 便能确保目标隐私数据不会泄漏。
在实际应用中,非对称加密算法的密钥,可由密钥管理服务器生成。通过远程证明的方式,密钥管理服务器将私钥发送至区块链节点,具体的,可以是传入区块链节点的围圈中。区块链节点可以包含多个围圈,而上述私钥可以被传入这些围圈中的安全围圈;例如,该安全围圈可以为QE(Quoting Enclave)围圈,而非AE(Application Enclave)围圈。对于非对称加密的公钥,可以由密钥管理服务器发送至用户的客户端。那么,客户端可采用对称加密算法加密创建好的交易,即采用对称加密算法的对称密钥加密交易内容,并用非对称加密算法加密对称加密算法中采用的对称密钥。一般的,采用非对称加密算法的公钥加密对称加密算法中采用的对称密钥。上述加密的方式被称为数字信封加密,那么区块链节点接收到加密的交易后,可以先采用非对称加密算法的私钥进行解密,得到对称加密算法的对称密钥,进而用对称加密算法的对称密钥解密得到交易内容。
步骤710,区块链节点确定接收到的交易为调用分发合约的查询交易。
在本实施例中,区块链节点在接收到任一交易后,读取该交易的to字段内容。当to字段内容为分发合约的合约地址时,说明该交易用于调用分发合约,那么可确定出该交易为查询交易。
步骤712,区块链节点调用分发合约。
步骤714,分发合约根据查询交易中记录的历史交易的to字段确定历史交易调用的业务合约。
需要说明的是,本实施例针对的是区别于管理方的其他用户查询与历史交易相关的目标隐私数据的情况,因此分发合约调用的是历史交易所调用的业务合约,而非系统级别的权限控制合约。
步骤716,分发合约调用业务合约。
步骤718,业务合约根据查询交易的from字段和历史交易的from字段确定用户B的查询权限。
在本实施例中,以查询方和历史交易的发起方的身份信息共同作为权限控制的依据为例。例如,权限控制规则(以权限控制代码的形式定义在业务合约中)中记录查询组和被查询组,属于查询组的成员允许查看被查询组成员的目标隐私数据;或者,权限控制规则中直接记录各个用户可以查看哪些其他用户的对应关系。其中,采用账户地址作为用户的身份信息。那么,区块链节点执行业务合约中定义的权限控制代码,从而根据查询方的账户地址(查询交易的from字段内容)和历史交易的发起方的账户地址(历史交易的from字段内容)来确定用户B的查询权限。
步骤720,业务合约向区块链节点返回用户B的查询权限。
步骤722,在确定出用户B的查询权限为允许查询后,区块链节点校验历史交易的from字段和to字段。
在本实施例中,查询交易中记录的发起方的地址和业务合约的合约地址由用户B填入,因此该发起方的地址应理解为用户B声明的历史交易的发起方的地址,该合约地址应理解为用户B声明的历史交易调用的业务合约的合约地址。但是,历史交易实际的发起方的地址并不一定为用户B声明的发起方的地址,历史交易实际调用的业务合约的合约地址也并不一定为用户B声明的合约地址,即存在用户B伪造的可能。例如,用户B可通过上述部署业务合约的方式在区块链上部署业务合约,该业务合约中定义的权限控制代码允许用户B查看用户A的目标隐私数据;那么,用户B可在查询交易中将用户A发起的历史交易调用的业务合约的合约地址填写为用户B部署的上述业务合约的合约地址。因此,在确定出用户B的查询权限为允许查询的情况下,区块链节点可进一步对用户B声明的历史交易的发起方的地址和合约地址进行校验,从而保证目标隐私数据的安全性。
举例而言,区块链节点在确定出用户B的查询权限为允许查询后,可根据历史交易的hash值从区块链上获取历史交易(存证在区块链上),并读取出历史交易的from字段记录的内容和历史交易的to字段内容,若读取出的from字段内容与查询交易中声明的from字段内容相同,则可进一步执行获取目标隐私数据的操作;否则,禁止执行获取目标隐私数据的操作。同理,若读取出的to字段内容与查询交易中声明的to字段内容相同,则可进一步执行获取目标隐私数据的操作;否则,禁止执行获取目标隐私数据的操作。
需要说明的是,当确定出查询方的查询权限为禁止查询时,上述校验步骤为不必要的操作,因此无需执行上述校验的步骤,从而可减少对区块链节点处理资源的占用,进而提高区块链节点的性能。
进一步的,在利用业务合约确定出用户B的查询权限为禁止查询后,可生成关于用户B禁止查询目标隐私数据的合约收据以供用户B查看。或者,由区块链节点向用户B返回禁止查询的回执以告知用户B的查询权限为禁止查询。
步骤724,区块链节点获取目标隐私数据。
步骤726,区块链节点将目标隐私数据读入TEE进行解密。
在本实施例中,由上述图3所示实施例可知,出于隐私保护的目的,隐私数据被加密存储。同时,根据目标隐私数据中包含的数据类型的不同,所采用的加密方式也不同。因此,可获取目标隐私数据(例如,根据历史交易的hash值获取目标隐私数据)并将获取到的目标隐私数据读入可信执行环境进行解密,以由查询方获取。
当目标隐私数据包括历史交易和/或历史交易的交易收据时,由上述图3所示实施例可知,历史交易和历史交易的交易收据均被采用历史交易的发起方使用的对称密钥进行加密。因此,在获取到历史交易和/或历史交易的交易收据后,可先获取用户A使用的对称密钥,再在TEE内通过该对称密钥对历史交易和/或历史交易的交易收据进行解密。而对于发起方使用的对称密钥的获取,可先获取用于加密历史交易的对称密钥(该对称密钥被用户A使用的公钥加密),在TEE内通过与用户A使用的公钥对应的私钥,对该对称密钥进行解密以得到解密后的对称密钥。
当目标隐私数据包括用户A的账户属性信息、业务合约的账户属性信息、业务合约的合约代码、业务合约的合约状态数据中至少之一时,可在TEE内通过区块链节点的特定对称密钥对这些目标隐私数据进行解密。
例如,特定对称密钥可以是seal(Simple Encrypted Arithmetic Library)密钥,该seal密钥可在通过远程证明后由密钥管理服务器发送给区块链节点,或者可以是各个区块链节点之间协商得到,进而区块链节点使用该seal密钥对隐私数据进行加密和解密。当然,通过远程证明后由密钥管理服务器发送给区块链节点,或者各个区块链节点之间协商得到的对称密钥,可以并非上述的seal密钥,而是root密钥(根密钥),且上述的seal密钥可以为该root密钥的衍生密钥。例如,root密钥可以不可逆地依次衍生出若干版本的衍生密钥,且任意相邻的两个密钥之间由高版本密钥不可逆地衍生出低版本密钥,从而形成链式的密钥衍生结构。比如,如果需要衍生出版本号分别为0~255的256个版本的密钥,可以将root密钥与版本因子0xFF(十进制的取值为255,即需要生成的密钥的版本号;当然,也可以采用其他取值)进行哈希计算,得到版本号为255的密钥key-255;通过将密钥key-255与版本因子0xFE进行哈希计算,得到版本号为254的密钥key-254;……通过将密钥key-1与版本因子0x00进行哈希计算,得到版本号为0的密钥key-0。由于哈希算法的特性,使得高版本密钥与低版本密钥之间的计算不可逆,比如可以由密钥key-1与版本因子0x00计算得到密钥key-0,但是不能够通过密钥key-0与版本因子0x00反推出密钥key-1。
那么,可以指定某一版本的衍生密钥,作为上述的seal密钥对隐私数据进行加密。进一步地,还可以对seal密钥进行版本更新,且基于上文所述的特性,应当从低版本密钥向高版本密钥进行更新,使得即便低版本密钥泄露后,也无法反推出高版本密钥,确保足够的数据安全性。
步骤728,区块链节点采用用户B的对称密钥对目标隐私数据进行加密。
步骤730,用户B查看目标隐私数据。
在一实施例中,区块链节点在对目标隐私数据进行加密后,可生成包含该目标隐私数据的事件存储到区块链日志中,那么,用户B可使用客户端通过区块链的回调机制来获取该事件,从而查看目标隐私数据。而在获取到目标隐私数据后,用户B通过客户端采用自身使用的对称密钥对目标隐私数据进行解密即可得到明文内容的目标隐私数据。
在另一实施例中,区块链节点在对目标隐私数据进行加密后,可直接向用户B使用的客户端返回加密后的目标隐私数据。同理,用户B通过客户端采用自身使用的对称密钥对目标隐私数据进行解密即可得到明文内容的目标隐私数据。
在上述图7所示实施例中,用户B创建的查询交易中包含历史交易的hash值、from字段和to字段的内容,而经上述分析可知,查询交易中还可仅包含历史交易的hash值,无需写入from字段和to字段的内容。下面结合图8进行说明。如图8所示,用户B作为查询方查询目标隐私数据的过程可包括以下步骤:
步骤802,用户B通过使用的客户端创建查询交易。
在本实施例中,查询交易的to字段记录的是分发合约的合约地址,同时还可在查询交易的data字段(或者其他字段)中记录历史交易的hash值(即交易ID)。其中,历史交易的hash值可由用户B与用户A之间通过线下分享的方式得到,或者通过其他任意方式得到。
步骤804,用户B通过客户端采用数字信封加密查询交易。
步骤806,用户B通过客户端向区块链节点发起查询交易。
步骤808,区块链节点在TEE内解密查询交易。
需要说明的是,本实施例中加密和解密的过程与上述图7所示实施例类似,在此不再赘述。
步骤810,区块链节点确定接收到的交易为调用分发合约的查询交易。
在本实施例中,区块链节点在接收到任一交易后,读取该交易的to字段内容。当to字段内容为分发合约的合约地址时,说明该交易用于调用分发合约,那么可确定出该交易为查询交易。
步骤812,区块链节点读取查询交易中包含的hash值。
步骤814,区块链节点根据hsah值获取历史交易的from字段和to字段。
在本实施例中,历史交易的from字段的内容为历史交易的发起方的地址(本实施例中为发起方的身份信息),历史交易的to字段的内容为历史交易调用的业务合约的合约地址。
步骤816,区块链节点向分发合约发送历史交易的from字段和to字段。
步骤818,分发合约根据历史交易的to字段确定历史交易调用的业务合约。
需要说明的是,本实施例针对的是区别于管理方的其他用户查询与历史交易相关的目标隐私数据的情况,因此分发合约调用的是历史交易所调用的业务合约,而非系统级别的权限控制合约。
步骤820,分发合约调用业务合约。
步骤822,业务合约根据查询交易的from字段和历史交易的from字段确定用户B的查询权限。
在本实施例中,以查询方和历史交易的发起方的身份信息共同作为权限控制的依据为例。例如,权限控制规则(以权限控制代码的形式定义在业务合约中)中记录查询组和被查询组,属于查询组的成员允许查看被查询组成员的隐私数据;或者,权限控制规则中直接记录各个用户可以查看哪些其他用户的对应关系。其中,采用账户地址作为用户的身份信息。那么,区块链节点执行业务合约中定义的权限控制代码,从而根据查询方的账户地址(查询交易的from字段内容)和历史交易的发起方的账户地址(历史交易的from字段内容)来确定用户B的查询权限。
步骤824,业务合约向区块链节点返回用户B的查询权限。
步骤826,当用户B的查询权限为允许查询时,区块链节点获取目标隐私数据。
在本实施例中,区块链节点可根据历史交易的hash值获取目标隐私数据。而当利用业务合约确定出用户B的查询权限为禁止查询时,可生成关于用户B禁止查询目标隐私数据的合约收据以供用户B查看。或者,由区块链节点向用户B返回禁止查询的回执以告知用户B的查询权限为禁止查询。
步骤828,区块链节点将目标隐私数据读入TEE进行解密。
步骤830,区块链节点采用用户B的对称密钥对目标隐私数据进行加密。
需要说明的是,当隐私数据为历史交易时,获取历史交易并解密历史交易的过程在执行步骤814时执行,即根据历史交易的hash值获取历史交易,并对历史交易进行解密得到历史交易的明文交易内容,从而读取历史交易的from字段和to字段。因此,在该情况下,当确定出查询权限为允许查询时,(无需再执行获取历史交易和解密历史交易的操作)直接获取解密后的历史交易供查询方查看即可。
步骤832,用户B查看目标隐私数据。
可见,通过本说明书隐私数据的查询方案,用户A无需向用户B分享自身使用的对称密钥,便可实现用户A与用户B之间隐私数据的分享,从而提高了安全性与便捷性。
与上述方法实施例相对应,本说明书还提供了一种基于链下授权的隐私数据查询装置的实施例。
本说明书的基于链下授权的隐私数据查询装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,请参考图9,图9是一示例性实施例提供的一种设备的示意结构图。如图9所示,在硬件层面,该设备包括处理器902、内部总线904、网络接口906、内存908以及非易失性存储器910,当然还可能包括其他业务所需要的硬件。处理器902从非易失性存储器910中读取对应的计算机程序到内存908中然后运行,在逻辑层面上形成基于链下授权的隐私数据查询装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图10,在软件实施方式中,该基于链下授权的隐私数据查询装置应用于区块链节点,可以包括:
接收单元1001,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易;
权限确定单元1002,响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
数据获取单元1003,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
可选的,所述目标隐私数据包括历史交易和/或对应于所述历史交易的交易收据;通过以下方式对所述目标隐私数据进行解密:
获取所述历史交易的发起方使用的对称密钥;
在所述可信执行环境内通过所述对称密钥对所述目标隐私数据进行解密。
可选的,通过以下方式获取所述发起方使用的对称密钥:
获取用于加密所述历史交易的对称密钥,所述对称密钥被所述发起方使用的公钥加密;
在所述可信执行环境内通过与所述发起方使用的公钥对应的私钥,对所述对称密钥进行解密以得到解密后的对称密钥。
可选的,所述发起方使用的公钥由密钥管理服务器通过远程证明发送至所述发起方,所述区块链节点的可信执行环境由SGX架构建立,与所述公钥对应的私钥由所述密钥管理服务器通过远程证明发送至所述区块链节点的围圈。
可选的,所述目标隐私数据包括历史交易的发起方的账户属性信息、所述历史交易调用的业务合约的账户属性信息、所述业务合约的合约代码、所述业务合约的合约状态数据中至少之一;通过以下方式对所述目标隐私数据进行解密:
在所述可信执行环境内通过所述区块链节点的特定对称密钥对所述目标隐私数据进行解密。
可选的,所述区块链节点的可信执行环境由SGX架构建立,所述特定对称密钥在所述区块链节点的SGX架构通过远程证明后由密钥管理服务器发送,或者由所述区块链节点与其他区块链节点之间进行协商得到。
与上述方法实施例相对应,本说明书还提供了一种隐私数据的查询装置的实施例。
本说明书的隐私数据的查询装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,请参考图11,图11是一示例性实施例提供的一种设备的示意结构图。如图11所示,在硬件层面,该设备包括处理器1102、内部总线1104、网络接口1106、内存1108以及非易失性存储器1110,当然还可能包括其他业务所需要的硬件。处理器1102从非易失性存储器1110中读取对应的计算机程序到内存1108中然后运行,在逻辑层面上形成隐私数据的查询装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图12,在软件实施方式中,该隐私数据的查询装置应用于区块链节点,可以包括:
接收单元1201,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息;
第一权限确定单元1202,当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
第二权限确定单元1203,当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限;
数据获取单元1204,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
可选的,
还包括:交易识别单元1205,当接收到的任一交易用于调用分发合约时,将所述任一交易作为所述查询交易;
所述第一权限确定单元1202具体用于:执行所述分发合约中定义的分发代码,以调用所述权限控制合约根据所述权限控制合约中维护的白名单确定所述查询方的查询权限;
所述第二权限确定单元1203具体用于:执行所述分发合约中定义的分发代码,以调用所述历史交易调用的业务合约执行所述业务合约中定义的权限控制代码。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (20)

1.一种基于链下授权的隐私数据查询方法,应用于区块链节点;所述方法包括:
接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易;
响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
2.根据权利要求1所述的方法,所述目标隐私数据包括历史交易和/或对应于所述历史交易的交易收据;通过以下方式对所述目标隐私数据进行解密:
获取所述历史交易的发起方使用的对称密钥;
在所述可信执行环境内通过所述对称密钥对所述目标隐私数据进行解密。
3.根据权利要求2所述的方法,所述获取所述历史交易的发起方使用的对称密钥,包括:
获取用于加密所述历史交易的对称密钥,所述对称密钥被所述发起方使用的公钥加密;
在所述可信执行环境内通过与所述发起方使用的公钥对应的私钥,对所述对称密钥进行解密以得到解密后的对称密钥。
4.根据权利要求3所述的方法,所述发起方使用的公钥由密钥管理服务器通过远程证明发送至所述发起方,所述区块链节点的可信执行环境由SGX架构建立,与所述公钥对应的私钥由所述密钥管理服务器通过远程证明发送至所述区块链节点的围圈。
5.根据权利要求1所述的方法,所述目标隐私数据包括历史交易的发起方的账户属性信息、所述历史交易调用的业务合约的账户属性信息、所述业务合约的合约代码、所述业务合约的合约状态数据中至少之一;通过以下方式对所述目标隐私数据进行解密:
在所述可信执行环境内通过所述区块链节点的特定对称密钥对所述目标隐私数据进行解密。
6.根据权利要求5所述的方法,所述区块链节点的可信执行环境由SGX架构建立,所述特定对称密钥在所述区块链节点的SGX架构通过远程证明后由密钥管理服务器发送,或者由所述区块链节点与其他区块链节点之间进行协商得到。
7.一种隐私数据的查询方法,应用于区块链节点;所述方法包括:
接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息;
当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限;
当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
8.根据权利要求7所述的方法,
还包括:当接收到的任一交易用于调用分发合约时,将所述任一交易作为所述查询交易;
所述调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,包括:执行所述分发合约中定义的分发代码,以调用所述权限控制合约根据所述权限控制合约中维护的白名单确定所述查询方的查询权限;
所述调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,包括:执行所述分发合约中定义的分发代码,以调用所述历史交易调用的业务合约执行所述业务合约中定义的权限控制代码。
9.一种基于链下授权的隐私数据查询装置,应用于区块链节点;所述装置包括:
接收单元,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易;
权限确定单元,响应于所述查询交易,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
数据获取单元,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
10.根据权利要求9所述的装置,所述目标隐私数据包括历史交易和/或对应于所述历史交易的交易收据;通过以下方式对所述目标隐私数据进行解密:
获取所述历史交易的发起方使用的对称密钥;
在所述可信执行环境内通过所述对称密钥对所述目标隐私数据进行解密。
11.根据权利要求10所述的装置,通过以下方式获取所述发起方使用的对称密钥:
获取用于加密所述历史交易的对称密钥,所述对称密钥被所述发起方使用的公钥加密;
在所述可信执行环境内通过与所述发起方使用的公钥对应的私钥,对所述对称密钥进行解密以得到解密后的对称密钥。
12.根据权利要求11所述的装置,所述发起方使用的公钥由密钥管理服务器通过远程证明发送至所述发起方,所述区块链节点的可信执行环境由SGX架构建立,与所述公钥对应的私钥由所述密钥管理服务器通过远程证明发送至所述区块链节点的围圈。
13.根据权利要求9所述的装置,所述目标隐私数据包括历史交易的发起方的账户属性信息、所述历史交易调用的业务合约的账户属性信息、所述业务合约的合约代码、所述业务合约的合约状态数据中至少之一;通过以下方式对所述目标隐私数据进行解密:
在所述可信执行环境内通过所述区块链节点的特定对称密钥对所述目标隐私数据进行解密。
14.根据权利要求13所述的装置,所述区块链节点的可信执行环境由SGX架构建立,所述特定对称密钥在所述区块链节点的SGX架构通过远程证明后由密钥管理服务器发送,或者由所述区块链节点与其他区块链节点之间进行协商得到。
15.一种隐私数据的查询装置,应用于区块链节点;所述装置包括:
接收单元,接收查询方发起的针对与历史交易相关的目标隐私数据的查询交易,并确定所述查询方的身份信息;
第一权限确定单元,当所述查询方属于区块链的管理方时,调用权限控制合约以根据所述权限控制合约中维护的白名单确定所述查询方的查询权限,所述白名单中记录的用户预先获得了区块链管理员针对隐私数据查询的链下授权;
第二权限确定单元,当所述查询方属于区别于所述管理方的其他用户时,调用所述历史交易调用的业务合约以执行所述业务合约中定义的权限控制代码,确定所述其他用户的查询权限;
数据获取单元,当确定出的查询权限为允许查询时,获取解密后的所述目标隐私数据以由所述查询方获取,所述目标隐私数据被读入可信执行环境进行解密。
16.根据权利要求15所述的装置,
还包括:交易识别单元,当接收到的任一交易用于调用分发合约时,将所述任一交易作为所述查询交易;
所述第一权限确定单元具体用于:执行所述分发合约中定义的分发代码,以调用所述权限控制合约根据所述权限控制合约中维护的白名单确定所述查询方的查询权限;
所述第二权限确定单元具体用于:执行所述分发合约中定义的分发代码,以调用所述历史交易调用的业务合约执行所述业务合约中定义的权限控制代码。
17.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-6中任一项所述的方法。
18.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求7或8所述的方法。
19.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-6中任一项所述方法的步骤。
20.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求7或8所述方法的步骤。
CN201911085168.6A 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置 Active CN110580413B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010393375.4A CN111475827A (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置
CN201911085168.6A CN110580413B (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置
PCT/CN2020/116474 WO2021088536A1 (zh) 2019-11-08 2020-09-21 基于链下授权的隐私数据查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911085168.6A CN110580413B (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010393375.4A Division CN111475827A (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置

Publications (2)

Publication Number Publication Date
CN110580413A true CN110580413A (zh) 2019-12-17
CN110580413B CN110580413B (zh) 2020-03-24

Family

ID=68815558

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010393375.4A Pending CN111475827A (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置
CN201911085168.6A Active CN110580413B (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010393375.4A Pending CN111475827A (zh) 2019-11-08 2019-11-08 基于链下授权的隐私数据查询方法及装置

Country Status (2)

Country Link
CN (2) CN111475827A (zh)
WO (1) WO2021088536A1 (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111563087A (zh) * 2020-04-10 2020-08-21 杭州云象网络技术有限公司 一种基于esb的区块链应用通用系统
CN111768192A (zh) * 2020-06-18 2020-10-13 上海交通大学 链下通道金额均衡方法及系统
CN111797420A (zh) * 2020-08-20 2020-10-20 北京阿尔山金融科技有限公司 基于区块链的数据授权存证方法及系统
CN112152800A (zh) * 2020-03-18 2020-12-29 支付宝(杭州)信息技术有限公司 生成共享合约密钥的方法及装置
CN112187772A (zh) * 2020-09-23 2021-01-05 上海万向区块链股份公司 基于智能合约设计的权限控制方法、系统及介质
CN112199701A (zh) * 2020-03-18 2021-01-08 支付宝(杭州)信息技术有限公司 调用合约的方法及装置
CN112329041A (zh) * 2020-03-18 2021-02-05 支付宝(杭州)信息技术有限公司 部署合约的方法及装置
CN112685773A (zh) * 2020-12-29 2021-04-20 海南大学 基于智能合约和sgx的数据分布式隐私保护方法
WO2021088536A1 (zh) * 2019-11-08 2021-05-14 蚂蚁区块链科技(上海)有限公司 基于链下授权的隐私数据查询方法及装置
CN112804360A (zh) * 2021-03-30 2021-05-14 支付宝(杭州)信息技术有限公司 提供跨链隐私数据的方法和装置
CN113268742A (zh) * 2021-04-07 2021-08-17 支付宝(杭州)信息技术有限公司 数据授权方法、装置及电子设备
CN113407954A (zh) * 2021-05-11 2021-09-17 支付宝(杭州)信息技术有限公司 基于区块链的数据管理方法及装置
CN113658005A (zh) * 2021-04-28 2021-11-16 支付宝(杭州)信息技术有限公司 在区块链中执行交易的方法和区块链系统
CN115174126A (zh) * 2022-09-08 2022-10-11 山东省计算中心(国家超级计算济南中心) 基于区块链和sgx的外包数据密文搜索方法及系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111950029A (zh) * 2020-08-25 2020-11-17 深圳市新系区块链技术有限公司 一种基于区块链的财务数据查询方法、装置、设备及介质
CN113507432B (zh) * 2021-05-25 2023-08-01 杭州溪塔科技有限公司 一种联盟链权限管理方法和装置
CN113326290B (zh) * 2021-06-02 2022-03-01 支付宝(杭州)信息技术有限公司 跨网查询控制方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106534097A (zh) * 2016-10-27 2017-03-22 上海亿账通区块链科技有限公司 基于区块链交易的权限管制方法及系统
CN107105041A (zh) * 2017-04-27 2017-08-29 电子科技大学 一个基于区块链的医疗大数据管理系统及框架
CN107342858A (zh) * 2017-07-05 2017-11-10 武汉凤链科技有限公司 一种基于可信环境的智能合约保护方法和系统
CN109299347A (zh) * 2018-11-16 2019-02-01 大唐高鸿信息通信研究院(义乌)有限公司 一种基于5g架构和区块链的学历信息查询方法及系统
CN109768865A (zh) * 2019-01-18 2019-05-17 深圳市威赫科技有限公司 可信执行环境下的区块链上身份数字化实现方法及系统
CN110032885A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法、节点和存储介质
CN110096857A (zh) * 2019-05-07 2019-08-06 百度在线网络技术(北京)有限公司 区块链系统的权限管理方法、装置、设备和介质
CN110189143A (zh) * 2019-04-26 2019-08-30 华中科技大学 一种基于区块链的营销标签真实性验证方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3729256B1 (en) * 2017-12-20 2023-10-11 Pencildata, Inc. Dynamically generated smart contracts
CN109447811B (zh) * 2018-12-07 2024-01-02 深圳市智税链科技有限公司 在区块链网络中查询交易信息的方法、记账节点和介质
CN109523385A (zh) * 2018-12-07 2019-03-26 深圳市智税链科技有限公司 在区块链网络中查询交易信息的方法、记账节点和介质
AU2018347199B2 (en) * 2018-12-13 2021-07-01 Advanced New Technologies Co., Ltd. Off-chain smart contract service based on trusted execution environment
CN110020542B (zh) * 2018-12-20 2020-05-19 阿里巴巴集团控股有限公司 数据读写方法及装置、电子设备
CN110020549B (zh) * 2019-02-19 2020-04-07 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法、节点和存储介质
CN110310205B (zh) * 2019-06-28 2022-02-25 百度在线网络技术(北京)有限公司 一种区块链数据监控方法、装置、设备和介质
CN111475827A (zh) * 2019-11-08 2020-07-31 支付宝(杭州)信息技术有限公司 基于链下授权的隐私数据查询方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106534097A (zh) * 2016-10-27 2017-03-22 上海亿账通区块链科技有限公司 基于区块链交易的权限管制方法及系统
CN107105041A (zh) * 2017-04-27 2017-08-29 电子科技大学 一个基于区块链的医疗大数据管理系统及框架
CN107342858A (zh) * 2017-07-05 2017-11-10 武汉凤链科技有限公司 一种基于可信环境的智能合约保护方法和系统
CN109299347A (zh) * 2018-11-16 2019-02-01 大唐高鸿信息通信研究院(义乌)有限公司 一种基于5g架构和区块链的学历信息查询方法及系统
CN109768865A (zh) * 2019-01-18 2019-05-17 深圳市威赫科技有限公司 可信执行环境下的区块链上身份数字化实现方法及系统
CN110032885A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 区块链中实现隐私保护的方法、节点和存储介质
CN110189143A (zh) * 2019-04-26 2019-08-30 华中科技大学 一种基于区块链的营销标签真实性验证方法及系统
CN110096857A (zh) * 2019-05-07 2019-08-06 百度在线网络技术(北京)有限公司 区块链系统的权限管理方法、装置、设备和介质

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021088536A1 (zh) * 2019-11-08 2021-05-14 蚂蚁区块链科技(上海)有限公司 基于链下授权的隐私数据查询方法及装置
CN112152800B (zh) * 2020-03-18 2022-05-13 蚂蚁双链科技(上海)有限公司 生成共享合约密钥的方法及装置
CN112152800A (zh) * 2020-03-18 2020-12-29 支付宝(杭州)信息技术有限公司 生成共享合约密钥的方法及装置
CN112199701A (zh) * 2020-03-18 2021-01-08 支付宝(杭州)信息技术有限公司 调用合约的方法及装置
CN112329041A (zh) * 2020-03-18 2021-02-05 支付宝(杭州)信息技术有限公司 部署合约的方法及装置
CN112329041B (zh) * 2020-03-18 2024-01-23 支付宝(杭州)信息技术有限公司 部署合约的方法及装置
CN111563087A (zh) * 2020-04-10 2020-08-21 杭州云象网络技术有限公司 一种基于esb的区块链应用通用系统
CN111768192A (zh) * 2020-06-18 2020-10-13 上海交通大学 链下通道金额均衡方法及系统
CN111768192B (zh) * 2020-06-18 2023-10-20 上海交通大学 链下通道金额均衡方法及系统
CN111797420A (zh) * 2020-08-20 2020-10-20 北京阿尔山金融科技有限公司 基于区块链的数据授权存证方法及系统
CN112187772A (zh) * 2020-09-23 2021-01-05 上海万向区块链股份公司 基于智能合约设计的权限控制方法、系统及介质
CN112187772B (zh) * 2020-09-23 2021-09-21 上海万向区块链股份公司 基于智能合约设计的权限控制方法、系统及介质
CN112685773A (zh) * 2020-12-29 2021-04-20 海南大学 基于智能合约和sgx的数据分布式隐私保护方法
CN112804360B (zh) * 2021-03-30 2021-07-06 支付宝(杭州)信息技术有限公司 提供跨链隐私数据的方法和装置
CN112804360A (zh) * 2021-03-30 2021-05-14 支付宝(杭州)信息技术有限公司 提供跨链隐私数据的方法和装置
CN113268742A (zh) * 2021-04-07 2021-08-17 支付宝(杭州)信息技术有限公司 数据授权方法、装置及电子设备
CN113658005A (zh) * 2021-04-28 2021-11-16 支付宝(杭州)信息技术有限公司 在区块链中执行交易的方法和区块链系统
CN113407954A (zh) * 2021-05-11 2021-09-17 支付宝(杭州)信息技术有限公司 基于区块链的数据管理方法及装置
CN115174126A (zh) * 2022-09-08 2022-10-11 山东省计算中心(国家超级计算济南中心) 基于区块链和sgx的外包数据密文搜索方法及系统

Also Published As

Publication number Publication date
CN111475827A (zh) 2020-07-31
CN110580413B (zh) 2020-03-24
WO2021088536A1 (zh) 2021-05-14

Similar Documents

Publication Publication Date Title
CN110580413B (zh) 基于链下授权的隐私数据查询方法及装置
CN110580418B (zh) 基于区块链账户的隐私数据查询方法及装置
CN110580262B (zh) 基于智能合约的隐私数据查询方法及装置
CN110580414B (zh) 基于区块链账户的隐私数据查询方法及装置
CN110245506B (zh) 基于区块链的智能合约管理方法及装置、电子设备
CN113221169B (zh) 区块链隐私数据的查询方法及装置
CN110580412B (zh) 基于链代码的权限查询配置方法及装置
WO2021184963A1 (zh) 调用合约的方法及装置
CN110580245B (zh) 隐私数据的共享方法及装置
WO2021184961A1 (zh) 部署合约的方法及装置
WO2021184882A1 (zh) 验证合约的方法及装置
WO2021184973A1 (zh) 访问外部数据的方法及装置
CN110580417B (zh) 基于智能合约的隐私数据查询方法及装置
WO2021184962A1 (zh) 生成共享合约密钥的方法及装置
CN111090874B (zh) 调用合约的方法及装置
CN110580411B (zh) 基于智能合约的权限查询配置方法及装置
CN111008228A (zh) 区块链中账户隐私信息的查询方法及装置
CN113438289A (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200703

Address after: Unit 02, 20 / F, block a, building 4, Lane 838, Huangpi South Road, Huangpu District, Shanghai 200025

Patentee after: Ant blockchain Technology (Shanghai) Co., Ltd

Address before: 801-11, Section B, 8th floor, No. 556, Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: Alipay (Hangzhou) Information Technology Co.,Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40019386

Country of ref document: HK