国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

簡(jiǎn)潔非交互零知識(shí)證明綜述*

2022-07-13 00:47李威翰張宗洋周子博
密碼學(xué)報(bào) 2022年3期
關(guān)鍵詞:參與方復(fù)雜度證明

李威翰, 張宗洋, 周子博, 鄧 燚

1. 北京航空航天大學(xué)網(wǎng)絡(luò)空間安全學(xué)院, 北京 100191

2. 中國(guó)科學(xué)院信息工程研究所信息安全國(guó)家重點(diǎn)實(shí)驗(yàn)室, 北京 100093

1 引言

零知識(shí)證明由Goldwasser、Micali 和Rackoff[1]提出, 它是運(yùn)行在證明者和驗(yàn)證者之間的一種兩方密碼協(xié)議, 可用于進(jìn)行成員歸屬命題證明或知識(shí)證明. 零知識(shí)證明具有如下三個(gè)性質(zhì):

(1) 完備性, 用于描述協(xié)議本身的正確性. 給定某個(gè)陳述的有效證據(jù), 如果證明者和驗(yàn)證者均誠(chéng)實(shí)運(yùn)行協(xié)議, 那么證明者能使驗(yàn)證者相信該陳述的正確性.

(2) 可靠性. 可靠性用于保護(hù)誠(chéng)實(shí)驗(yàn)證者的利益, 使其免于惡意證明者的欺騙.

(3) 零知識(shí)性. 零知識(shí)性是指證明者能向驗(yàn)證者證明某個(gè)陳述的正確性而不泄露除正確性以外的其他任何信息.

零知識(shí)證明的三個(gè)性質(zhì)使其具備了信任建立和隱私保護(hù)的功能, 具有良好的應(yīng)用前景. 它不僅可以用于公鑰加密[2]、簽名[3]、身份認(rèn)證[4]等經(jīng)典密碼學(xué)領(lǐng)域, 也與區(qū)塊鏈[5]、隱私計(jì)算[6]等新興熱門技術(shù)的信任與隱私需求高度契合. 例如, 在區(qū)塊鏈匿名密碼貨幣(如Zcash1https://z.cash/.) 中, 零知識(shí)證明可在不泄露用戶地址及金額的同時(shí)證明某筆未支付資金的擁有權(quán)[7]; 在區(qū)塊鏈擴(kuò)容(系列zk rollup 方案, 如zkSync2https://zksync.io/.) 中,鏈上的復(fù)雜計(jì)算需要轉(zhuǎn)移到鏈下, 而零知識(shí)證明可保障該過(guò)程的數(shù)據(jù)有效性; 在匿名密碼認(rèn)證[8–10]中, 零知識(shí)證明可在不泄露用戶私鑰的同時(shí)證明擁有私鑰, 從而實(shí)現(xiàn)匿名身份認(rèn)證.

雖然針對(duì)通用NP 語(yǔ)言均可構(gòu)造零知識(shí)證明[11], 但其落地應(yīng)用仍存在若干問(wèn)題. 僅以區(qū)塊鏈為例,由于區(qū)塊鏈往往具有低存儲(chǔ)的需求且建立網(wǎng)絡(luò)實(shí)時(shí)通信的開(kāi)銷較高, 適配于區(qū)塊鏈的零知識(shí)證明通常需要具有簡(jiǎn)潔性和非交互的特點(diǎn), 其中簡(jiǎn)潔性指證明的通信復(fù)雜度與陳述規(guī)模成亞線性關(guān)系, 非交互指證明者只需向驗(yàn)證者發(fā)送1 輪消息即可完成證明. 對(duì)于后者, 非交互可分別通過(guò)公共參考串模型(common reference string model, CRS)[12]和隨機(jī)諭言模型(random oracle model, ROM)[13,14]實(shí)現(xiàn). 然而對(duì)于簡(jiǎn)潔性, 盡管在1992 年Kilian[15]基于概率可驗(yàn)證證明(probabilistic checkable proof, PCP)[16,17]構(gòu)造了簡(jiǎn)潔的交互式零知識(shí)證明, 而且Micali[18]基于ROM 將上述交互式證明轉(zhuǎn)化為非交互證明, 但僅限于理論研究并難以實(shí)現(xiàn).

直至基于二次算術(shù)程序(quadratic arithmetic program, QAP)/線性PCP (Linear-PCP) 的系列證明出現(xiàn)后, 零知識(shí)證明才得以落地實(shí)現(xiàn). 該類零知識(shí)證明由Gennaro 等人[19]首次提出, 其中QAP 用于實(shí)現(xiàn)對(duì)待證明陳述的高效歸約, Linear-PCP 用于構(gòu)造高效信息論安全證明(即對(duì)于無(wú)窮算力的惡意敵手仍具有可靠性的證明). 該類零知識(shí)證明的通信復(fù)雜度為常數(shù)個(gè)群元素, 且驗(yàn)證復(fù)雜度僅與陳述的公共輸入輸出規(guī)模成線性關(guān)系. 除了理論上的研究和優(yōu)化之外, 該類零知識(shí)證明在實(shí)際隱私保護(hù)應(yīng)用中也大放異彩, 例如基于Pinocchio[20]的密碼貨幣Pinocchio coin[21], 基于Ben-Sasson 等人協(xié)議[22]的密碼貨幣Zcash, 基于Plonk[23]用于解決以太坊擴(kuò)容問(wèn)題的系列zk rollup 方案等.

然而, 即使是最高效的基于QAP/Linear-PCP 的簡(jiǎn)潔非交互零知識(shí)證明也存在若干問(wèn)題. 在性能層面, 對(duì)于每個(gè)待證明陳述都需進(jìn)行較長(zhǎng)時(shí)間的預(yù)處理, 同時(shí)協(xié)議的實(shí)際證明開(kāi)銷較大. 在安全性方面, 協(xié)議所基于的難題假設(shè)是不可證偽(non-falsifiable) 假設(shè)[24,25], 假設(shè)本身的安全性難以完全保障; 并且為實(shí)現(xiàn)非交互和保障可靠性, 協(xié)議需要可信初始化(trusted setup), 即安全生成的CRS, 而這在去中心化的區(qū)塊鏈中難以實(shí)現(xiàn).

近年來(lái)的研究致力于從不同角度解決上述問(wèn)題. 為解決證明生成效率不高的問(wèn)題, 出現(xiàn)了實(shí)際證明速率較快的基于DEIP 的零知識(shí)證明[26–29]; 為解決底層假設(shè)通用性不足的問(wèn)題, 出現(xiàn)了基于離散對(duì)數(shù)假設(shè)的零知識(shí)證明[30–32]和僅需單向函數(shù)存在的基于MPC-in-the-Head 的零知識(shí)證明[33–36]; 為解決初始化階段可信需求高的問(wèn)題, 出現(xiàn)了以削弱CRS 模型下的可信初始化設(shè)置為目標(biāo)的抗顛覆的零知識(shí)證明[37–39]和CRS 可更新的零知識(shí)證明[23,40–42], 也出現(xiàn)了一系列不需預(yù)處理和可信初始化, 即啟動(dòng)階段系統(tǒng)參數(shù)可獨(dú)立公開(kāi)生成的零知識(shí)證明(如STARK[43]、Bulletproofs[31]、Spartan[27]、Ligero[35]等).

簡(jiǎn)潔非交互零知識(shí)證明雖然在多個(gè)領(lǐng)域具有熱門和廣泛的應(yīng)用前景, 但一方面零知識(shí)證明種類繁多,各類協(xié)議基于的原理駁雜, 性能側(cè)重點(diǎn)也各不相同, 目前在一定程度上存在技術(shù)壁壘; 另一方面國(guó)內(nèi)外針對(duì)簡(jiǎn)潔非交互零知識(shí)證明的相關(guān)綜述較少, 缺乏系統(tǒng)的總結(jié)梳理(見(jiàn)第1.2 節(jié)), 因此有必要從通用構(gòu)造方法、底層關(guān)鍵技術(shù)、協(xié)議性能表現(xiàn)、典型協(xié)議分析等角度, 對(duì)目前的簡(jiǎn)潔非交互零知識(shí)證明進(jìn)行介紹, 為該領(lǐng)域的理論研究和應(yīng)用實(shí)現(xiàn)提供一定參考.

1.1 本文貢獻(xiàn)

本文詳細(xì)梳理了現(xiàn)有的簡(jiǎn)潔非交互零知識(shí)證明, 主要貢獻(xiàn)如下.

(1) 總結(jié)了簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法(見(jiàn)圖1). 構(gòu)造方法分為四步, 分別是將待證明陳述轉(zhuǎn)換為電路可滿足問(wèn)題(C-SAT 問(wèn)題)、將電路可滿足問(wèn)題轉(zhuǎn)換為易證明的語(yǔ)言(此步可省略,用虛線表示)、針對(duì)易證明的語(yǔ)言構(gòu)造信息論安全證明和利用密碼編譯器將信息論安全證明轉(zhuǎn)換為簡(jiǎn)潔非交互零知識(shí)證明.

圖1 簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法Figure 1 General method to construct succinct non-interactive zero-knowledge proof

(2) 基于上述通用構(gòu)造方法, 分類研究了現(xiàn)有的簡(jiǎn)潔非交互零知識(shí)證明. 根據(jù)信息論安全證明的種類,主要分為基于PCP、Linear-PCP、交互式PCP(interacitve PCP, IPCP) 和交互式諭示證明(interactive oracle proof, IOP) 的零知識(shí)證明; 根據(jù)密碼編譯器應(yīng)用的底層關(guān)鍵技術(shù), 主要分為基于QAP、雙向高效的交互式證明(doubly efficient interactive proof, DEIP)、內(nèi)積論證(inner product argument, IPA) 和MPC-in-the-Head 的零知識(shí)證明. 表1 分別從信息論安全證明和密碼編譯器應(yīng)用的底層關(guān)鍵技術(shù)兩個(gè)角度, 總結(jié)了零知識(shí)證明, 涵蓋了待證明陳述表示形式、協(xié)議性能、啟動(dòng)階段參數(shù)能否公開(kāi)生成等相關(guān)信息.

表1 基于不同角度分類的(簡(jiǎn)潔) 非交互零知識(shí)證明總結(jié)Table 1 Summary of (succinct) non-interactive zero-knowledge proof from different perspectives

(3) 總結(jié)了簡(jiǎn)潔非交互零知識(shí)證明的性能評(píng)價(jià)標(biāo)準(zhǔn), 包括底層難題假設(shè)的通用性, 啟動(dòng)階段系統(tǒng)參數(shù)能否公開(kāi)生成, 證明、驗(yàn)證和通信復(fù)雜度, 是否抗量子等內(nèi)容.

(4) 分析了未來(lái)簡(jiǎn)潔非交互零知識(shí)證明的研究熱點(diǎn)和發(fā)展方向. 基于近年來(lái)簡(jiǎn)潔非交互零知識(shí)性證明的最新研究進(jìn)展, 從通用構(gòu)造、性能、安全性等方面給出若干可能的未來(lái)發(fā)展方向.

1.2 相關(guān)工作

簡(jiǎn)潔非交互零知識(shí)證明是實(shí)現(xiàn)區(qū)塊鏈、隱私計(jì)算等場(chǎng)景下隱私保護(hù)的重要技術(shù), 近幾年對(duì)零知識(shí)證明尤其是簡(jiǎn)潔非交互零知識(shí)證明的綜述研究主要包括以下內(nèi)容.

Goldreich[44]梳理了零知識(shí)證明二十余年的發(fā)展情況, 介紹了交互式證明系統(tǒng)與論證、計(jì)算不可區(qū)分、單向函數(shù)等零知識(shí)證明涉及的核心概念, 探討了零知識(shí)證明的標(biāo)準(zhǔn)定義及變種,如全局與黑盒模擬、誠(chéng)實(shí)驗(yàn)證者零知識(shí)、計(jì)算與統(tǒng)計(jì)零知識(shí)、PPT 與期望多項(xiàng)式時(shí)間的模擬器等, 研究了零知識(shí)證明的證明能力, 并討論了組合零知識(shí)證明、知識(shí)證明、非交互零知識(shí)證明等變種. Li 和McMillin[45]介紹了零知識(shí)證明的背景、重要概念及組合零知識(shí)證明等, 并詳細(xì)給出了針對(duì)若干具體NP 問(wèn)題的零知識(shí)證明, 包括三染色問(wèn)題、圖同構(gòu)問(wèn)題、哈密爾頓回路問(wèn)題、背包問(wèn)題、可滿足性問(wèn)題等. Mohr[46]研究了非交互零知識(shí)證

明在在密碼學(xué)中的應(yīng)用, 并重點(diǎn)探討了Fiat-Shamir 認(rèn)證協(xié)議是如何應(yīng)用于零知識(shí)認(rèn)證協(xié)議中的. 上述工作側(cè)重于(非交互) 零知識(shí)證明理論層面的研究, 而本文同時(shí)著力于區(qū)塊鏈等應(yīng)用背景下簡(jiǎn)潔非交互零知識(shí)證明及典型協(xié)議的總結(jié)和研究.

Nitulescu[55]詳細(xì)定義了zk-SNARK(zero-knowledge succinct non-interactive argument of knowledge), 并探討了通用構(gòu)造方法. Nitulescu 將zk-SNARK 分類為基于PCP、QAP、LIP 和PIOP (polynomial interactive oracle proof) 的零知識(shí)證明, 系統(tǒng)整理了各類證明的構(gòu)造思路, 并總結(jié)了典型方案.Nitulescu 詳細(xì)描述了基于QAP 的零知識(shí)證明的協(xié)議流程、底層難題假設(shè)及安全性等細(xì)節(jié), 包括如何將C-SAT 問(wèn)題歸約為QAP 可滿足問(wèn)題、如何針對(duì)QAP 可滿足問(wèn)題構(gòu)建Linear-PCP 等. 然而, 該工作著重于對(duì)zk-SNARK 的研究(對(duì)應(yīng)于第5 章), 而本文除探討zk-SNARK 外, 還詳細(xì)對(duì)比研究了其他類別的簡(jiǎn)潔非交互零知識(shí)證明, 尤其是系統(tǒng)參數(shù)可公開(kāi)生成的系列零知識(shí)證明. Morais 等人[56]對(duì)比了構(gòu)造零知識(shí)范圍證明的不同方法, 詳細(xì)說(shuō)明了Bulletproofs 中范圍證明的實(shí)現(xiàn)細(xì)節(jié), 但僅涉及對(duì)(零知識(shí)) 范圍證明的研究. Sun 等人[57]研究并總結(jié)了在區(qū)塊鏈背景下零知識(shí)證明的框架、模型及應(yīng)用, 指出了目前區(qū)塊鏈中零知識(shí)證明的應(yīng)用現(xiàn)狀、面臨挑戰(zhàn)及未來(lái)發(fā)展方向. 然而, 該工作不涉及對(duì)具體零知識(shí)證明方案的研究.

相比于前人的工作, 本文的亮點(diǎn)主要有二. 第一, 本文總結(jié)了簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法,并基于該通用構(gòu)造方法對(duì)現(xiàn)有簡(jiǎn)潔非交互零知識(shí)證明進(jìn)行了分類. 分類共有兩個(gè)維度, 一是信息論安全證明, 二是將信息論安全證明轉(zhuǎn)換為簡(jiǎn)潔非交互零知識(shí)證明所基于的關(guān)鍵技術(shù). 基于這兩個(gè)維度, 本文較為深入地分類研究了現(xiàn)有的簡(jiǎn)潔非交互零知識(shí)證明, 總結(jié)了每一類證明的待證明陳述表示形式、協(xié)議性能等.第二, 本文基于上述分類維度詳細(xì)梳理了每一類零知識(shí)證明的構(gòu)建思路、優(yōu)化方向及后續(xù)改進(jìn), 分析了安全性、復(fù)雜度及性能優(yōu)缺點(diǎn).

1.3 本文結(jié)構(gòu)

本文結(jié)構(gòu)如圖2 所示. 第2 章介紹相關(guān)表示及全局定義. 第3 章介紹簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法(圖1) 及簡(jiǎn)潔非交互零知識(shí)證明的性能評(píng)價(jià)標(biāo)準(zhǔn). 根據(jù)通用構(gòu)造方法中信息論安全證明的不同,第4 章簡(jiǎn)要介紹基于概率可驗(yàn)證證明類的零知識(shí)證明, 主要包括概率可驗(yàn)證證明(PCP)、交互式概率可驗(yàn)證證明(IPCP)、交互式諭示證明(IOP) 和線性概率可驗(yàn)證證明(linear-PCP); 根據(jù)密碼編譯器應(yīng)用的底層關(guān)鍵技術(shù), 第5–8 章分別介紹基于二次算術(shù)程序(QAP)、雙向高效交互式證明(DEIP)、內(nèi)積論證(IPA) 和MPC-in-the-Head 的零知識(shí)證明, 詳見(jiàn)圖2(其中基于線性概率可驗(yàn)證證明和基于二次算術(shù)程序的零知識(shí)證明為同一類協(xié)議的兩個(gè)維度). 第9 章介紹未來(lái)研究方向.

圖2 本文結(jié)構(gòu)Figure 2 Structure of this paper

2 相關(guān)表示與全局定義

2.1 相關(guān)表示

在本文中, 小寫粗體字母表示向量, 例如a ∈F1×n表示域F 上維度為n的行向量(a1,a2,··· ,an),為表述方便, 常將F1×n簡(jiǎn)記為Fn.f(·)、g(·) 等表示多項(xiàng)式,f(·) 等表示向量多項(xiàng)式. 大寫粗體字母(如A) 表示矩陣, 例如,A ∈Fm×n表示m行n列的矩陣且ai,j表示第i行、第j列的矩陣元素,Aa表示矩陣A與向量a的矩陣乘法. 本文用·表示乘法, 特別的,a·b=∑表示向量a與向量b的內(nèi)積.⊙表示哈達(dá)瑪積, 例如a ⊙b=(a1·b1,a2·b2,··· ,an·bn).y ←A(x,r) 表示算法A以x為輸入、r為隨機(jī)輸入生成y的過(guò)程, 用y$←?S表示從集合S中均勻隨機(jī)地挑選y,→表示函數(shù)映射關(guān)系, 用a?=b表示驗(yàn)證a是否等于b. 對(duì)于正整數(shù)n, [n] 表示集合{1,2,··· ,n}.

本文中的算法輸入均包含安全參數(shù)λ. 如果對(duì)于任意的多項(xiàng)式p(·) 都存在常數(shù)c使得當(dāng)λ>c時(shí)有negl(λ)< 1/p(λ), 則稱negl(λ) 為對(duì)于λ的可忽略函數(shù). 記f(λ)≈g(λ) 當(dāng)|f(λ)?g(λ)|≤negl(λ). 用PPT 表示概率多項(xiàng)式時(shí)間(probabilistic polynomial time). 記Oλ(·) 為省略安全參數(shù)λ多項(xiàng)式因子的大O記法, 本文常省略λ. 本文常用的縮寫詞及含義對(duì)照表如表2 所示.

表2 縮略詞及其含義對(duì)照表Table 2 Table for abbreviations and their meanings

2.2 全局定義

本節(jié)介紹本文涉及的主要基礎(chǔ)知識(shí), 第2.2.1 小節(jié)介紹電路及相關(guān)定義, 第2.2.2 小節(jié)介紹承諾及相關(guān)定義, 第2.2.3 小節(jié)介紹零知識(shí)證明及相關(guān)定義.

2.2.1 電路及相關(guān)定義

記算術(shù)電路(arithmetic circuit) 為C: F|x|+|w|→F|y|, 它由若干域上的加法門和乘法門組成. 布爾電路(Boolean circuit) 是算術(shù)電路的子類, 其僅有與門、異或門等布爾邏輯門, 變量取值僅為0 或1. 可以證明, 通過(guò)增加常數(shù)級(jí)別的電路門和深度, 任何布爾電路都可以轉(zhuǎn)換為算術(shù)電路[61]. 不失一般性, 本文中出現(xiàn)的電路均為二輸入電路(circuit with fan-in 2 gates). 記電路規(guī)模為電路中門的數(shù)量, 用|C| 表示,d表示電路深度,g表示電路寬度.

定義1(分層算術(shù)電路) 分層算術(shù)電路(layered arithmetic circuit) 是指可以分為d層、且任意層的電路門的輸入導(dǎo)線全部位于上一層的算術(shù)電路.

可以證明, 通過(guò)增加電路深度級(jí)別的電路門, 任意的算術(shù)電路都可轉(zhuǎn)換為分層算術(shù)電路[32].

定義2(電路可滿足問(wèn)題) 電路可滿足問(wèn)題(circuit satisfiability problem, C-SAT)是指給定電路C、電路的部分輸入x(x可為空) 和電路輸出y, 判斷是否存在證據(jù)w(電路的另一部分輸入, 視為秘密輸入) 使得C(x,w)=y. 如無(wú)特殊說(shuō)明, 本文中的零知識(shí)證明均是針對(duì)C-SAT 問(wèn)題的.

針對(duì)布爾電路可滿足問(wèn)題的零知識(shí)證明可通過(guò)調(diào)用針對(duì)算術(shù)電路可滿足問(wèn)題的零知識(shí)證明高效構(gòu)造(只需擴(kuò)大域并增加對(duì)變量為0 或1 的約束即可), 反之, 尚不清楚是否有高效的轉(zhuǎn)化方式.

定義 3(一階約束系統(tǒng)[27,50]) 一個(gè)一階約束系統(tǒng)(rank-1 constraint system, R1CS) 是七元組(F,A,B,C,io,m,n), 其中io表示公共輸入輸出向量,A,B,C ∈Fm×m,m ≥|io| + 1,n是所有矩陣中非零值的最大數(shù)目. 稱R1CS 問(wèn)題是可滿足的當(dāng)且僅當(dāng)對(duì)于一個(gè)R1CS 組, 存在證據(jù)w ∈Fm?|io|?1使得(Az)⊙(Bz)=(Cz), 其中z=(io,1,w)T.

記n為R1CS 可滿足問(wèn)題的規(guī)模, 可以證明, 任意C-SAT 問(wèn)題都可用R1CS 可滿足問(wèn)題表示[27],且n=O(|C|)[50].

R1CS 是高級(jí)語(yǔ)言編譯器的常見(jiàn)目標(biāo)程序[62,65]且形式較簡(jiǎn)單, 同時(shí)任意C-SAT 問(wèn)題都可用R1CS可滿足問(wèn)題表示[27], 故有一些零知識(shí)證明[19,20]在應(yīng)用實(shí)現(xiàn)時(shí)是先將C-SAT 問(wèn)題轉(zhuǎn)化為R1CS 可滿足問(wèn)題, 再針對(duì)R1CS 可滿足問(wèn)題構(gòu)造的; 也有部分零知識(shí)證明[27,50]直接針對(duì)R1CS 可滿足問(wèn)題.

2.2.2 承諾及相關(guān)定義

定義4(承諾) 一個(gè)承諾方案(commitment scheme) 包含發(fā)送者和接收者兩個(gè)參與方及三個(gè)PPT算法(Setup,Com,Open). 具體的, 算法Setup 用于生成承諾用公共參數(shù)pp. Compp定義了函數(shù)映射M×R→C, 其中M、R 和C 分別表示明文空間、隨機(jī)數(shù)空間和承諾空間. Openpp算法定義了函數(shù)映射C×M×R→0/1. 具體的, 對(duì)于消息m ∈M 和隨機(jī)數(shù)r ∈R, 承諾c的生成方式為c ←Compp(m;r),Open 算法為0/1←Openpp(c,m,r). 為表示方便, 本文常省略pp 和隨機(jī)數(shù)r.

承諾有兩個(gè)基本性質(zhì), 隱藏性(hiding) 和綁定性(binding). 其中, 隱藏性是指敵手獲得承諾c后無(wú)法獲知m的值, 綁定性是指一個(gè)承諾c在Open 階段只能打開(kāi)為一個(gè)值.

定義5(隱藏性) 計(jì)算隱藏性(computational hiding) 是指對(duì)于任意的PPT 敵手A, 有

對(duì)應(yīng)的, 完美隱藏性(perfect hiding) 是將不等式(1)中的敵手A修改為無(wú)窮算力且“≤negl(λ)” 替換為“=0”.

定義6(綁定性) 計(jì)算綁定性(computational binding) 是指對(duì)于任意的PPT 敵手A, 有

對(duì)應(yīng)的, 完美綁定性(perfect binding) 是將不等式(2)中的敵手A修改為無(wú)窮算力且“≤negl(λ)” 替換為“=0”.

定義7(加性同態(tài)承諾) 加性同態(tài)承諾(additive homomorphic commitment) 是指具有加性同態(tài)性質(zhì)的承諾, 即給定承諾Com(x;rx) 和Com(y;ry), 存在運(yùn)算⊕, 滿足

定義8(Pedersen 承諾[71]) Pedersen 承諾的明文空間、隨機(jī)數(shù)空間和承諾空間分別為M = R =Zq,C=Gq. Setup 算法生成公共參數(shù), 即G 上生成元g、h, 其承諾和承諾打開(kāi)算法為gxhr ←Com(x;r)和0/1←Open(Com(x;r),x,r).

容易證明, Pedersen 承諾具有完美隱藏性、計(jì)算綁定性和加性同態(tài)性質(zhì).

定義9(Pedersen 向量承諾) Pedersen 向量承諾是對(duì)定義8的自然擴(kuò)展, 其明文空間、隨機(jī)數(shù)空間和承諾空間分別為M =, R = Zq, C = Gq. Setup 算法生成公共參數(shù), 即Gnq上生成元g=(g1,g2,··· ,gn) 和Gq上生成元h, 向量承諾的承諾和打開(kāi)承諾算法分別為

?c=gmhr ←Com(m;r). 承諾算法以消息m和隨機(jī)數(shù)r為輸入, 輸出承諾c=gmhr.

? 0/1←Open(c,m,r). 承諾打開(kāi)算法以承諾c、消息m和隨機(jī)數(shù)r為輸入, 驗(yàn)證承諾正確性.

2.2.3 零知識(shí)證明及相關(guān)定義

本小節(jié)介紹零知識(shí)證明, 并給出若干相關(guān)概念的簡(jiǎn)要定義.

給定二元關(guān)系R:{0,1}?×{0,1}?→{0,1}, 記語(yǔ)言L(R) 為集合{x:?ws.t.R(x,w)=1}. 稱一個(gè)語(yǔ)言L(R) 是NP 語(yǔ)言當(dāng)如下兩個(gè)條件成立:

(1)|w|=poly(|x|).

(2) 給定任意的x、w, 存在多項(xiàng)式時(shí)間算法能夠高效判定R(x,w)?=1.

記〈A,B〉為一對(duì)交互式圖靈機(jī). 記〈A(y),B(z)〉(x) 為在A、B的隨機(jī)輸入帶均勻獨(dú)立選取, 公共輸入為x,A的輔助輸入為y,B的輔助輸入為z時(shí), 圖靈機(jī)B與圖靈機(jī)A交互后輸出的隨機(jī)變量.

定義10(交互式證明系統(tǒng)[1,72]) 給定二元關(guān)系R及其對(duì)應(yīng)語(yǔ)言L(R), 則針對(duì)該語(yǔ)言的交互式證明系統(tǒng)(interactive proof system) 是〈P(y),V(z)〉, 其中圖靈機(jī)P、P?(也被稱為證明者) 可以為無(wú)窮算力的, 圖靈機(jī)V(也被稱為驗(yàn)證者) 是PPT 的.〈P(y),V(z)〉滿足如下兩個(gè)性質(zhì).

?完備性(completeness): 對(duì)于任意的x ∈ L(R), 存在y, 使得對(duì)于任意的z ∈ {0,1}?,Pr[〈P(y),V(z)〉(x) = 1]≥1?negl(|x|). 完美完備性(perfect completeness) 是指上述概率等于1.

?可靠性(soundness): 對(duì)于任意的x/∈L(R), 任意的惡意證明者P?, 任意的y,z ∈{0,1}?, 有Pr[〈P?(y),V(z)〉(x)=1]≤negl(|x|).

定義11(交互式論證[72,73]) 交互式論證與交互式證明系統(tǒng)的區(qū)別在于, 論證可靠性定義中惡意證明者P?被限制為PPT 的圖靈機(jī). 此外, 通常也限制完備性中的P為PPT 的[72, §4.8.1]. 具體的, 給定二元關(guān)系R及其對(duì)應(yīng)語(yǔ)言L(R), 則針對(duì)該語(yǔ)言的交互式論證(interactive argument) 是〈P(y),V(z)〉,其中圖靈機(jī)P、P?和V均是PPT 的. 與證明系統(tǒng)類似,〈P(y),V(z)〉也具有完備性和可靠性.

零知識(shí)證明是具有零知識(shí)性的交互式證明系統(tǒng)或論證, 零知識(shí)性的直觀含義是當(dāng)以滿足x ∈L(R) 的x為公共輸入時(shí), 任何在與P交互后高效計(jì)算出的信息也都可僅根據(jù)x高效計(jì)算得出(此時(shí)沒(méi)有交互).

其中計(jì)算不可區(qū)分是指對(duì)于所有的概率性算法D(運(yùn)行時(shí)間受poly|x| 限制)、所有的多項(xiàng)式p(·)、所有的z ∈{0,1}?, 有

定義13(誠(chéng)實(shí)驗(yàn)證者零知識(shí)[72]) 誠(chéng)實(shí)驗(yàn)證者零知識(shí)(honest verifier zero-knowledge) 是指模擬過(guò)程中的驗(yàn)證者是按照事先確定好的協(xié)議步驟運(yùn)行的. 給定二元關(guān)系R及其對(duì)應(yīng)語(yǔ)言L(R), 令〈P,V〉是針對(duì)該語(yǔ)言的交互式證明系統(tǒng)(論證), 如果存在一個(gè)期望PPT 的模擬器S使得{viewPV(x,z)}x∈L(R) 和{S(x,z)}x∈L(R)這兩個(gè)隨機(jī)變量族是計(jì)算不可區(qū)分, 則稱該證明系統(tǒng)(論證) 是誠(chéng)實(shí)驗(yàn)證者計(jì)算零知識(shí)的.

定義14(知識(shí)論證[74]) 知識(shí)論證(argument of knowledge) 指具有知識(shí)可靠性的論證. 給定一個(gè)多項(xiàng)式時(shí)間內(nèi)可判定的二元關(guān)系R及其對(duì)應(yīng)的NP 語(yǔ)言L(R), 知識(shí)可靠性是指對(duì)于任意的PPT 敵手P?, 都存在期望PPT 的提取器E, 使得對(duì)于L(R) 及任意的陳述x、w′, 如果有Pr[w′←P?(x) :〈P?(w′),V(z)〉(x) = 1]≥1/p(|x|), 其中p(·) 為某個(gè)多項(xiàng)式, 則有Pr[w′←EP?(x) :R(x,w′) = 1]≥1/p(|x|)?negl(|x|).

本文中部分論證[30–32,53,54]援引的知識(shí)可靠性為統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性(statistical witnessextended emulation)[75].

定義15(公開(kāi)拋幣) 如果驗(yàn)證者在一個(gè)證明(論證) 的交互過(guò)程中發(fā)送的信息是公開(kāi)拋幣的直接結(jié)果, 則稱該證明(論證)〈P,V〉是公開(kāi)拋幣(public coin) 的.

定義16(簡(jiǎn)潔性[25]) 對(duì)于一個(gè)交互式論證, 如果P和V之間的通信復(fù)雜度不超過(guò)poly(λ)(|x|+|w|)o(1),則稱該論證〈P,V〉為簡(jiǎn)潔(succinct)的;如果通信復(fù)雜度不超過(guò)poly(λ)(|x|+|w|)c+o(|x|+|w|),則稱論證為略顯簡(jiǎn)潔的(slightly succinct), 其中c為某個(gè)小于1 的常數(shù). 本文將簡(jiǎn)潔和略顯簡(jiǎn)潔的零知識(shí)證明統(tǒng)稱為簡(jiǎn)潔零知識(shí)證明.

基于標(biāo)準(zhǔn)假設(shè)[24](敵手僅受可用時(shí)間和算力限制) 無(wú)法實(shí)現(xiàn)簡(jiǎn)潔且具有統(tǒng)計(jì)級(jí)別可靠性的證明系統(tǒng)[76]. 如無(wú)特殊說(shuō)明, 本文涉及到的所有具體零知識(shí)證明協(xié)議均是零知識(shí)論證或零知識(shí)知識(shí)論證, 為敘述方便, 本文將非交互零知識(shí)知識(shí)論證(non-interactive zero-knowledge argument of knowledge) 簡(jiǎn)記為NIZKAoK.

Σ協(xié)議[77]給定二元關(guān)系R及其對(duì)應(yīng)語(yǔ)言L(R), 則針對(duì)該語(yǔ)言的Σ 協(xié)議是公開(kāi)拋幣的誠(chéng)實(shí)驗(yàn)證者零知識(shí)論證, 其有以下三步.

? 承諾階段: 證明者P向驗(yàn)證者V發(fā)送承諾a.

? 挑戰(zhàn)階段:V向P發(fā)送隨機(jī)挑戰(zhàn)e.

? 響應(yīng)階段:P向V發(fā)送響應(yīng)函數(shù)f(w,r,e), 其中f是某公開(kāi)函數(shù),w是證據(jù),r是隨機(jī)數(shù).

Σ 協(xié)議具有完備性、特殊知識(shí)可靠性和誠(chéng)實(shí)驗(yàn)證者零知識(shí)性. 其中特殊知識(shí)可靠性(s-special soundness) 是指給定對(duì)于任意的陳述x及s個(gè)接受副本{(a,ei,zi)}i∈[s],x所對(duì)應(yīng)的證據(jù)w可被高效提取.

非交互零知識(shí)證明交互式證明需要證明者和驗(yàn)證者時(shí)刻保持在線狀態(tài), 而這會(huì)因網(wǎng)絡(luò)延遲、拒絕服務(wù)等原因難以保障. 而在非交互零知識(shí)證明中, 證明者僅需發(fā)送一輪消息即可完成證明. 然而, 在標(biāo)準(zhǔn)假設(shè)下已證明無(wú)法構(gòu)造針對(duì)非平凡語(yǔ)言的非交互零知識(shí)證明系統(tǒng)[78], 因此必須引入新的假設(shè). 目前主流的非交互零知識(shí)證明的構(gòu)造方法有兩種, 一是基于CRS 模型實(shí)現(xiàn)的, 二是基于ROM 并利用Fiat-Shamir 啟發(fā)式實(shí)現(xiàn)的.

CRS 模型由Blum、Feldman 和Micali[12]提出, 其假設(shè)存在一個(gè)證明者和驗(yàn)證者可獲得的由可信第三方生成的公共字符串, 其可由MPC 生成[79,80]. 本文中基于QAP 的零知識(shí)證明就是基于CRS 模型實(shí)現(xiàn)非交互的, 該類證明也被稱為zk-SNARK[25,58,81], 其通信量為常數(shù)個(gè)群元素, 驗(yàn)證復(fù)雜度可通過(guò)預(yù)處理達(dá)到常數(shù)次配對(duì)運(yùn)算.

然而, zk-SNARK 存在兩個(gè)較為嚴(yán)重的問(wèn)題, 一是需要可信初始化用以預(yù)處理, 二是基于非可證偽假設(shè)才是安全的. 對(duì)于問(wèn)題一, 雖然Feige、Lapidot 和Shamir[82]基于單向函數(shù)存在的假設(shè)構(gòu)造了同一個(gè)CRS 可用于證明多個(gè)陳述的非交互零知識(shí)證明, 但為實(shí)現(xiàn)更低的通信量和驗(yàn)證計(jì)算開(kāi)銷, 在絕大多數(shù)zk-SNARK 中CRS 都是與陳述相關(guān)的. 也就是說(shuō), 在給定待證明陳述后, 需先由可信第三方先進(jìn)行相應(yīng)預(yù)處理. 預(yù)處理雖然使得亞線性甚至常數(shù)級(jí)別的驗(yàn)證復(fù)雜度成為了可能(在無(wú)預(yù)處理情況下驗(yàn)證者讀取陳述就會(huì)導(dǎo)致線性級(jí)別的驗(yàn)證復(fù)雜度), 但對(duì)于每個(gè)陳述都進(jìn)行預(yù)處理也會(huì)帶來(lái)較大的計(jì)算開(kāi)銷. 對(duì)于問(wèn)題二, Gentry 和Wichs[25]從理論上證明了基于可證偽假設(shè)無(wú)法構(gòu)造zk-SNARK. 可證偽假設(shè)是指可用敵手和高效挑戰(zhàn)者之間的游戲模型描述的假設(shè), 在游戲結(jié)束時(shí), 挑戰(zhàn)者能夠高效判斷敵手是否攻擊成功. 常見(jiàn)的標(biāo)準(zhǔn)假設(shè), 如單向函數(shù)存在、離散對(duì)數(shù)假設(shè)等都屬于可證偽假設(shè).

在ROM[13,14]下, 驗(yàn)證者的隨機(jī)挑戰(zhàn)可由哈希函數(shù)的輸出替代, 由此任何公開(kāi)拋幣的交互式零知識(shí)論證(如Σ 協(xié)議) 可轉(zhuǎn)換為非交互零知識(shí)論證[54,83–85]. 在Σ 協(xié)議中, 證明者計(jì)算e ←RO(x,a) 并用該e替代驗(yàn)證者的隨機(jī)挑戰(zhàn), 其中RO 代表隨機(jī)諭言函數(shù). ROM 是一種理想的密碼學(xué)模型, 其假設(shè)協(xié)議的所有參與方都有訪問(wèn)請(qǐng)求一個(gè)理想隨機(jī)諭示的權(quán)限, 該諭示在實(shí)際應(yīng)用中通常啟發(fā)地用哈希函數(shù)替代. 在ROM 下, 該類非交互零知識(shí)證明可基于標(biāo)準(zhǔn)假設(shè)實(shí)現(xiàn). 本文中基于PCP、IPCP、IOP、DEIP、IPA 和MPC-in-the-Head 的零知識(shí)證明均是通過(guò)ROM 下的Fiat-Shamir 啟發(fā)式實(shí)現(xiàn)非交互的.

定義17(Schwartz-Zippel 引理[86,87]) 若域F 上多項(xiàng)式p(x1,x2,··· ,xn) 度為d且不為零多項(xiàng)式,令集合S ?F, 則對(duì)于(y1,y2,··· ,yn)S, 有與n無(wú)關(guān)的以下概率關(guān)系成立

Schwartz-Zippel 引理可將針對(duì)多項(xiàng)式約束的證明轉(zhuǎn)化為針對(duì)多項(xiàng)式上某一點(diǎn)的證明, 其能夠在保障可靠性(但會(huì)帶來(lái)一定誤差) 的同時(shí)降低通信復(fù)雜度, 是構(gòu)造簡(jiǎn)潔非交互零知識(shí)證明的重要技術(shù)支撐之一.

3 簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法及性能評(píng)價(jià)標(biāo)準(zhǔn)

3.1 簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法

簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法如圖1 所示, 簡(jiǎn)要介紹如下.

(1) 將待證明陳述歸約為C-SAT 問(wèn)題. 一方面C-SAT 問(wèn)題是NPC 問(wèn)題, 也就是說(shuō)任意NP 問(wèn)題都可在多項(xiàng)式時(shí)間內(nèi)歸約為C-SAT 問(wèn)題,另一方面大多數(shù)實(shí)際問(wèn)題都可用電路形式表達(dá),故現(xiàn)有的簡(jiǎn)潔非交互零知識(shí)證明的待證明陳述表示形式大都為C-SAT 問(wèn)題. 事實(shí)上, 也存在一系列的算術(shù)電路生成器, 可將格式化計(jì)算程序轉(zhuǎn)化為算術(shù)電路, 例如Meiklejohn 等人[88]提出的ZKPDL和Ben-Sasson 等人[81]提出的TinyRAM.然而, 這些庫(kù)的實(shí)際歸約效果可能并不好, 例如, 針對(duì)SHA-256 采用Pinocchio3Pinocchio v0.5.3. https://github.com/amiller/pinocchio.中的電路生成器所生成的算術(shù)電路門數(shù)為58 160, 而根據(jù)SHA-256的算法可手動(dòng)生成門數(shù)僅為27 904 的相應(yīng)算術(shù)電路[89].

(2) 將C-SAT 問(wèn)題轉(zhuǎn)換為易證明的語(yǔ)言. 針對(duì)C-SAT 問(wèn)題直接構(gòu)造零知識(shí)證明往往無(wú)法實(shí)現(xiàn)簡(jiǎn)潔性, 一個(gè)構(gòu)造零知識(shí)證明的平凡思路是在掩藏電路中每個(gè)導(dǎo)線值的同時(shí)完成驗(yàn)證計(jì)算, 而這會(huì)導(dǎo)致Θ(|C|) 級(jí)別的通信復(fù)雜度. 因此, 通常需將C-SAT 問(wèn)題轉(zhuǎn)換為易證明的語(yǔ)言(此步可能沒(méi)有), 而易證明的語(yǔ)言在不同具體場(chǎng)景下也是不盡相同的. 例如, 在基于Linear-PCP 的零知識(shí)證明中, 需將C-SAT 問(wèn)題轉(zhuǎn)化為QAP 可滿足問(wèn)題, 即判斷是否存在一個(gè)多項(xiàng)式能夠被某個(gè)公開(kāi)多項(xiàng)式整除; 在基于IPA 的零知識(shí)證明中, 需將C-SAT 問(wèn)題中所有的線性約束和乘法門約束歸約為判斷一個(gè)多項(xiàng)式是否為零多項(xiàng)式的問(wèn)題; 在基于DEIP 的零知識(shí)證明中, 需將C-SAT 問(wèn)題轉(zhuǎn)換為多元多項(xiàng)式的求和驗(yàn)證問(wèn)題.

(3) 針對(duì)易證明的語(yǔ)言構(gòu)造信息論安全證明. 許多簡(jiǎn)潔零知識(shí)證明都是基于信息論安全證明構(gòu)造的,例如, 第一個(gè)簡(jiǎn)潔零知識(shí)論證[15]就是基于PCP 構(gòu)造的; 基于MPC-in-the-Head 的零知識(shí)證明則是首先利用MPC-in-the-Head 構(gòu)造零知識(shí)的PCP(或IPCP、IOP),然后調(diào)用合適的MPC 協(xié)議構(gòu)造的; Bitansky 等人[58]和Setty 等人[62]也分別指出, 基于QAP 的零知識(shí)證明本質(zhì)上是基于Linear-PCP 構(gòu)造的. 具體的, 本文中出現(xiàn)的信息論安全證明包括PCP[16,17,59]、IPCP[64]、IOP[67,90]和Linear-PCP[58,62], 詳見(jiàn)第4 章.

(4) 利用密碼編譯器將信息論安全證明轉(zhuǎn)換為簡(jiǎn)潔非交互零知識(shí)證明. 密碼編譯器的作用包括:

? 實(shí)現(xiàn)諭示. 信息論安全證明需要理想諭示(Ideal Oracle), 而在實(shí)際的交互式證明中理想諭示是不存在的, 因此需借助承諾、哈希等密碼工具實(shí)現(xiàn). 由于這些密碼工具大都是基于計(jì)算意義上的難題假設(shè)(如Pedersen 承諾的綁定性是基于DLOG 假設(shè)的), 因此證明也往往被削弱為論證.

? 實(shí)現(xiàn)非交互. 根據(jù)實(shí)現(xiàn)非交互所基于的模型, 分為基于CRS 模型和基于ROM 的零知識(shí)證明.例如, 基于QAP 的零知識(shí)證明均基于CRS 模型實(shí)現(xiàn)非交互, 而基于DEIP、IPA 和MPCin-the-Head 的零知識(shí)證明均基于ROM 實(shí)現(xiàn)非交互. 需要指出的是, 即使是基于ROM 實(shí)現(xiàn)非交互的零知識(shí)證明, 也可能需要公共參考串, 如ZKvSQL[51]、Libra[26]等.

? 實(shí)現(xiàn)零知識(shí). 由于信息論安全證明本身可能不具備零知識(shí)性, 因此可能需利用密碼編譯器實(shí)現(xiàn)零知識(shí)性. 例如, 基于DEIP 和IPA 的零知識(shí)證明是通過(guò)承諾的隱藏性及盲化多項(xiàng)式實(shí)現(xiàn)的零知識(shí)性, 基于MPC-in-the-Head 的零知識(shí)證明是通過(guò)MPC 協(xié)議的隱私性實(shí)現(xiàn)的零知識(shí)性.

? 降低通信復(fù)雜度. 部分密碼編譯器有助于降低通信復(fù)雜度, 例如, 基于DEIP 的零知識(shí)證明可通過(guò)多項(xiàng)式承諾降低通信復(fù)雜度, 基于MPC-in-the-Head 的零知識(shí)證明可通過(guò)選取合適的底層MPC 協(xié)議降低通信復(fù)雜度.

3.2 簡(jiǎn)潔非交互零知識(shí)證明的性能評(píng)價(jià)標(biāo)準(zhǔn)

性能評(píng)價(jià)標(biāo)準(zhǔn)是衡量一個(gè)簡(jiǎn)潔非交互零知識(shí)證明協(xié)議優(yōu)劣的準(zhǔn)繩, 本部分從效率和安全性角度簡(jiǎn)要介紹簡(jiǎn)潔非交互零知識(shí)證明的性能評(píng)價(jià)標(biāo)準(zhǔn), 見(jiàn)表3.

表3 簡(jiǎn)潔非交互零知識(shí)證明的性能評(píng)價(jià)標(biāo)準(zhǔn)Table 3 Performance evaluation of succinct NIZKAoK

在效率層面, 主要分為證明復(fù)雜度、驗(yàn)證復(fù)雜度、通信復(fù)雜度和是否需要公鑰密碼操作. 特別注意的是, 本文中的證明、通信和驗(yàn)證復(fù)雜度均為協(xié)議一輪的開(kāi)銷, 協(xié)議實(shí)際運(yùn)行輪數(shù)及實(shí)際證明、驗(yàn)證計(jì)算開(kāi)銷和通信量與可靠性誤差及安全級(jí)別有關(guān).

(1) 證明復(fù)雜度: 證明復(fù)雜度是指在一輪協(xié)議中證明者生成證明所需計(jì)算步數(shù)的漸近復(fù)雜度. 在其他條件不變的情況下, 一個(gè)協(xié)議的證明復(fù)雜度越低, 協(xié)議的性能越好. 然而, 幾乎所有的簡(jiǎn)潔非交互零知識(shí)證明協(xié)議都具有線性或準(zhǔn)線性級(jí)別的證明復(fù)雜度, 僅從證明復(fù)雜度來(lái)看, 這些協(xié)議的差距并不大.

(2) 通信復(fù)雜度: 通信復(fù)雜度是指一輪協(xié)議證明規(guī)模的漸近復(fù)雜度. 在其他條件不變的情況下, 一個(gè)協(xié)議的通信復(fù)雜度越低, 協(xié)議的性能越好. 常見(jiàn)的亞線性通信復(fù)雜度為常數(shù)級(jí)別(zk-SNARK, 見(jiàn)第5 章)、根號(hào)級(jí)別(包括Ligero[35]、BooLigero[48])、對(duì)數(shù)級(jí)別(包括Aurora[50]等基于IOP 的零知識(shí)證明、Bulletproofs[31]等基于IPA 的零知識(shí)證明和Ligero++[36]等基于MPC-in-the-Head 的零知識(shí)證明). 特別的, 基于DEIP 的零知識(shí)證明只有滿足電路深度與電路規(guī)模成對(duì)數(shù)關(guān)系時(shí), 通信復(fù)雜度才是對(duì)數(shù)級(jí)別的.

(3) 驗(yàn)證復(fù)雜度: 驗(yàn)證復(fù)雜度是指一輪協(xié)議驗(yàn)證者驗(yàn)證證明有效性所需計(jì)算步數(shù)的漸近復(fù)雜度. 在其他條件不變的情況下, 一個(gè)協(xié)議的驗(yàn)證復(fù)雜度越低, 協(xié)議的性能越好. 需要指出的是, 一般而言由于驗(yàn)證者起碼要讀取整個(gè)陳述, 因此驗(yàn)證復(fù)雜度起碼為線性. 但是, 可通過(guò)CRS 和預(yù)處理降低驗(yàn)證者參與協(xié)議后的計(jì)算開(kāi)銷. 例如DRZ20[54]就是利用CRS 中的結(jié)構(gòu)化承諾密鑰實(shí)現(xiàn)了對(duì)數(shù)級(jí)別的驗(yàn)證復(fù)雜度, Pinocchio 也可利用預(yù)處理實(shí)現(xiàn)常數(shù)級(jí)別配對(duì)操作的驗(yàn)證復(fù)雜度.

(4) 是否需要公鑰密碼操作: 對(duì)稱密碼操作是指移位、異或、域上多項(xiàng)式運(yùn)算等對(duì)稱密碼中常出現(xiàn)的運(yùn)算操作, 而公鑰密碼操作包括橢圓曲線上運(yùn)算等公鑰密碼中常出現(xiàn)的運(yùn)算操作. 一般而言, 公鑰密碼操作尤其是群冪運(yùn)算的實(shí)際開(kāi)銷較高, 因此是否需要公鑰密碼操作會(huì)影響零知識(shí)證明協(xié)議的實(shí)際效率. 基于QAP 的零知識(shí)證明、基于DEIP 的零知識(shí)證明和基于IPA 的零知識(shí)證明均需要一定的公鑰密碼操作.

特別指出的是, 上述復(fù)雜度均與協(xié)議的安全參數(shù)成多項(xiàng)式關(guān)系. 因此, 即使是通信復(fù)雜度僅為常數(shù)個(gè)群元素的協(xié)議, 如Pinocchio[20], 其實(shí)際通信量也會(huì)隨協(xié)議安全參數(shù)的改變而改變.

在安全性層面, 主要分為底層難題假設(shè)、系統(tǒng)參數(shù)生成方式和是否抗量子, 分別介紹如下.

(1) 底層難題假設(shè): 不同簡(jiǎn)潔非交互零知識(shí)證明協(xié)議的底層難題假設(shè)通用性有一定的差距. 例如, 基于MPC-in-the-Head 的零知識(shí)證明所基于的假設(shè)是單向函數(shù)存在, 這是一種密碼學(xué)中較為常見(jiàn)的假設(shè). 第7 章中的零知識(shí)證明基于的難題假設(shè)是離散對(duì)數(shù)假設(shè), 其相比于單向函數(shù)存在的假設(shè)通用性較低, 但也屬于標(biāo)準(zhǔn)假設(shè)[24]. 第5 章中的零知識(shí)證明基于的假設(shè)是不可證偽假設(shè), 其不屬于標(biāo)準(zhǔn)假設(shè). 底層難題假設(shè)的通用性是零知識(shí)證明落地應(yīng)用的重要考量因素之一.

(2) 系統(tǒng)參數(shù)生成方式: 基于 CRS 的簡(jiǎn)潔非交互零知識(shí)證明 (如 Pinocchio[20]、Libra[26]和DRZ20[54]) 的系統(tǒng)參數(shù)必須由可信第三方生成, 這在去中心化的區(qū)塊鏈應(yīng)用中會(huì)帶來(lái)安全性問(wèn)題. 而一些基于ROM 實(shí)現(xiàn)非交互的簡(jiǎn)潔非交互零知識(shí)證明可利用某些哈希函數(shù)由證明者自行生成隨機(jī)數(shù), 在某種程度上具有更高的安全性.

(3) 是否抗量子: 基于MPC-in-the-Head 的零知識(shí)證明和部分基于IOP 的零知識(shí)證明(如Aurora)只需假設(shè)單向函數(shù)存在, 且僅有對(duì)稱密鑰操作, 被認(rèn)為是抗量子的.

4 基于PCP、Linear-PCP、IPCP 和IOP 的零知識(shí)證明

1992 年, Kilian[15]基于概率可驗(yàn)證證明(PCP) 利用默克爾樹(shù)和抗碰撞哈希函數(shù)構(gòu)造了第一個(gè)簡(jiǎn)潔的交互式零知識(shí)論證, 后續(xù)的零知識(shí)證明大都是基于PCP 及其變種實(shí)現(xiàn)的. 值得一提的是, 雖然基于二次算術(shù)程序的簡(jiǎn)潔非交互零知識(shí)證明[19,91]似乎“擺脫了” PCP, 但這些協(xié)議本質(zhì)是基于一種特殊的PCP,即Linear-PCP 實(shí)現(xiàn)的[58,62]. 除Linear-PCP 外, 基于其他對(duì)PCP 的擴(kuò)展, 即IPCP 和IOP, 也可構(gòu)造零知識(shí)證明. 本章第4.1 節(jié)介紹相關(guān)定義及概念, 第4.2 節(jié)分別介紹基于PCP、Linear-PCP、IPCP 和IOP 的零知識(shí)證明.

4.1 定義及概念

定義18(概率可驗(yàn)證證明[16,17,59]) 給定二元關(guān)系R, 概率可驗(yàn)證證明(probabilistically checkable proof, PCP) 指在證明者針對(duì)語(yǔ)言L(R) 生成證明諭示π后, 給定驗(yàn)證者訪問(wèn)請(qǐng)求諭示π任意位置比特的權(quán)限, 則驗(yàn)證者可通過(guò)生成最多r(λ) 長(zhǎng)度的隨機(jī)數(shù)進(jìn)而訪問(wèn)請(qǐng)求諭示π的q(λ) 個(gè)比特值選擇是否接受x ∈L(R). 該證明也具有完美完備性和可靠性(可靠性誤差不多于1/2).

Arora 和Safra[17]指出, NP = PCP(logn,1), 即陳述長(zhǎng)為n的NP 問(wèn)題平凡證明與允許使用隨機(jī)數(shù)長(zhǎng)度為O(logn)、允許訪問(wèn)諭示數(shù)為O(1) 的PCP 等價(jià).

定義19(線性PCP 與線性交互式證明[58]) 相比于PCP, 在線性PCP (linear-PCP) 中驗(yàn)證者V的訪問(wèn)請(qǐng)求q ∈Fm為行向量, 而證明者P的回答a ←πo·q為諭示和訪問(wèn)請(qǐng)求的內(nèi)積.

線性交互式證明(linear interactive proof, LIP) 是指證明中證明者P僅能利用驗(yàn)證者V的消息進(jìn)行線性/仿射運(yùn)算的一類證明, 又由于V的消息蘊(yùn)含在CRS 中, 故LIP 中證明πo與CRS 成線性/仿射關(guān)系.

利用Linear-PCP 可自然構(gòu)造兩輪LIP. 在LIP 中, 記Linear-PCP 中的證明諭示為πo,V的訪問(wèn)請(qǐng)求為(q1,q2,··· ,qk,qk+1), 且qk+1=α1q1+···+αkqk. 證明者返回{ai=πo·qi}i∈[k+1]. 由于限制了證明者只能計(jì)算qi的線性組合, 因此若V驗(yàn)證ak+1?=α1a1+···+αkak通過(guò), 其會(huì)以較大概率相信P使用了一致的πo(可靠性誤差不多于1/|F|).

定義20(交互式諭示證明[67,90]) 對(duì)于一個(gè)k(λ) 輪公開(kāi)拋幣的交互式諭示證明(interactive oracle proof, IOP), 在第i輪, 驗(yàn)證者V發(fā)送隨機(jī)消息mi給證明者P, 隨后P返回消息πi,k(λ) 輪交互結(jié)束后,P可構(gòu)造證明諭示π=(π1,π2,··· ,πk). 隨后V向π發(fā)起q(λ) 數(shù)目的訪問(wèn)請(qǐng)求并決定接受或拒絕.

在某種程度上, IOP 是IP 與PCP 的結(jié)合. 與IP 類似,k(λ) 輪IOP 也具有完備性和可靠性; 與PCP 類似, IOP 中也有描述諭示規(guī)模的參數(shù)和描述驗(yàn)證者訪問(wèn)請(qǐng)求次數(shù)的參數(shù). 具體的, 記ri和rq分別為交互和訪問(wèn)請(qǐng)求的隨機(jī)比特長(zhǎng)度, 則對(duì)于x/∈L(R) 和惡意敵手P?, 有

不等式(6) 的含義為隨機(jī)性使得P?以至少?q(λ) 大小概率欺騙成功的概率不超過(guò)?i(λ). 記IOP 的可靠性誤差為?q(λ)+?i(λ), 則PCP 是?q(λ) = 0 的特殊IOP, IP 是?i(λ) = 0 的特殊IOP, 對(duì)NP 問(wèn)題的平凡證明中?q(λ)=?i(λ)=0. 此外, IPCP 是k(λ)=1 的特殊IOP.

定義21(默爾克樹(shù)[92]) 默爾克樹(shù)(Merkle tree) 是一個(gè)二叉樹(shù), 其任意父節(jié)點(diǎn)的值等于左右子節(jié)點(diǎn)值連接后的哈希值. 記默克爾樹(shù)根Root 為無(wú)父節(jié)點(diǎn)的節(jié)點(diǎn), 葉子節(jié)點(diǎn)為無(wú)子節(jié)點(diǎn)的節(jié)點(diǎn). 給定一組葉子節(jié)點(diǎn)值, 稱該組葉子節(jié)點(diǎn)的節(jié)點(diǎn)路徑為足以計(jì)算Root 所需的最少節(jié)點(diǎn)哈希值. 容易證明, 任意一組葉子節(jié)點(diǎn)的節(jié)點(diǎn)路徑規(guī)模為O(logn), 其中n為葉子節(jié)點(diǎn)的個(gè)數(shù).

4.2 典型協(xié)議分析

本節(jié)第4.2.1 小節(jié)介紹基于PCP 的零知識(shí)證明, 第4.2.2 小節(jié)介紹基于Linear-PCP 的零知識(shí)證明,第4.2.3 小節(jié)介紹基于IPCP 的零知識(shí)證明, 第4.2.4 小節(jié)介紹基于IOP 的零知識(shí)證明.

4.2.1 基于PCP 的零知識(shí)證明

Kilian92/Micali94. 1992 年, Kilian[15]基于PCP 利用默克爾樹(shù)和CRHF 構(gòu)造了簡(jiǎn)潔的交互式論證, 其思路如下. 首先驗(yàn)證者V和證明者P約定抗碰撞哈希函數(shù)H; 其次P生成PCP 的諭示證明π,并利用默克爾樹(shù)對(duì)π承諾(哈希函數(shù)選用H), 將默克爾樹(shù)根Root 發(fā)送給V; 然后V生成r(n) 個(gè)隨機(jī)數(shù)發(fā)給P,P和V根據(jù)隨機(jī)數(shù)、公共輸入和Root 共同確定訪問(wèn)請(qǐng)求π的位置; 最后P揭示訪問(wèn)請(qǐng)求的位置值并將對(duì)應(yīng)的節(jié)點(diǎn)路徑哈希值發(fā)送給V,V計(jì)算Root 的值驗(yàn)證一致性并根據(jù)訪問(wèn)請(qǐng)求的位置值驗(yàn)證PCP 的正確性.

由于默克爾樹(shù)的結(jié)構(gòu)特點(diǎn), 上述協(xié)議的通信復(fù)雜度可達(dá)到對(duì)數(shù)級(jí)別, 此外, 該協(xié)議的可靠性來(lái)自于哈希函數(shù)H的抗碰撞性. 值得一提的是, 上述協(xié)議本身不具備零知識(shí)性, 其零知識(shí)性是通過(guò)一種在不揭示承諾值的同時(shí)證明承諾值具有某種性質(zhì)的方法實(shí)現(xiàn)的(notarized envelopes).

1994 年, Micali[18]利用ROM 下的Fiat-Shamir 啟發(fā)式將上述協(xié)議修改為非交互. Valiant[93]進(jìn)一步指出Micali 提出的方案是知識(shí)論證. 后續(xù)的工作通過(guò)引入PIR (private information retrieval)將Kilian92 中的四輪協(xié)議改進(jìn)為兩輪[94], 并利用抗碰撞可提取哈希函數(shù)(extractable CRHF) 替代了Micali94 中的ROM[70]. 近年, Chiesa 和Yogev 改進(jìn)了Micali94 的通信復(fù)雜度[95], 并對(duì)其安全性進(jìn)行了更為詳細(xì)的探討[96].

然而, 這些論證的實(shí)際性能均較差, 難以落地應(yīng)用. 例如, 針對(duì)25×25 的矩陣乘法問(wèn)題, 如果利用一個(gè)基于PCP 的經(jīng)典零知識(shí)證明方案[97]構(gòu)造協(xié)議, 那么該協(xié)議的實(shí)際證明和驗(yàn)證時(shí)間就已超過(guò)億年[20].

ZKBoo/ZKB++/KKW18. ZKBoo[33]、ZKB++[34]和KKW18[47]的主要思路均是基于MPC-in-the-Head[98]的思想直接構(gòu)造了高效零知識(shí)PCP, 隨后將該零知識(shí)PCP 轉(zhuǎn)換為NIZKAoK.其核心思路是證明者在腦海中模擬一個(gè)安全多方計(jì)算協(xié)議的運(yùn)行并生成MPC 參與方數(shù)目的視圖, 然后驗(yàn)證者隨機(jī)挑選若干視圖驗(yàn)證正確性和一致性,協(xié)議的零知識(shí)性由安全多方計(jì)算協(xié)議的隱私性保障. 從PCP的角度, 證明者生成的視圖就是諭示, 驗(yàn)證者挑選的視圖就是訪問(wèn)請(qǐng)求. 本文第8.3.1 小節(jié)介紹ZKBoo 和ZKB++, 第8.3.2 小節(jié)介紹KKW18.

4.2.2 基于Linear-PCP 的零知識(shí)證明

Bitansky 等人[58]指出,zk-SNARK(包括GGPR13[19]、Pinocchio[20]、Groth16[52]、GKMMM18[41]等) 均是基于Linear-PCP 實(shí)現(xiàn)的. 其步驟為首先將Linear-PCP 轉(zhuǎn)換為L(zhǎng)IP, 再將LIP 轉(zhuǎn)換為SNARK,最后將SNARK 轉(zhuǎn)換為zk-SNARK. 首先, 將Linear-PCP 轉(zhuǎn)換為L(zhǎng)IP 是自然的, 見(jiàn)定義19. 其次, 利用一種特殊的密碼編碼方法(可基于KEA 假設(shè)實(shí)現(xiàn), 其需具有單向性、允許公開(kāi)驗(yàn)證二次等式、保障證明者只能進(jìn)行線性運(yùn)算, 詳見(jiàn)第5.2.2 小節(jié)), 任意LIP 都可轉(zhuǎn)換為特定驗(yàn)證者的SNARK, 具有低度驗(yàn)證者(low-degree verifier) 的LIP 可轉(zhuǎn)換為公開(kāi)可驗(yàn)證的SNARK. 然后, 通過(guò)隨機(jī)化處理, SNARK 可轉(zhuǎn)換為zk-SNARK. 此外, Bitansky 等人給出了將若干具體PCP[59,99,100]轉(zhuǎn)換為L(zhǎng)inear-PCP 的方法. 基于Bitansky 等人構(gòu)造zk-SNARK 的思路, Ben-Sasson 等人[81]及Groth[52]通過(guò)構(gòu)造高效的Linear-PCP 和LIP 優(yōu)化了zk-SNARK 的理論和實(shí)際性能. 本文第5.3.1 小節(jié)介紹Pinocchio, 第5.3.2 小節(jié)介紹Groth16, 第5.3.3 小節(jié)介紹GKMMM18.

4.2.3 基于IPCP 的零知識(shí)證明

Ligero. Ligero 系列協(xié)議[35,36,48]均是基于IPCP 的零知識(shí)證明, 其也是利用MPC-in-the-Head的思想直接構(gòu)造了零知識(shí)的IPCP. 與基于PCP 的零知識(shí)證明不同, 基于IPCP 的零知識(shí)證明允許證明者生成諭示后根據(jù)驗(yàn)證者的隨機(jī)挑戰(zhàn)構(gòu)造新諭示并進(jìn)一步完成證明. 具體的, 在Ligero 系列協(xié)議中, 證明者首先利用RS 碼將證據(jù)編碼為一個(gè)m×n的矩陣, 然后根據(jù)驗(yàn)證者的隨機(jī)挑戰(zhàn)r ∈Fn計(jì)算矩陣行與r的線性組合返回給驗(yàn)證者, 驗(yàn)證者通過(guò)該線性組合驗(yàn)證協(xié)議的正確性, 協(xié)議的可靠性由RS 碼保障,零知識(shí)性由RS 碼和隨機(jī)掩藏多項(xiàng)式保障. 本文第8.3.3 小節(jié)介紹Ligero 和Ligero++, 第8.3.4 小節(jié)介紹BooLigero.

4.2.4 基于IOP 的零知識(shí)證明

Ben-Sasson、Chiesa 和Spooner[90]指出, 在ROM 下IOP 可以被轉(zhuǎn)換為非交互論證, 并可利用已有的零知識(shí)編譯方法, 構(gòu)造系統(tǒng)參數(shù)可公開(kāi)生成的簡(jiǎn)潔NIZKAoK. 同基于PCP 的零知識(shí)證明類似, 基于IOP 的零知識(shí)證明也具有僅需對(duì)稱密鑰操作、可抗量子的優(yōu)點(diǎn); 不同的是, 基于IOP 的零知識(shí)證明具有更好的性能[66,101]. 基于不同底層關(guān)鍵技術(shù)構(gòu)造IOP, 如sum-check 協(xié)議、RS 碼、MPC-in-the-Head 等可構(gòu)造性能不同的簡(jiǎn)潔NIZKAoK, 分列如下.

基于DEIP 的零知識(shí)證明. Sum-check 協(xié)議[63]可用于證明某函數(shù)的遍歷求和值等于公開(kāi)值(具體見(jiàn)定義30). Sum-check 協(xié)議本質(zhì)上屬于IOP, 其中P的證明諭示為g(x1,x2,··· ,x?),V的訪問(wèn)請(qǐng)求次數(shù)為1, 即g(r1,r2,··· ,r?). 基于sum-check 協(xié)議, Goldwasser、Kalai 和Rothblum[61]提出了一個(gè)針對(duì)分層算術(shù)電路求值問(wèn)題的交互式證明, 該協(xié)議由于證明和驗(yàn)證復(fù)雜度均較低, 故被稱為雙向高效的交互式證明(doubly efficient interactive proof, DEIP). 后續(xù)的研究如文獻(xiàn)[26–29,32,51] 利用Cramer 和Damg?rd 的轉(zhuǎn)換方法[102]將DEIP 轉(zhuǎn)換為簡(jiǎn)潔零知識(shí)知識(shí)論證, 并利用Fiat-Shamir 啟發(fā)式轉(zhuǎn)換為簡(jiǎn)潔NIZKAoK. 該類零知識(shí)證明的主要思路、構(gòu)造方法、性能表現(xiàn)和典型協(xié)議詳見(jiàn)第6 章.

Aurora. Aurora 由Ben-Sasson 等人[50]提出, 他們構(gòu)造了針對(duì)R1CS 可滿足問(wèn)題的IOP, 并利用已有的零知識(shí)編譯方法[101], 實(shí)現(xiàn)了證明復(fù)雜度為O(nlogn)、通信復(fù)雜度為O(logn)、驗(yàn)證復(fù)雜度為O(n) 的簡(jiǎn)潔NIZKAoK, 其中n為R1CS 可滿足問(wèn)題的規(guī)模. Aurora 的主要思路如下.

首先將R1CS 可滿足問(wèn)題轉(zhuǎn)換為兩種檢查, 即列檢查和行檢查. 其中, 列檢查為給定向量a,b,c ∈Fm×1, 檢查a ⊙b?=c; 行檢查為給定向量a,b ∈Fm×1及矩陣M ∈Fm×m, 檢查Mab. 顯然, R1CS可滿足問(wèn)題是可滿足的當(dāng)且僅當(dāng)對(duì)yA=Az,yB=Bz,yC=Cz的行檢查成立和對(duì)yA ⊙yB=yC的列檢查成立.

接著, 對(duì)于列檢查, Aurora 援引Ben-Sasson 和Sudan 的標(biāo)準(zhǔn)概率檢查方法[103]構(gòu)造了對(duì)應(yīng)的IOP,其主要思路如下. 對(duì)于任意的a ∈H,f(a)g(a)?h(a) = 0 等價(jià)于存在p(x), 使得f(x)g(x)?h(x) =p(x)ZH(x), 其中ZH(x) 是度為|H| 且在集合H上均為0 的唯一多項(xiàng)式, 則列檢查可等價(jià)轉(zhuǎn)換為對(duì)多項(xiàng)式p(x) 的低度檢查問(wèn)題, 即檢查碼p ∈RS[L,2ρ ?|H|/|L|]. 對(duì)于行檢查, 注意到其問(wèn)題形式為求和, 故可利用sum-check 協(xié)議; 然而與一般sum-check 協(xié)議不同的是, 行檢查的求和函數(shù)不是多變量而是單變量,sum-check 協(xié)議的核心思路是每輪將多變量求和函數(shù)轉(zhuǎn)換為單變量函數(shù), 針對(duì)單變量求和函數(shù)直接調(diào)用sum-check 協(xié)議是困難的. 基于此, Aurora 指出當(dāng)集合H是F 的陪集時(shí), 可構(gòu)造單變量求和驗(yàn)證協(xié)議, 并利用該協(xié)議構(gòu)造通信復(fù)雜度為O(logd) 的IOP, 其中d為求和函數(shù)的度. 最后, Aurora 利用Ben-Sasson等人的零知識(shí)編譯方法[101]實(shí)現(xiàn)了上述IOP 的零知識(shí)并最終構(gòu)造了簡(jiǎn)潔NIZKAoK.

Stark. Stark 由Ben-Sasson 等人[43]提出, 是一種針對(duì)可用對(duì)數(shù)空間可計(jì)算電路表示的陳述的非交互零知識(shí)論證, 比如隨機(jī)存取機(jī)(random access machine) 上的有界停機(jī)問(wèn)題(bounded halting problem). 給定一個(gè)程序P和時(shí)間上界T(n), 若其可用空間大小為O(logT(n)) 的電路表示, 則Stark可以證明“P可在T步內(nèi)接受”, 且生成證明的時(shí)間為O(TlogT), 證明的長(zhǎng)度為O(logT), 驗(yàn)證時(shí)間為O(|P|+poly logT), 這相比于平凡驗(yàn)證時(shí)間?(|P|+T) 有顯著優(yōu)化.

同Aurora 相比, Stark 僅支持均勻計(jì)算(uniform computation) 問(wèn)題, 而Aurora 可支持非均勻計(jì)算問(wèn)題(如非均勻電路). 事實(shí)上,O(|C|) 規(guī)模的C-SAT 問(wèn)題也可轉(zhuǎn)換為{|P|,T=?(|C|)}的有界停機(jī)問(wèn)題. 此時(shí), Stark 的證明復(fù)雜度為O(|C|log2|C|), 通信復(fù)雜度為O(log|C|), 驗(yàn)證復(fù)雜度為O(|C|). 由于Stark 不能直接針對(duì)C-SAT 問(wèn)題, 本文不再詳述.

Limbo. Limbo 由Guilhem、Orsini 和Tanguy[49]提出, 其拓展了Ligero 中的MPC 模型并基于IOP 實(shí)現(xiàn), 是一種雖然通信復(fù)雜度與電路規(guī)模成線性關(guān)系, 但是實(shí)際性能良好的NIZKAoK. 對(duì)于算術(shù)電路, 相比于文獻(xiàn)[33–36], Limbo 實(shí)現(xiàn)了針對(duì)中等規(guī)模C-SAT 問(wèn)題(乘法門少于500 000 個(gè)) 的最優(yōu)實(shí)際性能. 具體的, Limbo 給出了一個(gè)較為適合MPC-in-the-Head 的MPC 模型, 即客戶-服務(wù)器模型(client-server model), 然后基于該模型和IOP 實(shí)現(xiàn)了乘法門約束的高效驗(yàn)證進(jìn)而構(gòu)造了簡(jiǎn)潔NIZKAoK.本文第8.3.5 小節(jié)介紹Limbo.

4.3 本章小結(jié)

本章簡(jiǎn)要介紹了基于PCP、IPCP、Linear-PCP 和IOP 的零知識(shí)證明, 簡(jiǎn)單給出了若干典型協(xié)議的主要思路和底層關(guān)鍵技術(shù), 并指出了這些簡(jiǎn)潔非交互零知識(shí)證明的構(gòu)造方法——首先構(gòu)建信息論安全證明, 然后利用密碼編譯器將信息論安全證明轉(zhuǎn)換為簡(jiǎn)潔非交互零知識(shí)證明. 本書第5–8 章將以底層關(guān)鍵技術(shù)為線索, 較為詳細(xì)地介紹目前較為主流的幾種簡(jiǎn)潔非交互零知識(shí)證明.

5 基于QAP 的零知識(shí)證明

本章介紹基于二次算術(shù)程序(QAP) 的零知識(shí)證明. 該類零知識(shí)證明又被稱為zk-SNARK, 其均基于CRS 模型實(shí)現(xiàn)非交互. 從信息論安全證明的角度, zk-SNARK 是基于Linear-PCP[58,62]及LIP[58]實(shí)現(xiàn)的; 從密碼編譯器應(yīng)用的底層關(guān)鍵技術(shù)角度, 其大多利用QAP[19]將C-SAT 問(wèn)題歸約為一組多項(xiàng)式的約束并利用雙線性配對(duì)驗(yàn)證上述約束進(jìn)而實(shí)現(xiàn). 雖然早期的zk-SNARK[91,104]并不是基于QAP 實(shí)現(xiàn)的,并且Bitansky 等人[70]指出利用知識(shí)可提取假設(shè)就足以構(gòu)造zk-SNARK, 但是不論是在理論還是實(shí)際應(yīng)用層面, 大部分zk-SNARK 均是基于QAP 及其變種[19,20,22,105–110]實(shí)現(xiàn)的, 故本文將該類零知識(shí)證明稱為基于QAP 的零知識(shí)證明.

zk-SNARK 協(xié)議較多, 且Nitulescu[55]對(duì)zk-SNARK 已有較為詳細(xì)的介紹, 本文僅介紹若干典型協(xié)議,其性能表現(xiàn)、底層難題假設(shè)、關(guān)鍵技術(shù)等列于表4,zk-SNARK 的其他協(xié)議及具體細(xì)節(jié)可參考文獻(xiàn)[55].

表4 部分zk-SNARK 總結(jié)Table 4 Summary of several zk-SNARK

5.1 定義及概念

定義22(SNARG 與SNARK[25,58,81]) SNARG 是算法三元組∏=(Setup,Prove,Verify). 給定一個(gè)多項(xiàng)式時(shí)間內(nèi)可判定的二元關(guān)系R及其對(duì)應(yīng)的NP 語(yǔ)言L(R), 啟動(dòng)算法(σ,τ)←Setup(1λ,R) 以安全參數(shù)λ的一元表示和關(guān)系R為輸入,生成參考串σ和模擬陷門τ. 證明生成算法π ←Prove(R,σ,x,w)用于生成證明π. 驗(yàn)證算法0/1←Verify(R,σ,x,π) 用于驗(yàn)證證明.

稱三元組算法(Setup,Prove,Verify) 為公開(kāi)可信預(yù)處理SNARG (publicly verifiable preprocessing succinct non-interactive argument, SNARG) 當(dāng)如下條件滿足.

? 完備性. 對(duì)于任意的x ∈L(R), 若算法Setup 和Prove 正確運(yùn)行, 則驗(yàn)證者V一定會(huì)接受.

? 可靠性. 對(duì)于任意PPT 的P?, 任意的x/∈L(R),P?能使V接受的概率不超過(guò)negl(λ).

? 高效性. Setup 的運(yùn)行時(shí)間為poly(λ+|x|), Prove 的運(yùn)行時(shí)間為poly(λ+|x|), Verify 的運(yùn)行時(shí)間為poly(λ+|x|).

? 簡(jiǎn)潔性. 證明者發(fā)送的消息規(guī)模不超過(guò)poly(λ)(|x|+|w|)o(1).

如果Setup 的運(yùn)行時(shí)間為poly(λ+log|x|), 則稱一個(gè)SNARG 為完全簡(jiǎn)潔的(fully succinct)[111].SNARK (succinct non-interactive argument of knowledge) 是指具有(計(jì)算意義) 的知識(shí)可靠性的SNARG, zk-SNARK 是指具有零知識(shí)性的SNARK. 其中, (計(jì)算意義) 的知識(shí)可靠性是指如果敵手能夠生成一個(gè)針對(duì)某語(yǔ)言的有效證據(jù), 那么就存在一個(gè)多項(xiàng)式的提取器可將這個(gè)有效證據(jù)提取出來(lái), 且該提取器能夠訪問(wèn)敵手的任意狀態(tài). 具體而言, 知識(shí)可靠性是指對(duì)于任意的多項(xiàng)式敵手A, 都存在一個(gè)多項(xiàng)式時(shí)間的提取器XA, 使得下式成立

定義23(二次算術(shù)程序[19]) 二次算術(shù)程序(quadratic arithmetic program, QAP) 是二次張成程序(quadratic span program,QSP)[19]在算術(shù)電路上的自然擴(kuò)展,而后者是對(duì)張成程序(span program)[112]的擴(kuò)展. 域F 上的QAPQ= (t(z),U,W,У) 包含三組多項(xiàng)式U={uk(z)},W={wk(z)},У={yk(z)}(k ∈0∪[m]) 和目標(biāo)多項(xiàng)式t(z). 記公共輸入為(c1,c2,··· ,cN), 則稱Q是可滿足的當(dāng)且僅當(dāng)存在系數(shù)(cN+1,cN+2,··· ,cm) 使得t(z) 整除p(z), 其中

即存在多項(xiàng)式h(z) 使得p(z)?h(z)t(z)=0. 稱Q的規(guī)模為m,Q的度為t(z) 的度, 即d.

強(qiáng)QAP(strong QAP)[19]是指對(duì)于任意一組(a1,a2,··· ,am,b1,b2,··· ,bm,c1,c2,··· ,cm), 如果其構(gòu)成的p(z) 可被t(z) 整除, 則有(a1,a2,··· ,am)=(b1,b2,··· ,bm)=(c1,c2,··· ,cm), 其中

自然的, QAP 可視為3 組Linear-PCP, 每組訪問(wèn)請(qǐng)求次數(shù)為1.

5.2 背景及主要思路

5.2.1 背景

2006 年, Groth、Ostrovsky 和Sahai[115]利用雙線性配對(duì)構(gòu)造了第一個(gè)基于標(biāo)準(zhǔn)假設(shè)且通信復(fù)雜度為線性的非交互零知識(shí)證明. 2010 年, Groth[91]基于CRS 模型、q-PKE 假設(shè)和q-PDH 假設(shè), 利用雙線性配對(duì)實(shí)現(xiàn)了第一個(gè)不需依賴ROM 且通信量為42 個(gè)群元素的zk-SNARK. Groth 的核心思路是將C-SAT 問(wèn)題歸約為一組等式并利用雙線性配對(duì)驗(yàn)證等式成立, 然而該協(xié)議的CRS 規(guī)模和證明復(fù)雜度均為O(|C|2). Lipmaa[104]將上述協(xié)議的CRS 規(guī)模降低到了O(|C|log|C|), 但證明復(fù)雜度仍為O(|C|2).

2013 年, Gennaro 等人[19]提出了QAP, 其是一種新的NP 語(yǔ)言且利用QAP 可將算術(shù)電路可滿足問(wèn)題快速歸約為QAP 可滿足問(wèn)題, 即判斷是否存在一個(gè)多項(xiàng)式能夠被某個(gè)公開(kāi)確定多項(xiàng)式整除的問(wèn)題.Gennaro 等人利用強(qiáng)QAP 構(gòu)造了CRS 規(guī)模為O(|C|)、證明復(fù)雜度為O(|C|log|C|)、通信量為9 個(gè)群元素的zk-SNARK (記作GGPR13). 同年, Parno 等人[20]提出了Pinocchio, 在將通信量進(jìn)一步降低到了8 個(gè)群元素的同時(shí)弱化了GGPR13 對(duì)QAP 的限制, 即利用一般QAP 構(gòu)造了zk-SNARK, 這將GGPR13 中的CRS 規(guī)模降低了約2/3, 同時(shí)也降低了預(yù)處理時(shí)間和證明者計(jì)算開(kāi)銷. Pinocchio 具有良好的實(shí)際性能, 在一定程度上促使了零知識(shí)證明的落地應(yīng)用. Zcash[7]就是基于該類零知識(shí)證明[22]所構(gòu)造的一種隱私密碼貨幣, 能夠在防止雙花的同時(shí)實(shí)現(xiàn)交易的匿名性. 在Pinocchio 之后, 一系列研究著力于優(yōu)化該類零知識(shí)證明的實(shí)際性能[22,107–109]并應(yīng)用于不同場(chǎng)景中, 例如對(duì)認(rèn)證數(shù)據(jù)的隱私保護(hù)證明[108]、大數(shù)據(jù)計(jì)算[116,117]和可驗(yàn)證計(jì)算中. 特別的, 對(duì)于可驗(yàn)證計(jì)算, 其思路主要是先將C 語(yǔ)言程序轉(zhuǎn)換為某種編程語(yǔ)言(例如具有固定內(nèi)存訪問(wèn)和控制流的C 語(yǔ)言程序[20]、RISC[22,81]、RAM[65,116]等), 再將中間語(yǔ)言轉(zhuǎn)換為電路并調(diào)用針對(duì)電路可滿足問(wèn)題的零知識(shí)證明完成計(jì)算; 也有直接構(gòu)造針對(duì)算術(shù)電路變種(如集合電路[107]) 的零知識(shí)證明從而完成可驗(yàn)證計(jì)算的.

除了改進(jìn)zk-SNARK 的性能之外, 還有系列研究探討了zk-SNARK 的特征和性質(zhì). Gentry 和Wichs[25]指出基于黑盒歸約和可證偽假設(shè)無(wú)法構(gòu)造SNARG. Bitansky 等人[70]指出構(gòu)造zk-SNARK必須依賴于可提取抗碰撞哈希函數(shù), 同時(shí)文獻(xiàn)[111] 指出基于PCD 系統(tǒng)(proof-carrying data system),任何zk-SNARK 都可高效轉(zhuǎn)換為完全簡(jiǎn)潔的zk-SNARK. Groth[52]基于非對(duì)稱雙線性映射構(gòu)造了通信量?jī)H為3 個(gè)群元素、驗(yàn)證者計(jì)算開(kāi)銷為3 個(gè)配對(duì)運(yùn)算的zk-SNARK. 此外, Groth 還指出基于通用非對(duì)稱雙線性群模型(general asymmetric bilinear group model)[118]無(wú)法構(gòu)造通信復(fù)雜度為1 個(gè)群元素的zk-SNARK.

Linear-PCP. Bitansky 等人[58]指出, zk-SNARK 均是基于Linear-PCP 實(shí)現(xiàn)的, 其步驟如下. 首先將線性概率可驗(yàn)證證明轉(zhuǎn)換為線性交互式證明, 該轉(zhuǎn)換是自然的, 見(jiàn)定義19; 再將線性交互式證明轉(zhuǎn)換為SNARK, 利用一種特殊的密碼編碼方法(可基于指數(shù)知識(shí)假設(shè)假設(shè)實(shí)現(xiàn), 其需具有單向性、允許公開(kāi)驗(yàn)證二次等式、保障證明者只能進(jìn)行線性運(yùn)算, 詳見(jiàn)第5.2.2 小節(jié)), 任意LIP 都可轉(zhuǎn)換為特定驗(yàn)證者的SNARK, 具有低度驗(yàn)證者(low-degree verifier) 的LIP 可轉(zhuǎn)換為公開(kāi)可驗(yàn)證的SNARK; 最后通過(guò)引入隨機(jī)化處理, 可將SNARK 轉(zhuǎn)換為zk-SNARK. 此外, Bitansky 等人也給出了將若干具體PCP[59,99,100]轉(zhuǎn)換為L(zhǎng)inear-PCP 的方法. Bitansky 等人提供了一種構(gòu)造zk-SNARK 的新思路. 基于該種思路, Ben-Sasson 等人[81]及Groth[52]通過(guò)構(gòu)造高效Linear-PCP 和LIP 優(yōu)化了zk-SNARK 的理論和實(shí)際性能.

可更新的零知識(shí)證明. 上述zk-SNARK 存在兩個(gè)問(wèn)題, 第一個(gè)問(wèn)題是協(xié)議需要安全生成的公共參考串, 若公共參考串中含有的秘密信息被攻擊者獲知, 則整個(gè)協(xié)議就不再具備可靠性. 啟動(dòng)階段的私密性和區(qū)塊鏈的去中心化產(chǎn)生了較為嚴(yán)重的矛盾, 在一定程度上影響了zk-SNARK 的進(jìn)一步應(yīng)用. 為解決該問(wèn)題, Ben-Sasson 等人[79]和Bowe、Gabizon 及Green[80]指出可以利用安全多方計(jì)算生成公共參考串,但如何選擇參與方及如何保障安全性是一個(gè)新的難題. 第二個(gè)問(wèn)題是公共參考串與陳述是相關(guān)的, 即待證明陳述改變后需重新進(jìn)行預(yù)處理, 然而預(yù)處理階段的復(fù)雜度為O(|C|2log2|C|), 多次預(yù)處理會(huì)嚴(yán)重影響協(xié)議性能.

針對(duì)上述問(wèn)題, Groth 等人[41]基于QAP 提出了一種CRS 全局且可更新(updatable universal CRS)的zk-SNARK(記作GKMMM18). 可更新是指對(duì)CRS 安全性持懷疑態(tài)度的用戶可以發(fā)起對(duì)CRS的更新請(qǐng)求, 只要舊CRS 和更新發(fā)起者中有一個(gè)是誠(chéng)實(shí)的, 新CRS 就是安全的. 全局是指根據(jù)一個(gè)全局公共參考串可以生成多個(gè)針對(duì)具體電路的公共參考串, 其中全局公共參考串與待證明陳述獨(dú)立, 可預(yù)先生成; 針對(duì)具體電路的公共參考串與陳述相關(guān), 給定陳述后才能生成. GKMMM18 可根據(jù)O(|CM|2) 級(jí)別的全局CRS 生成O(|CM|) 級(jí)別的陳述相關(guān)CRS. 此外, Groth 等人還指出CRS 中僅含單項(xiàng)式的zk-SNARK 易實(shí)現(xiàn)可更新, 而CRS 中含有非單項(xiàng)式的zk-SNARK 難以實(shí)現(xiàn), 他們還證明了Pinocchio 無(wú)法實(shí)現(xiàn)可更新.

GKMMM18 雖然實(shí)現(xiàn)了全局可更新的CRS, 但一方面根據(jù)全局CRS 構(gòu)造陳述相關(guān)CRS 需進(jìn)行額外預(yù)處理, 另一方面更新CRS 需要平方級(jí)別的群冪運(yùn)算. 在此基礎(chǔ)上, Maller 等人[40]提出的Sonic 通過(guò)置換論證(permutation argument)、大積論證(grand-product argument)等技術(shù)在代數(shù)群模型(algebraic group model)[119]下實(shí)現(xiàn)了CRS 全局可更新的、規(guī)模為O(|C|)、不需額外預(yù)處理的簡(jiǎn)潔NIZKAoK. 后續(xù)的工作,如Plonk[23]、Marlin[42]和AuroraLight[120],改進(jìn)了Sonic 的實(shí)際性能,但也是基于代數(shù)群模型或知識(shí)假設(shè)實(shí)現(xiàn)的. 2020 年, Daza、Rafols 和Zacharakis[54]基于離散對(duì)數(shù)假設(shè)(見(jiàn)第7.1 節(jié)) 通過(guò)結(jié)構(gòu)化承諾密鑰改進(jìn)了內(nèi)積論證從而實(shí)現(xiàn)了CRS 可更新的簡(jiǎn)潔NIZKAoK (記作DRZ20). 值得注意的是,在這些可更新的零知識(shí)證明中, 只有GKMMM18 是基于QAP 的, 本文第5.3.3 小節(jié)介紹GKMMM18,第7.3.3 小節(jié)介紹DRZ20.

5.2.2 主要思路

本小節(jié)以Pinocchio[20]為例, 介紹zk-SNARK 的構(gòu)造思路. 首先介紹如何將C-SAT 問(wèn)題歸約為QAP 可滿足問(wèn)題, 然后介紹如何利用“掩藏” 編碼和雙線性配對(duì)實(shí)現(xiàn)針對(duì)QAP 可滿足問(wèn)題的zk-SNARK.

為了更好地理解“有貢獻(xiàn)” 的概念, 本小節(jié)在圖3 中給出一個(gè)例子. 對(duì)門r6的左輸入“有貢獻(xiàn)” 的是導(dǎo)線c1和c2, 故u1(r6) =u2(r6) = 1; 對(duì)門r5的左輸入“有貢獻(xiàn)” 的是導(dǎo)線c3, 故u3(r5) = 1.wi(rg)和yi(rg) 同理, 其分別考慮的是對(duì)門右輸入和輸出的貢獻(xiàn), 且度至少為d ?1.

圖3 算術(shù)電路可滿足問(wèn)題與QAP 可滿足問(wèn)題的歸約[19,20]Figure 3 Reduction from arithmetic C-SAT problem to QAP satisfiability problem

除QAP 外, 還可將C-SAT 問(wèn)題歸約為其他形式的可滿足問(wèn)題, 針對(duì)不同形式的具體問(wèn)題, 其歸約過(guò)程更為高效. 如針對(duì)布爾電路的QSP[19]、利用糾錯(cuò)碼構(gòu)造的高效QSP[105]及SSP (square span programs)[106]和針對(duì)算術(shù)電路的SAP (square arithmetic programs)[110]. 這些可滿足問(wèn)題的形式與QAP 可滿足問(wèn)題的形式類似, 且基于其構(gòu)造zk-SNARK 的思路也是類似的, 本文只詳細(xì)介紹QAP.

針對(duì)QAP 可滿足問(wèn)題構(gòu)造zk-SNARK 的主要思路. 針對(duì)QAP 可滿足問(wèn)題構(gòu)造zk-SNARK 的主要思路列于圖4. 直接證明多項(xiàng)式p(z) 可被t(z) 整除可能是困難的, 而這可等價(jià)轉(zhuǎn)換為證明者證明其擁有p(z) 和h(z), 且p(z) =h(z)t(z). 由于u(z)、w(z)、y(z) 和t(z) 可由驗(yàn)證者根據(jù)電路結(jié)構(gòu)自行計(jì)算, 因此證明者可發(fā)送(cN+1,cN+2,··· ,cm) 及h(z). 然而, 考慮到h(z) 的度約為d, 直接發(fā)送h(z)將導(dǎo)致O(|CM|) 級(jí)別的通信復(fù)雜度. 利用Schwartz-Zippel 引理可將傳輸多項(xiàng)式簡(jiǎn)化為傳輸多項(xiàng)式在某點(diǎn)的取值進(jìn)而降低通信復(fù)雜度, 即驗(yàn)證者V挑選隨機(jī)挑戰(zhàn)s$←?F, 隨后P返回p(s) 和h(s),V驗(yàn)證p(s)?h(s)t(s)0.

圖4 針對(duì)QAP 可滿足問(wèn)題構(gòu)造zk-SNARK 的主要思路[19,20]Figure 4 Main idea of constructing zk-SNARK for QAP satisfiability problem

然而, 上述方法既需要交互, 又不能保障惡意證明者在獲知s后無(wú)法偽造p(s) 和h(s). 前者可通過(guò)CRS 解決, 但在CRS 中直接存儲(chǔ)s仍無(wú)法解決后者, 因此需引入某種編碼方式“掩藏”s. 需要注意的是, 若記該“掩藏” 方式為Enc, 則Enc 至少需具備四個(gè)特點(diǎn), 一是Enc(s) 具有一定的單向性, 獲取Enc(s) 難以推知s; 二是為了實(shí)現(xiàn)公開(kāi)可驗(yàn)證的zk-SNARK, CRS 中不能存儲(chǔ)秘密而只能存儲(chǔ)公共信息, 如Enc(1),Enc(s),··· ,Enc(sd?1); 三是利用Enc(1),Enc(s),··· ,Enc(sd?1) 可構(gòu)造多項(xiàng)式Enc(h(s)),Enc(p(s)),Enc(t(s)), 即Enc 支持線性運(yùn)算; 四是Enc 需支持二次等式的驗(yàn)證, 該運(yùn)算用于驗(yàn)證Enc(p(s)?h(s)t(s))Enc(0). 事實(shí)上, 給定素?cái)?shù)階p的循環(huán)群G,GT, 若有雙線性映射e:G×G→GT且對(duì)于任意的a,b ∈Zp有e(ga,gb)=e(g,g)ab, 則Enc(a)=ga即可滿足上述要求.

上述方法仍存在幾個(gè)問(wèn)題. 一是無(wú)法保障知識(shí)可靠性, 即無(wú)法保障證明者確實(shí)利用了 (cN+1,cN+2,··· ,cm) 構(gòu)造Enc(p(s)), 而知識(shí)可靠性可基于q-PKE 假設(shè)得以保障; 二是可能無(wú)法保障零知識(shí)性, 驗(yàn)證者雖難以通過(guò)Enc(p(s)) 和Enc(h(s)) 直接推知私密信息, 但仍可能獲知某些隱私信息, 這可通過(guò)隨機(jī)化處理p(s) 從而實(shí)現(xiàn)統(tǒng)計(jì)意義的零知識(shí)性.

基于以上思路可構(gòu)造通信復(fù)雜度為常數(shù)個(gè)群元素的零知識(shí)證明, 具體見(jiàn)第5.3 節(jié).

5.3 典型協(xié)議分析

本節(jié)介紹基于QAP 的零知識(shí)證明典型協(xié)議(見(jiàn)圖5), 分析各協(xié)議的構(gòu)造思路、協(xié)議流程、復(fù)雜度及安全性. 本節(jié)第5.3.1 小節(jié)介紹Pinocchio, 第5.3.2 小節(jié)介紹Groth16, 第5.3.3 小節(jié)介紹GKMMM18.

圖5 基于QAP 的部分零知識(shí)證明協(xié)議優(yōu)化思路Figure 5 Optimization of several zero-knowledge proof based on QAP

5.3.1 Pinocchio

Pinocchio 由Parno 等人[20]提出, 其通信復(fù)雜度為8 個(gè)群元素, 且驗(yàn)證復(fù)雜度僅與輸入輸出成線性關(guān)系. 本小節(jié)簡(jiǎn)要介紹Pinocchio 的主要思路、協(xié)議流程(見(jiàn)協(xié)議1) 和復(fù)雜度及安全性.

協(xié)議1 Pinocchio [20]公共輸入: 域F, 算術(shù)電路C : F|x|+|w| →F|y|. 其中(x,y) = (c1,c2,··· ,cN), |x|+|y| = N.證明者秘密輸入: w = (cN+1,cN+2,··· ,cm), 記集合Imid = {N +1,N +2,··· ,m}.1. 可信初始化階段.(1) 由可信第三方將算術(shù)電路C 的可滿足性問(wèn)題歸約為QAP 可滿足問(wèn)題, 構(gòu)造對(duì)應(yīng)QAP 串(t(z),U,W,У),其規(guī)模為m, 度為d.(2) 由可信第三方生成相應(yīng)參數(shù). 生成生成元為g 的群G 及雙線性映射群GT. 選取隨機(jī)數(shù)ru,rw,ry,s,αu,αw,αy,β,γ$←?F 并令ry ←rurw,gu ←gru,gw ←grw,gy ←gry.(3) 由可信第三方生成公共參考字符串. 證明者P 的參考串為{guk(s)}{}{}u ,gwk(s)w ,gyk(s)y ,{k∈Imid k∈Imid k∈Imid gαuuk(s)}{}{}u gαwuk(s)k∈Imid,w gαyuk(s)y{gsi}{k∈Imid,}k∈Imid,i∈0∪[d?2],gβuk(s)ugβwk(s)wgβyk(s)y k∈Imid,u,gαwt(s)w,gαyt(s)y,gβt(s)u,gβt(s)w,gβt(s)y.驗(yàn)證者V 的參考串為gαut(s)()g,gαu,gαw,gαy,gγ,gβγ,gt(s)y ,{guk(s)u,gwk(s)w,gyk(s)y}k∈0∪[N].2. 證明者P 生成證明. P 首先選取δu,δw,δy$←?F, 然后他利用證據(jù)w 構(gòu)造p(z) 并計(jì)算p′(z) ←(u0(z)+uio(z)+umid(z)+δut(z))·(w0(z)+wio(z)+wmid(z)+δwt(z))?(y0(z)+yio(z)+ymid(z)+δyt(z)),h′(z) ←p′(z)/t(z),其中, umid(z) = ∑k∈Imid ck ·uk(z), wmid(z) 和ymid(z) 同理. P 利用參考串生成證明π(gu′mid(s)u,gw′mid(s)w,gy′mid(s)y,gαuu′mid(s)u,gαww′mid(s)w,gαyy′mid(s)y,gh′(s),gβu′mid(s)ugβw′mid(s)wgβy′mid(s)y),}其中, u′mid(s) = umid(s)+δut(s), 可根據(jù){mid(s),y′mid(s) 同理. 記h′(z) = ∑d?2 guk(s)u k∈Imid計(jì)算得出, w′i=0 h′izi, 則gh′(s) 可由∏di=1(gsi)h′i 計(jì)算得出.3. 驗(yàn)證者V 驗(yàn)證證明. 記V 收到的證明為π = (gUmid,gWmid,gYmid,g?Umid,g?Wmid,g?Ymid,gH,gZ), 則V 進(jìn)行如下三項(xiàng)檢查.(1) V 檢查P 可以構(gòu)造Umid, 即P 擁有Umid 的系數(shù). Wmid,Ymid 同理. 具體的, V 檢查e(g?Umid(((((u,g) ?=e gUmid u,gαu),e g?Wmid w,g) ?=e gWmid w,gαw),e g?Ymid y,g) ?=e gYmid y,gαy).(2) V 檢查t(s) 可以整除p(s). 具體的, V 先計(jì)算guio(s)u←∏(k∈[N]guk(s)u)ck, gwio(s)w,gyio(s)y同理.V 隨后驗(yàn)證e(gu0(s)uguio(s)ugUmidu,gw0(s)wgwio(s)wgWmidw) ?= e(gt(s)y ,gH)()e gy0(s)ygyio(s)ygYmidy,g .(3) V 檢查Umid,Wmid,Ymid 是由同一組系數(shù)生成的. 具體的, V 檢查e(gZ,gγ) ?= e(gUmid ugWmidwgYmidy,gβγ).輸出: 比特b, 當(dāng)且僅當(dāng)上述三項(xiàng)檢查均通過(guò), 輸出b = 1; 否則輸出b = 0.

協(xié)議流程. Pinocchio 的協(xié)議流程如協(xié)議1 所示. 在可信初始化階段, 由可信第三方將C-SAT 問(wèn)題歸約為QAP 可滿足問(wèn)題, 并生成證明者和驗(yàn)證者的公共參考串. 在生成證明階段, 證明者利用證據(jù)w生成證明π, 其規(guī)模為8 個(gè)群元素. 在驗(yàn)證證明階段, 驗(yàn)證者共需驗(yàn)證五個(gè)配對(duì)等式, 其中第一項(xiàng)檢查用于驗(yàn)證證明者確實(shí)擁有Umid(s)、Wmid(s) 和Ymid(s) 的系數(shù); 第二項(xiàng)檢查用于驗(yàn)證t(s) 可以整除p(s); 第三項(xiàng)檢查用于驗(yàn)證Umid、Wmid和Ymid是由同一組系數(shù)生成的.

討論總結(jié). 現(xiàn)簡(jiǎn)要分析Pinocchio 可被視為基于Linear-PCP 構(gòu)造的原因. 首先, 可以認(rèn)為諭示證明是

因此可被視為是一種PCP. 另外, 顯然證明π與證明者的參考串存在線性關(guān)系, 因此Pinocchio 可被視為基于Linear-PCP 構(gòu)造.

接著分析Pinocchio 的復(fù)雜度和安全性. 首先分析復(fù)雜度. 在預(yù)處理階段, 將算術(shù)電路可滿足問(wèn)題歸約為QAP 可滿足問(wèn)題, 其主要開(kāi)銷為根據(jù)點(diǎn)值構(gòu)造度為d的共3m個(gè)多項(xiàng)式, 若利用FFT 計(jì)算拉格朗日插值[121], 該階段的計(jì)算開(kāi)銷為O(mdlog2d)

接著分析安全性. 基于d-PKE、q-PDH 和2q-SDH 假設(shè),Pinocchio 可被證明是知識(shí)可靠的[20]. 其中d-PKE 假設(shè)可保障證明者P擁有證據(jù)w=(cN+1,cN+2,··· ,cm) (協(xié)議1 第3 步的(1)),q-PDH 假設(shè)和2q-SDH 假設(shè)可保障知識(shí)可靠性. 對(duì)于零知識(shí)性, Pinocchio 通過(guò)隨機(jī)化處理umid(z), 即引入δut(z)(wmid(z),ymid(z) 同理) 從而實(shí)現(xiàn)了統(tǒng)計(jì)意義的零知識(shí)性.

5.3.2 Groth16

在限定敵手只能進(jìn)行線性/仿射運(yùn)算的情況下, Groth[52]基于QAP 構(gòu)造了通信量?jī)H為3 個(gè)元素的LIP, 并基于該LIP 構(gòu)造了通信量為3 個(gè)群元素、驗(yàn)證者計(jì)算開(kāi)銷僅為4 個(gè)配對(duì)運(yùn)算的zk-SNARK (記為Groth16). 現(xiàn)介紹Groth16 的主要思路、協(xié)議流程并分析復(fù)雜度和安全性.

主要思路. Bitansky 等人[58]指出zk-SNARK 均可視為基于Linear-PCP 和LIP 實(shí)現(xiàn)的, 在此基礎(chǔ)上Groth 給出了一個(gè)更為詳細(xì)的LIP 定義.

給定形式如下的算法三元組(Setup,Prove,Verify), 如果其具有完美完備性和統(tǒng)計(jì)意義的知識(shí)可靠性(對(duì)于只能進(jìn)行線性/仿射運(yùn)算的敵手), 則稱該算法組是LIP.

? (σ,τ)←Setup(1λ,R). 參數(shù)生成算法以安全參數(shù)λ的一元表示和NP 關(guān)系R為輸入, 生成參考串σ和模擬陷門τ.

?π ←Prove(R,σ,x,w). 證明生成算法分為兩步, 首先運(yùn)行Π←ProofMatrix(R,x,w) 生成矩陣Π, 其中ProofMatrix 為PPT 的矩陣生成算法, 然后計(jì)算證明π ←Πσ.

? 0/1←Verify(R,σ,x,π). 驗(yàn)證算法分為兩步, 首先運(yùn)行確定性多項(xiàng)式算法Test(R,x) 生成函數(shù)t(·)←Test(R,x), 然后驗(yàn)證者檢查t(σ,π)?=0, 當(dāng)且僅當(dāng)其為0 時(shí)接受, 否則拒絕.

在此基礎(chǔ)上, 如果LIP 具有完美零知識(shí)性, 則可利用其構(gòu)造zk-SNARK. 其中, 完美零知識(shí)性是指存在PPT 算法Sim, 使得對(duì)于任意的R及(x,w)∈R, 對(duì)于任意的敵手A, 都有

協(xié)議流程Groth16 的協(xié)議流程如協(xié)議2 所示, 其與對(duì)應(yīng)的零知識(shí)LIP 的區(qū)別僅在于前者引入了雙線性配對(duì)用于驗(yàn)證t(σ,π)?=0 (即協(xié)議2 第3 步V檢查).

討論總結(jié). 首先分析安全性. 上述論證可以證明具有完美完備性和完美零知識(shí)性, 在敵手只能進(jìn)行線性/仿射運(yùn)算的情況下, 該論證可被證明是統(tǒng)計(jì)意義知識(shí)可靠的. 完美完備性來(lái)源于零知識(shí)LIP. 由于r1,r2的隨機(jī)性, 真實(shí)證明中的A、B和模擬器生成的A、B是分布一致的, 又C由A、B確定, 因此完美零知識(shí)性得以保障. 現(xiàn)簡(jiǎn)要分析知識(shí)可靠性.

考慮不加隨機(jī)數(shù)r1,r2的版本, 對(duì)于只能進(jìn)行線性/仿射運(yùn)算的敵手, 其偽造證據(jù)A′的形式為

其次分析復(fù)雜度. Groth16 的參考串包含(m+2d+2) 個(gè)G1群中的元素和(d+3) 個(gè)G2群中的元素. 證明者計(jì)算開(kāi)銷主要為計(jì)算證明π, 具體為O(|C|) 次群上運(yùn)算. 通信復(fù)雜度為2 個(gè)G1群中的元素和1 個(gè)G2群中的元素. 驗(yàn)證者計(jì)算開(kāi)銷為4 次配對(duì)運(yùn)算.

協(xié)議2 Groth16 [52]公共輸入: 域F, 算術(shù)電路C : F|x|+|w| →F|y|. 其中(x,y) = (c1,c2,··· ,cN), |x|+|y| = N.證明者秘密輸入: w = (cN+1,cN+2,··· ,cm), 記集合Imid = {N +1,N +2,··· ,m}, 顯然有|w| = |Imid|.1. 可信初始化階段.(1) 由可信第三方將算術(shù)電路C 的可滿足性問(wèn)題歸約為QAP 可滿足問(wèn)題. 根據(jù)電路C 構(gòu)造對(duì)應(yīng)的QAP 串(t(z),U,W,У), 其規(guī)模為m, 度為d.(2) 由可信第三方生成相應(yīng)參數(shù). 生成生成元為g、h 的群G1、G2 及雙線性映射群GT. 映射e 定義為e : G1 ×G2 →GT. 記[a]1 為ga, [b]2 為hb, [c]T 為e(g,h)c. 選取隨機(jī)數(shù)α,β,γ,δ,s$←?F.(3) 由可信第三方生成公共參考字符串σ = ([σ1]1,[σ2]2) 和模擬陷門τ = (α,β,δ,γ,s). 其中{βui(s)+αwi(s)+yi(s)}N■■■α,β,δ,{si}d?1 i=0 ,{σ1 ={βui(s)+αwi(s)+yi(s)}m γ{sit(s)}d?2 i=0■■■,σ2 = (β,γ,δ,δ i=N+1,δ si}d?1 i=0).i=0 2. 證明者P 生成證明. P 隨機(jī)挑選r1,r2$←?F 并計(jì)算證明π = ([A]1,[C]1,[B]2), 其中A = α+m∑ciui(s)+r1δ,B = β +m∑ciwi(s)+r2δ,i=0 i=0+Ar2 +Br1 ?r1r2δ.3. 驗(yàn)證者V 驗(yàn)證證明. V 檢查e([A]1,[B]2)?= e([α]1,[β]2)e C =∑m i=N+1 ci(βui(s)+αwi(s)+yi(s))+h(s)t(s)δ( N∑ci[βui(s)+αwi(s)+yi(s))]1,[γ]2 e([C]1,[δ]2).i=0 γ輸出: 比特b, 當(dāng)且僅當(dāng)上述檢查通過(guò), 輸出b = 1; 否則輸出b = 0.

5.3.3 GKMMM18

然而, 針對(duì)包含多項(xiàng)式的CRS 實(shí)現(xiàn)可更新性是困難的. 考慮對(duì)gf(s)的更新, 若隨機(jī)選取δ并將舊CRS 更新為gf(s)δ, Groth 等人證明了任意可完成上述更新的敵手都可提取出單項(xiàng)式(g,gsδ,··· ,gsnδ),依據(jù)這些單項(xiàng)式, 敵手可破壞Pinocchio 等zk-SNARK 的知識(shí)可靠性.

針對(duì)上述問(wèn)題, Groth 等人采用了一種與 Pinocchio 及 Groth16 不同的證明方法. 考慮一個(gè)QAPQ= (t(z),U,W,У), 由于CRS 中不能包含多項(xiàng)式, 因此無(wú)法繼續(xù)使用之前基于QAP 的方法, 即通過(guò)隨機(jī)挑選s構(gòu)造與QAP 對(duì)應(yīng)的多項(xiàng)式編碼進(jìn)而驗(yàn)證正確性. GKMMM18 采用了與BCCGP16[30]、Bulletproofs[31]等基于IPA 的零知識(shí)證明(見(jiàn)第7 章) 相似的方法, 即通過(guò)為QAP 中等式的每一項(xiàng)分別乘以變量n的某次冪從而將QAP 可滿足問(wèn)題轉(zhuǎn)換為另外一個(gè)多項(xiàng)式是否為零多項(xiàng)式的問(wèn)題. 具體的, 考慮多項(xiàng)式

若隨機(jī)選取s、r, 計(jì)算等式(15)中f(s,r)·f(s,r) 可知,r7項(xiàng)的系數(shù)為

其中c0= 0, 而這恰為QAP 可滿足問(wèn)題的形式. 可以證明, 基于q階單項(xiàng)式知識(shí)假設(shè)(q-monomial knowledge assumption) 和q階單項(xiàng)式計(jì)算假設(shè)(q-monomial computational assumption)[41], 給定不含r7項(xiàng)的CRS, 若證明者可生成證明gA且有e(gf(s,r),hf(s,r)) =e(gA,h), 則可說(shuō)明他擁有(cN+1,cN+2,··· ,cm). 類似的, 為說(shuō)明gf(s,r)是正確構(gòu)造的, 可引入另一個(gè)新變量w構(gòu)造一個(gè)多項(xiàng)式f2(z,n,w) 使得當(dāng)且僅當(dāng)f(s,r) 正確構(gòu)造時(shí)該多項(xiàng)式的某一特定項(xiàng)系數(shù)為0, 然后給定不含該特定項(xiàng)單項(xiàng)式的CRS, 利用雙線性配對(duì)驗(yàn)證該多項(xiàng)式特定項(xiàng)系數(shù)確實(shí)為0. 在全局CRS 中,s、r、q分別對(duì)應(yīng)于變量z、r、w.

在針對(duì)具體關(guān)系構(gòu)造zk-SNARK 時(shí), 需要對(duì)全局CRS 進(jìn)行處理從而生成新的針對(duì)具體關(guān)系的CRS.與Pinocchio 等協(xié)議類似, 其生成方式也是構(gòu)造用于驗(yàn)證QAP 的系列多項(xiàng)式, 其規(guī)模也為O(|C|) 級(jí)別的群元素.

協(xié)議流程. 在生成針對(duì)具體關(guān)系的CRS 后, GKMMM18 的協(xié)議流程簡(jiǎn)述如下.

(1) 在給定QAP 四元組(t(z),U,W,У) 及群上生成元g1,g2后, 證明者P計(jì)算

其中多項(xiàng)式f3(s,r,q) 用于輔助驗(yàn)證f2(s,r,q) 中某一特定項(xiàng)系數(shù)為0.

(2) 在收到證明π=(A,B,C) 后, 驗(yàn)證者驗(yàn)證

討論總結(jié). 首先分析安全性. 基于q階單項(xiàng)式知識(shí)假設(shè)和q階單項(xiàng)式計(jì)算假設(shè)[41], 如果驗(yàn)證者所驗(yàn)證的第二個(gè)等式成立, 那么可以得出證明者擁有形式正確的f(s,r,q) 且他擁有QAP 可滿足問(wèn)題的解, 即GKMMM18 可被證明具有知識(shí)可靠性. 另外, 由于δ的均勻隨機(jī)性, 可以證明GKMMM18 具有完美零知識(shí)性.

其次分析復(fù)雜度. 如前文所述, GKMMM18 的全局CRS 規(guī)模為O(|CM|2) 級(jí)別的群元素, 針對(duì)具體關(guān)系的CRS 規(guī)模為O(|C|) 級(jí)別的群元素. 與Groth16 類似, GKMMM18 的通信復(fù)雜度也為3 個(gè)群元素, 證明復(fù)雜度也為O(|C|) 級(jí)別的群冪運(yùn)算, 但驗(yàn)證復(fù)雜度比Groth16 多了一個(gè)配對(duì)運(yùn)算.

5.4 總結(jié)

zk-SNARK 的通信復(fù)雜度為常數(shù)個(gè)群元素, 驗(yàn)證復(fù)雜度也可降低到常數(shù)個(gè)配對(duì)運(yùn)算, 與區(qū)塊鏈低存儲(chǔ)、高吞吐的需求相契合, 大部分隱私保護(hù)應(yīng)用如Zcash、以太坊擴(kuò)容方案等也都是基于zk-SNARK 實(shí)現(xiàn)的. 然而, zk-SNARK 需基于不可證偽的非標(biāo)準(zhǔn)假設(shè), 并且啟動(dòng)階段的系統(tǒng)參數(shù)必須依賴可信第三方生成. 為解決這些問(wèn)題, 出現(xiàn)了CRS 可更新的零知識(shí)證明, 還出現(xiàn)了系列底層假設(shè)更通用、啟動(dòng)階段系統(tǒng)參數(shù)可公開(kāi)生成的零知識(shí)證明, 這也被稱為透明的zk-SNARK (transparent zk-SNARK), 本文將在第6–8章分別介紹三種啟動(dòng)階段系統(tǒng)參數(shù)可公開(kāi)生成的零知識(shí)證明.

6 基于DEIP 的零知識(shí)證明

本章介紹基于雙向高效交互式證明(DEIP) 的零知識(shí)證明. 該類協(xié)議的核心思路是利用同態(tài)承諾、多項(xiàng)式承諾、隨機(jī)掩藏多項(xiàng)式等技術(shù)將已有的針對(duì)電路求值問(wèn)題的DEIP 轉(zhuǎn)換為簡(jiǎn)潔NIZKAoK. 本章第6.1 節(jié)介紹相關(guān)定義及概念, 第6.2 節(jié)介紹背景及主要思路, 第6.3 節(jié)介紹典型協(xié)議.

6.1 定義及概念

多項(xiàng)式承諾(polynomial commitment, PC)[122]是對(duì)多項(xiàng)式的承諾. 除具有隱藏性和綁定性外, 發(fā)送者還可向接收者證明多項(xiàng)式f(·) 在某個(gè)由接收者隨機(jī)選取的點(diǎn)t上的取值為y, 即f(t)=y. 本章涉及的多項(xiàng)式承諾均是針對(duì)多變量多項(xiàng)式的, 且允許交互(是Bünz 等人[123]對(duì)文獻(xiàn)[122] 中多項(xiàng)式承諾的擴(kuò)展).

定義27(多項(xiàng)式承諾[27,123]) 一個(gè)多變量多項(xiàng)式承諾方案PC = (Setup,Com,Open,Eval) 由以下4個(gè)算法組成.

? pp←Setup(1λ,?,d): 參數(shù)生成算法. 以安全參數(shù)λ的一元表示、多項(xiàng)式變量參數(shù)?和度參數(shù)d為輸入, 輸出公共參數(shù)pp.

? (c,s)←Com(pp,f(·)): 多項(xiàng)式承諾算法. 以公共參數(shù)pp 和多項(xiàng)式f(·) 為輸入, 輸出承諾c和打開(kāi)提示s.

?b ←Open(pp,c,f(·),s): 多項(xiàng)式承諾打開(kāi)算法. 給定公共參數(shù)pp、承諾c、多項(xiàng)式f(·) 和打開(kāi)提示s, 打開(kāi)并驗(yàn)證承諾c的正確性, 輸出接受(b=1) 或拒絕(b=0).

?b ←Eval(pp,c,t,y,?,d;f(·),s): 求值計(jì)算協(xié)議. PC.Eval 是一個(gè)交互式公開(kāi)拋幣協(xié)議, 擁有隱私輸入f(·) 和s的證明者向驗(yàn)證者證明f(t)=y.V輸出接受(b=1) 或拒絕(b=0).

如果一個(gè)PC 的求值計(jì)算協(xié)議是知識(shí)可提取的(見(jiàn)定義14), 則稱該P(yáng)C 是可提取的. 如果一個(gè)可提取PC 的求值計(jì)算協(xié)議是零知識(shí)知識(shí)論證, 且具有統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性, 則稱該P(yáng)C 是零知識(shí)的,記為zk-PC.

在本章中, PC 的主要作用是實(shí)現(xiàn)傳輸多項(xiàng)式的簡(jiǎn)潔性, 與PC 相同作用的另一個(gè)概念是可驗(yàn)證多項(xiàng)式委托(verifiable polynomial delegation, VPD)[124], 其允許用戶將多項(xiàng)式f(·) 在若干點(diǎn)的求值計(jì)算外包給服務(wù)者, 同時(shí)服務(wù)者提供一個(gè)證明用以證明求值計(jì)算的正確性.

定義28(可驗(yàn)證多項(xiàng)式委托[28,51,125]) 一個(gè)針對(duì)多變量多項(xiàng)式f(·) 的可驗(yàn)證多項(xiàng)式委托VPD =(Setup,Com,Eval,Verify) 由以下4 個(gè)算法組成.

? (pp,vp)←Setup(1λ,?,d): 參數(shù)生成算法. 以多項(xiàng)式變量參數(shù)λ的一元表示、多項(xiàng)式變量參數(shù)?和度參數(shù)d為輸入, 輸出公共參數(shù)pp 和驗(yàn)證陷門vp.

?c ←Com(pp,f(·)): 多項(xiàng)式承諾算法. 以公共參數(shù)pp 和多項(xiàng)式f(·) 為輸入, 輸出承諾c.

? (y,π)←Eval(pp,f(·),t,r): 求值計(jì)算算法. 以公共參數(shù)pp、多項(xiàng)式f(·)、多項(xiàng)式上的點(diǎn)t和隨機(jī)挑戰(zhàn)r為輸入, 計(jì)算y=f(t), 輸出求值y及證明π.

?b ←Verify(vp,c,y,t,π,r): 驗(yàn)證算法. 以驗(yàn)證陷門vp、承諾c、求值y、多項(xiàng)式上的點(diǎn)t、求值證明π和隨機(jī)挑戰(zhàn)r為輸入, 驗(yàn)證求值計(jì)算的正確性, 并輸出接受(b=1) 或拒絕(b=0).

如果一個(gè)VPD 的求值計(jì)算算法不直接輸出y而是輸出對(duì)y的承諾comy(其能夠“零知識(shí)地” 隱藏y且π可支持驗(yàn)證comy確實(shí)是對(duì)f(·) 的承諾), 則稱該VPD 是零知識(shí)的, 記為zk-VPD.

定義28中的VPD 需要驗(yàn)證陷門vp, 因此啟動(dòng)階段系統(tǒng)參數(shù)的生成須保持私密, 具體方案見(jiàn)文獻(xiàn)[26,51]; 也有不需驗(yàn)證陷門的VPD, 其系統(tǒng)參數(shù)可公開(kāi)生成, 具體方案見(jiàn)文獻(xiàn)[28,29].

r1,r2,··· ,ri?1由V在前i ?1 輪分別隨機(jī)選取, 且可最終歸約為對(duì)g(r) =g(r1,r2,··· ,r?) 的聲明, 其中r ∈F?. 當(dāng)V擁有g(shù)(·) 時(shí), 可自行計(jì)算g(r); 當(dāng)g(·) 是秘密時(shí),V可通過(guò)對(duì)諭示g(·) 的訪問(wèn)請(qǐng)求得到g(r). 該證明共有?輪, 可靠性誤差為O(m?/|F|) (由Schwartz-Zippel 引理保障), 通信量為O(m?) 個(gè)域元素, 驗(yàn)證者計(jì)算開(kāi)銷為O(m?) 級(jí)別的域上運(yùn)算, 證明者計(jì)算開(kāi)銷為O(2?) 級(jí)別的域上運(yùn)算[126]. 相比于平凡計(jì)算求和函數(shù)的復(fù)雜度O(2?), sum-check 協(xié)議的驗(yàn)證復(fù)雜度有顯著降低.

6.2 背景及主要思路

6.2.1 背景

針對(duì)分層算術(shù)電路求值問(wèn)題的雙向高效交互式證明. Goldwasser 等人[61]利用sum-check 協(xié)議為核心組件, 提出了一個(gè)針對(duì)分層算術(shù)電路求值問(wèn)題的的交互式證明. 由于證明和驗(yàn)證復(fù)雜度均較低, 該類協(xié)議又被稱為雙向高效的交互式證明(DEIP). 之后, Cormode 等人[60]利用多變量線性擴(kuò)展代替了上述協(xié)議中的低度擴(kuò)展(low-degree extension), 將上述協(xié)議的證明復(fù)雜度從O(poly|C|) 降低為O(|C|log|C|).后續(xù)對(duì)證明復(fù)雜度的一系列改進(jìn)大多是在具有特殊結(jié)構(gòu)的分層電路基礎(chǔ)上實(shí)現(xiàn)的. 對(duì)于常規(guī)電路(regular circuit)[60], 即電路謂詞(wiring predicates, 見(jiàn)第6.2.2 小節(jié)) 在任意點(diǎn)的取值都可在O(poly log|C|) 級(jí)別時(shí)間、O(log|C|) 級(jí)別空間內(nèi)可計(jì)算的電路(對(duì)數(shù)空間均勻電路就是一種常規(guī)電路), Thaler[126]指出證明復(fù)雜度可以降低到O(|C|); 對(duì)于有著許多規(guī)模為|C′| 的相同子電路的數(shù)據(jù)并行電路(data parallel circuit), Thaler 同時(shí)指出證明復(fù)雜度可以降低到O(|C|log|C′|), 在此基礎(chǔ)上, Wahby 等人[127]將證明復(fù)雜度繼續(xù)降低到了O(|C|+|C′|log|C′|); 對(duì)于有著許多不直接連接且互不相同的子電路的電路, Zhang等人[125]提出了一種證明復(fù)雜度為O(|C|log|C′|) 的DEIP. 對(duì)于任意的分層算術(shù)電路, Xie 等人[26]提出了一種證明復(fù)雜度為O(|C|) 的變種DEIP. 需要注意的是, 上述協(xié)議所基于的電路均是分層算術(shù)電路.

交互式證明與零知識(shí)證明的轉(zhuǎn)換. Cramer 等人[102]及Ben-Or 等人[128]給出了利用同態(tài)承諾將交互式證明轉(zhuǎn)換為計(jì)算零知識(shí)證明或完美零知識(shí)論證的通用方法. 其核心思路是將交互式證明中證明者發(fā)送的信息用同態(tài)承諾掩藏. 該方案的安全性支撐有三:

(1) 由于承諾的隱藏性, 驗(yàn)證者無(wú)法推知與被承諾信息相關(guān)的其他信息, 進(jìn)而保障零知識(shí)性.

(2) 由于承諾的綁定性, 證明者無(wú)法欺騙, 進(jìn)而保障可靠性.

(3) 由于承諾的同態(tài)性, 協(xié)議可以在保障零知識(shí)性的同時(shí)完成正確性驗(yàn)證.

6.2.2 主要思路

本小節(jié)首先介紹DEIP, 其次介紹基于Pedersen 承諾的零知識(shí)sum-check 協(xié)議, 最后介紹利用DEIP和零知識(shí)sum-check 協(xié)議如何構(gòu)造基于DEIP 的平凡零知識(shí)證明.

DEIP. 一種DEIP 的主要流程如協(xié)議3 所示. 令C是域F 上深度為d的分層算術(shù)電路, 記第0 層是電路輸出線所在層, 第d層是電路輸入線所在層. DEIP 逐層按輪運(yùn)行. 在協(xié)議第1 輪, 當(dāng)驗(yàn)證者V收到證明者P發(fā)送的輸出y后,P和V調(diào)用sum-check 協(xié)議將對(duì)電路第0 層的聲明轉(zhuǎn)換為對(duì)電路第1 層的聲明; 在協(xié)議第i輪,P和V調(diào)用sum-check 協(xié)議將對(duì)電路第i ?1 層的聲明轉(zhuǎn)換為對(duì)電路第i層的聲明; 最終,P和V將電路求值轉(zhuǎn)換為對(duì)電路第d層(即輸入層) 的聲明, 由于V擁有電路輸入x, 故可直接自行計(jì)算驗(yàn)證.

協(xié)議3 一種DEIP [26]公共輸入: 域F, 深度為d 的分層算術(shù)電路C : F|x| →F|y|.1. P 向V 發(fā)送電路輸出y.2. V 計(jì)算多項(xiàng)式~V0(·) 并返回隨機(jī)挑戰(zhàn)r0 ∈Fs0.3. P 和V 調(diào)用對(duì)~V0(r0) 的sum-check 協(xié)議. 在sum-check 協(xié)議的最后一輪, V 會(huì)收到~V1(u(1)) 和~V1(v(1)).4. for i = 1,2,··· ,d ?1 V 選擇隨機(jī)挑戰(zhàn)α(i),β(i)$←?F 并發(fā)送給P;P 和V 調(diào)用對(duì)α(i)~Vi(u(i))+β(i)~Vi(v(i)) 的sum-check 協(xié)議;在sum-check 協(xié)議的最后一輪, P 發(fā)送給~Vi+1(u(i+1)) 和~Vi+1(v(i+1)) 給V;V 利用~Vi+1(u(i+1)) 和~Vi+1(v(i+1)) 參與到第i+1 輪循環(huán).end for 5. V 根據(jù)第d 層的輸入x 自行計(jì)算~Vd(u(d)) 和~Vd(v(d)), 進(jìn)而檢查第d ?1 輪的sum-check 協(xié)議的正確性.輸出: 比特b, b = 1 表示V 檢查通過(guò), b = 0 表示拒絕.

具體的, 記電路C第i層的電路門數(shù)為Si且si=「log2Si?(假設(shè)Si是2 的某次冪, 若不是則可對(duì)電路作必要填充). 記Vi(·):{0,1}si →F 是以第i層的某個(gè)任意電路門的二進(jìn)制順序表示字符串{0,1}si為輸入、該門的門值為輸出的函數(shù). 記addi(·),multi(·) :{0,1}2si+si?1→{0,1}為電路謂詞, 其以第i ?1 層某個(gè)電路門(記為αc) 的二進(jìn)制順序表示字符串{0,1}si?1、第i層的某兩個(gè)電路門(記作αa,αb)的二進(jìn)制順序表示字符串{0,1}si為輸入, 當(dāng)且僅當(dāng)電路中存在以αa、αb為輸入,αc為輸出的加法門(乘法門) 時(shí)輸出為1. 基于以上定義, 對(duì)于任意的c ∈{0,1}si,a、b ∈{0,1}si+1,Vi(c) 可寫為

這樣就可將對(duì)第i層的聲明歸約為對(duì)第i+1 層的聲明. 由于Vi(·) 是求和形式, 故可調(diào)用sum-check 協(xié)議進(jìn)行驗(yàn)證. 然而,Vi(·) 的定義域大小為2, 基于Schwartz-Zippel 引理難以保障可靠性. 因此, 為調(diào)用sum-check 協(xié)議, 需將Vi(·) 轉(zhuǎn)換為對(duì)應(yīng)的多變量線性擴(kuò)展多項(xiàng)式~Vi(·).

基于文獻(xiàn)[26,60,61,126,127], 可以證明針對(duì)分層算術(shù)電路的系列DEIP 的可靠性誤差根據(jù)協(xié)議的不同從O(dlogg/|F|) 到O(dlog|C|/|F|) 不等, 證明者計(jì)算開(kāi)銷為O(|C|) 到O(|C|log|C|) 級(jí)別的域上運(yùn)算, 實(shí)際通信量為O(dlogg) 到O(dlog|C|) 級(jí)別的域元素. 對(duì)于常規(guī)電路, 驗(yàn)證者計(jì)算開(kāi)銷為O(|x|+|y|+dlogg) 到O(|x|+|y|+dlog|C|) 級(jí)別的域上運(yùn)算. 當(dāng)電路深度d=poly(log|C|) 時(shí), DEIP系列協(xié)議的通信復(fù)雜度和驗(yàn)證復(fù)雜度均與電路規(guī)模成亞線性關(guān)系.

基于 Pedersen 承諾的零知識(shí) sum-check 協(xié)議. 在sum-check 協(xié)議中, 驗(yàn)證者會(huì)獲得多項(xiàng)式gi(Xi), 當(dāng)g(·) 是秘密時(shí), 會(huì)泄露g(·) 的相關(guān)信息, 故不是零知識(shí)的. 事實(shí)上, 基于Cramer 和Damg?rd[102]的方法, 利用Pedersen 承諾容易構(gòu)造零知識(shí)的sum-check 協(xié)議.

在介紹零知識(shí)sum-check 協(xié)議之前, 首先給出利用Pedersen 承諾可實(shí)現(xiàn)的兩個(gè)模塊. 給定形如定義8的Pedersen 承諾方案, 則存在以下兩個(gè)零知識(shí)論證.

(1) 給定公共承諾c1←Com(x1;r1),c2←Com(x2;r2) 且x1=x2, 證明者可向驗(yàn)證者證明c1和c2是對(duì)相同消息的承諾, 即x1=x2, 記該論證為ZKeq(c1,c2). 具體協(xié)議及安全性證明見(jiàn)文獻(xiàn)[130].

(2) 給定公共承諾c1←Com(x1;r1),c2←Com(x2;r2),c3←Com(x3;r3) 且x3=x1x2, 證明者可向驗(yàn)證者證明c1和c2的承諾消息乘積與c3的承諾消息乘積相等, 即x3=x1x2, 記該論證為ZKprod(c1,c2,c3). 具體協(xié)議及安全性證明見(jiàn)文獻(xiàn)[32,131].

基于上述兩個(gè)模塊, 容易將圖6 中的協(xié)議修改為零知識(shí)的, 主要思路見(jiàn)協(xié)議4. 需要指出的是, 協(xié)議4是不考慮Pedersen 承諾中隨機(jī)數(shù)的簡(jiǎn)化版本, 詳細(xì)版本見(jiàn)文獻(xiàn)[51]. 協(xié)議4 與圖6 的主要不同在于:

圖6 sum-check 協(xié)議流程[63]Figure 6 Process of sum-check protocol

相比于sum-check 協(xié)議, 零知識(shí)sum-check 協(xié)議的證明和驗(yàn)證復(fù)雜度雖然不變, 但實(shí)際證明和驗(yàn)證開(kāi)銷卻因引入了大量群上運(yùn)算尤其是群冪運(yùn)算而顯著增加.

協(xié)議4 基于Pedersen 承諾的零知識(shí)sum-check 協(xié)議的主要思路[51]公共輸入: 域F,Com(T),m,?. 證明者秘密輸入: g(x), 且有T = ∑x∈{0,1}? g(x).1. i = 1 時(shí), 證明者P 構(gòu)造函數(shù)g1(X1) 并將對(duì)其系數(shù)(a1,0,a1,1,··· ,a1,m) 的承諾Com(a1,0),Com(a1,1),··· ,Com(a1,m) (省略了Com 中的隨機(jī)數(shù)) 發(fā)給驗(yàn)證者V.2. V 計(jì)算Com?1 ←Com(a1,0)∏m j=0 Com(a1,j) 并調(diào)用ZKeq(Com?1,Com(T)). 若ZKeq 驗(yàn)證失敗, 輸出b = 0;若驗(yàn)證通過(guò), V 選取r1$←?F 發(fā)送給P.3. P 和V 共同計(jì)算Com2 ←∏m j=0 Comr1j(a1,j).4. for i = 2,3,··· ,? ?1 P 構(gòu)造函數(shù)gi(Xi) 并將對(duì)其系數(shù)(ai,0,ai,1,··· ,ai,m) 的承諾Com(ai,0),Com(ai,1),··· ,Com(ai,m) 發(fā)給驗(yàn)證者V;V 計(jì)算Com?i ←Com(ai,0)∏m j=0 Com(ai,j) 并調(diào)用ZKeq(Com?i,Comi). 若ZKeq 驗(yàn)證失敗, 輸出b = 0; 若$←?F 發(fā)送給P;P 和V 共同計(jì)算Comi+1 ←∏m j=0 Comrij(ai,j).驗(yàn)證通過(guò), V 選取ri end for 5. P 構(gòu)造函數(shù)g?(X?) 并將對(duì)其系數(shù)(a?,0,a?,1,··· ,a?,m) 的承諾Com(a?,0),Com(a?,1),··· ,Com(a?,m) 發(fā)給驗(yàn)證者V.6. V 計(jì)算Com?? ←Com(a?,0)∏m j=0 Com(a?,j) 并調(diào)用ZKeq(Com??,Com?). 若ZKeq 驗(yàn)證失敗, 輸出b = 0;若驗(yàn)證通過(guò), V 選取r?$←?F.7. V 計(jì)算Com?+1 ←∏m j=0 Comr?j(a?,j). V 獲知Com(g(r)) (可通過(guò)諭示) 并調(diào)用ZKeq(Com?+1,Com(g(r)).若ZKeq 驗(yàn)證失敗, 輸出b = 0.輸出: 比特b, 若上述驗(yàn)證均通過(guò), 輸出b = 1; 否則輸出b = 0.

基于DEIP 的平凡零知識(shí)證明利用基于Pedersen 承諾的零知識(shí)的sum-check 協(xié)議可構(gòu)造基于DEIP 的平凡零知識(shí)證明(簡(jiǎn)要流程見(jiàn)圖7), 其與協(xié)議3 主要不同在于:

圖7 基于DEIP 的平凡零知識(shí)證明[32]Figure 7 Trivial zero-knowledge proof based on DEIP

基于DEIP 的平凡零知識(shí)證明可分為2 部分:

(1) 在協(xié)議第一步, 證明者需對(duì)證據(jù)(α1,α2,··· ,α|w|) 及{αjαk}作承諾, 其中{αjαk}指所有存在乘法門關(guān)系的門值乘積集合; 在協(xié)議最后一步, 驗(yàn)證者需根據(jù)收到的承諾計(jì)算對(duì)(u(d)) 和(v(d)) 的承諾并驗(yàn)證sum-check 協(xié)議的正確性.

(2) 調(diào)用d次零知識(shí)的sum-check 協(xié)議.

對(duì)于(2), 由于其只是將域上操作替換為承諾操作及同態(tài)運(yùn)算, 且在普通DEIP 中不需要第(1) 步, 故其漸近復(fù)雜度與普通DEIP 是一致的, 但實(shí)際證明和驗(yàn)證開(kāi)銷有顯著增加.

改進(jìn)上述零知識(shí)證明基于DEIP 的平凡零知識(shí)證明主要存在如下三點(diǎn)問(wèn)題:

(1) 不是簡(jiǎn)潔的. 通信復(fù)雜度為(Θ(|w|)+O(dlogg)) 級(jí)別的群元素, 其中Θ(|w|) 來(lái)自于直接傳輸證據(jù),O(dlogg) 來(lái)自于d次零知識(shí)sum-check 協(xié)議.

(2) 實(shí)際計(jì)算開(kāi)銷大. 由于加性同態(tài)承諾中加法運(yùn)算會(huì)轉(zhuǎn)換為乘法運(yùn)算, 乘法運(yùn)算會(huì)轉(zhuǎn)換成冪運(yùn)算,利用加性同態(tài)承諾保障零知識(shí)性會(huì)顯著增加實(shí)際證明和驗(yàn)證開(kāi)銷.

(3) 待證明陳述表示形式(分層算術(shù)電路) 不夠通用且需要預(yù)處理. 雖然通過(guò)增加電路深度級(jí)別的電路門, 任意算術(shù)電路都可轉(zhuǎn)換為分層算術(shù)電路[32], 但是仍需對(duì)具體計(jì)算問(wèn)題進(jìn)行預(yù)處理.

近年來(lái)的研究在不同程度上解決了上述三點(diǎn)問(wèn)題, 構(gòu)造了若干基于DEIP 的簡(jiǎn)潔NIZKAoK, 其總結(jié)列于表5. 表5 中實(shí)現(xiàn)簡(jiǎn)潔性所采取方案指零知識(shí)多項(xiàng)式承諾(zk-PC) 及零知識(shí)可驗(yàn)證多項(xiàng)式委托(zk-VPD), 其用于解決問(wèn)題(1). 根據(jù)多項(xiàng)式承諾或可驗(yàn)證多項(xiàng)式委托方案(列于表6)的不同, 各協(xié)議的底層難題假設(shè)和可信初始化情況也各不相同. 隨機(jī)掩藏多項(xiàng)式用于解決問(wèn)題(2), 由于基于的DEIP 不同, 各協(xié)議支持的電路問(wèn)題形式也不盡相同. Spartan (針對(duì)R1CS 可滿足問(wèn)題) 和Virgo++ (針對(duì)任意算術(shù)電路) 用于解決問(wèn)題(3). 本章第6.3 節(jié)分別介紹解決上述問(wèn)題的零知識(shí)證明.

表5 基于DEIP 的簡(jiǎn)潔NIZKAoK 總結(jié)Table 5 Succinct non-interactive zero-knowledge arguments of knowledge based on DEIP

6.3 典型協(xié)議分析

本節(jié)介紹基于DEIP 的零知識(shí)證明典型協(xié)議(見(jiàn)圖8), 分析各協(xié)議的主要思路、協(xié)議流程、復(fù)雜度及安全性. 根據(jù)對(duì)基于DEIP 的平凡零知識(shí)證明的改進(jìn)思路及方法的不同, 第6.3.1 小節(jié)介紹ZKvSQL 和Hyrax, 其主要改進(jìn)是利用zk-PC 和zk-VPD 傳輸證據(jù)多項(xiàng)式, 從而實(shí)現(xiàn)簡(jiǎn)潔性. 第6.3.2 小節(jié)介紹Libra和Virgo, 其主要改進(jìn)是在ZKvSQL 和Hyrax 的基礎(chǔ)上改用掩藏多項(xiàng)式而不是加性同態(tài)承諾實(shí)現(xiàn)零知識(shí)sum-check 協(xié)議, 這減少了大量的群冪運(yùn)算從而降低了實(shí)際證明與驗(yàn)證開(kāi)銷. 第6.3.3 小節(jié)介紹Spartan,其待證明陳述形式是R1CS 可滿足問(wèn)題, 需注意的是嚴(yán)格而言Spartan 并不是基于DEIP 構(gòu)造的, 但其與基于DEIP 的零知識(shí)證明思路極為類似, 故在本章介紹. 第6.3.4 小節(jié)介紹Virgo++, 其在Libra 和Virgo的基礎(chǔ)上改進(jìn)了DEIP, 從而將待證明陳述形式擴(kuò)展為任意算術(shù)電路.

圖8 基于DEIP 的零知識(shí)證明典型協(xié)議優(yōu)化思路Figure 8 Optimization of typical zero-knowledge proof based on DEIP

6.3.1 ZKvSQL/Hyrax

主要思路. ZKvSQL 由Zhang 等人[51]提出, Hyrax 由Wahby 等人[32]提出, 它們的主要思路是利用zk-VPD 和zk-PC 改進(jìn)圖7 證明者的第一步操作, 從而實(shí)現(xiàn)簡(jiǎn)潔性, 其使用的zk-VPD 及zk-PC 方案列于表6. 考慮到表6 中的方案承諾大小|c| 和通信復(fù)雜度均為亞線性, 且d次零知識(shí)sum-check 協(xié)議的通信復(fù)雜度為O(dlogg), 因此當(dāng)d=O(poly log|C|) 時(shí), 可實(shí)現(xiàn)通信復(fù)雜度為亞線性的零知識(shí)證明.

表6 針對(duì)多變量線性多項(xiàng)式的零知識(shí)可提取多項(xiàng)式承諾方案對(duì)比Table 6 Comparison of several zero-knowledge extractable polynomial commitment schemes for multilinear polynomials

討論總結(jié). 現(xiàn)從復(fù)雜度和安全性兩個(gè)方面對(duì)ZKvSQL 和Hyrax 進(jìn)行討論總結(jié).

(1) 現(xiàn)給出利用zk-PC 實(shí)現(xiàn)簡(jiǎn)潔NIZKAoK 的復(fù)雜度分析, 其開(kāi)銷主要分為d次零知識(shí)sum-check協(xié)議的開(kāi)銷和參與多項(xiàng)式承諾的開(kāi)銷, 各項(xiàng)開(kāi)銷具體如下.

? 證明復(fù)雜度. 證明者需要: 參與d次零知識(shí)sum-check 協(xié)議, 其與普通DEIP 的證明復(fù)雜度是同級(jí)別的, 記該部分計(jì)算復(fù)雜度為PDEIP; 對(duì)多項(xiàng)式~w(·) 作承諾及參與求值計(jì)算協(xié)議, 記該部分計(jì)算復(fù)雜度為PPC.

? 通信復(fù)雜度. 通信開(kāi)銷包括:d次零知識(shí)sum-check 協(xié)議所需傳輸?shù)男畔? 其與DEIP 本身的通信復(fù)雜度相同, 記該部分通信復(fù)雜度為πDEIP; 傳輸對(duì)~w(·) 的承諾帶來(lái)的通信開(kāi)銷和求值計(jì)算的通信開(kāi)銷, 記該部分通信復(fù)雜度為πPC.

? 驗(yàn)證復(fù)雜度. 驗(yàn)證者需要: 參與d次零知識(shí)sum-check 協(xié)議, 其與普通DEIP 的驗(yàn)證復(fù)雜度是同級(jí)別的, 記該部分計(jì)算復(fù)雜度為VDEIP; 參與對(duì)多項(xiàng)式~w(·) 的求值計(jì)算, 記該部分計(jì)算復(fù)雜度為VPC.

根據(jù)不同零知識(shí)證明所采取的不同DEIP 和zk-PC, 基于各參數(shù)的關(guān)系, 協(xié)議的證明、通信和驗(yàn)證復(fù)雜度詳見(jiàn)表7.

表7 利用不同DEIP 和zk-PC 實(shí)現(xiàn)零知識(shí)知識(shí)論證的復(fù)雜度分析Table 7 Complexity analysis of zero-knowledge argument of knowledge based on different DEIPs and zk-PC schemes

(2)安全性分析. ZKvSQL 和Hyrax 的底層難題假設(shè)主要來(lái)自于其調(diào)用的zk-PC,也就是說(shuō),ZKvSQL基于的假設(shè)是q-SDH 假設(shè)和(d,?)-EPKE 假設(shè), Hyrax 基于的假設(shè)是DLOG 假設(shè). 協(xié)議的可靠性來(lái)自于zk-PC 的綁定性、DEIP 本身的可靠性和sum-check 協(xié)議中加性同態(tài)承諾的綁定性. 協(xié)議的知識(shí)可靠性來(lái)自于zk-PC 的可提取性. 協(xié)議的零知識(shí)性來(lái)自于zk-PC 的隱藏性、zk-PC 中求值計(jì)算協(xié)議的零知識(shí)性和加性同態(tài)承諾的隱藏性.

6.3.2 Libra/Virgo

主要思路. Libra 由Xie 等人[26]提出, 相比于第6.2.2 小節(jié)中的平凡DEIP, 在利用zk-PC 實(shí)現(xiàn)簡(jiǎn)潔性的基礎(chǔ)上, Libra 利用隨機(jī)掩藏多項(xiàng)式降低了零知識(shí)sum-check 協(xié)議的證明和驗(yàn)證計(jì)算開(kāi)銷. 在此基礎(chǔ)上, Zhang 等人[28]提出了一種新的多項(xiàng)式承諾(表6 中的Virgo-VPD) 并將其應(yīng)用于Libra 中, 實(shí)現(xiàn)了一種啟動(dòng)階段參數(shù)可公開(kāi)生成的NIZKAoK, 即Virgo. 本小節(jié)主要介紹Libra 的主要思路和協(xié)議流程.

在sum-check 協(xié)議中, 證明者發(fā)送給驗(yàn)證者的消息是與電路相關(guān)的多項(xiàng)式gi(Xi), 這有可能會(huì)破壞零知識(shí)性. 基于Pedersen 承諾的零知識(shí)sum-check 協(xié)議雖可解決這一問(wèn)題, 但大量的群冪運(yùn)算會(huì)顯著增加證明和驗(yàn)證計(jì)算開(kāi)銷. 在此背景下, Chiesa、Forbes 和Spooner[129]指出為sum-check 協(xié)議中的多項(xiàng)式g(·) 增加隨機(jī)多項(xiàng)式ρf(·) 即可實(shí)現(xiàn)零知識(shí)性, 其中ρ是由驗(yàn)證者選擇的隨機(jī)挑戰(zhàn). 此時(shí)證明者和驗(yàn)證者是對(duì)多項(xiàng)式g(·)+ρf(·) 調(diào)用sum-check 協(xié)議. 假設(shè)形如定義27的zk-PC 存在, 零知識(shí)sum-check 協(xié)議具體見(jiàn)協(xié)議5, 其省略了公共參數(shù)pp、驗(yàn)證陷門vp 和隨機(jī)數(shù).

然而, 利用上述零知識(shí)sum-check 協(xié)議難以直接構(gòu)造基于DEIP 的零知識(shí)證明, 這是因?yàn)樵贒EIP 中第i輪sum-check 協(xié)議的最后一輪,V會(huì)獲得~Vi(u(i)) 和~Vi(v(i))(對(duì)應(yīng)于協(xié)議5 中的g(r)), 這會(huì)泄露一定的隱私信息. 為了解決這一問(wèn)題, Chiesa、Forbes 和Spooner 進(jìn)一步指出為~Vi(·) 增加一個(gè)隨機(jī)掩藏低度多項(xiàng)式Ri(·) 可實(shí)現(xiàn)零知識(shí)性. 具體來(lái)說(shuō), 定義多項(xiàng)式

其中當(dāng)且僅當(dāng)x=y時(shí)I(x,y)=1, 否則I(x,y)=0.

協(xié)議5 Libra 中的零知識(shí)sum-check 協(xié)議[26]公共輸入: 域F,T,m,?.證明者秘密輸入: g(x), 且有T = ∑x∈{0,1}? g(x).1. 證明者P 隨機(jī)選取多項(xiàng)式f(x), 其中每個(gè)變量的度也為m. P 將F = ∑x∈{0,1}? f(x) 和對(duì)f(·) 的承諾comf = Com(f(·)) 發(fā)給驗(yàn)證者V.2. 驗(yàn)證者V 選取ρ$←?F 發(fā)送給P 并計(jì)算T +ρF.3. P 和V 調(diào)用對(duì)T +ρF 的sum-check 協(xié)議.4. 在sum-check 協(xié)議的最后一輪, V 收到h?(r) = g(r)+ρf(r), 然后打開(kāi)多項(xiàng)式承諾comf 獲取f(·) 在點(diǎn)r = (r1,r2,··· ,r?) 處的值.5. V 計(jì)算h?(r)?ρf(r) 并驗(yàn)證其與從諭示獲得的g(r) 是否相等.輸出: 比特b, 若上述驗(yàn)證均通過(guò), 輸出b = 1; 否則輸出b = 0.

協(xié)議流程. Libra 與Virgo 的協(xié)議流程與ZKvSQL 和Hyrax 基本一致. 不同的是, Libra 和Virgo不再需要使用加性同態(tài)承諾, 而是采用隨機(jī)掩藏多項(xiàng)式ρf(·) 和R(·) 實(shí)現(xiàn)零知識(shí)性, 其中ρf(·) 用于保障sum-check 協(xié)議中證明者發(fā)送給驗(yàn)證者的信息是不泄露隱私的,R(·) 用于保障sum-check 協(xié)議最后的諭示也是不泄露隱私的. 不過(guò), 為了防止惡意證明者利用R(·), 證明者需在協(xié)議開(kāi)始時(shí)發(fā)送對(duì)R(·) 的多項(xiàng)式承諾.

討論總結(jié). 現(xiàn)分別從復(fù)雜度和安全性兩個(gè)方面對(duì)Libra 和Virgo 進(jìn)行討論總結(jié).

(1) Libra 的復(fù)雜度. 與第6.3.1 小節(jié)類似, Libra 的復(fù)雜度開(kāi)銷也可分為兩部分, 即d次零知識(shí)sumcheck 協(xié)議的開(kāi)銷和多項(xiàng)式承諾的開(kāi)銷. Libra 中的零知識(shí)sum-check 協(xié)議不再需要使用加性同態(tài)承諾, 而是調(diào)用zk-PC 對(duì)電路每一層的掩藏多項(xiàng)式進(jìn)行承諾, 因此不再需要大量的群冪運(yùn)算. 然而為實(shí)現(xiàn)整個(gè)協(xié)議的零知識(shí)性, 需額外對(duì)d個(gè)變量數(shù)為2 且每個(gè)變量度為2 的多項(xiàng)式調(diào)用zk-PC. 因此Libra 中的PPC和VPC需分別對(duì)應(yīng)增加O(d), 其具體復(fù)雜度列于表7.

(2) Virgo 的復(fù)雜度. Zhang 等人指出在分析Virgo 的復(fù)雜度時(shí), 可將調(diào)用zk-PC 的開(kāi)銷分為對(duì)電路輸入層(變量數(shù)為log|in|=log(|x|+|w|)) 調(diào)用承諾的開(kāi)銷和對(duì)電路中間層調(diào)用承諾的開(kāi)銷,他們分別優(yōu)化了這兩者的漸近性質(zhì), 并指出相比于d次sum-check 協(xié)議的開(kāi)銷, 對(duì)電路中間層調(diào)用承諾的開(kāi)銷在漸近復(fù)雜度上可以忽略. 因此Virgo 的復(fù)雜度開(kāi)銷包括d次sum-check 協(xié)議的開(kāi)銷和對(duì)電路輸入層調(diào)用zk-PC 的開(kāi)銷兩部分, 其具體復(fù)雜度列于表7.

(3) 安全性分析. 同ZKvSQL 和Hyrax 類似, Libra 和Virgo 的底層難題假設(shè)主要來(lái)自于其調(diào)用的zk-PC, 也就是說(shuō), Libra 基于的假設(shè)是q-SDH 假設(shè)和(d,?)-EPKE 假設(shè), Vrigo 基于的假設(shè)是CRHF 存在性. 協(xié)議的可靠性來(lái)自于zk-PC 的綁定性、DEIP 本身的可靠性. 協(xié)議的知識(shí)可靠性來(lái)自于zk-PC 的可提取性. 協(xié)議的零知識(shí)性來(lái)自于zk-PC 的隱藏性、zk-PC 中求值計(jì)算協(xié)議的零知識(shí)性和sum-check 協(xié)議的零知識(shí)性.

6.3.3 Spartan

上述協(xié)議所針對(duì)的待證明陳述表示形式均是分層算術(shù)電路, 同時(shí)為實(shí)現(xiàn)簡(jiǎn)潔性和亞線性的驗(yàn)證復(fù)雜度, 需要對(duì)電路有更多的要求, 比如電路深度d不能太大, 電路是常規(guī)電路、數(shù)據(jù)并行電路等. 一個(gè)改進(jìn)方向就是設(shè)計(jì)待證明陳述表示形式更為通用的零知識(shí)證明. 其中, Setty[27]提出了Spartan, 一種針對(duì)R1CS 可滿足問(wèn)題的簡(jiǎn)潔NIZKAoK, 由于R1CS 可滿足問(wèn)題是高級(jí)語(yǔ)言編譯器的常見(jiàn)目標(biāo)程序[62,65]且任意C-SAT 問(wèn)題都可用R1CS 可滿足問(wèn)題表示[27], 因此相比于針對(duì)分層算術(shù)電路可滿足問(wèn)題的零知識(shí)證明, Spartan 的待證明陳述更為通用. 事實(shí)上, 嚴(yán)格而言Spartan 并不是基于DEIP 構(gòu)造的, 但其與基于DEIP 的零知識(shí)證明思路極為類似, 故在本章介紹. 此外, Zhang 等人[29]提出了Virgo++, 其是直接針對(duì)任意算術(shù)電路可滿足問(wèn)題的簡(jiǎn)潔NIZKAoK. 本小節(jié)介紹Spartan, 第6.3.4 小節(jié)介紹Virgo++.

主要思路. Spartan 的設(shè)計(jì)思路如圖9 所示.

圖9 Spartan 的主要思路[27]Figure 9 Main idea of Spartan

首先介紹編碼R1CS 可滿足問(wèn)題的思路. 為借鑒之前利用sum-check 協(xié)議構(gòu)造零知識(shí)證明的思路, 需將R1CS 可滿足問(wèn)題編碼為低度多項(xiàng)式. 考慮形如定義3的R1CS 組, 令s=「log2m?, 則矩陣A,B,C可視為函數(shù)A(·,·),B(·,·),C(·,·) :{0,1}s×{0,1}s →F. 類似的, 令zT= (io,1,w), 則zT也可以視為函數(shù)Z(·):{0,1}s →F. 定義函數(shù)F(x):{0,1}s →F

由于對(duì)于任意的t ∈{0,1}s, 有Q(t) = ~F(t), 因此上述R1CS 組是可滿足的當(dāng)且僅當(dāng)對(duì)于任意的t ∈Fs, 有Q(t)=0, 即Q(·)是零多項(xiàng)式. 由Schwartz-Zippel 引理, 對(duì)于隨機(jī)挑戰(zhàn)τ$←?Fs, 若Q(τ)=0,則有較大的概率說(shuō)明Q(·) 是零多項(xiàng)式, 且有s=O(logm) =O(logn). 又Q(τ) 為求和形式, 故可調(diào)用sum-check 協(xié)議驗(yàn)證Q(τ)?=0.

P將vA,vB,vC發(fā)送給V, 隨后P和V還需再次調(diào)用sum-check 協(xié)議驗(yàn)證等式(29) 是否成立, 并將驗(yàn)證這三個(gè)等式歸約為驗(yàn)證

6.3.4 Virgo++

Virgo++ 由Zhang 等人[29]提出, 他們的主要貢獻(xiàn)是提出了一種針對(duì)任意算術(shù)電路的DEIP 并將其應(yīng)用于Virgo 中, 進(jìn)而得到了一種針對(duì)任意算術(shù)電路可滿足問(wèn)題的簡(jiǎn)潔NIZKAoK. Virgo++ 的協(xié)議流程和安全性分析均與Virgo 類似, 本小節(jié)僅簡(jiǎn)要介紹Virgo++ 中的DEIP, 并給出簡(jiǎn)單的復(fù)雜度分析.

主要思路. Zhang 等人指出制約系列DEIP 效率的最主要因素之一就是DEIP 只能應(yīng)用于分層算術(shù)電路. 在漸近級(jí)別上, 將任意電路轉(zhuǎn)化為分層算術(shù)電路會(huì)將電路規(guī)模從O(|C|) 增加到O(d|C|); 在實(shí)際工程應(yīng)用中, 將任意電路轉(zhuǎn)化為分層算術(shù)電路會(huì)增加證明者1–2 個(gè)數(shù)量級(jí)的計(jì)算開(kāi)銷[29]. 此外, 將任意電路轉(zhuǎn)換為R1CS 也不夠高效. 基于以上背景, Zhang 等人提出了一種針對(duì)通用算術(shù)電路且不額外增加證明者計(jì)算開(kāi)銷的DEIP, 并采用Virgo 中的方法將DEIP 轉(zhuǎn)換為簡(jiǎn)潔NIZKAoK.

Virgo++ 中DEIP 構(gòu)造的主要思路如下. 雖然通用電路沒(méi)有嚴(yán)格的分層結(jié)構(gòu), 但仍可以進(jìn)行邏輯意義上的分層, 即一個(gè)電路門的輸入門的層級(jí)一定比該電路門高. 考慮到第i層的任意電路門α一定至少有一條輸入導(dǎo)線位于i+1 層(否則該門就不可能位于第i層), 而另一條輸入導(dǎo)線可能位于(i+1)~d的任意一層,因此電路層i的多項(xiàng)式規(guī)模為O((d?i)g). 基于此思想可構(gòu)造證明復(fù)雜度為O(d|C|)的DEIP,這是因?yàn)樽C明者調(diào)用sum-check 協(xié)議的復(fù)雜度為O(dg+(d ?1)g+···+g)=O(d2g)=O(d|C|). 此外, 在電路層i,P還需在調(diào)用sum-check 協(xié)議完畢后將對(duì)O((d ?i)g) 級(jí)別多項(xiàng)式取值的聲明轉(zhuǎn)換為1 個(gè)聲明,該階段的復(fù)雜度也起碼為O(d|C|). 上述平凡方法與將任意電路轉(zhuǎn)換為分層算術(shù)電路的漸近復(fù)雜度是至少一樣的, 也就沒(méi)有實(shí)際意義. 針對(duì)上述兩個(gè)問(wèn)題, Zhang 等人分別提出了兩個(gè)解決方案. 對(duì)于前一個(gè)問(wèn)題,他們指出由于每層電路門的輸入門最多為為2g, 因此調(diào)用sum-check 協(xié)議的復(fù)雜度可降低至O(dg). 對(duì)于后一個(gè)問(wèn)題, 他們指出可將轉(zhuǎn)換聲明的計(jì)算歸約為運(yùn)行一個(gè)針對(duì)特定分層算術(shù)電路的普通DEIP, 由于歸約后協(xié)議輪數(shù)為O(|C|), 因此該階段的證明復(fù)雜度也為O(|C). 基于以上兩點(diǎn)改進(jìn), Zhang 等人實(shí)現(xiàn)了針對(duì)通用算術(shù)電路且證明復(fù)雜度為O(|C|) 的DEIP, 并最終將其轉(zhuǎn)換為了簡(jiǎn)潔NIZKAoK.

協(xié)議流程. Virgo++ 的協(xié)議流程與Virgo 的協(xié)議流程基本一致, 即在DEIP 的基礎(chǔ)上, 利用多項(xiàng)式承諾實(shí)現(xiàn)簡(jiǎn)潔性, 利用隨機(jī)掩藏多項(xiàng)式和zk-PC 保障零知識(shí)性. 不同的是, Virgo++ 中DEIP 所針對(duì)的電路可以是任意的算術(shù)電路.

討論總結(jié). Zhang 等人提出的DEIP 的性能表現(xiàn)分析如下. 對(duì)于規(guī)模為|C|、輸入長(zhǎng)度為|x|、深度為d的通用電路,該協(xié)議可靠性誤差為O(dlog|C|/F),證明復(fù)雜度為O(|C|),通信復(fù)雜度為min{O(dlog|C|+d2),O(|C|)}. 當(dāng)電路為常規(guī)電路時(shí), 驗(yàn)證復(fù)雜度為min{O(|x|+|y|+dlog|C|+d2), O(|C|)}. 基于該DEIP, 結(jié)合Virgo 的復(fù)雜度分析方法, 可以得出Virgo++ 的各項(xiàng)復(fù)雜度, 其列于表5.

6.4 總結(jié)

基于DEIP 的零知識(shí)證明是本文涉及的唯一一種可實(shí)現(xiàn)證明復(fù)雜度與電路規(guī)模成線性關(guān)系、通信和驗(yàn)證復(fù)雜度與電路規(guī)模成亞線性關(guān)系的系統(tǒng)參數(shù)可公開(kāi)生成的零知識(shí)證明, 但也存在若干限制. 第一, 由于DEIP 按層計(jì)算的特性, 只有針對(duì)深度較低的電路該類零知識(shí)證明的通信復(fù)雜度才與電路規(guī)模成亞線性. 因此, 能否及如何削弱電路深度的線性因子影響是未來(lái)的一個(gè)研究方向. 第二, 由于DEIP 對(duì)于特殊結(jié)構(gòu)的電路, 比如對(duì)數(shù)空間均勻電路或者數(shù)據(jù)并行電路才能快速驗(yàn)證的特性, 只有針對(duì)特殊結(jié)構(gòu)的電路,驗(yàn)證復(fù)雜度才與電路規(guī)模成亞線性.

7 基于IPA 的零知識(shí)證明

本章介紹基于內(nèi)積論證(IPA) 的零知識(shí)證明. 該類零知識(shí)證明的底層難題假設(shè)均基于離散對(duì)數(shù)假設(shè)(見(jiàn)定義32), 故也被稱為基于離散對(duì)數(shù)假設(shè)的零知識(shí)證明. 然而為便于與其他基于離散對(duì)數(shù)假設(shè)的零知識(shí)證明加以區(qū)分(如Hyrax, 見(jiàn)第6.3.1 小節(jié)), 且由于內(nèi)積論證是實(shí)現(xiàn)該類協(xié)議對(duì)數(shù)級(jí)別通信復(fù)雜度的關(guān)鍵技術(shù), 故本文將該類協(xié)議稱為基于IPA 的零知識(shí)證明. 該類協(xié)議的核心思路是將電路中的所有約束歸約轉(zhuǎn)化為內(nèi)積形式的陳述, 然后調(diào)用內(nèi)積論證實(shí)現(xiàn)對(duì)數(shù)級(jí)別通信復(fù)雜度的簡(jiǎn)潔NIZKAoK. 本章第7.1 節(jié)介紹相關(guān)定義及概念, 第7.2 節(jié)介紹該類協(xié)議的背景及主要思路, 第7.3 節(jié)介紹典型協(xié)議.

7.1 定義及概念

其中,Un-Find-Rep 假設(shè)可歸約為DLOG 假設(shè), 離散對(duì)數(shù)關(guān)系假設(shè)[30]與Un-Find-Rep 假設(shè)等價(jià). 此外, 可以證明ML2v-Find-Rep 假設(shè)可歸約為A-DLOG 假設(shè)[54].

7.2 背景及主要思路

基于Linear-PCP 的零知識(shí)證明雖然實(shí)現(xiàn)了較低的通信和驗(yàn)證復(fù)雜度, 但具有若干缺點(diǎn), 其中之一就是底層難題假設(shè)均為不可證偽假設(shè). Groth 和Seo 提出的協(xié)議雖然僅基于離散對(duì)數(shù)假設(shè)并具有更高的安全性, 但通信復(fù)雜度仍較高. 在此基礎(chǔ)上, Bootle 等人[30]提出了內(nèi)積論證并利用其構(gòu)造了對(duì)數(shù)級(jí)別通信復(fù)雜度的NIZKAoK (記為BCCGP16). 證明者通過(guò)內(nèi)積論證可利用循環(huán)遞歸的方式證明他擁有兩個(gè)公開(kāi)向量承諾的消息, 且這兩個(gè)消息的內(nèi)積等于某個(gè)公開(kāi)值. 對(duì)于長(zhǎng)度為n的消息向量, 內(nèi)積論證的通信復(fù)雜度為O(logn). 本小節(jié)接下來(lái)介紹內(nèi)積論證的主要思路及其優(yōu)化.

內(nèi)積論證. 在BCCGP16 的內(nèi)積論證中,證明者P可向驗(yàn)證者V證明對(duì)于公共輸入A,B ∈G,g,h ∈Gn和公開(kāi)標(biāo)量z ∈Zq,P擁有向量a、b, 滿足A=ga、B=hb和a·b=z. 該陳述可記為

其中分號(hào)前后分別表示公共輸入和證據(jù). 若g,h的生成方式為g ←[r],h ←[s], 則陳述(33)可改記為

協(xié)議6 BCCGP16 中的內(nèi)積論證[30]公共輸入: (G,q,g,[r],[s],A,B,z).證明者秘密輸入: a,b.1. P 向V 發(fā)送A?1,B?1,z?1,,A1,B1,z1, 具體有A?1 ←[a 1 2 ·r 2 2],B?1 ←[b 1 2 ·s 2 2],z?1 ←a 2 2 ·b 1 2,A1 ←[a 2 2 ·r 1 2],B1 ←[b 2 2 ·s 1 2],z1 ←a 1 2 ·b 2 2.2. V 向P 發(fā)送隨機(jī)挑戰(zhàn)c$←?Z?q.3. P 和V 共同計(jì)算新的承諾密鑰[r′],[s′] 和新承諾A′,B′ 及z′[r′] ←[c?1r 1 2 +c?2r 22],A′ ←AAc?1?1 Ac1,[s′] ←[cs 1 2 +c2s 2 2],B′ ←Bc?1BBc?1 1 ,z′ ←z?1c+z +z1c?1.4. P 計(jì)算下一輪的新證據(jù)a′ ←ca 1 2 +c2a 2 2 和b′ ←c?1b 1 2 +c?2b 22 并參與到下一輪循環(huán)中, 此時(shí)待證明陳述被歸約為{([r′],[s′],A′,B′,z′;a′,b′) : A′ = [a′ ·r′]∧B′ = [b′ ·s′]∧a′ ·b′ = z′}.5. 上述循環(huán)歸約過(guò)程共重復(fù)t = log2 n 次, 直至a 和b 縮減為標(biāo)量, 此時(shí)P 只需直接將a 和b 發(fā)給V 然后V 自行驗(yàn)證如下等式是否成立即可At?= [a·rt],Bt?= [b·st],zt?= a·b,其中At,Bt 表示第t 輪中的承諾, [rt] 和[st] 表示第t 輪的承諾密鑰.

為證明陳述(37), Bulletproofs 首先證明了如下形式的陳述

然后證明了陳述(37). 證明陳述(38)的主要思路也是在每一輪將對(duì)n長(zhǎng)向量的陳述遞歸為對(duì)n/2 長(zhǎng)向量的陳述, 具體見(jiàn)協(xié)議7. 在該內(nèi)積論證中, 每輪需要傳輸?shù)娜涸貎H為2 個(gè)(L和R), 且最后一輪需額外發(fā)送a和b共2 個(gè)域元素, 故總通信量為(2 log2n+2) 個(gè)元素. 證明者計(jì)算開(kāi)銷與BCCGP16 類似, 為O(n) 次群上運(yùn)算; 但驗(yàn)證者每輪不再需要計(jì)算[r′]、[s′] 而只需計(jì)算A′、B′, 但需額外驗(yàn)證2 個(gè)配對(duì)等式, 故為O(logn) 次群上運(yùn)算和配對(duì)運(yùn)算. 對(duì)于安全性, 與BCCGP16 類似, Bulletproofs 中的內(nèi)積論證也具有完美完備性和統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性.

協(xié)議7 Bulletproofs 中的內(nèi)積論證[31]公共輸入: (G,q,[r],[s],P,u), 其中P,u ∈G.證明者秘密輸入: a,b, 其滿足P = [a·r][b·s]ua·b.1. P 計(jì)算L,R ∈G 并向V 發(fā)送L,R, 其中L ←[a 1 2 ·r 2 2][b 2 2 ·s 1 2]ua 1·b 2 2 2,R ←[a 2 2 ·r 1 2][b 1 2 ·s 2 2]ua 2·b 1 2 2.2. V 向P 發(fā)送隨機(jī)挑戰(zhàn)c$←?Z?q.3. P 和V 共同計(jì)算新的承諾密鑰[r′],[s′] 和新承諾P′, 其中[r′] ←[c?1r 1 2 +cr 2 2],[s′] ←[cs 1 2 +c?1s 2 2],P′ ←Lc2 ·P ·Rc?2.4. P 計(jì)算下一輪的證據(jù)a′ ←ca 1 2 +c?1a 2 2 和b′ ←c?1b 1 2 +cb 2 2 并參與到下一輪循環(huán)中. 此時(shí)新承諾密鑰為[r′]和[s′], 歸約后的陳述為{(G,q,[r′],[s′],P′,u;a′,b′) : P′ = [a′ ·r′][b′ ·s′]ua′·b′}.5. 協(xié)議共重復(fù)t = log2 n 輪直至a 和b 縮減為標(biāo)量, 此時(shí)P 只需直接將a 和b 發(fā)給V 然后V 自行驗(yàn)證本輪的Pt 是否滿足Pt = [a·rt][b·st]uab 即可.

Zhang 等人[134]指出相比于BCCGP16 中的內(nèi)積論證, 雖然Bulletproofs 中的內(nèi)積論證具有較低的總通信量, 但修改陳述會(huì)使得其應(yīng)用條件相對(duì)苛刻. 針對(duì)此, Zhang 等人在不修改陳述的前提下將BCCGP16 中內(nèi)積論證的通信復(fù)雜度降低了約2/3. 相比于Bulletproofs, Zhang 等人的內(nèi)積論證雖然總通信量較高, 但其應(yīng)用條件和BCCGP16 一樣寬松.

DRZ20[54]指出在承諾密鑰g和h結(jié)構(gòu)化, 即r和s具有特殊分布的情況下, 可將協(xié)議6 的驗(yàn)證復(fù)雜度降低到對(duì)數(shù)級(jí)別. 然而為保障協(xié)議的可靠性, 密鑰需由可信第三方生成, 也就是說(shuō)該內(nèi)積論證需要CRS.

其他輪類似. 此時(shí)驗(yàn)證者在每輪只需進(jìn)行常數(shù)級(jí)別的配對(duì)運(yùn)算, 故驗(yàn)證復(fù)雜度是對(duì)數(shù)級(jí)別的. 此外, 每輪驗(yàn)證形如等式(40) 的等式也意味著相比于BCCGP16 每輪P需額外發(fā)送[r′1]1,[s′1]1共2 個(gè)元素, 故通信復(fù)雜度為(8 log2n+2) 個(gè)元素. 與BCCGP16 類似, 證明者計(jì)算開(kāi)銷也為O(n) 級(jí)別的群上和域上運(yùn)算,DRZ20 中的內(nèi)積論證也具有完美完備性和統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性.

7.3 典型協(xié)議分析

基于內(nèi)積論證的零知識(shí)證明的主要構(gòu)造思路為: 首先將電路中的乘法門約束和乘法門之間的線性約束利用Schwartz-Zippel 引理歸約為一個(gè)多項(xiàng)式的某一特定項(xiàng)系數(shù)為零的問(wèn)題, 然后將該問(wèn)題轉(zhuǎn)化為內(nèi)積論證的陳述表示形式, 最后調(diào)用內(nèi)積論證實(shí)現(xiàn)零知識(shí)證明. 事實(shí)上, 由于上述過(guò)程中前兩個(gè)步驟是較為簡(jiǎn)單的, 對(duì)該類零知識(shí)證明的改進(jìn)大都與內(nèi)積論證的改進(jìn)緊密相關(guān), 相關(guān)協(xié)議總結(jié)列于表8, 各協(xié)議優(yōu)化思路見(jiàn)圖10. 基于第7.2 節(jié)中涉及到的三種內(nèi)積論證, 本章第7.3.1 小節(jié)介紹BCCGP16, 第7.3.2 小節(jié)介紹Bulletproofs 和HKR19, 第7.3.3 小節(jié)介紹DRZ20.

圖10 基于IPA 的零知識(shí)證明典型協(xié)議優(yōu)化思路Figure 10 Optimization of typical zero-knowledge proof based on inner product argument

表8 基于IPA 的簡(jiǎn)潔NIZKAoK 總結(jié)Table 8 Succinct non-interactive zero-knowledge arguments of knowledge based on IPA

7.3.1 BCCGP16

主要思路與協(xié)議流程BCCGP16 中交互式簡(jiǎn)潔零知識(shí)知識(shí)論證的主要思路與協(xié)議流程如圖11 所示,說(shuō)明如下.

圖11 BCCGP16 的主要思路與協(xié)議流程[30]Figure 11 Main idea and process of BCCGP16

(1) 在協(xié)議交互之前, 證明者P將算術(shù)電路所有的門約束分為乘法門約束和不同乘法門之間的線性約束. 對(duì)于乘法門約束,P將電路中所有乘法門的左輸入a、右輸入b和輸出c排布為m×n的矩陣A,B,C,其中左輸入矩陣A的每一行分別記為(a1=(a1,1,a1,2,··· ,a1,n),··· ,am=(am,1,am,2,··· ,am,n)), 矩陣B,C同理. 這樣, 電路中的乘法門約束就可記為A ⊙B=C, 共有mn=|CM| 個(gè)等式. 對(duì)于不同乘法門之間的線性約束, 其可記為對(duì)于q ∈[Q], 有

其中wq,a,i,wq,b,i,wq,c,i為常向量,Kq為常標(biāo)量. 例如,假設(shè)電路中僅有一個(gè)加法門且門的左輸入、右輸入、輸出分別為2a1,1、a1,2、b1,1,則此時(shí)Q=1,m=1,w1,a,1=(2,1,0,··· ,0),w1,b,1=(?1,0,··· ,0),K1=0, 等式(41)等價(jià)于2a1,1+a1,2?b1,1=0. 由于每個(gè)乘法門最多有兩個(gè)輸入, 因此線性約束等式最多有Q ≤2mn個(gè).

為同時(shí)驗(yàn)證mn+Q個(gè)等式,P將這些等式歸約為一個(gè)多項(xiàng)式p(Y), 其思路是為每個(gè)等式逐個(gè)乘Y的j次冪,j ∈[mn+Q]. 具體的, 構(gòu)造

用于驗(yàn)證乘法門約束, 構(gòu)造

用于驗(yàn)證線性約束. 此時(shí)C-SAT 問(wèn)題被歸約為p(Y) =pM(Y) +pL(Y) 是否為零多項(xiàng)式的問(wèn)題. 由Schwartz-Zippel 引理, 驗(yàn)證p(Y) =pM(Y)+pL(Y) 是否為零多項(xiàng)式可通過(guò)選取隨機(jī)挑戰(zhàn)y$←?Zp然后驗(yàn)證p(y)?=0 實(shí)現(xiàn), 其可靠性誤差約為(mn+Q)/|F|.

(2) 在協(xié)議交互階段, 首先P發(fā)送對(duì)證據(jù)向量{ai,bi,ci}i∈[m]的承諾. 其次, 在收到第一次隨機(jī)挑戰(zhàn)y后,P構(gòu)造洛朗多項(xiàng)式t(X) 使得t(X) 的常數(shù)項(xiàng)為p(y), 并構(gòu)造對(duì)去除t(X) 常數(shù)項(xiàng)的多項(xiàng)式t′(X) 的多項(xiàng)式承諾. 其中t(X) =r(X)· r′(X)?2K(y) 為內(nèi)積形式. 一個(gè)t(X) 的例子見(jiàn)本小節(jié)BCCGP16 的平凡改進(jìn)部分. 具體而言,r(X) 可由{ai,bi,ci}i∈[m]計(jì)算得出, Com(r(X)) 也可由Com(ai),Com(bi),Com(ci) 計(jì)算得出;r′(X)=r(X)⊙(ym,y2m,··· ,ynm)+2s(X)、s(X) 和K(y) 均由電路結(jié)構(gòu)和隨機(jī)挑戰(zhàn)決定. 也就是說(shuō), 只需給出r(x) 驗(yàn)證者就可自己構(gòu)造r′(x)、K(y). 最后, 在V發(fā)送第二次隨機(jī)挑戰(zhàn)x后,P將r(x) 發(fā)送給V并利用多項(xiàng)式承諾揭示t′(x) 的值. 由于直接發(fā)送r(x) 可能泄露隱私信息, 為保障零知識(shí)性, 需引入盲化向量d對(duì)r(X) 進(jìn)行盲化, 故第一輪還需發(fā)送對(duì)盲化向量d的承諾.

(3) 在檢查階段,V首先利用承諾的同態(tài)屬性, 驗(yàn)證r(x) 與利用第一輪收到承諾構(gòu)造的r(x) 是一致的; 然后根據(jù)電路結(jié)構(gòu)和y自行計(jì)算s(x),K(y), 并計(jì)算t(x)←r(x)· r′(x)?2K(y), 最后驗(yàn)證t′(x)?=t(x). 若驗(yàn)證通過(guò), 則由Schwarz-Zippel 引理可知左式以極高的概率等于右式, 又右式與左式之差即為t(X) 的常數(shù)項(xiàng)p(y), 故可說(shuō)明p(y) 有極高的概率為0, 因此協(xié)議的可靠性得以保障.

上述協(xié)議最后需直接發(fā)送向量r(x). BCCGP16 指出可不直接發(fā)送r(x) 而發(fā)送對(duì)r(x),r′(x) 的承諾并調(diào)用內(nèi)積論證驗(yàn)證t′(x)?=r(x)·r′(x)?2K(y), 進(jìn)而降低通信復(fù)雜度. 事實(shí)上, 對(duì)r(x),r′(x) 的承諾也可由V根據(jù)對(duì){ai,bi,ci}i∈[m],d的承諾、電路結(jié)構(gòu)及隨機(jī)挑戰(zhàn)自行算出. 故此時(shí)的通信開(kāi)銷僅包含利用多項(xiàng)式承諾揭示t′(x) 及內(nèi)積論證所需要的通信量, 分析如下.

如果調(diào)用內(nèi)積論證, 協(xié)議會(huì)增加log2n輪. 此時(shí)P的計(jì)算開(kāi)銷會(huì)因?yàn)閮?nèi)積論證增加O(|CM|) 級(jí)別的群上運(yùn)算.V的計(jì)算開(kāi)銷主要分為打開(kāi)對(duì)多項(xiàng)式t′(x) 的承諾, 基于承諾的同態(tài)屬性計(jì)算對(duì)r(x)、r′(x) 和s(x) 的承諾和參與內(nèi)積論證, 而這均需要O(|CM|) 級(jí)別的群上運(yùn)算. 而對(duì)于通信復(fù)雜度, 在滿足mn=|CM| 的條件下, 將m設(shè)置為2、n設(shè)置為|CM|/2 時(shí)通信量可達(dá)到最低, 為(6 log|CM|+13) 個(gè)元素(包括群元素和域元素).

其次分析安全性. 基于DLOG 假設(shè), BCCGP16 是具有完美完備性、完美特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性和統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性的零知識(shí)論證. 對(duì)于完美完備性, 若算術(shù)電路所有的門約束都是可滿足的,則多項(xiàng)式p(Y) 是零多項(xiàng)式, 進(jìn)而可得洛朗多項(xiàng)式t(X) 沒(méi)有常數(shù)項(xiàng), 故最終驗(yàn)證者會(huì)接受證明. 對(duì)于完美特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性, 可構(gòu)造一個(gè)模擬器S, 其輸入公開(kāi)陳述和驗(yàn)證者的挑戰(zhàn), 隨機(jī)生成證明中的部分群或域元素, 并利用驗(yàn)證方程計(jì)算證明中的其余元素, 輸出模擬證明, 使得該證明與誠(chéng)實(shí)證明者生成的證明具有完美不可區(qū)分的分布. 該屬性由承諾的隱藏性和盲化向量d保障. 對(duì)于統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性, 可構(gòu)造一個(gè)提取器X, 其根據(jù)數(shù)量多項(xiàng)式于安全參數(shù)的可接受副本提取出有效的證據(jù). 該屬性由承諾的綁定性和內(nèi)積論證的證據(jù)擴(kuò)展可仿真性保障.

BCCGP16 的平凡改進(jìn). 事實(shí)上, BCCGP16 中將證據(jù)向量a、b和c排布為矩陣是非必要的, 后續(xù)研究[31,53,54]等也均是直接對(duì)a ⊙b=c進(jìn)行約束轉(zhuǎn)化的. 在這種設(shè)置下, 等式(41)–(43)可相應(yīng)消除與m相關(guān)的子式. 此時(shí), 等式(42)可改記為

等式(41)可改記為

等式(43)可改記為

對(duì)于t(X), 有

容易驗(yàn)證,t(X) 的常數(shù)項(xiàng)為2p(y)=2(p′M(Y)+p′L(Y)). 此外,t(X) 的度為6, 故對(duì)其承諾不再需要使用多項(xiàng)式承諾而只需分別對(duì)每一項(xiàng)系數(shù)進(jìn)行承諾, 這有助于降低證明者的計(jì)算開(kāi)銷.

7.3.2 Bulletproofs/HKR19

主要思路. Bulletproofs 的主要思路如圖12 所示. 與BCCGP16 類似, Bulletproofs 的主要思路也是先將n=|CM| 個(gè)乘法門約束和Q個(gè)線性約束歸約為一個(gè)多項(xiàng)式約束, 即p(Y,Z) 是否為零多項(xiàng)式; 然后將該多項(xiàng)式約束轉(zhuǎn)換為內(nèi)積形式陳述, 即t(X)=∑tiXi=L(X)·R(X) 中t2=p(y,z) 是否為0; 隨后就可構(gòu)造Com(t(x)) 和缺失t2項(xiàng)的Com(t′(x)) 并驗(yàn)證上述兩個(gè)承諾相等從而說(shuō)明p(Y,Z) 是零多項(xiàng)式, 而內(nèi)積論證可保障承諾是正確構(gòu)造的. 與BCCGP16 不同的是, Bulletproofs 中向量多項(xiàng)式t(X) 的度為常數(shù), 這與對(duì)BCCGP16 的平凡改進(jìn)思路一致.

圖12 Bulletproofs 的主要思路與協(xié)議流程[31]Figure 12 Main idea and process of Bulletproofs

此外, 上述過(guò)程并不是零知識(shí)的, 這是因?yàn)樵谡{(diào)用內(nèi)積論證時(shí)V可能會(huì)獲得部分秘密信息(V起碼會(huì)在內(nèi)積論證的最后一輪獲得秘密的組合). 為實(shí)現(xiàn)零知識(shí)性, 可引入隨機(jī)向量sL、sR并在L(X)、R(X)分別增加sLX3項(xiàng)和(yn ⊙sR)X3項(xiàng), 考慮到引入隨機(jī)向量不會(huì)改變t2, 因此其可在不影響完備性的同時(shí)保障零知識(shí)性.

協(xié)議流程基于以上主要思路, Bulletproofs 協(xié)議流程(見(jiàn)圖12 所示) 簡(jiǎn)要描述如下, 其中Com(a,b)表示形如gahbhr的承諾, 其中r$←?F.

討論總結(jié). 首先分析復(fù)雜度.P的計(jì)算開(kāi)銷包括構(gòu)造多項(xiàng)式p(Y,Z) 和t(X), 具體為O(|C|) 級(jí)別的域上運(yùn)算; 承諾向量aL、aR等, 具體為O(|CM|) 級(jí)別的群上運(yùn)算.V的計(jì)算開(kāi)銷包括利用承諾構(gòu)造P和構(gòu)造承諾Com(t′(x))、Com(t(x)), 具體為O(|CM|) 級(jí)別的群上運(yùn)算. 相比于BCCGP16, Bulletproofs的總通信量可降低到(2 log2|CM|+13) 個(gè)元素4其中, 調(diào)用內(nèi)積論證需傳輸?shù)?2 log|CM|+5) 個(gè)元素(確定陳述需3 個(gè), 內(nèi)積論證過(guò)程需(2 log|CM|+2) 個(gè)), 協(xié)議流程的第(1) 步需傳輸3 個(gè)承諾值, 第(2) 步需傳輸5 個(gè)承諾值..

然后分析安全性. 與BCCGP16 類似, Bulletproofs 具有完美完備性、完美特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性和計(jì)算意義的證據(jù)擴(kuò)展可仿真性. 對(duì)于完美完備性, 若算術(shù)電路所有的門約束都是可滿足的, 則多項(xiàng)式p(Y,Z) 是零多項(xiàng)式, 進(jìn)而可得多項(xiàng)式t(X) 的二次項(xiàng)系數(shù)t2為0, 故最終驗(yàn)證者會(huì)接受證明. 對(duì)于完美特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性, 可構(gòu)造一個(gè)模擬器S, 其輸入公開(kāi)陳述和驗(yàn)證者的挑戰(zhàn), 隨機(jī)生成證明中的部分群或域元素, 并利用驗(yàn)證方程計(jì)算證明中的其余元素, 輸出模擬證明, 使得該證明與誠(chéng)實(shí)證明者生成的證明具有完美不可區(qū)分的分布. 該屬性由承諾的隱藏性和盲化向量sL、sR保障. 對(duì)于計(jì)算意義的證據(jù)擴(kuò)展可仿真性, 可構(gòu)造一個(gè)提取器X, 其根據(jù)數(shù)量多項(xiàng)式于安全參數(shù)的可接受副本, 以不可忽略的概率提取出有效的證據(jù). 該屬性由承諾的綁定性和內(nèi)積論證的證據(jù)擴(kuò)展可仿真性保障.

HKR19 指出R1CS 是二次等式約束的一種特例, 并且相比于用二次等式表達(dá)電路, 利用R1CS 表達(dá)電路需要更多的中間變量和等式, 因此在一定程度上會(huì)增加證明者的計(jì)算開(kāi)銷[53].

基于以上發(fā)現(xiàn), HKR19 首先借鑒BCCGP16 和Bulletproofs 中的內(nèi)積論證構(gòu)造了零知識(shí)的內(nèi)積論證, 然后利用零知識(shí)內(nèi)積論證構(gòu)造了零知識(shí)的二次等式集合論證, 并沿用Bulletproofs 的主要思路構(gòu)造了針對(duì)C-SAT 問(wèn)題的簡(jiǎn)潔NIZKAoK. 實(shí)驗(yàn)仿真表明, HKR19 中的零知識(shí)論證的實(shí)際通信量和實(shí)際驗(yàn)證計(jì)算開(kāi)銷與Bulletproofs 基本相同, 實(shí)際證明計(jì)算開(kāi)銷比Bulleptroofs 少約1/4.

7.3.3 DRZ20

主要思路. DRZ20[54]實(shí)現(xiàn)了CRS 可更新的證明復(fù)雜度為線性、通信和驗(yàn)證復(fù)雜度均為對(duì)數(shù)級(jí)別的簡(jiǎn)潔NIZKAoK, 其驗(yàn)證復(fù)雜度在漸近級(jí)別上的突破主要依賴于結(jié)構(gòu)化承諾密鑰, 而CRS 用于保障結(jié)構(gòu)化承諾密鑰的私密性.

對(duì)于驗(yàn)證復(fù)雜度, DRZ20 指出BCCGP16 中驗(yàn)證者V的復(fù)雜度成線性的原因有三:

協(xié)議流程. DRZ20 的協(xié)議流程與BCCGP16 的協(xié)議流程是類似的, 簡(jiǎn)要描述如下.

(1) 將C-SAT 問(wèn)題歸約為p(Y) =pM(Y)+pL(Y) 為是否為零多項(xiàng)式的問(wèn)題. 其形式如第7.3.1 小節(jié)的等式(44) 和等式(45).

(2) 證明者P將對(duì)證據(jù)a、b、c和盲化向量d的承諾發(fā)送給驗(yàn)證者V. 與BCCGP16 不用的是, 此時(shí)的承諾為可更新的Pedersen 向量承諾, 為實(shí)現(xiàn)可更新性, 需在CRS 中相應(yīng)引入驗(yàn)證密鑰.

(3) 在V發(fā)送隨機(jī)挑戰(zhàn)y后,P構(gòu)造多項(xiàng)式t(X)使得t(X)的常數(shù)項(xiàng)為p(y),t(X)形式如等式(49).P構(gòu)造缺失常數(shù)項(xiàng)的多項(xiàng)式t′(X) 并發(fā)送對(duì)其的多項(xiàng)式承諾.

(4) 在V發(fā)送隨機(jī)挑戰(zhàn)x后,P通過(guò)多項(xiàng)式承諾揭示t′(x) 的值, 然后P和V調(diào)用對(duì)t(x) 的內(nèi)積論證. 與BCCGP16 不同的是, 此時(shí)的內(nèi)積論證為基于結(jié)構(gòu)化承諾密鑰的對(duì)數(shù)級(jí)別驗(yàn)證復(fù)雜度的內(nèi)積論證. 為保障可靠性, 需在CRS 中相應(yīng)引入驗(yàn)證密鑰. 此外, 為實(shí)現(xiàn)對(duì)數(shù)級(jí)別的驗(yàn)證復(fù)雜度,需將計(jì)算s(x) 的任務(wù)委托給證明者, 故證明者在該步還需給出對(duì)s(x) 的承諾并附帶一個(gè)零知識(shí)證明, 其用于證明s(x) 是正確構(gòu)造的.

討論總結(jié). 基于A-DLOG 和q-A-DLOG 假設(shè),DRZ20 具有完美完備性、完美特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性和統(tǒng)計(jì)意義的證據(jù)擴(kuò)展可仿真性. 相比于其他可更新的零知識(shí)證明方案[23,40,42,120], DRZ20 不再需要系列知識(shí)假設(shè)和代數(shù)群模型(algebraic group model), 但在CRS 長(zhǎng)度、通信和驗(yàn)證復(fù)雜度上有所犧牲(特別的, 通信復(fù)雜度從常數(shù)群元素級(jí)別提升至對(duì)數(shù)級(jí)別). 具體的, DRZ20 中可更新的簡(jiǎn)潔NIZKAoK 的證明開(kāi)銷為(22+10M)n′E1,通信量為(12 logn′E1+8 logn′P),驗(yàn)證開(kāi)銷為(12 logn′G1+4 logn′F),其中m指電路中的導(dǎo)線數(shù)目,M是描述預(yù)處理電路輸入輸出導(dǎo)線數(shù)目上限的參數(shù)(預(yù)處理電路由P構(gòu)造用于委托計(jì)算s(X)),n′是預(yù)處理電路的規(guī)模, 其滿足n′≤n+(2m/M ?1). 在Sonic[40]中,n′=3|CM|,M=3. 此外,E、P分別指群冪運(yùn)算和配對(duì)運(yùn)算,E1指非對(duì)稱群中群G1上的群冪運(yùn)算, G、F 分別指對(duì)應(yīng)群和域中的元素. 對(duì)于實(shí)際性能,由于引入了雙線性群,相比于其他不需配對(duì)的同類零知識(shí)證明,DRZ20會(huì)帶來(lái)一定的性能損失.

7.4 總結(jié)

基于IPA 的零知識(shí)證明具有以下優(yōu)點(diǎn):

(1) 底層難題假設(shè)更為通用. 均基于DLOG 假設(shè)及其變種, 屬于標(biāo)準(zhǔn)假設(shè).

(2) 應(yīng)用場(chǎng)景多元. 除實(shí)現(xiàn)對(duì)C-SAT 問(wèn)題的證明外, 基于IPA 還可構(gòu)造低實(shí)際通信量的范圍證明[31](range proof)、洗牌正確性證明(proof of correctness of a shuffle)[53,135]、向量置換證明[54](vector permutation proof) 等, 在區(qū)塊鏈密碼貨幣場(chǎng)景下應(yīng)用廣泛.

然而, 該類零知識(shí)證明的驗(yàn)證復(fù)雜度為線性, 驗(yàn)證時(shí)由于引入了大量的群冪運(yùn)算也會(huì)導(dǎo)致實(shí)際驗(yàn)證開(kāi)銷較大. 值得注意的是, DRZ20 雖然實(shí)現(xiàn)了驗(yàn)證復(fù)雜度在漸近級(jí)別上的突破, 但需要承諾密鑰結(jié)構(gòu)化并引入CRS 用于保障密鑰分布的正確性.

8 基于MPC-in-the-Head 的零知識(shí)證明

本章介紹基于MPC-in-the-Head 的零知識(shí)證明. 該類協(xié)議的構(gòu)造思路是證明者在腦海中模擬運(yùn)行一個(gè)針對(duì)零知識(shí)函數(shù)的安全多方計(jì)算協(xié)議, 然后將協(xié)議運(yùn)行過(guò)程中的視圖發(fā)送給驗(yàn)證者, 驗(yàn)證者驗(yàn)證視圖正確性, 而協(xié)議的零知識(shí)性由MPC 協(xié)議的隱私性保障. 本章第8.1 節(jié)介紹相關(guān)定義及概念, 第8.2 節(jié)介紹該類協(xié)議的背景及主要思路, 第8.3 節(jié)介紹典型協(xié)議.

8.1 定義及概念

定義33(安全多方計(jì)算[136]) 安全多方計(jì)算(secure multiparty computation, MPC) 可使獨(dú)立參與方在不信任彼此及第三方的情況下, 基于各自的秘密輸入共同計(jì)算某個(gè)目標(biāo)聯(lián)合函數(shù), 且計(jì)算期間不泄露除計(jì)算結(jié)果外的其他額外信息. 記安全多方計(jì)算協(xié)議為Πf, 目標(biāo)聯(lián)合函數(shù)為f(x,w1,r1,··· ,wn,rn),其中公共輸入為x, 參與方P1,P2,··· ,Pn的秘密輸入分別為w1,w2,··· ,wn、隨機(jī)輸入分別為r1,r2,··· ,rn. 參與方Pi在協(xié)議運(yùn)行第j+1 輪時(shí)發(fā)送的消息可由消息確定函數(shù)Π(i,x,wi,ri,(m1,m2,··· ,mj)) 決定, (m1,m2,··· ,mj) 分別代表參與方Pi前j輪收到的消息向量. 若消息向量包含k個(gè)不同參與方的消息(包括Pi), 就稱消息確定函數(shù)Π 為k元. 記參與方Pi的視圖為Vi, 其包含wi,ri及Pi在協(xié)議運(yùn)行過(guò)程中收到的所有消息. 參與方Pi的本地輸出可由其視圖Vi確定, 記為fi(x,Vi). 在本章中,只考慮各參與方的本地輸出與目標(biāo)聯(lián)合函數(shù)相等的情況, 即

安全多方計(jì)算的敵手模型分為半誠(chéng)實(shí)敵手模型和惡意敵手模型. 半誠(chéng)實(shí)敵手會(huì)誠(chéng)實(shí)地運(yùn)行協(xié)議, 但會(huì)通過(guò)分析其他參與方的消息試圖獲得與誠(chéng)實(shí)參與方秘密輸入相關(guān)的信息; 而惡意敵手可以在協(xié)議運(yùn)行過(guò)程中實(shí)現(xiàn)任意高效攻擊, 如控制參與方發(fā)送消息、拒絕其他參與方的消息、篡改消息等. 本章中出現(xiàn)的MPC協(xié)議均處于半誠(chéng)實(shí)敵手模型下.

一個(gè)安全多方計(jì)算協(xié)議Πf的完美正確性(perfect correctness) 是指隨機(jī)數(shù)r1,r2,··· ,rn的選取不會(huì)影響目標(biāo)函數(shù)計(jì)算結(jié)果的正確性, 即

一個(gè)安全多方計(jì)算協(xié)議Πf的t-隱私性(t-privacy) 是指t個(gè)半誠(chéng)實(shí)敵手無(wú)法獲得與誠(chéng)實(shí)參與方秘密輸入相關(guān)的其他信息. 具體的, 稱安全多方計(jì)算協(xié)議Πf具有t-隱私性. 如果對(duì)于任意輸入(x,w1,r1,··· ,wn,rn) 及任意腐化參與方集合T(滿足|T|≤t), 都存在一個(gè)PPT 模擬器S, 使得腐化參與方的聯(lián)合視圖分布與模擬器生成的分布相同, 即

一個(gè)安全多方計(jì)算協(xié)議的r-魯棒性(r-robustness) 是指如果R(x,w)?= 1, 那么即使r個(gè)惡意敵手也無(wú)法使誠(chéng)實(shí)參與方輸出接受.

一個(gè)安全多方計(jì)算協(xié)議的視圖一致性[98](consistency of view) 是指對(duì)于任意的視圖對(duì)(Vi,Vj),x和Vi所確定的由參與方Pi發(fā)給Pj的消息與視圖Vj所表明的此消息是一致的. 反之亦然.

定義34(交織里德-所羅門碼[35]) 對(duì)正整數(shù)n和k, 域F 及向量ξ= (ξ1,ξ2,··· ,ξn)∈Fn, RS 碼L= RSF,n,k,ξ是[n,k,d] 線性碼, 其形式為(p(ξ1),p(ξ2),··· ,p(ξn)), 其中p(·) 是度小于k的多項(xiàng)式, 記為碼多項(xiàng)式. 由于任意兩個(gè)度小于k的域上多項(xiàng)式最多有k ?1 個(gè)交點(diǎn), 因此碼距d最小為n ?k+1.

若L ?Fn是[n,k,d] 線性碼, 則交織碼(interleaved code)Lm是定義在Fm×n上的[n,mk,d] 線性碼. 具體的, 該碼可排列成m×n的碼矩陣U, 該碼矩陣的每一行ui滿足ui ∈L, 即第i行的表示形式為(pi(ξ1),pi(ξ2),··· ,pi(ξn)), 其中pi(·) 是度小于k的多項(xiàng)式. 基于交織碼, 交織里德-所羅碼的定義自然可得, 簡(jiǎn)記為IRS 碼.

在本章中, 由于Ligero 系列協(xié)議[35,36,48]中碼矩陣U可被視為信息論安全證明中的諭示, 因此也被稱為諭示矩陣.

定義35(利用IRS 碼加密消息[35]) 給定η=(η1,η2,··· ,η?) (? ≤k) 及RS 碼L=RSF,n,k,ξ, 對(duì)長(zhǎng)為?的消息向量x= (x1,x2,··· ,x?) 的加密即為碼(pu(ξ1),pu(ξ2),··· ,pu(ξn)), 其中pu(·) 是碼u對(duì)應(yīng)的碼多項(xiàng)式, 且滿足對(duì)于任意的i ∈[?],pu(ηi) =xi. 給定碼矩陣U的每一行u1,u2,··· ,um, 對(duì)消息向量x= (x11,x12,··· ,x1?,··· ,xm1,xm2,··· ,xm?) 的加密即為碼(pu1(ξ1),pu1(ξ2),··· ,pu1(ξn),···,pum(ξ1),pum(ξ2),··· ,pum(ξn)).

8.2 背景及主要思路

8.2.1 背景

零知識(shí)證明與MPC 在多個(gè)層面存在緊密聯(lián)系. 在協(xié)議內(nèi)涵層面, 零知識(shí)證明可以視為惡意敵手模型下的一種兩方特殊MPC 協(xié)議[136]. 在該協(xié)議中, 證明者和驗(yàn)證者共同擁有問(wèn)題的陳述x, 證明者還擁有證據(jù)w, 證明者試圖在不泄露證據(jù)的同時(shí)證明R(x,w) = 1. 該協(xié)議中目標(biāo)聯(lián)合函數(shù)f(x,w,r1,r2) =R(x,w), 驗(yàn)證者是敵手, 其目標(biāo)是獲取與證據(jù)w相關(guān)的其他隱私信息.

在協(xié)議構(gòu)造層面, 零知識(shí)證明可用于構(gòu)造MPC 協(xié)議, MPC 也可用于構(gòu)造零知識(shí)證明. 針對(duì)前者,Goldreich、Micali 和Wigderson[137]利用零知識(shí)證明給出了一種在不更改目標(biāo)聯(lián)合函數(shù)的同時(shí)將半誠(chéng)實(shí)敵手模型下的MPC 協(xié)議轉(zhuǎn)換為惡意敵手模型下的MPC 協(xié)議的通用方法. 針對(duì)后者, 又分為基于混淆電路(garbled circuits) 的零知識(shí)證明和基于MPC-in-the-Head 的零知識(shí)證明.

Jawurek、Kerschbaum 和Orlandi[138]于2013 年提出了一種基于混淆電路的零知識(shí)證明, 該類證明不需要底層的混淆電路具有隱私性而只需其具有可認(rèn)證性(authenticity) 和可驗(yàn)證性(verifiability), 因此Frederiksen、Nielsen 和Orlandi[139]將該類協(xié)議稱為免隱私的混淆方案(privacy-free garbling scheme).后續(xù)工作如文獻(xiàn)[140,141] 從通信復(fù)雜度、底層難題假設(shè)等方面優(yōu)化了上述零知識(shí)證明. 由于該類證明的通信復(fù)雜度均與陳述規(guī)模和證據(jù)大小成線性, 故不是簡(jiǎn)潔的, 本章不再詳述.

Ishai 等人[98]于2007 年提出了一種基于MPC-in-the-Head 的零知識(shí)證明, 后續(xù)工作具體實(shí)現(xiàn)了該協(xié)議[33], 并從通信復(fù)雜度、可靠性等角度進(jìn)行了改進(jìn)[34–36,47]. 該類零知識(shí)證明只需對(duì)稱密鑰操作、不需要可信初始化、通信復(fù)雜度可達(dá)到亞線性級(jí)別、實(shí)際證明速率較快, 具有較高的理論價(jià)值和較為廣泛的應(yīng)用前景.

8.2.2 主要思路

Ishai 等人提出的零知識(shí)證明主要思路如協(xié)議8 所示. 證明者首先在腦海中模擬一個(gè)MPC 協(xié)議的運(yùn)行, 得到每個(gè)參與方的視圖, 證明者隨后對(duì)每個(gè)視圖作承諾, 并將這些承諾發(fā)給驗(yàn)證者; 然后驗(yàn)證者挑選2個(gè)隨機(jī)挑戰(zhàn); 其次證明者打開(kāi)這2 個(gè)承諾; 最后驗(yàn)證者驗(yàn)證一致性和正確性. 該協(xié)議具有完美完備性, 其源于Πf的完美正確性; 具有可靠性, 其源于Πf的完美正確性和敵手模型的半誠(chéng)實(shí); 具有零知識(shí)性, 其源于2-隱私性. 對(duì)于零知識(shí)性, 由于驗(yàn)證者V擁有2 個(gè)參與方的視圖, 其本質(zhì)上相當(dāng)于一個(gè)腐化了2 個(gè)參與方并試圖獲取其他隱私信息的半誠(chéng)實(shí)敵手, 這與2-隱私性的內(nèi)涵是一致的. 事實(shí)上, 該證明的模擬器就是調(diào)用2-隱私性的模擬器構(gòu)造的.

協(xié)議8 IKOS07 協(xié)議[98]公共輸入: 陳述x 和MPC 協(xié)議Πf, 其中Πf 具有完美正確性和2-隱私性. 給定一個(gè)多項(xiàng)式時(shí)間內(nèi)可判定的二元關(guān)系R 及其對(duì)應(yīng)的NP 語(yǔ)言L(R), 目標(biāo)聯(lián)合函數(shù)f 與L(R) 滿足條件: 對(duì)于任意的x、任意的w = w1 ⊕w2 ⊕···⊕wn 和r1,r2,··· ,rn, 有f(x,w1,r1,··· ,wn,rn) = R(x,w1 ⊕w2 ⊕···⊕wn).證明者輸入: w, 滿足R(x,w) = 1.1. P 將證據(jù)w 隨機(jī)分為n 份w1,w2,··· ,wn, 隨后在腦海中模擬以x 為公共輸入、以w1,w2,··· ,wn 為各參與方隱私輸入、以r1,r2,··· ,rn 為各參與方隨機(jī)輸入的MPC 協(xié)議Πf. 協(xié)議運(yùn)行完畢后, P 會(huì)得到n 個(gè)參與方的視圖V1,V2,··· ,Vn, 他分別承諾這n 個(gè)視圖, 即生成隨機(jī)數(shù)s1,s2,··· ,sn, 然后計(jì)算Com(V1;s1),Com(V2;s2),··· ,Com(Vn;sn), 并將這n 個(gè)承諾發(fā)送給V.2. V 隨機(jī)挑選兩個(gè)參與方i,j$←?[n], 并將i,j 發(fā)送給P.3. P 將Vi,si,Vj,sj 發(fā)送給驗(yàn)證者.4. V 驗(yàn)證如下三項(xiàng)并輸出比特b: (1) 第3 步收到的消息與第1 步收到的承諾是一致的. (2) 參與方Pi 和Pj 的本地輸出fi(x,Vi) 與fj(x,Vj) 皆為1. (3) 參與方Pi 和Pj 的視圖Vi 和Vj 是一致的. 如果上述三項(xiàng)未均通過(guò), 則選擇拒絕輸出: 比特b, b = 1 代表V 接受, b = 0 代表V 拒絕.

基于MPC-in-the-Head 的零知識(shí)證明運(yùn)行MPC 協(xié)議的效率與運(yùn)行普通MPC 協(xié)議的效率存在一定的差別. 在MPC-in-the-Head 環(huán)境下, 證明者可以免費(fèi)利用OT 信道[98](bblivious transfer channel) 及任意的二元確定函數(shù)[33](特定條件下的n元確定函數(shù)也可以[47]), 這是因?yàn)樽C明者只需腦海中模擬, 而無(wú)需真正運(yùn)行MPC 協(xié)議, 這也就省去了部分計(jì)算和通信開(kāi)銷. 因此, 雖然該類零知識(shí)證明的證明復(fù)雜度為線性或準(zhǔn)線性級(jí)別, 但實(shí)際證明開(kāi)銷通常并不大.

對(duì)于證明復(fù)雜度以外的性能表現(xiàn),針對(duì)實(shí)現(xiàn)非交互的方式,該類零知識(shí)證明是Σ 協(xié)議,故可通過(guò)ROM下的Fiat-Shamir 啟發(fā)式轉(zhuǎn)換為非交互零知識(shí)證明; 針對(duì)是否抗量子及需要公鑰加密, 該類零知識(shí)證明是基于PCP、IPCP 或IOP 構(gòu)造的, 調(diào)用合適的MPC 協(xié)議[137,142,143]即可實(shí)現(xiàn)只依賴對(duì)稱密鑰操作且抗量子的零知識(shí)證明. 事實(shí)上對(duì)該類零知識(shí)證明的優(yōu)化主要集中在降低通信復(fù)雜度, 且根據(jù)通信復(fù)雜度漸近級(jí)別的不同, 該類零知識(shí)證明可分為兩類, 協(xié)議總結(jié)如表9 所示, 具體描述如下.

第一種是通信復(fù)雜度為O(|C|) 的零知識(shí)證明, 包括表9 中的ZKBoo[33]、ZKB++[34]、KKW18[47]和Limbo[49]. 協(xié)議8 的通信量為(n·|Com|+t(|F|+|V|+|s|)), 其中|Com| 指承諾的大小,t為打開(kāi)視圖數(shù)目,|F| 指域元素的大小,|V| 指視圖規(guī)模,|s| 指隨機(jī)數(shù)的大小, 因此通信復(fù)雜度主要由參與方數(shù)目和視圖規(guī)模決定. 考慮視圖規(guī)模, 對(duì)于一個(gè)目標(biāo)聯(lián)合函數(shù)為電路求值且基于加性秘密分享的MPC 協(xié)議, 各參與方分別持有每條電路輸入導(dǎo)線的秘密分享份額. 為了保障MPC 協(xié)議的正確性和安全性, 每個(gè)參與方視圖在每個(gè)電路門處都需要存儲(chǔ)一個(gè)秘密分享份額, 否則要么無(wú)法正確得到電路計(jì)算結(jié)果, 要么最多n?1個(gè)半誠(chéng)實(shí)敵手就可破壞隱私性, 這就意味著每個(gè)參與方的視圖規(guī)模至少為O(|C|).

表9 基于MPC-in-the-Head 的(簡(jiǎn)潔) NIZKAoK 總結(jié)Table 9 (Succinct) non-interactive zero-knowledge arguments of knowledge based on MPC-in-the-Head

事實(shí)上, 第一個(gè)可實(shí)現(xiàn)的基于MPC-in-the-Head 的零知識(shí)證明ZKBoo[33]的通信復(fù)雜度為O((n ?1)2|C|). 這是因?yàn)閆KBoo 的底層MPC 協(xié)議是GMW 協(xié)議[137], 其需要參與方兩兩交互, 每個(gè)視圖規(guī)模為O((n ?1)|C|), 且協(xié)議共需打開(kāi)n ?1 個(gè)視圖. 記目標(biāo)可靠性誤差為2?σ, 則ZKBoo 的通信復(fù)雜度約為σ·|C|(n ?1)2/(log2n ?1), 其中n ≥3. 由于該函數(shù)是遞增函數(shù), 因此n= 3 時(shí)通信復(fù)雜度最低,此時(shí)可靠性誤差為2/3, 故協(xié)議在實(shí)際運(yùn)行過(guò)程中需要重復(fù)較多輪數(shù). ZKB++[34]雖然將ZKBoo 的實(shí)際通信量降低了約一半, 然而其仍與n有關(guān), 可靠性誤差也為2/3. 一個(gè)改進(jìn)方向就是設(shè)計(jì)通信復(fù)雜度與n無(wú)關(guān)的MPC 底層協(xié)議, 這樣就可以通過(guò)增加參與方個(gè)數(shù)n來(lái)降低可靠性誤差進(jìn)而降低總通信量. 基于此, KKW18[47]設(shè)計(jì)了一個(gè)針對(duì)布爾電路、消息確定函數(shù)為n元、視圖打開(kāi)個(gè)數(shù)為n ?1 的MPC 協(xié)議. 在KKW18 中, 對(duì)于打開(kāi)的n ?1 個(gè)視圖, 每個(gè)視圖的規(guī)模與n無(wú)關(guān), 此時(shí)可靠性誤差為1/n. 當(dāng)然, 為了驗(yàn)證協(xié)議的正確性與一致性, 第n個(gè)參與方的廣播消息仍需要由證明者發(fā)給驗(yàn)證者, 此消息級(jí)別為O(|C|), 故協(xié)議的通信復(fù)雜度仍為O(|C|). 與上述思路不同的是, Limbo[49]基于Client-Server 模型構(gòu)造了一種較為適合MPC-in-the-Head 的MPC 協(xié)議, 實(shí)現(xiàn)了通信復(fù)雜度雖為O(|C|)、但實(shí)際性能良好的NIZKAoK.

通信復(fù)雜度為O(|C|) 的工作有兩個(gè)共同特征, 第一是均調(diào)用了基于加性秘密分享的MPC 協(xié)議, 每個(gè)參與方的視圖規(guī)模與電路規(guī)模成線性關(guān)系; 第二是除加性秘密分享帶來(lái)的約束之外, 參與方的視圖之間僅有電路約束關(guān)系.

8.3 典型協(xié)議分析

本節(jié)介紹基于MPC-in-the-Head 的零知識(shí)證明典型協(xié)議, 分析各協(xié)議的構(gòu)造思路、協(xié)議流程、復(fù)雜度及安全性, 各典型協(xié)議優(yōu)化思路如圖13 所示. 本節(jié)第8.3.1 小節(jié)介紹ZKBoo 和ZKB++, 第8.3.2 小節(jié)介紹KKW18, 第8.3.3 小節(jié)介紹Ligero 和Ligero++, 第8.3.4 小節(jié)介紹BooLigero, 第8.3.5 小節(jié)介紹Limbo.

圖13 基于MPC-in-the-Head 的零知識(shí)證明典型協(xié)議優(yōu)化思路Figure 13 Optimization of typical zero-knowledge proof based on MPC-in-the-Head

8.3.1 ZKBoo/ZKB++

ZKBoo 由Giacomelli、Madsen 和Orlandi[33]提出, 是第一個(gè)可實(shí)現(xiàn)的基于MPC-in-the-Head 的NIZKAoK. ZKBoo 的底層MPC 協(xié)議是GMW 協(xié)議[137], 其消息確定函數(shù)為2 元、消息傳播方式點(diǎn)對(duì)點(diǎn)、視圖打開(kāi)個(gè)數(shù)為n ?1. 可以證明參與方數(shù)目n=3 時(shí)ZKBoo 的實(shí)際通信量最低.

主要思路. ZKBoo 設(shè)計(jì)了一個(gè)(2,3)-函數(shù)拆解方案((2,3)-function decomposition), 即對(duì)于計(jì)算電路的某個(gè)目標(biāo)函數(shù)f:F|w|→F, 可將其拆解為3 個(gè)計(jì)算分支, 并且任意揭示2 個(gè)計(jì)算分支不會(huì)泄露與秘密輸入w相關(guān)的其他信息. 此函數(shù)拆解方案本質(zhì)上是GMW 協(xié)議[137]在算術(shù)電路下的變種, 即一種基于加性秘密分享的2-隱私性MPC 協(xié)議.

ZKBoo 的拆解方案如圖14 所示, 在該方案中證明者P的步驟主要包括:

(1) 將證據(jù)w利用加性秘密分享(圖14 中的Share) 隨機(jī)分為w1,w2,w3共3 份, 并分發(fā)給相應(yīng)參與方.

(3) 在腦海中模擬各參與方將本地電路輸出份額值廣播, 并在獲取其他方的份額后恢復(fù)電路最終輸出值的過(guò)程(圖14 中的Recover).

圖14 ZKBoo [33](2,3)-函數(shù)拆解方案5Figure 14 (2,3)-function decomposition of ZKBoo

由于wi是隨機(jī)生成的, 且消息確定函數(shù)是二元函數(shù), 故獲取其中2 個(gè)計(jì)算分支既能檢查正確性和一致性, 又不會(huì)泄露第3 個(gè)參與方的秘密輸入信息. 具體的, 對(duì)于輸入為第x個(gè)門、第y個(gè)門、輸出為第z個(gè)門的加法門, 任意的i ∈[3], 下式成立

對(duì)于輸入為x、y, 輸出為z的乘法門, 任意的i ∈[3], 下式成立

其中si表示第i個(gè)參與方的偽隨機(jī)種子,R(·,·) 表示以對(duì)應(yīng)種子和對(duì)應(yīng)電路門為輸入生成的隨機(jī)數(shù),i和i+1 均為模3 剩余.

協(xié)議流程ZKBoo 的協(xié)議流程如圖15 所示, 其分為證明者生成承諾、驗(yàn)證者挑戰(zhàn)、證明者響應(yīng)、驗(yàn)證者檢查四個(gè)階段, 具體過(guò)程如下.

圖15 ZKBoo 流程圖[33]Figure 15 Process of ZKBoo

討論總結(jié). 現(xiàn)分別從可靠性、零知識(shí)性、復(fù)雜度和改進(jìn)方向?qū)KBoo 和ZKB++ 進(jìn)行討論總結(jié).

(1) 可靠性. 在ZKBoo 中, 一個(gè)惡意的證明者可以通過(guò)偽造參與方視圖或者破壞視圖一致性來(lái)欺騙驗(yàn)證者. 考慮偽造證據(jù)w′且R(x,w′) = 0, 若惡意證明者不破壞視圖一致性, 則由MPC 協(xié)議的完美正確性, 驗(yàn)證者一定會(huì)發(fā)現(xiàn)錯(cuò)誤. 若惡意證明者破壞視圖一致性, 考慮最有利于欺騙成功的情況, 即惡意證明者僅破壞一對(duì)視圖的一致性, 此時(shí)可靠性為1/3, 可靠性誤差為2/3. 因此ZKBoo 的可靠性誤差為2/3.

(2) 零知識(shí)性. 考慮ZKBoo 逐門更新視圖和計(jì)算電路的過(guò)程, 參與方的隱私信息就是每個(gè)電路門值的秘密分享份額, 只要不泄露該份額即可滿足零知識(shí)性. 對(duì)于加法門, 各參與方可以本地更新視圖, 故零知識(shí)性可自然保障. 對(duì)于乘法門, 計(jì)算參與方e的視圖Ve時(shí)需要參與方e+1 的視圖Ve+1, 而Ve+1又與Ve+2相關(guān), 因此驗(yàn)證者獲取視圖Ve和Ve+1時(shí)可能會(huì)獲取與Ve+2相關(guān)的隱私信息, 這違背了隱私性, 從而破壞了零知識(shí)性. ZKBoo 解決該問(wèn)題的方法是為消息確定函數(shù)增加隨機(jī)輸入(等式(59)中的R(·)), 該隨機(jī)輸入能夠在保障正確性的同時(shí)實(shí)現(xiàn)視圖的均勻分布, 進(jìn)而實(shí)現(xiàn)特殊誠(chéng)實(shí)驗(yàn)證者零知識(shí)性.

(3) 知識(shí)可靠性. ZKBoo 是一個(gè)3 輪Σ 協(xié)議, 并且具有3-特殊可靠性. 給定3 個(gè)接受副本(a,1,z1),(a,2,z2),(a,3,z3), 由于承諾的綁定性,z1和z3中包含的視圖V1是一致的. 同理,z1和z2中包含的視圖V2,z2和z3中包含的視圖V3也是一致的. 在擁有V1,V2,V3后,可分別計(jì)算w1←V1[0],w2←V2[0],w2←V3[0], 然后恢復(fù)w ←w1+w2+w2, 從而提取出證據(jù)w.

(4) 復(fù)雜度. 對(duì)于證明復(fù)雜度, 證明者需在腦海中模擬電路的計(jì)算過(guò)程并調(diào)用O(|C|) 次消息確定函數(shù), 故證明復(fù)雜度為O(|C|); 對(duì)于驗(yàn)證復(fù)雜度, 驗(yàn)證者需在驗(yàn)證過(guò)程中重新計(jì)算電路, 故驗(yàn)證復(fù)雜度也為O(|C|); 對(duì)于通信復(fù)雜度, 當(dāng)n確定時(shí), 通信量主要由視圖Ve和Ve+1決定, 而視圖規(guī)模均為O(|C|), 故通信復(fù)雜度也為O(|C|).

(5) 改進(jìn)方向. 對(duì)于通信復(fù)雜度, ZKBoo 和ZKB++ 在采用加性秘密分享計(jì)算電路時(shí)會(huì)生成n個(gè)大小為O(|C|) 副本, 若視圖打開(kāi)數(shù)目為n ?1, 則通信復(fù)雜度為O((n ?1)|C|), 其與參與方數(shù)目n和電路規(guī)模|C| 有關(guān), 而n又與可靠性誤差有關(guān). 在ZKBoo 和ZKB++ 中, 為實(shí)現(xiàn)最低的通信復(fù)雜度, 需取n= 3, 而這會(huì)使得可靠性誤差為2/3. 因此, 相比于其他零知識(shí)證明, 為達(dá)到同樣的目標(biāo)可靠性誤差, ZKBoo 和ZKB++ 需重復(fù)運(yùn)行較多的輪數(shù), 導(dǎo)致較高的實(shí)際通信量. 一個(gè)優(yōu)化方向是采用合適的MPC 協(xié)議將生成視圖的過(guò)程交與驗(yàn)證者, 使通信復(fù)雜度中的|C| 項(xiàng)與n無(wú)關(guān), 從而通過(guò)降低可靠性誤差來(lái)降低運(yùn)行輪數(shù)進(jìn)而優(yōu)化通信復(fù)雜度, 而這恰好就是KKW18 的主要思想.

8.3.2 KKW18

KKW18 由Katz、Kolesnikov 和Wang[47]提出, 其底層MPC 協(xié)議出自文獻(xiàn)[143], 該協(xié)議消息確定函數(shù)為n元、視圖打開(kāi)個(gè)數(shù)為n ?1.

主要思路. KKW18 雖然也是逐門計(jì)算電路, 但是在該協(xié)議中各參與方的份額本質(zhì)上是均勻分布的隨機(jī)數(shù), 可由偽隨機(jī)生成器生成, 故對(duì)于打開(kāi)的n ?1 個(gè)視圖, 可以僅發(fā)送對(duì)應(yīng)的隨機(jī)種子(長(zhǎng)度僅與安全參數(shù)有關(guān)) 即可檢查正確性和一致性. 該思想與ZKB++ 內(nèi)涵是一致的, 即可由驗(yàn)證者計(jì)算出的視圖不需要發(fā)送. 需要注意的是, 采用n元消息確定函數(shù)并不是自然的, 因?yàn)闄z查正確性時(shí)需要第n個(gè)參與方的相關(guān)信息, 而獲取該相關(guān)信息又可能違背n-隱私性進(jìn)而破壞零知識(shí)性. 針對(duì)這一問(wèn)題, KKW18 采用了預(yù)處理模型下的MPC 協(xié)議(MPC protocol in the preprocessing model), 使份額的生成與電路的計(jì)算相互獨(dú)立,進(jìn)而保障了零知識(shí)性.

底層MPC 協(xié)議KKW18 中的MPC 模型為預(yù)處理模型, 可分為預(yù)處理階段和在線階段, 其具體流程如圖16 所示. 在給定具體描述前, 首先介紹加性秘密分享的參數(shù)記法. 記[·] 表示加性秘密分享的份額,[·]i特指參與方Pi的份額. 對(duì)于電路中每條導(dǎo)線,n個(gè)參與方擁有一個(gè)(n,n) 的隨機(jī)秘密分享掩藏份額和一個(gè)公開(kāi)的掩藏值. 記zα為布爾電路C在導(dǎo)線α處的值, ?zα為公開(kāi)掩藏值, [λα] 為秘密分享掩藏份額,其恢復(fù)值為λα, 則zα滿足zα= ?zα ⊕λα.

圖16 KKW18 底層MPC 協(xié)議流程圖[47]Figure 16 Process of MPC protocol in KKW18

(1) 預(yù)處理階段. 預(yù)處理階段各參與方以偽隨機(jī)種子和輔助輸入為輸入, 生成各輸入導(dǎo)線值及電路門值的秘密分享掩藏份額. 對(duì)于輸入導(dǎo)線α, 各參與方獲得份額[λα]. 對(duì)于輸入導(dǎo)線為a、b, 輸出導(dǎo)線為c的異或門, 各參與方獲得秘密掩藏份額[λa],[λb] 并自行計(jì)算生成[λc]←[λa]⊕[λb]. 對(duì)于輸入導(dǎo)線分別為a和b、輸出導(dǎo)線為c的與門, 各參與方獲得份額[λa,b], 其滿足λa,b=λa·λb.在預(yù)處理階段, 份額[λ] 是均勻隨機(jī)的, 因此可由偽隨機(jī)種子s ∈{0,1}κs生成. 需要注意的是,前n ?1 個(gè)參與方的秘密掩藏份額[λa,b] 雖然也可由該法生成, 但第n個(gè)參與方Pn的λa,b需要長(zhǎng)為|C| 的輔助輸入aux 才能保證[λa,b]=λa·λb成立.

(2) 在線階段. 在線階段各參與方以輸入導(dǎo)線的公開(kāi)掩藏值?z為輸入, 結(jié)合輸入導(dǎo)線和各自持有的秘密分享掩藏份額, 計(jì)算電路中所有導(dǎo)線的公開(kāi)掩藏值. 對(duì)于異或門, 參與方可本地計(jì)算公開(kāi)掩藏值對(duì)于與門, 參與方需本地計(jì)算[y] 并將其廣播, 之后每個(gè)參與方才能得到該與門的公開(kāi)掩藏值. 各參與方逐門更新, 在計(jì)算得到輸出導(dǎo)線的公開(kāi)掩藏值?z之后, 他們就廣播各自輸出導(dǎo)線的秘密分享掩藏份額[λ] 并最終恢復(fù)輸出導(dǎo)線值.

現(xiàn)對(duì)上述MPC 協(xié)議進(jìn)行總結(jié). 首先, 若證明者誠(chéng)實(shí)運(yùn)行協(xié)議, 由于秘密分享掩藏份額是在公開(kāi)掩藏值之前生成的, 因此它們是互相獨(dú)立的. 其次, 上述MPC 協(xié)議僅需在計(jì)算與門和恢復(fù)電路最終輸出導(dǎo)線值時(shí)廣播本地計(jì)算值[y], 且各參與方計(jì)算廣播值時(shí)不需要交互, 故在整個(gè)協(xié)議中一個(gè)參與方最多需要傳輸|CA|+1 個(gè)比特, 其中|CA| 表示電路中與門的個(gè)數(shù). 最后, 在擁有參與方Pi的偽隨機(jī)種子si及可能需要的輔助輸入(僅針對(duì)Pn) 后, 該參與方的廣播值可自行算出.

協(xié)議流程在零知識(shí)證明中調(diào)用上述MPC 協(xié)議時(shí), 每條輸入導(dǎo)線值和每個(gè)電路值的秘密分享掩藏份額[λ]就是各參與方持有的隱私信息, 其在預(yù)處理階段生成, 本質(zhì)上是均勻分布的隨機(jī)數(shù); 公開(kāi)掩藏值?z于在線階段生成, 是每個(gè)參與方的公共輸入. 若協(xié)議誠(chéng)實(shí)運(yùn)行, 由于[λ] 在?z之前生成, [λ] 與?z是獨(dú)立的.

與一般3 輪Σ 協(xié)議不同的是, KKW18 協(xié)議為5 輪. 事實(shí)上, 前3 輪和后3 輪可分別視為2 個(gè)Σ 協(xié)議, 且第3 輪為重用輪. 在前3 輪, 證明者生成m份預(yù)處理信息, 驗(yàn)證者只選取其中1 份用以完成后續(xù)證明; 在后3 輪, 驗(yàn)證者打開(kāi)n個(gè)參與方中的n ?1 份視圖以驗(yàn)證正確性和一致性. 具體流程如圖17 所示(省略了承諾中的隨機(jī)數(shù)), 簡(jiǎn)述如下.

圖17 KKW18 協(xié)議流程圖[47]Figure 17 Process of KKW18

(1)P生成m份對(duì)預(yù)處理狀態(tài)的承諾, 并計(jì)算對(duì)該m份承諾的哈希.

(2)V發(fā)送第一次挑戰(zhàn), 即對(duì)預(yù)處理狀態(tài)承諾的隨機(jī)挑戰(zhàn).

(3)P響應(yīng)第一次挑戰(zhàn), 打開(kāi)m ?1 份承諾.P在腦海中模擬與未打開(kāi)的預(yù)處理階段適配的在線階段, 生成n份對(duì)廣播信息的承諾, 并計(jì)算對(duì)該n份承諾的哈希.

(4)V發(fā)送第二次挑戰(zhàn), 即對(duì)在線階段廣播信息承諾的隨機(jī)挑戰(zhàn).

(5)P響應(yīng)第二次挑戰(zhàn), 將隨機(jī)挑戰(zhàn)值對(duì)應(yīng)的預(yù)處理狀態(tài)承諾和廣播信息及剩余n ?1 組的預(yù)處理信息發(fā)送給V.

驗(yàn)證者進(jìn)行如下三項(xiàng)檢查, 當(dāng)且僅當(dāng)檢查全部通過(guò)后接受.利用步驟(5) 中n ?1 組預(yù)處理狀態(tài)生成承諾, 結(jié)合步驟(5) 中收到的預(yù)處理狀態(tài)承諾構(gòu)造hc, 驗(yàn)證與步驟(1) 中哈希h的一致性.利用步驟(5) 中{statec,i}i?=p計(jì)算{msgi,i?=p}, 結(jié)合msgp和{?z}重新計(jì)算電路輸出并驗(yàn)證正確性.利用廣播信息{msgi}i∈[n]計(jì)算哈希, 驗(yàn)證廣播信息與步驟(3) 中哈希h′的一致性.

討論總結(jié). 現(xiàn)分別從知識(shí)可靠性、零知識(shí)性和復(fù)雜度對(duì)KKW18 進(jìn)行討論總結(jié).

(1) 知識(shí)可靠性. 假定抗碰撞哈希函數(shù)存在和承諾具有綁定性, 給定對(duì)于挑戰(zhàn)對(duì)(c,p)、(c′,?) 和(c,p′) 的接受副本, 其中?為任意值, 且c ?=c′,p ?=p′, 則可提取出有效證據(jù)w, 其可靠性誤差為max{1/m,1/n}[47].

(2) 零知識(shí)性. 與ZKBoo 及ZKB++ 類似, KKW18 的零知識(shí)性也是由秘密分享掩藏份額的隨機(jī)性保障的. 不同的是, KKW18 中的消息確定函數(shù)為n元, 打開(kāi)n ?1 個(gè)視圖是無(wú)法驗(yàn)證協(xié)議正確性的, 為驗(yàn)證正確性還需要第n個(gè)參與方的廣播信息msgn, 而該信息可能泄露隱私. 解決該問(wèn)題的方法是在預(yù)處理模型下分階段運(yùn)行MPC 協(xié)議, 從而保證秘密分享掩藏份額分布均勻且與公開(kāi)掩藏值保持獨(dú)立. 具體的, 對(duì)于某個(gè)輸入導(dǎo)線為a、b, 輸出導(dǎo)線為c的與門, 由于公共掩藏值?za、?zb與秘密分享掩藏份額[λ]a、[λ]b是獨(dú)立的, 因此即使獲取參與方Pp的廣播信息[y]p(見(jiàn)圖16)也難以推知導(dǎo)線a、b的秘密分享掩藏份額. 而參與方Pp的廣播信息msgp恰好就是其在所有與門處的廣播信息{[y]p}, 因此KKW18 的零知識(shí)性得以保障. 為確保證明者生成的秘密分享掩藏份額是均勻隨機(jī)且與公開(kāi)掩藏值是獨(dú)立的, 需要在原有Σ 協(xié)議的基礎(chǔ)上增加兩輪對(duì)預(yù)處理階段的檢查(圖17 中的前兩步), 故協(xié)議共為5 輪.

(3) 復(fù)雜度. 該協(xié)議的證明和驗(yàn)證復(fù)雜度與ZKBoo 及ZKB++ 類似, 均為O(|C|). 對(duì)于通信復(fù)雜度, 該協(xié)議的通信開(kāi)銷主要集中于協(xié)議流程的步驟(5), 其中處理與門信息的通信量期望大小為(n ?1)·(|C|/n+κs) 比特, 廣播通信規(guī)模至多為|CA|+1 比特,|CA| 為電路中與門的個(gè)數(shù). 因此, 協(xié)議的單輪通信復(fù)雜度為O(|C|+nκs). 相比于ZKB++ 和Ligero (見(jiàn)第8.3.3 小節(jié)), 針對(duì)與門數(shù)為300-100 000 的布爾電路可滿足問(wèn)題, KKW18 實(shí)現(xiàn)了證明的最低實(shí)際通信量.

8.3.3 Ligero/Ligero++

主要思路. Ligero 的主要思路如圖18 所示. 證明者P首先將秘密輸入(x,y,z,we) 排列為矩陣, 然后利用RS 碼編碼矩陣的每一行得到諭示矩陣, 接著利用默克爾樹(shù)對(duì)諭示矩陣的每一列進(jìn)行承諾, 最后P與V參與交互式協(xié)議用以證明電路是可滿足的. 其中, RS 碼保證了V在獲取諭示矩陣每行的部分值后也不能恢復(fù)整個(gè)多項(xiàng)式所以也無(wú)法得到電路其他位置的導(dǎo)線值, 而RS 碼的線性糾錯(cuò)性質(zhì)保障了不符合電路約束的導(dǎo)線值會(huì)以較高的概率被V發(fā)現(xiàn).

圖18 Ligero 主要思路及協(xié)議流程圖[35]Figure 18 Main idea and process of Ligero

協(xié)議流程在交互式協(xié)議中, 證明者和驗(yàn)證者需調(diào)用若干測(cè)試模塊. 測(cè)試模塊分為:

(1) 對(duì)IRS 碼的檢查, 該模塊可用于檢查諭示矩陣U與其對(duì)應(yīng)的IRS 碼Lm的距離是否小于e, 其中e與IRS 碼的碼距d有關(guān), 在Ligero 中, 有e

(2) 對(duì)IRS 碼中線性約束的檢查. 在模塊(1) 成立的情況下, 該模塊可驗(yàn)證某IRS 碼U加密的消息向量x ∈Fm?×1是否滿足某線性關(guān)系A(chǔ)x=b, 其中A ∈Fm?×m?,b ∈Fm?×1.

(3) 對(duì)IRS 碼中二次約束的檢查. 在模塊(1) 成立的情況下, 該模塊可驗(yàn)證IRS 碼Ux,Uy,Uz加密的消息向量x,y,z是否滿足二次關(guān)系x ⊙y+a ⊙z=b, 其中a,b ∈Fm?×1.

上述三個(gè)測(cè)試模塊的主要思路也列于圖18. 首先證明者P發(fā)送對(duì)諭示矩陣的承諾(用默克爾樹(shù)實(shí)現(xiàn),圖18 中的Root), 其次驗(yàn)證者V發(fā)送隨機(jī)挑戰(zhàn)r1,r2,··· ,rm, 接著P返回諭示矩陣行多項(xiàng)式與挑戰(zhàn)值的線性組合多項(xiàng)式p(·), 然后V發(fā)送第二次隨機(jī)挑戰(zhàn)ξ1,ξ2,··· ,ξt, 最后P將諭示矩陣的這t列及其對(duì)應(yīng)的默克爾樹(shù)路徑發(fā)送給V. 此時(shí)V驗(yàn)證以下三項(xiàng):

(1) 結(jié)合默克爾樹(shù)路徑, 驗(yàn)證打開(kāi)的t列與承諾Root 是一致的.

(2) 驗(yàn)證組合多項(xiàng)式p(·) 在點(diǎn)ηi,i∈[?]處是否滿足電路約束, 即驗(yàn)證IRS 碼的對(duì)應(yīng)消息向量滿足電路約束.

(3) 驗(yàn)證組合多項(xiàng)式p(·) 與諭示矩陣中隨機(jī)選取的t列是一致的.

需要指出的是, 上述測(cè)試模塊的可靠性均是由RS 碼的線性糾錯(cuò)性質(zhì)保障的. 同時(shí), 這些測(cè)試模塊的檢查過(guò)程本質(zhì)上是一種IPCP. 其中, 諭示矩陣是諭示, 隨機(jī)挑戰(zhàn)是訪問(wèn)請(qǐng)求.

借助上述測(cè)試模塊, Ligero 的交互式論證簡(jiǎn)要流程如下.

(1) 輸入階段. 記算術(shù)電路為C: F|w|→F, 證明者P擁有秘密輸入w= (α1,α2,··· ,α|w|) 使得C(w)=1. 記電路中門數(shù)為|C|, 其門值分別記為β1,β2,··· ,β|C|.

(2) 碼矩陣生成階段. 記m,?滿足m·? ≥|w|+|C|,P首先生成擴(kuò)展證據(jù)we ∈Fm?×1,we滿足前|w|+|C| 個(gè)值為(α1,α2,··· ,α|w|,β1,β2,··· ,β|C|). 其次P構(gòu)造向量x,y,z ∈Fm?×1且其滿足第j個(gè)值分別對(duì)應(yīng)第j個(gè)乘法門的左輸入、右輸入及輸出. 再次P構(gòu)造二次約束檢查矩陣Px,Py和Pz ∈Fm?×m?, 其滿足

然后P構(gòu)造線性約束檢查矩陣Padd, 其滿足Paddwe的第j位置與第j個(gè)加法門的左輸入、右輸入及輸出分別對(duì)應(yīng)相等. 最后P對(duì)消息向量we,x,y和z進(jìn)行加密得到4 個(gè)碼矩陣Uwe,Ux,Uy,Uz ∈Lm, 記碼矩陣U ∈L4m為4 個(gè)碼矩陣縱向排列后的碼矩陣. 需要注意的是, 上述檢查矩陣中元素全為常數(shù), 且由于電路結(jié)構(gòu)是公開(kāi)的, 故檢查矩陣可由驗(yàn)證者自行計(jì)算得出.

(3) 交互階段.P和V運(yùn)行如下3 個(gè)模塊協(xié)議:調(diào)用模塊(1) 檢查U與L4m的碼距是否小于e.調(diào)用模塊(2)檢查線性約束的正確性,即利用碼矩陣Uwe檢查w是否滿足Paddwe=0.調(diào)用模塊(2) 和模塊(3) 檢查二次約束的正確性, 即先調(diào)用模塊(2) 利用碼矩陣Uw,Ux,Uy,Uz檢查對(duì)于任意的a ∈x,y,z, 有

其用于驗(yàn)證x,y,z是正確構(gòu)造的, 再調(diào)用模塊(3) 利用碼矩陣Ux,Uy,Uz檢查x ⊙y ?z?=0,其用于驗(yàn)證x,y,z滿足乘法門約束.

可以證明, 協(xié)議的可靠性誤差為(e+6)/|F|+(1?e/n)t+5((e+2k)/n)t.

Ligero++ 指出, 由于在Ligero 中檢查碼矩陣與諭示多項(xiàng)式一致性的過(guò)程相當(dāng)于驗(yàn)證一個(gè)內(nèi)積關(guān)系,即驗(yàn)證對(duì)于任意的ξi,i∈[t],p(ξi)?=r·p(ξi),其中r=(r1,r2,··· ,rm),p(ξi)=(p1(ξi),p2(ξi),··· ,pm(ξi)).因此, 可以調(diào)用內(nèi)積論證(出自Virgo[28]) 實(shí)現(xiàn)上述檢查. 若內(nèi)積論證中的向量規(guī)模為n, 則其通信復(fù)雜度為O(logn). 也就是說(shuō), 可通過(guò)調(diào)節(jié)m,?進(jìn)一步降低通信復(fù)雜度, 具體描述見(jiàn)討論總結(jié).

討論總結(jié). 現(xiàn)分別從底層MPC 協(xié)議、零知識(shí)性、復(fù)雜度和布爾電路版本對(duì)上述協(xié)議進(jìn)行討論分析.

(1) 底層MPC 協(xié)議. 與ZKBoo、ZKB++ 和KKW18 不同的是, Ligero 系列協(xié)議的底層MPC 協(xié)議較為簡(jiǎn)單. 在Ligero 中, 參與者的數(shù)目與諭示矩陣的列相等, 且諭示矩陣的每一列即是每個(gè)參與方的隱私信息. 由于該MPC 協(xié)議的目標(biāo)聯(lián)合函數(shù)是計(jì)算諭示矩陣每一行與某個(gè)隨機(jī)向量的線性組合, 每個(gè)參與方的計(jì)算任務(wù)就是在獲取該隨機(jī)向量后計(jì)算持有列與隨機(jī)向量的線性組合并廣播. 該MPC 協(xié)議本質(zhì)上屬于客戶-服務(wù)器模型(client-server model, 見(jiàn)第8.3.5 小節(jié)), 基于該MPC 模型, Ligero、Ligero++ 和BooLigero 結(jié)合IRS 碼實(shí)現(xiàn)了通信復(fù)雜度亞線性級(jí)別的突破;Limbo[49]實(shí)現(xiàn)了通信復(fù)雜度雖為O(|C|)、但中等規(guī)模電路下(少于500 000 個(gè)乘法門) 實(shí)際通信量最低的NIZKAoK.

(2) 零知識(shí)性. 上述協(xié)議并不是零知識(shí)的, 這是因?yàn)轵?yàn)證者獲取的兩種信息可能破壞零知識(shí)性, 第一是秘密輸入與挑戰(zhàn)值的線性組合, 第二是諭示中的t列. 針對(duì)第一點(diǎn), 一個(gè)有效的方法是為各諭示矩陣增加一行隨機(jī)編碼且令其不影響原線性組合在?個(gè)點(diǎn)的取值, 這保障了線性組合也不會(huì)泄露隱私信息. 針對(duì)第二點(diǎn), 基于IRS 碼加密消息的隨機(jī)性, 只需滿足驗(yàn)證者可接觸的多項(xiàng)式點(diǎn)值數(shù)目(獲取?個(gè)點(diǎn)值以驗(yàn)證電路約束關(guān)系、t個(gè)點(diǎn)值以驗(yàn)證諭示的一致性) 小于多項(xiàng)式的度大小即可保障零知識(shí)性, 即滿足k>?+t.

8.3.4 BooLigero

BooLigero 由Gvili、Scheffler 和Varia[48]提出, 其優(yōu)化了Ligero 布爾電路版本的通信復(fù)雜度.BooLigero 的協(xié)議流程與Ligero 是類似的, 本小節(jié)只討論BooLigero 優(yōu)化通信復(fù)雜度的方法.

主要思路. BooLigero 的主要思路分為四部分, 分別是增加布爾約束、用伽羅瓦域存儲(chǔ)比特、利用伽羅瓦域乘法實(shí)現(xiàn)按位與和高效比特約束檢查協(xié)議, 簡(jiǎn)要描述如下.

(1) 增加布爾約束. Ligero 本身雖然是針對(duì)算術(shù)電路的, 但也可適用于布爾電路. 對(duì)于布爾電路, 首先需要為每個(gè)電路門值增加布爾約束限制其為0 或1, 即增加約束α2?α=0. 此外還要增加對(duì)異或門和與門約束的算術(shù)版本. 給定布爾值α1,α2, 考慮約束α1+α2=r0+2·r1, 若規(guī)定上述約束中值均為0 或1, 則r0是α1和α2的異或, 則r1是α1和α2的與, 因此可通過(guò)增加輔助輸入比特d獨(dú)立驗(yàn)證異或門或與門約束. 例如, 對(duì)于與門約束α1·α2=α3, 可增加輔助輸入比特d驗(yàn)證線性約束α1+α2?=d+2·α3. 驗(yàn)證異或門的線性約束方法同理可得. 值得注意的是, 為保障可靠性誤差足夠小, Ligero 中的域往往需取足夠大. 但是BooLigero 只需利用域中0 和1 共兩個(gè)元素, 這會(huì)造成約(log2|F|?1) 比特的存儲(chǔ)浪費(fèi), 并增加通信開(kāi)銷. 一個(gè)自然的想法是引入能用一個(gè)域元素存儲(chǔ)多個(gè)布爾值的域, 比如伽羅瓦域, 從而充分利用存儲(chǔ)空間.

(2) 用伽羅瓦域存儲(chǔ)比特. 為解決存儲(chǔ)浪費(fèi)問(wèn)題, BooLigero 指出可利用伽羅瓦域存儲(chǔ)比特值, 從而實(shí)現(xiàn)一個(gè)域元素存儲(chǔ)多個(gè)比特. 考慮伽羅瓦域F2γ, 若每一位代表一個(gè)比特值, 則一個(gè)域元素一次性可以存儲(chǔ)γ個(gè)比特. 基于此, Ligero 中諭示矩陣的元素?cái)?shù)目會(huì)降低為原來(lái)的1/O(log|F|), 通信復(fù)雜度會(huì)降低為原來(lái)的1/O(log|F|1/2). 然而, 運(yùn)行Ligero 中的電路約束檢查模塊不僅需要布爾域到伽羅瓦域的存儲(chǔ)轉(zhuǎn)化, 還需要布爾域到伽羅瓦域的電路計(jì)算轉(zhuǎn)化, 而這直觀上是難以實(shí)現(xiàn)的.

(4) 高效比特約束檢查協(xié)議. 在BooLigero 中, 對(duì)新變量的約束具有高度規(guī)律性, 其形式都是一組向量的“某位置是0” 或者一組向量的“某個(gè)位置等于目標(biāo)向量的某個(gè)位置”. 為了驗(yàn)證某變量滿足某約束關(guān)系, BooLigero 提出了一種零知識(shí)的高效比特約束檢查協(xié)議來(lái)實(shí)現(xiàn)批量化比特關(guān)系驗(yàn)證.該協(xié)議基于cut-and-choose 思想, 可以在不揭露秘密輸入信息x的同時(shí)證明其滿足關(guān)系T x=0(其中T為某個(gè)公開(kāi)矩陣). 同時(shí), 該協(xié)議的通信復(fù)雜度僅與安全參數(shù)有關(guān), 與隱私信息的長(zhǎng)度無(wú)關(guān).

討論總結(jié). 根據(jù)電路結(jié)構(gòu)的不同, 相比于Ligero 的布爾電路版本, BooLigero 可將通信復(fù)雜度降低為原來(lái)的1/O(log|F|1/2)~1/O(log|F|1/4). 具體的, 若電路全是異或門, 諭示矩陣元素?cái)?shù)目會(huì)減少至原來(lái)的1/O(log|F|), 通信復(fù)雜度會(huì)降低到原來(lái)的1/O(log|F|1/2); 若電路全是與門, 諭示矩陣會(huì)因?qū)崿F(xiàn)伽羅瓦域按位與運(yùn)算增加至原來(lái)變量數(shù)的O(log|F|1/2) 倍, 故矩陣元素?cái)?shù)目會(huì)減少至原來(lái)的1/O(log|F|1/2), 通信復(fù)雜度會(huì)降低至原來(lái)的1/O(log|F|1/4).

8.3.5 Limbo

Limbo 由Guilhem、Orsini 和Tanguy[49]提出, 其拓展了Ligero 的MPC 協(xié)議模型并基于IOP 實(shí)現(xiàn)了通信復(fù)雜度雖然為O(|C|)、但實(shí)際性能良好的NIZKAoK. Limbo 適用于算術(shù)電路和布爾電路, 對(duì)于布爾電路, Limbo 的實(shí)際通信量相比于KKW18 有顯著降低; 對(duì)于算術(shù)電路, 相比于其他基于MPC-inthe-Head 的零知識(shí)證明, Limbo 實(shí)現(xiàn)了針對(duì)中等規(guī)模電路(乘法門少于500 000 個(gè)) 可滿足性問(wèn)題的當(dāng)前最優(yōu)實(shí)際性能.

主要思路. 構(gòu)造基于MPC-in-the-Head 的高效零知識(shí)證明的一個(gè)自然思路是利用高效的MPC 協(xié)議,而這也恰好是KKW18 的主要思路. 與之不同的是, Limbo 的主要思路是利用最適合MPC-in-the-Head的MPC 模型可能會(huì)使零知識(shí)證明更高效. 具體的, Limbo 中的ρ輪通用MPC 模型如圖19 所示, 其是客戶-服務(wù)器模型(client-server model), 即參與者可分為1 個(gè)客戶(發(fā)送方)PS、n個(gè)計(jì)算服務(wù)器P1,P2,··· ,Pn和1 個(gè)接收方PR. 在該模型中,PS擁有整個(gè)計(jì)算的輸入, 且在每一輪的開(kāi)始階段PS最多發(fā)送1 次消息. 在第j輪(j ∈[2,ρ ?1]), 計(jì)算服務(wù)器調(diào)取公共拋幣函數(shù)獲得隨機(jī)串Rj并根據(jù)本輪及之前收到的信息進(jìn)行本地計(jì)算. 在第ρ輪, 計(jì)算服務(wù)器獲得隨機(jī)串Rρ經(jīng)過(guò)本地計(jì)算后向PR發(fā)送消息.在上述模型中, 計(jì)算服務(wù)器之間不需進(jìn)行交互.

圖19 Limbo 的MPC 模型[49](client-server 模型)Figure 19 MPC model of Limbo (client-server model)

上述模型略加修改即可構(gòu)造基于MPC-in-the-Head 的零知識(shí)證明. 此時(shí), 證明者P在腦海中模擬上述MPC 協(xié)議的運(yùn)行, 此時(shí)隨機(jī)串來(lái)源于驗(yàn)證者V的隨機(jī)挑戰(zhàn), 且在每輪結(jié)束后P利用本輪發(fā)送的信息構(gòu)造一個(gè)諭示. 相比于調(diào)用其他MPC 模型, 該證明中計(jì)算服務(wù)器之間不需交互, 考慮到交互會(huì)帶來(lái)視圖規(guī)模的增大和運(yùn)行MPC 協(xié)議開(kāi)銷的提升, 因此基于該模型構(gòu)造的零知識(shí)證明的實(shí)際通信量和計(jì)算開(kāi)銷均較低. 事實(shí)上, Ligero 就是ρ= 1 時(shí)的特例, 并且該模型本質(zhì)上屬于IOP. 可以證明, 若MPC 協(xié)議具有(PR,n ?1)-隱私性和(PS,0)-魯棒性時(shí), 基于該模型的交互式零知識(shí)論證可靠性誤差為?= 1/n+δ(1?1/n), 其中, (PR,n ?1)-隱私性指半誠(chéng)實(shí)模型下敵手腐蝕PR和n ?1 個(gè)計(jì)算服務(wù)器仍可保障隱私; (PS,0)-魯棒性指在惡意模型下敵手腐蝕PS仍可保障魯棒性,δ為魯棒性誤差并取決于具體MPC 協(xié)議. 此外, 將上述MPC 模型中的發(fā)送方數(shù)目增加為τ個(gè)并調(diào)用相同的公共拋幣函數(shù)可將可靠性誤差降低為?=1/nτ+δ(1?1/nτ).

底層MPC 協(xié)議. 基于上述思路, Limbo 采用一個(gè)簡(jiǎn)單的MPC 協(xié)議(見(jiàn)文獻(xiàn)[144–146]) 構(gòu)造了交互式零知識(shí)知識(shí)論證, 并利用Fiat-Shamir 啟發(fā)式轉(zhuǎn)換為了NIZKAoK. 對(duì)于基于加性秘密分享的MPC協(xié)議, 加法門的結(jié)果可根據(jù)自身的秘密掩藏份額自行計(jì)算和更新, 因此只需考慮乘法門. 具體的, 該MPC協(xié)議用于證明m個(gè)乘法門約束成立, 即證明給定m個(gè)三元組{x?,y?,z?}?∈[m], 對(duì)于任意的? ∈[m], 都有x?·y?=z?, 該協(xié)議的主要思路如協(xié)議9 所示.

協(xié)議9 Limbo 的底層MPC 協(xié)議主要思路[49]公共輸入: 域F,?,n, 電路C.證明者秘密輸入: {[x?]i,[y?]i,[z?]i}, 其中? ∈[m],i ∈[n], [x?]i 表示第i 個(gè)計(jì)算服務(wù)器在第? 個(gè)乘法門處左輸入的份額, [y?]i、[z?]i 分別表示在第? 個(gè)乘法門處右輸入、輸出的份額.1. 對(duì)于所有的? ∈[m],i ∈[n], 發(fā)送方Ps 將份額[x?]i,[y?]i,[z?]i 發(fā)送給Pi. 此外, 發(fā)送方Ps 隨機(jī)選取滿足關(guān)系a·b = c 的向量份額[a]i,[b]i,[c]i 也發(fā)送給Pi.2. 各計(jì)算服務(wù)器調(diào)取公共拋幣函數(shù)獲取隨機(jī)數(shù)R,s.3. 對(duì)于所有的i ∈[n], 計(jì)算服務(wù)器Pi 計(jì)算[x]i ←([x1]i,R·[x2]i,··· ,Rm?1 ·[xm]i), [y]i ←([y1]i,[y2]i,··· ,[ym]i), [z]i ←∑R??1 ·[z?]i.?∈[m]然后計(jì)算服務(wù)器Pi 計(jì)算[σ]i ←s·[x]i ?[a]i 和[ρ]i ←[y]i ?[b]i, 隨后廣播[σ]i 和[ρ]i.4. 各計(jì)算服務(wù)器恢復(fù)σ 和ρ.5. 對(duì)于所有的i ∈[n], 計(jì)算服務(wù)器Pi 計(jì)算[v]i ←s·[z]i ?[c]i ?[b]i ·σ ?[a]i ·ρ ?ρ·σ.然后Pi 將[v]i 發(fā)送給接收方PR.6. PR 恢復(fù)v.輸出: 比特b, 若v = 0, 輸出b = 1; 否則輸出b = 0.

現(xiàn)分析該MPC 協(xié)議的可靠性. 若至少一個(gè)乘法門三元組是錯(cuò)誤的, 則由Schwartz-Zippel 引理和R的隨機(jī)性可知, 若[x]i·[y]i ?[z]i ?=0, 則驗(yàn)證者通過(guò)的概率為(m ?1)/|F|. 基于此, 如果[x]i·[y]i ?[z]i和[a]·[b]?[c] 至少有一個(gè)不為0, 由s的隨機(jī)性可知, 驗(yàn)證者通過(guò)的概率為2/|F|. 因此, 該協(xié)議的可靠性為(m ?1)/|F|+(1?(m ?1)/|F|)·2/|F|.

利用上述MPC 協(xié)議可自然構(gòu)造對(duì)應(yīng)的零知識(shí)證明, 此時(shí)協(xié)議輪數(shù)為3. 然而在上述MPC 協(xié)議中, 廣播的消息規(guī)模為2mn, 因此對(duì)應(yīng)零知識(shí)證明的通信復(fù)雜度至少為O(n|CM|). 為進(jìn)一步降低通信復(fù)雜度,Guilhem、Orsini 和Tanguy 提出了一種通過(guò)壓縮內(nèi)積規(guī)模降低通信復(fù)雜度的方法, 不過(guò)其會(huì)增加logk m輪交互. 利用該方法, 對(duì)于每個(gè)乘法門, 只需傳輸1 個(gè)域元素即可完成證明, 此時(shí)協(xié)議的通信復(fù)雜度可降低為O(|C|).

討論總結(jié). 基于client-server 模型和IOP,Limbo 實(shí)現(xiàn)了針對(duì)中等規(guī)模算術(shù)電路(乘法門少于500 000個(gè)) 可滿足性問(wèn)題的良好實(shí)際性能. 除此之外, 與Ligero 類似, Limbo 也具有一定的靈活性(flexibility).例如, 在相同的目標(biāo)可靠性誤差下, 增加n的數(shù)目可有效降低輪數(shù)從而降低實(shí)際通信量, 然而這會(huì)增加證明者的計(jì)算開(kāi)銷, 因此可通過(guò)調(diào)節(jié)n,τ等參數(shù)的大小從而調(diào)節(jié)證明者計(jì)算開(kāi)銷和通信量之間的關(guān)系.

8.4 總結(jié)

基于MPC-in-the-Head 的零知識(shí)證明具有以下優(yōu)點(diǎn):

(1) 底層難題假設(shè)更為通用. 該類證明只需假設(shè)CRHF 存在, 且僅有對(duì)稱密鑰操作, 故是抗量子的,并可用于構(gòu)造高效抗量子數(shù)字簽名(如Picnic[34,47,49]6https://microsoft.github.io/Picnic).

(2) 具有一定的靈活性. 可通過(guò)調(diào)整參數(shù)控制證明者的計(jì)算開(kāi)銷和通信量之間的關(guān)系.

(3) 可堆疊性(stackable). Goel 等人[148]指出Ligero 和KKW18 具有可堆疊性, 即給定某個(gè)針對(duì)NP 語(yǔ)言L(R) 的Σ 協(xié)議, 證明陳述(x1∈L(R))∨x2∈L(R))∨···∨(x? ∈L(R)) 的通信復(fù)雜度可為O(CC(Σ)+λlog?), 其中CC(Σ) 為Σ 協(xié)議的通信復(fù)雜度,λ為安全參數(shù), 而證明上述陳述的平凡通信復(fù)雜度為O(?·CC(Σ)+λ).

然而, 該類協(xié)議的通信復(fù)雜度雖已達(dá)到對(duì)數(shù)級(jí)別, 但是實(shí)際通信量通常較高[27, §9.2], 如何進(jìn)一步降低該類零知識(shí)證明的實(shí)際通信量是存在的一個(gè)問(wèn)題. 此外, 目前在理論研究和實(shí)際性能層面均未找到最適合MPC-in-the-Head 的MPC 協(xié)議, 因此, 如何選取高效的MPC 協(xié)議是可能是未來(lái)的一個(gè)研究方向.

9 未來(lái)研究方向

近年來(lái), 雖然針對(duì)簡(jiǎn)潔非交互零知識(shí)證明的研究取得了較大進(jìn)展, 并且簡(jiǎn)潔非交互零知識(shí)證明逐漸在區(qū)塊鏈、隱私計(jì)算等領(lǐng)域得到了較為廣泛的應(yīng)用, 但是仍然存在很多尚未解決的理論和技術(shù)問(wèn)題. 以下列出未來(lái)的主要發(fā)展趨勢(shì).

(1) 通用構(gòu)造方法層面. 進(jìn)一步總結(jié)完善構(gòu)造簡(jiǎn)潔非交互零知識(shí)證明的通用構(gòu)造方法, 如拓寬IPCP、IOP, 探討是否存在可用于更高效構(gòu)造簡(jiǎn)潔非交互零知識(shí)證明的信息論安全證明, 討論基于IPA的零知識(shí)證明能否也存在底層信息論安全證明等; 基于某一特定信息論安全證明, 優(yōu)化改進(jìn)密碼編譯器的具體技術(shù), 實(shí)現(xiàn)更好的性能.

(2) 性能層面. 從復(fù)雜度角度, 進(jìn)一步降低簡(jiǎn)潔非交互零知識(shí)的證明、通信和驗(yàn)證復(fù)雜度, 如削弱基于DEIP 的零知識(shí)證明中電路深度d的影響; 從實(shí)際性能角度, 優(yōu)化算法性能, 如利用批量驗(yàn)證的方式降低基于IPA 的零知識(shí)證明的實(shí)際驗(yàn)證開(kāi)銷、通過(guò)證明者在腦海中一次性模擬多個(gè)MPC 運(yùn)行的方式降低基于MPC-in-the-Head 的零知識(shí)證明的實(shí)際證明開(kāi)銷、選取或設(shè)計(jì)更適合MPC-in-the-Head 的MPC 協(xié)議等.

(3) 初始化層面. 雖然基于QAP 的零知識(shí)證明(zk-SNARK) 可實(shí)現(xiàn)常數(shù)級(jí)別群元素的通信復(fù)雜度和僅與公共輸入輸出長(zhǎng)度成線性關(guān)系的驗(yàn)證復(fù)雜度, 但在區(qū)塊鏈應(yīng)用中, 如何保障可信初始化的安全、優(yōu)化可信初始化的性能仍是目前的一個(gè)難點(diǎn). 因此, 探討高效可更新CRS 的構(gòu)造方式, 研究CRS 長(zhǎng)度更短、生成更快的zk-SNARK 是未來(lái)一個(gè)可能的發(fā)展方向.

(4) 安全層面. 研究基于標(biāo)準(zhǔn)假設(shè)如何構(gòu)造簡(jiǎn)潔非交互零知識(shí)證明, 提高協(xié)議的安全性; 基于更為通用的難題假設(shè)構(gòu)造zk-SNARK 及系列可更新零知識(shí)證明; 探討在系統(tǒng)參數(shù)可公開(kāi)生成的零知識(shí)證明中利用基于ROM 的Fiat-Shamir 啟發(fā)式實(shí)現(xiàn)非交互是否及會(huì)如何降低協(xié)議性能.

猜你喜歡
參與方復(fù)雜度證明
全球大地震破裂空間復(fù)雜度特征研究
數(shù)字經(jīng)濟(jì)對(duì)中國(guó)出口技術(shù)復(fù)雜度的影響研究
信托在供應(yīng)鏈金融中的運(yùn)用研究
Kerr-AdS黑洞的復(fù)雜度
非線性電動(dòng)力學(xué)黑洞的復(fù)雜度
基于SNA視角的PPP項(xiàng)目參與方行為風(fēng)險(xiǎn)研究
BT模式研究
綠色農(nóng)房建設(shè)伙伴關(guān)系模式初探
證明我們的存在
Nesbitt不等式的十七種證明
新泰市| 杭锦后旗| 道孚县| 绥化市| 长泰县| 沈丘县| 定南县| 铁力市| 万荣县| 陇川县| 东阿县| 吉木萨尔县| 特克斯县| 衡山县| 兴安县| 库车县| 赣州市| 南安市| 高青县| 嵊州市| 建瓯市| 达拉特旗| 黔西| 兴化市| 神池县| 江陵县| 庄河市| 留坝县| 长泰县| 察雅县| 扶沟县| 兴海县| 南部县| 鄂尔多斯市| 东宁县| 武穴市| 康定县| 安宁市| 社会| 柳林县| 胶州市|