近年来,密码学,特别是零知识证明(ZK证明)领域的进展,极大地推动了对小素数域(≤ 64位素数)的兴趣,因为它们在高效算术和实现方面具有良好的特性。著名的例子包括:
这些素数表达式如下:
p M 31 = 2 31 − 1 (1.1) p_{M31} = 2^{31} - 1 \tag{1.1} pM31=231−1(1.1)
p G = 2 64 − 2 32 + 1 (1.2) p_G = 2^{64} - 2^{32} + 1 \tag{1.2} pG=264−232+1(1.2)
p B B = 2 31 − 2 27 + 1 (1.3) p_{BB} = 2^{31} - 2^{27} + 1 \tag{1.3} pBB=231−227+1(1.3)
p K B = 2 31 − 2 24 + 1 (1.4) p_{KB} = 2^{31} - 2^{24} + 1 \tag{1.4} pKB=231−224+1(1.4)
它们都属于Solinas素数家族。这些素数因其在性能和结构上的平衡而特别具有吸引力,提供了以下主要优势:
虽然这些素数已经得到了广泛的研究和应用,但在选择平衡这些属性的小素数方面仍然有创新的空间。
Ingonyama团队Tomer Solberg 2024年11月论文 《New Bears at the Bear Market: Introducing Polar Bear and Teddy Bear Prime Fields》中提出了两种新的素数:
尽管它们在零知识社区中至今鲜有关注,但在2-adicity、小巧性和模算术效率方面展现出强大的潜力,可能会与现有选项竞争或超越它们。
称 p P B = 2 40 − 2 32 + 1 p_{PB} = 2^{40} - 2^{32} + 1 pPB=240−232+1 为Polar Bear素数。它具有高达 2 32 2^{32} 232 的2-adicity,并且仅占用40位(在实现中可能是48位)。
关于算术运算效率的建议,提出了以下的模约简过程:
给定一个数 r r r ,假设它是通过乘两个40位数得到的(因此最大为80位),将它拆分为五个16位的部分:
r = a + 2 16 b + 2 32 c + 2 48 d + 2 64 e (2.1) r = a + 2^{16}b + 2^{32}c + 2^{48}d + 2^{64}e \tag{2.1} r=a+216b+232c+248d+264e(2.1)
注意:
2 48 ≡ 2 8 ( 2 32 − 1 ) ≡ 2 32 − 2 8 − 1 ( mod p P B ) (2.2) 2^{48} \equiv 2^{8}(2^{32} - 1) \equiv 2^{32} - 2^{8} - 1 \ (\text{mod} \ p_{PB}) \tag{2.2} 248≡28(232−1)≡232−28−1 (mod pPB)(2.2)
2 64 ≡ 2 32 − 2 24 − 2 16 − 2 8 − 1 ( mod p P B ) (2.3) 2^{64} \equiv 2^{32} - 2^{24} - 2^{16} - 2^{8} - 1 \ (\text{mod} \ p_{PB}) \tag{2.3} 264≡232−224−216−28−1 (mod pPB)(2.3)
因此可写为:
r = a + 2 8 ( − d − e ) + 2 16 ( b − e ) + 2 24 ( − e ) + 2 32 ( c + d + e ) (2.4) r = a + 2^{8}(-d - e) + 2^{16}(b - e) + 2^{24}(-e) + 2^{32}(c + d + e) \tag{2.4} r=a+28(−d−e)+216(b−e)+224(−e)+232(c+d+e)(2.4)
通过将 c c c 、 d d d 、 e e e 拆分为8位 sublimbs,可以进一步压缩表达式,使得 x = 2 8 x h + x l x = 2^8 x_h + x_l x=28xh+xl ,其中 x = c , d , e x = c, d, e x=c,d,e ,并定义一个8位rotation x r = 2 8 x l + x h x_r = 2^8 x_l + x_h xr=28xl+xh 。然后可写成:
r = ( a − c h − d r − e r ) + 2 16 ( b − e − d h − e r ) + 2 32 ( c l + d l + e l − e h ) (2.5) r = (a - c_h - d_r - e_r) + 2^{16}(b - e - d_h - e_r) + 2^{32}(c_l + d_l + e_l - e_h) \tag{2.5} r=(a−ch−dr−er)+216(b−e−dh−er)+232(cl+dl+el−eh)(2.5)
= r 0 + r 1 2 16 + r 2 2 32 (2.6) = r_0 + r_1 2^{16} + r_2 2^{32} \tag{2.6} =r0+r1216+r2232(2.6)
当然,加法和减法在进行时必须考虑进位,以确保 r 0 r_0 r0 和 r 1 r_1 r1 在区间 [ 2 16 2^{16} 216 ] 内,而 r 2 r_2 r2 在区间 [ 2 8 2^8 28 ] 内。最后,需要执行条件减法,确保结果确实在 [ p P B p_{PB} pPB ] 区间内。
注意:
称 p T B = 2 32 − 2 30 + 1 p_{TB} = 2^{32} - 2^{30} + 1 pTB=232−230+1 为Teddy Bear素数。也可以写成 p T B = 2 31 + 2 30 + 1 = 3 ⋅ 2 30 + 1 p_{TB} = 2^{31} + 2^{30} + 1 = 3 \cdot 2^{30} + 1 pTB=231+230+1=3⋅230+1 。该素数在Hab"ock等人2023年6月论文《Reed-Solomon codes over the circle group》的研究中有所提及,但未能找到其他的提及或应用。很容易看出,这个素数与Baby Bear类似,只是具有更高的2-adicity。
对于高效的域操作,提出了一种新的表示法:
在这种表示下的模乘法可以按如下方式进行。给定两个数 x , y ∈ F p T B ∖ { − 1 } x, y \in F_{p_{TB}} \setminus \{-1\} x,y∈FpTB∖{−1} (当然,乘以 -1 的数可以通过简单地从 p T B p_{TB} pTB 中减去它来完成),可以写成:
r = x y = 3 ⋅ ( 3 x 1 y 1 ) + 3 ⋅ ( x 0 y 1 + x 1 y 0 ) + x 0 y 0 (3.1) r = xy = 3 \cdot (3x_1y_1) + 3 \cdot (x_0y_1 + x_1y_0) + x_0y_0 \tag{3.1} r=xy=3⋅(3x1y1)+3⋅(x0y1+x1y0)+x0y0(3.1)
注意:
注意:
[1] Ingonyama团队Tomer Solberg 2024年11月论文 《New Bears at the Bear Market: Introducing Polar Bear and Teddy Bear Prime Fields》