鏈上富人尋「隱私」記(Mixer 篇)
安比(SECBIT)实验室
2019-12-20 07:59
本文约6898字,阅读全文需要约28分钟
一篇文章讓我徹底暴露了。什麼能拯救,零知識證明? !

一篇文章讓我徹底暴露了。什麼能拯救,零知識證明? !

最近有人說,誰掌握了區塊鏈技術就掌握了財富。

好吧我攤牌了,我就是一個這樣的「鏈上富人」。

10 月底,在最愛的《橙皮書📙》公眾號裡看到了自己,心裡卻不是滋味,背後甚至有些發涼。 Bowen 的一篇文章——「Top 10 DeFi 大戶的鏈上人生」讓我徹底暴露了。

我被描繪成了大戶。我可不喜歡這個詞,在我的字典裡這就是土豪的近義詞啊。嚴正聲明,我不是大戶,而是「鏈上富人」。

更要命的是,一舉一動都被別人分析記錄下來。區塊鏈前人人平等,鏈上富人真是一點面子都沒有。誰都能看穿我如何發家致富,現在又在幹些什麼。這還僅僅是很簡單的人肉分析,倘若配合上更高級的工具,相信不久就會有更深入的扒皮文章出爐。

面子事小,關鍵這讓我很沒有安全感。上一次有類似的感覺還是The DAO 那件事兒,我都不願意多提,真的是過山車般的經歷。

這次關於「隱私」的不安全感也很好理解。儘管以太坊/區塊鏈通常被認為有匿名性(Anonymity),但實際僅僅只提供了一個假名(Pseudonymity)級別的保護,並不是真正的隱私保護。賬戶地址上的交易記錄永久公開保存,任何人從這些數據中能分析出大量有價值的信息。這與傳統支付寶或銀行卡賬戶很不一樣(Satoshi Has No Clothes)。

比如作為「鏈上富人」,我都不敢用賬戶去超市買一瓶快樂水。只要交易發出的那一瞬間,對方就可能立馬知道我所有用過的地址,以及資產總額(怕被搶)。

再比如,我也不敢用賬戶在網上購物,因為所有的消費歷史會被全網一覽無餘(怕被扒)。

這種鏈上「隱私」的缺失,顯然也阻礙了區塊鏈的落地,導致鏈無法與真實世界發生大規模交互。所謂的“資產上鍊”都成為了空談,什麼樣的資產會願意上這樣的鏈呢?

哎,以太坊,這個讓我又愛又恨的平台。有好幾個瞬間,我甚至都想拋售。

我的酒肉朋友聰哥跟我說,做人要低調,他們王家就從來不願意碰區塊鏈這玩意兒,至於原因自己品。

不衝動,為了信仰,我決定自己去尋找安全感。

Mr 4242 是一個十分低調注重隱私的用戶,不想讓其他人通過鏈上數據跟踪。

《橙皮書📙》文章裡提到用戶Mr 4242 “使用過Coin Mixer 很難追踪之前的交易記錄”。

Mixer 這我了解,俗稱「混幣器」,而原理也一句話就能說明白:把自己的資產和其他很多人的混合到一起,再轉移到新的地址,從而抹去與原來地址的直接聯繫。

舉個例子,聰哥、賈哥、羅哥三個哥都轉給我100 塊錢,然後再經由我轉給另外三個人。那麼,其他人根據轉賬記錄就不能夠分辨出究竟誰想轉賬給誰,新的三個人與最初的三個哥並沒有直接聯繫。 “我”在這個例子裡充當的就是一個Mixer 的角色。

知名的Monero、CoinJoin、Mimblewimble 都是基於這個極簡單的邏輯來實現轉賬的隱私保護。

既然Mixer 技術似乎說得通,我便以"Ethereum Mixer"為關鍵詞搜索,看看究竟有沒有好用的產品👇。

搜索結果不多。不過排名靠前的倆網站還都挺精美,各種介紹和保證。致命問題在於他們是中心化服務,這種咱們當然不會用。

關於中心化Mixer 的問題,讓我繼續用前面舉的例子來說明:

  • 聰、賈、羅三個哥都轉賬給我,我完全能夠私吞了這些錢

  • 我實際知道他們每個人的真實轉賬意圖,可以進行出賣

所以不管這些Mixer 如何宣傳自己,使用他們不僅無法達到目的,反而有損失全部本金的風險。他們都是需要資產託管的Mixer。一句老話:他們看中的可能是你的本金!

區塊鏈世界裡,在資產安全面前,不得不先假設所有「中心化的第三方」都是邪惡😈的,都是會跑路的,然後慎重考慮自己的資產是否願意承受這種風險。

不難想到,智能合約在這個場景裡可以完美取代中心化網站,成為無需信任的第三方。於是,我將目光投向了智能合約。各式各樣的隱私方案和項目還真不少,為了聚焦,我先定下一個足夠明確的小目標——尋找基於智能合約的去中心化Mixer 可用方案。

很快,我發現了一份很有價值的資料👇。

https://github.com/

這是一篇被分散式自治組織先鋒Moloch DAO 👹資助的調查報告,由Trent Van Epps 總結了截止到2019 年以太坊生態內Mixer 項目的現狀。如果你像我一樣想詳細了解Mixer 的歷史背景和最新進展,這篇必讀。

眾所周知,以太坊和絕大部分區塊鏈項目一樣,賬本都是公開的(Satoshi Has No Clothes Again)。這意味著幾乎每筆交易都可被追溯,都有交易發起者和接受者。這裡說“幾乎”是因為存在一個例外——挖礦獎勵可以被認為是“乾淨”無法追溯的。但很顯然,目前的以太坊,普通人很難直接參與挖礦得到獎勵,因此唯一一個獲得乾淨資產的機會並不存在。

順著交易鏈條能挖掘出非常多有用的信息。無論你有多少地址,只要這些地址相互關聯,理論上都能通過分析被發現。因此鏈上幾乎毫無隱私可言。一次普通的付款,暴露一次地址,都可能讓你鏈上所有的行為都無處遁藏。

鑑於這種背景,Mixer 技術顯得尤為重要,一定程度上可以保護鏈上隱私。

上面這篇報告很詳細地列舉出了所有知名的Mixer 項目👇。

如獲至寶,我決定從這個列表中找出適合的產品。

Mixer 項目其實還真不少,可認為有兩大類的Mixer,一種基於零知識證明技術(主要是zk-SNARKs),另一種基於環簽名技術(Ring Signature)。

很快,我發現很多項目作者已經棄坑了。這倒讓我輕鬆不少,我只需關注還在活躍開發和有實際產品可試用的即可。

這是我初步覺得比較靠譜的四個開源Mixer 項目👇。

其實不難發現,幾乎所有還在活躍開發的Mixer 項目都不約而同地選擇了零知識證明技術。

正如安比實驗室郭宇所言:

零知識證明是打通鏈上數據與鏈下計算的關鍵技術,也是實現鏈上數據隱私保護的重要途徑。

初識「零知識」與「證明」初識「零知識」與「證明」》👇。

MicroMix 原名Semaphore Mixer,由以太坊社區中的Barry Whitehat, Kobi, Wei Jie 等大V 自行組隊開發,基於Semaphore (一個零知識匿名暗號系統)擴展而來。 MicroMix 利用了zk-SNARKs 方案,已部署在Kovan 測試網絡。目前支持的金額為0.1 ETH 或20 DAI 。

Hopper 是一個移動端優先/友好的Mixer,由Argent Wallet 團隊開發,基於HarryR 的ethsnarks-miximus 開發而來。 Hopper 是目前唯一有移動客戶端的Mixer,但暫時只支持iOS。 Hopper 利用zk-SNARKs,已經部署至以太坊主網和Ropsten 測試網絡。可惜的是,目前還無法很方便地安裝客戶端,只能由用戶自行編譯安裝。可能是安裝過程不夠友好的緣故,Hopper 在以太坊主網和測試網絡上的Mixer 合約近幾個月內都沒有任何交易。因此現在的iOS 版本更像是一個POC 產品,核心意義在於拓寬了Mixer 客戶端種類。從另一個角度考慮,移動客戶端的使用範圍和匿名性可能都略遜於桌面應用。好消息是MolochDAO 👹目前正資助另一個團隊BlockX 為Hopper 開發一個Web UI。 Hopper 的終極目標是有盡可能多的客戶端支持,從而擴大Mixer 的參與人數。

Tornado Mixer 由Peppersec 團隊開發,同樣基於零知識證明,利用zk-SNARKs 技術,在主網和Kovan 測試網均已部署。 Peppersec 本身為一個安全諮詢公司,該項目由團隊獨立開發,之後又受到MolochDAO 👹的兩筆資助。當前支持的金額為0.1 ETH,後期會開放更大的金額。 Tornado 團隊開發相當活躍,最近還完成了電路代碼和智能合約的第三方安全審計。這可能是第一個完成完整外部安全審計的Mixer 項目。

值得一提的是,Tornado 團隊在開發Mixer 過程中,還發現了影響很多零知識證明項目(包括很多Mixer)的“雙花漏洞”。具體討論可以參考安比實驗室此前的分析文章👇。

https://sec-bit.github.io/blog/

Heiswap (黑swap) 由Kendrick Tan 開發,是四個中唯一基於環簽名和隱身地址技術的Mixer,而這兩個技術是CryptoNote 協議的關鍵部分,也是Monero 能夠實現匿名的重要原因。 Kendrick Tan 認為,從成熟的技術和產品中藉鑑而不是非要使用最新的技術(比如zk-SNARKs),有時候反而能夠事半功倍。 Heiswap 目前在Ropsten 測試網上線,支持的可選金額最高到64 ETH。

經過仔細研究上面幾個項目的設計和實現,不難發現智能合約Mixer 的核心思想都很類似。通過混合多人的等額資金到同一個智能合約,構造出一個匿名集合,之後再提供證據證明自己在合約中有一筆資金未提現,合約驗證通過就轉賬給新的提款地址。通過引入匿名集合,來抹去原始轉賬發起人和收款人之間的直接關聯。智能合約負責的就是保存用戶存款記錄、校驗用戶是否真的在合約中存過款,以及校驗某筆存款是否已經被提現過。

原理類似,各項目的側重點和技術路線略有不同。

零知識證明技術能夠讓證明者在不洩露知識(秘密)的前提下向驗證者證明一個命題成立。對應到Mixer 中就是證明用戶在智能合約中存入了一筆資產(所有權)而且從來沒有被提現過,並且最妙的是證明過程不會暴露具體是哪筆資產。這就讓零知識證明技術天生特別適合Mixer。

基於零知識證明技術的項目都依賴Merkle Tree 來保存Commitment(用戶存款記錄),因此Merkle Tree 的算法選擇與實現、Tree 層數的設定、Hash 算法的選擇都會影響Mixer 上限和性能,具體就是樹的最大數量、電路中的約束數量、鏈下證明生成時間以及鏈上Gas 消耗。 zk-SNARKs 電路代碼編寫上也有不同的可選項,開發者會根據各自在性能、編寫難度、跨平台支持等方面的需求,選擇適合自己的技術棧。比如MicroMix 和Tornado 都選擇了Circom 電路語言和snarkjs(zkSNARKs Javascript 實現),優點則是開發維護成本低並且特別適合Web 應用;而Hopper 則選用了基於更成熟的libsnark 開發的ethsnarks,性能更好並且更容易移植至其他平台。此外,SNARKs 方案需要trusted setup,這增加了此類mixer 的正式上線成本。

基於環簽名技術的項目本質上可以認為採用了更成熟的密碼學方案,也無需trusted setup,並且證明(也就是簽名)生成耗時會短很多。缺點則是鏈上驗證消耗與匿名集合中的用戶數量成正比。另外匿名集合大小依賴Ring 大小的設置,為了用戶體驗通常會比SNARKs 方案中的匿名集合更小。

Mixer 核心原理都類似,實現也都不算複雜,技術層面看,完全已經到了可以正式產品化的臨界點了。但為什麼遲遲沒有大規模應用呢?實際上,以太坊去中心化的Mixer 也都面臨著共同的問題。

首當其衝的一個問題是,目前社區參與人數較少。決定Mixer 效果的一個關鍵因素就是匿名集合的大小,參與的人越多保護效果越好。

正如Vitalik 所說,匿名集合總是會比想像中小的多,最終會讓隱私模型變得不可靠。只有越來越多的人了解到區塊鏈上的隱私問題,並且意識到Mixer 是一個簡易可行的解決方案,Mixer 的參與人數才能越來越多,才會越來越安全。

If your privacy model has a medium anonymity set, it really has a small anonymity set. If your privacy model has a small anonymity set, it has an anonymity set of 1. Only global anonymity sets (eg. as done with ZK-SNARKs) are truly robustly secure.

第二個問題也是由Mixer 的特性所決定,也就是只能處理固定金額的資產,並且可以預見較長一段時間內這個金額都很難大幅提升。目前以太坊上的Mixer 可以做到隱藏轉賬路徑,但是無法做到隱藏轉賬金額。而如果跟Mixer 交互的金額可以任意由用戶自定義,則對外暴露了太多信息,很容易被用於分析。比如某用戶轉入Mixer 1.71158 個Ether,過了段時間又有人從Mixer 合約中提走相同金額,那麼很容易被看出來原始的轉賬意圖。

雖然Mixer 合約很容易支持任意多個固定金額,但是從匿名集合大小角度考慮,Mixer 運營者往往只會選擇開啟使用人數最多的幾個選項。所以在Mixer 產品尚沒有大規模流行之前,只會開啟小額選項試運行(這倒不一定完全是壞事:P)。

第三個問題在於Mixer 的使用相對於普通轉賬還有較高門檻。普通用戶從挑選適合自己的Mixer 產品,到真正能夠安全使用,還有挺多的新概念要去學。更需要注意的是並不是使用了Mixer,就能完全保護轉賬隱私安全。比如用戶直接向Mixer 轉入了一筆,兩分鐘後又使用新地址直接提出來。倘若這段時間內Mixer 合約恰好又沒有其他人調用過,則很容易被識別出來。

對於這一點,主要的幾個Mixer 都在頁面進行強調,提醒用戶注意規避。處理細節也提現了各家產品思路的差異。

比如Tornado 比較極客風,直接顯示當前匿名集合的大小具體是多少,以及最近幾筆轉入的時間是什麼時候。

而MicroMix 則更貼心,默認設置就是要求用戶至少過了午夜零點之後再進行提款,頁面有倒計時,提醒用戶保持頁面開啟,到時間後自動提示用戶。

MicroMix 的這個處理,也可以防止「匿名集合偽裝攻擊」的問題,即假設最近一段時間內雖然一直有不同地址在使用Mixer,實際控制人是同一人。這種攻擊方式下,匿名集合雖然對於外部觀察者看起來還比較大,還對於攻擊者卻很小,很有助於攻擊者進行數據關聯分析。

第四個問題與Mixer 中的一個核心角色Relayer 有關。由於與合約的交互必須消耗Gas,而用戶從Mixer 中提現時正常應該使用一個全新地址,這個地址的Gas 從哪兒來就成了問題。 Relayer 的引入則是為了解決這一「雞生蛋蛋生雞」的問題,由Relayer 替用戶出Gas 費用來調合約,相應的獲得一定報酬。用戶需要把Proof 發送給Relayer,由Relayer 負責發送交易。這個過程用戶IP 和新的收款地址可能會向Relayer 暴露(用戶需要自行隱藏)。目前各Mixer 產品都在嘗試不同的Relayer 方案,來降低對單個Relayer 的依賴,並試圖往形成Relayer 生態的方向在發展。

可以看到,對於小額場景,Mixer 技術已經相對成熟,同時也存在不少難點。

儘管很多技術團隊都已經進行過POC,但真正投入運營的項目還不多,而且社區關注度還不夠。

不過,很高興看到Tornado 和MicroMix 這些項目正在發力,持續地打磨產品。以太坊短期內並不會在底層提供隱私保護(這讓孫老師的Tron “又”領先了),而Mixer 作為提高鏈上隱私最直接有效的方案,只有吸引更多的人參與進來,才能發揮其真正的威力。百聞不如一見,大家不妨體驗一下?

圖片描述

圖片描述

👆上圖出處https://blog.chainalysis.com/

精神上作為「鏈上富人」,我還是真心希望能看到以太坊本身有更多隱私保護的特性,能讓我們無痛地使用各種DeFi 和DApp 而不用再擔心隱私安全問題。隨著以太坊伊斯坦布爾升級中EIP-152、EIP-1108、EIP-1344、EIP-2028 這幾個重要提案被激活,不久的未來我們應該會看到更多基於零知識證明技術的隱私項目上線,甚至可以期待看到以太坊和ZCash 的互通。要知道,Mixer 僅是零知識證明小試牛刀的試驗場,零知識證明技術真正的威力還遠沒有發揮出來。我們不妨一起期待,一起尋找,一起探索。

(PS:不光如此,零知識證明也給以太坊擴容帶來了新的希望。不由地感慨一句:零知識證明拯救以太坊,ZKP saves the world.)

這可能是關鍵的第一步,先保護區塊鏈(以太坊)本身的隱私,再去談利用區塊鏈技術解決傳統世界中數據洩漏和隱私保護的問題。

本系列純屬虛構,如有雷同,都是編的。

題圖:Richard testifying on US Congress, Silicon Valley S06E01

本文作者p0n1,文章首發於微信公眾號安比實驗室(id:secbitlabs)

安比(SECBIT)实验室
作者文库