格密码学习(一)

最近几天学习了格密码,于是写篇博客记录一下,当然其中不乏一些本人的错误理解,还望多多指正,感谢!


在讲格之前,先了解一下基向量和矩阵。

学过线性代数应该知道,一组基是由各个线性无关向量组成。

例如在直角坐标系中,任何一个向量都可以由(1,0)和(0,1)这两个向量任意组合而成,那么称这两个向量为基底向量。

三维空间中,基底向量为(1,0,0)和(0,1,0)和(0,0,1)。

扩展到n维空间,就有基底向量(1,0,0,……,0),(0,1,0,……,0),……(0,0,0,……,1)。

当然基底向量并不是唯一的,只要是一组线性无关向量,并且满足空间中任一项量能由该组向量表示,就可以称为基向量。

矩阵

矩阵可以理解为一组向量的集合,即矩阵$$A = \{\vec{i_1},\vec{i_2},……,\vec{i_n}\},$$$\vec{i_j}$为m维向量,$j∈[1,n]$。
$$
A =\left[\matrix{\vec{i_1}\\vec{i_2}\\…\\vec{i_n} }\right]
=\left[
\matrix{
a_{11}&a_{12}&…&a_{1m}\\
a_{21}&a_{22}&…&a_{2m}\\
\\…&…&…&…\\
a_{n1}&a_{n2}&…&a_{nm}\\
}\right]
$$

格可以理解为n维空间上的基向量的线性组合,仍可认为是一个向量,表示形式为矩阵。

举个例子:

格$L=\{a_1\vec{r_1}+a_2\vec{r_2}+…+a_n\vec{r_n}|a_i∈Z\}$,可表示为

$$
L =\left[\matrix{a_{1}&a_{2}&…&a_{n}\}\right]
\left[\matrix{\vec{i_1}\vec{i_2}\…\vec{i_n} }\right]
=\left[
\matrix{a_1\vec{r_1}+a_2\vec{r_2}+…+a_n\vec{r_n}}\right]
$$
但是,并不是所有的向量都是格。(这个有点不好表述)

例如,整数格如下所示:

$\vec{AC}$是整数格,但$\vec{AB}$不是整数格。

可以把格理解为某空间中特定的点,例如只能是下图当中已标好的离散的点:

格的Determinant

格可以写成矩阵的形式,于是它的Determinant(行列式)代表其行列式的值,但一般不叫作行列式,而是组成格的向量所围成图形的面积或者体积。

最短距离

最短距离$λ$表示格中点与点之间的最短距离。
$$
λ_1 = min||\vec{x}-\vec{y}||,\vec{x},\vec{y}∈格L,\vec{x}≠\vec{y}\\
=min||\vec{x}||,\vec{x}∈格L,\vec{x}≠\vec{0},\vec{y}为原点o
$$
记$λ_i$为第i短的距离,则有$λ_1≤λ_2≤…≤λ_n$。

距离函数

任意一个点t(可以不在格L上)到最近的格点的最短距离的函数,记作$μ(t,L)$。

覆盖半径

以格L中所有的格点为圆心,逐渐扩大其半径,使得能覆盖整个空间,此时的半径就是覆盖半径$μ$。

格密码中的一些难题

最短向量问题(SVP)

给定格$L$中的一组基$B$,找到这组基构成的一个格点$Bx:x$,使得该格点到0坐标点的距离最近,即
$$
||\vec{Bx}|| = λ_1
$$

可以理解为找到一组整数$[x,y]$,使得新构成的向量
$$
\vec{Bx} =\left[\matrix{x&y\}\right]
\left[\matrix{\vec{a}\\vec{b}\}\right]
=x\vec{a}+y\vec{b}
$$
满足$||\vec{Bx}-\vec{0}|| = ||\vec{Bx}||=λ_1$。

最近向量问题(CVP)

给定连续空间中的任意一个点$\vec{t}$,在格空间$L$中找到一个格点$\vec{Bx}$,两点距离最短,即$||\vec{Bx}-\vec{t}||$最小,由覆盖半径定义可知,$||\vec{Bx}-\vec{t}||≤μ$。

利用格进行通信

根据CVP,假设我们信息加密后是格点$\vec{Bx}$,然后进行噪音干扰(可以理解为加了一个向量),变成了$\vec{t}$。这样别人就很难从$\vec{t}$破解出明文。

尝试分析CVP问题

由于CVP在笛卡尔坐标系整数格中很好求解,只需要向上或向下取整即可,因为该空间中的基向量都是互相垂直的。故在解决没有正交基的格中,我们将其基正交化,构造出正交基,并利用正交基划分格空间,使得每个格点都在长方形的正中心,

那么对任意一个非格点$\vec{t}$,求其最近向量为格点$\vec{Bx}$,它们之间的距离一定不会超过长方形对角线的一半。

从图中可以看出,在内圈中的非格点,其最近向量都在圆心处,但对于外圈中的非格点,可能存在多解问题(例如黄线上的某些点)


参考:

Lattice学习笔记01:格的简介 - 知乎 (zhihu.com)

Lattice学习笔记02:格中难题 - 知乎 (zhihu.com)


格密码学习(一)
http://example.com/2022/04/10/CTF/格密码学习(一)/
作者
gla2xy
发布于
2022年4月10日
许可协议