目录
一. 回顾ZSVP问题
二. 基于ZSVP问题的密码系统
三. 格基旋转与Gram矩阵
四. 补充矩阵QR分解
4.1 矩阵分解
4.2 举例
前序文章请参考:
【格密码基础】详解ZSVP问题-CSDN博客
一. 回顾ZSVP问题
根据之前的讨论我们知道解决ZSVP问题的计算复杂度为:
在实际应用中,可利用随机算法将ZSVP问题归约到y-SVP或者y-uSVP问题,其中。在2023年论文[Duc23]中,出现了一个确定性的算法,没有近似因子。也就是直接从ZSVP问题归约到SVP问题。但遗憾的是,归约前格维度为n,归约后为n/2.
L´eo Ducas. Provable lattice reduction of Zn with blocksize n=2. Cryptology ePrint Archive, Paper 2023/447, 2023. https://eprint.iacr.org/2023/447. 5, 27
在本文章中,我们重点关注将格旋转后的格。
二. 基于ZSVP问题的密码系统
众所周知,如果ZSVP问题是困难的,那么就可以设计新的公钥密码方案(public key encryption)。
另外有两个显然可得的优点:
- 旋转格非常的简单;
- 对应的格困难性假设也比较特别
在格中,任意两个相邻的格点距离为1,所以其译码半径(unique decoding radius)为1/2.另外,根据格密码的基础概念,格的行列式(determinant)也为1.
如果想设计一个比格更稠密的格,则可以选择:
其中为缩放因子。选取不同的值,格的稠密程度也不一样。
当然利用ZSVP问题除了可以形成加密方案外,还可以形成签名方案(signature scheme)以及零知识证明(zero-knowledge proof).
在这些方案中,无一例外,都会涉及到worst case到average case的证明。当然也可以利用攻击算法来破解这些方案,比如对偶(dual)攻击。
其实在严格的格密码证明中,可证明安全的格基该怎么选一直是一个问题。目前学者很喜欢用离散高斯基(discrete Gaussian bases)。
由此便出现了接下来要讲的格基旋转。
三. 格基旋转与Gram矩阵
将格的格基进行正交变换之后的基记为格基B,其也可以看成旋转格的格基。
实际应用时,这种正交变换怎么选?
最直接的肯定是均匀且随机的选取了:
一方面,我们现在对格基矩阵B做一个运算,可以得到:
在另一方面,我们先把格基做一个旋转,得到RB,接着再做同样的运算:
很神奇,前后结果是一样的。其实实际上Gram矩阵就是:
在以上我们将旋转矩阵R隐藏了。或者换句话说,Gram矩阵是抗旋转的(rotation independent)。
这个矩阵非常优秀,每个元素的值一定为整数(平方效果)。
由此我们又给出一个新的格密码困难问题:
给定矩阵G,且满足:
求出特定的整数矩阵。
这个问题也是困难的,更进一步将这个问题本质还是ZSVP问题的变式情况。
现在我们尝试思考一个问题,以上旋转格中旋转角度该怎么选?
一种方法是对Gram矩阵进行Cholesky分解。
另一种方法是满足如下等式:
上式子中,B'是上三角矩阵,R为正交变换。根据矩阵QR分解的理解,以上等式中B'和B是一一对应的。实际上在格基的LLL约化算法中,也出现了QR分解。
由此可见QR分解的重要性,接下来我们将补充QR分解。
四. 补充矩阵QR分解
4.1 矩阵分解
如果一个矩阵m行n列,则可以认为该矩阵包含n个m维的列向量。
假如矩阵A有3列,则包含3个列向量,记为a,b,c
采用正交化的思想,可以将矩阵A变为一个正交矩阵Q,也就是包含3个列向量,记为。通常转化为后的这3个列向量都是标准的正交向量,也就是长度均为1.
熟悉线性代数的同学都知道,这种变换过程也可以用一个矩阵来衡量。也就是矩阵A通过乘以另外一个矩阵,可以变为矩阵Q。
更加具体化,向量a可以用向量表示;向量b可以用表示;向量c可以用表示。
来看一张投影图:
向量a与q1共线;
向量a,b与q1,q2共面;
同理,向量a,b,c与q1,q2,q3共体。
从图中,我们可以看出可以将向量b用分量q1,,q2来表示,具体分析如下:
同理向量c也可以用q1,q2和q3来表示,即为:
将以上转化过程表示为矩阵的运算则为:A=QR,如下:
其中R为上三角矩阵(upper triangular)。
4.2 举例
请将如下矩阵A进行QR分解,并写出计算过程:
解:
将矩阵A的第一列记作向量a,第二列为向量b,第三列为向量c,如下:
第一步:找出正交矩阵Q
已知q1与向量a共线,且长度为1.那么很明显可得:
接着去掉向量b在q1上的分量,可得:
将向量B标准化,使其长度为1,可得q2:
接着去掉向量c在q1和q2上的分量,可得:
可以发现向量C的长度本身就为1,所以无需标准化长度,可直接得到q3.
综合以上正交矩阵Q便可得:
第二步:计算上三角矩阵R
接着根据QR分解的公式,可分别计算:
由此,矩阵A完整的QR分解如下:
补充一个有意思的性质:上三角矩阵R的对角线处有个三个元素,其实对应着向量a,B,C的长度(q1,q2,q3标准化前的长度)。