隐私计算之多方安全计算(MPC,Secure Multi-Party Computation)
作者:京东科技隐私计算产品部 杨博
1.背景
如今,组织在收集、存储敏感的个人信息以及在外部环境(例如云)中处理、共享个人信息时, 越来越关注数据安全。这是遵守隐私法规的强需求:例如美国加利福尼亚州消费者隐私法 (CCPA)、欧盟通用数据保护条例 (GDPR) 和世界各地的其他新兴法规,以及中国的《数安法》《个保法》等,都对安全处理敏感数据提出了要求。
加密静态数据不足以避免数据泄露。静态数据加密创建了一个“加密边界”,在该边界之外可以以明文形式访问数据。因为处理通常需要明文数据,所以这个边界通常存在潜在的数据泄漏风险。静态数据加密也不支持与其他组织共享数据的方案。为了使数据有用,它们通常必须在应用程序中以明文形式访问,这大大降低了加密的保护能力。因此,不同的行业都需要新的隐私保护计算方法来满足法律合规要求并为数据共享提供隐私保障。
广义的隐私计算技术是面向隐私信息全生命周期保护的计算理论和方法,涵盖信息所有者、信息转发者、信息接收者在信息采集、存储、处理、发布(含交换)、销毁等全生命周期过程的所有计算操作,是实现隐私保护前提下数据安全流通的一系列技术。包括但不限于:
•基于数据限制发布的技术:如数据脱敏、去标识化(掩码、抑制、泛化、截断、混淆、k-匿名、l-多样性、t-贴近等)
•基于数据失真的技术:如随机扰动、差分隐私、合成数据
•隐私计算技术:以多方安全计算、联邦学习、可信执行环境三大路线为基础
•相关辅助技术:如区块链、可验证计算、溯源审计技术
2.前言
随着数字化和大数据分析技术的快速发展,对多方数据的需求也越来越多,例如对个人信用风险进行评估,就需要联合多个属性特征进行联合统计分析。个人征信过程中需要采集的信息包括个人身份、住址、职业等基本信息,个人贷款、贷记卡、准贷记卡、担保等信用活动中形成的个人信贷交易记录,以及反映个人信用状况的其他信息,基本涵盖了个人生活的方方面面。各家征信机构如果想要自己推出的信用体系实现精准信用评估,经受住市场检验,它的信用模型就需要使用更多源、更及时且更有价值的海量数据来持续建模。
然而法规监管和采集成本使数据难以共享,由于征信数据是一种非独占性的特殊资源,具有复制成本低、所有权难确定、流通渠道难管控、使用范围难限定等特点,稍有不慎,数据极易泄露。如何在保障数据安全和隐私的条件下实现征信数据的融合?如何保证征信数据的使用和传播是可控的?多方安全计算(Secure Multi- Party Computation ,简称MPC)恰好解决了这个难题,为征信数据的丰沛流动提供了技术可能。
MPC技术具有保护隐私、结果正确、操作可控的优势,这可以解决征信数据融合的技术困境。MPC通过密码学手段,可以保证参与征信数据融合的各方本身的数据不泄露;通过密文函数计算,可以保证运算结果与明文计算相同;它还可以规定征信数据使用的用途和用量,使每一步操作都是可控、受限且可审计的。
3.多方安全计算-MPC( Secure Multi-Party Computation )
多方安全计算(MPC)是在无可信第三方情况下,多个参与方协同完成计算目标,并保证每个参与者除计算结果外均不能得到其他参与实体的任何输入信息。多方安全计算问题最初起源于1982年姚期智院士提出的百万富翁问题,后来经过多年不断的发展,成为目前密码学的一个重要分支。多方安全计算是基于密码学的算法协议来实现隐私保护,常见的多方安全计算协议包括秘密共享(Secret Sharing,SS) 、混淆电路(Garbled Circuit,GC)、同态加密(Homomorphic Encryption,HE)、不经意传输(Oblivious Transfer,OT)等。多方安全计算技术可以获取数据使用价值,却不泄露原始数据内容,保护隐私,可适用于多方联合数据分析、数据安全查询(PIR,Private Information Retrieval)、隐私求交(PSI,rivate Set Intersection)、数据可信交换等应用场景。一系列用于 MPC 的开源库(例如ABY、EMP-toolkit,FRESCO,JIFF 、MP-SPDZ,MPyC, SCALE-MAMBA,和 TinyGable等) 得到了发展,进一步推动了 MPC 的应用和部署。
表1展示了多方安全计算与联邦学习和可信执行环境的特性对比。 多方安全计算是基于密码学的可证安全计算,具有高安全性,但对网络要求高,可应用在银行、政府等高安全要求场景。联邦学习效率高,适合数据量大的联合机器学习场景,虽然存在梯度泄露问题,但可结合差分隐私或者多方安全计算来提升安全性。可信执行环境属于数据加密后集中计算,具有高安全性、高精度等特点,但需要数据加密集中到第三方环境,限制了其使用场景。
在 MPC 中,可以对多方贡献的数据执行计算,而任何一方都无法看到他们贡献的数据内容。这使得无需受信任的第三方即可执行安全计算。下图说明参与者在计算上进行协作,只知道计算的结果,而不知道其他人贡献的特定数据。以计算平均工资为例,一种简单的的方式是有一个可信第三方F负责收集A,B,C每个人的工资收入数据,并计算平均数。然而,显示生活中的可信第三方不总是存在,也并不一定安全,其有可能会泄漏其收集的隐私数据。另一种方式就是采用多方安全计算,在无可信第三方的情况下,来保障各方的工资数据不泄漏,且能计算出平均工资数。
如下图所示,Allie(A) 的工资是 100美元。在加性秘密共享中,100美元被分成三个随机生成的部分(或秘密份额):例如 20美元、30美元和 50美元。Allie 为自己保留其中一份秘密股份(50美元),并将一份秘密份额分配给Brian(B)(30美元)和Caroline(C)(20美元)。Brian 和 Caroline 也遵循相同的流程秘密分享他们的工资薪水。每个参与者在本地汇总他们的秘密份额以计算部分结果;在此示例中,每个部分结果是计算最终答案所需信息的三分之一。然后重新组合部分结果{-30, 480, 150},将先前分发的完整秘密共享集相加求平均,即可得出Allie、Brian 和 Caroline 的平均工资是 200美元。可见,在整个过程中,各方根据自己手中掌握的部分秘密份额以及最终结果是无法推导出其他方的原始工资信息的。
4.MPC的几个重要概念
安全的多方计算需要保证隐私和正确性。在存在对抗行为的情况下,必须保证安全属性。主要考虑两个经典的对手模型:
•半诚实:半诚实的对手(又名被动对手)遵循协议规范,但可能会尝试从协议记录中了解更多信息;
•恶意:恶意对手(又称主动对手)可以运行任意攻击策略以试图破坏协议。
通信模式:MPC 的默认通信方法是经过身份验证的通道,它可以在实践中使用已知的标准技术来实现。在多方设置中,各方也是通过点对点通道连接的,有时还需要一个广播通道。使用标准的 2 轮回声广播协议可以有效地实现广播信道。
设计 MPC 协议有两种主要方法:
•(1)秘密共享方法,使各方针对电路的每个非线性门进行交互,通信带宽低但具有与电路深度成线性关系的交互轮数;
•(2) 乱码电路方法,让各方构建一个加密版本的电路,只允许计算一次,并且交互轮数恒定,但通信带宽大。
4.1 不经意传输(OT - Oblivious Transfer)
不经意传输(OT,oblivious transfer)是一个密码学协议,目前被广泛的应用于安全多方计算(MPC,Secure Multi-Party Computation)。它由 Rabin[1] 在 1981 年提出。 Alice 拥有秘密 S1,Bob 拥有秘密 S2 。Alice 和 Bob 想要交换秘密,要求两方都有可能得到秘密并且秘密拥有方不知道对方是否得到秘密。
Even 等人的提出新的使用公钥密码体制的 1-out-of-2 OT 协议,给出了 OT 公理化的定义和实现。相比于 Rabin 等人提出的一方只有1/2的概率获得秘密,Even等人将其进行了改进,即:Alice 拥有两个秘密 (M0,M1) ,而 Bob 想要知道其中一个。在 OT 协议执行完成之后,Bob 获得了其中一个秘密,但是不知道另外一条秘密 ,并且 Alice 也不知道 Bob 选择的是M0,还是M1。
4.2 基于秘密共享(Secret Sharing)的 MPC 协议
秘密共享的思想是将秘密以适当的方式拆分,拆分后的每一个份额由不同的参与者管理,单个参与者无法恢复秘密信息,只有若干个参与者一同协作才能恢复秘密消息。更重要的是,当其中任何相应范围内参与者出问题时,秘密仍可以完整恢复。是信息安全和数据保密中的重要手段。
目前,具体高效的 MPC 协议主要采用三种线性秘密共享方案(LSSS):加性秘密共享、Shamir 秘密共享,以及replicated秘密共享(又名 CNF 秘密共享),其中加性秘密共享主要用于不诚实多数设置中的 MPC 协议,而 Shamir 和replicated秘密共享用于诚实多数 MPC 协议。为了实现恶意安全,加性秘密共享需要配置信息论消息认证码(IT-MACs)。
MPC 中使用的三种 LSSS 都是 ( n , t )-阈值秘密共享方案,它使n方可以在各方之间共享秘密x,使得t方的任何子集都无法获得关于秘密x的任何信息,而任何t + 1 方的子集可以重建秘密x。加性秘密共享只能在t = n - 1 时进行,而 Shamir/replicated 秘密共享允许任何 t < n(我们经常采用 t < n/2 代表诚实多数 MPC)。
4.3 基于乱码电路的常数轮MPC协议
它的核心技术是将两方参与的安全计算函数编译成布尔电路的形式,并将真值表加密打乱,从而实现电路的正常输出而又不泄露参与计算的双方私有信息。已知的实际有效的常数轮 MPC 协议是基于乱码电路构建的,这些电路是电路的加密版本,并且只能计算一次。
乱码电路协议分为四个部分。
Step 1: Alice 生成乱码电路
Step 2: Alice 和 Bob 进行通信
Step 3: Bob evaluate 生成的乱码电路
Step 4: 分享结果
4.4 半诚实协议
半诚实的参与方,遵循了协议的执行,但是却保存了协议的中间计算状态,实际上,半诚实的参与方,只保存内部的掷硬币过程(产生随机数的过程)和所有从其他参与方接收到的消息。特别是,一个半诚实的参与方会选择随机数和根据预定的程序进行操作,即根据预定的程序公平的产生随机数和执行输入与输出。
第一个常数轮安全两方计算(2PC)协议是由姚[ 6 ]提出的,实现了半诚实的安全性。Yao 的 2PC 协议采用乱码电路(GC)和 OT 作为构建块。在多方设置中,常数轮MPC必须处理多方合谋欺骗诚实方的情况。因此,不能只让一方构建乱码电路,而是让各方以分布式的方式共同构建乱码电路。
4.5 恶意安全协议
为了实现恶意安全,需要增加一些检查程序。在不诚实多数 MPC 和诚实多数 MPC 之间,确保免受恶意对手攻击的底层技术是不同的。例如,不诚实多数设置中的 MPC 需要信息论消息认证码 IT-MAC 来验证各方共享的值。
安全的两方计算:
对于常数轮2PC 协议,在 2017 年之前,一种流行的设计恶意安全协议的方法是使用“Cut-and-Choose”(C&C)技术。使用这种技术有两种不同的风格。
•第一个是 Lindell 和 Pinkas 引入的电路级 C&C 方法
•第二种是 Nielsen 和 Orlandi 引入的门级 C&C 方法
目前,用于恶意安全 2PC 的最先进方法是采用分布式乱码方法,并且明显优于两种 C&C 方法。
安全的多方计算:
不诚实的大多数。 对于容忍非一个恶意破坏的常数轮循环 MPC 协议,一些研究采用cut-and-choose的方式或者BMR和SPDZ的组合方式来构建MPC协议。但是,它们的执行效率很低。Goldreich、Micali 和 Wigderson (GMW) 提出了一种通用编译器,用于将半诚实的 MPC 协议转换为恶意安全的 MPC 协议,以完成相同的计算任务。然而,这个编译器是非黑盒的,它使用通用的零知识证明来证明每一步计算的正确性,因此效率不高。后来,Ishai、Prabhakaran 和 Sahai (IPS) 提出了一种黑盒编译器,其中具有半诚实安全性的内部MPC协议在OT-混合模型中计算电路,并且在诚实多数设置中具有恶意安全性的外部MPC协议用于保证安全性存在恶意对手的情况下的整个 MPC 协议。 SPDZ 框架是不诚实多数恶意设置中最先进的协议。原始 SPDZ 协议使用深度 1 同态加密 (HE) 方案(即底层 HE 方案可以支持一次乘法)在预处理阶段生成经过验证的三元组,并且可以在在线阶段快速评估电路。
诚实的大多数。 在诚实多数设置中,可以使用较少的通信和计算基于replicated秘密共享来构建常数轮 MPC 协议。在恶意设置中,我们只需要检查乘法门的正确性,因为加法门是在本地计算的并且总是正确的。具体来说,可以使用具有次线性通信的分布式零知识证明来验证乘法门的正确性。
5.MPC的应用场景
随着政府企业数字化转型深入渗透,企业累计数据资产增多,平均数量级达到3.2PB,海量数据资产一方面意味着存在大量价值等待挖掘,另一方面意味着对数据安全防护能力提出了更高的要求。从各个行业来看,通信运营商拥有最丰富最具价值的数据资产,借助隐私计算技术,可充分释放数据要素生产力,实现数据变现。同时为数据要素市场安全发展提供核心基础设施,赋能千行百业。政府数据开放已成为提升政务服务的关键。隐私计算能够在保障数据安全的同时,增强全社会的数据协作,推动数据要素赋能产业升级。金融企业数据作为一种生产要素,越来越多的业务场景需要多方数据流通和共享,打破“数据孤岛”。健康医疗大数据是国家重要的基础性战略资源。通过整合医疗机构内部及跨机构的多源异构数据,构建统一的健康医疗大数据模型,对于支撑行业治理、医学科研、公共服务都能发挥重要作用。特别是医学科研和药械研发,通过多机构间健康医疗大数据共享应用,能够增强临床试验、准入、监管等联系性和协同性,加快新一代基因测序、肿瘤免疫治疗、干细胞与再生医学、生物医学大数据分析等关键技术研究和转化,推动重大疾病的早期筛查、个体化治疗等精准化应用解决方案和决策支持系统应用。隐私计算能够兼顾多方协作过程中的安全性与效率性,以下列举了MPC在各领域的一些典型应用场景:
金融领域:
政务领域:
医疗、互联网领域:
6.结语
政府、企业、组织以及个人越来越关注数据隐私,通常实施的解决方案已不能提供足够的保护能力来防止数据盗窃和隐私泄露。加密静态数据不足以避免数据泄露,不同的行业已经开始利用新的隐私保护技术。而新技术的发展使安全共享数据和保护个人隐私成为可能。这些技术可以允许在企业、组织之间共享数据使用价值,在数据湖和云中搜索加密数据,而不会损害数据隐私,同时仍然保留数据的分析质量。
然而,带来安全性的同时,难免对数据分析的性能有所损失,我们仍需要新的隐私保护计算方法来帮助寻找新的机会并在隐私、安全和合规之间找到适当的平衡。
7.参考文献
1.隐私计算联盟,《隐私计算应用研究报告(2022年)》,https://mp.weixin.qq.com/s/B-z_z_LqvHsj9Xg9irknaQ
2.隐私计算联盟,《可信隐私计算研究报告(2022年)》,https://mp.weixin.qq.com/s/ItTFfLP3h8mTYZoCytyvYg
3.Shamir, A. (1979) How to Share a Secret. Communications of the ACM, 22, 612-613.
4.Yao.A.C. How to Generate and Exchange Secrets. FOCS 1986: 162-167
5.Gennaro R, Gentry C, Parno B. Non-interactive Verifiable Computing: Outsourcing Computation to Untrusted Workers[M]// Advances in Cryptology – CRYPTO 2010. Springer Berlin Heidelberg, 2010:465-482.
6.Rabin M O . How to Exchange Secrets by Oblivious Transfer[J]. Technical Memo TR-81, 1981.
7.Feng D and Yang K. Concretely efficient secure multi-party computation protocols: survey and more. Security and Safety 2022; 1: 2021001. https://doi.org/10.1051/sands/ 2021001
8.信通院,《隐私计算白皮书(2021年)》
隐私计算之多方安全计算(MPC,Secure Multi-Party Computation)的更多相关文章
- 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet
对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...
- Oracle计算连续天数,计算连续时间,Oracle连续天数统计
Oracle计算连续天数,计算连续时间,Oracle连续天数统计 >>>>>>>>>>>>>>>>> ...
- CyclicBarrier开启多个线程进行计算,最后统计计算结果
有一个大小为50000的数组,要求开启5个线程分别计算10000个元素的和,然后累加得到总和 /** * 开启5个线程进行计算,最后所有的线程都计算完了再统计计算结果 */ public class ...
- Chapter Zero 0.1.4 计算机上常用的计算单位
0.1 计算机硬件 计算机上常用的计算单位 容量单位: 计算机对于数据的判断依据有没有通电来记录信息,对于每个记录而言, 他只认识0或1,而0/1这个二进制单位我们成为bit. 因为bit太小,所以存 ...
- 【实时数仓】Day03-DWM 层业务:各层的设计和常用信息、访客UV计算、跳出明细计算(CEP技术合并数据识别)、订单宽表(双流合并,事实表与维度数据合并)、支付宽表
一.DWS层与DWM层的设计 1.设计思路 分流到了DWD层,并将数据分别出传入指定的topic 规划需要实时计算的指标,形成主题宽表,作为DWS层 2.需求梳理 DWM 层主要服务 DWS,因为部分 ...
- 数据分析与科学计算可视化-----用于科学计算的numpy库与可视化工具matplotlib
一.numpy库与matplotlib库的基本介绍 1.安装 (1)通过pip安装: >> pip install matplotlib 安装完成 安装matplotlib的方式和nump ...
- vue计算属性(通过计算得来的属性)
1.computed:是一个计算属性,用来监听属性的变化 eg: <p>computed:{{count}}</p> computed:{ count(){ c ...
- 卷积、矩阵乘积、高斯模糊滤波(降噪)、空域计算(2D卷积计算)、频域计算(FFT)的理解
矩阵乘积:对应行列对应元素相乘的和组成新的矩阵 两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 并将此乘积记为: ...
- R语言计算相关矩阵然后将计算结果输出到CSV文件
R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...
- poj 1265 Area【计算几何:叉积计算多边形面积+pick定理计算多边形内点数+计算多边形边上点数】
题目:http://poj.org/problem?id=1265 Sample Input 2 4 1 0 0 1 -1 0 0 -1 7 5 0 1 3 -2 2 -1 0 0 -3 -3 1 0 ...
随机推荐
- 带你探索CPU调度的奥秘
摘要:本文将会从最基础的调度算法说起,逐个分析各种主流调度算法的原理,带大家一起探索CPU调度的奥秘. 本文分享自华为云社区<探索CPU的调度原理>,作者:元闰子. 前言 软件工程师们总习 ...
- 教你如何用Keras搭建分类神经网络
摘要:本文主要通过Keras实现了一个分类学习的案例,并详细介绍了MNIST手写体识别数据集. 本文分享自华为云社区<[Python人工智能] 十七.Keras搭建分类神经网络及MNIST数字图 ...
- target.closest妙用:UI(click/mousemove/drag/drop)事件元素查找捷径
首先看下MDN:https://developer.mozilla.org/en-US/docs/Web/API/Element/closest 在jQuery时代,这个非常常见 $( documen ...
- DarkMode(4):css滤镜 颜色反转实现深色模式
在<DarkMode(1):产品应用深色模式分析>提过,单纯反转是不行的.但是,把不需要反转的,在反转过来.或者用js,给想要反转的,加上反转样式,再对其他的做微调.这样个人觉得,开发成本 ...
- 火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 自上世50年代,以"计算机"作为代表性象征的信息革命开始,社会对于先进生产力的认知便开始逐 ...
- 火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在精细化运营的时代,运营活动同样需要有精细化的策略,例如在年末大促活动中,设计 APP 弹窗提醒.满减.会员领券时 ...
- AI 0基础学习,数学名词解析
AI学习过程中,常见的名词解析 中位数 将数据从小到大排序,奇数列,取中间值,偶数列,中间两个值的平均,可做为销售指标 众数 一组数据中,数值出现最多的那个.反映哪款产品,销量最好 平均数 比赛中,去 ...
- Spring Boot CMD 运行日志输出中文乱码
Spring Boot 在Windows CMD 中运行,日志输出中文乱码name="CONSOLE" 设置成 charset utf-8 ,在windows cmd 中运行时,l ...
- PlayWright安装及使用
PlayWright是由业界大佬微软(Microsoft)开源的端到端 Web 测试和自动化库,可谓是大厂背书,功能满格,虽然作为无头浏览器,该框架的主要作用是测试 Web 应用,但事实上,无头浏览器 ...
- pod内部网络实现
k8s主题系列: 一.k8s网络之设计与实现 二.k8s网络之pod内部网络 三.k8s网络之Flannel网络 四.k8s网络之Calico网络 pod特性 Pod 是 K8S 的最小工作单元.每个 ...