文章目录
- 格的基本定义
- 格的基本区域
- 格的行列式
- 致谢
格的基本定义
定义1 给定 n n n维实数空间 R n \mathbb{R}^n Rn中的一组线性无关向量 B = { b 1 , … , b n } ⊂ R n \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} \subset \mathbb{R}^n B={b1,…,bn}⊂Rn,其整数系数线性组合构成的集合被称为格(Lattice),即 L = ∑ i = 1 n b i ⋅ Z = { B x : x ∈ Z n } \mathcal{L} = \sum^n_{i=1} \bm{b}_i \cdot \mathbb{Z} = \{ \bm{B} \bm{x} : \bm{x} \in \mathbb{Z}^n \} L=∑i=1nbi⋅Z={Bx:x∈Zn}。
定义中,冒号 : : :有时也写成竖号 ∣ | ∣,表示满足(subject to,s.t.)的意思; B = { b 1 , … b n } \bm{B} = \{ \bm{b}_1, \dots \bm{b}_n \} B={b1,…bn}被称为格基。
如下图所示,同一个格 L \mathcal{L} L可能有不同格基,如 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,…,bn}或 C = { c 1 , … , c n } \bm{C} = \{ \bm{c}_1, \dots, \bm{c}_n \} C={c1,…,cn},即 L = ∑ i = 1 n b i ⋅ Z = ∑ i = 1 n ⋅ Z \mathcal{L} = \sum^n_{i=1} \bm{b}_i \cdot \mathbb{Z} = \sum^n_{i=1} \cdot \mathbb{Z} L=∑i=1nbi⋅Z=∑i=1n⋅Z。
为了区分格基以方便阅读,有时会特地注明 L ( B ) \mathcal{L}(\bm{B}) L(B)或 L ( C ) \mathcal{L}(\bm{C}) L(C)。
对 b 1 , … , n ∈ R m \bm{b}_1, \dots, \bm{n} \in \mathbb{R}^m b1,…,n∈Rm,若 m = n m=n m=n,则 L = L ( B ) \mathcal{L} = \mathcal{L}(\bm{B}) L=L(B)被称为满秩格。在格密码中,一般研究的是满秩格。
也可以不用基向量表示格,而把格看成欧式空间上点集的离散子群。群这个概念在现代密码学中很重要。很多密码方案的设计都涉及到群这个工具。从这个角度出发,可以更好地把握格密码学习的切入点。
定义2 格(Lattice)是 R n \mathbb{R}^n Rn的满足离散性质的加法子群。
群的完整定义具体可以参考Introduction to Modern Cryptography这本书,这本经典教材有一门公开课。
密码学原理《Introduction to modern Cryptography》_哔哩哔哩_bilibili
简而言之,群是一个集合,在该集合上有一种二元运算,二元运算满足封闭性和结合律、且存在单位元和逆元,若再满足交换律则称为阿尔贝群。易证 R n \mathbb{R}^n Rn是加法群, L \mathcal{L} L是 R n \mathbb{R}^n Rn的子群而且是离散的。
格的基本区域
定义3 对格基 B = { b 1 , … b n } \bm{B} = \{ \bm{b}_1, \dots \bm{b}_n \} B={b1,…bn},所有在 [ 0 , 1 ) n [0, 1)^n [0,1)n中的实数系数组合生成的空间称为格的基本区域,即 P ( B ) = ∑ i b i ⋅ [ 0 , 1 ) \mathcal{P}(\bm{B}) = \sum_i \bm{b}_i \cdot [0, 1) P(B)=∑ibi⋅[0,1)或 P ( B ) = { B ⋅ a ∣ a ∈ R n , 0 ≤ a i ≤ 1 } \mathcal{P}(\bm{B}) = \{ \bm{B} \cdot \bm{a} | \bm{a} \in \mathbb{R}^n, 0 \leq a_i \leq 1 \} P(B)={B⋅a∣a∈Rn,0≤ai≤1}。
格的基本区域算是一个基本量。
这个定义中的公式有点难以理解。以图2为例,假如 a = ( 0.2 , 0.33 ) \bm{a} = (0.2, 0.33) a=(0.2,0.33),则可得到蓝色向量;取 a \bm{a} a的所有可能值,可获得所有可能的蓝色向量,所有可能的蓝色向量叠加起来构成的区域即格的基本区域。
换个说法,所有基向量张成的平行多面体即格的基本区域。平行多面体有点类似机器学习里的超平面,超过三维时难以想象它长什么样子。平行多面体里的“平行”指的是几何体的每个面都有与之相对平行的一个面。
定理1 假设格 L \mathcal{L} L的秩为 n n n,对 L \mathcal{L} L上的一组线性无关向量 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,…,bn},当且仅当 P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)∩L={0}时, B \bm{B} B是 L \mathcal{L} L的格基。该定理被称为格基判定定理。
证明: 分为两步走,首先证明必要性,再证明充分性。
(1)必要性:当
B
\bm{B}
B是
L
\mathcal{L}
L的格基时,
P
(
B
)
∩
L
=
{
0
}
\mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \}
P(B)∩L={0}。
L
\mathcal{L}
L的格点由
B
\bm{B}
B的整数系数组合形成,而
P
(
B
)
\mathcal{P}(\bm{B})
P(B)则由
B
\bm{B}
B的小于1的实数系数组合形成,易知两者交集仅有原点
0
\bm{0}
0。
(2)充分性:当
P
(
B
)
∩
L
=
{
0
}
\mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \}
P(B)∩L={0}时,
B
\bm{B}
B是
L
\mathcal{L}
L的格基。
由于
B
\bm{B}
B在
L
\mathcal{L}
L上,故存在
r
∈
R
n
\bm{r} \in \mathbb{R}^n
r∈Rn使得
∑
b
i
⋅
r
i
\sum \bm{b}_i \cdot r_i
∑bi⋅ri也在格上。以下图为例,选取的
r
\bm{r}
r可以是
(
0.5
,
0.5
)
(0.5, 0.5)
(0.5,0.5)。
此外,由于
B
\bm{B}
B在
L
\mathcal{L}
L上,
B
\bm{B}
B是某组格基乘以对应的整数系数向量,故
∑
b
i
⋅
⌊
r
i
⌋
\sum \bm{b}_i \cdot \lfloor r_i \rfloor
∑bi⋅⌊ri⌋也在格上。此处
⌊
⋅
⌋
\lfloor \cdot \rfloor
⌊⋅⌋是向下取整符号。由格的二元运算封闭性可得,
∑
b
i
⋅
(
r
i
−
⌊
r
i
⌋
)
\sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor)
∑bi⋅(ri−⌊ri⌋)也在格上。
由于 0 ≤ r i − ⌊ r i ⌋ < 1 0 \leq r_i - \lfloor r_i \rfloor <1 0≤ri−⌊ri⌋<1,故 ∑ b i ⋅ ( r i − ⌊ r i ⌋ ) \sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor) ∑bi⋅(ri−⌊ri⌋)在 P ( B ) \mathcal{P}(\bm{B}) P(B)中。
综上, ∑ b i ⋅ ( r i − ⌊ r i ⌋ ) \sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor) ∑bi⋅(ri−⌊ri⌋)是 L \mathcal{L} L和 P ( B ) \mathcal{P}(\bm{B}) P(B)的交集点。由于 P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)∩L={0},可得 r i = ⌊ r i ⌋ r_i = \lfloor r_i \rfloor ri=⌊ri⌋,即它必然是整数。
证毕。
用定理1可以判断一组线性无关向量是否为格基,以下图为例。对于格 Z 2 \mathbb{Z}^2 Z2,图(a)和图(b)都是格基,而图©由于 P ( B ) \mathcal{P}(\bm{B}) P(B)包含非零格点 ( 1 , 0 ) (1, 0) (1,0)故不是格基,图(d)由于 P ( B ) \mathcal{P}(\bm{B}) P(B)不包含格点 ( 0 , 0 ) (0, 0) (0,0)故也不是格基。
格的行列式
定义4 基本区域 P \mathcal{P} P的体积称为格的行列式,即 d e t ( L ) = v o l ( P ) \mathrm{det}(\mathcal{L}) = \mathrm{vol}(\mathcal{P}) det(L)=vol(P)。
体积这个词有点抽象,一维空间里指长度,二维空间里指面积,三维及以上等多维空间里指体积。下文链接给出一个示例说明为何行列式就是体积。
Bat特白:行列式就是体积/面积?——(一)
不同的格基定义了不同的基本区域,然而所有基本区域的体积均一样。以下图为例,蓝色区域和黄色区域的体积是一样的。换而言之,对于 L = L ( B ) = L ( C ) \mathcal{L} = \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L=L(B)=L(C),有 v o l ( P ( B ) ) = v o l ( P ( C ) ) \mathrm{vol}(\mathcal{P}(\bm{B})) = \mathrm{vol}(\mathcal{P}(\bm{C})) vol(P(B))=vol(P(C))。
行列式不是某一组基向量的性质,而是格本身的性质,即格的不变量。为了证明这个关系,接下来先介绍矩阵相乘行列式和不同格基之间的关系。
矩阵相乘的物理意义是将一个坐标系中的点映射到另一个坐标系中去。假设存在两个矩阵 M 1 \bm{M}_1 M1和 M 2 \bm{M}_2 M2,有 d e t ( M 1 M 2 ) = d e t ( M 1 ) d e t ( M 2 ) \mathrm{det}(\bm{M}_1 \bm{M}_2) = \mathrm{det}(\bm{M}_1) \mathrm{det}(\bm{M}_2) det(M1M2)=det(M1)det(M2)。
怎么证明行列式乘法定理:|AB|=|A||B|?
简而言之, d e t ( M 2 ) \mathrm{det}(\bm{M}_2) det(M2)求出矩阵 M 2 \bm{M}_2 M2包含多少个正交基基本区域, d e t ( M 1 ) \mathrm{det}(\bm{M}_1) det(M1)求出正交基基本区域经过 M 1 \bm{M}_1 M1变换后的体积,二者相乘得到矩阵 M 1 M 2 \bm{M}_1 \bm{M}_2 M1M2的体积。
定理2 对于两组不同的格基 B \bm{B} B和 C \bm{C} C,当且仅当存在幺模矩阵 U \bm{U} U使得 C = U B \bm{C} = \bm{UB} C=UB时, B \bm{B} B和 C \bm{C} C对应的格一样,即 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)。
证明: 分为两步走,先证明必要性,再证明充分性。
(1)必要性:若
L
(
B
)
=
L
(
C
)
\mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C})
L(B)=L(C),则
C
=
U
B
\bm{C} = \bm{UB}
C=UB且
U
\bm{U}
U是幺模矩阵。
易知存在矩阵 U \bm{U} U和 V \bm{V} V使得 C = U B \bm{C} = \bm{UB} C=UB和 B = V C \bm{B} = \bm{VC} B=VC,有 C = U V C \bm{C} = \bm{UVC} C=UVC, U V = I \bm{UV} = \bm{I} UV=I。
进一步有 d e t ( I ) = d e t ( U ) d e t ( V ) = 1 \mathrm{det}(\bm{I}) =\mathrm{det}(\bm{U}) \mathrm{det}(\bm{V})=1 det(I)=det(U)det(V)=1。
注意,由于 C ∈ L \bm{C} \in \mathcal{L} C∈L是格基,它在格上,由定义1可知, U \bm{U} U是整数系数生成的矩阵;同理, V \bm{V} V也是整数矩阵。因此,有 d e t ( U ) = d e t ( V ) = ± 1 \mathrm{det}(\bm{U})=\mathrm{det}(\bm{V})=\pm 1 det(U)=det(V)=±1,即 U \bm{U} U和 V \bm{V} V都是幺模矩阵。
(2)充分性:若 C = U B \bm{C} = \bm{UB} C=UB且 U \bm{U} U是幺模矩阵,则 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)。
注意幺模矩阵是整数矩阵,易知 L ( C ) = ∑ c i ⋅ Z = ∑ b j ⋅ Z ⋅ Z ⊆ L ( B ) \mathcal{L}(\bm{C}) = \sum \bm{c}_i \cdot \mathbb{Z} = \sum b_j \cdot \mathbb{Z} \cdot \mathbb{Z} \subseteq \mathcal{L}(\bm{B}) L(C)=∑ci⋅Z=∑bj⋅Z⋅Z⊆L(B);同理,有 L ( B ) ⊆ L ( C ) \mathcal{L}(\bm{B}) \subseteq \mathcal{L}(\bm{C}) L(B)⊆L(C)。综上,有 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)。
证毕。
推论1 对于 L = L ( B ) = L ( C ) \mathcal{L} = \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L=L(B)=L(C),有 v o l ( P ( B ) ) = v o l ( P ( C ) ) \mathrm{vol}(\mathcal{P}(\bm{B})) = \mathrm{vol}(\mathcal{P}(\bm{C})) vol(P(B))=vol(P(C))。
证明: 根据定理2,有 C = U B \bm{C} = \bm{UB} C=UB且 U \bm{U} U是幺模矩阵,则 d e t ( C ) = d e t ( U B ) = d e t ( U ) d e t ( B ) = ± d e t ( B ) \mathrm{det}(\bm{C}) = \mathrm{det}(\bm{UB}) = \mathrm{det}(\bm{U})\mathrm{det}(\bm{B})=\pm \mathrm{det}(\bm{B}) det(C)=det(UB)=det(U)det(B)=±det(B),正负号表示方向,而体积取绝对值。
证毕。
定义5 记格基为 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,…,bn},中心平行多面体的定义为 P = ∑ i = 1 n b i ⋅ [ − 1 2 , 1 2 ) \mathcal{P} = \sum^n_{i=1} \bm{b}_i \cdot [ - \frac{1}{2}, \frac{1}{2} ) P=∑i=1nbi⋅[−21,21)。
如下图所示,当格的秩为2时,以原点为中心的橘红色区域即中心平行多面体。
与中心平行多面体平行的所有基本区域叠加起来可以张成整个空间,且构成空间的一种划分。即 { P + x ∣ x ∈ L } \{ \mathcal{P} + \bm{x} | \bm{x} \in \mathcal{L} \} {P+x∣x∈L}是 R n \mathbb{R}^n Rn的一种划分方式,如图的灰色斜线是 R n \mathbb{R}^n Rn的一种划分。
如果在欧式空间中任意取一个足够大的超球体 S ⊆ R n \bm{S} \subseteq \mathbb{R}^n S⊆Rn,可以发现球中基本平行多面体的个数与球的体积大致成线性关系,换而言之,球中格点的个数与球的体积近似成正比例,即 ∣ S ∩ L ∣ ≈ v o l ( S ) / d e t ( L ) | \bm{S} \cap \mathcal{L} | \approx \mathrm{vol}(\bm{S}) / \mathrm{det}(\mathcal{L}) ∣S∩L∣≈vol(S)/det(L)。
从密度的角度来看,行列式只是根据空间中一块足够大的区域中格点的数量来定义,即 d e t ( L ) ≈ v o l ( S ) / ∣ S ∩ L ∣ \mathrm{det}(\mathcal{L}) \approx \mathrm{vol}(\bm{S}) / | \bm{S} \cap \mathcal{L} | det(L)≈vol(S)/∣S∩L∣,所以行列式不依赖于具体格基的取值。同样可“证”推论1。
一个单位球里格点的个数可以看成密度,两个不同格可能密度一样,但格点的位置排布大不相同。
致谢
- Simons格密码公开课官网
Mathematics of Lattices - Simons Institute for the Theory of Computing
- 哔哩哔哩中英双语视频(字幕组:重庆大学大数据与软件学院 后量子密码研究小组)
【中英字幕】Simons格密码讲座第1讲:格的数学定义_哔哩哔哩_bilibili
- 其它格密码讲解课程和博文
格密码入门课程_哔哩哔哩_bilibili
格密码的基础概念_唠嗑!的博客-CSDN博客_格密码
格(Lattice)基础(一)_Amire0x的博客-CSDN博客_两组格基生成同一个格的充要条件