是什么使开发FHE应用程序具有挑战性?

FHE愿景从https(传输过程数据加密)到httpz(端到端加密)的新一代互联网协议。(zama)

本文为阅读《SoK: Fully Homomorphic Encryption Compilers》记录。

1.是什么使得开发FHE应用程序具有挑战性?

每个FHE方案都提供了一组新的配置和性能权衡,而要获得最先进的结果,需要对底层方案高度熟悉。并且FHE强加了一种根本不同的编程范式,因为需要独立于数据的程序、高效的解决方案经常需要复杂的矢量化方法。以下几点是开发人员目前面临的关键工程挑战:

  • 参数选择:FHE引入了计算特定参数的额外挑战,例如对于复杂的计算需要更大的明文模和密文模,来避免溢出或噪声问题。然而随着密文模和明文模参数的增长,LWE问题变的容易,所以需要对密文维度也要增长才能满足安全。现安全参数选择的方式有如下几种:

    ---查表:基于标准化工作提供的不同安全强度下参数设置表来设置。然而这些参数仅是保守估计,并不高效。https://homomorphicencryption.org

    ---给定密文维度n,选择可以正确解密计算结果并达到预期安全强度的最小q。然而,有效地计算最小q仍然是一个悬而未决的挑战。虽然有些方案存在对密文噪声增长的分析,但有时会给出更保守的参数。https://eprint.iacr.org/2019/493

    ---业界给出的方案:逐步减少q,直到计算某些代表性输入值无法正确解密为止。然后在1中查找安全阈值。

  • 编码:对于AES等加密方案,开发人员通常不必考虑底层加密方案的明文空间。只要消息可以序列化为二进制字符串,然后按规则填充即可。然而FHE中,明文空间语义决定了同态计算的效果。而且这些语义往往与倾向于使用的应用程序语义不完全匹配。

  • 数据无关计算:FHE计算是独立于数据的,否则将违反隐私保障。因此,FHE计算经常被概念化为电路,即通过导线连接的门。无论输入的值是多少,执行都遵循相同的步骤。如何模拟if/else分支。

  • SIMD批处理:SIMD批处理是第二代FHE方案中主要性能突破点之一,即将许多不同的消息打包到单个密文中,由此实现单计算的并行化。利用SIMD批处理来减少延迟需要新的编程范式和算法,例如,如果我们将每个矩阵对角线编码为SIMD向量,而不是按行或按列编码,则矩阵向量乘积可以更有效地表达。对于不同的计算类型,怎样的SIMD编码使计算效率更快值得思考。

  • 密文维护:不同的FHE方案使用各种解决方案来管理同态计算过程中密文噪声的增长。这些方案,如relinearization, mod-switching/rescaling or bootstrapping,必须由开发人员在程序代码中明确指定调用,以便用最佳方式管理噪声增长,获得最佳性能。何时调用密文维护方案值得设计应用程序时思考。越少的调用将带来越高的性能。文献17努力实现这一过程的自动化。https://arxiv.org/abs/1912.11951

2.如何使用现存工具实现高效FHE应用?

  • 现存FHE工具图

---FHE库:实现了特定的方案,并提供了略高级别的API,例如keygen、encode、encrypt、add、mult

---FHE编译器: 通过提供一种更高级的语言来抽象参数选择、加密和解密等方面,开发人员可以使用这种语言来指定他们的计算。

图片

  • 开源工具参考图

表I中,概述了FHE库,并列出了支持的语言、方案、功能和可访问性方面。

图片

表II中,提供了各种FHE编译器及其特性的概述。FHE编译器大致可以分为通用工具和针对特定应用程序的工具。在后一类中,我们看到编译器的目标是构建机器学习(ML)应用程序。对于SIMD批处理(SIMD),我们区分了仅启用批处理的工具和主动帮助处理矢量化数据的工具。同样,我们区分手动、部分辅助和全自动参数选择。虽然所有工具都包括某种形式的自动密文维护操作,但我们将工具分为使用朴素启发式的工具和使用更高级策略的工具。此外,我们注意到工具是否试图减少它们生成的电路的乘法深度。

图片

表III将编译器与它们使用的库相关联。在这里,我们可以看到SEAL被比任何其他库多得多的编译器瞄准。

图片

  • 现存工具实践FHE应用

https://github.com/MarbleHE/SoK 实践了三种典型的应用程序来介绍FHE应用的开发:1.风险评分计算:需要进行比较,因此需要二进制电路仿真。虽然很简单,但它代表了一类严重分支的程序,这在传统编程中很常见,但在FHE中很难表达。2. 统计χ2-检验: 在一个公式中将其简化为整数上的多项式函数。默认情况下这些方法不适合FHE,但可以重新制定或近似以允许有效的实现。3. 机器学习: 特别是一系列网络架构的神经网络推理。我们评估了一系列日益复杂的模型,并展示了常用的架构是如何适应FHE的。

3.讨论:何时使用哪种FHE工具?

如果选择不同的工具,每个工具都具有略微不同的功能和优势,那么为给定的应用程序选择合适的工具可能是不平凡的。建议:

    如果用多项式激活函数训练模型可以产生足够的精度,我们建议使用针对CKKS方案的nGraph HE编译器。

    在需要更深/重复的网络或标准激活功能(例如ReLU)来实现所需精度的情况下,具体库提供的可编程自举功能使其成为最合适的选择。

  • 对于计算非多项式函数或需要二进制仿真的通用应用程序:

        如果主要使用整数,那么具体的FHE库提供的可编程自举是一个好选择。

        对于需要真正的二进制明文空间的应用程序,Cingulata(TFHE)很可能是最简单的方法。

  • 对于在大量数据上计算(多项式)统计数据的应用程序,我们建议EVA编译器针对需要近似数量的应用程序使用CKKS/

  • 如果仅使用整数,我们建议直接使用针对BFV的SEAL库,因为使用BFV不太复杂,并且当前针对它的编译器会带来显著的速度减慢。

  • 对于涉及或使用机器学习推理的应用程序,推荐的方法取决于所使用的ML模型的复杂性

4.github库

EVA: https://github.com/microsoft/EVA.git

基于EVA实现的隐私保护神经网络:https://github.com/and0ooo/privacy-preserving-neural-network-based-on-EVA-compiler.git

E3:https://github.com/momalab/e3.git

Cingulata: https://github.com/CEA-LIST/Cingulata.git

nGraph-HE: https://github.com/IntelAI/he-transformer.git

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值