针对可信执行环境的分布式密钥管理的制作方法

文档序号:20608257发布日期:2020-05-01 22:18阅读:326来源:国知局
针对可信执行环境的分布式密钥管理的制作方法

本文涉及可信执行环境。



背景技术:

分布式账本系统(dls),也可以被称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,dls通常被称为区块链网络。一种类型的区块链网络的示例可以包括为选择的一组实体提供的联盟区块链网络,其控制共识处理,并且联盟区块链网络包括访问控制层。

可信执行环境(tee)是微处理器的隔离且安全的区域,其保证在微处理器内执行或存储的软件指令和数据未被破坏或改变。在tee内执行的应用程序由可信机构(例如,微处理器的制造商)验证,并在验证时发布加密密钥以允许应用程序与其他节点和可信应用程序之间的通信。这些加密密钥可以由集中式密钥管理系统(kms)发布,该系统有利于用可信机构(也被称为“认证”)验证应用程序。

集中式kms的一个潜在问题是引入单点故障。集中式kms中断可以防止tee中执行的应用程序被验证直到该中断被解决为止。此外,攻击者可以通过获得对集中式kms的控制来整体危害系统。因此需要一种起kms作用的安全的分布式系统。



技术实现要素:

本文描述了用于实现包括一组密钥管理(km)节点的分布式密钥管理系统的技术。km节点各自在tee内执行密钥管理应用程序,并且每个km节点基于相互认证逻辑与一个或多个其他km节点执行相互认证处理,以建立连接集合中的所有km节点的信任关系。一旦建立了该信任,km节点就可以达成共识以将加密密钥分配给一个或多个服务tee,以便在可信环境中安全地执行一个或多个智能合约操作。

本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。

本文还提供了用于实施本文提供的所述方法的系统。所述系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将导致所述一个或多个处理器按照本文提供的方法的实施例执行操作。

应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。

以下在附图和描述中阐述了本文的一个或多个实施例的细节。根据说明书和附图以及权利要求书,本文的其他特征和优点将显现。

附图说明

图1是示出可以用于执行本文的实施例的环境的示例的图。

图2是示出根据本文的实施例的架构的示例的图。

图3是示出根据本文的实施例的系统的示例的图。

图4是示出根据本文的实施方案的系统的示例的图。

图5描绘了可以根据本文的实施例执行的处理的示例。

图6描绘了根据本文的实施例的装置的模块的示例。

图7是示出根据本文的实施例的相互认证逻辑的示例的图。

图8是示出根据本文的实施例的另一相互认证逻辑的示例的图。

各附图中相同的附图标记和名称表示相同的元件。

具体实施方式

本文描述了用于实现包括一组密钥管理(km)节点的分布式密钥管理系统的技术。km节点各自在tee内执行密钥管理应用程序,并且每个km节点基于相互认证逻辑与一个或多个其他km节点执行相互认证处理,以建立连接集合中的所有km节点的信任关系。一旦建立了该信任,km节点就可以达成共识以将加密密钥分配给一个或多个服务tee,以便在可信环境中安全地执行一个或多个智能合约操作。

为了提供对于本文实施例的进一步的背景,并且如上所述,分布式账本系统(dls),又可以被称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易并存储数据。尽管术语区块链通常与特定网络和/或用例相关联,但是本文使用区块链来一般地指代dls而不涉及任何特定用例。

区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographichash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并被编入默克尔(merkle)树中。merkle树是一种数据结构,在该树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处连接。此处理沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在树中的交易的哈希值可以通过确定其是否与树的结构一致而被快速验证。

区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可以作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。本文中参考联盟区块链网络进一步详细描述了本文的实施例。然而,可以预期,本文的实施例可以在任何适当类型的区块链网络中实现。

通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识处理由经授权的一组节点控制,所述节点可以被称为共识节点,一个或多个共识节点由各自的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。

在一些示例中,在联盟区块链网络内,提供作为跨所有节点复制的区块链的全局区块链。也就是说,所有共识节点处于相对于全局区块链共识的完好状态。为了达成共识(例如,同意向区块链添加区块),在联盟区块链网络内实施共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(pbft)共识,下面将进一步详细描述。

图1是示出了可以用于执行本文的实施例的环境100的示例的图。在一些示例中,示例性环境100使实体能够参与到联盟区块链网络102中。示例性环境100包括计算设备106,108以及网络110。在一些示例中,网络110包括局域网(lan)、广域网(wan)、因特网或其组合,并且连接网络站点、用户设备(例如,计算设备)和后台系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络110。

在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算系统。示例性计算设备包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备以及智能电话。在一些示例中,计算系统106、108承载一个或多个由计算机实施的服务,用于与联盟区块链网络102进行交互。例如,计算系统106可以承载第一实体(例如,用户a)的计算机实施的服务,例如,第一实体使用其管理与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算系统108可以承载第二实体(例如,用户b)的计算机实施的服务,例如,第二实体使用其管理与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图1的示例中,联盟区块链网络102被表示为节点的点对点网络(peer-to-peernetwork),并且计算系统106、108分别提供参与联盟区块链网络102的第一实体和第二实体的节点。

图2描绘了根据本文实施例的概念架构200的示例。所述概念架构200包括实体层202、托管服务层204和区块链网络层206。在所描绘的示例中,实体层202包括三个参与者,参与者a、参与者b和参与者c,每个参与者具有各自的交易管理系统208。

在所描绘的示例中,托管服务层204包括用于每个交易管理系统210的接口210。在一些示例中,各自的交易管理系统208使用协议(例如,超文本传输协议安全(https))通过网络(例如,图1的网络110)与相应的接口210通信。在一些示例中,每个接口210提供在各自的交易管理系统208与区块链网络层206之间的通信连接。更具体地,接口210与区块链网络层206的区块链网络212通信。在一些示例中,使用远程过程调用(rpc)进行接口210与区块链网络层206之间的通信。在一些示例中,接口210“承载”用于各自的交易管理系统208的区块链网络节点。例如,接口210提供用于访问区块链网络212的应用程序编程接口(api)。

如本文所述,提供作为对等网络的区块链网络212,所述区块链网络212包括在区块链216中不可篡改地记录信息的多个节点214。尽管示意性地描绘了单个区块链216,但是提供了区块链216的多个副本,并且跨区块链网络212维护区块链216的多个副本。例如,每个节点214存储区块链的副本。在一些实施例中,区块链216存储与在参与联盟区块链网络的两个或更多个实体之间执行的交易相关联的信息。

区块链(例如,图2的区块链216)由一系列区块的链组成,每个区块存储数据。示例性数据包括表示两个或更多个参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以被存储在区块链中(例如,文档、图像、视频、音频)。示例性交易可以包括但不限于有价物的交换(例如,资产、产品、服务、货币)。交易数据被不可篡改地存储在区块链中。也就是说,交易数据不能改变。

在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度哈希值(也作为字符串数据提供)的处理。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理确保即使交易数据轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括但不限于输出256位哈希值的安全哈希算法(sha)-256。

多个交易的交易数据被哈希处理并存储在区块中。例如,提供两个交易的哈希值,并对它们本身进行哈希处理以提供另一个哈希值。重复此处理,直到针对所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为merkle根哈希值,并存储在区块的头中。任何交易中的更改都会导致其哈希值发生变化,并最终导致merkle根哈希值发生变化。

通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并执行将区块添加到区块链中的操作。这种节点被称为共识节点。如上介绍的pbft用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。

进一步详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(merkle根哈希值)为止。将此哈希值添加到区块头中。共识节点还确定区块链中最近的区块(即,添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)和时间戳。

通常,pbft提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而在pbft中实现。在pbft中,以包括主共识节点和备共识节点的序列提供共识节点。定期更改主共识节点。通过区块链网络内的共识节点就区块链网络的世界状态达成一致来将交易被添加到区块链。在此处理中,在共识节点之间传输消息,并且每个共识节点证明从指定的对等节点接收消息,并验证在传输期间所述消息未被修改。

在pbft中,在多个阶段提供共识协议,所有共识节点以同一状态开始。首先,客户端向主共识节点发送请求以调用服务操作(例如,在区块链网络内执行交易)。响应于接收所述请求,主共识节点将所述请求多播到备共识节点。所述备共识节点执行所述请求,并且每个备共识节点都向客户端发送回复。客户端等待直到收到阈值数量的回复。在一些示例中,客户端等待接收f+1个回复,其中f是区块链网络内可以容忍的故障共识节点的最大数量。最终结果是,足够数量的共识节点对于要添加到区块链的记录的顺序达成一致,并且所述记录被接受或拒绝。

在一些区块链网络中,用密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能看出交易的细节,则这两个节点可以对交易数据进行加密处理。示例性密码学包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密处理。在对称加密中,同一密钥可用于多个节点,因此每个节点都可以对交易数据进行加密/解密。

非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且该加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者a可以使用参与者b的公钥来加密数据,并将加密数据发送给参与者b。参与者b可以使用其私钥来解密该加密数据(密文)并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。

非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以基于参与者a的该数字签名来确认该消息是由该节点发送的。数字签名也可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者a将向参与者b发送消息。参与者a生成该消息的哈希值,然后使用其私钥加密该哈希值以提供作为加密哈希值的数字签名。参与者a将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者b。参与者b使用参与者a的公钥解密该数字签名,并提取哈希值。参与者b对该消息进行哈希处理并比较哈希值。如果哈希值相同,则参与者b可以确认该消息确实来自参与者a,且未被篡改。

在一些实施例中,区块链网络的节点和/或与区块链网络通信的节点可以使用tee进行操作。在高级别,tee是与硬件(一个或多个处理器、存储器)的操作环境(例如,操作系统(os)、基本输入/输出系统(bios))隔离的该硬件内的可信环境。更详细地,tee是处理器的单独的安全区域,其确保在主处理器内执行的代码以及在主处理器内加载的数据的机密性和完整性。在处理器内,tee与os并行运行。至少部分所谓的可信应用程序(ta)在tee内执行,并且可以访问处理器和存储器。通过tee,ta免受主os中运行的其他应用程序的影响。此外,tee将ta在tee内加密地彼此隔离。

tee的示例包括由美国加利福尼亚州圣克拉拉的英特尔公司提供的软件保护扩展(sgx)。尽管本文通过示例讨论了sgx,但是可以预期本文的实施例可以使用任何适当的tee来实现。

sgx提供基于硬件的tee。在sgx中,可信硬件是中央处理单元(cpu)的核心,并且物理存储器的一部分被隔离以保护选择的代码和数据。存储器的隔离部分被称为飞地(enclave)。更具体地,飞地被提供作为存储器中的飞地页面高速缓存(epc)并被映射到应用程序地址空间。存储器(例如,dram)包括用于sgx的保留随机存储器(prm)。prm是最低bios级别的连续存储空间,并且不能被任何软件访问。每个epc是由os分配以在prm中加载应用数据和代码的存储器集(例如,4kb)。epc元数据(epcm)是各个epc的入口地址,并确保每个epc只能由一个飞地共享。也就是说,单个飞地可以使用多个epc,而epc专用于单个飞地。

在执行ta期间,处理器在访问存储在飞地中的数据时以所谓的飞地模式操作。在飞地模式下的操作对每个存储访问强制执行额外的硬件检查。在sgx中,ta被编译为可信部分和不可信部分。例如os、bios、特权系统代码、虚拟机管理器(vmm)、系统管理模式(smm)等不可访问可信部分。在操作中,ta运行并创建存储器的prm内的飞地。由飞地内的可信部分执行的可信函数由不可信部分调用,并且在飞地内执行的代码将数据视为明文数据(未加密),并且对数据的外部访问被拒绝。可信部分提供对调用的加密响应,并且ta继续执行。

可以执行认证处理以验证预期代码(例如,ta的可信部分)在经认证的tee内被安全地执行。通常,认证处理包括tee从质询者(例如,区块链网络的密钥管理系统(kms))接收认证请求。作为响应,tee可以生成用于执行远程认证的引文。执行远程认证包括从飞地发送到所谓的引证飞地的本地认证,其验证本地认证并通过使用非对称认证密钥对本地认证进行签名将本地认证转换为远程认证。所述引文被提供给质询者(例如,区块链网络的kms)。

质询者使用认证验证服务来验证远程认证。对于sgx,英特尔提供英特尔认证服务(ias),该服务从质询者接收远程认证,并验证该远程认证。更具体地,ias处理远程认证,并提供指示远程认证是否被验证的报告(例如,认证验证报告(avr))。如果没有被验证,则可以指示错误。如果被验证(预期代码正在tee中安全执行),则质询者可以开始或继续与tee交互。例如,响应于该验证,kms(作为质询者)可以向执行tee的节点发出非对称加密密钥(例如,公钥和私钥对)(例如,通过密钥交换处理,例如椭圆曲线diffie-hellman(ecdh))以使节点能够与其他节点和/或客户端安全地通信。

相互认证处理涉及执行第一tee的节点进行执行第二tee的节点的远程认证,之后执行第二tee的节点进行执行第一tee的节点的远程认证。一旦两个节点已经彼此验证,节点就可以执行密钥交换处理以便实现它们之间的安全通信。

在一些区块链网络中,可以执行所谓的智能合约。智能合约可以被描述为具有影响各方的合约条款的现实世界法律合约的数字表示。在示例性背景中,在联盟区块链网络内实施、存储、更新(根据需要)并执行智能合约。与智能合约相关联的合约方(例如,买方和卖方)被表示为联盟区块链网络中的节点。在一些示例中,合约方可以包括与智能合约相关联(例如,作为智能合约的当事方)的实体(例如,商业企业)。

更详细地,智能合约被提供作为区块链(例如,区块链网络内的节点)上执行的计算机可执行的程序。智能合约包含一组预定义规则,根据所述规则,所述智能合约的各方同意彼此交互。如果满足智能合约的预定义规则,则智能合约中定义的协议将被自动执行。智能合约通常具有防篡改功能,并且促进、验证和强制施行协议或交易的协商或执行。

图3是示出根据本文的实施例的系统300的示例的图。如图所示,系统300包括区块链网络302,区块链网络302包括区块链节点304a-d。区块链节点304a-d包括服务tee306a-d和密钥管理(km)tee308a-d。节点304a-d访问智能合约服务逻辑330。密钥管理中心310可通信地耦接到节点304a-d。

节点304a-d中的每个是参与区块链网络302并且有助于维护与区块链网络302(未示出)相关联的区块链的区块链节点。如上所述,节点304a-d可以参与与区块链网络302相关联的共识处理,可以将交易收集到区块中以添加到区块链,可以处理区块链网络302的用户请求的交易,可以执行智能合约中编码的操作,并执行与区块链的管理相关的其他任务。在一些实施例中,每个节点可以是包括一个或多个处理器、存储设备和其他组件的计算设备(例如,服务器)。在一些情况下,节点304a-d通过通信网络(未示出)彼此通信并且与参与区块链网络302的其他节点通信。对于图3的其余描述,节点304a将作为示例被描述,应理解节点304b-d还可以包括节点304a的特征。

节点304a包括服务tee306a。在一些实施例中,服务tee306a是使用tee技术(例如,英特尔sgx)实现的安全应用环境。服务tee306a可以执行一个或多个软件程序或库。出于本文的目的,服务tee306a指的是安全环境(tee)以及在进行所述操作的tee内执行的软件。在一些实施例中,服务tee306a执行由加密的客户端请求指定的智能合约操作,并输出与智能合约操作相关联的加密结果。以下参考图4更详细地描述了该功能。

节点304a还包括密钥管理tee(kmtee)308a。在一些实施例中,kmtee308a是使用tee技术(例如,英特尔sgx)实现的安全应用环境。kmtee308a可以执行一个或多个软件程序或库。出于本文的目的,kmtee308a指的是安全环境(tee)以及在进行所描述的操作的tee内执行的软件。在一些实施例中,kmtee308a从密钥管理中心310获得加密密钥,如以下参考图4更详细描述的。

密钥管理中心310可以生成、存储并维护加密密钥。密钥管理中心310还可以认证kmtee308a-d的身份,并通过远程认证和密钥部署处理320向节点304a-d提供加密密钥。在一些实施例中,密钥管理可以进一步向客户端提供加密密钥以与节点304a-d交互。以下相对于图4更详细地描述了该功能。在一些实施例中,密钥管理中心310可以是通过通信网络(未示出)与区块链网络302的一个或多个节点通信的一个或多个服务器或其他计算设备。密钥管理中心310还可以包括耦接到密钥管理中心310或可通过通信网络访问的一个或多个存储设备,用于存储加密密钥和其他数据。

在一些情况下,密钥管理中心310操作以在进行加密密钥部署之前认证kmtee308a-d的身份。例如,在将一个或多个加密密钥(下面描述)提供给kmtee308a之前,密钥管理中心310可以验证kmtee308a的真实性。该验证确保kmtee308a执行的软件在被供应之后未被篡改。在一些实施例中,验证可以包括远程认证处理320,诸如如上所描述的。

在kmtee308a-d从密钥管理中心310获得一个或多个加密密钥之后,密钥可以被转发到服务tee306a-d以执行密码操作。在一些情况下,尽管kmtee和服务tee对(例如,kmtee308a和服务tee306a)在单个节点(例如,节点304a)上操作,但它们每个都具有它们自己的独立tee。结果,在kmtee308a-d和服务tee306a-d之间通信的信息通过不可信区域被发送。在这种情况下,kmtee308a-d可以例如通过进行本地认证处理来认证服务tee306a-d的身份。

本地认证可以允许飞地在同一本地平台内向另一飞地认证其身份或真实性。例如,kmtee308a可以发送质询以验证服务tee306a的真实性。在接收质询时,服务tee306a可以请求节点304a的硬件(例如,cpu)生成报告,该报告包括服务tee306a存在于节点304a上的加密证据。报告可以被提供给kmtee308a以验证飞地报告是由节点304a在同一平台上生成的。在一些情况下,可以基于对称密钥系统来进行本地认证,其中仅验证报告的kmtee308a和生成报告的飞地硬件知道对称密钥,所述对称密钥被嵌入在节点304a的硬件平台中。

在通过本地认证对服务tee306a-d进行认证之后,kmtee308a-d可以将一个或多个加密密钥提供给服务tee306a-d。在一些情况下,kmtee308a-d可以响应于服务tee306a-d的认证提供加密密钥,或者可以响应于服务tee306a-d的一个或多个请求提供密钥。

代替将密钥管理中心310信任为部署加密密钥的中央机构,本文还提供由kmtee308a-d实现的去中心化密钥管理方案。kmtee308a-d可以建立信任关系并达成共识以向各自的服务tee306a-d提供加密密钥。

在高级别,去中心化密钥管理方案可以包括相互认证(ma)阶段和共识阶段。在ma阶段,kmtee308a-d中的每个可以充当证明者和质询者二者,以在区块链网络302中与一个或多个其他kmtee进行ma。可以基于ma逻辑来进行ma,以建立区块链网络302中的kmtee之间的信任关系。用于建立信任关系的ma逻辑可以具有不同的逻辑结构。在图7和图8的描述中进一步详细讨论了两个示例ma逻辑。

在kmtee308a-d之间建立信任关系之后,去中心化密钥管理方案可以进入共识阶段。在共识阶段,kmtee308a-d可以生成并彼此共享加密密钥,并对哪些加密密钥要被部署到服务tee306a-d达成共识。可以基于进行适合于联盟区块链的共识处理(例如先前描述的pbft)来达成共识。可以基于通过本地认证对各自的服务tee306a-d进行认证来加密密钥部署。

在一些实施例中,kmtee308a-d可以共同管理密钥管理中心310。在这种情况下,加密密钥仍然可以由密钥管理中心310生成,并在成功远程认证之后被提供给kmtee308a-d。然而,可以通过kmtee304a-d之间的共识处理确定哪些加密密钥要部署到kmtee308a-d或服务tee306a-d中的哪一个。

在一些实施例中,kmtee308a-d可以通过共识处理选择kmtee308a-d中的一个或多个充当密钥管理中心310,以生成并维护加密密钥,并将加密密钥部署到可信tee。

参考图7,图7是示出根据本文的实施例的ma逻辑700的示例的图。如前所述,在高等级,相互认证处理涉及执行第一tee的节点进行执行第二tee的节点的远程认证,之后执行第二tee的节点进行执行第一tee的节点的远程认证。一旦两个节点已经彼此验证,节点就可以执行密钥交换处理以便实现它们之间的安全通信。

例如,在kmtee308a和kmtee308b之间使用相互认证处理,在相互认证处理期间,kmtee308a首先执行kmtee308b的远程认证。在远程认证处理期间,kmtee308a和kmtee308b都可以使用诸如西格玛协议之类的密钥生成协议来导出共享密钥。然后kmtee308a可以生成随机数,计算其自己以及kmtee308b的sgx报告的哈希值,然后将它们发送到kmtee308b。然后,kmtee308b可以进行kmtee308a的远程认证并验证哈希报告的签名。如果验证成功,则可以确认kmtee308b正在与正确的kmtee308a通信。然后kmtee308b生成会话密钥,并将随机数和会话密钥发送回kmtee308a。

然后kmtee308a可以进行所接收的随机数与最初发送的随机数的匹配。如果它们匹配,则可以确认kmtee308a与正确的kmtee308b通信。因此,ma成功进行。然后,kmtee308a可以通过使用会话密钥安全地与kmtee308b通信以进行数据加密。可以类似地进行其他kmtee之间的ma。

在ma逻辑700下,kmtee308a-d中的任一个与两个其他kmtee308a-d进行ma以形成闭环认证“环”。在一些情况下,kmtee可以选择地理上接近或具有高通信效率的两个kmtee来进行ma,只要kmtee308a-d的总ma在闭环中进行即可。

在图7所示的示例中,kmtee308a在与kmtee308b的ma中行使质询者和证明者,kmtee308b在与kmtee308c的ma中行使质询者和证明者,kmtee308c在与kmtee308d的ma中行使质询者和证明者,kmtee308d在与kmtee308a的ma中行使质询者和证明者。由于进行ma以形成涉及所有kmtee308a-d的闭环,因此连续地认证每个kmtee的身份并且在kmtee308a-d之间形成信任关系。

图8是示出根据本文的实施例的另一ma逻辑800的示例的图。在ma逻辑800的示例中,ma以循环方式进行。换句话说,每个kmtee与区块链网络中的每个其他kmtee进行一次ma。例如,除了在图7的描述中讨论的ma逻辑700下进行ma之外,kmtee308a在与kmtee308c的ma中行使质询者和证明者,并且kmtee308b在与kmtee308d的ma中行使质询者和证明者。

由于区块链网络中的任何两个kmtee的身份是相互认证的,因此ma逻辑800可以比ma逻辑700更安全。另一方面,由于在ma逻辑700下进行的ma较少,因此ma逻辑700在认证速度和资源消耗方面可以更有效率。ma逻辑800可以更适合于具有较少数量的共识节点或较高安全性要求的区块链网络。ma逻辑700可以更适合于具有较多数量的共识节点或较低安全性要求的区块链网络。

返回参考图3,智能合约服务逻辑330包括一个或多个智能合约定义。节点304a-304d从智能合约服务逻辑330执行特定操作(例如,根据客户端的请求,如图4所示)。在一些实施例中,智能合约服务逻辑330中的智能合约定义包括由区块链网络302的节点执行的指令。智能合约服务逻辑330可以包括由区块链网络302(未示出)维护的一个或多个区块链中存储的智能合约定义。

图4是示出根据本文的实施例的系统400的示例的图。如图所示,系统400包括节点304a(包括服务tee306a和kmtee308a)以及相对于图3描述的密钥管理中心310。系统400还包括通信地耦接到密钥管理中心310的客户端480。

在操作中,系统400可以安全地执行智能合约指令并产生加密的操作结果(例如,包括在区块链中)。如上所述,密钥管理中心310可以在用加密密钥信任之前进行远程认证以认证kmtee308a的身份。在kmtee308被认证之后,密钥管理中心310可以向节点304a的kmtee308a提供解封私钥402、根密钥404和签名私钥406。密钥管理中心310还承载密封公钥414和验证公钥416。密钥管理中心310将这些密钥提供给授权客户端,以对与服务tee306a相关联的各种数据进行加密和解密,如下所述。

如图所示,密钥管理中心310将密封公钥414提供给客户端480。在一些情况下,密钥管理中心310认证客户端480,并且仅在客户端480被授权访问它时才提供密封公钥414。密钥管理中心310可以查询内部或外部许可资源以做出该确定。密封公钥414与提供给kmtee308a的解封私钥402相关联。密封公钥414和解封私钥402形成密钥对,意味着可以使用解封私钥402对用密封公钥414加密的数据进行解密。

客户端480识别所请求的合约操作450,其是由部署在服务tee306a中的以太坊虚拟机(vm)460执行的智能合约操作。在一些情况下,智能合约操作450包括以智能合约编程语言编码的一个或多个指令,用于由可操作为执行该语言的指令的vm执行。智能合约操作450可以包括针对与请求合同操作450相关联的智能合约的执行状态。在执行智能合约期间,区块链网络的多个节点单独执行智能合约的每个指令,并且在完成所述指令之后产生指示所述智能合约的执行状态的结果。执行状态可以包括与智能合约相关联的数据。所述合约的每个执行的指令可以改变数据的内容(例如,存储将由智能合约中的后续指令使用的值)。在执行智能合约的指令之后,区块链网络的节点在执行指令后对新执行状态达成共识。对于在智能合约中执行的每个指令进行该共识处理,从而就智能合约的执行路径以及最终的执行的最终结果达成共识。

在452处,客户端480将所请求的合约操作450编码(或密封)在数字信封454中,以便传输到由节点304a执行的服务tee306a。例如,客户端480生成临时对称密钥408并使用密钥408对所请求的合约操作450进行加密。然后,客户端480使用密封公钥414对临时对称密钥408进行加密,并且连接加密的合约操作450和加密密钥408以产生数字信封454。

客户端480将数字信封454发送到节点304a,在节点304a将数字信封454提供给服务tee306a。在一些情况下,客户端480可以将数字信封454发送到多个节点304a-d以请求处理所请求的合约操作450。在一些情况下,客户端480可以发送使用对于特定节点具体的密封公钥创建的数字信封。在相同的密封公钥414和解封私钥402与所有节点304a-d相关联的情况下,客户端480还可以将数字信封454广播到节点304a-d。

服务tee306a从客户端480接收数字信封454,并从数字信封454恢复所请求的合约操作450。如图所示,服务tee306a使用从kmtee308a获得的解封私钥402对数字信封454进行解码。在一些情况下,服务tee306a使用解封私钥402对临时对称密钥408解密(解封)(在456处),然后使用临时对称密钥408对所请求的合约操作450进行解密(在458处)。

然后,服务tee306a使用服务tee306a中部署的vm460执行所请求的合约操作450。在一些实施例中,vm460可以是被配置为执行智能合约编程语言的指令的vm(例如以太坊vm或其他类型的vm)。在一些情况下,vm460可以在操作450的执行期间访问服务tee306a外部的资源,例如,外部服务器、区块链、数据库或由操作450指示的其他资源。在一些实施例中,可以限制或拒绝访问外部资源,使得操作的整体执行仅取决于服务tee306a中存储的数据(例如智能合约状态)。这种类型的限制可以进一步降低篡改操作450的执行的可能性。

由vm460执行操作450可以产生一个或多个结果。在一些情况下,所述结果可以包括在执行操作450之后智能合约的执行状态,如上所述。在462处,智能合约操作450的结果由服务tee306a使用合约密钥412进行加密。基于密钥导出函数(kdf)从根密钥404导出合约密钥412(在410处)。在一些示例中,可以基于诸如基于hmac的提取-扩展密钥导出函数(hkdf)或伪随机函数(prf)的迭代哈希算法进行kdf。合约密钥可以由kmtee308a提供给服务tee306a。在一些实施例中,根密钥404可以是与节点304a相关联的对称加密密钥。根密钥404还可以包括可以从根密钥404导出的一个或多个子密钥。合约密钥412可以是这些子密钥之一。在一些情况下,在462处根密钥404本身可以用于对结果进行加密。

在对结果进行加密之后,在464处,服务tee308a使用由kmtee308a提供给服务tee306a的签名私钥406对加密结果进行签名,以便产生签名结果466。这可以允许第三方(例如,客户端)稍后使用由密钥管理中心310维护的验证公钥416(与签名私钥406相应地配对)来验证签名结果。在一些情况下,由签名私钥406对加密结果进行签名可以包括对加密结果连同用于对所述结果加密的合约密钥412一起进行加密。在这种情况下,持有验证公钥416的第三方可以首先对合约密钥412进行解密,并进一步使用合约密钥412对所述结果进行解密。

在一些情况下,服务tee306a可以将签名结果466存储在区块链中。如上所述,持有验证公钥416的第三方可以使用密钥来对结果466进行解密以便进行检验。例如,客户端480可以从密钥管理中心310检索验证公钥416(例如,如前所述经过认证),并且可以使用验证公钥416访问签名结果466并对签名结果466进行解密。然后,客户端480可以请求服务tee306a执行智能合约中的下一操作,可以将所请求的下一操作以及智能合约的执行状态(来自解密的签名结果466)包括在发送到服务tee306a的数字信封中。

图5描绘了可以根据本文的实施例执行的处理的示例。在502处,参与区块链网络(例如,302)的区块链节点(例如,304a)基于与多个kmtee进行相互认证,建立与多个km节点中的多个kmtee的信任关系,其中km节点和多个km节点处于联盟区块链中。

在504处,区块链节点发起与多个kmtee的共识处理,以针对向km节点的服务tee提供一个或多个加密密钥达成共识。

在506处,区块链节点发起与km节点中的服务tee有关的本地认证处理。

在508处,区块链节点确定本地认证处理是成功的。

在510处,区块链节点向在计算设备上执行的tee提供一个或多个加密密钥。

在一些情况下,区块链节点将所述加密密钥存储在联盟区块链中,其中所述联盟区块链中存储的加密密钥表示所述联盟区块链中的所有节点能够访问的加密密钥的共识版本。

在一些情况下,kmtee是第一kmtee,并且建立所述信任关系包括第一kmtee与多个kmtee中的第二kmtee和第三tee进行相互认证处理。

在一些情况下,所述kmtee和所述多个kmtee形成联盟区块链的kmtee组,并且建立所述信任关系还包括多个kmtee中的任一个进行与所述kmtee组中的两个进行相互认证处理。

在一些情况下,建立所述信任关系还包括kmtee与多个kmtee中的每个进行相互认证。

在一些情况下,响应于所述kmtee和所述多个kmtee成功地进行了关于加密密钥的共识处理,将所述加密密钥存储在联盟区块链中。

在某些情况下,共识处理是实用拜占庭容错(pbft)处理。

在某些情况下,kmtee是第一kmtee,加密密钥包括与服务tee相关联的tee公钥和tee私钥,第一kmtee或第二kmtee响应于请求从联盟区块链检索tee公钥并向客户端提供tee公钥。

图6描绘了根据本文的实施例的装置600的模块的示例。装置600可以是在区块链网络内执行的区块链节点的示例实施例。装置600可以对应于上述实施例,并且装置600包括以下:建立模块602,其基于与多个kmtee进行相互认证来建立与多个km节点中的多个kmtee的信任关系,其中,km节点和多个km节点处于联盟区块链中。发起模块604,其发起与多个kmtee的共识处理,以针对向km节点的服务tee提供一个或多个加密密钥达成共识,并发起与km节点中的服务tee有关的本地认证处理。确定模块606,其确定本地认证处理是成功的;以及传输模块608,其为计算设备上执行的tee提供一个或多个加密密钥。

在先前实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或这些设备的任意组合。

对于装置中每个模块的功能和角色的实施例处理,可以参考前一方法中相应步骤的实施例处理。为简单起见,这里省略了细节。

由于装置实施例基本上对应于方法实施例,对于相关部分,可以参考方法实施例中的相关描述。先前描述的装置实施例仅是示例。被描述为单独部分的模块可以是或不是物理上分离的,并且显示为模块的部分可以是或不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域普通技术人员无需付出创造性劳动就能理解和实现本申请的实施例。

再次参考图6,它可以被解释为示出在区块链网络内执行并且用作执行主体的区块链节点的内部功能模块和结构。本质上,执行主体可以是电子设备,电子设备包括下面:一个或多个处理器;被配置为存储一个或多个处理器的可执行指令的存储器。

本文中描述的技术产生一种或多种技术效果。在一些实施例中,所描述的技术使得多个节点能够起分布式密钥管理中心(kmc)的作用,以便利用加密密钥在其他计算设备上授权并配置可信执行环境。在一些情况下,密钥被存储在区块链中,允许多个节点中的任一个服务于从其他计算设备接收的用于加密密钥的请求,即使所请求的密钥由与接收该请求的节点不同的节点配置和存储。在一些示例中,该技术还提供针对系统中断的附加操作弹性,因为多个节点之一的故障不会导致密钥管理服务中断(与中心化解决方案不同)。在一些实施例中,因为由于与将加密密钥存储在区块链中相关联的共识处理,攻击者将要控制所有密钥管理节点以便危害系统,所以这些技术可以提供增强的安全性。

所描述的主题的实施例可以包括单独或组合的一个或多个特征。一个实施例包括计算机实现的方法,所述方法包括以下动作:参与区块链网络的区块链节点从客户端接收用于执行智能合约操作的加密请求;由区块链节点承载的tee中的区块链节点对具有与tee相关联的第一私钥的加密请求进行解密,以产生所请求的智能合约操作,其中所述第一私钥对应于与tee相关联的用于加密所述加密请求的公钥;由tee中的区块链节点执行所请求的智能合约操作以产生智能合约结果;由tee中的区块链节点使用与tee相关联的对称密钥对智能合同结果进行加密,以产生加密结果;由tee中的区块链节点使用与tee关联的第二私钥对加密结果进行签名,以生成签名加密结果,其中所述第二私钥不同于所述第一私钥;并且由区块链节点将签名加密结果存储在由区块链网络维护的区块链中。

前述和其他描述的实施例可以各自可选地包括以下特征中的一个或多个:

第一特征,可与任何以下特征组合,指定区块链节点将加密密钥存储在联盟区块链中,其中联盟区块链中存储的加密密钥表示联盟区块链中所有节点可访问的加密密钥的共识版本。

第二特征,可与前述或以下任何特征组合,指定kmtee是第一kmtee,并且建立信任关系包括第一kmtee与多个kmtee中的第二kmtee和第三tee进行相互认证处理。

第三特征,可与前述或以下任何特征组合,包括kmtee和多个kmtee形成联盟区块链的一组kmtee,并且建立信任关系还包括多个kmtee中的任一个与所述一组kmtee中的两个进行相互认证处理。

第四特征,可与前述或以下任何特征组合,指定建立信任关系还包括kmtee与多个kmtee中的每个进行相互认证。

第五特征,可与前述或以下任何特征组合,指定响应于所述kmtee和多个kmtee成功地进行了与加密密钥有关的共识处理,将所述加密密钥存储在联盟区块链中。

第六特征,可与前述或以下任何特征组合,指定所述共识处理是实用拜占庭容错(pbft)处理。

第七个特征,可与前述或以下任何特征组合,指定,所述kmtee是第一kmtee,加密密钥包括与服务tee相关联的tee公钥和tee私钥,并且第一kmtee或第二kmtee响应于请求从联盟区块链中检索tee公钥并向客户端提供tee公钥。

本文中描述的主题、动作以及操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本文中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施例可以被实现为一个或多个计算机程序,例如,计算机程序指令的一个或多个模块,被编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括具有编码或存储在其上的指令的一个或多个计算机可读存储介质。所述载体可以是有形的非暂态计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(ram)、只读存储器(rom)或其他类型介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。

计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或演绎性语言、说明或程序性语言;它可以被配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可以包括由通信数据网络互联的在一个或多个位置的一台或多台计算机。

计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以被存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件中;或者多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的多个文件。

用于执行计算机程序的处理器包括,例如,通用微处理器和专用微处理器两者,以及任意种类数码计算机的任意一个或多个处理器。通常,处理器将从耦接到所述处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。

术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。

本文中描述的处理和逻辑流程可以由一台或多台计算机或处理器执行一个或多个计算机程序来进行,以进行通过对输入数据进行运算并生成输出的操作。处理和逻辑流程也可以由例如fpga、asic、gpu等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。

适合于执行计算机程序的计算机可以基于通用微处理器和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理器将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。

通常,计算机还将包括或可操作地耦接为从一个或多个大容量存储设备接收数据或者向一个或多个大容量存储设备传输数据。存储设备可以是例如磁盘、磁光盘或光盘,固态驱动器或任何其他类型的非暂态计算机可读介质。但是,计算机不需要具有这样的设备。因此,计算机可以耦接到本地和/或远程的一个或多个存储设备,例如一个或多个存储器。例如,计算机可以包括作为计算机的组成部分的一个或多个本地存储器,或者计算机可以耦接到云网络中的一个或多个远程存储器。此外,计算机可以被嵌入在另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。

组件可以通过彼此通信地例如电连接或光学连接直接地或经由一个或多个中间组件彼此“耦接”。如果组件中的一个组件被集成到另一个组件中,组件也可以彼此“耦接”。例如,集成到处理器中的存储组件(例如,l2高速缓存组件)即“耦接到”处理器。

为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,lcd(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户设备上的web浏览器收到的请求而向该web浏览器发送web页面,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用程序的智能手机)发送文本消息或其他形式的消息并作为回应接收来自用户的响应消息来与用户交互。

本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。

虽然本文包括许多具体实施细节,但是这些不应被解释为由权利要求书本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文多个单独实施例的上下文中描述的多个特征也可以在单个实施例中的组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初被如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且权利要求书可以指向子组合或子组合的变体。

类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求书中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在一些情况下,多任务并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以一起被集成在单个软件产品中或者被打包成多个软件产品。

已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的处理无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务并行处理可能是有利的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1