格密码基础:详解最短向量问题(SVP)以及攻击算法

目录

一. 最短向量问题

1.1 介绍

1.2 求解SVP问题

二. 近似最短向量问题

2.1 格上SVP问题

2.2 格上可解决的问题

Membership问题

Equivalence问题

三. 补充格密码中常用的缩写

总结


一. 最短向量问题

1.1 介绍

之前讨论过的闵可夫斯基第一定理表明:

任何秩为n的格\Lambda一定包含一个非零且长度不超过\sqrt{n}({det\Lambda})^{\frac{1}{n}}的向量

已给出的证明过程实际上不够全面,并没有给出找到此最短向量的准确算法。当然,这其实是一个公开的问题,目前还没有完全准确的算法找到此最短向量。

这也是格密码的最底层问题,如果有一天这个问题被解决了,那么格密码的大厦将轰然倒塌。今天我们来看下这个问题为何如此重要。

格密码基础:详解最短向量问题(SVP)以及攻击算法_第1张图片

为了讨论此类问题的计算复杂度,可以先定义下格的一种问题:最短向量问题,简写SVP。

已知格,找出最短向量,根据不同的目的性:

  • 找出最短向量叫做计算SVP问题
  • 计算出最短向量长度:优化SVP问题
  • 确定最短向量长度是否小于某个值:判定SVP问题

由此,可以将这种问题进行分类:

计算SVP:给定格基B,输出v\in L(B)满足\lVert v\rVert=\lambda_1(L(B))

优化SVP:给定格基B,输出\lambda_1(L(B))

判定SVP:给定格基B和实数r,判定\lambda_1(L(B))\leq r是否成立;

从计算复杂性角度来讲,以上三个问题的困难性是一样的。当任何一个问题有确定算法求解时,剩余的两个也可以求解。

1.2 求解SVP问题

求解 SVP 的常用算法是 BKZ 算法,。在使用 BKZ 算法求解 SVP 时, 需要将 SVP 精确求解算法嵌入 BKZ 算法的每一个基本模块作为子程序, 最终输出最短向量的近似解.需要注意的是,这个地方也只能输出近似解,也不能完全解决SVP问题。

当然,使用 BKZ 算法进行实际安全性分析, 并将其中内嵌的精确 SVP 求解算法的复杂度作为算法总的时间复杂度的评估方式称为 coreSVP方法, 这种方法是目前应用最广泛的格密码具体安全性评估方法.

SVP 精确求解算法主要有以下四类:

  • 枚举 (enumeration)
  • 筛法 (sieving)
  • 基于 voronoi 的方法 (voronoi-based approach)
  • 离散高斯抽样 (discrete Gaussian sampling)

目前有应用的当属枚举法和筛法,两者有各自的优缺点:

枚举的时间复杂度为指数级别2^{\omega (n)},空间复杂度为多项式级别poly(n);

筛法的时间和空间复杂度均为 2^{\theta(n)}

当然,这个地方的 n 都是代指格的维度. 相比于枚举算法, 筛法的时间复杂度更低, 因此是目前实用化格密码算法实际安全性评估中主要使用的 SVP 精确求解算法.

二. 近似最短向量问题

2.1 格上SVP问题

在实际应用中,大家更关心近似化的SVP问题,其中近似因子用\lambda\geq1表示。

计算SVP_\lambda:给定格基B,输出v\in L(B)满足\lVert v\rVert\leq\gamma\lambda_1(L(B))

优化SVP_\lambda:给定格基B,输出d满足d\leq\lambda_1(L(B))\leq\gamma d

GapSVP_\lambda:给定格基B和实数r,判定\lambda_1(L(B))\leq r\lambda_1(L(B))>\gamma r

以上所讨论的所有问题都是计算困难的,换句话说解决的算法需要指数复杂度。

2.2 格上可解决的问题

以下举几个在格密码中已经解决的问题:

Membership问题

给定格基B\in Z^{m\times m}和向量v\in Z^m,决定向量v是否属于L(B)

求解Bx=v可以看成求解n个变量,m个线性方程的系统 。显然,可以利用高斯消去法来求解:如果方程可求解,且解属于Z^n,则输出YES。

如果方程无解,则输出NO。

Equivalence问题

已知B_1,B_2\in Z^{m\times n},判定是否L(B_1)=L(B_2)

为了求解这个问题,需要计算两个条件:

B_1的每一列是否包含在L(B_2)中;

B_2的每一列是否包含在L(B_1)中;

如果L(B_1)=L(B_2),那么以上两个条件均满足。反过来,如果以上两个条件满足,则分别可确定:

L(B_1)\subseteq L(B_2)L(B_2)\subseteq L(B_1) 

可得L(B_1)=L(B_2)

实际上格中易解决的问题都有一个共同点:不包含格的几何性质。

三. 补充格密码中常用的缩写

SVP shortest vector problem,最短向量问题
CVP closest vector problem,最近向量问题
GSA geometry series assumption,几何序列假设
LLL Lenstra-Lenstra-Lovász 算法
BKZ block-Korkin-Zolotarev 算法
NNR natural number representation,自然数表示
RR restricted reduction,限制采样约化算法
RSR random sampling reduction,随机采样约化算法

总结

经典的密码学包括因子分解和离散对数,这两类问题在量子计算机中都可以被解决。

如果要抗量子的话,目前候选的密码算法包括基于纠错码,基于散列函数,多变量公钥密码,格密码,基于同源的密码。

这些密码系统的发展历程,可看如下图:

格密码基础:详解最短向量问题(SVP)以及攻击算法_第2张图片

由于密码体制的安全性依赖于困难问题的难解性,因此研究求解格中困难问题的算法是分析基于格的密码体制安全性的关键内容。而在格上的困难问题求解中,近似最短向量问题 (Shortest Vector Problem, SVP) 无疑是研究核心之一。

在安全性证明方面,基于随机格上的近似 SVP 问题的困难性,密码学家设计了多种加密、签名体制Hash 函数 LWE 等格上问题的难解性也都与随机格上的近似 SVP 问题的困难性紧密联系。

在安全参数估计方面,格基约化算法 BKZ 被用来分析 GGH NTRU 等密码体制的参数安全,而计算格上最短向量正是 BKZ 的子算法。

基于格的密码体制的安全性大多数都可以直接或间接地归结于随机格上近似 SVP问题的难解性,因此,推动近似 SVP 问题求解算法的效率提升对于密码体制安全性分析和参数选取具有重要的指导意义。 早在2010 年, TU Darmstadt 大学就发起了求解最短向量的挑战,通过该挑战检验各种 SVP 求解算法的实用性,并鼓励研究人员寻找实际中更有效的求解最短向量的方法。
 

你可能感兴趣的:(格密码,网络安全,线性代数,矩阵,几何学,安全,密码学,安全架构)