一个优美令人如痴如醉的领域。

Data is the oil of the 21st century

欢迎读者拍砖和提供本文修改建议。本文长期维护。

  • 第二次编辑于2021/10/20,新增了部分阅读材料,调整了文章内容的组织。

0 研究背景

【最后更新于2021/10/20】
时代背景:当下正处于数据安全的变革期,数据要素被纳入新的生产要素、AI技术的兴盛对数据有大量需求、来自数据隐私保护法律法规的监管需求

  • 2021年3月北京国际大数据交易所正式成立
  • 2021年9月《数据安全法》正式实施
    要有明确的使用目的和方式,而且要公开使用的目的和方式、规则,要明示使用的目的和方式,要用合适的对个人权益影响最小的方式使用数据。
  • 《个人信息保护法》第69条:处理个人信息侵害个人信息权益造成损害,个人信息处理者不能证明自己没有过错的,应当承担损害赔偿等侵权责任。
  • 2020年成为隐私计算的技术元年,2021年则是隐私计算的商业落地年。

=》 使用可控、可计量的技术和能力将成为未来数据合法合规和数据监管的基础设施

0.1 产业界的问题与需求

  • 数据要素、数据使用权、数据所有权、数据孤岛 => 隐私计算

    应用需求举例:

    金融科技、人工智能、医药保护共享数据
    联合营销、联合风控、统一授信、业务合规、精准营销、信贷风控、发现多头借贷、保险定价
    隐私敏感型数据:金融、物流、供应链、物联网、汽车业的客户行为信息、身份信息、金融信息、征信信息、医疗信息等等

MPC 之所以近几年开始受到关注,一方面是因为产业互联网、AI 等关键领域的发展越来越离不开数据上云、离不开数据挖掘,数据隐私问题的解决迫在眉睫。另一方面也在于,MPC 已经成长到了一定的阶段,其产业价值潜力开始彰显,特别是在涉及隐私敏感型输入数据的应用场景。在解决数据隐私问题的同时,数据孤岛的困境也能得到缓解,因为一部分数据孤岛现象存在正是基于数据隐私的考量。

0.2 过去的解决方案

解决方案不好,没有本质解决问题

  • 物理封闭项目室:封闭开发
  • 脱敏授权
  • 可信第三方
  • Lawyer-based security 签署保密协议(Non Disclosure Agreement,NDA)

0.3 学术的定义

安全多方计算(Secure Multi-Party Computation,MPC)的研究主要是针对无可信第三方的情况下如何安全地计算一个约定函数的问题

MPC是电子选举门限签名以及电子拍卖等诸多应用得以实施的密码学基础

一个安全多方计算协议,如果对于拥有无限计算能力攻击者而言是安全的,则称作是信息论安全的或无条件安全的;如果对于拥有多项式计算能力的攻击者是安全的,则称为是密码学安全的或条件安全的

已有的结果证明了在无条件安全模型下当且仅当恶意参与者的人数少于总人数的1/3时,安全的方案才存在。而在条件安全模型下,当且仅当恶意参与者的人数少于总人数的一半时,安全的方案才存在。

0.4 学术问题:百万富翁问题

MPC起源于1982年姚期智的百万富翁问题。后来Oded Goldreich有比较细致系统的论述。

两个百万富翁都想比较到底谁更富有,但是有都不想让别人知道自己有多少钱。在没有可信的第三方的情况下如何进行?

翻译一下:做某种计算需要对方的数据,但是由于各种原因不能提供对方的真实数据。不提供真实数据实现计算。

这个设想本质上反映了基于用户数据挖掘的服务中数据的使用权和所有权之间的矛盾服务提供者必须得到你的数据才能提供服务。放到这个“百万富翁”设想中,即互联网服务一定要拿到两位富翁的财产数据,才能计算出“谁更有钱”。有没有一种技术,可以实现数据使用权、所有权的分离,生产方保有数据的所有权而不影响数据需求方提供服务?简而言之,可以基于加密的数据进行计算

0.5 MPC产业情况

【Warning:本段落有时效性】
Gartner估计:千亿级市场,2024年全球突破150亿美元

0.5.1 华控清交 “数据可用不可见,使用可控可计量”

【最后更新于2021/10/20】
公司官网
公司介绍:张旭东任CEO,其1989年进入华尔街,从最早投资精算的工作一路做到了高盛集团全球合伙人,管理大中华区所有的证券、交易、资本业务。公司依托著名科学家:姚期智院士、徐葳教授科研成果,有清华大学交叉信息研究院、清华五道口金融学院联合背景,核心成员来自姚班。2018年6月科研成果转化出来的公司。
目前估值:超过40亿RMB
融资阶段:B轮 - 5亿RMB
主要业务方向:基于密码学的MPC技术、标准和基础设施
通过综合运用密码学混淆电路不经意传输秘密分享同态加密同态承诺零知识证明等多种理论和协议研发出了一个软硬件结合多方安全计算平台

0.5.2 蚂蚁金服

基于 MPC 的安全计算平台“摩斯”

0.5.3 其他

共识数信、矩阵元、富数科技、翼方健数

0.6 MPC与区块链:各有侧重,具有互补特征

看起来很相似,也经常联合一起使用,但侧重点不同。最大的区别就在于:区块链并不考虑数据的保密性,数据在链上都是透明的、可追溯的,这在追求数据透明的应用场景如食品安全溯源自然是常规操作,但在某些场景下,输入数据有一定的机密性,不透明反而是需求。而MPC强调计算过程中输入数据的保密性,输入数据被锁在“黑箱”里。
两者在输入数据上的这种互补属性,所以结合是一种新的技术趋势:区块链经过 MPC 获得数据保密能力,可以覆盖更多的应用场景;MPC借助区块链技术实现冗余计算变得可验证

MPC+区块链应用案例:

  • ZCash 通过零知识证明的手段在 Bitcoin 上添加了保护交易隐私的功能
  • 区块链做存证+MPC做隐私保护:联合征信、医疗数据联合建模、拍卖清算、广告推荐等应用场景

MPC属于隐私计算的一个主要方向,其他方向如下图所示:

发展历史见:link~

1 一切的起源:对姚式“百万富翁问题”的讨论




这里的天平,其实就是可信第三方。

1.1 定性讨论

这个问题在数学上,必须借助于密码学。不经意传输(Oblivious Transfer,OT)是解决这个问题的绝妙方案。
拿这个例子来说,张三给李四提供 n 个选择,这n个选择对李四而言都是无法分辨的(即无法获知原始内容的),李四从中选择一个并告诉张三。但有趣的是,张三不能知道李四选择的是哪一个。
回到百万富翁问题,一个简单的解决方案就是一下步骤:

简单可行吗?当然!前提是双方都是可信的,双方会遵守协议,所以这是一个半诚实对手模型。如果有一方造假,那么结果就不可信了。那是恶意敌手模型要讨论的问题。但我们在讨论MPC的时候一般假设为半诚实敌手模型,再通过零知识证明加强拓展到恶意敌手模型,着是一种标准的方法。
本题抽象化,其实就是两个数的安全比较大小问题。张三知道一个整数i,李四知道一个整数j,希望比较大小,都不想让对方知道自己的数。

1.2 无需不经意传输的解决方案

对此问题进行抽象化,其实就是两个数的安全比较大小问题,以确定哪一个较大。张三知道一个整数i,李四知道一个整数j。张三和李四希望知道究竟是 i<=j 呢还是 i>j,但都不想让对方知道自己的数。为简单期间,假设 i 与 j 的范围为 [1, 10]。李四有一个公开密钥Eb与私有密钥Db。

张三选择一个大随机数 x,并用李四的公开密钥加密:c = Eb(x)
张三计算 c-i, 并传送给 李四
李四 计算下面的 10个数:Yu=Db(c-i+u) , u[1, 10]
并取一个大素数 p (p 比 x 稍小,李四不知道x,但张三可以告诉李四 x 的大小范围),计算:Zu=Yu mod p , u属于[1, 10]
这里需要验证:
对所有的 u 下式成立: 0<Zu<p-1
对所有的 u,v: |Zu-Zv| >= 2
如果不成立,选择另一个p,重新计算
注意: 这里有一个显然的性质: Zi=x mod p
李四将以下数列发给张三:
Z1,Z2,...,Zj,Zj+1+1,Zj+2+1,...Z10+1Z_1, Z_2, ... , Z_j, Z_{j+1}+1, Z_{j+2}+1, ... Z_{10}+1Z1​,Z2​,...,Zj​,Zj+1​+1,Zj+2​+1,...Z10​+1
张三验证这个数列的第 i 个数是否与 x mod p 相同,如果相同,则 i<=j, 否则, i>j。
张三把这个结论告诉李四。

1.3 基于不经意传输的解决方案

不经意传输(oblivioustransfer)是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送一条给接收者,但事后对发送了哪一条消息仍然oblivious(不知道),这个协议也叫茫然传输协议。(协议内容见2.1节)

不经意传输本身是一套协议和算法。基于大数分解的复杂性或离散对数解的复杂性。一般在一个有限群中进行。在不经意传输的支持下,上述方案可以简化为以下版本:


是不是跟我们的水果解法比较类似呢?

1.4 问题拓展

百万富翁问题可以说是安全多方计算的最基本的问题了,无论从方案还是算法复杂度而言,都比较简单。这里看到了通过安全计算做比较加法的方案。考虑到所有的算法实现最后都是演化成计算机门电路,那么把一个算法转换成电路(与,非,异或等),那算法就是这些简单的操作的组合了。这就为复杂的安全计算推开了一扇门

2 当下:常用密码协议及其原理

补充一个概念:
外包计算:一方拥有数据并想获取该数据的计算结果,另一方接收这份数据的一个加密格式,并对加密数据进行计算,得到一份加密的计算结果,并将该结果返回给第一方。过程中,另一方不会获得任何没有加密的信息。

本节分享一些MPC里面常用的密码学的知识。

2.0 密码学协议基础

协议Protocol:两个或两个以上参与者为完成某项特定任务而采取的一系列步骤。
协议执行条件:协议参与方了解并遵循协议、协议清晰明确无歧义、协议完整:可以处理协议面临的所有可能情形
常见协议有:仲裁协议、裁决协议、自动执行协议、密钥协商协议、密钥分配协议、认证协议、盲签名协议、不经意传输协议、电子商务协议等等。。

2.0.1 基础协议

  • 仲裁协议:由仲裁者帮助互不信任的双方完成的

  • 裁决协议:每次都要执行非仲裁子协议;有争议时执行裁决子协议。

  • 自动执行协议:协议本身保证了公平性。

2.0.2 协议攻击




2.0.3 公平计算基础

2.0.4 MPC里常用的密码学协议简述

  • 同态承诺:同态承诺是一种允许一个人向其他人提交任何选定数值而又不泄露该值的密码协议,承诺提交后不能更改,且事后可公开验证。同态承诺允许在提交的承诺上进行计算而不失去承诺的保密、不可更改及事后可验证的特征。
  • 同态加密:同态加密即为各参与者将自己的输入加密后一起发给某计算服务器,服务器直接在密文上进行计算,计算后将得到的结果的密文发送给指定结果方,结果方再将结果的密文解密,即可得到最终的计算结果。如此一来,计算服务器一直在密文上操作,无法看到任何有效信息,而参与者也只拿到最后的结果,看不到中间结果。
  • 秘密共享/秘密分享:秘密分享的基本思想是将数据切割成多份,并分发给不同的参与者,每个参与者持有其中一份,协作完成计算任务(比如加法、乘法运算)。因为参与者看不到数据全量信息,从而实现数据隐私保护。
  • 混淆电路:混淆电路的基本思想是将计算电路的每个门都加密并打乱,保证计算过程中不会泄露原始输入和中间结果。双方根据各自输入依次进行计算、解密方可得到唯一的正确结果,无法得到结果以外的其他信息,从而实现双方安全计算。

  • 不经意传输/不经意传送:不经意传输是一种可保护隐私的双方通信协议,能使通信双方以一种选择模糊化的方式传送消息。不经意传输协议是密码学的一个基本协议,它使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护接受者的隐私不被发送者所知道。S每次发送2个信息m0和m1 ,而R每次输入一个选择b。当协议结束的时候,S无法获得关于b 的任何有价值的信息,而R只能获得mb ,对于m1−b ,R也一无所知。
  • 零知识证明:零知识证明是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
    零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

一切的基础是RSA (Rivest, Shamir, Adelman)非对称加密算法的发明。(下图3巨佬)


2.1 不经意传输 OT

不经意传输(oblivious transfer)是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送一条给接收者,但事后对发送了哪一条消息仍然oblivious(不知道),这个协议也叫茫然传输协议,本发明成为开启整个多方安全计算时代的雷声。
在RSA的基础上,诞生了实用的OT (oblivious transfer)算法, 实现了N选1的双方隐私保护

2.1.1 第一种形式的不经意传输(历史上第一个OT协议)

1981由Michael O.Rabin提出。发送者Alice发送一条消息给接收着Bob,而Bob以1/2的概率接收到信息,在结束后Alice并不知道Bob是否接收到了信息,而Bob能确信地知道自己是否收到了信息。
下一个是从密码学角度实现的该设计。

2.1.2 更实用的OT协议(2选1、n选1的OT协议)

Shimon Even, Oded Goldreich, 和Abraham Lempel 在1985年提出2选1不经意传输(1 out 2 oblivious transfer)。Alice每次发两条信息(m1、m2)给Bob,Bob提供一个输入,并根据输入获得输出信息,在协议结束后,Bob得到了自己想要的那条信息(m1或者m2),而Alice并不知道Bob最终得到的是哪条。


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

注意:上图^是异或

或者是:

协议关键:如果Alice无法从用两条私钥解密得到的结果k0、k1中区分出Bob的真实随机数,则能保证Alice无法得知Bob将要获取的是哪条数据。Bob没有私钥也就无法得出真实的私钥解密结果。
1986年,Brassard等人将2选1不经意传输拓展为n选1。同理,1 out n不经意传输也可基于类似原理实现,只需要将2秘钥换成n秘钥。


虽然上述方法可以完成目标,但是仍存在三个缺点:
1、Bob 可能询问的是不同秘密的比特位。
2、Bob 可能得到两个消息之间的异或。
3、Alice 可能欺骗 Bob,发送的 y 可能是一个 二次剩余,也就有可能指出 Bob 的选择。
为克服以上缺点,改进上述算法如下:

2.1.3 Beaver 96协议(OT扩展协议)

为了提高计算效率所以还需要继续改进。(安全性已经得到了保障)
详细内容见Ref.2

Ref:
1.什么是不经意传输?
2.不经意传输(OT)-总结

2.2 混淆电路 Garbled Circuit,GC

2.2.1 姚氏混淆电路 Yao’s Garbled Circuit,Yao’s GC

姚氏电路是第一个安全两方计算协议。核心技术:将两方参与的安全计算函数编译成布尔电路的形式,并将真值表加密打乱,从而实现电路的正常输出而又不泄露参与计算的双方私有信息。
GC基于半诚实模型(semi-honest)的安全两方计算(Two-Party-Security-Computation)。将整个计算过程分为两个阶段:第一阶段将安全计算函数转换为电路,称之为电路产生阶段;第二阶段,利用OT、加密等密码学原语等执行电路,称之为执行阶段。 每一阶段由参与运算的一方来负责,直至电路执行完毕输出运算后的结果。针对参与运算的双方,从参与者的视角,又可以将参与安全运算的双方分为电路的产生者(circuit generator)与电路的执行者(circuit evaluator)。
对Yao‘s GC扩展:GMW/CCD/BGW/BMR等将两方安全计算扩展到多方安全计算;将布尔电路扩展到算术电路;将安全模型由半诚实模型扩展到恶意模型,以抵抗一定数量恶意敌手攻击。






疑问:为什么要先跑一个OT协议传输Encrypted(b),最后再传输GC,如果是最后传输GC为什么不在B跑加密呢?
因为对于混淆输入的方法没有传给B,传递的知识混淆后的电路。

Public verifiable covert

从半诚实变为恶意敌手模型,GC中Alice作弊原本的协议无法处理,提出了PVC Security


详细内容见原文,这里是简述大意。

2.2.2 GMW协议

见下文。

2.3 秘密共享 Secret Sharing

SS技术提出, 将数据切分多份, 然后分布到不同的计算节点上进行计算, 每个计算节点都无法还原原始数据, 但是可以推进计算结果,最终多个计算节点的结果进行整合就得到了最终结果。(注意:一般来说是有冗余,k个人即可,防止1人失联而无法恢复)

简要介绍:


早期Shamir提出了多项式原始的SS技术,通过拉格朗日差值法,实现秘密通过多项式方程的参数分享到多方,实现既不分享原始内容,也不分享原始内容的加密形态,而且具有可解方式的组合个数就可以破解的能力。这种技术对加减法非常友好。但是对于乘法来说, 计算非常复杂, 通信量非常大。



算法的工程实现:






不久GMW就提出了改进算法,希望通过GC的方法来实现乘法部分,提高效率(基于布尔电路)。



要隐藏b的一方信息,就可以通过OT方法来实现。

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

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

阿里安全:基于tf encrypted的ABY3模块

3 安全多方计算的具体应用场景举例






参考文献

  1. 安全多方计算 baike
  2. 百万富翁问题的一个简单解释 注:原文有一些错误,见评论区
  3. https://baijiahao.baidu.com/s?id=1640102743395688917&wfr=spider&for=pc
  4. 什么是不经意传输?
  5. 安全多方计算之混淆电路
  6. 不经意传输(OT)-总结
  7. 多方安全计算乱弹琴
  8. 数据安全概述
  9. 四、不经意传输oblivious transfer - 中国科学技术大学
  10. 如何共享一个秘密
  11. 线性插值 多项式插值 样条插值 牛顿插值总结
  12. 【插值】插值方法原理详解
  13. 多方安全计算(MPC)原理简介

扩展阅读材料

  1. 安全多方计算技术及其在阿里巴巴的应用 2020北京网络安全大会上阿里巴巴集团安全总监洪澄演讲
  2. 区块链+安全多方计算

实验室

  • 阿里安全 双子座实验室
    专注于数据安全隐私保护领域的技术研究和能力输出,实验室研发的主要技术包括:密态数据处理、安全多方计算、隐私保护等。

安全多方计算 # 个人笔记相关推荐

  1. 安全多方计算-入门学习笔记(三)

    四.基于非噪音的安全多方计算介绍 1概念 非噪音方法一般是通过密码学方法将数据编码或加密,得到一些奇怪的数字,而且这些奇怪的数字有一些神奇的性质,比如看上去很随机但其实保留了原始数据的线性关系,或者顺 ...

  2. 安全多方计算-入门学习笔记(二)

    安全多方计算!(Secure Multi-party Computation SMC MPC)        学习来自:李天天一个蛋疼的处女座文艺理工直男 https://www.zhihu.com/ ...

  3. 区块链多方计算 人工智能学习笔记

    区块链:让数据不被篡改,但需要复制数据给每一块,造成数据泄露 多方计算 : 让数据用途可控.数控可用但不可见. 人工智能:数据更难造假 主讲人简介: 徐葳,宾夕法尼亚大学学士(在清华本科学习两年),美 ...

  4. 安全多方计算MPC学习笔记

    参考:https://blog.csdn.net/juzhenyuan/article/details/80913777 MPC Secure Multi-Party Computation 安全多方 ...

  5. (九)隐私计算--安全多方计算

    目录 安全多方计算 安全多方计算的技术架构 安全挑战敌手模型 安全多方计算关键技术 安全多方计算主要特点 安全多方计算应用 安全多方计算与区块链 JUGO平台 参考: https://blog.csd ...

  6. 差分隐私?联邦学习?安全多方计算?它们之间是什么关系?

    差分隐私与其他隐私计算技术的联系 写在前面的话 隐私计算 什么是隐私计算? 隐私计算发展趋势 隐私计算的技术 隐私计算体系结构 安全多方计算 联邦学习 可行执行环境 差分隐私 比较 应用场景 发展趋势 ...

  7. 隐私计算 — 安全多方计算 — Overview

    目录 文章目录 目录 前言 百万富翁问题 多方安全计算 MPC 的发展历程 MPC 的适用场景 数据可信交换 数据安全查询 联合数据分析 MPC 的逻辑架构 MPC 的特性 MPC 模型组成部分 协议 ...

  8. 安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK

    简介:在上一节<安全多方计算(MPC)从入门到精通:Frutta语言>中,已经介绍了Frutta语言语法相关的内容,在本节中,我们将介绍JUGO-IDE及SDK. 1.什么是JUGO-ID ...

  9. 区块链BaaS云服务(14)华大BGI区块链“安全多方计算“

    数据流通安全一直是大数据时代难以解决的难题:在保护本地数据隐私安全的情况下,促进不同地区.不同机构间的数据共享与协同计算. 1. 定义 1.1 安全多方计算(SMC) 由图灵奖得主姚期智院士在 198 ...

最新文章

  1. 进程间通信(IPC)学习
  2. 在cmd环境下操作Oracle11g数据库
  3. 《玩转掌上生活——手机网上生活达人秘笈》一1.2 迎接掌上生活
  4. 小白学深度之LSTM长短期记忆神经网络——深度AI科普团队
  5. 史上最全设计模式——原型模式
  6. MDaemon的邮件撤回功能详细介绍
  7. BZOJ 1304: [CQOI2009]叶子的染色
  8. Linux下sdio设备扫描过程,[mmc]Linux下MMC/SD/SDIO的识别与操作
  9. centos安装部署webssh
  10. 力扣刷题-题目以及答案
  11. 菩萨蛮 生如夏花(赵敏)
  12. c语言实验八 二维数组,☆C语言实验六(二维数组、字符串数组).doc
  13. Adobe After Effect的 安装 教程
  14. 利用Proteus仿真STM32实现按键控制LED灯设计
  15. 单核到多核的转变无疑是沧桑巨变
  16. Ubuntu server 14.04 启用root用户并设置密码
  17. 每日一题 —— Java篇
  18. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
  19. strcasecmp与stricmp
  20. Scrapy中间件的使用-爬取豆瓣top250/PM2.5历史数据

热门文章

  1. 度度熊与邪恶大魔王 (百度之星之资格赛)
  2. android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...
  3. ImageNet无监督学习最佳性能一次提升7%,媲美监督学习
  4. wps字体颜色怎么改
  5. 女孩子付钱用计算机,“让女生付钱太没面子了,你转账给我吧。”
  6. 用户标签体系的应用——精准营销
  7. 渗透测试的目标、思路
  8. 普通本科菜菜海淘无人搭理,苦心闭关修炼一个月,出关后成功拿下阿里,蚂蚁金服,美团三个大厂意向书
  9. Java中克隆的用法,深拷贝、浅拷贝概念的引出
  10. Grain 颗粒感 后期处理系列14