格密码与线性代数

目录

一. 幺模矩阵

二. Gram-Schmidt 正交化

三. 矩阵分解

四. 格基本区

五. 对偶格基

六. 矩阵伪逆

七. 正定矩阵

八. 矩阵转置

九. 奇异值分解(SVD分解)


格密码中格基是矩阵,格点是向量。本文章梳理一些格密码常用到的一些线性代数的知识点。

一. 幺模矩阵

对格基乘以整数幺模矩阵,会得到新的格基,该格基形成的格点与原来的格点一样。幺模矩阵U\in Z^{m\times m}满足|det(U)|=1。幺模矩阵的逆U^{-1}\in Z^{m\times m}依旧为幺模矩阵。

二. Gram-Schmidt 正交化

将格基的一列看成一个向量,也就是V=\lbrace v_1,\cdots,v_k\rbrace\in R^n。假定Gram-Schmidt 正交化是按顺序进行的,正交化后记作\tilde V=\lbrace \tilde v_1,\cdots,\tilde v_k\rbrace,可以将\tilde v_i看成向量v_i的分量。对格密码而言,最重要的性质则是\tilde v_ispan(v_1,\cdots,v_{i-1})垂直。

三. 矩阵分解

对格基矩阵V可作如下分解:

V=QDU

其中Q\in R^{n\times k}为正交阵,D\in R^{k\times k}为对角阵(对角线的值均大于等于0),U\in R^{k\times k}为上三角矩阵且对角线元素的值均为1。

通常格基中的向量都是线性独立的,所以根据线性代数的基础,我们知道这种分解也是唯一的。而且Gram-Schmidt 正交化后向量的长度与矩阵D对角线元素的值是有关系的,也就是||\tilde v_i||=d_{i,i},其中d_{i,i}为矩阵D对角线元素的值。

四. 格基本区

给定任意格基V=\lbrace v_1,\cdots,v_n\rbrace,可形成格基本区。如果把该基本区进行平移,让原点处于该基本区的中心,也就是所谓的origin-centered parallelepiped,如下:

P_{1/2}(V)=V\cdot [-\frac{1}{2},\frac{1}{2}]^n

五. 对偶格基

原格基为V,对偶格基为V^*,利用如何公式可计算对偶格基:


V^*=V^{-t}=(V^{-1})^t

通俗来讲就是先对格基求逆,再转置,就是对偶格的格基。整个过程非常丝滑。

其实对偶格Gram-Schmidt 正交化的结果与原来格基也有关系,先上结论:

\tilde v_i^*=\tilde v_i/||\tilde v_i||^2

其实就是向量长度互为倒数,如下:

||\tilde v_i^*||=1/||\tilde v_i||

六. 矩阵伪逆

有些方阵X不能直接求逆,这个时候就需要利用伪逆(有的时候也叫Moore-Penrose伪逆),为方便后续解释,暂时记为X^{+}。原矩阵和伪逆矩阵需要满足:

(XX^+)X=X

反过来也经常利用:

X^+(XX^+)=X^+

需要注意的是XX^+不等于单位阵,但是XX^+X^+X互为对称矩阵(其实就是转置相等)。

在格密码中,矩阵和伪逆矩阵的空间是不变的,也就是:

span(X)=span(X^+)

七. 正定矩阵

给定一个对称矩阵\Sigma\in R^{n\times n},对任意向量x\in R^n,都满足如下不等式:

x^t\Sigma x>0

则称该矩阵\Sigma为正定矩阵(positive definite),通常记为\Sigma>0

当然,如果不等式改为:

x^t\Sigma x\geq 0

则称该矩阵为半正定矩阵,记为\Sigma\geq 0

实际上,正定矩阵一定可以求逆,并且逆矩阵也为正定矩阵,也就是\Sigma^{-1}>0

但是半正定矩阵不一定可以求逆,只能求伪逆,其伪逆也为半正定矩阵,也就是\Sigma^+\geq 0

在格密码论文中,如果看到\Sigma_1>\Sigma_2,其实是想表达两个矩阵相减为正定矩阵(\Sigma_1-\Sigma_2)>0。这个结论换成半正定矩阵也是成立的。另外,如果原矩阵满足这种不等关系,逆矩阵也有类似的结论。换句话说,如果\Sigma_1\geq \Sigma_2\geq 0,可得\Sigma_2^+\geq \Sigma_1^+\geq 0

八. 矩阵转置

“七”中谈到的对称矩阵有一个非常简单的实现方式。给定任意矩阵B,将该矩阵的转置乘以本身,得到新的矩阵则为对称矩阵。也就是,\Sigma=BB^t。另外其实很好证明,这个矩阵\Sigma则是一个半正定矩阵,因为:

x^t\Sigma x=\langle B^tx,B^tx\rangle=||B^tx||^2\geq 0

当然,熟悉线代的小伙伴都知道,以上运算要求矩阵B非奇异(nonsingular)。

这个结论可以反推。如果已知某矩阵\Sigma>0,那么该矩阵存在平方根,也就是B=\sqrt \Sigma。根据半正定矩阵的性质,任意\Sigma\geq 0都存在平方根,而且求平方根的过程多项式时间复杂度内可以解决(比如Cholesky分解法)。

九. 奇异值分解(SVD分解)

奇异值分解,英语为singular value decomposition,经常在格密码中简称为SVD分解。奇异值分解主要是给非方阵准备的,对任意矩阵B\in R^{n\times k},可以作如下分解:

B=QDP^t

其中Q\in R^{n\times n},P\in R^{k\times k}均为正交矩阵,D\in R^{n\times k}为对角阵。对角线上的值通常以降序排列,并且每个值均大于等于0。其实实际上,对角线上的值就是矩阵B的奇异值s_i\geq 0。如果想求最大的奇异值,通常利用如下:

s_1(B)=max_u||Bu||=max_u||B^tu||

其中,u为任意单位向量u\in R^k

你可能感兴趣的:(线性代数,格密码)