SNICKER:Alice和Bob如何在沒有交互的情況下混合比特幣

SNICKER可能是比特幣日益增長的隱私工具箱中的下一個工具。

儘管中本聰(中本聰)的白皮書表明,隱私是比特幣協議的設計目標,但如今,區塊鏈分析通常可以破壞用戶的隱私。這是個問題。比特幣用戶可能不一定希望全世界知道他們的錢花在哪裡,他們的收入或擁有的數量,而企業可能不想將交易詳細信息泄露給競爭對手—僅舉幾個例子。

幸運的是,比特幣開發人員和研究人員正在提出越來越多的解決方案,供用戶收回其隱私。比特幣隱私方面的擁護者之一是亞當·「太平鳥」吉布森,他可能以其對JoinMarket的貢獻而聞名,JoinMarket是一種允許用戶混合硬幣的協議,並為參與這種混合提供經濟獎勵。

最近,吉布森(Gibson)提出了一個新想法:SNICKER(具有重用加密貨幣密鑰的簡單非互動式Coinjoin)。現在已作為比特幣改進提案(BIP)草案提交,SNICKER將允許硬幣混合而無需任何同步或互動:無需用戶同時進行協調或在線。

投幣

到目前為止,SNICKER基於完善的比特幣混合技術CoinJoin。當今可用的一些最受歡迎的混合解決方案已經使用了這種技巧,包括Wasabi錢包(ZeroLink),Samorai錢包(Whirlpool)和JoinMarket。

進一步閱讀:什麼是比特幣混合器?

CoinJoin本質上是將多個交易合併為一個的工具。假設愛麗絲(Alice)想向卡羅爾(Carol)支付一枚比特幣,而鮑勃(Bob)要向戴夫(Dave)支付一枚比特幣。在此示例中,愛麗絲和鮑勃可以合作創建一筆大交易,在這筆交易中,他們都花費一個比特幣(總共兩個),而卡羅爾和戴夫則各自獲得一個比特幣。區塊鏈間諜將無法辨別哪個發件人向哪個收件人付款,從而使所有人的隱私受益。

然而,實際上,交易的比特幣數量經常是隱私泄漏。如果愛麗絲想向卡羅爾支付一枚比特幣,而鮑勃想向戴夫支付兩枚比特幣,則很明顯,誰通過匹配發送和接收金額來支付了誰。

這就是為什麼CoinJoin更常用於混合的原因。愛麗絲和鮑勃沒有給別人付錢,而是向自己發送了一個比特幣。通過將其合併為一筆交易,區塊鏈間諜無法分辨是誰退回了哪枚硬幣:這些硬幣混合在一起,從而保護了愛麗絲和鮑勃的隱私。

CoinJoin混幣器如今可以工作,但是它們有一個缺點:它們需要交互性。僅當所有參與用戶都簽署了整個交易時,CoinJoin交易才有效-但是要簽署整個交易,參與用戶必須首先向其添加所有硬幣和新的接收地址。這通常意味著他們需要大約幾次傳遞交易,並且通常都要求他們同時在線。

對於許多用戶來說,這樣的要求有點困難,這就是CoinJoin交易不是很常見的原因之一。這些要求是SNICKER可以解決的。

SNICKER版本1

本節中描述的協議是SNICKER的第一個建議版本。這個版本比其他版本更容易理解,但必須注意,它實際上不是協議的最佳版本,也不是最有可能實現的版本。 (稍後會提供更多有關替代版本的信息。)

如此說來,SNICKER版本1的工作方式如下:

假設愛麗絲想混合一個比特幣,以區塊鏈上未花費的交易輸出(UTXO)為代表。她要做的第一件事是將比特幣重新發送到她的同一個地址。沒錯,在此版本的SNICKER中,她正在重複使用地址,這違反了比特幣的最佳做法。但這很方便:它公開標記了UTXO為(可能)可用於混合。

順便說一句,這並不意味著愛麗絲不能使用硬幣。它仍然坐在她的錢包里,隨時可以使用。如果有人在乎,它會被標記。

鮑勃還有一枚硬幣要混合。 (實際上,數量不必事先相等,Bob至少需要擁有Alice的數量。)Bob不認識Alice,但他確實知道像Alice這樣的用戶在那裡,標記了他們的UTXO作為可混合的。因此,鮑勃(Bob)在區塊鏈上掃描了潛在的匹配項。他找到了愛麗絲的UTXO,可能還找到了更多匹配的UTXO,包括誤報(並非所有重複使用的地址都真正可用於混合)。但是,為了簡單起見,現在讓我們假設鮑勃只找到一個匹配:愛麗絲的UTXO。 (稍後,我們將返回其他可能的匹配和誤報。)

通過匹配,Bob現在獲取與重用地址相對應的公鑰。這完全有可能是因為地址被重用了:通過第一次使用它,愛麗絲在區塊鏈上發布了該公鑰。 (一旦花費了硬幣,公鑰就會在區塊鏈上可見,而地址始終可見。)

此時,Bob擁有了Alice的UTXO(因為她標記了它)和她的公共密鑰(因為她從地址中花費了一次)。

現在,鮑勃使用愛麗絲的公鑰並將其與自己的私鑰(用於他要混合的硬幣)結合起來,以創建「共享秘密」。從字面上看,這是密碼學書籍中最古老的竅門,因為只有愛麗絲和鮑勃可以生成它:鮑勃用他的私鑰和愛麗絲的公鑰,愛麗絲用她的私鑰和鮑勃的公鑰(對應於他要混合的硬幣)。

因此,現在Bob有了Alice的UTXO和她的公共密鑰,以及一個共享的秘密(因為他是用Alice的公共密鑰和他的私人密鑰生成的)。

鮑勃以新穎的方式使用共享的秘密。他用它來數學上「調整」愛麗絲的公鑰。這種調整實際上會創建一個新的公共密鑰。除了……沒有人擁有私鑰。然而。

有趣的是,由於有了另一種加密貨幣魔術,愛麗絲也可以發現經過調整的公共密鑰作為經過調整的公共密鑰如果她使用相同的共享密鑰調整原始私鑰,則調整後的私鑰將對應於調整後的公鑰。

換句話說,鮑勃可以為愛麗絲生成一個新的公共密鑰,從而為愛麗絲生成一個新的比特幣地址,只有她可以從中使用。即使她現在不知道

因此,鮑勃現在有了愛麗絲的UTXO和她的公共密鑰,一個共享密鑰以及一個新的愛麗絲比特幣地址(使用她的公共密鑰和共享密鑰生成)。

這幾乎足以創建有效的CoinJoin交易。具體來說,鮑勃(Bob)接受了愛麗絲(Alice)的UTXO,並為自己的硬幣添加了UTXO,因此有兩個輸入。然後,他添加了愛麗絲的新地址和自己的地址作為輸出(以及費用和其他一些詳細信息,例如需要時提供自己的更改地址)。然後他簽署了交易。

現在唯一缺少的是愛麗絲的簽名。

到達愛麗絲

最後一步-到達愛麗絲-實際上比聽起來容易,但需要最後一招。

Bob可以簡單地將幾乎完成的CoinJoin交易發布到某個地方,以供Alice查找。例如,在專用於SNICKER用戶的公告板上;最好是使用Tor隱藏服務,或者以其他方式保證為發布者提供匿名。

但是,如果使用純文本格式,這仍然不是理想的選擇。如果間諜監視公告板,他們可以輕鬆查看哪些輸入屬於提議者(在此例中為Bob),以及哪個輸入屬於接受者(在此例中為Alice):簽名者是提議者。這本身可能是隱私泄漏。但是,如果鮑勃提出更多提案來混合不同的硬幣,那就更糟了。在那種情況下,例如,間諜可能能夠將所有不同的UTXO連接到Bob,因為他的那批建議同時發布在公告板上。

因此,鮑勃改為用愛麗絲的公鑰加密貨幣CoinJoin交易這樣,只有愛麗絲可以解密交易,而間諜則無法學習任何東西。

在將加密貨幣交易發布到公告板上之後,Bob完成了他需要做的所有事情。如果他願意的話,他可以在網上消失。

愛麗絲輪到

由於現在對CoinJoin事務進行了加密貨幣,因此確實引入了最後一個輕微的複雜性。雖然Alice知道要在哪裡尋找軟體包(在SNICKER公告板上),但她不知道要尋找什麼:公告板上的所有CoinJoin交易看起來像加密的Blob。

只有一種出路。愛麗絲需要嘗試使用她的私鑰來解密所有軟體包,希望其中一個可以變成有用的東西。

但是當Bob的加密貨幣Blob變成CoinJoin交易時,Alice擁有了完成混音所需的一切。她使用她的私鑰和Bob的公鑰(包含在他的輸入中)來生成共享密鑰,然後她可以用來創建新的,經過調整的私鑰。在檢查新密鑰對應於她在輸出中的新接收地址之後,她簽署了交易並將其廣播到比特幣網路。

愛麗絲和鮑勃混在一起,即使他們從未互動過,也不需要同時在線。

儘管該過程在文本上聽起來有些費力,但是請記住,所有過程都可以通過軟體進行抽象,翻譯成筆記本電腦或手機屏幕上的幾個按鈕,甚至完全自動化。

SNICKER版本2

到目前為止說明的SNICKER是該提案的第一個版本。吉布森(Gibson)已經提出了第二個版本,其他變種也在討論中。

第二個SNICKER版本與此類似,但是避免了地址重用的需要-只是稍微複雜了一點。

在第二個版本中,Bob不會從重用地址獲得Alice的公鑰。相反,鮑勃從創建愛麗絲的UTXO的同一筆交易的輸入中獲取公鑰。 Bob假定該事務中的至少一個輸入是由Alice自己創建的,並且她仍然擁有這些輸入的私鑰。

鮑勃做出這個假設是因為這次,愛麗絲的UTXO甚至被更清楚地標記為可以混合使用,並且只有當愛麗絲控制與輸入相對應的私鑰時,才可以被如此清晰地標記。 SNICKER BIP沒有指定如何進行初始標記,但是建議某些錢包(如JoinMarket錢包)可以正確地透露此類信息。另外,愛麗絲可以在公告板上簡單地發布一條消息,宣傳她的UTXO。

但更好的是:一旦開始使用SNICKER,查找新的匹配項將變得更加容易。這是因為識別SNICKER交易本身並不容易,並且現有的SNICKER用戶可能希望再次混合其硬幣。換句話說,在初始引導階段之後,未混合的硬幣將與先前混合的硬幣混合,從而產生更多的混合硬幣,而這些混合硬幣又可以用於更多混合。

挑戰與機遇

如上所述,SNICKER BIP仍只是草案,尚有待審核和可能的改進。 (自從Gibson在博客文章中首次公開提出該想法以來,它已經在某些方面發展了。)現在已經提交了該提議以使其成為BIP,因此可以對其進行標準化,並且可以使不同的提議相互兼容。錢包。

SNICKER還面臨一些未解決的問題和挑戰,儘管這些似乎都不是無法克服的。例如,其中包括應選擇哪些UTXO作為匹配項,尤其是如何限制誤報的數量。除了重複使用的地址外,還可以例如過濾潛在的匹配項,以獲取金額,UTXO的使用期限或所用錢包的特定類型。

但是,正如本文前面提到的,即使存在多個匹配項(包括誤報),這也可能只是一個小問題。要約人(「鮑勃」)可以簡單地為所有要約人創建候選交易。即使這些提議發生衝突(因為Bob所有人都使用同一個UTXO),這僅意味著第一個做出回應的參與者(第一個「 Alice」)會做出回應-其他潛在的接受者會發現它們為時已晚,但沒有危害將完成。對於誤報,也不會造成任何實際傷害,Bob的要約只會放在公告板上,被永久忽略(或直到被刪除)。

但是,垃圾郵件可能是一個特別重要的問題。因為公告板將託管加密的數據塊,所以不可能過濾掉「偽造」建議:攻擊者發布的亂碼來破壞SNICKER協議。吉布森(Gibson)在他的BIP草案中提出了一些解決此問題的方法,但是這些方法會帶來新的權衡,例如發布建議的成本。

另一方面,SNICKER還提供了一些迄今為止為簡單起見而遺漏的優點。這樣的好處之一是,要約人可以在要約人的產出中增加一些資金,從而增加接受該組合的經濟動機。也可以同時與兩個以上的用戶進行SNICKER混合-儘管這樣做會使技巧更加複雜。

正是由於該協議是非交互性的,Gibson認為,與其他一些隱私技術(例如JoinMarket)相比,SNICKER在錢包中的實現相對容易。到目前為止,Electrum錢包已經對採用該提案表現出了興趣-儘管實際實施可能還有很長的路要走。

有關SNICKER的更多信息和背景,請參閱BIP草案,關注bitcoin-dev郵件列表討論或閱讀Gibson的提案(略過時)的博客文章。

資訊來源:由0x資訊編譯自BITCOINMAGAZINE。版權歸作者所有,未經許可,不得轉載
提示:投資有風險,入市需謹慎,本資訊不作為投資理財建議。請理性投資,切實提高風險防範意識;如有發現的違法犯罪線索,可積極向有關部門舉報反映。
你可能還喜歡