格密码学习笔记(四):格上公认难题

最短向量问题

格的每个量都定义了一个对应的计算问题。对于第一连续极小 λ 1 \lambda_1 λ1而言,其对应的计算问题为最短向量问题

定义 (Shortest Vector Problem,SVP)最短向量问题,给定一个基为 B \bm{B} B的格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到一个非零格向量 B x \bm{Bx} Bx,使得其长度最多为 ∥ B x ∥ ≤ λ 1 \| \bm{Bx} \| \leq \lambda_1 Bxλ1,其中 x ∈ Z k \bm{x} \in \mathbb{Z}^k xZk

在这里插入图片描述

以上图为例,基向量 ( b 1 , b 2 ) (\bm{b}_1, \bm{b}_2) (b1,b2)可以不是最短基向量,如果它们很长,那么此时为了找到最短格向量必须枚举所有格点,从而找到 ( 5 b 1 − 2 b 2 ) (5\bm{b}_1 - 2\bm{b}_2) (5b12b2)这个向量。对于多维格,目前没有SVP的多项式可行解法,也没有对应放松问题的多项式可行解法。

SVP的放松问题 SVP γ \text{SVP}_\gamma SVPγ

定义 (Shortest Vector Problem, SVP γ \text{SVP}_\gamma SVPγ)最短向量问题,给定一个基为 B \bm{B} B的格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到一个非零格向量 B x \bm{Bx} Bx,使得其长度最多为 ∥ B x ∥ ≤ γ λ 1 \| \bm{Bx} \| \leq \gamma \lambda_1 Bxγλ1,其中 x ∈ Z k \bm{x} \in \mathbb{Z}^k xZk

在这里插入图片描述

举一个例子,如果 γ \gamma γ值取2,问题就变成在浅红色超球体表面找到一个格点。

最近向量问题

定义 (Closest Vector Problem,CVP)最近向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B)和一个目标点 t \bm{t} t,找到一个格向量 B x \bm{Bx} Bx,使得它与目标点之间的距离小于 μ \mu μ,即 ∥ B x − t ∥ ≤ μ \| \bm{Bx} - \bm{t} \| \leq \mu Bxtμ

在这里插入图片描述

同样,由于这里的基向量可以非常长,所以必须穷举格点。

CVP的放松问题 CVP γ \text{CVP}_\gamma CVPγ

定义 (Closest Vector Problem, CVP γ \text{CVP}_\gamma CVPγ)最近向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B)和一个目标点 t \bm{t} t,找到一个格向量 B x \bm{Bx} Bx,使得它与目标点之间的距离小于 μ \mu μ,即 ∥ B x − t ∥ ≤ γ μ \| \bm{Bx} - \bm{t} \| \leq \gamma\mu Bxtγμ

最短线性无关向量问题

定义 (Shortest Independent Vectors Problem,SIVP)最短独立向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到 n n n个线性独立的格向量,使得这些向量的长度都要小于或等于第 n n n连续极小 λ n \lambda_n λn,即 max ⁡ i ∥ B x i ∥ ≤ λ n \max_i \| \bm{B}\bm{x}_i \| \leq \lambda_n maxiBxiλn

在这里插入图片描述

以上图为例,若 n = 2 n=2 n=2,则画出 λ 2 \lambda_2 λ2对应的超球体,在该超球体内找到2个线性无关向量。

SIVP的放松问题 SIVP γ \text{SIVP}_\gamma SIVPγ

定义 (Shortest Independent Vectors Problem, SIVP γ \text{SIVP}_\gamma SIVPγ)最短独立向量问题,给定一个格 L ( B ) \mathcal{L}(\bm{B}) L(B),找到 n n n个线性独立的格向量,使得这些向量的长度都要小于或等于第 n n n连续极小 λ n \lambda_n λn,即 max ⁡ i ∥ B x i ∥ ≤ γ λ n \max_i \| \bm{B}\bm{x}_i \| \leq \gamma \lambda_n maxiBxiγλn

基于格的可靠信息传输

这个不是密码方案,而是格编码理论里的东西。通过这里例子,可以简单了解CVP、SVP和SIVP的简单应用。

发送者将消息 m m m编码为格上的点 B x \bm{Bx} Bx,将其传输给接收方。由于传输信道不稳定,受到噪声干扰,接收方只能收到 t \bm{t} t。为了得到正确的 m m m,接收方通过求解CVP问题恢复出 B x \bm{Bx} Bx,然后通过求解SVP问题得到 λ 1 \lambda_1 λ1,接着判断 ∥ B x − t ∥ < λ 1 / 2 \| \bm{Bx} - \bm{t} \| < \lambda_1/2 Bxt<λ1/2是否成立(注意,若矫正距离等于 λ 1 / 2 \lambda_1 / 2 λ1/2,则 t \bm{t} t有2个候选格点,这两个候选格点组成最短格向量,此时 t \bm{t} t是没有意义的,需要发送者重新传输消息)。

最后,SIVP问题在这里也有所适用。如果在传输的过程中为了压缩数据而使用了向量量化(Vector Quantization),在重建向量的时候则需要用到SIVP的解来修复误差,从而避免量化失真。这些简单了解一下即可

在这里插入图片描述

CVP问题的两种版本

再次系统性的定义一下CVP问题。

定义 给定一个格 L \mathcal{L} L,一个随机点 t \bm{t} t,以及一个距离 d d d,假定 μ ( t , L ) ≤ d \mu(\bm{t}, \mathcal{L}) \leq d μ(t,L)d,CVP问题即求解一个合理的格点 B x \bm{Bx} Bx使得这个格点到 t \bm{t} t的距离小于或等于 d d d

  • BDD(Bounded Distance Decoding)问题
    BDD问题规定了 d < λ 1 ( L ) / 2 d < \lambda_1(\mathcal{L}) / 2 d<λ1(L)/2。此时,问题至多只有一个解,并且就是距离 t \bm{t} t最近的格点。

  • ADD(Absolute Distance Decoding)问题
    ADD问题规定了 d ≥ λ 1 ( L ) / 2 d \geq \lambda_1(\mathcal{L}) / 2 dλ1(L)/2。此时,问题至少会有一个解,但是不一定是距离 t \bm{t} t最近的格点。

下图给出了各种困难问题之间的联系,大致分为3类。其中,SIVP和ADD是等价的,可用于构造单向函数公钥加密等密码学应用。

在这里插入图片描述

ADD问题规约到SIVP问题上

注意:下文是一个“不太准确”的规约,主要介绍思路,后面章节再对此进行详细介绍。

在这里插入图片描述

已知SIVP问题的解 V = { v 1 , … , v n } \bm{V} = \{ \bm{v}_1, \dots, \bm{v}_n \} V={ v1,,vn},求解ADD问题。由于是最短线性无关向量,所以可以把整个格空间划分成很多个小区域,接着看 t \bm{t} t落在哪个小区域,对其取整得到相应的格点即可作为ADD问题的解。

如下图所示,假设每个小区域的最大边长度为 λ n \lambda_n λn,每条边都是最大边;对于正交格而言,小区域的直径为 n λ n \sqrt{n} \lambda_n n λn;小区域的直径最大长度不会超过 n λ n n\lambda_n nλn,即半径存在一个上限,有 ∑ i 1 2 ∥ v i ∥ ≤ ( n / 2 ) λ n ≤ n μ \sum_i \frac{1}{2} \| \bm{v}_i \| \leq (n/2) \lambda_n \leq n\mu i21vi(n/2)λnnμ。而 t \bm{t} t到小区域各顶点的距离不会超过半径,这个半径可以用来确定ADD的 d d d值。

在这里插入图片描述

格的几何构造

接下来具体解释如何用SIVP问题的解找到CVP问题的解。

在分析格困难问题时,几何结构时一种非常强大的工具。

举个例子,对整数格 Λ = Z n \Lambda = \mathbb{Z}^n Λ=Zn,求解CVP问题十分简单。给定任意一个点 t \bm{t} t C V P ( Λ , t ) = ⌊ t ⌉ \mathsf{CVP}(\Lambda, \bm{t}) = \lfloor \bm{t} \rceil CVP(Λ,t)=t。即直接用 t \bm{t} t不断地减去各个基向量 b i \bm{b}_i bi,然后以此判断 t \bm{t} t落在哪个区域,最后在该区域各顶点中找到CVP问题的解。只要 Λ \Lambda Λ的基向量是正交的,那么很容易求解出CVP问题的解。

当然,也存在某些格,它们的基向量不正交。此时,用SIVP问题的解找到CVP问题的解需要用一些技巧,即施密特正交化

Gram-Schmidt正交化

下文链接中的视频给出了施密特正交化的一个可视化例子。

如何理解施密特(Schmidt)正交化 - 知乎

对原本格基 B \bm{B} B施加Gram-Schmidt正交化,得到 B ∗ \bm{B}^* B。可以看到, B ∗ \bm{B}^* B的体积与 B \bm{B} B的体积一样,即 d e t ( Λ ) = ∏ i ∥ b i ∗ ∥ ≤ ∏ i ∥ b i ∥ \mathrm{det}(\Lambda) = \prod_i \| \bm{b}^*_i \| \leq \prod_i \| \bm{b}_i \| det(Λ)=ibiibi,它同样划分了格空间。

在这里插入图片描述

格的取整问题

B ∗ \bm{B}^* B划分格 Λ \Lambda Λ,得到下图。
在这里插入图片描述

移动一下,使格点处于基本区域的正中心。
在这里插入图片描述

好了,现在 B ∗ \bm{B}^* B中的向量是正交的,那么可以通过加减操作判断点 t \bm{t} t落在哪个区域内,区域中心的格点有很大可能性就是CVP问题的解。比如下图,如果是落在小圆圈内的点a,那么灰色区域中心的格点即CVP问题的解;如果是落在大圆圈内、小圆圈外的点b,CVP问题的解有可能是隔壁区域中心的格点,而灰色区域中心的格点是错误解。

在这里插入图片描述

致谢

  • Simons格密码公开课官网

Mathematics of Lattices - Simons Institute for the Theory of Computing

  • 哔哩哔哩中英双语视频(字幕组:重庆大学大数据与软件学院 后量子密码研究小组)

【中英字幕】Simons格密码讲座第1讲:格的数学定义_哔哩哔哩_bilibili

  • Steven的密码学笔记

Lattice学习笔记02:格中难题

猜你喜欢

转载自blog.csdn.net/u014134327/article/details/129382661