CN118199884A - 基于区块链的任务执行方法和装置 - Google Patents
基于区块链的任务执行方法和装置 Download PDFInfo
- Publication number
- CN118199884A CN118199884A CN202211602333.2A CN202211602333A CN118199884A CN 118199884 A CN118199884 A CN 118199884A CN 202211602333 A CN202211602333 A CN 202211602333A CN 118199884 A CN118199884 A CN 118199884A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- encrypted
- parameters
- blockchain
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 108
- 238000012795 verification Methods 0.000 claims abstract description 104
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010200 validation analysis Methods 0.000 claims description 4
- 230000036961 partial effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 23
- 238000004422 calculation algorithm Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 238000007726 management method Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012550 audit Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本公开提供了一种基于区块链的任务执行方法,包括:通过区块链中的第一节点获取任务请求,该任务请求至少包括任务发送方签名和经加密的任务参数,经加密的任务参数至少包括经加密的任务执行参数;响应于任务发送方签名被验证通过,在第一可信执行环境中对经加密的任务参数进行解密,以得到未加密的任务执行参数,第一可信执行环境部署在所述第一节点中;在第一可信执行环境中根据未加密的任务执行参数执行该任务请求指示的任务,以得到第一执行结果;基于第一执行结果,在第一可信执行环境中生成用于验证第一执行结果的可靠性的第一验证信息;以及将第一执行结果和第一验证信息加入区块链。
Description
技术领域
本公开涉及区块链技术领域,具体地,涉及一种基于区块链的任务执行方法、装置、计算设备、计算机可读存储介质以及计算机程序产品。
背景技术
在区块链中,控制出块过程的节点常常被称作“共识节点”。例如,在一个接入了若干金融机构的区块链中,每个金融机构都作为区块链上的一个节点,对于每个任务(例如,金融交易),都需要其中部分节点对相应任务的执行过程和执行结果进行确认,以实现共识出块。在这种通过共识节点进行共识出块的过程中,出块速度成为制约区块链完成相应任务的性能的关键因素。
在相关技术中,可以在区块链的所有共识节点中部署可信执行环境(TrustedExecution Environment, TEE),进而在相应的多个TEE中分别执行相应任务(例如,金融领域中的智能合约)并进行共识出块。然而,在上述TEE被部署在所有共识节点中的情况下,共识节点的准入门槛被提高,即导致那些没有部署TEE的节点无法成为区块链中的共识节点。另外,TEE中的程序一旦有更新,所有共识节点都需要被重启,增加了区块链的更新成本。此外,当区块链接收到大量的需要在TEE中执行的任务(例如,加密的计算任务)时,受到在TEE中执行任务的效率的影响,非加密的普通任务在相应共识节点中的执行可能被TEE中执行的任务阻塞。
发明内容
有鉴于此,本公开提供了一种基于区块链的任务执行方法、装置、计算设备、计算机可读存储介质以及计算机程序产品,以缓解、减轻、甚至消除上述问题。
根据本公开的一个方面,提供了一种基于区块链的任务执行方法,包括:通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中;在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果;基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息;以及将所述第一执行结果和所述第一验证信息加入所述区块链。
根据本公开的一些实施例,所述任务请求还包括任务发送方标识,并且所述任务发送方签名通过以下步骤被验证:根据所述任务发送方标识,从所述第一可信执行环境中获取用于所述任务发送方签名的验签密钥;使用所述验签密钥验证所述任务发送方签名。
根据本公开的一些实施例,所述区块链还包括第二节点,并且所述方法还包括通过所述第二节点执行以下步骤:获取所述任务请求;响应于所述任务发送方签名被验证通过,在第二可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第二可信执行环境部署在所述第二节点中;在所述第二可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第二执行结果;以及基于所述第二执行结果,在所述第二可信执行环境中生成用于验证所述第一执行结果的可靠性的第二验证信息。
根据本公开的一些实施例,所述方法还包括通过所述第二节点执行以下步骤以验证所述第一执行结果的可靠性:从所述区块链中获取所述第一执行结果和所述第一验证信息;响应于所述第二验证信息和所述第一验证信息一致,确定所述第一执行结果可靠。
根据本公开的一些实施例,所述区块链还包括第三节点,以及所述第二验证信息被加入所述区块链,并且所述方法还包括通过所述第三节点执行以下步骤以验证所述第一执行结果的可靠性:从所述区块链中获取所述第一执行结果、所述第一验证信息、以及所述第二验证信息;响应于所述第一验证信息和所述第二验证信息一致,确定所述第一执行结果可靠。
根据本公开的一些实施例,所述区块链还包括第四节点,并且所述方法还包括通过所述第四节点执行以下步骤:从所述区块链中获取所述第一执行结果和所述第一验证信息;发送所获取的所述第一验证信息至所述区块链之外的验证服务商;响应于接收到来自所述验证服务商的验证消息,确定所述第一执行结果可靠,所述验证消息指示所述第一验证信息被所述验证服务商验证通过。
根据本公开的一些实施例,所述经加密的任务参数还包括经加密的第二加密密钥,并且所述经加密的第二加密密钥和所述经加密的任务执行参数通过以下步骤被加密:使用第一加密密钥对未加密的第二加密密钥进行加密,以得到所述经加密的第二加密密钥;使用所述未加密的第二加密密钥对未加密的任务执行参数进行加密,以得到所述经加密的任务执行参数。
根据本公开的一些实施例,所述任务请求还包括任务发送方标识,并且所述在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,包括:根据所述任务发送方标识,从所述第一可信执行环境中获取与所述第一加密密钥对应的解密密钥;使用所述解密密钥对所述经加密的第二加密密钥进行解密,以得到未加密的第二加密密钥;使用所述未加密的第二加密密钥对所述经加密的任务执行参数进行解密,以得到所述未加密的任务执行参数。
根据本公开的一些实施例,所述任务请求还包括任务哈希,所述任务哈希为所述任务请求的哈希摘要,并且在执行所述任务请求指示的任务的过程中所使用的至少一部分数据通过以下步骤被存储:在所述第一可信执行环境中对所述至少一部分数据进行序列化,以得到未加密的序列化数据;从所述第一可信执行环境中获取第三加密密钥,并使用所述第三加密密钥对所述未加密的序列化数据进行加密,以得到经加密的序列化数据;将所述经加密的序列化数据和所述任务哈希存储到所述第一可信执行环境外部的第一存储空间中。
根据本公开的一些实施例,在执行所述任务请求指示的任务的过程中的目标数据通过以下步骤被获取:根据所述任务哈希,从所述第一存储空间中获取所述经加密的序列化数据中与所述目标数据对应的部分数据;从所述第一可信执行环境中获取所述第三加密密钥;使用所述第三加密密钥对所述部分数据进行解密,以获取所述目标数据。
根据本公开的另一个方面,提供了一种基于区块链的任务执行装置,所述装置包括:信息获取模块,被配置为通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;信息解密模块,被配置为响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中;任务执行模块,被配置为在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果;信息生成模块,被配置为基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息;以及信息发送模块:被配置为将所述第一执行结果和所述第一验证信息加入所述区块链。
根据本公开的又一个方面,提供了一种计算设备,包括:存储器,其被配置成存储计算机可执行指令;处理器,其被配置成当所述计算机可执行指令被处理器执行时执行根据本公开的前述方面提供的任一方法。
根据本公开的又一个方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行根据本公开的前述方面提供的任一方法。
根据本公开的又一个方面,提供了一种计算机程序产品,包括计算机可执行指令,其中所述计算机可执行指令被处理器执行时执行根据本公开的前述方面提供的任一方法。
根据本公开提供的基于区块链的任务执行方法,可以通过区块链中的第一节点(例如,共识节点或非共识节点)获取任务请求(其至少包括任务发送方签名和经加密的任务参数,经加密的任务参数至少包括经加密的任务执行参数);响应于任务发送方签名被验证通过,在部署在第一节点中的第一可信执行环境中对经加密的任务参数进行解密,以得到未加密的任务执行参数,由于无需在区块链的所有共识节点中都部署可信执行环境,不会导致共识节点的准入门槛较高,另外,可以使得区块链的更新成本较低;在第一可信执行环境中根据未加密的任务执行参数执行任务请求指示的任务,以得到第一执行结果;基于第一执行结果,在第一可信执行环境中生成用于验证第一执行结果的可靠性的第一验证信息;进而将第一执行结果和第一验证信息加入区块链,从而有助于区块链中的其他节点或区块链之外的的验证服务商获取第一验证信息并对第一执行结果的可靠性进行验证。此外,由于仅在部署在第一节点中的第一可信执行环境中执行任务请求指示的任务,即使第一节点为共识节点,当区块链接收到大量的需要在TEE中执行的任务时,非加密的普通任务在其他共识节点中的执行也不会被第一可信执行环境中执行的任务阻塞。
根据在下文中所描述的实施例,本公开的这些和其他方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的技术方案的更多细节、特征和优点被公开,在附图中:
图1示意性示出了可以应用根据本公开的一些实施例提供的技术方案的示例场景;
图2示意性示出了相关技术中的基于区块链的任务执行方法的示例原理图;
图3示意性示出了根据本公开的一些实施例的基于区块链的任务执行方法的示例流程图;
图4示意性示出了图3中的基于区块链的任务执行方法的示例原理图;
图5示意性示出了根据本公开的一些实施例的验证任务执行结果的可靠性的示例原理图;
图6示意性示出了根据本公开的另一些实施例的验证任务执行结果的可靠性的示例原理图;
图7示意性示出了根据本公开的又一些实施例的验证任务执行结果的可靠性的示例原理图;
图8示意性示出了根据本公开的一些实施例的在可信执行环境中执行任务的方法的示例原理图;
图9示意性示出了根据本公开的一些实施例的存储与任务相关的数据的方法的示例原理图;
图10示意性示出了根据本公开的一些实施例的获取与任务相关的数据的方法的示例原理图;
图11示意性示出了根据本公开的一些实施例的基于区块链的任务执行装置的示例框图;
图12图示了示例***,其包括代表可以实现本文描述的各种技术的一个或多个***和/或设备的示例计算设备。
具体实施方式
下面将参照附图更详细地描述本公开的若干个实施例以便使得本领域技术人员能够实现本公开的技术方案。本公开的技术方案可以体现为许多不同的形式和目的,并且不应局限于本文所阐述的实施例。提供这些实施例是为了使得本公开的技术方案清楚完整,但所描述的实施例并不限定本公开的保护范围。
除非另有定义,本文中使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员所通常理解的相同含义。将进一步理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文中明确地如此定义。
在详细介绍本公开的实施例之前,首先对一些相关的概念进行解释。
1、区块链(Blockchain):是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营检测等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营检测模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
2、联盟链:一种多中心化或者部分去中心化的区块链。在区块链***运行时,它的共识过程可能会受某些指定节点的控制。例如,在一个有15个金融机构接入的区块链***中,每个机构都作为链上的一个节点,每确认一笔交易,都需要至少对10个节点进行确认(2/3确认),这笔交易或者这个区块才能被认可。联盟链账本上的数据与公有链(完全去中心化的区块链)的完全公开是不同的,只有联盟成员节点才可以访问,并且链上的读写权限、参与记账规则等操作也需要由联盟成员节点共同决定。联盟链对交易的时间、状态、每秒交易数等与公有链有很大区别,所以它比公有链有更高的安全和性能要求。
3、可信执行环境(Trusted Execution Environment, TEE):是指在计算设备(例如计算机或智能手机等)中通过软硬件方法在中央处理器(CPU)中构建的一个安全区域,保证其内部加载的程序和数据在机密性和完整性上得到保护。TEE的原理是将计算设备的硬件和软件资源划分为两个执行环境—可信执行环境和普通执行环境,两个环境是安全隔离的,有独立的内部数据通路和计算所需存储空间,普通执行环境的应用程序无法访问TEE。TEE技术实现方案可以包括例如以X86指令集架构的Intel SGX和ARM指令集架构的TrustZone。TEE可以用来进行数字版权管理(Digital Rights Management, DRM)、移动支付和敏感数据保护等。TEE提供了可信应用(Trusted APPlication, TA)的安全执行环境,同时也保护可信应用的资源和数据的保密性、完整性和访问权限。在TEE中运行的可信应用可以访问计算设备的处理器和内存的全部功能,而硬件隔离保护这些可信应用不受主操作***中运行的普通应用的影响。
4、哈希(Hash):也可以被称作哈希值、散列值或哈希摘要。当需要产生哈希值时,可以通过散列算法(哈希算法)把任意长度的输入变换成固定长度的输出,该输出就是哈希值。这种转换是一种压缩映射,也就是,散列值(哈希值)的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值(哈希值)来确定唯一的输入值。
图1示意性示出了可以应用根据本公开的一些实施例提供的技术方案的示例场景100。如图1所示,场景100可以包括用户110(例如,金融交易方)、终端设备120(例如,计算机)、终端设备130(例如,平板电脑)、网络140、以及远端设施150。作为示例,远端设施150包括服务器151以及可选地还包括用于存放任务相关信息的数据库设备152,这些服务器或设备可以经由网络140实现通信。远端设施150可以被视为区块链(例如,联盟链)的一个节点。需要说明的是,在本公开中,术语“节点”在硬件上可以是区块链网络中的任意计算设备,例如计算机、服务器、手机、矿机等。在分布式***中,任何机器如服务器、终端都可以加入区块链网络而成为节点,节点可以包括硬件层、中间层、操作***层和应用层。
需要说明的是,在本公开中,用户110可以是提供任务请求(其指示相关的任务)的机构、组织或个人。另外,在本公开中,术语“任务”指示区块链能够处理的任意运算过程,在不同的应用场景下,其可能有不同的替代性表述,例如,在一些金融领域的场景下,其可以被表述为“智能合约”,智能合约是一种计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易, 例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址(当然,智能合约不仅限于执行用于交易的合约, 还可以执行对接收的信息进行处理的合约)。此外,在本公开中,区块链可以是联盟链或其他任意类型的区块链,示例性地,当区块链为联盟链时,区块链中的节点在功能上可以被划分为共识节点和非共识节点,如上文所述,共识节点是区块链中参与共识出块的节点,相应地,非共识节点则是区块链中不参与共识出块的节点,非共识节点在区块链中可以进行业务逻辑执行、向共识节点提交业务操作、从共识节点同步区块数据等操作,因此,在本公开中,也将非共识节点称作业务节点。
示例性地,远端设施150(其可以是共识节点,也可以是业务节点)可以获取任务请求,该任务请求由用户110使用终端设备120或终端设备130、经由网络140发送至远端设施150,该任务请求至少包括任务发送方签名和经加密的任务参数,经加密的任务参数至少包括经加密的任务执行参数;然后,由远端设施150对任务发送方签名进行验证,响应于任务发送方签名被验证通过,在第一可信执行环境中对经加密的任务参数进行解密,以得到未加密的任务执行参数,第一可信执行环境部署在远端设施150中;进而在第一可信执行环境中根据未加密的任务执行参数执行该任务请求指示的任务,以得到第一执行结果;基于第一执行结果,在第一可信执行环境中生成用于验证第一执行结果的可靠性的第一验证信息;最后,由远端设施150将第一执行结果和第一验证信息加入远端设施150所在的区块链(未示出)。
在本公开中,远端设施150中的服务器151可以是单个服务器或服务器集群,其上可以运行用于执行上述任务请求指示的任务的应用程序,远端设施150中的数据库设备152可以存储任务执行过程中所需要或产生的各种数据。可选地,服务器151还可以运行其他应用程序以及存储其他数据。例如,服务器151可以包括多个虚拟主机,用以运行不同的应用程序并提供不同服务。
在本公开中,终端设备120和130可以是各种类型的设备,例如移动电话、平板电脑、笔记本电脑、诸如智能手表的可穿戴设备、车载设备等。终端设备120和130上可以部署有客户端,该客户端可以用于进行任务相关操作(例如,发起任务、指定任务)以及可选地提供其他服务,并且可以采取如下形式中的任一种:本地安装的应用程序、经由其他应用程序访问的小程序、经由浏览器访问的web程序等。用户110可以通过终端设备120和130的输入/输出接口来查看客户端所呈现的信息以及进行相应交互操作。可选地,终端设备120和130可以与服务器151集成在一起。
在本公开中,数据库设备152可视为电子化的文件柜,即存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个对象共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
此外,在本公开中,网络140可以是经由诸如电缆、光纤等连接的有线网络,也可以是诸如2G、3G、4G、5G、Wi-Fi、蓝牙、ZigBee、Li-Fi等的无线网络。
图2示意性示出了相关技术中的基于区块链(例如,联盟链)的任务执行方法的示例原理图。如图2所示,区块链包括多个共识节点和多个业务节点,其中,共识节点211、212、213和214组成共识网络210,业务节点221和222组成业务网络220。
当所执行的智能合约为明文交易时(这种交易不包括敏感数据),相应的智能合约可以运行在业务节点上。示例性地,业务节点221获取交易请求并执行该交易请求指示的任务,进而将相应的任务执行结果发送至共识网络210。业务节点222(若有权限)从共识网络210中同步该任务执行结果。在这个过程中,业务节点221执行相应任务的行为不会被发送至共识网络210(即区块链中并不会记录这一信息),业务节点222无法感知业务节点221执行过相应任务。
然而,对于包括敏感数据的加密交易来说,为确保相关任务始终在可信、安全的节点上被执行,在相关技术中,在区块链的所有共识节点中均部署有可信执行环境(TEE),进而在相应的多个TEE中分别执行客户端发起的相应任务(例如,智能合约)并进行共识出块。以共识节点211为例,当所执行的智能合约为加密交易时,在部署在共识节点211中的可信执行环境中执行该智能合约,进而将所得到的执行结果与其他共识节点中相应的执行结果进行比较,当达成共识时,将所得到的执行结果存储在相应的区块中(区块是区块链中用于存储数据信息的载体)。如上文在背景技术一节中所述,这种设计会导致共识节点的较高的准入门槛以及区块链的较大的更新成本,另外,非加密的普通任务在相应共识节点中的执行可能被TEE中执行的任务阻塞。
图3示意性示出了根据本公开的一些实施例的基于区块链(例如,联盟链)的任务执行方法300(为简洁起见,以下简称为任务执行方法300)的示例流程图。示例性地,任务执行方法300可以由图1所示的远端设施150来实施,当然这不是限制性的。
具体地,在步骤310,可以通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数。所述第一节点可以是所述区块链中的共识节点,替代地,所述第一节点可以是所述区块链中的业务节点。所述任务发送方签名即为任务发送方针对所述任务请求确定的数字签名,数字签名是指附加在数据单元上的一些数据或是对数据单元所作的密码变换,用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。数字签名机制一般地可以基于公钥(非对称)加密体制并用于保护电子消息在网络的安全传输。具体地,任务发送方(例如,参与交易的用户侧设备)将执行任务所需的数据(例如,任务执行参数)经过哈希运算生成哈希摘要,并使用相应的私钥对该哈希摘要进行加密,从而得到任务发送方签名。然后,任务发送方将任务发送方签名和经加密的任务参数一起作为任务请求发送至所述第一节点,以便所述第一节点对任务发送方签名进行验证。
示例性地,可以从所述第一节点中获取任务发送方的公钥,进而使用该公钥对所述任务发送方签名进行解密以得到哈希摘要,然后使用相同的哈希算法重新计算该哈希摘要对应的原消息(例如,经加密的任务参数)的摘要,进而将该摘要与解密得到的上述哈希摘要进行比较,若二者一致,则所述任务发送方签名被验证通过,否则所述任务发送方签名不被验证通过。
术语“任务执行参数”指示执行任务所需要的参数。示例性地,以一个名为“Calculate”的任务为例,其实现了计算表达式“a+b*c”的功能,那么相应地,任务执行参数即为上述计算表达式中的三个参数:a、b和c。示例性地,可以使用非对称加密算法对这三个参数进行加密,以得到经加密的任务执行参数作为所述经加密的任务参数。替代地,可以使用其他的加密机制来对这三个参数进行加密,示例性地,可以使用数字信封(DigitalEnvelope)技术对这三个参数进行加密。具体地,可以使用非对称加密算法(例如,RSA(RonRivest,Adi Shamirh,LenAdleman)、ECC(Elliptic Curves Cryptography)或国密算法(SM2))对对称密钥(该对称密钥用于加密这三个参数)进行加密,进而将经加密的对称密钥与经加密的任务执行参数作为所述经加密的任务参数。提供对称密钥的对称加密算法可以是AES、SM1等算法,本公开对实现对称加密算法和非对称加密算法的具体算法不作限制。
关于签名算法或公钥加密算法,可以采用RSA 2048或4096,也可以使用ECC、国密算法(SM2)等其他公钥加密算法。例如RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难。对称的加密算法,加密和解密都是使用的一套密钥,而非对称使用的是两套密钥。加密的密钥与解密的密钥不相同,使用私钥加密的内容,只能通过公钥来解密,使用公钥加密的内容,只能通过私钥来解密。
需要说明的是,除了任务发送方签名和经加密的任务参数之外,根据不同的场景和需要,所述任务请求可以包括其他数据,包括但不限于以下中的一项或多项:任务发送方标识(其用于唯一地标识任务请求的发送方)、任务哈希(其为所述任务请求的哈希摘要)、任务时间戳(其标识任务生成的时间)、任务工作量的上限。
在步骤320,可以响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中。具体地,验证所述任务发送方签名的过程可以在所述第一可信执行环境中执行,也可以在所述第一可信执行环境之外执行(例如,由所述第一节点中的部署在所述第一可信执行环境之外的验签程序执行)。依然以上述名为“Calculate”的任务为例,其中三个参数a、b和c使用非对称加密算法被加密,当所述任务发送方签名被验证通过时,可以从第一可信执行环境中的密钥管理模块中获取预先存储的私钥作为解密密钥,进而使用该私钥对经加密的任务参数进行解密,以得到未加密的任务执行参数(即未加密的a、b和c)。
需要说明的是,在本公开中,取决于可信执行环境的不同实现方式,其中预先存储的私钥可能被加密。本公开对可信执行环境的实现方式不作限制。示例性地,可以使用SGX(Intel公司提出的一种可信执行环境方案)、ARM公司的TrustZone方案和AMD公司的的的SEV方案。以SGX方案为例,当私钥存储时,将使用SGX的硬件密钥(Intel公司在生产CPU时,烧制在CPU中的硬件密钥)对私钥加密,加密后的私钥仅可以在SGX所提供的TEE虚拟机所在的Enclave程序中解密,其中,Enclave程序是SGX程序中运行在可信执行环境中的部分,该部分受到CPU硬件的保护。Enclave程序中可以存储数据,存储的数据由SGX的硬件密钥加密,因此该私钥不会被泄漏给TEE虚拟机外的任何一方。部署在所述第一节点中的所述第一可信执行环境可以由SGX方案提供,也可以由TrustZone方案提供,甚至可以由SEV方案提供。
在步骤330,可以在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果。依然以上述名为“Calculate”的任务为例,未加密的任务执行参数即为未加密的a、b和c,通过这三个参数便可以执行上述名为“Calculate”的任务并得到所述第一执行结果,具体地,根据未加密的a、b和c计算上述表达式“a+b*c”的值作为所述第一执行结果。
在步骤340,可以基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息。依然以SGX方案为例,可以利用Enclave程序提供的认证响应quote(其可以通过调用相关API得到)作为所述第一验证信息,quote中包含Enclave程序的许多关键信息,包括:Enclave程序的度量值(每个Enclave程序独一无二的值,通过Enclave程序的二进制文件与Enclave程序的初始化数据计算得出。对Enclave程序的任何更改都会导致该度量值发生变化)、Enclave程序发布者信息、由认证响应请求的提出者指定的信息(也被称为“挑战”)等。示例性地,可以将所述第一执行结果作为挑战,进而得到相应的quote。需要说明的是,取决于实现可信执行环境的具体方案,所述第一验证信息可以具有不同的实现形式。
在步骤350,可以将所述第一执行结果和所述第一验证信息加入所述区块链。示例性地,可以由所述第一节点将所述第一执行结果和所述第一验证信息发布到所述区块链上,进而由其他节点(若有权限)或区块链之外的的验证服务商(例如,Intel)从所述区块链中获取所述第一执行结果和所述第一验证信息,并对所述第一执行结果的可靠性进行验证(具体参见下文)。
通过图3所示的任务执行方法300,可以仅在区块链的单个节点(其可以是共识节点,也可以是业务节点)中部署可信执行环境,进而在可信执行环境中执行相关任务,从而无需在区块链的所有共识节点中都部署可信执行环境,在不损害任务执行过程的安全性的情况下降低了共识节点的准入门槛,另外,还可以使得区块链的更新成本较低;通过将任务执行结果和对应的验证信息加入区块链,可以有助于区块链中的其他节点或区块链之外的的验证服务商获取该验证信息并对任务执行结果的可靠性进行验证。此外,即使执行任务请求指示的任务的节点为共识节点,由于仅在部署在该节点中的可信执行环境中执行该任务,当区块链接收到大量的需要在TEE中执行的任务时,非加密的普通任务在其他共识节点中的执行也不会被该任务阻塞。
下面通过图4来进一步说明图3所示的任务执行方法300的原理。如图4所示,区块链包括共识网络410和业务网络420,业务网络420中的业务节点421(即上述第一节点)获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;响应于所述任务发送方签名被业务节点421验证通过,在可信执行环境422(即上述第一可信执行环境)中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,可信执行环境422部署在业务节点421中;在可信执行环境422中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到相应的执行结果(即上述第一执行结果);基于所述第一执行结果,在可信执行环境422中生成用于验证所述第一执行结果的可靠性的验证信息(即上述第一验证信息);最后,将所述第一执行结果和所述第一验证信息加入所述区块链(在图4的示例中,是将相应的执行结果和验证信息发送至共识节点411)。
需要说明的是,尽管在图4的共识网络410中示出了4个共识节点(其中一个共识节点由附图标记411指示),并且在业务网络420中示出了1个共识节点,本领域技术人员应理解,根据实际的应用场景或需求,共识网络410可以包括更少或更多个共识节点,并且业务网络420可以包括更少或更多个业务节点。还需要说明的是,本公开对术语“共识网络”和“业务网络”的引入仅仅旨在区分区块链(例如,联盟链)中的不同类型的节点(集合),即它们仅分别用于指代区块链中的共识节点集合和业务节点集合。另外,尽管上述第一节点在图4中被示为业务网络420中的业务节点421,本领域技术人员应理解,上述第一节点也可以是业务网络420中的其他业务节点(未示出),甚至可以是共识网络410中的共识节点。
在一些实施例中,所述任务请求还包括任务发送方标识,并且所述任务发送方签名通过以下步骤被验证:根据所述任务发送方标识,从所述第一可信执行环境中获取用于所述任务发送方签名的验签密钥;使用所述验签密钥验证所述任务发送方签名。示例性地,所述第一可信执行环境中可以预先存储不同的任务发送方对应的不同标识,以及各个标识对应的验签密钥,从而可以根据所述任务发送方标识,从所述第一可信执行环境中获取用于所述任务发送方签名的验签密钥,进而在所述第一可信执行环境中使用所述验签密钥验证所述任务发送方签名。以上验签过程可以在所述第一可信执行环境中执行,从而增加验签过程的安全性,进而增加任务执行过程的安全性。
在一些实施例中,所述区块链还包括第二节点,并且其中所述方法还包括通过所述第二节点执行以下步骤:获取所述任务请求;响应于所述任务发送方签名被验证通过,在第二可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第二可信执行环境部署在所述第二节点中;在所述第二可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第二执行结果;以及基于所述第二执行结果,在所述第二可信执行环境中生成用于验证所述第一执行结果的可靠性的第二验证信息。所述第二节点可以是所述区块链中的共识节点,替代地,所述第二节点可以是所述区块链中的业务节点。通过所述第二节点执行的上述步骤类似于上文关于图3所示的任务执行方法300描述的步骤310、320、330和340,区别之处在于,所述第二验证信息用于验证所述第一执行结果的可靠性而非所述第二执行结果的可靠性。可以使用类似于上文关于步骤310、320、330和340描述的方法来执行通过所述第二节点执行的上述步骤,这里不再赘述。利用不同于第一节点的第二节点来执行相同的任务并生成相应的验证信息,有助于通过比较不同节点所生成的验证信息来确定相应的任务执行结果的可靠性。示例性地,当所述第二验证信息和所述第一验证信息一致时,可以确定所述第一执行结果可靠,这是因为,如果相关的任务不是在第一节点的第一可信执行环境中执行的,所生成的第一执行结果与第二节点生成的第二执行结果将不一致。
在一些实施例中,通过所述第二节点执行以下步骤以验证所述第一执行结果的可靠性:从所述区块链中获取所述第一执行结果和所述第一验证信息;响应于所述第二验证信息和所述第一验证信息一致,确定所述第一执行结果可靠。示例性地,下面结合图5来进一步说明这种验证任务执行结果的可靠性的方法的原理。
如图5所示,区块链包括共识网络510和业务网络520,业务网络520中的业务节点521(即上述第一节点)在第一可信执行环境522中对经加密的任务参数进行解密,以得到未加密的任务执行参数,进而在第一可信执行环境522中根据未加密的任务执行参数执行任务请求指示的任务,以得到第一执行结果,基于所述第一执行结果生成的第一验证信息和第一执行结果一起被发送至区块链(在图5的示例中即为发送至共识网络510),以便业务网络520中的业务节点522(即上述第二节点)从区块链中获取第一执行结果和第一验证信息,在得到第二验证信息之后,由业务节点522对第二验证信息和第一验证信息进行比较,当二者一致时,确定第一执行结果可靠。
在一些实施例中,所述区块链还包括第三节点,以及所述第二验证信息被加入所述区块链,并且其中通过所述第三节点执行以下步骤以验证所述第一执行结果的可靠性:从所述区块链中获取所述第一执行结果、所述第一验证信息、以及所述第二验证信息;响应于所述第一验证信息和所述第二验证信息一致,确定所述第一执行结果可靠。示例性地,下面结合图6来进一步说明这种验证任务执行结果的可靠性的方法的原理。
如图6所示,区块链包括共识网络610和业务网络620,业务网络620中的业务节点621(即上述第一节点)将第一可信执行环境中得到的第一执行结果和第一验证信息发送至区块链(在图6的示例中即为发送至共识网络610),业务网络620中的业务节点622(即上述第二节点)将第二可信执行环境中得到的第二验证信息发送至区块链(在图6的示例中即为发送至共识网络610),以便业务网络620中的业务节点623(即上述第三节点)从区块链中获取第一执行结果、第一验证信息以及第二验证信息,在得到第一验证信息和第二验证信息之后,由业务节点623对第二验证信息和第一验证信息进行比较,当二者一致时,确定第一执行结果可靠。相较于上文关于图5描述的验证第一执行结果的可靠性的方法,图6所示的方法有助于更加准确地验证第一执行结果的可靠性。示例性地,当第一执行结果不可靠时(例如,由于第一执行结果实际上并不是在第一可信执行环境中得到的),业务节点622针对相同的任务在第二可信执行环境中得到的第二验证信息将与第一验证信息不一致,但业务节点622可能自身并不安全,例如,尽管第二验证信息与第一验证信息不一致,但业务节点622可能将错误的信息发送至区块链(例如,指示第一执行结果可靠的信息),在这种情况下,可以利用图6所示的方法,即通过业务节点623而不是业务节点622来验证第一执行结果的可靠性,从而避免业务节点622给出错误信息的情况,进而准确地验证第一执行结果的可靠性。
在一些实施例中,所述区块链还包括第四节点,并且其中通过所述第四节点执行以下步骤:从所述区块链中获取所述第一执行结果和所述第一验证信息;发送所获取的所述第一验证信息至所述区块链之外的验证服务商;响应于接收到来自所述验证服务商的验证消息,确定所述第一执行结果可靠,所述验证消息指示所述第一验证信息被所述验证服务商验证通过。示例性地,当可信执行环境由SGX实现时,所述验证服务商可以是Intel公司。SGX远程认证是一种证明quote真实性的方法,远程认证的可靠性由Intel公司保障。如果quote通过认证,则表明:1)Enclave程序未被篡改;2)Enclave程序真的运行在SGX平台上。示例性地,下面结合图7来进一步说明这种验证任务执行结果的可靠性的方法的原理。
如图7所示,区块链包括共识网络710和业务网络720,业务网络720中的业务节点721(即上述第四节点)从区块链中获取第一执行结果和第一验证信息,进而发送所获取的第一验证信息至区块链之外的验证服务商730;响应于接收到来自验证服务商730的验证消息,确定第一执行结果可靠,所述验证消息指示第一验证信息被验证服务商730验证通过。通过图7所示的这种验证任务执行结果的可靠性的方法,可以利用区块链之外的验证服务商的独立性与权威性,更加安全、可信地验证任务执行结果的可靠性。
在一些实施例中,所述经加密的任务参数还包括经加密的第二加密密钥,并且其中所述经加密的第二加密密钥和所述经加密的任务执行参数通过以下步骤被加密:使用第一加密密钥对未加密的第二加密密钥进行加密,以得到所述经加密的第二加密密钥;使用所述未加密的第二加密密钥对未加密的任务执行参数进行加密,以得到所述经加密的任务执行参数。依然以上述名为“Calculate”的任务为例,则以上过程可以分别用公式(1)和(2)表示:
Enc(pk,key) (1)
Enc(key, {“a”:1,”b”:2,”c”:5}) (2)
其中,Enc(pk,key)表示使用密钥pk(即上述第一加密密钥)加密明文消息key(即上述未加密的第二加密密钥)得到的密文值(即上述经加密的第二加密密钥);Enc(key,{“a”:1,”b”:2,”c”:5})表示使用密钥key(即上述未加密的第二加密密钥)加密明文消息{“a”:1,”b”:2,”c”:5}(即上述未加密的任务执行参数)得到的密文值(即上述经加密的任务执行参数),即通过以上过程可以得到上述名为“Calculate”的任务对应的任务执行参数(a、b和c)的加密结果。
需要说明的是,除非另有相反指示,在本公开中,表述“任务执行参数”和“任务执行参数的取值”可以互换地使用,例如,上述明文消息{“a”:1,”b”:2,”c”:5}即为a、b和c的一组取值的示例,其中a=1,b=2,c=5。本领域技术人员应理解,取决于应用场景和具体的任务,任务执行参数的取值可能是不相同的,以上a、b和c的取值仅仅是示例性的。另外,示例性地,密钥pk可以是非对称密钥,使用密钥pk加密明文消息key可以保护key不被外界获取,另外,密钥key可以是对称密钥,可以快速地、以较少的运算资源对未加密的任务执行参数进行加密,进而得到经加密的任务执行参数,以上过程在保障相关密钥的安全性的同时有助于以较快的速度执行相关任务。
在一些实施例中,所述任务请求还包括任务发送方标识,并且其中所述在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,包括:根据所述任务发送方标识,从所述第一可信执行环境中获取与所述第一加密密钥对应的解密密钥;使用所述解密密钥对所述经加密的第二加密密钥进行解密,以得到未加密的第二加密密钥;使用所述未加密的第二加密密钥对所述经加密的任务执行参数进行解密,以得到所述未加密的任务执行参数。
依然以上述名为“Calculate”的任务为例,示例性地,使用ID1来表示该任务对应的任务发送方标识,该任务发送方标识以及相应的解密密钥sk(该解密密钥sk也与第一加密密钥密钥pk对应),ID1和解密密钥sk可以预先存储在所述第一可信执行环境中,从而可以根据ID1,从所述第一可信执行环境中获取解密密钥sk对Enc(pk,key)(即上述经加密的第二加密密钥)进行解密,以得到密钥key(即上述未加密的第二加密密钥,在该示例中为对称密钥),进而可以使用密钥key对Enc(key, {“a”:1,”b”:2,”c”:5})(即上述经加密的任务执行参数)进行解密,以得到{“a”:1,”b”:2,”c”:5}(即上述未加密的任务执行参数)。以上解密过程可以在所述第一可信执行环境中执行,从而增加解密过程的安全性,进而增加任务执行过程的安全性。
图8示意性示出了根据本公开的一些实施例的在可信执行环境800中执行任务的方法的示例原理图。如图8所示,可信执行环境800所在的节点(未示出)将所获取的任务请求发送至可信执行环境800中,参考上述名为“Calculate”的任务,示例性地,所述任务请求可以包括下表所列信息:
其中,任务哈希(HASH1)可以是对任务发送方标识(IDs)、任务名称(Calculate)、方法名(Cal,其用于指示上文所述运算a+b*c)、经加密的任务参数(包括Enc(pk,key)和Enc(key, {“a”:1,”b”:2,”c”:5}))和其他参数(在该示例中为任务时间戳TS1)进行哈希运算而生成的哈希摘要;任务签名SIG1即为上述任务发送方签名,其可以使用上文关于步骤310描述的方法得到,这里不再赘述。
当任务签名SIG1被验证通过时,可以从可信执行环境800中的密钥管理模块中获取预先存储的私钥sk以对Enc(pk,key)进行解密,以得到key(其是对称密钥),进而使用key对Enc(key, {“a”:1,”b”:2,”c”:5})进行解密,以得到{“a”:1,”b”:2,”c”:5}。由于这些解密过程都是运行在可信执行环境800中,任何中间过程与计算结果值都无法被外部获取,从而保障了相关解密过程的安全性。
接下来,根据未加密的任务执行参数(即{“a”:1,”b”:2,”c”:5})便可以执行相关的方法(Cal),从而得到相应的执行结果(在该示例中为11)。需要说明的是,在任务执行过程中产生的中间数据(例如,b*c的值)可以作为未加密的本地状态值在可信执行环境800中被加密(这一过程在图8中被示出为“落盘加密”),以得到经加密的本地状态值,经加密的本地状态值可以被存储到可信执行环境800外部的存储空间中,以节省可信执行环境800的存储资源。
图9示意性示出了根据本公开的一些实施例的存储与任务相关的数据的方法的示例原理图。如图9所示,可信执行环境920部署在业务节点900中,可信执行环境920中的Enclave程序921用于执行类似于上文关于图8描述的密钥管理、任务执行以及落盘加密等操作。另外,业务节点900还包括存储单元910以存储与任务相关的数据。为便于阐述该方法的原理,在该示例中,业务节点900所接收的业务请求包括与上文关于图8描述的业务请求相同的信息。
在执行所述任务请求指示的任务的过程中所使用的至少一部分数据(例如,b*c的值)通过以下步骤被存储:在可信执行环境920中对b*c的值进行序列化,以得到未加密的序列化数据(例如,其可以是二进制的形式),示例性地,可以将所述未加密的序列化数据命名为msg;从可信执行环境920中获取第三加密密钥(keys),并使用keys对msg进行加密,以得到经加密的序列化数据(Enc(keys,msg));进而可以在落盘加密操作中将Enc(keys,msg)和任务哈希(HASH1)存储到可信执行环境920外部的存储空间中。具体地,可以经由存储单元910中的存储接口将相应数据存储到存储单元910的存储空间中,其中,存储单元910可以由TEEproxy来实现(TEE proxy是业务节点900运行在SGX外的一个进程,专门用于处理从可信执行环境920发送到业务节点900所在区块链的请求),相应地,存储单元910中的存储接口可以是TEE proxy所提供的Listener(其可以收取来自可信执行环境920的请求并转给相应的其他对象进行后续处理)。这种存储相关数据的方法可以节省可信执行环境920的存储资源,进而有助于提高在可信执行环境920中执行相关任务的性能(例如,执行速度)。
图10示意性示出了根据本公开的一些实施例的获取与任务相关的数据的方法的示例原理图。如图10所示,可信执行环境1020部署在业务节点1000中,可信执行环境1020中的Enclave程序1021用于执行类似于上文关于图8描述的密钥管理、任务执行以及落盘加密等操作。另外,业务节点1000还包括存储单元1010以存储与任务相关的数据。为便于阐述该方法的原理,在该示例中,业务节点1000所接收的业务请求包括与上文关于图8描述的业务请求相同的信息。
在执行所述任务请求指示的任务的过程中的目标数据通过以下步骤被获取:根据任务哈希(HASH1),从存储单元1010的存储空间中获取所述经加密的序列化数据中与所述目标数据对应的部分数据(例如,Enc(keys,msg)),其中,keys即为上文关于图9描述的第三加密密钥,其可以从可信执行环境1020中被获取;进而可以使用keys对Enc(keys,msg)进行解密,以获取目标数据(在该示例中为msg)。如上文关于图9所描述的,msg指示未加密的序列化数据,在得到msg之后,可以利用与上文关于图9描述的对b*c的值进行序列化的过程相反的步骤来得到msg对应的b*c的值(例如,将二进制数据转换为十进制数据)。示例性地,可以通过Enclave程序1021向存储单元1010发送请求(该请求包含有HASH1或与之相关的信息),存储单元1010中的存储接口接收到该请求之后,从存储单元1010的存储空间中获取Enc(keys,msg)并经由存储接口将其发送至Enclave程序1021,进而使得可以在可信执行环境1020中利用keys对Enc(keys,msg)进行解密,以获取目标数据(在该示例中为msg)。类似于图9中的示例,存储单元1010可以由TEE proxy来实现,相应地,存储单元1010中的存储接口可以是TEE proxy所提供的Listener。在执行任务过程中所需要的目标数据通过该示例中的方法被获取,有助于减轻对可信执行环境1020的存储需求,进而有助于提高在可信执行环境1020中执行相关任务的性能。
图11示意性示出了根据本公开的一些实施例的基于区块链的任务执行装置1100(为简洁起见,以下简称为任务执行装置1100)的示例框图。示例性地,任务执行装置1100可以部署在图1所示的远端设施150上。如图11所示,任务执行装置1100包括信息获取模块1110、信息解密模块1120、任务执行模块1130、信息生成模块1140以及信息发送模块1150。
具体地,信息获取模块1110可以被配置为通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;信息解密模块1120可以被配置为响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中;任务执行模块1130可以被配置为在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果;信息生成模块1140可以被配置为基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息;以及信息发送模块1150可以被配置为将所述第一执行结果和所述第一验证信息加入所述区块链。
应理解,任务执行装置1100可以以软件、硬件或软硬件相结合的方式实现.该装置中的多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
此外,任务执行装置1100可以用于实施前文所描述的任务执行方法300,其相关细节已经在前文中详细描述,为简洁起见,这里不再赘述。另外,这些装置可以具有与对应方法描述的相同的特征和优势。
图12图示了示例***,其包括代表可以实现本文描述的各种技术的一个或多个***和/或设备的示例计算设备1200。计算设备1200可以是例如区块链(例如,联盟链)中的节点所使用的服务器、与服务器相关联的设备、片上***、和/或任何其他合适的计算设备或计算***。上面参照图11描述的任务执行装置1100可以采取计算设备1200的形式。替换地,任务执行装置1100可以以应用1216的形式被实现为计算机程序。
如图12所示的示例计算设备1200包括彼此通信耦合的处理***1211、一个或多个计算机可读介质1212以及一个或多个I/O接口1213。尽管未示出,但是计算设备1200还可以包括***总线或其他数据和命令传送***,其将各种组件彼此耦合。***总线可以包括不同总线结构的任何一个或组合,所述总线结构诸如存储器总线或存储器控制器、***总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。
处理***1211代表使用硬件执行一个或多个操作的功能。因此,处理***1211被图示为包括可被配置为处理器、功能块等的硬件元件1214。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其他逻辑器件。硬件元件1214不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质1212被图示为包括存储器/存储装置1215。存储器/存储装置1215表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1215可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1215可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1212可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O接口1213代表允许用户使用各种输入设备向计算设备1200输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备(例如,投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1200可以以下面进一步描述的各种方式进行配置以支持用户交互。
计算设备1200还包括应用1216。应用1216可以例如是任务执行装置1100的软件实例,并且与计算设备1200中的其他元件相组合地实现本文描述的技术。
本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1200访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备1200的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其他传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指这样的信号,该信号的特征中的一个或多个被设置或改变,从而将信息编码到该信号中。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其他无线介质的无线介质。
如前所述,硬件元件1214和计算机可读介质1212代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上***、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其他实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其他程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1214体现的一个或多个指令和/或逻辑。计算设备1200可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理***的计算机可读存储介质和/或硬件元件1214,可以至少部分地以硬件来实现将模块实现为可由计算设备1200作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备1200和/或处理***1211)可执行/可操作以实现本文所述的技术、模块和示例。
在各种实施方式中,计算设备1200可以采用各种不同的配置。例如,计算设备1200可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备1200还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备1200还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
本文描述的技术可以由计算设备1200的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。功能还可以通过使用分布式***、诸如通过如下所述的平台1222而在“云”1220上全部或部分地实现。
云1220包括和/或代表用于资源1224的平台1222。平台1222抽象云1220的硬件(例如,服务器)和软件资源的底层功能。资源1224可以包括在远离计算设备1200的服务器上执行计算机处理时可以使用的应用和/或数据。资源1224还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。
平台1222可以抽象资源和功能以将计算设备1200与其他计算设备连接。平台1222还可以用于抽象资源的分级以提供遇到的对于经由平台1222实现的资源1224的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个***1200内。例如,功能可以部分地在计算设备1200上以及通过抽象云1220的功能的平台1222来实现。
应当理解,为清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,将明显的是,在不偏离本公开的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其他功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
将理解的是,尽管第一、第二、第三等术语在本文中可以用来描述各种设备、元件、部件或部分,但是这些设备、元件、部件或部分不应当由这些术语限制。这些术语仅用来将一个设备、元件、部件或部分与另一个设备、元件、部件或部分相区分。
尽管已经结合一些实施例描述了本公开,但是其不旨在被限于在本文中所阐述的特定形式。相反,本公开的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其他元件,并且术语“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。
应当理解,为清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,将明显的是,在不偏离本公开的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其他功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
本公开提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令在被执行时实现上述的基于区块链的任务执行方法。
本公开提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述各种可选实现方式中提供的基于区块链的任务执行方法。
通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除其他元件或步骤,并且“一”或“一个”不排除多个。在相互不同的从属权利要求中记载某些措施的纯粹事实并不指示这些措施的组合不能被有利地使用。
Claims (14)
1.一种基于区块链的任务执行方法,包括:
通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;
响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中;
在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果;
基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息;以及
将所述第一执行结果和所述第一验证信息加入所述区块链。
2.根据权利要求1所述的方法,其中所述任务请求还包括任务发送方标识,并且其中所述任务发送方签名通过以下步骤被验证:
根据所述任务发送方标识,从所述第一可信执行环境中获取用于所述任务发送方签名的验签密钥;
使用所述验签密钥验证所述任务发送方签名。
3.根据权利要求1所述的方法,其中所述区块链还包括第二节点,并且其中所述方法还包括通过所述第二节点执行以下步骤:
获取所述任务请求;
响应于所述任务发送方签名被验证通过,在第二可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第二可信执行环境部署在所述第二节点中;
在所述第二可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第二执行结果;以及
基于所述第二执行结果,在所述第二可信执行环境中生成用于验证所述第一执行结果的可靠性的第二验证信息。
4.根据权利要求3所述的方法,其中所述方法还包括通过所述第二节点执行以下步骤以验证所述第一执行结果的可靠性:
从所述区块链中获取所述第一执行结果和所述第一验证信息;
响应于所述第二验证信息和所述第一验证信息一致,确定所述第一执行结果可靠。
5.根据权利要求3所述的方法,其中所述区块链还包括第三节点,以及所述第二验证信息被加入所述区块链,并且其中所述方法还包括通过所述第三节点执行以下步骤以验证所述第一执行结果的可靠性:
从所述区块链中获取所述第一执行结果、所述第一验证信息、以及所述第二验证信息;
响应于所述第一验证信息和所述第二验证信息一致,确定所述第一执行结果可靠。
6.根据权利要求1所述的方法,其中所述区块链还包括第四节点,并且其中所述方法还包括通过所述第四节点执行以下步骤:
从所述区块链中获取所述第一执行结果和所述第一验证信息;
发送所获取的所述第一验证信息至所述区块链之外的验证服务商;
响应于接收到来自所述验证服务商的验证消息,确定所述第一执行结果可靠,所述验证消息指示所述第一验证信息被所述验证服务商验证通过。
7.根据权利要求1所述的方法,其中所述经加密的任务参数还包括经加密的第二加密密钥,并且其中所述经加密的第二加密密钥和所述经加密的任务执行参数通过以下步骤被加密:
使用第一加密密钥对未加密的第二加密密钥进行加密,以得到所述经加密的第二加密密钥;
使用所述未加密的第二加密密钥对未加密的任务执行参数进行加密,以得到所述经加密的任务执行参数。
8.根据权利要求7所述的方法,其中所述任务请求还包括任务发送方标识,并且其中所述在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,包括:
根据所述任务发送方标识,从所述第一可信执行环境中获取与所述第一加密密钥对应的解密密钥;
使用所述解密密钥对所述经加密的第二加密密钥进行解密,以得到未加密的第二加密密钥;
使用所述未加密的第二加密密钥对所述经加密的任务执行参数进行解密,以得到所述未加密的任务执行参数。
9.根据权利要求1所述的方法,其中所述任务请求还包括任务哈希,所述任务哈希为所述任务请求的哈希摘要,并且其中在执行所述任务请求指示的任务的过程中所使用的至少一部分数据通过以下步骤被存储:
在所述第一可信执行环境中对所述至少一部分数据进行序列化,以得到未加密的序列化数据;
从所述第一可信执行环境中获取第三加密密钥,并使用所述第三加密密钥对所述未加密的序列化数据进行加密,以得到经加密的序列化数据;
将所述经加密的序列化数据和所述任务哈希存储到所述第一可信执行环境外部的第一存储空间中。
10.根据权利要求9所述的方法,其中在执行所述任务请求指示的任务的过程中的目标数据通过以下步骤被获取:
根据所述任务哈希,从所述第一存储空间中获取所述经加密的序列化数据中与所述目标数据对应的部分数据;
从所述第一可信执行环境中获取所述第三加密密钥;
使用所述第三加密密钥对所述部分数据进行解密,以获取所述目标数据。
11.一种基于区块链的任务执行装置,所述装置包括:
信息获取模块,被配置为通过所述区块链中的第一节点获取任务请求,所述任务请求至少包括任务发送方签名和经加密的任务参数,所述经加密的任务参数至少包括经加密的任务执行参数;
信息解密模块,被配置为响应于所述任务发送方签名被验证通过,在第一可信执行环境中对所述经加密的任务参数进行解密,以得到未加密的任务执行参数,所述第一可信执行环境部署在所述第一节点中;
任务执行模块,被配置为在所述第一可信执行环境中根据所述未加密的任务执行参数执行所述任务请求指示的任务,以得到第一执行结果;
信息生成模块,被配置为基于所述第一执行结果,在所述第一可信执行环境中生成用于验证所述第一执行结果的可靠性的第一验证信息;以及
信息发送模块:被配置为将所述第一执行结果和所述第一验证信息加入所述区块链。
12.一种计算设备,包括:
存储器,其被配置成存储计算机可执行指令;
处理器,其被配置成当所述计算机可执行指令被处理器执行时执行根据权利要求1至10中的任一项所述的方法。
13.一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行根据权利要求1至10中的任一项所述的方法。
14.一种计算机程序产品,包括计算机可执行指令,其中所述计算机可执行指令被处理器执行时执行根据权利要求1至10中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211602333.2A CN118199884A (zh) | 2022-12-14 | 2022-12-14 | 基于区块链的任务执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211602333.2A CN118199884A (zh) | 2022-12-14 | 2022-12-14 | 基于区块链的任务执行方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118199884A true CN118199884A (zh) | 2024-06-14 |
Family
ID=91397193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211602333.2A Pending CN118199884A (zh) | 2022-12-14 | 2022-12-14 | 基于区块链的任务执行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118199884A (zh) |
-
2022
- 2022-12-14 CN CN202211602333.2A patent/CN118199884A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3619889B1 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
CN110914851B (zh) | 提高区块链网络与外部数据源之间的通信的完整性 | |
EP3910907B1 (en) | Retrieving access data for blockchain networks using highly available trusted execution environments | |
KR102392420B1 (ko) | 다중키 쌍 시그너처를 사용한 프로그램 실행 및 데이터 증명 체계 | |
US11223485B2 (en) | Verifiable encryption based on trusted execution environment | |
US10657293B1 (en) | Field-programmable gate array based trusted execution environment for use in a blockchain network | |
AU2019204708A1 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
JP2020528224A (ja) | 信頼できる実行環境におけるスマート契約動作のセキュアな実行 | |
CN111066019B (zh) | 处理存储在区块链网络中的数据元素 | |
CN113169866A (zh) | 使用同时密钥发布来防止共谋的技术 | |
US20230237437A1 (en) | Apparatuses and methods for determining and processing dormant user data in a job resume immutable sequential listing | |
CN118199884A (zh) | 基于区块链的任务执行方法和装置 | |
WO2022171263A1 (en) | Key attestation methods, computing devices having key attestation abilities, and their provisioning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |