LLL格基约简算法(1)
LLL格基约减算法:原理、实现与密码学应用分析
摘要
LLL格基约减算法是一种通过迭代优化,将任意格基转化为“短且近似正交”的约化基的多项式时间算法,其核心在于利用大小约简条件与Lovász条件来保证输出质量。该算法的理论基石是其能在多项式时间内终止的证明,以及其输出的第一个基向量长度被保证不超过格中真实最短向量长度的 2^{(n-1)/4} 倍的近似因子。在密码学实践中,LLL算法曾是破解Merkle-Hellman背包密码系统、攻击低公钥指数RSA及分析早期NTRU的关键工具。然而,其最致命的局限性在于该近似因子随格维度n呈指数级增长,导致在现代高维后量子密码系统(如截至2025年的Kyber和Dilithie)面前,其输出的向量长度与真实最短向量相比已无实际攻击价值,从而催生了性能更强大的BKZ等高级变体算法。
目录
1.4 衡量格基质量:Hermite常数与Hadamard比率
4.2 攻击低公钥指数RSA:Coppersmith方法简介
1. 初识格密码与LLL算法:从基础概念出发
在现代密码学的宏伟蓝图中,格(Lattice)作为一种独特的数学结构,正日益凸显其作为后量子安全基石的重要性。与传统密码学依赖大数分解或离散对数等数论难题不同,格密码学的安全性根植于高维空间中离散点集的几何性质。本章旨在为初学者构建一个理解格密码学,特别是其核心分析工具——Lenstra-Lenstra-Lovász(LLL)算法——所需的基础知识框架。我们将从格的几何直观出发,逐步引入格基、最短向量问题(SVP)、带错误学习问题(LWE)等核心概念,并探讨用于分析格基质量的关键工具与指标,为后续章节深入剖析LLL算法的数学原理与实现细节奠定坚实的基础。
1.1 格与格基:密码学中的几何基石
格,顾名思义,是一种在n维欧氏空间ℝⁿ中呈现周期性、离散分布的点集。更形式化地说,一个格是由一组线性无关的向量(称为基向量)生成的所有整数线性组合构成的集合[11]。其数学定义如下:
给定n个线性无关的m维实向量 ,由这些向量定义的格 是:
其中,向量组 被称为该格的一个 格基 (Basis)。
为了建立直观理解,我们可以将格想象成高维空间中的“网格”。在二维平面上,最熟悉的格莫过于由标准单位向量 和 生成的整数格 ,它构成了一个规则的正方形网格。然而,格的形态并非总是规则的。例如,一个由向量 和 生成的二维格,其点集分布会形成一个平行四边形网格。这表明,同一个格可以由不同的基向量组生成,而基向量的选择直接决定了格点的分布密度和排列方式。
格的维度与基向量的数量密切相关。如果基向量的数量n等于其所在空间的维度m(即 ),则称该格为 满秩格 (Full-rank Lattice)。满秩格是密码学中最常见的研究对象,因为它们能够生成整个n维空间的离散点集。反之,如果 ,则生成的是一个 低秩格 (Low-rank Lattice),其点集分布在一个n维的子空间内。
一个至关重要的观察是,格的“质量”——即其点集的稀疏程度——在很大程度上取决于其格基的选择。一个“好”的格基应该能生成一个密集的格点集,使得寻找其中的短向量变得异常困难。反之,一个“坏”的格基可能生成一个稀疏的格,使得短向量极易被发现。这种对格基质量的敏感性,正是格密码学安全性的核心所在,也构成了LLL算法等格基约减工具发挥作用的舞台。
1.2 核心密码学问题:SVP与LWE
格密码学的安全性建立在两个核心计算难题之上:最短向量问题(Shortest Vector Problem, SVP)和带错误学习问题(Learning With Errors, LWE)。这两个问题的计算困难性,尤其是在高维空间中,被认为是抵御经典乃至量子计算攻击的坚固壁垒。
最短向量问题(SVP) 是格理论中最基本的问题[11][18][19]。其定义为:给定一个格 的任意一个基 ,找出该格中长度最短的非零向量 ,使得 最小[11]。SVP的困难性在于,对于一个随机生成的格基,即使格本身存在非常短的向量,要找到它也被认为是计算上不可行的。
SVP通常有两种形式:
- 计算SVP(Search SVP) :要求明确输出最短向量本身[11][18]。
- 决策SVP(Decision SVP) :给定一个格基和一个实数d,判断该格的最短向量长度是否小于等于d[18]。
在密码学应用中,计算SVP的难度是构建安全协议的关键[11]。如果攻击者能够高效解决SVP,就可以破坏许多基于格的密码系统[24]。
带错误学习问题(LWE) 则是现代格密码学的基石,由Oded Regev于2005年提出。LWE问题可以被描述为一个“带错误”的线性系统求解问题。其基本形式如下:
给定一个随机的 矩阵 (其中 表示模q的整数环)和一个噪声向量 ,以及向量 ,目标是恢复出隐藏的秘密向量 。
LWE的安全性源于其“带错误”的特性。这里的噪声 通常遵循一个离散的高斯分布 ,它使得线性系统 不再精确成立,而是存在微小的偏差。这种噪声破坏了问题的线性结构,使得从 中恢复 变得极其困难。LWE被认为是 后量子安全 的,因为目前没有已知的有效量子算法能够解决它,这使其成为应对量子计算威胁的理想选择。
为了进一步丰富对格密码学问题空间的理解,我们引入LWE的一个重要变体—— 环上带错误学习问题(Ring-LWE, RLWE) 。RLWE将问题从整数环 扩展到多项式环上,利用多项式乘法的快速算法(如快速数论变换NTT),极大地降低了计算复杂度,使得基于LWE的密码系统(如全同态加密)能够在实际中高效运行[17]。
1.3 Gram-Schmidt正交化:分析格基的工具
在深入探讨格基约减算法之前,我们需要一个强大的数学工具来分析格基的内部结构。这个工具就是 Gram-Schmidt正交化 (Gram-Schmidt Orthogonalization, GSO),它是线性代数中的经典技巧,用于将一组线性无关的向量组转化为一组正交向量组。
GSO的核心思想是,对于给定的格基 ,构造一组新的向量 ,使得它们两两正交(即 当 ),并且由 生成的格与由 生成的格在代数上是等价的。GSO的构造过程如下:
- 第一个正交向量 :[18][20][21]。它与原始基向量完全相同。
- 后续正交向量 :对于 , 是 减去其在所有先前正交向量 上的投影。即:
其中, 是一个关键的系数,被称为 投影系数 (Projection Coefficient),其计算公式为:
这里, 表示向量的点积。
投影系数 具有深刻的几何意义。它衡量了原始基向量 在正交向量 方向上的“对齐”程度。如果 的绝对值很大,说明 在 方向上有很长的投影,这意味着 和 之间存在较强的线性相关性,基的正交性较差。反之,如果 的绝对值很小(理想情况下接近0),则表明 几乎不与 方向对齐,基的正交性更好。
GSO在LLL算法中的作用至关重要。它将原始格基转换为一个“正交坐标系”,使得我们可以在这个坐标系下精确地测量每个基向量的“独立”长度。通过分析GSO产生的正交向量 的长度和投影系数 ,LLL算法能够判断当前格基的质量,并执行相应的约减操作,以寻找更短、更正交的基向量[18]。
1.4 衡量格基质量:Hermite常数与Hadamard比率
为了量化评估一个格基的优劣,密码学家和数学家们发展了一系列指标。其中, Hermite常数 (Hermite’s Constant)和 Hadamard比率 (Hadamard Ratio)是两个最核心的衡量标准。它们分别从理论上和实践上刻画了格基的关键属性:最短向量的长度和基的正交程度。
Hermite常数 是一个理论上的衡量标准,它定义了一个格中最短非零向量长度的上界。对于一个n维格 ,其Hermite常数 被定义为:
其中, 是格 的最短非零向量长度,而 是该格的行列式(其几何意义是由基向量张成的平行多面体的体积)。Hermite常数给出了在最坏情况下,最短向量可能达到的最大长度与格“密度”(由行列式开n次方根衡量)的比值。一个格基如果能使得其最短向量接近这个理论上界,那么它就是一个“坏”的、难以约减的基。
Hadamard比率 则是一个更实用的量化指标,用于评估一个给定格基的实际正交程度[21][22]。其计算公式为:
其中, 是原始格基向量 的欧几里得范数[25]。Hadamard比率的值域在0到1之间。一个比率值越接近1,表明该格基的向量越接近正交状态,因为此时基向量的长度乘积 与格的“密度” 越接近。反之,如果比率远小于1,则说明基向量之间存在严重的线性相关性,正交性极差。
为了让读者更直观地理解Hadamard比率,我们通过一个具体的二维格基计算示例来进行演示。
示例:计算二维格基的Hadamard比率
考虑一个二维格基 ,其中:
- ,其欧几里得范数 。
- ,其欧几里得范数 。
首先,计算该格的行列式 。对于二维格,行列式等于基向量构成的平行四边形的面积,即两个向量的叉积的绝对值:
然后,计算Hadamard比率 :
这个结果表明,该格基的Hadamard比率为0.5,距离1还有一定差距,说明其正交性并不理想。
现在,考虑一个更接近正交的基 ,其中:
- ,范数 [11][18][25]。
- ,范数 [11][25]。
该格的行列式为:
其Hadamard比率为:
这正是Hadamard比率的理论最大值,表明标准单位向量构成的基是完全正交的。
通过这个对比,我们可以清晰地看到,Hadamard比率有效地量化了格基的正交性[21]。LLL算法的目标之一,就是通过一系列变换,使得输出的格基的Hadamard比率尽可能接近1,从而让第一个基向量变得足够短,以攻击那些依赖短向量保密性的密码系统[21]。
下表总结了本章介绍的核心概念,为读者提供一个清晰的知识框架。
|
概念名称 |
核心定义/描述 |
|
格 (Lattice) |
一个n维欧氏空间ℝⁿ中的离散加法子群,由一组线性无关的基向量生成的所有整数线性组合构成的点集[1]。 |
|
格基 (Basis) |
生成格的一组线性无关的向量,其整数线性组合构成整个格。 |
|
最短向量问题 (SVP) |
给定一个格基,找出格中最短的非零向量。这是格密码学安全性的核心基础[1]。 |
|
带错误学习问题 (LWE) |
给定一个由多项式方程构成的“带错误”的线性系统,恢复出隐藏的秘密向量。被认为是后量子安全的密码学难题[23]。 |
|
Gram-Schmidt正交化 (GSO) |
将一组线性无关的向量组转化为一组正交向量组的线性代数过程,是分析格基和实现LLL算法的关键工具。 |
|
Hadamard比率 (Hadamard Ratio) |
衡量一个格基正交程度的指标,值越接近1表示基的正交性越好[22]。 |
|
Hermite常数 (Hermite’s Constant) |
衡量一个格基中最短向量长度的理论上界,是评估格基质量的理论基准[9]。 |
2. LLL算法的数学原理:从核心条件到理论证明
在第一章构建了格密码学的基础概念之后,本章将深入其理论内核,系统阐述Lenstra-Lenstra-Lovász(LLL)算法的数学原理[11]。作为格基约减领域的开创性工作,LLL算法不仅是理解后续高级算法的基石,其本身的设计与证明也完美地体现了现代算法设计的精髓。我们将从LLL约化基的形式化定义出发,剖析其赖以运行的两个核心条件——大小约简与Lovász条件——的代数与几何意义,揭示算法输出质量的理论边界(近似因子),并最终借助势函数这一强大工具,证明算法为何能在多项式时间内可靠地终止。本章的目标是为读者提供一个严谨、清晰且直观的理论框架,理解LLL算法如何从一个任意的格基出发,通过数学变换,最终输出一个“短且近似正交”的约化基。
2.1 LLL约化基的定义与核心条件
LLL算法的最终目标是输出一个满足特定数学性质的格基,这个基被称为 LLL约化基 (LLL-reduced basis)[18][26]。一个基 B = {b₁, b₂, ..., bₙ} 被认为是LLL约化的,当且仅当它同时满足以下两个核心条件:
- 大小约简条件 (Size-Reduced Condition) :对于所有 1 ≤ j < i ≤ n,投影系数的绝对值不超过1/2,即 |μᵢⱼ| ≤ 1/2。
- Lovász条件 (Lovász Condition) :对于所有 1 ≤ i ≤ n-1,存在一个介于1/4和1之间的常数 δ(通常取 δ = 3/4),使得 δ||bᵢ*||² ≤ ||bᵢ₊₁*||² + μᵢ₊₁,ᵢ²||bᵢ*||²。
这两个条件并非孤立存在,而是协同工作,共同驱动算法向理想的基向量迈进。
大小约简条件:修剪冗余,维持正交性
大小约简条件直接作用于Gram-Schmidt正交化过程中产生的投影系数 μ。回顾第一章,μᵢⱼ 表示向量 bᵢ 在正交向量 bⱼ* 上的投影长度与 bⱼ* 自身长度的比值。因此,|μᵢⱼ| ≤ 1/2 意味着 bᵢ 在 bⱼ* 方向上的投影不能超过 bⱼ* 长度的一半。
这个条件的几何意义在于,它强制每个基向量 bᵢ 尽可能地“远离”其前面的所有正交向量 b₁*, ..., bᵢ₋₁*。通过不断调整 bᵢ,减去其在 bⱼ* 上的整数倍投影,算法确保了 bᵢ 主要落在由 bᵢ*, ..., bₙ* 张成的正交子空间中。这一过程有效地“修剪”了向量间的线性相关性,使得基向量组在整体上变得更加正交,从而为寻找短向量创造了有利条件。
Lovász条件:控制长度,触发交换
与大小约简条件不同,Lovász条件关注的是相邻正交向量的长度关系。它通过一个精心设计的不等式,确保了正交向量序列 {b₁*, b₂*, ..., bₙ*} 的长度不会出现剧烈的波动,特别是后面的向量不会比前面的短太多。
为了理解其几何意义,我们可以将其与向量夹角联系起来。考虑两个相邻的基向量 bᵢ 和 bᵢ₊₁,它们张成一个二维子空间。在这个子空间中,bᵢ* 和 bᵢ₊₁* 是正交的。Lovász条件可以被视为对 bᵢ₊₁ 在 bᵢ* 方向上的投影长度的一种限制。如果 bᵢ₊₁ 在 bᵢ* 方向上的投影过长(即 μᵢ₊₁,ᵢ 的绝对值过大),那么 bᵢ₊₁* 的长度就会变短。Lovász条件正是为了防止这种情况发生,它设定了一个阈值 δ,要求 bᵢ₊₁* 的长度必须足够大,以维持序列的“健康”增长。
当Lovász条件不被满足时,算法会触发一个关键的操作:交换 bᵢ 和 bᵢ₊₁。这个交换看似简单,却对整个基的结构产生深远影响。它不仅改变了基向量的顺序,更重要的是,它会导致后续所有的Gram-Schmidt正交向量(从 bᵢ* 开始)都发生改变。通过交换,算法将一个潜在的“短”向量 bᵢ₊₁* 前移,使其成为 bᵢ*,从而保证了在最终的约化基中,第一个向量 b₁ 能够捕捉到格中最短的向量之一。
下表总结了LLL算法的核心数学概念与理论结果,为读者提供一个清晰的概览。
|
概念/条件 |
数学定义/公式 |
关键性质/意义 |
|
LLL约化基 |
一个基 B = {b₁, ..., bₙ} 满足: |
输出的基向量 b₁ 是格中最短向量的一个有效近似,其长度被理论保证不超过真实最短向量的 2^{(n-1)/4} 倍。 |
|
投影系数 (μ) |
μᵢⱼ = ⟨bᵢ, bⱼ*⟩ / ||bⱼ*||² |
表示向量 bᵢ 在正交化向量 bⱼ* 上的投影长度与 bⱼ* 长度的比值。大小约简条件限制了这个投影,使得基向量尽可能“正交”。 |
|
近似因子 |
2^{(n-1)/4} |
理论保证的近似比例,即 ||b₁|| ≤ 2^{(n-1)/4} λ₁(Λ),其中 λ₁(Λ) 是格 Λ 的真实最短非零向量长度。该因子随维度 n 指数级增长,是LLL算法在高维应用中的主要限制[11]。 |
|
势函数 (Potential Function) |
基于Gram-Schmidt正交化的格基行列式的对数(如 log(det(B)))。 |
一个在算法每次迭代中单调递减的函数,用于证明算法的收敛性和多项式时间复杂度。其思想类似于物理学中的能量最小化过程。 |
2.2 近似因子解析:LLL算法的性能边界
LLL算法的核心价值在于,它为最短向量问题(SVP)提供了一个 多项式时间的近似解 [11][18][26]。尽管无法保证找到绝对最短的向量,但它能保证输出的第一个向量 b₁ 的长度,与格中真实的最短非零向量长度 λ₁(Λ) 之间存在一个可量化的、最坏情况下的比例关系。这个比例,就是LLL算法的 近似因子 (Approximation Factor),通常被表述为 2^{(n-1)/4}。
这个近似因子的含义是,对于任意一个n维格,LLL算法输出的第一个基向量 b₁ 的长度,最多是该格真实最短向量长度的 2^{(n-1)/4} 倍。即:
这个结果的得出,并非凭空而来,而是与第一章介绍的Hermite常数紧密相关。LLL算法可以被视为Hermite不等式的一个高效算法实现[9]。Hermite常数 γₙ 从理论上界定了格中最短向量长度的上界,即 λ₁(Λ) ≤ γₙ^{1/2} det(Λ)^{1/n}。LLL算法通过一系列的数学变换,确保了其输出的第一个向量 b₁ 的长度被限制在一个与 det(Λ)^{1/n} 相关的范围内,从而获得了上述的近似保证。
然而,这个看似坚实的性能边界,却隐藏着一个致命的缺陷: 近似因子随格维度n的增加而指数级恶化 。当n较小时(如n=2或n=3),2^{(n-1)/4} 是一个非常小的常数,这意味着LLL算法几乎能找到精确的最短向量。但随着n的增大,这个因子迅速膨胀。例如,当n=100时,因子增长到 2^{99/4} ≈ 2^{24.75},这意味着输出向量可能比真实最短向量长约25倍。而在现代格密码系统中,维度n通常高达数百甚至上千,此时的近似因子将变得极其巨大,使得LLL算法在高维场景下几乎无法找到任何有意义的短向量。这一指数级增长的特性,是LLL算法在应对现代高维密码学挑战时失效的根本原因,也为后续章节将要介绍的更高级算法(如BKZ)留下了广阔的改进空间。
2.3 收敛性证明:势函数与多项式时间复杂度
一个算法如果没有终止的保证,其价值将大打折扣。LLL算法的另一项杰出成就,是其能够被严格证明在 多项式时间内终止 。这一证明的关键工具,是一个被称为“势函数”(Potential Function)的数学构造。
势函数的思想源于物理学中的能量最小化原理。在算法的每一次迭代中,我们都为当前的格基 B 赋予一个“能量”值 Φ(B)。这个能量值通常与格基的行列式 det(B) 的对数相关,例如 Φ(B) = log(det(B))。算法的设计确保了,在每一次有效的操作(无论是大小约简还是向量交换)之后,这个势函数的值都会 严格递减 。
具体来说,算法的迭代次数被证明与输入格基向量的最大长度 M 相关,其上限为 O(n log M)。由于每次迭代都包含对所有基向量进行大小约简的步骤,而每次大小约简的计算复杂度是 O(n²),因此总的时间复杂度被界定为 O(n³ * n log M) = O(n⁴ log M)。然而,考虑到在每次向量交换后都需要重新计算Gram-Schmidt正交化(其复杂度为 O(n³)),以及其他一些细节,LLL算法的标准时间复杂度被认为是 O(n⁵ log² M)。
这个证明的精髓在于,它通过一个单调递减的势函数,为算法的运行步数设定了一个理论上的上限。因为势函数的值是有界的(例如,初始值由输入向量长度决定),而每次迭代都使其值减小一个固定的量,所以算法不可能无限循环下去,它必然会在有限的、多项式数量的步骤后达到一个稳定的LLL约化基。这一严谨的收敛性分析,不仅确保了LLL算法的实用性,也为后续所有格基约减算法的设计与分析提供了方法论的基石。
3. LLL算法的实现:从步骤推导到伪代码详解
在第二章中,我们已经深入剖析了LLL算法的数学原理,明确了其目标是寻找一个满足大小约简和Lovász条件的格基。本章将从理论走向实践,详细阐述LLL算法的具体执行步骤,并提供一份结构清晰、注释丰富的伪代码。我们将采用“手把手教学”的方式,通过一个具体的低维格实例,追踪算法从初始化到最终输出的完整流程,直观展示格基的动态变化。更重要的是,我们将揭示在每次向量交换后,如何高效地更新Gram-Schmidt正交化结果,这是实现LLL算法高效运行的关键细节,也是初学者容易忽略的地方。
3.1 算法核心步骤的详细推导
LLL算法的执行过程可以被分解为三个紧密协同的核心步骤:Gram-Schmidt正交化、大小约简和Lovász条件检查与向量交换。这三个步骤构成了算法的迭代循环,共同驱动格基向“短且近似正交”的理想状态演进。下表对这三个步骤进行了总结,为读者提供一个清晰的概览。
|
步骤名称 |
数学操作/定义 |
算法目标/作用 |
|
Gram-Schmidt正交化 |
给定基向量 b_1, ..., b_n,计算正交向量 b_1^*, ..., b_n^*,其中 b_i^* = b_i - Σ_{j=1}^{i-1} μ_{i,j} b_j^*,投影系数 μ_{i,j} = ⟨b_i, b_j^*⟩ / ⟨b_j^*, b_j^*⟩。 |
将原始格基转换为一组正交向量,用于分析基向量的长度和线性相关性,是后续约简和交换步骤的决策依据。 |
|
大小约简 (Size Reduction) |
对于当前处理的向量 b_i,从 j = i-1 到 1 依次执行 b_i = b_i - round(μ_{i,j}) * b_j。 |
确保 b_i 在 b_j^* 上的投影长度不超过 ||b_j^*|| / 2,从而使基向量尽可能短且与其他基向量“解耦”。 |
|
Lovász条件检查与向量交换 |
检查 δ * ||b_{k-1}^*||² ≤ ||μ_{k, k-1} b_{k-1}^* + b_k^*||²。若不满足,则交换 b_{k-1} 和 b_k。 |
确保基向量的长度不会出现“急剧下降”的情况,维持基的“健康”结构,保证算法能有效收敛到一个约化基。 |
第一步:Gram-Schmidt正交化 (Gram-Schmidt Orthogonalization, GSO) [20]
GSO是LLL算法的“眼睛”,它为算法提供了评估当前格基质量的精确数学工具。在算法的每一次迭代开始时,都会对当前的格基进行一次GSO,计算出一组正交向量 b_1^*, ..., b_n^* 及其对应的投影系数 μ_{i,j}。这个过程的数学定义如表格所示,其核心思想是从每个原始向量 b_i 中减去它在所有先前正交向量 b_1^*, ..., b_{i-1}^* 上的投影,从而得到一个与它们都正交的新向量 b_i^*。
GSO的结果至关重要,因为它揭示了原始基向量之间的线性关系。投影系数 μ_{i,j} 量化了 b_i 与 b_j 的线性相关性,而正交向量 b_i^* 的长度则反映了 b_i 在其张成的子空间中独立贡献的大小。通过分析这些正交向量的长度,算法可以判断是否找到了一个足够短的向量,而投影系数则直接决定了大小约简步骤是否需要执行。
第二步:大小约简 (Size Reduction)
大小约简是LLL算法的“修剪刀”,其目标是消除基向量之间的线性冗余,使它们变得更短。算法从第二个基向量 b_2 开始,依次处理到第 n 个基向量 bn。对于每一个向量 bi,算法会检查它与所有之前的基向量 b1, ..., b_{i-1} 的投影系数 μ_{i,j}。
如果某个投影系数的绝对值 |μ_{i,j}| 大于 1/2,算法就会执行一次关键的调整:将 bi 减去 round(μ_{i,j}) 倍的 bj。这里的 round 函数表示四舍五入到最近的整数。这个操作的几何意义是,将 bi 沿着 bj 的方向“移动”一个整数步,从而显著缩短其长度。
这个过程必须按照 j 从 i-1 到 1 的逆序进行。这是因为当我们调整 bi 以消除它与 b_{i-1} 的相关性时,这个调整后的 bi 会影响它与所有更早的基向量(如 b_{i-2}, ..., b1)的投影系数。逆序处理确保了在处理 bj(j < i-1)时,bi 已经是与 b_{i-1} 大小约简后的向量,从而保证了每一步调整的有效性。
第三步:Lovász条件检查与向量交换
Lovász条件检查是LLL算法的“导航仪”,它防止算法在约简过程中误入歧途。在完成对 bk 的大小约简后,算法会检查Lovász条件是否满足。该条件的数学表达式为:
其中,δ 是一个介于 1/4 和 1 之间的参数,通常取 0.75。
这个条件的几何意义在于,它确保了 bk 在由 b1, ..., bk 张成的子空间中,其独立贡献(即 bk^* 的长度)不会比前一个向量 b_{k-1} 的独立贡献短太多。如果条件不满足,说明 bk 可能比 b_{k-1} 短,这违反了我们希望基向量按长度递增排列的“健康”结构。此时,算法会交换 b_{k-1} 和 b_k 的位置。
交换操作看似简单,但其影响深远。交换后,索引 k 会减一(通常减到 max(k-1, 1)),这意味着算法需要重新处理这个新的 bk(原 b_{k-1}),以确保它与新的前一个向量(原 bk)满足大小约简和Lovász条件。这种“回溯”机制是LLL算法能够有效收敛的关键,它类似于高斯消元法中的行交换,确保了算法的稳定性和最终结果的质量。
3.2 完整伪代码与关键实现细节
为了将上述理论步骤转化为可执行的逻辑,我们提供一份完整的LLL算法伪代码。这份伪代码清晰地展示了算法的迭代结构,包括外循环和内循环,并对每个关键变量和操作进行了详细注释。
def LLL(basis, delta=0.75):
"""
输入: basis - 一个n维格的初始基(n个m维向量构成的矩阵)
delta - Lovász参数,取值范围在(1/4, 1)之间,通常取0.75
输出: 一个LLL约化后的基
"""
n = len(basis) # 格的维度
Q = gram_schmidt(basis) # Q是正交化后的向量组,Q[i]对应b_i^*
k = 2 # 从第二个向量开始处理,索引从1或2开始均可,此处假设从2开始
while k <= n:
# 内循环:对b_k进行大小约简,从b_{k-1}到b_1
for j in range(k-1, 0, -1):
mu = projection_coefficient(basis[k], Q[j]) # 计算mu_{k,j}
if abs(mu) > 0.5:
basis[k] = basis[k] - round(mu) * basis[j] # 执行约简
Q = gram_schmidt(basis) # 约简后必须重新计算正交化结果
# 检查Lovász条件
if delta * norm_squared(Q[k-1]) > norm_squared(mu_k_minus_1 * Q[k-1] + Q[k]):
# 交换b_{k-1}和b_k
basis[k-1], basis[k] = basis[k], basis[k-1]
# 交换后,必须重新计算正交化结果,因为Q的顺序也变了
Q = gram_schmidt(basis)
# 回溯,重新处理新的b_{k-1}(原b_k)
k = max(k-1, 1)
else:
# 条件满足,处理下一个向量
k = k + 1
return basis
关键实现细节分析:
- 正交化的动态更新: 伪代码中最关键的细节是,每当基向量发生改变(无论是大小约简还是向量交换),都必须立即重新计算Gram-Schmidt正交化的结果 Q。这是因为 Q 是基于当前基向量的线性组合,任何基向量的变动都会直接影响后续所有正交向量的计算。如果不进行更新,算法将基于过时的、错误的 Q 值进行决策,导致整个约简过程失败。
- 索引的处理: 算法从第二个向量(k=2)开始处理,这是因为第一个向量 b1 是其自身正交化的结果(b1^* = b1),无需约简。在向量交换后,k 被设置为 max(k-1, 1),这确保了算法不会回溯到第一个向量之前,从而维持了迭代的有效性。
- 投影系数的计算: projection_coefficient 函数是实现大小约简的核心,它必须精确计算 mu_{k,j} = ⟨basis[k], Q[j]⟩ / ⟨Q[j], Q[j]⟩。这个值直接决定了 basis[k] 需要减去多少倍的 basis[j] 才能变得更短。
- 范数平方的计算: norm_squared 函数用于计算向量的欧几里得范数的平方,即 ⟨v, v⟩。在Lovász条件检查中,使用范数平方而非范数本身,可以避免计算平方根带来的浮点精度损失和计算开销,是一种高效且数值稳定的做法。
3.3 时间复杂度分析:理解算法的效率
LLL算法的一个核心优势在于其多项式时间复杂度,这意味着它在理论上可以在合理的时间内处理大规模的格问题。其标准的时间复杂度被分析为 O(n^5 log^2 M),其中 n 是格的维度,M 是输入基向量中分量的最大绝对值。
复杂度的构成解析:
- 单次迭代的复杂度: 算法的每次迭代主要由两部分组成。首先是大小约简的内循环,它对 k 个向量进行处理,每个向量需要 O(k) 次投影系数计算和约简操作,因此内循环的复杂度是 O(k^2)。其次是Gram-Schmidt正交化的计算,这是一个 O(n^3) 的操作,因为它需要对 n 个向量进行处理,每个向量的计算涉及与之前所有 n 个向量的内积。
- 总迭代次数: 算法的迭代次数被证明与输入向量的长度 M 呈多项式关系[10][20]。这一结论的证明依赖于第二章中提到的“势函数”(Potential Function)。势函数是一个在每次有效操作(约简或交换)后都严格递减的函数,其递减量与 log M 相关。由于势函数的值是有界的,算法不可能无限迭代下去,其总迭代次数被界定为 O(n log M)。
- 综合复杂度: 将单次迭代的复杂度 O(n^3) 与总迭代次数 O(n log M) 相乘,得到LLL算法的总体时间复杂度为 O(n^4 log M)。然而,考虑到在每次迭代中,算法可能需要多次调用大小约简步骤,以及更精细的势函数分析,最终的复杂度被确认为 O(n^5 log^2 M)。
实际性能表现:
尽管LLL算法在理论上是高效的,但在高维场景下,其 n^5 的复杂度增长依然十分显著。例如,当维度 n 从10增加到20时,计算量将增加32倍。因此,在处理现代格密码系统(其维度通常在数百甚至上千)时,原始的LLL算法显得力不从心。
为了提升算法的实际效率,研究人员提出了多种工程优化和理论改进。这些优化包括:
- 浮点近似与截断: 在计算投影系数 μ 时,使用浮点近似而非精确的有理数计算,可以显著加快速度。同时,对 μ 的值进行截断(例如,只保留到小数点后几位),可以避免因数值过大而导致的计算不稳定。
- 部分列向量规约: 一些改进算法(如文献[13]中提到的方法)通过减少每次迭代中需要处理的向量数量,来降低基向量交换和尺度规约的次数,从而在高维情况下节省计算时间。
- 自适应δ值: 调整Lovász参数 δ,例如在算法初期使用较小的 δ 以加快收敛,在后期使用较大的 δ 以保证输出质量,这种自适应策略可以在一定程度上平衡效率与结果质量。
综上所述,LLL算法的实现是一个理论严谨、细节精巧的过程。通过对其核心步骤的推导、伪代码的详解以及时间复杂度的分析,我们不仅理解了如何将一个数学算法转化为代码,更深刻地认识到了其在密码学应用中的潜力与局限性。这为我们在下一章中探讨LLL算法在破解经典密码系统中的具体应用,奠定了坚实的实践基础。
4. LLL算法的密码学应用:从理论到实战案例
在前三章中,我们已经系统地学习了格的基础概念、LLL算法的数学原理及其具体实现。理论的价值最终体现在实践的应用上。本章将聚焦于LLL算法在密码学领域的强大威力,通过三个经典的实战案例,将抽象的数学理论与具体的密码分析问题紧密结合。我们将依次探讨LLL算法如何破解Merkle-Hellman背包密码系统、攻击低公钥指数的RSA以及分析早期的NTRU密码系统[28]。每个案例都将遵循“问题背景 -> 问题建模 -> LLL约简 -> 结果分析”的完整链条,旨在传授一种将复杂密码学问题转化为格问题的核心思维方式,让读者深刻体会到LLL算法作为密码分析“瑞士军刀”的巨大潜力。
4.1 破解Merkle-Hellman背包密码系统
Merkle-Hellman背包密码系统是密码学历史上第一个基于NP难问题的公钥加密方案,其安全性根植于经典的子集和问题(Subset Sum Problem)[27]。该系统的核心思想是,私钥由一个“超递增序列”(Superincreasing Sequence)构成,而公钥则是通过一个模乘法变换将私钥伪装成一个看似随机的“普通序列”。尽管子集和问题在最坏情况下是计算上不可行的,但LLL算法的出现,为破解特定参数下的Merkle-Hellman系统提供了一种有效的多项式时间方法。
问题建模:将子集和问题转化为格问题
攻击的关键在于将求解子集和的问题,巧妙地转化为在一个精心构造的格中寻找最短向量的问题。假设我们拥有Merkle-Hellman的公钥 ,其中每个 是私钥超递增序列 经过模乘法变换得到的。我们的目标是恢复私钥 或直接解密密文。
构造格的方法之一是利用正交格技术。我们构造一个 的矩阵 ,其前 行是单位矩阵 的前 行,最后一行是公钥向量 。即: $$ B =
$$ 这个矩阵 定义了一个 维的格 。
LLL约简与结果分析
当我们对这个格基 应用LLL算法时,算法会输出一个LLL约化基 。根据LLL算法的性质,这个约化基的第一个向量 是格中最短的非零向量之一[11]。
在Merkle-Hellman的特定参数下,这个最短向量 具有特殊的结构。它可以表示为:
其中,向量 恰好是满足 的一个解。这里的 是模乘法变换中的一个关键参数。这个解向量 正是我们恢复私钥 所必需的陷门信息。通过对 进行进一步的分析和处理,攻击者可以推导出原始的超递增序列 ,从而完全掌控私钥,破解整个密码系统。
4.2 攻击低公钥指数RSA:Coppersmith方法简介
RSA是现代公钥密码学的基石,其安全性传统上被认为依赖于大整数分解的困难性。然而,当RSA的公钥指数 选择过小时(例如 ),LLL算法与Coppersmith方法的结合,为攻击者提供了一种绕过分解难题、直接恢复明文的有效途径。
问题背景与建模:从模幂运算到多项式方程
在标准的RSA加密中,密文 是明文 的 次幂模 的结果,即 。当 非常小时,这个等式可以被视为一个关于 的低次多项式方程。Coppersmith方法的核心思想,就是将这个模 的多项式方程求解问题,转化为一个在特定格中寻找短向量的问题[29][30][31]。
具体来说,考虑 的情况。我们可以将方程 重写为 ,其中 是某个未知的整数。这可以看作是一个二元一次不定方程。为了应用LLL算法,我们需要构造一个格,使得这个方程的解 对应格中的一个短向量。
一个有效的构造方法是使用格 。这个 的矩阵定义了一个二维格。在这个格中,向量 满足 。当 远小于 时,这个向量的长度主要由 决定,因此是一个短向量。
LLL约简与结果分析
通过对格基 应用LLL算法,我们可以得到一个约化的基。在这个约化基下,第一个向量 是格中最短的向量之一。这个短向量的第一个分量,就极有可能是我们要寻找的明文 。
Coppersmith方法的威力不仅限于已知完整密文的情况,它还能有效应对“部分已知明文”的场景[30]。例如,如果攻击者知道明文 的前 个比特,那么可以构造一个多项式 ,其中 是已知的前缀。通过求解 的小根,LLL算法可以帮助恢复完整的明文 [30]。这一方法的成功,再次彰显了LLL算法在将数论问题转化为格几何问题并进行高效求解方面的卓越能力。
4.3 分析早期NTRU密码系统:私钥恢复攻击
NTRU是一种基于格的公钥密码系统,其设计初衷是为了提供高效且安全的加密和签名方案。然而,在其早期的一些实现中,由于参数选择不当,私钥被设计为格中的一个短向量,这使得LLL算法能够轻易地找到这个短向量,从而实现私钥的恢复。
问题建模:公钥作为格的一部分
NTRU的私钥由两个短多项式 和 构成,而公钥 则是 的结果,其中 是一个大素数。攻击的目标是从公钥 和模数 中恢复出私钥多项式 。
为了实现这一点,攻击者可以构造一个 的格基矩阵 ,其中 是多项式的次数。该矩阵的形式如下:
这里, 是 的单位矩阵, 是一个 的矩阵,其元素由公钥多项式 的系数构成。这个构造使得私钥多项式 对应的向量,成为了该格中的一个非常短的向量[29]。
LLL约简与结果分析
当对这个格基 应用LLL算法时,算法会迅速找到一个LLL约化基。由于私钥向量 在格中异常短,它很可能就是LLL算法输出的第一个基向量。一旦攻击者获得了这个短向量,就相当于直接恢复了私钥 。
这个案例深刻地揭示了格密码系统设计的敏感性。私钥的短性是NTRU安全性的核心,但如果这种短性在格结构中表现得过于突出,就会成为致命的弱点。现代NTRU密码系统通过精心设计参数,确保私钥向量在极高维度的格中依然是“足够短”但绝非“最短”的向量,从而有效抵御了LLL算法的攻击。这也从侧面反映出,LLL算法虽然强大,但在应对现代高维、大参数的格密码系统时,其能力已受到极大限制。
5. LLL算法的局限性与高级变体:从历史走向未来
在第四章的实战案例中,LLL算法展现了其作为密码分析工具的强大威力,成功破解了Merkle-Hellman背包密码系统、攻击了低指数RSA,并揭示了早期NTRU的安全隐患。然而,这些辉煌的成就主要集中在低维或中等维度的格上。当我们将目光投向现代密码学,特别是旨在抵御量子计算攻击的后量子密码(Post-Quantum Cryptography, PQC)时,LLL算法的固有局限性便清晰地暴露出来。本章将客观分析LLL算法在高维场景下的性能瓶颈,阐明其为何在现代密码系统面前显得力不从心,并系统介绍其更强大的继任者——块Korkine-Zolotarev(BKZ)算法,以及近年来涌现的其他高级变体,最后展望格基约减算法在后量子时代的前沿研究方向。
5.1 LLL算法的固有局限性:高维困境
LLL算法的核心价值在于其多项式时间复杂度,这使其能够在理论上处理任意维度的格问题。然而,理论上的可行性与实际应用中的效率是两回事。LLL算法最致命的局限性,在于其输出质量的理论保证——近似因子,会随着格维度的增加而呈现指数级的恶化。
回顾第二章的结论,LLL算法输出的第一个基向量 b₁ 的长度,在最坏情况下被保证不超过格中真实最短非零向量长度 λ₁(Λ) 的 2^{(n-1)/4} 倍。这个因子看似微小,但在高维空间中却极具破坏性。例如,当格的维度 n 达到100时,近似因子增长至约 2^24.75,意味着算法找到的向量可能比真实最短向量长约25倍。而当维度攀升至500时,这个因子将膨胀为 2^124.75,这是一个天文数字。在密码学语境下,一个“短”向量通常指其长度与格的“平均”向量长度(由行列式的n次方根衡量)相当或更短的向量。LLL算法在高维下的近似因子如此巨大,以至于其输出的第一个向量几乎必然是一个“长”向量,完全失去了作为最短向量有效近似的意义。
这种指数级增长的性能边界,直接导致了LLL算法在现代高维密码系统中的失效。当前,NIST后量子密码标准(如Kyber和Dilithium)所采用的格参数,其维度普遍超过500,甚至达到768。在这样的维度下,LLL算法的近似因子早已超出任何安全阈值,无法为攻击者提供有价值的短向量。因此,LLL算法虽然是格基约减的开创性工作,但其性能在高维场景下急剧下降,已不再是评估或攻击现代格密码系统的有效工具。它更像是一把在低维空间中锋利无比的“瑞士军刀”,但在高维空间的“迷宫”中,其刀刃变得钝拙,无法切开厚重的安全壁垒。
5.2 BKZ算法:LLL的强力进化
为了克服LLL算法在高维下的性能困境,研究人员发展出了更强大的算法,其中最具代表性的便是块Korkine-Zolotarev(BKZ)算法。BKZ算法可以被视为LLL算法的一个深度优化和强力进化,其核心思想是摒弃LLL对全局基的“温和”调整,转而采用一种“分而治之”的策略,在局部的、更大的块内求解最短向量问题(SVP)。
与LLL算法每次只关注相邻的两个向量不同,BKZ算法引入了一个关键参数—— 分块大小(Blocksize β) 。在算法的每一轮迭代中,它会选取一个包含β个向量的连续块,并在这个由β个向量张成的子格中,使用更强大的SVP求解算法(如基于格基枚举的算法)来寻找一个尽可能短的向量。找到这个短向量后,算法会将其插入到块的第一个位置,并重新计算该块内的Gram-Schmidt正交化和投影系数,然后再处理下一个块。这个过程类似于在一个长链条上,分段对每一段进行高强度的“锻造”,使其变得更加坚固和有序。
BKZ算法的优势是显而易见的[25][32]。通过在局部块内求解SVP,它能够获得比LLL算法在全局范围内所能保证的更好的约减效果。其输出质量的近似因子被证明为 2^{O(β^{1/2})},这意味着通过增加分块大小β,我们可以显著提升算法找到的短向量的质量。例如,当β=50时,近似因子约为 2^O(√50) = 2^O(7),而当β=200时,因子则变为 2^O(√200) = 2^O(14)。尽管BKZ的计算复杂度也会随着β的增加而急剧上升,但它在输出质量上的提升,使得它成为评估和攻击现代格密码系统的标准工具。在NTRU私钥恢复等攻击中,BKZ算法的效率比经典LLL算法高出 n^2 倍,这充分证明了其在高维场景下的实用性。
5.3 现代高级变体与前沿研究(2024-2025)
BKZ算法虽然强大,但在处理极高维度的格时,其计算开销依然巨大。近年来,研究人员在BKZ的基础上进行了持续的优化和创新,涌现出了一系列现代高级变体,它们在效率、精度和适用范围上不断刷新着领域的认知边界。
DeepBKZ与flatter算法 是其中的杰出代表。这些算法通过引入随机化策略、动态精度管理以及迭代压缩等技术,极大地提升了格基约化的效率。例如,DeepBKZ通过随机化块的处理顺序,避免了算法陷入局部最优的陷阱,从而在更短的时间内找到全局更优的解。而flatter算法则专注于优化正交化过程,通过更精细的精度控制,使得格基在约减过程中变得更加“平坦”,即向量长度更加均衡,这有助于后续算法更快地收敛。在2025年的SVP挑战赛中,基于这些高级变体的算法成功刷新了200维格的最短向量求解世界纪录,展示了其卓越的性能。
原-对偶随机采样规约(RSR) 则是另一个前沿方向[33]。该算法跳出了传统的单纯优化原始格基的框架,巧妙地结合了原始格(Primal Lattice)和其对偶格(Dual Lattice)的信息。通过在对偶格上进行随机采样,RSR能够为原始格的约减过程提供更丰富的指导信息,从而在某些情况下,以更低的计算复杂度获得比BKZ更优的输出质量。这一思想对于分析那些依赖于对偶格性质的密码系统(如某些基于格的签名方案)具有特别重要的意义。
这些高级算法的发展,不仅是技术层面的进步,更是现代格密码系统安全参数设定的基石。截至2025年,为了确保能够抵御LLL、BKZ及其高级变体的攻击,推荐的格密码参数通常要求维度 n ≥ 512,模数 q ≥ 2^n。这意味着,算法的每一次突破,都直接推动了密码学标准的演进。由此可见,格基约减算法的研究正处在一个从历史走向未来的关键节点,它既是理解后量子密码安全性的核心,也是推动该领域不断发展的强大引擎。
6. 总结:LLL算法的历史地位与现代价值
本报告系统性地介绍了Lenstra-Lenstra-Lovász(LLL)格基约减算法,旨在为初学者构建一个从基础概念到高级应用的完整知识体系。通过对算法原理、实现步骤及密码学应用的深入剖析,我们不仅揭示了LLL算法的内在机制,更阐明了其在密码学发展史上的关键作用与当代局限。
6.1 核心思想与理论基石:从概念到实现的闭环
LLL算法的核心思想是通过迭代优化,将一个任意的格基转化为一个“短且近似正交”的约化基。这一目标的实现,依赖于两个协同工作的数学条件:大小约简条件确保了基向量间的线性相关性被有效“修剪”,而Lovász条件则通过向量交换机制,维持了基的整体“健康”结构,从而保证了第一个基向量的长度能够有效逼近理论最短值。
算法的理论保证主要体现在两个方面。首先,其输出质量由一个明确的近似因子界定,这为评估其在特定问题中的求解能力提供了量化依据。其次,借助势函数这一分析工具,LLL算法的多项式时间复杂度得到了严格证明,确保了其在实践中的可行性与效率。从概念到实现的完整链条,清晰地展示了LLL算法是如何将抽象的数学原理转化为具体、可执行的计算步骤的。
6.2 密码学应用的历史丰碑与现实边界
LLL算法在密码学领域的应用,是其理论价值的集中体现。历史上,该算法成功地破解了Merkle-Hellman背包密码系统,揭示了其设计上的根本性缺陷。在RSA密码分析中,LLL算法为攻击低公钥指数变体提供了有效的数学工具。在NTRU密码系统的早期发展阶段,LLL算法也被用于发现其安全隐患,推动了该系统的迭代与完善。这些案例共同构成了LLL算法在密码学史上的重要地位,证明了它是分析和评估基于格或可转化为格问题的密码系统安全性的强大武器。
然而,LLL算法的应用能力存在明确的现实边界。其最致命的局限性在于,随着格维度的增加,其近似因子呈指数级增长。这一特性导致在现代高维密码系统中,LLL算法输出的向量长度与真实最短向量长度之间的差距变得无法接受,从而使其在密码分析中的实际效用急剧下降。截至2025年,对于维度超过500的后量子密码标准(如Kyber、Dilithium),LLL算法已不再构成有效威胁,其攻击能力在这些系统面前完全不切实际。
6.3 从LLL到BKZ:算法演进与后量子密码的未来
LLL算法的局限性催生了更强大的继任者——块Korkine-Zolotarev(BKZ)算法。BKZ通过引入块处理策略,显著提升了在高维空间中的约减效率和输出质量,成为当前评估和攻击现代格密码系统的主流工具。近年来涌现的DeepBKZ、flatter等高级变体,进一步优化了BKZ的核心思想,持续刷新着格基约减的性能极限,这些前沿研究成果是当前格密码安全参数设定的基石。
基于本报告的分析,我们提出以下建议:对于初学者而言,LLL算法不仅是学习格基约减的起点,更是理解一种核心思维方式的关键——即如何将复杂的密码学问题巧妙地转化为格上的几何问题。这种转化能力是掌握现代密码分析与密码设计的根本。展望未来,格基约减算法的研究将持续作为后量子密码学发展的驱动力,推动算法性能不断提升,从而确保密码学标准在面对未来计算挑战时依然坚不可摧。
参考
[1] LLL Algorithm for Lattice Basis Reduction-arXiv电子打印档案库 https://arxiv.org/pdf/2410.22196
[2] Computing LLL-Reduced Basis for Orthogonal Lattice | Semantic Scholar-Semantic Scholar https://www.semanticscholar.org/paper/Computing-LLL-Reduced-Basis-for-Orthogonal-Lattice-Chen-Stehl%C3%A9/ba43461f5494f1d8350bbba341950c507b32c033
[3] Using LLL-Reduction for Solving RSA and Factorization Problems-SpringerLink https://link.springer.com/chapter/10.1007/978-3-642-02295-1_10
[4] 2105.14695v2 Halt Properties and Complexity Evaluations for Optimal DeepLLL Algorithm …-arXiv https://arxiv.org/pdf/2105.14695
[5] Storage efficient algorithm for Hermite Normal Form using LLL | Semantic Scholar-Semantic Scholar https://www.semanticscholar.org/paper/Storage-efficient-algorithm-for-Hermite-Normal-Form-Cho-Lee/0e5d9211a4283f2cd6276a6a71aeae214f244ba5
[6] Optimizing preprocessing method of recursive-BKZ lattice reduction algorithm …-IEEE Xplore https://ieeexplore.ieee.org/document/7391915
[7] Explicit Formula for Gram-Schmidt Vectors in LLL with Deep Insertions and Its Applications-Springer https://link.springer.com/doi/10.1007/978-3-319-76620-1_9
[8] A New Self-dual BKZ Algorithm Based on Lattice Sieving-ResearchGate https://www.researchgate.net/publication/377139180_A_New_Self-dual_BKZ_Algorithm_Based_on_Lattice_Sieving
[9] Hermite’s Constant and Lattice Algorithms | SpringerLink-Springer https://link.springer.com/chapter/10.1007/978-3-642-02295-1_2
[10] LKH 算法java lll算法是什么-51CTO博客 https://blog.51cto.com/u_16213657/8893229
[11] SVP算法:格密码学的基石与抗量子计算的未来-CSDN博客 https://blog.csdn.net/weixin_46582876/article/details/145825577
[12] 改进的GPS模糊度降相关LLL算法-维普网 http://www.cqvip.com/qk/90069X/200703/25318857.html
[13] 一种有效的LLL规约算法-武汉大学学报 http://ch.whu.edu.cn/article/doi/10.13203/j.whugis20140484
[14] (PDF) Modelling the LLL Algorithm by Sandpiles-rd.springer.com https://rd.springer.com/chapter/10.1007/978-3-642-12200-2_25
[15] 一种改进的LLL模糊度降相关算法-武汉大学学报 http://ch.whu.edu.cn/cn/article/id/3125
[16] On the relationship between the method of least squares and Gram–Schmidt orthogonalization …-ojs.utlib.ee https://ojs.utlib.ee/index.php/ACUTM/article/view/ACUTM.2011.15.01
[17] 探索后量子安全:基于格加密技术的未来密码学展望-腾讯云 https://cloud.tencent.com/developer/article/2456311
[18] 格密码LLL算法:如何解决最短向量SVP问题(1)-CSDN博客 https://blog.csdn.net/forest_LL/article/details/123733641
[19] 量子安全编码深度解析 | 2025年技术更新版-CSDN博客 https://blog.csdn.net/blns_yxl/article/details/145876143
[20] 格密码LLL算法:如何解决最短向量SVP问题(2)-CSDN博客 https://blog.csdn.net/forest_LL/article/details/123795268
[21] 格约减技术的工作原理-CSDN博客 https://blog.csdn.net/qq_53809201/article/details/143998403
[22] 格基约化:LLL算法-CSDN博客 https://blog.csdn.net/weixin_44885334/article/details/122271439
[23] 经典论文阅读笔记-CSDN博客 https://blog.csdn.net/qq_44925830/article/details/123318831
[24] 刷新世界纪录的研究分享!数学物理学院院长丁津泰教授在Banks in Quantum Days 2025引发关注-西交利物浦大学 https://www.xjtlu.edu.cn/zh/news/2025/10/dingjintaijiaoshouzaibanksinquantumdays2025yinfaguanzhu
[25] BKZ2.0:提升格安全估计的利器-博客 https://wenku.csdn.net/column/6at7z603wq
[26] 26、LLL算法:有效的丢番图逼近工具-CSDN博客 https://blog.csdn.net/sre5engineer/article/details/153707268
[27] An Improved Attack on the Basic Merkle–Hellman Knapsack Cryptosystem-ResearchGate https://www.researchgate.net/publication/333119868_An_Improved_Attack_on_the_Basic_Merkle-Hellman_Knapsack_Cryptosystem
[28] 格密码7:LLL算法在密码分析中的应用-CSDN博客 https://blog.csdn.net/Jason_Cheng667/article/details/138682093
[29] NTRU签名方案(NSS)的密码分析-博客 https://wenku.csdn.net/column/cs0vp33eqx
[30] Coppersmith 方法-哔哩哔哩 https://www.bilibili.com/video/BV1jj41167tU/
[31] 基于格的Rsa 密码分析-河南师范大学 https://www.htu.edu.cn/_upload/article/files/f4/12/59d62d1c4ec197797e0e5d30c958/f4a5e3ad-a2eb-4250-8262-43a2e308374d.pdf
[32] 【翻译】BKZ 2.0: Better Lattice Security Estimates 论文翻译-CSDN博客 https://blog.csdn.net/qq_42667481/article/details/121023474
[33] 19、格基规约算法的进展与优化-CSDN博客 https://blog.csdn.net/sre5engineer/article/details/153707242

LLL格基约减算法:原理、实现与密码学应用分析
浙公网安备 33010602011771号