BGV加密方案是一个整数全同态加密方案,其加密域可以是格或多项式环,基于LWE或者RLWE困难问题。BGV采用的主要思想是将明文嵌入在最低比特位,然后通过模运算取出明文。比如密文为,私钥为,那么,其解密结构为,其中t是明文空间的模 ,p是密文空间的模。因为t是远远小于p的,所以只要te足够小,那么直接用t模就可以取出明文。为了便于描述,下面的都是在分圆多项式环上。
密钥的选择
设噪声分布为,s是在噪声分布中采样的一个随机数。那么私钥。
随机从环上选取a,和噪声e,计算,其中t是明文空间的模。那么公钥为。
加密
假设我们要加密一个明文m。
选取噪声u,,,计算,;
密文。
解密
有密文和私钥,
加解密正确性证明
加法同态
有密文和分别是由和加密而来。考虑他们的解密结构,,则与私钥的内积显然是的一个有效密文。
但是,噪声显然比原来要增加大概一倍,是呈现线性增加的。所以,随着加法次数的增加,噪声会越来越大,直到淹没明文,变成无效密文。
乘法同态
有密文和分别是由和加密而来。
则,
考虑,是的一个有效密文,但是,此时,私钥为,比原来的私钥维度增加了。
从上式可以看出,密文的噪声是指数级增加的,而且,密文的维度也在不断增加。这对于高效计算乘法是非常不利的。而密文的重线性化,使得密文的维度维持在跟直接加密一样。
对于噪声的解决方案主要有两种,一个是模交换技术,另一个是自举重加密。
模交换是通过减小密文域模的大小来减少噪声,而自举重加密则是将密文进行同态解密后再加密,以获得新的密文,这样就跟直接加密的密文一样了。