格密码:陷门OWF(Short Basis、Gadget)

参考资料:

  1. Peikert C. A decade of lattice cryptography[J]. Foundations and trends® in theoretical computer science, 2016, 10(4): 283-424.

文章目录

  • OWF
  • Short Basis
  • Gadget

OWF

  • 基于SISOWF

    • 随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,输入短向量 x ∈ Z m x \in Z^m xZm,定义 f A ( x ) : = A x ∈ Z q n f_A(x):=Ax \in Z_q^n fA(x):=AxZqn
    • 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):={zZmAz=0Zqn}qZm
  • 基于LWEOWF

    • 随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,输入随机向量 s ∈ Z q n ,    e ← χ m s \in Z_q^n,\,\,e \leftarrow \chi^m sZqn,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+etZqm
    • 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):={AtssZqn}+qZm
  • preimage sampleable trapdoor functions (PSFs)

    • Preimage Sampleable Functions

      一个可有效计算的函数 f : X → Y f:X \rightarrow Y f:XY,定义域 X X X上有可有效采样的分布 D D D;如果存在有效随机算法 f − 1 f^{-1} f1,对于以下两种采样方式:

      1). F o r w a r d Forward Forward:从分布中采样 x ← D x \leftarrow D xD,令 y = f ( x ) y=f(x) y=f(x)

      2). R e v e r s e Reverse Reverse:均匀采样 y ← Y y \leftarrow Y yY,令 x = f − 1 ( y ) x = f^{-1}(y) x=f1(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} f1输出不唯一,且满足离散高斯分布。

    • g A ( s , e ) g_A(s,e) gA(s,e)单射OWF,其对应的PSFs f − 1 f^{-1} f1输出唯一确定。

  • 如果给定格 L L L的陷门,那么求解SIS问题和LWE问题是容易的,因此 f A − 1 ( ⋅ ) f_A^{-1}(\cdot) fA1() g A − 1 ( ⋅ ) g_A^{-1}(\cdot) gA1()可以给出。下面介绍两种主要的陷门:1). 短格基;2). 工具矩阵。

Short Basis

  • 存在有效随机算法,输入任意校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×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)={xZmAx=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,mCn C C C是常数,输出 (近似) 均匀随机的校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×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)={xZmAx=0(modq)}的一组短格基 S ∈ Z m × m S \in Z^{m \times m} SZm×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=simaxsi=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} SRm×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)}) sS ω(logO(n/ϵ) ),输出服从离散高斯分布 D c + L , s D_{c+L,s} Dc+L,s的一个采样 v ∈ c + L v \in c+L vc+L;可用于求解SIS

  • B a b a i Babai Babai指出,存在有效随机算法,给定格 L L L的短格基 S ∈ R m × m S \in R^{m \times m} SRm×m,求解BDD是容易的:给定任意 t = v + e ,   v ← L ∗ t=v+e,\, v \leftarrow L^* t=v+e,vL,计算:
    ⌊ 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 ttSS1=vt+etSS1=vt
    结果正确,只要满足 ⌊ e t ⋅ S ⌉ ∈ [ − 0.5 , 0.5 ) m \lfloor e^t \cdot S \rceil \in [-0.5,0.5)^m etS[0.5,0.5)m;可用于求解LWE

  • GPV给出了一种基于格的PSFs描述:

    • G e n Gen Gen:格 L ⊂ R m L \subset R^m LRm,并给出其公开描述 (如,HNF格基),格的短格基 S S S作为陷门;高斯参数 s ≥ ∥ S ~ ∥ ⋅ ω ( l o g   n ) s \ge \Vert \widetilde{S} \Vert \cdot \omega(\sqrt{log\,n}) sS ω(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 xDs,xsm ,利用格的公开描述,输出陪集 y = f L ( x ) : = x + L ∈ R m / L y = f_L(x):=x+L \in R^m/L y=fL(x):=x+LRm/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 xy+L,且 x x x以极大概率很短。
  • 校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×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+LZm/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)={zZmAz=uZqn}

  • 基于SIS问题,单向、抗碰撞的 L a t t i c e − b a s e d    P S F s Lattice-based\,\,PSFs LatticebasedPSFs实例:

    • G e n Gen Gen:均匀随机矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,令 L = L ⊥ ( A ) L=L^{\perp}(A) L=L(A),陷门为短格基 S ∈ Z m × m S \in Z^{m \times m} SZm×m
    • F o r w a r d Forward Forward:输入 x ← D Z m , s x \leftarrow D_{Z^m,s} xDZm,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 yZqn,利用陷门 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} AZqn×m,其陷门 S S S,有 A ⋅ S = 0   ( m o d   q ) A\cdot S=0 \,(mod\,q) AS=0(modq);利用 S S S,对于任意的 A 1 A_1 A1SIS问题 A ⋅ W = − A 1   ( m o d   q ) A \cdot W = -A_1 \,(mod\,q) AW=A1(modq)的短整数解 W W W是容易求的。对于扩展校验矩阵 A ′ = [ A ∣ A 1 ] A'=[A|A_1] A=[AA1],其陷门为:
      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} AZqn×m,其陷门 S S S,有 A ⋅ S = 0   ( m o d   q ) A\cdot S=0 \,(mod\,q) AS=0(modq);利用 S S S,可有效得到若干的独立高斯采样 s ′ s' s,满足 A ⋅ s ′ = 0   ( m o d   q ) A \cdot s' = 0\,(mod\,q) As=0(modq),按列组合成新的随机短矩阵 S ′ S' S,且 ∥ s ′ ∥ ≤ O ( ∥ S ~ ∥ ⋅ m ) \Vert s' \Vert \le O(\Vert \widetilde{S} \Vert \cdot \sqrt m) sO(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,...,2l1]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)=gx(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)=stg+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=gxZq,xZql;简单的将 u u u用二进制表出, u = u l − 1 . . . u 1 u 0 u=u_{l-1}...u_1u_0 u=ul1...u1u0,输出 x = [ u 0 , u 1 , . . . , u l − 1 ] x=[u_0,u_1,...,u_{l-1}] x=[u0,u1,...,ul1];需要注意,这种方法的输出是确定性的,但可以利用算法改进得到满足离散高斯分布的解
    • 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 bsgtZql,sZq;易知 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,...,2l1s+el1](modq=2l);因此 b l − 1 ≈ s ≪ ( l − 1 ) b_{l-1} \approx s \ll (l-1) bl1s(l1),可以恢复出最低比特 s 0 s_0 s0,再 b l − 2 ≈ s ≪ ( l − 2 ) b_{l-2} \approx s \ll (l-2) bl2s(l2),可以恢复出次低比特 s 1 s_1 s1,继续恢复出其他比特;输出 s = s l − 1 . . . s 1 s 0 s=s_{l-1}...s_1s_0 s=sl1...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,...,2l1]Zql,0Zql都是行向量
    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:=Ing=g00g00...gZqn×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} fg1,gg1的解法,可以得到 f G − 1 : G x ↦ x f_G^{-1}:Gx \mapsto x fG1:Gxx g G − 1 : s t G + e ↦ s g_G^{-1}:s^tG+e \mapsto s gG1:stG+es

  • 定义映射 G − 1 : Z q n → Z n l G^{-1}:Z_q^n \rightarrow Z^{nl} G1:ZqnZnl,输入 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} G1不是矩阵,只是一种随机映射函数,满足: G ⋅ G − 1 ( u ) = u   ( m o d   q ) G \cdot G^{-1}(u) = u\,(mod\,q) GG1(u)=u(modq) G − 1 ( G ⋅ x ) = x   ( m o d   q ) G^{-1}(G \cdot x) = x\,(mod\,q) G1(Gx)=x(modq)

  • 给定任意可逆方阵 H ∈ Z q n × n H \in Z_q^{n \times n} HZqn×n,关于 H G HG HGSISLWE是容易的:

    • ( 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=fG1(H1u)=G1(H1u)
    • b t ≈ s t ⋅ ( H G ) b^t \approx s^t \cdot (HG) btst(HG),则 ( s t H ) t = g G − 1 ( b ) (s^tH)^t = g_G^{-1}(b) (stH)t=gG1(b),于是 s = ( H t ) − 1 ⋅ g G − 1 ( b ) s = (H^t)^{-1} \cdot g_G^{-1}(b) s=(Ht)1gG1(b)
  • 对于校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,定义陷门 (trapdoor) 是短矩阵 R ∈ Z m × n l R \in Z^{m \times nl} RZm×nl,相应的标签 (tag) 是可逆矩阵 H ∈ Z q n × n H \in Z_q^{n \times n} HZqn×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=1maxRu来衡量陷门的质量 s 1 ( R ) s_1(R) s1(R)越小那么陷门质量越好。

  • 常数矩阵 G ∈ Z q n × n l G \in Z_q^{n \times nl} GZqn×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=[G0Gl...G(n1)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)(n1)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} AZqn×m,给定短陷门矩阵 R ∈ Z m × n l R \in Z^{m \times nl} RZm×nl

    • SIS是容易的: A x = u   ( m o d   q ) Ax=u\,(mod\,q) Ax=u(modq),令 x = R ⋅ w x=R \cdot w x=Rw,只需求解 A R R − 1 x = ( H G ) w = u ARR^{-1}x=(HG)w=u ARR1x=(HG)w=u,得到 w w w;其中 w = G − 1 ( H − 1 u ) w=G^{-1}(H^{-1}u) w=G1(H1u)是短向量,从而 ∥ x ∥ ≤ s 1 ( R ) ⋅ ∥ w ∥ \Vert x \Vert \le s_1(R) \cdot \Vert w \Vert xs1(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) ctstAR=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} HZqn×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ˉHGAˉ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[0HG]=[Aˉ(HH)GAˉRˉ]
    那么只要 H ≠ H ′ H \neq H' H=H H − H ′ H-H' HH Z q Z_q Zq上可逆 (invertible differences),那么 R R R就是任意的 A H ′ A_{H'} AH的陷门,对应的标签是 H − H ′ H-H' HH

  • 陷门的扩展 (extended) 和随机化 (re-randomized)

    • 校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,其陷门 R R R;对于任意的 A 1 A_1 A1,以及任意可逆矩阵 H ′ H' H,对于扩展校验矩阵 A ′ = [ A ∣ A 1 ] A'=[A|A_1] A=[AA1],其陷门为:
      A ′ [ R ′ I ] = H ′ G A' \begin{bmatrix} R' \\ I \\ \end{bmatrix} =H'G \\ A[RI]=HG
      利用 R R R,采样一个关于 A A A的满足离散高斯分布的解 R ′ R' R
      A R ′ = H ′ G − A 1 AR' = H'G-A_1 AR=HGA1

    • 校验矩阵 A ∈ Z q n × m A \in Z_q^{n \times m} AZqn×m,其陷门 R R R;对于任意可逆矩阵 H ′ H' H,利用 R R R做离散高斯采样,可以生成对应的新的随机陷门 R ′ R' R
      A R ′ = H ′ G AR'=H'G AR=HG

你可能感兴趣的:(#,后量子密码学,密码学,数学,网络安全,信息安全,线性代数)