参考文献:
[GHS12] 中提出了著名的槽切换技术,使用 Shift Networks 实现任意的置换。这篇文章的附录中还有一些有意思的贡献,它提出了 BGV 的变体,它的环是 Z q [ x ] / ( ϕ m ( x ) ) \mathbb Z_q[x]/(\phi_m(x)) Zq[x]/(ϕm(x)),这里的 ϕ m ( x ) \phi_m(x) ϕm(x) 是任意的分园多项式。而在 BGV 的环是 Z q [ x ] / ( x d + 1 ) \mathbb Z_q[x]/(x^d+1) Zq[x]/(xd+1),其中 d d d 是二的幂次。
引理:存在 G ∈ Z [ x ] G \in \mathbb Z[x] G∈Z[x],满足 deg G ≤ m − 1 \deg G \le m-1 degG≤m−1,对于任意的 m m m 次本原单位根 α \alpha α 都有 G ( α ) = m G(\alpha)=m G(α)=m,对于任意的 m m m 次非本原的单位根 β \beta β 都有 G ( β ) = 0 G(\beta)=0 G(β)=0,并且它的系数表示的 l 2 l_2 l2 范数 m ⋅ ϕ ( m ) \sqrt{m \cdot \phi(m)} m⋅ϕ(m) 是个较小的常数。
解密运算 ⟨ c , s ⟩ ( m o d ϕ m ( x ) , q ) \langle c,s \rangle \pmod{\phi_m(x),q} ⟨c,s⟩(modϕm(x),q) 中 s , c s,c s,c 都是向量,内积运算需要在 Z q [ x ] / ( ϕ m ( x ) ) \mathbb Z_q[x]/(\phi_m(x)) Zq[x]/(ϕm(x)) 中计算,但是模数 ϕ m ( x ) \phi_m(x) ϕm(x) 可能有很多的非零系数,取模运算极为麻烦。[GHS12] 将模数提升到 x m − 1 x^m-1 xm−1,于是多项式模乘就是系数向量的循环卷积。
对于环 Z q [ x ] / ( ϕ m ( x ) ) \mathbb Z_q[x]/(\phi_m(x)) Zq[x]/(ϕm(x)) 中的元素 a a a,可以计算出:
G ( x ) a ( x ) = ( m + ν ( x ) ϕ m ( x ) ) ⋅ ( a ˉ ( x ) + p ( x ) ϕ m ( x ) ) = m ⋅ a ˉ ( x ) ( m o d ϕ m ( x ) ) G ( x ) a ( x ) = ( x m − 1 ϕ m ( x ) ⋅ μ ( x ) ) ⋅ ( a ˉ ( x ) + p ( x ) ϕ m ( x ) ) = G ( x ) ⋅ a ˉ ( x ) ( m o d x m − 1 ) \begin{aligned} G(x)a(x) &= \left(m+\nu(x)\phi_m(x)\right) \cdot (\bar a(x)+p(x)\phi_m(x)) = m\cdot \bar a(x) \pmod{\phi_m(x)}\\ G(x)a(x) &= \left(\dfrac{x^m-1}{\phi_m(x)} \cdot \mu(x)\right) \cdot (\bar a(x)+p(x)\phi_m(x)) = G(x) \cdot \bar a(x) \pmod{x^m-1}\\ \end{aligned} G(x)a(x)G(x)a(x)=(m+ν(x)ϕm(x))⋅(aˉ(x)+p(x)ϕm(x))=m⋅aˉ(x)(modϕm(x))=(ϕm(x)xm−1⋅μ(x))⋅(aˉ(x)+p(x)ϕm(x))=G(x)⋅aˉ(x)(modxm−1)
如果明文空间 a ∈ Z p [ x ] / ( ϕ m ( x ) ) a \in \mathbb Z_p[x]/(\phi_m(x)) a∈Zp[x]/(ϕm(x)),采取 LSB 编码,解密函数为
⟨ c , s ⟩ = p ⋅ u ( x ) + a ( x ) ( m o d ϕ m ( x ) , q ) \langle c,s \rangle = p \cdot u(x) + a(x) \pmod{\phi_m(x),q} ⟨c,s⟩=p⋅u(x)+a(x)(modϕm(x),q)
那么就有
G ( x ) ⋅ ⟨ c , s ⟩ = m p ⋅ u ( x ) + m ⋅ a ( x ) ( m o d ϕ m ( x ) , q ) G ( x ) ⋅ ⟨ c , s ⟩ = p ⋅ G ( x ) u ( x ) + G ( x ) a ( x ) ( m o d x m − 1 , q ) \begin{aligned} G(x) \cdot \langle c,s \rangle &= mp \cdot u(x) + m\cdot a(x) \pmod{\phi_m(x),q}\\ G(x) \cdot \langle c,s \rangle &= p \cdot G(x)u(x) + G(x)a(x) \pmod{x^m-1,q} \end{aligned} G(x)⋅⟨c,s⟩G(x)⋅⟨c,s⟩=mp⋅u(x)+m⋅a(x)(modϕm(x),q)=p⋅G(x)u(x)+G(x)a(x)(modxm−1,q)
因此,解密函数可以转化为:
由于模 ϕ m ( x ) \phi_m(x) ϕm(x) 总是不太好计算的,不仅仅是解密运算,我们想要将密文本身也放置到环 Z [ x ] / ( x m − 1 ) \mathbb Z[x]/(x^m-1) Z[x]/(xm−1) 上。但是这个环上的 RLWE 很简单,因为可以归约到环 Z [ x ] / ( x − 1 ) \mathbb Z[x]/(x-1) Z[x]/(x−1) 的一维格,不是困难的。
[GHS12] 的方法是利用 G ( x ) G(x) G(x),混合使用:模 x m − 1 x^m-1 xm−1 代数、模 ϕ m ( x ) \phi_m(x) ϕm(x) 代数。
公钥 { b i = E s ( 0 ) } \{b_i = E_s(0)\} {bi=Es(0)},短的随机数 r i ∈ Z [ x ] / ( ϕ m ( x ) ) r_i \in \mathbb Z[x]/(\phi_m(x)) ri∈Z[x]/(ϕm(x)),消息 a ∈ Z p [ x ] / ( ϕ m ( x ) ) a \in \mathbb Z_p[x]/(\phi_m(x)) a∈Zp[x]/(ϕm(x)) 的新鲜密文:
c = [ a , 0 ] + ∑ i r i ⋅ b i ( m o d ϕ m ( x ) , q ) c = [a,0] + \sum_i r_i \cdot b_i \pmod{\phi_m(x),q} c=[a,0]+i∑ri⋅bi(modϕm(x),q)
我们计算:
G ⋅ c = [ G a , 0 ] + ∑ i ( r i G ) ⋅ b i ( m o d x m − 1 , q ) G \cdot c = [Ga,0] + \sum_i (r_iG) \cdot b_i \pmod{x^m-1,q} G⋅c=[Ga,0]+i∑(riG)⋅bi(modxm−1,q)
其中的 G , r i G,r_i G,ri 都很短,因此 G r i Gr_i Gri 也是短随机数。
可以验证: