格密码(二)

感谢B站空竹_CQU的分享,Simons教授讲的格的数学定义。原视频是中英文字幕版本,我是一个格密码小白,所以想参照中英文字幕,根据自己的理解,手打一遍加深记忆,如果侵权,请提醒一下,我立即删除!

在第一篇博客提到的量都和格的几何问题有关,每个量都定义了一个对应的计算问题。对于第一连续极小λ1,它对应的问题称为最短向量问题。
 
 
在这里插入图片描述

给定一个格,通常用基向量来表示,例如给定图上的两个向量b1,b2给定的基向量通常是很长的。即使这些基向量很长。如果能够取到它们所有的整数线性组合,那么就可以算出很多短向量来,可以让他们相互消去。
给定b1b2,是否能够构建出不能明显美剧出所有格点的格呢?
格点是无限多的,但是在无限多的格点中,又能不能找到最短的格点呢?
如果以原点为球心放置球,那么就可以不断增大球的半径,直到球触碰到一个格点为止。这就得到了这个问题的解,举一个例子:
 
 
在这里插入图片描述

在图上这个最短向量,就是取5b1-2b2得到的。基向量的线性组合表示最短向量的系数可以是任意大的,取决于给定的基向量,现在并没有解这个问题的可行算法。实际上也没有能够解近似版本的可行算法。
 
 
在这里插入图片描述

近似版本问题是对原问题的放松,在原问题中我们要找最短向量。也就是长度为λ1的向量,要找到长度不大于λ1的向量,现在我们允许找到的向量比λ1长,放松一个近似因子γ,那么我们就可以把这个球放大γ倍,这种情况下球就会变的很大。现在要求在这个放大的球中寻找出一个非零格点,这个格点不一定是最短的,但需要是一个短向量,在近似意义上是一个短向量。

但它不是近似意义上的格问题,它要确实是一个格向量,一定要确实在格上。

这个格向量的长度比最短向量长不了多少,这就是近似版本的最短向量问题。
对于足够小的近似因为来说,目前还没有多项式时间算法。要怎么直到这个γ已经足够小,使得解出这个问题很困难呢?

下面是另一个问题,和距离函数有关,称作最近向量问题:

 
 
在这里插入图片描述

给定一个格和目标向量t,同样如果只给这么多作为输入,我们也不能解出这个问题。
但这两种问题的区别在复杂度理论中研究已经有很多。估计距离的问题也是研究的很多的。
它相对来说简单一些,只需要估计距离或者长度的值。但是估计问题已经有足够的困难了。

还有最后一个问题,这个问题可能不那么受关注:
 
 

但是它是格密码中的核心问题。在这里插入图片描述它大概算是和格密码最有关系的问题了。这个问题和λn,也就是最后一个连续极小有关。叫做最短线性无关向量问题,在这个问题中,不只是需要找到长度最大为λ1的一个短的格向量。而是需要找到n格长度最大为λn的线性无关的格向量。这些向量可以都比λ1长。

也可以定义一个困难一些的版本,需要找到一系列线性无关的向量。它们的边长正好是λ1,λ2一直到λn。但一般来说我们只需要找到长度不大于λn的向量就可以了。

 
 
在这里插入图片描述

这是一个一般的格,输入是它的基向量,以原点为球心放置球,把半径增大到足够大,增大到λn。这个球里面就有n个线性无关的向量,我们可能想要找到它们,或者只是估计λn的值。

 
 
在这里插入图片描述
和前面一样,我们也考虑这个问题的估计版本,如上图所示。

 
 
以上就是格的基本定义,以及和格相关的一些量。下面我来描述一下这个问题的一个应用,这个应用不是密码学中的应用,而且很简单:在这里插入图片描述

在这里插入图片描述
在编码理论中,格在多天线系统中使用,用于错误校验码的符号。有很多天线在接受一个信号,我们在另一端也有接收天线,或者只有一个天线,用它接收不同的信号。天线的位置不同,几何性质也不同。传输得到的信号可能也有轻微不同,甚至可以用每个天线传输不同的信息,来合成所要传输的消息。

传输过程中可能有噪声,这种带噪声信道一般用宽的高斯分布来建模。把天线的位置看成是n维空间中的坐标,那么我们要传输的就是向量。我们接收到了这个向量的一个副本,但是它是带有一些错误的。
 
 
在这里插入图片描述

要纠正错误,还原出原始信息。还原发送过来的原视信息,这个问题正好就是找最近格点的问题。编码器编码的消息,也就是格点经过信道传输,接收到的消息带有一些错误。在这里插入图片描述
在这里插入图片描述

所以我们得到的是距离格点较近的点t。

在这里插入图片描述

我们要还原出格点,这样就找到了还原出原始消息的方法。

在这里插入图片描述

在这种情况下,最近向量问题就与解码问题相对应,这就是解码问题,要从接收到的带噪声消息中还原出原始消息。而最短向量问题用于估计编码的错误纠正能力,他要求计算出格点间的最短距离。在格编码中,如果噪声的长度大于格点间的最短距离的长度,不同的消息就会相互混淆。所以我们尽可能增加格的最小距离,防止不同的消息,不同的格点相互混淆。

SIVP问题也与编码中的标准问题相对应,与这个问题相关的是矢量量化的失真,而不是编码的应用。如果我们为了存储方便或者其它应用需求,要把任意的空间映射到离散的空间,那么所得到的格的覆盖半径λn等参数,就决定了要把输入点变成格点,所需的变换程度。

 
 

在这里插入图片描述

对于最近向量问题,有一些特殊的版本,这些版本与应用强相关。也与格在密码学中的应用强相关,这些就是最近向量问题的不同版本,考虑给定一个格和目标向量t,以及一个距离d,问题是找到与目标向量t距离小于d的格点。这里我们给定了一个目标距离,如果基向量B和距离都是任意的,就可以在d上做二分搜索,从而找到最近的格向量。所以给定这个额外的距离参数,一般来说不会有什么太大区别。但我们可以考虑限制这个距离参数,其中一种版本称作受限距离解码问题,它在CVP问题基础上对于距离施加限制,目标向量到格点的距离需要保证小于格的覆盖半径。也就是小于λ1/2这种情况下,解是唯一的,所以我们能够解码出原始消息。距离目标点距离小于d的点最多只有一个,这个问题比CVP问题简单,因为我们已经保证这样的点是存在的。如果目标向量距离格点足够近,那么就成了CVP问题了。

从直觉上来说,这让问题更加简单,因为当格点更近的时候,找到这个格点就会更简单,这个问题已经给出了关于最近格点的足够好的暗示。

另外一个版本有多种不同的叫法,有时叫做保证距离解码,有时像我们这里就叫做绝对距离解码。在这个问题中,要求距离d大于等于格的覆盖半径,这个问题的解不唯一,距离目标点距离小于μ的可能有多个点,而这次我们能够保证,不管给定的是哪个点,解一定存在。也就是我们一定能够找到距离这个点距离小于μ的格点。我们正是需要找到这样一个点,它不需要一定是距离目标最近的点。但需要在这个最差情况的上界以下。
这就和格上构建函数对应起来。在第一种情况下,函数是单射的,第二种情况下,函数是满射的。

 
 
在这里插入图片描述

那么这些问题是怎么相互联系的呢?
可以证明,存在一系列关系,把这些问题联系起来。其它一些结构会在,格问题的复杂度讲座中介绍。
在这里我只进行简要总结。
 
 

在这里插入图片描述

虽然我们还不知道如何证明每个问题和其它问题的联系,但是可以对他们进行分类,大致可以分为三类,SVP和CVP问题得到广泛关注。但我们不知道如何高效求解它们。
SIVP和ADD问题是等价的,这两个问题可用于构造单向函数和公钥加密,这些简单的密码学应用。这被Aitai在他最初的结构中应用。然后考虑其它类别的问题,在这些问题中,需要找到λ1到λn的长度,或者估计版本或者BDD问题。这些问题也可以在某种程度上证明是等价的。这些问题应用广泛,也存在从上到下的规约。这些问题是最近十年构建的格密码算法的基础。这里我只会介绍其中一个规约。
 
 
在这里插入图片描述来引出对偶格的介绍,这里列出的某些规约不会被实际应用。首先考虑简单的例子,也就是绝对距离,根据ADD到SIVP的规约,如果能够算出格上这n个线性无关向量。就能够估计出最近向量问题特定版本的解。

给定格L和目标向量t,找到离t不太远的格点,可以先解出格上的SIVP问题,找到n个线性无关的短向量。它们把整个空间划分成一格一格的区域,所以,如果直到一组好基,就能够把目标点取整到格点,只需按照v1v2这一组基计算t的坐标,然后对坐标取整,得到格上的一个点,这个格点到目标点的距离最多是基本区域的直径。而如果定义基本区域的向量长度最多是λn,那么这个直径最多就是nλn,如果这些向量是正交的,这个系数就是根号n。但是一般来说,如果这些向量近似于平行,这个系数就近似于n。

上面的哪个不是准确的规约,我们从一个问题规约到另一个问题的时候放松了一个因子n。但也可以显示出来两个问题之间的关系。那能不能类似地给出一个BDD问题的规约呢?答案是可以的。为了给出这个规约,需要用到对偶格,我们接下来就会讲到。

 
 
在这里插入图片描述

我们先继续,这是一个基向量,不是正交的简单例子。
在这种情况下,上面的取整过程产出的结果就不是那么好,但我们会讨论其中用到的技术,这些技术用于研究格上问题。

 
 
在这里插入图片描述

其中一个称作长度约简,给定两个基向量b1b2,以及空间中的一个目标点t。问题是能不能用b1b2构造出比t短的向量?
这很简单,只要不停减b1就可以了,存在一个以原点为中心,长度为b1的条形区域,可以通过上面的操作把t拉进这个区域。

对b2也可以如此操作,但此时得到的点一般来说会在上面第一个区域的外面。但在这个过程的每一步之后,所得到的向量都会变短。这个过程不会失败,向量总是会变短。然后得到在这些条形区域交集中的点,也就是在基向量定义的多面体内部。
 
 
在这里插入图片描述
注意这些多面体并不是b1,b2张成的多面体,它们的边都是与b1,b2正交的。至于为什么会正交,我们会在定义对偶格的时候做出解释。
 
 
在这里插入图片描述

上面提到的长度约简也可以用于定义格上的一些估计版本的算法。很多这些算法也同样是格上的几何性质,可以用正交投影来证明,Z^n的分析简单的多,所以理想上来说,我们想把一般的格变换到 Z^n上去。这可以用标准的Gram-Schmidt正交化过程来做,这个正交化算法输出一个向量序列b1到bn,可以记为bi*。而bi和前面的向量都是正交的,b1和b1*是一样的。但我认为,正交化中对b2的处理就是把b2向b1方向平移。
 
 
在这里插入图片描述

考虑由bi之前的向量张成的直线或者是超平面,这些超平面以bi为中心,通过减掉之前的向量,来使得b2变得尽量短。注意,施密特正交化是允许这个过程的,允许减去非整数系数的向量。所以当我们正交化b1,b2之后,得到的点可能不在格上,这些操作是在线性代数中的操作,在格上看上去不能很好的工作。因为我们得到的是格张成欧氏空间的一组正交基。
 
 
在这里插入图片描述

这些基不是格的基,因为由这组基并不能得到格的所有点。而且这组基的线性组合还能得到不在格上的点。但是正交化还是很有用,例如,我们可以计算这些正交向量,来计算格的行列式。

 
 

在这里插入图片描述

我们还能通过这些正交向量的长度来计算,通过这些基向量的长度的积,我们还能得到格的行列式的一个简单的界。最后一点,我们可以通过正交化过程来对格点进行取整。
 
 

在这里插入图片描述

下面讲对偶格,从代数的角度来看,对偶格的定义有多种不同形式。其中一点,我认为与向量空间中的定义是类似的。实数上的向量空间是一个向量的集合,这个集合对加法和数乘是封闭的。在这个向量空间中,可以把实数作用于向量,向量空间的对偶记作V^V,可以抽象地定义为,从向量空间到实数的线性函数集合。这些实线性函数可以简单地写成数量积的形式。

他们从V映射到R,以向量y作为输入,有一个向量x定义这个线性函数,也就是y和x的点乘。这就构成了向量空间v到实数的线性函数,对偶格可以类似定义,使用格上的线性函数的集合来定义,这个集合是向量空间的一个子集,里面的线性函数把格点映射到整数。所以我们只想要能够产生整数的线性函数,而不是任意的线性函数。

这些函数也可以表示成格张成的空间中的向量,但这些向量不一定是格向量,存在这样的函数,把格点映射到整数,如果我们这样来表示对偶格,那它就是格张成的空间中的一个向量集合。

这个集合中的向量与任意格点的乘法得到的结果为整数。

在下面的一些例子,考虑Z^n这个格,它的对偶格是什么?
与Z^n中的格点做乘法总能得到整数,这些向量就是 Z^n中的向量,它们是一样的。

 
 
在这里插入图片描述

所以如果取整数向量,那么它与整数向量的数量积(屏幕上的点为重合的点,并于区分,所以不在同一个位置),如果取的点,坐标中有非整数,那么乘法运算得到的坐标里面也就有非整数,也就不在对偶格里面了。

首先我们先来计算Z^n的对偶,这很简单,现在做一个线性变换。旋转这个格,所得到的结果是什么?
 
 
在这里插入图片描述

旋转操作不会改变数量积,取两个向量旋转同样的角度,计算数量积,得到的结果不变,对偶格也旋转了,所以我们还是得到了Z^n。
 
 
在这里插入图片描述

接下来看看,是否能够找到一个格,变换后对偶会改变的。
如果是做伸缩变换呢?取一个格,然后乘上一个因子q,伸缩之后的格,对偶是什么?在对偶格上会发生什么?
 
 
在这里插入图片描述

对的,我们想要数量级保持一致,所以需要原来的格伸展了。也就是q>1伸展了原来的格,那么对偶格就会收缩。

这体现出对偶格的行为在某种程度上是和原来的格相反的。

 
 

在这里插入图片描述

但是格不是数,所以这种相反不是数的求逆,是一种相反的性质。

来做一些更加有趣的事情,考虑任意一个格,这个格的对偶是什么呢?
 
 
在这里插入图片描述

你们心中应该已经有了答案,就是这么一团乱七八糟的东西。
这个图看上去很乱,我没有加很多线,只画出了原来的格和对偶格。现在我们来试着把线去掉,来看看会发生什么?
 
 

在这里插入图片描述我们把线去掉了,看起来甚至更乱,画的时候我就感觉到有些乱,这里面有些点看上去位置不对。这张图是我用PowerPoint画的,而不是写程序画的,这些格点是在它们位置上的,实际上这些格点的位置都是准确的。
 
 
在这里插入图片描述

这就是两个格,对偶格有一些基本的性质,可以看作是与原来的格相反的一些性质。例如,如果一个格是满秩的,那么在格上添加点之后,对偶格中的点就会减少。因为对偶格需要满足更多的约束条件,对偶的对偶是自身。

也可以取格点和对偶格点中的数量积。也就是使用对偶格的定义。但把格点和对偶格中的点加起来,这个操作没有意义。
 
 

在这里插入图片描述
所在在这两个格中,存在这样没有意义的操作,因为它们所在的向量空间不一样,但在同构意义上也不一样。

最好的思考方式是通过点和函数来理解。
可以把函数作用于点,但他们是不同类型的量。
所以即使它们都用向量表示,也不能进行这样的操作。
但我们能够取数量积,这使用了一个关键的性质。
每当我们使用对偶格的时候,我们都在使用这个性质。

 
 

在这里插入图片描述
图中黑色的点就是原来格中的点,红色的点就是对偶格中的点。
取对偶格中的一个具体的点,我们把它标在图上。

这个点不在原来的格中,但是我们知道,取这个对偶格点和黑色格点的数量积,总能得到一个整数,根据得到的整数不同。可以对格进行划分,把格分为不同的层。

数量积为0的格点,数量积为1的格点,数量积为2的格点等等。
对偶格点给出了一种划分格的层次方法。
在这个划分中,每层之间的距离,正好等于对偶向量长度的逆,如果取的对偶向量长一些,得到的划分层次就会不同。
 
 

在这里插入图片描述

每个层次之间的距离更近,通过每个对偶格点,都能得到格的划分。很多算法就是利用对偶格点来执行这样的划分。然后执行一些数值上的取证操作。有一个简单的性质,我们刚刚讲过,每层之间的距离。
 
 

在这里插入图片描述

就是对偶格点长度的逆,那么我们可以在两个分层的中间放一个球。这个球位于两个分层的中间,所以不会包含任何格点。因为格点都是在分层上的,这就给了我们覆盖半径的一个下界。如果我们能在对偶格中找到短向量,这个短向量就能给出一个划分,其中每个分层之间间隔很远。

我们就在这些很远的间隔中,放置半径尽量大的球。
 
 
在这里插入图片描述

所以如果我们有短的对偶格向量,那么原来的覆盖半径就一定很大。也就是说,如果对偶格的λ1很小,那么μ(L)就会很大。所以就有了一个变换定理的例子。

 
 
在这里插入图片描述
最强的变换定理是由Banaszczyk在90年代初期证明的。

之前的一些其它的数学家也证明了一些界。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺的碎冰冰~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值