第 7 章 通过 Beaver 三元组实现 MPC
无论是BGW协议、GMW协议,还是第1章所介绍的协议,可以发现:线性门(加法门、常数乘法门、常数加法门、异或门、非门)的开销很小,参与方仅需在本地进行计算即可;而非线性门(乘法门、与门)的开销很大,参与方需要两两进行交互,并调用较为复杂的子协议(例如OT、OLE)。
为了降低非线性门的计算开销,Beaver三元组(Beaver triple) [Beaver et al.]是一种被广泛采用的实用技术。它的基本思想是:将MPC协议分为在线阶段和离线阶段(预处理阶段),离线阶段生成与输入无关的相关随机数(指具有特定关系的随机值,即Beaver三元组),在线阶段通过消耗这些相关随机数来加速乘法门的计算。这样的设计模式可以将大部分开销转移到离线阶段,从而大大提升在线阶段的效率。
下面,本章的介绍采用模块化的方法:首先,将Beaver三元组的生成抽象为理想功能 \(\mathcal{F}_{\mathsf{triple}}\),在 \(\mathcal{F}_{\mathsf{triple}}\)-混合模型下构造高效的协议并进行安全性证明。然后,我们讨论如何生成Beaver三元组,即如何实现 \(\mathcal{F}_{\mathsf{triple}}\).
基于Beaver三元组的MPC协议
Beaver三元组
Beaver三元组由Beaver提出 [Beaver et al.], 它指的是秘密份额集三元组 \(([a], [b], [c])\),其中 \(a, b\) 为有限域 \(\mathbb{F}\) 上均匀随机选取的元素,满足 \(c = ab\).
为了叙述的简洁,我们先定义一些方便的符号来表示加法秘密分享的计算。我们用 \([x]\) 表示秘密 \(x \in \mathbb{F}\) 的秘密份额集,即 \([x] = (x_1,…,x_n)\),满足 \(x = x_1 + … x_n\). 我们采用与BGW协议类似的术语:参与方 \(P_i\) 分发 \(x\),指的是 \(P_i\) 均匀随机选择 \(x_1, …, x_n\) 满足 \(x = x_1 + … x_n\),然后将 \(x_\ell\) 发送给 \(P_\ell\). 当参与方获得了 \(x\) 的份额时,我们说参与方持有 \([x]\).
对于常数 \(\alpha \in \mathbb{F}\),我们定义如下的逐项加法、常数乘法和常数加法:
让我们看看Beaver三元组是如何实现乘法门的计算的。假设乘法门的输入 \(x, y\) 已经被秘密分享在 \(n\) 个参与方之中,每个参与方还持有Beaver三元组 \(([a], [b], [c])\) 中自己对应的份额,即参与方持有 \(([x], [y], [a], [b], [c])\),其中 \(x, y\) 是乘法门的输入,\(([a], [b], [c])\) 是Beaver三元组。
乘法门的计算分为如下三个步骤:
参与方本地计算 \([x] - [a] = [x - a], [y] - [b] = [y - b]\).
对上一步计算的份额进行秘密重建,所有参与方获得 \(d = x - a, \; e = y - b\).
参与方本地计算 \(d[b] + e[a] + [c] + de\),作为输出导线的份额。
首先,这样计算获得的结果是正确的。根据加法秘密分享的性质,我们有 \([xy] = [(d + a)(e + b)] = [de + db + ea + ab] = d[b] + e[a] + [c] + de\). 因此,\(d[b] + e[a] + [c] + de\) 就是 \(xy\) 的秘密份额集。关于隐私性,协议的第1和第3步都是本地计算,而在第2步中,参与方进行了秘密重建得到了 \(d = x - a, \; e = y - b\). 我们需要确保 \(x, y\) 不被泄露,协议确实满足了这一点,因为 \(a, b\) 都是均匀随机值,因此 \(d, e\) 也是均匀随机值,不会泄露任何信息。
与同样采用加法秘密分享的GMW协议相比,通过Beaver三元组实现的乘法门计算只需对两个值进行秘密重建,在半诚实模型下可以让所有参与方将秘密份额发给 \(P_1\),\(P_1\) 再将重建结果发给每个参与方,只需 \(O(n)\) 的通信量。而GMW协议中乘法门的计算需要参与方两两执行OLE,共 \(O(n^2)\) 个OLE. 由此可见,Beaver三元组显著降低了乘法门所需的通信量和计算量。
协议描述
根据以上计算乘法门的方法,我们很容易构造基于Beaver三元组的MPC协议,其加法门、常数乘法门以及输出重建的过程与GMW协议完全相同。完整的协议如图 7.1所示。
安全性证明
我们在 \(\mathcal{F}_{\mathsf{triple}}\)-混合模型下证明,上述协议对于静态半诚实敌手UC-安全实现了安全函数计算的理想功能 \(\mathcal{F}_{\mathsf{sfe}}\). 也就是说,我们假设参与方在协议的离线阶段通过请求 \(\mathcal{F}_{\mathsf{triple}}\) 获得了Beaver三元组。\(\mathcal{F}_{\mathsf{triple}}\) 的定义如图 7.2所示。
Beaver三元组的生成
本节,我们讨论一下Beaver三元组的生成方式。
基于可信第三方的方式
Beaver三元组 \(([a], [b], [c])\) 本质上是一种满足 \(c = ab\) 的相关随机数(Correlated Randomness),它与协议的输入是无关的。因此,在有可信第三方的场景下,可以由可信第三方执行理想功能 \(\mathcal{F}_{\mathsf{triple}}\) 的操作,将Beaver三元组分发给参与方。这是一种非常高效的Beaver三元组生成方式。具体而言,第三方执行以下操作:
随机选取 \(a, b \leftarrow_{\$} \mathbb{F}\),计算 \(c = ab\).
随机选取 \(a_1, b_1, c_1, …, a_n, b_n, c_n\),满足 \(a = a_1 + … + a_n, \; b = b_1 + … + b_n, \; c = c_1 + … +c_n\).
对所有 \(i \in [n]\),将 \(a_i, b_i, c_i\) 发送给 \(P_i\).
注意,这里的可信第三方需要满足:(1) 他是半诚实的;(2) 他不会与参与方串通。假设1保证了生成的Beaver三元组是正确的;而如果第三方与参与方互相串通,由于第三方知道 \(a, b, c\),计算乘法门时需要重建 \(d = x - a, \; e = y - b\),那么乘法门的输入 \(x, y\) 显然会被泄露。如果上述两个假设成立,那么协议是安全的,且可信第三方无法得到参与方的输入,因此这与“参与方直接将输入交给可信第三方”是不同的。
分布式生成方式
在某些场景下,如果找不到可信的第三方,那么就需要各个参与方分布式地生成Beaver三元组。在Beaver三元组 \(([a], [b], [c])\) 中,\(a, b\) 是均匀随机选取的,也就是说,参与方需要通过某种方式秘密分享一个均匀随机值,使得没有人知道被分享的随机值是什么。这与之前的情况不同,之前的秘密分享过程中,都存在一个秘密的持有者,它知道秘密并完成秘密份额的计算和分发。
这个问题的解决方法非常简单:只需让每个参与方 \(P_i\) 在本地均匀随机选择 \(a_i \leftarrow_{\$} \mathbb{F}\) 作为秘密份额,然后定义 \(a = a_1 + … + a_n\). 首先,只需有一个诚实方,那么 \(a\) 就是均匀随机的;其次,根据 \(a\) 的定义,秘密份额集 \(\{a_i\}\) 构成了 \(a\) 的正确的加法秘密分享。可以看出,参与方通过随机选择自己的份额隐式地定义了随机值 \(a\),而没有参与方可以知道 \(a\) 的值。同样地,参与方 \(P_i\) 均匀随机选择 \(b_i \leftarrow_{\$} \mathbb{F}\) 作为秘密份额,并且定义 \(b = b_1 + … + b_n\).
接下来,参与方还需要计算 \(c = ab\) 的秘密份额。这实质上就是一个乘法门的计算,参与方可以通过调用GMW协议的乘法门计算协议,在 \(\mathcal{F}_{\mathsf{OLE}}\)-混合模型下实现。注意到,每个乘法门需要消耗一个Beaver三元组,而分布式地计算一个Beaver三元组实质上就是计算了一个乘法门,显然,这样的方法无法降低协议的总开销。但是请读者注意,Beaver三元组是与协议输入无关的,因此参与方可以提前生成大量的Beaver三元组,将绝大部分开销转移到离线阶段,从而大大提升在线阶段的效率。
更具体而言,生成Beaver三元组的方式包括:基于OT的方式 [Gilboa, 1999; Dem et al., 2015],基于同态加密的方式 [Pullonen, 2012]等,它们本质上是高效地实现了底层的OLE协议。相关随机数的高效生成仍是一个广受关注的研究方向,我们将其作为读者的拓展阅读内容,这里不再展开。
本章思考题
思考一下Beaver三元组是否还有其他生成方法,这些方法的效率如何?同时,它们将引入什么额外的安全假设?
请思考在恶意安全模型中,如何快速高效地批量验证Beaver三元组的正确性?
除了Beaver三元组,是否还有其他安全多方计算原语可以使用类似的方法在离线阶段先进行预计算,从而大大减少在线阶段的开销?这些原语需要满足什么性质才可以将大部分开销转移到离线阶段?
学习笔记
记录协议细节、模拟器构造与图中记号对照。