目录
格密码的基础是研究格点上的困难问题,这种格点使用抽象代数的观点则是上的子群。格密码近些年非常火热,主要由于以下几点:
密码学的基础是LWE(learning with errors)和SIS(short integer solution)问题,当然也包括这两个问题的环版本。通常Ring版本的计算效率会更高。这两个问题可以实现可证明安全,由此让密码学家前仆后继。
有关格密码基础可以参看我之前的博客。今天,可以从抽象代数的角度理解格点:m维的格可以看成上的离散加法子群。
其中,格的秩与矩阵的秩k类似,满足(在非满秩情况下,格的维度比最大的维度要小)。由此,给定格基,该格基由k个线性独立的m维列向量组成,对该格基进行整数倍线性组合即可形成格,如下:
当然,正常情况下,研究格密码的论文大多是满秩格,也就是常说的且(如果涉及格上高斯采样,有可能会出现非满秩格)。
2.2 对偶格
格形成的整个空间,通常叫做。如果从格上取一个格点,接着再取一个向量点,满足如下要求的点,称之为对偶格:
这个是从格点的角度看对偶格,还可以从格基的角度出发。
如果格非满秩,原始格的格基为B,那么对偶格的格基如下:
大家看这个式子可能有点复杂,其实就是伪逆。在满秩格下,对偶格的格基就是先求逆再转置,如下:
其实准确来讲,应该分为q-ary垂直格和q-ary格。
很多格密码的方案都是建立在q-ary格上的,之所以起这个名字是因为一定是q-ary垂直格的子格。
我们先来看一个矩阵。对于正整数n和q,选出(密码学通常要求该矩阵随机取),这个矩阵是公开的,如果有一个向量z乘以该矩阵为0向量,那么把满足此条件的向量z全部都组合在一起,就称之为q-ary垂直格,如下:
很明显可以得出一定是该格的子格。
同样,先选出一个矩阵,接着遍历向量,将两者相乘,得到新的向量z,即可形成q-ary格,如下:
实际上,q-ary格和q-ary垂直格互为q倍的对偶格,如下:
在这里就不证明了。
当然,部分论文类推,也会出现“1-ary”格,也就是:
此格既包含整数,又包含小数,可得为其子格。
如果我们将中的0改为任意向量,就会出现平移格或者叫陪集格(coset),如下:
密码学三大会中经常会出现q-ary格,这里梳理一些常用的相关结论。
随机取一个,假定q-ary垂直格的某个格基为。
对任意幺模矩阵,都有:
理解:该定理描述了幺模矩阵与q-ary垂直格的关系。左边代表对每个q-ary垂直格进行幺模矩阵变换,该新格的格基为。右边代表对矩阵A的变换,看q-ary格的原始定理可直接列出。
对任意可逆的方阵,q-ary垂直格都满足:
理解:矩阵可逆的话,可直接变为,与原来的q-ary垂直格等效。(注意矩阵H的顺序)
设定矩阵的列秩大于等于n,换句话说也就是矩阵A的列向量可构成。接着随机取矩阵以及矩阵,满足如下:
接着我们可以借助此性质对q-ary垂直格的矩阵A进行扩展,形成新的q-ary垂直格,该q-ary垂直格的格基为:
另外,我们知道格基是可以进行正交化的。其实S'正交化后的矩阵如下:
通过矩阵的表达形式不难看出,该矩阵的模长与原始格基S正交化的模长相等,也就是:
这个定理的证明需要用到很多线性代数的基础,如果有人感兴趣,后期再补上吧。