[TOC]
前言
根据IDC发布的数据,截止到2018年底,中国大数据解决方案市场软硬服总额达到388.8亿元人民币,并有望在2023年超过800亿元人民币,全球市场则将超过3000亿美元。大数据时代,海量的数据的交叉计算和人工智能的发展为各行各业提供了更好的支持,但这些被使用的数据往往包含用户的隐私数据。所以这些数据往往是不对外开发,例如政府数据由于政策保密性完全不能对外公布,运营商、互联网公司收集到的客户数据,也不能透露给第三者,因此形成了一个个数据孤岛,数据之间不能互通,数据的价值无法体现。
如何应用海量的数据,实现数据流动,同时能够保护数据隐私安全、防止敏感信息泄露是当前大数据应用中的重大挑战。隐私计算就是为了解决这些问题应运而生。
隐私计算的概念
隐私计算(Privacy Computing)是指在保护数据本身不对外泄露的前提下实现数据分析计算的一类信息技术,主要分为密码学和可信硬件两大领域。
拓展:
“隐私计算”的定义:隐私计算是面向隐私信息全生命周期保护的计算理论和方法,是隐私信息的所有权、管理权和使用权分离时隐私度量、隐私泄漏代价、隐私保护与隐私分析复杂性的可计算模型与公理化系统。具体是指在处理视频、音频、图像、图形、文字、数值、泛在网络行为性信息流等信息时,对所涉及的隐私信息进行描述、度量、评价和融合等操作,形成一套符号化、公式化且具有量化评价标准的隐私计算理论、算法及应用技术,支持多系统融合的隐私信息保护。隐私计算涵盖了信息搜集者、发布者和使用者在信息产生、感知、发布、传播、存储、处理、使用、销毁等全生命周期过程的所有计算操作,并包含支持海量用户、高并发、高效能隐私保护的系统设计理论与架构。隐私计算将是泛在网络空间隐私信息保护的重要理论基础。 ——大数据安全与隐私保护专委会
隐私计算主流分支
隐私计算经过近几十年的发展,隐私计算技术的应用主要可以分为 多方安全计算、可信硬件、联邦学习三个主要流派。
密码学的技术目前以多方安全计算(MPC)为代表。多方安全计算(Secure Multi-Party Computation)是指在无可信第三方情况下,通过多方共同参与,安全地完成某种协同计算。即在一个分布式的网络中,每个参与者都各自持有秘密输入,希望共同完成对某个函数的计算,但要求每个参与者除计算结果外均不能得到其他参与实体的任何输入信息。也就是参与者各自完成运算的一部份,最后的计算结果由部分参与者掌握或公开共享。多方安全计算主要基于密码学的一些隐私技术,包括有同态加密(Homomorpgic Encryption),不经意传输(Oblivious Transfer),混淆电路(Garbled Circuit),秘密共享(Secret Sharing)等。MPC 的核心思想是设计特殊的加密算法和协议,从而支持在加密数据之上直接进行计算。目前MPC通过秘密分割、不经意传输、混淆电路或同态加密等专门技术实现,通用性相对较低、性能处于中等水平,但近年来性能提升迅速、应用价值极高。
可信硬件方面技术即通过硬件技术来对数据进行隔离保护。可信执行环境 (TEE) 是 Global Platform (GP) 提出的概念。是移动设备主处理器上的一个安全区域,其可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。TEE 提供一个隔离的执行环境,提供的安全特征包含:隔离执行、可信应用的完整性、可信数据的机密性、安全存储等。该技术的核心是企业和个人可以把数据处理模型部署在区块链上,在链下,例如 Intel SGX 可信执行环境中处理隐私数据,最终把可验证结果存储到链上并更新状态。
此外,国内外还衍生出了联邦学习、共享学习、知识联邦、联邦智能等一系列“联邦学习类”技术。这类技术以实现机器学习、数据建模、数据预测分析等具体场景为目标,通过对上述技术加以改进融合,并在算法层面进行调整优化而实现。
除了几种主流解决方案之外,还有差分隐私、K匿名算法、L多样性等隐私相关的技术,这些技术不是相互替代关系,而是可以相互结合、相互促进的。
隐私计算公司的分类:
详解多方安全计算
我们可以先来思考一个问题:
两个百万富翁街头邂逅,他们都想比比谁更有钱,但是出于隐私,都不想让对方知道自己到底拥有多少财富,如何在不借助第三方的情况下,让他们知道他们之间谁更有钱?
这里假定:
- 两人都值得信任,不会作假
- 两人都希望诚实地比较出谁更服务(即谁的数更大)
- 两人又都希望知道对方财产到底是多少,如果可能的话,拿到具体数字最好了
其实这里假定的是一个安全多方计算的模型 - 半诚实对手模型,即计算方存在获取其他计算方原始数据的需求,但仍然按照计算协议执行。另外有恶意敌手模型,在这种模型中,参与方可以造假,即不按照计算协议执行计算过程。这就要复杂很多。为简化期间,本文仅讨论半诚实对手模型。
有人提出这样一个解决方案:放一个天平,两边放上封闭的盒子,让两个富翁分别在两边放入质量相同的苹果,有几千万财富就放几个,最后看哪边重就可以了。
真的这么简单么?这里方案的提出者忽略了一个条件,也就是不存在可信的第三方,天平谁来提供?提供天平者是可以知道一切的。
这是一个看似简单实则非常复杂的问题。
下面介绍姚期智先生的解:
我们先把问题简化,假设两个百万富翁Alice和Bob各有钱i和j,i和j是1到10之间的数。
首先Bob挑选一个非常大的整数x,然后用Alice的公钥a加密。得到 k=Enc(x)。然后把这样一个数k-j+1发给Alice。Alice拿到这个数之后呢,计算以下这些数:
1
Dec{k-j+1, k-j+2, k-j+3 ...., k-j+10}
然后除以一个素数p取余得到:
1
z1 = Dec{k-j+1}(mod p), z2, z3, .... z10
因为Alice的钱是i,那么Alice 做一下这个事情:
1
z1, z2, z3, ... Zi, Z(i+1) = Z(i+1)+1
然后把这一串数字发给Bob,Bob只需要看第j个数字,如果等于x(mod p)就说明i>=j,否则说明i<j. 然后bob把结果返给Alice.看着很复杂,实际上这个协议很简单。重点我们要去理解姚期智是怎么想的?这个看似难以理解的协议是凭空产生的么?
稍微解释一下,Bob选择了一个非常大的数x,然后加密得到k。 然后把k-j+1发给了Alice。这个时候Bob的信息已经藏在这个数据里面了,但是因为x很大,所以Alice没办法从k-j+1之中推导出j,对Alice来说就是个随机数。然后Alice 计算了10个数,Dec(k-j+{1,2,3…10}),注意了,有意思的来了。对Alice来说k-j+{1,2,3….10}都是没有意义的随机数,那么在这些数上解密,当然也只会得到一些没有意义的随机数。但是其中一个数是有意义的,那就是Dec{k-j+j},为什么呢?因为k-j+j=k,而k是什么呢?k=Enc(x)那么理所当然Dec(k)=x。所以说这十个数对Alice没有意义,但是对Bob是有意义的,因为他知道x。
所以如果这个时候,Alice把这十个数发给Bob,在Bob看来,这是十个数就是9个毫无意义的随机数和一个x,而x正好在第 j 个位置上。其实答案已经呼之欲出了。Alice接下来在这个十个数从第i个数开始都+1。再给Bob,什么会发生?Bob一看, 要不就是9个看不懂的数 和 x 或者是 9个看不懂的数和 x+1.
如果是x+1,那么他知道,自己的数j肯定不小于Alice的i,反之则小于。是不是Alice实际上巧妙地把自己的数i的信息放进去了这十个数当中,但是因为她知道这十个数除非是第j个数,否则其它的数对Bob没有任何意义。所以她不用担心自己的数i泄露。但是又可以比较大小。这就是这个协议的中心思想,是不是非常巧妙?
那么协议后面哪些取余是干什么呢? 这是为了防止+1之后有额外的信息泄露出来比如某个数加1之后,正好等于另外一个数,那么BOB就会知道这个数肯定被加过1了,为了防止这种极端情况,就有了取余的过程。
回过头来想想,你可以用几何的思维去想这个协议,Alice和Bob都把信息藏到了两个不同的维度,Bob藏在了单个数中(k-j+1),Alice藏在了十个数中(其中10-j+1)个数被+1了。这就像两条直线,他们彼此对对方都没有任何意义。Bob看不懂Alice的十个数,Alice看不懂Bob的单个数。但是他们有个”交点“,在这个”交点“上Alice的数突然对Bob有了意义,从而Bob可以比较这两个数的大小了。这个”交点“就是”比较大小“。
那么我们是不是明白了MPC的中心思想,那就是彼此把数据x,y藏在自己的维度上,然后找到一个交点,就是我们需要共同计算的函数f(x,y)。Yao的这个协议的”交点“仅限于比较大小。而其他的运算还没有支持。感兴趣的朋友可以想想,怎么做一个支持乘法,支持加减法运算的类似的protocol。很多开拓性的论文都并不是一开始就非常完美,而是给出了一个方法,在这个基础上,启发了后人,去扩展出更多的应用。
多方安全计算的发展
早在1982年,姚期智先生在其发表的文章《安全计算协议》(Protocols for Secure Computation)里提出了著名的姚氏百万富翁问题,同时也首次引入了双方安全计算的概念来解决问题,并对其可行性进行了验证。两个百万富翁Alice和Bob在无任何可信第三方,同时不暴露自己的财产的情况下,希望得出谁更富有的结论。为了解决这一问题,姚期智先生提出建立一个通用的框架处理单向函数所涉及的加密、完整性、智能扑克等系列问题,发展出了验证其安全性的通用技术。
时隔4年,姚期智先生再次取得重大突破,于1986年提出了基于混淆电路的通用解决方案,进一步验证了多方安全计算的通用可行性,同时也奠定了现代计算机密码学的理论基础。此后,经Oded Goldreich、Shafi Goldwasser等学者进一步的研究和创新,多方安全计算逐渐发展成为现代密码学的一个重要分支。
在实际应用中,通过综合运用密码学中混淆电路(Garbled Circuit)、不经意传输(Oblivious Transfer)、秘密分享(Secret Sharing)、同态加密(Homomorphic Encryption)、同态承诺(Homomorphic Commitment)、零知识证明(Zero-Knowledge Proof)等多种理论和协议,结合计算机工程技术研发出整套多方安全计算系统,能够使整个信息交互计算的过程全程在密文下进行,并且保证计算结果同明文下计算的结果一致。
多方安全计算使用到的隐私技术
多方安全计算主要基于密码学的一些隐私技术,包括有:
- 秘密共享(Secret Sharing)
- 混淆电路(Garbled Circuit)
- 不经意传输(Oblivious Transfer)
- 同态加密(Homomorpgic Encryption)
秘密共享
秘密共享(Secret-Sharing) 是现代密码学领域的一个重要分支,是信息安全和数据保密中的重要手段,也是多方安全计算和联邦学习等领域的一个基础应用技术。实际应用中,在密钥管理,数字签名,身份认证,多方安全计算,纠错码,银行网络管理以及数据安全等方面都有重要作用。
秘密共享是在一组参与者中共享秘密的技术,它主要用于保护重要信息,防止信息被丢失、被破坏、被篡改。它源于经典密码理论,最早由Sharmir和Blakley在1979年提出。简单来说,秘密共享就是指共享的秘密在一个用户群体里进行合理分配,以达到由所有成员共同掌管秘密的目的。
基于Shamir秘密共享理论的方法中,秘密共享的机制主要由秘密的分发者D、团体参与者P{P1,P2,…,Pn}、接入结构、秘密空间、分配算法、恢复算法等要素构成。
秘密共享通过把秘密进行分割,并把秘密在n个参与者中分享,使得只有多于特定t个参与者合作才可以计算出或是恢复秘密,而少于t个参与者则不可以得到有关秘密。
秘密共享体系还具有同态的特性。如下图所示有特征A和B,他们的值被随机分成碎片(X1, X2, …, Xn)和(Y1, Y2, …, Y3),并分配到不同参与节点(S1,S2, …, Sn)中,每个节点的运算结果的加和能等同于原始A与B的加和。同样通过增加其他计算机制,也能满足乘积的效果,这就是秘密共享具备的“同态性”,各参与者可以在不交换任何数据的情况下直接对密码数据求和,乘积。
在秘密共享系统中,攻击者必须同时获得一定数量的秘密碎片才能获得密钥,通过这样能提高系统的安全性。另一方面,当某些秘密碎片丢失或被毁时,利用其它的秘密份额仍让能够获得秘密,这样可提高系统的可靠性。
秘密共享的上述特征,使得它在实际中得到广泛的应用,包括通信密钥的管理,数据安全管理,银行网络管理,导弹控制发射,图像加密等。
混淆电路
混淆电路(Garbled Circuit)是姚期智教授[4]在80年代提出的安全计算概念。通过布尔电路的观点构造安全函数计算,达到参与者可以针对某个数值来计算答案,而不需要知道他们在计算式中输入的具体数字。
在这里关键词是“电路”,实际上所有可计算问题都可以转换为各个不同的电路,例如加法电路,比较电路,乘法电路等。而电路是由一个个门(gate)组成,例如与门,非门,或门,与非门等。
混淆电路里的多方的共同计算是通过电路的方式来实现,例如下图所示,Alice和Bob要进行多方计算,他们首先需要构建一个由与门,或门,非门,与非门组成的布尔逻辑电路,每个门都包括输入线,输出线。
混淆电路则通过加密和扰乱这些电路的值来掩盖信息,而这些加密和扰乱是以门为单位,每个门都有一张真值表。
Alice用密钥加密真值表,并把表打乱后发给Bob,通过这种这加密+打乱的过程,达到混淆电路的目的。而Bob在接收到加密表后,根据收到的加密真值表,混淆的输入,及自己的Key,对加密真值表的每一行尝试解密,最终只有一行能解密成功,并提取相关的加密信息。最后Bob将计算结果返回给Alice。
在整个过程大家交互的都是密文或随机数,没有任何有效信息泄露,在达到了计算的目的,同时达到了对隐私数据数据保护的目的。
不经意传输
不经意传输(Oblivious Transfer - OT)最早在1981年被 Michael O. Rabin提出,之后被广泛应用于多方安全计算等领域。
在Rabin [1] 的OT协议中,发送者Alice发送一个信息m给接收者Bob,接收者Bob以1/2的概率接受信息m。所以在协议交互的结束的时候,发送者Alice并不知道Bob是否接受了消息,而接收者Bob能确信地知道他是否得到了信息m,从而保护了接收者的隐私性,同时保证了数据传输过程的正确性。该方法主要是基于RSA加密体系构造出来。
1985年S. Even, O. Goldreich, and A. lempel [2] 提出了1-out-2 OT, 在此方案中发送者Alice每次发送2个信息和,而接收者Bob每次输入一个选择b, 当协议结束的时候,发送者Alice无法获得关于接收者Bob的任何有价值的信息,而接收者Bob只能获得,对于, 接收者Bob也一无所知。
在1986年,Brassard等人将1-out-2 OT扩展为1-out-n OT。
在实际应用中,不经意传输OT的一种实施方式是基于RSA公钥加密技术。
一个简单的实施流程如下:
- 首先,发送者生成两对不同的公私钥,并公开两个公钥,称这两个公钥分别为公钥1和公钥2。假设接收人希望知道m1,但不希望发送人知道他想要的是m1。
- 接收人生成一个随机数k,再用公钥1对k进行加密,传给发送者。
- 发送者用他的两个私钥对这个加密后的k进行解密,用私钥1解密得到k1,用私钥2解密得到k2。显然,只有k1是和k相等的,k2则是一串毫无意义的数。但发送者不知道接收人加密时用的哪个公钥,因此他不知道他算出来的哪个k才是真的k。
- 发送人把m1和k1进行异或,把m2和k2进行异或,把两个异或值传给接收人。显然,接收人只能算出m1而无法推测出m2(因为他不知道私钥2,从而推不出k2的值),同时发送人也不知道他能算出哪一个。
同态加密
同态加密(Homomorphic Encryption)是一类具有特殊属性的加密方法,是Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzo在1978年提出的概念。与一般加密算法相比,同态加密除了能实现基本的加密操作之外,还能实现密文间的多种计算功能,即先计算后解密可等价于先解密后计算。这个特性属性对于保护信息的安全具有重要意义,利用同态加密技术可以先对多个密文进行计算之后再解密,不必对每一个密文解密而花费高昂的计算代价;利用同态加密技术可以实现无密钥方对密文的计算,密文计算无须经过密钥方,既可以减少通信代价,又可以转移计算任务,由此可平衡各方的计算代价;利用同态加密技术可以实现让解密方只能获知最后的结果,而无法获得每一个密文的消息,可以提高信息的安全性。
同态加密主要分两类:
- 全同态加密(Fully Homomorphic Encryption):全同态加密同时满足同态加法运算和同态乘法运算。这意味着同态加密方案支持任意给定的f函数,只要这个f函数可以通过算法描述,就可以用计算机实现。但全同态计算开销极大,暂时还无法在实际中使用。
- 部分同态加密(Somewhat Homomorphic Encryption ):部分同态加密只支持同态加法运算和数乘运算,这意味着此同态加密方案只支持一些特定的f函数。但部分同态加密也意味着开销会变得较小,容易实现,现在已经可以在实际中使用。
目前满足加法同态和数乘同态的算法包括Paillier和Benaloh算法等,而满足乘法同态的算法包括RSA和ELGamal算法等。
同态加密技术在分布式计算环境下的密文数据计算方面具有比较广泛的应用领域,比如安全云计算与委托计算、多方保密计算、匿名投票、文件存储与密文检索等。例如在云计算方面,虽然目前云计算应用中,从安全角度来说,用户还不敢将蜜柑信息直接放到第三方云上进行处理,通过实用的同态加密技术,则大家可以放心使用各种云服务,同时各种数据分析过程中也不会泄露用户隐私。加密后的数据在第三方服务处理后得到加密后的结果,这个结果只有用户自身可以进行解密,整个过程第三方平台无法获知任何有效的数据信息。另外一个应用,在区块链上,使用同态加密技术,智能合约也可以处理密文,而无法获知真实数据,能极大的提高隐私安全性。
多方安全计算技术如何应用
由于多方安全计算能够在密文状态下对数据进行计算并得到与明文计算同样的结果,在政府管理和监测、跨企业数据融合、保护个人隐私等各个方面有着非常广泛的应用。
以政务数据安全查询为例 – 政府管理和监测具有多数据源公共管理的显著特点,同时相对于商业机构而言政府对于安全性和相关法律法规的合规性有更严格的要求。政府部门不仅要应对多数据源和不同格式的数据集成分析等大数据领域通用的问题,还要面对很多政府部门特有的挑战。政务领域的数据壁垒和数据孤岛问题较其他领域更为尖锐。
通过多方安全计算技术可以使数据以密文形态上传到平台上进行计算,在保障数据安全性的前提下完成数据融合,从而实现在众多数据提供方和查询方的情况下,得到不泄露任何隐私信息的查询结果。如此,既可保证查询方的查询条件和数据提供方隐私数据不向另一方泄露,也可保障查询方身份信息不透露给数据提供方,同时又能向数据提供方证明查询已被授权。这不仅仅可以解决政府各个部门对于数据融合产生数据泄露的追责问题的顾虑,还会因为数据融合的利己利他性而大大提升数据融合的动力,从根本上解决长期以来政务数据融合难的问题。
华控清交和海淀区政府于5月19日签订共建的政务大数据加密融合共享平台的合作项目正是多方安全计算在政务数据开放和共享领域的创新举措。
以人工智能模型训练为例 – 应用多方安全计算技术,让人工智能算法模型在多个样本数据源的密文情况下进行训练,并提交密文的运算结果以满足算法训练方的需求,从而能够既保证训练数据提供方的明文数据不被泄露给算法训练方和其他数据提供方,又确保算法训练方的算法或其算法参数不会被泄露给数据提供方,同时确保算法训练能得到与在明文数据上一样的训练效果。如此,通过多方安全计算把(多个)数据提供方、模型提供方、计算平台和模型获得方的角色进行独立区分,既极大地提升了算法训练的效率又保护了各方的数据隐私,同时降低了成本。
隐私计算的未来发展
- 性能提升
隐私计算,尤其是安全多方计算和联邦学习都使用了分布式计算,通过密码学加密计算保证了隐私数据不泄露,也必然在计算性能方面产生巨大的消耗。随着加密计算技术的不断发展,联邦学习算法的优化和硬件算力的提升,隐私计算的性能一定会提升一个明显的台阶,达到商用产品化水准。
- 功能扩展
未来,隐私计算将会包含更多加密算法,也会结合行业适应更多的应用场景。目前,隐私计算和联邦学习技术可应用于金融、医疗、政务等行业。比如在金融领域,传统金融机构、互联网金融公司、金融科技公司通过隐私计算进行相互之间多场景的用户数据补充,来进行信用画像评分,提高用户风控能力,解决“联合风控”和”联合营销”问题。比如在医疗领域,患者的患病记录在不同区的不同医院可能是不同的,单个医院无法训练出对特定任务有良好性能的高质量模型,每个医院之间进行协作后,可以使用共有的患者数据协同训练机器学习模型。
隐私计算和联邦学习的技术还将逐步与其他不同领域的融合,满足金融征信、供应链⾦融、物流、存证溯源、物联网及慈善行业等多种应用场景。未来,金融行业数据也将和税务、公安、社保、劳动、社会保障、环境保护、安全生产等政府数据的打通,通过建立在金融行业数据共享以及和政府数据打通基础上的征信系统,打破不同行业的数据孤岛,实现社会运行机制健康发展,对社会生活方式和国家治理能力产生深刻影响
- 开源与安全性
随着隐私计算作为数据安全流通的解决方案越来越被大数据行业所认知, 越来越多的机构开始研发搭建自己的隐私计算系统,甚至出现有些科技公司直接采用开源框架如TensorFlow或者FATE, 包装一下然后推向市场。开源框架作为教学和研究的工具教育了市场,让大数据行业接受隐私计算相关技术,这是功不可没的。同时,开源并不意味着安全,因为对“黑客”或者恶意者也是开源的,在漏洞被暴露、被修补之前必然面临更多的攻击。对于政府机关、工业大数据、金融机构等涉及国家安全的领域,真正要做到安全还是需要经过专业第三方的代码安全审计、权威机构的产品认证和检测。隐私计算项目是否具有自主产权、具备核心技术能力,才是更加重要的安全保障。如果基于TEE、Tensorflow这些国外的核心技术,有可能从一开始就埋下了定时炸弹。
- 建立互联互通行业标准
虽然隐私计算的目标是打破数据孤岛,但目前却由于不同技术流派和框架不能兼容而形成新的围墙。
因此,行业领导者不仅仅建立隐私计算的框架规范,还需要建立互联互通的接口规范。联邦学习、安全多方计算等都需要对应的接口规范。一个机构无需部署多个系统,而是通过一套接口服务,与外部各种机构进行大数据协同的连接合作。