参考资料:
- Peikert C. A decade of lattice cryptography[J]. Foundations and trends® in theoretical computer science, 2016, 10(4): 283-424.
文章目录
OWF
-
基于SIS的OWF
- 随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,输入短向量 x ∈ Z m x \in Z^m x∈Zm,定义 f A ( x ) : = A x ∈ Z q n f_A(x):=Ax \in Z_q^n fA(x):=Ax∈Zqn
- L = L ⊥ ( A ) : = { z ∈ Z m ∣ A z = 0 ∈ Z q n } ⊇ q Z m L=L^{\perp}(A):=\{z \in Z^m|Az=0 \in Z_q^n\} \supseteq qZ^m L=L⊥(A):={z∈Zm∣Az=0∈Zqn}⊇qZm
-
基于LWE的OWF
- 随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,输入随机向量 s ∈ Z q n , e ← χ m s \in Z_q^n,\,\,e \leftarrow \chi^m s∈Zqn,e←χm,定义 g A ( s , e ) : = s t A + e t ∈ Z q m g_A(s,e) := s^t A + e^t \in Z_q^m gA(s,e):=stA+et∈Zqm
- L = L ( A ) : = { A t s ∣ s ∈ Z q n } + q Z m L=L(A):=\{A^t s|s \in Z_q^n\}+qZ^m L=L(A):={Ats∣s∈Zqn}+qZm
-
preimage sampleable trapdoor functions (PSFs)
-
Preimage Sampleable Functions:
一个可有效计算的函数 f : X → Y f:X \rightarrow Y f:X→Y,定义域 X X X上有可有效采样的分布 D D D;如果存在有效随机算法 f − 1 f^{-1} f−1,对于以下两种采样方式:
1). F o r w a r d Forward Forward:从分布中采样 x ← D x \leftarrow D x←D,令 y = f ( x ) y=f(x) y=f(x)
2). R e v e r s e Reverse Reverse:均匀采样 y ← Y y \leftarrow Y y←Y,令 x = f − 1 ( y ) x = f^{-1}(y) x=f−1(y)
使得 ( x , y = f ( x ) ) (x,y=f(x)) (x,y=f(x))有相同的联合分布,那么 f f f是“preimage sampleable”的。
-
f A ( x ) f_A(x) fA(x)是满射OWF,其对应的PSFs的 f − 1 f^{-1} f−1输出不唯一,且满足离散高斯分布。
-
g A ( s , e ) g_A(s,e) gA(s,e)是单射OWF,其对应的PSFs的 f − 1 f^{-1} f−1输出唯一确定。
-
-
如果给定格 L L L的陷门,那么求解SIS问题和LWE问题是容易的,因此 f A − 1 ( ⋅ ) f_A^{-1}(\cdot) fA−1(⋅)和 g A − 1 ( ⋅ ) g_A^{-1}(\cdot) gA−1(⋅)可以给出。下面介绍两种主要的陷门:1). 短格基;2). 工具矩阵。
Short Basis
-
存在有效随机算法,输入任意校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,给出格 L = L ⊥ ( A ) = { x ∈ Z m ∣ A x = 0 ( m o d q ) } L=L^{\perp}(A)=\{x \in Z^m|Ax=0(mod\,q)\} L=L⊥(A)={x∈Zm∣Ax=0(modq)}的HNF基底 B B B。
-
A j t a i Ajtai Ajtai指出,存在有效随机算法,输入 n , q , m ≥ C n n,q,m \ge Cn n,q,m≥Cn, C C C是常数,输出 (近似) 均匀随机的校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,同时输出格 L = L ⊥ ( A ) = { x ∈ Z m ∣ A x = 0 ( m o d q ) } L=L^{\perp}(A)=\{x \in Z^m|Ax=0(mod\,q)\} L=L⊥(A)={x∈Zm∣Ax=0(modq)}的一组短格基 S ∈ Z m × m S \in Z^{m \times m} S∈Zm×m, ∥ S ∥ = max s i ∥ s i ∥ = O ( p o l y ( n , l o g q ) ) \Vert S \Vert = \max\limits_{s_i} \Vert s_i \Vert = O(poly(n,log\,q)) ∥S∥=simax∥si∥=O(poly(n,logq))。实际上,可以先高斯采样得到 S S S,然后均匀采样 a i S = 0 a_iS=0 aiS=0来组成 A A A;注意,给定一个 A A A,然后再计算陷门 S S S是困难的。
-
G P V GPV GPV指出,存在有效随机算法,给定格 L L L的短格基 S ∈ R m × m S \in R^{m \times m} S∈Rm×m,对于任意陪集 c + L c+L c+L和任意 s ≥ ∥ S ~ ∥ ⋅ ω ( l o g O ( n / ϵ ) ) s \ge \Vert \widetilde{S} \Vert \cdot \omega(\sqrt{log\,O(n/\epsilon)}) s≥∥S ∥⋅ω(logO(n/ϵ)),输出服从离散高斯分布 D c + L , s D_{c+L,s} Dc+L,s的一个采样 v ∈ c + L v \in c+L v∈c+L;可用于求解SIS
-
B a b a i Babai Babai指出,存在有效随机算法,给定格 L L L的短格基 S ∈ R m × m S \in R^{m \times m} S∈Rm×m,求解BDD是容易的:给定任意 t = v + e , v ← L ∗ t=v+e,\, v \leftarrow L^* t=v+e,v←L∗,计算:
⌊ t t ⋅ S ⌉ ⋅ S − 1 = v t + ⌊ e t ⋅ S ⌉ ⋅ S − 1 = v t \lfloor t^t \cdot S \rceil \cdot S^{-1} = v^t + \lfloor e^t \cdot S \rceil \cdot S^{-1} = v^t ⌊tt⋅S⌉⋅S−1=vt+⌊et⋅S⌉⋅S−1=vt
结果正确,只要满足 ⌊ e t ⋅ S ⌉ ∈ [ − 0.5 , 0.5 ) m \lfloor e^t \cdot S \rceil \in [-0.5,0.5)^m ⌊et⋅S⌉∈[−0.5,0.5)m;可用于求解LWE -
GPV给出了一种基于格的PSFs描述:
- G e n Gen Gen:格 L ⊂ R m L \subset R^m L⊂Rm,并给出其公开描述 (如,HNF格基),格的短格基 S S S作为陷门;高斯参数 s ≥ ∥ S ~ ∥ ⋅ ω ( l o g n ) s \ge \Vert \widetilde{S} \Vert \cdot \omega(\sqrt{log\,n}) s≥∥S ∥⋅ω(logn), R m R^m Rm上的连续高斯分布 D s D_s Ds
- F o r w a r d Forward Forward:输入随机短向量 x ← D s , ∥ x ∥ ≤ s m x \leftarrow D_s,\,\Vert x \Vert \le s\sqrt m x←Ds,∥x∥≤sm,利用格的公开描述,输出陪集 y = f L ( x ) : = x + L ∈ R m / L y = f_L(x):=x+L \in R^m/L y=fL(x):=x+L∈Rm/L,其中 y y y可以用一个长向量代表。
- R e v e r s e Reverse Reverse:输入陪集代表 y y y,利用陷门 S S S,从离散高斯分布 D y + L , s D_{y+L,s} Dy+L,s中采样得到 x ∈ y + L x \in y+L x∈y+L,且 x x x以极大概率很短。
-
校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,格 L = L ⊥ ( A ) L=L^{\perp}(A) L=L⊥(A);对于 A c = u Ac=u Ac=u,定义陪集 L u ⊥ ( A ) : = c + L ∈ Z m / L L_u^\perp(A) := c+L \in Z^m/L Lu⊥(A):=c+L∈Zm/L,且
L u ⊥ ( A ) = { z ∈ Z m ∣ A z = u ∈ Z q n } L_u^\perp(A) = \{z \in Z^m|Az=u \in Z_q^n\} Lu⊥(A)={z∈Zm∣Az=u∈Zqn} -
基于SIS问题,单向、抗碰撞的 L a t t i c e − b a s e d P S F s Lattice-based\,\,PSFs Lattice−basedPSFs实例:
- G e n Gen Gen:均匀随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,令 L = L ⊥ ( A ) L=L^{\perp}(A) L=L⊥(A),陷门为短格基 S ∈ Z m × m S \in Z^{m \times m} S∈Zm×m
- F o r w a r d Forward Forward:输入 x ← D Z m , s x \leftarrow D_{Z^m,s} x←DZm,s,输出 y = f A ( x ) ∈ Z q n y=f_A(x) \in Z_q^n y=fA(x)∈Zqn,视作陪集 L y ⊥ ( A ) = x + L L_y^\perp(A) = x+L Ly⊥(A)=x+L的典型代表
- R e v e r s e Reverse Reverse:输入 y ∈ Z q n y \in Z_q^n y∈Zqn,利用陷门 S S S,从 D L y ⊥ ( A ) , s D_{L_y^\perp(A),s} DLy⊥(A),s中采样
-
短格基的扩展 (extended) 和随机化 (re-randomized):
-
校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,其陷门 S S S,有 A ⋅ S = 0 ( m o d q ) A\cdot S=0 \,(mod\,q) A⋅S=0(modq);利用 S S S,对于任意的 A 1 A_1 A1,SIS问题 A ⋅ W = − A 1 ( m o d q ) A \cdot W = -A_1 \,(mod\,q) A⋅W=−A1(modq)的短整数解 W W W是容易求的。对于扩展校验矩阵 A ′ = [ A ∣ A 1 ] A'=[A|A_1] A′=[A∣A1],其陷门为:
S ′ = [ S W 0 I ] S' = \left[ \begin{matrix} S && W \\ 0 && I \\ \end{matrix} \right] S′=[S0WI]
利用Gram-Schmidt vectors S ~ \widetilde{S} S 评估 S S S的质量。那么 S ′ ~ = d i a g ( S ~ , I ) \widetilde{S'} = diag(\widetilde{S},I) S′ =diag(S ,I),有 ∥ S ′ ~ ∥ ≤ ∥ S ~ ∥ \Vert \widetilde{S'} \Vert \le \Vert \widetilde{S} \Vert ∥S′ ∥≤∥S ∥ -
校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,其陷门 S S S,有 A ⋅ S = 0 ( m o d q ) A\cdot S=0 \,(mod\,q) A⋅S=0(modq);利用 S S S,可有效得到若干的独立高斯采样 s ′ s' s′,满足 A ⋅ s ′ = 0 ( m o d q ) A \cdot s' = 0\,(mod\,q) A⋅s′=0(modq),按列组合成新的随机短矩阵 S ′ S' S′,且 ∥ s ′ ∥ ≤ O ( ∥ S ~ ∥ ⋅ m ) \Vert s' \Vert \le O(\Vert \widetilde{S} \Vert \cdot \sqrt m) ∥s′∥≤O(∥S ∥⋅m)
-
Gadget
-
工具 (行) 向量 g = [ 1 , 2 , . . . , 2 l − 1 ] ∈ Z q l g=[1,2,...,2^{l-1}] \in Z_q^l g=[1,2,...,2l−1]∈Zql,其中 l = ⌈ l o g q ⌉ l = \lceil log\,q \rceil l=⌈logq⌉;为方便起见,可以令 q = 2 l q=2^l q=2l
-
定义 f g ( x ) = g ⋅ x ( m o d q ) f_g(x)=g \cdot x\,(mod\,q) fg(x)=g⋅x(modq) 和 g g ( s , e ) = s t ⋅ g + e ( m o d q ) g_g(s,e)=s^t \cdot g+e\,(mod\,q) gg(s,e)=st⋅g+e(modq)
- f g ( x ) f_g(x) fg(x)的反函数:输入 u = g ⋅ x ∈ Z q , x ∈ Z q l u=g \cdot x\in Z_q ,\,\,x\in Z_q^l u=g⋅x∈Zq,x∈Zql;简单的将 u u u用二进制表出, u = u l − 1 . . . u 1 u 0 u=u_{l-1}...u_1u_0 u=ul−1...u1u0,输出 x = [ u 0 , u 1 , . . . , u l − 1 ] x=[u_0,u_1,...,u_{l-1}] x=[u0,u1,...,ul−1];需要注意,这种方法的输出是确定性的,但可以利用算法改进得到满足离散高斯分布的解
- g g ( s , e ) g_g(s,e) gg(s,e)的反函数:输入 b ≈ s ⋅ g t ∈ Z q l , s ∈ Z q b \approx s \cdot g^t\in Z_q^l ,\,\,s\in Z_q b≈s⋅gt∈Zql,s∈Zq;易知 b = [ 2 0 s + e 0 , 2 1 s + e 1 , . . . , 2 l − 1 s + e l − 1 ] ( m o d q = 2 l ) b=[2^0s+e_0, 2^1s+e_1, ..., 2^{l-1}s+e_{l-1}](mod\,q=2^l) b=[20s+e0,21s+e1,...,2l−1s+el−1](modq=2l);因此 b l − 1 ≈ s ≪ ( l − 1 ) b_{l-1} \approx s \ll (l-1) bl−1≈s≪(l−1),可以恢复出最低比特 s 0 s_0 s0,再 b l − 2 ≈ s ≪ ( l − 2 ) b_{l-2} \approx s \ll (l-2) bl−2≈s≪(l−2),可以恢复出次低比特 s 1 s_1 s1,继续恢复出其他比特;输出 s = s l − 1 . . . s 1 s 0 s=s_{l-1}...s_1s_0 s=sl−1...s1s0
-
工具矩阵 G G G,其中 g = [ 1 , 2 , . . . , 2 l − 1 ] ∈ Z q l , 0 ∈ Z q l g=[1,2,...,2^{l-1}] \in Z_q^l,\,\,0 \in Z_q^l g=[1,2,...,2l−1]∈Zql,0∈Zql都是行向量
G : = I n ⊗ g = [ g 0 ⋯ 0 g 0 ⋮ 0 ⋱ ⋮ . . . g ] ∈ Z q n × n l G:=I_n \otimes g= \left[ \begin{array}{c | c c c} g & 0 & \cdots \\ \hline 0 & g & 0 \\ \vdots & 0 & \ddots & \vdots\\ & & ... & g\\ \end{array} \right] \in Z_q^{n \times nl} G:=In⊗g=⎣⎢⎢⎢⎡g0⋮0g0⋯0⋱...⋮g⎦⎥⎥⎥⎤∈Zqn×nl -
定义 f G ( x ) = G x ( m o d q ) f_G(x)=Gx\,(mod\,q) fG(x)=Gx(modq) 和 g G ( s , e ) = s t G + e ( m o d q ) g_G(s,e)=s^t G+e\,(mod\,q) gG(s,e)=stG+e(modq),对 G G G分组得到 G = [ G 1 , . . . , G n l ] ∈ ( Z n × l ) n G=[G_1,...,G_{nl}] \in (Z^{n \times l})^n G=[G1,...,Gnl]∈(Zn×l)n,利用 f g − 1 , g g − 1 f_g^{-1},\,g_g^{-1} fg−1,gg−1的解法,可以得到 f G − 1 : G x ↦ x f_G^{-1}:Gx \mapsto x fG−1:Gx↦x 和 g G − 1 : s t G + e ↦ s g_G^{-1}:s^tG+e \mapsto s gG−1:stG+e↦s
-
定义映射 G − 1 : Z q n → Z n l G^{-1}:Z_q^n \rightarrow Z^{nl} G−1:Zqn→Znl,输入 u u u,输出 G x = u ( m o d q ) Gx=u\,(mod\,q) Gx=u(modq)的满足离散高斯分布的短向量解 x x x (通过分组,分别恢复 x i x_i xi)。 G − 1 G^{-1} G−1不是矩阵,只是一种随机映射函数,满足: G ⋅ G − 1 ( u ) = u ( m o d q ) G \cdot G^{-1}(u) = u\,(mod\,q) G⋅G−1(u)=u(modq), G − 1 ( G ⋅ x ) = x ( m o d q ) G^{-1}(G \cdot x) = x\,(mod\,q) G−1(G⋅x)=x(modq)
-
给定任意可逆方阵 H ∈ Z q n × n H \in Z_q^{n \times n} H∈Zqn×n,关于 H G HG HG的SIS与LWE是容易的:
- ( H G ) x = u (HG)x=u (HG)x=u,则 x = f G − 1 ( H − 1 u ) = G − 1 ( H − 1 ⋅ u ) x=f_{G}^{-1}(H^{-1}u)=G^{-1}(H^{-1} \cdot u) x=fG−1(H−1u)=G−1(H−1⋅u)
- b t ≈ s t ⋅ ( H G ) b^t \approx s^t \cdot (HG) bt≈st⋅(HG),则 ( s t H ) t = g G − 1 ( b ) (s^tH)^t = g_G^{-1}(b) (stH)t=gG−1(b),于是 s = ( H t ) − 1 ⋅ g G − 1 ( b ) s = (H^t)^{-1} \cdot g_G^{-1}(b) s=(Ht)−1⋅gG−1(b)
-
对于校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,定义陷门 (trapdoor) 是短矩阵 R ∈ Z m × n l R \in Z^{m \times nl} R∈Zm×nl,相应的标签 (tag) 是可逆矩阵 H ∈ Z q n × n H \in Z_q^{n \times n} H∈Zqn×n,满足: A R = H G ( m o d q ) AR=HG\,(mod\,q) AR=HG(modq);用陷门最大奇异值 s 1 ( R ) : = max ∥ u ∥ = 1 ∥ R u ∥ s_1(R):=\max\limits_{\Vert u \Vert=1} \Vert Ru \Vert s1(R):=∥u∥=1max∥Ru∥来衡量陷门的质量, s 1 ( R ) s_1(R) s1(R)越小那么陷门质量越好。
-
常数矩阵 G ∈ Z q n × n l G \in Z_q^{n \times nl} G∈Zqn×nl包含 I n I_n In作为子式,确切地说: I n = [ G 0 ∣ G l ∣ . . . ∣ G ( n − 1 ) l ] I_n = [G_0|G_l|...|G_{(n-1)l}] In=[G0∣Gl∣...∣G(n−1)l];因此,若给定 A A A的一个陷门 R ← χ R \leftarrow \chi R←χ,其中 χ \chi χ是 Z q n × n l Z_q^{n \times nl} Zqn×nl上的离散高斯分布,对应的 H H H是: H = [ ( A R ) 0 ∣ ( A R ) l ∣ . . . ∣ ( A R ) ( n − 1 ) l ] H=[(AR)_0|(AR)_l|...|(AR)_{(n-1)l}] H=[(AR)0∣(AR)l∣...∣(AR)(n−1)l]。因此,我们先选取 R R R和 H H H,然后令 A = H G R ( n ) − 1 A=HGR_{(n)}^{-1} A=HGR(n)−1,其中 R ( n ) R_{(n)} R(n)表示一个 n n n阶可逆子方阵。注意,对于给定的 A A A,然后再计算陷门 R R R是困难的。
-
对于校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,给定短陷门矩阵 R ∈ Z m × n l R \in Z^{m \times nl} R∈Zm×nl
- SIS是容易的: A x = u ( m o d q ) Ax=u\,(mod\,q) Ax=u(modq),令 x = R ⋅ w x=R \cdot w x=R⋅w,只需求解 A R R − 1 x = ( H G ) w = u ARR^{-1}x=(HG)w=u ARR−1x=(HG)w=u,得到 w w w;其中 w = G − 1 ( H − 1 u ) w=G^{-1}(H^{-1}u) w=G−1(H−1u)是短向量,从而 ∥ x ∥ ≤ s 1 ( R ) ⋅ ∥ w ∥ \Vert x \Vert \le s_1(R) \cdot \Vert w \Vert ∥x∥≤s1(R)⋅∥w∥
- LWE是容易的: b t = s t A + e b^t=s^tA+e bt=stA+e,令 c t = b t R c^t = b^tR ct=btR,只需求解 c t ≈ s t A R = s t ⋅ ( H G ) c^t \approx s^tAR = s^t \cdot (HG) ct≈stAR=st⋅(HG),得到 s s s
-
T r a p d o o r P u n c t u i n g Trapdoor\,\,Punctuing TrapdoorPunctuing:
对于均匀随机的 A ˉ ∈ Z q n × m ˉ \bar A \in Z_q^{n \times \bar m} Aˉ∈Zqn×mˉ,短随机矩阵 R ˉ ∈ Z m ˉ × n l \bar R \in Z^{\bar m \times nl} Rˉ∈Zmˉ×nl,随机可逆矩阵 H ∈ Z q n × n H \in Z_q^{n \times n} H∈Zqn×n,易知:
A : = [ A ˉ ∣ H G − A ˉ R ˉ ] ∈ Z q n × ( m ˉ + n l ) A:=[\bar A|HG-\bar A \bar R] \in Z_q^{n \times (\bar m + nl)} A:=[Aˉ∣HG−AˉRˉ]∈Zqn×(mˉ+nl)R : = [ R ˉ I ] ∈ Z ( m ˉ + n l ) × n l R:=\begin{bmatrix} \bar R\\ I\\ \end{bmatrix} \in Z^{(\bar m + nl) \times nl} R:=[RˉI]∈Z(mˉ+nl)×nl
A R = H G AR=HG AR=HG
进一步的,定义:
A H ′ : = A − [ 0 ∣ H ′ G ] = [ A ˉ ∣ ( H − H ′ ) G − A ˉ R ˉ ] A_{H'}:=A-[0|H'G] = [\bar A|(H-H')G-\bar A \bar R] AH′:=A−[0∣H′G]=[Aˉ∣(H−H′)G−AˉRˉ]
那么只要 H ≠ H ′ H \neq H' H=H′且 H − H ′ H-H' H−H′在 Z q Z_q Zq上可逆 (invertible differences),那么 R R R就是任意的 A H ′ A_{H'} AH′的陷门,对应的标签是 H − H ′ H-H' H−H′ -
陷门的扩展 (extended) 和随机化 (re-randomized):
-
校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,其陷门 R R R;对于任意的 A 1 A_1 A1,以及任意可逆矩阵 H ′ H' H′,对于扩展校验矩阵 A ′ = [ A ∣ A 1 ] A'=[A|A_1] A′=[A∣A1],其陷门为:
A ′ [ R ′ I ] = H ′ G A' \begin{bmatrix} R' \\ I \\ \end{bmatrix} =H'G \\ A′[R′I]=H′G
利用 R R R,采样一个关于 A A A的满足离散高斯分布的解 R ′ R' R′:
A R ′ = H ′ G − A 1 AR' = H'G-A_1 AR′=H′G−A1 -
校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} A∈Zqn×m,其陷门 R R R;对于任意可逆矩阵 H ′ H' H′,利用 R R R做离散高斯采样,可以生成对应的新的随机陷门 R ′ R' R′:
A R ′ = H ′ G AR'=H'G AR′=H′G
-