费天龙,郭 静,鲁 宁,史闻博
(1. 东北大学,沈阳 110819;2. 东北大学秦皇岛分校,秦皇岛 066004;3. 中国电子科学研究院,北京 100041)
匿名性是现实货币的重要特征,它能有效地保护用户身份隐私,使货币能够更安全地流通。比特币[1]作为一种新型的模拟真实货币的电子现金技术,一经提出,就受到人们广泛关注,当前市值更高达2180亿美元。然而,比特币交易细节的可公开性以及交易信息的可追溯性导致它仅能提供较弱的匿名功能。例如,宾夕法尼亚州立大学的P. Koshy[2]通过深入分析由交易网络和用户网络构建的互惠视图,将用户和地址相关联,实现身份定位;苏黎世联邦理工学院的E. Androulaki[3]通过设计高效的启发式算法将比特币的地址集和实体身份相关联,完成去匿名化分析。很明显,一旦攻击者追踪到用户资金真实走向,就能通过探测软硬件漏洞、种植木马病毒等方式来窃取比特币。为此,如何增强比特币的匿名性就成为一个急需解决的问题。
针对上述问题,学者们提出了混币技术,通过将一系列交易的输出地址进行随机置换或混合,从而割裂交易输入和输出的映射关系。按照网络组织结构来划分,已提出的混币方法可分为两类[4]:去中心化的混币策略和中心化的混币策略,前者是由用户节点直接通过混淆输出地址、构建Coinjoin[5]式交易(是一种无信任的方法,可将多个消费者的比特币支付合并到单一交易中,使外部各方更难以确定哪个消费者支付了哪个接收者或接收者)以及对交易进行签名来完成映射关系的割裂。然而,一方面有限规模的Coinjoin式交易会造成较小的匿名集,从而产生匿名强度低等问题,另一方面恶意用户拒绝签名会造成混币服务中断,延长服务时间。后者通过引入多个中心服务节点(称为混淆商)来完成用户输入地址与输出地址的隔离,进而切断它们之间的映射关系。因无需Coinjoin式交易以及其他用户签名,故具备较大的匿名集和较高的安全性。基于此,本文重点关注中心化的混币策略。
目前,绝大多数中心化的混币策略都是先由用户使用输入地址将用于交易的比特币转移给混淆商,然后再由混淆商构建一笔新的交易,将比特币沿输出地址返还给用户。然而,为了避免混淆商因拒绝执行第二笔交易而发起拒绝服务攻击,它们大都使用了地址托管或者凭证签名,从而公开了输出地址,使恶意用户能够轻易区分不同混淆商的匿名集。在交易总额一定的条件下,使匿名集的总体规模被限制,进而降低了系统的匿名强度。
针对上述问题,本文提出一种基于可信监管方的比特币强匿名混淆策略(a Strong anonymous Obfuscation scheme for Bitcoin based on Trusted Regulator,简称SOBR)。首先,受多银行电子现金技术的启发,提出基于可信监管方的混币系统模型,它能在完成混币任务的同时阻止混淆商的恶意行为(例如偷钱、好奇)。然后,利用群盲签名的不可链接性,设计一个混币协议,将相互独立的混淆商构建成整体,扩大用户的匿名集,增强系统的匿名性。
本文对SOBR的匿名集规模、可扩展等性能进行了理论评估。结果表明,本文方法不仅延续了传统方法对匿名性的保障,而且极大提升了匿名集规模;此外,还具备抗拒绝服务攻击、可扩展性强等特点。
本文其余部分结构如下:第2节介绍介绍相关工作的同时阐明本文的主要贡献;第3节介绍方法所需的预备知识;第4节给出本文提出的混币方法,其中4.1节给出方法的系统模型,4.2节给出方法的具体协议;第5节对所提协议进行理论分析;第6节总结全文并指出下一步的工作重点。
迄今为止,已有数种混币策略被提出。按照研究思路不同,它们可划分为“革新型”和“改良型”,前者利用零知识证明与环签名等密码学手段设计一种可内置隐私功能的新数字货币,例如ZeroCoin[6]、ZeroCash[7]与Monero[8]等,它们更适合下一代电子现金技术。后者认为既然比特币协议已经占据了巨大的市场份额,一旦轻易地变革必然会带来的巨大成本开销。为此,它们更倾向于在不打破基本协议的前提下来提高比特币的隐私保护和匿名性。本文重点关注改良型的混币策略,它们可分为两大类:去中心化和中心化。前者依靠用户间的交互来构建基于点对点的用户网络,进而生成一个包含用户信息的聚合交易,使恶意攻击者无法探知Coinjoin式交易输入方与输出方的映射关系,经典策略包括:Coinjoin[5]、Coinshuffle[9]、Coinshuffle++[10]和Xim[11]。但是它们存在匿名集小、拒绝服务等问题。后者使用多个混淆商来完成用户输入地址与输出地址的隔离,可以有效地避免上述问题,提高匿名强度。为此,本文主要介绍当前比较流行的中心化混币策略。
Coinswap[12]借助比特币脚本与混淆商构建哈希锁保障用户与混淆商交易的公平性。虽然它通过许多发送者使用混淆商向许多接收者传递交易,切断了用户的输入地址与输出地址之间的映射关系,对外部实体是不可见的,但这种映射关系对于混淆商是可见的。它针对外部实体是匿名的,对于混淆商不是匿名的。
Mixcoin[13]是一个促进比特币与类似加密货币匿名支付的第三方混淆协议。用户与第三方的混淆商交互构造一个标准大小的交易,这个交易与普通交易对于外部实体是不可区分的。但是它对于混淆商是可区分的,混淆商可以知道用户的所得到的新地址。此外它提出一种基于信誉度的追责制度来保障用户的资金的安全。但是混淆商可以在退出时,选择放弃声誉,得到用户的资金。
Blindcoin[14]针对Mixcoin在匿名性上的弱点,使用盲签名对其进行了改进。在Blindcoin中,盲签名隐藏输入与输出的映射关系,使混淆商不能打破用户的匿名。但是它降低了Mixcoin对于外部实体的匿名集大小。
BlindlySignedContract[15]在用户与混淆商交易过程中使用盲签名和智能合约保障匿名性和安全性。但是它需要软分叉来增加一个操作符以支持具有高效的双线性对椭圆曲线,从而达到与比特币兼容。
TumbleBit[16]是一个与比特币兼容的双向不可链接支付中心。TumbleBit的混淆商为了构建信任,使用多方安全计算的cut-and-choose方法来构建信任,并使用RSA盲签名来构造谜题保障匿名性,在不用对比特币进行软分叉的情况下实现用户的匿名性与混淆商资金偷窃问题的抵抗。此外,Claudio Ferretti[17]对TumbleBit做出改进,能够适用私链的匿名支付。但是它们的匿名集的大小取决与用户参与某个特定的tumbler的数量。
与上述工作相比,本文提出一种强匿名的混币策略,其特色在于解决混淆不可区分性的同时增大用户的匿名集,进而增强系统对所有外界观察者的匿名性。需要说明的是,作者团队之前提出过可监管的隐私保护混淆服务[18]。它使用公平的RSA盲签名方案对用户的凭证进行签名,但是盲签名方案不具备签名者的匿名性。而本文使用群盲签名方案具备签名者的匿名性,在不降低用户匿名等级的前提下,提升系统可扩展性,使混淆策略具备强匿名性。
本文利用群盲签名[19]和多混淆商来实现强匿名性。所谓群盲签名是指群成员在不知道内容的前提下能够代表群来签署消息。当签名者在回复用户的对m的签名请求时,签名者执行操作如下:
用户执行操作如下:
本文首先提出一个基于可信监管方的混币系统模型,在此基础上设计面向比特币的强匿名混淆协议。
本文系统主要由监管方、混淆商和用户三类角色组成。监管方与混淆商之间交互包括监管方为混淆商提供资格认证、资金托管以及监管恶意行为。混淆商与用户之间的交互主要包括混淆商为用户提供比特币混淆。用户之间也可以使用签名凭证进行支付交易。主要流程如下:在注册阶段,如果混淆商想要加入群组且被用户认可,那么混淆商向监管方提出加入请求,监管方审核混淆商,一旦审核通过,监管方就给混淆商提供群证书。在交易阶段,用户使用非匿名地址向认证过的混淆商支付一定数量的比特币,同时提供凭证,以换取混淆商的群签名。用户使用这个群签名,以匿名方式任意寻找一个混淆商,要求其向凭证中的匿名地址支付一定的比特币。如此,用户就拥有了一定数量比特币的匿名地址。系统模型如图1所示。
监管方:监管方R负责群参数的建立,验证、签发证书与审计。由于混淆商不可完全信任,因此本文引入一个可信第三方作为监管方对恶意的混淆商进行追责以及资金的保管。在注册阶段,监管方可以添加或删除混淆商。在审计阶段中,监管方可以解密签名并获得签名者信息,还可以通过解密签名对恶意混淆商进行追责。本文假设监管方由银行或者政府等可信权威机构担任。
混淆商:只有经过监管方认证通过注册的混淆商(即得到群证书的混淆商)才会被用户认可。混淆商与监管方的交互不以匿名的方式进行,但是每次消息的发送我们都会加密的方式进行。为了激励更多的混淆商参与混淆,每次混淆过程中混淆商可以收取一定的混淆费作为激励。
图1 基于可信监管方的混币系统模型
用户:用户是一个想将一定数量比特币从比特币地址ua1转移到一个全新的比特币地址ua2的实体。用户与混淆商与监管方间的通信以匿名通道的方式(如:Tor)进行。这可以保障混淆商无法将地址ua1与ua2联系起来。
公告板:公告板具有可公开访问以及不可篡改的特点。这可以使用比特币消息服务来协助实现[20],可以一次性发布多条消息,在一条比特币交易中,只需要支付一小笔比特币费用(1 kB大概只需要支付0.0002 btc)。每条消息都将有一个不可更改的唯一区块高度作为时间点。公告板所记录消息,可以成为揭发参与者恶意行为的强力证据。一旦混淆商或用户存在恶意行为,那么监管方可以凭借这些证据作为依据对恶意行为做出惩罚。
本文混币协议采用时间片轮转方式,一个时间片包括注册阶段、混淆阶段以及审计阶段。以下是协议参数的介绍,然后分别详细描述这三个阶段。
3.2.1协议参数
本协议所用参数主要包括群参数和混淆参数。前者主要用来构建群盲签名,后者主要用于混淆。
混淆参数:交易的固定面额di,混淆费的费率r,交易混淆阶段开始时间点t1,审计的开始时间点t6。
3.2.2注册阶段
在本阶段,混淆商向监管方进行注册,只有注册过的混淆商才能够为用户提供混淆服务。
Step1:混淆商给监管方发送一些注册参数D1=〈a1,(y,z),b,Mi,s1,tx1id〉。
a1:混淆商为用户兑换比特币的资金地址,我们成为兑换地址。
(y,z):混淆商对x的知识证明,用于申请群证书。
b:y的承诺。
Mi:混淆商的基本信息,用于用户寻找混淆商交易以及审计阶段的追责。
s1: 混淆商对a1的拥有权证明,使用地址a1所对应的私钥对Mi的签名[21]。
tx1id:tx1是一个比特币交易,交易输入是地址a1,交易的解锁条件为混淆商与监管方的共同签名或者混淆商的签名与时间窗口tw1。
Step2:监管方收到Step3中的消息D1后进行验证。监管方验证:a)混淆商的所拥有的地址a1中是否有足够的比特币用于兑换;b)s1是否为a1的拥有权证明;c)交易IDtx1id所对应的交易是否构造正确;d)s1是否之前使用过;e) (y,z)能否成功证明混淆商知道x。如果验证通过,那么保存D1中的s1,并为验证通过的消息解锁交易tx1。然后选择一些验证通过的消息,根据消息中的(y,z)为其生成群证书v≡(y+1)1/e(modn),最后向混淆商发送回复消息D2=〈v,a2,s2〉。否则什么都不做。
v: 混淆商Mi的群证书。
a2:混淆商为用户提供签名以接受比特币的地址,初值为0。该地址的私钥由监管方保存,我们称为托管地址。
s2:监管方对a2的拥有权证明。
Step3:在监管方确定完混淆商之后,公布索引表list1={M1-a2,M2-a2,…,Mm-a2}到公告板上。列表list1记录混淆商的基本信息Mi与混淆商为每个用户提供签名以接受比特币的新地址a2(每个混淆商的a2都是独特的)及其两者的对应关系。
3.2.3混淆阶段
在本阶段,用户将要混淆的比特币交给任意选择的一个混淆商,获得一个凭证。用户将该凭证交给任意一个混淆商,获得“等额”的比特币。此时新获得比特币将不会泄露用户的身份。
假设混淆商Ma与Mb的个人私钥分别为xa、xb。相对应的公钥为ya、yb。
Step1:用户U随机选择一个混淆商Mb,然后在一个匿名通道上给Mb发送混淆参数D3=〈t4,t5〉。
t4:用户U匿名地在公告板中给混淆商Mb提供凭证的截止时间。
t5:混淆商Mb给用户U的匿名地址ua2支付BTC的截止时间。
Step2:如果混淆商Mb同意用户U所提供的参数,那么在此匿名通道给用户发送同意签名D4=〈{D3,nouce}xb,D3,nouce〉。否则User寻找其他混淆商重新执行Step1。
nouce:一个随机数,对于每个证明都是唯一的。
Step3: 用户U随机选择一个混淆商Ma,然后给Ma送混淆参数D5=〈t2,t3〉。
t2:用户U给混淆商Ma的托管地址a2支付面额为(1-r)*di的BTC的截至时间。
t3:混淆商Ma将签名应答发到公告板的截止时间。
Step4: 如果混淆商Ma同意用户U所提供的参数,那么发送D6=〈{D5,a2,nouce}xa,D5,a2,nouce〉同意签名给用户。否则User寻找其他混淆商重新执行Step3。
nouce:随机数,每个用户的nouce都不一样。
Step5: 用户收到D6之后,用户在时间点t2之前构建托管交易tx2。然后将D7=〈{tx2id,s3}yb〉发到公告板中。如果用户没有在t2之前将s3发到公告板中,那么我们终止协议。
tx2id:交易tx2的交易id。
s3:用户对ua1的拥有权证明:使用地址ua1所对应的私钥对信息Mi的签名。
tx2:一个比特币交易,交易的输入方为用户U的一个比特币地址ua1,输出方为混淆商Ma的托管地址a2,支付面额为diBTC。
tx3:一个比特币交易,交易的输入方为混淆商Mb的兑换地址a1,输出方为用户的匿名地址ua2,支付面额为(1-r)*diBTC。
3.2.4 审计阶段
在本阶段,监管方可以对混淆数据进行审计,从而发现并追责恶意混淆商(若存在),进而确保系统的正常运行。
本节主要对该策略的匿名性、抗拒绝服务攻击、可扩展性和可监管性进行理论分析。
(1)匿名性,是指一个用户的比特币地址无法与具体的身份实体产生映射关系。匿名性的论证是使用群盲签名对包含输出地址的凭证的盲化。攻击者可以是不同的角色,对于混淆商Ma,他在对凭证群签名之前无法获知被盲化后地址的具体信息。用户以匿名的方式(如Tor)寻找混淆商Mb与在公告板上公布被解盲后的群签名时,混淆商Mb也无法此用户的具体的身份。对于一个诚实而好奇的可信监管者来说,虽然他可以通过群签名对凭证进行解密,获得凭证签名者的信息,但是这并不能获取匿名地址与某个用户之间的映射关系。对于外部攻击来说,它们能够获取的信息只有匿名集的用户数量。所以攻击者无法将用户的输入地址与输出地址之间的映射关系建立起来。因此,用户正常地执行交易混淆协议可以确保地址之间的不可链接。
(2)匿名集规模,是指帮助用户提高匿名集的大小,即参与混淆的用户地址集合的大小。根据对区块链分析,攻击者可以尝试猜测混淆用户的输入和输出地址之间的映射。此外攻击者可能构建很多Sybil身份来参与交易,降低诚实节点的匿名集大小,提高混淆用户的输入与输出地址之间映射关系的被找到的概率。因此构建一个更大的匿名集可以为用户提供更强的匿名。为了更好的分析所提出的混币方案的匿名性,我们假设有N个用户,M个混淆商。在平均情况下,每个混淆商可能与N/M个用户参与交易混淆。我们协议中不同的混淆商产生的签名凭证是不能够被除了监管方之外的其他人所分辨的。因此我们的协议所产生的匿名集大小为N,用户的输出地址被攻击者找到的概率为1/N。因此,我们具有大的匿名规模,使我们的策略具有强匿名。
(3)抗拒绝服务攻击,是指基于Coinjoin交易的混淆协议中,恶意用户在签名阶段通过拒绝签名而达到中止交易的目的。这种攻击会延长诚实用户混淆时间。但是在本文协议中,用户参与混淆都是独立的,不存在用户与用户之间的交互,因此不会发生该攻击。此外,可能存在恶意混淆商在用户执行托管交易之后,拒绝向其提供群签名,或者在用户提交群签凭证之后,拒绝向用户的匿名地址支付比特币。但是,这些恶意行为都可以被用户使用存在于公告板中的证据证明这种恶意行为,监管者可以对恶意混淆商做出处罚。
(4)可扩展性,是指去中心化的混淆策略大多使用Coinjoin式交易,即将多个用户的交易输入与输出汇总在一笔交易中,考虑到比特币协议对交易产生数据的尺寸进行了限制,最终影响了汇总交易所包含用户的数量。本文采用中心化的混淆策略,用户只与混淆商进行交互,彼此不存在交互,这可以很容易地完成用户扩展。可能某个混淆商在带宽以及资金等多方面的存在限制,影响其添加用户参与混淆,因本文很容易添加多个不同的混淆商来扩张带宽与资金,故这并不会对可扩展性产生影响。
(5)可监管性,可监管性,是指本文使用凭证方案,允许用户提供混淆商恶意行为的证据,监管方可以对这些证据进行验证,从而对恶意行为做出惩罚(如:下次混淆剔除其作为混淆商的资格)。我们系统所做的检测包括:抵抗拒绝服务和混淆商所提供的签名数量与托管地址资金数额的一致性检测。对于前者,我们使用证据揭发的方式来进行监管。公告板中的证据是不可删除的,因此证据都可在区块链网络或公告板中被记录查阅。对于后者,在审计阶段,监管方会对恶意行为做出认定,并对其做出惩罚。我们的公告板机制与[14]类似。但是,我们与他们使用信誉度的方式不同,我们使用可信的第三方进行监管。
比特币的弱匿名性极大地危害着其未来的应用前景。基于此,可增强其匿名性的混币技术一经提出,就成为区块链领域的研究重点和热点。为了进一步扩大匿名集,提高匿名效果,本文提出一种基于可信监管方的比特币强匿名混淆策略。与已有策略不同,该策略具备以下特征:
(1)采用基于可信监管方的混币系统模型,在完成混币任务的同时阻止混淆商的恶意行为;
(2)采用基于群盲签名的混币协议,有效地扩大了用户匿名集。
到目前为止,本文方法只支持监管方的完全可信,缺乏一种机制来降低监管方的可信程度。因此,我们希望在今后,以当前研究为基础设计一个半可信的监管方协议。其目标是在不久的将来研究半可信的监管方为用户提供更好的混淆服务。