0
图片来源:阿里云正版图片
雷锋网按:本文来自数牍科技创始人宋一民(Ethan),数牍科技基于数据科学与工程、密码学(多方安全计算、差分隐私 etc.)、联邦学习等技术体系,帮助企业间进行安全隐私的数据协作。Ethan在成立数牍科技之前,曾就职于 Facebook Ads,作为tech lead从零到一的主导了Facebook Ads 与多个五百强公司的基于隐私保护的数据协作项目,后又任职于数据隐私组主导了多个数据隐私安全的工作。Ethan认为,数据隐私的保护贯穿数据流通过程,是一种动态的数据安全;数据隐私保护与价值挖掘并不矛盾,数据隐私保护的落地长久来看会推动新的数据使用范式诞生,而规范数据使用可以促进数据流通更顺畅,在汇聚更多数据的基础上迎来价值挖掘的下一个爆发点,带动AI的基础设施革命。但隐私计算行业目前仍处于早期阶段,Ethan在这里分享了他对数据使用的思考,以及平衡隐私保护和价值挖掘常见的技术实践。
以下是分享内容的简要提纲:
数据流动的合理性和必然性
流动链条中的数据归类
数据隐私和价值挖掘的平衡:给予数据拥有方控制力
数据拥有者的控制力如何赋予?
数据控制力管理的技术实践
一个数据从生成开始的整个生命周期中,可能会在多个机构或节点间流转,在节点间进行流转的过程使得数据形成了一个网络,就像许多企业内部存在数据流动的data pipeline,在更宏观的层面也存在类似的data flow。
在客观现实中,数据流动存在它的合理性和必然性。一方面,对于任何一个个体,他的数据会在不同的场景中产生和被采集。比如使用打车软件会产生位置移动的信息,住酒店会产生住宿信息,在淘宝买东西会产生购物信息等,很难想象会有一个实体掌握关于这个个体的全部数据;另一方面,挖掘数据的过程也存在专业性的问题,在不同场景中根据不同需求,挖掘可能很难完全由同一个实体来完成。因此往往为了充分的挖掘数据价值,需要尽可能的将多个数据产生的源头,经过多个节点进行汇聚,加工处理和使用。
从产业的角度来看,我们常形容互联网和AI的关系是“连接产生数据,数据产生智能”,在连接和智能决策的过程,其实也是数据流动汇集、价值挖掘的过程。更丰富的数据维度和更好的数据覆盖对于模型的质量也是至关重要的。数据作为AI的原料,其流动性也是让AI更好发挥价值的基石。
数据的流动性具有合理性和必要性,而流动过程中的数据在实践中通常是被如何被归类和定位的?
数据在经过不同节点的过程中,会在不同的上下文环境中被提及:比如数据的收集,存储,使用,以及对应的前述行为的转让。收集主要对应原始数据的采集或者形成结构化数据的过程,比如将用户操作 App 的动作形成日志传回服务器端,或者比如将用户产生的评论进行汇总。存储和使用一般都是按字面意思对数据进行保存或者处理。为了进行数据的聚合或者借助外来力量对数据进行挖掘,可能会涉及将这些数据的存储或者使用权转让给其它方的过程。另外考虑到这些和个人数据相关的不同上下文,普通用户在签数据授权的时候也可以额外关注一下授权协议是否清晰的定义了这些不同的范畴,比如某 App 本身,对什么数据、进行不超过多长时间的存储,并且这个存储权不会转让给除某 App 本身的其它实体。
一般收集或采集到数据的一方被称为第一方数据,第一方数据为了更好的用数据服务使用者,往往会在授权中要求更多的权限。比如在数据使用权里可能会要求通过数据对个人用户的信息流进行更好的匹配,这里面可能就包含了使用原始数据(如用户对哪些帖子进行了点赞)所进行的优化,也可能包含了将一个用户的信息用于另一个或一些用户。之前提到,完全由一个实体从头到尾闭环能完成的事情非常有限,因此这里面会涉及到将用户的一些信息(可能是原始信息,可能是聚合或者泛化信息)转让给其它实体协助完成的情况。这些从第一方数据所得数据的实体被称为第二方数据。
受限于数据本身商业价值或相应法律或PR风险的考虑,在这个数据转移的过程中第一方会希望尽量控制减少数据本身的泄露。一般通过协议的角度可能是规定数据使用的范畴,规定数据可以被存储的时间等。通过技术的角度可能是去除个人识别标识,做一些预处理比如泛化(将给定的位置从一个具体的位置变成处于某一个圆的范围内)等,后面会对这些方法做一个简单的描述。除第二方数据以外,还会存在一些根据某些特定目的而将大量原始数据进行汇聚的实体,目的可能是比如进行某些统计分析的研究(比如所有人的存贷比,比如所有人的年龄分布等),也可能是某些特定研究(比如某类药的安全使用范围)等,这样的实体可以被称为第三方数据。
除了这三方的数据以外,还存在公开数据这个范畴。公开数据的定义很难做到清晰,不过一般认为是任何一方可以通过爬虫直接从互联网获得的数据(没有经过数据拥有者的直接授权)。但在现实情况中,判断公开数据的流通是否有风险往往也和公开数据被获取的一方对于这种获取行为如何看待相关。注意这里所指的公开数据被获取方并不一定是数据的拥有者,因此也会出现在谈及数据的收集,存储,使用之外的另一个上下文:公开。即第一第二或者第三方实体是否获得了公开该数据的授权。
数据自由流动中的价值挖掘能让AI更好地发挥价值,但同时,数据流动过程中不经节制的应用,也会带来数据隐私侵犯的隐患。最近多个金融大数据公司遭到立案调查,从数据源的角度来看,其中一个重要原因就是该类公司的爬虫对触达的数据未经授权进行存储或超出了约定的使用范围。举例来说,如果有一个 App 声称帮助用户进行多个金融账户进行管理并综合呈现个人现金流等信息,为了帮助 App 呈现这些信息,用户就需要提供这些金融账户的访问权限。但如果在这个过程中 App 对个人银行账户内的所有信息都进行了抓取和存储,并将这些信息提炼出来的标签出售给第三方或利用标签开展新的业务。由于这些过程未对用户进行告知并获得许可,都是一种对数据使用权的滥用。
从当下的工程实践来看,解决挖掘和隐私的两难,可能目前最好的解决方法是给数据拥有方一个控制力,包括对数据收集的授权和收集后保存和使用的控制。国际上普遍进行的实践或者规范(如GDPR)都倾向于对个人拥有的数据及其数据的各种上下文环境进行准确的授权。比如GDPR中就会要求第一方数据要明确“自己采集到了哪些数据”,当用户有了这个明目之后,应当有权来选择“保留哪些删除哪些”;在此基础之上,还比如会要求对数据处理方法作出明确问询和授权,“比如通过采集到的用户点赞的帖子的内容和类型来学习用户的兴趣爱好”;这些兴趣爱好作为标签,虽然不是原始数据,仍然需要用户进行逐一的明确授权。
当我们通过给予数据拥有方控制力的方式去平衡数据价值挖掘和隐私保护,在实践中又会出现一个新的挑战 — 如何在不侵犯个人隐私的前提下,获得个人的授权。举个例子,比如在获得兴趣爱好标签授权的时候不太可能有用户可以预先对近乎无限多的兴趣爱好进行一一授权,一般的过程也是首先由数据挖掘方获得了某个标签,再针对这个标签进行问询。我们在过去的工作实践中见过的最好的处理方法是首先对多达三到六百万常用的兴趣爱好做知识图,将这些兴趣爱好的包含关系或者关联性整理出来;之后再对各类兴趣爱好通过找到包含关系中处于包含当前爱好的比较泛化的那类爱好进行问询这样点到为止的方式来完成。即便做到这样,虽然消耗了巨大的资源并且有很高的门槛,也很难说做到了完美,因此也就不难理解多数公司在应对GDPR或者相关合规的问题上面临着巨大的挑战这个事实。
数据拥有者控制力的核心意义在于让每个拥有者在挖掘和保护之间选择自己的平衡点。为了给拥有者控制力,第一步要讨论的是谁是数据的拥有者这个问题。一般对于个人数据来说,无论是个人的身份识别信息或者生物统计信息这样对个人进行描述的数据,还是用户的行为信息(比如访问了哪些app,在app里面做了哪些事情)或者由这些行为信息所得到的新的标签这样的用户生成数据,都会认为拥有者是这个人本身。尤其对于产生的标签数据来说,有些情况下认为由于标签是比如数据采集方进行学习而得来的因此拥有者是采集方这个想法也不应该是被广泛认同的。
围绕拥有方是产生数据的个体这条线去思考,在整个数据生命周期链条里面就存在对第一方数据的控制、第二三方的控制等不同的问题。对于第一方来说,由于是数据的采集者,涉及的方面也是最多的。Facebook在2018年的F8上宣布一个针对给用户控制力的功能叫Clear History,里面描述的愿景基本理解为可以允许用户在采集,存储和使用三个方面给予控制力。首先用户会看到Facebook从哪些合作方渠道获得了用户的什么样的数据(采集可见),之后允许用户决定是否可以在广告投放中进行使用(使用控制),再次允许用户对这些数据进行立即删除的操作(存储控制)。
这个功能听上去简单,但实际上对于一个正在运转的机构来说,要涉及到鉴别所有的数据来源、在复杂的数据流里面识别各类数据、以及对某个数据的所有存储位置进行控制这几方面能力。对于小机构来说资源和投入产出比肯定是不够的,对于大机构来说由于内部数据流太过复杂,为了实现它往往会需要做整个系统的重新设计和实现,代价也不言而喻。
举例来说,为了实现Clear History:首先为了在几万PB的数据仓库中甚至更大的冷存储中找到所需要控制的数据,就需要做整个数据集的语义识别(很多时候由于表单的schema并不统一,所以直接使用metadata很难准确的判断数据类型),这个过程类似给数据打标签。为了可以覆盖更多的存储点,会需要根据已经得到的数据标签对数据流进行端到端的识别。
当所有的存储点识别完成后,为了实现功能中的实时删除,还需要在重新定义数据结构的基础上配合一个高吞吐量的中心管理系统。这个过程协调了许多内部部门,消耗了大量的资源,耗时一年以上。不难看出,在企业间的数据流通中也存在潜在的类似挑战。
除第一方数据以外,在授权第二方的过程中,可能大体会分为两种情况:第一种授权的目的可能是协助数据挖掘,第二种授权的目的可能是协助数据变现。在第一种情况下一般会只授权使用,不授权再次转让,并且对存储进行严格的控制(控制在使用所需的存储范围内)。比如说,对消费行为进行建模的第二方数据,往往会存在过去两周和过去两个月这样两种时点,超过两个月的消费行为一般价值也微乎其微。那么在授权存储的时候一般会限定存储时间不能超过2个月(外加一个比如24小时的灰色周期)。在数据使用的授权上,一般如果对数据挖掘的目标及使用场景进行严格的限定,一方面可以保护授权方在竞争法层面的权益,另一方面也可以间接保护数据拥有方的个人隐私。从保护个人隐私的角度来讲,假设授权的目的是计算某些用户的还款风险从而帮助授权方决定是否放贷的场景,如果不限定挖掘的目的只能限于该合作方之间的征信目的,则可能会被第二方使用同样的数据用于与其它合作方的营销场景中作为对于个人现金流的判断的一个因素。
对于第二种(数据变现)的情况,会有比如通过特定的场景或产品进行变现以及通过售卖标签进行变现不同的类型。这里不对各种数据变现的方式进行展开,但想强调一点的是在变现的过程中需要关注的是原始数据在第二方或其它地方的沉淀情况。因为虽然一般授权方会通过限制原始数据的转让(从而保护个人隐私),但仍然会允许加工过的数据进行流通或通过某个场景达成目标。无论是哪种方式输出的结果,都难以完全地避免数据的信息被沉淀,大量的沉淀会间接的导致原始数据被转让。举一个数据泛化中沉淀结果的极端例子来说,假设我们允许对某一个人的常见活动区域输出某个较大的半径圆范围,多个这样的半径圆就可以逐步缩小对这个人活动区域的判定。
公开数据和前述的最大区别是,由于已经公开,只要是获得了数据拥有者对于公开的授权,那么之后不会再对公开数据的采集者进行一一授权。采集者获取公开数据的途径一般也都是通过爬虫这样的主动收集的形式,具有一定的收集和清理/整理成本。这里面一个有意思的地方在于,有一些数据并不是严格意义上的被公开数据,或者说只希望在某个特定范围内被公开。举例来说社区的运营者可能只希望社区的用户生成内容(UGC)在社区内进行公开,而不希望流传到互联网上。典型的这类意愿的表述形式有类似于Robots exclusion standard,主要用于向爬虫声明网站中哪些内容不能被读取。除此之外公开数据还有可能仅仅是可以被读取而不能希望被存储的,举例来说比如社交网站中的朋友清单。朋友清单被存储和对比之后就可以得到诸如”哪些朋友取消了对我的关注“这样的信息,这里面也存在可能侵害了别人的个人隐私的问题。一般为了防范这样的越界爬取行为,公司可能会有针对性的组织自己的反扒窃(anti-scraping)系统,在协议范畴之外对数据的控制力赋予提供保障。
综上所述我们可以看到,赋予数据的控制力长久以来都面临许多挑战。且除了第一方数据外,沿着数据链条向下走,这种挑战会逐渐增加。这种现象很大程度上源于数据作为一种抽象存在,不同于普通物品的可以被复制,而被复制的数据的控制力将会被重新的定义和赋予。因此在数据流通的过程中将数据的各种属性分开管理和授权,尽量减少数据复制的出现,可以很大程度上降低在整个链条上管理控制力的成本。需要研究的不是如何把数据的链条切段,而是如何在链条的各个环节上更好的完成数据控制力的精细化管理。
前面提到,解决数据流通链条中赋予数据控制力的问题,主要的方式是针对不同类型的数据采取不同的方式,从宏观上减少数据使用就要复制的情况出现。那么,在具体实践里,针对个人数据的隐私保护,又有哪些宏观分类要素与技术手段呢?
宏观来看,数据可以分为个人识别信息(PII)和用户特征值两类。PII是指像可以在很高精度上在公开环境下定位一个人的数据,比如像美国的SSN,国内的身份证号,邮件地址,甚至有可能是电话号码。用户特征值基本可以理解为除了PII以外其它的围绕个人行为特征或个人特性(如生物统计学数据,人口统计学数据等)的数据了。用户特征值往往是数据挖掘产生价值的对象,而PII则是扮演着将多个特征值统一在一起的角色,由PII形成的图是数据链条上公司间进行数据融合的桥梁。
可以看出,对PII的控制是数据链条中形成控制的关键,没有PII的两个数据集是很难整合在一起使用的。针对PII的控制一般被称为De-identification,目前主要有比如脱敏(Data Masking),匿名(Anonymization)和k-匿名(k-anonymization)由弱到强三种比较常见的方式。脱敏
基本是将比如身份证的一部分隐去,从而在可以接近识别的前提下尽量保护数据的隐私,类似于对一般数据处理中的泛化技术。抛开脱敏过程中的信息丢失不谈,这种方法显然是缺乏足够的安全性的。因为只要存储和沉淀这样的masked data,就可以最终反推出原始数据的内容来,因此脱敏的方法在隐私要求比较高的环境中已经不再使用了。匿名指修改或者移除个人身份信息,隐藏数据和个人的对应关系。一般的数据源会自己生成并管理这种对应关系,由于个人身份信息的完全隐藏,安全性也会远高于直接对原始PII进行脱敏。同时的对于使用PII来关联数据集的这一属性,也可以靠修改内部的对应关系来组织使用匿名数据在外部进行数据集关联的操作。k-匿名在匿名的基础之上提出了个人识别不仅限于PII,任何数据形成的集合都能在一定程度上识别出一个人来,k在这里指的是用这个数据集进行识别时可以将识别的人群缩小为数量为k的集合。k-匿名是目前通用标准中较高的一类,其中k的值越高,隐私保护的效果越好,在Google和Facebook的内部数据管理中都有大量的使用。
用户特征值数据主要在价值挖掘中被体现,使用的方法宏观上可以分为使用原始数据和使用统计数据两类。比如某人在某时某地进行了某次购物可以被认为是原始数据,那么某人在过去的一天里进行了3次购物可以被认为是统计数据。在很多情况下避免原始数据的直接使用是不太影响价值挖掘的同时可以更好的保护原始数据的。类似的,在链条中传递用户特征数据时所使用的控制方法也比较多,常见的就有泛化(比如给定一个范围而不是具体的数值),统计(如前所述),加密(比如同态加密),差分隐私(比如给定的数值是原始数值的基础上增加一个噪音),合成(比如将原始数据转化为代表所需知识的模型或者由模型生成不同于原始数据的新数据)等等。
涉及多方数据的安全运算环境的方式可以从多种角度来划分。比如从是否存在可信的第三方(或者对于该第三方的信任成本有多大)来谈,使用比如GC或者OT来实现的MPC可以实现完全没有可信第三方的环境,而基于某些同态加密设计或者可信硬件的环境一般是强依赖于对于第三方的可信度的,而可信硬件环境还存在信任硬件产品供应方这一个额外的信任成本。除了上述的两类(MPC和可信硬件)之外,也存在许多其它方式在联合运算中保护原始数据的方法,其中就有比如合成数据(比如通过将原始数据转换为模型),比如差分隐私(巧妙的选择在原始数据上面增加噪声从而在保护原始数据敏感性的前提下不会过多的干涉运算本身),还有比如传统的泛化(只传输包含原始数据的一个范围)等多种方式。在实际应用之中,一般会考虑数据的泄露危害程度(比如PII数据的泄露会造成连锁的数据泄露反应),数据是否容易被沉淀(比如高时效性的数据相对不那么容易被沉淀)等在达到安全级别的前提下,尽可能的保持信息完整性(合成,差分和泛化都会在不同程度上损失原始信息)的同时提升整体系统的运行效率。
在介绍工程实践的技术类型的同时,我们也希望澄清在实践中遇到的两个比较常见的认知误区:数据隐私解决方案,不等同于单一的密码学或技术点创新,是一个结合了数据科学、密码学、联邦学习、云计算的综合工程,通常是技术组合的形式;其次,对于数据隐私比较受关注的MPC(多方安全计算),最近几年,MPC在数学原理上并没有特别大的根本性变化,更多是工程方面的突破与进展。
数据的流动性具有其必然性和合理性,也是AI在产业中更好发挥智能的基础,但数据价值挖掘带来便利的同时,也面临着隐私侵犯的隐患。从当下实践来看,通过给予数据拥有方控制力的方式是平衡数据价值挖掘和隐私保护最有效的方式;而流动中的数据链条复杂,通常需要在数据流通的过程中将数据的各种属性分开管理和授权,尽量减少数据复制的出现,从而降低在整个链条上管理控制力的成本。数据流动过程中的隐私保护,是动态的、过程中的数据安全与隐私,对应的技术实践也将带来新的产业和创新机会。对于这个新兴的产业,早期我们所选择的方案也要迎合市场的阶段进行渐进式推广,比如数牍科技的解决方案中就设计了数据流控制,数据拥有方可以控制数据流向为单向或双向,在现实环境中灵活应用。数据隐私规范和价值挖掘是双向作用、螺旋上升的过程,只有规范数据使用才可以在汇聚更多数据的基础上迎来价值挖掘的下一个爆发点。我们很期待未来十年,在隐私规范的推动下创造出新的数据使用范式,推动AI的数据基础设施革命,并能投入其中贡献一点自己的力量。
雷峰网特约稿件,未经授权禁止转载。详情见转载须知。