采用可信硬件的安全动态阈值签名方案的制作方法

文档序号:19489290发布日期:2019-12-21 04:12阅读:118来源:国知局
采用可信硬件的安全动态阈值签名方案的制作方法

本发明一般涉及计算机实现的安全技术,包括使用加密签名来保护经由计算机网络交换或传输的资源并增强其安全性。本发明还涉及分布式账本(区块链)技术,尤其涉及用于提供对与数字账本相关联和/或经由数字账本执行的交换和/或转移的分散控制的方法和系统。本发明特别适合于但不限于允许阈值数量的群组成员代表所述群组生成有效的加密签名。



背景技术:

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

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

为了将交易写入区块链,必须对其进行“验证”。某些网络节点充当矿工并进行工作以确保每次交易都有效,而无效交易从网络中被拒绝。例如,安装在节点上的软件客户端对引用未耗用交易输出(utxo)的交易进行该验证工作。可通过执行交易的锁定和解锁脚本来进行验证。如果锁定和解锁脚本的执行评估为true,并且如果满足某些其他条件,则交易有效并且可以被写入区块链。因此,为了将交易写入区块链,该交易必须i)由接收交易的节点来验证-如果交易被验证,则节点将其中继到网络中的其他节点;ii)加入矿工所建造的新区块;iii)被开采,即加入过去交易的公共账本。当向区块链添加足够数量的区块以使交易实际上不可逆时,认为交易被确认。

区块链协议有时候提供多方签名特性,这些特性在去除未耗用输出(utxo)上的阻碍之前需要来自多个节点或多方的签名。例如,比特币的多重签名特性提供这种功能。多签名脚本可以设置一个条件,其中将n个公钥记录在锁定脚本中,并且至少m个私钥(每个私钥与n个公钥中的相应一个公钥相关联)必须提供签名以解除阻碍,即解锁utxo。这种签名方案提供有利的安全益处,并通过实现对utxo的锁定/解锁的更高颗粒度和复杂度的控制来提供对utxo的增强控制。然而,已知的多重签名技术提供有限的功能,因为它们不允许在配置锁定脚本之后改变必须对签名生成做出贡献的参与方。因此,需要改进的安全性机制来控制诸如经由区块链和其他网络转移的那些电子资源。



技术实现要素:

因此,根据本发明,提供如所附权利要求书所限定的方法。

如下更详细所述,动态多方阈值签名方案允许在单个公钥下但是每个群组成员都持有私有秘密的情况下、对一组参与者之间待共享的资源(例如,区块链交易输出、utxo)进行控制。需要参与者的阈值子集共同签名以耗用输出。有利地,描述一种数字签名方案,其允许生成有效签名,而无需对签名生成做出贡献的任何参与者泄露他们各自的私人秘密。可信执行环境可用于为阈值签名方案提供安全性。

有利地,描述了用于以如下方式注册和注销参与者的技术,该方式允许单个公钥,其用于群组保持该单个公钥。可信执行环境用于实现对群组成员的安全修改,而不必更改群组的单个公钥。

因此,根据本发明,可以提供一种计算机实现的方法。可将其描述为安全性或控制方法。可将其布置为保护或控制资源。可将其布置为控制对资源的访问。受控资源可以是存储在计算机或网络上或经由计算机或网络传输的电子资源、实体或项目。在某些情况下,可将其称为“数字资产”、“输出”、“加密货币的一部分”和/或“utxo”。可将本发明布置为控制对资源的访问和/或转移。可将本发明布置为锁定或解锁对资源的访问/控制。在某些情况下,术语“耗用”可用于表示资源的解锁,即允许对其进行控制或访问。

所述方法可以是以密码方式实现的方法。附加性或替代性地,可将其描述为用于生成椭圆曲线数字签名算法签名的方法。签名可包括第一签名分量r和第二签名分量w。所述方法可通过诸如区块链网络之类的网络中的一个或多个节点来实现。

所述方法可包括:i)由节点与其他节点一起形成签名群组;ii)由所述节点基于安全随机数获得:a)安全随机数的乘法逆元;以及b)所述第一签名分量r,其中,基于所述安全随机数和椭圆曲线生成器分数来确定所述第一签名分量;iii)通过所述节点基于私有秘密份额、所述安全随机数和所述第一签名分量的乘法逆元来确定部分签名;iv)由所述节点从所述签名群组的其他节点接收部分签名;以及v)由所述节点基于所确定和接收的部分签名来生成所述第二签名分量w。

所述方法可包括使用所述签名来控制通过计算机实现的网络对资源的访问和/或转移的步骤。这可以是区块链网络。

在一些实施方式中,获得包括生成乘法逆元和第一签名分量。所述方法还可包括将乘法逆元发送给其他节点。

在一些实施方式中,获得包括提供与所述节点的可信执行环境(tee)相关联的飞地,以生成安全随机数。

在一些实施方式中,获得包括从所述其他节点其中之一接收乘法逆元和第一签名分量。

在一些实施方式中,所述方法包括在形成所述签名群组之前,发信号通知参与分布式签名生成的意图。

在一些实施方式中,在与所述节点的可信执行环境相关联的飞地内确定部分签名。

在一些实施方式中,通过进行拉格朗日插值来确定部分签名。

在一些实施方式中,在与可信执行环境相关联的飞地内生成第二签名分量,并且所述方法还包括:在生成第二签名分量之后,从飞地将椭圆曲线数字签名算法发送到所述节点的主机部分。

在一些实施方式中,所述方法还包括:将签名添加到交易中,并将其广播到区块链网络。

在一些实施方式中,所述方法还包括在形成签名群组之前,基于从群组的多个现有成员接收的秘密份额数据来获得秘密份额。

在一些实施方式中,在与所述节点的可信执行环境相关联的飞地内确定秘密份额。

在一些实施方式中,部分签名vi被确定为:

vi=k-1rbisimodp

其中,bi是拉格朗日插值系数,k-1是安全随机数的乘法逆元,si是秘密份额,r是第一签名分量,p是阶数。

根据本发明,可以提供一种电子装置。以上关于本发明的方法描述的任何特征也可以适用于根据本发明布置的装置。可将该这种装置布置为实现或执行上述方法的任何实施例。所述电子装置可包括:接口装置;处理器,耦接至所述接口装置;以及存储器,耦接至所述处理器。所述存储器上存储有计算机可执行指令,在被执行时,所述计算机可执行指令将所述处理器配置为进行本文所述的方法。

根据本发明,可以提供一种计算机可读存储介质。所述计算机可读存储介质包括计算机可执行指令,在被执行时,所述计算机可执行指令将处理器配置为进行本文所述的方法。

附图说明

参考本文所述实施例,本发明的这些和其他方案将变得显而易见并得以阐明。下面仅通过示例并参考附图来描述本发明的实施例,其中:

图1示出示例性区块链网络的方框图。

图2示出可充当区块链网络中的节点的示例性电子装置的方框图。

图3是初始化群组的方法的信号图。

图4是加入先前已经初始化的群组的方法的信号图。

图5是注销群组成员的方法的信号图。

图6是生成群组的签名的方法的信号图。

具体实施方式

本发明涉及改进的安全解决方案。这些方案可用于增强计算机网络上受控资源的安全性。在以下说明性实施例中,使用区块链网络(例如比特币)作为我们的示例性网络。区块链可用于在网络上的节点之间转移对电子资源(例如令牌或一部分加密货币)的控制。仅出于方便起见,我们在下面将受控资源称为“数字资产”。但是,这在任何方面都不应视为限制性的,并且不应被解释为表示任何特定类型的资产。本发明具有超越区块链交易的益处和应用,并且不限于与金融导向的背景相关地使用,而是具有更广泛的适用性。下面提供的区块链示例仅用于说明。

区块链网络

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

运行区块链协议且形成区块链网络100的节点102的电子装置可以是各种类型的装置,例如包括台式计算机、膝上型计算机、平板计算机、服务器、诸如智能电话这样的移动装置、诸如智能手表这样的可穿戴计算机、或其他电子装置。

区块链网络100的节点102使用合适的通信技术相互耦接,所述通信技术可包括有线和无线通信技术。这种通信遵循与区块链相关联的协议。例如,在区块链是比特币区块链的情况下,可以使用比特币协议。

节点102维护区块链上所有交易的账本(可能是全局账本)。账本是分散式、分布式账本。每个节点102可以存储全局账本的完整副本或部分副本。对于通过工作量证明来保护的区块链,影响全局账本的节点102的交易由其他节点102证实,从而维护全局账本的有效性。当区块链是基于工作量证明的区块链时,也通过检查随区块提交的工作量证明来证实区块。

至少一部分节点102作为区块链网络100的矿工104操作。图1的区块链网络100是工作量证明区块链,其中矿工104进行昂贵的计算,以便促进区块链上的交易。例如,工作量证明区块链可能要求矿工解决加密问题。在比特币中,矿工104找到一个随机数,使得区块头部通过sha-256散列到一个小于当前难度所定义的值的数字。工作量证明算法所需的散列功率意味着在一定数量的区块在其顶部被开采之后,交易被认为实际上是不可逆的。解决加密问题的矿工104为区块链创建新区块,并将新区块广播到其他节点102。在接受应该将区块添加到区块链之前,其他节点102证实矿工104实际上已经解决了加密问题并因此展示了足够的工作量证明。通过节点102的共识将区块添加到区块链(即,添加到分布式全局账本)。

矿工104创建的区块包括已经由节点102广播到区块链的交易(tx)。例如,区块可包括从与节点102的其中一个相关联的地址到与节点102的其中另一个相关联的地址的交易。通过这种方式,区块充当从一个地址到另一个地址的转移的记录。要求该交易被包括在区块中的一方证明:他们被授权通过使用与其公钥相对应的私钥对请求进行签名来发起转移(例如,在比特币的情况下,以耗用输出)。如果请求被有效地签名,则仅将转移添加到区块中。

对于比特币而言,在公钥和地址之间存在一对一对应关系。也就是说,每个公钥与单个地址相关联。因此,本文中对于将受控资源(例如、数字资产)转移至公钥或从公钥转移受控资源(例如、数字资产)(例如,支付到公钥中)以及将数字资产转移至与所述公钥相关联的地址或从所述地址转移数字资产的任何引用都指的是共同的操作。

有些节点102可能不是作为矿工操作,而是作为验证节点参与。交易验证可能涉及检查(一个或多个)签名、确认对有效utxo的引用等。

图1的示例包括六个节点102,其中三个作为矿工104参与。实际上,节点102或矿工104的数量可以不同。在很多区块链网络中,节点102和矿工104的数量可以远大于图1所示的数量。

如下所述,不同节点102可以协作形成群组110,群组110可以在阈值签名方案下协作生成数字签名。在所示的示例中,将三个节点102示为参与群组110。但是,群组110成员的实际数量可能大得多。

下面将更详细地讨论用于加入、离开和参加群组110的技术。

作为节点操作的电子装置

图2是示出示例性电子装置200的组件的方框图,示例性电子装置200可以充当点对点区块链网络100(图1)中的节点102(图1)。示例性电子装置200也可称为处理装置。电子装置可以采用各种形式,例如包括台式计算机、膝上型计算机、平板计算机、服务器、诸如智能手机这样的移动装置、诸如智能手表这样的可穿戴计算机、或其他类型的形式。

电子装置200包括处理器210、存储器220和接口装置230。这些组件可以直接或间接地相互耦接并且可以相互通信。例如,处理器210、存储器220和接口装置230可以经由总线240相互通信。存储器220存储计算机软件程序,其包括用于进行本文所述功能的机器可读指令和数据。例如,存储器可包括处理器可执行指令,当通过处理器210执行时,可执行指令使得电子装置进行本文所述的方法。处理器可执行指令可包括指令,当由处理器210执行时,该指令使得电子装置实现与区块链网络100(图1)相关联的协议。例如,指令可包括用于实现比特币协议的指令。

存储器220可以存储区块链网络100(图1)的全局账本或其一部分。也就是说,存储器220可以存储区块链的所有区块或一部分区块,例如最新的区块,或者一些区块中的一部分信息。

虽然存储器220在图2中用单个方框示出,但是实际上,电子装置200可包括多个存储器组件。存储器组件可以是各种类型,例如包括ram、hdd、ssd、闪存驱动器等。不同类型的存储器可以适合于不同的目的。此外,虽然存储器220与处理器210分开示出,但是处理器210也可包括嵌入式存储器。

如图2所示,处理器210可包括诸如可信执行环境(tee)250这样的安全区域。tee250是隔离执行环境,其为电子装置200提供额外的安全性,例如隔离执行、可信应用的完整性和资产机密性。tee250提供这样的执行空间:该执行空间保证在tee250内加载的计算机指令和数据在机密性和完整性方面受到保护。tee250可用于保护重要资源(例如密钥)的完整性和机密性。tee250至少部分地在硬件级别实现,使得在tee250内执行的指令和数据受到保护,以防止来自电子装置200其余部分以及诸如电子装置的所有者这样的外方的访问和操纵。tee250内的数据和计算从操作包括tee250的节点102的一方得到保护。

tee250可以操作以将飞地实例化,然后一次一个添加存储器的页面,同时累积地进行散列。也可以在远程机器(可以是开发者机器或另一个机器)上进行类似的操作,以便远程机器确定并存储预期的散列。因此,飞地的内容可以由任何远程机器证实,以确保飞地运行批准的算法。可通过比较散列来进行证实。飞地完全建成后,将其锁定。可以在tee250中运行代码并向代码发送秘密,但代码不能更改。最终散列可通过证明密钥来进行签名,并且可使其对于数据所有者可用,以在数据所有者向飞地发送任何秘密之前证实它。

飞地在物理上是安全的,其无法经由主机系统的体系结构(包括主机系统的系统内存、bios和操作系统)进行访问。因此,飞地允许在不可信任方拥有和控制的远程计算机上安全且可验证地执行软件。在飞地上运行的进程的存储器只能由该进程访问,并且仅在飞地软件正在运行时才可以访问。如果将内存内容从飞地传输到远程计算机或主机系统本身,则会对该内存内容进行加密。飞地数据的解密依赖于这样的密钥,其仅可用于散列为特定值的代码。如果飞地代码被修改,它将不再有权访问这些密钥。因此,飞地代码无法修改以访问其数据。

此外,tee250可以实现远程证明,可用于节点102(图1)向其他节点102证明tee250是真实的并且正在针对群组100所实现的协议运行批准的计算机可执行指令。通过运行一段特定的代码并发送飞地内部的、由飞地内部证明密钥签名的代码散列,可由tee250提供远程证明。有效地,远程证明允许tee250的飞地向任何远程系统证明该飞地正在执行散列为特定值的计算机可执行指令。

远程证明使得在安全飞地内运行的代码能够从飞地获取签名证书,即在飞地页面缓存的给定散列的情况下,该代码正在该飞地中执行。飞地页面缓存的散列可称为报价,且飞地页面缓存是受保护存储器的一部分,其中在执行这些代码期间存在指定的代码和数据。

tee250可以配备安全的随机数发生器,位于tee的飞地内部,可用于生成私钥、随机质询或其他随机数据。此外,可将tee250配置为从外部存储器读取数据,并且可将其配置为将数据写入外部存储器。可以使用仅在飞地内保存的秘密密钥来加密这些数据。(“随机”在这里可以解释为包括“伪随机”)。

例如,tee250可以使用英特尔保护软件扩展(sgx)来实现。sgx支持远程证明。第三方证明服务(例如英特尔证明服务(ias))可以证明这些签名的语句源自符合sgx规范的真实cpu。

电子装置200充当区块链网络100(图1)中的节点102(图1),并且可以加入并以其他方式参加群组110(图1)。如下所述,群组成员(在这里也可称为参与者或节点)协作以生成有效签名,以解锁与群组公钥相关联的阻碍。

阈值签名

群组110可以是被许可或不被许可的群组。群组110可以由区块链网络100(图1)中的任何节点102(图1)(即,由监视并存储区块链中的至少一部分信息的任何节点)加入。

群组110与可以称为群组公钥的公钥相关联。这个群组公钥可以控制对于被转移到群组公钥的资源(例如令牌、加密货币)的访问以及对该资源的阻碍。例如,交易的锁定脚本可以使用群组公钥来锁定资源,以便未经群组110的批准就不能转移或“耗用”这些资源。

群组110可以根据阈值签名方案来操作。更具体而言,当作为群组成员的至少阈值数目的节点协作生成有效签名时,可以解锁由群组公钥控制(阻碍)的资源(即可以去除阻碍)。签名在椭圆曲线数字签名算法(ecdsa)下有效。ecdsa是一种加密算法,用于比特币和其他区块链网络中,以确保资源只能由其合法所有者耗用,并且本文所述的阈值签名方案允许通过群组中阈值数量的节点生成有效的ecdsa签名。

为了使得群组成员能够协作生成有效签名,成员节点持有分布式生成的私有秘密(即,在节点本身生成的私有秘密)。如下面更详细所述,这些私有秘密可以用来为交易生成有效签名,而成员节点不必向其他成员节点泄露它们的私有秘密。因此,提供了一种改进的安全机制,用于控制对资源的访问。

下面描述一种阈值签名方案,其允许成员节点加入并离开群组而不必改变群组公钥。区块链网络100(图1)中的多个节点102(图1)可以实现本文所述的阈值签名方案协议。这些节点102可包括存储在存储器220(图2)中的、实现阈值签名方案协议的计算机可执行指令。当由处理器210(图2)执行时,这些指令使得节点102(例如参考图2所述类型的电子装置200)进行阈值签名方案协议的一种或多种方法。这些方法可包括图3至图6的方法300、400、500和600其中任何一个或其组合。这些方法可以由节点与关联于其他群组成员的其他节点协作进行。

群组初始化

下面参考图3,示出初始化群组的方法300。初始化群组以与阈值签名方案一起使用。也就是说,将群组初始化以允许成员节点协作生成有效的数字签名,以去除数字资产的阻碍。通过有效数字签名去除的阻碍是基于群组公钥的阻碍。

图3示出由相互协作的多个节点进行的方法。更具体而言,将成为群组成员的每个节点进行下述方法300的操作。这些节点在以下描述中可称为参与者pi或成员。最初,由n个参与者(即i=1、2、…、n)组成的群组u参与进行方法300。在所示的示例中,群组由三个节点(即n=3)形成。但是,可以使用不同数量的节点来形成群组。进行方法300的节点分别包括实施sgx飞地ei的认证tee。

在进行方法300之前,将要形成群组的节点102相互建立安全通信信道,且所有节点都同意签名阈值(t+1)。每个节点和飞地可以在建立安全信道后(例如,使用diffie-hellman交换)私下进行点对点通信,还可以安全地向其他参与者广播信息。参与者还共同确定椭圆曲线生成器分数g以及阶数p。使用此椭圆曲线生成器分数g和阶数p进行下述操作。例如,对modp的引用描述了根据此阶数p进行的模运算。在通信建立之后,节点就根据下述方法300进行无经销商多项式生成。

在操作302,每个参与者pi提供他们的飞地ei,以生成随机度t多项式fi(x),其中x是多项式函数的变量。随机度t多项式是度t的多项式(在整数有限域modp中),多项式的每个系数都是随机选择的。

在操作304,进行证明,以便每个飞地向其他每个飞地确认它们正在运行批准的初始化指令集。在证明过程中,每个飞地可以向其他每个飞地发送报价,并且每个飞地因此从其他每个飞地接收报价。对这些接收的报价的每一个进行评估,以确定证明是否成功。

在操作304,每个飞地ei安全地向每个其他飞地ej发送分数fi(j)modp,其中j=1,…n。因此,在操作304,每个飞地ei从其他飞地接收分数。

在操作306,每个飞地确定秘密份额si。更具体而言,在操作306,每个飞地ei求和所有接收的分数f1(i)+f2(i)+…+fn(i)modp,以确定共享多项式f(x)。也就是说,共享多项式是所有参与者随机生成的多项式的总和。然后将秘密份额确定为si=f(i)modp,它是多项式f(x)modp上的pi分数(即x=i的分数),其中

其中,ak是多项式项的系数(a0是常数项和共享秘密),而x是多项式的变量。

因此,将每个秘密份额确定为所有其他参与者的随机多项式的分数(即值)之和。每个参与者在共享多项式上只有一个不同的分数,因此可以用t+1个分数重建(通过插值)多项式(以及共享的秘密a0)。

在操作306,将每个秘密份额si固定在其各自的飞地ei中。每个飞地ei还可以向另一个飞地证明它已经执行了批准的指令以生成秘密份额。因此,可以在操作306进行远程证明,以确保适当地生成秘密份额。

一旦生成秘密份额,就可以在操作308生成群组公钥(其为椭圆曲线公钥)。在操作308,可将拉格朗日插值用于确定与共享密钥a0对应的群组公钥。更具体而言,群组u的参与者pi(其中i=1、…、t+1),每个都提供他们的飞地ei,以基于拉格朗日插值系数、椭圆曲线生成器分数和他们的秘密份额来计算各自的公钥份额。也就是说,可将公钥份额计算为bisi×g,

其中,bi是拉格朗日插值系数,确定为

g是椭圆曲线生成器分数,si是参与者pi的秘密份额(即,它是共享多项式上的pi分数)。

在操作308期间,参与者将公钥份额广播给所有其他参与者。可以使用远程证明来确认已经适当地生成公钥份额。

在接收到所有公钥份额之后(即,在从每个其他参与者收到公钥份额之后),每个参与者可以基于所接收的公钥份额来计算群组公钥a。更具体而言,可将群组公钥确定为所有公钥份额的总和:

注意,初始化阶段是以不可信的方式进行的,并且由于没有可信的经销商,因此不会出现单点故障。在飞地内进行多项式生成和后续处理保护了允许注销(将在下面参考图5描述)以保持安全的秘密份额。

初始化群组后加入群组

下面参考图4,示出注册方法400。可以进行注册方法400,以允许节点加入已经初始化以与阈值签名方案一起使用的现有群组,而不必发布新的群组公钥。在群组已经初始化之后进行方法400(这种初始化可以根据图3的方法300)。

图4示出相互协作的多个节点进行的方法。更具体而言,作为现有群组成员的节点进行下述方法400的至少一部分操作,并且预期成员进行方法400的至少一部分操作。预期成员(可以指定为pn+1)是尝试加入群组的节点。

在进行方法400之前,至少阈值群组的参与者(t+1)相互发信号告知他们希望预期成员加入。这些参与者形成一个注册群组ue。组成注册群组的节点和预期成员建立安全的通信信道。预期成员还可以向注册群组的节点认证自己。

在图4的示例中,注册群组ue包括三个节点(即,n=3)。但是,可以使用不同数量的节点来形成注册群组,只要形成注册群组的节点数量至少为阈值(t+1)数量的节点。在所示的示例中,预期成员pn+1表示为p4。进行方法400的节点分别包括实施sgx飞地ei的认证tee。

在操作402,预期成员p4向注册群组ue的所有成员提供证明报价,以确认预期成员正在运行认证协议。注册群组成员接收此证明报价,并且每个注册群组成员都评估证明报价,以确认预期成员正在运行批准的协议。

在操作404,每个注册群组成员将自己的秘密份额si分成几部分。更具体而言,每个参与者pi(其中i=1,...,t+1)提供他们的飞地ei,用新分数(n+1)确定的拉格朗日插值系数乘以他们的秘密份额si。也就是说,可以将修改后的秘密份额s′i确定为:

然后每个飞地ei生成安全随机数,将每个s′i分成t+1个部分(因此所有这些部分的总和是s′i),这可以称为秘密份额部分:

s′i=s1,i+s2,i+…+st+1,i

在图4中,下标s(例如,ss,1)用于指示份额si已经分成t+1个部分。

每个飞地ei保留秘密份额部分si,i,并与注册群组ue的其他t个飞地交换其余的秘密份额部分,以便每个飞地ei具有以下秘密份额部分:

si,1,si,2,...,si,t+1

然后每个飞地ei将从ue的所有其他成员接收到的所有秘密份额部分添加到该飞地ei保留的秘密份额部分si,i中,以获得秘密份额总和vj:

在操作406,每个飞地ei将秘密份额数据发送到预期成员的飞地en+1。更具体而言,在操作406,每个注册群组参与者pi提供其相关联的飞地ei,,以私下将该秘密份额总和vj传输给预期成员的飞地en+1。预期成员的飞地en+1从所有注册群组成员接收这些秘密份额总和,然后(在操作408)通过确定所接收的秘密份额总和来构造新的秘密份额sn+1:

在所示的示例中,因为n等于3,所以新的秘密份额表示为s4。

因此,预期成员基于从群组的多个现有成员接收的秘密份额数据获得新的秘密份额。更具体而言,预期成员基于来自群组的至少阈值数量个现有成员的的秘密份额数据获得新的秘密份额。

作为附加的确认步骤,可以在方法400的操作406之后进行方法300的操作308,以生成群组公钥。然后参与者可以确认群组公钥没有从其先前值(即,在进行图4的方法400之前的值)发生改变。

从群组注销

群组成员有时可以从群组注销。如同本文所使用的,“注销”是指从群组中的成员资格中释放或去除成员。这种注销可以应被注销成员的请求进行,也可以应其他成员的请求进行(例如,如果要注销的成员未根据定义的标准参加群组活动)。下面参考图5,示出注销成员的示例性方法500。所述方法可以由节点102与群组中的其他节点102协作进行。所述方法可用于在不修改群组公钥的情况下注销成员。因此,本发明提供了一种改进的、密码安全的方法,与现有技术中以前可能的方法相比,所述方法提供对资源的增强控制。

为了实现注销,阈值个数n-1的现有群组成员协作进行图5的方法500。更具体而言,要保留在群组中的所有群组成员都参与图5的方法500。但是,要注销的群组成员不参与所述方法。在某些情况下,一次注销一个以上的群组成员,只要注销的数量dn小于或等于现有群组成员的数量与阈值签名方案的阈值之差,即dn≤n-(t+1)。

也就是说,未离开群组的群组成员的数量必须至少等于用于阈值签名方案的阈值t+1。

在图5的示例中,将修改现有的四个成员群组,以排除其中一个参与者p4,从而只保留三个成员。

在进行图5的方法500之前,参与者pi(i=1,...,n-1)相互通信以通过信号通知共识,来撤销群组参与者pn的份额,并形成注销群组ud。可以使用远程证明来确保注销群组ud的所有飞地都在操作批准的注销指令集。更具体而言,注销群组的每个成员都确认注销群组的其他成员正在操作批准的注销指令集。

在操作502,注销群组ud中的每个参与者pi进行多项式生成和共享。更具体而言,注销群组ud中的每个参与者pi提供他们的飞地ei,以生成其中的随机度t多项式

在操作502,每个飞地ei(i=1,…,n-1)然后在其新的随机多项式上向每个其他飞地ej(j=1,…,n-1)安全地发送每个分数j。每个飞地通过远程证明来认证另一个飞地。

在操作504,每个飞地ei(i=1,…,n-1)生成新的秘密份额。更具体而言,每个飞地ei然后将所有接收到的分数f′j(i)(j=1,...,n-1|j≠i)加到其原始秘密份额si,以确定新的秘密份额s′i。例如,可将新的秘密份额确定为:

作为附加的确认步骤,可以在方法500的操作504之后进行方法300的操作308,以生成群组公钥。参与者然后可以确认群组公钥没有从其先前值(即,在进行图5的方法500之前的值)发生改变。

在操作504,可以用新的秘密份额来覆写先前的秘密份额,从而有效地使要注销的参与者的飞地中的秘密份额pn无效。因此,该成员现在从群组中注销。

值得注意的是,在注销方法500期间,方案的安全性仅取决于n-t个参与者可验证地用新值覆写其过期的密钥份额。因此,需要突破t+1个飞地的阈值以影响安全性。即使已经注销的参与者(现在没有任何东西失去)也可以突破自己的飞地以恢复其密钥份额,只要至少n-t个飞地操作正确,那么该份额在合谋攻击中就不起作用。

签名生成

群组成员所持有的秘密份额可用于允许生成用于交易的有效ecdsa签名。更具体而言,至少阈值数量的秘密份额可用于允许群组参与者生成有效签名。可将签名应用于耗用了先前被群组公钥阻碍的数字资产的交易。也就是说,有效签名去除先前置于(一个或多个)资源上的阻碍。ecdsa签名包括两个分量:第一分量r和第二分量w。

下面参考图6,示出生成ecdsa签名的示例性方法600。方法600可通过节点102与先前形成的群组的其他节点102协作进行。可以预先使用上述技术来定义群组的成员(即,协作进行方法600的节点)。

在进行所述方法之前,群组中的多个参与者(即,成员)可以向其他参与者发信号,表明他们希望参与分布式签名生成以授权特定交易tx。也就是说,节点可以发信号通知参与交易tx的分布式签名生成的意图。交易tx是将耗用被群组公钥阻碍的输出的交易。也就是说,交易的效果是从输出中去除基于群组公钥的阻碍。例如,交易tx可通过所述群组的参与者其中之一提出。

一旦参与者的阈值表明了参与的意图,就通过节点与其他节点协作形成签名群组。在所示的示例中,签名群组包括三个参与者(即,三个节点)。但是,签名群组可以包括不同数量的节点。

在操作602,形成签名群组的节点确定交易tx的散列值z。散列值被确定为:z=h(tx),其中h表示散列函数。散列值由签名群组的共识确定。例如,散列值可以由签名群组的参与者其中之一提出,其他成员可以确认他们同意所述散列值。

在操作604,形成签名群组的节点基于安全随机数k获得:a)安全随机数的乘法逆元k-1;以及b)第一签名分量r。基于安全随机数k和椭圆曲线生成器分数g确定第一签名分量r。更具体而言,在操作604,其中一个参与者(例如p1)提供其飞地e1(与节点(也就是参与者p1)的可信执行环境相关联)以生成安全随机数k,并计算该安全随机数k的乘法逆元k-1,还计算第一签名分量r。

可将第一签名分量r确定为:

r=(k×g)xmodp

在操作604,计算安全随机数的乘法逆元k-1和第一签名分量r的飞地e1将这些值(例如,安全随机数的乘法逆元k-1和第一签名分量r)发送到与签名群组中的其他参与者相关联的e2,...,et+1。远程发送这些值的飞地e1证明其完整性,并且证明它们已使用批准的指令集而生成。没有生成这些值的飞地e2,...,et+1从生成这些值的飞地e1接收这些值并确认值的完整性(例如,通过确认用于生成这些值的指令集是批准的指令集)。

在操作606,签名群组的每个节点基于私有秘密份额、安全随机数的乘法逆元和第一签名分量来确定部分签名vi。在每个节点的飞地内生成部分签名vi。例如,签名群组的飞地ei(i=1,...,t+1)计算部分签名为:

vi=k-1rbisimodp

其中,bi是拉格朗日插值系数,确定为

k-1是安全随机数的乘法逆元,si是参与者pi的秘密份额(已使用上述技术预先获得),r是第一签名分量,p是阶数。

因此,确定部分签名可涉及执行拉格朗日插值。

在操作606,用于签名群组的每个飞地ei(i=1,...,t+1)将其部分签名vi安全地广播到签名群组的其他飞地,以便每个节点(并且更具体而言,每个飞地)从签名群组的其他节点接收部分签名。

在操作608,签名群组的每个节点(并且更具体而言,每个飞地)可以基于在操作606确定和接收的部分签名来生成第二签名分量w。例如,可将第二签名分量确定为:

其中,z是交易散列值。

在操作608,签名群组的每个节点可将包括第一签名分量和第二签名分量的ecdsa签名从它的飞地发送到节点的主机部分(即,节点的不是飞地的部分),然后节点可以针对交易散列值z和群组公钥a证实签名。

然后,签名组中的任何参与者都可将签名添加到对应的交易中,并将其广播到区块链网络。

上述签名方案的安全性取决于临时私钥的值,即安全随机数k,它由一个飞地生成并秘密分发给签名群组中的其他飞地,并保持隐藏状态。如果仅通过突破其中一个飞地来提取这个值,则可以根据交易签名确定共享私钥,然后将其用于签署完全不同的交易。但是,这样做的影响最小,因为必须在很小的时间窗口(交易在区块链上的确认时间)内发生飞地的物理突破。

应当注意,上述实施例是说明而不是限制本发明,并且本领域技术人员将能够设计很多替代实施例而不脱离所附权利要求限定的本发明的范围。在权利要求中,括号中的任何附图标记都不应解释为限制权利要求。词语“包括”等不排除除了在任何权利要求或说明书中作为整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”表示“包含”或者“由…构成”。元素的单数引用不排除这些元素的复数引用,反之亦然。本发明可通过包括若干不同元件的硬件,以及通过适当编程的计算机来实现。在列举了若干器件的装置权利要求中,这些器件中的若干个可通过硬件的一个项目或相同项目来具体实施。在相互不同的从属权利要求中陈述某些措施的纯粹事实并不表示这些措施的组合不能用于获益。

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