MPC安全模型
MPC的目标是让一组参与者在不透露个人隐私信息的情况下,完成一个功能函数的计算,并得到最终的计算结果。本文将首先介绍理想-现实范式,它是MPC安全定义的核心概念,之后围绕MPC中常用的两种敌手模型进行展开叙述。
1、理想-现实范式(Real-Idea Paradigm)
定义安全性的一种方法便是列出一个违反安全性的“行为清单”,比如,敌手不能学习另一方输入的某个谓词、敌手不应诱导诚实方进行非法输入、敌手不应使其输入依赖诚实方的输入等。但这种方法是枯燥且容易出错的,同时这份“行为清单”能否完全覆盖所有违反安全性的行为也不得而知。理想-现实范式通过引入“理想世界”来解决这一问题,其隐含了所有的安全性保障,并定义了相关的安全性。Goldwasser和Micali对概率加密的定义被广泛认为是使用这种方法来定义和证明安全性的第一个例子,尽管他们使用了不同的术语。
理想世界 在理想世界中,各方隐私地将其输入发送给完全可信方T来计算函数F,称之为功能函数。每一方Pi拥有相关联的输入Xi,这些输入被发送给T,T计算F(X1,X2,…,Xn)并将结果返回给各个数据所有方。
我们可以想象敌手试图攻击理想世界的过程。敌手可以控制任何一个参与方Pi,但不能控制T(因为T被描述为可信方)。理想世界的简单性使得我们可以很容易理解这种攻击的影响。
这时我们可以重新考虑我们的“清单”:
(1)显然,敌手只能学习到F(X1,X2,…,Xn),这是它唯一收到的消息;
(2)T提供给各个诚实方的输出都是一致且合法;
(3)敌手的选择输入是独立于诚实方的输入的。
尽管说理想世界很容易理解,但是完全信任的第三方显然是不可能存在的,所以我们利用理想世界作为基准来判断实际协议的安全性。
现实世界 在现实世界中,没有完全值得信赖的一方。事实上,各方之间都使用协议来进行通信。协议π为每一方Pi指定了“下一条消息”的计算函数πi。该函数将安全参数、隐私输入,随机数和该方所收到的消息列表作为输入,πi输出下一条消息和消息目的地或者在某些特殊输入下指示某一方终止。
在现实世界中,敌手可以腐败任何一方,如果协议一开始就腐败某一方那么可以认为该方就是敌手。根据威胁模型,腐败方可能遵守协议或者进行任意的操作。直观地说,如果敌手在现实世界中实现的任何效果可以由理想世界中的相应敌手实现,那么现实世界协议π被认为是安全的。换言之,协议的目标是在现实世界中提供与理想世界中相当的安全性。
2、半诚实安全
半诚实敌手又称诚实且好奇的敌手,即腐败方诚实地执行协议,但他们会试图从其收到的信息中尽可能多地学习。请注意,这可能涉及几个相互勾结的腐败方,他们将自己收到的消息汇集在一起以了解信息。半诚实的对手也被认为是被动的,因为他们除了试图通过观察协议执行情况来学习私隐私信息外,不能采取任何行动。因此半诚实的对手通常也被称为诚实但好奇的对手。
参与方的视图(view)包括其隐私输入,随机数和接受到的消息列表,敌手的视图包括了所有腐败方的视图。敌手从运行的协议中所学到的任何东西都必须是其视图的有效可计算函数。也就是说,我们只需要考虑敌手只是输出其整个视图的“攻击”。
按照理想-现实范式,安全性意味着这样的攻击也可以在理想世界中进行。也就是说,为了使协议安全,在理想世界中必须产生可能与现实世界中敌手的视图无法区分的东西。注意,在理想世界中,敌手的视图只包括发送到的T输入和从T接受到的输出。因此,理想世界的对手必须能够使用这些信息生成开起来像真实世界的视图。我们将这种理想世界的敌手称为模拟器,证明这样一个模拟器的存在就证明了敌手在现实世界中没有什么是在理想世界中无法完成的。
更正式地说,对于协议π和功能函数F,假设是C一组被腐坏的参与方,Sim为模拟器算法,我们定义如下变量:
3、恶意安全
恶意安全的敌手,可能会导致各方随意偏离协议所规定的内容,试图违反安全性。恶意敌手在分析协议执行的时候具有半诚实敌手所有的能力,但也可能在协议执行期间采取其想要的任何行动。注意,这包含了一个可以控制、操纵和在网路上任意注入消息的敌手。与之前一样,此设置中的安全性是根据理想世界进行定义的,但需要考虑额外的两个问题:
(1)对诚实输出的影响。当腐败方偏离协议执行时,诚实方的输出可能产生影响。想象一个敌手导致两个诚实的参与方输出不同的结果,而在理想世界中,所有参与方都得到相同的输出。在以前的定义中,这种情况有点微不足道,虽然该定义确实将现实世界的输出与理想世界的输出进行了比较,但这些输出不依赖于敌手(一组腐败方)。此外,我们不能也不应该保证腐败方的最终输出,因为恶意的参与方可以随心所欲地输出。
(2)提取。诚实的各方根据明确定义的输入执行协议,在理想世界中也可以将这些输入给。相比之下,恶意方的输入在现实世界中没有定义明确,这导致了在理想世界中应该将什么输入给的问题。在一个安全的协议中,敌手在现实世界中所能做的一切,在理想世界中也应该通过为腐败方选择合适的输入来实现。因此,我们让模拟器为腐败方选择输入,模拟的这一过程被称为提取。这是因为模拟器从真实世界的敌手那里提取有效的理想世界输入,“解释”输入在真实世界的效果。在大多数结构中,考虑黑盒模拟就足够了,其中模拟器只能访问真实世界敌手的预言机。
当A表示敌手的程序时,我们用corrupt(A)表示被腐坏的参与方,并用corrupt(Sim)表示被理想敌手腐坏的参与方。正如半诚实安全性定义的那样,这里也对理想世界和现实世界的视图进行了定义,并将安全性定义为使这些视图不可区分。