格密码基础 —— Successive minima
\(Successive\ minima\)
-
\(Successive\ minima\),逐次最小长度,也有翻译为连续极小。
-
\(Successive\ minima\)是理解格的几何性质、评估格问题难度(\(SVP\)、\(CVP\))以及分析格规约算法(\(LLL\)、\(BKZ\))有效性的核心数学概念。
-
格的一个基本参数是格中最短非零向量的长度,此参数由\(\lambda_1\)表示。
长度,指的是欧几里得范数,或\(\ell_2\)范数,定义\(\Vert\vec{x}\Vert=\sqrt{\sum x_i^2}\)。为了方便,我们通常用\(\Vert\vec{x}\Vert\)来表示这个范数。如果要考虑其他范数,如\(\ell_1\)范数\(\Vert\vec{x}\Vert_1=\sum|x_i|\)或\(\ell_∞\)范数\(\Vert\vec{x}\Vert_∞=max\{|x_i|\}\)。 -
设\(\mathcal{L}\)是一个\(n\)维的格,定义在\(\mathbb{R}^m\)中,对于任意整数\(i\in\{1,2,3,\cdots\}\),闵可夫斯基定义的第\(i\)个连续极小值\(\lambda_i(\mathcal{L})\)是指:包含至少\(i\)个线性无关的格向量的最小闭球半径:
\[\lambda_i(\mathcal{L})=inf\{r>0|dim(span(\mathcal{L}∩\bar{B}(0,r)))\ge i\} \]其中\(\bar{B}(0,r)\)是以原点为中心,半径为\(r\)的闭球。直观上的理解就是:

- \(\lambda_1(\mathcal{L})\):格中最短非零向量的长度,也是\(SVP\)试图寻找的目标。
- \(\lambda_2(\mathcal{L})\):寻找与第一个最短向量线性无关的下一个最短向量的长度。
- \(\lambda_n(\mathcal{L})\):包含\(n\)个线性无关的格向量所需的最小半径。
虽然存在\(n\)个线性无关的向量分别达到长度\(\lambda_1,\lambda_2,\cdots,\lambda_n\),但是这些向量不一定能构成格的基(\(Basis\)),这也是格规约算法在极高维度下面临的理论障碍之一。
\(The\ lower\ bound\ on\ \lambda_1\)
-
定理5(\(Gram-Schmidt\ Lower\ Bound\)):假设\(B\)是秩为\(n\)的格的基,\(B^*\)是\(B\)的施密特正交化,可以得到:
\[\lambda_1(\mathcal{L})\ge min\{\Vert\vec{b_i}^*\Vert\}>0\quad[i=1,2,\cdots,n] \]证明:
设\(\vec{x}\in\mathbb{Z}^n\)是任意的非零整数向量,现证明\(\Vert B\vec{x}\Vert \ge min\{\Vert\vec{b_i}^*\Vert\}\):- 设\(j\in 1,2,\cdots,n\)是最大值,其中\(x_j≠0\),即在非零整数向量\(\vec{x}\)的所有分量中,找到“最后一个不为\(0\)的分量的下标”,并标记为\(j\)。
- 由\(GSO\),原基向量\(\vec{b_i}\)可以由正交基\(B^*\)表示为\(\vec{b_i}=\vec{b_i}^*+\sum_{k=1}^{i-1}\mu_{i,k}\vec{b_k}^*\rightarrow \forall i< j,\left<\vec{b_i},\vec{b_j}^*\right>=0,\left<\vec{b_j},\vec{b_j}^*\right>=\left<\vec{b_j}^*,\vec{b_j}^*\right>\),因此,\(\left|\left<B\vec{x},\vec{b_j}^*\right>\right|=\left|\left<\sum_{i=1}^jx_i\vec{b_i},\vec{b_j}^*\right>\right|=\left|x_j\right|\left<\vec{b_j}^*,\vec{b_j}^*\right>=\left|x_j\right|\Vert\vec{b_j}^*\Vert^2\)。
- 另一方面,\(\left|\left<B\vec{x},\vec{b_j}^*\right>\right|\leq\Vert B\vec{x}\Vert\cdot\Vert\vec{b_j}^*\Vert\),因此我们得出结论:\[\Vert B\vec{x}\Vert\ge\left|x_j\right|\cdot\Vert\vec{b_j}^*\Vert\ge\Vert\vec{b_j}^*\Vert\ge min\{\Vert\vec{b_i}^*\Vert\} \]
-
推论6:假设\(\mathcal{L}\)为一个格,存在\(\varepsilon>0\),对于任意两个非零格点\(\vec{x},\vec{y}\in\mathcal{L}(\vec{x}≠\vec{y})\)使得\(\Vert\vec{x}-\vec{y}\Vert>\varepsilon\)。
格中任意两个不同点的距离至少是\(\lambda_1>0\),这也印证了格是离散的点集,不会出现格点在指定\(volume\)的空间中无限密集地扎堆,一个有限的空间存在的格点数目一定是有限的。
证明:
- 对于任意\(\vec{x}≠\vec{y}\),\(\mathcal{L}\)中的向量\(\vec{x}-\vec{y}\)是非零向量。因此,由定理5可知,\(\Vert\vec{x}-\vec{y}\Vert\ge\lambda_1(\mathcal{L})\ge min\{\Vert\vec{b_j}^*\Vert\}>0\)。
-
推论7:格的逐次最小长度被取得,对于\(1\leq i\leq n\),存在一个向量\(\vec{v}_i\in\mathcal{L},\Vert\vec{v_i}\Vert=\lambda_i(\mathcal{L})\)。
\(\lambda_i\)的定义中是通过下确界(\(inf\))进行定义的,而下确界并没有保证我们一定能取到下界。例如\((0,1)\)的下确界就是\(0\),但始终只能无限逼近于\(0\),不能等于\(0\)。若没有推论\(7\),也许存在一个无限序列的格向量,其长度不断逼近\(\lambda_i\),但永远没有一个具体的格向量长度刚好等于\(\lambda_i\)。
证明:
- 根据推论6,在这个闭球\(\bar{B}(0, 2\lambda_i)\)内包含的格点数量一定是一个有限的整数。由\(\lambda_i\)的定义,决定 \(\lambda_i\) 大小的那些向量,必然位于这个闭球\(\bar{B}(0, 2\lambda_i)\) 之内。 既然闭球内只有有限多个格向量,那么它们的长度构成了一个有限的实数集合 \(\{l_1, l_2, \dots, l_m\}\)。 在数学分析中,一个有限集合是不存在“无限逼近却取不到”的情况的。它的下确界(\(\inf\))必然是它本身的一个确切元素(\(\min\))。 因此,必定存在具体的某个或某组向量 \(\vec{v}_i \in \mathcal{L}\),它们的长度切切实实地等于 \(\lambda_i(\mathcal{L})\)。证明完毕。
\(Minkowski's\ upper\ bounds\ on\ the\ successive\ minima\)
-
定理8(\(Blichfeld\)):对于任何满格\(\mathcal{L}\subseteq \mathbb{R}^n\)和集合\(S\subseteq\mathbb{R}^n(vol(S)>det(\mathcal{L}))\)存在两个不等点\(\vec{z_1},\vec{z_2}\in S\),\(\vec{z_1}-\vec{z_2}\in\mathcal{L}\)。
对于任意满格 \(\mathcal{L}\),如果你有一个集合 \(S\)(无论它长什么样,不需要凸,不需要对称),只要它的体积严格大于格的基本区域的体积(即 \(\det(\mathcal{L})\)),那么在这个集合 \(S\) 里,必然能找到两个点 \(\vec{z_1}, \vec{z_2}\),它们相减的结果刚好是一个格点。\(\vec{z_1}, \vec{z_2}\) 只是\(S\)里的两个连续空间的点,它们自己并不是格点。\(Blichfeldt\)定理并不能直接帮我们找到“包含在\(S\)中的非零格点”。
证明:
- 设\(\mathcal{L}\)是\(\mathbb{R}^n\)中的一个满秩格,\(B=\left(\begin{matrix}\vec{b_1} & \vec{b_2} & \cdots & \vec{b_n}\end{matrix}\right)\)是\(\mathcal{L}\)的一组基,选择\(S\)是\(\mathbb{R}^n\)的一个可测集,且满足\(vol(S)>vol(\mathcal{P})=def(\mathcal{L})\)。
- 通过平移\(\mathcal{P}\)到所有格点\(\vec{v}\in\mathcal{L}\),可以无重叠地铺满整个\(\mathbb{R}^n\)空间,即\[\mathbb{R}^n=∪_{\vec{v}\in\mathcal{L}}(\mathcal{P}+\vec{v}) \]且对于不同的格点\(\vec{v}≠\vec{u}\),交集\((\mathcal{P}+\vec{v})∩(\mathcal{P}+\vec{u})\)的体积为\(0\),即无实体重叠。
- 空间被划分,我们也就可以对目标集合\(S\)进行划分,定义集合\(S\)中落到格点\(\vec{v}\)平移区域内的部分为\(S_v\):\[S_v=S∩(\mathcal{P}+\vec{v}) \]由于各个区域不重叠,集合\(S\)的总体积就等于这些分割块的体积之和:\[vol(S)=\sum_{\vec{v}\in\mathcal{L}}vol(S_v) \]
- 将分割后的\(S_v\)统一移动到原点附近的\(\mathcal{P}\)中,定义平移后的块为\(S_v'\):\[S_v'=S_v-\vec{v} \]因为平移操作不影响体积,所以\(vol(S_v')=vol(S_v)\),显然,这些平移的块全都在\(\mathcal{P}\)里,即\(S_v'\subseteq\mathcal{P}\)。
- 现在我们假设任意两个不同的块,它们平移回\(\mathcal{P}\)之后没有重叠区域(或者重叠部分体积为\(0\)),那么它们放在\(\mathcal{P}\)里的总体积,必然小于或等于容器\(\mathcal{P}\)的容积:\[\sum_{\vec{v}\in\mathcal{L}}vol(S_v')\leq vol(\mathcal{P}) \]但由前期的推导和假设,我们有\[vol(S_v')=vol(S_v);\sum_{\vec{v}\in\mathcal{L}}vol(S_v)=vol(S);vol(\mathcal{P})=det(\mathcal{L})\rightarrow vol(S)\leq det(\mathcal{L}) \]这和我们的假设(\(vol(S)>det(\mathcal{L})\))相矛盾。
- 矛盾就说明我们的假设(平移后没有重叠)是错误的。因此,必然存在至少两个不同的格点\(\vec{v}≠\vec{u}\),使得平移后的集合\(S_v'\)和\(S_u'\)有一个公共点\(\vec{w}\)。
既然\(w\)同时属于\(S_v'\)和\(S_u'\),根据定义:- \(\vec{w}\in S_v'\)意味着存在一个点\(\vec{z_1}\in S_v(\vec{z_1}\in S)\),使得\(\vec{w}=\vec{z_1}-\vec{v}\)
- \(\vec{w}\in S_u'\)意味着存在一个点\(\vec{z_2}\in S_v(\vec{z_2}\in S)\),使得\(\vec{w}=\vec{z_2}-\vec{u}\)
- 联立两个等式:\[\vec{z_1}-\vec{v}=\vec{z_2}-\vec{u}\rightarrow \vec{z_1}-\vec{z_2}=\vec{v}-\vec{u} \]因为 \(\vec{v}\) 和 \(\vec{u}\) 都是格 \(\mathcal{L}\) 中的点,且格对减法封闭,所以 \(\vec{v} - \vec{u} \in \mathcal{L}\)。又因为 \(\vec{v} \neq \vec{u}\),这是一个非零格点。至此,我们在集合 \(S\) 中找到了两个点 \(\vec{z_1}\) 和 \(\vec{z_2}\),它们相减的结果 \(\vec{z_1} - \vec{z_2}\) 属于格 \(\mathcal{L}\)。证毕!
-
定理9(\(Minkowski's\ convex\ body\ theorem\)):设\(\mathcal{L}\)为秩\(n\)的全秩格(满格)。对于任何中心对称的凸集\(S\),如果\(vol(S)>2^ndet(\mathcal{L})\),则\(S\)必定包含一个非零格点。
相较于\(Blichfeldt\)定理证明的\(S\)中一定存在两点\(\vec{z_1},\vec{z_2}\)使得\(\vec{z_1}-\vec{z_2}\in\mathcal{L}\),但是\(S\)中并不一定包含格点而言,该定理的结论更强,它能够证明\(S\)集合中一定有一个格点。
证明:
- 定义\(\hat{S}={1\over2}S\),这意味着\(\hat{S}\)是把原集合\(S\)的各个维度上都缩小到了原来的一半,\(n\)维空间中,体积就缩小到了原来的\(({1\over2})^n\),即\(vol(\hat{S})={1\over 2^n}vol(S)\),由假设条件\(vol(S)>2^ndet(\mathcal{L})\),可得\(vol(\hat{S})>det(\mathcal{L})\)。
- 由\(Blicjfeldt\)定理,在\(\hat{S}\)中必然存在两个不同的点\(\vec{z_1},\vec{z_2}\),满足它们的差\(\vec{v}=\vec{z_1}-\vec{z_2}\in\mathcal{L}\),这是一个非零格点。此时我们知道了\(\vec{v}\)是格点,且\(\vec{z_1},\vec{z_2}\in\hat{S}\),但是我们并不知道\(\vec{v}\)是不是在原来的\(S\)中。
- 由于\(\vec{z_1},\vec{z_2}\)是在\(\hat{S}\)中,那么根据定义,把它们放大\(2\)倍,就一定在原来的\(S\)中,所以有\(2\vec{z_1},2\vec{z_2}\in S\)。
- 中心对称:因为\(S\)是围绕原点中心对称,\(2\vec{z_2}\)在\(S\)中,那么\(-2\vec{z_2}\)也在集合\(S\)内,设\(A=2\vec{z_1}\),\(B=-2\vec{z_2}\)。
- 凸性:凸集的定义为:集合内任意两点连成的线段,都在集合内。那么线段的中点也一定在集合内。因此有:\[{A+B\over2}={2\vec{z_1}+(-2\vec{z_2})\over 2}=\vec{z_1}-\vec{z_2} \]由于中点必然在\(S\)内,因此\(\vec{z_1}-\vec{z_2}\in\mathcal{L}\)且\(\vec{z_1}-\vec{z_2}\in S\)。
-
推论2(\(Minkowski's\ first\ theorem\)):对于任意秩为\(n\)的全秩格\(\mathcal{L}\),
\[\lambda_1(\mathcal{L})\leq\sqrt{n}(det(\mathcal{L}))^{1\over n} \]- 第一连续极小值 \(\lambda_1\) 问的是:“包含第一个非零格点的最小球的半径是多少?”
- 我们可以反向使用 \(Minkowski\) 凸体定理。想象一个以原点为中心的超球体 \(S\)。我们慢慢把这个球增大。根据定理 9,只要这个球的体积刚刚超过 \(2^n \det(\mathcal{L})\),它里面就必然会“捕获”一个非零格点。 因此,找到第一个非零格点所需的球体积,绝不可能超过 \(2^n \det(\mathcal{L})\)。通过将球的体积公式换算成半径,就能得出 \(\lambda_1\) 的上限,最终经过放缩得到了上面这个经典的不等式。
- 只要格的“密度”定了(即 \(\det(\mathcal{L})\) 确定),无论这个格被如何扭曲,它至少也会有一个相对较短的向量,绝不可能所有的格点都离原点无限远。这是判定 SVP 难度的核心数学下界。
-
推论3(\(Minkowski's\ second\ theorem\)):对于任意秩为\(n\)的全秩格\(\mathcal{L}\),
\[(\prod_{i=1}^n\lambda_i(\mathcal{L}))^{1\over n}\leq\sqrt{n}(det(\mathcal{L}))^{1\over n} \]- 连续极小值是从短到长排列的(\(\lambda_1 \le \lambda_2 \le \dots \le \lambda_n\))。 如果这个格极其特殊,拥有一个非常短的向量(\(\lambda_1\) 非常小),那么为了保持格的总容积 \(\det(\mathcal{L})\) 不变,后面的极小值(比如 \(\lambda_n\))就必须非常大来进行补偿。
-
参考资料:
- 格密码基础 3(Lecture 1,Successive minima) - 知乎
- 格密码1.5 Successive Minima - 知乎
- An Introduction to Mathematical Cryptography -_Second Edition

格密码,Successive minima(逐次最小长度、连续极小)
浙公网安备 33010602011771号