Lattice学习记录
Intro
开始学习格密码(寒假学过,但是忘了,而且不会用,坏起来了)。这次学习主要参考
我们先来了解一个真实公钥密码系统中的一个简单模型。它的维度很低,不过说明了密码分析中如何出现格。此外,它还提供了对NTRU公钥密码系统的最低维的介绍。
因此,
子集和问题与背包密码系统
-
子集合问题:
给定一个正整数集合
并选定一个整数 ,找到 的一个子集,使得其中的元素和为 。我们可以把这个问题划归成:需要找到一个二进制向量 ,使得 。 -
超级递增序列
: 令
,其中
有了上面的知识,我们来介绍Merkle -Hellman subset-sum cryptosystem。
-
Merkle -Hellman subset-sum cryptosystem
选定一个超级递增序列 和两个大整数 ,其中 。然后 计算 ,并把 ,作为公钥。 收到密钥后,令密文为 ,计算 ,并给 发送S。 收到密文后,只需要计算 ,然后求 在集合 中的一个表示方法,就可以得到密文 。
以上的密码系统,又被称作子集和密码体制或背包密码体制。由于
下面我们简单介绍一下子集和问题构造的格,也就是它的攻击方法(又要说邪恶的。
取出其中每个行向量,记作
既然我们要求的明文
由于
这种在格中找到短向量的算法叫做格基约减算法,其中最著名的就是LLL算法。
向量空间综述
在我们开始之前,我们需要学习 (复习 ) 一些有关向量空间的知识。
- 向量空间:向量空间是一组向量的集合,这个集合对加法和乘法封闭。
- 线性组合:令向量集合
,那么线性组合就是 。 - 线性相关与线性无关:有
个向量, ,若可以找到一组不全为 的实数使这个等式成立,那我我们就说这组向量线性相关,否则线性无关。 - 向量夹角
- 欧几里德范数:也称做向量的长度
- 施密特正交化方法
格的定义和性质
-
定义1:令
是一组线性无关的向量,那么格(lattice)就是这n个向量的线性组合集,即 这n个向量是L的基底,基底所有的向量数是L的维度。
对于一个格L,可以有很多组不同的基底,而这些基底可以相互转化。这时就需要转化矩阵
- 定义2:如果
的一个子集 对加减法封闭,那么我们就说它是一个加法子群。对 ,如果存在一个正常数 ,使得对 中任意一个向量 和 中任意一个向量 ,都有 ,那么 是离散加法子群。
换句话说,就是在
-
定理:
的一个子集 是格,当且仅当 是离散加法子群。 -
定义:基本域:令
是一个n维的格,向量 是它的一组基,与这组基对应的 的基本域就是: 而对于在
中的一个向量 ,我们就可以把它写成 ,其中 是格 的一组基底。我们可以发现格 的所有基本域都有相同的体积,而基本域体积不变是格中一个非常重要的性质。并且基本域的体积又被称作 的行列式,即 。
Comments NOTHING