1 介绍
安全多方计算支持在不泄露任一参与方的隐私输入数据的前提下进行联合计算。大致的流程是这样的,有一个共同的计算函数需要各参与方及其各自的隐私数据一起参与,这时就可以通过一起遵循MPC协议来联合计算而不泄漏私密数据。自从Yao院士(姚期智)于1980年代提出多方计算理论,到目前该理论已经逐步走向了实用化进程,在大型的隐私保护应用的构建中扮演着重要的角色。
本书同时面向安全多方计算应用人员和研究人员,书中涵盖了MPC各类基础协议和目前最新的研究,我们的目标是使读者知道在MPC领域,哪些研究和应用在目前是可能的,哪些是在未来可以实现的,并且为那些从事MPC应用、协议开发和实现提供一个好的切入口。因此,本书主要侧重于实践的维度,并不提供正式的证明过程。
术语 “安全计算” 是一个较为广义的词汇,一般指计算加密数据的所有技术。“可验证计算” 指的是所有参与者在得到联合计算结果的同时还能得到结果的正确性证明。
目前主要有两类安全和验证计算:外包计算和多方计算。我们主要关注多方计算,但是会在开始对开源计算进行简要介绍并将其与多方计算区分。
1.1 外包计算
在外包计算场景中,拥有数据的一方希望能够获取相应计算的结果。计算方收到加密数据并将其存储,在加密数据之上进行计算并将加密的结果返回给数据持有方,在此过程中,计算方无法从输入数据、中间计算结果、最终结果中学到任何信息。数据持有方则能够将加密的结果解密并得到期望的输出。
同态加密则是一个典型的实现外包计算方法,其中同态加密主要分为部分同态(partially-)和全同态(fully-)。部分同态支持有限次和部分计算,如有限次的乘或加减。目前已知的几种部分同态机制:Paillier 1999;Naccache and Stern, 1998; Boneh, 2005 等。基于PHE的系统只能被限制在其所支持的部分操作中,因此只适用于部分特殊场景。
全同态加密的机制必须是能够支持图灵完备的操作集,比如加乘,因此在FHE下,任何的函数均可以实现。全同态的发展极为缓慢,尽管1978年Rivest等人提出了FHE的设想,但是一直到30年后,Gentry才于2009年建立了基于格的全同态加密机制。目前研究人员对于实现FHE的机制的研发具有很大兴趣,近几年出现了大量的成果,比如Gentry and Halevi (2011), Halevi and Shoup (2014), and Chillotti. (2016) ,但是业界对于如何使用FHE构建安全、可部署、可扩展的系统这个难题仍需要探索前进。
FHE和MPC的基本形式是不一致的,其在多方计算场景中的侧重角度也不一致,因此不能进行直接比较。目前有很多方法,类似于使用多密钥的方法来使FHE应用于多方计算场景中(Asharov et al., 2012; LópezAlt et al., 2012; Mukherjee and Wichs, 2016 )。FHE的通信量的增长是线性的,但是其计算代价极为高昂,在典型应用和常规设定中,目前最新的技术(Chillotti 2017)比正常的两方计算和多方安全计算慢几千倍(?确定不是和明文计算比较?)。FHE和MPC的性能和其执行相应操作时的计算代价和带宽紧密相关,对于高带宽环境,如设备和数据中心通信,这种情况下MPC的性能远远超过FHE,但是对于带宽代价高于计算代价的情况,FHE技术反而更具有竞争力。
本书不会特别地对外包计算和FHE深入阐述,但是要注意到一些提升多方计算性能的技术也是可以应用在FHE和外包计算中的。此外,Shan 2017对外包计算做了survey work。
1.2 多方计算
安全多方计算的目标是将一群相互独立、互不信任的数据拥有者或共同的第三方,基于所有参与方的隐私数据来进行联合计算。注意到,MPC和外包计算的区别就是,MPC的参与协议计算的个体均是数据拥有者。第二章则对MPC进行更为正式的定义,并且介绍了大多数在研究中需要考虑的威胁模型。
MPC的简史
1980年代,姚期智院士第一次提出安全计算的设想,该篇论文介绍了安全计算的概念,即个参与方联合计算函数是方的隐私输入。在接下来的几年中,姚院士经过一系列的讨论,最终推出混淆电路协议(3.1章中详细介绍)。该协议到目前为止也是众多高效MPC技术中的基础。
通用和定制的MPC
Yao's混淆电路协议是一种通用协议,它可以用来计算任意可以转为固定大小电路的离散函数。MPC的一个重要的子领域则是去关注特定的函数,比如隐私求交协议(PSI)。对于特定的一些需求和函数,定制的协议往往比通用协议更为高效,当然,定制协议在自身领域中应用得当,其也可以作为基本块参与到其他应用的构建中。本书主要关注通用MPC协议,但是会对PSI进行一定的讨论(3.8.1章)。