假名性是指用可识别的标记代替真实姓名。在 Bitcoin 中,地址和公钥可以起到这种作用。交易是公开的;能否确定参与者,还取决于观察者掌握了哪些其他信息。
安娜用“北极星”这个笔名写博客。读者认得她的文章,却未必知道她的真实姓名。Bitcoin 地址也可以发挥类似作用:人们能认出与某个标记相关的付款,而这个标记中并没有法定姓名。这就是假名性。安娜在博客上放了一个接受捐款的地址。此后,读者可以观察这个地址的收款记录。如果安娜后来公开了自己与博客的关系,原本可见的历史就多了一层联系。没有人需要破解加密,只是一条新信息把原本分开的两件事连在了一起。Bitcoin Whitepaper 已经指出,揭示一个关联可能帮助人们识别其他交易。 [1] [2]
Bitcoin 地址告诉钱包,新交易输出应该采用什么花费条件。它不是个人登记记录,也不是身份证号码。输出记录了一笔金额,以及花费它所需满足的条件。安娜可以使用很多地址,而一个共同的钱包也可能由多人管理。私钥是一份秘密数据,钱包用它生成数字签名,表示对付款的授权。Public Key,即公钥,用来验证数字签名,而不是验证签名者的姓氏。有效签名证明使用了相应的私钥;单凭签名,无法区分操作的是安娜、替她保管资金的服务方,还是拿到私钥的窃贼。因此,控制资金与确认一个人的法定身份,是两回事。 [4]
如果安娜也把博客上的地址写在工作账单上,她就亲手把生活中的两个领域连在了一起。读者能看到同一地址上的其他收款,尽管未必知道哪笔是捐款,哪笔来自客户。每笔收款使用新地址,可以减少这种直接关联。普通钱包不需要新建账户,就能生成许多地址,通常也由同一份备份管理。但新地址不等于一个保证匿名的新身份。其他线索仍可能表明,不同地址由同一个人使用。 [2]
假设安娜在完成 KYC 身份核验的交易所购买 bitcoin。交易所知道她的账户,也知道她填写的提现地址。仅凭提现,并不能证明安娜控制目标地址:她可能是在给别人付款。但交易所掌握了一条普通博客读者没有的具体联系。商家则知道订单,也可能知道送货地址。这些资料不会自动写入 Bitcoin 交易,也不会自动向所有人公开,却可以补充公开交易记录的背景。因此,讨论隐私时,需要明确是面对哪一个观察者,以及对方实际知道什么。 [2]
Bitcoin 并不是在实名账户之间做扣款和入账。一笔付款会花费以前尚未花费的输出,也就是 UTXO,并创建新的输出。金额及这些输出之间的连接关系是公开的。因此,观察者可以看到交易之间真实存在的联系,但哪些部分由哪些人控制,往往仍需推断。这个区别很重要:公开的价值流转记录,并不是现成的所有者名单。后来获知的姓名,可能让很久以前的付款有了新的解释。从博客删除地址,并不会抹去旧交易,也未必能删除别人保存的博客副本。 [1] [4]
钱包有时会合并多个 UTXO 来付款,再把多余部分作为找零,也就是 change,送回自己控制的地址。分析者可能假定这些输入属于同一个人,并猜测哪个输出是找零。这样就形成了被认为有关联的地址组。这些方法叫启发式分析:是有用的推断,不是身份的证明。例如,CoinJoin 和 PayJoin 允许多个参与者共同组成一笔交易。所以,即便一张地址关系图看起来很有说服力,也不能据此断定所有地址都由安娜控制。结论有多可靠,还要看其他证据。 [6]
安娜想在另一个应用里查看钱包,于是导出一个 XPUB,也就是扩展公钥。BIP 32 把密钥组织成树状分支。XPUB 可以用来计算所在分支中的其他公钥,但不能跨过强化派生这一步,因为这一步需要私钥。再结合必要的地址类型信息,应用便能追踪相关付款。XPUB 本身不能签署花费交易,却可能暴露该分支过去和将来的活动。它不会自动展示同一份备份下的所有钱包或账户。不过,与交给客户的单个地址相比,它提供的视野仍然广泛得多。 [3]
安娜在网页区块浏览器中查询自己的地址时,运营者可能把查询与她的 IP 地址,也就是网络连接信息,或已登录的账户联系起来。钱包用来获取历史记录的服务器,也可能获得类似信息。这些服务运行数据不等同于公开区块链,但有时能帮助把链上的记录与人联系起来。Full Node 是运行验证软件的计算机,会按网络规则独立检查比特币交易和区块。如果钱包确实连接自己的 Full Node,就能减少向第三方服务器发送此类查询。Tor 可以减少 IP 地址的暴露,但无法消除博客与付款之间已经公开的关联。 [2]
Lightning Network 付款通常不会作为一笔独立交易写入公开区块链。这样少了一条可见线索,但不代表没人了解这笔付款。Lightning 节点是管理支付通道的软件。通道连接双方,让他们不断更新已投入资金的分配。节点以公钥作为标识,并可向网络公告自己的公开通道。BOLT 11 付款请求可以让人确定收款节点的标识,还可能包含付款的其他资料以及到达收款人的路径信息。付款人、收款人和所用服务掌握的信息并不相同。公开付款请求,可能把其中一部分透露给更多人,即使付款本身并不在主链上进行。 [5] [7]
在公布地址或允许应用查看历史之前,安娜可以先问一个简单的问题:谁会因此把哪些信息连起来?为每笔收款使用新地址、了解把 XPUB 交给了谁,以及明白钱包从哪里获取数据,都是有用的做法。但任何一个步骤都不能单独保证完全匿名,新设置也不会抹去旧联系。目标是少分享不必要的信息,并知道哪些联系已经存在。这比期待一长串字符自动把人隐藏起来,更切合实际。 [2] [3]
要获得更完整的理解,请将本词条与以下词条结合阅读: Bitcoin 隐私, 比特币地址, KYC, Address Clustering, Bitcoin, UTXO. 反向关联还来自: Bitcoin 隐私, KYC, The Crypto Anarchist Manifesto, A Cypherpunk’s Manifesto.