1

当不允许除法运算时,如何在 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)).

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

4

1 回答 1

3

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

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

于 2018-09-03T18:28:07.607 回答