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

news2024/9/22 11:35:47

安全多方计算框架

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

  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.coloradmin.cn/o/1122356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我发现用StarUML来画UML也挺香的

2023年10月22日,周日晚上 我已经决定以后都用StarUML来画UML了,因为这个软件不仅免费,而且太适合画UML图了 我之前主要用plantUML和draw.io来画UML, plantUML虽然是通过文本来生成UML图,但是排版不是不好看&#xff…

“智能文件批量改名工具:轻松管理文件名,一键去除特殊符号“

你是否曾经在面对一堆文件名中包含特殊符号,而感到困扰,不知道如何快速、准确地处理它们?现在,我们为你带来了一款智能文件批量改名工具,它可以轻松地帮助你去除文件名中的特殊符号,让你的文件管理更加规范…

【试题002】C语言有关于sizeof的使用

1.说明&#xff1a;sizeof()是测量数据类型所占用的内存字节数&#xff0c;字符串常量在存储时除了要存储有效字节外&#xff0c;还要存储一个字符串结束志‘\0’。 2.代码举栗子&#xff1a; #include <stdio.h> int main() {char str[] "book";printf(&qu…

网络协议--Traceroute程序

8.1 引言 由Van Jacobson编写的Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具。尽管不能保证从源端发往目的端的两份连续的IP数据报具有相同的路由&#xff0c;但是大多数情况下是这样的。Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过…

开源LLEMMA发布:超越未公开的顶尖模型,可直接应用于工具和定理证明

深度学习自然语言处理 原创作者&#xff1a;Winnie 今天向大家介绍一个新的开源大语言模型——LLEMMA&#xff0c;这是一个专为数学研究而设计的前沿语言模型。 LLEMMA解数学题的一个示例 LLEMMA的诞生源于在Proof-Pile-2数据集上对Code Llama模型的深度训练。这个数据集是一个…

Java 8 新特性 Ⅱ

方法引用 举例: Integer :: compare 理解: 可以看作是基于lambda表达式的进一步简化 当需要提供一个函数式接口的实例时, 可以使用lambda表达式提供实例 当满足一定条件下, 可以使用方法引用or构造器引用替换lambda表达式 实质: 方法引用作为函数式接口的实例 (注: 需要熟悉…

【AOA-VMD-LSTM分类故障诊断】基于阿基米德算法AOA优化变分模态分解VMD的长短期记忆网络LSTM分类算法(Matlab代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

人大金仓获评“2023年度软件和信息技术服务名牌企业”

近日&#xff0c;中国电子信息行业联合会在2023世界数字经济大会暨第十三届智慧城市与智能经济博览会上&#xff0c;发布了“2023年度软件和信息技术服务名牌企业”&#xff0c;凭借在企业规模、技术创新、市场影响力等方面的突出表现&#xff0c;人大金仓成功入选。 此次评选在…

计组03:20min导图复习 中央处理器

&#x1f433;前言 图源&#xff1a;文心一言 考研笔记整理&#xff0c;纯复习向&#xff0c;思维导图基本就是全部内容了&#xff0c;不会涉及较深的知识点~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画思维导图~&#x1f9e9;&#x1f9e9; 编辑&#xff1a;…

【数值分析】2 - 插值法

文章目录 一、引言1.1 插值法引入1.2 常用插值法1.3 插值法定义 二、插值法研究的问题2.1 插值多项式存在的唯一性2.2 如何构造n次多项式2.2.1 待定系数法2.2.2 拉格朗日插值法2.2.2.1 拉格朗日多项式2.2.2.2 拉格朗日插值余项2.2.2.3 例题2.2.2.4 拉格朗日插值法的问题 2.2.3 …

【大疆智图】大疆智图(DJI Terra 3.0.0)安装及使用教程

大疆智图是一款以二维正射影像与三维模型重建为主的软件,同时提供二维多光谱重建、激光雷达点云处理、精细化巡检等功能。它能够将无人机采集的数据可视化,实时生成高精度、高质量三维模型,满足事故现场、工程监测、电力巡线等场景的展示与精确测量需求。 文章目录 1. 安装D…

shell学习脚本04(小滴课堂)

他就可以直接读出来了。不需要在sh后面加参数。 可以用-s隐藏内容&#xff1a; 可以用-t进行指定几秒后显示。 -n限制内容长度。 输入到长度为5自动打印。 我们把-s放到-p后面的话&#xff1a; 这样会出错。 如果最后加5m会一直闪烁。 大家可以按照需求自行使用。

42907-2023 硅锭、硅块和硅片中非平衡载流子复合寿命的测试 非接触涡流感应法

1 范围 本文件描述了用非接触式涡流感应法测试太阳能电池用单晶硅锭、硅块和硅片中非平衡载流子复 合寿命的方法。 本文件适用于非平衡载流子复合寿命在0.1μs&#xff5e;10000 μs、电阻率在0.1 Ω cm&#xff5e;10000 Ω cm 的硅锭、硅块和硅片的测试。其中瞬态光电导衰…

Spring定时任务@Scheduled

在 Spring 框架中&#xff0c;可以使用定时任务来执行周期性或延迟执行的任务。Spring 提供了多种方式来配置和管理定时任务。有Java自带的java.util.Timer类&#xff0c;也有强大的调度器Quartz&#xff0c;还有SpringBoot自带的Scheduled。 在实际应用中&#xff0c;如果没有…

实际项目中如何进行问题排查

Linux自带 文本操作 文本查找 - grep文本分析 - awk文本处理 - sed文件操作 文件监听 - tail文件查找 - find网络和进程 网络接口 - ifconfig防火墙 - iptables -L路由表 - route -nnetstat其他常用 进程 ps -ef | grep java分区大小 df -h内存 free -m硬盘大小 fdisk -l | gr…

STM32F4_USB读卡器(USB_Slave)/USB U盘(Host)

前言 STM32F4芯片自带了USB OTG FS&#xff08;FS&#xff0c;即全速&#xff0c;12Mbps&#xff09;和USB OTG HS&#xff0c;支持USB Host和USB Device。 1. USB简介 USB&#xff0c;是英文Universal Serial BUS&#xff08;通用串行总线&#xff09;的缩写&#xff0c;是一…

硬盘无法分区的原因以及3种解决方法!

硬盘无法分区的原因 无论是新买的硬盘还是用了很久的硬盘&#xff0c;在分区过程中都可能会遇到硬盘无法分区的问题。在这里我们总结了以下几点原因&#xff1a; 主板生产商为了防止病毒侵入引导区文件在主板进行了设置&#xff0c;导致硬盘无法进行分区。 新买的硬盘没有…

42910-2023 无机胶粘剂高温压缩剪切强度试验方法

1 范围 本文件描述了在高温条件下测定无机胶粘剂压缩剪切强度的试验方法。 本文件适用于300℃~1000℃温度范围内&#xff0c;耐热陶瓷、复合材料及其他非金属材料之间搭接压缩 剪切强度的测定。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可…

一、BurpSuite基本界面学习

一、Dashboard 1.Scan Scan功能&#xff1a;能够对网站进行爬行&#xff08;主要发现网站可交互的接口和网址关联的路径&#xff0c;结果显示在Target&#xff09;和代码审计&#xff08;除了爬行的效果外&#xff0c;一定程度上会进行漏洞发现与查找&#xff09; 重点&#…