0%

格密码学习笔记(一):基础概念

1 格 Point Lattices

def 欧氏空间中 Rn\mathbb{R}^n 上的一个离散加法子群,通过在整数格 Zn\mathbb{Z}_n 上作单射线性变换(injective linear transformation)得到。令 B=[b1,...,bn]Rd×nB=[b_1, ..., b_n] \in \mathbb{R}^{d×n}Rd\mathbb{R}^d 上一组线性无关的向量,则由 BB 生成的格为集合

L(B)={Bx:xZn={i=1nxibi:i.xiZ}}\mathcal{L}(B)=\{Bx:x \in \mathbb{Z}^n =\{\sum_{i=1}^n{x_i} \cdot b_i:\forall i.x_i \in \mathbb{Z}\}\}

  • RnR^n:实数域上的 n 维矢量空间
  • BB:格 L(B)\mathcal{L}(B) 的基矩阵(basis matrix),是一组线性无关的矩阵,能用来生成一个向量空间
  • b1,b2,...,bnb_1,b_2,...,b_n:格基,同一个格可以由多组不同的格基生成。
    • i.e. 格基 (1,0)T(1,0)^T (0,1)T(0,1)^T 可以生成二维空间的所有整数格,还可以为:(1,1)T(1,1)^T (2,1)T(2,1)^T
  • nn:格 L(B)\mathcal{L}(B) 的秩(rank)/ 维度(dimension),若 n=dn=d 成立,则称格 L(B)\mathcal{L}(B) 是满秩的

Info

BB 张成的向量空间(格的延展空间) span(B)span(B) 和格 L(B)\mathcal{L}(B) 的区别:(1)前者可以同任意的实数系数相乘,后者仅包含整数系数;(2)若 BB 是格 L(B)\mathcal{L}(B) 的基,则它也是由格张成的向量空间 span(B)span(B) 的基;反之不一定成立。

span(B)={Bx:xRn}span(B)=\{Bx:x \in \mathbb{R}^n\}

1.1 子格 sublattice

def 对任意格 Λ=L(B)\Lambda=\mathcal{L}(B),一个子格 Λ\Lambda^{\prime} 是格 Λ\Lambda 的子集,满足 ΛΛ\Lambda^{\prime} \subseteq \Lambda

2 基 Bases

def 若存在其他的矩阵 VZn×nV \in \mathbb{Z}^{n\times n} 使得 VU=UV=IVU=UV=I,则称整数方阵 UZn×nU \in \mathbb{Z}^{n\times n} 是可逆(invertible)的。

  • U1U^{-1}:对于每一个矩阵 VV,可逆矩阵 U1U^{-1} 必须是唯一的

  • GL(n,Z)GL(n, \mathbb{Z}):一般线性群(general linear group),表示矩阵乘法下的一个群,包含了形如 U1U^{-1} 的可逆整数矩阵。

Note

论文中经常出现的 bases,其实是 basis 的复数形式。即当提到 “bases” 时,通常是指多组基。i.e. 两个不同的格 L(B)\mathcal{L}(B)L(C)\mathcal{L}(C),每个格都有各自的基,那么这两组基可统称为 “bases”。

  • 因而,能够通过整数矩阵 UU 将格的基 BB 转换为对同一个格的任意一个其他的基。

  • 在实现时,这一部分操作通常是在本地用较简单的方式完成的。

def 对矩阵 BRd×nB \in \mathbb{R}^{d \times n} 上的基本(整数)列操作,为以下操作之一:(1)SWAP(i,jSWAP(i, j): 对于任意 iji \neq j,交换任意两个基向量 (bi,bj)(bj,bi)(b_i, b_j) \leftarrow (b_j, b_i);(2)INVERT(i)INVERT(i): 对于任意 ii ,改变基向量 bi(bi)b_i \leftarrow (-b_i) 的符号;(3)ADD(i,c,j)ADD(i, c, j): 对于任意 iji \neq jcZc \in \mathbb{Z},将一个基向量的整数倍加到另一个基向量 bi(bi+cbj)b_i \leftarrow (b_i + c \cdot b_j) 中。

  • 这里对矩阵的基本列操作 σ\sigma 均作用在右侧的矩阵,因此对于任意矩阵 BBAA,有 σ(BA)=Bσ(A)\sigma(B \cdot A) = B - \sigma(A)

  • 特别地,任意的基本列操作 σ\sigma 均对应于整数矩阵 σ(I)Zn×n\sigma(I) \in \mathbb{Z}^{n \times n} 的右乘,因为

σ(B)=σ(BI)=Bσ(I)\sigma(B)=\sigma(B \cdot I)=B \cdot \sigma(I)

由于单位矩阵 II 是可逆的,这样的基本列操作不会改变由 BB 生成的格。而对于更多的一系列列操作 σ=[σ1,...,σk]\sigma = [ \sigma_1, . . . , \sigma_k],同样可以表示为可逆矩阵的右乘 σ(I)=σ1(I)σ2(I)...σk(I)GL(n,Z)\sigma(I) = \sigma_1(I) \cdot \sigma_2(I) ... \sigma_k(I) \in GL(n, \mathbb{Z})。再结合上述定理可知,对同一个格有 L(B)=L(σ(B))\mathcal{L}(B) = \mathcal{L}(\sigma(B)),即可通过任意的列操作序列将原先格的基 BB 转化为等价的基 σ(B)\sigma(B)。换言之,任意的可逆矩阵 UGL(n,Z)U \in GL(n, \mathbb{Z}) 均可表示为一系列基本列操作的形式,也总能够通过对基 BB 的一系列基本列操作得到新的一组格基。

def 若det(B)=1\left|det(B)\right|=1,则矩阵 BZn×nB \in \mathbb{Z}^{n \times n} 是一个幺模(unimodular)矩阵。

  • 幺模矩阵:所有非零 r×rr \times r 子式等于 1 或 - 1 的整数矩阵

lem 任意 UGL(n,Z)U \in GL(n, \mathbb{Z}) 均为幺模矩阵。

  • 埃尔米特形式(Hermite normal form, HNF)的整数矩阵:i.e. 一个上三角矩阵,其中正对角元素 hi,i>0h_{i,i} > 0,所有其他非零元素 0hi,j<hi,i0 ≤ h_{i,j} < h_{i,i} 均为模同一行上的对应对角元素 hi,ih_{i,i} 后得到的。

theo 对任意一个满秩(nonsingular)的整数方阵 BZn×nB \in \mathbb{Z}^{n \times n} ,存在一系列基本整数列操作 σ\sigma,使得 σ(B)\sigma(B) 在 HNF 中。

  • 此操作基于扩展欧几里得算法

coro 对任意矩阵 UZn×nU \in \mathbb{Z}^{n \times n},下述条件是等价的:(1)对于一些基本列操作 σ\sigma,有 U=σ(I)U = \sigma(I);(2)UU 是可逆的,有 UGL(n,Z)U \in GL(n, \mathbb{Z}) ;(3)UU 是满秩的,有 det(U)=±1det(U)=\pm1

3 施密特正交化 Gram-Schmidt orthogonalization

def 通过将每一个向量投影其他向量的空间维度上,使得这组线性无关的向量 b1,b2,...,bnb_1,b_2,...,b_n转化为正交向量 b1,b2,...,bnb_1^*,b_2^*,...,b_n^*,即

bi=bi[b1,...,bi1]b_i^*=b_i\bot[b_1,...,b_{i-1}]

  • πi\pi_i:常用于表示第 ii 个向量向前 i1i-1 个基向量投影的映射关系,有 bi=πi(bi)b_i^*=\pi_i(b_i)
    coro
    (1)一般地,BB^* 不是格 L(B)\mathcal{L} (B) 的基,这是因为这组正交向量 BB^* 通常不属于格;(2)需要注意正交化中基向量的先后顺序,b1,b2,...,bnb_1,b_2,...,b_n的向量顺序不同,得到的正交向量 b1,b2,...,bnb_1^*,b_2^*,...,b_n^*也不同。
    i.e. 对向量 b1=(2,0)b_1=(2,0)b2=(1,2)b_2=(1,2),关于 [b1,b2][b_1,b_2] 的施密特正交化为 b1=b1,b2=b2b1=(1,2)b_1^*=b_1, b_2^*=b_2 \bot b_1=(1,2)。如图所示,此时正交向量 b2b_2^* 是不属于格 L(B)\mathcal{L}(B) 的。而反转顺序后,对 [b2,b1][b_2,b_1] 的施密特正交化为 b2=b2,b1=b1b2=(85,45)b_2^*=b_2, b_1^*=b_1 \bot b_2=(\frac{8}{5},-\frac{4}{5})


lem 对 B=[b1,b2,...,bn]B=[b_1,b_2,...,b_n] 的施密特正交化可由下述等式计算而得:

bi=bij<iμi,jbjwhereμi,j=bi,bjbj,bjb_i^*=b_i-\sum_{j < i}{\mu_{i, j}b_j^* \: where \: \mu_{i, j}=\frac{\langle b_i, b_j^*\rangle}{\langle b_j^*,b_j^*\rangle}}

  • BB 及其正交化矩阵 BB^* 满足 B=BTB=B^*T,其中 T=[1μ2,1μn,1 1μn,n11]T=\begin{bmatrix} 1 & \mu_{2,1} & \cdots & \mu_{n,1} \\ & \ddots & & \vdots\\ & \ & 1 & \mu_{n,n-1} \\ & & & 1\end{bmatrix}

4 格的行列式 The determinant

def 给定一个基 B=[b1,,bn]Rd×nB = [b_1, \dots, b_n] \in \mathbb{R}^{d \times n},与基 B 相关的基本平行多面体(fundamental parallelepiped)是集合 P(B)=BTn={i=1nxibii,0xi<1}P(B) = B \mathbb{T}^n = \left\{ \sum_{i=1}^{n} x_i \cdot b_i \mid \forall i, 0 \leq x_i < 1 \right\},其中 T=[0,1)\mathbb{T}= [0, 1) 是半开单位区间。

  • P(B)P(B):一组格基在 [0,1)[0,1) 中实系数组合生成的空间,是格的基本区(fundamental region):给定格 Λ\Lambda,在其生成空间 span(Λ)\text{span}(\Lambda) 中,如果通过格点 xΛx \in \LambdaSS 进行平移后的区域集合 {x+S:xΛ}\{x + S : x \in \Lambda\} 构成了 span(Λ)\text{span}(\Lambda) 的一个分割(partition),则该区域 Sspan(Λ)S \subset \text{span}(\Lambda) 称为格的基本区。

    • 分割(partition):SS 和它通过格点的所有平移 x+Sx + S 可以无重叠且无间隙地覆盖整个生成空间 span(Λ)\text{span}(\Lambda)
      coro 不同的基定义了不同的平行多面体,但不同平行多面体的体积总是相同的。

Note

格基本区的其他分割方式:

  • 正交(orthogonalized)平行多面体 P(B)P(B^*):由正交化基向量生成的平行多面体

  • 中心(centered)平行多面体 C(B)C(B):以原点为中心的平行多面体,将 P(B)P(B) 平移 12i=1nbi-\frac{1}{2} \sum_{i=1}^n b_i 单位后得到,满足

    C(B)=B[12,12)n=12i=1nbi+P(B)C(B) = B \cdot \left[-\frac{1}{2}, \frac{1}{2}\right)^n = -\frac{1}{2} \sum_{i=1}^n b_i + P(B)

  • 正交中心平行多面体 C(B)C(B^*):同样以原点为中心,将 P(B) 平移12i=1nbiP (B^*) 平移 -\frac {1}{2} \sum_{i=1}^n b_i^* 单位后得到,满足

    C(B)=B[12,12)n=12i=1nbi+P(B)C(B^*) = B^* \cdot \left[-\frac{1}{2}, \frac{1}{2}\right)^n = -\frac{1}{2} \sum_{i=1}^n b_i^* + P(B^*)

def 给定一个基 BRd×nB\in R^{d \times n} 及其施密特正交化 BB^*,格 Λ=L(B)\Lambda = \mathcal{L}(B) 的行列式(determinant)定义为与基 BB 相关联的基本平行多面体的 n 维体积,形如

det(Λ)=vol(P(B))=ibi\det(\Lambda) = \text{vol}(P(B)) = \prod_i \|b^*_i\|

  • 格的行列式等于格的基本区体积,且与所选择的基无关。即无论选择哪个基 BB,计算出的行列式 det(Λ)\det(\Lambda) 都是相同的。i.e. 如果两个基是由同一个格生成的,那么它们的格的行列式的值是相同的。

  • 行列式可以看作是空间中格点密度的倒数。对格 Λ\Lambda 和它的行列式 det(Λ)\det(\Lambda),在一个足够大的规则区域 AA 中,格点数目大约等于 AA 的体积除以行列式。
    i.e. 正交向量 b1,b2R2b_1,b_2 \in \mathbb{R}^2b1=2\|b_1\| = 2b2=3\|b_2\| = 3R2\mathbb{R}^2 上的格 Λ\Lambda 的行列式 det(Λ)=2×3=6\det(\Lambda)=2 \times 3=6,假设区域 AA 的面积为 60,则 AA 内大约有 606=10\frac{60}{6} = 10 个格点。

theo 阿达马不等式(Hadamard Inequality)对于任何格 Λ=L(B)\Lambda = \mathcal{L}(B),行列式 det(Λ)\det(\Lambda) 满足以下不等式:

det(Λ)ibi\det(\Lambda) \leq \prod_{i} \|b_i\|

  • 上界 bibi\|b_i^*\| \leq \|b_i\|:正交化后的基向量 bib_i^* 长度总是小于或等于原基向量 bib_i 的长度。这是因为 bib_i^* 仅保留了与先前的基向量正交的部分。

  • 正交基的平行多面体体积最大,因此行列式 det(Λ)\det(\Lambda) 在正交情况下达到最大值;对于非正交基,行列式(体积)会变小。

lem 对于任何格基 BRd×nB \in \mathbb{R}^{d \times n},格 Λ=L(B)\Lambda = \mathcal{L}(B) 的行列式可以通过以下方式计算:

det(Λ)=det(BTB)\det(\Lambda) = \sqrt{\det(B^T B)}

特别地,如果 BB 是一个 n×nn \times n 的满秩方阵,那么

det(Λ)=det(B)\det(\Lambda) = |\det(B)|

  • 为了在 PPTPPT 内计算格的行列式,还可使用上述更为简单的方法,其不涉及施密特正交化。具体计算是利用模运算和中国剩余定理完成的:先选择一些小的质数 p1,p2,,pkp_1, p_2, \dots, p_k,分别计算 det(B)\det(B) 在这些质数模数下的值。即对于每个质数 pip_i,计算 det(B)modpi\det(B)\mod p_i;再利用 CRT 将这些结果组合起来,恢复出 det(B)\det(B) 在更大整数模数下的值,并恢复出完整的行列式值。

  • 对基 BB 的格拉姆矩阵(Gram matrix)BTBB^TB:通过计算格拉姆矩阵的行列式并取平方根,能够得到基本平行多面体的体积。

  • BB 为一个方阵时,行列式直接反映了基向量生成的 n 维平行多面体的体积。因此,行列式的绝对值直接给出了格的行列式。

theo 假设 BBCC 是同一个格 Λ\Lambda 的两个基,即 Λ(B)=Λ(C)\Lambda(B) = \Lambda(C),那么有 vol(P(B))=vol(P(C))vol(P(B))=vol(P(C))

  • 两个不同基生成的同一个格的基本区体积相等。


注:
def - definition,定义
theo - theorem,定理
lem - lemma,引理
coro - corollary,推论



参考
[1] CSE206A Lec1, Daniele Micciancio
[2] 格密码的基础概念(1)
[3] 如何通俗地理解施密特正交化|马同学图解线性代数