比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

硬核!360高級安全專家彭峙釀以Zcash為例,談零知識性證明的安全和隱私問題_ASH

Author:

Time:1900/1/1 0:00:00

10月12日,由中國計算機學會主辦的“2019CCF區塊鏈技術大會”在成都舉行。360高級安全專家彭峙釀博士以《零知識證明在區塊鏈應用中的安全和隱私問題》為題進行了分享,內容非常硬核。

以下是彭峙釀博士分享內容全文,由巴比特整理發布。

比特幣的隱私問題

比特幣是去中心化數字貨幣,廣播交易到公開賬本,防止雙花。比特幣不存在匿名性,個人交易記錄、賬戶余額以及商家現金流都可能被追蹤到,這可能就產生了隱私問題,也會產生錢的等價性問題。人們都希望貨幣是等價的,但比特幣的歷史信息可以被查到,某一些可能曾經是黑錢,或者某一些有更高的收藏價值,從而造成比特幣并不等價。為了解決這兩個問題,人們希望把隱私引入到比特幣當中。

比特幣交易如圖所示,如果想要對公開歷史交易信息增加隱私保護,最簡單的思路就是把所有東西都加密,比如交易發送者、接收者,以及交易金額,這樣就能得到一個隱私的交易。但這里存在一個問題,如果這些數據加密的話,全網其他用戶可能沒法解密數據,這就跟比特幣或者是區塊鏈公開可審計性存在沖突。因此,學者們提出用零知識證明來解決這個問題。

簡單介紹一下零知識證明,有一個證明者和一個驗證者,以及一個要證明的論述。證明者有一個證據W,證明論述X屬于某個語言R。證明者要向驗證者證明論述X過程中,會通過一些交互。交互得最后,證明者要向驗證者發送一個證明,驗證者決定接受或者拒絕該論述。

零知識證明要滿足以下這些性質:

完備性:如果論述正確證明者可以說服論述者;

正確性:如果論述錯誤證明者沒辦法說服論述者;

零知識性:驗證者除了論述是正確的之外,無法獲得任何其他信息。

我們往往很難要求證明者和論述者同時在線,所以實際應用中非交互式零知識證明更有價值。在非交互式零知識證明中:證明者發一個π給驗證者,驗證者可以直接驗證得出結論,無需進行交互。對于NIZK,有一個簡單的結論,如果因式分解是困難的,對于任意的NP語言都存在非交互式的零知識證明。

挪威央行:挪威應該考慮制定國家加密貨幣監管戰略:金色財經報道,挪威中央銀行在周四的一份報告中表示,挪威應該考慮制定國家加密貨幣監管戰略。挪威銀行副行長P?l Longva表示,挪威當局應該評估是否要更快地采取行動,而不是等待國際監管解決方案。挪威銀行可以為此類評估和促進負責任創新的監管做出貢獻。

此外,挪威銀行表示,MiCA 適用于加密市場中的一系列服務提供商,涵蓋市場濫用、消費者保護、市場誠信和金融穩定,但它不包括“去中心化金融的發展,因為監管的主要重點是中心化市場參與者,立法者應該利用現有法規來應對系統性風險和執法行動。[2023/5/26 10:40:52]

有了零知識證明后,我要在區塊鏈上引入隱私就很簡單了。我把所有交易全部加密,加密之后我會增加一個證明,證明這筆交易是合法的,所謂的合法就是滿足區塊鏈交易的規則,我這個用戶確實有這么多錢,而且交易中得錢沒有被雙花。這樣可以解決加密和公開可驗證性的沖突。

通用性零知識證明方案性能通常不高,區塊鏈對交易性能又有很強的要求。實際應用中zkSNARKS被大家喜愛,它有額外性能優勢。

如圖所示為zkSNARKS的流程,參數生成過程中會生成兩個密鑰,一個是證明密鑰PK,一個是驗證密鑰VK,證明拿到PK有一個W,用PK可以產生證據π,把論述和π發給驗證者,驗證者用VK可以直接驗證這筆交易。

關于zkSNARKS在區塊鏈上的應用,我畫了這個圖,有一個具體待驗證的問題,比如要驗證這筆交易是不是合法。該問題可以被等價轉化為QAP問題。然后公鏈項目方可以具體生成公鏈參數,參數其實就是驗證密鑰VK和證明密鑰PK。我對普通用戶要發送一筆交易,首先把交易加密為:C1、C2、C3,同時使用證明密鑰PK證明這筆交易合法,得到一個證明π,把交易和證明π一起發上網絡,全網用戶就可以使用驗證密鑰VK驗證這筆交易得合法性了。這是zkSNARKS在區塊鏈上應用的應用流程。

TON加速器計劃今年將撥款2500萬美元用于推進生態系統建設:5月22日消息,據TON Community官方頻道,TON加速器計劃今年將撥款2500萬美元用于推進生態系統建設,資金將由 TONcoin.Fund 提供,這是一個價值 2.5 億美元的基于 TON 的基金,致力于支持創始人,并將流入各種關鍵項目,特別關注去中心化金融 (DeFi)。 每個項目將獲得 50,000 至 250,000 美元的資金。除了資金外,每項投資還將獲得加速器合作伙伴的合作和指導。

本輪資金支持最初選擇的項目將集中于那些參加了 Hack-a-TONx DoraHacks 的項目,這是與 DoraHacks 合作組織的為期兩個月的虛擬黑客馬拉松。建立在 TON 之上(即支持 TVM 和 TON 智能合約語言)的項目均可提交早期資助申請。[2023/5/22 15:19:18]

目前零知識證明在區塊鏈中得應用全景圖是非常大的,有各種各樣的應用,我們在網上可以看到各種各樣的項目,這是項目總體圖。

上面講了為什么要用零知識證明,接下來講講零知識證明在區塊鏈應用中的安全和隱私問題。很多項目存在安全問題,我會從以下幾個方面做一些總結。

一、實現漏洞

講到安全,首先是實現漏洞,零知識證明在實現方面的漏洞歸納為三方面:

1、內存破壞漏洞:現在很多密碼學項目使用內存安全語言研發的,主要用rust、java、go,內存破壞問題相對比較少。也有比如LibSNARKS這些項目使用c++編寫,但該場景中,內存破壞相關漏洞難以利用,一般只能造成節點崩潰。所以內存破壞問題并不嚴重。

2、邏輯漏洞:主要是電路設計問題和應用層邏輯問題。

3、密碼實現漏洞:零知識證明方案比較新,新的密碼方案實現很可能會出現一些新的問題。

首先是電路設計問題。零知識證明在區塊鏈上電路設計上有一個特點,電路設計通常非常復雜,有大量密碼實現,有很多約束,又要優化性能,需要有高超的技巧。

CZ:ChatGPT總結的加密交易所運營要點比我還好:12月7日消息,幣安首席執行官CZ在社交媒體上發布了ChatGPT總結的如何運營一家好的加密交易所要點,包括:確保平臺安全、提供用戶友好界面、支持廣泛的加密貨幣、提供優質客戶支持和保持監管合規。CZ表示,這些要點比包括他在內的大多數加密交易所創始人總結的更好,雖然幣安正在做其中的大部分工作,但他無法簡明扼要地闡明要點,因此會把ChatGPT的答案打印出來貼在墻上。[2022/12/7 21:27:36]

我們以Zcash為例看屏蔽交易。這里是zcash屏蔽交易的輸入、輸出,還有綁定簽名,要把一個交易的輸入、輸出綁定起來。

這是輸出電路和輸入電路圖,總的來講,這些電路非常復雜,時間問題,這里不細致描述它。如果你看zcash的標準文檔,對屏蔽交易描述有上百頁文檔。

電路常見問題分為3種,一個是電路設計漏洞,Zcash曾經就產生過faerieGold攻擊,攻擊者可選擇相同的RHO,造成接收者無法使用收到的錢。門羅幣之前也產生過類似的問題。

二是電路與非電路實現不一致的問題,區塊鏈項目最終目標是要保證所有節點都要一致,產生不一致問題就會產生很嚴重的風險,比如分叉和雙花的問題。在使用zkSNARKs的時候,我需要把某一個驗證邏輯的C++或者其他高級語言實現,同時我也需要用零知識證明語法實現一次,這兩類實現很可能產生不一致的現象,不過在審計中,沒有發現知名項目中有這樣的問題。這些項目中有非常多的測試代碼解決這個問題,很顯然他們也意識到了這個風險。

三是標準與實現不一致的問題,Zcash標準有一百多頁文檔,標準與實現有很多不一致的地方,這可能帶來額外的安全風險。我們發現在他的標準文檔存在一些安全問題問題,但是在實際審計項目代碼審計的過程中沒有發現這個問題。但這種不一致性提供了額外的安全風險和攻擊面。

黃金多頭Peter Schiff:比特幣將跌破1萬美元大關:8月12日消息,在最近接受Kitco的采訪中,黃金多頭Peter Schiff預測,由于被迫拋售,比特幣的價格仍可能跌破1萬美元。他確信,比特幣在去年11月達到的6.9萬美元就是峰值。“我不認為它會再創新高,”Schiff預測道。談到比特幣最近的反彈,這位投資者聲稱,這只是一個傻瓜的反彈。最大的加密貨幣在主要現貨交易所的交易價格略低于24000美元。Schiff稱,加密貨幣供應會繼續增長。他認為,比特幣和其他2萬種代幣之間沒有什么區別。(金十)[2022/8/12 12:21:04]

其次是應用邏輯問題。應用開發者會調用零知識證明庫來實現ZKP應用,但是開發者通常對底層ZKP缺乏足夠理解,寫代碼時很容易產生安全漏洞。

這里網上開源項目semaphore的一個雙花問題,它的問題是應該本來有一個唯一的值帶入到電路中,但是項目沒有限定Nullifier長度,如果該加一個P或者2P都可以使電路滿足。這樣的花同一個證據可以被使用多次,也就是說同樣貨幣可以被使用多次,從而造成雙花問題。

Tron今年實際上也完成了匿名貨幣的研發。在tron的研發過程中,我以社區貢獻者幫忙審計了一些安全問題。這我在tron開發中過程中發現的與semaphore雙花漏洞類似的問題。Tron使用了Librustzcash庫來對匿名交易進行驗證,但沒有對帶入的參數進行長度和內容上的限制,會產生上述所說的雙花問題。

類似的,tron也出現過沒有驗證一筆交易當中多個輸入的Nullifier是否不同,造成雙花問題。但這些都是開發最初期出現的問題,基本上馬上就得到了修復。

可口可樂已面向中國市場推出元宇宙概念限定產品“律動方塊”:5月26日消息,可口可樂全球創意平臺“樂創無界”(Coca-ColaCreations)在中國市場推出了第二款限定產品--以元宇宙概念為靈感的可口可樂“律動方塊”。其中,“律動方塊”摩登罐產品已于京東開售,并將在6.18 購物節期間登陸天貓、抖音等電商平臺限量發售。

據介紹,為了打造更加豐富的沉浸式體驗,可口可樂同步推出了AR(增強現實)游戲。消費者通過可口可樂“律動方塊”罐身掃碼,即可開啟元宇宙 AR 游戲體驗。

此前4月初,可口可樂在美國及部分拉丁美洲國家推出基于元宇宙題材設計的可樂新款產品“零糖字節”(Coca-Cola Zero Sugar Byte)。(三言財經)[2022/5/26 3:42:34]

在是密碼實現安全問題。新的密碼方案的實現,往往會帶來一些額外的風險,包括現在比較有名的項目,LibSNARK在2015年就發現項目實現中R1CS到QAP的規約漏洞。LibSNARK實現中沒有滿足QAP中多項式線性獨立的要求,這樣就造成soundness可能不滿足,解決項目就是增加冗余,這是一篇相關的論文。

上個月斯坦福大學發現Zcash的Ping攻擊和Reject攻擊漏洞,他們發現一個節點在區塊鏈網絡當中,處理與自身相關的交易時,解密時會產生額外的信息泄露,這樣攻擊者可以發送惡意偽造惡意交易來判斷某一個地址屬于哪一個節點。這樣打破zcash的不可關聯性,相關論文也放在這里。

二、信任風險

zkSNARKS有一個基本思路,為什么能夠實現高性能呢?提前生成驗證者挑戰X,保留加密的X,丟棄明文X,大家可以用加密挑戰驗證整個證明。整個驗證過程就是要滿足上面的等式。如果攻擊者知道X,比如它是項目參數的生成者,它可以繞過所有困難問題直接構造任意證明。這樣的后門不會被別人發現,因為偽造的證明也具有零知識性的,所以有沒有攻擊者利用這個漏洞去創造一些額外的貨幣,沒有人能知道。

解決信任問題的方法,就是使用安全多方計算MPC生成加密X,大家也是這樣做的。這里舉了一個zcash的例子,他們有專門參數生成的步驟,分成兩步,第一步是生成加密的X。這個加密X也可以給其他項目使用。Zcash把所有MPC協議通訊過程全部公開,實現代碼也公開,每個參與人會把自己收到什么消息,發出去的消息全部簽名放到網絡上。這樣得話,只要其中一個參與者誠實,我們就可以認為MPC結果是安全的。

第二步是針對具體電路生成參數,第一步和第二步缺一不可。有一些項目直接拿了poweroftau的參數來使用,但沒有對第二階段的參數生成進行MPC,這樣的項目也是不可信的。

講講我對MPC問題的看法,現在很多的項目,以太坊等等都在進行自己的MPC,生成零知識證明參數。但是也有一些項目,沒有進行可信的setup。我可以講下我參與MPC的經歷,9月初以太坊有聯系到我,說項目方會找一些社區成員參加參數生成的儀式,9月初找到我說把我排到第14個,到時會聯系我,但是到現在十月中完全沒有任何音訊和消息。雖然MPC方案是安全的,但整個過程不像互聯網聊天室一樣,你像加入就可以直接加入。誰是第幾個人,什么時候到你,完全由項目方來控制,如果你沒有自己參與MPC,就不能夠百分之百確定這個MPC是安全的。

舉一個例子,ZoKrates是零知識證明智能合約編譯器,你有一個邏輯想驗證,你可以用他把這個驗證邏輯編譯器為以太坊上零知識驗證合約。但這里有一個問題,整個參數生成過程,由合約生成方來控制。如果合約生成方是惡意的,他其實可以偽造任意證明。

三、非屏蔽交易信息泄露

我用爬蟲統計了9月Zcash的交易數據,85%數據都是透明交易,沒有任何加密,有14%部分屏蔽,半透明,只有1%是完全屏蔽交易,可以說大多數交易都可以追蹤。

另外我也統計了一下zcash當前的一下貨幣池,95%是透明,只有大約5%在屏蔽池。

實際上針對這個問題,很多學者已經在論文中分析了這些匿名貨幣的可連接性和匿名性。大多數的交易都是可以被追溯的。比如我有一個地址A打了一筆錢給屏蔽池,B打了一筆錢給屏蔽池,這兩筆錢總合在一天后從屏蔽池打給了C,我們可以從交易模式判斷出ABC是關聯,錢就是A、B要打給C的。用戶使用相關、相關的地址、相關的金額、相關時間都可以拿來進行匹配分析,前面有論文表明90%以上的交易都可以分析出來。

產生問題的原因是什么?現在的ZKP方案沒有真正解決廣大參用戶的隱私問題。大多數參與者使用的是手機等輕節點參與交易,不可能作為全節點把所有數據同步到本地的計算機當中。一筆屏蔽交易,解密后才能知道這個交易是不是屬于自己,輕節點不可能有所有的數據,它要解密,需要知道一筆交易是不是屬于我,必須要將交易密鑰交給全節點,這樣輕節點隱私得不到很好的保障。并且現在零知識證明方案對輕節點不友好,計算開銷大。總的來說現在的隱私安全性等都為全節點設計,沒有見到很好的輕節點解決方案。

輕節點對于屏蔽交易支持不足。因為政策的原因,交易所交易就是不讓你用屏蔽交易,必須用透明交易。我作為普通用戶想要保護自己的隱私,我有一些經驗方法,就用盡量使用屏蔽交易,每次交易用不同的新地址,交易金額不同,或者等足夠的時間,但是這些不能百分之百保證安全性,你希望有密碼的安全性,最佳方案只使用屏蔽交易。但是現實情況不太滿足,比如對面要收錢,比如你打錢給交易所,就是不支持屏蔽交易。

四、密碼方案風險

零知識證明技術相對較新,16年論文,17年大規模使用,我個人認為這些項目有待時間考驗,很多項目參數選擇和優化都是比較激進,為了證明方案好。有的困難問題并不標準,依賴太多安全問題,或者缺乏足夠多的審計。

這里有一個問題,Zcash的偽造漏洞,CVE-2018-7167,2018年就被發現,但是2019年才被公布。任何人可以偽造證明,憑空創造Zcash這樣的貨幣,這個漏洞其實影響多個Zcash分叉項目。這個漏洞大概花8個月時間才能完成修復,項目方要改變整個證明方案,升級全網。沒有人知道漏洞是否被利用,如果被利用也是零知識的,Zcash官方發表聲明,很少有人擁有高水平發現漏洞,而且沒有發現Zcash總額出現問題。

并不存在可證明安全,參數生成存在冗余元素,可被利用生成偽造證明,原理并不復雜。后來生成Groth16方案。類似的問題并不是第一次出現,2015年微軟研究院研究員發現另外一個漏洞,這些漏洞是不是最后一次,下次影響會不會更大?

我們可以看到Zcash中的有承諾和哈希方案,他的方案非常復雜,僅僅承諾哈希就可能涉及很多方案和很多安全性證明,安全性有待時間考驗。

五、其他風險

最后講講其他方面的風險,我們可以從數學上證明Groth16是完美零知識方案。實際應用上會有額外的信息漏洞,最明顯就是交易里還有密文,密文就不是零知識,完美零知識不等于完美的隱私保護。我的這些數據,我的這些交易都是上鏈,鏈的數據可能10年、20年都在上面,可能20年后困難問題被攻破了,曾經的隱私的就都被發現了。

Zcash屏蔽地址不可連接性也存在這樣的問題,當前地址不可連接不等于未來不可連接。

側信道漏洞通常不被重視,這樣的攻擊利用比較困難,不會直接造成安全問題,但是在隱私相關系統當中是非常重要的。因為側信道可以直接破壞隱私。我去看了Groth16方案,這也是目前用得最多的零知識證明方案。我要計算證明的時候,就是要計算ABC,這里小寫的ai其實就是用戶自己手里的秘密,ABC的計算,直接與用戶的秘密相關,通過簡單的側信道攻擊可以把秘密恢復出來。類似還有Cache測信道攻擊。目前這些零知識方案都沒有對側信道攻擊做保護。

今天簡單分享了ZKP應用的安全風險,零知識證明目前還是新技術,應用中還存在很多問題,當然這些問題會慢慢被解決,越來越成熟。

Tags:CASHCASASHzcashncash幣最新消息casper幣最新消息Electric Cashzcash幣前景

以太坊價格
Libra詳細路線圖首公開:開發人員專注Libra主網上線_LIB

導語:?對于路線圖1,團隊專注于安全性和可靠性,并致力于將其他合作伙伴整合到即將到來的Libra主網中。自6月份正式發布Libra項目以來,開發人員社區的反應一直非常熱烈.

1900/1/1 0:00:00
“朋友圈”擴容提速 銀行系持續深挖區塊鏈潛力_CFT

相比大數據、人工智能、云計算等技術,銀行系對區塊鏈技術一直保持著較為謹慎的態度,“重在實干,很少宣傳”。不過,隨著最近多項銀行系實干成果的展現,區塊鏈技術運用迅速升溫.

1900/1/1 0:00:00
螞蟻區塊鏈云棲大會:2020年用區塊鏈服務1億中國人_科技股

“我預測,到明年這個時候,區塊鏈在中國能夠服務的人群會超過一個億”,螞蟻金服資深總監李杰力說。這一幕發生在9月26日的云棲大會·螞蟻區塊鏈生態峰會上,在這場峰會的圓桌論壇環節,李杰力與金融機構的.

1900/1/1 0:00:00
Vitalik Devon演講:PoS如何讓以太坊網絡更加安全_RIN

以太坊聯合創始人VitalikButerin昨日表示,在未來幾年內,以太坊將開始采用比比特幣更安全的共識機制PoS.

1900/1/1 0:00:00
全球資管巨頭富達提供托管服務,這可能是全球第一只比特幣衍生品基金_ASH

鑒于各大交易所讓加密資產衍生品交易更容易被投資者接受,一家資產管理公司希望嘗試一下基于比特幣期權的基金.

1900/1/1 0:00:00
獲得YC、比特大陸等10多家企業1060萬美元代幣投資,NuCypher如何為Dapp帶來隱私性?_NuCypher

NuCypher是一個區塊鏈網絡,它將數據隱私帶給建立在以太坊和其他公有區塊鏈上的去中心化應用(dApps).

1900/1/1 0:00:00
ads