一种抗合谋攻击的区块链私钥管理方案

2020-11-14 04:00:38健,屈
计算机工程 2020年11期
关键词:私钥口令门限

周 健,屈 冉

(1.安徽财经大学 管理科学与工程学院,安徽 蚌埠 233030; 2.北京邮电大学 计算机学院,北京 100876)

0 概述

区块链是一种去中心化的分布式账本系统,其提供了在开放环境中存储信息、执行事务、执行功能和建立信任的创新方法[1],广泛应用于全球部署的加密货币[2]、智能合约[3]、物联网[4-5]、智能电网[6-7]、供应链[8-9]等领域。区块链[10]、人工智能[11]和大数据[12]被认为是下一代金融科技发展的三大核心计算技术,但将区块链作为底层技术的去中心化平台和应用通常面临账户管理难题,由于没有可信第三方,如果用户硬盘崩溃或病毒损坏数据或遗失携带密钥的设备而丢失与其钱包相关的私钥,则将无法找回区块链账户上的资产[13-14]。许多比特币用户就因为密钥管理可用性差、恶意交换和钱包安全漏洞而遭受巨大损失[15]。2015年1月,攻击者通过恶意软件进入Bitstamp热钱包,窃取1.9万枚比特币。2016年8月,攻击者利用Bitfinex交易所和BitGo公司的多重签名钱包中的安全漏洞窃取12万枚比特币。2017年7月,攻击者利用以太坊多重签名钱包Parity的安全漏洞窃取约15万枚以太币[16]。因此,提出一个切实可行的区块链账户管理方案是亟待解决的问题。

目前,学术界针对区块链上的账户管理问题主要研究如何提高用户私钥生成、存储和使用阶段的安全性和便利性。在用户私钥生成阶段,文献[17]提出随机种子结合密码的私钥生成方案,利用存储在本地设备的随机种子和密码生成私钥。在私钥存储阶段,研究人员提出本地存储、加密钱包、离线存储[18]、账户托管[19]和分层确定性钱包[20-21]等方案。在私钥使用阶段,研究人员提出多重签名[22-23]和门限签名[24-25]方案。比特币在进行多重签名交易时,需要由多重签名交易地址中N个成员中的M个成员签署才能生效,其中M≤N,若要变更多重签名交易策略,则需要生成新的多重签名交易地址和脚本。在基于门限签名的账户管理方案中,账户的私钥碎片分割成多份碎片分布在每个参与者手中,实现一笔交易需要大于门限值份额的参与者共同签名,并且可依据参与者的身份赋予参与者不同的权重。这类方案实现一笔交易需要多人共同参与,能够有效增强账户的可靠性,但管理各参与者的密钥是一大难题。文献[26]根据比特币兼容的门限秘密共享和属性基加密方案提出一种分布式比特币账户管理(DBAM)框架,实现对企业和企业比特币账户的联合管理。文献[27]提出一个用于确保比特币钱包安全的最优阈值数字签名方案,该方案仅需大于门限阈值的诚实节点即可保证方案的不可伪造性。

通过上述分析可看出,现有研究多数为针对用户个人账户的私钥管理,并且由用户个人选用不同方式保存私钥,若用户不慎丢失私钥,则将无法访问账户。因此,本文提出一种基于门限密钥共享[28]的区块链账户私钥分布式管理方案。将私钥和用户设置的秘密口令相结合生成秘密,再将秘密通过门限机制分割成多份碎片,由网络中成员进行分布式保存,网络节点的加入和退出都会对私钥碎片和门限值进行更新。但即使用户不慎丢失私钥,只要收集超过门限阈值数量的密钥碎片再结合秘密口令就可恢复私钥,并且由于本文方案中的门限值和秘密碎片随网络规模的变化更新,因此攻击者难以在一个更新时期内收集到超过门限阈值的秘密碎片和用户设置的秘密口令以窃取用户私钥。

1 门限密码学

2 私钥管理方案

在本文私钥管理方案中,区块链网络采用实用拜占庭容错协议[30]达成一致性,其算法流程如图1所示。该算法包括请求(request)、预准备(pre-prepare)、准备(prepare)、确认(commit)和回复(reply)5个阶段。假定系统中故障节点数目为f,当系统中故障节点占比小于1/3时,实用拜占庭容错算法才能达成共识。在请求阶段,客户端C向主节点0发送请求消息。在预准备阶段,主节点0为客户端C的请求分配次序并向从节点1、从节点2、从节点3发送预准备消息,节点对预准备消息检验并同意后进入准备阶段。在准备阶段,诚实从节点1、诚实从节点2向节点0~节点3广播准备消息,故障节点3不响应,当收集到从不同节点广播且与预准备消息一致的2f+1个准备消息后,进入确认阶段。在确认阶段,诚实节点0、诚实节点1、诚实节点2向除自己以外的其他节点发送确认消息,当收集到不同节点发送且与预准备消息一致的2f+1个确认消息后,进入回复阶段。在回复阶段,诚实节点0、诚实节点1、诚实节点2向客户端发送回复消息,客户端收到2f+1个不同节点发送的响应消息时,请求执行成功。

图1 实用拜占庭容错算法流程Fig.1 Procedure of practical Byzantine fault tolerance algorithm

假定该区块链系统运行于网络规模为n的企业网络上,企业员工使用私钥对企业事务进行审批处理并广播,收到确认后达成一致。企业员工在加入区块链网络时,将私钥根据门限秘密共享方案分割成n份碎片,使用企业其他员工公钥加密并广播,收到超过2/3的确认后达成一致。如果企业员工的私钥不慎丢失,则在企业使用的区块链客户端广播请求私钥碎片并附带私钥碎片正确调用口令,只要企业员工收集到超过门限阈值的私钥碎片就可根据拉格朗日插值法恢复私钥,正常处理企业事务。

2.1 初始化

步骤3节点ui调用口令hash值、加密后私钥碎片和加密后私钥碎片hash值{hash(λi),hash(sski,j),Epkj(sski,j),j=1,2,…,n}并通过客户端发送给主节点。在预准备阶段,主节点将信息进行排序并发送给网络中的成员。在准备和预准备阶段,网络中成员uj,j∈1,2,…,n收到消息后使用其私钥skj解密Epkj(sski,j),并计算hash[Dski(Epki(sski,j))]=hash(sski,j)。

若上式成立,uj向其他节点广播信息,否则uj节点不广播信息。在确认阶段,各节点对其他节点广播信息进行验证后,向其他节点发送确认消息,秘密保存{hash(λi),hash(sski,j),sski,j}并在回复阶段响应客户端。客户端若收集到⎣2n/3」+1个响应,则私钥碎片分配完成。若响应数目少于⎣2n/3」+1,则更换主节点,重新处理请求。

在初始化阶段完成后,网络中的成员将自身私钥分割成n份私钥碎片并分别保存于网络节点处,在私钥分配初始化过程中未能及时响应的节点可请求网络中其他节点获取自身需保存的密钥碎片并对其进行保存。私钥丢失成员至少需收集t=⎣2n/3」+1份私钥碎片,再结合设置的口令αi才可以恢复自身私钥。

2.2 节点加入

2.3 节点退出

2.4 密钥恢复

当网络成员uc的私钥丢失后,uc可创建一个临时账号加入网络,密钥恢复后注销。其公私钥对为(pkc′,skc′),uc通过以下步骤恢复密钥:

步骤1成员uc通过客户端向主节点发送密钥恢复请求,并附加其密钥调用口令。

步骤2主节点将该消息广播到网络中的其他节点,网络中的其他节点在经过准备和协商阶段的验证后,确认该信息的调用口令为正确,响应客户端并对私钥碎片使用成员uc的临时账号公钥加密sskc,j,将Epkc′(sskc,j)发送给成员uc。

步骤4成员uc恢复密钥skc后,变更其密钥碎片调用口令λc为λ′c,并将其hash值hash(λ′c)通过客户端发送给主节点,主节点发送给其他节点,网络中节点确认消息正确后响应服务器并变更秘密存储的{hash(λc),hash(sskc,j),sskc,j}为{hash(λ′c),hash(sskc,j),sskc,j}。

3 安全性分析

3.1 抗合谋攻击分析

3.2 密钥可恢复性分析

密钥可恢复性是门限密钥的特性。用户收集到超过门限阈值的秘密碎片即可根据拉格朗日插值法恢复出分配的秘密ski+αi,由于用户已知自己设置的口令αi,因此对ski重新编码即可使用恢复的私钥。

3.3 抗单点失效分析

由私钥和用户秘密口令组成的秘密被分割成n份存储在网络节点中,用户仅需记住自己设置的秘密口令以及私钥碎片调用口令,即可收集秘密碎片并在收集到超过门限阈值的秘密碎片后就能恢复秘密,同时根据秘密口令和秘密恢复私钥。由于网络中只要存在超过门限阈值以上的正常节点系统就可正确运行,因此单个节点的故障不会影响系统的正常运行。

3.4 匿名性分析

不同于多重签名和门限签名方案完成一笔交易需要多个节点的签名,本文中的私钥碎片持有者仅协助用户进行私钥恢复,不参与用户交易事务,账户由私钥所有者单节点控制,保证网络中用户的匿名性。网络中成员仅已知其他成员的标识符、公钥以及地址,无法了解其他成员的身份和隐私信息。

将本文方案与离线存储方案[18]、账户托管方案[19]、多重签名方案[22-23]、门限签名方案[24-25]进行安全性对比,其结果如表1所示。本文方案具有抗合谋攻击、抗单点失效、无可信中心、密钥可恢复、匿名、账户单节点控制特性,可保证使用用户的账户安全以及隐私,并在一定程度上保障用户的使用便利性。

表1 私钥管理方案安全性对比Table 1 Security comparison of private key management schemes

4 效率分析

4.1 计算开销分析

由于多项式的计算开销非常小,因此本文对多项式的计算开销可忽略不计,并且假设本文方案的网络规模为n。

在初始化阶段,用户为目前网络中其他节点分配密钥碎片,单个用户需要计算口令和私钥碎片的hash值,私钥碎片使用其他节点公钥加密后的密文且进行n次加密运算和n+1次hash运算。网络中的其他节点对用户发送的私钥碎片密文进行解密,并通过hash运算验证其完整性,存储单个用户的私钥碎片需要进行一次解密运算和一次hash运算。存储网络中全部节点的私钥碎片需要进行n次解密运算和n次hash运算,其计算开销与网络规模线性相关。

在节点加入阶段,新加入节点需要为其他节点分配私钥碎片,其他节点也需更新私钥碎片并为新加入节点分配私钥碎片。新加入节点在分配自身私钥碎片过程中进行n+1次加密运算和n+2次hash运算,其他节点在重新分配自身私钥碎片的过程中进行n+1次加密运算和n+1次hash运算,网络中的节点在接收并存储其他节点私钥碎片的过程中进行n+1次解密运算和n+1次hash运算。

在节点退出阶段,节点退出网络,网络中的剩余节点需更新私钥碎片和门限值。网络中的节点需要进行n-1次加密运算和n-1次hash运算重新分配自身私钥碎片,在验证并存储网络中其他节点时需要进行n-1次解密运算和n-1次hash运算更新私钥碎片。

在密钥恢复阶段,网络中的节点将用户临时账户公钥加密后的私钥碎片发送给用户,用户使用私钥解密并通过拉格朗日插值法恢复密钥并更新调用口令。网络中的节点需要将用户私钥使用用户临时公钥加密,其中进行一次加密运算。私钥丢失用户需要使用临时私钥解密私钥碎片,并对其进行hash运算验证其是否为正确的私钥碎片,通过拉格朗日插值法恢复私钥并更改私钥碎片调用口令,该过程至少需要进行t次解密运算和t+1次hash运算,其中t为密钥恢复门限阈值。

4.2 消息开销分析

假设方案运行过程中有m个节点为无法正常运行节点,其中,m

4.3 存储开销分析

网络中用户需要保存自身私钥和其他节点的私钥碎片信息。由于私钥sk

4.4 网络负载分析

本文使用Lencq表示Lq位数据加密后的密文长度,hash值相较于Lencq可忽略不计。在初始化阶段,n为网络规模,m

5 结束语

为解决区块链上用户私钥丢失后恢复困难的问题,本文提出一种基于门限秘密共享的私钥管理方案。用户将由私钥和秘密口令构成的秘密通过门限密钥机制分割成碎片,通过实用拜占庭容错算法将碎片分发至网络中其他节点,当用户私钥丢失后,只要收集到超过门限阈值份额的秘密碎片并结合秘密口令就可恢复出私钥。安全性与效率分析结果表明,本文方案满足抗合谋攻击、密钥可恢复性、抗单点失效、匿名性等需求,并且计算开销和存储开销与区块链网络规模分别呈线性相关与正相关,适用于小规模区块链网络上的用户管理私钥。下一步可将该方案中的实用拜占庭容错算法和Shamir门限秘密共享方案进行优化与改进,提高共识算法的效率并降低私钥管理方案的计算和存储开销,使其适用于大规模区块链网络。

猜你喜欢
私钥口令门限
比特币的安全性到底有多高
基于规则的HEV逻辑门限控制策略
地方债对经济增长的门限效应及地区差异研究
中国西部(2021年4期)2021-11-04 08:57:32
基于改进ECC 算法的网络信息私钥变换优化方法
随机失效门限下指数退化轨道模型的分析与应用
高矮胖瘦
口 令
一种基于虚拟私钥的OpenSSL与CSP交互方案
好玩的“反口令”游戏
SNMP服务弱口令安全漏洞防范