BIP324 提出了一种新的比特币点对点通信协议,旨在提高网络安全性和隐私性,通过伺机自动加密、节约带宽和支持协议更新协商等特性,优化比特币网络, 新协议着重于通过加密通信来应对窃听、伪造和审查等攻击,同时保持对比特币网络免许可特性的兼容性。
作者:BIP324 homepage
BIP324 提出了一种新的比特币点对点通信协议,其特性有:伺机自动加密(opportunistic encryption)、节约少许带宽,以及可以在交换应用消息前协商更新。
完整的说明书已经形成,并可以在 这里 讨论。此处仅列出动机和设计目标。
比特币是一种免许可的网络,其目标是对公开的数据达成共识。因为所有数据都在比特币点对点网络中转发,所以天生就是公开的;而现在的点对点协议缺乏密码学身份的概念,对等节点们在不加密和无身份验证的连接中交谈。不仅如此,当前的 P2P 协议(在本说明书中以 “v1” 指代)的明文特性,在应对以下几种攻击时有缺陷:
这个新版的 P2P 协议(v2)致力于通过可持续地提高这些攻击的成本来优化网络,主要方法是使用无身份验证的伺机加密传输。此外,对被动的窃听者来说,被传输的字节流也将是伪随机的(即,跟均匀随机的字节无法分别)。
为什么加密不加入身份验证?
如上所述,无身份验证的加密已经提供了严格优于不加密的安全性。因此,所有连接都应该加密,即使并不包含身份验证。
至于身份验证本身,它的好处就不像加密那么清楚了。因为比特币的免许可特性,身份验证只能受限于特定场景(例如,连接的两个对等节点属于同一个运营者),而且某一些形式的(可能是部分匿名的)身份验证是否可取,还取决于相关对等节点的具体要求。因此,我们认为,身份验证应该单独处理(如果需要的话),而 v2 致力于为未来的协议更新 —— 包括加入可选的身份验证,见 “ 私密身份认证协议” —— 提供一个可靠的技术基础。
为什么有了伪随机的字节流,还是能被流量分析?
流量分析(traffic analysis),例如观察通信包的长度和发送时机,加上主动攻击,依然可以揭晓人们正在使用比特币 v2 点对点协议。然而,伪随机的字节流提高了持续指纹识别的成本,而且可能强迫某一些中间人攻击任何他们无法识别的协议,从而造成连带的成本。
伪随机的字节流不会自我暴露(self-identifying)。而且,它没有强烈的倾向性,因此是类似协议的一个常规选择(canonical choice)。那么,比特币的点对点流量将跟其他作出类似选择的协议 —— 例如 obfs4 以及近期提出的 cTLS 插件 —— 没有分别。而且,流量塑型和协议封装(比如,发起看起来像 HTTPS 或 SSH 的流量)可以进一步缓解流量分析和主动攻击。不过,这已经超出了本提议的范围。
为什么不使用一种安全隧道协议?
我们的目标之一是让伺机加密变得无处不在,因为它对大规模的攻击提供了最好的防护。这意味着,既要保护节点运营者指示自己的软件发起的手动的、故意的连接,也要保护比特币节点根据 goosip 所提供的 IP 地址发起的自动连接。虽然加密自身已经可以通过代理网络(或者说 VPN 网络)实现,但这些对大规模的自动连接来说是不理想的,也难以应用:
因此,为了实现我们的目标,我们需要这样一种解决方案:开销最小、无需配置就能工作、总能启用 —— 能够建立在任何网络层上,而不是变成网络层的一部分。
为什么不使用通用的传输加密协议?
虽然可以依赖现有的传输加密协议,比如 TLS 和 Noise,比特币点对点网络的特殊要求,让这些协议变成了不合适的选择。
现有的这些协议无法满足的主要要求是对加密和身份验证 的充分模块化处理。就像我们上面说的,在比特币点对点网络中,无论哪一种身份验证,是否可取都取决于相关对等节点的具体要求(因此会导致有身份和无身份两种连接的混合),因此,身份验证技术应该跟加密技术解耦。但是,对少数标准的身份验证技术(例如,电子签名和证书)的支持是现有的通用传输加密设计的核心。这种对身份验证的关注,并不能给比特币点对点网络带来清晰的好处,反而会带来大量额外的复杂性。
相反,我们的提议致力于简单的模块化设计,可以单独实现地址身份验证。我们的提议通过导出一个 “会话 ID”(加密通道的唯一标识符),提供了身份验证的基础。在加密通道建立之后,两个端点可以使用任何身份验证协议,来确认他们拥有相同的会话 ID。(这个特性有时候被称为 “通道绑定”,因为会话 ID 将加密通道绑定到身份验证协议。)因为在我们的提议中,任何身份验证都需要在加密连接建立之后才能运行,我们为这种模块化付出的代价是,可能往返次数会更高(跟其它通过 Diffie-Hellman 密钥交换执行身份验证的其它协议相比)。但是,由此产生的连接建立的时延升高,对比特币的长期连接( 一般会持续几小时甚至几周)来说并不是一个问题。
除了这种在身份验证的处理上的根本分歧,使用 TLS 或者 Noise 在我们这个场景中还会产生别的技术问题:
虽然现有的协议可以通过一系列的改造来解决所有这些问题,但这样也削弱了将他们作为开箱即用的工具的好处,比如,可以复用现有的实现的安全分析。
本协议希望实现下列特性:
本协议的代码已接近完成,正在社区参与阶段。我们希望在以下方面得到您的帮助:
- 本文转载自: btcstudy.org/2023/06/08/... , 如有侵权请联系管理员删除。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!