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







![[阿里云] 10分钟带你玩转阿里云ECS和云盘 (大数据上云必备)](https://img-blog.csdnimg.cn/fcb82890e5204b3aaf42942643d1ea2d.png)











