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

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

相关文章

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Python中DataFrame转列表的最全指南

《Python中DataFrame转列表的最全指南》在Python数据分析中,Pandas的DataFrame是最常用的数据结构之一,本文将为你详解5种主流DataFrame转换为列表的方法,大家可以... 目录引言一、基础转换方法解析1. tolist()直接转换法2. values.tolist()矩阵

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea