Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs学习笔记

news/2025/1/6 5:39:58/

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 MmiM均有:

  • 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,,b1},某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=0n1bixi

已知一组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=0n1j=0n1bi+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=0n1(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=0n1j=0n1(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-zxyz
  • 不同于直接验证该identity,转为检查其在一组模M={m0,⋯,mk−1}M=\{m_0,\cdots, m_{k-1}\}M={m0,,mk1}下均成立。
    假设对于每个mim_imixy=zmodmixy=z\mod m_ixy=zmodmi均成立,或者等价为mi∣(xy−z)m_i | (xy-z)mi(xyz)。则有lcm(M)∣(xy−z)\text{lcm}(M) | (xy-z)lcm(M)(xyz),其中lcm\text{lcm}lcm表示the least common multiple function。
    由于xy<b2nxy<b^{2n}xy<b2nz<b2nz<b^{2n}z<b2n,使得∣xy−z∣<b2n|xy-z|<b^{2n}xyz<b2n
    若选择的模集合MMM满足lcm(M)≥b2n\text{lcm}(M) \geq b^{2n}lcm(M)b2n,则∣xy−z∣<lcm(M)|xy-z|<\text{lcm}(M)xyz<lcm(M),因此xy−z=0xy-z=0xyz=0lcm(M)∣(xy−z)\text{lcm}(M) | (xy-z)lcm(M)(xyz)成立的唯一解,从而有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=0k1mi属性。

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}sZ使得:
π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^2s<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 p2n2mib2p

从而可选择一组能满足该条件的参数。

Remark 2:

  • MMM中包含ppp自身是很自然的选择,因为,这样可“原生”检查an identity modp\mod pmodp。显然ppp自身并不满足上面2n2mib2≤p2n^2m_ib^2\leq p2n2mib2p的限定,因此,当检查某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^2r<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=0n1((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=0n1j=0n1((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^2s<2n2b2——可借助range check来强化该限制。

3.2 避免wrap-around

与2.2节思路类似,必须选择特定的参数,使得当对以上约束进行modp\mod pmodp check时,wrap-around不可能发生。采用类似的分析可知,要求:

  • 4n2mib2≤p4n^2m_ib^2\leq p4n2mib2p

3.3 举个例子

假设“原生”field为Fp\mathbb{F}_pFp,其中p=264−232+1p=2^{64}-2^{32}+1p=264232+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=225623229282726241)进行乘法运算时,且n=16,b=216n=16,b=2^{16}n=16b=216
为避免wrap-around,要求每个mim_imippp自身除外——根据Remark 2)满足:

  • mi≤p4n2b2m_i\leq \frac{p}{4n^2b^2}mi4n2b2p

对其向下取整为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}xyz<b2n,可argue that M\mathbb{M}M中仅有小部分可整除xy−zxy-zxyz,因此若xy≠zxy\neq zxy=z,则不可能对所有m∈Mm\in MmM该identity都成立。
取决于具体的安全参数,可能可采用比之前方案中相对更小的MMM集合。

4.1 举个例子

M\mathbb{M}M为pairwise coprime subset of [215,⋯,216][2^{15},\cdots,2^{16}][215,,216]——可发现该集合内可包含3802个整数。
xyxyxyzzz均不超过512 bits,则xy−zxy-zxyz最多可整除34个mi∈Mm_i\in\mathbb{M}miM,任意subset size为35或更多时,相应的product将超过25122^{512}2512。因此,若xy≠zxy\neq zxy=z,则对于随机的mi∈Mm_i\in \mathbb{M}miMxy=zmodmixy=z\mod m_ixy=zmodmi成立的概率最高为32/306932/306932/3069

若独立sample每个mi∈Mm_i\in \mathbb{M}miM,则可能存在重复取值的情况,若做20次sample,提供128-bit securit:(32/3069)20<2−128(32/3069)^{20}<2^{-128}(32/3069)20<2128。若整个sample过程中避免重复情况,则19次sample就足够了,因为:
∏i=018(34−i3069−i)<2−128\prod_{i=0}^{18}(\frac{34-i}{3069-i})<2^{-128}i=018(3069i34i)<2128


http://www.ppmy.cn/news/8305.html

相关文章

【C++升级之路】第五篇:C/C++内存管理(new和delete的实现原理)

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;C/C内存分布&#xff0c;C/C动态内存管理方法&#xff0c;C动态内存管理方法底层函数operator new 和operat…

2022年终总结:少年不惧岁月长,彼方尚有荣光在。

2022年终总结&#xff1a;少年不惧岁月长&#xff0c;彼方尚有荣光在。 &#x1f3ac; 博客主页&#xff1a;王同学要努力 &#x1f3ac;个人简介&#xff1a;大三小白&#xff0c;喜欢前端 &#xff0c;热爱分享 &#x1f3a5; 本文由 王同学要努力 原创&#xff0c;首发于…

常用Stream流

Stream流 数据源 数据处理 数据结果 filter 过滤 limit 取前几 sorted 排序 max、min、count map 对集合中的元素进行特定的操作 reduce 将所有的元素按照传入的逻辑进行处理&#xff0c;并且会把结果合并成一个值进行返回 collection 基于目标集合生成新的数组 public class…

04 业务服务注册到 nacos 默认权重为0, 导致 gateway 获取不到业务服务

前言 最近搭建 xxx服务 的时候碰到了一个这样的问题 某业务服务 启动之后, 注册到 nacos, 然后 从 gateway 来获取该服务却报错, 没有找到 xxx服务 之前 记录了一个 todo, 今天 来梳理一下 主要是会涉及到我们关注的问题, 以及 服务的注册流程 不会大而全 nacos 服务实…

mysql基础笔记3

连接查询 &#xff08;1&#xff09;内连接 找同一个字段 select 表1字段1,。。。。表2 字段...... from 表1&#xff0c;表2 where 条件 表1.字段表2.字段 &#xff08;2&#xff09;外连接 &#xff08;1&#xff09;左外连接 左表中的所有数组 select section,logi…

设置 MYSQL 数据库编码为 utf8mb4

utf-8编码可能2个字节、3个字节、4个字节的字符&#xff0c;但是MySQL的utf8编码只支持3字节的数据&#xff0c;而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据&#xff0c;java程序中将报SQL异常&#xff1a; java.sql.SQLException: Inc…

canopen10.0_基于STM32F407实现CANopen通讯

1.通过使用STM32F407开发板,实现CANopen通讯控制英威腾电机。之前没有接触过CANopen,这篇文章记录一下移植CANopen中所参考的一些参考资料,以帮助小白快速了解并实现CANopen移植 2.CANopen入门: 1.1、 在进行移植时,需要对CAN及CANopen进行了解,本人所使用的是正点原子…

HCIA静态试验(12.30-31复习)

目标实现&#xff1a; 2、首先进行子网划分 基于192.168.1.0 24划分 ‘一共7个路由器需要7个网段还有7个主干网 192.168.1.0/24 ----用于骨干 192.168.1.32/27 ----R1环回 192.168.1.32/28 192.168.1.48/28 192.168.1.64/27 --- R2环回 192.168.1.64/28 192.168.1.80/28 …