近15年來,比特幣網絡節點間的所有通信都以明文形式傳輸,沒有任何加密。這種情況在2024年隨著BIP 324的採納而改變,該協議引入了用於節點間通信的“v2”傳輸協議。這一新協議採用機會加密,使得被動攻擊者無法讀取節點間消息。自Bitcoin Core 26.0添加對該協議的支持,並在27.0版本中默認啟用以來,它已被全球絕大多數比特幣P2P流量所採用。
退一步講,比特幣節點的主要功能是交換本質上公開的信息:區塊鏈中的區塊、內存池中的交易以及其他比特幣節點的IP地址。由於這些信息並非秘密信息,因此乍一看,加密傳輸過程中的信息似乎並無益處。但仔細分析後會發現,比特幣流量中包含大量值得保護的元數據。如果大規模攻擊者能夠看到哪筆交易在何時由哪個IP地址轉發,他們就能推斷出哪個節點可能是交易的發起者,從而確定交易的創建者。此外,查看節點之間的連接信息也可能揭示某些節點的歸屬,從而使特定公司或礦工的節點成為攻擊目標。而對於一些在專制政權下運行節點的用戶來說,暴露自己正在運行比特幣節點可能並非明智之舉。
在中本聰設計的P2P協議中,節點彼此連接,並通過這些連接發送諸如inv (“我有新的區塊/交易給你”)、 getdata (“給我那個區塊/交易”)、 addr (“這是另一個節點的IP地址”)等消息。隨著時間的推移,協議支持的消息集和功能發生了顯著變化,包括BIP 37對早期SPV客戶端的支持、BIP 152對緊湊型區塊中繼的支持、BIP 155對Tor v3地址的支持等等。但是,這些消息被編碼成字節並通過網絡傳輸的方式——我們稱之為傳輸協議——自2009年以來基本上沒有改變。唯一的例外是2010年5月引入了校驗和機制。BIP 324是此後首次引入此類機制。
需要注意的是,儘管這可以說是對“比特幣協議”的一次相當根本性的改變,但它是完全可選的。它並非共識機制的變更,也無需任何協調或激活機制。它僅用於支持該協議的各個節點之間,但當一個支持 BIP 324 的節點與另一個不支持該協議的節點通信時,它們會回退到使用舊的(“v1”)傳輸協議。因此,在默認啟用該協議的客戶端軟件發佈不到兩年後,比特幣節點之間的大部分通信最終都使用加密的 v2 傳輸協議,而這一切並未引起太多關注。
加密比特幣流量的想法並非新鮮事。早在 2016 年,比特幣核心開發者 Jonas Schnelli 就提出了 BIP 151,該提案允許升級連接以切換到加密模式。然而,該提案並未獲得廣泛支持。由於這種方法無法隱藏兩個節點之間的初始握手過程,因此在 2019 年提出了 BIP 324,旨在徹底改造傳輸協議。這種更現代的方法引入了一種全新的連接類型,從一開始就進行加密。2021 年,Dhruv Mehta 接手了該提案,並與 Tim Ruffing 和我一起將其發展成一個完整的提案,其中包含一些新功能,例如完全偽隨機的字節流、流量整形功能以及可選擴展。我們在 2022 年通過 bitcoin-dev 郵件列表宣佈了這項功能,並在收到一些反饋後,於 2022 年和 2023 年期間進行了實現。該功能於 2023 年合併到 Bitcoin Core 中。經過進一步測試,該功能於 2024 年默認對所有連接(與支持的節點)啟用。
新協議提供的完全偽隨機字節流特性意味著,通過網絡傳輸的字節中沒有任何可識別的模式。例如,用於與安全網站(“https://” URL)通信的 TLS 加密了網站的內容,但並未加密 TLS 的使用情況,也未加密(在 2020 年加密客戶端 Hello “ECH” 出現之前)請求網站的主機名。BIP 324 之前的 v1 傳輸方式在每個連接中都會發送一個非常容易識別的固定前 16 個字節,這使得審查防火牆很容易阻止任何具有該模式的連接。相比之下,v2 傳輸方式完全沒有這種模式;從第三方的角度來看,每個字節都是均勻隨機的,因此完全不可預測。任何試圖阻止比特幣流量的實體都需要阻止任何看起來像是隨機的流量,這在政治上可能比僅僅阻止類似比特幣的流量更困難。實現整個協議的偽隨機性最難的部分在於,在握手階段(加密建立之前),節點需要交換公鑰,而公鑰並非隨機字節。多虧了一種名為 Elligator (2013) 的相當現代的加密技術,特別是其變體 ElligatorSwift (2022),它允許將橢圓曲線公鑰編碼到看似隨機的字節中,才有可能避免這種情況。
值得注意的是,由於比特幣網絡的公開性,節點間加密傳輸層所能提供的隱私保護存在顯著侷限性。比特幣節點並不信任其他節點,因此並不真正關心通信對象是誰。比特幣節點沒有已知的公鑰,這就是為什麼v2傳輸層提供的加密是機會主義的且未經認證的;雙方只是為每個連接生成一個新的臨時密鑰。這意味著主動攻擊者(例如您的互聯網服務提供商)可以發起中間人攻擊:他們可以使用v2協議與連接雙方通信,但Decrypt並重新加密所有在它們之間流動的通信,從而仍然可以進行監視,甚至可能篡改或審查。然而,關鍵在於,與像v1傳輸層那樣直接檢查未加密的單個消息相比,大規模實施這種攻擊的成本要高得多。當然,由於大多數比特幣連接都是隨意建立到隨機的、不受信任的節點上的,因此,想要大規模監視其他節點的攻擊者總是可以選擇自行啟動大量節點,並讓網絡中的大部分節點連接到這些節點。與中間人攻擊類似,大規模實施這種攻擊的成本比簡單地檢查v1數據包要高得多。
因此,BIP 324 不應被視為一項獨立的隱私改進,而應被視為一項更宏大計劃的一部分,旨在提高對比特幣網絡進行大規模監控的成本,而無需依賴 Tor 或 I2P 等替代網絡。這些替代網絡本身也存在一些弊端,例如延遲增加和拒絕服務攻擊風險,而這些風險對於網絡上的所有節點而言都是不可接受的。BIP 324 還提供了一系列尚未實現的功能,例如流量整形,以避免僅通過觀察加密數據包的大小來洩露正在傳輸的交易信息。希望這些功能在未來幾年能夠得到更充分的利用。

千萬不要錯過擁有《核心特刊》的機會——其中收錄了許多核心開發人員撰寫的文章,解釋了他們自己參與的項目!
本文是《比特幣雜誌》最新一期印刷版“核心特刊”的編者按。我們在此分享,旨在讓讀者提前瞭解本期雜誌探討的觀點。
這篇文章《v2 傳輸:比特幣 P2P 流量消失》最初發表於Bitcoin Magazine ,作者是Pieter Wuille 。






