选择用于密码功能的证明委托并使其安全的制作方法

文档序号:20922416发布日期:2020-05-29 14:19阅读:238来源:国知局
选择用于密码功能的证明委托并使其安全的制作方法



背景技术:

区块链系统已被提出用于各种应用场景,包括金融行业、医疗保健、iot等中的应用。例如,开发了比特币系统以允许电子现金在无需经过金融机构的情况下从一方被直接转移到另一方。比特币(例如,电子币)由将所有权从一方转移到另一方的事务链表示。为了转移比特币的所有权,可以生成新事务并将其添加到区块中的事务堆栈中。包括新所有方的公钥的新事务可以由所有方用所有方的私钥进行数字签名,以将所有权转移给由新所有方的公钥来表示的新所有方。

一旦区块被填满,就可以用区块报头“封闭”该区块,该区块报头是该区块内的所有事务标识符的哈希摘要。区块报头可以被记录为链中的下一区块中的第一事务,从而创建被称为“区块链”的数学层级。为了核实当前所有方,可以遵循事务的区块链来核实从第一事务到最后事务的每个事务。新的所有方仅需要具有与转移比特币的事务的公钥相匹配的私钥。区块链可以在由安全身份(例如,公钥)所表示的实体中创建所有权的数学证明,其在比特币系统的情况下是伪匿名的。



技术实现要素:

提供本发明内容以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

简要而言,所公开的技术总体上涉及用于智能合约的密码功能。在本技术的一个示例中,对密码资源的请求被接收。在一些示例中,对密码资源的请求包括绑定身份(id)。在一些示例中,响应于对密码资源的请求,密码资源从多个密码资源池中的至少一个密码资源池中被获取。在一些示例中,多个密码资源池中的单独密码资源池是单独类型的密码资源的池。在一些示例中,对于每个所获取的密码资源,确定哪种类型的证明委托代码是适合的。在一些示例中,对于每个所获取的密码资源,所确定的类型的证明委托代码被注入所获取的密码资源中。

在阅读和理解附图和描述之后,将理解所公开技术的其他方面和应用。

附图说明

参考以下附图描述本公开的非限制性和非穷举性示例。在附图中,除非另外指明,否则贯穿各个附图,相同的附图标记指代相同的部分。这些附图不一定按比例绘制。

为了更好地理解本公开,将参考以下结合附图来阅读的具体实施方式,在附图中:

图1是图示了可以在其中采用本技术的各方面的合适环境的一个示例的框图;

图2是图示了根据所公开技术的各方面的合适计算设备的一个示例的框图;

图3是图示了系统的示例的框图;

图4是图示了图3的系统的示例的框图;

图5是图示了图4的系统的子集的示例的框图;

图6是用于过程的示例数据流;以及

图7是根据本公开的各方面的用于另一过程的示例数据流。

具体实施方式

以下描述提供了特定细节,以用于透彻理解本技术的各种示例并实现对其的描述。本领域技术人员将理解,可以在没有许多这些细节的情况下实践该技术。在一些实例中,没有详细示出或描述众所周知的结构和功能,以避免不必要地模糊该技术的示例的描述。本公开中所使用的术语意图以其最广泛的合理方式来进行解释——即使其是在与该技术的某些示例的详细描述结合使用。尽管下面可能会强调某些术语,但是旨在以任何受限方式被解释的任何术语都将在本具体实施方式部分中被明确公开定义。在整个说明书和权利要求书中,除非上下文另外指出,否则以下术语至少具有本文明确关联的含义。下面标识的含义不一定限制这些术语,而仅提供针对这些术语的说明性示例。例如,术语“基于”和“鉴于”中的每一个都不是排他的,并且相当于术语“至少部分地基于”,并且包括基于附加因素的选项,其中一些可能在本文中未被描述。作为另一示例,术语“经由”不是排他的,并且相当于术语“至少部分地经由”,并且包括经由附加因素的选项,其中一些可能在本文中未被描述。“在...中”的含义包括“在...中”和“在...上”。尽管在本文中使用的短语“在一个实施例中”或“在一个示例中”不一定指相同的实施例或示例,但是其也可以指相同的实施例或示例。使用特定的文本数字标记并不意味着存在值较小的数字标记。例如,引用“从由第三foo和第四bar组成的群组中选择的小部件”本身并不意味着存在至少三个foo元素,也不意味着存在至少四个bar元素。单数形式的引用仅是为了阅读的清楚,并且包括复数引用,除非特别地排除了复数引用。除非另外明确指出,否则术语“或”是包含性的“或”运算符。例如,短语“a或b”表示“a、b、或a和b”。如本文中所使用的,术语“组件”和“系统”旨在涵盖硬件、软件、或硬件和软件的各种组合。因此,例如,系统或组件可以是过程,在计算设备上执行的过程、该计算设备或其一部分。

简要而言,所公开的技术总体上涉及用于智能合约的密码功能。在本技术的一个示例中,对密码资源的请求被接收。在一些示例中,对密码资源的请求包括绑定身份(id)。在一些示例中,响应于对密码资源的请求,密码资源从多个密码资源池中的至少一个密码资源池中被获取。在一些示例中,多个密码资源池中的单独密码资源池是单独类型的密码资源的池。在一些示例中,对于每个所获取的密码资源,确定哪种类型的证明委托代码是适合的。在一些示例中,对于每个所获取的密码资源,所确定的类型的证明委托代码被注入所获取的密码资源中。

在一些示例中,小密码(cryptlet)是可以在安全环境中执行并且可以使用安全通道与之通信的代码组件。小密码的一种应用是智能合约。在一些示例中,智能合约是部分或完全执行并且部分或完全强制实施诸如货币和/或财产的交换的协定或事务的计算机代码,并且其可以利用区块链技术。在一些示例中,不是在区块链本身中运行智能合约的逻辑,而是可以改为通过在区块链之外执行的小密码来完成逻辑。在一些示例中,区块链仍可以某种方式涉及其中,诸如在跟踪状态以及接收小密码的输出时。

小密码代码中的一些或所有可以与在安全环境中执行的约束相关联。因此,一些小密码代码可以在包围区(enclave)中运行。在一些示例中,包围区是由硬件或软件提供的执行环境,其是私有的、防篡改的、并且是安全而免受外部干扰的。在一些示例中,至少由主机包围区所存储的包围区密钥对中的主机包围区的私有包围区密钥对来自小密码代码的输出进行签名。可以例如利用包围区和小密码的公钥来证实输出来自区块链的带外。在一些示例中,可以池化(pooling)用于由小密码使用的包围区。基于运行应用的安全计算需求,包围区的池化可以允许例如在运行时按需供应包围区。

包围区是小密码可能需要的密码资源的一个示例。小密码可能需要其他和/或附加密码资源,诸如被配置为执行特定密码功能的现场可编程门阵列(fpga)、被配置为执行特定密码功能的专用集成电路(asic)、和/或可以包括被组合在一起以执行特定密码功能的两个或更多个密码资源的复合资源。就像可以池化用于由小密码使用的包围区一样,在一些示例中,可以池化其他密码资源,其中每种类型的密码资源都具有单独的池。基于运行应用的安全计算需求,密码资源的池化可以允许例如在运行时按需供应密码资源。

小密码容器可以确定小密码所需要的每个密码资源的类型、质量和数量,并且可以将对所确定的密码资源的请求发送到证明引擎服务。然后,证明引擎服务可以从(多个)对应的密码资源池中获取被请求的密码资源。证明引擎服务然后可以将证明生成代码(如果有的话)注入密码资源中,这可以使密码资源变成证明委托。如果小密码需要诸如密钥之类的任何秘密,则证明引擎服务可以使要在小密码和硬件安全模块(hsm)之间被发起的安全隧道是小密码可以经由其接收秘密的安全隧道。证明引擎服务然后可以将被请求的证明委托发送到小密码容器。然后可以执行小密码代码,并且证明委托允许执行小密码所需要的密码功能以及任何所需的证明。

说明性设备/操作环境

图1是在其中可以实践本技术的各方面的环境100的图。如图所示,环境100包括经由网络130连接的计算设备110以及网络节点120。即使在图1中示出了环境100的特定组件,但是在其他示例中,环境100还可以包括附加的和/或不同的组件。例如,在某些示例中,环境100还可以包括网络存储设备、维护管理器和/或其他合适的组件(未示出)。图1中所示的计算设备10可以位于各种位置,包括在内部、在云中等等。例如,计算机设备110可以在客户端侧、在服务器侧等等。

如图1中所示,网络130可以包括一个或多个网络节点120,其互连多个计算设备110,并且将计算设备110连接到外部网络140,例如互联网或内联网。例如,网络节点120可以包括交换机、路由器、集线器、网络控制器或其他网络元件。在某些示例中,计算设备110可以被组织成机架、动作区域、群组、集合或其他合适的分区。例如,在所图示的示例中,计算设备110被分组为分别被标识为第一、第二和第三主机集合11a-112c的三个主机集合。在所图示的示例中,主机集合112a-112c中每个主机集合分别可操作地耦合到对应的网络节点120a-120c,其通常被称为“机架顶部”或“tor”网络节点。tor网络节点120a-120c然后可以可操作地耦合到附加的网络节点120,以形成层级的、平面的、网状的或其他合适类型的拓扑结构的计算机网络,其允许计算设备110和外部网络140之间的通信。在其他实施例中,多个主机集合112a-112c可以共享单个网络节点120。计算设备110实际上可以是任何类型的通用或专用计算设备。例如,这些计算设备可以是诸如台式计算机、膝上型计算机、平板计算机、显示设备、照相机、打印机或智能手机之类的用户设备。但是,在数据中心环境中,这些计算设备可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机。此外,计算设备110可以被各个地配置为提供计算、存储和/或其他合适的计算服务。

在一些示例中,一个或多个计算设备110是iot设备、包括一部分或全部iot支持服务的设备、包括一部分或全部应用后端的设备等等,如下面更详细讨论的。

说明性计算设备

图2是图示了在其中可以实践本技术的各方面的计算设备200的一个示例的图。计算设备200实际上可以是任何类型的通用或专用计算设备。例如,计算设备200可以是诸如台式计算机、膝上型计算机、平板计算机、显示设备、照相机、打印机或智能电话之类的用户设备。同样,计算设备200也可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机,例如,计算设备200可以是图1的计算设备110或网络节点120的示例。计算设备200也可以是连接到网络以接收iot服务的iot设备。同样,计算机设备200可以是图3-图5中所图示或引用的任何设备的示例,如下面更详细地讨论的。如图2中所图示,计算设备200包括处理电路210、操作存储器220、存储器控制器230、数据存储存储器250、输入接口260、输出接口270和网络适配器280。计算设备200的上述这些组件的每个组件包括至少一个硬件元件。

计算设备200包括被配置为执行指令的至少一个处理电路210,该指令诸如是用于实现本文所描述的工作负载、过程或技术的指令。处理电路210可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任何其他电路。处理电路210是核的示例。前述指令以及其他数据(例如数据集、元数据、操作系统指令等)可以在计算设备200的运行时期间被存储在操作存储器220中。操作存储器220还可以包括各种数据存储设备/组件中的任何一个,诸如易失性存储器、半易失性存储器、随机存取存储器、静态存储器、高速缓存、缓冲器或被用来存储运行时信息的其他介质。在一个示例中,当计算设备200被断电时,操作存储器220不保留信息。相反地,计算设备200可以被配置为作为引导或其他加载过程的一部分将指令从非易失性数据存储组件(例如,数据存储组件250)转移到操作存储器220。

操作存储器220可以包括第四代双倍数据速率(ddr4)存储器、第三代双倍数据速率(ddr3)存储器、其他动态随机存取存储器(dram)、高带宽存储器(hbm)、混合存储器立方体存储器、3d堆栈存储器、静态随机存取存储器(sram)或其他存储器,并且这种存储器可以包括集成到dimm、simm、sodimm或其他封装上的一个或多个存储器电路。可以根据通道(channel)、排块(rank)和体块(bank)来组织这样的操作存储器模块或设备。例如,操作存储器设备可以在通道中经由存储器控制器230耦合到处理电路210。计算设备200的一个示例可以包括每个通道一个或两个dimm,每个通道一个或两个排块。排块内的操作存储器可以利用共享时钟、共享地址和命令总线来进行操作。而且,操作存储器设备可以被组织为几个体块,其中体块可以被认为是由行和列来寻址的阵列。基于操作存储器的这种组织,操作存储器内的物理地址可以由通道、排块、体块、行和列的元组来引用。

尽管进行了上述讨论,但是操作存储器220特别地不包括或不包含通信介质、任何通信介质或任何信号本身。

存储器控制器230被配置为将处理电路210接口到操作存储器220。例如,存储器控制器230可以被配置为对操作存储器220和处理电路210之间的命令、地址和数据进行接口。存储器控制器230也可以被配置为从处理电路210或针对处理电路210抽象化或以其他方式管理存储器管理的某些方面。尽管存储器控制器230被图示为与处理电路210分离的单个存储器控制器,但是在其他示例中,可以采用多个存储器控制器,可以将(多个)存储器控制器与操作存储器220集成在一起,等等。此外,可以将(多个)存储器控制器集成到处理电路210中。这些和其他变型是可能的。

在计算设备200中,数据存储存储器250、输入接口260、输出接口270和网络适配器280由总线240接口到处理电路210。尽管图2将总线240图示为单个无源总线,但是也可以适当地采用其他配置,诸如总线的集合、点对点链路的集合、输入/输出控制器、桥接器、其他接口电路或其任何集合,以用于将数据存储存储器250、输入接口260、输出接口270或网络适配器280接口到处理电路210。

在计算设备200中,采用数据存储存储器250以用于长期非易失性数据存储。数据存储存储器250可以包括多种非易失性数据存储设备/组件中的任何一种,诸如非易失性存储器、磁盘、磁盘驱动、硬盘驱动、固态驱动或者任何其他可以被用于信息的非易失性存储的介质。然而,数据存储存储器250特别地不包括或不包含通信介质、任何通信介质或任何信号本身。与操作存储器220相反,计算设备200采用数据存储存储器250进行非易失性长期数据存储,而不是运行时数据存储。

此外,计算设备200可以包括或耦合到任何类型的处理器可读介质,诸如处理器可读存储介质(例如,操作存储器220和数据存储存储器250)和通信介质(例如,通信信号和无线电波)。尽管术语处理器可读存储介质包括操作存储器220和数据存储存储器250,但是在整个说明书和权利要求书中,术语“处理器可读存储介质”,无论是以单数还是复数被使用,都在本文中被定义为使得该术语“处理器可读存储介质”特别地排除并且不包括通信介质、任何通信介质或任何信号本身。但是,术语“处理器可读存储介质”的确包含处理器高速缓存、随机存取存储器(ram)、寄存器存储器等。

计算设备200还包括输入接口260,其可以被配置为使得计算设备200能够从用户或从其他设备接收输入。另外,计算设备200包括输出接口270,其可以被配置为提供来自计算设备200的输出。在一个示例中,输出接口270包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置为绘制用于在单独的视觉显示设备(诸如监视器、投影仪、虚拟计算客户端计算机等)上进行呈现的显示。在另一示例中,输出接口270包括视觉显示设备,并且被配置为绘制和呈现用于观看的显示。在又一示例中,输入接口260和/或输出接口270可以包括通用异步接收器/发射器(“uart”)、串行外围设备接口(“spi”)、集成电路间(“i2c”)、通用输入/输出(gpio)等。而且,输入接口260和/或输出接口270可以包括或接口到任何数目或类型的外围设备。

在所图示的示例中,计算设备200被配置为经由网络适配器280与其他计算设备或实体通信。网络适配器280可以包括有线网络适配器,例如以太网适配器、令牌环适配器或数字订户线(dsl)适配器。网络适配器280还可以包括无线网络适配器,例如wi-fi适配器、蓝牙适配器、zigbee适配器、长期演进(lte)适配器或5g适配器。

尽管图示了了具有以特定布置进行配置的某些组件的计算设备200,但是这些组件和布置仅仅是在其中可以采用该技术的计算设备的一个示例。在其他示例中,数据存储存储器250、输入接口260、输出接口270或网络适配器280可以直接耦合到处理电路210,或者经由输入/输出控制器、桥接器或其他接口电路耦合到处理电路210。该技术的其他变型是可能的。

计算设备200的一些示例包括适于存储运行时数据的至少一个存储器(例如,操作存储器220)和适于执行处理器可执行代码的至少一个处理器(例如,处理单元210),处理器可执行代码响应于执行而使得计算设备200能够执行动作。

说明性系统

图3是图示了系统(300)的示例的框图。系统300可以包括网络330以及参与方设备311和312、成员设备341和342、交易方(counterparty)设备316和317、验证节点(vn)351和352、密码资源371和372、小密码构造设备361和362、和密钥保管库365,其全都可以连接到网络330。

参与方设备311和312、交易方设备316和317、成员设备341和342、vn351和352、小密码构造设备361和362和/或密钥保管库365中的每个都可以包括图2的计算设备200的示例。图3和图3在说明书中的对应描述说明了示例系统,以用于说明性目的,其不限制本公开的范围。

网络330可以包括一个或多个计算机网络,包括有线和/或无线网络,其中每个网络例如可以是无线网络、局域网(lan)、广域网(wan)和/或诸如互联网的全球网络。在互连的lan集合上,包括基于不同架构和协议的那些lan,路由器充当lan之间的链路,使得消息能够从一个发送到另一个。同样,lan内的通信链路通常包括双绞线或同轴电缆,而网络之间的通信链路可以利用模拟电话线、包括t1、t2、t3和t4的完整或部分专用数字线、综合业务数字网(isdn)、数字订户线(dsl)、包括卫星链路的无线链路或本领域技术人员已知的其他通信链路。此外,远程计算机和其他相关电子设备可以经由调制解调器和临时电话链路而远程连接到lan或wan。网络330可以包括各种其他网络,诸如使用诸如6lowpan、zigbee等本地网络协议的一个或多个网络。一些iot设备可以经由网络330中与其他iot设备不同的网络而连接到用户设备。本质上,网络330包括任何通信技术,通过该通信技术,信息可以在参与方设备311和312、交易方设备316和317、成员设备341和342、vn351和352、小密码构造设备361和362、密码资源371和372和/或密钥保管库365之间行进。尽管每个设备或服务被示为连接的,如连接到网络330,但这并不意味着每个设备都与所示的每个其他设备通信。在一些示例中,示出的一些设备/服务仅经由一个或多个中间设备来与示出的一些其他设备/服务通信。而且,尽管网络330被图示为一个网络,但是在一些示例中,网络330可以改为包括可以彼此连接或可以不彼此连接的多个网络,其中示出的一些设备通过多个网络中的一个网络而彼此通信,并且示出的其他设备通过多个网络中的不同网络而彼此通信。

在一些示例中,vn351和vn352是区块链网络的一部分。在一些示例中,vn351和352是在正常操作期间验证和处理提交的区块链事务并执行链码的设备。在一些示例中,成员设备341和342是成员用来在网络330上进行通信的设备,诸如用于成员与其对应的vn之间的通信,例如以对vn进行背书。在一些示例中,参与方设备311和312是参与方用来在网络330上进行通信诸如以请求事务的设备。

在一些示例中,交易方设备316和317是交易方使用的设备,或者是作为经由小密码构造来使用合约小密码的智能合约的交易方的设备(其中小密码构造包括例如小密码构造设备361和小密码构造设备362)。交易方设备316和317各自可以是个人、公司、iot设备、智能合约等;表示个人、公司、iot设备、智能合约等;和/或代表个人、公司、iot设备、智能合约等进行动作。

系统300的示例布置可以被描述如下。在一些示例中,每个密码资源可以是各种不同类型的密码资源中的任何一种,诸如包围区、被配置为执行特定密码功能的fpga、被配置为执行特定密码功能的asic和/或可以包括被组合在一起以执行特定密码功能的两个或更多个密码资源的复合资源。包围区是由硬件或软件提供的执行环境,其是私有的、防篡改的、并且安全的以免受外部干扰。来自包围区的输出由包围区进行数字签名。小密码构造设备361和362是为小密码提供运行时和其他功能性的小密码构造的一部分,如下面更详细地讨论的。密钥保管库365可以被用来针对由小密码用于身份、数字签名和加密服务和/或其他类型的秘密的密钥提供安全的持久存储。

系统300可以包括比图3中所图示的更多或更少的设备,图3仅作为示例被示出。

说明性设备

图4是图示了系统400的示例的框图,系统400可以被采用作为图3的系统300的示例。系统400可以包括参与方设备411和412、交易方设备416和417、成员设备441和442、区块链网络450、小密码构造460、密码资源470和密钥保管库465。

在一些示例中,在正常操作期间,区块链网络450可以验证并处理被提交的区块链事务。在一些示例中,成员设备441和442是成员用于与区块链网络450通信的设备。在一些示例中,参与方设备411和412是参与方用于与区块链网络450通信诸如以请求事务的设备。在一些示例中,密码资源470可以包括包围区、被配置为执行特定密码功能的fpga、被配置为执行特定密码功能的asic、被配置为执行特定密码功能的复合密码资源等。在一些示例中,包围区是由硬件或软件提供的执行环境,其是私有的、防篡改的、并且是安全而免受外部干扰的。在一些示例中,来自包围区的输出由包围区进行数字签名。密钥保管库465可以被用来为由小密码用于身份、数字签名和加密服务的密钥提供安全的持久存储。

在一些示例中,交易方设备416和417是交易方使用的设备,或者是作为经由小密码构造460使用合约小密码的智能合约的交易方的设备。交易方设备416和417各自可以是个人、公司、iot设备、智能合约等;表示个人、公司、iot设备、智能合约等;和/或代表个人、公司、iot设备、智能合约等进行动作,如下文更详细地讨论。

区块链网络450可以包括许多vn。在一些示例中,区块链网络450的每个成员可以经由成员设备(例如441或442)在区块链网络450中维护一个或多个vn。参与方可以经由参与方设备(例如411或412)请求事务由区块链网络450执行。在正常操作期间,区块链网络450中的vn验证并处理被提交的事务以及执行逻辑代码。

由区块链网络450执行的事务可以被存储在区块链中。在一些示例中,区块链是去中心化的分类账,其以可核实的方式记录由区块链执行的事务。多个事务可以被存储在区块中。一旦区块已满,就可以用区块报头来封闭该区块,区块报头是区块内的所有事务标识符的哈希摘要。区块报头可以被记录为链中的下一区块中的第一事务,从而创建区块链。

区块链网络也可以被用于智能合约的处理。在一些示例中,智能合约是部分或完全执行并且部分或完全执行例如货币和/或财产的交换的协定或事务的计算机代码,并且其可以利用区块链技术。在来自小密码构造460的帮助下,逻辑可以通过在区块链网络450之外执行的小密码来完成,而不是在区块链本身中运行智能合约的逻辑。在一些示例中,小密码是可以在安全的环境中执行并使用安全通道被通信的代码组件。在一些示例中,小密码构造460被配置来为小密码提供运行时和其他功能性。

在一些示例中,小密码构造460是无服务器的云平台,其为中间件提供核基础设施,使得基于区块链的应用能够具有提高的功能性。在一些示例中,小密码构造460由若干组件组成,这些组件提供区块链应用到云中的增强的安全性封装的功能性,并且提供了通用应用编程接口(api),其对来自开发方的细微差别以及底层区块链进行抽象。

在一些示例中,小密码构造460管理用于小密码的运行时安全密钥平台以及小密码的缩放、故障切换、缓存、监测和/或管理,该运行时安全密钥平台允许私钥的大规模创建、持久化和水合。(“水合”(hydration)是指从持久存储中激活和编排在存储器中。)这允许小密码在安全的执行环境中创建、存储和使用密钥对来执行各种功能,例如包括数字签名、环形签名、零知识证明、阈值和同态加密。

在一些示例中,除其他组件外,小密码构造460还包括小密码容器服务(ccs)和证明引擎服务,下面将更详细地讨论其中的每个。

在一些示例中,小密码可以是软件组件,该软件组件继承自基类并且实现为分布式信任应用提供密码原语和集成的接口。在一些示例中,对于开发方来说,知道基类并且知道如何实现必需的和可选的接口以使小密码在平台上进行开发就足够了。已建立的软件开发框架、模式和设计可以被用于用户接口并被集成到现有系统中。

小密码的类型可以包括实用小密码和合约小密码。实用小密码通常经由内部或外部事件而执行外部数据集成,为区块链智能合约提供数据访问或可重用逻辑,但也可以为其他系统提供服务级别api以与区块链一起工作。实用小密码的主要目的是将经证实的数据注入区块链中,该实用小密码可以被称为“预言(oracle)”小密码。在一些示例中,合约小密码包含签署合约的交易方所同意的特定于智能合约的逻辑。两种类型的小密码都可以提供面向区块链的api和表面级别的api。

不管智能合约如何被实现,实用小密码都可以被用来为可重用的库中的智能合约提供信息和附加计算。这些库可以被用来创建用于构建分布式应用的框架,并以公共的方式经由小密码构造460在公共云和私有云中以及在区块链环境中被显露。

合约小密码可以重新定义智能合约执行的逻辑的实现。在一些示例中,这些小密码规定:使用底层区块链作为数据库,任何逻辑都在链外运行。

实用小密码可以提供离散的功能性,例如提供外部信息,例如市场价格、来自其他系统的外部数据、或专用配方。这些可以被称为“区块链预言”,因为其可以监控“现实世界”事件和数据并将其注入到区块链系统中。智能合约可以使用发布/订阅模式来与这些进行交互,其中实用小密码发布事件以订阅智能合约。事件触发可以在智能合约或操作代码内位于区块链外部(例如,价格变动)或位于区块链内部(例如,数据信号)。

在一些示例中,这些小密码也可以被结构内的其他小密码直接调用,并显露其他系统可以调用的外部或表面级别的api。例如,企业客户关系管理(crm)系统可以将事件发布到订阅小密码,订阅小密码继而基于信息将该信息发布到区块链网络450中的区块链。以这种方式,通过小密码构造460可以向智能合约和区块链提供双向集成。

合约或控制小密码可以表示交易方之间的合约协定中的整个逻辑或状态。在一些示例中,为了数据有效性,在基于智能合约的系统中被使用的合约小密码可以使用区块链分类账,以使用智能合约逻辑来确实地存储合约的数据,但是将逻辑替换为合约小密码在应用的设计内提供了“关注点的分离”。链上智能合约和合约小密码之间的关系可以被称为信任关系。

对于非基于智能合约的系统,在一些示例中,合约小密码执行逻辑并将其数据写入到区块链,而无需区块链上的智能合约或被定义明确的提要(schema)。

本质上,在一些示例中,合约小密码可以在私有安全环境中大规模运行交易方之间的合约协定的逻辑,而无论类型如何都将其数据存储在底层区块链中。

在一些示例中,无论类型如何,小密码都具有共同的属性:

身份-例如,密钥对。身份可以由小密码本身创建或被指派。在一些示例中,公钥也被称为小密码地址。私钥可以被用来对来自小密码的所有事务进行签名。当重新水合或向小密码指派身份时,私钥可以被存储在密钥保管库465中,或以其他方式经由安全通道被获取。

名称-共用名称,在一些示例中,为了更可读的身份,其被映射到地址。

代码-在一些示例中,以其父容器支持的语言所编写的代码。

小密码绑定(cryptletbindings)-小的绑定列表,其在一些示例中表示用于绑定的客户端(例如,区块链合约或账户)地址和参数。

事件-在一些示例中,由小密码发布或监控的事件列表。在一些示例中,事件触发可以是被监控的区块链数据或事件或是外部的。

api-表面级别的api集合,在一些示例中,非区块链系统或其他小密码可以使用其以及订户回调方法。

父容器-小密码容器,在一些示例中,在其中运行小密码。

清单-用于小密码的简单javascript对象符号(json)配置设置,在一些示例中,其被用于部署到结构中。

小密码容器可以为小密码提供在其中执行的运行时。小密码容器可以为小密码提供抽象,例如i/o、安全性、密钥管理和运行时优化。

小密码容器可以为小密码提供安全密钥存储和取回,以使用用于身份、数字签名和加密。小密码可以经由小密码容器自动存储和获取密钥,该小密码容器经由安全通道或小密码隧道来与密钥保管库465集成。

小密码可以在清单中声明其配置、包围区、类型等。在一些示例中,小密码容器确保小密码所需的依赖关系已就位以供其运行。

可以在小密码清单中或在策略中设置针对小密码的密码资源需要。在一些示例中,在小密码容器服务中设置密码资源选项和配置,该小密码容器服务在一些示例中是小密码构造460的一部分。

在一些示例中,小密码容器服务是小密码构造460的集线器。在一些示例中,小密码容器服务的主要职责和组件是:

·小密码构造注册表,其是用于配置的注册表和数据库。

o小密码:其显露给区块链网络的名称和id、表面级别api和事件。

o区块链或其他分布式分类账:网络名称、类型、节点列表、元数据。

o智能合约:订阅或与小密码以及主机区块链网络具有信任关系的链上智能合约地址和应用二进制接口(abi)或其他接口定义。

·小密码绑定,其是构造所服务的所有绑定的集合。小密码绑定可以将智能合约映射到小密码,或者将小密码映射到小密码,以进行核实和消息路由。小密码绑定可以表示智能合约和小密码(或对/环)之间的单个绑定。关于绑定的细节,如(多个)订阅参数、(多个)接口参数和/或智能合约地址,被用来在小密码、其客户端、智能合约或其他小密码之间路由消息。

·安全计算注册表:是包围区及其能力、版本、成本和配置等属性的注册表。由包围区池提供的集群的包围区池定义以及附加加密服务,如密钥派生、环签名和阈值加密。安全计算注册表还可以包括其他类型的密码资源及其属性的注册表,以及其他类型的密码资源的池定义。

·小密码目录,其可以是代表性状态转移(rest)api和/或网站,以供开发方发现小密码或将小密码加入到其应用中,以进行智能合约绑定或用于在构建用户界面或集成时使用。

·用于抽象化区块链事务格式化和原子性、一致性、隔离性、耐用性(acid)递送的api追加事务并且从小密码和其他任何需要“直接”访问底层区块链的系统中读取查询。该api可以以各种方式被显露,例如,远程过程调用(rpc)、rest和/或经由服务总线进行消息传递。

小密码、区块链和智能合约可以用小密码构造注册服务得到注册。小密码容器服务可以发布用于链上智能合约的小密码目录,前端用户界面(ui)并且系统集成开发方发现和使用小密码。使用服务级别api的开发方可以经由小密码来与区块链进行交互,而不必担心甚至不必知道其正在利用区块链数据工作。与其他系统的用户界面和集成可以与小密码表面级别api进行交互以快速集成和构建应用。

包围区可以是硬件或软件。例如,可以通过运行管理程序或虚拟安全机(vsm)来形成软件包围区。硬件包围区的示例是安全硬件包围区,诸如来自英特尔的sgx。硬件包围区可以具有密钥集合,该密钥集合被烧制/蚀刻到硅上,其可以被用来对来自包围区的输出进行签名,以用作其安全执行的证实。通常,代码和代码所运行在其中的包围区的比率为1-1。但是,在云中,可以动态地实例化小密码,并且可以或可以不获得相同的硬件包围区。

在一些示例中,包围区资源被池化在一起并基于其能力被分类。例如,可以存在随时间而具有不同性能或存储器增强的vsm包围区和硬件包围区。小密码可以被配置为在运行时请求任何包围区或特定类型的包围区以及可能更高性能的硬件包围区。

在一些示例中,包围区是安全执行环境,在其中代码可以在隔离的私有环境中运行,并且安全执行的结果可以被证实为已未被更改地且私有地运行。这意味着可以在包围区内创建并使用如私钥之类的秘密来对事务进行签名,并向第三方证明该秘密已在包围区内运行。

在一些示例中,为了大规模递送小密码,在接收到包围区池化请求时,包围区由小密码构造460进行池化。在一些示例中,也可以池化其他类型的密码资源。在一些示例中,密码资源池充当资源,其中,在接收到对小密码的密码资源请求时,密码资源可以由小密码构造460从密码资源池中获取并在运行时基于小密码的需要而将其分配给该小密码。

例如,可以设置策略:运行交易方a和交易方b之间的智能合约的所有小密码始终需要来自英特尔的sgxv2包围区。备选地,可以不指定包围区需要,使得最小成本(例如,就金钱、时间、已激活等而言)包围区被提供。

在一些示例中,密码资源470之中的包围区被注册在包围区池内。在一些示例中,针对包围区池生成包围区池共享的签名,其中包围区池共享的签名是从包围区池中的每个包围区的私钥得出的。在一些示例中,池管理使用包围区的即时(jit)实例化以在活动时使用包围区,但是一旦工作完成,就将其返回到池中。在一些示例中,具有异步寿命且将无法完成其工作的小密码可以在检查点处释放其包围区,并在另一包围区中被重新实例化。在一些示例中,切换包围区产生不同的证实,其可以被包围区池共享的签名核实。

在一些示例中,当向小密码构造460注册了包围区集合时,每个包围区公钥都被记录在包围区池注册表中。在一些示例中,特性是在注册时被记录的,并且可以针对没有从硬件推断出的池类别而被修改。在一些示例中,一旦所有包围区都被注册,所有包围区的密钥就被用来生成用于池的密钥对,其被存储在密钥保管库465中。

在运行时,小密码容器服务可以基于其注册或策略来确定小密码运行时环境依赖性,并请求出自包围区池中的包围区。包围区池可以激活包围区并将其地址返回给小密码容器服务,小密码容器服务然后可以注入适当的小密码容器。在一些示例中,小密码容器被提供小密码id和活动绑定,小密码容器使用小密码id和活动绑定来从安全存储装置中获取小密码二进制,并运行对小密码的哈希代码签名检查,这可以是小密码的复合标识符的一部分。在一些示例中,小密码容器然后从密钥保管库465中获取小密码所需要的任何密钥,并将其与活动小密码绑定一起传递到小密码的构造器中,以在包围区内将其实例化。在一些示例中,小密码代码在包围区中执行,并且有效负载由包围区的私钥进行数字签名。

一旦小密码完成其同步工作,其就可以调用其检查点方法,该检查点方法可以传递在其会话期间生成的任何新密钥,以供小密码容器保持在密钥保管库465中并将小密码的包围区释放回池中。通过返回包围区,该包围区然后再次变为可用,以供另一小密码使用。

在一些示例中,如果小密码需要在已定义的调用窗口内不可用并且不会是可用的包围区或其他密码资源,则错误被日志记录,并引发异常。

新的包围区可以被添加到包围区池中,这将为该池生成新的共享签名。在一些示例中,当小密码的生存期跨越多个包围区并且证实的连续性需要被建立时,共享签名被使用。在一些示例中,共享签名是历史性的,因此,如果小密码跨多个包围区被证实,则共享签名被检查,并且如果当前签名不匹配,则签名的先前版本被检查,直到匹配被找到为止。在这些示例中,如果找不到匹配,则证实链不会有效。

以这种方式,在这些示例中,恶意包围区无法贡献于经验证的事务。在这些示例中,如果恶意包围区贡献于事务,则共享包围区签名不会被形成,并且证实链不会有效。

在一些示例中,小密码容器服务具有区块链路由器,该区块链路由器为针对区块链的数据操作提供抽象api。每种不同类型的区块链都可以具有区块链消息提供器或连接器,其被插入到区块链路由器中,以对每个区块链进行恰当的消息格式化。

在一些示例中,区块链连接器在该区块链连接器所服务的每个区块链上具有有效地址,并用针对该地址的密钥来对事务进行签名。在一些示例中,出于对事务进行签名的目的,区块链连接器在包围区内运行。

区块链路由器依赖于小密码绑定以用于将消息路由到适当的区块链连接器。区块链连接器使用小密码绑定信息来正确地对消息进行格式化并确保递送到目标接收方。

在一些示例中,小密码绑定是一种数据结构,其提供了小密码与底层区块链、智能合约和账户之间的抽象。小密码绑定本身可以是或可以不是安全的,因为其可能仅包含被授权方用来从其他服务中查找详细信息的绑定组件的(多个)标识符(例如,(多个)唯一标识符)。在一些示例中,在路由消息时被使用的绑定提供了小密码id和智能合约id本身。在一些示例中,对智能合约地址进行查找并将其绑定到映射到节点地址的特定区块链id。

数据可以被封装在由数据生产方或“代表”用户或iot设备、小密码、其主机包围区、然后区块链连接器进行签名的多个数字证实(例如,签名)层中。这些分层可以被称为签名洋葱。

在一些示例中,加密委托是小密码构造460的一部分,其可以提供优化点,以用于在分层签名继续被所有节点验证之前验证这些分层签名,从而减少冗余签名检查、拒绝无效证实链、和/或释放计算资源。

密钥保管库465可以提供安全的持久性密钥存储,以供小密码使用于身份、数字签名和加密服务。小密码容器可以提供对小密码的抽象,以用于在运行时存储和获取密钥。在一些示例中,在密钥保管库465与托管小密码容器的包围区之间建立安全通信通道,其被称为小密码隧道。在一些示例中,被托管的小密码所使用的私钥和秘密的存储和取回由小密码容器自动且按需地提供。

例如,在一些示例中,当小密码在其小密码容器主机内被实例化时,如果其身份是由密钥保管库中的密钥对建立的,则小密码容器将安全地获取密钥并在实例化时将密钥对提供给该小密码。或者,如果小密码创建了其自己的或新的密钥对,则当小密码去激活时,这些新密钥可以被小密码容器自动存储。在一些示例中,小密码然后可以使用私钥来对事务和消息进行签名以用于递送。被指派的密钥的一个示例是利用交易方的私钥将事务作为特定的交易方、公司、用户或设备而签名到智能合约的小密码。

在一些示例中,小密码可以从其容器中请求密钥或秘密以用于其他密码服务,如消息的加密、解密和签名。在一些示例中,小密码出于身份或其他密码目的而使用的密钥由小密码容器使用解析为小密码实例id或交易方id的小密码绑定来查找和定位,并经由小密码隧道请求或存储到密钥保管库465。在一些示例中,小密码绑定密钥图被用来记录密钥位置,以用于解析和定位用于可由该交易方控制的单独的密钥保管库465实例中的不同交易方的密钥。来自单个交易方的针对多个小密码身份的密钥派生可以提供要被区分的多个并发实例。另外,在用于一次性使用密钥派生场景的示例场景中,在其中密钥保管库465发出或者小密码创建用于小密码签名的派生密钥,在签名完成时,派生密钥被毁坏,因为其只存在于包围区存储器中。诸如密钥到期和重置之类的密钥生命周期服务可以作为实用程序而被提供。

在一些示例中,开发方可以使用针对其逻辑的对象来构造其智能合约,并且仅需将其对象状态保持到区块链分类账中,而无需编写智能合约提要。在一些示例中,反过来也成立,可以从现有的智能合约提要构建和映射对象模型。这种环境可以为区块链解决方案提供区块链可移植性和易开发性。

在一些示例中,加密委托是基于底层区块链或分类账以不同方式被递送的能力集合。在一些示例中,加密委托是小密码构造460的一部分。在一些示例中,加密委托本质上充当小密码构造460的客户端侧或节点侧集成。除其他事项外,加密委托还可以在消息递送到底层节点平台之前对消息执行证实检查,例如在无效事务在区块链网络450周围得到传播之前阻止该无效事务。

如上所讨论,当形成包围区池时,可以向包围区池注册池中的包围区。在一些示例中,当向小密码构造460注册包围区时,每个包围区公钥可以被小密码构造460接收,并且每个包围区公钥可以被记录在包围区池注册表中。附加地,作为形成包围区池时发生的过程的一部分,包围区池共享密钥可以是由小密码构造460从包围区池中的每个包围区的公钥派生的。如果包围区池的成员关系改变,可以由小密码构造460生成新的包围区池共享密钥。

小密码容器可以响应于需要而从关联的包围区池中请求包围区。该请求可以指定包围区的特定大小或类型。例如,一些类型的包围区比其他类型的包围区更安全,并且可以与更大的成本相关联,并且因此可以根据特定请求来请求具有特定安全级别的包围区。当做出请求时,可以由小密码构造460从包围区池中获取合适的包围区,并基于特定请求将其分配给小密码容器。

小密码容器还可以响应于需要而从关联的密码资源池中请求其他类型的密码资源,诸如被配置为执行特定密码资源的fpga、复合密码资源等等。当做出对密码资源的请求时,可以由小密码构造460从对应的密码资源池中获取合适的密码资源,并基于特定请求将其分配给小密码容器。

然后,可以根据需要使用所分配的密码资源来执行要被执行的小密码代码。作为小密码代码的执行的一部分,小密码代码可以在主机包围区中生成有效负载。主机包围区的有效负载然后可以由小密码私钥进行签名和/或加密,也可以由主机包围区的包围区私钥进行数字签名。然后可以从第一小密码解分配密码资源,以使小密码不再在密码资源中运行,并且使得密码资源变为可用于其他小密码。可以用小密码的公钥和包围区的公钥来证实有效负载来自区块链的带外。

在一些情况下,小密码代码也可以在另一包围区中运行。例如,在一些示例中,如上所讨论,池管理可以使用包围区的“即时”(tit)实例化,但是在工作完成之后将其返回到池中。在一些示例中,具有异步寿命且将无法完成其工作的小密码可以在检查点处将其包围区解分配。

因此,可以由小密码构造460从包围区池中获取不同的合适的包围区,并且可以在新的包围区中将小密码重新实例化。然后,小密码可以继续在另一主机包围区(例如,新的包围区)中执行。然后,可以由该另一主机包围区的包围区私钥对该另一主机包围区的有效负载进行数字签名。然后可以对该另一主机包围区进行解分配,以使小密码不再在该包围区内运行,并且使该另一主机包围区可用于其他小密码。

在一些示例中,小密码可以由更多的包围区执行,诸如以与以上针对第二包围区所述的类似方式由至少第三包围区执行。

因为在此示例中,小密码在多于一个的包围区中被执行,所以除了源自私有小密码密钥的数字签名之外,小密码代码的输出还可以包含分别源自包围区池中的不同包围区的私钥的两个或更多个数字签名,以及作为签名洋葱的一部分的可能的其他数字签名。在一些示例中,源自属于包围区池的包围区中的包围区密钥的数字签名全部都可以通过将其与共享的包围区池密钥进行比较来进行验证。在一些示例中,数字签名的验证可以由小密码构造来执行。

在一些示例中,小密码代码被封装为具有其自己的身份的小密码,该身份是多个组件的复合。在一些示例中,小密码身份是编译后的小密码的二进制哈希、小密码公钥和绑定标识符的组合。

在一些示例中,由这三个组件组成的小密码身份允许单个二进制跨该合约类型的许多实例被编译和重用。

例如,对于作为利率互换的小密码二进制金融合约,在一个示例中,互换小密码将具有哈希+公钥,其唯一地表示构造中的该小密码二进制。在此示例中,当新的利率互换被创建时,该合约的实例被创建,该实例由绑定id表示。在一些示例中,绑定表示互换实例的属性/规则,诸如交易方的身份、小密码从哪里以及多久一次获得利率定价等等。

以这种方式,可能存在利率互换的许多实例,其中单个二进制小密码执行这些合约中的每一个。在此示例中,唯一实例是表示合约的复合小密码身份。

因此,在一些示例中,(1)二进制哈希、(2)小密码公钥和(3)绑定id这三个组件的组合是实例标识符,其然后被表示为合约的哈希摘要,该哈希摘要被记录在表示控制智能合约的逻辑版本的区块链分类账中。不管是否使用包围区池,也不管是否使用共享密钥,都可以使用此小密码身份。在一些示例中,小密码的实例由三个组件组成:(1)二进制哈希,(2)小密码公钥和(3)绑定id,并且其中尚未被实例化的通用小密码由两个组件组成:(1)二进制哈希和(2)小密码公钥,并且其中该小密码的特定实例化然后将添加小密码的该实例的绑定id以生成针对小密码的该实例的小密码身份。

可以在小密码构造460中安装并注册小密码。在将小密码安装到构造460中的过程期间,小密码构造460获取正被安装的小密码的小密码二进制,并生成小密码二进制的哈希。小密码构造460还可以请求密钥保管库465来创建密钥链,除其他事项外,该密钥链还可以包括用于小密码的密钥对,其中密钥对包括小密码私钥和小密码公钥,并请求小密码公钥被发送到小密码构造460。小密码构造460可以接收公钥并创建针对该小密码的小密码身份,其中小密码身份由两个组件组成:(1)二进制的哈希和(2)小密码公钥,因为小密码未被实例化。小密码构造460可以在小密码构造460中的加密注册表中注册具有小密码身份的小密码,其中,作为注册的一部分,小密码身份作为条目被存储在小密码注册表中。在一些示例中,小密码注册表可以充当一种目录,从该目录中可以选择小密码。

在一些示例中,当做出对特定小密码的请求并且小密码尚未被实例化时,小密码构造460拦截该请求。如果小密码将需要在小密码中执行,那么不管是否使用包围区池化,小密码构造460然后都可以标识将被用于执行小密码的包围区。小密码构造460可以将小密码容器发送到包围区以在包围区中被执行,并且小密码容器可以获取用于小密码的小密码密钥对。在一些示例中,如前所讨论,这是经由密钥保管库465与在包围区中执行的小密码容器之间的安全通道来完成的。小密码构造460还可以将小密码二进制发送到包围区,并且该小密码可以开始在包围区中执行。

小密码构造460然后可以生成针对小密码的小密码绑定以及与针对小密码的小密码绑定相关联的绑定标识。在包围区中执行的小密码可以输出有效负载,该有效负载可以至少由主机包围区的私有包围区密钥进行数字签名,并由小密码私钥进行签名或加密。在一些示例中,小密码构造460接收有效负载。

小密码构造460还可以生成小密码身份,作为二进制哈希、小密码公钥和绑定id的组合。然后,小密码构造460可以生成小密码身份的哈希摘要,并且使小密码身份的哈希摘要被提供/传送给区块链网络450中的区块链分类账,其中哈希摘要可以被记录在表示控制智能合约的逻辑版本的区块链分类账上。

可以周期性地执行检查以确保小密码身份版本正确、签名正确等等。在一些示例中,确保小密码不被改变,除非所有各方都同意改变。在一些示例中,如果各方都同意改变智能合约,则小密码身份将相应地更改为更新的版本。在一些示例中,可以检查小密码的版本以确保未以各方未同意的方式改变小密码实例。在这些示例中,如果在未经各方同意改变的情况下改变了小密码实例,则小密码实例将不再起作用。

在一些示例中,小密码智能合约包括合约小密码、合约小密码的小密码绑定以及被存储在分类账上的智能合约实例,其中,在合约小密码的小密码绑定中还指示智能合约分类账实例。智能合约分类账实例可以被存储在诸如区块链网络450的区块链上,或者代替地被存储在区块链上,还可以被存储在另一数据存储库上。在一些示例中,智能合约分类账实例具有被标识的唯一公共地址,诸如“0x9f37b1e1d82ebc0a163cd45f9fa5b384ea7313e8”。智能合约分类账实例可以包括合约的状态以及有关合约的其他相关信息,以及合约的交易方的身份的数字签名。智能合约分类账实例可以包括合约生存期内的各种信息,包括诸如已付款之类的信息,以及诸如合约是否活动、完整、正在等待交易方签名或终止的信息。

在一些示例中,智能合约分类账实例部分地从提要中被生成。在一些示例中,提要是智能合约分类账模板,其被用来生成智能合约分类账实例以及有关需要填写的合约的基本信息,以便从模板生成智能合约分类账实例,其可以包括例如针对智能合约的初始种子属性。例如,对于作为贷款协定的示例智能合约,初始种子属性例如可以包括:贷方是谁、正被借出多少钱等等。合约的后续条款可以通过之后的合约协商来确定,如下文更详细讨论的。

在一些示例中,尽管智能合约分类账实例包括智能合约的状态、数字签名以及与智能合约有关的其他相关数据,但其不是完整的智能合约,因为其不包括智能合约逻辑。智能合约逻辑可以由合约小密码执行,合约小密码的小密码绑定针对其包括绑定,该绑定是到对应智能合约分类账实例的唯一地址的映射。在一些示例中,小密码绑定还包括到合约的交易方集合的映射,该交易方被表示为可以与其他身份系统捆绑的公钥。这些交易方可以表示两个或更多个人员、公司、iot设备、其他智能合约等等。小密码绑定还可以包括外部源。例如,外部源可以包括一个或多个实用小密码,其提供合约为其逻辑所需的外部数据,诸如利率或市场价格以计算付款或费用。实用小密码可以被用来例如呈现特定的市场数据,并证实所呈现的市场数据的价值。小密码绑定可以包括要从外部源接收的数据,以及例如要多久接收一次外部信息。

具有已安装的合约小密码的小密码构造460可以例如从交易方设备416和/或417接收消息,以创建新的智能合约。

在一些示例中,合约小密码可以需要包围区。如果是这样,则在一些示例中可能会发生以下情况。小密码构造460标识将被用于执行合约小密码的包围区。小密码构造460将小密码容器发送到包围区以在包围区中被执行,并且小密码容器可以获取用于小密码的小密码密钥对。这可以经由密钥保管库465和在包围区中执行的小密码容器之间的安全通道来实现。小密码构造460还可以将针对合约小密码的小密码二进制发送到包围区,并且合约小密码可以开始在包围区中执行。

在其他示例中,合约小密码不需要包围区,或者稍后可能需要包围区,但对于合约小密码的初始执行则不需要。例如,合约小密码可能需要在某些时间部分期间在包围区内执行,而在其他时间部分期间不需要,例如,小密码需要在包围区内执行的时间部分可能不包括合约小密码的初始执行。在这种情况下,小密码构造460使合约小密码开始执行。无论哪种方式,在一些示例中,在这时,合约小密码开始在包围区中或不在包围区中执行。

在合约小密码开始执行之后,合约小密码可以做出对信息的请求,诸如对合约的初始种子属性的请求。小密码构造460可以接收该请求,并且可以(例如,经由交易方设备416和/或417)向交易方发送请求以请求合约小密码所请求的信息。然后,小密码构造460可以接收对请求的响应。然后,小密码构造460可以获取与被请求的合约相关联的提要。在一些示例中,小密码构造460可能已经在小密码构造460中具有提要的已存储副本;在其他示例中,小密码构造460从小密码构造460外部的源请求并接收提要的副本。

基于从对请求的响应接收到的信息和提要,小密码构造460可以创建智能合约,并且然后使智能合约实例被部署在分类账上。在一些示例中,分类账是区块链网络450上的分类账。在其他示例中,分类账是数据存储库中的分类账,其不是区块链的一部分。

在智能合约分类账被部署之后,小密码构造460可以接收智能合约分类账的唯一地址,其中该地址充当智能合约分类账实例的唯一标识。

小密码构造460还可以生成小密码绑定,该小密码绑定包括针对合约小密码的绑定。在一些示例中,这些绑定中的每一个都是合约小密码与另一小密码、智能合约、或智能合约的交易方的标识之间的映射。绑定可以被用来在小密码和该绑定将小密码映射到的其他小密码或智能合约之间对消息进行路由。小密码绑定可以表示小密码的属性和/或规则。例如,在作为利率互换的小密码的示例中,小密码绑定可以包括利率互换的交易方的身份(公钥)、小密码从哪里得到利率定价以及小密码多久得到一次利率定价。

小密码绑定可以包括以下绑定:该绑定是合约小密码和智能合约分类账实例的唯一地址之间的映射,其用作智能合约分类账实例的唯一标识。小密码绑定还可以包括被表示为公钥的针对每个交易方的绑定。小密码绑定可以包括到外部数据源的映射,诸如到实用小密码的映射,其提供并证实智能合约小密码的逻辑所需的市场数据。

然后,小密码构造460可以将小密码绑定传送给合约小密码。

小密码构造460可以与智能合约分类账实例通信以在适当的时候(诸如当存在状态改变时等等)更新智能合约分类账实例。小密码构造460还可以实例化用于合约小密码的资源并通过系统对消息进行路由。合约小密码可以控制用于合约的协商过程,并当他们在协商过程中达成一致后更新条款。用于协商的通信可以例如经由小密码构造460发生在合约小密码和一个或多个交易方设备(例如416和/或417)之间。在一些示例中,一旦所有各方都对智能合约进行数字签名,智能合约就被最终确定。在一些示例中,一旦所有各方都对智能合约进行了数字签名,那么合约绑定完成,并且合约小密码开始运行实际的合约逻辑。

在一些示例中,在智能合约完成之后,合约小密码实例不再存在,但是智能合约分类账实例仍然存在,并且随后授权方可以回顾分类账以获得关于合约的历史信息。在一些示例中,合约小密码不永久地存储其状态或合约的任何其他方面;相反,合约小密码使用智能合约分类账实例来存储合约小密码的状态和其他智能合约数据。

作为非限制性示例,采用小密码智能合约的使用过程的概述可以包括:

1.向小密码构造做出对新合约的请求,在一些情况下,是对合约小密码做出该请求,该合约小密码正在由构造执行等待或新实例化以处理该请求从而开始合约创建过程。

2.合约小密码采取新的合约请求,其包括启动合约所需的初始种子信息,该初始种子信息可以与该合约所需的信息一样少或多,例如合约名称、描述、第一交易方(例如,贷方)等等。合约小密码可以验证该请求并生成合约构造器消息,并将其发送到小密码构造。可以至少利用小密码及其包围区签名对该消息进行签名。也可以利用第一交易方的签名对该消息进行签名。该消息还可以在消息中包括用于合约小密码的(多个)公共地址和/或构造器消息中的(多个)任何交易方。

3.小密码构造可以验证该请求,确定目的地区块链类型,格式化特定于区块链的事务,并且将该消息路由到适当的区块链。在此示例中,事务从可能在公共云或私有云中运行的小密码构造流向可以在任何地方运行的区块链节点。

4.区块链节点可以验证该消息,在一些情况下,该消息可以经由包围区和小密码签名首先由验证签名洋葱的外层的加密委托来验证,例如以确保该事务消息源自有效和安全的(多个)源。然后可以将该消息发送到区块链节点以供执行。在一些情况下,加密委托不可用,并且仅在将消息发送到节点以供执行之前检查特定于区块链的签名。

5.在经由构造器消息接收到对新合约的请求之后,区块链节点然后可以执行代码,该代码使用构造器中的已定义提要来创建智能合约实例并将所拥有的小密码合约以及(多个)任何交易方的公共地址嵌入到提要内的适当位置中,例如以确保仅合约小密码可以更新该合约的实例,并在该合约内以其角色建立(多个)任何交易方。该智能合约被给定唯一标识符,通常是公钥,其用作地址,用于交互的未来消息可以被发送在该区块链上、在该地址处。可以从构造器消息中返回该地址,并将其从节点传递回小密码构造。

6.小密码构造可以接收该地址并创建基本小密码合约绑定。在一些示例中,绑定包括对合约小密码、智能合约实例地址和构造器消息中提供的(多个)任何交易方的引用。

7.然后,小密码构造可以提供对合约小密码的这种绑定,以使其利用新的复合标识符而变得活动,复合标识符例如其二进制哈希、公共地址和绑定标识符。现在可以将该合约小密码绑定到仅服务与其相关联的绑定,并且将仅被允许针对其绑定中所列出的那些实体利用秘密、私钥来工作。

8.在一些情况下,该绑定id然后被传递回原始新合约请求的发送方,例如用户应用,或者也许是另一系统。被发送到小密码构造的、引用此绑定id的附加消息应被路由到与该id相绑定的合约小密码。在一些情况下,这些附加消息包括正被添加或将被添加的附加合约细节,如贷款期限、借入金额和(例如,对合约条款的)交易方协定。这些消息中的每一个都可以由合约小密码处理、被验证、被签名并作为状态被递送给底层智能合约地址。

9.在一些情况下,合约起作用需要外部数据,例如,可能会逐月变化的可变利率。在这些情况下,小密码构造可以将实用小密码添加到合约绑定中。在一些示例中,绑定的该外部数据提供方部分包括提供该数据的实用小密码的标识,用于接收如事件的该外部数据的要求:所基于的时间、阈值或自组织/按照来自合约小密码的需求。在一些情况下,这些外部数据更新规则被记录在合约中,并且所有交易方达成一致将其作为有关用于接受更新的源和情形的数据。例如,规则可以定义利率应利用特定的公共密钥并在每个月的第5天(4:00pmest)使用5年国库券利率+0.10个基点从名称为“利率源”的源来确定。一旦达成一致,就可以将该外部数据源添加到合约小密码的小密码绑定中,并且可以创建针对实用小密码的绑定并将其发送到实用小密码。实用小密码可以使用其绑定规则来触发数据更新以被发送到合约小密码。任何数据更新都可以由实用小密码及其主机包围区签名,例如用于验证。实用小密码提供给合约小密码的外部数据更新可以与实用小密码签名以及带有签名的合约小密码的计算结果一起被保持到智能合约地址,例如以提供数据有效性的证明和证实。

10.一旦小密码绑定具有智能合约分类账地址,由其定义的交易方签名和可选的(多个)外部数据源就变成完全可操作的,并且通常可以在合约的整个期限内独立地执行,例如经由与其绑定有关的消息进行交互。此类消息可与付款、收据、通知等相关联。

图5是图示了系统500的示例的框图,该系统可以作为图4的系统400的子集而被采用。系统500可以包括小密码容器535、小密码容器服务561、证明引擎服务562、密钥保管库565、证明委托571和密码资源池579。小密码容器服务561和证明引擎服务562可以各自是小密码构造的一部分,诸如图4的小密码构造460。小密码容器535可以包括小密码531。

将密码资源池化到密码资源池579中可以允许基于运行的应用的安全计算需要例如在运行时按需供应密码资源。小密码可以对在被配置为执行数学上强密码功能的硬件中执行的数学上强密码功能有要求,并且密码资源池可以充当对硬件进行分配的装置,该硬件被配置为执行数学上强密码功能。密码资源池579可以包括例如包围区池、被配置为执行加速的零知识证明功能的fpga池、一个或多个复合密码资源池等等。(多个)复合密码资源池可以各自包括一种密码资源,该密码资源包括被配置为执行密码功能的一个或多个组合密码资源。例如,一个示例复合密码资源池是密码资源池,其中池中的每个密码资源都包括图形卡、一个或多个fpga和包围区,其被组合在一群(bundle)中一起操作以执行特定的密码功能。

小密码容器服务561可以创建小密码容器535。小密码容器535可以从小密码531读取元数据,可以确定小密码531所需的每个密码资源的类型、质量和数量,并且可以发送对所确定的密码资源的请求给证明引擎服务562。例如,特定的小密码可能需要用于数字签名的包围区以及用于加速的零知识证明的fpga。

然后,证明引擎服务562可以从密码资源池579中获取被请求的密码资源。然后,证明引擎服务562可以将证明生成代码(如果有的话)注入到获取的密码资源中,这将使获取的密码资源变成证明委托,诸如证明委托571。作为示例,可能需要包围区来进行椭圆曲线签名。在这些示例中的一些中,用于执行椭圆代码签名的代码被证明引擎服务562注入到包围区中。在一些示例中,获取的密码资源和证明生成代码的组合是证明委托。在一些示例中,证明委托的目的是结合任何所需的(多个)证明来执行特定的密码功能。证明引擎服务562可以访问包括各种类型的证明生成代码的库,获取所需的证明生成代码,然后将所需的证明生成代码注入到密码资源中。

如果需要诸如密钥之类的任何秘密,则证明引擎服务562可以使得在小密码531和诸如密钥保管库565的hsm之间发起安全隧道,以便小密码531可以经由安全隧道接收秘密。例如,签名委托可能需要将存储在密钥保管库中的私钥注入到签名委托中。在一些示例中,对于所获取的密码资源中的至少第一密码资源,证明引擎服务562基于所获取的密码资源的类型来确定第一密码资源需要哪些秘密,并发起hsm(例如,密钥保管库567)和第一密码资源之间的安全隧道以用于将秘密注入到第一密码资源中。在一些示例中,对于所获取的密码资源中的至少第二密码资源,证明引擎服务562确定第二密码资源需要哪些秘密,其中基于第二密码资源是与第一密码资源不同类型的密码资源,为第二密码资源所获取的秘密与为第一密码资源所获取的秘密不同。

然后,证明引擎服务562可以将所请求的证明委托,例如,证明委托571,发送到小密码容器535。然后可以执行小密码,并且证明委托允许执行小密码531的小密码代码所需的密码功能以及任何需要的证明。

说明性过程

为了清楚起见,根据由系统的特定设备或组件以特定顺序执行的操作来描述本文所述的过程。然而,应注意,其他过程不限于所陈述的序列、设备或组件。例如,某些动作可以以不同的顺序被执行、被并行地执行、被省略,或者可以由附加的动作或特征来补充,而不管本文是否描述了这样的顺序、并行性、动作或特征。同样,可以将本公开中描述的任何技术并入到所描述的过程或其他过程中,而不管该技术是否结合过程进行了具体描述。所公开的过程也可以在其他设备、组件或系统上被执行或由其他设备、组件或系统执行,而不管本文中是否描述了这样的设备、组件或系统。这些过程也可以以多种方式来体现。例如,其可以被体现在制品上,例如被体现为存储在处理器可读存储介质中的处理器可读指令,或者被执行为计算机实现的过程。作为备选示例,这些过程可以被编码为处理器可执行指令并经由通信介质被发射。

图6是图示了可以作为图5的系统500的示例而被采用的系统(600)的数据流的图。在一些示例中,系统600包括证明引擎服务662、小密码容器服务(ccs)661、小密码容器635和hsm665。

在所图示的示例中,首先,发生步骤681。在步骤681处,在一些示例中,ccs661接收生成小密码实例的请求。如所示,在一些示例中,步骤682接下来发生。在步骤682处,在一些示例中,ccs661为被请求的小密码创建小密码容器635。如所示,在一些示例中,步骤683接下来发生。在步骤683处,在一些示例中,ccs651向小密码容器635提供用于被请求的小密码的绑定和小密码id。如所示,在一些示例中,步骤684接下来发生。在步骤684处,在一些示例中,小密码容器635从安全存储装置中提取用于被请求的小密码的小密码二进制。

如所示,在一些示例中,步骤685接下来发生。在步骤685处,在一些示例中,小密码容器635基于小密码代码中的元数据来确定小密码的需要。如所示,在一些示例中,步骤686接下来发生。在步骤686处,在一些示例中,小密码容器635将请求传送给证明引擎服务662。在一些示例中,该请求是对小密码所需的证明委托的请求,如先前在步骤685处所确定的。在一些示例中,发送具有用于小密码的绑定id的请求。

如所示,在一些示例中,步骤687接下来发生。在步骤687处,在一些示例中,证明引擎服务662确定证明引擎服务是否可以利用其密码资源池中的资源来履行该请求。如果不是,则在一些示例中,证明引擎服务662向小密码容器635请求更多的时间来履行该请求,并留在步骤687处。如果在一些示例中,步骤687的确定是肯定的,则过程继续到步骤688。

在一些示例中,在步骤688处,证明引擎服务662从对应的密码委托池中获取与所请求的证明委托相对应的密码资源。如所示,在一些示例中,步骤689接下来发生。在步骤689处,在一些示例中,证明引擎服务662针对所获取的每个密码委托确定哪种类型的证明生成代码将被用于该密码委托。在一些示例中,存在证明生成代码的库,证明引擎服务662使用该库来基于所获取的密码委托的类型而为每个获取的密码委托选择并获取特定类型的证明生成代码。

如所示,在一些示例中,步骤690接下来发生。在步骤690处,在一些示例中,对于每个获取的密码资源,证明引擎服务662为密码资源注入所确定的类型的证明生成代码。在一些示例中,一旦将证明引擎代码注入到密码资源中,该密码资源现在就是证明委托。如所示,在一些示例中,步骤691接下来发生。在步骤691处,在一些示例中,证明引擎服务662基于每个证明委托的密码资源类型来确定是否将秘密(例如,密钥)用于证明委托。如果否,则在一些示例中,过程前进到步骤695。否则,在一些示例中,过程前进到步骤692。在步骤692处,在一些示例中,证明引擎服务662经由安全隧道将对要被发送的秘密的请求从hsm665传送给证明委托。

如所示,在一些示例中,步骤693接下来发生。在步骤693处,在一些示例中,hsm665取回所请求的秘密。如所示,在一些示例中,步骤694接下来发生。在步骤694处,在一些示例中,hsm665在指定的证明委托处经由hsm665之间的安全隧道将所请求的秘密递送给由证明引擎服务指定的证明委托。如所示,在一些示例中,步骤695接下来发生。在步骤695处,在一些示例中,证明引擎服务662将被请求的证明委托发送到小密码容器635。如所示,在一些示例中,步骤696接下来发生。在步骤696处,在一些示例中,小密码容器635使小密码代码执行,并且小密码代码在执行时请求(多个)证明委托提供的(多个)密码功能。

如所示,在一些示例中,步骤697接下来发生。在步骤697处,在一些示例中,小密码容器635处理在执行小密码期间由小密码代码所生成的有效负载,并将该有效负载传送给ccs661。如所示,在一些示例中,步骤698接下来发生。在步骤698处,在一些示例中,小密码容器661使证明委托经由安全隧道发送任何新的秘密以保持到hsm665。如所示,在一些示例中,步骤699接下来发生。在步骤699处,在一些示例中,小密码容器635将(多个)密码资源释放到其相应的密码资源池。

图7是图示了用于安全事务和逻辑的机密执行的示例过程(780)的流程图,其可以由证明引擎服务来执行,证明引擎服务诸如图5和/或图6的证明引擎服务。

在所图示的示例中,步骤786首先发生。在一些示例中,在步骤786处,针对密码资源的请求被接收。在一些示例中,针对密码资源的请求包括绑定身份(id)。如所示,在一些示例中,步骤788接下来发生。在步骤788处,在一些示例中,响应于针对密码资源的请求,从多个密码资源池中的至少一个密码资源池中获取密码资源。在一些示例中,多个密码资源池中的单独的密码资源池是单独密码资源类型的池。

如所示,在一些示例中,步骤789接下来发生。在步骤789处,在一些示例中,确定哪种类型的证明生成代码适合于所获取的每个密码资源。如所示,在一些示例中,步骤790接下来发生。在步骤790处,在一些示例中,对于所获取的每个密码资源,将所确定的类型的证明生成代码注入所获取的密码资源中。然后,该过程可以前进到返回框,在这里继续进行其他处理。

结论

尽管以上具体实施方式描述了该技术的某些示例,并且描述了预期的最佳模式,但是无论以上在文本中显得如何详细,都可以以许多方式来实践该技术。各种细节可以在实现中变化,同时仍然被本文所描述的技术所涵盖。如上所指出,当描述技术的某些特征或方面时使用的特定术语不应被理解为暗示该术语在本文中被重新定义为限于与该术语相关联的任何特定的特性、特征或方面。通常,除非具体实施方式明确定义了这样的术语,否则不应该把在以下权利要求书中使用的术语解释为将本技术限制于本文所公开的特定示例。因此,该技术的实际范围不仅涵盖所公开的示例,而且包括实践或实现该技术的所有等效方式。

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