Nostr的隱私悖論與對比特幣隱私的改善

2023-05-29 14:05 DoraFactory


作者:L0la L33tz,編譯:DoraFactory

Nostr,全稱“通過中繼傳輸的筆記和其他內容”,是由閃電網絡开發者fiatjaf於2021年开發的一種新的通信協議,它是由LNBits开發者Ben Arc的一個名爲Diagon Alley的完全去中心化市場的嘗試發展而來。與其他通信解決方案不同,大多數通過啞客戶端(dumb client)和智能服務器運作,Nostr提供了智能客戶端和啞服務器(dumb server),從而提高了用戶的抗審查能力。

在Nostr中,所有數據都存儲在用戶本地,僅通過中繼進行分發,而不是存儲在像Twitter這樣的中央服務器上。在社交媒體的情況下,Nostr增加了抗審查能力,因爲用戶可以完全擁有自己的內容和個人資料。鑑於近期圍繞Twitter的審查政策引發的爭議,用戶开始向聯邦通信解決方案Mastodon遷移。然而,在Mastodon中,對內容和個人資料的所有權掌握在用戶注冊的Mastodon服務器的運營者手中。雖然像Mastodon這樣的聯邦系統提供了比中央服務器更多的抗審查能力,因爲用戶可以在遭到審查時簡單地注冊到另一個服務器,但也有人對Mastodon可能通過服務器所有者實施審查提出了批評。

2022年12月,Nostr社區獲得了Twitter創始人傑克·多爾西提供的14 BTC的資助,這爲該協議帶來了前所未有的關注。隨着建立在Nostr上的應用不斷發展,移動客戶端Damus在中國iOS應用商店的社交網絡類別中排名第一,並因此被禁止。爲了遏制#MarchOffTwitter運動,Twitter CEO埃隆·馬斯克很快禁止發布與Nostr相關的內容,並禁止其他第三方平台(如Instagram),但沒有取得成功。

盡管Nostr本身並不是一個隱私協議——默認情況下,客戶端會將用戶的IP地址泄露給中繼——但Nostr協議可能會提高比特幣的隱私性。

提升BIP47的隱私性和可擴展性

BIP47是一項比特幣改進提案,旨在爲重復支付創建可重復使用的支付代碼,同時保護用戶的隱私。如果沒有BIP47,爲了避免地址重用,用戶需要手動費力地生成新地址。當用戶將一個地址重復用於交易時,任何觀察區塊鏈的人都可以輕松將所有屬於該地址的交易聚合起來,形成用戶的付款歷史和淨值圖。因此,在比特幣中,防止地址重用是隱私的最佳實踐,並且已經在許多比特幣錢包中默認實施。然而,當用戶試圖與另一方建立重復支付關系,例如在商戶和客戶之間的關系時,頻繁生成新地址可能會不方便。

通過BIP47,客戶可以爲商戶生成一組用於支付的地址。如果客戶每月購买產品,商戶每月都需要向客戶發送一個地址。通過BIP47,客戶爲商戶創建了一個專用的支付代碼,類似於擴展公鑰。這允許客戶自動生成用於商戶的新地址,而不需要商戶爲客戶創建地址。

BIP47使用通知地址,這些地址由HD錢包監控以獲取輸出。在通知交易中,商戶通過OP_RETURN字段向客戶發送盲化的公鑰和鏈碼,以及一個共享密鑰,用於在公共區塊鏈上保持共享地址的私密性。由於比特幣網絡的架構,這種交換會產生幾個問題。前兩個問題是經濟問題:一個通知交易由80個字節組成,在比特幣網絡的交易費高時,對用戶來說可能變得昂貴。此外,通知交易會創建無法發送的輸出,隨着時間的推移會使UTXO集膨脹。這增加了比特幣節點的計算負載,因爲它們目前需要存儲整個UTXO集,即每個未用作新輸入以確保交易有效的比特幣輸出。

通知交易會創建所謂的“有毒找零”。當用戶從通知交易中收到找零並將其支付給第三方時,任何觀察區塊鏈的人都能夠將用戶的重復支付與非重復支付進行關聯,即使地址沒有重用。一個通知地址每個錢包只存在一次。如果一個商戶希望與10個客戶建立重復支付關系,任何觀察區塊鏈的人都能夠了解到商戶的客戶基礎,因爲所有10個客戶都需要爲商戶創建到同一個通知地址的通知交易。

與其使用通知交易在商戶和客戶之間交換支付代碼,支付代碼可以通過Nostr進行交換。與其他通信方法不同,Nostr適用於交換BIP47支付代碼,因爲不存在可能對消息交換進行審查的中央機構。同時,Nostr上的所有直接消息默認都是加密的,無需計算共享密鑰。通過通過Nostr使用BIP47,用戶可以避免通過無法花費的輸出創建UTXO集的膨脹,並通過避免有毒找零和通知地址的重復使用來消除重復支付與非重復支付之間的關聯,以及通過避免公开客戶基礎來消除客戶基礎的發布。

注意:通過實施UTreeXO,可能會在未來消除比特幣節點存儲整個當前UTXO集的需要。UTreeXO將證明交易是否使用有效的UTXO的負擔轉移給UTXO的所有者,將存儲需求從幾個GB減少到幾KB。

Nostr Pay-To-EndPoint

在比特幣中,區塊鏈分析服務使用“共同輸入擁有權”這個啓發式規則將交易映射到身份。根據這個規則,包含不同公鑰作爲輸入的交易被分類爲屬於同一個人。由於比特幣協議採用基於UTXO的架構,通過該架構,交易的輸入和輸出是相互關聯的,因此比特幣協議也容易受到子集求和分析的影響。在子集求和分析中,攻擊者能夠計算出輸入和輸出屬於同一實體的概率,即使不同的公鑰被用作一個交易的輸入。例如,如果一筆交易的輸入是1、4、7、23和6,輸出是5和36,就可以推斷出輸入1和4以及輸入7、23和6屬於同一個實體。

來源:2021年《加密貨幣交易中的知識發現:一項調查》作者:Xia Fan Lu和Xin-Jiang Jang

Pay-to-EndPoint(P2EP)是對中本聰的Pay-to-IP(P2IP)進行隱私保護的重新設計,編碼進原始比特幣客戶端中。P2EP交易的一種形式是PayJoin交易,旨在打破共同輸入擁有權的啓發式規則。在PayJoin交易中,發送方和接收方都提供輸入以打破共同輸入的啓發式規則。使用PayJoins,用戶可以通過任何通信渠道(如Tor Onion作爲終點)交換有關將用作輸入的UTXOs的信息,以構建部分籤名的比特幣交易(PSBT)。一旦雙方同意條款並籤署交易,PayJoin交易在區塊鏈上看起來就像任何其他比特幣交易一樣。由於涉及方同時扮演發送方和接收方的角色,PayJoin交易不僅打破了共同擁有權的啓發式規則,還打破了子集求和分析:各方可以提供輸入爲3和5,而交易生成的輸出爲6和2。

來源:Adam Fiscor的《Pay To EndPoint》,2018年

問題:PayJoin交易的協調相當復雜,因爲參與者必須同時在线,無論是使用明網域名還是Tor Onion終點。如果用戶發起了一個P2EP交易,例如關閉了他們的計算機或者網絡連接中斷,交易就無法進行通信。在Nostr中,通信是異步的:用戶在網絡連接恢復後從中繼獲取信息。通過使用Nostr密鑰而不是Tor Onion作爲P2EP交易的終點,可以更容易地協調P2EP交易。

另一個P2EP的實現是備受爭議的LNURL。通過LNURL,用戶無需爲每個交易繁瑣地生成新的發票,而是可以接收一個指向Web服務器的靜態終點,自動生成新的發票。然而,由於Web服務器依賴全局域名服務(DNS),使用LNURL的用戶不可避免地向托管提供商透露了他們的身份,如果沒有採取適當的預防措施,還會向收款方透露他們的IP地址。廣泛採用LNURL將對閃電網絡的匿名性造成損害。用戶可以使用Nostr密鑰作爲LNURL交易的終點,以隱藏他們的身份,而不是使用Web服務器作爲LNURL的終點。

Nostr用於CoinJoin

雖然PayJoin很好地打破了共同所有權啓發式和子集和分析,但PayJoin無法爲發送方和接收方提供對合作方的隱私保護。PayJoin實質上是兩方CoinJoin,限於兩個參與者,這意味着發送方和接收方都知道自己的輸入和輸出,使其合作夥伴的輸入和輸出可識別。除非使用CoinJoined交易來促成PayJoin,否則用戶有泄露其錢包余額以及過去和未來交易給PayJoin合作夥伴的風險。

在像Wasabi Wallet的CoinJoin協調協議(WabiSabi)這樣的匿名金額憑證系統中,Nostr密鑰可以作爲協調CoinJoin交易的通信終點。這使得CoinJoin交易的發送方和接收方可以交換參與CoinJoin輪次所需的憑證,從而在CoinJoin中實現一種離散支付形式。通過在CoinJoins中使用Nostr密鑰作爲終點,合作方在人群中隱藏,對其對手的余額和交易保持不知情。同時,使用Nostr密鑰作爲CoinJoin交易的終點有助於PayJoin用戶節省費用,通過在CoinJoin中直接進行支付,而不是通過CoinJoin來促進支付。

Nostr在CoinJoins中的另一個用途是協調者的發現。雖然大多數CoinJoin協調者在Tor後面運行以掩蓋CoinJoin參與者的身份,但用戶目前無法輕松地發現新的協調者,除非是JoinMarket(面向更高級的CoinJoin用戶的CoinJoin市場)。雖然CoinJoin用戶可以向Wasabi Wallet添加自定義協調者(在後台交換URL一樣簡單),但由於缺乏發布平台,沒有辦法自動更新協調者的過程。因此,爲了發現新的協調者,用戶必須手動搜索社交媒體和論壇(如Reddit或Twitter)以添加協調者。然而,通過社交媒體或論壇發布協調者服務可能會對協調提供者構成風險,這取決於服務所應用的政策,因爲某些頁面可能會輕易關閉。

如果Tor是匿名中繼服務器,即一種在同行之間促進匿名轉發和接收消息的協議,Nostr可以充當匿名公告板。CoinJoin協調者可以通過Nostr事件類型發布他們的服務,而CoinJoin錢包可以啓用自動從這些中繼服務器中獲取信息並在其客戶端中顯示。通過Nostr廣播協調器服務器,例如通過BTCPay的Servers CoinJoin插件和在基於閃電網絡的CoinJoin軟件Vortex中提出的方法,可以消除在CoinJoin客戶端中手動搜索和添加CoinJoin協調者的需求,進一步分散CoinJoin協調景觀。

通過NOSTR繞過IP要求

正如之前提到的,Nostr協議最初的概念是實現一個完全去中心化的市場,稱爲Diagon Alley。隨着Nostr協議的發展,Diagon Alley變成了LNbits的擴展NostrMarkets:一種原生支持Nostr的市場,使商家和客戶能夠通過中繼運行和互動在线商店。在NostrMarkets中,客戶可以訂閱商家的公鑰,從中繼獲取產品,而不是通過網店訪問商家的網站。這增加了在线商店的抗審查性,因爲商家不依賴可查封的網站,而是商家的商店由其與之通信的所有中繼托管。即使商家的服務器被查封,商店也可以輕松地在不同位置設置,因爲所有產品都存儲在Nostr網絡上的中繼上。NostrMarkets通過加密的Nostr直接消息處理訂單和付款協調,而付款則通過閃電網絡進行。

除了具有抗審查性,LNbits的擴展NostrMarkets還實現了完全匿名的市場。商家和客戶不向全世界公开他們的IP地址,而只向他們連接的中繼公开,而這可以通過在Tor後面運行客戶端或商店來輕松解決。完全在Tor後面運行商店的好處是,商店只能通過Tor瀏覽器和.onion網頁訪問,NostrMarkets可以在任何Web瀏覽器或智能手機上運行,提高了保護隱私的客戶端-服務器通信的用戶體驗。由於支付是通過加密的Nostr直接消息進行協商,並通過閃電網絡實現,只要商店的閃電節點在Tor後面運行,NostrMarkets中的付款將保持相對私密,因爲付款協調直接消息與Nostr中的其他直接消息無法區分。

另一種繞過服務器客戶端通信中IP地址要求的方法是NOSTREST。REST代表“表述性狀態轉移”,它是世界範圍Web的軟件架構的一部分,用於通過GET、POST、PUT、DELETE和PATCH請求在服務器和客戶端之間進行通信。但是,當客戶端向服務器發送REST請求時,IP地址會被公开,可能會泄露個人身份信息。在GitHub上,__escapee__提出了一個建立在Nostr上的REST API橋接,名爲NOSTREST。通過使用不帶身份驗證頭的Nostr密鑰,用戶和服務器運營者無需知道對方的IP地址。因此,NOSTREST的實現可以改善使用REST的比特幣應用程序的隱私,因爲服務器不需要客戶端的IP地址。

其中一個例子可以是運行托管的Chaumian e-cash鑄幣廠,這是一種匿名金額憑證系統。在e-cash鑄幣廠中,鑄幣廠運營商不知道其用戶的余額或交換的價值。然而,由於當前的REST架構,除非默認情況下在Tor後面運行(例如在e-cash系統Cashu中),否則它會得知用戶的IP地址。但是,實現和管理Tor支持是繁瑣的。通過NOSTREST橋接,項目可以輕松保護用戶的隱私。通過在Tor後面運行e-cash鑄幣廠,並使用NOSTREST在服務器和客戶端之間進行通信,可以實現異步通信,而服務器運營者和用戶只會了解彼此的公鑰,消除了通過IP進行識別的風險。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:Nostr的隱私悖論與對比特幣隱私的改善

地址:https://www.sgitmedia.com/article/1230.html

相關閱讀: