SIMD编码
同态加密的一个比较大的缺点就是密文太大,计算一次密文运算的时间长。直接降低一次密文操作的开销是困难的,于是很自然的一个想法就是能不能提高吞吐量。
SIMD的意思是,一次操作可以同时处理多个数据。我们将多个数映射到同一个明文多项式。BGV的明文域实际上是多项式。当我们的编码是同态的时候,我们就得到了一个SIMD的同态操作。
比如简单的系数打包 f 1 ( x ) = a 0 + a 1 x + a 2 x 2 , f 2 ( x ) = b 0 + b 1 x + b 2 x 2 f_1(x)=a_0+a_1x+a_2x^2,f_2(x)=b_0+b_1x+b_2x^2 f1(x)=a0+a1x+a2x2,f2(x)=b0+b1x+b2x2.
我们计算 f 1 ( x ) + f 2 ( x ) = ( a 0 + b 0 ) + ( a 1 + b 1 ) x + ( a 2 + b 2 ) x 2 f_1(x)+f_2(x)=(a_0+b_0)+(a_1+b_1)x+(a_2+b_2)x^2 f1(x)+f2(x)=(a0+b0)+(a1+b1)x+(