比特币世界的十多年历史向我们表明,比特币开发人员还有很长的路要走,而2019年3月创建的BIP 324,可能是这条道路的下一个重要的飞跃。
BIP是由瑞士比特币开发人员、Shift Cryptosecurity共同创始人Jonas Schnelli撰写的,目的是解决人们对比特币对等点之间交换信息的担忧。
“比特币:一种P2P电子现金系统”是比特币白皮书的标题,正如它所暗示的那样,P2P层是比特币网络的一个主要组成部分,但也是一个存在严重低效和现有理论攻击的系统。比特币潜在研究和升级的主要领域之一也是P2P网络,最近在这一领域发生的许多变革引起了广泛关注,包括像Dandelion(BIP 156)和Erlay这样的提议。
那么,P2P网络的体系结构是什么呢?在比特币之前,P2P网络最成功的案例出现在文件共享服务的应用程序中:最初是Napster(通过中央服务器目录进行部分集中),后来是BitTorrent。
在理想的配置中,P2P网络不应该有任何层次结构(所有节点都是相等的),节点应该均匀地分担网络负载。这个由相互连接的节点组成的网络的基本层有助于比特币抵制审查。就像洪流网络一样,政府已经采取行动在搜索引擎层面上阻止它们。这种行动只能阻止洪流搜索引擎,但要杜绝P2P洪流网络,几乎是不可能的。政府不知道的是:它们的网络隐藏在哪一层结构中?
比特币P2P层存在的问题
当前影响比特币P2P实现的问题之一是消息传输层缺乏强制加密。这使得比特币容易受到中间人(MITM)的攻击。MITM攻击是通过秘密地连接到两个对等点并在它们之间中继通信来执行的,因此,当通信真正被攻击者控制时,双方都认为他们是在直接交谈。有“被动”和“主动”MITM攻击,被动MITM攻击者只观察网络状态,主动攻击者操纵其通信量。
比特币协议中节点之间发送的消息不是加密的,而是以纯文本发送的,从而打开了整个协议的攻击向量。Internet服务提供商(ISP)、WiFi提供商或其他对手可以执行MITM攻击来读取所有入站和出站连接,而不必作为对等方与您连接。理论上,这可以用来拦截甚至阻止特定数据的中继。
由于比特币上缺乏消息加密,国家的ISP可能将检测到比特币交易包作为一种MITM攻击,查看它们包含的普通数据,然后阻止它们。他们可能会攻击矿工,推迟对区块的验证。或者,像PRISM这样的监视程序可能会选择通过MITM攻击被动地观察所有比特币流量,并在发现它不批准的事务后,努力拦截或阻止它。P2P网络上的协同攻击甚至可以将比特币网络分割到大陆或国家层面,即所谓的“分区攻击”。
对比特币隐私最重要的是:当交易正在进行,即使发生了MITM攻击,受影响的对等方也无法确认。
我想说,作为一个比特币社区,为什么我们不能使用VPN或Tor这样的工具来混淆或加密流量呢?由于Tor是一个加密的洋葱路由网络,它隐藏事务的端点,因此,理论上,ISP不可能以这种方式跟踪活动。但是,使用Tor加密的P2P服务也有缺点,主要是由于对HTTP(S)以外的Tor在其他层上的集成研究不足,理论攻击的可能性以及比特币核心软件可能引入攻击向量的一些依赖问题。
比特币P2P层的一种潜在解决方案
上面的文章解答了为什么Schnelli提出了一套比特币改进方案(BIP)来解决这个问题。BIP 151涵盖了节点之间通信量的加密,而BIP 150则描述了对节点可选的身份验证,并且基于椭圆曲线数字签名算法(ECDSA)的私钥/公钥密码体制。
作为一个热心读者,我建议解决方案从这篇由Aaron van Wirdum撰写的BIP 151文章开始,因为这个BIP是第一个针对P2P层缺乏隐私保护问题提出解决方案的。自该提案发布以来,一些缔约方已开始将该解决方案应用到各种比特币客户端案例中,Schnelli决定使用一个新的升级BIP,编号为324。
BIP 324的设计是为了让比特币的对等方能够判断他们是否是MITM攻击的受害者。虽然黑心参与者仍然可以连接到对等点 A,假装是对等点 B,也可以连接到对等点 B并假装是对等点 A,但实际的对等点A和B可以看到它们没有相同的会话ID,而且MITM攻击者正在拦截它们的通信。
BIP摘要指出:“目前,未加密的消息传输,BGP劫持、块延迟攻击和消息篡改可以很容易实现,它们被秘密地实施(这些MITM攻击无法被检测到)。”“增加机会主义加密会给攻击者带来被检测的高风险。对等运算符可以比较加密会话ID或使用其他形式的身份验证方案来识别攻击。”
MITM攻击者仍将能够读取比特币区块链上的未加密数据,因为它是开放的和去中心化的。因此,在实践中,这种解决方案可能最有助于防范特定实体的攻击,这些实体不是像ISP和开放WiFi提供商这些对等实体,这种实体可以过滤掉特定的事务并拦截或阻止它们。当然,PRISM可以通过成为网络上的对等实体来观察比特币的流量。如果监视MITM攻击成为可能,那么这些区块链观察者将不得不权衡监视P2P消息的好处和被反追踪的负面影响。
不过,BIP 324实际上只是增强比特币P2P层抵御恶意MITM攻击的一块垫脚石。确定MITM攻击是否对比特币构成了真正的威胁,或者判断它们是否对比特币构成真正威胁,这可能要成为开发工作中的一个关键步骤。但是,如果没有BIP 324所建议的工具,就很难收集这些数据。BIP 324提供减少被动MITM攻击的工具,而BIP 150的协同实现则为主动MITM攻击提供了一些潜在的工具。
握手
BIP 324中描述的第一个动作是“握手”。这是一种为P2P层上的节点之间进一步通信建立协议的行为。
如果双方之间没有发送任何其他消息,则应启动此握手程序,以此作为开始联系的一种方式,即将公钥(源自短暂的椭圆曲线Secp256k1加密函数)发送给对手方。正如这种类型的密钥模式的名称所暗示的(短暂的),每次成功的握手都应该从内存(RAM)中删除密钥。因此,攻击者将无法截获这些密钥或解码此特定连接的历史消息传输。这个攻击向量需要访问受害者的内存,因此在P2P加密和身份验证的范围内,这个问题可能可以忽略不计。
共享秘密对于建立端到端加密通信至关重要,只有当攻击者获得私钥和对手方的公钥时,才能计算。后者对于攻击者来说相当微不足道,但从设计上看,私钥不应该被传输,因此这个等式的这个组件对攻击者是不可用的。
握手的最后一步是导出对称加密密钥(用于加密消息的实际秘密)并计算会话ID。
加密
从现在开始,各方可以在彼此之间发送信息,而不必担心他们的内容会被任何第三方监视。
那么,当消息被加密时会发生什么呢?与BIP 151类似,该建议提取加密原语ChaCha20和Poly1305的最佳部分。加密不仅有积极的结果。通常情况下,它使信息量更大,计算任务更繁重,从而使通信速度变慢。在不涉及太多细节的情况下,一种新的、被提议的消息结构甚至可以使加密消息更小更快地计算,这都是因为选择了上面提到的正确的加密原语。相比之下,未加密的比特币核心客户端目前使用发送消息的双SHA-256哈希(加密标准)校验,它仍然是中本聪最初预言的衍生物。
这一提议只是让比特币更加私人化和可互换的冰山一角,它对比特币的共识规则没有任何影响,与比特币核心的更新程序一样,一些节点可能无法返回握手程序。简而言之,BIP 324是向后兼容的,这可能被算作其减轻MITM攻击的现实能力的一个负面因素。
在将这一建议(连同BIP 150)应用到比特币核心之后,我们可以期待得到更少的MITM攻击,或者至少有一个工具可以让我们比较会话ID和识别攻击。此外,值得一提的是,即使该项目没有涵盖在加密初始化期间避免MITM攻击的方案(称为首次使用信任),但BIP 150在其功能范围内涵盖了这一项目。