CN115664749A - 一种基于可信执行环境的Fabric数据隐私保护方法 - Google Patents

一种基于可信执行环境的Fabric数据隐私保护方法 Download PDF

Info

Publication number
CN115664749A
CN115664749A CN202211274486.9A CN202211274486A CN115664749A CN 115664749 A CN115664749 A CN 115664749A CN 202211274486 A CN202211274486 A CN 202211274486A CN 115664749 A CN115664749 A CN 115664749A
Authority
CN
China
Prior art keywords
tee
transaction
node
endorsement
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211274486.9A
Other languages
English (en)
Inventor
李必信
何嘉昊
胡甜媛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN202211274486.9A priority Critical patent/CN115664749A/zh
Publication of CN115664749A publication Critical patent/CN115664749A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于可信执行环境的Fabric数据隐私保护方法,具体如下,首先,根据可信执行环境机密以及不可篡改的特性,通过可信执行环境完成用户节点交易会话密钥的生成,同时,使用用户节点的公钥对会话密钥加密,以保证除用户节点外其他节点无法获取交易会话密钥。其次,通过对称加密的方式实现用户节点与可信执行环境之间交易数据的安全传输,使用三个以上的可信执行环境对交易进行模拟执行保证了背书过程不会因拒绝服务攻击而中断。最后,交易数据中包含的随机数可以用作合约正确执行的验证。该方案提出基于可信执行环境进行智能合约的模拟执行,能够保证Fabric交易数据的全过程隐私,保证了可信执行环境的可用性。

Description

一种基于可信执行环境的Fabric数据隐私保护方法
技术领域
本发明涉及一种保护方法,具体涉及一种基于可信执行环境Fabric数据隐私保护方法,属于区块链智能合约隐私保护技术领域。
背景技术
区块链按照对外开放的程度的不同可以分为公有链、联盟链和私有链。其中,公有链中的节点拥有随时加入、退出区块链网络的权利,且没有任何身份准入机制。由于公有链过于强调去中心化,在实际运行中不存在第三方监管机构,因此缺乏合理的监管。这导致恶意节点可以实施违规行为并且逃避应有的责任。此外,恶意节点还可以攻击区块链***,一次成功的攻击将会造成不可逆转的损失[17]。因此,无监管功能的公有链无法适用于当前的社会发展,应该加入适当的监管以及审计机制,以此有效地预防或追溯***中存在的违法行为。联盟链是指多个实体机构组成的区块链***。链上节点有对应的真实机构,共同维护区块链***的健康运转。与公有链不同,联盟链的身份认证机制使得只有经过认证的用户才能加入网络。此外,联盟链上的节点数量有限,能够有效地控制区块链***大小以及提高节点身份的可信度。主要代表有R3 Corda、Hyperledger Fabric等。其中Fabric作为联盟链的典型代表,得到了企业的广泛应用。因此,研究Fabric中隐私性和监管性平衡的隐私保护方案是一个具有极大意义和广阔应用前景的方向,符合当前社会发展的实际需要。
在区块链的数据隐私保护方面,通常通过密码学技术来对隐私数据进行加密保护,例如非对称加密、零知识证明、同态加密、安全多方计算等。这些技术能够在不暴露隐私数据的情况下,完成隐私数据的计算以及计算结果的验证等操作。因为通过密码学的方式将隐私数据明文加密后上传到区块链,观察者无法访问到交易内容,或者无法获得交易内容的明文信息。但是,使用密码学技术去处理隐私数据通常会带来很大的性能开销,从而降低整体***的可用性。大型的区块链***对于交易的吞吐量具有一定的要求,过多的性能开销可能会降低***的吞吐量,从而阻碍区块链***的进一步发展(例如,在以太坊智能合约中进行zk-SNARK验证需要消耗超过300gas)。除此之外,一些密码学技术如安全多方计算,需要多方之间进行频繁的通信,而在区块链***上进行交互是一个十分昂贵的操作。这是由于广播信息、合约状态改变、区块的确认等都需要大量的链上交互,导致安全多方计算方法通常都会造成较大的时间开销以及gas消耗。因此,迫切的需要一种新的方案解决上述技术问题。
发明内容
本发明正是针对现有技术中存在的问题,提供一种基于可信执行环境Fabric数据隐私保护方法,该技术方法中,通过将背书节点的交易模拟执行过程转移到可信执行环境中,同时使用可信执行环境生成的对称密钥对交易的输入输出数据进行加密,达到了交易过程中输入输出数据以及合约执行过程中的中间数据的隐私保护,同时能够保证合约的正确执行。该方案提出基于可信执行环境进行智能合约的模拟执行,能够保证Fabric交易数据的全过程隐私,保证了可信执行环境的可用性,解决了之前解决方案中存在的因背书节点不可信导致的交易数据隐私泄露以及可信执行环境可用性较差导致的背书过程中断的问题。
为了实现上述目的,本发明的技术方案如下,一种基于可信执行环境(TEE)的Fabric数据隐私保护方法,所述方法包含三种节点:用户节点、背书节点和排序服务,一个集群:TEE集群,一个合约:TEE合约,三个步骤:基于交易信息的TEE密钥生成、基于TEE的交易提案模拟执行以及节点状态同步。具体如下:
三种节点:
1)用户节点,client:可以与TEE合约进行交互以发送交易数据的哈希值或获取交易密钥;可以向背书节点发起交易模拟执行的请求,请求包含加密的交易信息以及交易数据的哈希值;可以发送交易结果与背书信息给排序服务节点;
2)背书节点,endorse_peer:发送交易信息给TEE集群,对TEE集群的执行结果进行背书;
3)排序服务:ordering_service:对交易结果的背书进行验证,并广播经过验证的交易结果。
一个集群:
TEE集群,cluster_tee:包含至少3个TEE节点,能够在TEE中执行交易的集群;
一个智能合约:
TEE合约,contract_tee:记录需要进行隐私保护的交易的哈希值。
三个步骤:
Step1基于交易信息的TEE密钥生成:用户节点client通过TEE合约contract_tee记录交易数据的哈希值hash_txData以及用户公钥publicKey,TEE集群cluster_tee选择空闲的TEE节点,根据TEE合约处contract_tee的交易数据哈希值hash_txData生成会话密钥sessionKey_tee,使用用户节点公钥publicKey对会话密钥加密encryptedKey_tee,用户节点client根据交易数据的哈希值hash_txData从TEE合约contract_tee处获取会话密钥密文encryptedKey_tee。TEE集群cluster_tee中的TEE之间使用对称密钥交换算法生成会议密钥session_key用于会话密钥sessionKey_tee的安全传输。
Step2基于TEE的交易提案模拟执行:用户节点client解密得到会话密钥sessionKey_tee后,使用该密钥对交易输入数据data_txInput加密,背书节点endorse_peer将需要进行隐私保护的交易数据及其对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,TEE集群cluster_tee选择3个处于空闲状态的TEE节点执行交易,TEE节点将执行结果result以及签名signature返回个背书节点endorse_peer,背书节点endorse_peer对TEE集群cluster_tee返回的结果以及TEE节点的身份进行验证,验证通过后对计算结果result进行背书。
Step3节点状态同步:用户节点client对背书节点endorse_peer的背书结果进行验证,将验证通过后的计算结果result发送给排序服务ordering_service,排序服务ordering_service对计算结果result验证,验证通过后广播交易计算结果result。
作为本发明的一种改进,Step1基于交易信息的TEE密钥生成,根据用户的交易信息在TEE中生成对称密钥,具体如下:
Step1.1:Fabric网络中的用户节点client根据交易输入数据data_txInput生成交易数据的哈希值hash_txData,client通过调用合约的方式将交易数据的哈希值提交给TEE合约contract_tee。TEE合约中需要记录交易数据的哈希值hash_txData及其对应的会话密钥密文encryptedKey_tee。
Step1.2:在经过一个出块时间time_block后,TEE集群cluster_tee从TEE合约contract_tee处获取需要隐私保护的交易信息,在集群中选出空闲的TEE节点tee_keyGeneration为其生成会话密钥sessionKey_tee,在完成密钥的生成后,TEE节点tee_keyGeneration会通过本地认证(local attestation)的方式将交易相关的会话密钥sessionKey_tee在集群中广播,以保证所有TEE节点都具备执行交易的条件,同时使用用户节点公钥publicKey对会话密钥sessionKey_tee加密得到会话密钥密文encryptedKey_tee,通过调用合约的方式将交易对应的会话密钥密文encryptedKey_tee记录在TEE合约contract_tee中。
其中,TEE集群中包含一个领导TEE节点tee_leader,该节点负责与集群外的其他节点或合约进行交互,如获取TEE合约contract_tee的交易信息等,为了保证集群中的TEE节点是合法的和可用的,所有TEE节点在加入集群前,需要将自身的公钥public_key以及信息摘要information_abstract发送给领导TEE节点tee_leader,领导TEE节点tee_leader通过远程认证(remote attestation)的方式从认证中心(certificate_authority)处获取TEE节点的合法性证明以保证TEE节点的合法性,同时通过心跳keep_alive的方式判断TEE节点是否可用,该方式是指每10个出块时间time_block,TEE节点需要向领导TEE节点tee_leader发送存活信息,以证明可用。此外,TEE节点内部会存储执行交易的相关信息,如交易输入数据的哈希值hash_txData,并且记录对应交易的执行次数,避免攻击通过重放攻击分析得到隐私数据。
Step1.3:用户节点client在经过3个出块时间time_block后,从TEE合约contract_tee处获取交易对应的会话密钥sessionKey_tee。
作为本发明的一种改进,Step2基于TEE的交易提案模拟执行,将Fabric中背书节点模拟执行智能合约的过程转移到TEE集群中的TEE节点中去,具体如下:
Step2.1:用户节点client使用会话密钥sessionKey_tee对交易输入数据data_txInput和随机数number_random加密生成交易输入数据密文encryptedData_txInput,用户节点根据所调用智能合约的背书策略将交易输入数据密文encryptedData_txInput发送给对应的背书节点endorse_peer。
Step2.2:背书节点endorse_peer将需要进行隐私保护的交易数据以及对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,领导TEE节点tee_leader处有每个TEE节点的状态表table_teeState,从中选出3个处于空闲状态的TEE节点,发送交易输入数据密文encryptedData_txInput以及对应的合约字节码bytecode_contract到这3个TEE节点,TEE节点使用本地的会话密钥sessionKey_tee对交易输入数据密文encryptedData_txInput解密得到交易输入数据明文data_txInput,再根据合约字节码bytecode_contract执行得到交易计算结果result,TEE节点对计算结果result进行哈希运算得到计算结果的哈希值hash_result,再使用会话密钥sessionKey_tee对计算结果result和随机数number_random加密得到交易输出数据密文encryptedData_txOutput。
其中,用户节点client在向背书节点endorse_peer发起背书请求的数据中,包含了交易输入数据的状态,背书节点endorse_peer根据交易输入数据的状态判断是否需要在本地进行交易的模拟执行。此外,这里的背书节点endorse_peer通常包含多个,这是因为使用单个背书节点时,背书过程可能由于DOS攻击而失败,因此领导TEE节点tee_leader只有在接收到背书策略中1/2数量的背书节点的计算请求后,才会开始执行。
Step2.3:领导TEE节点tee_leader将交易计算结果result返回给发起计算请求的背书节点endorse_peer,交易计算结果result需要满足至少2个TEE节点的计算结果相同,否则背书节点endorse_peer认为背书失败。背书节点endorse_peer对经过验证的计算结果result背书,并将背书结果endorsement返回给用户节点client。
作为本发明的一种改进,Step3节点状态同步,具体如下:
Step3.1:用户节点client根据背书策略判断是否满足1/2数量的背书节点完成背书过程,随后对不同背书节点返回的数据进行验证,
其中,用户节点client对交易输出数据密文encryptedData_txOutput解密得到计算结果result,对其进行哈希运算后与计算结果的哈希值hash_result进行比较,同时判断随机数number_random是否发生变化,通过该步骤判断智能合约是否正确执行;
Step3.2:排序服务ordering_service对计算结果result的背书进行验证,判断其是否满足背书策略中1/2数量的背书节点完成背书,验证通过后广播交易计算结果result,节点在获取区块内的交易后,会将交易的数据写入到本地账本中。
相对于现有技术,本发明具有如下优点,1)该技术方案保护了区块链与TEE环境交互过程中保证数据的隐私性以及可信性。通过使用对称密钥对交易隐私数据加密以保证交互过程中数据的隐私性,在区块链上部署智能合约记录交易数据以保证交互数据的可信性。虽然Fabric已有的通道机制和私有数据集(Private Data Collection)机制提供了一定程度上的数据隐私保护,但对于背书节点而言,交易数据仍然是可见的,由于无法保证背书节点的诚实性,因此直接在背书节点本地进行交易的模拟执行存在数据隐私泄露的风险。因此将模拟执行的过程转移到链下的TEE中能够有效地解决这一问题,2)该技术保证了交易背书过程中背书节点以及TEE节点的可用性。由于攻击者可以通过对背书节点或TEE节点发起DOS攻击,导致背书过程中相关节点不可用,从而阻塞或中断背书过程。本方法通过对背书节点以及TEE节点的冗余,保证了交易背书过程中节点的可用性,3)该技术保证攻击者无法分析获得TEE内部的数据。由于攻击者可以通过重放攻击,不断地重复执行某个交易以分析得到TEE内部的隐私数据。本方法通过对所有交易进行记录,保证交易无法重复执行,从而保护TEE内部隐私数据的安全性,4)该技术能够对Fabric联盟链上已经部署的智能合约提供隐私保护。其他对于Fabric的隐私保护方法需要在智能合约构建初期就为其初始化相关密钥,并将密钥信息以密封的形式存储在可信执行环境的外部,这种形式无法解决已经存在的智能合约的隐私保护需求,其次密封存储密钥信息的行为也增加了隐私泄露的风险。
附图说明
图1为本发明整体框架示意图。
具体实施方式
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
实施例1:参见图1,一种基于可信执行环境(TEE)的Fabric数据隐私保护方法,所述方法包含三种节点:用户节点、背书节点和排序服务,一个集群:TEE集群,一个合约:TEE合约,三个步骤:基于交易信息的TEE密钥生成、基于TEE的交易提案模拟执行以及节点状态同步,具体如下:
三种节点:
1)用户节点,client:可以与TEE合约进行交互以发送交易数据的哈希值或获取交易密钥;可以向背书节点发起交易模拟执行的请求,请求包含加密的交易信息以及交易数据的哈希值;可以发送交易结果与背书信息给排序服务节点;
2)背书节点,endorse_peer:发送交易信息给TEE集群,对TEE集群的执行结果进行背书;
3)排序服务:ordering_service:对交易结果的背书进行验证,并广播经过验证的交易结果。
一个集群:
TEE集群,cluster_tee:包含至少3个TEE节点,能够在TEE中执行交易的集群;
一个智能合约:
TEE合约,contract_tee:记录需要进行隐私保护的交易的哈希值。
三个步骤:
Step1基于交易信息的TEE密钥生成:用户节点client通过TEE合约contract_tee记录交易数据的哈希值hash_txData以及用户公钥publicKey,TEE集群cluster_tee选择空闲的TEE节点,根据TEE合约处contract_tee的交易数据哈希值hash_txData生成会话密钥sessionKey_tee,使用用户节点公钥publicKey对会话密钥加密encryptedKey_tee,用户节点client根据交易数据的哈希值hash_txData从TEE合约contract_tee处获取会话密钥密文encryptedKey_tee。TEE集群cluster_tee中的TEE之间使用对称密钥交换算法生成会议密钥session_key用于会话密钥sessionKey_tee的安全传输。
Step2基于TEE的交易提案模拟执行:用户节点client解密得到会话密钥sessionKey_tee后,使用该密钥对交易输入数据data_txInput加密,背书节点endorse_peer将需要进行隐私保护的交易数据及其对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,TEE集群cluster_tee选择3个处于空闲状态的TEE节点执行交易,TEE节点将执行结果result以及签名signature返回个背书节点endorse_peer,背书节点endorse_peer对TEE集群cluster_tee返回的结果以及TEE节点的身份进行验证,验证通过后对计算结果result进行背书。
Step3节点状态同步:用户节点client对背书节点endorse_peer的背书结果进行验证,将验证通过后的计算结果result发送给排序服务ordering_service,排序服务ordering_service对计算结果result验证,验证通过后广播交易计算结果result。
其中,Step1基于交易信息的TEE密钥生成,根据用户的交易信息在TEE中生成对称密钥,具体如下:
Step1.1:Fabric网络中的用户节点client根据交易输入数据data_txInput生成交易数据的哈希值hash_txData,client通过调用合约的方式将交易数据的哈希值提交给TEE合约contract_tee。TEE合约中需要记录交易数据的哈希值hash_txData及其对应的会话密钥密文encryptedKey_tee。
Step1.2:在经过一个出块时间time_block后,TEE集群cluster_tee从TEE合约contract_tee处获取需要隐私保护的交易信息,在集群中选出空闲的TEE节点tee_keyGeneration为其生成会话密钥sessionKey_tee,在完成密钥的生成后,TEE节点tee_keyGeneration会通过本地认证(local attestation)的方式将交易相关的会话密钥sessionKey_tee在集群中广播,以保证所有TEE节点都具备执行交易的条件,同时使用用户节点公钥publicKey对会话密钥sessionKey_tee加密得到会话密钥密文encryptedKey_tee,通过调用合约的方式将交易对应的会话密钥密文encryptedKey_tee记录在TEE合约contract_tee中。
其中,TEE集群中包含一个领导TEE节点tee_leader,该节点负责与集群外的其他节点或合约进行交互,如获取TEE合约contract_tee的交易信息等,为了保证集群中的TEE节点是合法的和可用的,所有TEE节点在加入集群前,需要将自身的公钥public_key以及信息摘要information_abstract发送给领导TEE节点tee_leader,领导TEE节点tee_leader通过远程认证(remote attestation)的方式从认证中心(certificate_authority)处获取TEE节点的合法性证明以保证TEE节点的合法性,同时通过心跳keep_alive的方式判断TEE节点是否可用,该方式是指每10个出块时间time_block,TEE节点需要向领导TEE节点tee_leader发送存活信息,以证明可用。此外,TEE节点内部会存储执行交易的相关信息,如交易输入数据的哈希值hash_txData,并且记录对应交易的执行次数,避免攻击通过重放攻击分析得到隐私数据。
Step1.3:用户节点client在经过3个出块时间time_block后,从TEE合约contract_tee处获取交易对应的会话密钥sessionKey_tee。
其中,Step2基于TEE的交易提案模拟执行,将Fabric中背书节点模拟执行智能合约的过程转移到TEE集群中的TEE节点中去,具体如下:
Step2.1:用户节点client使用会话密钥sessionKey_tee对交易输入数据data_txInput和随机数number_random加密生成交易输入数据密文encryptedData_txInput,用户节点根据所调用智能合约的背书策略将交易输入数据密文encryptedData_txInput发送给对应的背书节点endorse_peer。
Step2.2:背书节点endorse_peer将需要进行隐私保护的交易数据以及对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,领导TEE节点tee_leader处有每个TEE节点的状态表table_teeState,从中选出3个处于空闲状态的TEE节点,发送交易输入数据密文encryptedData_txInput以及对应的合约字节码bytecode_contract到这3个TEE节点,TEE节点使用本地的会话密钥sessionKey_tee对交易输入数据密文encryptedData_txInput解密得到交易输入数据明文data_txInput,再根据合约字节码bytecode_contract执行得到交易计算结果result,TEE节点对计算结果result进行哈希运算得到计算结果的哈希值hash_result,再使用会话密钥sessionKey_tee对计算结果result和随机数number_random加密得到交易输出数据密文encryptedData_txOutput。
其中,用户节点client在向背书节点endorse_peer发起背书请求的数据中,包含了交易输入数据的状态,背书节点endorse_peer根据交易输入数据的状态判断是否需要在本地进行交易的模拟执行。此外,这里的背书节点endorse_peer通常包含多个,这是因为使用单个背书节点时,背书过程可能由于DOS攻击而失败,因此领导TEE节点tee_leader只有在接收到背书策略中1/2数量的背书节点的计算请求后,才会开始执行。
Step2.3:领导TEE节点tee_leader将交易计算结果result返回给发起计算请求的背书节点endorse_peer,交易计算结果result需要满足至少2个TEE节点的计算结果相同,否则背书节点endorse_peer认为背书失败。背书节点endorse_peer对经过验证的计算结果result背书,并将背书结果endorsement返回给用户节点client。
其中,Step3节点状态同步,具体如下:
Step3.1:用户节点client根据背书策略判断是否满足1/2数量的背书节点完成背书过程,随后对不同背书节点返回的数据进行验证。
其中,用户节点client对交易输出数据密文encryptedData_txOutput解密得到计算结果result,对其进行哈希运算后与计算结果的哈希值hash_result进行比较,同时判断随机数number_random是否发生变化,通过该步骤判断智能合约是否正确执行。
Step3.2:排序服务ordering_service对计算结果result的背书进行验证,判断其是否满足背书策略中1/2数量的背书节点完成背书,验证通过后广播交易计算结果result,节点在获取区块内的交易后,会将交易的数据写入到本地账本中。
实施例2:参照图1,为了方便描述,假定有如下简化的应用实例:一种基于可信执行环境的Fabric数据隐私保护方法,所述方法包括三个步骤:基于交易信息的TEE密钥生成、基于TEE的交易提案模拟执行以及节点状态同步。具体如下:
基于交易信息的TEE密钥生成:
交易输入数据的哈希值为:157bbeed38aee8e24cb9b44422606e74
TEE集群cluster_tee为交易生成的会话密钥为:
cuY1Zd1eNKaQMSJmrOZU6MK8ScUAmIQiYqK8WtqIRJjiOyaMQHB3cZQfYaw32r37基于TEE的交易提案模拟执行:
用户节点对交易输入数据加密的得到密文:
U2FsdGVkX1/soOv+CKtHWUPXQ0f/bdST5NPKrKZxAtw=
随机数的哈希值:
U2FsdGVkX1/KN7hckx0go+VI4C4VL82g32ug0R2dr5c=
TEE节点执行的智能合约代码contract为:
Figure BDA0003896486990000091
TEE节点执行结果的密文为:
Fe6aOJxmmNrDf6T9vOyNhgJbJMbluvFGvisuVgOASG4=
背书节点的签名为:
wiN8951GTcWs3tuHiJpsQHjpEcKNALQE7KzHvELLD4O7P0G0DDd00euOBH3YWFH44PBqb0hnTrVoY2VxsGsEMDp1vkKeJA+oamdtvINnu9X2gGxmSc+DKz8lLBVHOhJQEfrbjzla2qORDOXATeg0z9I/7hcs4mL6hthArnNCzKI=
节点状态同步:
用户节点client对收到的背书节点签名进行验证,同时对随机数的哈希值进行验证,验证通过后将背书节点的签名以及交易结果发给排序服务,排序服务通过验证后在管道内进行广播,其他用户节点client_other根据交易结果更新本地状态数据库。
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。

Claims (4)

1.一种基于可信执行环境的Fabric数据隐私保护方法,其特征在于,所述方法包括以下步骤:
所述方法包含三种节点:用户节点、背书节点和排序服务,一个集群:TEE集群,一个合约:TEE合约,三个步骤:基于交易信息的TEE密钥生成、基于TEE的交易提案模拟执行以及节点状态同步,具体如下:
三种节点:
1)用户节点,client:可以与TEE合约进行交互以发送交易数据的哈希值或获取交易密钥;可以向背书节点发起交易模拟执行的请求,请求包含加密的交易信息以及交易数据的哈希值;可以发送交易结果与背书信息给排序服务节点;
2)背书节点,endorse_peer:发送交易信息给TEE集群,对TEE集群的执行结果进行背书;
3)排序服务:ordering_service:对交易结果的背书进行验证,并广播经过验证的交易结果;
一个集群:
TEE集群,cluster_tee:包含至少3个TEE节点,能够在TEE中执行交易的集群;
一个智能合约:
TEE合约,contract_tee:记录需要进行隐私保护的交易的哈希值;
三个步骤:
Step1基于交易信息的TEE密钥生成:用户节点client通过TEE合约contract_tee记录交易数据的哈希值hash_txData以及用户公钥publicKey,TEE集群cluster_tee选择空闲的TEE节点,根据TEE合约处contract_tee的交易数据哈希值hash_txData生成会话密钥sessionKey_tee,使用用户节点公钥publicKey对会话密钥加密encryptedKey_tee,用户节点client根据交易数据的哈希值hash_txData从TEE合约contract_tee处获取会话密钥密文encryptedKey_tee;TEE集群cluster_tee中的TEE之间使用对称密钥交换算法生成会议密钥session_key用于会话密钥sessionKey_tee的安全传输;
Step2基于TEE的交易提案模拟执行:用户节点client解密得到会话密钥sessionKey_tee后,使用该密钥对交易输入数据data_txInput加密,背书节点endorse_peer将需要进行隐私保护的交易数据及其对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,TEE集群cluster_tee选择3个处于空闲状态的TEE节点执行交易,TEE节点将执行结果result以及签名signature返回个背书节点endorse_peer,背书节点endorse_peer对TEE集群cluster_tee返回的结果以及TEE节点的身份进行验证,验证通过后对计算结果result进行背书;
Step3节点状态同步:用户节点client对背书节点endorse_peer的背书结果进行验证,将验证通过后的计算结果result发送给排序服务ordering_service,排序服务ordering_service对计算结果result验证,验证通过后广播交易计算结果result。
2.根据权利要求1所述的基于可信执行环境的Fabric数据隐私保护方法,其特征在于,Step1基于交易信息的TEE密钥生成,根据用户的交易信息在TEE中生成对称密钥,具体如下:
Step1.1:Fabric网络中的用户节点client根据交易输入数据data_txInput生成交易数据的哈希值hash_txData,client通过调用合约的方式将交易数据的哈希值提交给TEE合约contract_tee,TEE合约中需要记录交易数据的哈希值hash_txData及其对应的会话密钥密文encryptedKey_tee;
Step1.2:在经过一个出块时间time_block后,TEE集群cluster_tee从TEE合约contract_tee处获取需要隐私保护的交易信息,在集群中选出空闲的TEE节点tee_keyGeneration为其生成会话密钥sessionKey_tee,在完成密钥的生成后,TEE节点tee_keyGeneration会通过本地认证(local attestation)的方式将交易相关的会话密钥sessionKey_tee在集群中广播,以保证所有TEE节点都具备执行交易的条件,同时使用用户节点公钥publicKey对会话密钥sessionKey_tee加密得到会话密钥密文encryptedKey_tee,通过调用合约的方式将交易对应的会话密钥密文encryptedKey_tee记录在TEE合约contract_tee中;
其中,TEE集群中包含一个领导TEE节点tee_leader,该节点负责与集群外的其他节点或合约进行交互,所有TEE节点在加入集群前,需要将自身的公钥public_key以及信息摘要information_abstract发送给领导TEE节点tee_leader,领导TEE节点tee_leader通过远程认证(remote attestation)的方式从认证中心(certificate_authority)处获取TEE节点的合法性证明以保证TEE节点的合法性,同时通过心跳keep_alive的方式判断TEE节点是否可用,该方式是指每10个出块时间time_block,TEE节点需要向领导TEE节点tee_leader发送存活信息,以证明可用,此外,TEE节点内部会存储执行交易的相关信息;
Step1.3:用户节点client在经过3个出块时间time_block后,从TEE合约contract_tee处获取交易对应的会话密钥sessionKey_tee。
3.根据权利要求2所述的基于可信执行环境的Fabric数据隐私保护方法,其特征在于,,Step2基于TEE的交易提案模拟执行,将Fabric中背书节点模拟执行智能合约的过程转移到TEE集群中的TEE节点中去,具体如下:
Step2.1:用户节点client使用会话密钥sessionKey_tee对交易输入数据data_txInput和随机数number_random加密生成交易输入数据密文encryptedData_txInput,用户节点根据所调用智能合约的背书策略将交易输入数据密文encryptedData_txInput发送给对应的背书节点endorse_peer,
Step2.2:背书节点endorse_peer将需要进行隐私保护的交易数据以及对应的合约字节码bytecode_contract发送给TEE集群cluster_tee,领导TEE节点tee_leader处有每个TEE节点的状态表table_teeState,从中选出3个处于空闲状态的TEE节点,发送交易输入数据密文encryptedData_txInput以及对应的合约字节码bytecode_contract到这3个TEE节点,TEE节点使用本地的会话密钥sessionKey_tee对交易输入数据密文encryptedData_txInput解密得到交易输入数据明文data_txInput,再根据合约字节码bytecode_contract执行得到交易计算结果result,TEE节点对计算结果result进行哈希运算得到计算结果的哈希值hash_result,再使用会话密钥sessionKey_tee对计算结果result和随机数number_random加密得到交易输出数据密文encryptedData_txOutput,
其中,用户节点client在向背书节点endorse_peer发起背书请求的数据中,包含了交易输入数据的状态,背书节点endorse_peer根据交易输入数据的状态判断是否需要在本地进行交易的模拟执行,
Step2.3:领导TEE节点tee_leader将交易计算结果result返回给发起计算请求的背书节点endorse_peer,交易计算结果result需要满足至少2个TEE节点的计算结果相同,否则背书节点endorse_peer认为背书失败,背书节点endorse_peer对经过验证的计算结果result背书,并将背书结果endorsement返回给用户节点client。
4.根据权利要求3所述的基于可信执行环境的Fabric数据隐私保护方法,其特征在于,Step3节点状态同步,具体如下:
Step3.1:用户节点client根据背书策略判断是否满足1/2数量的背书节点完成背书过程,随后对不同背书节点返回的数据进行验证,
其中,用户节点client对交易输出数据密文encryptedData_txOutput解密得到计算结果result,对其进行哈希运算后与计算结果的哈希值hash_result进行比较,同时判断随机数number_random是否发生变化,通过该步骤判断智能合约是否正确执行,
Step3.2:排序服务ordering_service对计算结果result的背书进行验证,判断其是否满足背书策略中1/2数量的背书节点完成背书,验证通过后广播交易计算结果result,节点在获取区块内的交易后,会将交易的数据写入到本地账本中。
CN202211274486.9A 2022-10-18 2022-10-18 一种基于可信执行环境的Fabric数据隐私保护方法 Pending CN115664749A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211274486.9A CN115664749A (zh) 2022-10-18 2022-10-18 一种基于可信执行环境的Fabric数据隐私保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211274486.9A CN115664749A (zh) 2022-10-18 2022-10-18 一种基于可信执行环境的Fabric数据隐私保护方法

Publications (1)

Publication Number Publication Date
CN115664749A true CN115664749A (zh) 2023-01-31

Family

ID=84990197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211274486.9A Pending CN115664749A (zh) 2022-10-18 2022-10-18 一种基于可信执行环境的Fabric数据隐私保护方法

Country Status (1)

Country Link
CN (1) CN115664749A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021018088A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 可信认证方法,网络设备、***及存储介质
CN113726733A (zh) * 2021-07-19 2021-11-30 东南大学 一种基于可信执行环境的加密智能合约隐私保护方法
CN115001719A (zh) * 2022-08-04 2022-09-02 树根格致科技(湖南)有限公司 隐私数据处理***、方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021018088A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 可信认证方法,网络设备、***及存储介质
CN113726733A (zh) * 2021-07-19 2021-11-30 东南大学 一种基于可信执行环境的加密智能合约隐私保护方法
CN115001719A (zh) * 2022-08-04 2022-09-02 树根格致科技(湖南)有限公司 隐私数据处理***、方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘格昌;***;: "基于可搜索加密的区块链数据隐私保护机制", 计算机应用, no. 2, 30 December 2019 (2019-12-30) *

Similar Documents

Publication Publication Date Title
Bera et al. Designing blockchain-based access control protocol in IoT-enabled smart-grid system
CN107911216B (zh) 一种区块链交易隐私保护方法及***
CN109829326B (zh) 基于区块链的跨域认证与公平审计去重云存储***
Krawczyk SIGMA: The ‘SIGn-and-MAc’approach to authenticated Diffie-Hellman and its use in the IKE protocols
Paulson Inductive analysis of the internet protocol TLS
CN111372243A (zh) 基于雾联盟链的安全分布式聚合与访问***及方法
CN113344222B (zh) 一种基于区块链的安全可信的联邦学习机制
CN115345618B (zh) 基于混合后量子数字签名的区块链交易验证方法及***
Xu et al. Multi-candidate voting model based on blockchain
Li et al. Zerocross: A sidechain-based privacy-preserving cross-chain solution for monero
Zhang et al. Lightweight multidimensional encrypted data aggregation scheme with fault tolerance for fog-assisted smart grids
CN114710275A (zh) 物联网环境下基于区块链的跨域认证和密钥协商方法
Sani et al. A universally composable key exchange protocol for advanced metering infrastructure in the energy Internet
Xu et al. Trustworthy and transparent third-party authority
Hou et al. Lightweight and privacy-preserving charging reservation authentication protocol for 5G-V2G
Zhang et al. NDN-MPS: supporting multiparty authentication over named data networking
Khashan et al. Blockchain-Based Decentralized Authentication Model for IoT-Based E-Learning and Educational Environments.
CN113326529A (zh) 一种基于可信计算的去中心化架构统一方法
Zhang et al. Data security in cloud storage
CN116562874B (zh) 一种基于零知识证明的隐私保护跨链交易验证方法
CN115883102B (zh) 基于身份可信度的跨域身份认证方法、***及电子设备
Li et al. Blockchain-based portable authenticated data transmission for mobile edge computing: a universally composable secure solution
CN114866244B (zh) 基于密文分组链接加密的可控匿名认证方法、***及装置
CN115664749A (zh) 一种基于可信执行环境的Fabric数据隐私保护方法
Shahidinejad et al. Untraceable blockchain-assisted authentication and key exchange in medical consortiums

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