使用同态加密构建应用
摘要
2009年,克雷格·金特里提出了首个“完全”同态加密方案,允许对加密数据执行任意电路运算[17]。同态加密是一种非常强大的密码学原语,尽管实践者常常认为其效率太低而难以用于实际应用。然而,这些加密方案的性能已远非金特里的原始工作可比:如今已有多个维护良好的库实现了同态加密方案和协议,并取得了令人印象深刻的性能成果,同时社区正在进行持续的标准化工作。在本教程中,我们将综述现有同态加密格局,既提供对最新技术的一般性概述,也深入探讨其中几个现有的库。我们的目标是为更广泛的计算机安全社区提供一个全面且易于理解的同态加密入门介绍。多位报告人是知名公开同态加密库的核心开发者,同时也是同态加密标准化工作 HomomorphicEncryption.org [2]的组织者。
本教程面向应用开发者、安全研究人员、隐私工程师、研究生以及任何对学习现代同态加密基础感兴趣的人士。本教程分为两部分:第一部分适用于具备基础大学水平数学知识的读者;第二部分将涵盖更高级的主题,包括不同的同态加密方案和库的介绍、具体示例应用和代码样本,以及更深入的讨论关于实现挑战。第二部分要求听众熟悉现代C++。
CCS概念
- 安全与隐私 → 密码学;
- 软件及其工程 → 软件设计工程;
关键词
同态加密;安全计算;密码学标准化;应用开发
教程说明 第一部分:同态加密简介
在本教程的第一部分,我们将全面介绍现代同态加密(HE),重点关注实际应用方面。我们的目标是为感兴趣的研究员、开发者和公司提供足够的知识,以支持他们在这一领域的进一步探索。
我们首先设想由公司、政府和个人客户所需的各类安全应用与服务,这些应用和服务如今借助同态加密(HE)已经可以实现,甚至具备实用性。为了具体说明,我们将通过医疗保健领域的具体示例进行阐述,并讨论以下问题:
- 现有的同态加密方案有哪些能力和局限性?
- 我可以信任同态加密来保护我的私有数据吗?我们简要介绍同态加密方案的数学基础及其安全性论证。
- 如何节省加密数据的存储和处理时间?目前大多数同态加密方案和库支持加密大批量数据。我们展示了通过正确使用此技术,相较于朴素方法可以节省几个数量级的开销。
- Which HE scheme(s) should I adopt? 我们对不同的同态加密方案进行了高层次的比较,并讨论了针对特定应用以及存储或带宽需求的具体选择。
- 同态加密足够成熟了吗?尽管同态加密仅有十年历史,但它已经适合主流应用。社区(包括学术界和产业界)一直在积极推动同态加密的标准化工作。我们简要描述了该标准化工作所采取的方向和取得的进展。
- 使用同态加密创建应用有多容易?我们简要介绍第二部分的内容,其中讨论了多个现有的同态加密库和编译器。
Break
我们将休息30分钟,在此期间,我们会帮助听众安装同态加密库,以便他们在第二部分获得更实际的操作体验。
第二部分:探索同态加密库
本教程的第二部分介绍了四种开源同态加密库:SEAL [8], PALISADE [6], TFHE [9], 和 cuFHE [4]。我们讨论了这些库中实现的同态加密方案,并给出了使用每种库编写简单应用的具体示例。最后,我们介绍了两种用于开发支持同态加密的应用的基于编译器的方法。
简单加密算术库
简单加密算术库 (SEAL) 是由微软研究院自2015年起开发的同态加密库。SEAL 使用 C++17 编写,并为公共 API 提供了 .NET 封装器。在本部分演示中,我们将介绍 SEAL 的核心功能,展示如何执行简单的计算,并以实现一个简单的私有集合交集协议为例,讨论其中的一些挑战和解决方案。SEAL 2.3.1 可在 http://sealcrypto.org 下载。如需背景阅读,请参阅该网站上提供的文档。
PALISADE格密码学库
PALISADE格密码学库为同态加密及其他先进的基于格的协议(如基于身份的加密、基于属性的加密和程序混淆)提供了一个分层框架。我们介绍了该库及其架构,讨论了所支持的方案及其功能,并概述了明文编码器。我们通过两个简单的应用示例,展示了如何利用库中的密码上下文封装器功能,使用同一段代码在多个方案中执行。
PALISADE 1.2.0 可在 https://git.njit.edu/palisade/PALISADE 下载。有关背景阅读,请参阅网站上提供的用户手册。
TFHE:环面快速全同态加密
快速可引导的同态加密方案释放了同态计算的全部灵活性。它们支持无限或未知深度的电路,同时具有较小的密文和公钥尺寸。此外,与算术方案相比,加密形式下的比较操作成本更低。
使用这些方案的实现类似于数字电路设计,其中二进制门在诸如TFHE(中央处理器)和cuFHE(图形处理器)之类的库中构建。TFHE库支持多种明文几何结构和计算模型(电路、自动机、查找表),以及离散与连续逻辑(与其他库互兼容)。
TFHE旨在评估小型电路,例如比较操作、单个低延迟问题实例(与支持单指令多数据操作的方案相对),也可用于可验证计算。TFHE及其文档可在 https://tfhe.github.io 下载。
cuFHE 和硬件加速
在硬件加速(尤其是 GPU 上)的同态加密(HE)以较低的成本(能耗和硬件)实现了显著加速。我们解释了 HE 应用如何被卸载到 GPU 并由其加速,并澄清了在 GPU 上进行机器学习(ML)与同态机器学习(homomorphic ML)之间的混淆。
我们以实现 TFHE 方案 [9] 的 cuFHE 库 [4] 为例,演示如何使用现有库。我们展示了 C++ 和 Python API 中两个等效脚本,重点介绍如何在单 GPU 或多 GPU 系统上实现高计算吞吐量。我们还进一步介绍了我们为提供优化扩展指令集所做的努力。其他相关工作包括:用于构建部分同态加密方案的 cuHE 库 [1]、微软研究院开发的 GPU加速的SEAL、A*STAR 与新泽西理工学院(NJIT)[10, 11] 开发的 GPU 加速的布拉克斯基‐范‐维尔科特伦方案 [12, 13, 16, 18],以及太平洋太空与海战系统中心(SSC Pacific)开发的 Nomad,该工具为 HElib 使用布鲁斯坦算法 [14] 实现了基于 GPU 的优化。
cuFHE 库及其文档可在 https://github.com/vernamlab/cuFHE 下载。
基于编译器的方法
在本节中,我们讨论两种从高级抽象编译到同态加密的方法:RAMPARTS [7] 和 Cingulata [3]。
RAMPARTS 提供了针对 Julia编程语言 的编译器,允许将同态加密功能集成到现有的 Julia 程序中;Cingulata 则是一个编译器工具链和运行时环境,用于在同态加密数据上执行类似 C++ 的程序。
908

被折叠的 条评论
为什么被折叠?



