證明者只知道 E(s),但能夠計算 E(t(s)), E(h(s)), E(w(s)) 和 E(v(s))。
通過乘以另一個秘密值 k 來混淆同態加密值,證明者也能夠其原始信息。
本質上,驗證者是在檢查下面這個形式的等式,t(s)h(s)k = w(s)v(s)k
ZK-SNARKs 如何設置 ?
對于上面提到的如何生成「多項式等式」和隨機設置,有一些人表示懷疑。
關于多項式等式的質疑,我能給出的最短版本是,最初要被證明的等式(比如 A > B 嗎 ? 或者 A + B =C 嗎 ? )被壓縮到一個回路中,即約束條件被用于創建這些多項式。
另外,你是如何選擇隨機數的呢 ?
在 Zcash 的第一個版本中,最初的創始成員使用了一種精心設計的方法,通過他們所謂的「儀式」來制造這種隨機產生的有毒廢物,完整故事請見這個鏈接 http://www.wnycstudios.org/story/ceremony。
「儀式」最終是一個產生隨機結果的多方計算 (MPC)。換句話說,儀式的每個成員 (總共六方) 都產生了各自獨特的隨機密鑰,這些密鑰被組合成一個再次隨機的密鑰。最近,在 Zcash 的最新版本 Sapling 中,他們為 MPC 實施了一種新的方法論――80 多名參與者一起生成了 ZK-SNARKs 的隨機私鑰。在這種新方法中,只需要一方保持忠誠,私鑰就不會被復制――換一種說法,這意味著儀式的所有參與方都必須變節,才能顛覆這個系統。
ZK-STARKs
相比之下,STARKs (簡潔透明知識論證,succinct transparent arguments of knowledge)則因其透明和簡潔密碼學而被稱贊。和 ZK-SNARKs 不同,STARKs 不需要一個可信的設置,因此也不需要 ZK-SNARKs 中出現的有毒廢物那種事情――因此具有透明性。STARKs 能夠通過使用 Arthur-Merlin 協議消除對可信設置的需要。在該協議中,驗證者 Arthur 為每個問題生成隨機性,而證明者 Merlin 則通過解決問題來提供證據。
STARKs 還通過使用最小的密碼假設和在安全和抗沖突的哈希函數之間取得平衡,而使其密碼術更簡潔。這留下了潛在的后量子時代的安全風險。最小密碼假設適用于交互式 STARKs,而非交互式 STARKs 則需要 Fiat-Shamir 啟發式。
Starkware (http://starkware.co/)正在與 0x 合作進行一個非常棒的項目,在去中心化和中心化的通證交易所中使用 ZK-STARKs,他們就此主題發表的文章相當清晰,有興趣的讀者可以了解一下。
STARK 證明和驗證的速度都比 SNARKs 和防彈證明快,只不過這個領域的第一個 STARK 項目和開發工具才剛剛浮現。
防彈證明(Bulletproof)
防彈是另一種形式的零知識系統,它不需要可信設置,但它確實比 SNARKs 和 STARKs 需要更長的證明時間。這些證明方法目前已經在門羅幣中實施――實現速度快得令人咂舌,學術論文發表才 6 個月左右就開始實施。
防彈基于現有的 range proof 方法,可將多個 range proof 合為一個,且其數據比以往方法還要小。
有趣的是,防彈允許證據聚合,這意味著您可以通過多方計算,在同一時間收集和驗證來自不同方的多個證據。在最近發表的文章中,Zether 防彈,被部署于智能合約隱私,而最近,摩根大通在其私有的、許可型的區塊鏈
Quorum中添加了這些功能。
零知識證明系統面臨的挑戰
零知識證明要被廣泛采用,還面臨如下一些主要挑戰:
證據設置時間(開發者工具 / 勞動力準備)
對于每個計算或場景,必須生成一組數學證明來實現編碼。到目前為止,市面上出現了幾種開發工具;不過這仍然需要一種具有挑戰性的專業技能。零知識領域(在很大程度上密碼學也如此)面臨的技能差距與量子計算領域相似,因為在廣泛采用之前,必須培訓更多開發人員了解如何把一項應用組合起來。
證據生成和驗證時間 / 規模要求
零知識要求證明方生成一個證據供驗證方驗證。這兩項活動都需要時間,近年來(實際上是近幾個月)這方面所需的時間已大大縮短,但這仍是大規模采用需要考慮的一個問題。
證據的標準化
本文已經解釋了生成證據的不同方法論,但每個方法都有相似的起點。標準化是必要的,它可以使零知識證明從臨時處理特定問題,發展到處理更大范圍的相關問題和場景。ZK 標準組織正在致力于解決相關問題。
此文由 中國比特幣官網 編輯,未經允許不得轉載?。?a href="http://www.huohuxiazai.com/">首頁 > 比特幣行情 » 一文說透密碼學歷史、工作原理、零知識證明及潛在影響