1.6.1 安全多方计算
安全多方计算问题首先由图灵奖获得者、中国科学院院士姚期智教授于1982年提出,也就是著名的百万富翁问题:两个争强好胜的富翁Alice和Bob在街头相遇,如何在不暴露各自财富的前提下比较出谁更富有?安全多方计算是密码学的重要分支之一,目前主要用于解决各个互不信任的参与方之间的数据隐私和安全保护的协同计算问题,以实现在不泄露原始数据的条件下为数据需求方提供安全的多方计算[13,35,36]。为了让读者更容易理解安全多方计算,我们来看一个例子。
假设小明认为自己得了某种传染病A,但是还不确定。这时,他正好听说朋友小张有一个关于传染病A的相关血液数据库。如果小明把自己的血液测试数据发给小张,小张就可以通过这些数据判断小明是否得了传染病A。但是小明又不想让别人知道他得了传染病,所以直接把数据发给小张是不可行的,因为这样自己的隐私就被小张知道了。
那么,小明和小张如何在保证数据隐私的前提下实现这种计算呢?这就是安全多方计算。一般来说,安全多方计算有两个特点:一是两个(或多个)参与方进行基于他们各自私密输入信息的计算;二是他们都不希望除了自己以外的参与方知道自己的输入信息。目前,解决上述问题的方法如下。
假设存在可信任的中间方(或者服务提供商)能够保证隐私数据不泄露,然后各方把数据交给中间方(或者服务提供商)进行安全计算,但是这同时也是高风险的。对于上述案例来说,假设小王是值得信任的中间方,小明不信任小张,所以把自己的数据发给小王。小张也把自己的数据发给小王,小王通过计算验证,再把结果反馈给小张,这就完成了一次计算。但是小王到底能不能保证数据隐私安全实在是值得商榷的,所以有学者指出:“将针对特殊例子的安全多方计算拓展到通用的安全多方计算的方法是不切实际的。”如1.2节所述,我们可以利用联邦学习的技术优势,在不泄露原始数据的情况下,进行联合安全计算,训练模型,这样既能保护数据隐私和数据安全,又能为用户提供个性化的服务,具体的技术实现方法可参见第2章。
通过上述例子,如图1-9所示,我们可以把安全多方计算抽象理解:两个(或多个)数据参与方分别拥有各自的隐私数据,在不泄露个人隐私数据的前提下,通过一定的计算逻辑(公共函数)计算出最终想要的结果,并且参与方只能得到计算结果,计算过程的中间数据和各方原始隐私数据均不共享。
图1-9 安全多方计算过程抽象图