[论文] Proofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
Ronald Cramer and Ivan Damgård and Berry Schoenmakers - CRYPTO '94
Preliminary
对NP关系\(R=\{(x,w)\}\),任意\(x\),其witness集合\(w(x)\)为所有\(w\)的集合,使得\((x,w) \in R\)。
广义的对关系R的PoK协议\(\mathcal{P}\):P和V接收\(k\)-bit的公共statement \(x\),P拥有秘密输入\(w\),P需要向V证明\(w \in w(x)\)。
本文主要关心一类特殊的PoK协议,具有如下性质:
- 三轮 public coin 协议,即一般的 sigma protocol,transcript为\((a,c,z)\),本文中统一写成\((m_1, c, m_2)\),public coin 的意思是V发送的随机挑战\(c\)公开;
- 2-special soundness:给定两个transcript:\((m_1, c, m_2), (m_1, c', m_2')\),其中\(c \neq c'\),可以在多项式时间内计算出witness集合\(w(x)\)的一个元素;2-special soundness是比标准soundness更强的性质,给出了一种提取的方式,故满足special soundness一定满足soundness,反之不然;事实上,所有已知的PoK协议都具有某种类型的special soundness性质;
- HVZK:对于输入 public statement \(x\),存在一个模拟器S,可以产生与诚实的P和V之间的transcript无法区分的transcript;(常见的HVZK协议事实上支持更强的性质,输入任意的\(c\)就可以进行模拟所有挑战为\(c\)的诚实P和V之间的transcript,称为special HVZK)
Schnorr协议就是一个经典的符合上述性质的协议,具体的证明比较显然。
其他性质:
- witness indistinguishable(WI):对同样 public statement \(x\),但是使用不同 witness \(w,w' \in w(x)\) 的两个transcript不可区分,i.e. 即使 cheating V 也不能区分P究竟使用/拥有哪一个witness;
- witness hiding(WH):即使cheating V 也不能根据 \(x\) 计算出witness;
显然,一个HVZK的三轮 public coin 协议,由于 transcript 同模拟器不可区分,而与 witness 无关,所以对于任何V,协议都是WI的。对于诚实验证者而言,由于\(c\)是随机的,所以\(m_2\)仅与\(m_1,c\)有关,与具体的 witness 无关,对其他的验证者而言,\(m_1\)由诚实的P独立生成,与 witness 无关,V生成的挑战\(c\)与 witness 无关,由于 HVZK 的性质,\(m_2\)的分布仅与\(m_1,c\)有关,所以对其他的验证者,transcript均与 witness 无关。
一个完美的秘密共享方案,要求任何非授权集合A,不能获得分享的秘密值的任何信息,考虑非授权集合A的所有秘密分享的联合概率分布,则应当和秘密值\(s\)相独立,记为\(D_A\)。
给定参数\(k\),考虑秘密分享方案\(S(k)\)的下面几条性质:
- 所有秘密份额的长度都是\(poly(k)\);
- 秘密的分发和恢复可以在\(poly(k)\)时间内完成;
- 给定秘密值\(s\)和所有的份额,可以在\(poly(k)\)时间内确定\(s\)是份额分享的秘密值;
- 给定秘密值\(s\),以及非授权集合A的份额集合(按照\(D_A\)分布),总能在\(poly(k)\)内编曲人为一个完整的份额集合,其联合概率分布符合\(D(s)\);
- 对于所有非授权集合A,其份额概率分布(与\(s\)无关)对于A中参与者是独立均匀的。
满足性质1-4的秘密分享方案称为 semi-smooth;
满足性质1-5的秘密分享方案称为 smooth。
一般而言,门限秘密分享就是一种smooth的秘密分享方案,其中,Shamir的多项式秘密分享更是一种所有分享份额和秘密值\(s\)等长的ideal方案。性质1-3都比较显然,故直接从性质4开始,这里给出一些比较直观的分析。
对于性质4,假设门限方案的阈值为\(d\),对于多项式上面的\(d' < d\)个点,在拥有常数项\(s\)的情况下,完全可以通过取随机点的方法恢复出其余系数,然后得到一个秘密值\(s\)的完整秘密分享份额集合;对于性质5,由于多项式的系数和自变量的取值都是完全随机的,所以这一条性质也显然。
有关门限秘密分享方案以外的讨论这里暂不展开,仅引入文中一个结论:
- 对单调布尔表达式\(F_k\)决定的单调 access strucutre \(\Gamma(k)\),存在一族 semi-smooth 的秘密分享方案。
Composition
文章提出了最主要的结论:Theorem 8,然后再该定理的构造性证明中,给出了 sigma protocol composition 的具体方法。
定理8:
- 给定三轮 public coin HVZK,并满足 special soundness 的协议\(\mathcal{P}\),对于单调 access strucutre \(\Gamma\) 以及其对偶 \(\Gamma^*\) 的 smooth 秘密分享方案 \(S\),存在一个 \(R_{\Gamma}\) 的三轮 public coin WI 协议。
其中,\(R_{\Gamma}\) 指 \(((x_1, \cdots, x_m), (w_1, \cdots, w_m))\),其中每一对 \((x_i, w_i)\) 都属于关系\(R\)。
方便起见,在证明中,忽略参数\(k\)。待分享的秘密值\(s\)的长度设置为\(t\),并通过多次执行协议来确保挑战的总长度不短于任何份额的长度。\(share(c)\)表示与一个挑战对应的秘密分享份额。证明的核心思路为,将底层协议的挑战解读为一种秘密分享的份额。
证明:
- \(\forall i \in \bar{A}\),P使用 public statement \(x_i\) 作为输入运行 HVZK 的模拟器S,产生不可区分的 transcript \((m_1^i, c, m_2^i)\);\(\forall i \in A\),P按照协议正常的步骤对 public statement \(x_i\) 生成 \(m_1^i\);
- V选择一个随机的 \(t\)-bit 挑战 \(s\) 并发送给P;
- 从第1步中得到的与 \(\bar{A}\) 中指标对应的挑战对应的秘密分享份额,即 \(\{share(c_i)|i \in \bar{A}\}\),由于 \(A \in \Gamma\),故 $ \bar{A} \notin \Gamma^* $,根据 $ \Gamma^* $ 的 smooth 秘密分享方案 \(S\) 的性质4,P可以在多项式时间内将这些份额补全为一个对于秘密值 \(s\)的完成份额集合;随后对于 \(i \in A\),P由 $ share(c_i) $ 得到全部的 $ c_i $,然后根据第1步中计算的 \(m_1^i\) 和已知的 witness,P可以计算出所有的协议回应 \(m_2^i\);在第1步中通过模拟器得到了 \(\forall i \in \bar{A}, x_i\) 的 transcript,此时P可以将所有的 \((m_2^i, c_i), i = 1, \cdots, n\) 发送给V。
V验证P给出的证明分为两步,首先验证对于所有的 $ i=1, \cdots, n$,transcript $ (m_1^i, c, m_2^i) $ 都能通过原协议的验证,所有的验证在多项式时间内完成;然后提取所有的 \(share(c_i)\) 并恢复出秘密值 \(s\),检查是否一致,这一步也可以在多项式时间内完成。
当 P 确实拥有合适的 witness 的时候,composition 方案的 completeness 显然。
对于 soundness:
假设存在一个不持有合法 witness 集合但拥有不可忽略优势的恶意P,在第一步传递给了V一组 \(\{m_1^i\}\),并以某一不可忽略比例可以对V挑战的随机\(s\)做出正确应答,则通过 rewind,可以获取对于两个不同的随机挑战\(s,s'\)的正确应答。
由于秘密值不同,则对于任意对偶 access strucure 的合法集合B,一定存在不同的\(i\)使得秘密分享份额 \(share(c_i) \neq share(c'_i)\),则 \(c_i \neq c'_i\)。从而可以由底层协议的 special soundness 计算出对应的 witness。这对于对偶 access strucure 的任意一个合法集合都成立,所以恶意P拥有所有这些集合的其中一个 witness。
命题4:A是\(\Gamma\)的合法集合,当且仅当A与\(\Gamma^*\)中的任意一个合法集合有非空交集。
由命题4,我们可以提取出一个合法集合。
对于 witness indistinguishability:
需要说明所有的 transcript 与选择的 witness 集合无关。首先,由于 transcript 的第一项是通过调用底层协议的模拟器产生的不可区分 transcript,以及已知 witness 产生的第一项,故第一项的分布与 witness 集合分布独立。其次,由于 \(share(c_i)\) 是由随机值\(s\)与模拟产生的不可区分的 \(c_i\) 补全得到,并经过可能的随机padding步骤产生的的,所以其概率分布应当与 \(s\) 相关,而与 witness 集合独立。最终,经由上面两项产生的 transcript 第三项应当也是与 witness 集合独立的。
扩展-定理9:底层协议 special HVZK,秘密分享方案为 semi-smooth,仍然能得到一个 WI 的协议。
证明:
在定理8证明的第一步中,将一个随机的秘密值进行分享,然后舍去所有已知 witness 对应的秘密份额,并分享剩余的份额(这一步中,非授权集合份额的概率分布与秘密值无关,服从\(D_{\bar{A}}\))。然后,使用 special simulator,对从这些秘密分享份额中得到的各种挑战进行模拟,得到 transcript。接着使用秘密分享方案的性质4,进行补全(此时仍然接收一个V的挑战\(s\))。
定理9中的修改协议的soundness可以用定理8相同的方法进行证明,WI性质则只需要说明 transcript 的第一项的概率分布是独立的即可。
后续的定理10和后续的一系列推论暂时先不写,原因是我看到这里感觉对 access structure 的单调性等问题认识的不够清楚,所以先简单总结一下 Corollary 12,作为定理8的一个直接结果:
- \(\mathcal{P}\) 为一个对于关系 R 的三轮 public coin,HVZK 的 PoK 协议,并且满足 special soundness。对于任意的 \(n,d\),存在一个和 \(\mathcal{P}\) 有相同 round complexity 的协议,证明者可以展示他知道 \(n\) 个 witness 当中至少 \(d\) 个,并不泄露具体是哪些。
证明:在定理8中使用一个阈值为 \(n-d+1\) 的 Shamir 秘密分享协议即可。