雖然 Nostr 並不是一個隱私協議,但它可能為比特幣的隱私帶來潛在改進。
原文標題:《THE NOSTR PRIVACY PARADOX》
撰文:Wendy
編譯:DAOrayaki
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 進行識別的風險。






