五分鐘技術趣談 | 淺談零知識證明及應用
Part 01
什么是零知識證明
零知識證明,指的是證明者能夠在不向驗證者提供任何超出陳述本身有效性的信息,使驗證者相信某個論斷是正確的,它實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需采取的一系列步驟。
證明者向驗證者證明并使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關于被證明消息的信息。例如,給定一個隨機數的哈希值,證明者可以使驗證者相信確實存在具有該哈希值的數字,但不能透露它是什么。
Part 02
技術原理
零知識證明的技術原理包括零知識證明在密碼學上需要滿足的基本屬性,以及以經典的Schnorr協議為例說明交互式零知識證明協議到非交互零知識證明協議的轉化。
2.1 基本屬性
零知識證明涉及的密碼學與數學理論較多,包括計算/統計不可區分性(Computationally/Statistically Indistinguishiable)、模擬器(Simulator)、隨機預言機(Random Oracle)模型等計算復雜性理論內容,用較為通俗的語言描述即為:
(1)完備性(Completeness):只要證明者P擁有相應正確知識,就能夠通過驗證者V的驗證,即P有足夠大的概率使V確信。
(2)可靠性(Soundness):如果證明者P沒有相應正確知識,則無法通過驗證者V的驗證,即P成功欺騙V的概率可忽略。
(3)零知識性(Zero-Knowledge):證明者P在交互的過程中僅向驗證者V揭露其是否擁有相應正確知識,而不會泄露任何關于知識的額外信息。
2.2 交互式零知識證明
零知識證明起源于交互式證明協議,本文以Schnorr協議為例分析交互式零知識證明的原理和特點。Schnorr協議是一種身份認證協議,也是如今許多PKI數字簽名方案。
PKI是Public Key Infrastructure的首字母縮寫,直譯為公鑰基礎設施;PKI是一種遵循標準的利用公鑰加密技術為電子商務的開展提供一套安全基礎平臺的技術和規范。
在Schnorr協議中,證明者A通過和驗證者B進行三次交互的方式證明了其擁有公鑰pk對應的私鑰sk,而驗證者B無法在整個過程中獲取私鑰sk的信息。
圖片
2.3 非交互式零知識證明
交互式零知識證明協議依賴于驗證者的隨機嘗試,需要證明者和驗證者進行多次交互才能完成。非交互式零知識證明(Non-Interactive Zero-Knowledge, NIZK)將交互次數減少到一次,可實現離線證明和公開驗證。例如,在區塊鏈等零知識證明應用場景中,通常需要將證明進行直接發布,而非依賴于交互實現,且需要支持多方的公開離線驗證。
Part 03
理論發展
零知識證明體系最早來源于 Goldwasser、Micali 和 Rackoff 于1985年合作提出并發表的論文《The Knowledge Complexity of Interactive Proof Systems》,這篇論文闡釋了在一個交互系統中,經過 K 輪交互,需要多少知識被交換,從而證明一個證言是正確的,如果需要交換的知識為零,則稱之為零知識證明。
早期的零知識證明技術在可用性和效率方面都有所欠缺,一直停留在理論層面,直到2015 年 Zcash 使用零知識證明系統,實現了對交易及金額隱私的保護,推動零知識證明技術快速發展。
目前零知識證明技術主流的算法有3種:
(1)zk-SNARK(Zero-Knowledge Succinct Non-interactive Arguments of Knowledge,零知識簡明非交互式知識論證)是一類應用廣泛的通用零知識證明方案,通過將任意的計算過程轉化為若干門電路的形式,并利用多項式的一系列數學性質將門電路轉化為多項式,進而生成非交互式的證明,可實現各類復雜的業務場景的應用。目前,zk-SNARK已在數字貨幣、區塊鏈金融等區塊鏈領域實際落地,是目前最為成熟的通用零知識證明方案之一。
zk-SNARK的啟動需要可信設置,可信設置是指在受信任的設置中,多方各自生成一個部分密鑰來啟動網絡,然后銷毀該密鑰。如果用于創建信任設置的密鑰的保密信息沒有被銷毀,那么這些保密信息可能會被利用通過虛假驗證來偽造交易。
(2)zk-STARK (Zero-Knowledge Succinct Transparent Arguments of Knowledge,代表零知識簡潔透明的知識論證),zk-STARK是zk-SNARK算法的一種技術演變,解決了SNARK依賴可信設置的弱點,可以不依賴任何信任設置來完成區塊鏈驗證,從而降低啟動網絡的復雜性并消除任何串通風險。
(3)Bulletproofs(Short Non-interactive Zero-knowledge Proofs,簡短的非交互式零知識證明協議),Bulletproofs兼顧了SNARKs和 STARKs的優點,無需可信設置即可運行,并且可以將加密證明的大小從超過 10kB 縮小到不到 1kB,壓縮比率達到80%以上,同時降低80%的交易費用,因相對較低的交易費用、算法體積和無需信任在領域內受到極大關注。
經試驗對比,三類算法的性能如下:
圖片
Part 04
實踐應用
零知識證明能夠保障數據的安全性,能夠解決很多隱私問題,而且證明過程計算量小、雙方交換的信息量大大減少,具備安全和高效的優點。零知識證明最初經常被應用于身份驗證,數字簽名,認證協議等,區塊鏈的出現給零知識證明的應用提供了更多新的方向。
4.1 擴容
區塊鏈由于自身的性能問題導致其難以滿足當下需求,基于零知識的擴容方案將有望解決區塊鏈性能瓶頸。擴容是指在不犧牲去中心化和安全性的前提下提高交易速度和交易吞吐量。ZK-Rollups是基于零知識證明的Layer2擴容方案,通過將計算轉移到鏈下來提高區塊鏈的吞吐量,即將大量交易打包到一個Rollup 區塊內,并在鏈下為該區塊生成一個有效性證明,Layer 1 上的智能合約只需驗證該證明即可直接應用新的狀態,可以實現更低的 Gas 和更高的鏈上安全性。
4.2 隱私保護
在區塊鏈背景下,零知識證明可以用于驗證交易的有效性而不會泄露交易中的發送者、接受者、涉及金額及其他敏感數據。因此零知識證明在保護鏈上數據隱私方面發揮著巨大作用,典型應用包括隱私L2、隱私公鏈、隱私幣和隱私KYC。
4.2.1 隱私L2
Aztec Network是以太坊上第一個Layer2隱私區塊鏈項目,旨在為中心化應用程序提供隱私和擴展能力。
Aztec采用類似比特幣賬戶原理的UTXO模型。在該模型中,票據note是協議運算的基礎單元,資產交易時,票據的值被加密,票據所有權變更,票據登記所將會記錄每個票據的狀態,用戶的AZTEC資產即票據登記所里所有被該用戶地址所擁有的有效票據之和。與以太坊的賬戶模型不同,基于UTXO模型的資產交易可以看作是note的所有權變更,而不是交易雙方賬戶的余額狀態更新,且只有進行交易的雙方才知道所有權已經變更。
4.2.2 隱私公鏈
Aleo是第一個提供完全隱私保護應用程序的平臺,是基于零知識證明隱私保護的公鏈。Aleo的核心是ZEXE,即去中心化隱私計算DPC(decentralized private computation),將計算和共識分開,提供zkCloud在鏈下執行交易,執行交易結束后將證明提交到鏈上。由于只有證明被提交到鏈上,從技術上來講任何人都不可能看到或利用任何交易細節的知識,從而實現交易隱私。
Partisia Blockchain是一條半許可隱私公鏈,專為信任、透明、隱私和高速而構建,用于公共和私人信息的通用協調。Partisia在區塊鏈上提供額外的數據保護層,用戶可以通過零知識計算(ZK Computations )控制對其數據的訪問。零知識計算即融合零知識證明、安全多方計算、全同態加密等技術,為區塊鏈增加隱私和保密性。
4.2.3 隱私幣
Zcash被戲稱為隱私幣鼻祖,保密交易的隱私依賴于標準密碼學中的哈希函數和流密碼,在鏈上將交易記錄中的發送人、接收人、交易量進行加密,用戶可裁量選擇是否向其他人提供查看密鑰(擁有此密鑰的人才能看到交易的內容),在鏈下使用zk-SNARKs 對交易的有效性進行驗證。
4.2.4 隱私KYC
KYC 是Know Your Customer的簡稱,可以理解為實名認證。zkPass是基于安全多方計算和零知識證明的去中心化KYC 解決方案,允許用戶通過Web2 身份憑據向第三方匿名證明他們的身份聲明。如Ufile Chain誠信檔案聯盟鏈平臺,一個專注于個人信息的認證、儲存、流通、確權和隱私保護的聯盟區塊鏈平臺,以高校、企業、政府部門等這些權威機構為核心節點的聯盟鏈體系,Ufile Chain運用零知識證明技術來保證個人信息的隱私安全。數據使用者只能獲取到與其業務相關的有限信息,確保數據使用者難以獲取完整有效的明文用戶信息,包括UfileChain官方在內,都無法獲取有效的用戶個人信息。
4.3 上層應用
基于上述基礎設施,零知識證明技術在游戲、去中心化金融DeFi、NFT(非同質化代幣)、數字身份、數字錢包等方向的上層應用中也展現了其擴容和隱私保護的能力,部分應用如下表所示:
圖片
Part 05
總結
零知識證明技術在理論研究和工程實現層面都取得了較好的發展,零知識證明技術已然成為區塊鏈領域一項重要的底層技術,尤其是為以太坊等底層鏈正面臨的擴容和隱私保護相關問題提供了解決方案。隨著區塊鏈等新興技術的發展以及隱私計算需求的興起,零知識證明技術在安全多方計算、金融領域、共性連金融領域等場景中都有著一定的應用潛力。