不看到数据却能进行计算?一文了解安全多方计算
区块链百科No.35:安全多方计算
从百万富翁问题说起
两个百万富翁在街头邂逅,他们都想比比看谁更有钱。但是出于隐私,谁都不想让对方知道自己到底拥有多少财富。在不借助第三方的情况下,如何得出谁的财富更多呢?
这就是著名的“姚式百万富翁问题”。1980年代,姚期智院士在其论文中提出:Alice有一个私人数字a, Bob有一个私人数字b,双方的目标是解不等式a是否≤b。或者更严格来说,除了得到不等式了a≤b或a>b外,不会得出任何与a或b相关的其他信息。
姚期智
计算机学者,2000年图灵奖获得者(唯一获得该奖的华人学者),研究方向包括计算理论及其在密码学和量子计算中的应用。
在这个经典问题之下,诞生了「安全多方计算」(Secure Multiparty Computation,以下简称MPC)这门密码学分支。MPC技术能够在不泄露数据的情况下,联合多方数据进行计算并得到明文结果,最终实现数据的所有权和数据使用权的分离。
在此之后,该领域出现了一系列基础结果,用来解决分布式计算问题,同时保证输入信息的隐私性和安全性。
什么是MPC?
安全多方计算(MPC)可以理解为一种加密协议,它将计算分布在多方之间,使得任何一方在看不到其他方输入数据的情况下,开展安全且私密的联合计算。
值得注意的是,隐私和安全是有区别的。
安全问题,就像是信用卡出现安全漏洞被盗了钱,人们可以通过一些措施来阻止它并要求退款。而隐私问题,在于当个人隐私受到侵犯时,我们无法采取同样的措施。隐私信息一旦被公开,就无法再次收回。因此,需要设计一种安全协议,在不泄露隐私的前提实现共享数据的价值。
通过MPC协议,各方数据可经由编码后发送至多个服务器进行联合计算,并保证数据的隐私性。简而言之,MPC可以应用于任何涉及多方机密数据的问题。
MPC是如何工作的?
为了说明这个概念,我们以计算平均工资来举例。某公司的A、B、C三位员工想计算一下他们的平均工资,但在这个过程中,每个人都不想让其他员工知道自己的薪资信息。
假设A的工资是10万元,可通过加密方式将其随机分为三部分:2万、3万和5万,A自己保留一部分(2万),并将其他信息提供给B(3万)和C(4万)。B和C的工资也按照同样的流程完成秘密分享(见下表)。这样的秘密分享完成后,每个人都持有三份工资份额。
当三个工资份额在参与者之间秘密共享时,他们对彼此的工资一无所知,毕竟每个数据片段本身不提供任何有用的信息。然而,当这些数字被加起来时,秘密共享提供了有价值的信息。每个部分结果经过重新集合相加再除以总人数时,便实现了在不披露员工各自薪资信息的情况下,得出平均收入水平。
实际上,安全多方计算已不再是数据科学家的梦想,而是一个被证明的事实。人们由此可对加密数据进行计算,从而更好地检测金融欺诈,解决交通拥堵,预测疾病以及更多……
Scan QR code with WeChat