返回
安全多方计算

Webster
•
密码学、MPC
什么是安全多方计算?
安全多方计算(MPC),也称为隐私计算,允许多个参与方在保持各自输入信息私密的前提下,共同计算一个函数。这在涉及敏感数据的场景下非常有用。例如,一家公司的员工可能希望在不泄露个人具体收入的情况下,计算平均工资。
为什么 MPC 很有用?
虽然私下计算平均工资看起来微不足道,但 MPC 能够处理更具挑战性的问题。例如,在医疗保健领域,医院可能希望在不共享个人患者数据的情况下合作开展研究项目。MPC 使他们能够在不向其他机构泄露数据的前提下对数据进行计算。
在金融领域,银行可能希望整合资源对潜在借款人进行信用检查,但又不希望暴露各自客户的隐私数据。在这里,MPC 可以在不披露数据的情况下实现安全信用检查。
科技行业也可以在边缘设备上利用 MPC。例如,屋主拥有的智能温度计可能希望根据所有设备的用户行为,共同设计一个智能空调日程表。然而,可能由于隐私安全问题,不允许任何单一的智能温度计直接共享其收集的用户行为数据。
MPC 的常见方法有哪些?
MPC 的常见方法大致可分为基于噪声的方法和非基于噪声的方法。差分隐私代表了基于噪声的方法,而混淆电路、同态加密和秘密共享则是典型的非基于噪声的方法。
差分隐私
差分隐私通常在共享关于多个个体的信息时使用。它是隐私的数学定义,确保输入数据的细微修改不会导致推导出任何个体的信息。这可以通过向输入数据、模型参数或结果中添加噪声来实现。
假设我们想通过由参数 $$\theta$$ 参数化的函数 $$f$$ 计算输入 $$x_1, x_2,x_3...x_n$$ 上的输出 $$y$$:$$y = f_\theta(x_1, x_2, ..., x_n)$$。然后可以通过向输入添加噪声:$$y = f_\theta(x_1+r_1, x_2+r_2,...,x_n+r_n)$$,或者向参数添加噪声:$$y = f_{\theta+r_\theta}(x_1, x_2,...,x_n)$$,亦或是向结果本身添加噪声:$$y = f_\theta(x_1, x_2,...,x_n) + r$$,来实现差分隐私。
混淆电路
混淆电路实现了通过逻辑门实现的函数的安全双方计算。该过程包括参与方 A 生成并混淆(加密)电路,并将其发送给参与方 B。参与方 B 在参与方 A 的协助下混淆其输入,而无需暴露其输入。参与方 B 获得输出并将其发送回参与方 A 进行解读。
同态加密
同态加密比混淆电路更直观。假设 $$y = f(x_1, x_2, ..., x_n)$$,其中 $$f$$ 是我们想要计算的函数,而 $$x_1, ..., x_n$$ 是输入。同态加密函数 $$enc$$ 满足 $$enc(f(x_1, x_2, ..., x_n)) = f(enc(x_1), enc(x_2), ..., enc(x_n))$$。这意味着函数的加密输出等于在加密输入上计算的函数输出。
秘密共享
秘密共享涉及将输入拆分为多个部分并将其分发给多个参与方。因此,没有任何单一参与方拥有足够的信息来辨识输入,但他们可以通过协作进行某些计算。例如,如果我们向参与方 $$i$$ 分发 $$x_i$$ 和 $$y_i$$,使得 $$x = x_1 + x_2 + ... + x_n$$ 并且 $$y=y_1 + y_2 + ... + y_n$$,参与方 $$i$$ 可以在本地计算 $$z_i = x_i + y_i$$。通过集体协作,他们可以计算出 $$z = z_1 + z_2 + ... + z_n = x + y$$,从而使多个参与方在不了解 $$x$$ 或 $$y$$ 真实值的情况下共同计算出 $$x+y$$ 的值。