1. Fields
很多密码学协议中的基础元素为名为fields的algebraic structure。
Fields为sets of objects (通常为numbers),其具有two associated binary operators
+
+
+和
×
\times
×,使得各种field axioms(公理) 成立。
实数
R
\mathbb{R}
R为具有无数元素的field。
Halo使用的是有限域,具有有限数量的元素。有限域可分为:
- 若 F \mathbb{F} F为有限域,则其包含 ∣ F ∣ = p k |\mathbb{F}|=p^k ∣F∣=pk个元素,其中整数 k ≥ 1 k\geq 1 k≥1, p p p为素数。
- 任意两个具有相同数量元素的有限域都是isomorphic的。特别地,所有的arithmetic in a prime field F p \mathbb{F}_p Fp 是 isomorphic to addition and multiplication of integers modulo p p p,即in Z p \mathbb{Z}_p Zp。这就是为什么我们经常把 p p p称为modulus。
定义field F q \mathbb{F}_q Fq,其中 q = p k q=p^k q=pk,其中prime p p p称为其characteristic。当 k > 1 k>1 k>1时,field F q \mathbb{F}_q Fq为a k k k-degree extension of the filed F p \mathbb{F}_p Fp。(类比于,复数 C = R ( i ) \mathbb{C}=\mathbb{R}(i) C=R(i)为实数的extension。)
但是,在Halo中不使用extension fields。 F p \mathbb{F}_p Fp是指a prime field,其具有prime p p p个元素,即 k = 1 k=1 k=1。
重点知识为:
- 在任意域中,都存在2个特殊的elements: 0 0 0 为additive identity; 1 1 1 为multiplicative identity。
- field element的最低位可用于表示其符号。如非零element a a a的最低位为 0 0 0,则 − a = p − a -a=p-a −a=p−a的最低位为 1 1 1,反之亦然。同时,也可以借助最低位来判断该element是否大于 ( p − 1 ) / 2 (p-1)/2 (p−1)/2。
有限域对于后续构建多项式和椭圆曲线很有用。椭圆曲线为examples of groups。
2. Groups
Groups比fields更简单更受限。
Groups仅有一个binary operator,且具有更少的公理。
Groups的identity表示为
1
1
1。
group中的任意非零元素具有倒数 b = a − 1 b=a^{-1} b=a−1,即有唯一的元素 b b b使得 a ⋅ b = 1 a\cdot b=1 a⋅b=1。
如, F p \mathbb{F}_p Fp的非零元素集形成a group,其中group operations为multiplication on the field。
可将group分别表示为加法或乘法形态:
- 乘法形态时,上面的 ⋅ \cdot ⋅对应为 × \times ×,identity为 1 1 1,倒数为 a − 1 a^{-1} a−1。
- 加法形态时,上面的 ⋅ \cdot ⋅对应为 + + +,identity为 0 0 0或 O \mathcal{O} O,倒数为 − a -a −a。
当采用加法形态时,非负数 k k k, [ k ] A = A + A + ⋯ + A [k]A=A+A+\cdots+A [k]A=A+A+⋯+A 称为“scalar multiplication”,采用的大写的字母来表示group elements变量。
当采用乘法形态时, a k = a × a × ⋯ × a a^k=a\times a\times \cdots \times a ak=a×a×⋯×a 称为“exponentiation”。
将使得 [ k ] g = a [k]g=a [k]g=a或 g k = a g^k=a gk=a成立的scalar k k k值为the “discrete logarithm” of a a a to base g g g。可将scalar值扩展至负数,即 [ − k ] A + [ k ] A = O [-k]A+[k]A=\mathcal{O} [−k]A+[k]A=O 或 a − k × a k = 1 a^{-k}\times a^k=1 a−k×ak=1。
对于finite group内的元素 a a a,使得 a k = 1 a^k=1 ak=1或 [ k ] a = O [k]a=\mathcal{O} [k]a=O成立的最小正整数 k k k值称为the order of an element a a a of the group。the order of the group是指group内的元素数。
Groups通常有a generating set,即基于该generating set可生成group中的任意元素,以乘法形态表示的话,生成方式为基于该generating set元素的product of powers。因此,若该generating set为 g 1 ⋯ k g_{1\cdots k} g1⋯k,基于 ∏ i = 1 k g i a i \prod_{i=1}^{k}g_i^{a_i} ∏i=1kgiai可生成该group中的任意元素。
若generating set中仅有一个元素—— g g g(不要求generating set的唯一性),则可称该group为cyclic的。即基于 g g g可生成该group,the order of g g g为the order of the group。
任意的finite cyclic group G \mathbb{G} G of order n n n 为 isomorphic to the integers modulo n n n (表示为 Z / n Z \mathbb{Z}/n\mathbb{Z} Z/nZ),使得:
- G \mathbb{G} G的operation ⋅ \cdot ⋅ 对应为 addition modulo n n n。
- G \mathbb{G} G中的identity对应为 0 0 0。
- generator g ∈ G g\in\mathbb{G} g∈G 对应为 1 1 1。
已知generator g g g,很容易根据 Z / n Z → G \mathbb{Z}/n\mathbb{Z}\rightarrow \mathbb{G} Z/nZ→G计算isomorphism,即 a → g a a\rightarrow g^a a→ga(加法形态表示为 a → [ a ] g a\rightarrow [a]g a→[a]g),但是计算 G → Z / n Z \mathbb{G}\rightarrow \mathbb{Z}/n\mathbb{Z} G→Z/nZ会很困难。
若finite group 的order n n n为prime的,则该group为cyclic,且每个non-identity element都是generator。
3. The multiplicative group of a finite field
采用 F p × \mathbb{F}_p^{\times} Fp×来表示multiplicative group over the set F p − { 0 } \mathbb{F}_p-\{0\} Fp−{0}。所谓multiplicative group是指 F p \mathbb{F}_p Fp中的group operation为multiplication。
根据费马小定理,对于任意的
a
a
a,有
a
p
≡
a
(
m
o
d
p
)
a^p\equiv a(\mod p)
ap≡a(modp) 。
因此
F
p
×
\mathbb{F}_p^{\times}
Fp×中对于任意的非零
a
a
a,其倒数运算为
a
−
1
=
a
p
−
2
a^{-1}=a^{p-2}
a−1=ap−2。
假设 α \alpha α为 F p × \mathbb{F}_p^{\times} Fp×的generator,其order为 p − 1 p-1 p−1 ( F p × \mathbb{F}_p^{\times} Fp×中的元素个数为 p − 1 p-1 p−1个)。因此,对于任意的 a ∈ F p × a\in\mathbb{F}_p^{\times} a∈Fp×,存在唯一的整数 i ∈ { 0 , p − 2 } i\in\{0,p-2\} i∈{0,p−2},使得 a = α i a=\alpha^i a=αi。
注意,对于 a , b ∈ F p × a,b\in\mathbb{F}_p^{\times} a,b∈Fp×,可将 a × b a\times b a×b理解为 α i × α j \alpha^i\times \alpha^j αi×αj,其中 a = α i , b = α j a=\alpha^i, b=\alpha^j a=αi,b=αj。而对于任意的 0 ≤ i , j < p − 1 0\leq i,j < p-1 0≤i,j<p−1,有 α i × α j = α i + j \alpha^i\times \alpha^j=\alpha^{i+j} αi×αj=αi+j。因此,非零值的乘法可理解为指数上的加法。可认为具有加法同态属性。
也可以从另一个维度来看
a
p
−
2
a^{p-2}
ap−2:
p
−
2
≡
−
1
(
m
o
d
p
−
1
)
p-2\equiv -1(\mod p-1)
p−2≡−1(modp−1)
因此
a
p
−
2
=
a
−
1
a^{p-2}=a^{-1}
ap−2=a−1。
4. Montgomery’s Trick
Montgomery’s trick,是以Peter Montgomery (RIP)命名的,用于同时计算多个group inversions。常用于计算 F p × \mathbb{F}_p^{\times} Fp×中的inversions, which are quite computationally expensive compared to multiplication。
假设需要计算3个非零值 a , b , c ∈ F p × a,b,c\in\mathbb{F}_p^{\times} a,b,c∈Fp×的倒数 1 a , 1 b , 1 c \frac{1}{a},\frac{1}{b},\frac{1}{c} a1,b1,c1,可改为计算:
- 1) x = a b x=ab x=ab
- 2) y = x c = a b c y=xc=abc y=xc=abc
- 3) z = y p − 2 = 1 a b c z=y^{p-2}=\frac{1}{abc} z=yp−2=abc1
- 4) 1 c = x z \frac{1}{c}=xz c1=xz
- 5) m = 1 a b = z c m=\frac{1}{ab}=zc m=ab1=zc
- 6) 1 b = m a \frac{1}{b}=ma b1=ma
- 7) 1 a = m b \frac{1}{a}=mb a1=mb
以上技术可推广为借助一次倒数运算来实现计算任意个数的倒数。
5. Multiplicative subgroups
A subgroup of a group G \mathbb{G} G with operation ⋅ \cdot ⋅, is a subset of elements of G \mathbb{G} G that also form a group under ⋅ \cdot ⋅.
若 α \alpha α 为a generator of the ( p − 1 ) (p-1) (p−1)-order multiplicative group F p × \mathbb{F}_p^{\times} Fp×,则该group具有composite order,根据中国余数定理可知,该group具有strict subgroups。如 p = 1 p=1 p=1,则 p − 1 = 5 ⋅ 2 p-1=5\cdot 2 p−1=5⋅2,从而必然有a generator β \beta β of the 5-order subgroup 以及 a generator γ \gamma γ of the 2-order subgroup。而 F p × \mathbb{F}_p^{\times} Fp×中的所有元素,都可以uniquely表示为 β i ⋅ γ j \beta^i\cdot \gamma^j βi⋅γj for some i ( m o d 5 ) i(\mod 5) i(mod5) and some j ( m o d 2 ) j(\mod 2) j(mod2)。
若有
a
=
β
i
⋅
γ
j
a=\beta^i\cdot \gamma^j
a=βi⋅γj,则有:
a
5
=
(
β
i
⋅
γ
j
)
5
=
β
i
⋅
5
⋅
γ
j
⋅
5
=
β
0
⋅
γ
j
⋅
5
=
γ
j
⋅
5
a^5=(\beta^i\cdot \gamma^j)^5=\beta^{i\cdot 5}\cdot \gamma^{j\cdot 5}=\beta^0\cdot \gamma^{j\cdot 5}=\gamma^{j\cdot 5}
a5=(βi⋅γj)5=βi⋅5⋅γj⋅5=β0⋅γj⋅5=γj⋅5
从而可effectively “killed” the 5-order subgroup component, producing a value in the 2-order subgroup。
根据Lagrange’s theorem (group theory) 可知:the order of any subgroup H \mathbb{H} H of a finite group G \mathbb{G} G divides the order of G \mathbb{G} G。即,the order of any subgroup of F p × \mathbb{F}_p^{\times} Fp× must divide p − 1 p-1 p−1。
像Halo2这样的PLONK-based proving system,更适于用fields that have a large number of multiplicative subgroups with a “smooth” distribution (which makes the performance cliffs smaller and more granular as circuit sizes increase)。
Halo2中采用的Pallas和Vesta curves,其prime order具有如下形式:
T
⋅
2
S
=
p
−
1
T\cdot 2^S=p-1
T⋅2S=p−1
其中
S
=
32
S=32
S=32,
T
T
T为odd(即
p
−
1
p-1
p−1具有32 lower zero-bits)。从而具有multiplicative subgroups of order
2
k
2^k
2k for all
k
≤
32
k\leq 32
k≤32。2-adic subgroups对efficient FFTs 友好,同时也可启用a wide variety of circuit sizes。
6. Square roots
在field
F
p
\mathbb{F}_p
Fp内,有刚好一半的非零元素是squares,剩下的另一半为non-squares或“quadratic non-residues”。原因在于:
假设
α
\alpha
α为generator,用于生成the 2-order multiplicative subgroup of
F
p
×
\mathbb{F}_p^{\times}
Fp× (因为
p
p
p为大于2的素数,因此
p
−
1
p-1
p−1可被2整除,有
p
−
1
=
2
t
p-1=2t
p−1=2t)。
假设
β
\beta
β为generator,用于生成the t-order multiplicative subgroup of
F
p
×
\mathbb{F}_p^{\times}
Fp×。
则任意元素
a
∈
F
p
×
a\in\mathbb{F}_p^{\times}
a∈Fp×都可uniquely表示为
α
i
⋅
β
j
\alpha^i\cdot \beta^j
αi⋅βj with
i
∈
Z
2
,
j
∈
Z
t
i\in\mathbb{Z}_2, j\in\mathbb{Z}_t
i∈Z2,j∈Zt。从而有一半的元素对应
i
=
0
i=0
i=0,另一半的元素对应
i
=
1
i=1
i=1。
6.1 k = 1 k=1 k=1场景
若有
p
≡
3
(
m
o
d
4
)
p\equiv 3(\mod 4)
p≡3(mod4),则
t
t
t为奇数(若
t
t
t为偶数,则
p
−
1
p-1
p−1应可被4整除,这将与
p
≡
3
(
m
o
d
4
)
p\equiv 3(\mod 4)
p≡3(mod4)自相矛盾。)。若
a
∈
F
p
×
a\in\mathbb{F}_p^{\times}
a∈Fp×为square的,则必须存在
b
=
α
i
⋅
β
j
b=\alpha^i\cdot \beta^j
b=αi⋅βj使得
b
2
=
a
b^2=a
b2=a,即意味着:
a
=
(
α
i
⋅
β
j
)
2
=
α
2
i
⋅
β
2
j
=
β
2
j
a=(\alpha^i\cdot \beta^j)^2=\alpha^{2i}\cdot \beta^{2j}=\beta^{2j}
a=(αi⋅βj)2=α2i⋅β2j=β2j
也就是说,该域中的所有squares都无法生成2-order multiplicative subgroup,另一半的元素可生成2-order subgroup。
也意味着所有的squares都可表示为
β
m
\beta^m
βm for some
m
m
m,而将其exponentiating by
2
−
1
(
m
o
d
t
)
2^{-1}(\mod t)
2−1(modt)即可求其平方根。
6.2 k ≥ 2 k\geq 2 k≥2场景
若有
p
≡
1
(
m
o
d
4
)
p\equiv 1(\mod 4)
p≡1(mod4),则有
p
−
1
=
2
k
⋅
t
p-1=2^k\cdot t
p−1=2k⋅t,其中
t
t
t为奇数,
k
≥
2
k\geq 2
k≥2。
假设
α
\alpha
α为generator,用于生成
2
k
2^k
2k-order multiplicative subgroup。
假设
β
\beta
β为generator,用于生成 odd
t
t
t-order multiplicative subgroup。
则任意元素
a
∈
F
p
×
a\in\mathbb{F}_p^{\times}
a∈Fp×都可uniquely表示为
α
i
⋅
β
j
\alpha^i\cdot \beta^j
αi⋅βj with
i
∈
Z
2
k
,
j
∈
Z
t
i\in\mathbb{Z}_{2^k}, j\in\mathbb{Z}_t
i∈Z2k,j∈Zt。
若
a
a
a为a square,则存在
b
=
a
b=\sqrt{a}
b=a,其中
b
=
α
i
′
⋅
β
j
′
b=\alpha^{i'}\cdot \beta^{j'}
b=αi′⋅βj′ with
i
′
∈
Z
2
k
,
j
′
∈
Z
t
i'\in\mathbb{Z}_{2^k}, j'\in\mathbb{Z}_t
i′∈Z2k,j′∈Zt。
意味着
a
=
b
2
=
α
2
i
′
⋅
β
2
j
′
a=b^2=\alpha^{2i'}\cdot \beta^{2j'}
a=b2=α2i′⋅β2j′,从而有
i
≡
2
i
′
(
m
o
d
2
k
)
,
j
≡
2
j
′
(
m
o
d
t
)
i\equiv 2i'(\mod 2^k), j\equiv 2j'(\mod t)
i≡2i′(mod2k),j≡2j′(modt),则要求
i
i
i必须为偶数。若
a
a
a为non square,则要求
i
i
i为奇数。从而有一般的元素为square。
为了求平方根,可:
- 1)先将
a
=
α
i
⋅
β
j
a=\alpha^i\cdot \beta^j
a=αi⋅βj power
t
t
t来“kill” the
t
t
t-order component:
a t = α i t ( m o d 2 k ) ⋅ β j t ( m o d t ) = α i t ( m o d 2 k ) a^t=\alpha^{it(\mod 2^k)}\cdot \beta^{jt(\mod t)}=\alpha^{it(\mod 2^k)} at=αit(mod2k)⋅βjt(modt)=αit(mod2k) - 2)再power
t
−
1
(
m
o
d
2
k
)
t^{-1}(\mod 2^k)
t−1(mod2k)来消除1)中exponentiation on the
2
k
2^k
2k-order component的影响:
( α i t ( m o d 2 k ) ) t − 1 ( m o d 2 k ) = α i (\alpha^{it(\mod 2^k)})^{t^{-1}(\mod 2^k)}=\alpha^i (αit(mod2k))t−1(mod2k)=αi
(因为 t t t为relative prime to 2 k 2^k 2k)。 - 3)根据 α i \alpha^i αi进行trivially handle 获得 α i ⋅ 2 − 1 \alpha^{i\cdot 2^{-1}} αi⋅2−1。
- 4)将
a
=
α
i
⋅
β
j
a=\alpha^i\cdot \beta^j
a=αi⋅βj power
2
k
2^k
2k来“kill” the
2
k
2^k
2k-order component:
a 2 k = α i 2 k ( m o d 2 k ) ⋅ β j 2 k ( m o d t ) = β j 2 k ( m o d t ) a^{2^k}=\alpha^{i2^k(\mod 2^k)}\cdot \beta^{j2^k(\mod t)}=\beta^{j2^k(\mod t)} a2k=αi2k(mod2k)⋅βj2k(modt)=βj2k(modt) - 5)power
2
−
k
(
m
o
d
t
)
2^{-k}(\mod t)
2−k(modt)来消除4)中exponentiation on the
t
t
t-order component的影响:
( β j 2 k ( m o d t ) ) 2 − k ( m o d t ) = β j (\beta^{j2^k(\mod t)})^{2^{-k}(\mod t)}=\beta^j (βj2k(modt))2−k(modt)=βj - 6)根据 β j \beta^j βj进行trivially handle 获得 β j ⋅ 2 − 1 \beta^{j\cdot 2^{-1}} βj⋅2−1。
- 7) α i ⋅ 2 − 1 ⋅ β j ⋅ 2 − 1 \alpha^{i\cdot 2^{-1}}\cdot \beta^{j\cdot 2^{-1}} αi⋅2−1⋅βj⋅2−1即为 a a a的平方根。
当
k
=
2
,
3
k=2,3
k=2,3时,有更简单的算法来将以上exponentiations合在一起提升计算效率。
当
k
k
k为其他值时,the only known way 为:manually extract
i
i
i by squaring until you obtain the identity for every single bit of
i
i
i。这即为Tonelli-Shanks square root algorithm。还有另一种使用quadratic extension fields来求平方根的算法,但是,除非prime值非常大,否则效率上来说不值得采用。
8. Roots of unity
若有
p
−
1
=
2
k
⋅
t
p-1=2^k\cdot t
p−1=2k⋅t,其中
t
t
t为奇数。
有generator
α
∈
F
p
×
\alpha\in\mathbb{F}_p^{\times}
α∈Fp×,可生成
2
k
2^k
2k-order subgroup。
令
n
=
2
k
n=2^k
n=2k,则elements
{
1
,
α
,
⋯
,
α
n
−
1
}
\{1,\alpha, \cdots,\alpha^{n-1}\}
{1,α,⋯,αn−1} 称为
n
n
n-th root of unity。
primitive root of unity w w w,若 w i ≠ 1 w^i\neq 1 wi=1 except when i ≡ 0 ( m o d n ) i\equiv 0(\mod n) i≡0(modn),则可称其为 n n n-th root of unity。
root of unity的属性有:
- 1)若
α
\alpha
α为
n
n
n-th root of unity,则有
α
n
−
1
=
0
\alpha^n-1=0
αn−1=0,若
α
≠
1
\alpha\neq 1
α=1,则有:
1 + α + α 2 + ⋯ + α n − 1 = 0 1+\alpha+\alpha^2+\cdots+\alpha^{n-1}=0 1+α+α2+⋯+αn−1=0 - 2)等价为,root of unity为如下方程的解:
X n − 1 = ( X − 1 ) ( X − α ) ( X − α 2 ) ⋯ ( X − α n − 1 ) X^n-1=(X-1)(X-\alpha)(X-\alpha^2)\cdots (X-\alpha^{n-1}) Xn−1=(X−1)(X−α)(X−α2)⋯(X−αn−1) - 3)
w
n
2
+
i
=
−
w
i
w^{\frac{n}{2}+i}=-w^i
w2n+i=−wi(“Negation lemma”)。证明过程为:
w n = 1 ⇒ w n − 1 = 0 ⇒ ( w n 2 + 1 ) ( w n 2 − 1 ) = 0 w^n=1\Rightarrow w^n-1=0 \Rightarrow (w^{\frac{n}{2}}+1)(w^{\frac{n}{2}}-1)=0 wn=1⇒wn−1=0⇒(w2n+1)(w2n−1)=0
由于 w w w的order为 n n n,因此 w n / 2 ≠ 1 w^{n/2}\neq 1 wn/2=1,从而有 w n / 2 = − 1 w^{n/2}=-1 wn/2=−1。 - 4)
(
w
n
2
+
i
)
2
=
(
w
i
)
2
(w^{\frac{n}{2}+i})^2=(w^i)^2
(w2n+i)2=(wi)2(“Halving lemma”)。证明过程为:
( w n 2 + i ) 2 = w n + 2 i = w n ⋅ w 2 i = ( w i ) 2 (w^{\frac{n}{2}+i})^2=w^{n+2i}=w^n\cdot w^{2i}=(w^i)^2 (w2n+i)2=wn+2i=wn⋅w2i=(wi)2
换句话说,若对 n n n-th roots of unity中的每个元素求平方,得到的结果仅有一半,即 n / 2 n/2 n/2个结果—— { ( w n i ) 2 } = { w n / 2 } \{(w_n^i)^2\}=\{w_{n/2}\} {(wni)2}={wn/2}(即,the n 2 \frac{n}{2} 2n-th root of unity)。这是一个two-to-one mapping between the elements and their squares。
参考资料
[1] Halo2 背景资料之Fields
[2] 哥伦比亚大学数论课件