For AI agents: the complete documentation index is available at https://shijin.space/llms.txt, the full documentation bundle is available at https://shijin.space/llms-full.txt, and this page is available as Markdown at https://shijin.space/knowledge/progressive-sieving-and-vector-pool-reuse/index.md.

渐进筛法与向量池复用

前置笔记:高斯启发式与随机球面模型、投影格、BKZ 与局部 SVP、筛法的基本框架与两向量约化。

固定满秩列基 B=(b1,…,bn)B=(b_1,\ldots,b_n),沿用投影格、BKZ 与局部 SVP的投影记号:

Λ[i,j]=L(πi(bi),…,πi(bj)),s=j−i+1,gk=∥bk∗∥.\Lambda_{[i,j]} =\mathcal L\bigl(\pi_i(b_i),\ldots,\pi_i(b_j)\bigr), \qquad s=j-i+1,\qquad g_k=\|b_k^*\|.

下标从 11 开始,区间包含两端。以下加维操作均针对同一组固定基 BB;ss 表示当前筛法维数,向量池 DD 只保留非零向量。

1. 从低维向量池逐步扩展

渐进筛法先在较小的局部格中筛出一批短向量,再扩大窗口,保留已有结果,继续补样和约化。

复用的对象是整个向量池:旧向量既是后续搜索的候选,也是缩短新样本的约化伙伴。窗口和向量表示随之更新,旧池的停止状态则需要在新空间中重新检查。

Ducas 将低维筛出的短向量池用于后续加维;其中的渐进子过程沿基的前缀扩展 [1, p. 12]。下面使用局部投影格统一说明向右与向左两种操作。

2. 向右扩展:旧向量仍在原来的子空间中

当 j<nj<n 时,把窗口从 [i,j][i,j] 扩展为 [i,j+1][i,j+1]。对旧向量

x=∑k=ijzkπi(bk),x=\sum_{k=i}^{j}z_k\pi_i(b_k),

只需在整数系数末尾补零:

(zi,…,zj)⟼(zi,…,zj,0).(z_i,\ldots,z_j) \longmapsto (z_i,\ldots,z_j,0).

实际向量没有改变,因此

∥xR∥=∥x∥,⟨xR,yR⟩=⟨x,y⟩.\|x_{\mathrm R}\|=\|x\|, \qquad \langle x_{\mathrm R},y_{\mathrm R}\rangle=\langle x,y\rangle.

旧向量之间的长度、夹角和两两约化关系保持不变,但它们在新增 GSO 方向 bj+1∗b_{j+1}^* 上的分量全为零。

筛法基本框架的整数张成性质给出一个直接结论:只对这些旧向量反复加减,所有结果仍留在旧池生成的子格中。 要探索新增方向,必须引入该方向分量非零的向量。

因此,向右扩展保留了已有的短向量,却没有自动获得新空间中的方向覆盖。

3. 向左扩展:补入一个 Babai 残差

当 i>1i>1 时,把窗口从 [i,j][i,j] 扩展为 [i−1,j][i-1,j]。沿用投影格、BKZ 与局部 SVP的 GSO 系数 μk,i−1\mu_{k,i-1},令

cx=∑k=ijμk,i−1zk,qx=round⁡(cx),εx=cx−qx.c_x=\sum_{k=i}^{j}\mu_{k,i-1}z_k, \qquad q_x=\operatorname{round}(c_x), \qquad \varepsilon_x=c_x-q_x.

新的整数系数为

(zi,…,zj)⟼(−qx,zi,…,zj).(z_i,\ldots,z_j) \longmapsto (-q_x,z_i,\ldots,z_j).

对应向量满足

xL=x+εxbi−1∗,πi(xL)=x,∣εx∣≤12.\boxed{ x_{\mathrm L}=x+\varepsilon_x b_{i-1}^*, \qquad \pi_i(x_{\mathrm L})=x, \qquad |\varepsilon_x|\le\tfrac12. }

这是投影格、BKZ 与局部 SVP Babai 提升的一步形式。G6K 论文中的两种窗口操作采用从 00 开始、右端点不包含在内的区间,阅读时需换算下标 [2, p. 9]。

由正交性直接得到

∥xL∥2=∥x∥2+εx2gi−12≤∥x∥2+14gi−12.\boxed{ \|x_{\mathrm L}\|^2 =\|x\|^2+\varepsilon_x^2g_{i-1}^2 \le \|x\|^2+\frac14g_{i-1}^2. }

对两条旧向量,还有

⟨xL,yL⟩=⟨x,y⟩+εxεygi−12,\langle x_{\mathrm L},y_{\mathrm L}\rangle =\langle x,y\rangle +\varepsilon_x\varepsilon_y g_{i-1}^2,

以及对 σ∈{−1,1}\sigma\in\{-1,1\},

∥xL−σyL∥2=∥x−σy∥2+(εx−σεy)2gi−12.\boxed{ \|x_{\mathrm L}-\sigma y_{\mathrm L}\|^2 =\|x-\sigma y\|^2 +(\varepsilon_x-\sigma\varepsilon_y)^2g_{i-1}^2. }

这些关系说明:向左提升可能改变长度和内积,旧池的两两约化状态未必保留,原来的最佳加减符号也可能改变。新的约化条件应使用提升后的真实几何量。

εx\varepsilon_x 由整数系数和当前基确定。在额外的连续均匀残差模型 εx∼Unif⁡[−1/2,1/2]\varepsilon_x\sim\operatorname{Unif}[-1/2,1/2] 中,平均平方长度增量为 gi−12/12g_{i-1}^2/12。取整操作本身不保证这种均匀性,也不保证不同向量的残差相互独立。

4. 长度尺度与目标池规模也要更新

沿用高斯启发式与随机球面模型与投影格、BKZ 与局部 SVP的高斯启发式定义,记

hi,j=gh⁡(Λ[i,j])=(∏k=ijgkVs)1/s,h_{i,j} =\operatorname{gh}(\Lambda_{[i,j]}) =\left(\frac{\prod_{k=i}^{j}g_k}{V_s}\right)^{1/s},

其中 VsV_s 是 ss 维单位球体积。令 Δi,j=∏k=ijgk\Delta_{i,j}=\prod_{k=i}^{j}g_k,则加维后

hi,j+1=(Δi,jgj+1Vs+1)1/(s+1),hi−1,j=(gi−1Δi,jVs+1)1/(s+1).h_{i,j+1} =\left(\frac{\Delta_{i,j}g_{j+1}}{V_{s+1}}\right)^{1/(s+1)}, \qquad h_{i-1,j} =\left(\frac{g_{i-1}\Delta_{i,j}}{V_{s+1}}\right)^{1/(s+1)}.

比较不同窗口中的“短”,应同时记录绝对长度与归一化长度 ∥x∥/hi,j\|x\|/h_{i,j}。一般有

∥xnew∥/hnew∥x∥/hold=∥xnew∥∥x∥holdhnew.\frac{\|x_{\mathrm{new}}\|/h_{\mathrm{new}}} {\|x\|/h_{\mathrm{old}}} = \frac{\|x_{\mathrm{new}}\|}{\|x\|} \frac{h_{\mathrm{old}}}{h_{\mathrm{new}}}.

所以,向右扩展虽然不改变绝对长度,归一化长度仍可能变化;向左提升的绝对长度不减,也不能单凭这一点判断相对质量。

池规模同样依赖维数。以高斯启发式与随机球面模型的两向量筛法规模为参照,若采用以下简化目标,并保持比例常数固定:

Ntar(s)=⌈cN(4/3)s/2⌉,cN>0,N_{\mathrm{tar}}(s) =\left\lceil c_N(4/3)^{s/2}\right\rceil, \qquad c_N>0,

忽略取整,并假设旧池恰有 Ntar(s)N_{\mathrm{tar}}(s) 条向量,全部保留后只补足下一维的目标数量,则新样本约占扩容后池的

1−Ntar(s)Ntar(s+1)≈1−32≈13.4%.1-\frac{N_{\mathrm{tar}}(s)}{N_{\mathrm{tar}}(s+1)} \approx 1-\frac{\sqrt3}{2} \approx 13.4\%.

这只是该容量规则下的数量比例,不能用来保证方向覆盖或混合充分。

G6K 论文记录了向右扩展的一个实现问题:较长的新样本可能被旧池的短向量组合替换,导致新增方向缺乏代表 [2, p. 16]。该观察针对文中的实现与替换规则,不构成向右扩展普遍失效的结论。

5. 扩展、补样与再筛的基本流程

下面给出固定右端点、逐步向左扩展的简化流程。设目标窗口为 [a,j][a,j],初始左端点满足 a≤i0≤ja\le i_0\le j:

ProgressiveLeft(B, a, i₀, j):
    i ← i₀
    D ← 在 Λ_[i,j] 中初始化并筛至当前阶段的停止条件

    当 i > a:
        D ← 对每条向量做一步 Babai 向左提升
        i ← i − 1

        更新当前窗口的维数、参考长度与目标池规模
        更新向量表示及依赖当前空间的缓存和搜索索引
        D ← 按当前采样策略补充新样本
        D ← 继续约化、去重和更新,直到满足本阶段停止条件

    返回 D

这是组织流程的伪代码;具体筛法、采样器和停止规则需要另外指定。G6K 用可组合的窗口操作与筛法调用表达这类过程 [2, pp. 11–12]。

每次加维后,应分别检查:

  • 合法性与覆盖范围: 向量属于当前格;采样与更新能探索所需方向。满秩本身也不代表方向近似均匀。
  • 长度与数量: 使用当前窗口的参考长度和目标规模。总数量达标不等于短向量数量达标。
  • 停止条件: 沿用筛法基本框架的区别,分别判断长度目标、两两约化状态和启发式饱和度;不能直接继承上一维的停止结论。

再筛可以继续改善向量池,但不能仅由“已经再筛”推出其成为独立均匀的球面样本。

6. 渐进运行的成本

逐维运行的总时间可以分解为

Tprog=∑s=s0d(Ttransfer,s+Tsample,s+Tindex,s+Tresieve,s),T_{\mathrm{prog}} = \sum_{s=s_0}^{d} \bigl( T_{\mathrm{transfer},s} +T_{\mathrm{sample},s} +T_{\mathrm{index},s} +T_{\mathrm{resieve},s} \bigr),

分别计入初始化或池迁移、补样、索引维护和继续筛法。这里 dd 是本次运行的最大筛法维数;继续筛法的成本还取决于传入池的状态。

为理解低维阶段的开销,假设从头运行一次 ss 维筛法的成本近似为 AcTsA c_T^s,其中 A>0A>0、cT>1c_T>1 固定。几何级数给出

∑s=s0dAcTs≤AcTd1−cT−1.\sum_{s=s_0}^{d}A c_T^s \le \frac{A c_T^d}{1-c_T^{-1}}.

在这个简化模型下,逐维完整计算的总成本是末维成本的常数倍。这个式子只说明前面各维的开销尺度;复用是否加速,取决于它节省的后续筛法工作能否抵消迁移、补样与维护开销。

实验比较应固定输入基和最终长度质量或饱和目标,比较从头运行与渐进复用的总时间、峰值内存及阶段成本。检查次数、不同有效源对、不同结果和实际接纳数量,沿用重复配对、去重与有效覆盖分别统计。

7. 与后续格约化策略的衔接

本篇先固定基,只讨论加维与复用。完整格约化还会插入短向量、改变基、缩小或移动窗口;这时需要同步处理整数系数和投影空间的变化,不能只修改窗口下标。

后续的 G6K/Pump 笔记将进一步组织这些操作,并结合投影格、BKZ 与局部 SVP的 dimensions for free,区分筛法范围、提升范围和插入位置。

对于渐进加维后的概率建模,值得保留三个观察对象:归一化长度分布、新增方向的分量分布,以及新旧向量之间的夹角与约化概率。 它们连接本篇的确定性几何关系与后续的模型修正、选参和实验研究。

参考文献

1. Léo Ducas. Shortest vector from lattice sieving: A few dimensions for free. Advances in cryptology – EUROCRYPT 2018. 2018. DOI.

2. Martin R. Albrecht, Léo Ducas, Gottfried Herold, Elena Kirshanova, Eamonn W. Postlethwaite, and Marc Stevens. The general sieve kernel and new records in lattice reduction. Advances in cryptology – EUROCRYPT 2019. 2019. DOI.