什么是全同态加密(FHE)中的自举(Bootstrapping)?
什么是自举操作?
首先,让我们看一下牛津词典对自举(bootstrap)的定义:“通过自己的靴带将自己拉起”。当我们说一个HE方案是可自举的时,这意味着它可以在至少进行一项额外操作的同时,同态地评估自己的解密过程。
如图1所示,在经典意义上评估解密过程需要一个密文和一个秘密密钥作为输入,并确保输出明文。然而,在FHE中,我们处理的是解密过程的同态评估,即自举操作,它使用了一个加密的秘密密钥和一个密文来生成一个“等效”的密文,我们可以进一步进行计算。加密的秘密密钥,也称为自举密钥或刷新密钥,是由秘密密钥持有者作为公钥材料的一部分提供的。
为什么在FHE中使用自举操作?
所有常见的FHE方案都基于嘈杂的加密(噪音是保证新加密安全性的因素),在其中进行同态操作会增加噪音幅度并降低密文的质量,即计算预算。自举操作的主要用途是将一个用尽的密文转换为“等效”的刷新密文。用尽的密文包含高噪音,无法进一步操作,而刷新的密文可以支持进一步的同态操作。自举操作的次要目的是在自举操作期间对加密消息评估函数。在这种情况下,自举操作的输出密文加密了明文消息的函数,而不仅仅是消息本身,除了减小输入密文的噪音。这种形式的自举操作被称为功能性或可编程自举操作。
自举操作在FHE中的作用
在FHE中的作用是验证加密方案的正确性。常见的自举方法遵循Craig Gentry引入的相同框架,即对自己的解密过程进行同态计算。然而,FHE方案中的自举机制在不同的方案之间有所不同。在我们的白皮书中,我们描述了DM(FHEW)/ CGGI(TFHE),CKKS和BGV/BFV FHE方案中的自举机制,突出了各种方法之间的主要区别,并基于OpenFHE库的计时实验结果和同行评议科学文献报告评估了它们的性能。
基于这一分析,我们提供了一些实践指南。请注意,截至撰写本文前,OpenFHE已经包括了CKKS、DM和CGGI方案的自举实现。BFV/BGV的自举实现目前正在开发中,并将包含在未来的OpenFHE版本中。
实践指南
我们总结了我们对CGGI、CKKS和BGV方案的自举性能分析,有关性能结果的更详细分析可在白皮书中找到。之所以选择CGGI而不是DM,是因为对于均匀三元秘密分布的典型安全设置,CGGI比DM稍快。BGV和BFV自举的复杂性非常相似,因此只需考虑BGV即可。在使用OpenFHE中的CGGI和CKKS实现运行实验后,对于BGV,我们使用了报告的结果,也就是安全参数的选择与128位安全级别相对应。
建议和总结
当密文包含大量槽位(超过100个)和/或需要更高精度(超过3-8位)时,CKKS自举操作性能最佳。
当槽位数量较少(最多100个)且需要低精度(最多3-8位)时,DM/CGGI自举操作更有效率。
DM/CGGI自举操作可以用于高效地评估小整数上的任意函数(使用查找表),而CKKS可以评估相对平滑的函数(使用多项式,如切比雪夫插值)。
BGV/BFV自举操作在槽位摊销时间上略快于DM/CGGI,但比CKKS慢。但是,BGV自举操作不支持本来就具有任意函数评估的功能。
硬件加速可以应用于所有这些自举方法,可用的文献表明,对于所有这些方法,预期的加速速度应该相似。在更高层次上,我们可以使用以上的见解来制定关于每个FHE方案何时最有用的建议:
CKKS对于处理实数的应用效率最高,实际上通常以浮点数表示。因此,CKKS是许多实际机器学习问题的最佳选择,如逻辑回归训练、卷积神经网络推断和统计计算等。
DM和CGGI(也称为FHEW和TFHE)是需要在小整数上进行任意函数评估的应用的最佳选择。一个常见示例是评估布尔电路。另一个示例是某些模型的机器学习推断。
BGV和BFV通常用于处理大量小整数的应用。常见示例包括私人信息检索和私人集合交集,这些应用经常用于安全数据库查询应用程序。
热门文章: