图片来源:Weibel Christophe / Shutterstock
分布式计算考虑这样一种场景:许多不同的,但相互连接的计算设备(或各方)希望对某些功能进行联合计算。例如,这些设备可能是容纳分布式数据库系统的服务器,而要计算的函数可能是某种类型的数据库更新。的目的安全多方计算是使各方能够以安全的方式执行这种分布式计算任务。分布式计算通常处理机器崩溃和其他意外故障威胁下的计算问题,而安全多方计算则关注由一些敌对实体故意恶意行为的可能性(这些在分布式文献中也被考虑过,它们被称为拜占庭错误)。也就是说,假设协议执行可能受到外部实体的“攻击”,甚至可能受到参与方的一个子集的“攻击”。这种攻击的目的可能是了解私人信息或导致计算结果不正确。因此,任何安全计算协议都有两个重要要求隐私而且正确性.隐私要求规定,除了绝对必要的以外,不应了解任何信息;更确切地说,各方应该学习他们的输出,而不是其他。正确性要求规定每一方都应收到其正确的输出。因此,对手必须不能使计算的结果偏离双方当事人打算计算的功能。
<一个href="#PageTop">回到顶部一个>
<一个name="body-2">
安全的多方计算可用于解决各种各样的问题,使数据的利用不影响隐私。例如,考虑将一个人的DNA与癌症患者的DNA数据库进行比较的问题,目的是发现这个人是否属于患某种癌症的高风险群体。这一任务显然具有重要的健康和社会效益。然而,DNA信息是高度敏感的,不应该透露给私人机构。这种困境可以通过运行安全的多方计算来解决,该计算只揭示患者DNA接近(或不接近)癌症的类别。在本例中,隐私要求确保只透露癌症的类别,而不透露任何人的其他DNA(无论是被比较者的DNA还是数据库中患者的DNA)。此外,正确性要求保证恶意的一方不能改变结果(例如,使人认为他们有患某种癌症的风险,因此需要进行筛查)。
在另一个例子中,考虑一个交易平台,其中各方提供报盘和报盘,并在报盘大于报盘时进行匹配(例如,交易价格是报盘和报盘价格的某种函数)。在这种情况下,从博弈论的角度来看,不透露各方的实际出价和出价是有益的(因为这些信息可能被其他人用来人为地提高价格或提供低于其效用的出价)。这里的私密性保证了只显示买方和卖方之间的匹配和结果价格,而正确性将保证根据函数显示的价格是正确的(例如,而不是某个较低的值)。有趣的是,在某些情况下隐私更重要(如DNA例子),而在其他情况下正确性更重要(如贸易例子)。在任何情况下,MPC都保证了这两个属性,甚至更多。
<年代trong>关于术语的说明。年代trong>在文献中,除了安全多方计算(缩写为MPC,有时是SMPC),也有关于安全函数求值(SFE)的参考文献。这些概念有很大的重叠,经常同义使用。此外,MPC的特殊情况通常有自己的名称。两个例子是私有集交集(PSI),它考虑私有集交集的安全计算,以及阈值密码学,它考虑数字签名和解密的安全计算,其中没有任何一方持有私有密钥。
<一个name="body-3">
明确的范例。年代trong>如前所述,我们所考虑的设置是敌对实体控制各方的某个子集,并希望攻击协议执行。在对手控制下的一方被称为损坏,并遵从对手的指示。安全协议应该经得起任何对抗性攻击(对手的确切力量将在后面讨论)。为了正式声明和证明一个协议是安全的,需要对多方计算的安全性进行精确的定义。已经提出了许多不同的定义,这些定义旨在确保一些重要的安全属性足够通用,以捕获大多数(如果不是所有)多方计算任务。我们现在描述这些属性中最核心的:
损坏
我们强调,这个清单可以不构成安全的定义,而应该是对任何安全协议都适用的一组需求。实际上,定义安全性的一种可能的方法是仅仅生成一个单独的需求列表(如上所述),然后如果所有这些需求都得到满足,就说一个协议是安全的。然而,由于以下原因,这种方法并不令人满意。首先,有可能错过了一个重要的需求。这一点尤其正确,因为不同的应用程序有不同的需求,我们希望有一个足够通用的定义来捕获所有的应用程序。第二,定义应该足够简单,这样看起来就很容易了所有提出的定义防止了可能的对抗性攻击。
今天的标准定义<年代up>5一个>年代up>因此,以以下一般方式形式化安全性。作为一个心理实验,考虑一个“理想世界”,在这个世界中,一个外部的受信任的(且不腐败的)一方愿意帮助各方进行计算。在这样的世界中,各方可以简单地将它们的输入发送给受信任方,然后由受信任方计算所需的函数并将规定的输出传递给各方。由于一方所执行的唯一行动是将其输入发送给受信任的一方,因此给予对手的唯一自由是选择被破坏方的输入。注意,所描述的所有安全属性(以及更多)都包含在这个理想的计算中。例如,隐私之所以保留,是因为一方接收到的唯一消息是它的输出(因此它不能了解更多信息)。同样,正确性是成立的,因为受信任方不能被破坏,因此总是能够正确地计算函数。
当然,在“现实世界”中,不存在可以被各方信任的外部一方。相反,各方之间在没有任何帮助的情况下运行一些协议,其中一些是腐败和勾结的。尽管如此,安全协议应该模拟所谓的“理想世界”。也就是说,一个由各方(在不存在可信方的世界中)运行的真正的协议被称为安全如果在现实的执行中没有对手能比在理想世界的执行中造成更大的伤害。这可以这样表述:对于任何在现实世界中成功实施攻击的对手,都存在一个在理想世界中成功实施攻击并产生相同效果的对手。然而,成功的对抗性攻击不能在理想世界中得以实现。因此,我们得出结论,在现实世界中,所有针对协议执行的对抗性攻击也一定会失败。
安全
更正式地说,协议的安全性是通过比较实际协议执行的结果和理想计算的结果来确定的。也就是说,对于任何攻击真实协议执行的对手,都存在一个攻击理想执行的对手(有一个受信任的方),这样,在真实执行和理想执行中,对手和参与方的输入/输出分布本质上是相同的。因此,真正的协议执行“模拟”了理想世界。这种安全的表述被称为理想的/真实的模拟范例。为了激发这个定义的有用性,我们描述了为什么所描述的所有属性都是隐含的。隐私源自这样一个事实:对手的输出在真实和理想的执行中是相同的。因为对手在理想执行中除了被破坏方的输出之外什么也学不到,所以在实际执行中也是如此。正确性来源于诚实方在实际执行和理想执行中输出相同的事实,以及在理想执行中,诚实方都收到由受信任方计算的正确输出的事实。关于输入的独立性,请注意,在理想的执行中,在接收任何输出之前,将所有输入发送给受信任方。因此,腐败方在发送输入时对诚实方的输入一无所知。换句话说,按照要求,腐败方的投入是独立于诚实方的投入选择的。最后,有保证的输出交付和公平在理想世界中是成立的,因为受信任的一方总是返回所有的输出。它在现实世界中同样成立的事实又源于诚实当事人在现实和理想执行中的产出是相同的这一事实。
理想的/真实的模拟范例。
我们注意到,在某些情况下,该定义是宽松的,以排除公平和有保证的输出交付。排除这些因素时所达到的安全级别称为“带中止的安全”,其结果是对手可能能够获得输出,而诚实的一方则不能。使用这种松弛法主要有两个原因。首先,在某些情况下,不可能实现公平(例如,不可能实现双方抛硬币的公平<年代up>11一个>年代up>)。其次,在某些情况下,当公平性得不到保证时,更有效的协议是已知的。因此,如果应用程序不要求公平(特别是在只有一方接收输出的情况下),这种放松是有帮助的。
<年代trong>额外的定义参数。年代trong>对抗的力量。安全性的非正式定义忽略了一个非常重要的问题:攻击协议执行的对手的力量。正如我们已经提到的,对手控制协议中参与方的一个子集。然而,我们还没有确定这样的对手拥有什么样的力量。我们描述了定义对手的两个主要参数:它被允许的对抗行为(即,对手只是被动地收集信息,还是它可以指示腐败方恶意行动?)和它的腐败策略(即,各方何时或如何处于对手的“控制”下?)
协议的安全性是通过比较实际协议执行的结果和理想计算的结果来确定的。
Semi-honest对手
停止运行故障
恶意的敌人:
任意
秘密的敌人:
静态腐败模型:
自适应腐败模型:
主动安全模型:
实际上,安全的多方计算协议并不是孤立运行的;相反,它是系统的一部分。
在考虑这些信息时,没有“正确的”模型。相反,使用的具体定义和考虑的对手取决于应用程序和正在处理的威胁。
<年代trong>模块化顺序和并发组合。年代trong>实际上,安全的多方计算协议并不是孤立运行的;相反,它是系统的一部分。Canetti<年代up>5一个>年代up>证明了如果你运行一个MPC协议作为一个更大的系统的一部分,那么它仍然以相同的方式运行,就像一个不可破坏的受信任方为各方执行计算一样。这个强大的定理被称为模块化的组合它支持使用安全子协议以模块化的方式构建更大的协议,以及分析使用MPC进行某些计算的更大系统。
模块化的组合
在这种情况下,一个重要的问题是MPC协议本身是否与其他协议同时运行。在顺序组成, MPC协议可以作为另一个协议的子协议运行,在MPC协议之前或之后发送任意其他消息。然而,MPC协议本身必须在没有任何其他消息并行发送的情况下运行。这被称为独立设置,是Canetti安全的基本定义所考虑的设置。<年代up>5一个>年代up>Canetti的顺序模复合定理<年代up>5一个>年代up>指出,在这种设置下,MPC协议确实表现得像一个受信任的第三方进行的计算。
在一些(很多)情况下,MPC协议与自身的其他实例、其他MPC协议和其他不安全协议同时运行。在这些情况下,在上述安全的独立定义下被证明安全的协议实际上可能并不安全。提出了许多定义来处理这种情况,其中最流行的是通用可组合性。<年代up>6一个>年代up>根据此定义证明安全的任何协议都保证表现得像一个理想的执行,而不管与它同时运行的其他协议是什么。因此,这是MPC定义的黄金标准。然而,这是有代价的(效率和系统设置所需的假设)。
<年代trong>重要的明确的含义。理想模型和MPC在实际中的应用。年代trong>定义安全的理想/现实范式实际上对MPC的实际使用具有非常重要的意义。具体来说,是为了使用对于MPC协议,所有从业者需要做的是考虑他们的系统的安全性,当一个不可破坏的受信任方执行MPC所用于的计算。如果系统在这种情况下是安全的,那么即使使用真正的MPC协议(在适当的组合情况下),它也将保持安全。这意味着非密码学家不需要了解如何MPC协议工作,甚至是如何定义安全。理想的模型提供了一个清晰且容易理解的抽象,可以被那些构建系统的人所利用。
<年代trong>任何输入都是允许的。年代trong>尽管理想模型范式提供了一个简单的抽象,但正如所描述的,有一个微妙的点有时会被误解。MPC协议的行为就像一个理想的执行;因此,所获得的安全性类似于理想执行的安全性。然而,在理想的执行中,敌对方可以输入他们希望的任何值,实际上没有一般的方法来防止这种情况。因此,如果两个人都想知道谁的工资更高(除了这一点信息之外不透露任何其他信息),那么没有什么能阻止其中一人输入最大可能值作为他们的工资(然后在MPC协议本身中诚实地行事),其结果是,输出的结果是他们挣得更多。因此,如果应用程序的安全性取决于一方的使用正确的输入,那么必须使用机制来执行这一点。例如,可以要求有签名的输入,并将签名作为MPC计算的一部分进行验证。根据特定的协议,这可能会增加很大的成本。
<年代trong>MPC保护的是进程,而不是输出。年代trong>另一个经常被误解的微妙之处是MPC保护了这个过程,这意味着计算本身不会泄露任何信息。然而,这并不意味着正在计算的函数的输出不显示敏感信息。举一个极端的例子,假设两个人计算他们的平均工资。确实,只有平均值才会输出,但是给定一个人自己的工资和两个工资的平均值,他们可以得到另一个人的确切工资。因此,仅仅使用MPC并不意味着解决了所有的隐私问题。相反,MPC保证了计算过程的安全,由于隐私问题,应该和不应该计算什么函数的问题仍然需要解决。在某些情况下,例如阈值密码学,这个问题不是问题(因为假设密钥是安全的,密码学函数的输出不会显示密钥)。然而,在其他情况下,可能就不那么清楚了。
<一个name="body-4">
安全性的定义似乎非常严格,因为不容忍对抗成功,协议应该表现得像一个受信任的第三方正在执行计算。因此,人们可能会怀疑,在这个定义下是否可能获得安全协议,如果可能,那么针对哪些分布式计算任务。也许令人惊讶的是,已经建立了强大的可行性结果,证明了事实上,任何分布式计算任务(函数)可以在恶意对手存在的情况下安全计算。我们现在简要说明这些结果中最核心的部分。让n表示参与方的数量,让t表示可能被损坏的一方数量的界限(损坏方的身份是未知的):
在前面描述的并发组合设置中,还证明了任何函数都可以安全计算。<年代up>6一个>,<一个href="#R8">8一个>年代up>
总之,安全的多方协议适用于任何分布式计算任务。这一事实提供了它的巨大潜力——任何需要计算的东西都可以安全地计算!然而,我们强调,上述的可行性结果是理论这意味着他们证明了这在原则上是可能的。他们没有考虑实际的效率成本;这些将在后面提到。
我们用一个警告来结束这一节。在特定的模型中,以及在加密硬度和/或设置假设下,验证了该方法的可行性。描述这些细节超出了本文的讨论范围,但重要的是要意识到需要考虑这些细节。
<一个name="body-5">
在过去的三十年中,许多不同的技术被开发出来,用于构造具有不同属性和不同设置的MPC协议。提及所有的技术已经超出了本文的范围,我们强烈推荐阅读<年代up>15一个>年代up>为MPC写得非常好和友好的介绍,如主要技术的调查。然而,我们将提供几个简单的例子来说明MPC协议是如何构造的,以便说明它是如何工作的。
<年代trong>沙米尔秘密共享。年代trong>面向诚实多数的MPC协议通常使用秘密共享作为基本工具。因此,我们将从简要描述沙米尔的秘密分享计划开始。<年代up>34一个>年代up>
秘密分享方案解决了交易商希望分享秘密的问题年代在n党,使任何子集t+ 1或更多的方可以重建秘密,但没有子集t否则就会有更少的人知道这个秘密。满足这些要求的方案称为(t+ 1) -外,n)秘密共享方案.
外,n)秘密共享方案
沙米尔的秘密分享计划利用了这样一个事实t二维平面上的+ 1个点(x1年代ub>,y1年代ub>),…,(xt+ 1年代ub>,yt+ 1年代ub>)具有独特的x<年代ub>我年代ub>,存在一个唯一的多项式问(x)最多是学位t这样问(x<年代ub>我年代ub>)=y<年代ub>我年代ub>对于每一个我.此外,有效地重构多项式是可能的问(x),或任何具体的点。一种方法是用拉格朗日基多项式ℓ<年代ub>1年代ub>(x),…,ℓ<年代up>t(x),其中通过计算进行重构<我mg alt="cacm6401_a.gif" src="https://dl.acm.org/cms/attachment/f0f9da7c-8905-47ff-9749-9817cfa13369/cacm6401_a.gif">.从这里开始,我们假设所有的计算都在有限域Z内<年代ub>p,对于质数p>n.
既然如此,为了分享一个秘密年代,庄家随机选择一个多项式问(x)最多是学位t在约束条件下问(0) =年代.(具体地说,发牌人设一个0年代ub>=年代选择随机系数一个1年代ub>、……一个<年代ub>t年代ub>∈Z<年代ub>p,集<我mg alt="cacm6401_b.gif" src="https://dl.acm.org/cms/attachment/f43ddaff-4ff1-4d8b-a387-185e7972b789/cacm6401_b.gif">然后,对于每一个我= 1,…,n,经销商提供我有份额的一方y<年代ub>我年代ub>=问(我);这就是为什么我们需要p>n,这样双方就可以分到不同的份额。由any的子集重构t党的工作原理是简单地对多项式进行插值计算问(x),然后推导年代=问(0),虽然t+ 1方可以完全恢复年代,这一点不难证明任何的子集t或者更少的人无法了解年代.这是由于他们已经t或者说多项式上的点更少,所以存在一个经过这些点的多项式和(0,年代)尽可能地年代∈Z<年代ub>p.此外,因为多项式是随机的,所有多项式都是等可能的,所以所有的值年代∈Z<年代ub>p是等可能的。
<年代trong>诚实多数MPC与秘密共享。年代trong>大多数协议的第一步一般MPC(即可用于计算任何函数的协议)是将被计算的函数表示为一个布尔或算术电路。在基于秘密共享的诚实多数MPC中,算法电路(由乘法门和加法门组成)在一个有限域Z上<年代ub>p与p>n.我们注意到算术电路是图灵完备的,因此任何函数都可以用这种形式表示。参与MPC协议的各方都被提供在这个电路中,我们假设他们都可以安全地彼此通信。针对半诚实对手的协议(在这里查看恶意对手的情况下需要什么)由以下阶段组成:
为了计算度降阶步骤,我们使用了来自Damgård和Nielsen的一个想法<年代up>12一个>年代up>(我们在这里描述了基本的想法,尽管Damgård和尼尔森<年代up>12一个>年代up>有一个比我们这里描述的更有效的实现方法)。假设各方都持有两个独立的未知随机值的秘密共享r,第一次共享通过一个-2次的多项式t表示R2t(x)和第二次共享通过一个次-的多项式t表示R<年代ub>t年代ub>(x)。请注意,R2t(0) =R<年代ub>t年代ub>(0) =r.然后,每一方都可以在本地计算自己的份额t多项式d(x)=c(x) - - -R2t(x)通过设置d(我)=c(我) - - -R2t(我)。请注意,这两个c(x),R2t(x)为2度t.接下来,各方重建d(0) =一个(0)。b(0) -r通过将他们所有的股份转让给其他各方。最后,我所有人的聚会我= 1,…,n计算它在输出线上的份额为c '(我)=R<年代ub>t年代ub>(我)+d(0)。
在过去的三十年中,许多不同的技术被开发出来,用于构造具有不同属性和不同设置的MPC协议。
观察到c '(x)是程度的t作为R<年代ub>t年代ub>(x)是程度的t,通过添加一个常数来定义d(0)R<年代ub>t年代ub>(x)。接下来,c '(0) =一个(0)。b(0)R<年代ub>t年代ub>(0) =r而且d(0) =一个(0)。b(0) -r;因此r当值相加时消掉。因此,双方持有有效的(t+ 1)的-n根据需要,秘密共享输入导线上的值的乘积。此外,请注意值d(0)向各方披露的信息并不泄露任何信息,因为R<年代ub>t年代ub>(x完美地掩盖了的所有值c(x),特别是它掩盖了值一个(0)。b(0)。
还需要说明各方如何生成两个独立的未知随机值的秘密共享r通过2次多项式t而且t.这可以通过我派对,为了所有人我= 1,…,n,扮演庄家并分享一个随机值r<年代ub>我年代ub>通过一个2阶t多项式R我2t(x)和通过学位-t多项式R我t(x)。然后,在从各方获得该等股份后,我所有人的聚会我= 1,…,n定义其股份R2t(x),R<年代ub>t年代ub>(x)通过计算<我mg alt="cacm6401_d.gif" src="https://dl.acm.org/cms/attachment/90f39f60-af73-4916-a08d-765a8ca2b736/cacm6401_d.gif">而且<我mg alt="cacm6401_e.gif" src="https://dl.acm.org/cms/attachment/d367f970-83e7-45f6-b4e0-10894e40ba45/cacm6401_e.gif">.因为各方都贡献了秘密随机值r1年代ub>、……r<年代ub>n年代ub>我们有这个<我mg alt="cacm6401_f.gif" src="https://dl.acm.org/cms/attachment/66324671-c74c-4344-b6a8-81f485797ff6/cacm6401_f.gif">因此,没有任何一方知道r.
这个协议是安全的semi-honest对手只要小于n/2方被破坏。这是因为在计算过程中,双方看到的唯一价值是秘密股份(对所隐藏的价值没有任何透露),并且是公开的d(0)由于每次使用的是独立的随机共享,这些值没有显示关于线路上实际值的任何信息。注意,为了实现安全存在恶意的敌人谁可能偏离协议规范,就有必要利用不同的方法来防止欺骗。见Beerliová-Trubíniová和Hirt<年代up>4一个>年代up>, Chida等,<年代up>10一个>年代up>古川和林德尔<年代up>16一个>年代up>下面是一些关于如何在恶意对手存在的情况下有效实现安全性的示例。
<年代trong>私人设置的十字路口。年代trong>前面我们描述了一种方法一般可用于安全计算任何函数的安全计算。在许多情况下,这些通用方法实际上是最有效的(特别是在考虑恶意对手时)。然而,在某些情况下,正在被解决的函数的特定结构使我们能够找到更快的、量身定制的解决方案。在本节和下一节中,我们将展示这类函数的两个示例。
在私有集交集协议中,拥有私有值集的双方希望找到集合的交集,而不透露交集中的元素以外的任何信息。在某些情况下,需要得到交集的某些函数,例如它的大小。在这个问题上已经有了很多工作,针对半诚实和恶意对手的安全,以及不同的效率目标(少轮,低通信,低计算,等等)。在本节中,我们描述了Kolesnikov等人的协议背后的思想;<年代up>23一个>年代up>科列斯尼科夫等人的实际协议。<年代up>23一个>年代up>要复杂得多,但我们在它们的构造之下提出了概念上简单的想法。
阈值密码学的目的是使一组方能够执行密码学操作,而没有任何一方持有密钥。
一个伪随机函数F是一个键控函数,其性质是函数在已知输入上的输出看起来完全随机。因此,对于任何给定的元素列表x1年代ub>、……x<年代ub>n年代ub>,一系列的值F<年代ub>k年代ub>(x1年代ub>),…F<年代ub>k年代ub>(x<年代ub>n年代ub>)是随机的。尤其是,考虑到F<年代ub>k年代ub>(x<年代ub>我年代ub>)时,确定的值是不可行的x<年代ub>我年代ub>.在下面的简单协议中,我们使用一个名为无关伪随机函数的求值.这是一种特定类型的MPC协议,由第一方进行输入k第二方投入x,另一方接收F<年代ub>k年代ub>(x),而第一方对此一无所知x(注意,第二方会学到F<年代ub>k年代ub>(x)但除此之外别无其他;特别是,k仍然是秘密)。可以用多种方式构建这样的原语,我们在这里不进行描述。
现在,考虑有各自私人元素集的双方;表示他们x1年代ub>、……x<年代ub>n年代ub>而且y1年代ub>、……y<年代ub>n年代ub>(为简单起见,我们假设它们的列表大小相同,尽管不需要这样做)。然后,协议进行如下操作:
协议只透露了交集,因为第一方什么也不知道y1年代ub>、……y<年代ub>n年代ub>从无关伪随机函数的值中,第二方对的值一无所知x<年代ub>j年代ub>它们不在交集中因为伪随机函数隐藏了原像的值。因此,这在半诚实模型中是安全的。在恶意模型中实现安全性更具挑战性。例如,恶意对手可能对第一个元素和后面的元素使用不同的键,然后得到的结果是值y1年代ub>当且仅当它是第二方列表的第一个元素时,则在输出中。
目前最高效的私有集交集协议使用先进的哈希技术,可以在几秒钟内处理数百万项。<年代up>23一个>,<一个href="#R31">31一个>,<一个href="#R32">32一个>年代up>
阈值加密。年代trong>阈值密码学的目的是使一组方能够执行密码学操作,而没有任何一方持有密钥。这可以用来确保事务上有多个签署人,或者通过在不同的设备上分散密钥共享来保护密钥不被窃取(因此攻击者必须破坏所有设备才能了解密钥)。我们为两方RSA演示了一个非常简单的协议,但警告说,对于更多的方(和其他方案),它要复杂得多。
RSA是一种带有public-key (e,N)及私钥(d,N)。RSA的基本函数是y=x<年代up>e年代up>国防部N,其逆函数为x=y<年代up>d年代up>国防部N.RSA通过填充消息和其他技术用于加密和签名。这里,我们涉及到生RSA函数,并展示如何在双方之间安全地计算逆,其中任何一方都不能计算函数本身。为了达到这一目的,该制度的设立是由第一方持有(d1年代ub>,N)及持有(d2年代ub>,N),d1年代ub>而且d2年代ub>在约束条件下是随机的d1年代ub>+d2年代ub>=d.(更正式地说,指数的顺序为N) -欧拉函数-因此值d1年代ub>,d2年代ub>∈Z<年代ub>(N)年代ub>在约束条件下是随机的d1年代ub>+d2年代ub>=d国防部(N))。以便安全地计算y<年代up>d年代up>国防部N,第一方计算x1年代ub>=yd1年代up>国防部N,另一方计算x2年代ub>=yd2年代up>国防部N,这些值在它们之间交换。然后,双方计算x=x1年代ub>·x2年代ub>国防部N,通过检查输出是否正确x<年代up>e年代up>=y国防部N,如果是则输出x.注意这个计算是正确的,因为
<我mg alt="ueq01.gif" src="https://dl.acm.org/cms/attachment/ef5c766f-f83b-4b69-93b3-d0eeeaeca03e/ueq01.gif">
此外,观察给定的输出x和它分享d1年代ub>私有指数,第一方可以计算x2年代ub>=y / yd1年代ub>国防部N(这是正确的,因为x2年代ub>=yd2年代ub>=yd1年代ub>+d2年代ub>- d<年代ub>1年代ub>=y / yd1年代ub>国防部N)。这意味着第一方只从协议的输出中学习到任何东西,因为它可以从自己的输入和输出中自行生成它在协议中接收到的消息。
我们强调,成熟的阈值密码学支持涉及多方的仲裁批准(例如,要求(t+ 1)的-n各方签署,并维护任何子集的安全t损坏的党派)。这需要额外的工具,但也可以非常有效地完成;看到Shoup博士<年代up>35一个>年代up>和引用。最近,由于阈值ECDSA在保护加密货币方面的应用,人们对它产生了浓厚的兴趣。<年代up>14一个>,<一个href="#R17">17一个>,<一个href="#R26">26一个>,<一个href="#R27">27一个>年代up>
Dishonest-majority MPC。年代trong>在前面,我们描述了一个MPC通用协议,只要对手不能破坏超过少数当事人,该协议就是安全的。在多数不诚实的情况下,包括重要的两党(其中一方腐败)的特殊情况,需要完全不同的方法。从海狸等人的最初协议开始,在这个方向上已经进行了大量的工作。<年代up>2一个>年代up>, Goldreich等人。<年代up>18一个>年代up>,和姚明<年代up>37一个>年代up>那是关于可行性的,包括最近很多关于实现具体效率的工作。这方面的工作太多了,任何试图在这里描述它的尝试都将是严重的不公正。因此,我们建议读者参考埃文斯等人。<年代up>15一个>年代up>参阅主要方法的描述,包括GMW不经意转移方法,<年代up>18一个>,<一个href="#R21">21一个>年代up>的电路,<年代up>2一个>,<一个href="#R37">37一个>年代up>cut-and-choose,<年代up>28一个>年代up>SPDZ,<年代up>13一个>年代up>TinyOT,<年代up>29一个>年代up>MPC在头上,<年代up>22一个>年代up>和更多。(我们要强调的是,对于每一种方法,我们都进行了许多后续工作,取得了越来越好的效率。)
<年代trong>高效实用的MPC。年代trong>前20年的MPC研究主要集中在可行性:如何定义和证明多种对抗和网络模型的安全性,在什么样的密码和设置假设下可以实现MPC,等等。在接下来的十年中,我们看到了大量关于如何使MPC变得越来越高效的研究。这个过程的第一步是纯算法的,重点是减少密码原语的开销。在此之后,考虑了其他有重大影响的问题:内存和通信,硬件指令(如AES-NI)的使用,等等。此外,由于大多数通用协议都需要被计算函数的电路表示,而电路很难手动构造,因此还构造了从代码到电路的专用MPC编译器。这些编译器对MPC的特殊属性非常敏感。例如,在许多协议中,XOR门的计算几乎是免费的,<年代up>24一个>年代up>相比之下,和/或门的成本。因此,这些编译器减少了AND门的数量,甚至以牺牲更多的XOR门为代价。此外,一些协议的计算成本是由电路大小决定的,而另一些协议则是由电路深度决定的。因此,一些编译器旨在生成尽可能小的电路,而另一些编译器旨在生成具有最低深度的电路。参见Hastings等人。<年代up>19一个>年代up>查看MPC通用编译器及其可用性的调查。这些进步的结合使得MPC在短短几年内的性能提高了许多数量级,为MPC在实践中用于解决各种各样的问题铺平了道路。参见Evans等人。<年代up>15一个>年代up>(第4章)描述了这些进步中最重要的几个。
<一个name="body-6">
关于MPC可以发挥作用的理论例子有很多。它可用于以保护隐私的方式比较禁飞名单,为医疗和其他目的进行私人DNA比较,收集统计数据而不透露任何信息,除了汇总结果,还有很多其他用途。直到最近,关于MPC的潜在好处,我们要说的几乎都是这些使用的理论例子。然而,今天的情况大不相同。MPC现在正被用于多个真实的用例中,而且使用量正在快速增长。
我们将用一些实际部署的MPC应用程序示例来结束本文。
<年代trong>波士顿工资差距。年代trong>25一个>年代up>2017年,波士顿妇女劳动力委员会使用MPC计算了114家公司166,705名员工的薪酬统计数据,约占大波士顿地区劳动力的16%。MPC的使用至关重要,因为考虑到隐私问题,公司不会提供原始数据。结果显示,波士顿地区的性别差距甚至比美国劳工统计局此前估计的还要大。这是一个有力的例子,证明了MPC可以用于社会公益。
<年代trong>广告转换。年代trong>20.一个>年代up>为了计算从广告到实际购买的准确转化率,谷歌计算大小显示广告的人名单与实际购买广告商品的人名单之间的交集。当商品不是在网上购买,因此无法跟踪显示的广告的购买连接时,谷歌和支付广告的公司必须共享各自的列表,以便计算交集大小。为了在计算时只显示交集的大小,谷歌使用了一种协议来保护隐私集交集。Ion等人描述了谷歌使用的协议。<年代up>20.一个>年代up>尽管这个协议还远远不是目前已知的最有效的协议,但它很简单,满足了他们的计算需求。
<年代trong>用于加密密钥保护的MPC。年代trong>38一个>年代up>如前所述,阈值密码学提供了在不将私钥保存在任何单一位置的情况下执行密码学操作(如解密和签名)的能力。许多公司正在使用阈值加密技术作为传统硬件的替代方案来保护加密密钥。在这个应用程序中,MPC不是在持有私有信息的不同方之间运行的。相反,一个单一的组织使用MPC来生成密钥并计算加密操作,而密钥从来没有在一个单独的地方,它可能被窃取。通过将密钥股份放置在不同的环境中,对手很难窃取所有的股份并获得密钥。在这种情况下,前面描述的主动模型是最合适的。在此上下文中,MPC的另一个用途是保护用于保护加密货币和其他数字资产的签名密钥。在这里,定义一般的法定人数的能力支持对严格的政策进行加密执行,以批准金融交易,或者在托管提供者和客户机之间共享密钥。
<年代trong>政府合作。年代trong>39一个>年代up>不同的政府部门拥有公民的信息,将这些信息关联起来可以获得显著的好处。然而,汇集私人信息所涉及的隐私风险可能会阻止政府这么做。例如,2000年,加拿大取消了一个收集公民信息的项目,因为有人批评他们正在建立一个“老大哥数据库”。利用MPC,爱沙尼亚收集了加密的所得税记录和高等教育记录,以分析在学位期间工作的学生是否比那些只专注于学习的学生更容易不及格。通过使用MPC,政府保证了所有的数据保护和税收保密法规都得到了遵守,而不会失去数据效用。
<年代trong>保护隐私分析。年代trong>40一个>年代up>机器学习在许多领域的使用正在迅速增加。MPC可以用来对数据运行机器学习模型,而不向数据所有者透露模型(包含宝贵的知识产权),也不向模型所有者透露数据。此外,为了反洗钱、风险评分计算等目的,还可以在组织之间进行统计分析。
<一个name="body-7">
安全多方计算是研究长期博弈中成功的一个极好的例子。<年代up>36一个>年代up>在MPC研究的最初20年里,没有任何应用,MPC是否会被使用还是个问题。在过去的十年中,MPC可用性的状态经历了彻底的转变。在这段时间里,MPC不仅变得足够快,可以在实践中使用,而且得到了业界的认可,并实现了向实际部署的技术的过渡。MPC仍然需要大量的专业知识来部署,并且需要更多的研究突破来使安全计算在大型数据集和复杂问题上具有实用性,并使其易于为非专家使用。过去几年的进展和大量的应用研究正在产生,描绘了MPC在实践中的积极前景。与此同时,MPC的深入理论工作继续进行,确保应用的MPC解决方案建立在坚实的科学基础上。
<我mg alt="uf1.jpg" src="https://dl.acm.org/cms/attachment/9fc91c6c-4ea4-4f29-843d-a11ea91a5e85/uf1.jpg">数字观看作者在独家报道中讨论这项工作通信视频。<一个href="//www.eqigeno.com/videos/secure-multiparty-computation">//www.eqigeno.com/videos/secure-multiparty-computation一个>年代trong>
回到顶部一个>
1.针对隐蔽对手的安全:针对现实对手的有效协议。j . Cryptol。23, 2 (2010), 281-343移行细胞癌2007)。
<一个n一个me="R2">2.比弗,米卡利,罗加韦,P.安全协议的整数复杂度。在22<年代up>nd年代up>获得STOC(1990), 503 - 513。
<一个n一个me="R3">3.Ben-Or, M., Goldwasser, S., Wigderson .非密码容错分布式计算的完整性定理。在20.<年代up>th年代up>获得STOC(1988), 1 - 10。
<一个n一个me="R4">4.Beerliová-Trubíniová,张晓东,张晓东。线性通信复杂度的完全安全MPC。在移行细胞癌2008(2008),施普林格(LNCS 4948), 213-230。
<一个n一个me="R5">5.多方加密协议的安全性和组成。j . Cryptol。13, 1(2000), 143-202。
<一个n一个me="R6">6.通用组合安全性:加密协议的新范式。在42<年代up>nd年代up>foc(2001), 136 - 145。
<一个n一个me="R7">7.Canetti, R., Herzberg, A.在存在瞬时故障的情况下维护安全性。在密码94(1994), Springer-Verlag (LNCS 839), 425-438。
<一个n一个me="R8">8.Canetti, R., Lindell, Y., Ostrovsky, R., Sahai, A.普遍可组合的两方和多方计算。在34<年代up>th年代up>获得STOC(2002), 494 - 503。<一个href="https://eprint.iacr.org/2002/140">http://eprint.iacr.org/2002/140一个>.
<一个n一个me="R9">9.乔姆,D. Crépeau, C. Damgård, I.多方无条件安全协议。在20.<年代up>th年代up>获得STOC(1988), 11-19。
<一个n一个me="R10">10.Chida, K., Genkin, K., Hamada, K., Ikarashi, D., Kikuchi, R., Lindell, Y., Nof, A.针对恶意对手的快速大规模诚实多数MPC。在密码2018(2018),施普林格(LNCS 10993), 34-64。
<一个n一个me="R11">11.克里夫,R.当一半的处理器都有故障时,掷硬币的安全性限制。在18<年代up>th年代up>获得STOC(1986), 364 - 369。
<一个n一个me="R12">12.Damgård, I., Nielsen, J.可伸缩和无条件安全的多方计算。在密码2007(2007),施普林格(LNCS 4622), 572-590。
<一个n一个me="R13">13.Damgård, I.,帕斯特罗,V., Smart, N.P, Zakarias, S.从某种同态加密的多方计算。在密码2012(2012),施普林格(LNCS 7417), 643-662。
<一个n一个me="R14">14.Doerner, J., Kondi, Y., Lee, E., Shelat, A. ECDSA假设的阈值ECDSA:多方案例。在2019年IEEE安全与隐私研讨会(2019), 1051 - 1066。
<一个n一个me="R15">15.埃文斯,D.;科列斯尼科夫,V.;安全多方计算的实用介绍.现在出版社,2018。
<一个n一个me="R16">16.Furukawa, J, Lindell, Y.三分之二的诚实-大多数的MPC恶意对手几乎以半诚实为代价。在26<年代up>th年代up>ACM CCS(2019), 1557 - 1571。
<一个n一个me="R17">17.Gennaro, R, Goldfeder, S.带有快速无信任设置的快速多方阈值ECDSA。在25<年代up>th年代up>ACM CCS 2018(2018), 1179 - 1194。
<一个n一个me="R18">18.O.戈德里奇,米卡利,S.威格森,A.如何玩任何心理游戏-诚实多数协议的完整性定理。在19<年代up>th年代up>获得STOC(1987), O. golddreich主编密码学基础-基本应用(2004),剑桥大学出版社,218-229。
<一个n一个me="R19">19.Hastings, M., hemway, B., Noble, D., Zdancewic, S. SoK:用于安全多方计算的通用编译器。在2019年IEEE安全与隐私研讨会(2019), 1220 - 1237。
<一个n一个me="R20">20.Ion, M., Kreuter, B., Nergiz, E., Patel, S., Saxena, S., Seth, K., Shanahan, D., Yung, M.私有交叉和协议及其用于归因聚合Ad转换的应用。IACR密码学ePrint档案,《报告2017》(2017),738。
<一个n一个me="R21">21.伊沙伊,Y., Kilian, J., Nissim, K., Petrank, E.有效扩展不经意转移。在密码2003(2003),施普林格(LNCS 2729), 145-161。
<一个n一个me="R22">22.Ishai, Y., Prabhakaran, M., Sahai, A.建立无关传输的密码学-有效。在密码2008(2008),施普林格(LNCS 5157), 572-591。
<一个n一个me="R23">23.Kolesnikov, V., Kumaresan, R., Rosulek, M., Trieu, N.高效批量无关PRF及其在私有集合交集上的应用。在23<年代up>理查德·道金斯年代up>ACM CCS(2016), 818 - 829。
<一个n一个me="R24">24.改进的乱码电路:自由异或门及其应用。在ICALP 2008(2008),施普林格(LNCS 5126), 486-498。
<一个n一个me="R25">25.Lapets, A., Jansen, F., Albab, k.d., Issa, R., Qin, L., Varia, M., Bestavros, A.用于评估和解决经济不平等的可访问的隐私保护网络数据分析。在指南针2018(2018), 48:1-48:5。
<一个n一个me="R26">26.林德尔,Y.快速安全的两方ECDSA签名。在密码2017(2017),施普林格(LNCS 10402), 613-644。
<一个n一个me="R27">27.Lindell, Y., Nof, A.具有实际分布式密钥生成和加密货币托管应用的快速安全多方ECDSA。在25<年代up>th年代up>ACM CCS(2018), 1837 - 1854。
<一个n一个me="R28">28.Lindell, Y., Pinkas, B.在恶意对手存在的情况下,用于安全两方计算的有效协议。在EUROCRYPT(2007),施普林格,52 - 78。
<一个n一个me="R29">29.Nielsen, j.b., Nordholt, p.s., Orlandi, C., Burra, S.S.一种实用的主动安全两方计算的新方法。在密码2012(2012),施普林格(LNCS 7417), 681-700。
<一个n一个me="R30">30.Ostrovsky, R, Yung, M.如何抵御移动病毒攻击。在10<年代up>th年代up>PODC(1991), 51-59。
<一个n一个me="R31">31.Pinkas, B., Rosulek, M., Trieu, N., Yanai, A.聚光灯:稀疏OT扩展的轻量级私有集合交集。在密码2019(2019),施普林格(LNCS 11694), 401-431。
<一个n一个me="R32">32.Pinkas, Schneider, T, Zohner, M.基于OT扩展的可扩展私有集交集。隐私权第21条(2018), 1-35。
<一个n一个me="R33">33.拉宾,T.,本-奥尔,M.可验证的秘密共享和诚实多数的多方协议。在21<年代up>圣年代up>获得STOC(1989), 73 - 85。
<一个n一个me="R34">34.沙米尔,a,如何分享秘密。CACM 22, 11(1979), 612-613。
<一个n一个me="R35">35.实用阈值签名。在EUROCRYPT 2000(2000),施普林格(LNCS 1807), 207-220。
<一个n一个me="R36">36.研究的长期游戏。CACM 629(2019), 7。
<一个n一个me="R37">37.如何产生和交换秘密。在27<年代up>th年代up>foc(1986), 162 - 167。
<一个n一个me="R38">38.的技术。<一个href="http://www.unboundtech.com">www.unboundtech.com一个>), Sepior (<一个href="http://sepior.com">sepior.com一个>)和Curv (<一个href="http://www.curv.co">www.curv.co一个>)。
<一个n一个me="R39">39.Sharemind,<一个href="https://sharemind.cyber.ee">https://sharemind.cyber.ee一个>.
<一个n一个me="R40">40.二元性,<一个href="https://duality.cloud">https://duality.cloud一个>.
耶胡达Lindell年代trong>(<一个href="mailto:lindell@biu.ac.il">lindell@biu.ac.il一个>他是以色列巴伊兰大学计算机科学系的教授,也是Unbound Tech的首席执行官和联合创始人。
©2021 0001 - 0782/21/1 ACM年代trong>
允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限<一个href="mailto:permissions@acm.org">permissions@acm.org一个>传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2021 ACM, Inc.
没有发现记录