如何把BDD问题和SIVP问题联系起来呢?
之前讲过,找到一组好基,对应于n个线性无关的向量。这n个线性无关的向量不一定是基,但如果它们不是基。它们也已经足够短了,能够用于取数操作。如果用这些短基来取整,就能够得到一个好的解,它具有最差情况的界,这个界也和λn和取的向量的好坏有关。
如何来解BDD问题呢?给定一个目标点t,这个目标点所在的空间满足一些条件,我们假定它满足这些条件,不讨论存在性,但我们想要找到的是真正距离t最近的格点。那么我们可以做两件事情,一是直接承认不知道怎么做,或者就直接取λn。
找格上n个线性无关的向量,在对偶格上找n个线性无关的向量,在这些看上去没用的红色格点中来找。这些格点看起来可能都不在同一个位置 上。我们知道这些向量是短向量,它们在对偶格上。
它们定义了格的一个划分,把格分为多个层次,比如这里的vi定义了这样的划分,可以通过取整,通过t和vi的点乘,来找哪些分层是距离目标点最近的。在二维空间中,分层就是一条线,在n维空间中,每个分层就是n-1维的超平面。找到距离目标点最近的n-1维超平面。对所有的对偶向量使用这个方法,通过解SIVP问题找到的所有短的对偶向量。
每一个短向量还能给出一个n-1维的超平面,解SIVP问题得到的是线性无关的向量组,所以这些超平面是线性无关的。
如果取这些超平面的交集,就能够得到一个点,我们就把这个点作为我们的解。
那么这个结果是好是坏呢?
如果目标点到格点的距离最多是λ1/2n。就能够说我们得到了比唯一解码半径更好的结果
它是比限界距离稍微强一点的形式,带有一个近似因子n的解码。
根据变换定理可知,λ1/n最多是1/n^V,它又最多是SIVP问题的解中的第i个向量长度。所以它们都比λn小,但这些项都在分母上,所以构成了一个上界。也就说,如果t在这个距离之内,就能得到这个上界。反过来,如果给定一个在这个上界内的点,我们也能得到正确答案。
Ajtai的函数是格密码最开始的一类函数,在定义中,取矩阵A作为函数的一个参数,图上是对这个函数过程的一个分解,函数f_A(x)定义为Ax mod q
对于这个函数Ajtai使用了参数集,使得它是满射的,对输入的规模进行压缩。
他也证明了有趣的结论,如果格问题在最差情况下是困难的,那么这个函数是单向的。我们先不管它这个结果,而是通过一种直接的方式,来尝试把这个函数与随机的,平均情况下的格问题联系起来。
那么这个定义下的格是什么呢?正好就是A的核。
把这个短向量的定义域限制到短向量x,也就是限制函数的输入,只能输入二进制向量,如果允许取任意向量的输入,那么它就不是单向的,我们只需要解线性方程组就可以求出函数的逆。
这个函数以短向量作为输入,输出也是模q的向量。那么从不同的角度来看,A的核就是一个格。要找到这个函数的一个碰撞,也就是找到两个点,映射到同一个输出。这和在核中找到短向量的问题是等价的。只需要用其中一个点,减去另一个点,它们的差是非0的,而它们的差映射到0。
也可以看成是伴随解码问题,或者对偶格上的CVP问题。
函数的输出就是取x和对偶格基向量的积,并且取小数部分。
所有的结果都伸缩了一个因子q,所以把结果模q。这就是我之前给出的CVP的定义。
那么它们是一个问题吗?
如果是,这个函数对输入进行压缩,Ajtai已经定义并分析了这个函数。
具体来说,输入x是0和1组成的二元向量,所以它是一个短向量。但是比我们想要的最短格向量要长很多。它比λn和覆盖半径长,这就得到了短整数解问题。
LWE问题也是找一个向量,但是使用的公式不同,考虑As+e这种形式,这看起来和sis问题不一样,但从某种程度上来说,这两个问题的关系就是对偶关系。一个问题是CVP陪集表示的伴随译码,另一个问题是使用生成矩阵。
这两个问题真正的区别在于,在LWE中,输入和错误向量e都比Ajtai的函数短很多,得到的函数是单射的,证明难度非常的大。
这个函数的求逆仍然困难,但是应用更广。对于这个问题,可以用更加直接的方式来理解,它是随机格中的一个问题。
A是生成的模q的矩阵,给定随机格点As,但是它被错误向量e扰动,考虑e需要在最小距离之内,也就是格的唯一解码半径。在这个距离之内的话 解就是唯一的。
用这种方式,可以把容错学习问题理解为BDD问题在平均情况下的一个实例。所以SIS问题和LWE问题是平均情况下的对偶问题。分别对应于ADD和BDD问题。