格的基本概念
数学研究:Lagrange,Gauss,Hermite等研究二二次型理论,开普勒猜想等,Minkowski提出了数的几何理论(几何数论)。
算法研究:Lagrange-Gauss算法,LLL算法等。
密码分析:分析背包问题,小指数RSA问题等。
密码设计:NTRU方案,Ajtai-Dwork方案,抗量子密码体制。
最短向量问题定义
密码分析:分析背包问题,小指数RSA问题等。
密码设计:NTRU方案,Ajtai-Dwork方案,抗量子密码体制。
内积的定义
定义:设R是实数集,是m维欧氏空间,中的元素用列向量表示。定义中的内积
此内积定义了中向量的长度,即对,。
格的定义
定义:设是中n个线性无关的向量(m≥n),Z为整数集,称
为中的一个格,简记为L,称为格L的一组基,m为格L的维数,n为格L的秩。
例:
一维的情况:,
二维的情况:,。
格的另外一种定义
定义:格L是中秩为n的离散加法子群。
注:离散是指对任意的,存在的一个邻域,使得,可以验证格的两种定义是等价的。
Gram-Schmidt正交化
输入:中的一组线性无关的向量
输出:一组正交向量。
1. ,
2. for i=2,3,...,n do
,其中,。
注记
通常不一定是格L的基。
存在关系式:
特别地,格L的行列式满足:
,。
格上的最短向量问题
给定格基定义的格L。格中最短非零向量的长度记为。格上的最短向量问题(Shortest Vector Problem,简称SVP)有如下的变体:
求解SVP:求解格点使得。
优化SVP:计算。
判定SVP:给定一个有理数r,判断是否满足。
SVP问题在随机归约下被证明是NP-困难问题。
注记
上述三个版本的问题是多项式时间等价的。SVP问题在随机归约下被证明是NP-困难问题。
近似SVP问题:给定逼近因子,上述问题中的入1替换成。
后量子密码学
1994年,基于量子计算机模型,Shor提出了概率多项式时间算法求解因子分解问题和离散对数问题。
后量子密码学建立在能抵抗量子攻击的困难问题上,格上的些困难问题(例如SVP问题)是潜在的候选对象。
后量子密码学建立在能抵抗量子攻击的困难问题上,格上的些困难问题(例如SVP问题)是潜在的候选对象。
Blichfeld定理
问题:一般情况下能否在理论上给出的一个上界?
定理:设L是中的满秩格。如果可测集满足,那么存在两个不同的向量,使得。
例:
Minkowski凸体定理
定理:设L是中的满秩格,S是中一个可测的关于原点对称(即)的凸集(即),若S的体积,则中有非零向量。
证明:考察,有。根据Blichfeld定理,存在使得。
因为,并且S是凸体,所以。
Minkowski第一定理
定理:设L是中的满秩格,是n维空间中半径为1的单位球的体积,那么。
证明:设是以原点为中心,以为半径的开球。一方面,根据的定义,推出:
。另一方面,因为S中包含一个n维的边长为。
综合上面两个不等式推出定理成立。
应用举例:平方和表示
定理
设素数,则存在整数a,b使得。
设素数,则存在整数a,b使得。
证明
因为素数,所以存在e使得。考虑由向量,生成的格L。计算可知。根据Minkowski第一定理, 存在非零格点使得:
。
又因为:,所以。
求解格的最短向量
Minkowski第一定理给出了格中最短向量长度的一个上界。
问题:如何构造出具体的短向量(或者近似的短向量)?如何构造出一组较好的格基(约化基)?
高维的情形:LLL算法
问题:如何构造出具体的短向量(或者近似的短向量)?如何构造出一组较好的格基(约化基)?
1维:辗转约化
2维的例子:投影+辗转约化
考虑1维满秩格。
1982年,A. K. Lenstra,H. W. Lenstra和L. Lovasz提出了一种格基约化算法能构造性地求出格L的一组LLL-约化基,他们的算法被称为LLL算法。LLL算法能够在多项式时间内求解近似因子为的短向量,具有广泛的应用。
存在非多项式时间算法可以找到n维格中长度更短的向量(或最短向量)。
投影映射
定义:给定中一组向量。定义投影映射为
注:
对任意,是向量x的与都正交的分量。
特别地,,。
LLL约化基
定义:给定实数,一组基称为约化的,如果满足
1. ;
2. 。
注:
- 如果,LLL算法可以在多项式时间内计算约化基。
- 第一个条件称为长度约化条件。
注记:
第二个条件称为Lovasz条件。由于,,上述条件又可写成:
。
因此Lovasz条件保证了的长度不会比的长度短太多。
注记
可以由给出的单位正交基表示:
,其中
根据约化基定,义中的长度约化条件,T中的参数满足。考虑T中的子矩阵。根据约化基定义中的Lovasz条件,这个子矩阵第二列的向量的长度和第一列向量的长度是差不多的。
LLL约化基的性质
定理:设是n维格L的一组约化基,那么
1. ;
2. ;
3. ;
4. 对L中任一线性无关向量组,一定有。
特别地,对L中的任意向量x,有。
2维的一一般情况:Lagrange-Gauss算法
1. 约化步:,此处;
2. 交换步:若,则交换;如果不是约化基,重复上述步骤。
注:
- 约化步是在投影方向上进行最大的整数倍约化,满足Gram- Schmidt正交化中的。
- 交换步是进行辗转约化。
LLL算法
LLL算法的正确性分析
- 算法的约化步是为了使得LLL-约化基的第一条性质成立。
- 算法的交换步是为了保证LLL-约化基的第二条性质成立。
- 因此,LLL算法停止时输出的是一组LLL-约化基。
LLL算法时间复杂度分析
定理:
若输入的基为,设,则LLL算法的时间复杂度是。
若输入的基为,设,则LLL算法的时间复杂度是。
注:
证明中的一个重要技巧是定义,然后考虑的变化情况。
LLL算法的应用举例
SageMath示例
- 多项式时间分解有理系数多项式。
- 当变量个数为常数时,多项式时间求解整数规划问题。
- 分析基于背包问题的密码体制。
- 求同余方程的小整数解。
- 分析特殊参数下的RSA密码体制。
注
基本方法:针对不同的问题,构造合适的格,将相应的问题转化为求解格中短向量问题。
基本方法:针对不同的问题,构造合适的格,将相应的问题转化为求解格中短向量问题。
问题1:背包问题
问题
背包问题(也称为子集合问题)是指给定集合和目标元素s,求解使得。
背包问题(也称为子集合问题)是指给定集合和目标元素s,求解使得。
- 背包问题被证明是NP-完全问题。
- 可以基于某些背包问题参数设计密码体制,例如Merkle-Hellman体制.
- 很多基于背包问题的密码体制是不安全的。
背包问题的初步分析
固定大整数,构造格L
如果子集合问题有解,那么是格L中的短向量。
例:
给定集合和目标元素,求解对应的背包问题。
选取N=1000,得到组合系数为。
问题2:同余方程的小整数解
给定次数为d的整系数多项式和因子分解未知的大模数N,求不超过一定上界的满足。
如果知道N的因子分解,应用孙子定理可以快速求解上述问题。
如果N的因子分解未知,Coppersmith提出了一种应用LLL算法的求解方法。
基本思路:应用LLL算法构造另外一个整系数多项式g(x)满足,而求解整系数多项式的整数根有高效的算法。
问题初步分析
考虑多项式的向量表示:
多项式的向量表示构成格:给定多项式,定义格。
如果对任意,都有,那么对任意。
模方程的转化
定理(Howgrave-Graham)
设是一个至多有w个单项式的多项式,h是正整数,如果:
1. ,这里,
2. 。
那么。
证明:验证,因为,所以。
Coppersmith算法框架
1. 构造合适的格。构造多项式,这里,满足性质:
2. 求解短向量。考虑格,求格中的一个短向量对应的多项式。
3. 模方程转化。验证如果Howgrave-Graham定理的条件成立,求解方程。
Coppersmith定理
设N是一个未知因子分解的整数,是N的一个因子,是一个单变量首一的次数为的多项式,那么可以找到方程的满足条件:的解,算法的时间复杂度是,这里是一个任意小的正数。
注记
- Coppersmith还设计了利用LLL算法求解二元模多项式方程小整数解的算法。
- 相关的求模多项式方程小整数解算法在RSA密码算法的分析中有很多应用。
- 例如假设RSA模数N=pq。其中p,q是比特长度相同的素数,如果知道p的高位(或低位)比特值,那么可以在多项式时间内分解N。