为了提高比特币用户的隐私,许多系统和最佳实践都已经被开发出来了。彼得·乌莱(Pieter Wuille)博士写了分层确定性(HD)钱包,BIP32,更加简化了比特币钱包地址的管理。
虽然隐私并不是乌莱的主要目的,但是HD钱包更易于避免地址重用,因为当交易进出钱包时,这种技术可以很容易地生成新地址。
迪菲-赫尔曼-默克尔椭圆曲线(ECDHM)是提高隐私的比特币地址方案。ECDHM地址可以共享,付款方和收款方可以使用它秘密地派生出区块链观察者无法预测的传统比特币地址。结果就是,ECDHM地址尽管也可以「重用」,但不会像传统的比特币地址重用那样,没有隐私。
ECDHM地址方案的实例包括:彼得·托德(Peter Todd)的隐身地址(Stealth Addresses)、贾斯特斯·郎飞(Justus Ranvier)的BIP47可重复使用支付代码、贾斯汀·牛顿(Justin Newton)的BIP75带外地址交换,等等。
用户还可以通过比特币混合增强隐私,这是一种更繁琐的方式。将币与其他参与者混合的概念类似于乔姆博士发明的「混合网络」。
几种已被开发出来的混合算法包括:
CoinJoin —— Blockstream联合创始人格雷戈里·麦克斯韦尔(Gregory Maxwell)最初提出的混合货币方案,CoinJoin本质上允许用户创建可以多人输入的交易,然后将币发送给许多其他的输出端口,但回报是给同一个人的,从而「混合」这些价值,让外人难以判断哪些交易是相关联的。
原始的CoinJoin交易案例
JoinMarket —— 由开发人员克里斯·贝尔驰(Chris Belcher)创建,它允许比特币持有者通过CoinJoin将自己的比特币与其他用户的比特币进行混合,并收取一定的费用。它使用了一种智能合约,以保证你的私钥不会离开你的计算机,从而减少丢失的风险。简而言之,JoinMarket允许你以一种去中心化的方式,以较低的费用增强比特币交易的隐私。
CoinShuffle —— 由德国萨尔(Saarland University)大学的一组研究人员开发的去中心化混合协议,CoinShuffle在CoinJoin的基础上做了一些改进。它不需要可信的第三方来收集混合交易,因此不需要支付额外的混合费用。
CoinSwap —— 由麦克斯韦尔开发的另一个概念,CoinSwap与CoinJoin有很大不同,因为它使用一系列四个多签名交易(两个托管付款,两个托管发送)在双方之间进行无信任的货币交换。它的效率远低于CoinJoin,但可以提供更大的隐私,甚至可以促进货币在不同区块链之间的交换。
虽然混合相当于「躲在人群中」,但通常人群并不会特别大。混合应当被视为提供了模糊性,而不是完全匿名性,因为这使得一般的观察员很难跟踪资金流,但是,更成熟一点的观察员可能能够解除混合交易带来的混淆。
2014年,开放式比特币隐私项目的创始人Kristov Atlas发布了他关于不当实施CoinJoin客户端从而发现的弱点。
CoinJoin输入和输出分组
Atlas指出,即使使用相当原始的分析工具,他也能够将单笔CoinJoin交易的69%输入和53%输出进行分组。
甚至还有一些独立的加密货币就是冲着隐私的考虑开发的。
例如由埃文·杜菲尔德(Evan Duffield)和Daniel Diaz设计的达世币(Dash),它有一个名为「Darksend」的功能——CoinJoin的改进版。两大主要改进是使用的价值量和混合的频率。
达世币进行混合时常用的数额有0.1、1、10和100,从而使输入和输出的分组更加困难。在每次混合时,用户需提交与输入和输出相同的数额。
为了最大化混合提供的隐私性,并使定时攻击更加困难,Darksend会按设定的时间间隔自动运行。
达世币混合。来源:《达世币白皮书》
另一种以隐私为重点的加密货币甚至没有基于比特币。2014年,尼古拉斯·范·萨博哈根(Nicolas van Saberhagen)发布了《CryptoNote白皮书》,该概念已在多种加密货币,如门罗币(Monero)中得到了实施。其主要的创新是加密环签名和独特的一次性密钥。
普通的数字签名,比如比特币中使用的数字签名,只涉及一对密钥——一个公钥和一个私钥。这使得公共地址的所有者可以通过使用相应的私钥签署资金支出来证明他们拥有该地址。
普通的数字签名
2001年,阿迪·萨莫尔(Adi Shamir)博士和其他人首次提出了环签名,改方案建立在乔姆博士和Eugene van Heyst博士于1991年提出的群体签名方案的基础上。环签名涉及一组个人,每个人都有自己的私钥和公钥。
由环签名证明的「申明」,即指定消息的签名者,是组内成员。与普通数字签名方案的主要区别在于,签名者需要一个单一的密钥,但验证器无法确定签名者的确切身份。
因此,如果你遇到一个带有Alice、Bob和Carol公钥的环签名,你只能知道其中一个人是签名者,但没法确切知道这笔交易到底属于其中哪个人。它提供了另一个模糊层,使得区块链观察员更难在支付流经系统时跟踪支付的所有者。
有趣的是,环签名是专门在告密的背景下开发的,因为它们可以匿名泄露秘密,同时还可以证明秘密的来源是有信誉的(因为肯定来自一个已知群体的成员)。
环签名。来源:https://cryptonote.org/inside/
CryptoNote还设计用于降低与密钥重用和输入到输出跟踪相关的风险。付款的每个地址都是唯一的一次性密钥,该秘钥从发送方和接收方的数据中派生而来。一旦你在输入中使用了一个环签名,它就为刚刚被使用过的输出增加了更多的不确定性。
如果区块链观察者试图用已使用的地址绘制图形,通过区块链上的交易将它们连接起来,它将会成为一棵树,因为没有一个地址被使用过两次。随着往图表上添加更多交易,可能的图形数量会呈指数级增长,因为每个环签名都会产生关于价值如何在地址之间流动的模糊性。
因此,你不能确定哪个地址将资金发送到另一个地址。
根据用于签名的环的大小,单笔交易的模糊性可能从「二分之一」到「千分之一」不等。每个交易都会增加信息熵,并为区块链观察者带来额外的困难。
区块链分析阻力。来源:https://cryptonote.org/inside/