抗货币失效的区块链钱包保护协议研究*

2020-12-15 08:13孙丽艳
计算机与生活 2020年12期
关键词:私钥门限密钥

周 健,孙丽艳,付 明

1.安徽财经大学管理科学与工程学院,安徽蚌埠233041

2.北京邮电大学计算机学院,北京100083

1 引言

区块链是比特币的基础支撑技术[1],首次出现在中本聪(Satoshi Nakamoto)发表的《比特币:一种点对点式的电子现金系统》文献中[2],它具有去中心化、不可篡改、去信任化和可溯源等特性,广义的区块链技术有望彻底重塑人类社会活动形态[3],为金融、科技、文化、政治等领域带来深刻的变革[4-6]。区块链建立在密码学的基础上,如哈希函数、公钥机制、椭圆密码曲线等,通过密码学的特性保证在非可信的分布式环境中如何进行安全交易,防止诸如51%攻击、伪造身份、重复交易、支撑犯罪活动等问题[7]。密钥基础的性质决定了区块链的安全特性和功能性,通过密码基础为区块链技术提供新的功能和安全性质是区块链研究的一个重要内容,未来区块链将进一步利用密码学技术衍生新功能[8]。

比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的[9]。在基于区块链的虚拟货币系统中私钥是用户唯一的身份证明和安全证明基础[10],它由用户自主产生并维护,无需第三方支持[11]。它能够标志区块链用户身份,是用户之间进行虚拟货币交易的基础,区块链的交易受到私钥的控制,私钥的安全性直接关系账户的交易资金的流向,因此私钥安全受到恶意攻击者的极大关注。私钥实际上并不是存储在网络中,而是由用户生成并存储在一个文件或简单的数据库中,称为钱包[12]。存储在用户钱包中的数字密钥完全独立于比特币协议,可由用户的钱包软件生成并管理,而无需区块链或网络连接。因此钱包是保存管理密钥的工具,钱包安全是虚拟货币系统中非常值得研究的安全问题。

区块链钱包本身的安全性很高,采用非对称密钥机制,保证了安全性和有效性,针对钱包私钥的安全性问题集中在三方面:(1)使用困难,256 bit的私钥表现成50个字符长度形式,难以记忆,采用辅助交易的方式给攻击者提供了机会,一旦委托方的失效或者被攻击,将导致财产损失[13]。(2)不可恢复性,由于没有可靠的第三方支持,私钥仅由资产所有者持有,一旦钱包丢失或被偷窃,不仅密钥不能够被恢复找回,攻击者实施的恶意交易行为也无法撤销和跟踪[14]。(3)难以托管,区块链建立在完全分布式基础上,将私钥托管在可信第三方不仅不符合区块链的结构设计,也会引发单点失效问题,托管方成为攻击重点[15]。上述安全性质使得区块链钱包的私钥保护对于区块链的安全具有十分重要的意义[16]。

本文基于门限密钥协议[17]提出一种私钥保护和恢复机制,通过动态的门限密钥机制将用户的私钥分成与网络规模等同的密钥碎片,即使私钥丢失,网络成员可通过收集超过门限数量的密钥碎片恢复私钥,契合区块链分布式存储结构。私钥保护过程中,容忍网络的扩展,私钥的更新规模小于网络规模。安全性上,攻击者需要攻击超过网络半数以上的成员才能恢复私钥,随着网络规模的增加,攻击网络的困难程度不断增加。每个节点维护网络的密钥碎片,建立密钥碎片树,通过交互密钥碎片树信息维护全网的密钥完整性。建议的钱包保护方案为区块链中私钥的保护提供一种可行安全方案。

2 研究现状

私钥安全性研究主要包括私钥的生成安全、存储安全和使用安全。现有的方案侧重从上述三方面提出增强钱包安全性的安全方案。

在私钥的生成安全性研究上,文献[18]提出了随机种子的方法,引入存储在本地设备的随机种子,将该随机种子与密码结合在一起通过椭圆密码曲线生成完整的私钥,但是仅仅依靠随机种子在没有密码的情况下无法生成完整的私钥,且能够在用户忘记密码的情况下恢复完整的私钥,操作简单,但并不能防止随机种子和密码被盗取。

在私钥保存方式安全性研究上,冷存储将私钥的隔离存储在一个硬件设备上,文献[19]提出比特币硬件令牌,钱包私钥永久存储在离线硬件上,用户输入正确的口令才能解密拿到私钥签署交易,因为不需直接连接到比特币网络所以生成成本低,但问题是如果用户的令牌和口令不幸同时被盗取将会给用户造成不可挽回的损失。文献[20]提出的托管账户是一种依靠第三方来管理私钥的托管账户方案,帮助用户管理私钥,这种方案能够有效避免用户不慎遗失私钥的问题,这个第三方必然会成为攻击者的目标,并且在用户大量交易的时候,可能会出现服务延迟的现象。此外两因子钱包(two factor wallet)将私钥分为两个部门,分别保存在电脑和智能手机上,只有两个部分都同意签发,交易才能确认,进一步扩展将私钥分成多个部分存储在不同的硬件设备上,但是同样交易的效率受到影响[21]。

在私钥的安全使用方式研究中,文献[22]提出双重认证机制,交易的确认不仅与私钥签名相关,而且交易过程与邮箱或移动智能终端设备相关,在提高私钥安全使用的前提下牺牲了私钥的匿名性。在私钥的使用,文献[23]首次提出使用门限密钥管理私钥,文献[24]提出的加权阈值签名方案是将密钥分成多个份额。由多个参与者持有,且参与者具有不同的优先级,即每个参与者所占的权重不相同。每个参与者根据权重持有不同份额的密钥。这个方案确实能达到极高的安全性,但是管理各个参与者的密钥是一大难题。文献[25]提出的多重签名钱包类似于拜占庭容错机制,在签署一笔交易时需要N个成员中M个成员来签署才能生效,其中N和M是可自由设定的,这种方案可靠的前提是创建多重签名钱包时的大多数账户都是可信的,且如果可靠的账户错过了签名将使恶意账户有机可乘。上述方案通过门限机制将私钥分成多个碎片,解决私钥可恢复性问题,但是这些方案存在如下的缺陷:首先,忽略了成员的动态性,由于私钥碎片分配给不同的成员,这些成员可能因为环境或内部因素导致损毁或失效,进而导致密钥碎片的在线存储规模小于规定的可恢复的门限阈值,造成私钥不可恢复;其次,固定的门限值会降低系统的安全性,随着密钥碎片的增加,攻击者有更多的机会收集到小阈值规模的密钥碎片;然后,私钥持有人为了维护门限密钥,必须始终在线,增加了系统维护成本。建议的方案在此基础上进行优化,允许在私钥持有者离线情况下,具有超门限数量的密钥碎片的持有者承担新密钥碎片的发布,保证密钥碎片实施动态管理,规模与网络的规模相关,保证私钥在动态网络中可恢复性。

3 门限密钥

本文基于Shamir(t,n)门限密钥分享方案[26],该方案是基于多项式的Lagrange插值公式的密码技术,把分享秘密sk分为n个不同的部分,即碎片sski,任何成员只要收到至少t个碎片sski就能恢复分享秘密sk。

初始化阶段:

步骤1秘密分享者user选择秘密多项式f(x)=,其中ai∈Z,f(x)的常系数部分为共享秘密sk。

步骤2秘密分享者user给分享者uj(i=1,2,…,n)分配密钥碎片,计算,并将sskj秘密通过安全信道发送给uj,uj是节点的标志或身份。

秘密恢复阶段:

步骤1任意t个参与者S={u1,u2,…,ut}可以通过公式重构sk,计算如下的公式:

步骤2成员uk∉S通过下式计算分享的密钥碎片:

4 钱包状态

成员的公钥加密密钥和私有解密密钥由区块链的钱包生成,钱包的状态决定了私钥的状态。如图1钱包包含五种状态。新加入钱包,以新成员身份加入网络中,成员生成私钥,并向全网络发布该私钥对应的密钥碎片。在线钱包,成员在网络中处于活跃阶段,负责私有解密密钥的新碎片的生成。离线钱包,成员在网络中处于非活跃状态,不能负责新密钥碎片的生成,此时由持有该密钥碎片的门限数量的在线钱包负责生成密钥碎片。失效钱包,钱包所有者可能因为密钥丢失或被窃取,导致所有者无法恢复私有解密密钥,通过线下身份确认,由超过门限数量的在线节点恢复私有解密密钥。死亡钱包,一旦网络中钱包对应的密钥碎片数量小于给定的门限值,并且碎片对应的归属钱包处于非在线状态,则网络中成员删除失效的密钥碎片,并保持全网络密钥碎片的同步性。

Fig.1 Status transfer of blockchain wallet图1 区块链钱包的状态转移

5 钱包保护机制

区块链钱包的保护机制需要满足如下的条件,每个成员具有全网唯一的地址或标识,建立互锁机制,当新成员注册和成员钱包恢复不能并发执行,即系统在一定时间间隔内只能执行新成员注册或钱包恢复操作。绝大部分成员保持在线状态,极少数的成员会丢失或较长时间段内不在线。网络中任意时间段内增加的节点数量超过死亡节点数量。

5.1 钱包初始化阶段

5.2 新钱包加入阶段

5.3 密钥碎片追加

因此对于离线钱包,在离线状态下门限值不变,这也使得离线下,随着网络规模的增加,离线节点的安全性逐渐降低。

当钱包由离线状态转为在线状态,钱包提高新门限阈值t′(t′>t),目前的门限值t,不失一般性,设网络钱包身份为(u1,u2,…,ut,…,ut′,…,uN)。

5.4 钱包恢复机制

当钱包私钥丢失时候,钱包ul向全网络广播,提出申请恢复钱包,即恢复私有解密密钥skl,i,接收请求的在线钱包发送密钥碎片<ul,sskl,i>,当密钥碎片规模超过规定门限值,成员执行恢复过程。

步骤1成员ul发送恢复钱包私钥请求,请求恢复密钥。

步骤2成员ui同意后,查找对应的私钥碎片,加密EPKl(sskl,i),并将其发送给成员。

步骤3成员收集密钥碎片sskl,i,如果碎片规模小于门限值,则返回恢复失败;否则,利用门限数量的密钥碎片恢复密钥。

步骤4恢复密钥的成员更新方程,为没有获得此密钥碎片的成员分配密钥碎片。

网络钱包的私钥碎片分布随着钱包的加入和退出产生变化,一直在线的钱包能够与网络保持同步,因此可以将密钥碎片分发到每个钱包,并保持密钥碎片的一致性,但是也存在部分钱包的密钥碎片可能因为离线和不满足门限数量的持有密钥碎片的在线钱包,导致该私钥无法恢复,也使得网络中钱包存储无法恢复的密钥碎片,造成空间浪费。尽管网络中每个钱包持有相同钱包的不同密钥碎片,从钱包的角度出发,每个钱包的密钥碎片结构是相同的,因此维护全网的密钥碎片同步很必要。

表1中有7个钱包,横坐标为时间段,纵坐标为时间点,括号内的参数值为网络规模、门限值、自身碎片数量,可见1和2钱包始终是在线状态,6和7是后加入节点,一直保持在线状态,4和5节点加入后离线,4节点死亡。网络中在线的钱包保存的密钥碎片状态为如下形式:

钱包1的密钥碎片图如图2所示,钱包2的密钥碎片图如图3所示,钱包3的密钥碎片图如图4所示,钱包4的密钥碎片图如图5所示。

步骤1钱包发布自己的密钥碎片树的从上到下的哈希值,如节点1发布树根哈希值H(1,2,3,4,5,6,7),节点2发布树根哈希值H(1,2,3,4,5,6,7),节点3发布树根哈希值H(1,2,3,5,6,7),节点4发布树根哈希值H(1,2,3,5,6,7)。

Tabel 1 State of key fragments in wallets表1 钱包中密钥碎片状态变化

Fig.2 Key fragments of wallet 1图2 钱包1的密钥碎片图

Fig.3 Key fragments of wallet 2图3 钱包2的密钥碎片图

Fig.4 Key fragments of wallet 3图4 钱包3的密钥碎片图

Fig.5 Key fragments of wallet 4图5 钱包4的密钥碎片图

步骤2每个钱包回复哈希值,如果确认值满足哈希值,则停止发送确认,否则执行步骤3,如钱包1得到来自钱包2的1个确认,钱包2得到来自钱包1的1个确认,钱包3得到来自钱包4的1个确认,钱包4得到来自钱包3的1个确认,它们都不满足。

步骤3没有满足确认数量的钱包发送密钥树下一层次的哈希值,如节点1发送H(1,2,3,4),H(5,6,7);节点2发送H(1,2,3,4),H(5,6,7);节点3发送H(1,2,3),H(5,6,7);节点4发送H(1,2,3),H(5,6,7);返回步骤2确认数量,钱包1得到H(1,2,3,4)的1个确认和H(5,6,7)4个确认,钱包2得到H(1,2,3,4)的1个确认和4个H(5,6,7)确认,钱包3得到H(1,2,3)的1个确认和4个H(5,6,7)确认;钱包4得到H(1,2,3)的1个确认和4个H(5,6,7)确认。

依次类推,每个钱包询问子树H(1,2)的4个确认,最终得到H(3)的4个确认和H(4)的2个确认,因此钱包4不满足门限值,成为死亡节点,钱包1和2删除叶子节点4。

6 安全性分析

安全性分析包括私钥完整性、抗合谋攻击、私钥可恢复性、容忍损毁和匿名性。

6.1 私钥完整性

私钥的完整性包括个体的私钥完整性和整体网络私钥的完整性。个体在密钥更新过程中,尽管每个成员的多项式方程的阶数增加,但是多项式的常系数部分不变,值为私钥,因此每个成员更新多项式方程后,私钥仍旧保持不变,动态门限值的调整使得密钥碎片多次更新后,仍然保证私钥不变。与方案[23-25]不同,个体在密钥恢复过程中,通过收集超过门限数量的密钥碎片确保密钥的完整性,即使个体处于非在线状态,网络中具有超过门限数量的私钥碎片个体,它们保证网络动态规模增加中成员私有密钥的不变性,容忍网络成员的动态变化,保证系统的稳定性。整体网络私钥的完整性即保证每个成员具有相同的密钥碎片树,具有全网全部可恢复私钥的碎片,通过私钥碎片的撤销机制删除死亡的密钥碎片,保证全网的每个节点具有相同的密钥碎片树。

6.2 抗合谋攻击

门限机制保证不超过门限数量的任意碎片不能恢复私钥,成功攻击可能通过收集超过节点创世门限值达到成功攻击,或者需要攻击一半以上的全网络成员,与方案[23-25]对比,随着网络规模的不断增加,需要收集的碎片规模也不断增加,攻击难度逐渐增加。钱包在非在线状态时,为保持私钥树的完整性,在门限值不变的情况下增加密钥碎片,尽管对于攻击者增加了成功攻击碎片的机会,但是密钥的攻击强度不变,攻击者仍旧需要收集门限数量的密钥碎片。新加入节点必须确认当前网络的规模,可以从区块账本中获得可信的网络规模,否则恶意节点可以通过不断加入网络欺骗获得密钥碎片,增加成功攻击的机会。

6.3 私钥可恢复性

密钥丢失后,合法成员向超过门限数量的成员提出请求,通过密钥碎片恢复出私钥。每个钱包通过安全信道收集门限值数量的碎片后,执行如下公式得到私钥。

既然参与分配的节点和被分配节点使用相同的分配方程f(x),且它的常系数部分为sskl,则最佳私钥具有可恢复性。

当节点由离线状态转为在线状态,更新方程为:

因此f(0)=sskw,因此当节点从离线转变为在线时,重新分配的还是原来的私钥。

6.4 容忍损毁

方案[23]中,节点失效导致私钥恢复过程失败,因为没有足够的密钥碎片,方案[24]中,持有密钥碎片较多的成员的失效对系统的影响更大。在建议的方案中,部分钱包损毁导致密钥碎片的损毁,网络仍然可以通过收集超过门限值数量的密钥碎片恢复出私有密钥,区块链网络中任意成员的身份对等,因此个体的损毁对每个私钥的影响程度是一致的。但是当成员处于离线状态时,由于不能及时调整门限值,节点损毁会增加离线节点恢复私钥的困难性,当节点损毁的数量使得现有的私钥碎片少于门限值时,该离线节点的私钥将死亡。通过节点合作的方式为离线节点补充密钥碎片,防止私钥的死亡。

6.5 匿名性

不同门限值的设置会泄露钱包的隐私。钱包的密钥碎片由私有持有者负责分发,无可信第三方支撑。尽管每个成员拥有不同的私钥碎片,每个成员持有的私钥具有对等性,攻击者不能根据密钥碎片区别节点的身份。密钥恢复过程只需要提供密钥碎片,无需提供钱包身份。

7 效率性分析

效率性分析包括计算开销、消息开销、存储开销。文献[23-25]中门限值的设置与网络规模无关,因此它们的开销与网络规模无关,建议的方案门限值设置与网络规模相关,因此建议方案的开销与网络规模相关。

7.1 计算开销

计算开销主要集中在加密密钥碎片和解密密钥碎片操作。

新成员加入时,每个成员使用多项式方程计算一个碎片值,执行N次加密运算,每个成员执行一次解密运算,同时其他成员执行次加密运算为其他成员发送一个新的密钥碎片,总计加密次数,解密次数相同。

成员非在线时,门限数量t的钱包承担密钥碎片的分解,每个钱包为其他钱包发送一个碎片执行一次加密,N-t个钱包执行t次解密操作,总计加密次数t(N-t),解密次数相同。

密钥碎片树是一个二叉树结构,因此最多执行lbN哈希值计算。

7.2 消息开销

新成员加入时,发送N次消息,同时其他成员发送次消息。成员非在线时,承担密钥碎片的分解的门限数量t的钱包发送至多t(N-t)次消息。

7.3 存储开销

设网络的在线规模为N,则每个钱包至少N存储开销需要保存网络中每个节点的至少一份碎片,存储开销与网络规模成线性相关性。

8 实验仿真

通过实验仿真验证方案的有效性,文献[23]和文献[25]本质上是一种方案,只是前者将门限方案应用于密码保存,后一种方案将门限方案应用于实际支付过程,因此实验中将文献[23]和文献[25]归类为一种方案[23],文献[24]提出方案[24]是对方案[23]的一种优化,每个成员分配的碎片规模根据身份重要性而不同。

8.1 私钥可恢复性

私钥的可恢复性是指在成员动态变化的情况下资产所有者能够通过收集足够的密钥碎片恢复它的私钥。图6中给出3种方案的比较,设置的场景中有1 000个区块链节点。建议的方案中,100个节点使用动态分配的方式分配密钥碎片,门限值为50;方案[23]和方案[24]使用固定的门限值,门限值设为20。场景中节点随机地退出网络或者新节点加入网络中。横坐标是区块链节点的更新率,纵坐标是私钥的可恢复率。由于节点的加入或退出导致方案[23]和方案[24]中携带碎片的节点退出,使得私钥无法恢复,而方案[24]中由于节点携带的碎片规模不同,随着更新率的增加,携带较大规模的节点退出网络的概率较大,因此加剧了私钥可恢复率的急剧下降,图中当节点的更新率达到20%时候,只有几个节点能够恢复私钥,方案[23]和方案[24]不能容忍携带密钥碎片节点的加入和退出。而推荐的方案中尽管节点退出或加入,通过合作的方式使得新加入节点也拥有密钥碎片,保证碎片规模,使得私钥可恢复性保持在一个较高的程度,尽管网络节点更新率达到20%,建议方案中的超过90%的私钥仍旧可以恢复。因此建议方案适合动态区块链网络,能够容忍携带密钥碎片节点的加入或退出。

Fig.6 Recovery rate of private key图6 私钥的恢复率

8.2 私钥恢复延时开销

Fig.7 Time delay of private key recovery图7 私钥恢复延时

当合法使用者请求恢复私钥时,会广播发送请求给其他区块链节点,拥有对应密钥碎片的节点会共享该碎片,进而恢复私钥,为了保证私钥恢复过程的匿名性,私钥碎片被随机地分布在网络中,私钥拥有者没有碎片分布的知识。在图7中设计10种场景,网络规模分别为100节点到1 000节点,每种场景规模差距为100个节点,作为横坐标,网络密度分布均匀,分别使用建议方案、方案[23]和方案[24],考察3种方案为了恢复私钥需要的延时,以跳数作为纵坐标。由于3种方案中密钥碎片是被均匀分布在网络中,私钥需要搜索整个网络寻找超过门限数量的密钥碎片,因此它们需要的延时与网络的规模相关,而与采用的门限密钥方案无关。

9 结束语

本文提出了一种基于门限密钥的钱包私钥管理方式,即使发生钱包丢失或遗失,区块链网络成员通过协商合作恢复出该私钥,同时当钱包离线中,门限数量的持有该钱包密钥碎片的其他钱包合作保持全网的私钥碎片的分发,使得全网的密钥碎片结构同步,通过对密钥碎片树的哈希值提供高效的通信交互效率。私钥的分布式管理过程具有非中心化、开放性和自治性的特点,无需可信第三方的介入,契合区块链网络的内在特征。下一步工作中研究如何激励节点参与到私钥的分布式保护策略,以及提高私钥碎片的分布效率。

猜你喜欢
私钥门限密钥
比特币的安全性到底有多高
基于规则的HEV逻辑门限控制策略
幻中邂逅之金色密钥
幻中邂逅之金色密钥
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序员把7500枚比特币扔掉损失巨大
随机失效门限下指数退化轨道模型的分析与应用
Android密钥库简析
基于身份的聚合签名体制研究
一种新的动态批密钥更新算法