安全多方计算

  • 介绍
  • MPC的安全性
    • 定义范式
    • 附加定义参数
    • 重要的定义含义
  • MPC的可行性
  • 技术
    • 沙米尔秘密分享
    • 私人集合交叉口
    • 阈值加密
    • Dishonest-Majority MPC
    • 高效实用的MPC
  • MPC用例
  • 讨论

安全多方计算(MPC)协议使一组各方能够交互并计算其私有输入的联合函数,同时只显示输出。MPC的潜在应用是巨大的:隐私保护拍卖、私人DNA比较、私人机器学习、阈值密码学等等。因此,MPC自20世纪80年代姚明和Goldreich、Micali和Wigderson分别在两党案例(FOCS 1986)和多党案例(STOC 1987)中提出以来,一直是学术界研究的热点。近年来,MPC已经足够有效地应用于实践,并从理论研究的对象转变为工业应用的技术。在本文中,我们将回顾什么是MPC,它解决了什么问题,以及它目前是如何被使用的。
我们注意到,这篇综述文章中提供的例子和参考文献不够全面,而且由于篇幅有限,许多高度相关的作品没有被引用。

本文是机翻的,可读性较差。推荐一篇同文的翻译的很好博客。
推荐博文:安全多方计算MPC

介绍

分布式计算考虑的是这样一种场景:许多不同但连接的计算设备(或各方)希望对某些功能进行联合计算。例如,这些设备可能是持有分布式数据库系统的服务器,而要计算的函数可能是某种类型的数据库更新。安全多方计算的目的是使各方能够以安全的方式执行这种分布式计算任务。尽管分布式计算经常处理在机器崩溃和其他意外故障威胁下的计算问题,安全多方计算涉及到某些敌对实体故意进行恶意行为的可能性(这些在分布式文献中也被考虑过,它们被称为拜占庭错误)。也就是说,假设协议执行可能受到外部实体的“攻击”,甚至可能受到参与各方的子集的“攻击”。这种攻击的目的可能是了解私人信息或导致计算结果不正确。因此,对任何安全计算协议的两个重要要求是隐私性和正确性。隐私要求规定,在绝对必要的情况下,不应该学习任何东西;更确切地说,各方应该学习他们的成果,而不是其他。正确性要求声明每一方都应该接收其正确的输出。因此,对手必须不能使计算结果偏离当事各方设定的计算功能。
安全多方计算可用于解决各种各样的问题,在不损害隐私的情况下利用数据。例如,考虑一个人的DNA与癌症患者的DNA数据库进行比较的问题,目的是发现这个人是否属于某种癌症的高危人群。这样的任务显然对健康和社会有重要的好处。然而,DNA信息是高度敏感的,不应该透露给私人组织。这个难题可以通过运行一个安全的多方计算来解决

只显示了这个人的DNA接近(或没有)的癌症类别。在本例中,隐私要求确保只显示癌症的类别,而不显示任何人的DNA(既不显示被比较的人的DNA,也不显示数据库中患者的DNA)。此外,正确性要求确保恶意的一方不能改变结果(例如,使人认为他们有患某种癌症的风险,因此需要进行筛查)。
在另一个例子中,考虑一个交易平台,其中各方提供报价和出价,并且当报价大于出价时进行匹配(例如,交易价格是报价和出价的某种函数)。在这种情况下,从博弈论的角度来看,不披露各方的实际报价和出价是有益的(因为其他人可以利用这一信息人为地提高价格或提供低于其效用的报价)。这里的隐私性保证了只有买方和卖方之间的匹配和结果价格才会被显示,而正确性将保证显示的价格是根据函数的正确价格(而不是某个更低的值,例如)。有趣的是,在某些情况下,隐私更重要(如DNA示例),而在其他情况下,正确性更重要(如交易示例)。在任何情况下,MPC都保证了这两个特性,甚至更多。

关于术语的注释。在文献中,除了安全多方计算(缩写为MPC,有时是SMPC)之外,还提到了安全函数求值(SFE)。这些概念有很大的重叠,经常被用作同义词。此外,MPC的特殊情况通常有自己的名称。两个例子是私有集交集(PSI),它考虑私有集交集的安全计算,以及门限密码学,它考虑数字签名和解密的安全计算,其中没有任何一方持有私钥。

MPC的安全性

定义范式

如上所述,我们考虑的设置是敌对实体控制了协议的某些子集,并希望攻击协议执行。受对手控制的各方被称为腐败,并遵循对手的指示。安全协议应该能够承受任何对抗性攻击(稍后将讨论对手的确切能力)。为了正式声明和证明协议是安全的,需要对多方计算的安全性进行精确定义。已经提出了许多不同的定义,这些定义的目的是确保一些重要的安全属性,这些安全属性足够通用,可以捕获大多数(如果不是全部的话)多方计算任务。现在我们来描述这些属性中最核心的部分:

1.隐私:任何一方都不应该学到超出其规定输出的任何东西。特别是,应该了解的关于其他各方输入的唯一信息是可以从输出本身获得的信息。例如,在一个拍卖中,只有出价最高的竞标者的出价被披露,很明显,可以得出所有其他的出价都低于中标者的出价。然而,关于失败的竞标,其他任何信息都不应披露。
2.正确性:保证每一方接收到的输出是正确的。继续以拍卖为例,这意味着出价最高的一方肯定会获胜,包括拍卖人在内的任何一方都不能影响这一点。

3.输入的独立性:腐败方必须独立于诚实方的输入选择自己的输入。这一财产在密封拍卖中至关重要,在密封拍卖中,出价是保密的,各方必须独立于他人修改自己的出价。我们注意到,隐私并不意味着输入的独立性。例如,可能会产生一个更高的出价,而不知道原来的价值。这样的攻击实际上可以在一些加密方案上进行。,如果加密值为$100,则可以生成有效的加密值$101,而不需要知道原始加密值)。
4.有保证的输出交付:腐败方不应该能够阻止诚实方接收他们的输出。换句话说,对手不应该能够通过执行“拒绝服务”攻击来中断计算。
5.公平:当且仅当诚实方也收到其输出时,腐败方才应该收到其输出。错误的一方获得了输出,而诚实的一方没有得到输出,这种情况不应该出现。这个属性可能是至关重要的,例如,在签订合同的情况下。具体来说,如果腐败的一方收到了签署的合同,而诚实的一方没有收到,这将是非常有问题的。请注意,有保证的输出交付意味着公平,但反过来未必正确。

我们强调,上面的列表并不构成安全性的定义,而是任何安全协议都应该具备的一组需求。实际上,定义安全性的一种可能的方法是生成一个单独需求的列表(如上所述),然后说如果所有这些需求都得到满足,那么协议就是安全的。然而,这种方法并不令人满意,原因如下。首先,可能遗漏了一个重要的需求。这尤其正确,因为不同的应用程序有不同的需求,我们希望一个足够通用的定义来捕获所有的应用程序。第二,定义应该足够简单,这样就可以看出所有可能的对抗性攻击都被提议的定义所阻止。
因此,今天的标准定义[5]以以下一般方式将安全性形式化。作为一个心理实验,考虑一个“理想世界”,在这个“理想世界”中,外部可信(且廉洁)的一方愿意帮助双方进行计算。在这样一个世界中,各方可以简单地将他们的输入发送给受信任的一方,然后由后者计算所需的函数,并将其指定的输出传递给各方。由于一方所执行的唯一操作是将其输入发送给受信任的一方,因此对手所获得的唯一自由是选择被破坏的一方的输入。注意,上面描述的所有安全属性(以及更多)都包含在这个理想的计算中。例如,隐私之所以成立,是因为一方曾经接收到的唯一消息是其输出(因此它无法了解更多信息)。同样,正确性保持不变,因为受信任方不会被破坏,因此总是能够正确地计算函数。
当然,在“现实世界”中,没有任何外部的一方是所有各方都可以信任的。相反,各方之间在没有任何帮助的情况下运行一些协议,其中一些是腐败的和相互勾结的。尽管如此,安全协议应该模仿所谓的“理想世界”。也就是说,如果在实际执行中没有对手能比理想世界中的执行造成更大的伤害,那么由各方(在没有可信方存在的世界中)运行的真实协议就被认为是安全的。这可以这样表述:对于任何在现实世界中进行成功攻击的对手,也存在一个在理想世界中成功地进行具有相同效果的攻击的对手。然而,在理想的世界中,不可能进行成功的对抗性攻击。因此,我们得出结论,在现实世界中,所有针对协议执行的对抗式攻击都必须失败。
更正式地说,协议的安全性是通过比较真实协议执行的结果和理想计算的结果来建立的。也就是说,对于任何进攻的对手

在实际的协议执行中,存在一个对手攻击理想的执行(使用可信方),这样,在实际和理想的执行中,对手和参与方的输入/输出分布本质上是相同的。因此,真正的协议执行“模拟”了理想的世界。这种安全的制定被称为理想/真实模拟范式。为了激发这个定义的有用性,我们描述了为什么上面描述的所有属性都是隐含的。在实际执行和理想执行中,对手的输出是相同的,这是隐私权的依据。由于对手在理想的执行中除了腐败方的输出之外什么也学不到,所以在真正的执行中也必须如此。正确性源于真实执行和理想执行中诚实方的输出是相同的,以及在理想执行中,诚实方都收到了可信方计算出的正确输出。关于输入的独立性,请注意,在理想的执行中,在接收到任何输出之前,所有的输入都被发送到可信方。因此,腐败方在发送信息时对诚实方的信息一无所知。换句话说,腐败方的输入是根据需要独立于诚实方的输入选择的。最后,在理想世界中,保证输出的交付和公平性,因为被信任的一方总是返回所有的输出。它在现实世界中也是成立的,这又源于诚实方在现实和理想执行中的输出是相同的。
我们注意到,在某些情况下,定义是宽松的,以排除公平性和保证的输出交付。排除这些因素时所达到的安全级别称为“带中止的安全”,其结果是,对手可能能够获得输出,而诚实方却不能。使用这种松弛有两个主要原因。首先,在某些情况下,公平是不可能实现的(例如,[11]两方掷硬币是不可能实现的)。其次,在某些情况下,当公平性得不到保证时,更高效的协议是已知的。因此,如果应用程序不需要公平性(特别是在只有一方接收输出的情况下),这种放宽是有帮助的。

附加定义参数

对抗的力量。上述非正式的安全定义忽略了一个非常重要的问题:攻击协议执行的对手的能力。正如我们已经提到的,对手控制协议中参与各方的一个子集。然而,我们还没有定义这样的对手有什么力量。我们描述了定义对手的两个主要参数:它允许的对抗行为(例如:,对手只是被动地收集信息,还是指示腐败方进行恶意行动?,政党何时或如何受到对手的“控制”):

1.允许的对抗行为:必须定义的最重要参数与允许腐败方采取的行动有关。对手主要有三种类型:
(a)半诚实对手:在半诚实对手模型中,即使是被破坏的方也能正确地遵守协议规范。但是,对手会获得所有被破坏方的内部状态(包括接收到的所有消息的文本),并试图使用它来了解应该保密的信息。这是一个相当弱的对抗模型,但是具有这种安全级别的协议确实保证不会出现意外的数据泄漏。在某些情况下,这是足够的,尽管在今天的敌对环境中它

通常是不够的。半诚实的对手也被称为“诚实但好奇”和“被动”。(有时候,我们也会考虑失败阻止对手;这些本质上是半诚实的对手,他们也可能提前停止协议执行。)
(b)恶意对手:在这种对抗模型中,被破坏方可以根据对手的指示任意偏离协议规范。一般来说,在恶意对手存在的情况下提供安全性是首选,因为它可以确保任何对抗性攻击都不会成功。恶意的对手也被称为“主动的”。
©隐蔽对手[1]:这类对手可能会恶意行为,试图破坏协议。然而,所提供的安全保证是,如果它确实试图进行这样的攻击,那么它将以某种指定的概率被检测到,可以将其调优到应用程序中。我们强调,与恶意模型不同的是,如果对手没有被检测到,那么它可能会成功地欺骗(例如,了解诚实方的输入)。这个模型适用于这样的场景,即某些现实世界的惩罚可以与检测到的对手相关联,而对手的预期是,如果它试图攻击,就会整体失败。

2.腐败战略:腐败战略涉及政党何时以及如何腐败的问题。主要有三种模式:
(a)静态破坏模型:在该模型中,在协议开始之前,对手控制的当事人集合是固定的。诚实的政党始终是诚实的,腐败的政党始终是腐败的。
(b)自适应腐败模型:在计算过程中,自适应对手被赋予腐败方的能力,而不是一组固定的腐败方。腐败对象的选择以及何时腐败可以由对手任意决定,也可能取决于其对执行的看法(因此被称为适应性)。这种策略模拟了外部“黑客”在执行过程中入侵机器的威胁,或者是最初诚实但后来改变行为的一方。我们注意到,在这个模型中,一旦一个政党被腐败了,它从那时起就一直是腐败的。
©主动安全模型[30,7]:该模型只考虑当事人在一定时间内被破坏的可能性。因此,诚实方在整个计算过程中可能会变得腐败(就像在自适应对抗模型中一样),但腐败方也可能变得诚实。如果威胁来自外部对手,他们可能会入侵网络、侵入服务和设备,并且正在进行安全计算,那么主动模型是有意义的。一旦发现漏洞,系统就会被清理,对手就会失去对其中一些机器的控制,从而让双方重新诚实起来。安全保证是,对手只能从被它破坏的机器的本地状态中了解它所得到的信息,而这些机器是被破坏的。这样的对手有时被称为移动对手。

考虑到上述因素,并不存在“正确”的模型。相反,所使用的特定定义和考虑的对手取决于应用程序和要处理的威胁。
模块化顺序和并发组合。实际上,安全的多方计算协议并不是孤立运行的;相反,它是一个系统的一部分。在[5]中,我们已经证明,如果你将MPC协议作为一个更大的系统的一部分运行,那么它仍然以同样的方式运行,就像一个不受破坏的可信方为各方执行计算一样。这个强大的定理被称为模块组合,它允许使用安全子协议以模块化的方式构建更大的协议,以及分析一个使用MPC进行一些计算的更大的系统。
在这种情况下,一个重要的问题是MPC协议本身是否与其他协议同时运行。在顺序组合的设置下,MPC协议可以运行

作为另一个协议的子协议,任意其他消息被发送在MPC协议之前和之后。然而,MPC协议本身必须在没有任何其他消息并行发送的情况下运行。这称为独立设置,是[5]安全性的基本定义所考虑的设置。[5]的顺序模组合定理表明,在此设置下,MPC协议的行为实际上就像由可信第三方执行的计算。
在一些(许多)情况下,MPC协议与它自己的其他实例、其他MPC协议和其他不安全协议同时运行。在这些情况下,根据前面提到的独立安全定义证明是安全的协议实际上可能并不安全。人们提出了许多定义来处理这个设置,其中最流行的是通用可组合的[6]。根据这个定义,任何被证明是安全的协议都保证能够像理想的执行一样运行,而不考虑与它同时运行的其他协议。因此,这是货币政策委员会定义的黄金标准。然而,这是有代价的(效率和系统设置所需的假设)。

重要的定义含义

理想模型及在实际中的应用。定义安全的理想/现实范式实际上对MPC在实践中的使用有一些非常重要的含义。具体来说,为了使用MPC协议,所有从业者需要做的就是考虑他们系统的安全性,当一个不受破坏的可信方执行MPC使用的计算时。如果系统在这种情况下是安全的,那么即使使用真实的MPC协议(在适当的组合情况下),它也将保持安全。这意味着非密码学家不需要了解MPC协议是如何工作的,甚至不需要了解安全是如何定义的。理想的模型提供了一个干净且易于理解的抽象,可以被那些构建系统的人所利用。

允许任何输入。尽管理想的模型范式提供了一个简单的抽象,如上面所述,但是有一个微妙的地方有时会被误解。MPC协议的行为就像一个理想的执行;因此,获得的安全性类似于理想的执行。然而,在理想的执行中,敌对方可以输入他们希望的任何值,实际上没有一般的方法来防止这一点。因此,如果希望看到两人收入更高的工资(没有透露任何超过这一个比特的信息),然后没有阻止其中一个输入的最大可能值作为他们的薪水(然后在MPC诚实行为协议本身),结果是,输出是他们赚得更多。因此,如果应用程序的安全性依赖于一方使用正确的输入,那么必须使用机制来实现这一点。例如,可以要求签名输入,并将签名作为MPC计算的一部分进行验证。根据特定的协议,这可能会增加大量的成本。

MPC保护过程,但不保护输出。另一个经常被误解的微妙之处是MPC保证了进程的安全,这意味着计算本身不会透露任何信息。然而,这并不意味着正在计算的函数的输出不显示敏感信息。举一个极端的例子,假设有两个人在计算他们的平均工资。的确,输出的东西只有平均值,但给定一个人自己的工资和两种工资的平均值,他们就可以得出另一个人的确切工资。因此,仅仅使用MPC并不意味着所有的隐私问题都得到了解决。相反,MPC保护了计算过程,出于隐私考虑,应该计算哪些函数,不应该计算哪些函数,这个问题仍然需要解决。在某些情况下,比如阈值加密,这个问题不是问题(因为加密函数的输出不会显示密钥,假设它是安全的)。然而,在其他情况下,情况可能不那么清楚。

MPC的可行性

上面描述的安全性定义似乎非常严格,因为不允许任何对抗性成功,而且协议的行为应该像一个可信的第三方在执行计算一样。因此,人们可能会想,在这个定义下是否有可能获得安全协议,如果有可能,对于分布式计算任务来说。也许令人惊讶的是,已经建立了强大的可行性结果,表明事实上,任何分布式计算任务(函数)都可以在恶意对手存在的情况下安全地计算。我们现在简要说明这些结果中最核心的部分。令n表示参与的政党数目,令t表示可能被破坏的政党数目(其中被破坏的政党身份未知):

1.当t < n/3时(即,当少于三分之一的参与方可以被破坏时),对于任何具有计算安全性的函数,可以实现具有公平性和保证输出传递的安全多方协议,假设具有认证通道[18]的同步点到点网络,在信息论安全的情况下,假设信道也是私有的[3,9]。
2.当t < n/2时(即,在保证诚实多数的情况下),对于任何具有计算安全性和信息论安全性的函数,都可以实现具有公平性和保证输出交付的安全多方协议,前提是各方也可以访问广播信道[18,33]。
3.当t≥n/2时(即,在不限制被破坏方数量的情况下),可以实现安全的多方协议(不存在公平性或保证输出传递)[37,18]。

在2.2节末尾描述的并发组合设置中,也证明了任何函数都可以安全地计算[6,8]。
总之,安全多方协议适用于任何分布式计算任务。这一事实提供了它的巨大潜力——任何需要计算的东西都可以安全地计算!但是,我们强调,上述可行性结果是理论上的,这意味着它们表明在原则上是可能的。他们不考虑实际的效率成本;这些将在下面的第4.6节中提到。
我们用一个警告来结束这一节。上述可行性结果在具体的模型中得到了验证,并在加密硬度和/或设定假设下得到了验证。描述这些细节超出了本文的范围,但是一定要知道需要考虑这些细节。

技术

在过去的三十年里,许多不同的技术已经被开发出来,用于构造具有不同属性和不同设置的MPC协议。甚至提到所有的技术都超出了本文的范围,我们强烈建议阅读[15]的MPC介绍,其中包括对主要技术的调查。不过,我们将提供几个简单的例子来说明MPC协议是如何构造的,以说明它是如何工作的。

沙米尔秘密分享

对于诚实的大多数人来说,MPC协议通常使用秘密共享作为基本工具。因此,我们将从简要描述Shamir的秘密共享方案[34]开始。
一个秘密共享方案解决了一个经销商希望在n方之间共享秘密s的问题,这样t+1或更多方的任何子集都可以重构秘密,而t或更少方的任何子集都不能了解秘密的任何信息。满足这些要求的方案称为(t+1)-out- n-threshold秘密共享方案。
Shamir的秘密共享方案利用了这样一个事实:对于二维平面上的任意t+1点(x1y1),……(xt+1yt+1)和唯一的xi时,存在唯一次多项式q(x),其次数最多为t,使q(xi) = yi 此外,还可以有效地重构多项式q(x)或其上的任何特定点。一种方法是用拉格朗日基多项式ℓ1(x),…,ℓt(x),其中通过计算q(x) =!t + 1我(x) = 1ℓ·易。从现在起,我们将假定所有的计算都是在有限域Zp ’ p > n。鉴于上述,为了分享一个秘密的年代,经销商选择一个随机多项式q (x)的随机程度系数大多数t在a1,。。,∈Zp处的约束,并且令q(0) q(x) = s. =(具体地说,!ti=0ai·xi.)选择,n,经销商向第i方提供股份yi = q(i);这就是我们需要p > n的原因,这样就可以给每一方不同的份额。由任意t方的子集进行重构,只需插值多项式来计算q(x),然后推导出s = q(0)。尽管t + 1方可以完全恢复,不难表明,任何子集(t)或更少方无法了解。这是由于这样的事实,他们有t或少点多项式,因此存在一个多项式经过这些点和点(0,s)为每一个可能的年代∈Zp.此外,由于多项式是随机的,所有多项式都是等可能的,因此s∈Zp的所有值都是等可能的。

具有秘密共享的诚实多数MPC
在大多数通用MPC协议中的第一步(即。,可以用来计算任何函数的协议)是将被计算的函数表示为布尔值或算术电路。在基于秘密共享的诚实多数MPC算法中,算法电路(由乘法和加法门组成)在有限域Z上p p >n,和上面一样。我们注意到算术电路是图灵完备的,因此任何函数都可以用这种形式表示。参与MPC协议的各方都被提供了这个电路,并且我们假设他们都可以安全地相互通信。针对半诚实对手的协议(见下文,了解恶意对手的情况)包括以下几个阶段:

应该是a(t+1)- in -n的秘密共享值a(0) + b(0)。这很容易由第i方在本地将其在输出导线上的份额设置为a(i) + b(i)来计算。通过定义多项式c(x) = a(x) + b(x),这意味着第i方持有c(i)。此外,c(x)是一个t次多项式,使得c(0) = a(0) + b(0)。因此,根据需要,双方持有a(0)+b(0)值的有效(t+1)-out- n秘密共享。注意,计算加法门不需要通信。
(b)计算乘法门:同样,用a(x)和b(x)表示门输入线上的多项式。对于加法门,第i方可以局部乘以其份额来定义c(i) = a(i)·b(i)。通过多项式乘法的性质,定义了一个多项式c(x)使c(0) = a(0)·b(0)。因此,c(x)是正确值的共享(输入连线上的值的乘积)。然而,c(x)的度是-2t,因此这是(2t+1)-out- n秘密共享,而不是(t+1)-out- n秘密共享。为了完成乘法门的计算,各方需要进行一次降阶步骤,将各方共享的多项式的次从2t降至t,且不改变其在0处的值。在继续描述它之前,请注意,由于t < n/2, n方持有的股份完全决定了2t + 1次多项式c(x)。
为了计算降阶步骤,我们使用了[12]的一个想法(我们在这里描述了基本的想法,尽管[12]有一个比我们在这里描述的更有效的实现方法)。假设各方都持有两个独立的未知随机值r的秘密共享,第一个共享通过一个次为2t的多项式表示r2t(x)和第二个共享通过一个次t的多项式表示Rt(x),注意R2t(0) = Rt(0) = r,则各方可以局部计算其在次2t多项式d(x) = c(x)−r中的份额2t(x)通过设置d(i) = c(i)−R2t(i).注意c(x)和R2t(x)的次数为-2t。接下来,各方通过将其所有股份发送给所有其他各方来重构d(0) = a(0)·b(0)−r。最后,所有i = 1的第i次聚会,…, n计算它在输出线上的份额为c ’ (i) = Rt(我)+ d(0)。
观察c ’ (x)自R以来的次数为tt(x)的次数是t,它的定义是在R上加上一个常数d(0)t(x),然后,c ’ (0) = a(0)·b(0)自Rtd(0) = a(0)·b(0)−r;因此,当对这些值求和时,r就消掉了。因此,根据需要,双方对输入导线上的值的乘积持有有效的(t+1)-out- n秘密共享。此外,请注意,向所有各方透露的值d(0)自R以来没有泄露任何信息t(x)完美地掩盖了c(x)的所有值,特别是它掩盖了a(0)·b(0)的值。它仍然显示各方如何通过2t次和t次的多项式生成未知随机值r的两个独立秘密共享。这可以由第i方实现,对于所有i = 1,…, n,玩发牌者,共享一个随机值ri 通过一个2t次多项式R2ti(x)通过一个t次多项式RtiR2t(i) the =i’th! R2t(i) the =i’th!npartyRj for (i)and所有i R= (i)1,。=。。!, n nj=1定义rtt (i)。它的因为共享所有各方R2t(x)贡献和Rt(x)秘密由随机值r1,…rj=1 n和2t我们有t r =!Nj = 1rj,因此没有一方知道r。

3.输出重构:一旦双方在输出线上获得了份额,只需将各自的份额发送给对方,通过插值重构即可获得输出。注意,如果需要,不同的各方也可能获得不同的输出。在这种情况下,各方只将用于重构的份额发送给相关方,这些方应该获得给定导线上的输出。

上述协议对于半诚实的对手是安全的,只要少于n/2方被破坏。这是因为在计算过程中,各方所看到的唯一值是秘密共享(对它们隐藏的值没有任何透露),以及开放的d(0)值,由于每次使用的是独立随机共享,因此对导线上的实际值没有任何透露。请注意,为了在可能偏离协议规范的恶意对手存在的情况下实现安全性,有必要使用不同的方法来防止作弊。参见[4,10,16]中的几个例子,说明了如何在恶意对手存在的情况下有效地实现安全性。

私人集合交叉口

在第4.2节中,我们描述了一种通用的安全计算方法,可以用来安全地计算任何函数。在许多情况下,这些通用方法实际上是最有效的(特别是在考虑恶意的对手时)。然而,在某些情况下,被解决的功能的特定结构使我们能够更快地找到定制的解决方案。在本节和下一节中,我们将给出这类函数的两个示例。
在私有集交集协议中,具有私有值集的两方希望找到集合的交集,除了交集中的元素外,不显示任何东西。在某些情况下,需要交集的某些函数,比如它的大小。关于这个问题,人们已经做了很多工作,包括针对半诚实和恶意对手的安全性,以及不同的效率目标(少回合、低通信、低计算等)。在本节中,我们将描述[23]协议背后的思想;[23]的实际协议要复杂得多,但是我们在它们的构造基础上提出了概念上简单的思想。
伪随机函数F是一个键控函数,该函数在已知输入上的输出看起来完全是随机的。因此,对于任意给定的元素x1……, xn,为值F的级数k(x1),……Fk(xn)是随机的。特别地,已知Fk(xi)时,确定x的值是不可行的i.在下面这个简单的协议中,我们使用了一个叫做无关伪随机函数计算的工具。这是一种特定类型的MPC协议,第一方输入k,第二方输入x,第二方接收Fk(x)而第一方对x一无所知(注意,第二方对F一无所知)k(x)但仅此而已;特别是,k仍然是秘密的)。这样的原始建筑有很多建造方式,这里我们就不赘述了。
现在,考虑具有各自私有元素集的两方;他们表示x1……, xn 和y1……yn,(为简单起见,我们假设它们的列表大小相同,尽管这是不需要的)。然后,协议如下:

1.第一方为伪随机函数选择一个密钥k。
2.双方执行n次无关伪随机函数求值:第i次执行时,第一方输入k,第二方输入yi.因此,第二方学习了Fk(y1),……Fk(yn),而第一方对y一无所知1……yn.
3.第一方在局部计算Fk(x1),……Fk(xn),并将清单发送给第二方。它可以计算这个,因为它知道k。
4.第二部分计算列表F之间的交集k(y1),……Fk(yn)和Fk(x1),……Fk(xn),并输出所有值yj 的Fk(yj )在十字路口。(政党知道这些值,因为它知道y之间的关联j 和Fk(yj ))。

上面的协议只揭示了交集,因为第一方对y一无所知1……yn 从不经意的伪随机函数计算中,第二方对x的值一无所知j 因为伪随机函数隐藏了

像原值。因此,这在半诚实模型中是安全的。在恶意模型中实现安全性更具挑战性。例如,恶意的对手可能对第一个元素和后面的元素使用不同的键,然后得到值y1 当且仅当它是第二方列表的第一个元素时,在输出中。
目前最高效的私有集交集协议使用高级的哈希技术,可以在几秒钟内处理数百万项[23,32,31]。

阈值加密

门限密码学的目的是使一组方能够进行加密操作,而不需要任何一方持有密钥。这可以用来确保交易中有多个签署人,或者通过在不同设备上共享密钥来保护密钥不被窃取(因此攻击者必须破解所有设备才能获得密钥)。我们演示了一个非常简单的用于两方RSA的协议,但警告说,对于更多方(和其他方案),它要复杂得多。
RSA是一种公钥方案,有公钥(e, N)和私钥(d, N)。RSA的基本函数是y = xe 对N取余,它的反函数是x = yd RSA用于加密和签名,通过填充消息和其他技术。这里,我们涉及到原始的RSA函数,并展示了如何在两方之间安全地计算反函数,其中任何一方都不能计算函数本身。为了实现这一目标,建立了与第一方控股(d1(N)和第二党持有(d2, N),其中d1 和d2 在d的约束下是随机的吗1 + d2 (更正式的说法是,指数的阶是φ(N) -欧拉函数-因此值d1d2 ∈Zφ(N) 在d的约束下是随机的吗1 + d2 = d mod φ(N)。)为了安全地计算yd 对N取余,第一方计算x1 = yd1 mod N,另一方计算x2 = yd2 mod N,然后在它们之间交换这些值。然后,每一方计算x = x1 ·x2 mod N,通过检查xe = y mod N来验证输出是否正确,如果是则输出x。观察这个计算是正确的,因为

此外,观察给定的输出x和它的共享d1 对于私有指数,第一方可以计算x2 = x/yd1 mod N(这是正确的,因为x2 = yd2 = yd1+d−d = yd·y−d = x/yd1 mod N)。这意味着,除了协议的输出,第一方不会学到任何东西,因为它可以自己从自己的输入和输出中生成它在协议中接收到的消息。
我们强调,成熟的阈值加密支持涉及许多方的quorum批准(例如,要求(t+1) n以外的方签名,并维护t损坏方的任何子集的安全性)。这需要额外的工具,但也可以非常有效地完成;看,[35]和里面的引用。最近,由于阈值ECDSA在保护加密货币方面的应用,引起了人们的极大兴趣[26,17,27,14]。

Dishonest-Majority MPC

在4.2节中,我们描述了一个MPC的一般协议,只要对手不能腐蚀超过一小部分的当事人,它就是安全的。在不诚实的多数的情况下,包括重要的特殊情况的两党(与一个腐败),完全不同的方法

是必要的。在这个方向上已经有了大量的工作,从最初的协议[37,18,2]开始,主要关注可行性,包括最近的很多工作,主要关注实现具体的效率。在这方面有太多的工作,任何试图在这里描述它都将是一种严重的不公正。因此,我们建议读者参考[15]来了解主要方法的描述,包括GMW无关传输方法[18,21],乱码电路[37,2],切割选择[28],SPDZ [13], TinyOT[29],头部[22]中的MPC,等等。(我们强调,对于每一种方法,都有许多后续工作,取得了越来越高的效率。)

高效实用的MPC

最初20年的MPC研究主要集中在可行性上:如何定义和证明多重对抗和网络模型的安全性,在什么样的密码和设置假设下可以实现MPC,等等。在接下来的十年里,大量的研究围绕着如何让MPC变得越来越有效展开。这个过程的第一步是纯算法的,并专注于减少密码原语的开销。在此之后,我们还考虑了其他有重大影响的问题:内存和通信,对像AES-NI这样的硬件指令的使用,等等。此外,由于大多数通用协议都要求计算函数的电路表示,而电路很难手工构造,因此还构造了从代码到电路的专用MPC编译器。这些编译器被定制为对MPC的特殊特性敏感。例如,在许多协议中,异或门的计算几乎是免费的[24],而与与/或门的成本。因此,这些编译器将和门的数量最小化,甚至以牺牲更多的异或门为代价。此外,一些协议的计算开销受电路大小的影响,而另一些协议的计算开销则受电路深度的影响。因此,一些编译器的目标是生成尽可能最小的电路,而另一些编译器的目标是生成具有最低深度的电路。请参阅[19]了解关于MPC通用编译器及其可用性的调查。这些先进技术的结合使得MPC在短短几年内的性能提高了许多数量级,为MPC在实际应用中足够快速地解决各种各样的问题铺平了道路。参见[15,第4章]对这些最重要的进步中的一些描述。

MPC用例

有很多很好的理论例子可以说明货币政策委员会的作用。它可以用来以保护隐私的方式比较禁飞名单,可以用于医疗和其他目的的私人DNA比较,可以用来收集统计数据,而不透露任何东西,只透露汇总结果,等等。直到最近,这些理论上的使用例子几乎是我们不得不说的MPC的潜在好处。然而,今天的情况却大不相同。MPC现在被用于多个真实世界的用例中,而且使用量正在快速增长。
我们将用一些实际部署的MPC应用实例来总结这篇综述文章。

波士顿工资差距[25]。波士顿妇女劳动力委员会(Boston Women 's Workforce Council)在2017年使用MPC计算了114家公司166,705名员工的薪酬统计数据,这些员工约占大波士顿地区劳动力的16%。MPC的使用至关重要,因为公司出于隐私考虑不愿提供原始数据。结果显示,波士顿地区的性别差距甚至比美国劳工统计局(Bureau of Labor Statistics)此前估计的还要大。这是一个强有力的例子,证明了MPC可以用于社会公益。

广告转换[20]。为了计算从广告到实际购买的准确转化率,谷歌计算显示广告的人群列表与实际购买广告商品的人群列表之间的交集大小。当商品不是在网上购买的,因此无法跟踪所显示广告的购买连接时,谷歌和支付广告的公司必须共享各自的列表来计算交集大小。为了在不透露交集大小的情况下进行计算,谷歌使用了一种隐私保护集交集协议。谷歌使用的协议见[20]。虽然该协议远不是目前已知的最高效的协议,但它很简单,满足了计算需求。

MPC用于加密密钥保护[38]。如第4.4节所述,阈值加密提供了执行加密操作(如解密和签名)而不将私钥保存在任何单一位置的能力。许多公司正在使用门限密码学作为传统硬件的替代品来保护加密密钥。在这个应用程序中,MPC不是在持有私人信息的不同方之间运行。相反,单个组织使用MPC来生成密钥并计算密码操作,而不会将密钥放在一个可能被窃取的地方。通过将密钥共享放置在不同的环境中,对手很难窃取所有的共享并获得密钥。在这种情况下,第2.2节所描述的主动模式是最合适的。MPC在这种情况下的另一个用途是保护用于保护加密货币和其他数字资产的签名密钥。在这里,定义通用仲裁的能力允许对批准金融交易的严格策略进行加密执行,或者在托管提供者和客户之间共享密钥。

政府协作[39]。不同的政府部门拥有公民的信息,将这些信息关联起来可以获得巨大的利益。然而,共享私人信息所涉及的隐私风险可能会阻止政府这样做。例如,在2000年,加拿大取消了一个收集公民信息的项目,因为有人批评他们在建立一个“老大哥数据库”。利用MPC,爱沙尼亚收集了加密的所得税记录和高等教育记录,以分析在攻读学位期间工作的学生是否比那些只专注于学习的学生更有可能失败。通过使用MPC,政府保证了所有的数据保护和税务保密法规的遵守,而不会失去数据效用。

保护隐私分析[40]。机器学习在许多领域的使用正在迅速增加。MPC可用于在数据上运行机器学习模型,而无需将模型(包含宝贵的知识产权)透露给数据所有者,也无需将数据透露给模型所有者。此外,为了反洗钱、风险评分计算等目的,可以在组织之间进行统计分析。

讨论

安全多方计算是[36]长期研究中取得成功的一个极好的例子。在MPC研究的头20年里,没有任何应用,MPC是否会被使用也是个问题。在过去的十年里,MPC的可用性经历了一个根本性的转变。在这段时间里,MPC不仅变得足够快,可以在实践中使用,而且得到了行业的认可,并实现了向实际应用技术的过渡。MPC的部署仍然需要大量的专业知识,也需要更多的研究突破

需要使安全计算在大数据集和复杂问题上实用,并使其便于非专业人员使用。过去几年的进展,以及目前正在产生的大量应用研究,为MPC在实践中描绘了一个积极的未来。与此同时,MPC的深入理论工作仍在继续,确保了应用的MPC解决方案建立在坚实的科学基础上。

参考文献
1.奥曼和林德尔。针对隐蔽对手的安全:针对现实对手的有效协议。密码学学报,23(2):281-343,2010(在TCC 2007上扩展摘要)。
2.D.比弗、S.米卡利和P.罗格威。安全协议的整数复杂度。在STOC第22页,503-513页,1990年。
3.M. Ben-Or, S. Goldwasser和A. Wigderson。非密码容错分布式计算的完备性定理。
4.Z. Beerliov´a- trub´ıniov´a and M. Hirt。具有线性通信复杂度的完全安全MPC。TCC 2008,施普林格(LNCS 4948),第213-230页,2008。
5.r . Canetti。多方密码协议的安全性和组成。密码学报,13(1):143 - 202,2000。
6.r . Canetti。普遍可组合安全:密码协议的新范式。在第42届FOCS中,第136 - 145,2001年。
7.R. Canetti和A. Herzberg。在出现短暂故障时进行安全维护。在CRYPTO ’ 94, Springer-Verlag (LNCS 839),第425-438页,1994。
8.R. Canetti, Y. Lindell, R. Ostrovsky和A. Sahai。普遍可组合的两方和多方计算。在第34版STOC中,494-503页,2002年。完整版本可在http://eprint.iacr.org/2002/140下载。
9.D. Chaum, C. Cr´epeau和I. Damg˚ard。多方无条件安全协议。在第20届STOC,第11-19页,1988年。
10.K.千田、D. Genkin、K. Hamada、D. Ikarashi、R. Kikuchi、Y. Lindell和A. Nof。针对恶意对手的快速大规模诚实多数MPC。CRYPTO 2018,施普林格(LNCS 10993),第34-64页,2018。
11.r·克里夫。当一半处理器故障时,硬币投掷的安全性限制。第18页,1986年,364-369页。
12.I. Damg˚ard和J. Nielsen。可伸缩和无条件安全的多方计算。在CRYPTO 2007,施普林格(LNCS 4622),页572-590,2007。
13.I. Damg˚ard, V. Pastro, N.P. Smart和S. Zakarias。某种同态加密的多方计算。在CRYPTO 2012,施普林格(LNCS 7417),第643-662页,2012。
14.j·多尔纳,y·康迪,e·李和a·谢拉特。基于ECDSA假设的ECDSA阈值:多方情况。2019年IEEE安全与隐私研讨会,第1051-1066页,2019。
15.D. Evans, V. Kolesnikov和M. Rosulek。安全多方计算的实用介绍。现在出版社,2018。
16.古川和林德尔。三分之二的诚实-多数MPC恶意的对手几乎以半诚实为代价。在第26届ACM CCS中,第1557-1571页,2019。
17.R. Gennaro和S. Goldfeder。快速多党阈值ECDSA与快速Trustless设置。第25届ACM CCS 2018,第1179-1194页,2018。
18.O. Goldreich, S. Micali和A. Wigderson。如何玩任何心理游戏-诚实多数协议的完整性定理。在第19页STOC中,218-229页,1987年。《密码学基础:第2卷-基础应用》(剑桥大学出版社2004年版),Oded Goldreich著。
19.M.黑斯廷斯,B.海明威,D.诺布尔和S.兹丹斯维克。SoK:安全多方计算的通用编译器。2019年IEEE安全与隐私研讨会,第1220-1237页,2019。

20.M. Ion, B. Kreuter, E. Nergiz, S. Patel, S. Saxena, K. Seth, D. Shanahan和M. Yung。带有应用程序对聚合Ad转换进行归因的私有交集和协议。IACR密码学电子打印档案,报告2017:738,2017。
21.Y. Ishai, J. Kilian, K. Nissim和E. Petrank。有效扩展不经意传输。在CRYPTO 2003,施普林格(LNCS 2729), 145-161页,2003。
22.伊沙伊,M.普拉巴卡兰,A.萨海。建立遗忘传输的密码学-高效。在CRYPTO 2008,施普林格(LNCS 5157),第572-591页,2008。
23.V.科列斯尼科夫,R.库马瑞桑,M.罗苏莱克和N.特里乌。基于私有集合交叉口的高效批处理遗忘PRF。在第23届ACM CCS,第818-829页,2016。
24.科列斯尼科夫和施耐德。改进的乱码电路:免费异或门和应用。在ICALP 2008,施普林格(LNCS 5126),页486-498,2008。
25.A. Lapets, F. Jansen, K.D. Albab, R. Issa, L. Qin, M. Varia和A. Bestavros。可访问的隐私保护网络数据分析评估和解决经济不平等。在COMPASS 2018中,48:1-48:5,2018。
26.y Lindell。快速安全的双方ECDSA签署。在CRYPTO 2017,施普林格(LNCS 10402),第613-644页,2017。
27.林德尔和纳夫。快速安全的多方ECDSA,具有实用的分布式密钥生成和加密货币托管应用。第25届ACM CCS大会,1837-1854页,2018。
28.耶胡达·林德尔和本尼·平卡斯。一种针对恶意对手存在的安全两方计算的有效协议。在EUROCRYPT, 52-78页。施普林格,2007年。
29.J.B.尼尔森,P.S.诺德霍尔特,C.奥兰迪和S.S.伯拉。一种实用的主动-安全两方计算新方法。在CRYPTO 2012,施普林格(LNCS 7417),第681-700页,2012。
30.奥斯特洛夫斯基和容闳。如何抵御移动设备病毒攻击。第10届PODC,第51-59页,1991。
31.B.平卡斯、M.罗苏莱克、N. triu和A.柳井。聚光灯:来自稀疏OT扩展的轻量级私有集交集。在CRYPTO 2019,施普林格(LNCS 11694),第401-431页,2019。
32.B.平卡斯,T.施耐德和M.佐纳。基于OT扩展的可扩展私有集交集。计算机学报,21(2):398 - 398,2018。
33.拉宾和本。可验证的秘密共享和诚实多数的多党协议。在第21届STOC, 73-85页,1989年。
34.答:沙密。如何分享秘密。CACM 22(11): 612 - 613年,1979年。
35.诉Shoup博士。实际的门限签名。在EUROCRYPT 2000,施普林格(LNCS 1807), 207 - 220页,2000。
36.相熟识的。长期的研究。CACM, 62(9): 2019。
37.答:姚明。《如何生成和交换秘密》,第27页,第162-167页,1986。
38.Unbound Tech (www.unboundtech.com)、Sepior (sepior.com)、Curv (www.curv.co)。
39.Sharemind, https://sharemind.cyber.ee。
40.二元性,https://duality.cloud。

回顾安全多方计算-SMPC(MPC)相关推荐

  1. 使用区块链强化安全多方计算(SMPC)执行力、溯源能力

    基于区块链的SMPC 基于区块链的安全数据协同计算模型 实际需求与基准技术 数据存储空间 RBFT 算法 构建模型 需求报告 5GBCsMPC-智能合约 基于区块链的安全数据协同计算模型 随着信息技术 ...

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

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

  3. 安全多方计算(MPC)从入门到精通:简易教程

    简介:JUGO平台针对企业级用户,打造基于MPC的安全数据交易平台.本节内容将介绍具体如何通过在本地部署MPC节点的教程,完成数据协同计算. 1.编程语言&开发环境 1.1.计算逻辑编程语言 ...

  4. 什么是多方计算multi-party computation (MPC)

    文章目录 什么是多方计算multi-party computation (MPC) MPC和TEE比较 外包计算 安全模型 MPC问题分类 其他参考 什么是多方计算multi-party comput ...

  5. mpc 安全多方计算协议_BNC公链 | 不看到数据却能进行计算?一文了解安全多方计算...

    今天,数据可以用来分析复杂问题,提供解决方案,甚至解决无法回答的问题.但是,当涉及到利用数据为公众服务时,数据共享和数据保护之间往往存在着许多矛盾.而安全多方计算(MPC)如何在不泄露隐私数据的情况下 ...

  6. 安全多方计算从入门到精通:MPC简介JUGO平台

    安全多方计算从入门到精通:MPC简介&JUGO平台 转自:http://blog.51cto.com/13701316/2136084 简介:今天我们来介绍一下基于安全多方计算所设计出来的产品 ...

  7. 【新书速递】实用安全多方计算导论

    安全多方计算(MPC)是解决数据安全与隐私保护问题的关键安全数据交换技术,近年来发展迅速,但由于MPC涉及复杂的密码学和工程实现技术,行业长期缺乏同时具备MPC研究.应用和实现能力的综合性人才,这阻碍 ...

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

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

  9. MPC 101:安全多方计算与多方签名

    1982年,姚期智先生,图灵奖获得者,在他的论文中提出了安全多方计算这一重要概念.为了形象地介绍安全多方计算这个概念,他提出了著名的「百万富翁问题」. 两个百万富翁在街头碰面,为了争一口气,希望 PK ...

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

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

最新文章

  1. cuda 核函数 for循环_【CUDA 基础】6.2 并发内核执行
  2. 【算法】ROI Align 原理
  3. Bash字符串处理(与Java对照) - 18.格式化字符串
  4. java xml amp_Javaamp;Xml教程(十一)JAXB实现XML与Java对象转换
  5. C#中的StreamReader/StreamWriter
  6. Vue首屏性能优化组件
  7. tag 和branch的区别
  8. MYSQL5.6和5.7编译标准化安装与配置
  9. 源码 | 幽灵交易者策略
  10. 中学计算机课程课时,高中信息技术课程教学计划
  11. .gitignore文件写法
  12. SQL Server忘记密码后成功重置密码的方法
  13. mediawiki java_MediaWiki
  14. 你以为链家只是一个中介,但其实……
  15. C# 命名空间中不存在类型或命名空间名System.XXX
  16. jyhtfkuy5987tgoluigl.kjylghliuygliuylio
  17. duplicate designator is not allowedC/C++(2906)
  18. 备赛电赛学习STM32篇(七):TIM输入捕获
  19. 【音视频】技术提升2.0
  20. PPT制作小技巧-合并形状1

热门文章

  1. 腾讯云— LAMP 架构个人实践分享
  2. 【PID优化】基于蝙蝠 粒子群 花卉授粉算法和布谷鸟搜索算法实现热交换器的PI控制器优化
  3. IE浏览器9.0与王码五笔不兼容的问题
  4. HTML5期末大作业:我的家乡网站设计——我的家乡-南京(4页)
  5. LaserJet 5000 及 5100 系列打印机出现 pcl xl error 怎么办
  6. 网页鼠标指针样式(cursor属性)
  7. acpi_hardware_id可以通过HID/CLD/UID/CLS/method/path获得
  8. 无刷滑环全面分析大全
  9. java正则表达式结尾_java 正则表达式
  10. blaster 驱动_为什么2020年IR Blaster在手机上仍然有用