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
M
M
M中每个
m
i
∈
M
m_i\in M
mi∈M均有:
- f ( x ⃗ ) = 0 m o d m i f(\vec{x})=0\mod m_i f(x)=0modmi
则有:
- f ( x ⃗ ) = 0 m o d lcm ( M ) f(\vec{x})=0\mod \text{lcm}(M) f(x)=0modlcm(M),其中 lcm ( M ) \text{lcm}(M) lcm(M)表示 M M M中的最小公倍数。
若已知 ∣ f ( x ⃗ ) ∣ < lcm ( M ) |f(\vec{x})|<\text{lcm}(M) ∣f(x)∣<lcm(M),则有:
- f ( x ⃗ ) = 0 f(\vec{x})=0 f(x)=0
1.1 相关约定
令 [ b ] [b] [b]表示集合: { 0 , ⋯ , b − 1 } \{0,\cdots,b-1\} {0,⋯,b−1},某bignum可表示为 n n n limbs in base b b b,即 [ b ] n [b]^n [b]n。
[
b
]
n
[b]^n
[b]n与
[
b
n
]
[b^n]
[bn]之间具有canonical isomorphism:
σ
b
(
x
)
=
∑
i
=
0
n
−
1
b
i
x
i
\sigma_b(x)=\sum_{i=0}^{n-1}b^ix_i
σb(x)=∑i=0n−1bixi
已知一组bignum
x
,
y
∈
[
b
]
n
x,y\in [b]^n
x,y∈[b]n,乘积
σ
b
(
x
)
σ
b
(
y
)
\sigma_b(x)\sigma_b(y)
σb(x)σb(y)可表示为某函数
(
[
b
]
n
,
[
b
]
n
)
→
[
b
2
n
]
([b]^n,[b]^n)\rightarrow [b^{2n}]
([b]n,[b]n)→[b2n],即:
π
b
(
x
,
y
)
=
∑
i
=
0
n
−
1
∑
j
=
0
n
−
1
b
i
+
j
x
i
y
j
\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 对 m m m 取模,可表示为对每个系数取模,即:
σ b m ( x ) = ∑ i = 0 n − 1 ( b i m o d m ) x i \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 = 0 n − 1 ∑ j = 0 n − 1 ( b i + j m o d m ) x i y j \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 ) = σ b m ( 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 ] n x\in [b]^n x∈[b]n,有 σ b m ( x ) < n m b \sigma_b^{m}(x)<nmb σbm(x)<nmb。
- 已知 x , y ∈ [ b ] n x,y\in [b]^n x,y∈[b]n,有 π b ( x , y ) ( m ) < n 2 m b 2 \pi_b(x,y)^{(m)}<n^2mb^2 πb(x,y)(m)<n2mb2。
在本文中,已知 x ∈ [ b ] n x\in [b]^n x∈[b]n,则 x x x和 σ b ( x ) \sigma_b(x) σb(x)这二者表示等价。
2. Widening multiplication
首先考虑2个bignum的乘法运算, x , y ∈ [ b ] n x,y\in [b]^n x,y∈[b]n:
- 不同于对 x y xy xy进行确定性运算,而是将其乘积 z ∈ [ b ] 2 n z\in[b]^{2n} z∈[b]2n作为witness,转为检查identity x y − z xy-z xy−z。
- 不同于直接验证该identity,转为检查其在一组模
M
=
{
m
0
,
⋯
,
m
k
−
1
}
M=\{m_0,\cdots, m_{k-1}\}
M={m0,⋯,mk−1}下均成立。
假设对于每个 m i m_i mi, x y = z m o d m i xy=z\mod m_i xy=zmodmi均成立,或者等价为 m i ∣ ( x y − z ) m_i | (xy-z) mi∣(xy−z)。则有 lcm ( M ) ∣ ( x y − z ) \text{lcm}(M) | (xy-z) lcm(M)∣(xy−z),其中 lcm \text{lcm} lcm表示the least common multiple function。
由于 x y < b 2 n xy<b^{2n} xy<b2n且 z < b 2 n z<b^{2n} z<b2n,使得 ∣ x y − z ∣ < b 2 n |xy-z|<b^{2n} ∣xy−z∣<b2n。
若选择的模集合 M M M满足 lcm ( M ) ≥ b 2 n \text{lcm}(M) \geq b^{2n} lcm(M)≥b2n,则 ∣ x y − z ∣ < lcm ( M ) |xy-z|<\text{lcm}(M) ∣xy−z∣<lcm(M),因此 x y − z = 0 xy-z=0 xy−z=0为 lcm ( M ) ∣ ( x y − z ) \text{lcm}(M) | (xy-z) lcm(M)∣(xy−z)成立的唯一解,从而有 x y = z xy=z xy=z。
Remark 1:
- 为 M M M选择pairwise coprime sets是很自然的选择,因其具有 lcm ( M ) = ∏ i = 0 k − 1 m i \text{lcm}(M)=\prod_{i=0}^{k-1}m_i lcm(M)=∏i=0k−1mi属性。
2.1 Congruence mod m i m_i mi
仍需检查
x
y
=
z
m
o
d
m
i
xy=z \mod m_i
xy=zmodmi,更准确来说,是仍需检查
π
b
(
x
,
y
)
=
σ
b
(
z
)
m
o
d
m
i
\pi_b(x,y)=\sigma_b(z)\mod m_i
πb(x,y)=σb(z)modmi。等式两边同时reduce,将该检查reduce为:
π
b
(
x
,
y
)
(
m
i
)
=
σ
b
m
i
(
z
)
m
o
d
m
i
\pi_b(x,y)^{(m_i)}=\sigma_b^{m_i}(z)\mod m_i
πb(x,y)(mi)=σbmi(z)modmi
不同于对等式两边进行确定性reduce,引入witness
s
∈
Z
s\in \mathbb{Z}
s∈Z使得:
π
b
(
x
,
y
)
(
m
i
)
−
σ
b
m
i
(
z
)
=
s
m
i
\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∣的上限值进行了约定:
- 若 s s s为对方程式(1)有效解,则有 ∣ s ∣ < n 2 b 2 |s|<n^2b^2 ∣s∣<n2b2。
2.2 避免wrap-around
基于素数域进行运算的计算模型,无法对上述方程式(1)进行直接检查,我们仅能检查其
m
o
d
p
\mod p
modp是否成立,或等价为,存在某
t
t
t,使得:
π
b
(
x
,
y
)
(
m
i
)
−
σ
b
m
i
(
z
)
−
s
m
i
=
t
p
\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
=
0
t=0
t=0为唯一可能解,即必须确保:
∣
π
b
(
x
,
y
)
(
m
i
)
−
σ
b
m
i
(
z
)
−
s
m
i
∣
<
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
)
(
m
i
)
\pi_b(x,y)^{(m_i)}
πb(x,y)(mi)和
−
σ
b
m
i
(
z
)
-\sigma_b^{m_i}(z)
−σbmi(z)为符号相反的2个数的事实,足以确保:
max
{
π
b
(
x
,
y
)
(
m
i
)
,
σ
b
m
i
(
z
)
}
+
∣
s
m
i
∣
<
p
\max\{\pi_b(x,y)^{(m_i)},\sigma_b^{m_i}(z)\}+|sm_i|<p
max{πb(x,y)(mi),σbmi(z)}+∣smi∣<p
或应用以上定理1和定理2,有:
- 2 n 2 m i b 2 ≤ p 2n^2m_ib^2\leq p 2n2mib2≤p
从而可选择一组能满足该条件的参数。
Remark 2:
- 在 M M M中包含 p p p自身是很自然的选择,因为,这样可“原生”检查an identity m o d p \mod p modp。显然 p p p自身并不满足上面 2 n 2 m i b 2 ≤ p 2n^2m_ib^2\leq p 2n2mib2≤p的限定,因此,当检查某identity m o d p \mod p modp时,wrap-around并不是an issue。
3. Modular multiplication
对某固定模 q < b n q<b^n q<bn进行modular multiplication计算,即为:
- 以 x , y ∈ [ b ] n x,y\in [b]^n x,y∈[b]n为输入, z ∈ [ b ] n z\in [b]^n z∈[b]n为witness,检查 x y = z m o d q xy=z\mod q xy=zmodq。(不同于上面的检查 x y = z xy=z xy=z)
为此,引入witness r r r,使得 π b ( x , y ) − σ b ( z ) = r q \pi_b(x,y)-\sigma_b(z)=rq πb(x,y)−σb(z)=rq。不过,可将该问题进一步reduce为:
- 存在witness r r r,使得 π b ( q ) ( x , y ) − σ b q ( z ) = r q \pi_b^{(q)}(x,y)-\sigma_b^{q}(z)=rq πb(q)(x,y)−σbq(z)=rq。
根据定理1,意味着 ∣ r ∣ < n 2 b 2 |r|<n^2b^2 ∣r∣<n2b2——可引入range check来强化该限制。
跟之前的方案类似,引入模集合 M M M,根据定理1和不等式,有:
- ∣ π b ( x , y ) ( q ) − σ b ( q ) ( z ) − r q ∣ < 2 n 2 q b 2 |\pi_b(x,y)^{(q)}-\sigma_b^{(q)}(z)-rq|<2n^2qb^2 ∣πb(x,y)(q)−σb(q)(z)−rq∣<2n2qb2
因此,可选择 M M M使得 lcm ( M ) ≥ 2 n 2 q b 2 \text{lcm}(M)\geq 2n^2qb^2 lcm(M)≥2n2qb2。为此,若不执行partial reduction m o d q \mod q modq,我们需要大一点的 lcm ( M ) \text{lcm}(M) lcm(M)。
3.1 Congruence mod m i m_i mi
small-moduli checks形式为:
- π b ( q ) ( x , y ) − σ b ( q ) ( z ) = r q m o d m i \pi_b^{(q)}(x,y)-\sigma_b^{(q)}(z)=rq \mod m_i πb(q)(x,y)−σb(q)(z)=rqmodmi
对所有的常量进行partial reductions m o d m i \mod m_i modmi,从而有:
- π b ( q ) ( m i ) ( x , y ) − σ b ( q ) ( m i ) ( z ) = r ( q m o d m i ) m o d m i \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 ) ( m i ) (q)(m_i) (q)(mi)表示为一系列的partial reductions,即:
- σ b ( q ) ( m i ) = ∑ i = 0 n − 1 ( ( b i m o d q ) m o d m i ) x i \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 ) ( m i ) = ∑ i = 0 n − 1 ∑ j = 0 n − 1 ( ( b i + j m o d q ) m o d m i ) x i y j \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 s s s,使得:
- π b ( q ) ( m i ) ( x , y ) − σ b ( q ) ( m i ) ( z ) − r ( q m o d m i ) = s m i \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 ∣ < 2 n 2 b 2 |s|<2n^2b^2 ∣s∣<2n2b2——可借助range check来强化该限制。
3.2 避免wrap-around
与2.2节思路类似,必须选择特定的参数,使得当对以上约束进行 m o d p \mod p modp check时,wrap-around不可能发生。采用类似的分析可知,要求:
- 4 n 2 m i b 2 ≤ p 4n^2m_ib^2\leq p 4n2mib2≤p
3.3 举个例子
假设“原生”field为
F
p
\mathbb{F}_p
Fp,其中
p
=
2
64
−
2
32
+
1
p=2^{64}-2^{32}+1
p=264−232+1。当需要基于secp256k1 base field
F
q
\mathbb{F}_q
Fq(其中
q
=
2
256
−
2
32
−
2
9
−
2
8
−
2
7
−
2
6
−
2
4
−
1
q=2^{256}-2^{32}-2^9-2^8-2^7-2^6-2^4-1
q=2256−232−29−28−27−26−24−1)进行乘法运算时,且
n
=
16
,
b
=
2
16
n=16,b=2^{16}
n=16,b=216。
为避免wrap-around,要求每个
m
i
m_i
mi(
p
p
p自身除外——根据Remark 2)满足:
- m i ≤ p 4 n 2 b 2 m_i\leq \frac{p}{4n^2b^2} mi≤4n2b2p
对其向下取整为 4194303 4194303 4194303,即约为 2 22 2^{22} 222。
此外,
M
M
M还需满足
lcm
(
M
)
≥
2
n
2
q
b
2
\text{lcm}(M)\geq 2n^2qb^2
lcm(M)≥2n2qb2——约为
2
297
2^{297}
2297。
满足以上条件的
M
M
M可为:
- 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
不同于上面的固定模集合
M
M
M,可将其从某更大的pariwise coprime set
M
\mathbb{M}
M中随机选择subset。
已知bound
∣
x
y
−
z
∣
<
b
2
n
|xy-z|<b^{2n}
∣xy−z∣<b2n,可argue that
M
\mathbb{M}
M中仅有小部分可整除
x
y
−
z
xy-z
xy−z,因此若
x
y
≠
z
xy\neq z
xy=z,则不可能对所有
m
∈
M
m\in M
m∈M该identity都成立。
取决于具体的安全参数,可能可采用比之前方案中相对更小的
M
M
M集合。
4.1 举个例子
令
M
\mathbb{M}
M为pairwise coprime subset of
[
2
15
,
⋯
,
2
16
]
[2^{15},\cdots,2^{16}]
[215,⋯,216]——可发现该集合内可包含3802个整数。
若
x
y
xy
xy和
z
z
z均不超过512 bits,则
x
y
−
z
xy-z
xy−z最多可整除34个
m
i
∈
M
m_i\in\mathbb{M}
mi∈M,任意subset size为35或更多时,相应的product将超过
2
512
2^{512}
2512。因此,若
x
y
≠
z
xy\neq z
xy=z,则对于随机的
m
i
∈
M
m_i\in \mathbb{M}
mi∈M,
x
y
=
z
m
o
d
m
i
xy=z\mod m_i
xy=zmodmi成立的概率最高为
32
/
3069
32/3069
32/3069。
若独立sample每个
m
i
∈
M
m_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
=
0
18
(
34
−
i
3069
−
i
)
<
2
−
128
\prod_{i=0}^{18}(\frac{34-i}{3069-i})<2^{-128}
∏i=018(3069−i34−i)<2−128