比特幣P2P網(wǎng)絡(luò)層還存在哪些問(wèn)題
比特幣世界的十多年歷史向我們表明,比特幣開(kāi)發(fā)人員還有很長(zhǎng)的路要走,而2019年3月創(chuàng)建的BIP 324,可能是這條道路的下一個(gè)重要的飛躍。
BIP是由瑞士比特幣開(kāi)發(fā)人員、Shift Cryptosecurity共同創(chuàng)始人Jonas Schnelli撰寫(xiě)的,目的是解決人們對(duì)比特幣對(duì)等點(diǎn)之間交換信息的擔(dān)憂。
“比特幣:一種P2P電子現(xiàn)金系統(tǒng)”是比特幣白皮書(shū)的標(biāo)題,正如它所暗示的那樣,P2P層是比特幣網(wǎng)絡(luò)的一個(gè)主要組成部分,但也是一個(gè)存在嚴(yán)重低效和現(xiàn)有理論攻擊的系統(tǒng)。比特幣潛在研究和升級(jí)的主要領(lǐng)域之一也是P2P網(wǎng)絡(luò),最近在這一領(lǐng)域發(fā)生的許多變革引起了廣泛關(guān)注,包括像Dandelion(BIP 156)和Erlay這樣的提議。
那么,P2P網(wǎng)絡(luò)的體系結(jié)構(gòu)是什么呢?在比特幣之前,P2P網(wǎng)絡(luò)最成功的案例出現(xiàn)在文件共享服務(wù)的應(yīng)用程序中:最初是Napster(通過(guò)中央服務(wù)器目錄進(jìn)行部分集中),后來(lái)是BitTorrent。
在理想的配置中,P2P網(wǎng)絡(luò)不應(yīng)該有任何層次結(jié)構(gòu)(所有節(jié)點(diǎn)都是相等的),節(jié)點(diǎn)應(yīng)該均勻地分擔(dān)網(wǎng)絡(luò)負(fù)載。這個(gè)由相互連接的節(jié)點(diǎn)組成的網(wǎng)絡(luò)的基本層有助于比特幣抵制審查。就像洪流網(wǎng)絡(luò)一樣,政府已經(jīng)采取行動(dòng)在搜索引擎層面上阻止它們。這種行動(dòng)只能阻止洪流搜索引擎,但要杜絕P2P洪流網(wǎng)絡(luò),幾乎是不可能的。政府不知道的是:它們的網(wǎng)絡(luò)隱藏在哪一層結(jié)構(gòu)中?
比特幣P2P層存在的問(wèn)題
當(dāng)前影響比特幣P2P實(shí)現(xiàn)的問(wèn)題之一是消息傳輸層缺乏強(qiáng)制加密。這使得比特幣容易受到中間人(MITM)的攻擊。MITM攻擊是通過(guò)秘密地連接到兩個(gè)對(duì)等點(diǎn)并在它們之間中繼通信來(lái)執(zhí)行的,因此,當(dāng)通信真正被攻擊者控制時(shí),雙方都認(rèn)為他們是在直接交談。有“被動(dòng)”和“主動(dòng)”MITM攻擊,被動(dòng)MITM攻擊者只觀察網(wǎng)絡(luò)狀態(tài),主動(dòng)攻擊者操縱其通信量。
比特幣協(xié)議中節(jié)點(diǎn)之間發(fā)送的消息不是加密的,而是以純文本發(fā)送的,從而打開(kāi)了整個(gè)協(xié)議的攻擊向量。Internet服務(wù)提供商(ISP)、WiFi提供商或其他對(duì)手可以執(zhí)行MITM攻擊來(lái)讀取所有入站和出站連接,而不必作為對(duì)等方與您連接。理論上,這可以用來(lái)攔截甚至阻止特定數(shù)據(jù)的中繼。
由于比特幣上缺乏消息加密,國(guó)家的ISP可能將檢測(cè)到比特幣交易包作為一種MITM攻擊,查看它們包含的普通數(shù)據(jù),然后阻止它們。他們可能會(huì)攻擊礦工,推遲對(duì)區(qū)塊的驗(yàn)證?;蛘?,像PRISM這樣的監(jiān)視程序可能會(huì)選擇通過(guò)MITM攻擊被動(dòng)地觀察所有比特幣流量,并在發(fā)現(xiàn)它不批準(zhǔn)的事務(wù)后,努力攔截或阻止它。P2P網(wǎng)絡(luò)上的協(xié)同攻擊甚至可以將比特幣網(wǎng)絡(luò)分割到大陸或國(guó)家層面,即所謂的“分區(qū)攻擊”。
對(duì)比特幣隱私最重要的是:當(dāng)交易正在進(jìn)行,即使發(fā)生了MITM攻擊,受影響的對(duì)等方也無(wú)法確認(rèn)。
我想說(shuō),作為一個(gè)比特幣社區(qū),為什么我們不能使用VPN或Tor這樣的工具來(lái)混淆或加密流量呢?由于Tor是一個(gè)加密的洋蔥路由網(wǎng)絡(luò),它隱藏事務(wù)的端點(diǎn),因此,理論上,ISP不可能以這種方式跟蹤活動(dòng)。但是,使用Tor加密的P2P服務(wù)也有缺點(diǎn),主要是由于對(duì)HTTP(S)以外的Tor在其他層上的集成研究不足,理論攻擊的可能性以及比特幣核心軟件可能引入攻擊向量的一些依賴問(wèn)題。
比特幣P2P層的一種潛在解決方案
上面的文章解答了為什么Schnelli提出了一套比特幣改進(jìn)方案(BIP)來(lái)解決這個(gè)問(wèn)題。BIP 151涵蓋了節(jié)點(diǎn)之間通信量的加密,而B(niǎo)IP 150則描述了對(duì)節(jié)點(diǎn)可選的身份驗(yàn)證,并且基于橢圓曲線數(shù)字簽名算法(ECDSA)的私鑰/公鑰密碼體制。
作為一個(gè)熱心讀者,我建議解決方案從這篇由Aaron van Wirdum撰寫(xiě)的BIP 151文章開(kāi)始,因?yàn)檫@個(gè)BIP是第一個(gè)針對(duì)P2P層缺乏隱私保護(hù)問(wèn)題提出解決方案的。自該提案發(fā)布以來(lái),一些締約方已開(kāi)始將該解決方案應(yīng)用到各種比特幣客戶端案例中,Schnelli決定使用一個(gè)新的升級(jí)BIP,編號(hào)為324。
BIP 324的設(shè)計(jì)是為了讓比特幣的對(duì)等方能夠判斷他們是否是MITM攻擊的受害者。雖然黑心參與者仍然可以連接到對(duì)等點(diǎn) A,假裝是對(duì)等點(diǎn) B,也可以連接到對(duì)等點(diǎn) B并假裝是對(duì)等點(diǎn) A,但實(shí)際的對(duì)等點(diǎn)A和B可以看到它們沒(méi)有相同的會(huì)話ID,而且MITM攻擊者正在攔截它們的通信。
BIP摘要指出:“目前,未加密的消息傳輸,BGP劫持、塊延遲攻擊和消息篡改可以很容易實(shí)現(xiàn),它們被秘密地實(shí)施(這些MITM攻擊無(wú)法被檢測(cè)到)?!薄霸黾訖C(jī)會(huì)主義加密會(huì)給攻擊者帶來(lái)被檢測(cè)的高風(fēng)險(xiǎn)。對(duì)等運(yùn)算符可以比較加密會(huì)話ID或使用其他形式的身份驗(yàn)證方案來(lái)識(shí)別攻擊?!?/p>
MITM攻擊者仍將能夠讀取比特幣區(qū)塊鏈上的未加密數(shù)據(jù),因?yàn)樗情_(kāi)放的和去中心化的。因此,在實(shí)踐中,這種解決方案可能最有助于防范特定實(shí)體的攻擊,這些實(shí)體不是像ISP和開(kāi)放WiFi提供商這些對(duì)等實(shí)體,這種實(shí)體可以過(guò)濾掉特定的事務(wù)并攔截或阻止它們。當(dāng)然,PRISM可以通過(guò)成為網(wǎng)絡(luò)上的對(duì)等實(shí)體來(lái)觀察比特幣的流量。如果監(jiān)視MITM攻擊成為可能,那么這些區(qū)塊鏈觀察者將不得不權(quán)衡監(jiān)視P2P消息的好處和被反追蹤的負(fù)面影響。
不過(guò),BIP 324實(shí)際上只是增強(qiáng)比特幣P2P層抵御惡意MITM攻擊的一塊墊腳石。確定MITM攻擊是否對(duì)比特幣構(gòu)成了真正的威脅,或者判斷它們是否對(duì)比特幣構(gòu)成真正威脅,這可能要成為開(kāi)發(fā)工作中的一個(gè)關(guān)鍵步驟。但是,如果沒(méi)有BIP 324所建議的工具,就很難收集這些數(shù)據(jù)。BIP 324提供減少被動(dòng)MITM攻擊的工具,而B(niǎo)IP 150的協(xié)同實(shí)現(xiàn)則為主動(dòng)MITM攻擊提供了一些潛在的工具。
握手
BIP 324中描述的第一個(gè)動(dòng)作是“握手”。這是一種為P2P層上的節(jié)點(diǎn)之間進(jìn)一步通信建立協(xié)議的行為。
如果雙方之間沒(méi)有發(fā)送任何其他消息,則應(yīng)啟動(dòng)此握手程序,以此作為開(kāi)始聯(lián)系的一種方式,即將公鑰(源自短暫的橢圓曲線Secp256k1加密函數(shù))發(fā)送給對(duì)手方。正如這種類型的密鑰模式的名稱所暗示的(短暫的),每次成功的握手都應(yīng)該從內(nèi)存(RAM)中刪除密鑰。因此,攻擊者將無(wú)法截獲這些密鑰或解碼此特定連接的歷史消息傳輸。這個(gè)攻擊向量需要訪問(wèn)受害者的內(nèi)存,因此在P2P加密和身份驗(yàn)證的范圍內(nèi),這個(gè)問(wèn)題可能可以忽略不計(jì)。
共享秘密對(duì)于建立端到端加密通信至關(guān)重要,只有當(dāng)攻擊者獲得私鑰和對(duì)手方的公鑰時(shí),才能計(jì)算。后者對(duì)于攻擊者來(lái)說(shuō)相當(dāng)微不足道,但從設(shè)計(jì)上看,私鑰不應(yīng)該被傳輸,因此這個(gè)等式的這個(gè)組件對(duì)攻擊者是不可用的。
握手的最后一步是導(dǎo)出對(duì)稱加密密鑰(用于加密消息的實(shí)際秘密)并計(jì)算會(huì)話ID。
加密
從現(xiàn)在開(kāi)始,各方可以在彼此之間發(fā)送信息,而不必?fù)?dān)心他們的內(nèi)容會(huì)被任何第三方監(jiān)視。
那么,當(dāng)消息被加密時(shí)會(huì)發(fā)生什么呢?與BIP 151類似,該建議提取加密原語(yǔ)ChaCha20和Poly1305的最佳部分。加密不僅有積極的結(jié)果。通常情況下,它使信息量更大,計(jì)算任務(wù)更繁重,從而使通信速度變慢。在不涉及太多細(xì)節(jié)的情況下,一種新的、被提議的消息結(jié)構(gòu)甚至可以使加密消息更小更快地計(jì)算,這都是因?yàn)檫x擇了上面提到的正確的加密原語(yǔ)。相比之下,未加密的比特幣核心客戶端目前使用發(fā)送消息的雙SHA-256哈希(加密標(biāo)準(zhǔn))校驗(yàn),它仍然是中本聰最初預(yù)言的衍生物。
這一提議只是讓比特幣更加私人化和可互換的冰山一角,它對(duì)比特幣的共識(shí)規(guī)則沒(méi)有任何影響,與比特幣核心的更新程序一樣,一些節(jié)點(diǎn)可能無(wú)法返回握手程序。簡(jiǎn)而言之,BIP 324是向后兼容的,這可能被算作其減輕MITM攻擊的現(xiàn)實(shí)能力的一個(gè)負(fù)面因素。
在將這一建議(連同BIP 150)應(yīng)用到比特幣核心之后,我們可以期待得到更少的MITM攻擊,或者至少有一個(gè)工具可以讓我們比較會(huì)話ID和識(shí)別攻擊。此外,值得一提的是,即使該項(xiàng)目沒(méi)有涵蓋在加密初始化期間避免MITM攻擊的方案(稱為首次使用信任),但BIP 150在其功能范圍內(nèi)涵蓋了這一項(xiàng)目。