CN113114476B - 基于合约的隐私存证方法及装置 - Google Patents
基于合约的隐私存证方法及装置 Download PDFInfo
- Publication number
- CN113114476B CN113114476B CN202110658359.8A CN202110658359A CN113114476B CN 113114476 B CN113114476 B CN 113114476B CN 202110658359 A CN202110658359 A CN 202110658359A CN 113114476 B CN113114476 B CN 113114476B
- Authority
- CN
- China
- Prior art keywords
- contract
- private key
- transaction
- public
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6245—Protecting personal data, e.g. for financial or medical purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3234—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本说明书一个或多个实施例提供一种基于合约的隐私存证方法及装置。该方法应用于区块链网络中的区块链节点,包括:在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中通过所述公私钥对中的合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于合约的隐私存证方法及装置。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,利用区块链技术搭建去中心化系统,并在区块链的分布式数据库中收录各种执行程序进行自动执行,已在众多的领域中得到广泛应用。
另外,区块链节点所处节点设备中可以形成硬件的可信执行环境(TrustedExecution Environment,下称TEE),从而区块链节点可以通过在该TEE中处理处理,确保交易、合约代码、合约状态、业务数据等需要隐私保护的数据不会发生隐私泄露。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于合约的隐私存证方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于合约的隐私存证方法,应用于区块链网络中的区块链节点,包括:
在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;
响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;
响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中通过所述公私钥对中的合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
根据本说明书一个或多个实施例的第二方面,提出了一种基于合约的隐私存证装置,应用于区块链网络中的区块链节点,包括:
密钥生成单元,用于在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;
数据存证单元,用于响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;
数据解密单元,用于响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中通过所述公私钥对中的合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
根据本说明书的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述第一方面的实施例中所述的方法。
根据本说明书的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第一方面的实施例中所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种基于合约的隐私存证方法的流程图。
图5是一示例性实施例提供的一种生成公私钥对的过程示意图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种基于合约的隐私存证装置的框图。
具体实施方式
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于链外产生的数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链。由区块链中的节点设备对该交易进行合法性验证以及共识,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
其中,区块链交易的合法性验证通常可以通过验证签名有效性的方式来实现。当区块链采用账户模型时,该区块链所适用的账户通常对应有一组或多组有效的公钥-私钥对,上述有效的公钥被显示在相应的账户状态中,或以其他形式存储在区块链的分布式数据库中,且可被区块链网络中的任一节点设备获得;与上述有效的公钥对应的私钥则保存在账户所有方的本地数据库或其他硬件终端中,以供账户所有方进行数字签名或加解密操作等。发起方所发起的区块链交易不仅包括交易内容,还包括该发起方采用其账户对应的私钥针对交易内容而作的数字签名。区块链节点在接收到区块链交易后,可以基于该区块链交易所含的数字签名对该区块链交易进行合法性验证,通常可包括:验证数字签名的签名方公钥是否隶属于交易发起方的账户、验证数字签名是否基于该区块链交易的交易内容而获得等,以确保该区块链交易确实是由生成上述数字签名的用户或其他对象所发起,且传输过程中未被篡改。在另一种情况下,发起方的公钥也可以被携带在CA中心向发起方颁发的CA证书中,当发起方发送区块链交易时,可以将通过CA中心私钥进行签名的CA证书一同发送给区块链节点,由区块链节点根据CA中心的公钥对CA证书的签名进行验证,在验证成功的情况下确并获取CA证书中所携带的发起方公钥。其中,CA中心为可以被区块链节点默认信任的权威机构,因而只要用CA中心的公钥成功对证书进行验签,即可确定证书中的公钥可信,使得区块链节点可以通过该公钥对接收到的区块链交易所含的数字签名进行合法性验证。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work, POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成候选区块,并将生成的候选区块或者该候选区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成候选区块的过程中或者之前,可以执行该交易。记账节点在生成候选区块后,可以将该候选区块或者该候选区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成候选区块,并将生成的候选区块或者该候选区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到候选区块或者该候选区块的区块头后,经验证没有问题,可以将该候选区块作为最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
目前的区块链系统通常包括两种主流的交易模型;其中,一种是以比特币系统为代表的UTXO(Unspent Transaction Output,未花费的交易输出)模型;而另外一种则是以以太坊(Ethereum)系统为代表的账户模型。
其中,以上两类区块链如果想要实现数据存证,通常可以采用如下的存证方式:
对于采用UTXO模型的区块链,支持的原生交易通常只包括转账交易,在基于转账交易进行转账的过程中,用户可以通过在转账交易中的交易附言(即转账附言)中来填充额外的数据,来将该额外的数据在区块链上进行存证。
对于采用账户模型的区块链,需要存储和维护的区块链数据,通常包括区块数据、区块链中的区块链账户对应的账户状态数据;而区块数据又可以进一步包括区块头数据、区块中的区块交易数据、以及与区块中的区块交易数据对应的交易收据(Receipt),等等。而在存储以上示出的各种区块链数据时,通常可以将上述各种区块链数据以key-value键值对的形式,组织成Merkle树在数据库中存储。
在这类区块链模型中,可以在区块链上部署用于进行数据存证的智能合约,用户可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态,存储到与该智能合约对应的Merkle树中。
例如,以以太坊为例,通常采用一种特殊的称之为MPT树的特殊的Merkle树来存储和维护区块链数据;其中,对于账户状态数据,可以组织成MPT状态树(俗称世界状态)在数据库中存储;MPT状态树上存储了以账户地址为key,以账户状态数据为value的key-value键值对。而智能合约对应的合约账户中存储的数据内容,也会被进一步组织成 storage树(一种用于存储数据的MPT存储树)在数据库中存储;storage树的根节点的hash值,会作为与该合约账户对应的账户状态数据的一部分,填充到MPT状态树中;而MPT状态树的根节点的hash会被作为认证根,进一步填充到区块头中。当用户需要进行数据存证时,可以通过调用智能合约的方式,将需要存证的数据作为该智能合约对应的合约账户的账户状态数据,存储到与该智能合约对应的storage树中。
在区块链领域,还有一个重要的概念就是账户(Account);以以太坊为例,以太坊通常将账户划分为外部账户和合约账户两类;外部账户就是由用户直接控制的账户,也称之为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。
当然,对于一些基于以太坊的架构而衍生出的区块链模型(比如蚂蚁区块链),还可以对区块链支持的账户类型,进行进一步的扩展,在本说明书中不进行特别限定。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
在一个例子中,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。其中:
Balance字段,用于维护账户目前的账户余额;
Nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
Code字段,用于维护该账户的合约代码;在实际应用中,Code字段中通常仅维护合约代码的hash值;因而,Code字段通常也称之为Codehash字段。
Storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。
合约账户的存储内容通常会构建成MPT(Merkle Patricia Trie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的MPT树,通常也称之为Storage树。而Storage字段通常仅维护该Storage树的根节点;因此,Storage字段通常也称之为StorageRoot字段。
其中,对于外部账户而言,以上示出的Code字段和Storage字段的字段值均为空值。
在实际应用中,不论是公有链、私有链还是联盟链,都可能提供智能合约(smartcontract)的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
如图1所示,Bob将一笔包含创建智能合约信息的交易(transaction)发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图1中交易的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;比如,图1中各节点中的“0x68e12cf284…”就代表了创建的这个合约账户的地址;合约代码(Code)和账户存储(Storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。
前述提到,包含创建智能合约的交易的Data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如Solidity、Serpent、LLL语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
以Solidity语言为例,用其编写的合约代码与面向对象编程语言中的类(Class)很相似,在一个合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(Storage)字段中的值,用于保存合约的状态。
如图2所示,仍以以太坊为例,Bob将一笔包含调用智能合约信息的交易发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图2中交易的From字段用于记录发起调用智能合约的账户的地址,To字段用于记录被调用的智能合约的地址,交易的Data字段用于记录调用智能合约的方法和参数。调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点(例如图2中的节点1)查看合约账户的账户状态。
智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的EVM可以分别执行该交易,将智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的EVM外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。
如前所述,区块链技术基于共识机制、签名验证等基本特性,可以保证区块链网络上的数据安全、透明且不可篡改。基于此,可以将数据保存至区块链上,以达到对数据的防篡改、可追溯、数据来源可信任等目的,即实现基于区块链的数据存证。
为进一步保证被存证数据的私密性,相关技术中提出隐私存证的技术。例如,存证方使用使用自身私钥对数据加密后将其存证至区块链上,数据获取方从区块链上获取到密文状态的数据后,使用存证方的公钥进行解密以获取明文状态的数据。或者,存证方使用自身私钥对数据的摘要进行签名,并将签名过的摘要存证至区块链,从而数据获取方通过链下途径获取到数据后计算第一摘要,并在从区块链上获取到密文状态的数据摘要后,使用存证方的公钥解密得到第二摘要,进而通过比较第二摘要与第二摘要是否相同确定被存证数据是否可信任等。但是,上述相关技术中本质上采用的仍然是中心化的私钥管理方式,因此往往存在监管和安全监督的问题;且仅能够使用存证方的自身私钥对上链信息进行加密,导致数据访问权限的管理不够灵活。
为解决这一问题,本说明书提出一种基于合约的隐私存证方法,在区块链节点处部署的TEE中生成对应于隐私存证合约的公私钥对并公开其中的合约公钥,以便存证方根据该合约公钥对待存证的目标数据的明文进行加密得到目标数据密文,从而区块链节点在接收到存证方发起的数据存证交易后,可以响应于该交易在上述TEE中使用合约私钥解密该目标数据密文。通过该方式,能够在区块链网络中通过部署隐私存证合约生成不同的公私钥对,从而实现了对目标数据的合约级存证,从而可以通过发起合约部署交易的方式灵活设置针对目标数据的访问权限;而且因为对目标数据的加解密都是在区块链节点处部署的TEE中进行的,所以能够保证公私钥对中的合约私钥的私密性,避免了中心化的私钥管理方式可能存在的监管和安全监督等问题,提升了对目标数据进行隐私存证的安全性。下面结合图4-图5对本说明书提出的基于合约的隐私存证方法进行说明。
请参见图4,图4是一示例性实施例提供的一种基于合约的隐私存证方法的流程图。如图4所示,该方法应用于区块链网络中的区块链节点,该方法可以包括以下步骤402-406。
步骤402,在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥。
首先需要说明的是,本说明书所述的区块链节点可以为区块链网络中任一节点。该节点处部署有TEE,从而该节点可以利用TEE实现对隐私密钥或者存证数据的加密处理。可以理解的是,该TEE实际被部署在该区块链节点所在的节点设备中。其中,TEE可以基于Intel SGX(Software Guard Extensions,软件保护扩展)或者AMD TrustZone(信任区)等技术构建,本说明书对此并不进行限制。以Intel SGX技术为例,该技术在Intel原有架构上进行了扩展,如增加新的指令集和相应的内存访问机制等,这些扩展允许应用程序实现被称为enclave(飞地)的容器,即在应用程序的地址空间中划分出一块被保护的区域,并通过该区域为该容器内的代码和数据提供私密性和完整性的保护。其中,SGX允许应用程序指定需要保护的代码和数据部分,在创建enclave之前,不必对这些代码和数据进行检查或分析,但加载到enclave中去的代码和数据必须经过度量,当应用程序需要保护的部分加载到enclave后,SGX即保护它们不被外部软件所访问。具体的,enclave和SGX数据结构被保存在系统内分配的被保护的物理内存区域EPC(Enclave Page Cache,飞地页缓存)内,从而通过针对EPC的内存保护机制避免外部实体访问EPC内的数据,以实现对内部数据的隐私保护。其中,在下述方案中所涉及的TEE采用Intel SGX技术构建的情况下,对目标数据进行加解密的过程即在EPC中进行。
另外,区块链节点中可以部署隐私存证合约,从而该节点可以在TEE中生成对应于该合约的公私钥对,其中,该公私钥对包括合约私钥和合约公钥,因此区块链节点可以进一步公开其中的合约公钥,以便存证方使用该合约公钥对待存证的目标数据进行加密。
区块链网络中通常包含多个区块链节点,区块链节点可以通过多种方式部署上述隐私存证合约。例如,隐私存证合约可以为需要共识的智能合约,从而该合约可以在经过共识后被部署于区块链网络中——即被分别部署于区块链网络中的各个区块链节点处。或者,上述隐私存证合约也可以为无需共识的本地合约,此时该合约可以仅部署于区块链网络中的某一区块链节点(该节点即为应用本说明书所述隐私存证方法的区块链节点)。
在一实施例中,针对区块链节点中部署的隐私存证合约,区块链节点可以通过多种方式生成对应于该合约的公私钥对。作为一示例性实施例,区块链节点可以响应于接收到的合约部署交易在区块链节点处部署隐私存证合约,并在部署过程中在TEE中生成对应于该合约的公私钥对。作为另一示例性实施例,区块链节点也可以在区块链节点处已完成对隐私存证合约的部署之后,在TEE中生成对应于该合约的公私钥对。例如,在前述实施例中,无论上述隐私存证合约在通过共识后被部署在区块链网络中的各个区块链节点处,还是无需共识而仅被部署于区块链网络中的某一区块链节点处,部署该合约的区块链节点在该合约部署完成后,都可以在本地部署的TEE中生成对应于该合约的公私钥对,从而使得部署有该合约的节点处获取到相应的公私钥对。
进一步的,区块链节点在生成公私钥对后,可以通过多种方式公开其中的合约公钥。例如,可以通过交易收据中的事件公开该合约公钥,如区块链节点在响应于合约部署交易部署隐私存证合约的过程中生成上述公私钥对的情况下,区块链节点可以将公私钥对中的合约公钥记录在该交易的交易收据所包含的事件中,以由预设对象通过监听该事件获取合约公钥。在该事件机制中,相当于在监听方(即上述预设对象)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK(Software Development Kit,软件开发工具包)等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。或者,除了上述的事件机制之外,还可以通过其他方式实现合约公钥的透出。例如,区块链节点可以通过自身运行的区块链平台代码中包含的监听逻辑对所生成的合约公钥进行监听,并将监听到的合约公钥发送至预设对象。具体的,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听合约部署交易的交易内容、隐私存证合约的合约状态、隐私存证合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至上述预设对象(获取其他预定义的监听方)。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
在一实施例中,区块链节点可以通过密钥导出函数(Key Derivation Function,下称KDF)生成上述公私钥对。可以理解的是,作为用于将短密码变成长密码的Hash函数,KDF需要密码(password)和盐值(salt)两个输入参数。其中,区块链节点可以将秘密值作为上述密码,而为了保证所生成的公私钥对能够体现合约部署交易的特异性,区块链节点可以将上述隐私存证合约的合约信息作为上述盐值,即区块链节点可以先获取秘密值和隐私存证合约的合约信息,然后通过KDF对该秘密值和合约信息进行计算,以导出公私钥对。其中,上述KDF的具体算法可以参见相关技术中的记载,此处不再赘述。另外,上述合约信息可以为隐私存证合约的合约地址或者该合约的部署方的部署方信息,如用户名称、节点公钥、节点成员的身份公钥等信息。或者,上述合约信息也可以通过合约地址和部署方信息组合得到,如将合约地址“9c26cc0804d0cc”与节点公钥“d2297eec”直接拼接得到的“9c26cc0804d0ccd2297eec”作为该合约信息。当然,在方案实践中,可以灵活选用具体的组合方式以得到合约信息,本说明书对此并不进行限制。
另外需要说明的是,任一区块链节点中可以由至少一个部署方部署多个不同的隐私存证合约,从而在各个隐私存证合约的部署或执行过程中可以生成多个不同的公私钥对,因此,存证方可以使用任一公私钥对对任一目标数据进行加密后存证。显然,在存证方使用不同公私钥对对同一目标数据进行加密的情况下,可以实现对该目标数据的合约级存证,便于更加灵活多样的实现数据存证。当然,存证方也可以根据业务需求使用合适的公私钥对对目标数据进行存证,从而通过相应的合约私钥实现对目标数据的访问权限的控制。
进一步的,因为上述公私钥对在TEE中生成,所以上述秘密值可以由TEE所维护,以保证秘密值的私密性,进而保证所生成公私钥对的私密性。作为独立的硬件隐私环境,上述TEE通常具有自身的根密钥,该根密钥可以用于派生得到多个衍生密钥用于实现具体的业务功能。因此,区块链节点可以将上述TEE的根密钥作为上述秘密值,从而基于TEE的相关密钥生成公私钥对,使得该公私钥对能够体现该TEE的特异性。或者,区块链节点也可以将根据根密钥派生得到的衍生密钥作为上述秘密值,以降低直接使用根密钥的安全风险。其中,TEE的根密钥可以由区块链节点按照预设的密钥算法计算得到,或者从预设的密钥管理方处获取,本说明书对此并不进行限制。例如,在区块链网络中的各个区块链节点均部署有上述隐私存证合约的情况下,各个区块链节点可以分别使用相同的密钥算法计算得到上述根密钥,或者从同一KMS(Key Managment Service,密钥管理服务)处获取上述根密钥。
结合图5进行说明,图5是一示例性实施例提供的一种生成公私钥对的过程示意图。如图5所示,区块链节点根据隐私存证合约的合约地址和隐私存证合约的部署方的部署方信息生成合约信息作为盐值,并获取区块链节点本地部署的TEE的秘密值,然后通过KDF函数对该盐值和秘密值进行计算导出合约私钥,然后基于公钥导出算法进一步导出合约公钥,显然,该方法得到的合约私钥和合约公钥即构成对应于隐私存证合约的公私钥对。其中,上述公钥导出过程可以采用相关技术中的RSA、ECC(Elliptic Curves Cryptography,椭圆曲线密码密码学)、IBC(Identity-Based Cryptograph,基于标识的密码学)等算法实现,具体过程不再赘述。
可以理解的是,区块链节点在TEE中生成的上述合约私钥通常为明文形式,因此为保证合约私钥的私密性,可以以TEE对应的加密方式维护该合约私钥。例如,区块链节点可以在TEE中对合约私钥的明文进行加密,并将加密得到的合约私钥密文从TEE输出并保存在区块链节点的本地数据库中。相应的,对于加密后的合约私钥的使用过程可参见下述实施例的具体说明,此处暂不赘述。其中,在TEE中加密合约私钥时可以采用TEE的根密钥或者衍生密钥等,上述密钥可以为对称密钥或非对称密钥。另外,区块链节点的本地数据库可以通过键值对(key,value)的方式存储上述数据,如将上述隐私存证合约的合约地址Contractaddr与该合约对应的合约公钥Keypub进行结对存储,即在区块链节点的本地数据库中存储键值对(Contractaddr,Keypub)。
步骤404,响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到。
在区块链节点生成上述公私钥对后,具有数据存证需求的存证方可以使用区块链节点公开的上述合约公钥对待存证的目标数据进行加密,并对加密得到的目标数据密文进行存证,其中,区块链节点可以将目标数据密文存证至链上区块或者世界状态中。例如,在数据存证交易通过共识的情况下,区块链节点可以将包含数据存证交易的区块添加至区块链节点所维护的区块链的末端(即将目标数据密文上链),当然,包含上述数据存证交易的区块应当在通过区块链网络中各个节点的共识后被上链。或者,也可以由上述数据存证交易调用隐私存证合约实现对目标数据的存证,即该隐私存证合约中包含针对目标数据密文的上链处理逻辑,此时区块链节点可以将目标数据密文存证于隐私存证合约对应的世界状态中,如将该目标数据密文记录在上述数据存证交易的交易收据中。具体的,上述目标数据密文可以被存储在区块链节点的本地数据库中(实际上,区块链节点所维护的所有区块都可以被存储在该数据库中)。
另外,上述存证方(即数据存证交易的发起方)可以为合约部署交易的发起方,即该发起方通过自身部署的合约部署交易生成公私钥对,并使用其中的合约公钥将待存证的目标数据加密后进行存证。而本说明书涉及到的目标数据可以为该存证方实现业务功能过程中产生的业务数据、该存证方从其他数据提供方获取的数据等,本说明书对此并不进行限制。
步骤406,响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述TEE中通过所述公私钥对中的合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
在区块链节点通过响应于上述数据存证交易对目标数据加密并将加密后的目标数据密文存证完成后,对目标数据具有获取需求的需求方可以发起针对目标数据且用于调用已部署完成的隐私存证合约的数据获取交易(该需求方即为数据获取交易的发起方),从而区块链节点可以响应于该交易在TEE中通过前述的合约私钥解密目标数据密文,以获取目标数据的明文,从而满足需求方针对目标数据的获取需求。显然,要响应上述数据获取交易,区块链节点一方面需要获取目标数据密文,另一方面需要获取明文状态的合约公钥。
在一实施例中,可以通过多种方式获取目标数据。例如,上述数据获取交易可以为需要共识的区块链交易,从而该交易可以在经过共识后被区块链网络中的各个区块链节点分别执行,以由各个区块链节点分别获取已存证的目标数据。或者,上述数据获取交易也可以为无需共识的本地区块链交易,此时可以仅由接收到该交易的区块链节点执行,从而由该节点获取已存证的目标数据。具体的,因为上述目标数据被响应于数据存证交易而存证,因此数据获取交易中可以包含数据存证交易的合约信息,以便区块链节点根据该合约信息确定数据存证交易,进而确定数据存证交易对应的目标数据密文的存储位置。其中,上述合约信息可以为合约地址、合约哈希、合约摘要等,不再赘述。或者,为更直接的确定目标数据密文的存储位置,数据获取交易中也可以包含目标数据密文的数据信息,如该数据密文的数据哈希或者目标数据的数据哈希等,不再赘述。
如前所述,区块链节点可以在TEE中对合约私钥的明文进行加密,并将加密得到的合约私钥密文从TEE输出并保存在区块链节点的本地数据库中。因此在另一实施例中,响应于接收到的上述数据获取交易,区块链节点可以从本地数据库中获取上述合约私钥密文,并将该密文输入至TEE,然后在TEE中解密得到合约私钥的明文,并通过该明文解密目标数据密文得到目标数据的明文。显然,生成公私钥对的过程以及对合约私钥密文的解密过程均是在TEE中完成的,而生成后的合约私钥会在TEE中加密后再被保存至区块链节点的本地数据库,因此合约私钥仅会在TEE中以明文形式存在,而在TEE外均以密文形式存在,从而在逻辑上实现了“合约私钥不出TEE”的加密存储效果,有效保证了合约私钥的私密性。
实际上,因为对目标数据进行加密的合约公钥和对目标数据进行解密的合约私钥被在隐私存证合约的部署或执行过程中生成(即公私钥对对应于隐私存证合约),所以区块链节点可以通过该隐私存证合约提供的数据接口函数获取上述目标数据密文和合约私钥。具体的,区块链节点可以通过自身的区块链平台代码所提供的智能合约引擎调用上述数据接口函数。如在该数据接口函数为GetContidentialTransactionDepositData()的情况下,区块链节点可以将隐私存证合约的合约地址Contractaddr和数据存证交易的交易哈希Txhash作为入参,从而从区块链节点的本地数据库中获取到相应的目标数据密文Txdata和合约私钥Keypri(即函数的输出结果),或者,该函数的也可以包含相应的数据解码逻辑,所以区块链节点可以在调用该函数时即完成使用合约私钥keypri解密的目标数据密文Txdata过程,从而将目标数据的明文作为函数的输出结果输出至TEE中。
在一实施例中,为满足数据获取交易的发起方针对目标数据或该数据的处理结果的获取请求,区块链节点可以响应于接收到的数据获取交易,向该发起方返回相应的目标数据或者其对应的处理结果。在此过程中,还可以通过数据加密的方式保证所返回的目标数据或其处理结果的私密性,以满足该发起方或者前述存证方(如目标数据的所有方、管理方等)对于目标数据或其处理结果的隐私需求。例如,该发起方可能仅需要获取目标数据,此时区块链节点可以将TEE中的目标数据的明文通过数据获取交易的发起方的身份公钥在TEE内对目标数据的明文进行加密,并将加密后的目标数据提供至数据获取交易的发起方,从而该发起方能够获取到自身的身份公钥加密后的目标数据。或者,上述发起方也可以在数据获取交易中指定需要对目标数据进行的处理,如进行隐私计算、数据分析等,从而区块链节点可以在TEE中对目标数据的明文进行上述处理,并通过数据获取交易的发起方的身份公钥对相应的处理结果进行加密,将加密后的处理结果提供至上述发起方。相应的,上述发起方可以在使用自身的节点私钥对接收到的加密后的目标数据或者其处理结果进行解密,从而满足发起方对于目标数据的隐私处理需求。
根据本说明书的上述实施例,区块链节点在区块链节点处部署的TEE中生成对应于隐私存证合约的公私钥对并公开其中的合约公钥,以便存证方根据该合约公钥对待存证的目标数据的明文进行加密得到目标数据密文,从而区块链节点在接收到存证方发起的数据存证交易后,可以响应于该交易在TEE中使用合约私钥解密该目标数据密文。通过该方式,能够在区块链网络中通过部署隐私存证合约生成不同的公私钥对,从而实现了对目标数据的合约级存证,从而可以通过发起合约部署交易的方式灵活设置针对目标数据的访问权限;而且因为对目标数据的加解密都是在区块链节点处部署的TEE中进行的,所以能够保证公私钥对中的合约私钥的私密性,避免了中心化的私钥管理方式可能存在的监管和安全监督等问题,提升了对目标数据进行隐私存证的安全性,从而有效解决了相关技术中存在的前述技术问题。
图6是一示例性实施例提供的一种设备的结构示意图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图7是一示例性实施例提供的一种基于合约的隐私存证装置的框图。请参考图7,该装置可以应用于如图6所示的设备中,以实现本说明书的技术方案。其中,该基于合约的隐私存证装置应用于区块链网络中的区块链节点,可以包括:
密钥生成单元701,用于在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;
数据存证单元702,用于响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;
数据解密单元703,用于响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中通过所述公私钥对中的合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
可选的,所述密钥生成单元701还用于:
响应于接收到的合约部署交易在所述区块链节点处部署隐私存证合约,并在部署过程中在所述可信执行环境中生成对应于所述隐私存证合约的公私钥对;或者,
在所述区块链节点处已完成对隐私存证合约的部署之后,在所述可信执行环境中生成对应于所述隐私存证合约的公私钥对。
可选的,所述密钥生成单元701还用于:
将所述公私钥对中的合约公钥记录在所述合约部署交易的交易收据所包含的事件中,以由预设对象通过监听所述事件获取所述合约公钥;或者,
通过所述区块链节点运行的区块链平台代码中包含的监听逻辑对所生成的合约公钥进行监听,并将监听到的所述合约公钥发送至预设对象。
可选的,所述密钥生成单元701还用于:
获取秘密值和所述隐私存证合约的合约信息,并通过密钥导出函数对所述秘密值和所述合约信息进行计算,以导出所述公私钥对。数据存证单元702,用于
可选的,所述秘密值由所述可信执行环境所维护。
可选的,所述秘密值包括:
所述可信执行环境的根密钥;或者,
基于所述可信执行环境的根密钥派生得到的衍生密钥。
可选的,所述合约信息包括下述至少之一:
所述隐私存证合约的合约地址;
所述隐私存证合约的部署方的部署方信息。
可选的,所述隐私存证合约经过共识后部署于所述区块链网络;或者,所述隐私存证合约仅部署于所述区块链节点处。
可选的,所述数据存证单元702还用于:
在所述数据存证交易通过共识的情况下,将包含所述数据存证交易的区块添加至所述区块链节点所维护的区块链的末端;或者,
在所述数据存证交易调用所述隐私存证合约的情况下,将所述目标数据密文存证于所述隐私存证合约对应的世界状态中。
可选的,所述数据获取交易为经过共识的区块链交易,或者所述数据获取交易为本地区块链交易。
可选的,还包括:
私钥保存单元704,用于在所述可信执行环境中对所述合约私钥的明文进行加密,并将加密得到的合约私钥密文从所述可信执行环境输出并保存在所述区块链节点的本地数据库中。
可选的,所述数据解密单元703还用于:
从所述本地数据库中获取所述合约私钥密文并输入至所述可信执行环境;
在所述可信执行环境中解密得到所述合约私钥的明文,并通过所述合约私钥的明文解密所述目标数据密文。
可选的,还包括:
数据提供单元705,用于通过所述数据获取交易的发起方的身份公钥,在所述可信执行环境内对所述目标数据的明文进行加密,将加密后的目标数据提供至所述发起方;或者,
结果提供单元706,用于在所述可信执行环境中对所述目标数据的明文进行处理,并通过所述数据获取交易的发起方的身份公钥对相应的处理结果进行加密,将加密后的处理结果提供至所述发起方。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (15)
1.一种基于合约的隐私存证方法,应用于区块链网络中的区块链节点,包括:
在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;
在所述可信执行环境中对合约私钥的明文进行加密,并将加密得到的合约私钥密文从所述可信执行环境输出并保存在所述区块链节点的本地数据库中;
响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;
响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中解密从所述本地数据库中获取到的所述合约私钥密文以得到所述合约私钥,并在所述可信执行环境中通过解密得到的所述合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
2.根据权利要求1所述的方法,所述生成对应于隐私存证合约的公私钥对,包括:
响应于接收到的合约部署交易在所述区块链节点处部署隐私存证合约,并在部署过程中在所述可信执行环境中生成对应于所述隐私存证合约的公私钥对;或者,
在所述区块链节点处已完成对隐私存证合约的部署之后,在所述可信执行环境中生成对应于所述隐私存证合约的公私钥对。
3.根据权利要求2所述的方法,所述公开所述公私钥对中的合约公钥,包括:
将所述公私钥对中的合约公钥记录在所述合约部署交易的交易收据所包含的事件中,以由预设对象通过监听所述事件获取所述合约公钥;或者,
通过所述区块链节点运行的区块链平台代码中包含的监听逻辑对所生成的合约公钥进行监听,并将监听到的所述合约公钥发送至预设对象。
4.根据权利要求1所述的方法,所述生成对应于隐私存证合约的公私钥对,包括:
获取秘密值和所述隐私存证合约的合约信息,并通过密钥导出函数对所述秘密值和所述合约信息进行计算,以导出所述公私钥对。
5.根据权利要求4所述的方法,所述秘密值由所述可信执行环境所维护。
6.根据权利要求5所述的方法,所述秘密值包括:
所述可信执行环境的根密钥;或者,
基于所述可信执行环境的根密钥派生得到的衍生密钥。
7.根据权利要求4所述的方法,所述合约信息包括下述至少之一:
所述隐私存证合约的合约地址;
所述隐私存证合约的部署方的部署方信息。
8.根据权利要求1所述的方法,所述隐私存证合约经过共识后部署于所述区块链网络;或者,所述隐私存证合约仅部署于所述区块链节点处。
9.根据权利要求1所述的方法,所述对所述数据存证交易所含的目标数据密文进行存证,包括:
在所述数据存证交易通过共识的情况下,将包含所述数据存证交易的区块添加至所述区块链节点所维护的区块链的末端;或者,
在所述数据存证交易调用所述隐私存证合约的情况下,将所述目标数据密文存证于所述隐私存证合约对应的世界状态中。
10.根据权利要求1所述的方法,所述数据获取交易为经过共识的区块链交易,或者所述数据获取交易为本地区块链交易。
11.根据权利要求1所述的方法,所述在所述可信执行环境中通过所述公私钥对中的合约私钥解密所述目标数据密文,包括:
从所述本地数据库中获取所述合约私钥密文并输入至所述可信执行环境;
在所述可信执行环境中解密得到所述合约私钥的明文,并通过所述合约私钥的明文解密所述目标数据密文。
12.根据权利要求1所述的方法,还包括:
通过所述数据获取交易的发起方的身份公钥,在所述可信执行环境内对所述目标数据的明文进行加密,并将加密后的目标数据提供至所述发起方;或者,
在所述可信执行环境中对所述目标数据的明文进行处理,并通过所述数据获取交易的发起方的身份公钥对相应的处理结果进行加密,将加密后的处理结果提供至所述发起方。
13.一种基于合约的隐私存证装置,应用于区块链网络中的区块链节点,包括:
密钥生成单元,用于在所述区块链节点处部署的可信执行环境中,生成对应于隐私存证合约的公私钥对,并公开所述公私钥对中的合约公钥;
私钥保存单元,用于在所述可信执行环境中对合约私钥的明文进行加密,并将加密得到的合约私钥密文从所述可信执行环境输出并保存在所述区块链节点的本地数据库中;
数据存证单元,用于响应于接收到的数据存证交易,对所述数据存证交易所含的目标数据密文进行存证,所述目标数据密文由所述合约公钥对目标数据的明文进行加密得到;
数据解密单元,用于响应于针对所述目标数据且调用所述隐私存证合约的数据获取交易,在所述可信执行环境中解密从所述本地数据库中获取到的所述合约私钥密文以得到所述合约私钥,并在所述可信执行环境中通过解密得到的所述合约私钥解密所述目标数据密文,以获得所述目标数据的明文。
14.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-12中任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-12中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111611645.5A CN114172667A (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
CN202110658359.8A CN113114476B (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110658359.8A CN113114476B (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111611645.5A Division CN114172667A (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113114476A CN113114476A (zh) | 2021-07-13 |
CN113114476B true CN113114476B (zh) | 2021-11-16 |
Family
ID=76723503
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111611645.5A Pending CN114172667A (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
CN202110658359.8A Active CN113114476B (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111611645.5A Pending CN114172667A (zh) | 2021-06-15 | 2021-06-15 | 基于合约的隐私存证方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114172667A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609219A (zh) * | 2021-07-21 | 2021-11-05 | 微易签(杭州)科技有限公司 | 一种基于区块链验证文件的方法、系统、装置和存储介质 |
CN114244851B (zh) * | 2021-12-24 | 2023-07-07 | 四川启睿克科技有限公司 | 一种基于区块链的数据分发方法 |
CN114584293B (zh) * | 2022-02-28 | 2024-03-26 | 同济大学 | 一种基于TrustZone的区块链智能合约执行系统及方法 |
CN114499866B (zh) * | 2022-04-08 | 2022-07-26 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密钥分级管理方法及装置 |
CN115549906B (zh) * | 2022-11-24 | 2023-04-11 | 富算科技(上海)有限公司 | 基于区块链的隐私计算方法、系统、设备和介质 |
CN116260662B (zh) * | 2023-05-15 | 2023-07-18 | 成都信息工程大学 | 溯源存储方法、溯源方法、溯源存储系统及溯源系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033368A (zh) * | 2018-11-30 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法 |
WO2020169124A2 (en) * | 2020-06-08 | 2020-08-27 | Alipay Labs (singapore) Pte. Ltd. | Distributed storage of custom clearance data |
CN111767555A (zh) * | 2019-01-31 | 2020-10-13 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法及节点、存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621510B2 (en) * | 2016-11-09 | 2020-04-14 | Cognitive Scale, Inc. | Hybrid blockchain data architecture for use within a cognitive environment |
US10691793B2 (en) * | 2017-02-20 | 2020-06-23 | AlphaPoint | Performance of distributed system functions using a trusted execution environment |
CN110008736A (zh) * | 2019-01-31 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法及节点、存储介质 |
CN110033267B (zh) * | 2019-02-19 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、节点、系统和存储介质 |
WO2020233423A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 基于交易类型的收据存储方法和节点 |
CN110766550B (zh) * | 2019-09-05 | 2021-06-22 | 创新先进技术有限公司 | 基于区块链的资产查询方法及装置、电子设备 |
CN110580262B (zh) * | 2019-11-08 | 2020-03-10 | 支付宝(杭州)信息技术有限公司 | 基于智能合约的隐私数据查询方法及装置 |
CN111475829A (zh) * | 2019-11-08 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 基于区块链账户的隐私数据查询方法及装置 |
CN110580245B (zh) * | 2019-11-08 | 2020-03-10 | 支付宝(杭州)信息技术有限公司 | 隐私数据的共享方法及装置 |
CN110992027B (zh) * | 2019-11-29 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 在区块链中实现隐私保护的高效交易方法及装置 |
CN111008228A (zh) * | 2020-03-09 | 2020-04-14 | 支付宝(杭州)信息技术有限公司 | 区块链中账户隐私信息的查询方法及装置 |
CN111427663A (zh) * | 2020-03-24 | 2020-07-17 | 杭州溪塔科技有限公司 | 一种基于智能合约的虚拟机系统及其操作方法 |
CN111814198B (zh) * | 2020-09-11 | 2021-03-23 | 支付宝(杭州)信息技术有限公司 | 一种基于区块链的用户隐私数据提供方法及装置 |
CN112016924A (zh) * | 2020-10-21 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 一种基于区块链的数据存证方法、装置以及设备 |
-
2021
- 2021-06-15 CN CN202111611645.5A patent/CN114172667A/zh active Pending
- 2021-06-15 CN CN202110658359.8A patent/CN113114476B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033368A (zh) * | 2018-11-30 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法 |
CN111767555A (zh) * | 2019-01-31 | 2020-10-13 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法及节点、存储介质 |
WO2020169124A2 (en) * | 2020-06-08 | 2020-08-27 | Alipay Labs (singapore) Pte. Ltd. | Distributed storage of custom clearance data |
Also Published As
Publication number | Publication date |
---|---|
CN113114476A (zh) | 2021-07-13 |
CN114172667A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245506B (zh) | 基于区块链的智能合约管理方法及装置、电子设备 | |
CN113114476B (zh) | 基于合约的隐私存证方法及装置 | |
CN111475849B (zh) | 基于区块链账户的隐私数据查询方法及装置 | |
CN110580413B (zh) | 基于链下授权的隐私数据查询方法及装置 | |
CN110032884B (zh) | 区块链中实现隐私保护的方法及节点、存储介质 | |
CN111523110B (zh) | 基于链代码的权限查询配置方法及装置 | |
CN110266467B (zh) | 基于区块高度实现动态加密的方法及装置 | |
CN110580245B (zh) | 隐私数据的共享方法及装置 | |
CN111475829A (zh) | 基于区块链账户的隐私数据查询方法及装置 | |
CN110263544B (zh) | 结合交易类型和判断条件的收据存储方法和节点 | |
CN110580262A (zh) | 基于智能合约的隐私数据查询方法及装置 | |
CN110245947B (zh) | 结合交易与用户类型的条件限制的收据存储方法和节点 | |
CN111475850B (zh) | 基于智能合约的隐私数据查询方法及装置 | |
CN110580411B (zh) | 基于智能合约的权限查询配置方法及装置 | |
CN110245942B (zh) | 结合用户类型和判断条件的收据存储方法和节点 | |
CN110264192B (zh) | 基于交易类型的收据存储方法和节点 | |
CN111127021B (zh) | 基于区块链的服务请求方法及装置 | |
CN111241557B (zh) | 基于区块链的服务请求方法及装置 | |
CN110276610B (zh) | 基于交易偏移量实现动态加密的方法及装置 | |
WO2020238958A1 (zh) | 基于合约状态的修改次序实现动态加密的方法及装置 | |
CN113536384B (zh) | 基于区块链的隐私数据映射方法、装置、介质和电子设备 | |
WO2020238878A1 (zh) | 动态加密方法及装置 | |
CN114756903A (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: 40056750 Country of ref document: HK |