安全多方计算框架

本文对现有安全多方计算/学习框架进行了全面、系统的梳理。

  1. 目前大部分安全多方计算框架主要基于秘密共享、同态加密、混淆电路以及相关基本模块的组合。
  2. 通常使用定制的协议来支持特定数量的参与方(一般为两方或三方),导致可扩展性较差。
  3. 大多数只能支持诚实大多数/不诚实大多数的半诚实安全模型,以及诚实大多数的恶意安全模型。恶意安全模型只有基于SPDZ协议的安全多方学习框架才可以支持。
  4. 大部分支持安全训练功能的框架能够高效运行的模型较为简单,如线性回归、逻辑回归和网构较为简单的神经网络。对ResNet等较复杂的模型支持较少或效率较低。

1. ABY

ABY框架由德国达姆施塔特工业大学(Technische Universita ̈t Darmstadt)的 Engineering Cryptographic Protocols Group于2015年在论文《ABY – A Framework for Efficient Mixed-Protocol Secure Two-Party Computation》中提出。

该框架仅实现具有半诚实安全性的两方计算,支持三种秘密共享类型(算术共享、布尔共享、姚式共享)之间的安全转换,其中,算术共享采用Beaver乘法三元组,布尔共享采用GMW(Goldreich-Micali-Wigderson)协议,姚式共享采用混淆电路协议。

在这里插入图片描述

源代码:
https://github.com/encryptogroup/ABY

2. ABY3

ABY3 由Payman Mohassel and Peter Rindal于2018年在论文《ABY3: A Mixed Protocol Framework for Machine Learning》中提出。

该框架设计了一个通用的基于三方服务器的隐私保护机器学习框架,基于此实现了新的线性回归、逻辑回归、神经网络模型;提出了新的完整的算术电路、布尔电路和Yao电路之间的转化协议;提出了新的三方秘密分享下的定点十进制小数乘法、并设计了计算分断线性多项式函数的协议;该框架仅以半诚实安全性来实现三方计算

源代码:
https://github.com/ladnir/aby3

3. CBMC-GC

CBMC-GC由Martin Franz1, Andreas Holzer于2014年在论文《CBMC-GC: An ANSI C Compiler for Secure Two-Party Computations》中提出。

该框架是一个能将符合ANSI-C标准的程序转换成布尔电路的电路编译器,还包括一个以其他格式输出电路的工具circuit-utils,这个工具对于仅支持部分电路格式的文件框架至关重要,比如EMP-toolkit。

源代码:
https://github.com/MPC-SoK/frameworks/tree/master/cbmc-gc

4. Cheetah

Cheetah是阿里安全双子座实验室于2022年在USENIX Security’22的发布的论文《Cheetah: Lean and Fast Secure Two-Party Deep Neural Network Inference》提出的框架。

该框架通过仔细设计DNN,基于格的同态加密、VOLE类型的不经意传输和秘密共享, 提出了2PC-NN推理的系统Cheetah, 比CCS’20的CrypTFlow2开销小的多, 计算效率更快, 通信效率更高。

源代码:
https://github.com/Alibaba-Gemini-Lab/OpenCheetah

5. CrypTen

CrypTen是Facebook于2019年在论文《CRYPTEN: Secure Multi-Party Computation Meets Machine Learning》提出的框架。

该框架基于PyTorch实现,可以使机器学习从业者能够使用安全的计算技术,在保护数据隐私的场景下实现半诚实的机器学习模型训练。

源代码:
https://github.com/facebookresearch/CrypTen

官网:
https://crypten.ai

6. CrypTFlow2

CrypTFlow2是微软Deevashwer Rathee等人在CCS’2020的发表论文《CrypTFlow2: Practical 2-Party Secure Inference》提出的框架。

该框架基于茫然传输(Oblivious Transfer, OT)提出了安全比较的一种新的协议,并对该协议进行了深度优化。然后,利用该比较协议设计了面向神经网络的多个算子协议,例如ReLU、Truncation、faithful Division (divisor is public), Avgpool、和Maxpool等。

源代码:
https://github.com/mpc-msri/EzPC

7. EMP-toolkit

EMP-toolkit由XiaoWang,AlexJ.Malozemoff,andJonathanKatz在2016年提出,实现了零知识证明、OT、混淆电路等安全多方计算基本模块,实现语言包括Python、C++等。

源代码:
https://github.com/emp-toolkit

8. FRESCO

FRESCO由Alexandra Institute于2020年提出,该框架是一个高效的安全计算框架,提供了许多常用的安全功能的标准库,以便快速实现新的复杂功能,在应用程序中使用。FRESCO支持并行化和预处理等技术,使其能够扩展到大型计算。

FRESCO框架只实现了不诚实多数计算,对算术电路(SPDZ和SPDZ2k )具有恶意安全,对二进制电路具有半诚实安全。

源代码:
https://github.com/aicis/fresco

9. Frigate

Frigate是一个编译器,它将类似C语言的代码编译成二进制的电路描述,由Benjamin Mood, Debayan Gupta, Henry Carter等人于2016年在论文《Frigate: A Validated, Extensible, and Efficient Compiler and Interpreter for Secure Computation》中提出。

10. JIFF

JIFF由Multiparty.org Development Team于2020年发布,是一个用于构建依赖安全多方计算的应用程序的JavaScript库。JIFF高度灵活,专注于可用性,能够在浏览器、手机或Node.js中运行。JIFF的设计使得开发人员不需要熟悉MPC技术或知道密码协议的细节,就可以构建安全的应用程序。

源代码:
https://github.com/multiparty/jiff

11. MP-SPDZ

MP-SPDZ由澳大利亚的研究机构CSIRO’s Data61于2020年在论文《MP-SPDZ: A Versatile Framework for Multi-Party Computation》中提出。

该框架作为SPDZ-2的分支,是多方计算协议SPDZ的实现。MP-SPDZ将SPDZ-2扩展到了二十多种MPC协议,涵盖了常用的安全模型(诚实/不诚实的多数人和半诚实/恶意模型),以及二进制和算术电路的计算(后者的模数为素数和二次幂),所采用的基本模块包括秘密共享、不经意传输、同态加密和混淆电路。主体语言是Python,定义了很多新的关于MPC的类和库,可基于Python的高级编程接口来使用相关协议。

源代码:
https://github.com/data61/MP-SPDZ

12. MPC-ECDSA

2023年,Safeheron公司开源了基于 C++ 的 MPC 门限签名协议库,主要包括GG18、GG20、MPC-CMP3 种具有代表性的 MPC-ECDSA 协议。

源代码:
https://github.com/Safeheron/multi-party-ecdsa-cpp

13. MPyC

MPyC由Berry Schoenmakers于2020年发布,是一个用于MPC的开源Python包,实现了基于Shamir的秘密共享的半诚实安全的计算。

源代码:
https://github.com/lschoe/mpyc

14. Obliv-C

Obliv-C由Samee Zahur, Mike Rosulek, David Evans于2015年在论文《Obliv-C: A Language for Extensible Data-Oblivious Computation》中提出。

Obliv-C是一个简单的GCC包装器,可以很容易地在常规C程序中嵌入安全计算协议。

源代码:
https://github.com/samee/obliv-c

15. OblivVM

OblivVM由Chang Liu, Xiao Shaun Wang, Kartik Nayak等人于2015年在论文《ObliVM: A Programming Framework for Secure Computation》中提出。

ObliVM提供了一种领域专用语言,将Java的扩展编译成Java字节码,支持Yao的混淆电路,具有半诚实的安全性。

源代码:
https://github.com/oblivm/ObliVMLang

16. PICCO

PICCO由Yihua Zhang, Aaron Steele, and Marina Blanton于2013年在论文《PICCO: A General-Purpose Compiler for Private Distributed Computation》中提出。

该框架将C语言扩展编写的程序编译成本地二进制文件,并在分布式环境中运行它,实现了基于Shamir的秘密共享的诚实多数半诚实计算。

源代码:
https://github.com/applied-crypto-lab/picco

17. Primihub

Primihub是原语科技于2022年研发打造的隐私计算平台,融合了MPC(多方安全计算)、FL(联邦学习)、HE(同态加密)、TEE(可信执行环境)等多种技术路线,提供多安全级别、多性能要求、多场景支持的解决方案。

源代码:
https://github.com/primihub

18. Private Join and Compute

谷歌公司于2019年推出了Private Join and Compute隐私计算开源框架。该框架Private Join和Compute结合了隐私集合交集、同态加密两种基本的加密技术来保护数据。

源代码:
https://github.com/Google/private-join-and-compute 。

19. PySyft

PySyft是OpenMined开放源代码社区于2021年研发的用于安全和隐私深度学习的Python库。 PySyft使用多方计算(MPC)、联邦学习、差分隐私同态加密(HE)将模型训练中的隐私数据解耦。

源代码:
https://github.com/OpenMined/PySyft

20. SCALE-MAMBA

SCALE-MAMBA框架由KU Leuven COSIC于2019年提出。该框架是SPDZ-2的另一个分叉,尽管有共同的根源,但自2018年以来,这两个分叉已经有了很大的分歧。SCALE-MAMBA只实现了素数模数(不是二的幂数)的算术计算,根据Hazay等人的混淆电路,以及基于秘密共享的二进制计算。所有的计算都只在恶意安全的情况下实现,不诚实多数计算模数化只使用同态加密实现。另一方面,SCALE-MAMBA对理论上可能的任何访问结构都实现了诚实多数计算。前端与MP-SPDZ中的类似,但没有后期增加的动态循环优化、重复代码优化和机器学习功能。此外,作者已经开始脱离Python编译器,转而使用基于Rust的新编译器。

源代码:
https://github.com/KULeuven-COSIC/SCALE-MAMBA

21. SecretFlow

SecretFlow由蚂蚁集团于2022年发布,是一个保护隐私的数据智能和机器学习的统一框架, 它对隐私计算业务及环境进行了抽象,使用Python语言实现,巧妙的类库设计、不同类型对象设计,使得整个隐私计算应用流程有了一个比较明确的框架。

SecretFlow提供

  • 设备抽象,将多方安全计算(MPC)、同态加密(HE)和可信执行环境(TEE)等隐私计算技术抽象为密文设备,并将明文计算抽象为明文设备。
  • 基于抽象设备的计算图,使数据分析和机器学习工作流程能够表示为计算图。
  • 基于计算图的机器学习/数据分析功能,支持数据水平/垂直/混合分割和其他场景。
  • 多方安全数据分析系统 SCQL(Secure Collaborative Query Language),把 SQL 做到多方安全计算(MPC)技术上的应用,实现了工业级的多方安全数据分析功能。

22. Sequre

Sequre由Haris Smajlović, Ariya Shajii, Bonnie Berger等人于2023年在论文《Sequre: a high-performance framework
for secure multiparty computation enables biomedical data sharing》
提出。

该框架是一个易于使用的高性能MPC应用开发框架,提供了一套自动编译时优化,可以显著提高MPC应用程序的性能,主体语言是Python,目前已应用与在各种生物信息学任务上,包括全基因组关联研究、药物-靶标相互作用推断等,速度比现有流程提高了3-4倍,代码库大小减少了7倍。

源代码:https://github.com/0xTCG/sequre

23. Sharemind MPC

Sharemind MPC由 于2020年在论文《Sharemind: A Framework for Fast Privacy-Preserving Computations》中提出。

该框架实现了各种后端的前台,但它自己的后端只使用三方诚信多数半诚信计算。它还允许使用ABY和FRESCO作为后端,而专有的后端不能自由使用。

源代码:
https://github.com/sharemind-sdk

24. Squirrel

Squirrel是摩根大通及其附属公司(“JP摩根”)的人工智能研究小组和AlgoCRYPT CoE小组于2023年在论文《Squirrel: A Scalable Secure Two-Party Computation Framework for Training Gradient Boosting Decision Tree》提出的框架。

该框架可在纵向切分的数据集上进行安全的两方GBDT训练的框架,其中两个数据所有者各自持有相同数据样本的不同特征,在训练过程中不会泄露任何敏感的中间信息。

25. TF-Encrypted(TFE)

TFE由Morten Dahl等人于2018年在论文《Private Machine Learning in TensorFlow using Secure Computation》中提出。

该框架是在 TensorFlow 上构建的隐私计算框架,充分利用了 TF 中已有的图计算优化、网络通信和优化等特点,让开发者仅需关注隐私计算协议的功能层和应用层,是最早出现的一批支持安全多方计算+机器学习的隐私计算框架之一,目前主要由阿里巴巴安全部双子座实验室 承担维护。

官网地址:
https://tf-encrypted.io
源代码:
https://github.com/tf-encrypted/tf-encrypted

26. TinyGarble

TinyGarble由Ebrahim M. Songhori, Siam U. Hussain等人于2015年在论文《TinyGarble: Highly Compressed and Scalable Sequential Garbled Circuits》中提出。

该框架实现了Yao的半诚实安全的混淆乱码电路。TinyGarble可以将1024位乘法所需的内存占用压缩为4,172倍,同时将非XOR门的数量减少67%。

源代码:
https://github.com/esonghori/TinyGarble

27. Wysteria

Wysteria由Aseem Rastogi、Matthew A. Hammer等人于2014年在论文《WYSTERIA: A Programming Language for Generic, Mixed-Mode Multiparty Computations》中提出。

该框架实现了一个特定领域的语言,在半诚实环境下,只有二进制计算。

源代码:
https://github.com/voidshard/wysteria

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐