零知識證明(Zero-Knowledge Proof,ZKP)是一種密碼學技術,最早由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初的一篇名爲《The Knowledge Complexity Of Interactive Proof Systems》的論文中提出。在該文中,它是作爲一個理論模型被構想出來,解決的是在不透露證據的情況下如何驗證數學陳述的問題。這一概念在學術界引起了廣泛關註,因爲它挑戰了傳統加密技術的界限,併爲處理敏感信息提供了全新的方法。
隨著時間的推移,ZKP從一個抽象的理論構想逐步演變成具體的協議,它們能夠被集成進各種應用中。在2010年,Groth髮錶了一篇名爲《Short Pairing-based Non-interactive Zero-Knowledge Arguments》的論文,這篇論文成爲了ZKP中重要的解決方案 zk-SNARK的理論先驅文章。零知識證明在應用上最重要的進展就是 2015 年 Z-cash 使用的零知識證明繫統,實現了對交易及金額隱私的保護,後來髮展到 zk-SNARK 和智能合約相結合,zk-SNARK 進入了更爲廣泛的應用場景。
傳統的ZKP需要的遵守的原則有三點:
ZKP的原理得以通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。
而zk-SNARK則是在此基礎進一步升級,其具有以下特點:
在Groth的論文中, 他提出基於配對的非交互式零知識論證方法將一個計算問題轉化爲一個二次算術程序(QAP),然後利用橢圓曲線密碼學和哈希函數構造一個有效的證明。後來的zk-SNARK一般在設計時分爲四個步驟:
舉個簡單的例子幫助理解:假設你有一張藏寶圖,它能指引你到一個埋藏寶藏的確切位置。你想證明給某人看你知道寶藏的位置,但你不想揭露寶藏圖的內容或寶藏的實際位置。如果你使用zk-SNARK技術的話,你還需要製作一份藏寶圖的覆雜拼圖。你選擇了一小塊關鍵拼圖(一個證明),併展示給對方看,足以讓他們確信你知道完整的拼圖如何組合,即寶藏的位置,而無需看到整個拼圖。但是,爲了做到這一點,你需要從一個可信的印刷廠穫取一些特殊的標記,這些標記用來證明你的拼圖片段是真實的。
傳統方案零知識證明採用的是交互式證明方法,即示證者(宣稱某一命題爲真)和驗證者(確認該命題確實爲真)之間反覆確認,你可以理解爲示證者不斷曏驗證者詢問“是或不是?”,然後驗證者不斷給出回答,直到最後碰出一個正確答案來,所以效率很低。而zk-SNARK通過可信第三方穫得了CRS,就不用反覆確認,所有的示證者都可以直接對比CRS來産看真假。這樣能大大節省ZKP的效率。
衕時zk-SNARK還具有以下優勢:
zk-SNARK的第一個應用是Zcash,允許用戶進行完全匿名的交易,因爲其通過zk-SNARK隱藏了髮送者、接受者和金額等信息。目前的Web3領域,zk-SNARK技術還在區塊鏈擴容和交易所儲備金陣容等方麵髮揮著重大作用。
區塊鏈擴容
區塊鏈擴容(Layer2):由於區塊鏈的共識機製和安全性要求,其吞吐量和效率受到了很大的限製。爲了解決這個問題,一種常見的方案是使用 Layer2 技術,在區塊鏈之上構建一個額外的層次,將大量的交易或計算從主鏈(Layer1)遷移到 Layer2 上進行,從而提高繫統的性能和可用性。
zk-SNARK可以在這個方案中髮揮重要的作用,它可以將 Layer2 上的交易或計算壓縮爲一個小而快的證明,然後提交到主鏈上進行驗證,從而保證 Layer2 的正確性和一緻性。目前有兩種主流的基於 zk-SNARK 的 Layer2 方案,一種是 ZK-rollup,另一種是 Validium。
交易所儲備金
由於加密貨幣市場的波動性和不確定性,很多交易所需要持有一定量的儲備金來應對潛在的風險或需求。但是,這些儲備金往往缺乏透明度和可信度,用戶無法知道交易所是否真的擁有足夠的儲備金來保障他們的資産安全。
zk-SNARK可以在這個方麵提供一個解決方案,它可以讓交易所曏用戶或監管機構證明他們擁有足夠數量和價值的儲備金,而不需要透露具體的資産細節或位置。
一個典型的例子就是Gate.io交易所採用了zk-SNARK+默剋爾樹的方法將用戶數據加密後通過被約束的電路來生成100種代幣的儲備金證明來證明自己擁有100%的償付能力。
來源:https://www.gate.io/proof-of-reserves
擴展閲讀:《zk-SNARK如何改進Gate.io的儲備金證明》
除了在Web3領域的應用,zk-SNARK也可以用於非區塊鏈領域,比如
在上文中,我們介紹了zk-SNARK的技術原理,其中説到了zk-SNARK通過尋找可信第三方生成CRS來提高證明效率,這也導緻了zk-SNARK一些原生的缺陷和挑戰。
綜合來看,目前有多種解決方法來解決zk-SNARK的原生缺陷。
zk-SNARK作爲一種前沿的密碼學技術,有著廣闊的未來應用場景,尤其是在隱私應用領域:
zk-SNARK技術代錶了隱私保護和加密驗證領域的一個重要突破,不僅因其在提供強大隱私保障方麵的潛力,而且因爲它在擴展區塊鏈可用性和其他多種應用中的實用性。盡管存在技術挑戰和局限性,但通過不斷的研究創新,我們期待zk-SNARK將繼續進化,不僅僅優化現有繫統,更能激髮新的應用模式,推動隱私保護和加密技術曏前髮展。隨著技術的成熟和社會對數據隱私重視程度的提高,zk-SNARK有潛力成爲數字時代不可或缺的工具,賦予用戶更多控製自己信息的能力,衕時促進安全、透明的數字交互。
Поділіться
零知識證明(Zero-Knowledge Proof,ZKP)是一種密碼學技術,最早由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初的一篇名爲《The Knowledge Complexity Of Interactive Proof Systems》的論文中提出。在該文中,它是作爲一個理論模型被構想出來,解決的是在不透露證據的情況下如何驗證數學陳述的問題。這一概念在學術界引起了廣泛關註,因爲它挑戰了傳統加密技術的界限,併爲處理敏感信息提供了全新的方法。
隨著時間的推移,ZKP從一個抽象的理論構想逐步演變成具體的協議,它們能夠被集成進各種應用中。在2010年,Groth髮錶了一篇名爲《Short Pairing-based Non-interactive Zero-Knowledge Arguments》的論文,這篇論文成爲了ZKP中重要的解決方案 zk-SNARK的理論先驅文章。零知識證明在應用上最重要的進展就是 2015 年 Z-cash 使用的零知識證明繫統,實現了對交易及金額隱私的保護,後來髮展到 zk-SNARK 和智能合約相結合,zk-SNARK 進入了更爲廣泛的應用場景。
傳統的ZKP需要的遵守的原則有三點:
ZKP的原理得以通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。
而zk-SNARK則是在此基礎進一步升級,其具有以下特點:
在Groth的論文中, 他提出基於配對的非交互式零知識論證方法將一個計算問題轉化爲一個二次算術程序(QAP),然後利用橢圓曲線密碼學和哈希函數構造一個有效的證明。後來的zk-SNARK一般在設計時分爲四個步驟:
舉個簡單的例子幫助理解:假設你有一張藏寶圖,它能指引你到一個埋藏寶藏的確切位置。你想證明給某人看你知道寶藏的位置,但你不想揭露寶藏圖的內容或寶藏的實際位置。如果你使用zk-SNARK技術的話,你還需要製作一份藏寶圖的覆雜拼圖。你選擇了一小塊關鍵拼圖(一個證明),併展示給對方看,足以讓他們確信你知道完整的拼圖如何組合,即寶藏的位置,而無需看到整個拼圖。但是,爲了做到這一點,你需要從一個可信的印刷廠穫取一些特殊的標記,這些標記用來證明你的拼圖片段是真實的。
傳統方案零知識證明採用的是交互式證明方法,即示證者(宣稱某一命題爲真)和驗證者(確認該命題確實爲真)之間反覆確認,你可以理解爲示證者不斷曏驗證者詢問“是或不是?”,然後驗證者不斷給出回答,直到最後碰出一個正確答案來,所以效率很低。而zk-SNARK通過可信第三方穫得了CRS,就不用反覆確認,所有的示證者都可以直接對比CRS來産看真假。這樣能大大節省ZKP的效率。
衕時zk-SNARK還具有以下優勢:
zk-SNARK的第一個應用是Zcash,允許用戶進行完全匿名的交易,因爲其通過zk-SNARK隱藏了髮送者、接受者和金額等信息。目前的Web3領域,zk-SNARK技術還在區塊鏈擴容和交易所儲備金陣容等方麵髮揮著重大作用。
區塊鏈擴容
區塊鏈擴容(Layer2):由於區塊鏈的共識機製和安全性要求,其吞吐量和效率受到了很大的限製。爲了解決這個問題,一種常見的方案是使用 Layer2 技術,在區塊鏈之上構建一個額外的層次,將大量的交易或計算從主鏈(Layer1)遷移到 Layer2 上進行,從而提高繫統的性能和可用性。
zk-SNARK可以在這個方案中髮揮重要的作用,它可以將 Layer2 上的交易或計算壓縮爲一個小而快的證明,然後提交到主鏈上進行驗證,從而保證 Layer2 的正確性和一緻性。目前有兩種主流的基於 zk-SNARK 的 Layer2 方案,一種是 ZK-rollup,另一種是 Validium。
交易所儲備金
由於加密貨幣市場的波動性和不確定性,很多交易所需要持有一定量的儲備金來應對潛在的風險或需求。但是,這些儲備金往往缺乏透明度和可信度,用戶無法知道交易所是否真的擁有足夠的儲備金來保障他們的資産安全。
zk-SNARK可以在這個方麵提供一個解決方案,它可以讓交易所曏用戶或監管機構證明他們擁有足夠數量和價值的儲備金,而不需要透露具體的資産細節或位置。
一個典型的例子就是Gate.io交易所採用了zk-SNARK+默剋爾樹的方法將用戶數據加密後通過被約束的電路來生成100種代幣的儲備金證明來證明自己擁有100%的償付能力。
來源:https://www.gate.io/proof-of-reserves
擴展閲讀:《zk-SNARK如何改進Gate.io的儲備金證明》
除了在Web3領域的應用,zk-SNARK也可以用於非區塊鏈領域,比如
在上文中,我們介紹了zk-SNARK的技術原理,其中説到了zk-SNARK通過尋找可信第三方生成CRS來提高證明效率,這也導緻了zk-SNARK一些原生的缺陷和挑戰。
綜合來看,目前有多種解決方法來解決zk-SNARK的原生缺陷。
zk-SNARK作爲一種前沿的密碼學技術,有著廣闊的未來應用場景,尤其是在隱私應用領域:
zk-SNARK技術代錶了隱私保護和加密驗證領域的一個重要突破,不僅因其在提供強大隱私保障方麵的潛力,而且因爲它在擴展區塊鏈可用性和其他多種應用中的實用性。盡管存在技術挑戰和局限性,但通過不斷的研究創新,我們期待zk-SNARK將繼續進化,不僅僅優化現有繫統,更能激髮新的應用模式,推動隱私保護和加密技術曏前髮展。隨著技術的成熟和社會對數據隱私重視程度的提高,zk-SNARK有潛力成爲數字時代不可或缺的工具,賦予用戶更多控製自己信息的能力,衕時促進安全、透明的數字交互。