Lecture 6. One-Time Signature and Adaptive NIZK


Lamport 的单次签名 (Lamport’s One-Time Signature Scheme). 假设 ff 是一个(单向)函数,令 l(κ)l(\kappa) 表示要签名的消息的长度。

sk=(x1,0x2,0xl,0x1,1x2,1xl,1),vk=(y1,0y2,0yl,0y1,1y2,1yl,1)sk=\left(\begin{matrix}x_{1,0}&x_{2,0}&\cdots&x_{l,0}\\x_{1,1}&x_{2,1}&\cdots&x_{l,1}\end{matrix}\right),\quad vk=\left(\begin{matrix}y_{1,0}&y_{2,0}&\cdots&y_{l,0}\\y_{1,1}&y_{2,1}&\cdots&y_{l,1}\end{matrix}\right)
💡
该单次签名的单次不可伪造性 (OT-UF-CMA) 是由单向函数的 ff 的存在性提供的,也就是说:如果存在能打破该单次签名的单次不可伪造性的敌手 F\mathcal{F},那么我们可以利用其构造中间敌手 I\mathcal{I} 打破函数 ff 的单向性。

【证明】考虑安全规约:

CI/CF1κ,f,yi[l],b{0,1},yi,b=yi[l],b{0,1},(i,b)(i,b):xi,b{0,1}κ,yi,b=f(xi,b)vk=(y1,0y2,0yl,0y1,1y2,1yl,1)sk=(x1,0x2,0xi,b/xi,1bxl,0x1,1x2,1xi,1b/xi,bxl,1)vkif mi=b, return mσ=(x1,m1,,xl,ml)σσiσ=(σ1,σ2,,σl)(m,σ)\color{darkblue}\small\begin{matrix}\mathcal{C'}& &\mathcal{I/C} & &\mathcal{F}\\ & \stackrel{1^\kappa, f,y}{\longrightarrow} & i^*\leftarrow[l],b^*\leftarrow\{0,1\},y_{i^*,b^*}=y \\ & & i\in[l],b\in\{0,1\},(i,b)\ne(i^*,b^*):x_{i,b}\leftarrow\{0,1\}^\kappa,y_{i,b}=f(x_{i,b})\\& & vk=\left(\begin{matrix}y_{1,0}&y_{2,0}&\cdots&y_{l,0}\\y_{1,1}&y_{2,1}&\cdots&y_{l,1}\end{matrix}\right) \\& & sk=\left(\begin{matrix}x_{1,0}&x_{2,0}&\cdots&x_{i^*,b^*}/x_{i^*,1-b^*}& \cdots&x_{l,0}\\x_{1,1}&x_{2,1}&\cdots&x_{i^*,1-b^*}/x_{i^*,b^*}&\cdots&x_{l,1}\end{matrix}\right) & \stackrel{vk}{\longrightarrow} \\ & &\text{if }m_{i^*}=b^*, \text{ return } \perp & \stackrel{m}{\longleftarrow}\\ & & \sigma=(x_{1,m_1},\cdots,x_{l,m_l}) & \stackrel{\sigma}{\longrightarrow} \\ & \stackrel{\sigma_{i^*}'}{\longleftarrow} &\sigma'=(\sigma_1',\sigma_2',\cdots,\sigma_l') & \stackrel{(m',\sigma')}{\longleftarrow}\end{matrix}

简单来说:我们把挑战者给的 yy 嵌入第 bb^* 行的第 ii^* 个比特中,然后希望两点:

  • 敌手 F\mathcal{F} 询问的签名的第 ii^* 个比特不是 bb^*:因为如果是 bb^*,我们需要给出 yi,b=yy_{i^*,b^*}=y 对应的原象 xx,而这是我们给不出来的。这里的满足要求的概率是 1/21/2
  • 敌手 F\mathcal{F} 伪造的签名的第 ii^* 个比特正好就是 bb^*:因为如果是 bb^*,从验证算法我们得知,一定有 f(σi=xi,b)=yi,b=yf(\sigma_{i^*}=x_{i^*,b^*})=y_{i^*,b^*}=y,即我们可以打破 ff 的单向性。另一个等价说法是我们希望 mmmm' 在第 ii^* 个位置的比特不一样。考虑极端情况下 mmmm' 就一个比特不一样,那么有 1/l1/l 的概率在第 ii^* 个位置,满足这个要求。

因此,注意到敌手 F\mathcal{F} 并不知道中间敌手 I\mathcal{I}yy 嵌在什么位置,因此

negl(κ)Pr[x{0,1}κ;y=f(x);xI(1κ,y):f(x)=y]=Pr[(mib)(mi=b)F wins]=Pr[(mib)(mimi)F wins]=Pr[mib]Pr[mimi]Pr[F wins]121lPr[F wins]=12lPr[F wins]\begin{aligned}\text{negl}(\kappa)&\ge \text{Pr}[x\leftarrow\{0,1\}^\kappa;y=f(x);x'\leftarrow\mathcal{I}(1^\kappa,y):f(x')=y] \\ &=\text{Pr}[(m_{i^*}\ne b^*)\wedge(m_{i^*}' =b)\wedge \mathcal{F}\text{ wins}]\\&=\text{Pr}[(m_{i^*}\ne b^*)\wedge(m_{i^*}' \ne m_{i^*})\wedge \mathcal{F}\text{ wins}] \\&=\text{Pr}[m_{i^*}\ne b^*]\cdot\text{Pr}[m_{i^*}' \ne m_{i^*}]\cdot\text{Pr}[\mathcal{F}\text{ wins}] \\ &\ge \frac{1}{2}\cdot\frac{1}{l}\cdot\text{Pr}[\mathcal{F}\text{ wins}]\\&=\frac{1}{2l}\text{Pr}[\mathcal{F}\text{ wins}]\end{aligned}

于是,如果 OWF 存在,则 Lamport 单次签名有 OT-UF-CMA 性质。

💡
【定理】如果 ff 是一个单向置换 (One-Way Permutation, OWP),那么 Lamport 的构造就具有强单次不可伪造性。

【说明】OWP 需要是双射,因此每个 mm 只能对应唯一一个签名 σ\sigma,所以如果 m=mm=m',合法的签名 σ,σ\sigma,\sigma' 一定满足 σ=σ\sigma=\sigma',于是 (m,σ)=(m,σ)(m,\sigma)=(m',\sigma')。这也就自然说明了强不可伪造性。于是 Lamport 的构造具有强单次不可伪造性,具有 strong-OT-UF-CMA 安全。


通用单向哈希 (Universal One-Way Hash Function). 考虑一族函数 H={H:XY}\mathcal{H}=\{H:\mathcal{X}\rightarrow\mathcal{Y}\},该函数族是通用单向哈希当且仅当对于任意 PPT A\mathcal{A},下面的概率(碰撞)是可忽略的:

Pr[(x,s)A1;HGen(1κ);xA2(H,s):H(x)=H(x)xx]=negl(κ)\begin{aligned}\text{Pr}\left[(x,s)\leftarrow \mathcal{A}_1;H\leftarrow\text{Gen}(1^\kappa);x'\leftarrow\mathcal{A}_2(H,s):H(x)=H(x')\wedge x\ne x'\right]=\text{negl}(\kappa)\end{aligned}
💡
如果 (Gen,H)(\text{Gen},H) 是一个通用单向哈希 (Universal One-Way Hash Function),那么将上述构造的 ff 替换为 Hs(sGen)H_s(s\leftarrow\text{Gen}) 也具有 strong-OT-UF-CMA 安全。

说明:因为如果伪造了签名 σσ\sigma\ne\sigma' 在某个位置 ii 上不等,但消息 mi=mim_i=m_i',这就意味着 σiσi\sigma_i\ne \sigma_i'

H(σi)=yi,mi=yi,mi=H(σi)H(\sigma_i)=y_{i,m_i}=y_{i,m_i'}=H(\sigma_i')

与通用单向哈希的碰撞可忽略矛盾,因此,这样的构造仍然有 strong-OT-UF-CMA 安全。

说明:即使有着多对一的 universal one-way hash function,只要碰撞的概率是可忽略的,这样够早的 Lamport 单次签名仍然有着 strong-OT-UF-CMA 安全。


隐藏比特模型下的非交互式零知识证明系统 (NIZK in the Hidden-Bits Model). (P,V)(P,V). 对语言 LL:

主要的思想其实就是限制 Verifier 所能看到的 CRS 范围的一个 NIZK。


用 NIZK in Hidden-Bits Model 构造 NIZK in CRS Model(正常的 NIZK).

【构造方法】

核心思想:把除了 II 之外的其他 CRS(rir_i 对应的象 rir_i')用 hard-core 保护起来,只提供 rIr_I' 给底层的 hidden-bits model NIZK。

💡
【证明】

Completeness:来源于底层的 Hidden-Bits Model NIZK 的 completeness,并且由 TDP 的正确性保证。

Adaptive Soundness:假设 ssVV 中使用的随机数,令 Π~=(f~,π~,I~,(z~i)iI~)\tilde{\Pi}=(\tilde{f},\tilde{\pi},\tilde{I},(\tilde{z}_i)_{i\in\tilde{I}})

Prr,s[(x,Π~)P~(1κ,r):V(r,x,Π~;s)=1x{0,1}κ\L]= {(r,s)V(r,x,Π~;s)=1;x{0,1}κ\L}RS= f~F{(r,s)f~Π~;V(r,x,Π~;s)=1;xL}RS= f~F{(r,s)f~Π~;f~ valid(f~(z~i)=ri)iI~V(rI,x,(π~,I~);s)=1;xL}RS valid f~F{(r,s)(f~(z~i)=ri)iI~V(rI,x,(π~,I~);s)=1;xL}RS valid f~F{(r,s)V(rI,x,(π~,I~);s)=1;xL}RS 2κ22κ= 2κ=negl(κ)\small\begin{aligned}&\text{Pr}_{r,s}\left[(x,\tilde{\Pi})\leftarrow \tilde{P}(1^\kappa,r):V(r,x,\tilde{\Pi};s)=1\wedge x\in\{0,1\}^\kappa\backslash L\right]\\ =\ &\frac{\left|\{(r,s) \mid V(r,x,\tilde{\Pi};s)=1;x\in\{0,1\}^\kappa\backslash L\}\right|}{|\mathcal{R}|\cdot|\mathcal{S}|}\\ =\ &\sum_{\tilde{f}\in\mathcal{F}}\frac{\left|\{(r,s) \mid \tilde{f}\in\tilde{\Pi};V(r,x,\tilde{\Pi};s)=1;x\notin L\}\right|}{|\mathcal{R}|\cdot|\mathcal{S}|}\\=\ &\sum_{\tilde{f}\in\mathcal{F}}\frac{\left|\{(r,s) \mid \tilde{f}\in\tilde{\Pi};\tilde{f}\text{ valid}\wedge (\tilde{f}(\tilde{z}_i)=r_i)_{i\in \tilde{I}}\wedge V'(r_I',x,(\tilde{\pi},\tilde{I});s)=1;x\notin L\}\right|}{|\mathcal{R}|\cdot|\mathcal{S}|}\\\leq\ &\sum_{\text{valid }\tilde{f}\in\mathcal{F}}\frac{\left|\{(r,s) \mid (\tilde{f}(\tilde{z}_i)=r_i)_{i\in \tilde{I}}\wedge V'(r_I',x,(\tilde{\pi},\tilde{I});s)=1;x\notin L\}\right|}{|\mathcal{R}|\cdot|\mathcal{S}|}\\\leq\ &\sum_{\text{valid }\tilde{f}\in\mathcal{F}}\frac{\left|\{(r,s) \mid V'(r_I',x,(\tilde{\pi},\tilde{I});s)=1;x\notin L\}\right|}{|\mathcal{R}|\cdot|\mathcal{S}|} \\ \leq\ & 2^\kappa\cdot 2^{-2\kappa} \\ =\ &2^{-\kappa}=\text{negl}(\kappa)\end{aligned}
  • 第二行,我们运用古典概率,对构造中出现的随机数 r,sr,s 进行计数后求出概率;
  • 第三行,我们通过对 f~\tilde{f} 的值进行分类后对每个固定的 f~\tilde{f} 求和;
  • 第四行,我们对于构造的 Verifier 的判定条件进行展开;
  • 第五行,我们取消了对 f~Π~\tilde{f}\in\tilde{\Pi} 的限制,允许所有 f~\tilde{f},不限于 P~\tilde{P} 构造出的那些 f~Π~\tilde{f}\in\tilde{\Pi}
  • 第六行,我们对条件进行放缩,不要求 f~(z~i)=ri,iI~\tilde{f}(\tilde{z}_i)=r_i,i\in \tilde{I}
  • 第七行,我们可以看到这就是底层 Hidden-Bits Model NIZK 的 adaptive soundness;
  • 第八行,由于我们的构造假设可以得到。

Zero Knowledge:我们已有一个 Hidden-Bits Model NIZK 的 Simulator,需要构造 CRS Model NIZK 的 Simulator。假设 Sim\text{Sim}'(P,V)(P',V') 的 Simulator。

SimulatorReal(rI,π,I)Sim(1κ,x)r{0,1}κn(f,f1)GenF(1κ)P(1κ,r,x,wx) {For iI(f,f1)GenF(1κ)zi{0,1}κ s.t. h(zi)=riri=h(f1(ri)),i[n]ri=f(zi)(π,I)P(r,x,wx)For iI(f,π,I,(f1(ri))iI)ri{0,1}κ}Return (r1rn,x,(f,π,I,(zi)iI))undefined(1)Return (r,x,(f,π,I,(f1(ri))iI))undefined(2)\begin{aligned}&\color{red}\textbf{Simulator} && \color{red}\textbf{Real}\\&(r_I',\pi,I)\leftarrow \text{Sim}'(1^\kappa,x) && r\leftarrow\{0,1\}^{\kappa n} \\&(f,f^{-1})\leftarrow\text{GenF}(1^\kappa) && P(1^\kappa,r,x,w_x) \ \{\\&\text{For } i \in I && \quad(f,f^{-1})\leftarrow\text{GenF}(1^\kappa)\\ &\quad z_i\leftarrow \{0,1\}^\kappa \text{ s.t. } h(z_i)=r_i'&&\quad r_i'=h(f^{-1}(r_i)),i\in[n]\\&\quad r_i=f(z_i) && \quad (\pi,I)\leftarrow P'(r',x,w_x)\\ &\text{For } i \notin I && \quad (f,\pi',I,(f^{-1}(r_i))_{i\in I})\\ & \quad r_i\leftarrow\{0,1\}^\kappa &&\}\\ &\text{Return }\underbrace{(r_1|\cdots|r_n,x,(f,\pi,I,(z_i)_{i\in I}))}_{(1)}&&\text{Return }\underbrace{(r,x,(f,\pi',I,(f^{-1}(r_i))_{i\in I}))}_{(2)}\end{aligned}

我们希望证明 (1)c(2)(1)\approx_c(2)。考虑使用 Hybrid Argument 方法插入 Hybrid 的 (1)(1')

SimulatorHybrid(rI,π,I)Sim(1κ,x)r{0,1}n;(π,I)P(1κ,r,x,wx)(f,f1)GenF(1κ)(f,f1)GenF(1κ)For iIFor iIzi{0,1}κ s.t. h(zi)=rizi{0,1}κ s.t. h(zi)=riri=f(zi)ri=f(zi)For iIFor iIri{0,1}κri{0,1}κReturn (r1rn,x,(f,π,I,(zi)iI))undefined(1)Return (r1rn,x,(f,π,I,(zi)iI))undefined(1)\begin{aligned}&\color{red}\textbf{Simulator} && \color{red}\textbf{Hybrid}\\&(r_I',\pi,I)\leftarrow \text{Sim}'(1^\kappa,x) && r'\leftarrow\{0,1\}^n;(\pi,I)\leftarrow P'(1^\kappa,r',x,w_x) \\&(f,f^{-1})\leftarrow\text{GenF}(1^\kappa) && (f,f^{-1})\leftarrow\text{GenF}(1^\kappa) \\&\text{For } i \in I && \text{For } i \in I \\ &\quad z_i\leftarrow \{0,1\}^\kappa \text{ s.t. } h(z_i)=r_i'&&\quad z_i\leftarrow \{0,1\}^\kappa \text{ s.t. } h(z_i)=r_i'\\&\quad r_i=f(z_i) && \quad r_i=f(z_i)\\ &\text{For } i \notin I && \text{For } i \notin I\\ & \quad r_i\leftarrow\{0,1\}^\kappa &&\quad r_i\leftarrow\{0,1\}^\kappa\\ &\text{Return }\underbrace{(r_1|\cdots|r_n,x,(f,\pi,I,(z_i)_{i\in I}))}_{(1)}&&\text{Return }\underbrace{(r_1|\cdots|r_n,x,(f,\pi,I,(z_i)_{i\in I}))}_{(1')}\end{aligned}

我们知道根据 Hidden-Bits Model NIZK 的 Zero Knowledge 性质,有 (1)c(1)(1)\approx_c(1')

HybridRealr{0,1}n;(π,I)P(1κ,r,x,wx)r{0,1}κn(f,f1)GenF(1κ)P(1κ,r,x,wx) {For iI(f,f1)GenF(1κ)zi{0,1}κ s.t. h(zi)=riri=h(f1(ri)),i[n]ri=f(zi)(π,I)P(r,x,wx)For iI(f,π,I,(f1(ri))iI)ri{0,1}κ}Return (r1rn,x,(f,π,I,(zi)iI))undefined(1)Return (r,x,(f,π,I,(f1(ri))iI))undefined(2)\begin{aligned}&\color{red}\textbf{Hybrid} && \color{red}\textbf{Real}\\&r'\leftarrow\{0,1\}^n;(\pi,I)\leftarrow P'(1^\kappa,r',x,w_x) && r\leftarrow\{0,1\}^{\kappa n} \\&(f,f^{-1})\leftarrow\text{GenF}(1^\kappa) && P(1^\kappa,r,x,w_x) \ \{\\&\text{For } i \in I && \quad(f,f^{-1})\leftarrow\text{GenF}(1^\kappa)\\ &\quad z_i\leftarrow \{0,1\}^\kappa \text{ s.t. } h(z_i)=r_i'&&\quad r_i'=h(f^{-1}(r_i)),i\in[n]\\&\quad r_i=f(z_i) && \quad (\pi,I)\leftarrow P'(r',x,w_x)\\ &\text{For } i \notin I && \quad (f,\pi',I,(f^{-1}(r_i))_{i\in I})\\ & \quad r_i\leftarrow\{0,1\}^\kappa &&\}\\ &\text{Return }\underbrace{(r_1|\cdots|r_n,x,(f,\pi,I,(z_i)_{i\in I}))}_{(1')}&&\text{Return }\underbrace{(r,x,(f,\pi',I,(f^{-1}(r_i))_{i\in I}))}_{(2)}\end{aligned}
  • 在 Hybrid 中 riri(iI);rj{0,1}κ(jI)r_i'\Rightarrow r_i (i\in I); r_j\leftarrow\{0,1\}^\kappa (j\notin I)
  • 在 Real 中 ririr_i\Rightarrow r_i'

根据 Hard-core 的定义,难以区分均匀随机和 hard-core bit,因此 (1)c(2)(1')\approx_c (2)。我们形式化地将规约写出:

CA/CAβ{0,1}r{0,1}n(f,f1)GenF(1κ)(π,I)P(r,x,wx)For j=1 to ln{xj{0,1}κ;yj=f(xj)if β=0 then bj{0,1}else bj=h(xj)}f,(yj,bj)j[ln]t0/1:={bjbj=0/1,j[ln]}if t0<n or t1<n then abortFor i[n]\I{match ri=bj=0 set ri=yjmatch ri=bj=1 set ri=yj}For iI{zi{0,1}κ s.t. h(zi)=riri=f(zi)}r=r[n]\IrI;r=r1r2rnπ=(f,π,I,(zi)iI)(r,x,π)ββ\color{darkblue}\small\begin{matrix}\mathcal{C'}& &\mathcal{A'/C} & &\mathcal{A}\\ \beta\leftarrow \{0,1\} & & r'\leftarrow\{0,1\}^n \\(f,f^{-1})\leftarrow\text{GenF}(1^\kappa) & &(\pi,I)\leftarrow P'(r',x,w_x)\\ \text{For }j=1\text{ to }ln \quad \\ \scriptsize\left\{\begin{matrix}x_j\leftarrow\{0,1\}^\kappa;y_j=f(x_j)\\ \text{if } \beta=0 \text{ then } b_j\leftarrow\{0,1\} \\ \text{else } b_j=h(x_j)\end{matrix}\right\} & \stackrel{f,(y_j,b_j)_{j\in[ln]}}\longrightarrow \\ & & t_{0/1}:=|\{b_j|b_j=0/1,j\in[ln]\}|\\ & & \text{if } t_0<n \text{ or } t_1<n \text{ then abort}\\ & & \text{For } i\in[n]\backslash I \\ & & \scriptsize \left\{\begin{matrix}\text{match } r_i'=b_j=0\text{ set } r_i=y_j\\\text{match } r_i'=b_j=1\text{ set } r_i=y_j\end{matrix}\right\}\\ & & \text{For }i\in I \\ & & \scriptsize\left\{\begin{matrix}z_i\leftarrow\{0,1\}^\kappa\text{ s.t. } h(z_i)=r_i' \\ r_i=f(z_i)\end{matrix}\right\}\\ & & r'=r'_{[n]\backslash I}\cup r'_{I}; \\ & & r = r_1|r_2|\cdots|r_n\\ & & \pi'=(f,\pi,I,(z_i)_{i\in I}) \\ & & &\stackrel{(r,x,\pi')}{\longrightarrow} \\ &\stackrel{\beta'}{\longleftarrow} & & \stackrel{\beta'}{\longleftarrow}\end{matrix}

在上面的规约中 β=0\beta=0 模拟的是 Hybrid,而 β=1\beta=1 模拟的是 Real。如果 A\mathcal{A} 可以以不可忽略的概率差区分 Hybrid 和 Real,我们可以构造 A\mathcal{A}',其解决 lnln 个 TDP hard-core bit 问题的概率不可忽略,即

Pr[A(1)=1]Pr[A(2)=1]=Pr[β=1β=0]Pr[β=1β=0]lnAdvPKE,AHard-Core 2(κ)lnnegl(κ)=negl(κ)\begin{aligned}\left|\text{Pr}[\mathcal{A}(1')=1]-\text{Pr}[\mathcal{A}(2)=1]\right| &=\left|\text{Pr}[\beta'=1|\beta=0] - \text{Pr}[\beta'=1|\beta=0]\right|\\ &\leq ln\cdot\textbf{Adv}_{\text{PKE},\mathcal{A}'}^{\text{Hard-Core 2}}(\kappa) \\ &\leq ln\cdot\text{negl}(\kappa) \\ &=\text{negl}(\kappa)\end{aligned}

因此 (1)c(2)(1)\approx_c(2),即该构造具有 ZK 性质。


对于任意 NP 语言 LL 的 Hidden-Bits Model NIZK.

💡
Cook-Levin Reduction. 假设 LL^* 是一个 NPC 语言,对于任意 NP 语言 LL,存在一个多项式时间计算的函数 ff 满足 xLf(x)Lx\in L\Longrightarrow f(x)\in L^*;同时存在一个多项式时间计算的函数 ff' 满足如果 wxw_xxLx\in L 的 witness,那么 f(wx)f'(w_x)f(x)Lf(x)\in L^* 的 witness。
💡
命题. 如果存在一个针对 NPC 语言 LL^*  的 (a)NIZK (P,V)(P^*,V^*),那么对于任意 NP 语言 LL,存在一个 (P,V)(P,V) 的 (a)NIZK。

【证明】给定 xLx\in L,我们只需要以 f(x),f(wx)f(x),f'(w_x) 为输入调用 (P,V)(P^*,V^*) 即可。

因此,我们寻找一个特定的 NPC 语言,构造出其的 Hidden-Bits Model NIZK 即可。我们选择有向图的哈密尔顿回路作为该 NPC 语言 LL^*,即

L={G=(V,E)directed graph G which contains at least one Hamiltonian cycle}\begin{aligned}L^*=\{G=(V,E)|\text{directed graph $G$ which contains at least one Hamiltonian cycle}\}\end{aligned}

一些基本定义:


Modified Hidden-Bits Model NIZK for LL^*.

💡
Completeness. 若 GLG\in L^*π\pi 是一个排列,那么若 Mπ(E)(π(i),π(j))=0M_{\pi(E)}(\pi(i),\pi(j))=0,那么 MC(π(i),π(j))=0M_C(\pi(i),\pi(j))=0

Perfect Adaptive Soundness. 若 V(rI,G,π)=1V^*(r_I,G,\pi)=1,那么 GG 一定有哈密尔顿圈。

  • 反证,若没有哈密尔顿圈,一定有一个缺口,在同构图中是 0,但是在图 CC 中是 1;这个缺口边没法满足条件。
  • 由于 soundness 是 perfect 的,自然是 soundness 的。

Perfect Zero Knowledge. 存在一个仿真器 SIM(1κ,G=(V,E))(rI,π,I)\text{SIM}(1^\kappa,G=(V,E))\rightarrow(r_I,\pi,I):随机选择一个排列 π\pi,令 I={(π(i),π(j)):Mπ(E)(π(i),π(j))=0}I=\{(\pi(i),\pi(j)):M_{\pi(E)}(\pi(i),\pi(j))=0\},令 rI=000r_I=00\cdots 0,返回 (rI,π,I)(r_I, \pi, I) 即可。


Modified Hidden-Bits Model NIZK 到 Hidden-Bits Model NIZK. 下面,我们需要用 Modified Hidden-Bits Model NIZK 来构造 Hidden-Bits Model NIZK。

🔑
从 Unbiased Bits 构造 Biased Bits. 令 s{0,1}5log2ns\leftarrow\{0,1\}^{5\log_2 n},若 s=111s=11\cdots1,令 b=1b=1;否则 b=0b=0。那么 Pr[b=1]=n5\text{Pr}[b=1]=n^{-5},且 Pr[b=0]=1n5\text{Pr}[b=0]=1-n^{-5}

构造 Useful Matrix.

💡
构造出 Useful Matrix 的概率
Pr[M is useful]=Ω(n2)\text{Pr}[M\text{ is useful}]=\Omega\left(n^{-2}\right)

【证明】

定义事件:

  • AA: MM 包含正好 nn 个 1;
  • BB: MM 包含一个 n×nn\times n 子矩阵是排列矩阵;
  • CC: MM 包含一个 n×nn\times n 子矩阵是哈密尔顿矩阵,即等价于 MM 是 useful matrix。另外注意到 C=CBAC = C \wedge B \wedge A

那么,首先考虑 Pr[A]\text{Pr}[A]。令 XX 是一个计算 MM 中 1 的个数的随机变量,那么

E[X]=n5n6=n,Var[X]=n5(1n5)n6=nn4<n\mathbb{E}[X]=n^{-5}n^6=n,\quad \text{Var}[X]=n^{-5}(1-n^{-5})n^6=n-n^{-4}<n

根据切比雪夫不等式,

Pr[XE[X]k]Var(X)k2\text{Pr}[\left|X-\mathbb{E}[X]\right|\ge k] \leq \frac{\text{Var}(X)}{k^2}

k=nk=n,代入结果有

Pr[Xnn]nn2=1n\text{Pr}[|X-n|\ge n] \leq \frac{n}{n^2}=\frac{1}{n}

于是,

i=12n1Pr[X=i]11n\sum_{i=1}^{2n-1}\text{Pr}[X=i]\ge 1-\frac{1}{n}

于是,根据 Bernoulli 分布的形式,在均值 X=nX=n 处概率最大,于是

Pr[A]=Pr[X=n]i=12n1Pr[X=i]2n1=1n12n1(n3)13n=Ω(n1)\text{Pr}[A]=\text{Pr}[X=n]\ge\frac{\sum_{i=1}^{2n-1}\text{Pr}[X=i]}{2n-1} = \frac{1-n^{-1}}{2n-1} \stackrel{(n\ge 3)}{\ge} \frac{1}{3n} = \Omega(n^{-1})

接着考虑 Pr[BA]\text{Pr}[B|A]。矩阵里有 n6n^6 个位置,要挑 nn 个放 1,总方案数是 Cn6nC_{n^6}^n;但我要保证有一个排列矩阵,因此每行每列最多只有 1 个 1,因此从 n3n^3n3n^3 列(独立)分别挑出 nnnn 列,方案数即为 Cn3nCn3nC_{n^3}^n \cdot C_{n^3}^n;此外,因为是排列,所以每 nnnn 列对应着 n!n! 个具体排列方案,因此:

Pr[BA]=Cn3nCn3nn!Cn6nΩ(1)\text{Pr}[B|A]=\frac{C_{n^3}^n \cdot C_{n^3}^n\cdot n!}{C_{n^6}^n} \approx \Omega(1)

另一方面,给定一个正好有 nn 个 1 的矩阵 MM,每行至少有 2 个 1 的概率为:

1(11n3)nundefinedno 1 in this linen1n3(11n3)n1undefinedonly one 1 in this line2n1n51-\underbrace{\left(1-\frac{1}{n^3}\right)^n}_{\text{no 1 in this line}}-\underbrace{n\cdot\frac{1}{n^3}\cdot \left(1-\frac{1}{n^3}\right)^{n-1}}_{\text{only one 1 in this line}}\approx\frac{2n-1}{n^5}

总共有 n3+n3n^3+n^3 个行列,因此存在一行/列含有至少 2 个 1 的概率为:

2n32n1n5=O(n1)2n^3 \cdot \frac{2n-1}{n^5} = O(n^{-1})

因此,存在一个排列矩阵的概率即为不存在一行/列含有至少 2 个 1 的概率:

Pr[BA]=1O(n1)=Ω(1)\text{Pr}[B|A]=1-O(n^{-1})=\Omega(1)

对于 Pr[CB]\text{Pr}[C|B],则是一个古典概率计数问题,即

Pr[CB]=Pr[M is a Hamiltonian matrix]Pr[M is a permutation matrix]=(n1)!n!=1n=Ω(n1)\text{Pr}[C|B]=\frac{\text{Pr}[\text{$M$ is a Hamiltonian matrix]}}{\text{Pr}[\text{$M$ is a permutation matrix}]}=\frac{(n-1)!}{n!}=\frac{1}{n}=\Omega(n^{-1})

综上所述,

Pr[C]=Pr[CBA]=Pr[A]Pr[BA]Pr[CB,A]=Pr[A]Pr[BA]Pr[CB]=Ω(n1)Ω(1)Ω(n1)=Ω(n2)\begin{aligned}\text{Pr}[C]&=\text{Pr}[C\wedge B\wedge A]\\&=\text{Pr}[A]\text{Pr}[B|A]\text{Pr}[C|B,A]\\&=\text{Pr}[A]\text{Pr}[B|A]\text{Pr}[C|B]\\&=\Omega(n^{-1})\cdot \Omega(1)\cdot \Omega(n^{-1})\\ &=\Omega(n^{-2})\end{aligned}

这个结论说明了,平均采样 n2n^2 个矩阵,即可采样出一个 Useful Matrix,因此存在一个多项式时间的采样算法得到 Useful Matrix


Hidden-Bits Model NIZK for LNPCL^*\in\text{NPC}.

💡
Completeness. 与 modified 版本相同。

Adaptive Soundness. 如果 MkM_k 是 useful matrix,那么 adaptive soundness error 为 0(因为是在 modified 版本中证明了是 perfect adaptive soundness)。如果没有任何一个 MkM_k 是 useful 的,那么 VV^* 会将不在语言中的 xLx\notin L^* 误判为 1,这样的概率为:

Pr[V(rI,x,π~,I)=1xL]=(1Ω(n2))n3eΩ(n)=negl(n)\text{Pr}[V(r_I,x,\tilde{\pi},I)=1 \wedge x\notin L]=(1-\Omega(n^{-2}))^{n^3}\leq e^{-\Omega(n)}=\text{negl}(n)

Zero Knowledge. 存在一个仿真器 SIM(1κ,G=(V,E))(rI,π,I)\text{SIM}(1^\kappa,G=(V,E))\rightarrow(r_I,\pi,I),仿照 modified 版本与 PP^* 的构造类似构造即可。


Adaptive Zero Knowledge for LL^*. 下面我们想说明,使用上述方法构建的 NIZK (in CRS Model) 自然地具有 Adaptive ZK 性质。

P(r,G=(V,E),W=Ck) of NIZK (P,V)r=(r1,r2,,rn3(n3n3)5log2n){0,1}n3(n3n3)5log2nκ(f,f1)GenF(1κ);zi=f1(ri);ri=h(zi)r=(r1,r2,,rn3(n3n3)5log2n){0,1}n3(n3n3)5log2n(M1,M2,,Mn3)SamMatrix(r)For k=1 to n3If Mk is not useful, thenIIIndex(Mk)else IIIndex(Mk\Ck)Choose random permutation πk s.t. the cycle W covers CkFor each (i,j)E such E(i,j)=0 and MCk(πk(i),πk(j))=0II{Index(Mk(πk(i),πk(j)))}Π=(f,(πk)useful Mk,I,(zi)iI)Return Π\begin{aligned}& \color{red} P^*(r,G=(V,E),W=C_k) \text{ of NIZK } (P^*,V^*) \\ &r=(r_1,r_2,\cdots,r_{n^3\cdot(n^3\cdot n^3)\cdot 5\log_2n})\leftarrow\{0,1\}^{n^3\cdot(n^3\cdot n^3)\cdot 5\log_2n \cdot \kappa}\\ &(f,f^{-1})\leftarrow\text{GenF}(1^\kappa);\\ &z_i=f^{-1}(r_i);r_i'=h(z_i) \\ & r'=(r_1',r_2',\cdots,r_{n^3\cdot(n^3\cdot n^3)\cdot 5\log_2n}')\in\{0,1\}^{n^3\cdot(n^3\cdot n^3)\cdot 5\log_2n}\\ &(M_1,M_2,\cdots,M_{n^3})\leftarrow\text{SamMatrix}(r')\\&\text{For }k=1\text{ to }n^3 \\ &\quad \text{If }M_k \text{ is not useful, then} \\ &\quad \quad I \leftarrow I \cup \text{Index}(M_k) \\ &\quad \text{else } \\ &\quad \quad I \leftarrow I \cup \text{Index}(M_k\backslash C_k) \\ & \quad \quad \text{Choose random permutation }\pi_k \text{ s.t. the cycle }W\text{ covers }C_k \\&\quad \quad \text{For each }(i,j)\in E \text{ such } E(i,j)=0 \text{ and }M_{C_k}(\pi_k(i),\pi_k(j))=0 \\ &\quad\quad\quad I\leftarrow I\cup\{\text{Index}(M_k(\pi_k(i),\pi_k(j)))\} \\ &\Pi=(f,(\pi_k)_{\text{useful } M_k},I,(z_i)_{i\in I}) \\&\text{Return }\Pi\end{aligned}

接下来我们构造 aNIZK 需要的 Sim=(Sim1,Sim2)\text{Sim}^*=(\text{Sim}_1^*,\text{Sim}_2^*)

rSim1(1κ)[Allow Information Storation, e.g., useful info]r{0,1}n3(n3n3)5log2n(M1,M2,,Mn3)SamMatrix(r)For k=1 to n3If Mk is not useful, then IIIndex(Mk)elseIIIndex(Mk\Ck)set Mk to (0) and modify the corresponding bits in r(f,f1)GenF(1κ)For rirzi{0,1}κ s.t. h(zi)=riri=f(zi)r=(r1r2rn)Return r\begin{aligned}&\color{red}r\leftarrow\text{Sim}_1^*(1^\kappa) \quad [\textit{Allow Information Storation, e.g., useful info}]\\& r'\leftarrow\{0,1\}^{n^3\cdot(n^3\cdot n^3)\cdot 5\log_2n} \\& (M_1,M_2,\cdots,M_{n^3})\leftarrow\text{SamMatrix}(r')\\&\text{For }k=1\text{ to }n^3 \\ &\quad\text {If }M_k \text{ is not useful, then }\\ &\quad \quad I\leftarrow I\cup\text{Index}(M_k) \\ &\quad \text{else} \\ &\quad\quad I\leftarrow I\cup\text{Index}(M_k\backslash C_k) \\ & \quad \quad \color{blue} \text{set } M_k \text{ to }(0)\text{ and modify the corresponding bits in }r'\\ &(f,f^{-1})\in\text{GenF}(1^\kappa) \\ &\text{For }r_i' \in r' \\ &\quad z_i\leftarrow\{0,1\}^\kappa \text{ s.t. } h(z_i)=r_i'\\ &\quad r_i=f(z_i)\\ & r=(r_1|r_2|\cdots|r_n) \\&\text{Return }r\end{aligned}
ΠSim2(G)[Allow Information Storation, e.g., useful info]For k=1 to n3If Mk is useful, then IIIndex(Mk)Pick a random permutation πkFor each (i,j) s.t. E(i,j)=0For each (i,j)E such E(i,j)=0 and MCk(πk(i),πk(j))=0II{Index(Mk(πk(i),πk(j)))}Π=(f,(πk)useful Mk,I,(zi)iI)\begin{aligned}&\color{red}\Pi\leftarrow\text{Sim}_2^*(G) \quad [\textit{Allow Information Storation, e.g., useful info}]\\&\text{For }k=1\text{ to }n^3 \\ &\quad\text {If }M_k \text{ is useful, then }\\ &\quad \quad I\leftarrow I\cup\text{Index}(M_k) \\ &\quad\quad \color{blue}\text{Pick a random permutation }\pi_k \\ &\quad \quad \text{For each }(i,j)\text{ s.t. } E(i,j)=0 \\ &\quad \quad \text{For each }(i,j)\in E \text{ such } E(i,j)=0 \text{ and }M_{C_k}(\pi_k(i),\pi_k(j))=0 \\ &\quad\quad\quad I\leftarrow I\cup\{\text{Index}(M_k(\pi_k(i),\pi_k(j)))\} \\ &\Pi=(f,(\pi_k)_{\text{useful }M_k},I,(z_i)_{i\in I})\end{aligned}

规约省略。