V2 传输协议:比特币点对点流量隐身

  • BTCStudy
  • 发布于 17小时前
  • 阅读 34

BIP324 引入了比特币 P2P 网络中的 V2 传输协议,实现了节点之间的伺机加密,提高了大规模监控比特币网络的成本。该协议并非共识变更,而是在支持的节点间自动启用,旨在保护与比特币流量相关的元数据,比如节点IP地址,交易发起人等,并防止流量模式识别。

作者:Pieter Wuille

来源: https://bitcoinmagazine.com/print/the-v2-transport-bitcoin-p2p-traffic-goes-dark

接近 15 年以来,比特币网络上的节点之间的所有通信,都是以完全透明的形式传输的,没有任何加密。改变出现在 2024 年,这是因为采用了 BIP 324,它为节点之间的沟通引入了 “‘V2’ 传输协议”。这种新协议实现了伺机加密(opportunistic encryption)特性,使得没有能力监控节点间消息的敌手无法阅读它们的流量。自从 Bitcoin Core 26.0 为它添加了支持、并且在 27.0 版本默认开启它以来,它已经用在了比特币全网大部分点对点流量中。

但退一步说,一个比特币节点的主要功能是交换本质上公开的信息:区块链上的区块、交易池里的交易、其它比特币节点的 IP 地址。因为这些都不是秘密信息,似乎看不出流量加密有什么好处。但更近距离的观察会发现,与比特币流量相关联的大量 元数据,是值得保护的。如果一个大视野的敌手能够看到某一笔交易在何时转发、经过哪个 IP 地址来转发,他就能猜测哪个节点可能是传播的源头 —— 因此是该交易的发起人。除此之外,看到节点之间的连接,可能会曝光特定的某个节点属于某个人,从而让某一家公司或者矿工的节点可以被攻击者瞄准。对于一些在专制政体下生活的用户来说,可能透露自己在运行比特币节点本身就是没好处的。

在中本聪设计的 P2P 协议中,节点彼此连接,在这些连接上发送消息,比如 “ inv”(“我有你不知道的新 区块/交易”)、“ addr”(“这是另一个节点的 IP 地址”),等等。这些消息以及各节点所支持的特性的集合,已经发生了显著的改变,比如支持早期的 SPV 客户端(BIP 37)、致密区块转发(BIP 152)、Tor v3 地址(BIP 155),等等。但这些消息编码成字节、通过这些连接来传送的方式 —— 我们称之为 “传输协议” —— 自 2009 年来本质上从未变过。唯一的例外是 2010 年 5 月为这个协议引入了校验和。BIP 324 是此后首次进行此类变更。

注意,虽然这可以说是 “比特币协议” 的一部分进行的根本性变更,但它也完全是可选的。它并不是一项共识变更,也并不需要任何协调和激活机制。它只会在都支持这项特性的两个节点之间使用,但当一个支持 BIP 324 的节点与不支持它的节点通信时,它们会回到旧的传输协议(即 “v1”)。这就是为什么,在支持它并且默认打开它的客户端发布之后,两年中,比特币节点之间的绝大部分流量就都悄悄用上了这种加密的 v2 传输协议。

加密比特币节点流量的想法并不新奇。早在 2016 年,Bitcoin Core 开发者 Jonas Schnelli 就提出了 BIP 151 ,它允许升级后的节点间连接切换到一种加密模式。这个提案并没有走太远,而且因为这种方法并不能隐藏两个节点之间的初始化握手,2019 年出现的 BIP 324 决心彻底改造传输协议。这种更加新颖的方法引入了一组全新的连接,从一开始就是加密的。进展持续累积,直到 2021 年,Dhruv Mehta 主动捡起它,并跟 Tim Ruffing 和我将它转化成了一个完整的提案,还加入了少量新特性,比如一种完全伪随机的字节流、 流量塑形特性(affordances for traffic shaping)以及可选插件。2022 年,我们在 bitcoin-dev 邮件组中宣布了它,并在收获几个评论之后,在 2022 年和 2023 年期间实现了它。完整的特性在 2023 年合并到了 Bitcoin Core 。在进一步测试之后,在 2024 年,它被默认为所有连接启用(只要对等节点支持)。

新协议所提供的完全伪随机字节流特性,意味着通过这一传输协议发送的字节没有可识别的模式。举个例子,TLS 协议,用在与安全网站(“https://” 网页)的通信中,它会加密网站的内容,但不会隐藏使用了 TLS 的事实,以及请求该站点的主机名(hostname)(至少在 2020 年使用 “加密的客户端招呼(ECH)” 之前)。在 BIP 324 实现之前,v1 传输协议会在每一个连接的开头发送固定的 16 个字节,这是极为容易识别的,所以,尝试审查的防火墙可以轻松阻拦使用这一模式的任何连接。相反,v2 传输协议完全没有这样的模式;每一个字节,从第三方的角度看,都是均匀随机的,因此是完全无法预测的。任何尝试基于流量模式来阻拦比特币流量的实体,都需要拦截所有看起来随机的流量,这可能在政治上更有难度(相比只是拦截比特币这样的软件的流量)。让整个协议伪随机化最难的部分来自于握手 —— 在加密建立以前,节点需要交换公钥,而公钥并不是随机字节。感谢一个非常新的密码学技术,叫做 “Elligator”(2013),以及它的一个叫做 “ElligatorSwift”(2022)的变种,它可以将椭圆曲线公钥编码成看起来随机的字节,从而有可能在握手期间出现可识别的模式。

值得指出的是,由于比特币网络的公开特性,节点间的加密传输层可以提供的隐私保护面临很大的局限性。比特币节点并不信任自己的对等节点,因此也并不十分在乎这些对等节点是谁。比特币节点也没有公开的公钥,这也是为什么 v2 传输协议所提供的加密是伺机的、无身犯认证的;双方都会为每一个连接使用一个新的临时密钥。这意味着,主动的敌手(例如你的互联网运营商)可以执行 “中间人攻击”:与尝试建立连接的两个节点都使用 v2 传输协议,然后解密来自一方的消息、重新加密之后再发给另一方;也就是依然允许间谍,并且有可能同时篡改或审查信息。然而,重点在于,相比于能够直接检查未加密的单条消息(就像 v1 传输协议允许的那样),要大范围发动上述中间人攻击会昂贵很多。而且,当然,因为绝大部分比特币节点连接都是任意向随机的、不受信任的节点发起的,一个想要大规模打探其它节点的敌手总是可以启动大量的节点,然后让其他大量节点连接到这些节点。就像中间人攻击一样,做起来也比直接检查 v1 包裹更加昂贵。

因此,最好不要把 BIP324 自身当成一种隐私性提升,而是更大的动作的一部分:提高大规模监视比特币网络的成本,同时不要依赖于替代性网络(比如 Tor 和 I2P,它们都有自身的牺牲,比如增加时延或拒绝式服务的风险,整个网络的所有节点无法都接受这些风险)。BIP 324 的一些特性截至目前尚未实现,比如流量塑形,可以防止他人通过观察加密包裹的体积来发现关于被转发的交易的信息。希望这些特性会在未来几年中利用起来。

(完)

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BTCStudy
BTCStudy
https://www.btcstudy.org/