本文解释了什么是有限域中的单位根(Roots of Unity),以及它们如何与乘法子群(multiplicative subgroups)相互交织。假设读者已经熟悉上一章关于循环群基本定理(Fundamental Theorem of Cyclic Groups)的内容。
该定理指出,给定一个阶为 q−1 的乘法群 Fq∗,当 k 整除 q−1 时,存在一个唯一的阶为 k 的子群。反之,如果 k 不能整除 q−1,则不存在阶为 k 的子群。
该定理还指出,如果 g 是 Fq∗ 的生成元,那么 gkq−1 将生成阶为 k 的子群。
在本文中,我们将证明该子群的所有元素就是所谓的 k 次单位根(k-th roots of unity),而生成元 ω 则是所谓的 k 次本原单位根(primitive k-th root of unity)。
本章的动机与目标
在有限域中计算 1 的平方根很容易:它们是与 1 和 −1 同余的数(分别是 1 和 q−1。请记住,在域 Fq 中,数字 −x 与 q−x 同余)。换句话说,1={1,q−1}。这个集合是方程 a2≡1 的解集,其中 a 是有限域中的一个元素。
但是,如果我们想计算 1 的立方根,或者更一般地,计算 1 的 k 次根,即 k1 呢?根据定义,k 次单位根是满足方程 ak≡1 的元素。但我们该如何找到它们呢?
我们可以逐个尝试所有元素——一种暴力求解的方法——但当域包含许多元素时,这是不可行的。幸运的是,有一种简单的方法可以找到所有的根。在有限域 Fq 中,k 次单位根恰好是阶为 k 的乘法子群中的元素。 该定义假设 k 整除 q−1.
用最坚定的语气来说:如果有限域中的一个元素 a 属于阶为 k 的乘法子群,那么它就是一个 k 次单位根,并且 ak≡1。反之,如果一个元素 a 是 k 次单位根(意味着 ak≡1),那么它就属于阶为 k 的乘法子群。
术语的等价性
这似乎只是我们在为同一个实体(乘法群中的元素)添加一个新术语,并指出将其进行 k 次方运算等于 1。
在某种意义上,是的,我们正在为同一个实体引入一个新术语:k 次单位根就是阶为 k 的乘法子群中的元素,反之亦然。通常,给同一个实体起两个名字会导致混淆,因此我们需要证明引入“单位根”这一术语是合理的。
当我们在最一般的意义上讨论阶为 k 的循环群时,我们并不能保证选取该群中的一个元素,并将二元运算符应用于该元素自身 k 次就会得到单位元,即 ak≡1,或者对于二元运算符 ⋆ 更一般地表示为:
ka⋆a⋆⋯⋆a=identity
对于一般的循环群,上述性质并不能保证成立,但对于有限域中的单位根,它是必然成立的。
因此,我们可以说单位根具有循环群基本定理所指出的它们应有的一切性质,并且它们还具有 ak≡1 的性质。
所以,读者大可放心,仅仅因为你理解了循环群基本定理,你实际上已经对有限群中的单位根有了相当的了解。由于有限域中的单位根构成一个循环子群,循环群基本定理自然适用于它们。
然而,ak≡1 这一额外保证解锁了高效 ZK(零知识)算法直接利用的更多性质。这些性质使我们能够创建高效的算法,例如数论变换(Number Theoretic Transform)和其他零知识证明(Zero-Knowledge Proof)算法,如 PLONK 和 ZK-STARKs。
我们将在后续章节中研究单位根的这些附加性质。本章的重点是定义和示例,旨在建立这样一个认知:当且仅当有限域中的元素 a 属于阶为 k 的乘法子群时,它才具有 ak≡1 的性质。
计算 k 次单位根等同于寻找阶为 k 的乘法子群
在关于循环群基本定理的文章中,我们学习了如何找到阶为 k 的乘法子群的所有元素。首先,我们从乘法群 Fq∗ 的生成元中获取该子群的生成元。然后,利用这个生成元,我们就可以找到阶为 k 的子群的所有元素。
因此,如果 k 整除 q−1,寻找 Fq 的 k 次单位根与寻找阶为 k 的乘法子群没有区别,而这正是我们已经掌握的方法。
我们在本章的目的是证明这种等价性——即当 k 整除 q−1 时,所有 k 次单位根组成的群与阶为 k 的乘法子群是等价的。
为此,我们需要证明以下两个命题:
- 阶为 k 的乘法子群中的每个元素 a 都满足 ak≡1。
- 假设 k 整除 q−1。那么,Fq∗ 中每个满足 ak≡1 的元素 a 都属于唯一一个阶为 k 的子群。
我们将通过例子来探讨这两个命题,以说明它们是成立的。由于正式的证明在数学上可能有些要求,我们将把部分证明推迟到附录中供感兴趣的读者阅读,尽管我们已经努力使证明尽可能通俗易懂。
1. 阶为 k 的子群中的每个元素 a 都满足 ak≡1
第一个命题表明,阶为 k 的乘法子群的所有元素都是 k 次单位根。
然而,这不足以确立所有 k 次单位根组成的群与阶为 k 的乘法子群之间的等价性(当 k 整除 q−1 时),因为它不能保证所有的 k 次单位根都属于该子群——这将在命题 2 中讨论。
我们将以该命题的证明作为本节的开始,然后通过例子展示该命题是成立的。
命题 1 的证明
回想一下关于循环群基本定理的文章,唯一一个阶为 k 的子群是由 ω=gkq−1 生成的,其中 g 是乘法群 Fq∗ 的生成元。我们将 ⟨ω⟩ 称为通过对 ω 进行连续的模 q 幂运算而生成的元素集合:
⟨ω⟩={ω0,ω1,ω2,…,ωk−1}.
令 ωm 为 ⟨ω⟩ 中的任意元素,其中 0≤m≤k−1。目标是证明 (ωm)k≡1。
下面的证明假设生成元具有 ωk≡1 的性质;关于该事实的证明请参见附录 A。
让我们如下计算 (ωm)k:
(ωm)k=(ωmk)=(ωkm)=(ωk)m≡(1)m≡1幂的乘方运算规则 指数的交换律提取指数基于附录 A 中的讨论:ωk≡11 的任意次方为 1.
因此,阶为 k 的子群中的每个元素,当进行 k 次方运算时,结果都等于 1。
命题 1 在 F7={0,1,2,3,4,5,6} 中的示例
在这个例子中,我们有 q−1=7−1=6。同时,元素 g=3 是乘法群 Fq∗={1,2,3,4,5,6} 的生成元。
本文不讨论如何寻找乘法群的生成元,但 galois 库提供了一种快速的方法。给定域 Fq,寻找生成元的一种方法是使用 primitive_element 属性,如下所示。
import galois
GF = galois.GF(7) # define the field
GF.primitive_element # GF(3, order=7)
阶为 3 的子群
因为 3 能整除 q−1=6,循环群基本定理保证了唯一一个阶为 3 的子群的存在。
这个子群由 3kq−1=336=32=9≡2(mod7) 生成。因此,
⟨2⟩={20,21,22}={1,2,4}.
现在,我们要验证 ⟨2⟩ 中的每个元素 a 都满足 a3≡1。下面是验证过程:
13≡1(mod7)23≡8≡1(mod7)43≡16⋅4≡2⋅4≡8≡1(mod7)
因此,元素 1,2 和 4 满足 a3≡1(mod7)。所以该条件成立。
阶为 2 的子群
因为 2 能整除 q−1=6,循环群基本定理保证了唯一一个阶为 2 的子群的存在。
这个子群由 3kq−1=326=33=27≡6(mod7) 生成。因此,
⟨6⟩={60,61}={1,6}.
现在,我们要验证 ⟨6⟩ 中的每个元素 a 都满足 a2≡1。
12≡1(mod7)62=36≡1(mod7)
因此,元素 1 和 6 满足 a2≡1(mod7)。所以该条件成立。
练习。 验证 F7∗ 中的每个元素 a 都满足 a6≡1。
2. 如果 k 整除 q−1,那么 Fq∗ 中满足 ak≡1 的每个元素 a 都属于唯一的一个阶为 k 的子群
这一命题断言,在 k 整除 q−1 的前提下,所有的 k 次单位根都属于阶为 k 的乘法子群。
在本节中,我们将通过几个例子来说明这一主张。附录 B 中为感兴趣的读者提供了完整的证明。
在继续之前,让我们考虑一下 k 不能整除 q−1 的情况。在这种情况下,循环群基本定理告诉我们不存在阶为 k 的子群,因此也就不存在任何等价关系。
在 F7={0,1,2,3,4,5,6} 中的示例
在这个例子中,我们有 q−1=7−1=6。同时,元素 g=3 是乘法群 Fq∗={1,2,3,4,5,6} 的生成元。
阶为 k=3 的子群
因为 3 能整除 q−1=6,所以存在一个唯一阶为 3 的子群。这个子群由 3kq−1=336=32=9≡2(mod7) 生成。因此,
⟨2⟩={20,21,22}={1,2,4}.
我们要验证 F7∗ 中每个满足 a3≡1 的元素 a 都属于 F7∗ 中这个唯一的阶为 k=3 的子群。让我们在 F7∗ 中找出所有这样的元素 a,如下所示:
13≡1(mod7)23≡8≡1(mod7)33≡9⋅3≡2⋅3≡6(mod7)43≡16⋅4≡2⋅4≡8≡1(mod7)53≡25⋅5≡4⋅5≡20≡6(mod7)63≡36⋅6≡1⋅6≡6(mod7).
元素 1,2 和 4 满足 a3≡1(mod7)。这三个元素正好是 F7∗ 中阶为 k=3 的子群的成员。因此,F7∗ 中满足 a3≡1 的每个元素 a 都属于唯一的阶为 k=3 的子群。
练习。 验证 F7∗ 中满足 a2≡1 的每个元素 a 都属于唯一阶为 k=2 的子群。
在 F17={0,1,2,…,16} 中的示例
在这个例子中,我们有 q−1=17−1=16。同时,元素 g=3 是乘法群 Fq∗={1,2,…,16} 的生成元,这可以通过 galois 库来验证:
GF = galois.GF(17) # define the field
GF.primitive_element # GF(3, order=17)
阶为 k=4 的子群
由于 4 能整除 q−1=16,存在一个唯一阶为 4 的子群。这个子群由 3kq−1=3416=34=81≡13(mod17) 生成。因此,
⟨13⟩={130,131,132,133}={1,13,16,4}.
我们要验证 F17∗ 中每个满足 a4≡1 的元素 a 都属于 F17∗ 中这个唯一的阶为 k=4 的子群。让我们在 F17∗ 中找出所有这样的元素 a,如下所示:
14=124=16≡134=81≡13≡144≡16⋅16≡(−1)⋅(−1)≡154≡25⋅25≡7⋅7≡49≡15≡164≡36⋅36≡2⋅2≡4≡174≡49⋅49≡15⋅15≡(−2)⋅(−2)≡4≡184≡(23)4=(24)3≡(−1)3≡−1≡16≡1(mod17)94=81⋅81≡13⋅13≡(−4)⋅(−4)≡16≡1104≡100⋅100≡15⋅15≡(−2)⋅(−2)≡4≡1114≡121⋅121≡2⋅2≡4≡1124≡144⋅144≡8⋅8≡13≡1134≡169⋅169≡16⋅16≡(−1)⋅(−1)≡1144≡(−3)4≡9⋅9≡13≡1154≡(−2)4≡16≡1164≡(−1)4≡1.
元素 1,4,13 和 16 满足 a4≡1(mod17)。这四个元素正好是 F17∗ 中阶为 k=4 的子群的成员。因此,F17∗ 中满足 a4≡1 的每个元素 a 都属于唯一阶为 k=4 的子群。
练习。 验证 F17∗ 中满足 a8≡1 的每个元素 a 都属于唯一阶为 k=8 的子群。
k 次本原单位根
k 次本原单位根是一种特殊的 k 次单位根:它是一个能生成所有其他 k 次单位根的 k 次单位根。
由于我们感兴趣的 k 次单位根组成的群与阶为 k 的子群相同,因此 k 次本原单位根正好就是该子群的生成元。
注意:在 k 不能整除 q−1 的情况下(考虑有限域 Fq),可能仍然存在 k 次单位根,但在这种情况下,不存在 k 次本原单位根。
因此,寻找 k 次本原单位根非常简单:这等同于寻找阶为 k 的子群的生成元,而循环群基本定理告诉了我们该如何做到这一点。
k 次本原单位根的正式定义是:它是阶数为 k 的 k 次单位根,其中元素 a 的阶数是指使 ar≡1 成立的最小正整数 r(大于零)。
例如,4 是 F7 中的 6 次单位根,因为 46≡1(mod7),但它不是 6 次本原单位根,因为存在一个低于 6 的幂能使它等于 1,具体来说就是 3,即 43≡1(mod7)。
k 次本原单位根的数量
正如阶为 k 的子群可以有不止一个生成元一样,k 次本原单位根也可以有不止一个。k 次本原单位根的数量与阶为 k 的子群的生成元数量相同。
k 次本原单位根(以及生成元)的数量由欧拉函数 ϕ(k) 给出。证明该事实超出了本文的范围。对于我们正在考虑的应用——数论变换(Number Theoretic Transform)——我们只需要一个 k 次本原单位根,假设我们知道 Fq∗ 的一个生成元,就可以利用基本定理来找到它。
在本章的剩余部分,我们将通过示例展示如何使用基本定理寻找 k 次本原单位根,进而找出给定 k 的所有 k 次单位根。
F17∗ 中的 4 次单位根示例
乘法群 F17∗ 的一个生成元是元素 3,可以通过使用 galois 库找到。
因此,阶为 4 的子群的生成元是 ω=3416=34≡13。
根据我们的讨论,这个生成元就是一个 4 次本原单位根。让我们使用 k 次本原单位根的定义来检验一下。我们需要证明:
- 元素 13 是 4 次单位根。这可以通过检验 134≡1(mod17) 看出。
- 元素 13 的阶数为 4。这意味着 4 是使得 13r≡1(mod17) 的最小正整数 r。我们将在下面进行检验:
131=13,132≡16,133≡13⋅16≡4,134≡16⋅16≡−1⋅−1≡1.(mod17)
因此,元素 13 是 4 次本原单位根,我们可以使用元素 13 来生成由所有 4 次单位根组成的子群,如下所示:
⟨ω⟩={ω0,ω1,ω2,ω3,ω4}={130,131,132,133}={1,13,16,4}.
F17∗ 中的 8 次单位根示例
因为 g=3 是乘法群 F17∗ 的生成元,所以阶为 8 的子群的生成元为 ω=3816=32≡9。
让我们来检验它也是一个 8 次本原单位根。我们需要检验:
- 元素 9 是 8 次单位根。这可以通过检验 98≡1(mod17) 看出。
- 元素 9 的阶数为 8。这意味着 8 是使得 9r≡1(mod17) 的最小正整数 r。我们将在下面进行检验:
91=9,92≡13,93≡9⋅13≡15,94≡13⋅13≡(−4)⋅(−4)≡16,(mod17)95≡9⋅16≡8,96≡9⋅8≡4,97≡9⋅4≡2,98≡9⋅2=18≡1.
因此,元素 9 是 8 次本原单位根,我们可以使用元素 9 来生成由所有 8 次单位根组成的子群,如下所示:
⟨ω⟩={ω0,ω1,ω2,ω3,ω4,ω5,ω6,ω7}={90,91,92,93,94,95,96,97}={1,9,13,15,16,8,4,2}.
练习。 在 F17∗ 中找到一个 2 次本原单位根以及所有 2 次单位根构成的子群。
结论与总结
我们需要一种高效的方法来寻找所有的 k 次单位根,这正是我们在本文中所研究的内容。总结来说,我们得出了以下结论:
- 如果有限域 Fq 中的元素 a 满足 ak≡1,则该元素是一个 k 次单位根。
- 如果 k 能整除 q−1,那么 Fq∗ 中包含所有 k 次单位根的子群就是由循环群基本定理所保证的那个唯一阶为 k 的子群。
- k 次本原单位根能生成包含所有 k 次单位根的子群。如果 g 是乘法群 Fq∗ 的生成元,且 k 整除 q−1,那么元素 ω=gkq−1 就是一个 k 次本原单位根。
附录 A
阶为 k 的子群的生成元 ω 满足**:ωk≡1**
设 g 为乘法群 Fq∗ 的生成元。回顾循环群基本定理,元素 ω=gkq−1 生成唯一阶为 k 的子群。我们的目的是证明 ωk≡1。
证明。 费马小定理(Fermat’s Little Theorem)指出,如果 q 是一个质数,那么对于任意整数 g:
gq≡g(modq).
例如,如果 g=2 且 q=7,则 27≡2(mod7)。
如果 g 不能被 q 整除,我们可以在上述等式两边同除以 g。这表明费马小定理等价于以下命题:
gq−1≡1(modq).
我们现在如下计算 ωk:
ωk=(gkq−1)k=gq−1≡1(modq)根据 ω 的定义化简指数应用费马小定理
附录 B
如果 a∈Fq∗ 且 ak≡1,则 a 属于唯一的阶为 k 的循环子群。
设 g 为 Fq∗ 的生成元。这等同于说 g 是一个 (q−1) 次单位根。
设 ω=gkq−1 为阶为 k 的乘法子群的生成元(ω=gkq−1 直接来源于循环群基本定理)。
如果 a∈Fq∗ 且 ak≡1,那么我们必须证明存在一个整数 s 使得 ωs=a。ωs≡a 中整数 s 的存在证明了 a 可以由 ω 生成,因此属于唯一的阶为 k 的子群。
为了找到这样的 s,我们将把 ω 替换为 gkq−1,把 a 替换为 gm,从而将 ωs=a 转化为:
(gkq−1)s=?gm
我们能找出一个使该等式成立的 s 吗?如果我们策略性地选择一个 s,使得指数 kq−1 被抵消并剩下 m,我们就会得到:
s=q−1mk
将 s=q−1mk 代入方程 (gkq−1)s=?gm 的左边,我们得到
(gkq−1)(q−1mk)
我们可以看到 q−1 和 k 两项被抵消,剩下 gm。
gkq−1q−1mk⟹gm
我们可以将最初的定义 gkq−1=ω、q−1mk=s 和 gm=a 替换回来,可以看到
因此,如果 ak≡1,那么确实存在一个 s 使得 ωs=a。这里的 s 简单来说就是
s=q−1mk
其中 m 是 gm=a 的解,k 是子群的阶,q 是有限域的模数。
然而,我们仍必须证明 s 是一个整数,因为通过将 ω 提升至分数次幂而生成的值,并不符合由 ω 生成的子群成员的资格。
证明 s 是整数
为了证明 q−1mk 是整数,我们需要证明用 mk 除以 q−1 没有余数。
当我们执行除法时,我们应该得到商 n 和余数 r。我们要证明 r 必然为 0。
q−1mk=n+r
余数不能大于除数(例如,511 的余数不能为 5 或更大),所以我们还有以下条件:
0≤r<q−1
通过将格式从 被除数 / 除数 = 商 + 余数 转换为 被除数 = 商 ⋅ 除数 + 余数,我们可以分离出 (q−1)mk=n+r 中的 mk。(为了说明这种重写,请考虑 6/4=1 余 2 可以写成 6 = 4⋅1 + 2)。重写后的形式如下:
mk=n⋅(q−1)+r其中 0≤r<q−1
为了证明 r=0,我们将暂时把 mk=n⋅(q−1)+r 放在一边,先推导 mk 的另一个性质。
事实: gmk≡1
gmk≡1 可以从以下事实中推导出来:
- ak≡1
- a=gm
因此,通过代入可得 (gm)k≡1,并且根据幂的乘方规则可得 gmk≡1。
将 mk=n⋅(q−1)+r 代入 gmk≡1
我们现在有足够的工具来证明 mk=n⋅(q−1)+r 中的余数 r 为零。提醒读者,gq−1≡1 因为 g 是一个 (q−1) 次本原单位根。
我们现在将证明,使用以下定义
- gmk≡1
- mk=n⋅(q−1)+r
- gq−1≡1
足以证明 gmk≡gr:
gmk=gn⋅(q−1)+r=gn⋅(q−1)⋅gr=(gq−1)n⋅gr≡1⋅gr=gr代入同底数幂乘法规则幂的乘方规则因为 gq−1≡1
由于 gmk≡gr 和 gmk≡1,我们可以得出
因为 g 是 (q−1) 次本原单位根,所以 r 只有两种解:
- r=0
- r≡q−1
回想一下 r 被定义为以下等式的解
q−1mk=n+r其中 0≤r<q−1
我们知道,任何有效的除法 q−1mk 都不会产生 q−1 或更高的余数 r,具体来说,余数必须在 0≤r<q−1 的范围内。对余数的这一范围限制意味着 r=q−1。
因此,排除了 r=q−1 的可能性,gr≡1 的唯一解就是 r=0(即 g0≡1)。
因为 r=0,所以 mk 除以 q−1 的结果是一个整数。
最后,由于 s 的定义为
s=q−1mk
s 是一个整数。