【格密码基础】旋转格的性质

目录

一. 回顾ZSVP问题

二. 基于ZSVP问题的密码系统

三. 格基旋转与Gram矩阵

四. 补充矩阵QR分解

4.1 矩阵分解

4.2 举例


前序文章请参考:

【格密码基础】详解ZSVP问题-CSDN博客

一. 回顾ZSVP问题

根据之前的讨论我们知道解决ZSVP问题的计算复杂度为:

2^{\frac{n}{2}+o(n)}

在实际应用中,可利用随机算法将ZSVP问题归约到y-SVP或者y-uSVP问题,其中\gamma\geq 1。在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

在本文章中,我们重点关注将格Z^n旋转后的格。

二. 基于ZSVP问题的密码系统

众所周知,如果ZSVP问题是困难的,那么就可以设计新的公钥密码方案(public key encryption)。

另外有两个显然可得的优点:

  1. Z^n旋转格非常的简单;
  2. 对应的格困难性假设也比较特别

在格Z^n中,任意两个相邻的格点距离为1,所以其译码半径(unique decoding radius)为1/2.另外,根据格密码的基础概念,格Z^n的行列式(determinant)也为1.

如果想设计一个比格Z^n更稠密的格,则可以选择:

Z^n\oplus \alpha Z^n

其中\alpha为缩放因子。选取不同的值,格的稠密程度也不一样。

当然利用ZSVP问题除了可以形成加密方案外,还可以形成签名方案(signature scheme)以及零知识证明(zero-knowledge proof).

在这些方案中,无一例外,都会涉及到worst case到average case的证明。当然也可以利用攻击算法来破解这些方案,比如对偶(dual)攻击。

其实在严格的格密码证明中,可证明安全的格基该怎么选一直是一个问题。目前学者很喜欢用离散高斯基(discrete Gaussian bases)。

由此便出现了接下来要讲的格基旋转。

三. 格基旋转与Gram矩阵

将格Z^n的格基进行正交变换之后的基记为格基B,其也可以看成Z^n旋转格的格基。

实际应用时,这种正交变换怎么选?

最直接的肯定是均匀且随机的选取了:

R\in O_n(R)

一方面,我们现在对格基矩阵B做一个运算,可以得到:

B^TB

在另一方面,我们先把格基做一个旋转,得到RB,接着再做同样的运算:

(RB)^TRB=B^TR^TRB=B^TB

很神奇,前后结果是一样的。其实实际上Gram矩阵就是:

G=B^TB

在以上我们将旋转矩阵R隐藏了。或者换句话说,Gram矩阵是抗旋转的(rotation independent)。

这个矩阵非常优秀,每个元素的值一定为整数(平方效果)。

由此我们又给出一个新的格密码困难问题:

给定矩阵G,且满足:

G=B^TB

求出特定的整数矩阵B\in Z^{n\times n}

这个问题也是困难的,更进一步将这个问题本质还是ZSVP问题的变式情况。

现在我们尝试思考一个问题,以上旋转格中旋转角度该怎么选?

一种方法是对Gram矩阵进行Cholesky分解。

另一种方法是满足如下等式:

B'=RB

上式子中,B'是上三角矩阵,R为正交变换R\in O_n(R)。根据矩阵QR分解的理解,以上等式中B'和B是一一对应的。实际上在格基的LLL约化算法中,也出现了QR分解。

由此可见QR分解的重要性,接下来我们将补充QR分解。

四. 补充矩阵QR分解

4.1 矩阵分解

如果一个矩阵m行n列,则可以认为该矩阵包含n个m维的列向量。

假如矩阵A有3列,则包含3个列向量,记为a,b,c

采用正交化的思想,可以将矩阵A变为一个正交矩阵Q,也就是包含3个列向量,记为q_1,q_2,q_3。通常转化为后的这3个列向量都是标准的正交向量,也就是长度均为1.

熟悉线性代数的同学都知道,这种变换过程也可以用一个矩阵来衡量。也就是矩阵A通过乘以另外一个矩阵,可以变为矩阵Q。

更加具体化,向量a可以用向量q_1表示;向量b可以用q_1,q_2表示;向量c可以用q_1,q_2,q_3表示。

来看一张投影图:

向量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.那么很明显可得:

q_1=(\frac{1}{\sqrt 2},0,\frac{1}{\sqrt 2})

接着去掉向量b在q1上的分量,可得:

将向量B标准化,使其长度为1,可得q2:

接着去掉向量c在q1和q2上的分量,可得:

可以发现向量C的长度本身就为1,所以无需标准化长度,可直接得到q3.

综合以上正交矩阵Q便可得:

第二步:计算上三角矩阵R

接着根据QR分解的公式,可分别计算:

q_1^Ta=\sqrt 2

q_1^Tb=\frac{1}{\sqrt 2}

q_2^Tb=\frac{1}{\sqrt 2}

q_1^Tc=\sqrt 2

q_2^Tc=\sqrt 2

q_2^Tc=\sqrt 2

由此,矩阵A完整的QR分解如下:

补充一个有意思的性质:上三角矩阵R的对角线处有个三个元素,其实对应着向量a,B,C的长度(q1,q2,q3标准化前的长度)。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值