比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

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

Author:

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

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

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

比特幣的隱私問題

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

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

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

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

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

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

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

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

香港數字資產交易所HKD.com獲西班牙虛擬資產服務提供商牌照:5月22日消息,香港數字資產交易所HKD.com獲西班牙監管機構頒發的虛擬資產服務提供商牌照。該牌照將允許HKD.com從事加密資產之間以及加密資產與法幣之間的交易,并可以提供加密資產托管服務。

據悉,HKD.com成立于2019年,已獲得香港信托或公司服務提供者牌照(TCSP)、美國金融犯罪執法局(FinCEN)頒發的貨幣服務業務注冊許可(MSB)等。[2023/5/22 15:18:58]

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

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

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

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

趙長鵬:區塊鏈沒有國界,不應用“離岸”和“在岸”的思維討論問題:2月20日消息,幣安創始人趙長鵬發推文稱:“‘離岸’一詞顯得過于狹隘、以自我為中心,放眼大局,無助于我們行業的發展,從‘在岸’的角度來看,所討論的問題,FTX.US是一個‘在岸’交易所(角度是從美國出發)。SBF和FTX的主要執行官是美國人。他們花費了大量的時間和精力在美國進行游說。這并沒有阻止欺詐行為的發生。區分‘在岸’和其他人是以自我為中心的,有點自大。

每個人都從自己的角度‘在岸’。‘我們比其他人都好’并不是建設更好行業的靈丹妙藥。到處都有好人和壞人。擁抱多樣性和開放性將帶來更好的結果。任何過度概括(尤其是針對他人)都會適得其反,而且是消極的。區塊鏈沒有國界。”[2023/2/20 12:17:19]

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

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

一、實現漏洞

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

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

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

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

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

IOG和愛丁堡大學合作開發去中心化指數:金色財經報道,Input Output Global (IOG) 是與英國愛丁堡大學合作,開發區塊鏈行業的第一個'去中心化指數'。EDI將是一個實時跟蹤器,以持續計算和審查的方法為基礎,計算由愛丁堡大學的一個團隊進行。[2022/11/18 13:22:36]

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

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

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

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

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

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

Dora Grant DAO開放公共物品資助申請:10月10日消息,Dora Grant DAO第一輪資助將于10月26日開始投票,vcDORA社區將通過DoraHacks.io進行零知識投票(MACI),并決定社區資助結果。

與此同時,Dora Grant DAO公共物品Grant向整個社區開放,在長時間內沒有盈利和Token發行計劃的Web3及前沿科技類公共物品可以通過Public Good Grant獲得多輪資助。[2022/10/10 10:30:00]

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

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

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

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

富達:比特幣是其計劃在401(k)產品中提供的唯一加密貨幣:金色財經報道,Bitcoin Magazine在社交媒體上稱,銀行巨頭富達表示,比特幣是其計劃在401(k)產品中提供的唯一加密貨幣。[2022/7/31 2:48:51]

上個月斯坦福大學發現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:CASASHzcashCASHxcash幣今日行情ASHITzcash幣上交易所時間bhpcash

比特幣價格
ANC:重磅!扎克伯格將在10月23日出席美國國會聽證會,為Libra進行作證_PEACE幣

美國東部時間周三,美國眾議院金融服務委員會(HouseFinancialServicesCommittee)宣布.

1900/1/1 0:00:00
SEC:美國SEC拒絕了創建比特幣ETF的最新提議_Secured MoonRat Token

騰訊證券10月10日訊,美國證券交易委員會(SecuritiesandExchangeCommission,簡稱sec)再次拒絕了創建比特幣支持ETF的提議.

1900/1/1 0:00:00
區塊鏈:觀察 | 打造“區塊鏈+數字城市”中國樣本:“鏈城”婁底是怎樣煉成的_數字貨幣詐騙平臺案告破

當眾多一二線城市探索區塊鏈發展仍在“投石問路”時,一個中部地區的四線城市卻在異軍突起。9月20日,湖南省婁底市政府與杭州趣鏈科技有限公司舉行合作簽約儀式.

1900/1/1 0:00:00
以太坊:觀點 | 從智能合約到永不停歇的代碼,以太坊該如何走向合規之路?_ERG

日本大阪,以太坊基金會研究員VladZamfir在此前的Devcon5大會上給出了一個明確警示:開發者需要開始考慮以太坊的合規性問題了,而不是寄希望于等以太坊壯大之后政府不得不接受它.

1900/1/1 0:00:00
USD:QKL123行情分析 | 美聯儲降息預期加強;英國硬脫歐不確定較大(1017)_比特幣實時行情價格

摘要:今日大盤繼續回落,山寨幣跌幅較大,短時有所企穩。美聯儲十月降息與否,和英國是否順利脫歐,都會對市場產生一定的影響,近日值得關注.

1900/1/1 0:00:00
區塊鏈:有喜有憂,四大會計師事務所的區塊鏈戰局_CHA

作者:陳以 來源:財經網鏈上財經 10月16日,安永會計師事務所宣布正式推出EYOpsChain公共財務經理.

1900/1/1 0:00:00
ads