编者按:本文来自:以太坊爱好者(ID:ethfans),作者: Wei Jie Koh@Tornado,翻译: 阿剑,Odaily星球日报经授权转载。
网络层安全性
在当前的 Tornado.cash 实现中,我们只解决链上部分的隐私问题。因此,用户需要自己动手实施网络层的隐私保护。
你的 IP 地址可以看成是公开信息,因为很多人都有可能知道你的 IP 地址,比如你的网络服务提供商,以及在你访问某个服务器时负责路由的中转方。举例而言,你的网络服务上可以把你给中继者(Relayer)发送数据包时的时间戳记录下来,然后把它跟你取款交易的时间戳关联起来。所以,请使用虚拟私人网络(V-P-N)或者 Tor 来隐藏你的 IP,尤其是在发送取款交易的时候。
使用 Tornado.cash 所产生的 note 里面包含了一些数据,能够将你的存款交易和取款交易联系起来,所以,完成取款交易之后,请确保你安全、彻底地销毁掉了 note 数据。
请保证你在使用新地址以前删除了 dApp 的 cookie(译者注:可理解为浏览器缓存),因为如果 dApp 能 “观察” 到旧地址和新地址使用了相同的 cookie,它就知道这些地址都来自同一个人。一个好办法是使用一个新的身份(比如一个新的浏览器、一个新的钱包软件、一个新的 IP 地址),用来给你的新地址提取资金。
如果你所有的钱包都在使用同一个公开的 RPC,该 RPC 可能会知道你的地址是相互关联的,举个例子,可能你使用不同的身份,但你使用了同一个 IP 或者 API token。请注意,如果你把钱包放在 Metamask 里面,它会自动为你所有的请求安排同一个 API。
现实一点来说,对于大部分用户,最好的做法可能是跳过某几点来换取便利。某些 dApp 或者 RPC 节点可以跟踪用户的交易也许还算可以接受(绝大部分 dApp 和 RPC 节点都不会在乎,也不会记录下攻破隐私所需的数据),至少比所有人都能在区块浏览器(比如 Etherscan)上看到所有历史要强一些。
交易关联性
虽然外部观察者不能证明哪笔取款交易对应的是哪笔存款交易,他们还是能作一番有意义的猜测。举例来说:
如果一笔取款交易紧跟着一笔存款交易发生,那么这两笔交易就很有可能来自同一个人。我们建议用户在存入资金之后,等待其他人存入几笔资金,然后再考虑要不要取款。
如果某个地址发起多次存款,而另一个地址多次发起同样资金规模的取款交易,则这些交易很可能是有关联的。如果你希望多次取款,请尝试打乱资金数额并取出到互不关联的多个地址。
存入资金后,记得等待一段时间。即便在你之后已有躲避存入资金的交易,它们也很有可能来自同一个人、TA 试图通过发送大量交易来欺骗用户,让用户相信匿名集已经很大,但实际并非如此(也就是所谓的 “女巫攻击”)(译者注:在 Tornado.cash 及类似的混币器解决方案中,都有一个匿名集的概念,就是混币资金池中资金来源的多样性,资金来源越多,外部观察者越难跟踪并将交易跟某个身份关联起来,用户的隐私性就越强)。我们建议你至少等待 24 小时,以保证在你存入和取出之间有足够多不同的参与者都在合约中存入了资金。使用 Tornado.cash 时记得看看旁边的统计信息。
- 你要是总在所在时区的同一时间段存钱和取钱,也会削弱你的匿名性。一个简单的办法是尽可能打乱存取款的时间,甚至分散到一天的 24 小时中。
Tronado.cash 的统计数据中显示的匿名集大小就是存入给定实例的资金总额。实际上,匿名集大小可能会因为各种各样神奇、难以概括的链外因素而下降,比如,某个人可能用推特发了一条关于自己的隐蔽交易的信息——这就意味着该笔交易不再匿名了,匿名集变小了。就跟所有其它用户自己取消匿名性的情况一样,TA 的存款对大家的匿名性没有任何贡献。因此,不要公开自己存款的数额、数据和时间(尤其是取款交易的),这不仅仅是在保护你自己,也是在保护所有 Tornado.cash 的用户。
总的来说,尽可能避免出现让别人能够把你的存款和取款行为关联起来的事情。基本原则就是大隐隐于市。