安全多方计算框架最全合集(持续更新)

2023-11-01 12:20

本文主要是介绍安全多方计算框架最全合集(持续更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安全多方计算框架

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

  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. 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

6. EMP-toolkit

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

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

7. FRESCO

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

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

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

8. Frigate

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

9. JIFF

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

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

10. MP-SPDZ

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

MP-SPDZ 作为SPDZ-2(Keller等人,CCS’13)的分支,是多方计算MPC协议SPDZ(Damgård等人,Crypto’12)的实现。MP-SPDZ将SPDZ-2扩展到了二十多种MPC协议,

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

11. MPC-ECDSA

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

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

12. MPyC

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

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

13. 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

14. 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

15. 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

16. Private Join and Compute

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

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

17. 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

18. 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

19. Sharemind MPC

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

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

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

20. Squirrel

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

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

21. 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

22. Wysteria

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

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

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

这篇关于安全多方计算框架最全合集(持续更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322945

相关文章

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更