Crypto-格初识
一、格的概述
格是离散的Rn加子群。每个格都是一些线性无关的向量产生的集合,称之为基。
二、格基规约
任意格都有无数个基,LLL 算法就是在格上找到一组基:其长度尽可能最小,并于基中其他矢量尽可能正交。即对应方程组中找到一组满足等式的最优解。
规约算法过程太过复杂,此处省略。。。
三、格基规约简单使用
1.对二元单方程的求解
题目:
1 | t = 44,P,Q已知,求解p,q |
格的构造:
LLL规约:
1 | M = Matrix(ZZ, [[1, P], |
2.求解矩阵相乘运算中某一未知矩阵
题目描述
题目基于矩阵乘法AM=C,其中这三个均为n×n方阵,M为消息矩阵且较小。
给出矩阵C,并且将A中的随机n个元素毁坏,得到Ac并给出。
试求M。
题目分析:
M为消息矩阵且较小,这意味着我们或许可以从格基规约出发。
首先,C中的一个元素Cij可以看成是A的第i行的行向量和M的第j列的列向量作内积而得到的,即
因此,一个非常直观的假设就是,假设存在i,使得A的第i行的行向量未被毁坏的话,我们就能利用该行向量,和M的所有列向量作内积,得到C的第i行结果。在此基础上,便可以构造格
如果能够成功规约(最后一个元素为0)的话,我们就能求出消息矩阵M的第j列。然后,遍历所有的j,我们就能求出整个消息矩阵M。
规约:
1 | C = Matrix(ZZ, C) |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
ValineDisqus