同态加密中的截断

时间:2018-09-01 15:53:46

标签: encryption truncation seal

在不允许除法运算的情况下,如何在同形加密库(如HELib或SEAL)中实现截断?

我有两个浮点数a=2.3,b=1.5,我将它们缩放为2位精度的整数。因此,我的编码器基本上看起来像这样的encode(x)=x*10^2。假设enc(x)是加密函数,则enc(encode(a))=enc(230)enc(encode(b))=enc(150)

在乘法运算中,我们获得了a*b=enc(23*15)=enc(34500)的巨大价值,因为缩放因子也会相乘。这意味着除非我可以截断结果,否则我的输入将呈指数增长,因此trunate(enc(34500))=truncate(enc(345))

我认为这样的截断函数是不可能的,因为它不能用多项式表示。尽管如此,我想知道在数学上如何进行这种截断是否有技巧,还是仅仅是一个未解决的问题?

1 个答案:

答案 0 :(得分:3)

在BFV和BGV方案中可能但很难执行这样的截断,并且在大多数用例中都不太可能导致可接受的性能。这个问题与引导所述方案的复杂性非常相关。有关更多详细信息,请参见 https://eprint.iacr.org/2018/067 https://eprint.iacr.org/2014/873

另一方面,在CKKS方案中截断是很自然的操作,截断更容易实现(请参阅 https://eprint.iacr.org/2016/421)。但是,CKKS方案的缺点是所有计算只能产生近似正确的结果,这可能不是您想要的。