分圆环(Cyclotomic Ring)入门

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,但参数和密码学构造不同。

使用这类环有两个重要原因:

  1. 计算效率: 可以利用 NTT(数论变换)加速多项式乘法。
  2. 结构紧凑: 可以用较少的数据表示高维向量和矩阵运算。

不过,环结构也引入额外的代数性质,因此其安全性分析与普通 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 维多项式结构上进行高效的加法、乘法及格密码学运算。

相关推荐
小龙1 年前
【基础理论】位置向量|位置编码学习笔记
大模型·transformer·基础理论·位置编码
mutourend3 年前
OpenSSL 3.2.0新增Argon2支持——防GPU暴力攻击
基础理论
mutourend3 年前
FRI及相关SNARKs的Fiat-Shamir安全
基础理论
mutourend3 年前
基于ASCON的AEAD
基础理论
mutourend3 年前
Hard Problems简介
基础理论
mutourend3 年前
GPU/CPU友好的模乘算法:Multi-Precision Fast Modular Multiplication
基础理论