RLWE同态加密的明文域
RLWE的加密方案,如BGV、BFV,加密的对象,实际上是分圆多项式环上的一个整系数多项式。而我们在平时接触到的需要加密的数据,如图像或者工资,通常是一个数。所以,在使用RLWE同态加密时,需要将数转化为多项式,这就是同态加密的明文编码,或者叫做明文的打包。
打包并不是说将数直接映射到多项式就可以了,我们需要保持打包的同态性质,这样才能使得同态运算的结果保持真正的同态性质。本文主要介绍更适用于加密同态加密的打包方法,系数打包。也就是将剩余环 Z T \mathbb{Z}_T ZT中的元素映射到多项式环 Z T [ x ] / ( x N + 1 ) \mathbb{Z}_T[x]/(x^N+1) ZT[x]/(xN+1)上。
单系数打包
最朴素的思想就是,一个数对应于一个多项式。设需要加密的数为 a a a, 则,我们可以用 a a a构造一个多项式,使得打包是加法同态的。
- 将 a a a作为多项式的一个系数,其他的系数随机生成。
- 将 a a a切分到多个系数,剩余的系数使用随机数。
方法1
固定位置 i i i,构造的明文多项式的第 i i i个系数等于需要打包的明文 a a a。
则 P = p 0 + p 1 x + p 2 x 2 + ⋯ + p i x i + ⋯ + p N − 1 x N − 1 P=p_0+p_1x+p_2x^2+\cdots+p_ix^i+\cdots+p_{N-1}x^{N-1} P=p0+p1x+p2x2+⋯+pixi+⋯+pN−1xN−1,其中 p i = a p_i=a pi=a.
接下来我们证明这种打包是加法同态的。
假设明文 b b