mpc

news/2024/9/20 7:52:06/文章来源:https://www.cnblogs.com/Janly/p/18316081

https://blog.csdn.net/apr15/article/details/133965768

 

在“数据安全概述”里面, 我们提到了安全多方计算SMPC(Secure multi-party computation)的技术。在这个计算里面代表是密码分享SS (secret sharing)技术。 

 

 

而开启整个算法世界的其实是华人科学家姚期智教授, 他提出了百万富翁问题, 一下子引发了全世界密码学专家的思考,4年后他还提出了混淆电路解决了这个问题。 

 

至此电路的思想已经深入人心, GMW就是利用了电路+SS+OT的思想,但是抛弃来的混淆,而采用了随机尾数的方式。

 

到了BGW,进一步加速了

 

 

而这一切的基础是RSA (Rivest, Shamir, Adelman)非对称加密算法的发明。

 

 

 

在RSA的基础上,诞生了OT (oblivious transfer)算法, 实现了N选1的双方隐私保护。 

 

 

OT通过利用RSA,通过引入3个随机数(x0, x1, k) 然后通过加密后实现对选择序号的保密,以及对原始2个带选择数的保密。 同时通过两次对同一个序号进行反向处理,实现只有对应,序号的数能够被恢复。 

 

 

上述发明成为开启整个多方安全计算时代的雷声。

 

前言

 

数据安全越来越重要了,为了确保数据安全, 常见的技术手段有拷贝安全, 访问安全, 计算安全,当然这些方面都离不开加密技术。因而,密码学的人的春天来了。 

 

 

拷贝安全常见的方法有防篡改, 数据确权, 数据脱敏等方法。 

 

 

访问安全经常采用可信执行环境, 权限控制等。 

 

当然目前密码学的进展也日新月异, 尤其后量子密码时代来临。 

 

 

 

多方安全计算 - 起步

 

当存在多方的时候, 最简单的情况是,找一个信任的天使方, 大家把数据给他, 然后进行联合计算。这种情况下, 即便有恶意方, 他也无法看到各方隐私数据。 

 

 

但是,现实场景中, 这个天使方往往是不存在的。这种情况下, SS技术提出, 将数据切分多份, 然后分布到不同的计算节点上进行计算, 每个计算节点都无法还原原始数据, 但是可以推进计算结果,最终多个计算节点的结果进行整合就得到了最终结果。 

 

 

 

 

Shamir算法

 

这个Shamir就是著名的RSA算法的S, Adi Shamir。 

 

早期Shamir提出了多项式原始的SS技术,通过拉格朗日差值法,实现秘密通过多项式方程的参数分享到多方,实现既不分享原始内容,也不分享原始内容的加密形态,而且具有可解方式的组合个数就可以破解的能力。 

 

 

 

 

这种技术对加减法非常友好。

 

但是对于乘法来说, 计算非常复杂, 通信量非常大。 

并且如果全部计算的话, 选择数维度就变成了2t。当然可以通过只保留低阶的值进行截断计算,来还原 

 

 

 

 

 

GMW算法

不久GMW就提出了改进算法,希望通过GC的方法来实现乘法部分,提高效率。 

 

或许受到了姚期智教授的混淆电路的想法的触发, GMW提出了基于布尔电路来实现,尤其对于其中的乘法。 

 

 

跟进布尔电路, 那么要隐藏b的一方信息,就可以通过OT方法来实现。 

但是还是没有隐藏a的信息, 那么再通过加一个随机数来隐藏a。 

而添加了r0,r1后, 乘积里面的r0+r1是很容易通过SS实现的。因此解决了乘法问题。 

 

BGW算法

是 BenOr-Goldwasser-Wigderson 三位大神,在一起搞的算法。 

 

BGW里面直接应用算数电路,化简了多方计算来划分加法乘法。 

 

然后再通维度约减后的Shamir的SS算法实现乘法运算。

 

所以, 总得来说GMW是既支持bool电路,也支持算数电路。 但是BGW是基于SS的,仅仅支持算数电路。 

 

Active Passive 安全模式

 

类似的电路的的情况,可以看到FairMP, Sharemind等等。 

 

 

其中security一般可以分为3种大的类型:

  1.  Semi-honest 半可信, 一般也叫Passive模式。

  2.  Malicious 恶意, 一般也叫Active 模式。 

  3. 还有一种介于2者间, Covert 间谍, 

对于GMW,或者BGW,要实现Active模式, 可以使用Reed-Solomon Encoding,对错误的部分进行校验并恢复。 

 

李德所罗门编码 Reed-Solomon encoding

 

如果支持Malicious状态, 那么就可以称为是Verifiable Secret Sharing VSS了。 

 

 

 

多方安全计算 - 高速发展

 

跑过早期的概念成熟,就开始追求性能可用了。 而这其中最大的进步在于同态加密发展。 

 

同态加密

 

同态的思想提供了超前的模型, 就是在明文空间的操作, 可以实现密文空间的映射。并且结果还能映射回明文空间。 

类比一下,就是把加法映射到字符空间的“加法”, 而结果解密之后恰好就是明文空间的结果。 

早期, 人们发现加法可以比较容易的实现同态。 

经典的加法同态:

  1.  Pailier  算法

经典的乘法同态:

  1.  EIGamal  加密算法

  2.  RSA 加密算法

同态加密的发展正当时,希望继续涌现非凡的华人领袖解决性能问题。 

 

 

SPDZ 算法

 

有了同态的世界, 通信变得小很多。 经典的秘密分享一般分为数据节点, 计算节点。

 

如果深入分析, 提出算法优化, 那么在乘法阶段其实可以做一些优化生成Beaver 三元组, 可以极大的减少运算数目, 但是会带来流程上的变化, 那就是要增加预训练阶段。 

 

Beaver Triples

 

 

其中的加法与乘法就可以采用SHE进行预处理:

在预处理阶段, 使用了SHE进行计算,极大的加快了计算效率,减少了通信内容。  

 

预训练阶段的差异:

BeDOZa: 最早提出使用SHE来进行预训练处理加法。

SPDZ: 在BeDOZa的SHE思想基础上,处理乘法。

MASCOT: 使用OT算法减少SHE的计算时间,用通信换计算,缩短时间。

Overdrive: 继续回到SHE, 提高计算效率。 

 

对于Malicious Active 的情况下, 需要既保证通信的信息是对的, 也要保障执行了SHE加密(尤其是offline的情况下)。 

 

 

对于通信信息的校验一般采用MAC方法进行确认。 而对于离线情况的确认一般采用ZKP (Zero-Knowledge Proofs)。

 

 

一旦引入了MACs与ZKP,那么整个计算流程就会变得复杂, 等待依赖也会变得复杂, 从工程的角度, 如何并发执行,可以进一步优化等待时间。  

 

SDPZ2 就是类似角度进行的优化:

1)从减少在线计算时间,进行离线数据准备。 

2)MAC的校验与SS部分数据进行重用。

3)  SHE 也优化了BGV实现。

 

工具包混合实现

 

越来越多的多方安全计算的工具包包含不止一种基础算法了。 例如ABY, MPyC,SPDZ的后继(SCALE-MAMBA 与 MP-SPDZ)

 

 

 

OT, 电路, SS,同态 如何组合已经成为多方安全计算的一门架构学问。 尤其在同态加密突飞猛进的年代里, 更重方案都可能螺旋式的上升, 一会儿被超越, 一会儿又赶超。 

 

 

 

但就目前而言, SPDZ系列还是占据了多方安全计算的主流, 毕竟天下武功,唯Speed不破。 

 

SPDZ系列:

  1. SCALE-MAMBA 与 MP-SPDZ:SPDZ的兼容优化

  2. Pond协议: SPDZ的优化

 

另外就是基于Shamir + 电路的改进:

  1.  MPyC

  2.  ABY3

 

 

多方安全计算 - 地基之上

 

在多方安全计算的地基之上, 现在开源的数据隐私计算平台如沐春风,百花齐放。 其中MPC已经更为各大平台支持的底层能力。 例如:Tensorflow-federated (TFF), TF-encrypted, Paddle FL, PySyft, FATE, CrypTFlow, CrypTen等。 

 

 

同时,大家也要注意, 最近几年开源的同态加密的库也进入大爆发。 每次同态的大爆发, 后续一定会影响到MPC的开源库的进展。 相信不久MPC基础库还得再有很多进一步的大改进。

 

 

在FATE, PySyft, PaddleFL等上层的数据平台,它们的基础架构非常类似。基本采用加密 + 机器学习分层。 其中加密大部分是C-S架构的。 

 

 

华控清交PrivPy

PrivPy后台也是以SPDZ为主要MPC的方法。 

 

 

微众银行FATE

FATE后台也是以SPDZ为主要MPC的方法。 

 

百度PaddleFL

PaddleFL后台也是以ABY3为主要MPC的方法。 

 

 

OpenMined的PySyft

PySyft后台也是以SPDZ,SecureNN为主要MPC的方法。

 

微软的CrypTFlow

CrypTFlow后台也是以EzPC-Aramis为主要MPC的方法,Aramis是GMW + Porthos (SecureNN的定制版)。

DropoutLabs, Openmined, Alibaba的TF-Encrypted

TF-Encrypted 后台也是以Pond(SPDZ的定制实现)为主要MPC的方法。

 

 

 

Facebook的CrypTen

CrypTen后台也是以SPDZ为主要MPC的方法。

 

 

想融合趋势

 

近年, 以SecureNN为代表的机器学习方法, 直接把SS秘密分享的思想进行融合到分布式机器学习中。 在实际实现中以OT为主要参数隐私保护方案。 

 

SecureML, MiniONN, Chameleon, Gazelle, CHET, Delphi 等方法,就是希望把机器学习的原子操作, 例如矩阵乘法, 卷积计算,布尔boolean等使用各种MPC的方法进行安全计算。 

 

 

再进一步优化各种非线性的操作,实现基本的非线性函数能力。 

 

 

 

然后可以实现基于这里原子操作的各种神经网络的隐私计算。 

 

可见从2方,到3方, 再到4方的平台越来越多。

 

再有就是对于互联网的支持,已经成为最新趋势。 

 

 

 

总而言之, 多方安全计算已经从早期的研究基本算术/逻辑运算,进入了按平台原子操作能力(矩阵乘法,比较),按实际需求(3方, 互联网)的方向进行研发。 背后是同态加密, 预处理等底层技术框架,平台框架的迭代发展。

 

 

 

总结

 

联邦学习, 多方安全计算, 一个从AI的角度引入安全, 一个是从安全的角度架上AI。 现在这两个方案越来越融合了, 例如SplitNN, SecureNN解决的问题就非常类似了。 相信不久,就不再区分底层技术了, 你从下图也能看到百度的PaddleFL, 微众的FATE, OpenMinded的PySyft其实是两者兼而有之。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/758765.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一般网站制作流程

制作需要经过以下几个流程:设计页面效果图,一般为PSD或者PNG格式的原图; 将页面效果图输出为HTML格式,后缀名为“.htm”; 根据页面内容调用需求生成或者编写标签所需代码; 嵌套标签代码到输出页面对应位置; 测试调试模板文件,保证调用和设计效果一致; 将模板标签、文件…

帝国CMS的网站“Notice: Use of undefined constant”错误说明

“Notice: Use of undefined constant”错误说明解答:php.ini配置问题,按下面修改即可解决: 修改php.ini,把error_reporting = E_ALL改成 error_reporting = E_ALL & ~E_NOTICE扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精…

DASCTF 2023六月挑战赛|二进制专项 PWN (上)

DASCTF 2023六月挑战赛|二进制专项 PWN (上) 1.easynote edit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbin attack,把__malloc_hook,写入one_gadget 2.通过unlink修改free got表为system exp: from pwn import * co…

易优cms后台数据类型的开关功能如何默认都显示“开”

新建字段默认就是true,就是扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。专…

eyoucms获取当前栏目分类的下级栏目的文档列表

[基础用法] 标签:modelsartlist (channelartlist)备注:使用channelartlist也可以正常输出描述:获取当前栏目分类的下级栏目的文档列表 用法: {eyou:modelsartlist typeid=栏目ID type=son loop=20} <a href={eyou:field name=typeurl /}>{eyou:field name=typename…

帝国CMS忘记后台登陆认证码怎么处理

忘记后台登陆认证码怎么办?查看/e/class/config.php文件里的“$do_loginauth”变量内容。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、…

dedecms织梦更新生成栏目没反应问题总汇

织梦dedecms栏目无法更新是最头疼的事情,因为导致dedecms栏目不能更新的因素有很多,至 于大家都是什么原因导致的我也无法确定,因此整理了笔者所知道的一些原因,希望对大家有所帮助, 下面大家跟我一起来看下,你遇到的dede更新栏目无效是下面的哪一种情况:方法/步骤第一种…

易优cms登陆后台,总是提示验证码错误,账户密码都对!

问题: 易优cms登陆后台,总是提示验证码错误,账户密码都对!解决办法: 检查下目录权限,或者用排除法,弄回本地安装看看,如果可以,就是空间环境哪里设置有问题。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、H…

DedeTag Engine Create File False的彻底解决方法总汇

错误记录: DedeTag Engine Create File False的彻底解决方法总汇解决方案: DedeTag Engine Create File False这个问题真是折磨人,说小不小说大不大,这里分享一下DedeTag Engine Create File False的解决办法 方法1:确认文件夹a、data(以前的版本好像html,你也可能自定…

用SqlBulkCopy批量插入数据 遇到的错误

原文链接:https://www.cnblogs.com/wz327/archive/2011/07/05/2098356.html 错误一:来自数据源的 String 类型的给定值不能转换为指定目标列的类型 nvarchar。 还有其他的错误如:AddTime不能为DBNull (这个应该是目标表中AddTime要求不许为null) 可能的原因有两种 可能是…

初用IDEA的springboot第一步

根据网上课程的学习,运用IDEA时率先需要搭建环境 搭建环境的第一步 1.创建项目 点击file列表下的project,在project中找到Maven勾选左上角方块(必须勾选,否则无法下一步),选择org.apache.maven.archetypes:maven-archtype-webapp,点击next,填写项目名称,点击next,第一…

int8量化过程中涉及到的原理

int8 量化是一种用于减少模型大小和计算复杂度的方法,特别是在深度学习模型中。它通过将浮点数(通常是 fp32)转换为 8 位整数 (int8),从而减少内存使用和提高计算效率。这在嵌入式设备和移动设备上特别有用。下面是 int8 量化的基本原理及其涉及的过程。 1. 为什么需要量化…