【问题标题】:Truncation in Homomorphic Encryption同态加密中的截断
【发布时间】:2018-09-01 15:53:45
【问题描述】:

在不允许除法运算的情况下,如何在 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))

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

【问题讨论】:

    标签: encryption truncation seal


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,尤其是对 CKKS 方案的参考。我研究了论文并搜索了公开可用的实现,但我找不到任何东西。据我所知,SEAL 中没有实现引导或数字删除。您是否碰巧知道此类实现是否(以及如何)可访问?
    • CKKS 从 3.0 版开始在 SEAL 中实现。引导程序目前不在 SEAL 中,由于性能挑战和它所施加的参数化限制,尚不清楚它是否会带来很大的价值。 HEAAN 库中提供了 CKKS 引导的一种实现:github.com/snucrypto/HEAAN
    猜你喜欢
    • 2016-09-16
    • 2016-06-14
    • 1970-01-01
    • 2012-06-09
    • 2016-02-11
    • 2017-06-22
    • 2012-06-17
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多