区块链钱包方案研究综述

2020-03-19 10:45张中霞王明文
计算机工程与应用 2020年6期
关键词:私钥公钥门限

张中霞,王明文

西南交通大学 数学学院,成都611756

1 引言

2009 年,一名自称为Satoshi Nakamoto 的黑客创造了一个点对点的去中心化金融系统——比特币[1]。不同于传统的法币,比特币不需要中心控制机构,利用一种称为区块链的创新技术,允许用户在不依赖中心化金融机构的情况下在线转账,并使用区块链网络中的所有节点记录每笔交易[2]。经过多年发展,比特币已成为全球个人和企业最广泛使用的数字货币之一[3]。随着比特币价值的增加,其潜在的安全威胁和攻击者也相应增加[4]。比特币网络处理所有权的方式是用户需有一个比特币地址和比特币钱包来证明其所有权。每一个比特币都属于一个比特币地址,并具有特定的价值。与地址相关的比特币只能通过对应的私钥使用[5],地址用来接收比特币,而私钥花费地址上对应的比特币余额。比特币钱包是一组私钥和公钥的集合,通过私钥可以实现资金的成功转账,所以比特币钱包是攻击者控制个人比特币的一个单点故障点或攻击载体。近年来,比特币钱包被盗事件屡屡发生,引起广泛关注[6]。这种安全威胁来自于存储在比特币钱包中的私钥。若攻击者获得了用户私钥,即获得了对比特币钱包的访问权,就可以使用该私钥控制用户的比特币[7]。私钥是加密钱包的核心组件,被用来证明用户对比特币的所有权,如果私钥丢失,所有权也会丢失。

钱包方案对区块链系统的安全性非常重要,各种钱包方案也相继被提出,如文献[8]提出的使用蓝牙技术的硬件钱包方案,文献[9]提出的分层确定性钱包等。但在现有研究中,对各类钱包方案进行分类总结的研究尚不多见。文献[10]分析了Bitcoin core、SPV、托管钱包这三种钱包方案面临的攻击及安全性,但缺乏对三种钱包方案的具体介绍也未给出钱包方案的发展趋势。综上,对区块链钱包方案的研究工作具有十分重要的意义,因此本文对各类区块链钱包方案进行研究总结,分析目前几种较流行的钱包方案,给出各种钱包方案在安全性、便利性、性能等方面的优势与不足,并指出未来钱包方案的发展趋势。

2 钱包方案密码学基础

区块链作为一种分布式共享记账本应用,其账户和钱包发挥着重要作用。账户被用于对分布式网络上发生的交易状态和结果进行记录,钱包则用来存储用户的私钥。由于在区块链网络上进行的是价值的传递,所以对账户、钱包以及交易过程的保护显得至关重要。区块链网络作为一种价值转移网络,其应用涉及到数字货币资产等价值权属的转移,因此账户、钱包以及交易过程的安全性要求显得更为严格,其安全性由密码学进行保证。

2.1 公钥密码体制

所谓公钥密码体制,就是用两个相关的密钥,能够将加密和解密的能力分开。公开的密钥用于加密,叫做公钥,而另一个保密的密钥用于解密,叫做私钥。公钥密码体制具有一个重要的性质,即已知公钥和密码算法,求解出私钥在计算上是不可行的。在公钥密码体制中,若用户A 要想向用户B 发送消息m,如图1 所示,只需要用用户B 的公钥PKB进行加密,而用户B 用自己的私钥SKB进行解密即可获得消息m。反之,如果用户B要和用户A 进行通信,则可以用用户A 的公钥进行加密,用户A收到密文后,用自己的私钥进行解密。如图1所示。

图1 公钥密码体制

公钥密码体制应该满足以下几点:

(1)发送方A 用B 的公钥加密m 产生的密文c 在计算上是容易的,即:

c=ξPKB[m]

(2)接收方B能够用自己的私钥对c解密,即:

m=DSKB[c]

(3)攻击者用B 的公钥求解私钥在计算上不可行,用密文c和公钥求解私钥也不可行。

在比特币系统中,采用椭圆曲线加密算法[8]作为公钥密码方案。

2.2 比特币的私钥产生过程

比特币系统采用公钥密码体制,由私钥产生公钥,私钥一般由随机数产生。目前大多数钱包采用种子生成私钥,钱包恢复过程由种子完成,钱包不用备份私钥,只需备份种子即可。由种子生成私钥的过程如下[9]:

(1)随机生成128到258位的随机数,称为熵。

(2)熵经过SHA256 哈希处理后,取前面的几位(熵长/32)与熵组成新序列,并将序列的11 位作为一部分,与已有的单词的字典做对应,生成的有顺序的单词组就是助记词。

(3)助记词通过密钥延伸函数,生成种子。

(4)种子经过哈希算法,生成私钥。

图2给出了具体流程。

图2 私钥生成

2.3 比特币的地址产生

在区块链网络中,用户账户通过用户地址进行索引,而用户地址由该用户的公钥通过某种计算得出。

在比特币网络中,其用户地址的生成过程如下:

(1)随机选取整数作为私钥d。

(2)用椭圆曲线加密算法[11]计算私钥所对应的公钥D。

(3)计算出D 的SHA-256 哈希值,用这个结果计算RIPEMD-160 哈希值,并在最后的值前面加入一字节地址版本号。

(4)取上一步结果,计算SHA-256哈希值,再用结果计算SHA-256哈希值。

(5)取上一步结果的前4个字节,把这4个字节加在第(5)步的结果后面,作为校验。

(6)用base58 表示法对上一步结果进行变换,得到最后的用户地址。

从地址产生的过程,得到地址与私钥、公钥的关系,如图3所示。

图3 地址与私钥关系

在图3 中,由公钥不能导出私钥,同理,由公钥哈希也不能得到公钥[11],换句话说,由地址不能得到比特币的公钥以及私钥。在比特币网络中,每一个比特币都属于一个比特币地址,并具有特定的价值。与地址相关的比特币只能通过对应的私钥使用。私钥一旦丢失无法找回。下面,将介绍各种比特币钱包对于私钥储存的安全性。

3 区块链钱包方案

区块链系统中的交易具有不可逆性,货币一旦丢失或被盗无法追回,货币的储存关系用户资产的安全性,而能唯一证明货币所有权的是私钥。对于货币的管理实则是对私钥的管理。区块链钱包为管理和储存私钥诞生,主要功能是管理用户的交易地址、发起转账交易、查看交易记录。每个用户有一个包含多个密钥的钱包。钱包只包含私钥/公钥对的密钥链。用户用密钥签名交易,从而证明他们拥有交易输出。货币以交易输出的形式存储在区块链中[12]。

第一个区块链钱包是个完整的客户端,由中本聪[1]在2009年开发比特币协议时同时开发,名为Bitcoin-Qt。Bitcoin-Qt的私钥以纯文本的形式储存在电脑硬盘驱动器的wallet.dat 文档里,没有密码保护,没有导入和导出私钥的方式,私钥由Python 脚本生成。随着钱包的发展,Bitcoin-Qt 更名为Bitcoin core,新增了加密钱包功能,能将储存私钥的文件加密并导入和导出私钥。但Bitcoin core 存在明显的缺陷,其数据量过大,且私钥管理不方便。为解决上述问题,SPV 钱包和HD 钱包应运而生,SPV 只保留区块链的一部分,数据量少,交易速度快,HD能够有效管理多个私钥,但两项钱包技术都牺牲了安全性。

比特币的开发者一直致力于尝试使用不同的方案开发出安全有效的比特币密钥管理软件。上述钱包都属于线上软件钱包,安全性低,且用户可能因个人私钥管理不当导致资产丢失。为此,硬件钱包、托管钱包、门限钱包技术相继出现[13]。硬件钱包离线产生私钥,解决了软件钱包线上安全性问题,但便携性差;托管钱包将私钥交于第三方管理,能防止个人保管不当丢失资产情况,但一定程度上违背了区块链去中心的思想;门限钱包私钥分割处理,安全性高,且其门限特性可弥补三类钱包的安全缺陷,是钱包可发展方向。下面是对四类钱包的具体介绍。

3.1 软件钱包

第一个软件钱包是中本聪在2009 年开发的,名为Bitcoin-Qt,后改名为Bitcoin core。钱包将私钥和用户数据储存在电脑的Berkeley 数据库,该数据库用C 语言编写,并用二进制储存关键数据,默认情况下,这个数据库是不加密的,但用户可以通过菜单选项“设置->加密钱包”来选择加密。除了钱包中的比特币私钥和公钥外,该数据库还存储各种用户数据,如联系人(基本上是标签和公共地址之间的关联)和钱包的交易历史。Bitcoin core还允许用户将钱包文件备份到磁盘上的某个位置[14]。

Bitcoin core 是款‘重'钱包,钱包保留了完整的区块链。且钱包能够管理比特币、交易、记录查询、节点维护,也被称为全节点钱包。图4是全节点的结构图。图中挖矿用虚线标记是因中本聪客户端中未包含这项功能。

图4 全节点逻辑结构

图4 中Bitcoin core保留了完整区块链,其优点如下:

(1)完整的客户端提供高级的管理和独立性可直接独立验证所有交易[15],不依赖任何服务器或第三方,便携性高。

(2)终端用户可以验证软件的二进制是否对应源包,从而防止源版本和二进制版本之间微小的、未检测到的恶意差异[10]。这种类型的开发消除了开放源码开发过程中的透明度差距,所以,Bitcoin core安全性高。

(3)可防止矿商欺骗,因其能检查接收的每一块交易并确保该块中的一切是完全有效的——允许信任该块,无需信任创建矿商。这有效防止矿商欺骗Bitcoin core 用户接受违反2 100 万比特币上限或违反其他重要规则的区块。其他钱包的用户没有这种安全级别,易接受伪造交易或被劫持区块链。表1 给出了Bitcoin core和其他钱包的安全性比较。

表1 钱包安全性分析

Bitcoin core 因‘重'属性——保留完整区块链,使其也存在如下问题:

(1)钱包每次交易会带上大量的数据账本,首次使用需一次性下载约20 GB的数据,每月还需额外下载5~10 GB,且第一次启动Bitcoin core大约需要4 h,每天大约需要5 min来更新,速度较慢。用户获取账户余额,要求Bitcoin core必须在线,用户必须等待,直到下载完整的区块链副本。由于区块链的大小,这可能需要几个小时到几天来完成。所以钱包仅适合高端用户使用。

(2)比特币每次交易后都会尽可能使用新的地址。为防止地址对应的私钥丢失,在Bitcoin core钱包中,每次使用后都会将钱包文件加上日期进行备份。当Bitcoin core 钱包创建了大数量的钱包地址时,这些地址对应的私钥管理就成为了问题。Bitcon core不能有效管理私钥。

基于上述问题,提出了下面两种解决方案:

(1)SPV技术

针对Bitcoin core 数据量大、速度慢的问题,开发者提出了SPV 钱包技术。SPV 钱包是将钱包的部分功能剥离出来,只是一个支付验证,而对于完整的交易验证由核心节点完成,钱包在不下载区块链的情况下验证交易是否是区块的一部分,所以SPV钱包交易速度快。图5给出了SPV钱包的原理。

图5 SPV钱包的原理

过程如下:

①下载完整的区块头数据(很大减少了账本数据量)。

②若想验证支付交易,则需算出交易的哈希值txHash。

③搜索txHash所在位置的区块,验证这个区块的区块头有没有在账本数据中。

④找到这个区块中用来计算merkle根的哈希值。

⑤计算merkle根。

⑥若上一步得到的结果与这个区块的merkle 根相等,则支付交易存在。

由上述原理,得SPV钱包只需连接到区块链中的完整节点(大约3 000 个完整节点中的一个),并将区块头而不是所有区块储存在本地。在交易期间,钱包向连接的远程节点请求交易信息,包括交易的副本和merkle树,通过储存在merkle树结构中的信息计算和验证交易的有效性[15]。SPV 钱包节省了存储空间和带宽,能够保障钱交易速度,但钱包存在明显缺陷:

①钱包只能得出支付交易是否被发起,不能确定交易最终是否会进入主链。

②安全性低。使用SPV钱包时,攻击者可以在使用私钥时窃取私钥,因为SPV钱包只用加密方式保护其私钥。如果攻击者对存储在本地数据库中的区块头进行攻击[16],则不能确保验证结果的准确性。除此之外,若攻击者篡改了交易的地址,比特币将会直接转入攻击者的钱包。

对于以上问题,Dai 等在文献[17]提出了一种基于Trustzone 的区块链轻量级钱包,Trustzone 将系统的硬件和软件源分为安全和不安全两部分,所有敏感操作在安全部分进行。通过在安全执行环境中验证事务来保护验证过程。并通过加密使本地块头对于Rich OS 系统直接不可读。图6 是钱包的具体结构,方案通过隔离,保护了私钥和区块头,解决了SPV安全性低的问题,但也存在缺陷,即很多设备不支持Trustzone技术。

(2)HD技术

针对Bitcoin core 不能管理多个私钥,分层确定性钱包(简称HD 钱包)的提出解决了这一难题。HD 钱包属于确定性钱包的一种,通过种子生成多个私钥。种子是随机生成的数字,数字包含了索引号或者可生成私钥的链码。种子可收回所有已产生的私钥,只需在初始创建时简单备份[12],只要有种子就能找回私钥。钱包[9]能够通过生成子私钥的伪随机序列维护,减轻了维护的负担。在HD钱包中,主私钥d与子私钥di存在如下关系:di=Hash(i,d)

其中Hash是加密的哈希函数。

图6 基于Trustzone的区块链轻量级钱包

如2.2 节所述,种子由助记词通过密钥延伸函数得到,为512位,而由种子到私钥的具体生成过程如下:

①将512 位的种子分成左右两部分,左边是256 位的母密钥,右边是256位的链码,如图7所示。

图7 母密钥产生过程

②将索引、母密钥、链码合在一起后使用HMACSHA512函数散列得到512位的散列。

③将散列分成左右两部分,右边是256 位的子链的链码,左边是256 位,以及索引号被加载在母密钥上产生子密钥,如图8所示。

图8 子密钥产生过程

由图8,可知母私钥加上母链码可得到子私钥,同理,母公钥加上链码也可得到子公钥,无需私钥。在HD钱包中,若用户创建和发布主公钥,任何人可以通过主公钥计算子公钥序列,但由主公钥不足以恢复私钥。钱包的主私钥生成逐层的子私钥,除此,主公钥也能生成子公钥,图9 是主密钥与子密钥的关系图,需注意,主公钥生成子公钥的过程不需要私钥的参与。

图9 主密钥与子密钥关系

HD 钱包将私钥和公钥隔离。在HD 钱包中,主私钥由一个随机数生成,而子私钥由主私钥通过一个确定且不可逆算法来产生。HD钱包的优势如下:

①交易后,不用备份新增的地址的私钥,只需要备份主私钥即可,节约储存空间且可管理多个私钥。

②便捷性高,如只需要主公钥或某子公钥,即可查看下级数据。不仅如此,HD 还能根据上述的特点设定不同层级权限,可以查看余额情况等。

但HD 钱包的分层特点,使钱包存在安全缺陷,各私钥之间具有了固定的关系,攻击者能够通过任何一个子私钥加上主公钥恢复主私钥。

为解决这一问题,文献[9]提出了一种新的HD 钱包。使用陷门哈希函数来发送签名,不直接给任何人私钥进行签名。且对任何子节点隐藏私钥,可以防止关联攻击。钱包提供了两个公钥之间的不可链接性,实现了用户匿名、公钥派生和高可扩展性。文献[18]提出新的HD 钱包来对抗这种攻击。在主公钥大小为O(m)的情况下,泄露少于m 个主私钥是安全的。这是因为钱包采用的不是一个主私钥,而是m 个。若泄露m 个秘密,则方案不可行。

HD 钱包的最大安全性问题是各私钥之间的关联性,因此,如何隐藏这种关联性需要进一步的研究。

3.1.1 Electrum

第一款采用HD 技术的钱包是Electrum,对比与全节点钱包Bitcoin core,采用了SPV 技术,是目前流行的一种轻量级钱包[18]。

Electrum 与Bitcoin core 的区别在于:在Electrum中,数据以JSON格式存储在文件中;关键材料被存储为基于文本的数据,默认情况下,Electrum 中的私有数据(种子和主私有密钥)采用AES-256-CBC 加密[18],私钥只会在签署交易时被短暂解密。Electrum 使用分层确定性钱包,所有密钥都来自单个主密钥对。在钱包初始化之后,37 个密钥对将被预先计算并显示在钱包的“地址”选项卡中。此外,在钱包初始化期间,Electrum 生成13 单词的种子,从这些种子中派生出钱包中的主私钥(以及所有私钥)。种子短语类似BIP39,但不完全BIP39 兼容。该种子可由用户记忆,并允许用户利用种子恢复钱包中的所有值。

Electrum钱包的优势在于:

(1)速度非常快,占用空间少。采用SPV技术,与处理比特币系统最复杂部分的高性能服务器一起使用,只需下载区块链的一部分。

(2)支持HD技术,能有效管理多个私钥。所以Elec‐trum 是低资源使用的钱包。但Electrum 也包含了SPV和HD钱包的缺陷:

①不能有效地保护自己的私钥、交易、本地区块头,操作系统可以轻易窃取他们的隐私信息。

②使用需连接SPV查询服务器,服务器可将用户的支付历史联系记录用户的IP地址。

Electrum安全性低。如文献[19]中,通过离线暴力破解了Electrum 钱包。作者使用欺骗引擎(Cheat Engine)提出关键字,并尝试单词列表中12 个种子密码可能的组合,利用触发器从提取的数据集中创建可能的组合,最后用多个虚拟机加速离线蛮力攻击,成功地破解了Electrum 钱包。一旦找到密码,就可以恢复钱包中包含的所有比特币。即使从未出现过对比特币钱包的访问,这种恢复也是可能的,因此,Electrum 钱包的安全性存在问题,如何提高安全性,需要进一步的研究。

3.1.2 软件钱包总结

软件钱包无论全节点钱包Bitcoin core 还是轻节点Electrum 等其他钱包,都将密钥存储在本地可访问文件中,有几个优点:(1)用户没有额外的认知负担,只有软件才能访问文件。(2)密钥的大小比较小,可将无数的密钥存储在磁盘上。(3)软件可自动生成密钥并创建交易,无需额外的输入或操作。

但同时软件钱包还会产生几个威胁[20]:任何可以访问用户应用程序文件夹的应用程序都可以读取存储私有密匙的文件。恶意软件作者可能会利用这种管理方法,访问本地文件会导致对手能立即访问受害者的资金。2011年,Symantec发现了第一个窃取私人密钥的恶意软件[21],随后又发现了许多类似的恶意软件。此外,钱包用户可能会无意地共享本地存储的文件(如通过共享网络,离线备份或共享网络驱动器)或不小心删除文件导致资产丢失。

某些软件钱包允许用用户选择的密码或口令对本地存储的钱包文件进行加密。但有密码保护的钱包只针对底层存储设备的物理盗窃,如文件需密码的强力破解才会被盗[20]。但若合理地假设存在一个击键记录模块,则有密码保护的钱包与没有加密的钱包只是细微的区别。有密码保护的钱包多了可恢复性和可用性,减轻了物理盗窃。但若忘记密码,同样失去钱包的余额,因没有恢复的机制。且用户必须在进行新交易时输入密码解锁钱包,有密码保护的钱包可能会误导用户以为密码本身提供进入资金的途径,不管储存钱包设备在哪,这与基于网络的网上银行的传统思维模式是一致的,但实际用户无法通过简单地输入加密密码在新设备上存取资金,除非钱包文件也转移到新设备。

综上,软件钱包将私钥储存在本地设备,钱包始终受到来自网络的安全威胁,且钱包用户易因个人操作导致资产丢失。针对以上问题,开发者提出硬件钱包和托管钱包技术。

3.2 硬件钱包

为了进一步保护比特币私钥免受基于恶意软件的威胁,将私钥离线存储在某种形式的移动媒体上,比如USB盘,这类保护技术称为硬件钱包技术。硬件钱包解决了软件钱包面临的网络攻击问题,且可使用传统的物理安全技术(如,将驱动器存储在防火保险箱中)进一步提高安全性。硬件钱包的主要特点如下:

(1)安全性高

私钥离线产生,与网络隔离,且永远不会离开钱包[13],避免了恶意软件攻击,且传统物理手段可提高安全性,是较安全的私钥储存方式。

(2)便携性差

钱包需与比特币网络连接的设备组合使用,如用户电脑、智能手机等。且设备连接到比特币网络发送交易,但不能签署交易。当交易发生时,硬件钱包对其进行签名并将其发送回设备,设备再将签名后的交易广播到比特币网络中,过程较繁琐,速度较慢。具体交易如图10 所示。离线存储使软件无法立即使用钱包,除非附近有离线存储媒体,否则用户无法直接花费货币。如较流行的TREZOR 硬件钱包[22],交易如图11 所示,每次都需USB 连接电脑配合网页或是客户端使用,操作繁琐,存在黑客攻击的风险。

图10 硬件钱包交易过程

图11 TREZOR交易过程

为解决硬件钱包便携性问题,文献[8]中,Bamert 等提出BlueWallet,该钱包系统通过使用蓝牙与创建无签名交易的实体进行通信,能够构建一个具有低功耗的设备,图12 是蓝牙钱包系统概述图。BlueWallet签署比特币交易,授权比特币的转移,无需连接到比特币网络。钱包允许在签名之前独立检查事物细节,因而可直接作为电子钱包和销售点结合使用,成为现金和信用卡的替代品。BlueWallet 最大程度简化硬件钱包的链接流程,提高了便携性,通讯速度快,且避免了黑客攻击风险。但由于交易是由不受信任的一方创建的,必须在Blue‐Wallet 中实现额外的安全措施,以尽量减少用户所招致的风险,文献中并没有提出解决方案。

硬件钱包虽然永不触网,能够杜绝来自网络的攻击,保证敏感信息的安全。但是在交易时始终需要中间设备进行链接,不够便携,且在生成和显示钱包地址[23]时,攻击者可通过中间人攻击将加密货币转移到一个虚假地址。即使是BlueWallet,也不能抵抗中间人攻击。因此,研究如何抵抗中间人攻击和如何提高便携性是硬件钱包的主要发展方向。

3.3 托管钱包

软件钱包和硬件钱包都存在用户因个人保管问题导致资产丢失的风险,托管钱包的出现解决了这个难题。所谓托管钱包[20],是指钱包由三方服务器(web 服务)进行保管,用户不用自己控制私钥,私钥被存储在第三方的服务器中,意味着用户对第三方服务器的高度信任。钱包web 服务通过标准的web 身份验证机制(如密码或双因素身份验证)为用户提供对事务性功能的访问,用户使用比特币只需访问第三方,与普通的服务器一样,需输入口令和验证码,在得到身份验证后向服务器发送请求。

钱包优势在于:货币可随时提取,便携性高;允许以法定货币买卖比特币的货币交换服务;且用户不用担心忘记私钥或助记词,降低了资产因个人事务丢失的风险。托管钱包安全性较低,原因在于:

(1)外部网络攻击。服务器因持有大量比特币易成为攻击点,造成单点故障。目前已经出现了许多攻击托管钱包的事件,造成了大量的比特币的损失[24-25]。Mt.Gox 的崩溃[26]就是失败的一个例子。公司丢失了65 万比特币,Mt Gox破产了,用户无法收回他们的钱。

(2)内部人员攻击。钱包不能防止第三方服务器的欺骗,第三方可携款潜逃,或对外宣称被黑客攻破。

针对(1),一种应对盗窃的措施是托管钱包只将一小部分资金放在网上(称为热储存),而将大部分资金储存在网下的冷库中。但这样做的缺点是,如果热存储量耗尽,会导致用户事务延迟。因此,如何提高托管钱包的安全性值得研究。

3.4 门限钱包

针对上述的软件钱包、硬件钱包和托管钱包的安全缺陷,研究者提出门限钱包技术。软件钱包、硬件钱包和托管钱包的私钥都集中储存在一个位置,易造成单点安全风险。而门限钱包技术是将密钥进行分割,签名必须由超过门限阈值的一组计算机授权。具体来说,方案将秘密分成了n 个部分,而每个部分由一个参与者保管,t 个或多于t 个的参与者可以重构秘密,而少于t 个的参与者无法得到关于秘密的任何信息,这种方案被称为(t,n)秘密分割门限方案,t就是阈值。具体如图13所示。

在图13 中,将私钥在各参与者间共享,任意一个参与者不能获得有关私钥的任何信息,从而能够有效避免单点故障问题。除非攻击多于t 个参与者并成功获得其秘密份额,否则不能获得完整的私钥。

图13 秘密分割重构图

门限方案大多基于Shamir 秘密分割思想实现,Shamir采用拉格朗日插值多项式[27],具体如下:(1)可信的第三方随机选择t-1次多项式方程为:f(x)=a0+a1x+a2x2+…+at-1xt-1mod q其中ai∈Z(q),i=1,2,…,t-1。

Shamir门限方案只能做加法运算,乘法和求逆运算将增加多项式的阶。但比特币系统使用ECDSA 密钥,若想采用门限方案来保护钱包账户的安全,唯一方法是使用ECDSA 门限签名算法,该方法需要用到乘法和求逆运算。比特币虽有一个内置的“多签名”功能来进行分割控制,使用这种功能会严重损害参与者的机密性和匿名性,最终导致ECDSA门限签名算法使用较弱定义。如文献[28]中,虽然t 个参与者就可以重构密码,但要求n ≥2t-1才能完成签名,实现起来有一定难度。为解决这个问题,Gennaro 提出了一种高效、优化的阈值DSA算法[29],是第一个通用的阈值DSA 方案,只需要n=t-1就能完成签名。该方案是唯一一个完全兼容比特币的方案,而且它的效率足够高,可以成为任何需要阈值签名方案的用例的真正候选方案。

前面的门限秘密共享系统将信息分发到一组服务器上,但接下来的问题是用户如何对这些服务器进行身份验证。在所有服务器上重用相同的密码只会增加密码的安全漏洞,而让每个服务器记住不同的强密码是不现实的。

为了解决这个问题,Bagherzandi 等人首次提出了密钥保护秘密分享(Password-Protected Secret Sharing,PPSS)方案[30],PPSS 是一种线上门限方案。文献[30]中,PPSS 解决方案在初始化和重构期间假定用户和每个服务器之间存在经过PKI 身份验证的通道。在初始化阶段,秘密与密码以及一些服务器信息一起处理,以便在n 个独立的服务器之间分发秘密,最后,每个服务器上只存储公共信息。在重构阶段,用户可以仅使用自己的密码与任意t+1个诚实服务器进行交互,就能恢复自己的秘密。如果公共信息被更改,那么密码的知识就足以检测到它。

PPSS协议[31-32]满足下面两个性质:

(1)用户可以使用与初始化阶段相同的密码执行重构协议,从而检索数据,并且只要至少有t+1个可靠的服务器可用,就保证能够成功。

(2)攻击者即使控制了多达t 台服务器,除了使用另一台服务器进行在线字典攻击外,也无法了解有关该秘密的任何信息。

性质(1)保证了即使对手入侵所有服务器,并提供一致但虚假的公共信息,也不能让用户重构和接受与用户最初存储的秘密不同的秘密。除此之外,只要用户不中断与至少t+1诚实服务器的通信,性质(2)就能保证秘密的恢复[33]。

PPSS 方案很快吸引了研究者们的注意。但大多PPSS 方案都采用证明协议防止分发者或成员间的欺骗行为,而证明协议计算量大,使PPSS 方案算法较复杂,在通信上耗费巨大。为此,Jarecki 等人在文献[34]中提出的PPSS 方案,在轮通信中是最优的。而Jarecki 等人在文献[31]中就文献[34]提出的方案进行了改进,不仅降低了计算成本,还在保持最佳轮通信的基础上,进一步降低了通信上面的耗费。Abdalla 等人在文献[33]中仅通过与每个服务器进行一轮通信就有效地实现了健壮性,还避免了任何复杂的零知识证明。这是因为他们的方案不需要像文献[34]中那样,在每个服务器的单独计算中区分正确和错误的共享,与文献[31]中给出的零知识证明后一种解决方案相比,其方案在秘密重构过程中只需要在最后进行一次全局检查,大大降低了通信成本。

综上所述,门限方案对于钱包账户的保护的重要性已经引起了研究者的广泛关注。门限方案用于账户保护时需要兼容ECDSA 算法,但现有的门限方案普遍存在算法复杂度太高,扩展性差的特点。如何解决这个问题是今后门限方案发展需要攻克的难题。而PPSS方案是一种线上的门限钱包方案,是在线存储有价值的秘密的理想方案,是未来研究的重点方向。

4 分析与讨论

4.1 区块链钱包总结

区块链钱包按私钥产生方式分为硬件钱包、软件钱包、托管钱包和门限钱包。本文从私钥存储方式、钱包的优缺点、实用性等方面对各类区块链钱包进行分析总结。表2是各类钱包比较表。

(1)硬件钱包是专为储存私钥和进行支付的硬件设备,其特点如下:优点,安全性高,私钥离线产生,且永不触网,杜绝了因网络攻击造成的货币丢失。缺点,便携性差,每次交易需与区块链网络连接的设备链接,交易过程繁琐。硬件钱包适用于对安全性要求高且对便携性无特殊要求的用户。硬件钱包中主流有TREZOR 钱包、蓝牙钱包等。TREZOR钱包并没有解决硬件钱包便携性差的问题,每次需使用USB 连接网页或者客户端进行交易,且存在黑客攻击风险。而蓝牙钱包一定程度上改善了TREZOR 钱包的问题,钱包引入蓝牙技术,使用蓝牙通讯,提高了通讯速度且简化链接过程。但蓝牙技术引入增加了钱包的成本,且蓝牙钱包只是改善了硬件钱包的便携性,每次仍需链接设备交易,本质上仍存在硬件钱包便携性问题。且现有的硬件钱包对中间人攻击并没有好的解决方案。

表2 钱包比较表

(2)软件钱包是桌面钱包,私钥储存在本地设备,其特点如下:优点,个人完全控制自己的币,不依赖于第三方;便携性高,与区块链网络连接,可直接进行交易。缺点,因其私钥在本地设备且与网络连接,容易受到网络攻击造成资产损失;且普通用户缺乏专业知识,可能因保管不当造成资产丢失。软件钱包适用于要求便携性的用户。软件钱包主要分为全节点钱包和轻钱包。全节点钱包如Bitcoin core 能直接进行完整的交易验证,是软件钱包中较安全的钱包,但每次使用会带上大量的账本数据,且不能有效管理多个私钥,仅适合高端用户。HD 钱包能够管理多个私钥,只需备份主私钥即可获得子私钥,方便审计,但钱包私钥间具有固定关系,易遭到关联攻击。轻钱包是指采用SPV技术的钱包,SPV无需下载区块链即可进行验证交易,比全节点钱包交易速度快,但SPV不能确定交易最终是否进入主链,安全性低。主流的轻钱包——Electrum 钱包,采用了SPV 和HD 技术,交易速度极快且能有效管理多个私钥,但其也有SPV和HD的缺陷,不能有效保护自己的私钥、事务和本地块头。

(3)托管钱包将私钥存储在钱包服务商的服务器上,其优点在于能够避免用户因个人保管不当导致私钥丢失或被盗窃。缺点是丢失了区块链去中心化的特点,且大量货币储存在同个地方,易成为攻击对象,造成单点故障。托管钱包如Bixin、HyperPay 等适用于缺乏专业知识且个人保管存在问题的用户。

(4)门限钱包将私钥分割储存,签名必须由超过门限阈值的一组计算机授权。除非攻击多于阈值的参与者并成功获得他们的秘密份额,否则不能获得关于私钥的任何信息。钱包特点如下:优点,基于门限特性,安全性高,能够抵抗网络攻击。缺点,算法复杂度高且不可扩展,计算耗费大。

综上所述,传统的钱包方案,如硬件钱包、软件钱包、托管钱包,都将私钥集中存储在一个地方,存在单点风险。而门限分割储存私钥使门限钱包成为了钱包保护最有效的方案。门限钱包中的线上钱包方案——PPSS方案,是在线存储有价值的秘密的理想方案,是未来研究的重点方向。

4.2 区块链钱包安全性分析及钱包的结合

为了研究钱包的安全性问题,区分了内部人员攻击和外部网络攻击进行讨论。

如表3 所示,软件钱包易因个人保管不当导致资产丢失,托管钱包存在服务商携款潜逃的风险,所以两款钱包既易遭受外部网络攻击,又不能抵抗内部人员攻击。硬件钱包由于不接触网络,能够抵抗外部网络攻击,对于内部人员攻击是物理安全——如,用户可以将私人密钥存储在一个带视频监控的上锁的保险箱中。但硬件钱包、软件钱包和托管钱包都存在共同的安全隐患,即其私钥都集中储存在一个位置,因此容易造成单点故障。门限钱包将私钥分割共享,避免了单点风险,采用证明机制防止内部人员欺骗,且门限特性能够抵御外部网路攻击,所以是最安全的方案。

表3 钱包安全分析表

此外,门限钱包技术可以协助传统钱包方案的安全性。如在硬件钱包中引入门限技术来补充物理安全措施,用户将密钥分散存储在不同的位置,而不是存储在单个位置,即使单个位置被盗取,也不能获取私钥的任何信息,从而增加硬件钱包的安全性。同理,门限方案也可以用来保护软件钱包不受外部攻击者的攻击。将软件钱包的私钥分开存储在多个地方,攻击者即使攻破本地设备也不能盗取货币,能提高软件钱包的安全性。此外,门限技术也能用于托管钱包,存在两种形式:第一,服务商自身提供门限技术,即用户将私钥储存在服务商处,服务商再将私钥分割,这能抵抗外部网络攻击,但不能防止内部人员攻击。第二,用户将私钥分割存储在多个服务商,每个服务商仅获得子份额,能防止服务商携款潜逃且能抵御网络攻击。

综上,门限钱包安全性最高,且能与硬件钱包、软件钱包及托管钱包结合使用,弥补其安全缺陷,提高安全性。门限钱包方案是今后研究钱包账户安全的主流方向。

4.3 区块链钱包的发展状态

表2 中,给出了4 类钱包的具体应用。现有的钱包应用中,软件钱包和硬件钱包的发展较完善,市面上推出的大多应用都属于这两类,如较流行的Electrum、TREZOR等;托管钱包的发展受到其中心化特点的一定影响;而门限钱包方案是较新提出的技术,其研究方案不多,完善的方案更少,所以其应用极少,有待发展。若用户资产丰厚,建议选用安全性较高的硬件钱包,如TREZOR、蓝牙钱包等;若用户考虑便携性问题,可选择软件钱包,如Electrum 等。若用户担心个人保管不当的问题,可选用托管钱包类型,如Bixin、HyperPay等。

4.4 钱包未来研究方向展望

区块链技术发展日新月异,钱包安全保护的重要性持续提升。但是,目前的钱包保护方案都存在一些缺陷,需要继续进行研究,如:

(1)硬件钱包每次使用需要繁琐的链接过程,便携性差的问题阻碍了钱包的发展,且对于内部人员攻击是物理安全,如何同时提高硬件钱包的便携性、安全性值得研究。

(2)软件钱包直接与区块链网络连接,容易受到网络的各种攻击。软件钱包全节点钱包交易过慢,而轻钱包采用SPV 技术,交易快但安全性面临威胁,如何保障软件钱包交易速度的基础上提高安全性需进一步研究。

(3)托管钱包需解决的问题是安全性,钱包既不能防止内部人员欺骗,又不能抵御网络攻击,安全性面临威胁。

(4)门限钱包虽是目前保护钱包账户安全有效的方法,但同时能兼容ECDSA 算法的方案大多存在计算量大的问题,每次分发需计算份额且需验证正确性,而对于验证过程大多文献都采用复杂的零知识证明协议,如文献[28-32]。所以研究如何简化门限方案,减少计算上的耗费显得十分重要。

基于上述问题,提出几项未来的研究方向:

(1)针对硬件钱包便携性和安全性,蓝牙技术能简化链接过程,门限技术将私钥分割储存,能提高钱包对于内部攻击的安全性,采用蓝牙技术和门限技术相结合,提高便携性的同时安全性也得到提高,是值得研究的方向。

(2)软件钱包最大的问题是安全,引入门限思想,将软件钱包的私钥分割储存,攻击者即使攻击用户的电脑也不能获取私钥信息。对于轻钱包的SPV交易问题,主要是如何保护验证过程,trustzone 是不错的解决方案,敏感信息在trustzone部分进行,有效保护了SPV 的验证过程,但很多设备部支持trustzone 技术,若能代替trust‐zone 技术的方案,并将此方案与门限思想结合,能大大提高轻钱包的安全性。所以,门限思想是软件钱包安全性方面具有意义的研究方向。

(3)托管钱包引入门限技术,既能防止服务商携款潜逃,又能抵御网络攻击。如何使门限技术与托管钱包相结合,值得研究。

(4)门限技术计算量大在于使用的验证机制,大多方案采用复杂的零知识证明。需要研究在效率、性能、易用性方面更好的通信验证机制,替代现有的零知识证明等匿名通信证明机制。

5 结束语

区块链钱包系统是区块链应用中以数字货币为代表的数字资产所有权的唯一证明,是区块链系统中至关重要的一个安全环节。硬件钱包将密钥保存在离线的物理存储介质中,防止恶意软件攻击,但用户必须保留一个额外的设备来进行事务处理。软件钱包不需要额外设备就可进行交易,所以使用上比硬件钱包便捷,但硬件钱包相对于软件钱包来说较安全。托管钱包利用高度可信的第三方服务器为用户提供密钥托管服务,用户不再需要自己保管钱包,这在本质上破坏了区块链的去中心化,同时第三方托管服务器也容易受到集中的安全攻击。门限钱包将密钥分散存储在多个设备中,使用密钥时需要多个设备共同参与,即使遭遇攻击也不会泄露完整的密钥,所以不会影响用户的使用,但该方案算法复杂度高且不可扩展。密钥保护秘密分享PPSS方案作为一种线上的门限钱包方案,是未来值得重点关注的研究方向。

猜你喜欢
私钥公钥门限
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于规则的HEV逻辑门限控制策略
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
随机失效门限下指数退化轨道模型的分析与应用
VoLTE感知智能优化
基于Neyman-Pearson准则的自适应门限干扰抑制算法*
一种基于混沌的公钥加密方案
神奇的公钥密码
一种基于虚拟私钥的OpenSSL与CSP交互方案