格密码入门
造格
造格解线性方程
-
当一个多元线性方程有一个比较小的解,那么就有可能可以使用基于格的启发式方法进行求解。这种方法的思路就是,在构造出的某个格中,尝试找到一个特定的最短向量。
-
我们所考虑的方法依赖于一个尚未被证明的假设,该假设涉及到格中小向量的分布或性质,因此这种方法本质上只是启发式,而非严格保证成功的算法。
-
举一个简单的例子来说明一下这个通用方法。假设我们希望求解下面的线性方程:其中都是未知数,并且已知的值比较小,而可以是任意整数。
- 注意,此时我们能将这个方程,以及两个平凡方程,,写成一个
向量-矩阵方程:
- 在上述矩阵的各行向量是线性无关的,因此可以推出构成了某个格的一组基,进一步就有:
- 则就有,而目标向量。
- 通过展开
向量-矩阵方程就可以很清晰的看到,目标向量是基矩阵的一个整数线性组合。因此,很容易证明目标向量就在这个格上。 - 当目标向量和其反向量是该格中唯一的最短向量时,我们只需要通过求解该格的最短向量问题,即可解出原线性方程(对于这样一个小规模的格,这个问题可以高效求解),一旦得到,就可以解出方程。
- 进一步就可以利用中的,从而恢复出的全部数值。
总结:通过上述说明,我们已知知道了造格的要点之一:目标向量必须由基矩阵通过整数线性组合。
-
通过上面的描述,我们的非常希望目标向量是格中的一个最短向量。接下来一个非常关键的点就是如何判断、证明或者是严格证明目标向量是否有可能成为格中的最短向量。
- 这题提供一个严格证明的方法:
- 如果要证明某个格中的向量是最短向量,那一个非常好的证明就是类比证明。
- 估计出格中的最短向量的上界,估计出格中最短向量的下界,并证明,
- 最后如果能证明的话尽量证明出(可以类比证明集合相等,或者高数的夹逼准则)
- 但是实际上可能严格证明不了,所以就给出了两个判断最短向量的标准,下面是其中一个:
- 假设目标向量可能是格中的最短向量,记上面的基向量
- 那么目标向量必须比基矩阵中所有的基向量都短,也就是让。
- 因此目标向量就满足,那么就有是向量是最短向量的必要条件。
- 判断最短向量的第二个标准如下:
- 如果是最短向量,那么该向量就必须满足闵科夫斯基界限
Minkowski's bound,也就是当格的维数,时其最短向量总满足,其中, - 运用到这里的例子就是
- 再使用第一个判断标准就可以推出:,这个条件就是目标向量满足闵科夫斯基界限的一个充分条件。
- 通常情况下,如果目标向量满足闵科夫斯基界限,那么它也会满足第一个判据所给出的界,不过在某些情况下这一点不成立,所以这两个判据应当始终加以检查。
- 如果是最短向量,那么该向量就必须满足闵科夫斯基界限
- 当目标向量满足上面两个判据时,我们就可以确定它有可能是该格中的一个最短向量,在这一阶段,一般来说,我们只能寄希望于它确实是最短向量,并且希望能够通过求解该格的最短向量问题将其恢复出来。特别地,在以这种方式求解线性方程时,我们将依赖下面这个假设:
- 设矩阵是格的一个基,。如果向量比矩阵中的所有基向量都短,并且满足这个格闵科夫斯基界限,那么就是格中的最短向量。
- 当上面的这一假设对某一类格(对应于某个线性方程)成立时,用来判断目标向量是否为最短向量的两个判据所给出的界,就可以作为求解该线性方程组的方法的有效界限。
- 结合前面给出的例子:假设,则满足闵科夫斯基界限的向量也会比每一个基向量都要短。如果上述假设对由基矩阵生成的格成立,那么我们预期只要满足:,就能就解任何具有相同形式(并且满足相同假设)的线性方程。
- 在很多情况下,目标向量的各个分量是不平衡的。当这种情况出现的时候,就要进一步放宽上面判断方法所允许的界限。例如上述例子中,假设是的界,并且假设,也就是我们认为是中最大的一个。这时候可以从右侧将
向量-矩阵方程乘一个对角矩阵,也就是如下:- 对角矩阵,右乘该对角矩阵
- 右乘后的结果:
- 右乘后就得到新的目标向量,该向量是一个由基矩阵所构成的一个新的格,那么这个新的目标向量的分量就被平衡了,并且满足
- 还有,并且基向量的长度也会随之增大,因此未知量取值大小的界可以相应放宽,而目标向量仍然能够同时满足成为最短向量的两个判断依据。只要目标向量的各个分量是不平衡的,这种用于优化界限的方法就可以采用。
- 在一些使用该技术的攻击描述中,这种优化会直接与初始格的构造过程融合在一起。
- 同样的思想也可以应用到存在多于一个方程、且这些方程共享部分未知量的情形中。
- 前面的例子中,假设我们知道还满足方程,其中是比较小的。利用这两个方程,我们可以构造出新的
向量-矩阵方程。也就是将基矩阵的中间那一列替换成新方程的参数 - 构造后的
向量-矩阵方程:,构造出来后并按照前文所述的方法,继续推导相应的界,使得目标向量有可能成为该格中的一个最短向量。 - 同样地,如果目标向量的各个分量不平衡,我们可以通过将该方程乘以一个合适的对角矩阵,来构造一个新的格以及对应的目标向量。
- 由于需要计算格的体积来求出闵科夫斯基界限,那么
向量-矩阵方程的构造应当使得矩阵的行列式能方便地计算,通常的做法就是将矩阵构造成三角矩阵。
- 前面的例子中,假设我们知道还满足方程,其中是比较小的。利用这两个方程,我们可以构造出新的
- 这题提供一个严格证明的方法:
-
前面都在说线性方程,现在来看看非线性方程,当已知一个非线性方程存在较小解时,可以对该问题进行线性化处理,从而使用上述方法来尝试求解新的问题例如:
- 形如这样的方程:的方程,
- 可以通过令,将其线性化为新的方程
- 注意:其实还存在其他方法可以直接求解非线性方程,并且在某些情况下这些方法能够给出更优解的界限。例如某些情况下的
Coppersmith攻击。
造格解模线性方程
-
上面造格解线性方程这个想法,同样也可以应用到多元模线性方程中:
- 使用相同的例子,现在我们希望找到同余式的小解:,其中是一些已知的整数。
- 可以先将同余式转换为多元线性方程:,其中是未知的整数。此时只是构造了一个新的线性方程(定义在整数环上),其中引入了一个新的未知量。因此我们可以直接将前面介绍的方法应用到这个新的方程中。
- 具体来说可以构造相应的
向量-矩阵形式的方程:
-
构造之后就可以尝试将作为矩阵行生成的格中最短向量来就解。实际上,这里描述的方法可以用来说明一个广为人知的经验性理论(folklore结果):关于如何寻找模线性方程的小解。
- 考虑一般的多元模线性方程:,这里所有的和都是已知的,并且设为整数,使得
- 这个经验性结论就是:当,未知量是可以被解出的。
-
虽然这个结论多年来一直为人所知并被广泛使用,但对其的理论解释直到
2008年由Hermann和May在论文Solvinglinearequations modulo divisors: Onfactoring given any bits.才写出。接下来简述一下他们两个的结果- 假设,在论文中通过将原来的模方程两边同时乘,将一般的模方程转换为一个等价的模方程。从而得到,其中
- 再将新的线性同余方程转换为线性方程:,其中是整数
- 根据新的线性方程,可以造出一个
向量-矩阵方程
- 此时我们将这个
向量-矩阵方程右乘一个对角矩阵
- 此时我们的目标向量就会变成,此时每一个分量的界都是。因此就有
- 右乘一个对角矩阵后得到的新格,其体积为:
- 因为该新格是n维格,因此使目标向量满足闵科夫斯基界限的一个充分条件是:,或者可以更简单的表述为,这就是我们想要得到的结果。
- 注意:通过构造可知,目标向量作为最短向量的另一个判据预计也会满足。由于很可能与大小相当,因此每一个基向量都将大于。同时,当明显小于时,每个基向量的大小也会增大。重新标记系数和变量后,总能选择一个,使得所有基向量都大于。因此,当,且之前说的假设对该格成立时,该解应该是可以被找到的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 iyheart的博客!

