一、多方安全计算简介

多方安全计算(MPC:Secure Muti-Party Computation)理论是姚期智先生为解决一组互不信任的参与方之间在保护隐私信息以及没有可信第三方的前提下协同计算问题而提出的理论框架。

多方计算的目标就是对一组计算的参与者,每个参与者拥有自己的数据,并且不信任其它参与者和任何第三方,在这种前提下,如何对各自私密的数据计算出一个目标结果的过程。MPC是一种计算协议,数据持有方可以各自使用自己的数据进行训练,最终通过协议汇总结果。

MPC比较常见的落地场景就是姚期智提出的百万富翁问题。两个人各自都不希望告诉对方自己的资产,但是希望不通过第三方实现资产比较。

二、 多方安全计算

秘密共享

秘密共享(Secret-Sharing) 是现代密码学领域的一个重要分支,是信息安全和数据保密中的重要手段,也是多方安全计算和联邦学习等领域的一个基础应用技术。实际应用中,在密钥管理,数字签名,身份认证,多方安全计算,纠错码,银行网络管理以及数据安全等方面都有重要作用。

秘密共享是在一组参与者中共享秘密的技术,它主要用于保护重要信息,防止信息被丢失、被破坏、被篡改。它源于经典密码理论,最早由Sharmir和Blakley在1979年提出。简单来说,秘密共享就是指共享的秘密在一个用户群体里进行合理分配,以达到由所有成员共同掌管秘密的目的。

基于Shamir秘密共享理论的方法中,秘密共享的机制主要由秘密的分发者D、团体参与者P{P1,P2,…,Pn}、接入结构、秘密空间、分配算法、恢复算法等要素构成。

秘密共享通过把秘密进行分割,并把秘密在n个参与者中分享,使得只有多于特定t个参与者合作才可以计算出或是恢复秘密,而少于t个参与者则不可以得到有关秘密。如下图所示,特征A的值x,分割成x1,x2,……,xn,分发给S1,S2,……Sn。

三、密文乘法示例

Beaver将密文计算过程分为离线阶段与在线阶段;离线阶段即获得实际秘密之前的阶段。通过在离线阶段生成一个三元组,保证;然后让参与方与分别获得与。

然后在某个时间点,参与方分别获得了实际秘密与的分享值与。容易注意到,存在如下公式:

此时,两参与方只需分别计算如下步骤(注:步骤中为赋值运算符):①在本地计算 ②通过一轮交互恢复出与;③在本地计算,然后进一步计算。其过程如下图所示。

容易注意到,上述步骤实质上构造出了公式中除外每一项的加法分享;通过离线阶段的乘法替代了在线阶段的乘法

c= a b

e = x-a

f = y-b

x*y = c + af + be + ef

= c + a(y-b) + b(x-a) + (x-a)(y-b)

= c + ay - ab + bx -ab + xy -bx -ay + ab

= ab + ay - ab + bx -ab + xy -bx -ay + ab

= xy

四、现有开源框架比较

MP-SPDZ - 是SPDZ-2(Keller等人,CCS’13)的分支,SPDZ是多方计算(MPC)协议SPDZ(Damgård等人,Crypto’12)的实现。MP-SPDZ将SPDZ-2扩展到了二十多种MPC协议,所有这些协议都可以用同一个基于Python的高级编程接口来使用。这大大简化了不同协议和安全模型的成本比较。这些协议涵盖了所有常用的安全模型(诚实/不诚实的多数人和半诚实/恶意模型),以及二进制和算术电路的计算(后者的模数为素数和二次幂)。所采用的基本基元包括秘密共享、不经意传输、同态加密和混淆电路。

  1. ABY - 该框架仅实现具有半诚实安全性的两方计算[DSZ15]。但是,与MP-SPDZ不同,它提供了秘密共享计算和混淆电路之间的转换。内积示例需要大约60行代码,没有注释或空行。

  2. ABY3 - 该框架仅以半诚实安全性来实现三方计算[MR18]。 内积示例需要大约需要40行代码,没有注释或空行。

  3. CBMC-GC - 这是将C代码编译为二进制电路描述[BHWK16],并由ABY执行编译器。Hastings 无法执行示例代码。

  4. EMP-toolkit - 框架仅在各种安全模型中实现混淆电路[WMK16]。内积示例需要大约60行代码,而没有注释或空行。

  5. FRESCO - 这个框架[Ale20]只实现了不诚实多数计算,对算术电路(SPDZ和SPDZ2k )具有恶意安全,对二进制电路具有半诚实安全[DNNR17]。内积示例需要大约30行左右的代码,没有注释和空行。

  6. Frigate - 这是一个编译器,它将类似C语言的代码编译成二进制的电路描述[MGC+16]。内积示例需要大约20行代码,没有注释或空行。

  7. JIFF - 这个JavaScript库只实现了半诚实安全的诚实多数计算[Tea20]。与MP-SPDZ不同,它允许在离线和在线阶段之间改变安全模型。内积示例需要大约50行代码,没有注释和空行。

  8. MPyC - 这个Python框架[Sch20]只实现了基于Shamir的秘密共享[Sha79]的半诚实安全的计算。内积示例需要大约20行代码,没有注释或空行。

  9. Obliv-C - 这个框架通过标准C编译扩展到机器码[ZE15]。它只支持姚的乱码电路,具有半诚实的安全性。内积示例需要20行左右的代码,没有注释或空行。

  10. OblivVM - 这个框架将Java的扩展编译成Java字节码[LWN+15]。它只支持Yao的乱码电路,具有半诚实的安全性。内积示例需要20行左右的代码,没有注释或空行。

  11. PICCO - 这个框架通过标准C将C语言的扩展编译成本地二进制文件[ZSB13]。它只实现了基于Shamir的秘密共享的诚实多数半诚实计算。内积示例需要10行左右的代码,没有注释和空行。

  12. SCALE-MAMBA - 这个框架[COS19]是SPDZ-2[KSS13,KRSS18]的另一个分叉。尽管有共同的根源,但自2018年以来,这两个分叉已经有了很大的分歧。SCALE-MAMBA只实现了素数模数(不是二的幂数)的算术计算,根据Hazay等人[HSS17]的混淆电路,以及基于秘密共享的二进制计算[FKOS15,WRK17]。所有的计算都只在恶意安全的情况下实现,不诚实多数计算模数化只使用同态加密实现。另一方面,SCALE-MAMBA对理论上可能的任何访问结构都实现了诚实多数计算。前端与MP-SPDZ中的类似,但没有后期增加的动态循环优化(6.3节)、重复代码优化(6.4节)和机器学习功能(7.3节)。此外,作者已经开始脱离Python编译器,转而使用基于Rust的新编译器。内积示例只需要不到10行代码,没有注释或空行。

  13. Sharemind MPC - 这个框架实现了各种后端的前台,但它自己的后端只使用三方诚信多数半诚信计算[BLW08]。它还允许使用ABY和FRESCO作为后端,而专有的后端不能自由使用。内积示例只需要不到10行代码,没有注释和空行。

  14. TinyGarble - 这个框架只实现了Yao的半诚实安全的混淆乱码电路[SHS+15]。Hastings等人无法在这个框架中运行他们所有的例子。

  15. Wysteria - 这个框架实现了一个特定领域的语言,在半诚实环境下,只有二进制计算,且是不诚实大多数[RHH14]。Hastings等人无法在这个框架中运行他们所有的例子。

效率比较:

隐私计算-多方安全计算相关推荐

  1. 【论文阅读】一种包含同态加密、差分隐私、多方安全计算的FL隐私保护框架 Efficient and Privacy-Enhanced Federated Learning for Industrial

    本文来自:Efficient and Privacy-Enhanced Federated Learning for Industrial Artificial Intelligence 本文提出了一 ...

  2. 多方安全计算(MPC)发展脉络及应用实践

    隐私计算技术中,多方安全计算(MPC).联邦学习(FL)与可信执行环境(TEE)是三大主流技术派系,此前洞见君为大家介绍过联邦学习的前世今生,解读过可信执行环境,今天为大家带来多方安全计算的相关简介及 ...

  3. 【问链财经-区块链基础知识系列】 第二十六课 隐私保护方法:多方安全计算和区块链

    编者按:私密计算是解决区块链无法保护隐私的问题.因为区块链上的数据天然是全公开的,任何人都可以查看.假如一个人知道了你的钱包地址,就可以看到你的余额.你所有的转账记录.设想一下买保险的场景,买保险需要 ...

  4. 多方安全计算:隐私保护集合求交技术

    摘要:PSI全称隐私保护集合交集(Private Set Intersection, PSI),是指持有数据的两方能够计算得到双方数据集合的交集部分,而不暴露交集以外的任何数据集合信息. 本文分享自华 ...

  5. 区块链隐私:交易还是计算?

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链隐私:交易还是计算? 隐私"是什么意思?在区块链生态系统中,"隐私"这个词被 ...

  6. 浅谈最近发布的金融行业多方安全计算的技术标准

    央行在2020-11-24号发布了多方安全计算金融应用技术规范,在对数据安全要求最高的金融行业出台有关多方安全计算的规范,也是国家释放了一种信号,数据资产在安全前提下是可以使用的.目前关于安全计算有非 ...

  7. 章磊回答: 姚期智提出的百万富翁难题被破解? 多方安全计算MPC到底是个什么鬼?

    姚期智提出的"百万富翁"难题被破解? 多方安全计算MPC到底是个什么鬼? 作者 | 章磊 责编 | Aholiab 出品 | CSDN.ARPA 在越来越多对数据隐私的担忧声中,政 ...

  8. 从这 5 个场景 , 看 MPC 多方安全计算的行业应用

    在我们之前的"多方安全计算"系列文章中,我们首先通过姚期智教授的"百万富翁问题"引出了数据安全计算这个密码学话题,并介绍了多方安全计算在数据隐私中的应用场景.第 ...

  9. 多方安全计算-不经意间传输

    不经意传输(Oblivious Transfer - OT)最早在1981年被 Michael O. Rabin提出,之后被广泛应用于多方安全计算等领域. 在Rabin [1] 的OT协议中,发送者A ...

最新文章

  1. C语言实现AES加解密
  2. 又一重磅嘉宾来袭 | 国际人工智能联合会理事长杨强助阵2018品友互动人工智能大会
  3. 源码安装vsftp3.0.3
  4. 为了探究不同光照处理_渭南市实验初中“诱思探究学导”课堂教学改革展示活动圆满成功...
  5. javascript之模拟call以及apply实现
  6. C++/java/python 创建二维数组
  7. 直流耦合and交流耦合
  8. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
  9. 闭包函数 use 改变外部变量
  10. PACS管理系统源码 PACS源码
  11. bigmp4.com AI 视频无损放大高清补帧工具
  12. Ubuntu、ros快速安装
  13. Lowest Common Ancestor
  14. 原来华为手机语音助手,还有3大隐藏功能,职场人的必备神器
  15. Python 跨文件调用函数 + 在一个文件中执行另一个文件
  16. linux系统下修改hosts文件的权限
  17. Executor框架-Executors
  18. ORB-SLAM3 IMU(李群)+Frame+KeyFrame+MapPoint
  19. kali破解Wi-Fi密码
  20. Android Gradle是什么?

热门文章

  1. VS 给自己开发的Qt程序加上程序图标ico
  2. 【基于可见光定位的智能超市购物车系统】(四)可见光定位、电机驱动与整车设计
  3. 【PTA-乙级】1003-我要通过(手动感叹号)
  4. Java解惑 电子书
  5. 扫描识别行驶证的软件技术
  6. CABAC整体讲解1
  7. 谈谈百度的短视与无奈
  8. 十分钟教你搭建一个漂亮的博客(二--主题的修改)
  9. Swagger2学习笔记
  10. Swagger2详解