比特幣世界的十多年歷史向我們表明,比特幣開發人員還有很長的路要走,而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在其功能范圍內涵蓋了這一項目。
責任編輯;zl
評論
查看更多