1. 引言
分圆环(Cyclotomic Ring) 是代数数论中的一个重要概念,在格密码学(如 ML-KEM、ML-DSA)中经常出现。
简单理解:分圆环是由单位根构造出来的一种代数结构,可以把多项式按照特定规则进行加法和乘法。
2. 欧拉公式与单位根
e2πi=1e^{2\pi i}=1e2πi=1。
这里的 eee、iii、π\piπ 都是数学中的重要常数。理解这三个常数以及欧拉公式(Euler's Formula),就能明白为什么复数可以表示单位圆上的点,以及它们与分圆多项式、单位根之间的关系。
| 符号 | 名称 | 数值或定义 |
|---|---|---|
| eee | 自然常数(欧拉数) | e≈2.718281828459045e\approx2.718281828459045e≈2.718281828459045 |
| π\piπ | 圆周率 | π≈3.141592653589793\pi\approx3.141592653589793π≈3.141592653589793 |
| iii | 虚数单位 | i2=−1i^2=-1i2=−1,通常记作 i=−1i=\sqrt{-1}i=−1 |
需要注意,iii 不是实数,不能用实数小数表示。
它的乘方具有周期性:
i1=i,i2=−1,i3=−i,i4=1 i^1=i,\quad i^2=-1,\quad i^3=-i,\quad i^4=1 i1=i,i2=−1,i3=−i,i4=1
2.1 为什么 e2πi=1e^{2\pi i}=1e2πi=1?
关键是著名的欧拉公式(Euler's Formula):
eiθ=cosθ+isinθ \boxed{e^{i\theta}=\cos\theta+i\sin\theta} eiθ=cosθ+isinθ
其中 θ\thetaθ 是以弧度表示的实数角度。
这个公式将指数函数、三角函数和复数联系起来。
当:
θ=2π \theta=2\pi θ=2π
代入欧拉公式:
e2πi=cos(2π)+isin(2π) e^{2\pi i}=\cos(2\pi)+i\sin(2\pi) e2πi=cos(2π)+isin(2π)
因为:
cos(2π)=1,sin(2π)=0 \cos(2\pi)=1,\qquad \sin(2\pi)=0 cos(2π)=1,sin(2π)=0
所以:
e2πi=1+i×0 e^{2\pi i}=1+i\times0 e2πi=1+i×0
最终得到:
e2πi=1 \boxed{e^{2\pi i}=1} e2πi=1
2.2 为什么它与圆有关?

在复数平面上:
- 横轴表示实部。
- 纵轴表示虚部。
- eiθe^{i\theta}eiθ 表示单位圆上与正实轴夹角为 θ\thetaθ 的点。
从 1 出发,随着 θ\thetaθ 增大,eiθe^{i\theta}eiθ 沿单位圆逆时针旋转。
几个重要的角度:
| θ\thetaθ | 指数表达式 | 结果 |
|---|---|---|
| 000 | e0ie^{0i}e0i | 111 |
| π/2\pi/2π/2 | eπi/2e^{\pi i/2}eπi/2 | iii |
| π\piπ | eπie^{\pi i}eπi | −1-1−1 |
| 3π/23\pi/23π/2 | e3πi/2e^{3\pi i/2}e3πi/2 | −i-i−i |
| 2π2\pi2π | e2πie^{2\pi i}e2πi | 111 |
因此:
eiπ+1=0 \boxed{e^{i\pi}+1=0} eiπ+1=0
这就是著名的欧拉恒等式(Euler's Identity)。
2.3 与分圆多项式有什么关系?
本原四次单位根的意思是:一个数不断乘以自己,第一次得到 1 时,恰好乘了 4 次。
- 普通 nnn 次单位根 :只要求第 nnn 次幂等于 1。
- 本原 nnn 次单位根 :要求第 nnn 次幂是第一次等于 1。
如:
- −1-1−1 是四次单位根,因为 (−1)4=1(-1)^4=1(−1)4=1。
- −1-1−1 不是本原四次单位根 ,因为它在第 2 次幂时就得到了 1【因(−1)2=1(-1)^2=1(−1)2=1】。
ζn=e2πi/n \zeta_n=e^{2\pi i/n} ζn=e2πi/n
它表示单位圆上的一个本原 nnn 次单位根。
为什么?
首先:
ζnn=(e2πi/n)n=e2πi=1 \begin{aligned} \zeta_n^n &=\left(e^{2\pi i/n}\right)^n\\ &=e^{2\pi i}\\ &=1 \end{aligned} ζnn=(e2πi/n)n=e2πi=1
而且对于任意正整数 k<nk<nk<n,都有:
ζnk=e2πik/n≠1 \zeta_n^k=e^{2\pi i k/n}\ne1 ζnk=e2πik/n=1
因此,ζn\zeta_nζn 是本原 nnn 次单位根。
示例一: n=4n=4n=4
ζ4=e2πi/4=eπi/2=i \zeta_4=e^{2\pi i/4}=e^{\pi i/2}=i ζ4=e2πi/4=eπi/2=i
所以 iii 是一个本原四次单位根。
示例二: n=8n=8n=8
ζ8=e2πi/8=eπi/4 \zeta_8=e^{2\pi i/8}=e^{\pi i/4} ζ8=e2πi/8=eπi/4
利用欧拉公式:
ζ8=22+i22 \zeta_8=\frac{\sqrt2}{2}+i\frac{\sqrt2}{2} ζ8=22 +i22
它每乘一次自身,相当于在单位圆上旋转 45∘45^\circ45∘,经过 8 次才第一次回到 1。
2.4 小结
记住三个关键公式:
i2=−1eiθ=cosθ+isinθe2πi=1 \boxed{ \begin{aligned} i^2&=-1\\ e^{i\theta}&=\cos\theta+i\sin\theta\\ e^{2\pi i}&=1 \end{aligned} } i2eiθe2πi=−1=cosθ+isinθ=1
以及本原 nnn 次单位根的表达式:
ζn=e2πi/n \boxed{\zeta_n=e^{2\pi i/n}} ζn=e2πi/n
理解这些之后,再学习分圆多项式 Φn(x)\Phi_n(x)Φn(x)、分圆环和格密码学中的多项式环就容易多了。
3. 什么是分圆?
先看复数平面上的单位圆:
x2+y2=1 x^2+y^2=1 x2+y2=1
把圆周等分成 nnn 份,得到的复数点称为 nnn 次单位根,满足:
zn=1 z^n=1 zn=1
如,将单位圆四等分,得到四次单位根:

1,i,−1,−i 1,\quad i,\quad -1,\quad -i 1,i,−1,−i
它们均满足:
z4=1 z^4=1 z4=1
其中,iii 和 −i-i−i 是本原四次单位根,因为它们第一次通过正整数次幂得到 1 时,指数恰好是 4。
4. 什么是分圆多项式?
分圆多项式记为:
Φn(x) \Phi_n(x) Φn(x)
它的根恰好是所有本原 nnn 次单位根。
如:
| nnn | 分圆多项式 Φn(x)\Phi_n(x)Φn(x) |
|---|---|
| 1 | x−1x-1x−1 |
| 2 | x+1x+1x+1 |
| 3 | x2+x+1x^2+x+1x2+x+1 |
| 4 | x2+1x^2+1x2+1 |
| 8 | x4+1x^4+1x4+1 |
| 16 | x8+1x^8+1x8+1 |
特别地,对于 k≥0k\geq 0k≥0:
Φ2k+1(x)=x2k+1 \boxed{\Phi_{2^{k+1}}(x)=x^{2^k}+1} Φ2k+1(x)=x2k+1
这正是格密码学中经常使用的多项式形式。
这些分圆多项式是怎么得到的?为什么:
- Φ3(x)=x2+x+1\Phi_3(x)=x^2+x+1Φ3(x)=x2+x+1
- Φ4(x)=x2+1\Phi_4(x)=x^2+1Φ4(x)=x2+1
- Φ8(x)=x4+1\Phi_8(x)=x^4+1Φ8(x)=x4+1
而不是直接写成 xn−1x^n-1xn−1?
关键在于:分圆多项式只包含本原 nnn 次单位根,而 xn−1x^n-1xn−1 包含所有 nnn 次单位根。
4.1 分圆多项式的定义
第 nnn 个分圆多项式定义为:
Φn(x)=∏1≤k≤ngcd(k,n)=1(x−e2πik/n) \boxed{ \Phi_n(x)= \prod_{\substack{1\le k\le n\\\gcd(k,n)=1}} \left(x-e^{2\pi i k/n}\right) } Φn(x)=1≤k≤ngcd(k,n)=1∏(x−e2πik/n)
其中,e2πik/ne^{2\pi i k/n}e2πik/n 表示单位圆上的一个 nnn 次单位根。
只有当 kkk 和 nnn 互质时,对应的单位根才是本原 nnn 次单位根。
因此:
xn−1=∏d∣nΦd(x) \boxed{x^n-1=\prod_{d\mid n}\Phi_d(x)} xn−1=d∣n∏Φd(x)
意思是:xn−1x^n-1xn−1 可以分解为所有正因子 ddd 对应的分圆多项式之积。
4.2 逐个推导
n = 1 要求:
x1=1 x^1=1 x1=1
唯一的根为 111,所以:
Φ1(x)=x−1 \boxed{\Phi_1(x)=x-1} Φ1(x)=x−1
n = 2 :
x2−1=(x−1)(x+1) x^2-1=(x-1)(x+1) x2−1=(x−1)(x+1)
两个根分别是 111 和 −1-1−1。
但 11=11^1=111=1,所以 111 不是本原二次单位根。
而:
(−1)1=−1,(−1)2=1 (-1)^1=-1,\qquad (-1)^2=1 (−1)1=−1,(−1)2=1
因此,只有 −1-1−1 是本原二次单位根:
Φ2(x)=x+1 \boxed{\Phi_2(x)=x+1} Φ2(x)=x+1
n = 3:
首先:
x3−1=(x−1)(x2+x+1) x^3-1=(x-1)(x^2+x+1) x3−1=(x−1)(x2+x+1)
三个三次单位根分别为:
1,e2πi/3,e4πi/3 1,\quad e^{2\pi i/3},\quad e^{4\pi i/3} 1,e2πi/3,e4πi/3
其中,后两个是本原三次单位根。
所以去掉对应根 111 的因子:
Φ3(x)=x3−1x−1 \Phi_3(x)=\frac{x^3-1}{x-1} Φ3(x)=x−1x3−1
得到:
Φ3(x)=x2+x+1 \boxed{\Phi_3(x)=x^2+x+1} Φ3(x)=x2+x+1
n = 4:
x4−1=(x2−1)(x2+1) x^4-1=(x^2-1)(x^2+1) x4−1=(x2−1)(x2+1)
而:
x2−1=(x−1)(x+1) x^2-1=(x-1)(x+1) x2−1=(x−1)(x+1)
所以:
x4−1=(x−1)(x+1)(x2+1) x^4-1=(x-1)(x+1)(x^2+1) x4−1=(x−1)(x+1)(x2+1)
四次单位根是:
1,−1,i,−i 1,\quad -1,\quad i,\quad -i 1,−1,i,−i
其中:
- 111:第一次幂就等于 1。
- −1-1−1:第二次幂第一次等于 1。
- i,−ii,-ii,−i:第四次幂第一次等于 1。
因此,只有 i,−ii,-ii,−i 是本原四次单位根。
Φ4(x)=(x−i)(x+i) \Phi_4(x)=(x-i)(x+i) Φ4(x)=(x−i)(x+i)
得到:
Φ4(x)=x2+1 \boxed{\Phi_4(x)=x^2+1} Φ4(x)=x2+1
n = 8:
首先:
x8−1=(x4−1)(x4+1) x^8-1=(x^4-1)(x^4+1) x8−1=(x4−1)(x4+1)
其中,x4−1x^4-1x4−1 的根在第四次幂时就已经等于 1,因此不是本原八次单位根。
剩下的 x4+1x^4+1x4+1 的根满足:
x4=−1 x^4=-1 x4=−1
于是:
x8=1 x^8=1 x8=1
但它们在第 4 次幂时还没有得到 1。
由于 8 的真因子只有 1、2、4,这些根不可能在更小的正整数次幂时得到 1。
所以:
Φ8(x)=x4+1 \boxed{\Phi_8(x)=x^4+1} Φ8(x)=x4+1
n = 16:
同理:
x16−1=(x8−1)(x8+1) x^{16}-1=(x^8-1)(x^8+1) x16−1=(x8−1)(x8+1)
其中,x8−1x^8-1x8−1 包含所有阶数小于 16 的十六次单位根。
剩余的根满足:
x8=−1,x16=1 x^8=-1,\qquad x^{16}=1 x8=−1,x16=1
所以:
Φ16(x)=x8+1 \boxed{\Phi_{16}(x)=x^8+1} Φ16(x)=x8+1
4.3 总结规律
| nnn | 分圆多项式 Φn(x)\Phi_n(x)Φn(x) | 本原单位根个数 |
|---|---|---|
| 1 | x−1x-1x−1 | 1 |
| 2 | x+1x+1x+1 | 1 |
| 3 | x2+x+1x^2+x+1x2+x+1 | 2 |
| 4 | x2+1x^2+1x2+1 | 2 |
| 8 | x4+1x^4+1x4+1 | 4 |
| 16 | x8+1x^8+1x8+1 | 8 |
这里有一个重要规律:
当 n=2kn=2^kn=2k,且 k≥1k\ge1k≥1 时:
Φ2k(x)=x2k−1+1 \boxed{\Phi_{2^k}(x)=x^{2^{k-1}}+1} Φ2k(x)=x2k−1+1
如:
Φ512(x)=x256+1 \Phi_{512}(x)=x^{256}+1 Φ512(x)=x256+1
4.4 为什么格密码学经常使用 x256+1x^{256}+1x256+1?
现在可以把分圆多项式和 ML-KEM、ML-DSA 联系起来。
它们使用的多项式环是:
Rq=Zqx/(x256+1) \boxed{R_q=\mathbb Z_qx/(x^{256}+1)} Rq=Zqx/(x256+1)
其中:
x256+1=Φ512(x) x^{256}+1=\Phi_{512}(x) x256+1=Φ512(x)
也就是说,ML-KEM 和 ML-DSA 使用的是与第 512 个分圆多项式相关的模多项式环。
这里容易混淆:
- 多项式阶数是 256。
- 对应的分圆多项式编号是 512。
- 本原 512 次单位根的数量是 256。
因为欧拉函数满足:
φ(512)=256 \varphi(512)=256 φ(512)=256
而分圆多项式的阶数恰好等于欧拉函数:
degΦn(x)=φ(n) \boxed{\deg\Phi_n(x)=\varphi(n)} degΦn(x)=φ(n)
4.5 小结
最重要的结论:
Φ512(x)=x256+1 \boxed{\Phi_{512}(x)=x^{256}+1} Φ512(x)=x256+1
这就是为什么 ML-KEM、ML-DSA 中会出现 x256+1x^{256}+1x256+1,而不是 x256−1x^{256}-1x256−1。
它并非随意选择的多项式,而是具有特定代数结构的分圆多项式。这种结构可以用于构造高效的 Module-LWE 和 Module-SIS 密码系统。
5. 什么是分圆环?
给定本原 nnn 次单位根 ζn\zeta_nζn,分圆整数环通常写作:
R=Zζn≅Zx/(Φn(x)) \boxed{R=\mathbb Z\\zeta_n\cong\mathbb Zx/(\Phi_n(x))} R=Zζn≅Zx/(Φn(x))
其中:
- Zx\mathbb ZxZx:所有整数系数多项式组成的环。
- Φn(x)\Phi_n(x)Φn(x):第 nnn 个分圆多项式。
- (Φn(x))(\Phi_n(x))(Φn(x)):由 Φn(x)\Phi_n(x)Φn(x) 生成的理想。
- Zx/(Φn(x))\mathbb Zx/(\Phi_n(x))Zx/(Φn(x)):表示两个多项式只要相差 Φn(x)\Phi_n(x)Φn(x) 的整数系数多项式倍数,就视为同一个元素。
如:
R=Zx/(x4+1) R=\mathbb Zx/(x^4+1) R=Zx/(x4+1)
在这个环中:
x4=−1 x^4=-1 x4=−1
所以:
x5=−x,x8=1 x^5=-x,\qquad x^8=1 x5=−x,x8=1
这意味着,任意高阶多项式都可以约简成阶数小于 4 的形式:
a0+a1x+a2x2+a3x3 a_0+a_1x+a_2x^2+a_3x^3 a0+a1x+a2x2+a3x3
举个乘法例子,假设:
a(x)=1+x3,b(x)=1+x a(x)=1+x^3,\qquad b(x)=1+x a(x)=1+x3,b(x)=1+x
普通多项式相乘:
a(x)b(x)=1+x+x3+x4 a(x)b(x)=1+x+x^3+x^4 a(x)b(x)=1+x+x3+x4
但在 R=Zx/(x4+1)R=\mathbb Zx/(x^4+1)R=Zx/(x4+1) 中:
x4=−1 x^4=-1 x4=−1
因此:
a(x)b(x)=x+x3 \boxed{a(x)b(x)=x+x^3} a(x)b(x)=x+x3
这就是分圆环中的多项式乘法。
6. 分圆环与 ML-KEM、ML-DSA 有什么关系?
在实际格密码学中,还会把系数对 qqq 取模,得到:
Rq=Zqx/(x256+1) R_q=\mathbb Z_qx/(x^{256}+1) Rq=Zqx/(x256+1)
其中:
Zq=Z/qZ \mathbb Z_q=\mathbb Z/q\mathbb Z Zq=Z/qZ
| 算法 | 多项式环 | 模数 qqq |
|---|---|---|
| ML-KEM(Kyber) | Zqx/(x256+1)\mathbb Z_qx/(x^{256}+1)Zqx/(x256+1) | 3329 |
| ML-DSA(Dilithium) | Zqx/(x256+1)\mathbb Z_qx/(x^{256}+1)Zqx/(x256+1) | 8380417 |
两者都使用 256 阶的分圆多项式 x256+1x^{256}+1x256+1,但参数和密码学构造不同。
使用这类环有两个重要原因:
- 计算效率: 可以利用 NTT(数论变换)加速多项式乘法。
- 结构紧凑: 可以用较少的数据表示高维向量和矩阵运算。
不过,环结构也引入额外的代数性质,因此其安全性分析与普通 LWE/SIS 并不完全相同。
7. 分圆环与普通整数环有什么区别?
| 对比项 | 整数环 Z\mathbb ZZ | 分圆环 Zx/(x256+1)\mathbb Zx/(x^{256}+1)Zx/(x256+1) |
|---|---|---|
| 元素 | 整数 | 阶数小于 256 的整数系数多项式 |
| 加法 | 整数相加 | 对应系数相加 |
| 乘法 | 整数相乘 | 多项式相乘后按 x256=−1x^{256}=-1x256=−1 约简 |
| 结构 | 一维 | 可表示为 256 维整数格 |
| 密码学应用 | 普通整数运算 | Ring-LWE、Module-LWE、Module-SIS |
8. 总结
分圆环就是以分圆多项式为模构造的多项式环。
在 ML-KEM 和 ML-DSA 中,最值得记住的是:
Rq=Zqx/(x256+1) \boxed{R_q=\mathbb Z_qx/(x^{256}+1)} Rq=Zqx/(x256+1)
其中:
x256+1=Φ512(x) x^{256}+1=\Phi_{512}(x) x256+1=Φ512(x)
它让算法能够在 256 维多项式结构上进行高效的加法、乘法及格密码学运算。