HK40027501B - 提高区块链网络与外部数据源之间的通信的完整性 - Google Patents
提高区块链网络与外部数据源之间的通信的完整性 Download PDFInfo
- Publication number
- HK40027501B HK40027501B HK62020012964.6A HK62020012964A HK40027501B HK 40027501 B HK40027501 B HK 40027501B HK 62020012964 A HK62020012964 A HK 62020012964A HK 40027501 B HK40027501 B HK 40027501B
- Authority
- HK
- Hong Kong
- Prior art keywords
- relay system
- data
- request
- hash value
- node
- Prior art date
Links
Description
技术领域
本文涉及从外部数据源向区块链网络提供数据。
背景技术
分布式账本系统(DLS),也可称为共识网络和/或区块链网络,使得参与的实体能够安全地且不可篡改地存储数据。在不参考任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的类型的示例可以包括提供给选择的实体组的联盟区块链网络,该实体组控制共识处理,并包括访问控制层。
智能合约是在区块链网络上执行的程序。在一些示例中,在区块链上运行的智能合约需要来自区块链外部的输入以评估预定义规则并执行相应的动作。但是,智能合约本身不能直接访问外部数据源。因此,可以使用中继代理来检索外部数据,并将数据提交给区块链以由智能合约进行处理。但是,此处理可能导致安全问题,例如安全信息的泄漏(例如,访问外部数据源可能需要的凭据)。
尽管已经提出了用于解决与从外部数据源检索数据相关的安全性问题的技术,但是解决所述安全性问题的更有效的解决方案将是有利的。
发明内容
本文描述了用于从外部数据源检索用于在区块链网络内进行处理的数据的技术。
本文的实施例涉及一种中继系统,该系统协调从用户计算设备通过区块链网络到区块链网络外部的基于互联网的数据源的通信。更具体地,本文的实施例使得用户计算设备能够使用用于查询基于互联网的数据源的中继系统节点的公钥来对访问基于因特网的数据可能需要的机密信息进行加密。在一些实施例中,中继系统节点使用私钥对响应进行加密,并且该响应由区块链网络内的中继系统智能合约使用公钥验证。在一些实施例中,中继节点执行可信执行环境(TEE),并且通过TEE的认证处理来提供公钥和私钥。
本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
本文还提供了用于实施本文提供的所述方法的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将导致所述一个或多个处理器按照本文提供的方法的实施例执行操作。
应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。
以下在附图和描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求,本文的其他特征和优点将显现。
附图说明
图1是示出了可用于执行本文的实施例的环境示例的图示。
图2是示出了根据本文的实施例的概念性架构示例的图示。
图3是示出了根据本文的实施例的系统示例的图示。
图4是示出了根据本文的实施例的处理示例的信号流。
图5是示出了根据本文的实施例的处理示例的信号流。
图6是示出了可根据本文的实施例执行的处理示例的流程图。
图7是示出了根据本文的实施例的装置的模块示例的图示。
各附图中相同的附图标记和名称表示相同的元件。
具体实施方式
本文描述了用于提高来自区块链网络外部的数据源的请求和响应的完整性的技术。本文的实施例涉及中继系统,该中继系统协调从用户计算设备通过区块链网络到区块链网络外部的基于互联网的数据源的通信。更具体地,本文的实施例使得用户计算设备能够使用用于查询基于互联网的数据的中继系统节点的公钥来对访问基于互联网的数据可能需要的机密信息进行加密。在一些实施例中,中继系统节点使用私钥对响应进行加密,并且该响应由区块链网络内的中继系统智能合约使用公钥验证。在一些实施例中,中继节点执行可信执行环境(TEE),并且通过TEE的认证处理来提供公钥和私钥。
在特定实施例中实现的本文中描述的主题实现了以下技术优点中的一个或多个。例如,本文的实施例确保了向中继系统节点提交的用于向区块链网络外部的数据源查询的请求的完整性。作为另一个示例,本文的实施例确保了从外部数据源提供回区块链网络的响应的完整性。因此,本公开的实施例提高了区块链网络与用于检索区块链网络外部的数据的中继系统的组件之间的通信的完整性。通过这种方式,可以减少恶意用户潜在的攻击渠道,从而提高安全性。
上述中继系统有助于避免用户与中继系统节点之间的直接接触,从而避免暴露中继系统节点的位置或接入点。这样,恶意行动者不太可能使用例如分布式拒绝服务(DDoS)攻击在网络上发现并攻击中继系统节点。这提高了中继系统节点的安全性,从而进一步提高了区块链与中继系统节点之间的通信的安全性。
为本文的实施例提供进一步的背景,如上所述,分布式账本系统(DLS),其也可以称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地且不可篡改地进行交易和存储数据。尽管术语“区块链”通常与特定网络和/或用例相关联,但是在不参考任何特定用例的情况下,本文使用“区块链”来一般地指代DLS。
区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括时间戳、其自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并编入默克尔(Merkle)树中。Merkle树是一种数据结构,在该树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在树中的交易的哈希值可以通过确定其是否与树的结构一致而被快速验证。
区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。这里参考联盟区块链网络进一步详细描述了本文的实施例。然而,预期本文的实施例可以在任何适当类型的区块链网络中实现。
通常,联盟区块链网络在参与实体间是私有的。在联盟区块链网络中,共识处理由可以被称为共识节点的授权的节点集控制,一个或多个共识节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。
在一些示例中,在联盟区块链网络内,提供全局区块链作为跨所有节点复制的区块链。也就是说,所有共识节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),共识协议在联盟区块链网络内实施。例如,联盟区块链网络可以实施实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)共识,下面将进一步详细描述。
图1是示出了可用于执行本文的实施例的环境100的示例的图示。在一些示例中,环境100使得实体能够参与至联盟区块链网络102中。环境100包括计算系统106、108和网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络110。在一些示例中,网络110使得能够与联盟区块链网络102通信或在联盟区块链网络102内通信。通常,网络110表示一个或多个通信网络。在一些情况下,计算系统106、108可以是云计算系统(未示出)的节点,或者每个计算系统106、108可以是单独的云计算系统,其包括通过网络互连并且用作分布式处理系统的多个计算机。
在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算设备。计算设备的示例包括(但不限于)服务器、台式计算机、笔记本电脑、平板电脑和智能手机。在一些示例中,计算系统106、108承载用于与联盟区块链网络102交互的一个或多个由计算机实施的服务。例如,计算系统106可以承载第一实体(例如,用户A)的由计算机实施的、例如交易管理系统的服务,第一实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。计算系统108可以承载第二实体(例如,用户B)的由计算机实施的、例如交易管理系统的服务,第二实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。在图1的示例中,联盟区块链网络102被表示为节点的点对点网络(Peer-to-Peer network),并且计算系统106、108分别提供参与至联盟区块链网络102中的第一实体和第二实体的节点。
图2描绘了根据本文的实施例的架构200的示例。示例性概念架构200包括分别对应于参与者A、参与者B和参与者C的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,多个节点214中的至少一些节点将信息不可篡改地记录在区块链216中。如本文进一步详述,尽管在区块链网络212中示意性地描述了单个区块链216,但是在区块链网络212上提供并维护区块链216的多个副本。
在所描绘的示例中,每个参与者系统202、204、206分别由参与者A、参与者B和参与者C提供或代表参与者A、参与者B和参与者C,并且在区块链网络中作为各自的节点214发挥作用。如这里所使用的,节点通常是指连接到区块链网络212且使相应的参与者能够参与到区块链网络中的个体系统(例如,计算机、服务器)。在图2的示例中,参与者对应于每个节点214。然而,可以预期,一个参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)与区块链网络212通信或通过区块链网络212进行通信。
节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的矿工节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整副本,而其他节点214仅存储区块链216的部分副本。例如,数据访问特权可以限制相应的参与者在其相应的系统内存储的区块链数据。在图2的示例中,参与者系统202、204、206存储区块链216的相应的完整副本216'、216”和216”'。
区块链(例如,图2的区块链216)由一系列区块组成,每个区块存储数据。数据的示例包括表示两个或更多个参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以存储在区块链中(例如,文档、图像、视频、音频)。交易的示例可以包括(但不限于)有价物(例如,资产、产品、服务、货币)的交换。交易数据不可篡改地存储在区块链中。也就是说,交易数据不能改变。
在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度哈希值(也作为字符串数据提供)的过程。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理可确保即使交易数据轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括(但不限于)输出256位哈希值的安全哈希算法(SHA)-256。
多个交易的交易数据被哈希处理并存储在区块中。例如,提供两个交易的哈希值,并对它们本身进行哈希处理以提供另一个哈希值。重复此过程,直到针对所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为Merkle根哈希值,并存储在区块的头中。任何交易中的更改都会导致其哈希值发生变化,并最终导致Merkle根哈希值发生变化。
通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并竞相将区块添加到区块链中。这种节点称为共识节点。上面介绍的PBFT用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。
更详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将所得的哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(Merkle根哈希值)。将此哈希值添加到区块头中。共识节点还确定区块链中最新区块(即,添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)值和时间戳。
通常,PBFT提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过在PBFT中假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而实现。在PBFT中,以包括主共识节点和备共识节点的顺序提供共识节点。主共识节点被周期性地改变。通过由区块链网络内的所有共识节点对区块链网络的全局状态达成一致,将交易添加到区块链中。在该处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点(peer node)接收的,并验证在传输期间消息未被篡改。
在PBFT中,共识协议是在所有共识节点以相同的状态开始的情况下分多个阶段提供的。首先,客户端向主共识节点发送调用服务操作(例如,在区块链网络内执行交易)的请求。响应于接收到请求,主共识节点将请求组播到备共识节点。备共识节点执行请求,并且各自向客户端发送回复。客户端等待直到接收到阈值数量的回复。在一些示例中,客户端等待直到接收到f+1个回复,其中f是区块链网络内可以容忍的错误共识节点的最大数量。最终结果是,足够数量的共识节点就将记录添加到区块链的顺序达成一致,并且该记录或被接受或被拒绝。
在一些区块链网络中,用密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密过程。在对称加密中,同一密钥可用于多个节点,因此每个节点都可以对交易数据进行加密/解密。
非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且该加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者A可以使用参与者B的公钥来加密数据,并将加密数据发送给参与者B。参与者B可以使用其私钥来解密该加密数据(密文)并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参与者A的该数字签名来确认该消息是由该节点发送的。数字签名也可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者A将向参与者B发送消息。参与者A生成该消息的哈希值,然后使用其私钥加密该哈希值以提供作为加密哈希值的数字签名。参与者A将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者B。参与者B使用参与者A的公钥解密该数字签名,并提取哈希值。参与者B对该消息进行哈希处理并比较哈希值。如果哈希值相同,参与者B可以确认该消息确实来自参与者A,且未被篡改。
在一些示例中,在区块链网络内执行的智能合约需要来自区块链网络外部的输入以评估预定义规则并执行相应的动作。作为非限制性示例,智能合约可能需要基于股票报价来做出决策,该股票报价来自区块链网络外部的数据源。作为另一个非限制性示例,智能合约可能需要基于在区块链网络外部维护的账户的账户信息来做出决策。但是,智能合约本身无法直接查询外部数据源。
常规方法包括使用中继代理来检索外部数据,并将数据提交到区块链以通过智能合约进行处理。但是,此过程可能导致安全问题,例如安全信息的泄漏(例如,访问外部数据源可能需要的凭据)。例如,常规方法可以使用TEE来证明中继代理已诚实地执行了指定的查询请求。但是,由于区块链的开放性,所有查询请求对于区块链网络中的所有用户(节点)都是可见的。因此,对于需要对需要访问控制(例如查询)的外部数据源进行访问的查询请求,存在权限泄漏的风险。例如,存在请求字符串可能被截取、修改和重放,从而导致信息泄漏或其他问题的风险。
在使用SGX的一种常规方法中,在围圈(enclave)(围圈程序)中执行的TA或TA的一部分充当中继节点,以访问外部数据源。例如,围圈程序可以将查询请求(例如,HTTPS请求)发送到基于互联网的数据源,并且可以将响应提供给发起请求的智能合约。在一些示例中,提供了隐私字段功能,该功能可以用于使用围圈的公钥对敏感信息(例如,访问凭证)进行加密。在一些示例中,中继节点使用围圈的私钥对隐私字段进行解密、调用HTTPS客户端以访问基于互联网的目标数据源、接收请求的数据并使用私钥对返回的数据进行数字签名。在数字签名后,数据将被返回到发起请求的智能合约。
然而,这种常规方法具有缺点。直接对隐私字段进行加密的示例性缺点是具有隐私字段密文的请求不具有完整性保护。例如,用户在请求中携带加密的API密钥字段,以请求基于互联网的数据源的所有授权信息。攻击者可以拦截该通信。尽管攻击者无法直接解密出API密钥信息的明文,但是攻击者可以修改该请求以使用相同的隐私字段来构建用于访问信息的请求,并将其发送到中继节点。这可能导致敏感信息(例如凭据)泄漏。
鉴于以上背景,本文的实施例涉及使用中继系统和TEE来查询外部数据源(例如,基于互联网的数据源)。更具体地,如本文中进一步详细描述的,本文的实施例提供了授权请求完整性检查,同时保护了敏感信息(例如,凭证)。以这种方式,如本文中进一步详细描述的,本文的实施例解决了常规方法的缺点,诸如防止用户权限泄漏。
图3是示出根据本文的实施例的系统300的示例的图示。如图所示,系统300包括区块链302、中继系统控制器308、中继系统节点310、认证服务312和网络314(例如,互联网)。在所描绘的示例中,区块链302包括客户端智能合约304和中继系统智能合约306。通常,中继系统智能合约306、中继系统控制器308和中继系统节点310提供中继系统,该中继系统使得在区块链302外部的数据能够被检索并在区块链302内使用。
在一些实施例中,中继系统节点310使用TEE技术(例如,英特尔SGX)来实现。通常,认证服务312为客户端智能合约304验证中继系统节点310的合法性。认证服务的示例包括如上所述的IAS。如本文所述,中继系统智能合约306、中继系统控制器308和中继系统节点310一起作为中继系统操作,从而将来自客户端智能合约304的数据或请求中继到网络314(例如,可通过网络314访问的外部数据源),并将数据或请求结果从网络314中继到客户端智能合约304。
客户端智能合约304是作为请求来自网络314的数据或服务的请求者操作的智能合约。在一些实施例中,客户端智能合约304的线下所有者,例如客户端或用户(未示出),可以向客户端智能合约304发送数据或请求或在客户端智能合约304处生成数据或服务请求。数据或请求可以是数据报元素。客户端智能合约304可通信地耦接到中继系统合约306。例如,客户端智能合约304可以向中继系统智能合约306发送请求,并从中继系统智能合约306接收请求结果。
如上所述,中继系统智能合约306、中继系统控制器308和中继系统节点310一起作为中继系统操作,从而将数据或请求从客户端智能合约304中继到网络314,以及将数据或请求结果从网络314中继到客户端智能合约304。中继系统智能合约306是充当中继系统内的区块链302前端的智能合约。中继系统智能合约306包括至客户端智能合约304的应用程序接口(API)或用作客户端智能合约304的应用程序接口(API),用于处理来自客户端智能合约304的请求并将其中继到中继系统的其他组件(例如,中继系统控制器308),以及用于处理来自中继系统控制器308的请求结果并将其中继到客户端智能合约304。在一些实施例中,中继系统智能合约306在将请求结果中继到客户端智能合约304之前验证与请求结果相关联的签名。简而言之,中继系统智能合约306是在区块链302与位于区块链302外部的中继系统组件(例如,中继系统控制器308)之间提供接口的智能合约。中继系统智能合约306接受来自在区块链302内执行的组件(例如,客户端智能合约304)的请求,并返回相应的响应。
中继系统控制器308包括任何合适的计算机、处理器、模块或计算元件,以将请求从中继系统智能合约306中继到中继系统节点310,以及将请求结果从中继系统节点310中继到中继系统智能合约306。这样,由于中继系统智能合约306不直接连接到网络314,因此中继系统控制器308作为监视中继系统智能合约306的状态的监视实体来操作。
中继系统控制器308还将指示中继系统节点310的合法性的认证证据320从中继系统节点310中继到认证服务312。在一些实施例中,认证证据320包括中继系统节点310的测量值322和中继系统节点310的签名326。中继系统节点310的测量值322可以包括中继系统节点310的初始状态的哈希值。包括在认证证据320中的中继系统节点310的签名326可以包括使用中继系统节点310的认证密钥来签名的中继系统节点310的测量值322。
在一些实施例中,中继系统节点310的认证密钥包括增强的隐私标识(EPID)私钥。EPID是英特尔(Intel)提供的一种用于认证可信系统同时保护隐私的算法。通常,网络的每个成员(例如,计算机或服务器)都分配有用于对认证证据进行签名的EPID私钥,并且网络中认证证据的验证者存储与网络的其他成员的EPID私钥配对的EPID公钥。每个成员都可以使用其自己的EPID私钥生成认证证据的签名,验证者可以使用EPID公钥来验证其他成员的签名。这样,EPID密钥可用于证明例如计算机或服务器的设备是真实设备。
认证证据320还可包括由中继系统节点310生成的公钥324。如果认证证据320包括由中继系统节点310生成的公钥324,则中继系统节点310的签名326包括测量值322和使用中继系统节点310的认证密钥签名的公钥324。
中继系统节点310包括任何合适的服务器、计算机、模块或计算元件,以提取并满足来自区块链302的请求。例如,中继系统节点310可以接收并处理来自客户端的链下服务请求,并查询网络314中的外部数据源,例如,启用HTTPS的互联网服务。在处理来自客户端或客户端智能合约304的请求之前,中继系统节点310可以生成认证证据320,并且将认证证据320发送给认证服务312,用于验证中继系统节点310的合法性。在一些实施例中,中继系统节点310生成包括公钥324和私钥的密钥对,并将公钥324包括在认证证据320中。公钥324可以由中继系统控制器308进一步中继到中继系统智能合约306,以用于中继系统智能合约306和中继系统节点310之间的未来通信。例如,中继系统节点310可以使用私钥来对请求结果进行签名,并且中继系统智能合约306可以使用公钥324来验证签名的请求结果。
认证服务312包括任何合适的服务器、计算机、模块或计算元件,以验证由中继系统控制器308从中继系统节点310转发的认证证据320的合法性。如上所述,认证证据320包括中继系统节点310的测量值322、中继系统节点310的签名326和/或由中继系统节点310生成的公钥324。在接收到认证证据320时,认证服务312验证认证证据320中的中继系统节点310的签名326,并生成认证验证报告(AVR)330。
认证服务312使用认证服务312的认证密钥来验证认证证据320中的签名326。在一些实施例中,认证服务312的认证密钥包括与中继系统节点310用来对认证证据320进行签名的EPID私钥配对的EPID公钥。在验证认证证据320中的签名之后,认证服务312生成AVR330,该AVR330包括认证证据320、指示认证证据320中的签名326是否有效的验证结果334以及认证服务312的签名336。
在一些实施例中,AVR 330包括不包括中继系统节点310的签名326的认证证据320。例如,AVR 330可以包括中继系统节点310的测量值322、由中继系统节点310生成的公钥324、验证结果334以及认证服务312的签名336。在一些实施例中,认证服务312的签名336包括使用认证服务312的报告签名密钥(例如,认证服务312用来对认证验证报告进行签名的私钥)进行签名的认证证据320和验证结果334。注意到报告签名密钥可以与认证服务312的认证密钥不同。
图4描绘了根据本文的实施例的信号流400的示例。信号流400表示认证验证处理。为方便起见,该处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的分布式系统(例如,图1的区块链系统100;图3的系统300)可以执行该处理。
通常,在操作中,中继系统控制器308从中继系统节点310接收认证证据,并且将认证证据发送到认证服务312以验证认证证据。中继系统控制器308基于对认证证据中的中继系统节点310的签名的验证,从认证服务312接收指示中继系统节点310的合法性的AVR。中继系统控制器308进一步将包括认证服务312的签名的AVR中继到中继系统智能合约306。
在图4的示例中,中继系统控制器308向中继系统节点310发送(410)认证请求(例如,质询)。认证请求被发送到中继系统节点310,以请求指示中继系统节点310的合法性或有效性的认证证据。在一些实施例中,认证证据包括中继系统节点310的测量值和中继系统节点310的签名。中继系统节点310的测量值可以包括中继系统节点310的初始状态的哈希值。例如,中继系统节点310的测量值可以包括在中继系统节点310上实现的处理代码的哈希值。
在一些实施例中,在将认证请求发送到中继系统节点310之前,中继系统控制器308获得中继系统节点310的测量值,并将该测量值发送到中继系统智能合约306以供将来使用。例如,中继系统智能合约306可以存储中继系统节点310的测量值,并将所存储的测量值与中继系统控制器308将从认证服务312转发到中继系统智能合约306的AVR中的测量值进行比较。
响应于该认证请求,中继系统节点310生成(412)认证证据。如上所述,认证证据指示中继系统节点310的合法性或有效性,并且可以包括中继系统节点310的测量值和中继系统节点310的签名。在一些实施例中,认证证据还包括由中继系统节点310生成的公钥。例如,中继系统节点310可以使用预定的密钥生成算法,例如Rivest-Shamir-Adleman(RSA)算法,生成包括私钥和公钥的随机加密密钥对。在一些示例中,公钥是在将被发送至中继系统智能合约306的认证证据中提供的,并可以用于中继系统智能合约306与中继系统节点310之间的未来通信。例如,中继系统节点310可以使用私钥来对请求结果进行签名,并且中继系统智能合约306可以使用公钥来验证签名的请求结果。
在一些实施例中,中继系统节点310的测量值包括中继系统节点310的初始状态的哈希值。认证证据中的中继系统节点310的签名包括使用中继系统节点310的认证密钥进行签名的由中继系统节点310生成的公钥和测量值。在一些实施例中,中继系统节点310的认证密钥包括EPID私钥。验证者可以使用与EPID私钥配对的EPID公钥来验证使用EPID私钥签名的认证证据,以证明生成认证证据的设备的真实性。
中继系统节点310将认证证据发送(414)到中继系统控制器308。发送到中继系统控制器308的认证证据可以包括中继系统节点310的测量值、由中继系统节点310生成的公钥以及中继系统节点310的签名,中继系统节点310的签名包括使用中继系统节点310的EPID私钥签名的侧量值和公钥。
中继系统控制器308将从中继系统节点310发送的认证证据转发(416)到认证服务312。在一些实施例中,中继系统控制器308将认证验证请求发送至认证服务312。认证验证请求包括从中继系统节点310发送的认证证据以及一些补充信息,例如指示中继系统节点310是否使用SGX平台服务的描述符。
响应于接收到由中继系统控制器308转发的认证证据,认证服务312验证(418)认证证据。如所指出的,认证证据包括中继系统节点310的测量值、由中继系统节点310生成的公钥以及中继系统节点310的签名。认证服务312可以通过使用认证服务312的认证密钥来验证认证证据中的中继系统节点310的签名来验证认证证据。例如,认证服务312可以使用认证验证服务器的EPID公钥来验证中继系统节点310的签名,该EPID公钥与中继系统节点310用来对认证证据进行签名的EPID私钥配对。
如果认证服务312确定认证证据中的中继系统节点310的签名是有效的,则认证服务312可以确定中继系统节点310是真实或合法的设备。如果认证服务312确定认证证据中的中继系统节点310的签名无效,则认证服务312可以确定中继系统节点310是不真实或非法设备,并且拒绝来自中继系统节点310的任何后续数据和请求。
认证服务312基于对认证证据的验证来生成(420)AVR。在一些实施例中,AVR可以包括中继系统节点310的认证证据、认证验证结果以及认证服务312的数字签名。在一些实施例中,AVR可以包括不包括中继系统节点310的签名的中继系统节点310的认证证据。例如,AVR可以包括中继系统节点310的测量值322、由中继系统节点310生成的公钥324、认证验证结果以及认证服务312的签名。
AVR中的认证验证结果指示中继系统节点310的签名是否有效。例如,认证验证结果可以包括指示中继系统节点310的签名有效的值“valid”或“OK”,或指示签名无效的值“invalid”。
在一些实施例中,认证服务312的签名包括使用报告签名密钥进行签名的认证证据和认证验证结果。报告签名密钥可以是认证服务312用来对AVR进行签名的私钥。在一些实施例中,报告签名密钥由认证服务312使用预定的密钥生成算法来生成。例如,可以使用RSA安全散列算法(SHA)256生成报告签名密钥。注意到报告签名密钥与认证服务312用来验证认证证据的认证密钥(例如,EPID公钥)不同。
在一些实施例中,认证服务312将AVR发送(422)到中继系统控制器308。如上所述,AVR包括对中继系统节点310的身份的验证的加密签名报告,并且可以包括中继系统节点310的认证证据、认证验证结果以及认证服务312的数字签名。
在一些实施例中,在从认证服务312接收到AVR之后,中继系统控制器308将AVR转发(424)到中继系统智能合约306。中继系统智能合约306验证(426)AVR。例如,中继系统智能合约306可以验证AVR中的认证服务312的签名。在一些实施例中,中继系统智能合约306使用报告签名证书来验证认证服务312的签名。报告签名证书可以是X.509数字证书。报告签名证书可以包括由认证服务312生成并且与认证服务312用来对AVR进行签名的报告签名密钥配对的公钥。如果中继系统智能合约306验证AVR中的认证服务312的签名有效,则中继系统智能合约306确定该AVR确实是由认证服务312发送的。如果中继系统智能合约306确定AVR中认证服务312的签名无效,则中继系统智能合约306确定认证验证报告不是真实的,并将拒绝该AVR。中继系统智能合约306可以进一步检查AVR中的认证验证结果,以确定中继系统节点310的认证证据是否有效。在一些实施例中,中继系统智能合约306进一步将认证证据中的测量值与预先存储在中继系统智能合约306中的测量值进行比较,以确定认证证据是否有效。
响应于确定AVR是真实的并且中继系统节点310的认证证据有效,中继系统智能合约306将中继系统节点310注册(428)为有效或合法设备。中继系统智能合约306可以进一步存储包括在服务中的认证证据中并且由中继系统节点310生成的公钥。公钥将被中继系统智能合约306用于中继系统智能合约306与中继系统节点310之间的未来通信。
图5描绘了根据本文的实施例的信号流500的示例。信号流500表示根据本公开的实施例的用于验证发送到外部数据源的请求的处理。为方便起见,该处理将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的分布式系统(例如,图1的区块链系统100;图3的系统300)可以执行该处理。
通常,在操作中,用户502生成将通过客户端智能合约304、中继系统智能合约306和中继系统控制器308被中继到中继系统节点310的请求。中继系统节点310在将请求发送到基于互联网的数据源504之前验证请求。
更详细地,用户502生成(510)针对来自基于互联网的数据源504的数据或服务的请求。例如,该请求可以是针对用户502的账户的访问请求。访问请求可以包括例如网址的明文部分和例如用户502的账户凭据(例如,用户名、密码)的机密数据部分。可以对访问请求中的机密数据部分进行加密,使得网络上的恶意行为者不能获得用户账户的个人信息来渗透用户账户。然而,机密数据部分尽管仍被加密,但是仍可以由恶意行为者获得,并与例如第二网址的不同的明文部分组合。例如,第二网址可以位于第一网址的同一域下,并且加密的机密数据部分可以用于访问第二网址上的用户502的个人数据(例如,如果用户502在第二网址上使用与第一网址相同的用户名和密码,这样的攻击将是成功的)。
如本文所述,本文的实施例通过提高请求的完整性来减少这种攻击。在一些实施例中,为了提高请求的完整性和个人数据的安全性,由用户502生成的请求包括明文数据元素、以及机密数据元素和明文数据元素的哈希值的加密组合。例如,用户502可以使用计算设备(例如,用户502用来与区块链网络接口的计算设备)计算出明文数据元素的哈希值并且将该哈希值级联(concatenate)到机密数据元素。用户502可以进一步使用由中继系统节点310生成并发送给用户502的公钥来对级联的哈希值和机密数据元素进行加密。例如:
R→[P,PKRSN(C||H)]
其中,
R是由用户的计算设备向区块链网络发出的请求;
P是明文部分(例如,要查询的数据源的URL);
PKRSN是查询数据源的中继系统节点的公钥;
C是用于访问数据源的机密信息(例如,凭证);
H是明文部分P的哈希值;以及
||表示C和H的级联,该级联使用PKRSN来进行加密。
哈希值和机密数据元素的加密级联可以由中继系统节点310使用与公钥配对的私钥来解密。
在一些实施例中,用户502使用公钥分别对哈希值和机密数据元素进行加密。例如,用户502可以使用公钥对哈希值进行加密,并且可以使用公钥对机密数据元素进行加密。用户502组合(例如,级联)加密的哈希值和加密的机密数据元素。例如:
R→[P,(PKRSN(C)||PKRSN(H))]
其中,
R是由用户的计算设备向区块链网络发出的请求;
P是明文部分(例如,要查询的数据源的URL);
PKRSN是查询数据源的中继系统节点的公钥;
C是用于访问数据源的机密信息(例如,凭证);
H是明文部分P的哈希值;以及
||表示加密的C和加密的H的级联,该加密的C和该加密的H各自使用PKRSN来进行加密。
级联的加密的哈希值和加密的机密数据元素可以由中继系统节点310使用与公钥配对的私钥来解密。
用户502将请求发送(512)到客户端智能合约304。例如,用户502可以将请求提交给区块链302,并且区块链302将请求分配给与用户502相关联的客户端智能合约304。在从用户502接收到请求之后,客户端智能合约304将请求转发(514)到中继系统智能合约306。在从客户端智能合约304接收到请求之后,中继系统智能合约306将请求转发(516)到中继系统控制器308。在从中继系统智能合约306接收到请求之后,中继系统控制器308将请求转发(518)到中继系统节点310。
在一些实施例中,中继系统节点310使用中继系统节点310的私钥从请求中获得(520)机密数据元素和明文数据元素的哈希值。如上所述,请求包括明文数据元素、以及使用中继系统节点310的公钥加密的机密数据元素和明文数据元素的哈希值的组合。中继系统节点310存储与用户502用来对请求中的明文数据元素的哈希值和机密数据元素进行加密的公钥配对的私钥。中继系统节点310可以使用私钥来解密哈希值和机密数据元素的加密组合以获得明文数据元素的哈希值和机密数据元素。
中继系统节点310计算(522)请求中的明文数据元素的哈希值。例如,中继系统节点310可以获得请求中的明文数据元素,并且将预定的哈希函数应用于明文数据元素以计算明文数据元素的哈希值。中继系统节点310将在522确定的明文数据元素的哈希值与在520获得的明文数据元素的哈希值进行比较(524)。中继系统节点310确定两个哈希值是否匹配。如果哈希值匹配,则中继系统节点310确定请求中的明文数据元素未被篡改。如果两个哈希值不匹配,则中继系统节点310可以确定明文数据元素已被篡改(例如,被恶意行为者篡改)。
中继系统节点310基于在524执行的两个哈希值的比较来验证(526)该请求是否真实。例如,如果在522处确定的明文数据元素的哈希值与在520处获得的明文数据元素的哈希值匹配,则中继系统节点310确定该请求是完整的(例如,未被篡改)。如果两个哈希值不匹配,则中继系统节点310确定该请求已被篡改,或者是不完整的。如果中继系统节点310确定请求是不完整的,则中继系统节点310可以拒绝该请求,并且不会查询基于互联网的数据源504。
在一些实施例中,响应于确定该请求是完整的,中继系统节点310将该请求发送(528)到基于互联网的数据源504以获得请求结果。在一些实施例中,中继系统节点310构建包括明文数据元素和机密数据元素的新请求,并使用新请求来查询基于互联网的数据源504。例如,新请求可以包括:包括用户502要访问账户的网址的明文数据元素;以及包括用户502的用于登录账户的凭证(例如,用户名和密码)的机密数据元素。在一些示例中,基于互联网的数据源504处理(530)该请求,并将请求结果返回(532)到中继系统节点310。
中继系统节点310对从基于互联网的数据源504接收到的请求结果进行签名(534),并且将签名的请求结果发送(536)到中继系统控制器308。例如,中继系统节点310可以生成签名,该签名包括使用中继系统节点310的私钥签名的请求结果。中继系统节点310用于对请求结果进行签名的私钥与中继系统节点310先前用于对请求中的加密机密数据元素和明文数据元素的哈希值进行解密的私钥相同。中继系统节点310可以将签名与请求结果组合(例如,级联),并将它们发送到中继系统控制器308。在一些实施例中,中继系统节点310计算请求结果的哈希值,并使用中继系统节点310的私钥对该哈希值进行签名。中继系统节点310将请求结果与请求结果的签名的哈希值组合。以这种方式,中继系统智能合约306可以通过使用其公钥提取请求结果的哈希值、计算请求结果的哈希值并确定两个哈希值是否匹配来验证请求结果,如本文所述。
中继系统控制器308将签名的请求结果转发(538)到中继系统智能合约306。中继系统智能合约306在从中继系统控制器308接收到签名的请求结果之后,验证(540)该签名的请求结果。在一些实施例中,中继系统智能合约306通过使用其公钥验证签名的请求结果中包括的签名来验证签名的请求。例如,如果签名的请求结果包括请求结果和请求结果的经签名的哈希值,则中继系统智能合约306可以使用其公钥获得请求结果的哈希值、计算请求结果的哈希值并确定两个哈希值是否匹配。如果两个哈希值匹配,则中继系统智能合约306确定请求结果有效。如果两个哈希值不匹配,则中继系统智能合约306确定请求结果无效,并且可以拒绝该请求结果。
中继系统智能合约306在验证从中继系统控制器308接收到的签名的请求结果之后,将请求结果发送(542)到客户端智能合约304。例如,如果中继系统智能合约306确定签名的请求结果中的中继系统节点310的签名有效,则中继系统智能合约306将请求结果发送至客户端智能合约304。在从中继系统智能合约306接收到请求结果之后,客户端智能合约304将请求结果提供(544)给用户502。
图6是示出了可根据本文的实施例执行的处理600的示例的流程图。在一些实施例中,示例性处理600可使用一个或多个计算机可执行程序来执行,所述一个或多个计算机可执行程序使用一个或多个计算设备来执行。在一些示例中,示例性处理600可以由中继系统执行,以用于检索区块链网络(例如,图3的中继系统智能合约306、中继系统控制器308和中继系统节点310)外部的数据。
接收请求(602)。例如,图3的中继系统节点310接收源自图3的用户设备502的请求。在一些示例中,如本文所述,用户设备502生成包括第一部分和第二部分的请求,第一部分包括明文数据,而第二部分包括加密数据,加密数据包括访问数据和第一哈希值,第一哈希值作为明文数据的哈希值是使用中继系统节点310的公钥而生成的。客户端智能合约304、中继系统智能合约306和中继系统控制器308将请求转发到中继系统节点。
确定明文(604)。例如,中继系统节点310使用其私钥对加密的数据进行解密以确定第一哈希值(作为明文)。计算哈希值(606)。例如,中继系统节点310处理第一部分的明文数据以提供第二哈希值。确定请求是否有效(608)。例如,中继系统节点310比较第一哈希值和第二哈希值。如果第一哈希值与第二哈希值相同,则该请求有效。即,确定请求的完整性是完整的。如果第一哈希值与第二哈希值不同,则该请求无效。即,确定请求的完整性已经受到损害。如果该请求无效,则指示错误(610),并且示例性处理600结束。
如果该请求有效,则将查询发送到数据源(612)。例如,中继系统节点310构建查询(例如,新请求),该查询包括其已接收到的请求(例如,原始请求)的明文数据元素和机密数据元素。例如,新请求可以包括:包括用户502要访问账户的网址的明文数据元素;以及包括用户502的用于登录账户的凭证(例如,用户名和密码)的机密数据元素。中继系统节点310使用该查询来查询基于互联网的数据源504。
从数据源接收结果(614)。在一些示例中,基于互联网的数据源504处理该请求,并将请求结果(例如,数据值)返回到中继系统节点310。准备响应(616),并且发送响应(618)。例如,中继系统节点310可以生成签名,该签名包括使用中继系统节点310的私钥签名的请求结果。中继系统节点310使用对请求结果进行签名的私钥与中继系统节点310先前用来对原始请求中的加密数据进行解密的私钥相同。中继系统节点310可以将签名与请求结果组合(例如,级联),并将它们发送到中继系统控制器308。在一些实施例中,中继系统节点310计算请求结果的哈希值,并使用私钥对该哈希值进行签名。中继系统节点310将请求结果与请求结果的签名的哈希值组合。
计算哈希值(620)。例如,中继系统智能合约306基于请求结果来计算哈希值(例如,数据值)。确定响应是否有效(622)。例如,中继系统智能合约使用公钥获得请求结果的哈希值,并确定该哈希值是否与计算出的哈希值匹配。如果两个哈希值匹配,则中继系统智能合约306确定请求结果有效。如果两个哈希值不匹配,则中继系统智能合约306确定请求结果无效,并且可以拒绝该请求结果。如果该请求无效,则指示错误(624),并且示例过程600结束。如果请求有效,则请求结果的完整性是完整的,并且将请求结果提供给用户502以进行进一步处理。
图7是示出根据本文的实施例的装置700的模块示例的图示。装置700可以是在区块链网络内执行的中继系统智能合约的示例性实施例。在一些示例中,中继系统智能合约向区块链网络外部的中继系统的一个或多个组件发布请求并从其接收响应,并且查询位于区块链网络外部的数据源。
设备700可以对应于上述实施例,并且设备700包括以下:接收模块702,其接收针对来自数据源的数据的请求,该请求包括第一部分和第二部分,第一部分包括明文数据,而第二部分包括加密数据,加密数据包括访问数据和第一哈希值,该第一哈希值是由提交请求的用户计算设备生成为明文数据的哈希值;发送模块704,将请求发送至区块链网络外部的至少一个中继系统组件;接收模块706,其从至少一个中继系统组件接收结果,该结果包括结果数据和第二哈希值,结果数据是使用访问数据检索的,第二哈希值基于结果数据生成并使用中继系统组件的私钥进行数字签名;验证模块708,其基于至少一个中继系统组件的公钥、结果的数字签名和第二哈希值来验证结果的完整性。响应于验证了结果的完整性,发送模块704将结果发送至用户计算设备。
在先前实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。
对于装置中每个模块的功能和作用的实施例处理,可以参考前一方法中相应步骤的实施例处理。为简单起见,这里省略了细节。
由于装置实施例基本上对应于方法实施例,对于相关部分,可以参考方法实施例中的相关描述。先前描述的装置实施例仅是示例。被描述为单独部分的模块可以是或不是物理上分离的,并且显示为模块的部分可以是或不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域的普通技术人员无需付出创造性劳动就能理解和实现本申请的实施例。
再次参见图7,它可以被解释为示出了数据检索装置的内部功能模块和结构。数据检索装置可以是执行中继系统智能合约的区块链节点的示例。执行主体本质上可以是电子设备,并且该电子设备包括以下:一个或多个处理器;以及被配置为存储一个或多个处理器的可执行指令的一个或多个计算机可读存储器。在一些实施例中,一个或多个计算机可读存储器耦接至一个或多个处理器且其上存储有编程指令,所述编程指令能够由所述一个或多个处理器执行以执行如本文中所述的算法、方法、函数、处理、流程和程序。
本文中描述的技术产生一种或多种技术效果。例如,本文的实施例确保了提交给中继系统节点以查询区块链网络外部的数据源的请求的完整性。作为另一示例,本文的实施例确保了从外部数据源提供回区块链网络的响应的完整性。因此,本公开的实施例提高了区块链网络与用于检索区块链网络外部的数据的中继系统的组件之间的通信的完整性。通过这种方式,可以减少恶意用户潜在的攻击渠道,从而提高安全性。
作为另一示例,本文的中继系统有助于避免用户与中继系统节点之间的直接接触,从而避免暴露中继系统节点的位置或接入点。这样,恶意行动者不太可能使用例如分布式拒绝服务(DDoS)攻击的任何形式在网络上发现并攻击中继系统节点。这提高了中继系统节点的安全性,从而进一步提高了区块链网络与中继系统节点之间的通信的安全性。
所描述的主题的实施例可以包括单独或组合的一个或多个特征。响应于接收到请求,中继系统组件使用私钥对加密的数据进行解密以提供第一哈希值,基于包括在请求中的明文数据计算哈希值,以及将第一哈希值与该哈希值进行比较,以验证明文数据不存在任何更改;响应于验证请求,中继系统组件向数据源发送查询请求;至少一个中继系统组件包括中继系统节点,该中继系统节点接收来自中继系统控制器的请求;明文数据包括数据源的统一资源定位符(URL);至少一个中继系统组件执行可信执行环境(TEE),并且中继系统组件的私钥和公钥是在TEE的认证处理期间提供的;中继系统控制器通过中继系统节点和认证服务执行认证处理;以及数据源包括基于互联网的数据源。
本文中描述的主题、动作以及操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施例可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括一个或多个计算机可读存储介质,其上编码或存储有指令。载体可以是有形的非暂态计算机可读介质,诸如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM),只读存储器(ROM)或其他类型的介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或可以部分是可机读存储设备、可机读存储基板、随机或串行访问存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或演绎性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由通信数据网络互联的在一个或多个位置的一台或多台计算机。
计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。
用于执行计算机程序的处理器包括:例如,通用和专用微处理器两者,和任意种类的数字计算机的任意一个或多个处理器。通常,处理器将接收用于执行的计算机程序的指令以及来自耦接至处理器的非暂态计算机可读介质的数据。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中一个或多个的组合的代码。
本文中描述的处理和逻辑流程可由一台或多台计算机或处理器执行一个或多个计算机程序进行,以进行通过对输入数据进行运算并生成输出的操作。处理和逻辑流程也可以由例如FPGA、ASIC、GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
通常,计算机还将包括或可操作地耦接至一个或多个存储设备,以从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如,磁盘、磁光盘或光盘、固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机不需要这样的设备。因此,计算机可以耦接至诸如一个或多个存储器的、本地的和/或远程的一个或多个存储设备。例如,计算机可以包括作为计算机集成组件的一个或多个本地存储器,或者计算机可以耦接至处于云网络中的一个或多个远程存储器。此外,计算机可嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,这里仅举几例。
组件可以通过例如直接地或通过一个或多个中间组件彼此电连接或光学连接通信地彼此“耦接”。如果其中一个组件集成到另一个组件中,组件也可以彼此“耦接”。例如,集成到处理器(例如,L2缓存组件)中的存储组件“耦接到”处理器。
为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面以响应从web浏览器收到的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)轮流发送文本消息或其他形式的消息,并接收来自用户的响应消息来与用户交互。
本说明书使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
虽然本文包含许多具体实施例细节,但是这些不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文多个单独实施例的上下文中描述的多个特定特征也可以在单个实施例中的组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且可以要求保护指向子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在一些情况下,多任务并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品或者打包成多个软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。
Claims (9)
1.一种计算机实现的用于从位于区块链网络外部的数据源检索数据的方法,所述方法包括:
由在所述区块链网络内执行的中继系统智能合约接收针对所述数据源的数据的请求,所述请求包括第一部分和第二部分,所述第一部分包括明文数据,所述第二部分包括加密数据,所述加密数据包括访问数据和第一哈希值,所述第一哈希值作为所述明文数据的哈希值是由提交所述请求的用户计算设备生成的;
由所述中继系统智能合约将所述请求发送至位于所述区块链网络外部的中继系统组件,以使所述中继系统组件使用所述中继系统组件的私钥对所述加密数据进行解密,以提供所述第一哈希值,并基于包括在所述请求中的所述明文数据计算所述明文数据的哈希值,以及将所述第一哈希值与计算得到的所述明文数据的哈希值进行比较,以验证所述明文数据没有任何更改;
由所述中继系统智能合约从所述中继系统组件接收结果,所述结果包括结果数据和第二哈希值,所述结果数据是使用所述访问数据检索的,所述第二哈希值是基于所述结果数据生成并被使用所述中继系统组件的私钥数字签名;
由所述中继系统智能合约基于所述中继系统组件的公钥从所述结果中获得所述第二哈希值,并计算所述结果数据的哈希值,以及确定所述第二哈希值与计算得到的所述结果数据的哈希值是否匹配,以验证所述结果的完整性;以及
响应于验证了所述结果的完整性,将所述结果发送至所述用户计算设备。
2.如权利要求1所述的方法,其中,响应于验证所述请求,所述中继系统组件将查询请求发送至所述数据源。
3.如权利要求1所述的方法,其中,所述中继系统组件包括中继系统节点,所述中继系统节点接收来自中继系统控制器的所述请求。
4.如权利要求1所述的方法,其中,所述明文数据包括所述数据源的统一资源定位符URL。
5.如权利要求3所述的方法,其中,
所述中继系统组件执行可信执行环境TEE,并且
所述中继系统组件的所述私钥和所述公钥是在所述TEE的认证处理期间提供的。
6.如权利要求5所述的方法,其中,所述中继系统控制器与所述中继系统节点和认证服务执行所述认证处理。
7.如前述任一项权利要求所述的方法,其中,所述数据源包括基于互联网的数据源。
8.一种用于从位于区块链网络外部的数据源检索数据的装置,所述装置包括用于执行权利要求1至7中任一项所述的方法的多个模块。
9.一种用于从位于区块链网络外部的数据源检索数据的系统,包括:
一个或多个处理器;以及
耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至7中任一项所述的方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| WOPCT/CN2019/079800 | 2019-03-27 | ||
| WOPCT/CN2019/080478 | 2019-03-29 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK40027501A HK40027501A (zh) | 2021-01-22 |
| HK40027501B true HK40027501B (zh) | 2024-08-16 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11449641B2 (en) | Integrity of communications between blockchain networks and external data sources | |
| US11323271B2 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
| EP3610624B1 (en) | Retrieving access data for blockchain networks using highly available trusted execution environments | |
| AU2019204708A1 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
| HK40027501B (zh) | 提高区块链网络与外部数据源之间的通信的完整性 | |
| HK40028139B (zh) | 提高区块链网络与外部数据源之间的通信的完整性 | |
| HK40028139A (zh) | 提高区块链网络与外部数据源之间的通信的完整性 | |
| HK40027501A (zh) | 提高区块链网络与外部数据源之间的通信的完整性 |