用于转移对数字资产的访问权的计算机实现的方法和系统与流程

文档序号:23590686发布日期:2021-01-08 14:27阅读:142来源:国知局
用于转移对数字资产的访问权的计算机实现的方法和系统与流程

本发明总体涉及数据和基于计算机的资源的安全性。更具体而言,本发明涉及加密货币和密码术,并且还涉及椭圆曲线密码术、椭圆曲线数字签名算法(ecdsa)以及阈值密码术。本发明可有利地用于区块链实现的加密货币,例如(举例而言)比特币,但并不限于此,并且可以具有更广泛的适用性。在一个实施例中,本发明可以被描述为提供阈值数字签名方案。



背景技术:

在本文档中,我们使用“区块链”一词来包括所有形式的基于计算机的电子分布式分类账(ledger)。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账,及其变型。区块链技术最广为人知的应用是比特币分类帐,但是已经提出并开发出了其他区块链实现方式。虽然为了方便和说明的目的在本文中可能会提及比特币,但是应当注意,本发明不限于与比特币区块链一起使用,且替代的区块链实现方式和协议也落入本发明的范围内。

区块链是一种点对点(peer-to-peer)的电子分类帐,其实现为基于计算机的非集中化系统,所述系统由区块组成,而区块又由交易(transaction)组成。每笔交易是一种数据结构,所述数据结构对区块链系统参与者之间的数字资产的控制权的转移进行编码,并且包括至少一个输入和至少一个输出。每个区块都包含前一个区块的散列,因此区块被链接在一起,以创建自区块链创建以来写入区块链的所有交易的永久性的不可更改的记录。

非集中化的概念是比特币方法的基础。与分布式或集中化系统不同,非集中化系统具有以下优势:不存在单点故障(singlepointoffailure)。因此,它们提供了更高级别的安全性和弹性。通过使用椭圆曲线密码术和ecdsa之类的已知密码技术来进一步增强安全性。

由于需要多于一方的签名来提供对数字资产的访问权,因此,多重签名系统通常用于比特币区块链中,以增强安全性。

ecdsa阈值签名方案可以取代“多重签名”系统,以用于确保比特币钱包(bitcoinwallet)的安全,并提供更高的安全性和隐私性以及更少的交易(因此,费用更低)。s.goldfeder、r.gennaro、h.kalodner、j.bonneau、j.a.kroll、e.w.felten及a.narayanan的通过新的dsa/ecdsa阈值签名方案确保比特币钱包的安全(2015年)及r.gennaro等人的阈值最优dsa/ecdsa签名以及对比特币钱包安全性的应用(2016年),关于应用密码术和网络安全的国际会议acns2016:应用密码术和网络安全第156-174页,提供了阈值最优ecdsa签名方案的变型,使得n个密钥份额(share)持有者中的任何t+1可协作,以交互式地产生完整签名,其中,1<t≤n。

然而,这些方案至少受到两个限制。首先,它们取决于新的密码术和相关假设,例如,尚未经受时间测试的完全同态的加密方案。其次,由于它们的复杂性以及涉及零知识证明-例如,在单独写入、生成及验证零知识证明时,每个参与者花费大约10秒的时间-它们的计算量大,且因此是缓慢的。因此,不应信任这些系统能够确保大笔存款的安全,并且不适用于某些需要快速签名的应用(例如,交换操作)。

例如,这些方案不能用在基于高频支付通道的系统中,例如,如jpoon;tdryja;比特币闪电网络:可扩展的链外即时支付(2016年)中所公开的。加密货币交换是一种用于双向支付通道并且特别期望快速签名的应用。

存在用于生成ecdsa阈值签名的更快、更简单且更安全的方案,但是有一些限制。具体而言,排除了t和n的某些组合,包括“2/3(2of3)”方案之类的普遍选择。此外,在这些方案中,与通过部分签名的组合生成签名所需相比,可以用更少的密钥份额来重构私钥。因此,需要对采用“2/3”多重签名技术的比特币交换所采用的安全钱包服务系统进行改良。

双向支付通道,例如,jpoon;tdryja;比特币闪电网络:可扩展的链外即时支付(2016年)中所述的双向支付通道可以准许在大大降低客户必须在交换中的信任的同时进行资产贸易。在传统模型中,客户可以在交换时持有,例如,比特币和法定货币的存款。在客户进行贸易时,他们拥有的比特币和法定货币的比例发生改变。然而,这些比例取决于由交换所记录的贸易,因此,客户必须信任所述交换,以保存准确的记录。换句话说,尽管比特币(如果被标记,则为法定货币)的存款可以通过采用托管服务(在一定程度上)进行保护以防偷窃,但是如果交换被破坏且贸易记录丢失或更改,则客户仍然可能会丢失其存款。

双向支付通道具有多个其他缺点。考虑双向支付通道的标准实现方式。爱丽丝和鲍勃想在彼此之间来回发送加密代币(token)。他们每个人都使用约定数量的代币为“2/2”多重签名提供资金,然后通过交换承诺交易来发送代币(更新通道)以及有效地使通道的先前状态失效的“值”。如果要由一方广播过期的承诺交易,则另一方可以通过含有适当的“值”的“违约赔偿交易(breachremedytransaction)”做出响应,从而借此索取通道中的全部余额。

当爱丽丝或鲍勃想对通道进行结算时,他们各自可同意签署根据最新的通道状态分配余额的交易(所谓的“软解析(softresolution)”)。以此方式,只要双方合作,就不必广播承诺交易。

然而,如jpoon;tdryja;比特币闪电网络:可扩展的链外即时支付(2016年)中所述的支付通道由于存在所谓的“故障模式”而具有一个主要的未解决漏洞,其可在使得大量通道打开的一方在很长一段时间内无响应的情况下出现。这可能会导致与之连接的其他各方广播承诺交易,且如果各方数量较大,则区块链网络可能会变得不堪重负。这种情况对支付通道而言尤其危险,因为恶意方可能会尝试通过广播过期的承诺交易以希望与之连接的一方将无法以违约赔偿交易及时响应来窃取资金。jpoon;tdryja;比特币闪电网络:可扩展的链外即时支付(2016年)中描述的配置的另一个限制为以下另一复杂情况:其需要隔离见证(segregatedwitness)(以避免双方中有一方在为通道提供资金后不愿意或无法提供第一笔承诺交易的可能性)。

交换安全(exchangesecurity)的最新技术

当前,许多加密货币交换平台通常通过第三方服务(例如,由bitgo提供的服务)基于比特币脚本的多重签名功能性采用安全钱包系统。这些系统将客户或交换方资金置于可以使用2/3多重签名脚本(即通过提供与3个公钥中的任意2个对应的有效签名)进行赎回的输出下。三个对应的私钥将分配给所述交换方、客户及受信任的第三方/托管方(bitgo)。然后,可以通过以下任一方式授权资金的移动(通过已签名的有效交易):i)客户和交换方,或者ii)交换方和bitgo(在客户不合作或丢失密钥的情况下)。bitgo服务将通过来自交换方的经过验证的api请求来执行签名操作。

除了bitgo本身及其应用程序编程接口(api)的安全性操作和策略外,此托管系统还具有几个主要缺点。首先,使用2/3multisig(多重签名)输出会损害客户和交换方的隐私。2/3multisig(多重签名)交易输出的数量仅占输出总数的一小部分,因此,匿名性的降低使区块链的观察者更容易识别与bitgo和交换钱包相关联的资金。此外,使用2/3multisig(多重签名)输出还会揭示区块链上的内部交换操作。外部观察者可以基于脚本中的位置来确定三个密钥中的哪一个已经用于授权特定交易。例如,在2016年发生的6000万美元的bitfinex黑客攻击(采用2/3multisigbitgo钱包系统)中,比特币区块链观察者能够确定密钥1和3被用来窃取资金。此外,使用2/3multisig(多重签名)会导致更大的交易规模,因此需要更大的交易(矿工)费用才能在区块链上可靠且快速地进行确认。此外,由于在比特币客户中2/3multisig(多重签名)脚本被视为“非标准”脚本,因此必须将其实现为向脚本的哈希支付(p2sh)格式的赎回脚本。由于p2sh交易输出类型可能遭受碰撞攻击(或所谓的“生日攻击”),因此其安全性基本上不如标准的向公钥的哈希支付(p2pkh)输出。p2sh输出在比特币中具有160位的安全性,这意味着仅提供80位的安全性就可以防止碰撞攻击。目前,此等级的安全性在计算上无法攻击,但可能无法无限期地维持此状况。在p2pkh输出(仅使用单个公钥)上不可能发生碰撞攻击,因此,保持160位的安全性(在预图像(pre-image))攻击的情况下)。

阈值签名方案

阈值签名协议使一组参与方(或节点)能够在不在任一时刻重构私钥或者任何参与者都不知道有关任何其他方的密钥份额的任何信息的情况下使用n个密钥份额的阈值m来共同地签署交易。使用这种方案可以防止在需要多个单独方来授权交易的系统中出现单点故障。

阈值签名方案可以与无交易商(dealer-free或dealer-less)协议组合,以建立秘密份额,其中任何一方都不知道共享秘密(私钥)(实际上,其无需在任一时刻显式地存在于内存中)。然而,所述组可以确定椭圆曲线公钥(对应于尚不知道但暗含的共享秘密密钥)。这意味着可以完全不信任的方式将比特币输出置于共享组公钥(和对应地址)的控制之下,并且只有当阈值的各方协作时才能生成交易签名,而无需任何个别方得知私钥。

椭圆曲线数字签名算法(ecdsa)的数学形式的性质意味着为这种类型的签名构造安全的阈值方案并非易事。具体而言,已证实,不可能创建高效且安全的阈值最优方案-其中生成有效签名所需的密钥份额的数量与重构完整私钥所需的份额的数量相同。s.goldfeder、r.gennaro、h.kalodner、j.bonneau、j.a.kroll、e.w.felten和a.narayanan的通过新的dsa/ecdsa阈值签名方案的安全比特币钱包(2015年)中描述了构造阈值最优ecdsa方案的第一种方法,但此方案具有明显的缺点。首先,它的效率非常低:签名生成既需要调用paillier(帕耶)(加法同态)加密,又需要创建和验证一系列零知识证明:对于仅2/2签名,其需要进行6轮通信,且计算时间约为10秒(每一方)。其次,私钥是以乘法方式共享的:这意味着仅n/n(n-of-n)密钥共享有可能实现m/n(m-of-n)方案,其中m<n需要每一方都需要持有多个密钥份额(每一方均需要nm个密钥份额)的组合密钥共享结构。此外,与在多项式(polynomial)上共享密钥(如在shamir(沙米尔)的秘密共享方案中)相比,在没有受信任的交易商的情况下以乘法方式共享私钥要复杂得多且计算量大。

近年来,以下各者已提出了一种具有改良效率(但仍然相对较慢)的阈值最优ecdsa方案:r.gennaro等人,阈值最优dsa/ecdsa签名及其在比特币钱包安全性中的应用(2016年),关于应用密码术和网络安全的国际会议acns2016:应用密码术和网络安全,第156-174页和boneh、dan、rosariogennaro及stevengoldfeder,“使用等级1同态加密来改良阈值dsa签名以实现比特币钱包安全性”,其采用了完全同态的加密系统。此密码原语具有较高的复杂性,并且依赖于相对未经测试的假设。还应注意,例如,如bogos、sonia、johngaspoz及sergevaudenay的“对同态加密方案的密码分析”,arcticcrypt2016,第epfl-conf-220692.2016号以及hu、yupu及fenghewang的“对完全同态加密方案的攻击”,国际密码学协会密码学电子资料库2012(2012):561中所述,其他最新的完全同态加密方案也已成功地进行了密码分析并被有效地破解。



技术实现要素:

本发明的优选实施例试图克服已知方案的上述缺点中的一个或多个。

本发明提供了如所附权利要求书中所定义的方法和系统。

可以提供一种转移对数字资产的访问权的方法,所述方法包括:

由多个第二参与者中的每个参与者从第一参与者接收第一区块链交易,其中所述第一参与者具有密码系统的第一私钥-公钥对中的第一私钥,并且每个所述参与者具有所述密码系统的第二私钥-公钥对中的第二私钥的相应的份额,其中,所述第一区块链交易是用所述第一私钥签名的;

由多个所述第二参与者验证所述第一区块链交易已用所述第一私钥签名;

将所述第二私钥的相应的所述份额应用于所述第一区块链交易,以生成第一秘密值的相应的份额,其中所述第一秘密值是用所述第二私钥签名的第二区块链交易,其中所述第一秘密值对于所述第一秘密值的第一阈值数量的所述份额是可访问的,而对于小于所述第一秘密值的所述第一阈值数量的份额是不可访问的;以及

将来自所述第一参与者和多个所述第二参与者的所述第一秘密值的至少所述第一阈值数量的所述份额组合在一起,以生成所述第一秘密值。

通过将第二私钥的相应的份额应用于所述第一区块链交易,以生成用所述第二私钥签名的第二区块链交易的相应的份额,其中,所述已签名的第二区块链交易对于所述第一秘密值的第一阈值数量的份额是可访问的,而对于小于所述第一阈值数量的份额是不可访问的,并且将来自所述第一参与者和多个第二参与者的所述第一秘密值的至少所述第一阈值数量的份额组合在一起,以生成已签名的第二区块链交易,这提供了以下优势:如果所述第二参与者之一不活动或不合作,则能够对交易进行签名,从而改良了系统的安全性和可靠性。而且,通过响应于来自所述第一参与者接收到所述第一区块链交易而生成所述第一秘密值的份额,这提供了另一个优势:使得所述第一秘密值的份额能够自动生成,从而生成所述第一秘密值的至少三个份额,由此能够模拟2/3(2of3)签名方案。

多个所述第二参与者中的每一者可以具有所述密码系统的相应私钥。

这提供以下优势:能够借助于与私钥相对应的公钥来验证利用私钥进行的签名,从而增强了系统的安全性。

所述方法可以进一步包括在所述第一参与者和至少一个所述第二参与者之间对具有所述第一参与者所拥有的所述第二私钥的一所述份额进行分配份额。

这提供以下优势:进一步增强了安全性。

所述方法可以进一步包括在一所述第二参与者变得无响应的情况下,将对所述数字资产的访问权转移到所述密码系统的第三私钥。

所述数字资产在预定时间内可保持在所述第三私钥的控制下。

所述方法可以进一步包括在多个所述参与者之间分配所述第二私钥的所述份额。

可以提供一种转移对数字资产的访问权的方法,所述方法包括:

将第一区块链交易从第一参与者发送给多个第二参与者,其中所述第一参与者具有密码系统的第一私钥-公钥对中的第一私钥,并且每个所述参与者具有所述密码系统的第二私钥-公钥对中的第二私钥的相应的份额,其中,所述第一区块链交易是用所述第一私钥签名的;

从多个所述第二参与者接收第一秘密值的相应的份额,其中所述第一秘密值是用所述第二私钥签名的第二区块链交易,其中所述第一秘密值对于所述第一秘密值的第一阈值数量的所述份额是可访问的,而对于小于所述第一秘密值的所述第一阈值数量的份额是不可访问的,其中在通过对应的所述第二参与者验证所述第一区块链交易已经用所述第一私钥签名之后,将所述第二私钥的每个所述份额应用于所述第二区块链交易;以及

将来自所述第一参与者和多个所述第二参与者的所述第一秘密值的至少所述第一阈值数量的所述份额组合在一起,以生成所述第一秘密值。

可以提供一种对消息进行数字签名的方法,所述方法包括:

在多个参与者之间分配第一秘密值的第一份额,其中所述第一秘密值是密码系统的公钥-私钥对中的私钥,所述私钥可借助于第一阈值数量的所述第一份额来访问,而对于小于所述第一阈值数量的所述第一份额是不可访问的;

在所述多个参与者之间分配第二秘密值的第二份额,其中所述第二秘密值是用于生成数字签名的临时密钥,其中所述临时密钥可借助于所述第一阈值数量的所述第二份额来访问,而对于小于所述第一阈值数量的所述第二份额是不可访问的;以及

在所述多个参与者之间分配第三秘密值的第三份额,其中每个所述第三份额适于应用于消息,以生成第四秘密值的相应的第四份额,其中所述第四秘密值是用所述私钥并使用所述临时密钥签名的消息,并且其中所述第四秘密值可借助于第二阈值数量的所述第四份额来访问,而对于小于所述第二阈值数量的所述第四份额是不可访问的。

通过在所述多个参与者之间分配第三秘密值的第三份额,其中每个第三份额适于应用于消息,以生成第四秘密值的相应第四份额,所述信息是用所述私钥和临时密钥签名的,其中所述第四秘密值可借助于第二阈值数量的第四份额来访问,而对于小于所述第二阈值数量的第四份额是不可访问的,这提供了以下优势:使大部分数字签名份额能够预先生成,并且在需要快速签名时应用于消息。这又使得交易能够进行快速非交互式签名,且因此适合在交换中使用。

分配给每个所述参与者的份额对于每个其他所述参与者可以是不可访问的。

将所述份额分配给每个所述参与者的步骤可以包括为所述参与者或每个所述参与者提供相应的加密通信通道。

可以借助于相应的shamir(沙米尔)秘密共享方案来创建第一和/或第二份额。

多个所述第一和/或第二份额可以是第一多项式函数的相应值,并且可以通过从所述第一阈值数量的所述份额推导出所述多项式函数来确定对应的秘密值。

可以借助于联合随机秘密共享(jrss)在多个所述参与者之间共享至少一个所述第一和/或第二秘密值。

共享至少一个所述第三秘密值可以包括共享由联合零秘密共享(jzss)生成的掩盖(masking)份额。

所述密码系统可以是椭圆曲线密码系统,其中每个所述公钥-私钥对中的所述公钥通过将椭圆曲线生成点乘以所述私钥而与对应的私钥相关。

根据本发明的另一方面,提供了一种用于执行上文所定义的方法的计算机实现的系统。

附图说明

现在将参考附图,仅以举例的方式而不以任何限制的方式描述本发明的实施例,其中:

图1是体现本发明的数字签名系统;

图2是用于生成用于图1的过程的数字签名的份额的过程;

图3是由在图2的过程中生成的份额生成数字签名的过程;

图4显示了分割私钥份额的过程;以及

图5显示了在无响应的或恶意的参与者的情况下执行数字签名的过程。

具体实施方式

系统概述

参照图1,体现本发明的用于执行区块链交易4的快速签名的系统2具有阈值签名方案中的四方,所述四方为客户6、交换方8、受信任的第三方(ttp)10,以及托管方12。每一方分别具有相应的椭圆曲线公钥/私钥对(yc,xc)、(yex,xex)、(yt,xt)、(yes,xes)。与现有技术的典型的“2/3”(2of3)托管配置相比,本发明的特征在于额外的一方,即ttp10。如下文中更详细地说明的,需要ttp10参与并不涉及托管方12(在故障排除的情况下)的每个签名的生成。

需要ttp10与交换方8具有快速(低延迟)且可靠的连接,并且ttp10应与所有其他各方实体分离。

然后,在客户6和交换方8、交换方8和ttp10、客户6和ttp10、交换方8和托管方12之间建立能够进行加密和认证的安全的通信通道。这些通信通道建立了共享的秘密,这些秘密可以在不使用国际专利申请wo2017/145016中描述的方法进行额外通信的情况下周期性地更新。

各方持有阈值私钥x中的秘密密钥份额xn;n=1,2,3,4;根据下文更详细描述的方法,份额是以分配方式生成的(即在没有受信任的交易商的情况下),因此,完整私钥不会存在于单个位置。这些份额(连同签名初始化)可用于在消息m(比特币交易散列)上生成部分签名(或签名份额)sign;n=1,2,3,4。ttp将响应于来自交换方8的经过验证的请求提供对任何交易的部分签名。因此,“3/4”阈值方案实际上模拟了“2/3”多重签名。另一种可能性是对ttp10将进行部分签名的交易类型进行限制。例如,ttp10应该仅签署发送到某些地址的交易。这种配置的优势是ttp10不需要了解任何有关交易的信息,因此可以“对其进行盲签”。此外,此方案还最接近地模仿了bitgo的“2/3”结构。

假设各方2、3和4采用受信任的硬件,使得在受保护的“工作区域(enclave)”内生成其在阈值私钥中的份额。可以将消息发送到工作区域,且如果满足某些条件,则可以输出消息上的(部分)签名,但是私钥份额从不离开工作区域。在此方案中,可以在给定两个私钥份额的情况下重构阈值私钥。然而,使用受信任的硬件时,当两个硬件都包含同样生成的密钥份额时,这种攻击每次将需要对两组硬件的长时间的实体访问权。因此,在实践中很难实现这种攻击。

交换的基本操作

参照图1,阈值钱包与交换操作有关的高级功能如下:

1.客户6将一些比特币b存入与阈值方案产生的(无交易商)公钥相关联的帐户中。

2.执行各种贸易,从而使得b的一部分f属于客户6。

3.(由客户6或由交换方8)请求结算。可以这样说,交换方8请求结算,并且在交易t中对资金的正确分配进行编码。

4.t和sig(t,xex)由交换方8发送到ttp10。

5.如果sig(t,xex)得到验证,则ttp10将其在t上的部分签名(标示为sig3)发送给交换方8。ttp10不需要知道t中包含的信息,实际上,从安全性的角度来看,不知道会更好。这可以通过部分盲签操作来实现。

6.同时,如果请求被认为是可信的(sig(t,xe)得到验证),并且他们同意t的内容,则客户6将sig(t,xc)、sig1、sig(sig1,xc)发送给交换方8。

7.如果签名得到验证,则交换方8将sig2、sig1、sig3组合在一起,并检查签名sig(t,x)是否已验证;如果是这样,则将t,sig(t,x)广播到区块链网络。

安全钱包协议

此部分描述了用于创建安全钱包以及随后的阈值签名操作的协议。根据高级原语对协议进行了描述,高级原语在r.gennaro、s.jarecki、h.krawczyk以及t.rabin的鲁棒的阈值dss签名,关于密码技术的理论和应用的国际会议,第354-371页(1996年)中进行了详细描述。

无交易商的密钥生成

通过在方案中的四个参与者之间将安全通信通道重新初始化来启动安全钱包的创建(如国际专利申请wo2017/145016中所述)。

然后,交换方8协调共享椭圆曲线公钥的无交易商的生成,其中4个参与者中的每个参与者将持有对应的秘密密钥的份额(基于1次多项式)。这四个份额中的两个足以重构私钥,但是,如果密钥份额在受信任的执行环境中受到保护,则即使有两个参与者串通,此操作也是不可能的。授权交易的唯一可能方式是生成涉及四个参与方中的三方的阈值签名。

密钥生成涉及运行联合可验证随机秘密共享(jvrss)协议,以在每一方具有关于多项式的份额(xi)的情况下通过指数插值(exp-interpolate)程序创建共享多项式,及对应的共享公钥y。指数插值程序是至少自乘以椭圆曲线生成点的阈值数量的份额恢复乘以椭圆曲线生成点的共享秘密,即使用将用于自阈值数量的份额恢复共享秘密的类似的技术(即拉格朗日(lagrange)插值法)。通过执行pedersen(佩德森)的协议[pedersen1991],可以确保对秘密份额进行无条件的安全验证。此过程如图2所示。一旦已经可验证地执行了密钥生成,客户(或交换方)就将资金支付给共享公钥(y的对应比特币地址),然后由交换方(或客户)确认。应当注意,参数r是由w0的x坐标计算出来的。

临时密钥共享

为了能够对给定的交易生成快速且非交互式的签名,可以在签名程序之前生成构造签名所必需的临时密钥(k)份额和秘密份额相乘。这意味着,一旦需要签名,每一方只需计算其签名份额(给定特定的交易散列m),然后任何人都可以广播和插值所述份额,以生成完整的签名。

图2显示了按照联合随机秘密共享(jrss)协议(共享未知的随机值)和联合零秘密共享(jzss)协议(共享零与随机份额-用于掩盖)的这种“预签名”程序。执行图2中所示的操作,以在任一方不知完整的临时密钥的情况下由临时密钥份额共同计算r的值。

此处描述的共享密钥生成和“预签名”配置可以同时并行执行,从而显著节约通信时延。

签名生成

如图3所示,有效签名(对于共享公钥y)的生成需要3方同意(签名将从2次(t=2)签名份额多项式上的3个点插值)。在正常操作中,份额将由客户6、交换方8以及ttp10产生。完整签名插值法(拉格朗日)可以由任一方执行,但是在本实施例中由将编译最终交易并将其广播到网络的交换方8(或客户6)执行。图3显示了每一方计算签名份额然后对其进行广播。此份额可以是公共的-不包含有关私钥或临时密钥份额的信息,或由于掩盖份额(为零)ci而引起的任何其他识别信息。附录1中更加详细描述了图2中所示的用于分配密钥和签名份额的密钥共享方案。

客户密钥管理

除了来自用于受到保护的资金的无交易商共享密钥所带来的安全益处外,还可以通过分割客户密钥份额来进一步增强客户的安全性。此过程如图4所示。在联合可验证随机秘密共享(jvrss)协议建立之后,客户密钥份额(x1)自身可以分割为两个或三个子份额。根据国际专利申请案wo2017/145010中描述的协议执行分割。密钥份额分割后,将被安全删除。然后,将子密钥份额发送到不同的设备,以进行二因数认证(2fa),以便授权交易签名。通过存储客户子密钥份额之一的交换方可以实现进一步的安全性增强–因此,客户(通过2fa)和交换方都需要同意提供客户部分签名。

在恶意/无响应方情况下的解决方案

无响应客户

参照图5,在这种情况下,交换方8必须使托管方12参与,以便对t构造阈值签名。情况与对bitgo将出现的情况相同。说服托管方12参与的程序可相对较慢,并且涉及多个检查(例如,以防止交换方8的安全性已经受到损害的可能性)。为了提高安全性,托管方12可以配置为(初始)仅提供对交易的部分签名,所述交易将资金移动到特殊的“持有帐户”(恢复地址:rec),也必须受到阈值签名保护,在这种情况下,资金必须保持一段时间。此帐户的重要性可能仅由阈值方案的各方知道。例如,如果客户被误认为无响应,则此预防措施将使客户6有时间进行干预。

恶意客户

同样参照图5,恶意客户6通过提供无效的签名份额(即,s1)来防止有效阈值签名的生成(以及因此,资金的转移)。当将3个签名份额组合在一起,以形成完整签名时,很明显,签名是不正确的(通过使用共享公钥进行的验证失败)。在这种情况下,第一步是识别三个签名份额(s1,s2或s3)中哪一个无效。这可以迭代完成:交换方8、ttp10以及托管方12可以尝试将交易签名到恢复地址,且如果失败,则可以由客户6、ttp10以及托管方12生成签名份额(即交换方8份额是恶意的)。可替代地,可以采用签名份额验证方案。

本发明实现比特币交换所采用的安全钱包服务系统,其采用'2/3'多重签名技术,以通过基于采用多项式秘密共享的阈值签名的方案进行有效替代(并改良)。本发明还与通过支付通道进行的贸易兼容,因为其允许在高频下签名(与例如,s.goldfeder、r.gennaro、h.kalodner、j.bonneau、j.a.kroll、e.w.felten以及a.narayanan,通过新的dsa/ecdsa阈值签名方案的安全比特币钱包(2015年)和r.gennaro等人的阈值最优dsa/ecdsa签名及其在比特币钱包安全性中的应用(2016年),关于应用密码术和网络安全的国际会议acns2016:应用密码术和网络安全,第156-174页相比)。

本发明也可在可能存在的无响应交换的情况下具有鲁棒性。因为ttp看得到每个承诺交易(并提供其部分签名),所以ttp始终知道当前通道状态;这意味着ttp可以在交换方无响应的情况下与托管方和客户协作,以提供有序的软解析序列,从而避免了上述的“故障模式”。

本发明还通过将第一承诺交易嵌入到链上交易中来交换第一承诺交易,从而避免了隔离见证的需要。托管方监视这些交易的区块链,并且在超时前未观察到相关交易的情况下与适当的各方协作,以提供退款。

应当指出,各方(以及因此,整个系统)中任一者的可用性和安全性可以通过在(私人)“会议(congress)”成员之间进一步共享其私钥和/或共享阈值私钥中的份额来增强。例如,如果在区块链上未观察到所需的ect,则托管方可发起退款。在这种情况下,可以在属于会议成员的tee内部检查区块的难度,并且当且仅当为通道提供资金之后在某一数量的区块内未观察到承诺交易时才可使虚链(ghostchain)实例化,以构造对退款交易的(部分)签名。

应当注意的是,上述实施例是说明而不是限制本发明,并且本领域技术人员在不脱离由所附权利要求书所限定的本发明的范围的情况下将能够设计许多替代实施例。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等不排除任一项权利要求或说明书中整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括(comprises)”是指“包括或由……组成”,且“包括(comprising)”是指“包括或由……组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个装置可以由同一硬件来体现。在互不相同的从属权利要求中引用某些措施的事实并不意味着不能有利地使用这些措施的组合。

附录1-密钥份额和签名份额生成的详细说明

算法1-密钥生成

域参数(曲线,基数n,生成点g)

输入:na

输出:公钥qa

私钥份额da(1),da(2),...,da(j)

对于来自(j)个参与者的阈值k个切片(slice),构造了与参与者(i)和被指定为参与者(h)的(j-1)个参与者相关联的所构造的密钥段da(i),(j-1)个参与者是与参与者(i)交换秘密以签署密钥(因此,签署比特币交易)的其他各方。

·在方案中,j是参与者的总数,其中k≤j,且因此,h=j-1

·因此,存在(k,j)-阈值共享方案。

算法1的方法如下:

1)(j)中的每个参与者p(i)都与所有其他参与者交换ecc公钥,其中1≤i≤j。此地址是组识别地址,且不需要用于任何其他目的。

2)每个参与者p(i)以对所有其他各方都保密的方式选择具有随机系数的次数为(k-1)的多项式fi(x)。

此函数受限于参与者的秘密形式的第一秘密值,此秘密值被选作多项式自由项。此值不共享。

fi(h)被定义为函数的结果,参与者p(i)选择点(x=h)处f(x)的值,且参与者p(i)的基本方程定义为以下函数:

apxpmodn

在此方程中,a0是每个参与者p(i)的秘密,并且不会共享。

因此,每个参与者p(i)都有秘密保存的函数fi(x),此函数表示为(k-1)次多项式,其自由项被定义为参与者的秘密,使得:

aγxγmodn

3)每个参与者p(i)使用如上所述的p(h)的公钥来加密至参与者的第一份额fi(h),并交换p(h)的值以进行解密。每个参与者pi,例如,通过国际专利申请wo2017/145010中公开的方法与每个其他参与者pj建立相应的安全加密通信通道。

4)每个参与者p(i)将以下值广播给所有参与者。

a)

b)

5)每个参与者p(h≠i)验证所接收份额与从每个其他参与者接收的那些份额的一致性。

亦即:

且fi(h)g与参与者的份额一致。

6)每个参与者p(h≠i)证实参与者(p(h≠i))所拥有且被接收的份额与其他接收到的份额一致:

实际上,此步骤由对份额fi(h)的椭圆曲线加密版本(即fi(h)g)进行运算组成,如果对fi(h)的未加密版本进行此运算,则将恢复秘密值a0(i),从而恢复ga0(i)。因此,在shamir(沙米尔)秘密共享方案的情况下,系数bh表示从秘密的对应份额恢复秘密所必需的拉格朗日插值系数。

如果不一致,则参与者拒绝协议并重新开始。另外,由于每个参与者pj通过其自己的加密通信通道与参与者pi进行通信,因此可以识别哪个参与者pj与任何不一致的份额相关联。

7)参与者p(i)现在将其份额da(i)计算为:

其中是从每个参与者p(h≠i)接收的相应的第二秘密值a0中的第二份额

且其中:及da(j)

其中:

且其中运算exp-interpolate()定义为从椭圆曲线加密份额恢复椭圆曲线加密秘密的运算。

返回(da(i),qa)

参与者p(i)现在将份额用于计算签名。此角色可以由任何参与者或在收集签名过程中充当协调者的一方p(c)来担任。参与者p(c)每次尝试收集足够的份额来签署交易时可以改变且不必是同一方。

因此,在不知道其他参与者份额的情况下创建了私钥份额

算法2-更新私钥

输入:参与者pi的私钥da的份额,表示为da(i)。

输出:参与者pi新的私钥份额da(i)。

算法2可用于更新私钥,还可用于将随机性添加到协议中。

1)每个参与者选择次数为(k-1)的随机多项式,此多项式将零作为自由项。这类似于算法1,但是参与者必须证实所有其他参与者的选定秘密为零。

生成零份额:

2)da(i)′=da(i)+zi

3)返回:da(i)′

此算法的结果是与原始私钥相关联的新密钥份额。此算法的变化能够增加第一种算法的随机性,或者进行重新共享操作,从而无需更改可能的比特币地址就可以生成新的密钥切片。以此方式,本发明允许组在不改变基础私钥的情况下附加地掩盖私钥份额。此过程可用于在不更改基础比特币地址和私钥的情况下,最大程度地减少与继续使用和部署个别密钥份额相关联的任何潜在密钥泄露。

算法3-签名生成

域参数:曲线、基数n、生成点g

输入:待签名消息e=h(m)

私钥份额

输出:签名

对于e=h(m)

a)分配式私钥生成

1)使用算法1生成临时密钥份额:

2)使用算法1生成掩盖份额:

3)利用算法2生成掩盖份额:

份额b和c接着由参与者保密。

b)签名生成

4)e=h(m)证实消息m的散列

5)广播

θi=dk(i)αi+βimodn

ωi=g×αi

6)μ=interpolate(θi,...,θn)modn

其中运算μ=interpolate(υ1,…,υj)modn定义为从份额恢复秘密的运算。

7)θ=exp-interpolate(ω1,...,ωn)

8)计算(rx,ry),其中rx,y=(rx,ry)=θ×μ-1

9)r=rx=rxmodn

如果r=0,则重新开始(即从初始分配重新开始)

10)广播si=dk(i)(e+da(i)r)+cimodn

11)s=interpolate(si,...,sn)modn

如果s=0,则从开始(a.1)重新进行算法3。

12)返回(r,s)

13)在比特币中,通过(r,s)对来重构交易,以形成标准交易。

参考文献

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