BFV加密是主流的基于容错学习问题的全同态加密方案之一,其主要思想是将明文放在密文的高位,通过整除的方式,去除低位的噪声。比如有一个BFV的密文,私钥,则BFV的解密为,其中是一个公开常数,是解密噪声,显然,当噪声足够小的时候,我们可以通过除以t取整获得明文。
公共参数选择
首先,需要一个分圆多项式,其中是的整数次幂。由和一个大整数定义一个多项式环和一个大整数模。明文模为,,明文空间为环。 三个在换上的分布,噪声分布,私钥分布和一个均匀随机分布 。
为了生成辅助密钥,还需要一个整数,。这里的是用于比特分解的模,所谓的比特分解,就是把一个数表示成,也就是进制表示。
私钥生成
在私钥分布中采样,得到,则私钥。一般来说私钥分布和噪声分布是同一个分布,实际中往往选择离散高斯分布。
公钥生成
在均匀随机分布中采样得到得到,然后在噪声分布中采样得到,计算,其中私钥是。则,公钥。
辅助密钥生成
首先在均匀随机分布中采样次,得到,在噪声分布中采样次,得到,计算,其中。则
加密
对于一个明文,首先将其编码到环上,然后再加密。设编码后的明文为。从私钥分布中采样得到,再从噪声分布中采样两次得到和。计算,。则密文。
解密
对于私钥,密文,其解密为。
证明如下:
只要小于,则可以正确解密。
加法
加法是向量的加法,比如有密文和,则。
考虑其解密结构,,显然,解密噪声增加了。
乘法
有密文和,则。然后,通过重线性化和辅助密钥转化为二维的密文。若没有线性化,则其密文的私钥应该是,因为,。
重线性化
设乘法得到的密文为,则其解密为,经过重现性化后,得到。
由于,所以,
为重线性化的噪声。