|0x00 什么是安全多方计算
多方安全计算最近很火,不仅是因为欧盟出了一个数据隐私法规《通用数据保护条例》(General Data Protection Regulation,简称GDPR),也在于存量市场竞争下,大家都有了更多数据合作的场景。例如:两家公司都有一份用户数据,但不想让对方知道自己的用户是谁,但又想知道自己的用户跟对方的用户,有多少是重叠的,这时候我们通过怎样的算法,才能让自己用户信息不泄露的情况下,获得自己想要的结果?
安全多方计算起源于著名的“百万富翁”问题:有两个富翁想比较一些谁更富有,彼此的财产都是0-10之间的整数,问如何在不透露自己财产的情况下,比较谁更富有?
有人提出一个解决方案:找一个天平,两边各放上一个封闭的盒子,让富翁在盒子里放上等重的苹果,有多少财富,就放几个苹果,最后看哪边重就行了,很简单。
真的简单吗?
这个方案有一个很致命的问题,就是天平是谁来提供的?试想这两个富翁,如果两个人没有共同信任的第三人,那么这个问题要怎么解决?天平的提供方会不会同时知道两个人的财富?如果天平不是公平的,那么什么才能保证公平呢?
这里面就涉及到了一个非常关键的问题:“可信第三方”。这个问题虽然简单,但解决起来很复杂。
在1982年,姚期智先生在其发表的文章《安全计算协议》里,提出了“安全多方计算”(英文:Secure Multi-Party Computation)的概念,来解决这个问题。研究的主要内容,是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。
作为密码学的一个子领域,“安全多方计算协议”允许多个数据所有者在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其他任何信息。换句话说,各方的输入数据只有自己知道,通过一种加密的算法,让各方得到自己想要的结果。
随着用户隐私、数据安全的问题被越来越多的重视,“安全多方计算”也就越来越火热了起来,为解决数据孤岛问题,打破数据在行业、企业间流动的壁垒,提供了一种技术上的实现思路。
|0x01 多方安全计算有哪些算法
主流的多方安全计算,目前有四种实现方式:
第一种是“混淆电路”,又称姚氏电路,这是一种密码学协议,历史非常悠久,1986年由姚期智教授提出,核心是将安全计算函数编译成布尔电路的形式。
第二种是“秘密分享”算法,因为电路设计总是非常复杂的,因此通过简单的数学思路将这个问题简化。“秘密分享”算法的基本思路是将每个数字拆散成多个数,并将这些数分发到多个参与方,每个参与方拿到的都是原始数据的一部分,只有大家把各自的数据凑在一起时才能还原真实数据。
第三种是“同态加密”,同态加密是指这样一种加密函数,对明文进行加法和乘法运算再加密,与加密后对密文进行相应的运算,结果是等价的。由于这个良好的性质,人们可以委托第三方对数据进行处理而不泄露信息。
第四种是“茫然随机访问机”,英文是“ORAM”,一种可以用来完全隐藏IO操作的数据加密方案,完全消除了内存访问轨迹中的信息泄漏,除了交集外的双方集合的任何元素不会被泄露。
以上算法都可以在网上搜到,这里就不展开讲了。其实还有一些其他的方法,比如差分隐私,有兴趣的可以自行搜索。
但不论是哪种方法,最终目标,都是在保护数据隐私的前提下,尽可能的提升计算性能,并提供更加丰富的数据加工手段。
|0x02 多方安全计算的特点
多方安全计算的特点是什么呢?简单讲,有三种:
去中心化:多方安全计算各个数据的输入方,在不泄露各自数据的情况下,完成相应的计算,各参与方地位平等,不存在任何有特权的参与方;这个原理与区块链的理念比较类似,避免了大型的中心化节点,也就防止了数据被几家巨头所垄断,而数据的拥有者成为了数据交换的主体;
计算高效:过去复杂的密码学策略,并不适用于海量数据,但随着近年来越来越多的人参与进来,提升了相关算法的效率,使得一些算法的复杂度能够达到线性,已经能够适应当今大数据的海量计算需求;
输入隐私:多方安全计算包括了很多种类型的加密协议和算法,基于不同的加密学原理而得到,详情见|0x02,理论上,安全性与我们熟悉的加密算法,没有什么不同。
自2018年后,工业界已经能够在海量数据的场景下,解决数据的隐私保护为题,这是一个非常明确的转折点信号,国家可以通过这项技术,来真正落实个人的数据隐私问题。欧洲的GDPR、中国的密码法、美国加州的CCPA,也都是在这种背景下诞生的。
|0xFF 多方安全计算的应用场景
首先,多方安全计算最重要的应用场景,就是个人隐私了,大量的互联网服务都需要个人的隐私数据,这都需要隐私算法来完成对个人的保护。
其次,不仅是企业内部需要解决数据互通的问题,各个政府、大企业之间,也有数据互通的需求,但也都互相需要进行相应数据的保密。过去因为技术问题,被动导致了很多“数据孤岛”问题,随着今天多方安全计算的发展,已经能够得到解决了。
再次,即便是企业内部,也存在数据泄露的风险,自己人权限设置不当,很容易导致企业自己的核心数据泄露,而多方安全计算能够将原始数据加密,即便你拿到了数据,也无法破解。
当然,多方安全计算的性能,毕竟还是存在局限的,需要消耗更多的机器算力来支持,这对于成本也是一种巨大的挑战。
不管怎样,我们还是要适应GDPR以后的互联网行业,数据隐私问题将会长期受到关注,而懂一些数据安全算法,很有必要。
网友评论