多方计算(Multi-party computation,MPC)是一种密码学技术,它可以让多个参与方在不泄露各自的数据的情况下,共同计算一个函数的结果。这种技术可以应用于很多场景,例如隐私保护的拍卖、投票、机器学习、基因分析等。本文将介绍多方计算的基本概念、安全模型、协议构造和实际应用。

多方计算的基本概念是,假设有n个参与方,每个参与方有一个私密的输入x_i,他们想要计算一个公共的函数f(x_1,x_2,…,x_n)=(y_1,y_2,…,y_n),其中y_i是第i个参与方的输出。多方计算的目标是设计一个协议,使得每个参与方可以得到自己的输出y_i,而不泄露自己或者其他参与方的输入x_i。换句话说,多方计算要保证以下两个性质:

正确性:每个参与方得到的输出y_i是函数f在所有参与方的输入上的正确结果。 隐私性:每个参与方除了得到自己的输出y_i之外,不能获得其他任何关于其他参与方输入x_j的信息。

多方计算的安全模型是指,在协议执行过程中,可能存在一些不诚实的参与方,他们可能会试图破坏协议的正确性或者隐私性。根据不诚实参与方的行为和能力,可以定义不同的安全模型。常见的安全模型有以下几种:

半诚实模型:在这个模型中,假设所有的参与方都会按照协议规定正确地执行协议,但是他们会尝试从协议中获得额外的信息。这个模型相当于假设所有的参与方都是“好奇”的,但不会“作弊”的。 恶意模型:在这个模型中,假设有一部分参与方可能会任意地违反协议规定,比如发送错误或者伪造的信息,拒绝发送信息,或者串通其他恶意参与方。这个模型相当于假设所有的参与方都是“敌对”的,并且会尽可能地“作弊”。 静态/自适应模型:在这两个模型中,假设有一个外部敌手可以控制一部分参与方,并且可以看到他们控制的参与方的所有信息。区别在于,在静态模型中,敌手必须在协议开始之前就确定要控制哪些参与方;而在自适应模型中,敌手可以在协议执行过程中动态地选择要控制哪些参与方。

多方计算的协议构造是指,如何利用密码学工具和技术来设计满足特定安全模型要求的多方计算协议。根据协议涉及的参与方数量和函数类型,可以将协议分为以下几类:

两方计算:这是最简单的情形,只有两个参与方想要计算一个函数。这种情形下有很多经典的协议和问题,例如姚氏百万富翁问题、姚氏垃圾邮件过滤器、姚氏混淆电路等。 多项式函数计算:这是一类特殊的函数类型,即函数可以表示为多项式形式。这种情形下有很多基于秘密分享的协议,例如Shamir秘密分享、Ben-Or等人的协议、Beaver等人的协议等。 一般函数计算:这是最一般的情形,即函数可以是任意的可计算函数。这种情形下有很多基于电路表示的协议,例如Goldreich等人的协议、Lindell和Pinkas的协议、Ben-Sasson等人的协议等。

多方计算的实际应用是指,如何将多方计算技术应用于解决现实世界中的问题。由于多方计算可以保护数据隐私,因此它在很多领域都有广泛的应用价值,例如:

隐私保护的拍卖:多方计算可以让多个买家和卖家在不泄露自己的出价和需求的情况下,进行公平和有效的拍卖。例如,Tezori和Santis等人提出了一个基于SMPC的隐私保护的双边拍卖协议。 隐私保护的投票:多方计算可以让多个选民和候选人在不泄露自己的选票和得票数的情况下,进行安全和正确的投票。例如,Cramer等人提出了一个基于SMPC的隐私保护的电子投票协议。 隐私保护的机器学习:多方计算可以让多个数据拥有者和模型训练者在不泄露自己的数据和模型参数的情况下,进行高效和准确的机器学习。例如,Mohassel和Zhang提出了一个基于SMPC的隐私保护的神经网络训练协议。 隐私保护的基因分析:多方计算可以让多个基因数据拥有者和分析者在不泄露自己的基因数据和分析结果的情况下,进行复杂和敏感的基因分析。例如,Cho等人提出了一个基于SMPC的隐私保护的基因组关联分析协议。

总之,多方计算是一种保护数据隐私的密码学技术,它可以让多个参与方在不泄露各自的数据的情况下,共同计算一个函数的结果。