1. 引言
Polygon zero团队 Daniel Lubarov 和 Polygon zkEVM团队 Jordi Baylina 2022年10月联合发表的论文 《Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs》。
受“casting out nines” 技术——做对9取模运算并提供概率性结果,启发,本论文核心思想为:
- 对bignum运算的非确定方案
即:【详细参看Optimizations of zkEVM with Daniel and Jordi】
即,若某identity在moduli set MMM中每个mi∈Mm_i\in Mmi∈M均有:
- f(x⃗)=0modmif(\vec{x})=0\mod m_if(x)=0modmi
则有:
- f(x⃗)=0modlcm(M)f(\vec{x})=0\mod \text{lcm}(M)f(x)=0modlcm(M),其中lcm(M)\text{lcm}(M)lcm(M)表示MMM中的最小公倍数。
若已知∣f(x⃗)∣<lcm(M)|f(\vec{x})|<\text{lcm}(M)∣f(x)∣<lcm(M),则有:
- f(x⃗)=0f(\vec{x})=0f(x)=0
1.1 相关约定
令[b][b][b]表示集合:{0,⋯,b−1}\{0,\cdots,b-1\}{0,⋯,b−1},某bignum可表示为nnn limbs in base bbb,即[b]n[b]^n[b]n。
[b]n[b]^n[b]n与[bn][b^n][bn]之间具有canonical isomorphism:
σb(x)=∑i=0n−1bixi\sigma_b(x)=\sum_{i=0}^{n-1}b^ix_iσb(x)=∑i=0n−1bixi
已知一组bignum x,y∈[b]nx,y\in [b]^nx,y∈[b]n,乘积σb(x)σb(y)\sigma_b(x)\sigma_b(y)σb(x)σb(y)可表示为某函数([b]n,[b]n)→[b2n]([b]^n,[b]^n)\rightarrow [b^{2n}]([b]n,[b]n)→[b2n],即:
πb(x,y)=∑i=0n−1∑j=0n−1bi+jxiyj\pi_b(x,y)=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}b^{i+j}x_iy_jπb(x,y)=∑i=0n−1∑j=0n−1bi+jxiyj
- Partially reduced summations:
某identity 对 mmm 取模,可表示为对每个系数取模,即:
σbm(x)=∑i=0n−1(bimodm)xi\sigma_b^{m}(x)=\sum_{i=0}^{n-1}(b^i\mod m)x_iσbm(x)=∑i=0n−1(bimodm)xi
类似的,也有:
πb(x,y)(m)=∑i=0n−1∑j=0n−1(bi+jmodm)xiyj\pi_b(x,y)^{(m)}=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}(b^{i+j}\mod m)x_iy_jπb(x,y)(m)=∑i=0n−1∑j=0n−1(bi+jmodm)xiyj
注意其中:σb(x)=σbm(x)\sigma_b(x)=\sigma_b^{m}(x)σb(x)=σbm(x) 以及 πb(x,y)=πb(x,y)(m)\pi_b(x,y)=\pi_b(x,y)^{(m)}πb(x,y)=πb(x,y)(m)。
从而可推导出如下定理1:
- 已知x∈[b]nx\in [b]^nx∈[b]n,有σbm(x)<nmb\sigma_b^{m}(x)<nmbσbm(x)<nmb。
- 已知x,y∈[b]nx,y\in [b]^nx,y∈[b]n,有πb(x,y)(m)<n2mb2\pi_b(x,y)^{(m)}<n^2mb^2πb(x,y)(m)<n2mb2。
在本文中,已知x∈[b]nx\in [b]^nx∈[b]n,则xxx和σb(x)\sigma_b(x)σb(x)这二者表示等价。
2. Widening multiplication
首先考虑2个bignum的乘法运算,x,y∈[b]nx,y\in [b]^nx,y∈[b]n:
- 不同于对xyxyxy进行确定性运算,而是将其乘积z∈[b]2nz\in[b]^{2n}z∈[b]2n作为witness,转为检查identity xy−zxy-zxy−z。
- 不同于直接验证该identity,转为检查其在一组模M={m0,⋯,mk−1}M=\{m_0,\cdots, m_{k-1}\}M={m0,⋯,mk−1}下均成立。
假设对于每个mim_imi,xy=zmodmixy=z\mod m_ixy=zmodmi均成立,或者等价为mi∣(xy−z)m_i | (xy-z)mi∣(xy−z)。则有lcm(M)∣(xy−z)\text{lcm}(M) | (xy-z)lcm(M)∣(xy−z),其中lcm\text{lcm}lcm表示the least common multiple function。
由于xy<b2nxy<b^{2n}xy<b2n且z<b2nz<b^{2n}z<b2n,使得∣xy−z∣<b2n|xy-z|<b^{2n}∣xy−z∣<b2n。
若选择的模集合MMM满足lcm(M)≥b2n\text{lcm}(M) \geq b^{2n}lcm(M)≥b2n,则∣xy−z∣<lcm(M)|xy-z|<\text{lcm}(M)∣xy−z∣<lcm(M),因此xy−z=0xy-z=0xy−z=0为lcm(M)∣(xy−z)\text{lcm}(M) | (xy-z)lcm(M)∣(xy−z)成立的唯一解,从而有xy=zxy=zxy=z。
Remark 1:
- 为MMM选择pairwise coprime sets是很自然的选择,因其具有lcm(M)=∏i=0k−1mi\text{lcm}(M)=\prod_{i=0}^{k-1}m_ilcm(M)=∏i=0k−1mi属性。
2.1 Congruence mod mim_imi
仍需检查xy=zmodmixy=z \mod m_ixy=zmodmi,更准确来说,是仍需检查πb(x,y)=σb(z)modmi\pi_b(x,y)=\sigma_b(z)\mod m_iπb(x,y)=σb(z)modmi。等式两边同时reduce,将该检查reduce为:
πb(x,y)(mi)=σbmi(z)modmi\pi_b(x,y)^{(m_i)}=\sigma_b^{m_i}(z)\mod m_iπb(x,y)(mi)=σbmi(z)modmi
不同于对等式两边进行确定性reduce,引入witness s∈Zs\in \mathbb{Z}s∈Z使得:
πb(x,y)(mi)−σbmi(z)=smi\begin{equation} \pi_b(x,y)^{(m_i)}-\sigma_b^{m_i}(z)=sm_i \end{equation}πb(x,y)(mi)−σbmi(z)=smi
根据定理1,可推导出定理2——∣s∣|s|∣s∣的上限值进行了约定:
- 若sss为对方程式(1)有效解,则有∣s∣<n2b2|s|<n^2b^2∣s∣<n2b2。
2.2 避免wrap-around
基于素数域进行运算的计算模型,无法对上述方程式(1)进行直接检查,我们仅能检查其 modp\mod pmodp是否成立,或等价为,存在某ttt,使得:
πb(x,y)(mi)−σbmi(z)−smi=tp\pi_b(x,y)^{(m_i)}-\sigma_b^{m_i}(z)-sm_i=tpπb(x,y)(mi)−σbmi(z)−smi=tp
为避免因包含wrap-around引入的无效解,必须对上述等式左侧进行限制,使得t=0t=0t=0为唯一可能解,即必须确保:
∣πb(x,y)(mi)−σbmi(z)−smi∣<p|\pi_b(x,y)^{(m_i)}-\sigma_b^{m_i}(z)-sm_i|<p∣πb(x,y)(mi)−σbmi(z)−smi∣<p
针对以上不等式,并利用πb(x,y)(mi)\pi_b(x,y)^{(m_i)}πb(x,y)(mi)和−σbmi(z)-\sigma_b^{m_i}(z)−σbmi(z)为符号相反的2个数的事实,足以确保:
max{πb(x,y)(mi),σbmi(z)}+∣smi∣<p\max\{\pi_b(x,y)^{(m_i)},\sigma_b^{m_i}(z)\}+|sm_i|<pmax{πb(x,y)(mi),σbmi(z)}+∣smi∣<p
或应用以上定理1和定理2,有:
- 2n2mib2≤p2n^2m_ib^2\leq p2n2mib2≤p
从而可选择一组能满足该条件的参数。
Remark 2:
- 在MMM中包含ppp自身是很自然的选择,因为,这样可“原生”检查an identity modp\mod pmodp。显然ppp自身并不满足上面2n2mib2≤p2n^2m_ib^2\leq p2n2mib2≤p的限定,因此,当检查某identity modp\mod pmodp时,wrap-around并不是an issue。
3. Modular multiplication
对某固定模q<bnq<b^nq<bn进行modular multiplication计算,即为:
- 以x,y∈[b]nx,y\in [b]^nx,y∈[b]n为输入,z∈[b]nz\in [b]^nz∈[b]n为witness,检查xy=zmodqxy=z\mod qxy=zmodq。(不同于上面的检查xy=zxy=zxy=z)
为此,引入witness rrr,使得πb(x,y)−σb(z)=rq\pi_b(x,y)-\sigma_b(z)=rqπb(x,y)−σb(z)=rq。不过,可将该问题进一步reduce为:
- 存在witness rrr,使得πb(q)(x,y)−σbq(z)=rq\pi_b^{(q)}(x,y)-\sigma_b^{q}(z)=rqπb(q)(x,y)−σbq(z)=rq。
根据定理1,意味着∣r∣<n2b2|r|<n^2b^2∣r∣<n2b2——可引入range check来强化该限制。
跟之前的方案类似,引入模集合MMM,根据定理1和不等式,有:
- ∣πb(x,y)(q)−σb(q)(z)−rq∣<2n2qb2|\pi_b(x,y)^{(q)}-\sigma_b^{(q)}(z)-rq|<2n^2qb^2∣πb(x,y)(q)−σb(q)(z)−rq∣<2n2qb2
因此,可选择MMM使得lcm(M)≥2n2qb2\text{lcm}(M)\geq 2n^2qb^2lcm(M)≥2n2qb2。为此,若不执行partial reduction modq\mod qmodq,我们需要大一点的lcm(M)\text{lcm}(M)lcm(M)。
3.1 Congruence mod mim_imi
small-moduli checks形式为:
- πb(q)(x,y)−σb(q)(z)=rqmodmi\pi_b^{(q)}(x,y)-\sigma_b^{(q)}(z)=rq \mod m_iπb(q)(x,y)−σb(q)(z)=rqmodmi
对所有的常量进行partial reductions modmi\mod m_imodmi,从而有:
- πb(q)(mi)(x,y)−σb(q)(mi)(z)=r(qmodmi)modmi\pi_b^{(q)(m_i)}(x,y)-\sigma_b^{(q)(m_i)}(z)=r(q\mod m_i) \mod m_iπb(q)(mi)(x,y)−σb(q)(mi)(z)=r(qmodmi)modmi
其中(q)(mi)(q)(m_i)(q)(mi)表示为一系列的partial reductions,即:
- σb(q)(mi)=∑i=0n−1((bimodq)modmi)xi\sigma_b^{(q)(m_i)}=\sum_{i=0}^{n-1}((b^i\mod q)\mod m_i)x_iσb(q)(mi)=∑i=0n−1((bimodq)modmi)xi
- πb(q)(mi)=∑i=0n−1∑j=0n−1((bi+jmodq)modmi)xiyj\pi_b^{(q)(m_i)}=\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}((b^{i+j}\mod q)\mod m_i)x_iy_jπb(q)(mi)=∑i=0n−1∑j=0n−1((bi+jmodq)modmi)xiyj
引入witness sss,使得:
- πb(q)(mi)(x,y)−σb(q)(mi)(z)−r(qmodmi)=smi\pi_b^{(q)(m_i)}(x,y)-\sigma_b^{(q)(m_i)}(z)-r(q\mod m_i)=sm_iπb(q)(mi)(x,y)−σb(q)(mi)(z)−r(qmodmi)=smi
成立。根据定理1,意味着∣s∣<2n2b2|s|<2n^2b^2∣s∣<2n2b2——可借助range check来强化该限制。
3.2 避免wrap-around
与2.2节思路类似,必须选择特定的参数,使得当对以上约束进行modp\mod pmodp check时,wrap-around不可能发生。采用类似的分析可知,要求:
- 4n2mib2≤p4n^2m_ib^2\leq p4n2mib2≤p
3.3 举个例子
假设“原生”field为Fp\mathbb{F}_pFp,其中p=264−232+1p=2^{64}-2^{32}+1p=264−232+1。当需要基于secp256k1 base field Fq\mathbb{F}_qFq(其中q=2256−232−29−28−27−26−24−1q=2^{256}-2^{32}-2^9-2^8-2^7-2^6-2^4-1q=2256−232−29−28−27−26−24−1)进行乘法运算时,且n=16,b=216n=16,b=2^{16}n=16,b=216。
为避免wrap-around,要求每个mim_imi(ppp自身除外——根据Remark 2)满足:
- mi≤p4n2b2m_i\leq \frac{p}{4n^2b^2}mi≤4n2b2p
对其向下取整为419430341943034194303,即约为2222^{22}222。
此外,MMM还需满足lcm(M)≥2n2qb2\text{lcm}(M)\geq 2n^2qb^2lcm(M)≥2n2qb2——约为22972^{297}2297。
满足以上条件的MMM可为:
- M={p,4194272,4194273,4194275,4294277,4294281,4194283,4194287,4194289,4194293,4194299,419430}M=\{p,4194272,4194273,4194275,4294277,4294281,4194283,4194287, 4194289, 4194293, 4194299, 419430\}M={p,4194272,4194273,4194275,4294277,4294281,4194283,4194287,4194289,4194293,4194299,419430}
为pairwise coprime set,满足以上约束。
4. Probabilistic method
不同于上面的固定模集合MMM,可将其从某更大的pariwise coprime set M\mathbb{M}M中随机选择subset。
已知bound ∣xy−z∣<b2n|xy-z|<b^{2n}∣xy−z∣<b2n,可argue that M\mathbb{M}M中仅有小部分可整除xy−zxy-zxy−z,因此若xy≠zxy\neq zxy=z,则不可能对所有m∈Mm\in Mm∈M该identity都成立。
取决于具体的安全参数,可能可采用比之前方案中相对更小的MMM集合。
4.1 举个例子
令M\mathbb{M}M为pairwise coprime subset of [215,⋯,216][2^{15},\cdots,2^{16}][215,⋯,216]——可发现该集合内可包含3802个整数。
若xyxyxy和zzz均不超过512 bits,则xy−zxy-zxy−z最多可整除34个mi∈Mm_i\in\mathbb{M}mi∈M,任意subset size为35或更多时,相应的product将超过25122^{512}2512。因此,若xy≠zxy\neq zxy=z,则对于随机的mi∈Mm_i\in \mathbb{M}mi∈M,xy=zmodmixy=z\mod m_ixy=zmodmi成立的概率最高为32/306932/306932/3069。
若独立sample每个mi∈Mm_i\in \mathbb{M}mi∈M,则可能存在重复取值的情况,若做20次sample,提供128-bit securit:(32/3069)20<2−128(32/3069)^{20}<2^{-128}(32/3069)20<2−128。若整个sample过程中避免重复情况,则19次sample就足够了,因为:
∏i=018(34−i3069−i)<2−128\prod_{i=0}^{18}(\frac{34-i}{3069-i})<2^{-128}∏i=018(3069−i34−i)<2−128