1个不稳定发布

0.1.1 2022年5月17日
0.1.0 2022年5月11日

#957 in 加密学

Apache-2.0

2.5MB
45K SLoC

CipherCore

如果您有任何问题,或者更一般地,想讨论CipherCore,请加入Slack社区

在此查看此文档的扩展版本,其中包括教程、几个示例和全面指南。

概述

CipherCore是什么?

CipherCore是一个用于处理加密数据的通用库。它是一个构建能够直接在加密数据上运行而无需先解密的应用程序的尖端平台。CipherCore可以在同一企业内甚至不同企业中属于多个组织的多个分布式数据集上运行任务,而无需向其他方透露数据。该库基于称为安全计算的技术。

什么是安全计算?

安全多方计算(SMPC)是密码学的先进子领域,提供各种类型的协议,允许在加密数据上执行某些程序(了解更多)。SMPC协议采用称为电路表示的受限形式的计算作为输入。将高级程序转换为电路表示是一个复杂、易出错且耗时的过程。CipherCore编译器通过自动将高级程序直接转换为SMPC协议,极大地简化了该过程,从而允许任何软件开发者使用安全计算,而无需具备任何密码学知识。

CipherCore和中间表示

CipherCore的易用性归功于在应用层和协议层之间引入了一个新的中间表示层,即计算图。首先将应用程序映射到一个计算图,然后再映射到SMPC协议。这种架构允许快速集成各种SMPC协议作为新的加密后端。如果您熟悉PyTorch、TensorFlow或JAX等机器学习框架(或更低层次的MLIR),那么您很可能知道计算图是什么。

CipherCore architecture

对SMPC的鸟瞰图

从高层次来看,安全多方计算协议(SMPC)允许在给定一个具有多个属于多个实体的输入的程序的情况下,以以下方式执行它:

  • 输出仅向一组希望的实体公开;
  • 除了可以从公开的输出推断出的信息外,没有任何实体了解其他实体所属的输入。

SMPC的文献非常丰富,我们推荐读者参考现有协议的全面概述。通常,在效率、实体数量和威胁模型之间存在三方权衡。

  • 效率
  • 实体数量
  • 威胁模型

CipherCore的设计方式使得大多数现有的SMPC协议可以轻松地作为后端插入。目前,我们支持ABY3 SMPC协议,该协议适用于三个实体,是现有协议中最有效的一个。

CipherCore的高级结构

与CipherCore一起工作时,有四个自然阶段:

  1. 使用图构建API将希望安全运行的计算表达为一个计算图;
  2. 编译该图到一个新的、通常更大的计算图,该图对应于一个SMPC协议,该协议执行相同的计算,同时同时保护输入和输出的隐私。这一步可以使用仓库中的CipherCore 编译器来完成。目前,我们仅支持三个非勾结实体的ABY3 SMPC协议,但这可能在未来发生变化。
  3. 通过使用本地评估器在样本输入上运行,检查生成的安全协议是否正确。这个仓库包含一个评估器的参考实现,它是简单的,但不是高效的。我们还提供了一个包含快速评估器的Docker镜像,该评估器通常要高效几个数量级。快速评估器的性能是三个分布式实体实际执行端到端安全协议执行(考虑网络交互)的一个强预测指标;
  4. 通过三个实际分布式实体在网络上的交互来端到端执行安全协议。这可以使用CipherCore 运行时来完成。我们提供运行时的试用访问,如有需要。(有关详细信息,请参阅此处)。

依赖项

~10–21MB
~278K SLoC