用于区块链网络的凭证生成与分发方法和系统与流程

文档序号:19734797发布日期:2020-01-18 04:20阅读:371来源:国知局
用于区块链网络的凭证生成与分发方法和系统与流程

本发明总体上涉及区块链交易,具体涉及在节点之间建立可信点对点通信的方法和设备。



背景技术:

在本文档中,我们使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本(distributedledger),包括但不限于基于共识的区块链和交易链技术、许可和未许可的账本、共享账本及其变形。尽管已经提出并开发其他区块链实施方案,但区块链技术最广为人知的应用是比特币账本(bitcoinledger)。虽然本文中出于方便和说明的目的可以引用比特币,但应指出的是,本发明并不限于与比特币区块链的使用,其他替代性的区块链实现方案和协议也落入本发明的范围内。

区块链是基于共识的电子账本,其实现为基于计算机的去中心化、分布式系统,由区块构成,而这些区块进而由交易构成。每个交易(tx)都是对区块链系统中的参与者之间的数字资产的控制的转移进行编码的数据结构,并且该数据结构包括至少一个输入和至少一个输出。每个区块均包含前一区块的散列,这些区块被链接在一起,以创建一个永久的、不可更改的记录,该记录自区块链创建以来写入了该区块链的所有交易。交易包含嵌入其输入和输出中的称为脚本的小程序,这些程序指定了如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言来编写的。

接收新交易的网络节点将迅速尝试将该交易推送到网络中的其他节点。在将新交易传输到其他节点之前,它会被“验证”,这意味着将根据一组标准对新交易进行检查,以确保该交易符合根据适用区块链协议进行适当交易的基本要求。

为了将交易写入区块链,节点(“挖矿节点”的“矿工”)将该交易合并到一个区块中,该节点旨在收集交易并将这些交易形成区块。矿工再尝试完成与该节点相关的“工作证明”。整个区块链网络中的矿工竞相成为第一个组建交易区块并完成该区块相关工作证明的矿工。成功的矿工将其已确认的区块添加到区块链中,并且该区块通过网络传播,以便维护区块链副本的其他节点可以更新其记录。接收区块的节点也“验证”该区块及其中的所有交易,以确保其符合协议的正式要求。

去中心化点对点系统中的挑战之一是确保一个节点可以在可信的基础上与网络中的另一个节点进行通信。随着一些实施方式的网络架构的发展,一些节点可能承担更多的专用任务,而其他节点可能依赖那些专用的节点作为某些数据的来源或某些功能的执行者。如果一个节点要依赖另一个节点获取信息或作为合法来源,则它需要能够建立与该节点进行通信的可信关系。在节点可能具有不同角色的情况下,最好有一种确定和验证节点角色的机制。此外,如果一个节点被证明是非法的或恶意的,则其他节点应该可以记住该节点,从而忽略未来来自这样一个节点的通信。在点对点系统中,所面对的挑战是要在不损害系统的点对点性质的情况下,通过施加中央权限来解决这些问题。

现在已经设计出了这样的解决方案。



技术实现要素:

因此,根据本发明,提供一种如所附权利要求中限定的方法及系统。

本申请可描述和公开管理从自治专用节点组到请求节点的凭证的安全分发的方法和设备。凭证的安全分发可以使用秘密份额和任何节点都不重建或拥有的组私钥。该凭证包括用于请求节点的标识符和秘密点,该秘密点是节点从多个专用节点中的每个提供的秘密点的部分中组合而成的,其中秘密点基于组私钥和请求节点的标识符的映射到点散列(map-to-pointhash)。在某些实施方式中,节点可以是区块链节点。

本申请可进一步描述和公开两个节点在自治专用节点组的证明下彼此认证,而不涉及该组或不涉及去中心化证书管理器或认证器的方法和设备。该方法可包括第一节点和第二节点使用包含它们各自标识符和秘密点的双线性配对运算来导出相同的会话密钥。假设秘密点和标识符是通过使用组私钥从该组中获得的,那么双线性配对运算会使得在两个节点中的每个节点处生成相同的会话密钥,从而认证它们各自的凭证并实现两个节点之间的可信通信。

附加地或替代地,本申请描述了一种计算机实现的方法,该方法用于节点从专用节点组获得凭证,每个专用节点具有组私钥的私钥份额。该方法可包括:从所述节点向多个专用节点发送对所述凭证的请求,其中,所述节点具有标识符;从所述多个专用节点中的每个节点处接收秘密点的一部分,所述秘密点的一部分由所述节点从所述标识符和所述节点的私钥份额中生成;通过组合接收到的所述秘密点的部分来生成所述秘密点,其中,所述秘密点为组私钥乘以标识符的映射到点散列,所述凭证是所述标识符和所述秘密点。要获得组私钥的完整副本可能不需要任何所述专用节点或所述节点。

在一些实施方式中,发送请求包括向所述多个专用节点中的每个发送单独的请求。所述标识符可包括标识所述节点的标识符字符串和标识所述专用节点组角色的角色字符串。在一些情况下,所述标识符还包括所述凭证的到期时间,并且在一些其他情况下,发送请求包括发送所述标识符字符串,并且其中接收包括接收所述标识符。

在一些实施方式中,生成所述秘密点包括组合接收到的秘密点的部分。在一些示例实施方式中,组合可包括求和。

在一些实施方式中,所述秘密点是使用秘密份额并基于组私钥生成的。在某些情况下,秘密份额使用拉格朗日插值法和多个专用节点的私钥份额,而不重建组私钥。

附加地或替代地,本申请可描述一种用于第一节点与第二节点建立可信通信的计算机实现的方法,所述第二节点具有第二节点标识符和第二秘密点,所述第二秘密点为组私钥与所述第二节点标识符的映射到点散列相乘,所述组私钥与用于授予凭证的节点组相关联。所述方法可包括:从所述节点组获取第一秘密点,其中,所述第一秘密点为组私钥与第一节点标识符的映射到点散列相乘;将所述第一节点标识符发送给所述第二节点;接收所述第二节点标识符;使用双线性配对运算、所述第二节点标识符的映射到点散列、和所述第一秘密点一起来生成第一会话密钥;确认所述第一会话密钥与第二会话密钥相匹配,所述第二会话密钥由所述第二节点使用双线性配对运算、所述第二秘密点、和所述第一节点标识符的映射到点散列一起生成。

在一些实施方式中,所述通过双线性配对运算生成所述第一会话密钥由以下表达式之一来表示:

ka=e(h1(idb),sa),和

ka=e(sb,h1(ida)),

通过双线性配对运算生成所述第二会话密钥由所述表达式中的另一个来表示,并且其中e()是双线性配对运算,h1()是映射到点散列,ida和idb分别是所述第一节点标识符和所述第二节点标识符中的一个,sa和sb分别是所述第一秘密点和所述第二秘密点中的一个。

在一些实施方式中,获得所述第一秘密点包括从所述节点组中的多个节点中的每一个获得所述第一秘密点的各个部分,并且组合所述各个部分来形成所述第一秘密点,而不重组所述组私钥。

在一些实施方式中,所述确认包括:将用所述第一会话密钥加密的质询(challenge)从所述第一节点发送到所述第二节点,接收对所述质询的响应,并基于所述响应,确定所述第二节点使用所述第二会话密钥有效地解密了所述质询。

在一些实施方式中,所述发送还包括发送第一随机数,并且其中,所述接收还包括接收第二随机数和计算的c0值,其中,所述c0值包括所述第二会话密钥、所述第一随机数、和所述第二随机数的级联的散列。在这些情况的某些中,所述级联还包括所述第一节点标识符和所述第二节点标识符。在这些情形下的某些中,所述生成包括生成计算的c1值,所述c1值包括所述第一会话密钥、所述第一随机数、和所述第二随机数的级联的散列,并且其中,所述确认包括确认所述计算的c0值与所述计算的c1值相匹配。

在一些实施方式中,所述第二秘密点为所述组私钥乘以所述第二节点标识符的映射到点散列。

在一些实施方式中,所述第一秘密点和所述第二秘密点各自被所述节点组使用秘密共享分别提供给所述第一节点和第二节点。

附加地或替代地,本申请可描述一种节点,包括一个或多个处理器,存储器,网络接口以及包括处理器可执行指令的应用,这些指令在被执行时使得所述节点执行本文所述方法中一种或多种方法的操作。

附加地或替代地,本申请可描述一种存储处理器可执行指令的非易失性处理器可读介质,所述处理器可执行指令在由一个或多个处理器执行时使得所述一个或多个处理器执行本文所述方法中一种或多种方法的操作。

附图说明

参考本文描述的实施例,本发明的这些方面和其他方面将变得清楚并得以阐明。现在将仅通过举例的方式并参考附图来描述本发明的实施例,其中:

图1示出了区块链节点的示例网络;

图2示出了包含专用节点的示例区块链网络;

图3示出了示例区块链网络,其中所述专用节点形成覆盖网络;

图4示意性地示出了与挖矿节点交互的专用区块链节点的网络;

图5示意性地示出了从专用区块链节点组或专用区块链节点网络处请求凭证的区块链节点;

图6示意性地示出了区块链节点从所述专用区块链节点组中获得部分凭证的示例实施方式;

图7以流程图形式示出了从区块链节点组获得凭证的示例过程;

图8示出了两个区块链节点彼此认证从专用区块链节点组获得的凭证的示例过程的示意图;

图9示出了两个区块链节点彼此认证从专用区块链节点组获得的凭证的另一示例过程的示意图;

图10示出了示例区块链节点的简化框图。

具体实施方式

在本申请中,术语“和/或”旨在涵盖所列元素的所有可能的组合和子组合,包括任何一个单独列出的元素、任何子组合或所有元素,并且不一定排除附加元素。

在本申请中,短语“……或……中的至少一个”旨在覆盖任何一个或多个所列元素,包括任何一个单独列出的元素、任何子组合、或所有元素,不一定排除任何其他元素,并且不一定要求具有所有元素。

尽管以下描述的示例参考了在区块链网络的上下文中的实施方式,但是应当理解的是,本申请不必限于区块链节点或在区块链网络中的实施方式。

首先参考图1,图1以框图形式示出了与区块链相关联的示例网络,在此可以称为区块链网络100。区块链网络100是一个点对点的开放式成员网络,任何人都可以加入,无需邀请或无需经其他成员同意。运行区块链协议(区块链网络100在区块链协议下运行)实例的分布式电子设备可以参与区块链网络100。这种分布式电子设备可以称为节点102。例如,区块链协议可以是比特币协议或其他加密货币。

运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括例如计算机(如台式计算机、笔记本电脑、平板电脑、服务器)、移动设备(如智能手机)、可穿戴计算机(如智能手表)、或其他电子设备。

区块链网络100的节点102使用合适的通信技术彼此连接,该通信技术可以包括有线和无线通信技术。在许多情况下,区块链网络100至少部分地由互联网实现,并且一些节点102可以位于地理上分散的位置。

节点102维护区块链上所有交易的全局账本,按组分为不同的区块,每个区块包含链中先前区块的散列。全局账本是分布式账本,每个节点102可以存储全局账本的完整副本或部分副本。通过节点102影响全局账本的交易由其他节点102验证,从而保持全局账本的有效性。本领域的普通技术人员将会理解实现和操作(例如使用比特币协议)区块链网络的细节。

每个交易通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定了如何以及由谁可以访问交易的输出。交易的输出可以是作为交易结果的值被转移到的地址。然后,该值与该输出地址相关联,作为未花费的交易输出(utxo)。随后的交易可以将该地址作为输入,以花费或分散该值。

节点102可以根据其功能而具有不同的类型或类别。已被提出,与节点102相关联的四个基本功能是:钱包,挖矿,完整的区块链维护和网络路由。这些功能也可以有变形。节点102可以具有这些功能中的一个以上。例如,“完整节点”提供所有四个功能。轻量级节点例如可以在数字钱包中实现,并且可以仅具有钱包和网络路由功能。数字钱包可以追踪区块头,而不是存储整个区块链,区块头在查询区块时用作索引。

如上所述,挖矿节点(“矿工”)竞相在区块链创建下一个区块。为了组建区块,矿工将区块构建为来自未确认交易池(“内存池”)的一组交易。然后,矿工尝试完成与其所组建的区块相关的工作证明。如果矿工在收到任何其他矿工已成功生成区块并完成其工作证明的通知之前已经完成工作证明,则该矿工通过将该区块发送到网络上的对等节点来传播其区块。这些节点验证该区块,然后进一步将其在网络中发送到其他节点。如果矿工在完成自己的工作证明之前收到另一个区块已完成的通知,那么该矿工就会放弃努力并开始尝试构建下一区块。区块的快速传播有助于避免对矿工和验证节点的浪费。

在区块链的当前实施方式中,例如比特币网络,每个接收区块的节点首先验证该区块,然后将该区块发送到其他节点。验证区块所需的时间减慢了区块在网络中的传播速度。注意,区块链的一些实施方式,包括现有协议的演进,可以仅由节点的子集而不是网络中的每个节点来提供区块验证。然而,大多数节点上的区块验证仍然可能是任何区块链实施方式的特征,以防止无效区块通过网络传播。

验证区块涉及确认该区块符合适用区块链协议设定的规定标准。在比特币核心客户端的检查区块(checkblock)和检查区块头(checkblockheader)功能中定义了适用于比特币协议的示例标准。除了确认区块本身符合规定的标准外,还可以评估区块内的每个交易以符合交易级标准。例如,应用在比特币协议中的交易级标准可以在接受内存池(accepttomemorypool)、检查交易(checktransaction)和检查输入(checkinputs)功能中详细查看。

通常,交易级验证标准是交易在适用的区块链协议下被视为有效必须具备的规定特征。同样地,区块级验证标准是区块在适用的区块链协议下被视为有效必须具备的规定特征。

区块链的某些演变可以为更多的专用节点提供服务。例如,可能存在节点,其被构造为具有大量快速访问存储器和大量网络通信资源的存储节点。存储节点可以实现存储未确认交易的分布式交易数据库(“内存池”)。在一些实施方式中,存储节点可以为未花费的交易输出实现分布式utxo数据库。在某些情况下,可以通过分布式散列表的方式来实现这些分布式数据库。另一个示例是,一些节点可以被构造为确认器节点,其被设计为着重于交易的快速验证和传播。确认器节点和存储节点可以通过在区块链网络100内形成快速交易商网络,来促进与大规模支付处理相关的交易量的增加,该快速交易商网络被设计用于分布式大容量存储以及快速验证和传播交易。

在支付处理中使用的交易的数量的显着增长,将增加存储在每个内存池中交易的成交量。假设交易(tx)的平均大小为500字节,交易速率为~10tx/s,则该内存池可接收~400gb的每日传入数据。所有这些数据都需要在未确认交易的内存池中存储不同的时间。因此,在一些实施方式中,节点网络可以使用通过分布式散列表(dht)实现的共享内存池,以便存储未确认交易池,而不是在每个节点处存储完整的内存池。在这样的实施方式中,挖矿节点和/或某些其他类型的节点可以不必在本地维护完整的内存池,以减轻它们存储和更新非常大的未确认交易池的负担。取而代之的是,挖矿节点和/或其他类型的专用节点可依靠存储网络和/或确认器节点来管理内存池的维护。在下面的一些示例中,术语“专用节点”可用于指代在区块链网络中具有特定角色的节点,例如确认器节点,存储节点等。

参考图2,图2示出了节点的区块链网络200的一种示例实施方式。区块链网络200包括多个专用节点202和多个挖矿节点204。在该示例中,专用节点202在物理上和逻辑上分布在整个网络200中。可以理解的是,区块链网络200可包括一些其他类型的节点,这些节点包括完整节点、简化付款验证(simplifiedpaymentverification,简称spv)节点(例如,钱包)和其他具有重点用途的专用节点。

区块链网络300的另一示例实施方式已在图3中示出,其示出了专用节点202在区块链网络300内形成(逻辑)覆盖网络302。覆盖网络302可用于确保覆盖网络302内专用节点202之间的快速通信,以确保从共享内存池快速访问和检索。

在该示例中,专用节点202可作为结构的一部分来实现以促进快速交易验证和传播,从而通过区块链网络200、300进行促进大笔支付处理。就这一点而言,专用节点202可以是着重于交易验证和传播的确认器节点和着重于区块挖矿的挖矿节点204,且无需存储内存池或验证交易。在该示例中,专用节点202可有权直接访问内存池,因为其参与了内存池的基于dht的存储,或者可有权经由一个或多个存储节点访问内存池。

对区块链网络200、300和各个节点的角色进行重组以鼓励快速的交易处理,可能在确保区块链的增长和各个节点的非恶意参与方面造成挑战。通过避免一个或多个中央机构施加的控制来维持区块链网络200、300的去中心性是非常重要的。为了使网络200、300正常运行,挖矿节点204、专用节点202和其他专用节点将以一种方式进行交互,这种方式确保每个节点可靠地执行其自身功能或角色,并且可以信任其他节点将可靠地执行其功能或角色。为此,专用节点202和挖矿节点204之间的交互可以使用多个交易,这些交易促进在追求区块的快速挖矿和传播中的合作。

现参考图4,图4示意性地示出了多个挖矿节点402(分别示为402a,402b,402c)和包含多个专用节点202的覆盖网络302。在该示例中,专用节点202将内存池实现为共享内存池,使用例如dht在专用节点202之间以分布式方式存储未确认交易的大型数据库。但是,这只是一个示例实施方式,在某些其他实施方式中,每个专用节点202可以存储内存池的完整副本。

挖矿节点402可包括单独矿工,如附图标记402b和402c所示,也可包括包含多个矿工的挖矿池,如附图标记402a所示。

在该示例中,挖矿节点402不具有内存池的完整副本,并且依赖于专用节点202为它们提供挖掘新区块所需的材料。特别地,专用节点202中的一个可以邀请挖矿节点402使用一组未确认交易来参与挖掘新区块,该组未确认交易的专用节点202有权在内存池中访问。挖矿节点402可以选择通过接收该组新的未确认交易来同意参与挖矿活动。作为从每个挖矿节点402接收存款的交换,专用节点202向每个节点提供一组交易(或一组交易的散列)。如果参与的挖矿节点402之一成功地从该组交易中创建了新的区块,则该挖矿节点402除了接收用于挖掘区块的正常费用之外,还从专用节点202接收其存款的退款。其他未成功的挖矿节点402没收它们的存款提供给专用节点202。如果参与的挖矿节点402中没有一个成功创建下一个区块,则专用节点202退还它们的存款,减去由专用节点202部分收取的验证费,作为对其在验证交易以及向挖矿节点提供该组已验证交易方面所做努力的补偿。

然而,在该示例中,挖矿节点402将希望能够认证专用节点202是专用节点池的合法成员。同样,在专用节点202自身中,它们可能需要认证其中一个专用节点202的身份以及该节点参与协作工作的权限。在许多网络架构中,此功能是通过实施中央认证服务(例如证书颁发机构等)来实现的,该中央认证服务对凭证进行集中管理并对参与节点进行认证。但是这种架构在分布式点对点架构中是不受欢迎的,因为在分布式对等架构中应避免中央控制或中央机构。

随着区块链网络架构发展以适应具有特殊角色的节点(无论是用于验证、存储、挖矿还是其他功能),在区块链网络的其他部分也可能出现相同的问题。这些节点充当具有特定角色的组的成员,并且具有该角色的组的其他成员希望能够标识和认证该组中的成员身份。同样,不是该组成员但与该组专用节点交互并需要“信任”该组专用节点的节点希望能够对该节点在组中的成员身份进行认证。因此将期望使节点能够认证身份和成员身份,无需在去中心化的区块链网络上施加中心化证书颁发机构。

一方面,本申请提供一种用于依赖于节点组之间的分布式私钥份额来认证节点的方法和设备,该节点组为专用节点组的成员。因此,通过组中的专用节点的协作生成凭证并将其提供给请求节点,这样,任何一个专用节点都不能单独向请求节点提供有效凭证。

另一方面,本申请提供一种通过确认每个节点都拥有由同一组节点授予的凭证来在两个节点之间建立可信通信信道的方法。可信通信通道中涉及的节点可以都是授予凭证的组的成员,但不一定是成员。在一个示例中,一个节点是专用节点组的成员,而另一个节点不是。对两个节点的凭证的有效性进行的确认,可以基于每个节点使用双线性配对运算生成密钥,确保密钥匹配来进行。用于该个节点的双线性配对运算可包括另一节点的标识符的映射到点散列和由该节点组协作地生成并提供给该个节点的秘密点,该映射到点散列和该秘密点作为自变量。

现参考图5,图5示意性地示出了专用节点组502。请求节点504希望从该专用节点组502获得凭证,以便能够证明其作为专用节点之一或作为与专用节点之一通信的节点的身份。请求节点504可以是或可以不是该专用节点组502的一部分。

请求节点504将对于凭证的请求506发送到节点组502。该请求506与请求节点504的标识符相关联。该标识符可以由请求节点504生成,并且在一些实施方式中与请求506一起发送。例如,请求节点504可以生成其标识符“alice”,并告诉节点组502其身份(id)为alice。在一些实施方式中,标识符可以由节点组502来分配,或更具体地的说,由节点组502中的节点之一来分配,并且传达给请求节点504。在一些实施方式中,请求节点504向节点组502提供其“名称”或标识符字符串例如“alice”,该名称或标识符字符串可以是任何字母数字字符串或其他唯一标识符。节点组502可以将附加信息级联到标识符字符串,以生成请求节点504的标识符。例如,节点组502可以将标识符字符串与节点组502的名称或标识符相结合。在一些实施方式中,名称是节点组502的“角色”或功能,例如“确认器”等。在一些实施方式中,节点组502可以将标识符字符串与凭证的到期时间相结合,这样评估请求节点504凭证的任何其他节点都可以根据其标识符评估凭证是否仍然未到期。在下文示出的一个示例实施方式中,请求节点504的标识符由标识符字符串(例如,alice)与凭证的到期时间的级联形成,该标识符字符串为识别节点组502或节点的功能角色的角色字符串。标识符的其他可能的实施方式将被本领域普通技术人员理解。

节点组502中的每个节点包括私钥k的份额ki。秘密共享用在阈值密码系统中,在该阈值密码系统中,秘密k在n个用户之间分配,因此至少需要t+1个参与者进行协作才能重建k。已知秘密k中的任何t个都无法对剩下的一个进行确定。

秘密共享是基于多项式插值的,并且假定秘密是有限域f的元素。该方案包括一个交易者(也存在无交易者版本),一组n个参与者u1,…,un。在该协议中,任意随机秘密作为f(0)存储在t次多项式f(x)中,只有节点i才能计算其份额f(xi)。如果n个节点中的t+1个协作,则它们可以重构f(x)上的任何点,密钥k的份额k1,k2,…,kn对应于使用拉格朗日多项式插值法的f(x1),f(x2),…,f(xn)。拉格朗日多项式插值法提供了可以用t+1个点重建t次函数f(x):

p={(x1,f(x1)),(x2,f(x2)),…,(xt+1,f(xt+1))}

其中,

注意:bi,p(xi)=1和bi,p(xj)=0。在此,bi是插值系数。

在涉及无交易者份额分配的实施方式中:

1.为每个节点i分配所有人都知道的xi。每个xi都须是唯一的。

2.每个节点i生成t次随机多项式fi(x)。

3.每个节点i向每隔一个节点秘密发送它们各自在多项式fi(xj)modn上的点。

4.每个节点i将所有接收到的f1(xi),f2(xi),…fp(xi)以及所有modn相加(其中n是基域的特性(也可以表示为gf(n),))以形成ki=f(xi)modn,其是多项式f(x)modn的份额。

再参考图5的示例,节点组502中的节点协作来为请求节点504生成秘密点sa,如附图标记508所示。秘密点sa在循环群g1中,由以下有关握手和配对的解释中可以清楚看出其重要性。秘密点与标识符相关,符合以下关系式:

sa=k·h1(ida)

其中,ida是请求节点504的标识符。在某些实施方式中,可以将凭证当做(ida,sa)。h1是一个映射到点的散列函数,下文将对此进行更详细的说明。

为了在不重建组私钥k的情况下生成秘密点,节点组502使用秘密共享加入(secretsharejoining)的形式协作生成sa。图6示出了节点组502向请求节点504授予凭证的另一示例。在该图示中,请求节点504将凭证请求发送到节点组502的至少t+1个节点。这些节点中的每个节点向请求节点504提供sa的一部分。特别地,秘密点sa的每个份额sai由节点i确定并发送到请求节点504,然后请求节点504将它们组装(即,将它们组合)到秘密点sa中。在一些示例中,份额sai的组合是通过将份额sai相加以获得秘密点sa来实现的。

现参考图7,其以流程图形式示出了用于基于组的分布式凭证生成的一个示例过程700。过程700由请求节点执行。首先,在操作702中请求节点将索引i设置为1。然后,请求节点从节点i处请求凭证。节点i是节点组中的专用节点,该节点组用于执行本文描述的凭证授予过程的实现。节点i使用组私钥份额ki的一部分来确定秘密点sa的第i部分。该部分可以称为sai。

在操作706中,请求节点从第i个节点处接收该部分sai,即,接收部分凭证。在操作708中,接收节点评估索引i是否为t+1。如果是,则接收节点已接收到t+1部分凭证,但是如果没有,则仍需要其他部分凭证来重建秘密点sa。如果i还不等于t+1,则在操作710中将其增加1,并且过程700返回到操作704,以从节点组中的另一节点处请求另一部分凭证。如果i等于t+1,则在操作712中,请求节点组装秘密点sa。

通过节点组中的节点的共同努力获得凭证后,最好有一个机制来检查或确认凭证而不依赖于中央机构或返回到该组进行确认/认证。这样,两个声称拥有来自同一节点组的有效凭证的节点可以确认彼此的凭证,而无需承担时间延迟和通信开销的负担,这些通信开销与使节点组协作验证和确认所发出的凭证相关。

作为概述,可以认为组私钥k是有限域的一个成员,即凭证在获取它们的请求节点中以其标识符ida和循环群g1中的秘密点sa的形式存在。在该示例实施例中,标识符(或“假名”)ida是(alice||role||expirationtime)其中||表示两个字符串的级联,而role是与节点组和/或其功能或角色相关联的字符串或其他字母数字标识符。请求节点可以向任何人透露其标识符,但会将sa保密。

另一请求节点将标识符idb获得为(bob||role||expirationtime)和秘密点sb。

注意,秘密点sa由sa=k·h1(ida)获得,且秘密点sb由sb=k·h1(idb)获得。

当alice和bob希望彼此建立可信通信时,即他们中的一个或两个都希望验证彼此的凭证时,两个节点交换各自的标识符/假名而不公开各自的秘密点。

然后,节点alice通过以下计算生成会话密钥ka:

ka=e(h1(bob||role||expirationtime),sa)

其中,e()是双线性映射,即配对运算,节点bob通过以下计算来计算会话密钥kb:

kb=e(sb,h1(alice||role||expirationtime))

运算h1()是映射到点函数,下文将进一步说明。由于配对的性质,上述两个密钥是相同的,即ka=kb。这两个节点可以通过发送质询值并获得对质询值的响应来验证协议的成功,即这两个节点各自持有由同一节点组发出的指示相同角色的凭证。或者,一方可以向另一方发送一些内容,当且仅当握手成功时,该内容才会被成功解密。

该示例中的配对运算在这种情况下依赖于sa和sb来自相同循环群g1。在其他情况下,sa和sb可能来自不同的循环群g1和g2,g1和g2作为两个阿贝尔群相互关联,其在另一个阿贝尔群的取值为:

e:g1×g2→gt

其中g1、g2、和gt是顺序相同的循环群。

凭证的生成中有一些参数是公共的,这些参数可以由该过程中的任何节点生成,并与其他节点共享。假设e是在域上包含n个点的椭圆曲线,其中q是相对于2和3互质的质数的幂,则公共参数可包括以下内容:

params=(p,g1,g2,gt,g1,g2,e,h1,h2)

其中,g1(resp.g2)是具有双线性映射e(.,.)的质数阶p的群g1(resp.g2)的生成元。g1是阶为r的的循环子群,其中r,q互质。并且,e(g1,g2)生成gt,gt的阶也为p。h1和h2分别是相对于g1和g2的映射到点散列。如上所述,在一些实施方式中,并且在本文描述的多个示例中,可能仅使用g1,这意味着对秘密点sa和sb使用相同的映射到点的散列函数h1。

在某些椭圆曲线密码系统中,散列算法用于将密码或其他字符串(其为有限字段的元素)映射到给定椭圆曲线的点上,这些都是映射到点的散列。更确切地说,映射到点的散列函数h1是一种转换,该转换接受消息m作为输入并返回点p∈e(k)。更具体地说,h1返回点p∈e(k)[r],其中e(k)[r]是由g1生成的e(k)的子群。在该方案中,存在从基域到曲线的一对一映射f。这使得可以使用f(h(m))进行散列,其中h是经典散列函数,且

现参考图8,图8示出了两个节点a和b之间通过验证彼此的凭证来建立可信通信通道时的消息流。在该示例实施方式中,节点a将其标识符ida提供给节点b。标识符ida是公共可用的,并且在某些情况下可以由节点b从另一个来源获得。据此,节点b能够使用节点a的标识符、节点b所持有的秘密点sb、以及映射到点散列函数h1(映射到点散列函数h1由发布凭证的节点组规定)来生成会话密钥kb。会话密钥kb是使用配对运算e()生成的,配对运算e()也由节点组规定:

kb=e(sb,h1(alice||role||expirationtime))

其中,在此示例中,节点b的标识符idb为(alice||role||expirationtime)。

节点b将其标识符idb提供给节点a,然后节点a能够使用节点b的标识符、其秘密点sa、以及以下同样的配对运算和映射到点函数,类似地生成会话密钥ka:

ka=e(h1(bob||role||expirationtime),sa)

如果秘密点是由节点组使用相同的组私钥k以及节点a和b各自的标识符合法协作生成的,则配对运算应得出ka=kb。这可以是以任意多种方式进行的测试。在此示例实施方式中,节点a向通过会话密钥ka加密的节点b发送质询。节点b尝试使用其会话密钥kb解密质询并发送对该质询的响应。该响应可以由会话密钥kb加密。在此基础上,两个节点都可以确保具有相同的会话密钥。该会话密钥可以用于加密两个节点之间的通信。在另一种实施方式中,会话密钥可用于加密致使建立另一密钥的通信。在又一实施方式中,两个节点之间的通信仅依赖于上述过程来验证/认证彼此的凭证,并且两个节点之间的通信要么未加密,要么使用节点通常的公钥-私钥对加密。

图9的信号示意图示出了另一示例实施方式。在此示例中,节点a首先生成任意随机数noncea。节点a将其标识符ida及其随机数发送到节点b。节点b生成自己的随机数nonceb。然后,在此示例中,节点b生成值c0,该值是配对运算和其他数据(包括随机数)的结果的散列。在此示例中,值c0可由下式给出:

c0=h(e(sb,h1(ida))||ida||idb||noncea||nonceb)

其中h是从字符串到字符串的防冲突散列函数。在一示例中,h为sha-256。

然后节点b答复节点a,向节点a提供其标识符idb、其随机数nonceb以及值c0。然后,节点a执行类似的计算以获得值c1,在此示例中,该值表示为:

c1=h(e(h1(idb),sa)||ida||idb||noncea||nonceb)

可以注意到,c1和c0的表达式中自变量的唯一区别在于配对运算。因此,如果双线性配对运算确认节点a和节点b的凭证是从同一节点组获得的,则两个值应匹配。节点a可以验证它们是否匹配,如果匹配,则将c1发送到节点b,节点b也要验证它们是否匹配。在一个实施方式中,值c0=c1被用作会话密钥,用以加密节点a和节点b之间的通信。在一些实施方式中,节点仅依赖于它们通常的公钥-私钥对来加密通信,以上所描述的操作用于认证而不是用于建立会话密钥。

在一些示例实施方式中,被级联并散列以形成值c0和c1的数据或字符串可以包括其他数据或字符串,或者可以不包括上述示例字符串中的一些。例如,在一个实施方式中,值c0和c1可以不包括标识符ida和idb的级联。虽然如此,但是可以理解的是,散列和随机数有助于保护通信免受中间人攻击。

现参考图10,图10以框图形式示出了区块链节点1000的简化示例。该示例中的区块链节点1000包括处理器1002、网络接口1004和存储器1006。区块链节点1000可以通过使用任何合适的计算硬件来实现,这些计算硬件具有网络连接性以及足够的处理和存储资源来执行本文描述的功能。区块链节点1000可包括处理器可执行指令,以实现本文描述的功能。在一些情况下,处理器可执行指令可以被称为区块链应用1020,但是应当理解的是,根据硬件和操作,可以在一个或多个模块、应用、脚本、或其他编程结构中实现指令。处理器1002可包括多核处理器和/或多个处理器。

应当理解的是,本文描述的设备和过程以及实现所描述的用于配置视频特征提取器的方法/过程的任何模块、例程、过程、线程、应用或其他软件组件可使用标准计算机编程技术和语言来实现。本申请不限于特定处理器、计算机语言、计算机编程约定、数据结构、或其他此类实施细节。

应当说明,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consistsof)”,“包括(comprises)”意指“包括(including)或由......组成(consistingof)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干方式的设备权利要求中,这些方式中的若干个可以由硬件的同一个部件来体现。在相互不同的从属权利要求中列举某些措施的这一事实,并不指示这些措施的组合不能有利利用。

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