格密码学习(三)

今天在youtube上看了一个lecture巩固了一下
格密码学习(三)

  • A lattice may be represented as a matrix whose row vectors form the
    basis
  • A lattice has many bases

格的基底并不是唯一的。正是因为一个格有多组格基使得格密码得以存在。一个整数矩阵是幺模的当这个矩阵的行列式为±1。
幺模
如果 A∈R是整数矩阵,r≡rank A=min{m,n},而且A的所有非零r×r子式等于 1 或-1,则称A为幺模矩阵(unimodular matrix)。如果A是幺模矩阵,而且还有其各阶子式均等于0,1或-1,则称A为全幺模矩阵(totally unimodular matrix)。
引理
基底 B 1 B_{1} B1, B 2 B_{2} B2生成相同的格 L \mathcal{L} L当且仅当存在一个幺模U∈ U ∈ Z n × n \mathbf{U} \in \mathbb{Z}^{n \times n} UZn×n使得 B 1 = B 2 U \mathbf{B}_{1}=\mathbf{B}_{2} \mathbf{U} B1=B2U
证明
假设 L ( B 1 ) = L ( B 2 ) \mathcal{L}\left(\mathbf{B}_{1}\right)=\mathcal{L}\left(\mathbf{B}_{2}\right) L(B1)=L(B2),或者 B 1 ⋅ Z n = B 2 ⋅ Z n \mathbf{B}_{1} \cdot \mathbb{Z}^{n}=\mathbf{B}_{2} \cdot \mathbb{Z}^{n} B1Zn=B2Zn,则 B 1 B_{1} B1的每列都是 B 2 \mathbf{B}_{2} B2的一个整数组合。反之亦然。也就是说,存在 U , V ∈ Z n × n \mathbf{U}, \mathbf{V} \in \mathbb{Z}^{n \times n} U,VZn×n使得 B 1 = B 2 U \mathbf{B}_{1}=\mathbf{B}_{2} \mathbf{U} B1=B2U并且 B 2 = B 1 V = B 2 U V \mathbf{B}_{2}=\mathbf{B}_{1} \mathbf{V}=\mathbf{B}_{2} \mathbf{U} \mathbf{V} B2=B1V=B2UV。因为 B 2 \mathrm{B}_{2} B2是可逆的,因此我们有 U V = I \mathbf{U V}=\mathbf{I} UV=I,因此 det ⁡ ( U ) det ⁡ ( V ) = 1 \operatorname{det}(\mathbf{U}) \operatorname{det}(\mathbf{V})=1 det(U)det(V)=1行列式U和行列式V相乘为1.那么行列式U和行列式V为正负一因为两个矩阵都是整数矩阵。
那么,假设对于某个幺模U存在 B 1 = B 2 U \mathbf{B}_{1}=\mathbf{B}_{2} \mathbf{U} B1=B2U,那么我们就可以得到这个公式:
L ( B 1 ) = B 1 ⋅ Z n = B 2 ⋅ ( U ⋅ Z n ) = B 2 ⋅ Z n = L ( B 2 ) \mathcal{L}\left(\mathbf{B}_{1}\right)=\mathbf{B}_{1} \cdot \mathbb{Z}^{n}=\mathbf{B}_{2} \cdot\left(\mathbf{U} \cdot \mathbb{Z}^{n}\right)=\mathbf{B}_{2} \cdot \mathbb{Z}^{n}=\mathcal{L}\left(\mathbf{B}_{2}\right) L(B1)=B1Zn=B2(UZn)=B2Zn=L(B2)
格密码学习(三)推论: Z n \mathbb{Z}^{n} Zn的基底正好是幺模矩阵 U ∈ Z n × n \mathbf{U} \in \mathbb{Z}^{n \times n} UZn×n
推论:通过检查 B 1 − 1 B_{1}^{-1} B11, B 2 B_{2} B2是否是幺模的。
格里面的一个重要概念
Fundamental Regions
格是在 R n R^n Rn下的无线周期网格,因此考虑相应的定期“平铺”Rn由某物体的副本通常很有用。例如,考虑一下墙面砖的典型平铺(到棋盘格),或通过正六边形(以格点为中心)对平面进行平铺。基本区域的概念使这一概念正式化。

格密码学习(三)
定义 集合 F ⊆ R n \mathcal{F} \subseteq \mathbb{R}^{n} FRn是格 L \mathcal{L} L一个fundamental region,如果他的变换 x + F = { x + y : y ∈ F } \mathrm{x}+\mathcal{F}=\{\mathrm{x}+\mathrm{y}: \mathrm{y} \in \mathcal{F}\} x+F={x+y:yF},取所有的 x ∈ L \mathrm{x} \in \mathcal{L} xL,组成 R n \mathbb{R}^{n} Rn的部分。
** fundamental parallelepiped**
两个关于格的计算问题
1、SVP(shortest vector problem)
2、CVP(closest vector problem)
格密码学习(三)格有好的与坏的基底
格密码学习(三)
A lattice basis with reasonably short and orthogonal basis vectors is normally referred to as a ‘good basis’. On the contrary, a lattice basis with long and non-orthogonal basis vectors is normally referred to as a ‘bad basis’.
好的基底: 具有合理短和正交基向量的格基通常被称为好的基底
坏的基底:具有长且非正交基向量的格基称为坏基底
补充知识:正交向量的概念是只积为0的两个或多个向量
SVP算法

  1. LLL(Lenstra,Lenstra& Lovasz, 1982)
    格维度内的多项式时间
    保证能找到一个向量不大于实际最短向量倍数的向量
    在低维度里,能找到非常短的向量
    在高维度中找非常短向量是指数级别难度的

The LLLalgorithm was used to “break” cryptosystem based on Subset Sum (knapsack) problem, at practical dimensions.

LLL算法用于在实际规模上基于子集和(背包)问题“**”密码系统。
背包问题(现代密码学课程学过)
格密码学习(三)

it is probably prudent to assume that shortest non-zero vectors in lattices can be found efficiently

LLL算法就是在格上找到一组基,使得
格密码学习(三)格密码学习(三)
用这种方法生成的基具有如下性质:
格密码学习(三)
Application
给定n个实数 α i , … , α n \alpha_{i}, \ldots, \alpha_{n} αi,,αn,找到这n个数的有理线性逼近,即找到n个数 m i m_{i} mi,使得 ∑ i = 1 n m i α i \sum_{i=1}^{n} m_{i} \alpha_{i} i=1nmiαi尽可能等于0。我们可以构造这样的矩阵,这里 m i m_{i} mi α i \alpha_{i} αi的有理逼近
A = [ 1 0 0 ⋯ 0 c a 1 0 1 0 ⋯ 0 c a 2 0 0 1 ⋯ 0 c a 3 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ 1 c a n ] A=\left[\begin{array}{cccccc}1 & 0 & 0 & \cdots & 0 & c a_{1} \\ 0 & 1 & 0 & \cdots & 0 & c a_{2} \\ 0 & 0 & 1 & \cdots & 0 & c a_{3} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 & c a_{n}\end{array}\right] A=1000010000100001ca1ca2ca3can
那么
A A T = [ 1 + a 1 2 a 1 a 2 a 1 a 3 ⋯ a 1 a n a 2 a 1 1 + a 2 2 a 2 a 3 ⋯ a 2 a n a 3 a 1 a 3 a 2 1 + a 3 2 ⋯ a 3 a n ⋮ ⋮ ⋮ ⋱ ⋮ a n a 1 a n a 2 a n a 3 ⋯ 1 + a n 2 ] A A^{T}=\left[\begin{array}{ccccc}1+a_{1}^{2} & a_{1} a_{2} & a_{1} a_{3} & \cdots & a_{1} a_{n} \\ a_{2} a_{1} & 1+a_{2}^{2} & a_{2} a_{3} & \cdots & a_{2} a_{n} \\ a_{3} a_{1} & a_{3} a_{2} & 1+a_{3}^{2} & \cdots & a_{3} a_{n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n} a_{1} & a_{n} a_{2} & a_{n} a_{3} & \cdots & 1+a_{n}^{2}\end{array}\right] AAT=1+a12a2a1a3a1ana1a1a21+a22a3a2ana2a1a3a2a31+a32ana3a1ana2ana3an1+an2
可以得到格的行列式为
1 + ∑ i = 1 n α i 2 \sqrt{1+\sum_{i=1}^{n} \alpha_{i}^{2}} 1+i=1nαi2
证明如下
格密码学习(三)
经过LLL算法后,可以获得
∥ b 1 ∥ ≤ 2 n − 1 4 ( 1 + ∑ i = 1 n α i 2 ) 1 2 ( n + 1 ) \left\|b_{1}\right\| \leq 2^{\frac{n-1}{4}}\left(1+\sum_{i=1}^{n} \alpha_{i}^{2}\right)^{\frac{1}{2(n+1)}} b124n1(1+i=1nαi2)2(n+1)1
一般来说后一项在开n次方后趋向于1,因为 a i a_{i} ai都是常数,一般不会与n相关,所以
∥ b 1 ∥ ≤ 2 n − 1 4 ∗ k \left\|b_{1}\right\| \leq 2^{\frac{n-1}{4}} * k b124n1k
k比较小。此外, b 1 b_{1} b1又是原向量的线性组合,那么
b 1 [ n ] = ∑ i = 1 n m i c ∗ a i = c ∑ i = 1 n m i ∗ a i b_{1}[n]=\sum_{i=1}^{n} m_{i} c * a_{i}=c \sum_{i=1}^{n} m_{i} * a_{i} b1[n]=i=1nmicai=ci=1nmiai
显然如果c足够大,那么后面的求和必须足够小才能满足上面的约束。
Short Integer Solution
格密码学习(三)格密码学习(三)
Collision-Resistant Hash Function
格密码学习(三)
抽屉原理抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素

单词积累:

  • corollary 必然的
  • convex 凸的
  • equalizer均衡器
  • asymptotic 渐进的
  • knapsack problem背包问题
  • Collision-Resistant 抗碰撞性
  • pigeonhole principle鸽巢原理格密码学习(三)