前言:
本文为蚂蚁集团隐私智能计算技术部技术总监:袁鹏程,在“隐语开源社区meet up 北京场“的分享内容。由隐私计算基础技术的解释与对比入手,分析了当下隐私计算框架面临的各种问题,带我们理清了隐语整体架构与分层,从而清晰地展示了隐语框架应对各种问题的能力。此次不仅带来了隐语后续的技术升级与功能兑现预告,还分享了运营层面开源社区的工作组规划及职能划分。点击可跳转观看:全场内容精华+视频
小程序
大家好!今天分享的是隐私计算框架“隐语”介绍以及规划和展望。我是2020年加入蚂蚁的,目前在负责隐语开源的工作,主要做隐语开源社区的建设,隐语行业生态的建设,以及隐语对外技术影响力。另外,此前在人工智能、大数据领域深耕有十余年,从事技术研发和管理工作。
今天分享的内容有三部分,第一个是介绍隐私计算的技术路线,也会简单介绍一下隐私计算概念,对隐私计算技术的理解以及一些技术路线的比较。第二部分会介绍一下隐语整个设计思路。第三部分是来介绍隐私计算后续在社区以及技术能力上的规划。
第一部分是介绍下隐私计算的技术路线。前面袁博老师以及鸿程老师都分别在基础技术上做了介绍,我之前也看了一下调查问卷,有很多同学反馈对于基础理论还想有更多的了解,这里温故而知新下。第一个问题是,什么是隐私计算?我们去看一个简单的计算过程,数据传输到一个计算系统中产生一个结果。在这个过程中,跟数据保护和隐私保护相关的,第一个是数据通过通信传输到计算系统中,它需要进行加密的保护,属于一般传统安全范畴,其实是各种通信安全。第二是在计算系统中要做到数据安全和隐私不被泄露的情况下,还能够去做这种计算,这里面是隐私计算核心内容。目前行业关于隐私计算,其实没有一个明确的定义,前面袁博老师介绍了广义隐私计算的概念,我介绍下对狭义隐私计算的理解。
什么是隐私计算呢?我们认为是:完全依赖技术手段实现数据在参与方的可用不可见,推进数据在安全和不泄露隐私的情况下的流通开放。这里面有几个要素,相比传统数据安全的方式,这里面的隐私计算是完全依赖技术手段的,也就是说它其实是不相信人的,第二点是它要实现参与方之间的可用不可见,也就是说,它要去防备参与方之间会存在攻击的情况,第三个是去推进数据的安全和不泄露隐私,也就是说它要保护数据价值和用户的隐私,最后是关于流通与开放,这两年国家关于促进数据要素流通方面,出台了非常多的政策、文件,隐私计算技术其实也是在这个背景下发展起来的,我们也是希望通过隐私计算的技术,能够去促进数据的流通和开放。
这是一个简图,把隐私计算的各种技术通过这张图做一个简单的描述。隐私计算的技术是比较多的:多方安全计算是不会泄露中心信息的一种计算模式;可信执行环境是基于硬件的技术,会在硬件中划出一个飞地出来,即使是机器拥有方仍然不可能拿到隐私数据;同态加密有一些很好的特性,它把数据进行加密后进行计算再Reveal到明文计算之后的结果,和直接明文去做计算的结果是一样的,同态技术使得密态计算成为可能,在隐私计算里面应用也非常广泛;联邦学习其实是一个分布式机器学习的技术,它之间会进行中间信息的传递,可能会包括一些隐私的信息,因为我们知道,隐私信息会携带一定的信息熵,这里可通过差分隐私计算的技术,对中间的信息进行保护,减少信息相应的泄漏。当然差分隐私技术也可以用在保护计算结果发布的环节。
这张框图是对常见的三个基本技术路线的总结和比较,维度会很多,图也非常详细,今天也没办法详细展开,分别从用户开发成本、用户接入成本、计算性能、计算精度、数据参与方、数量、数据控制力、安全性、硬件成本和自主可控这9个维度去进行对比。图中有三种颜色,蓝绿色是讲优势,黄色是偏中等的,红色是偏劣势。我们可以看到,这三个技术里面,MPC和联邦学习这两个技术,相比TEE技术,他们其实在数据的控制力、硬件成本和自主可控上是具备优势的,然后前面的开发成本、接入成本、性能、精度、参与方等等这些方面,其实是相比TEE技术来说是有一些劣势的。MPC和联邦学习相比,在安全和性能上面也是会有一些差异。这里也就说明,各类技术各有优劣,没有一个单一的技术能解决所有的问题,这也是这个行业的现状,有非常多的技术出现,没有一个技术说不行,也没有一个技术说非常行的。前面简单回顾了一下隐私计算一些相关的基础技术的概念。下面介绍隐语的设计思路。
蚂蚁从2016年就开始做隐私计算,那时候大部分人还不知道隐私计算。我们是通过蚂蚁内部业务,包括前面方勇老师介绍的蚂蚁保业务,还有一些其他在风控等业务上的实践,同时也对行业去做了一个调研,也看到了目前行业的框架的一些问题,我们在这些基础上进行了一些思考。第一个问题是技术路线多、架构不同,这个前面讲到了,那么多技术路线,没有一个技术路线OK,就会存在我一会儿可能用这个技术路线,而这个技术能解决我的问题,可能再换一个场景就要新的技术能解决我的问题,那对于理想的隐私计算架构,就希望他具备完备性的要求,希望能够在一套架构下能够去支持这样的主流的一个技术框架,并且考虑到密码学技术也在发展,包括隐私计算也有可能会有很多新的技术出来,随着技术发展过后,会出现新的技术的时候,我们也是希望能够去扩展,支持这样的能力。第二个问题是很多框架在底层和上层的应用上,耦合是非常严重的,它不太适合于去做技术升级。那我们这样去,我们知道做软件系统来说,去做升级迭代是一个非常常见的事情,一旦耦合严重,做技术迭代就不敢轻易尝试了,对于理想的架构要求来说,就希望底层和上层能够去解耦,这样方便软件产品的持续迭代。第三点对于开放性的要求,我们现在其实可以看到行业里面其实做隐私计算系统的一些专家,它其实既要懂AI的算法,又要懂安全的协议,这个门槛是非常高的,其实也不利于隐私计算的技术能够被广泛的应用,不利于更多的人能参与到这里面来。因此我们认为理想的架构应该具备更好的一个架构分层,那做安全的人只要关注于安全,它安全协议的这种研发,这样自动就能应用到,更方便应用到各种算法中。第四个业务集成,其实前面蚂蚁保的方勇老师也提到了,业务集成这一块是进行业务落地,隐私计算业务落地的能力是非常重要的,那就要求架构需要有良好的接口设计,能够进行一个合理的模块划分。最后一点是关于规模化生产的,我们知道当前行业的隐私计算的架构和系统基本上还是面向POC的,因为从我们看到的视角来看,真正去应用到规模化生产的还是非常的少,但是隐私计算这个行业要去做到更好的发展,是需要这个规模化的生产能力能够去提供出来,才能够去助力于这个行业更健康的发展。我们认为理想的架构应该是具备,比如说:灰度、回滚、弹性扩容、多版本管理这样的一些规模化生产的能力。
这是隐语的一个架构图,可很多的同学和老师也都知道,我们大概是分成五层,最底层就是资源管理,因为隐私计算系统其实本质是一个分布式的计算系统,数据管理它其实主要是去做一些分布式的数据管理以及分布式的计算资源的管理、任务调度以及分布式的网络通信这样的一些管理。 再上面一层是明密文计算设备和原语,我们看到很多MPC、联邦学习的一些技术,会发现他们本质就是一个明密文计算的一个协议,隐语是提供了一个明密文的计算设备,只不过差异点在哪里呢?我们举个例子,MPC在运行过程中都是做的密态计算,对于联邦学习有很多的本地计算,加上一些密态的计算,来做安全聚合和XGB的时候用一些同态的方式做一些梯度的传递等等,最后总结下来,这样的技术其实可以认为是明文和密文转化,这里面隐语就提供了这样的一些能力。下面是明密文的转化调度,提供一些并行明密文计算的调度,以及包括一些有时候一些计算图的编译优化的能力。最上面一层是隐私计算算法,平常看的比较多的,比较说常见的SS XGB、SS MPC、PSI,还有包括hetero LR,Secureboost等等一些联邦学习的算法,这里面是应用算法这一层的能力。最上面这一层,我们提供了用户开发或者用户去集成的能力,这里面我们会提供两种能力。第一种是可适化的操作界面,提供的是一种低代码的开发能力,对于使用者只要实现拖拉拽的方式实现比较复杂电模流程的开发和设计,几乎就不用写什么代码。另外一种是,对于开发者来说,它可以提供本身就具备一些良好的开发能力,它可以基于隐语提供的开放接口实现想要的算法能力。隐语分层设计也是基于我们前面看到行业遇到问题的思考。
最后大概介绍一下隐语的规划。简单回顾一下我们在前不久发布的0.7版本,提供多方面的能力。
其中包括多方安全计算,多方安全计算在这方面我们支持了3PC机器学习的算法,就包括LR、XGB、NN、特征工程的算法,同时也支持2PC LR算法,就是基于鸿程老师讲的CheetAH协议基础上开发的。支持了隐私集合求交新增发现PCG-PSI,这个是今年刚发布的论文,隐语也是首个实现论文方案的隐私计算框架,这个新的PSI无论在于网络比较弱的情况以及网络比较好的情况下,相比现在的PSI技术可能都有一定的优势。我们还自研了一个DP-PSI。我们现在发现在看PSI技术的时候,求交的结果是双方可以看到的,这件事情上大概率是不会被用户授权同意的,也存在隐私授权合规的问题。DP-PSI提供了一种思路,我求交的交集可能并不完全真的是交集,并不能确认那个交集一定是对方的ID或者用户,但肯定是自己的,这是隐语自己的功能,我们也把相关的论文发布到网上了。第二个是联邦学习的能力,我们提供了数据混合切分场景LR的算法,包括水平联邦的一些多种策略,non-iid优化、通信优化。水平和垂直联邦DNN差分隐私保护增强。第三我们在基础设施做了一些优化,在HEU同态这一块增了一个HEU.numpy模块,相比原生的性能更好,另外在SPU这一块也做了性能和内存的优化,包括cheetah矩阵乘法的优化等等。我们收到大家对于文档的反馈,文档也是开源中比较重要的部分,我们在原来英文文档的基础上也新增了一个中文的文档,包括对文档结构也做了一个优化,也希望大家看起来更舒服,在整个算法和架构说明上也做了一个补充和丰富。
这里对隐语下个版本的内容也做个预告,金融行业对于数据的安全性是非常重视的,蚂蚁内部之前在金融业务中应用也比较多,所以我们考虑业务方基于隐私计算系统进行金融业务全链路改造的时候,它需要全链路的能力,我们对这样的一些能力进行了优化,并且可能在下面的一个版本中进行发布。这个版本大约会在11月中旬发布,这个图大概意思是说,一般来说对于一个典型的算法开发的流程来说,会分成特征加工、策略研发、机器学习研发相关等工作。特征加工包括数据探查、特征策略研发、特征策略服务,机器学习包括域处理、模型训练、模型服务这样的一些能力。做过机器学习相关的业务算法研发的同学会知道,做机器学习的算法的工作可能只占20%,大量的工作都在前面寻找合适的特征,以及对特征做处理,80%都在前置的相关工作上。同时对一个系统来说,我们讲安全,机器学习这块安全了,别的就不关注了吗?不是的。安全最差的地方会成为自己系统安全水位的基线,我们其实对于前置的,包括预处理、数据探查的能力也提供了MPC即可证安全的算法,然后能帮助业务真正在应用的时候,保证数据的安全。
这里面讲一下隐语发布以来到未来半年多的RODAMAP,隐语在今年7月份到9月份的时候,分别发布了v0.6和v0.7两个版本,我们在接下来11中旬会发布一个新的、可能是小版本,然后计划在Q4末,以及明年Q1末,包括到后面半年左右的时间,我们会努力把隐语我们之前按揭的功能能逐步兑现出来。
前面讲隐语分层是五层,目前开源主要是中间的这三层,产品化和资源调度目前还没有开源出来。我们详细看下面的这个图,中间的三层我们在这里面弱化了,我们前面讲产品化和资源调度这一块,我们在今年9月份WAIC会议上发布了一个体验平台,也受到了非常多朋友的关注,包括很多人去申请资源去体验。这一块的能力其实已经有了,代码开源我们是计划在明年Q1,因为还有一些能力还在建设中。这一块是平台和框架资源调度的这个框架这一部分内容。
下面可能会相对复杂一点,是在几个大框图上展开的部分,今天会议之前就有一些朋友说到,感觉隐语在7月份开源的时候,架构设计很好,但是看代码的时候发现能力还不完备。这里就给大家交个底,我们到底支持了哪些详细的功能,基本上可以在这个图上的功能侧看到,当然还有一些,我们会持续做性能优化、安全优化的东西,没办法在这上面完全体现,后面大家会看到我们在这一块优化的能力。图的最上层,也就是隐私计算算法这一层,我们把算法整体分成三块(多方安全计算、联邦学习、可行执行环境),多方安全计算这一块我们又分成两部分,叫机器学习部分以及数据分析部分,机器学习部分我们支持两方协议,三方和代理的模式也是支持的,另外这个单方的一些协议,单方很多时候是一个特种工程的操作,同时我们也希望支持一些原生的框架,包括TF,Pytorch,现在已经支持了JAX,另外还有一些推理能力。AI这块,两方“绿色框的”是之前已经支持的能力,单方我们会在接下来发布,金融行业里面的全链路的开发需要用到。推理这一块可能要稍微晚一些,可能要到明年Q1的时候才会去提供出来。在BI这一块,第一个是PSI。PSI有非常多的能力,我们之前已经发布了KKRT-PSI,ECDH-PSI,另外还发布PCG-PSI,DP-PSI的能力,后面也会去做npc-PSI,包括malicious,包括VOLE-PSI。稍微讲一下npc-PSI,比如说做3PC的PSI,有一种说法,我先两两求交,然后再去求交不就行了吗?可以吗?结果是可以的,但是两两求交它的结果会导致我们本来三方求交只要最后的交集就行了,两两求交知道了其中有一方它的交集了,相当额外透露了一些信息,所以如果是做3PC或者NPC的PSI就不会出现这种情况,这其实要单独再做实现的。PIR我们后面就把Index PIR和keyword PIR可以提供出来。很多人提到SQL能力,我看到很多厂商对这个也很关注。包括前面蚂蚁保的方勇老师提到,蚂蚁保目前主要应用的就是SQL能力。SQL这一块简单来说,我们是希望别人能像写SQL语言一样去使用隐私计算这样的技术,那它对于开发者来说使用的成本就会小很多。pandas这个能力是基于python的,我们也做了一些,但这个能力还不算很完整。SQL这样的接口能力我们计划在Q4底的时候会把部分的能力发布出来,并且以Q4末这个时间基线,后面逐步把更多的能力都会释放出来。能力上就是常见各种的计算语法,max/min/mean等等这样的一些操作,还包括未来会提供算数、算法、比较、逻辑的算法以及聚合算法等等,因为算法太多,无法全部列出来,我就给了一个大概的比例,我们希望今年能提供一部分的能力,到明年Q1的时候提供更多的能力出来。SQL能力,目前来看虽然有很多的厂商可能也提供了,但是隐语在这方面还是做了一些突破,比如说现在大部分厂商要不是用TEE的方式去做,要不就是用软件去做,用tee和明文是一样的,用软件的话,做max/min/mean这些好做,但是要做group by这些复杂的操作,这个性能是非常低的,我们在这一块也做了一些技术突破,能够做到让SQL在常见场景下的设备是可用的。第二是联邦学习,联邦学习这一块包括水平、垂直、混合,包括有一些推理的能力,这一块再介绍一下。水平这一块我们现在已经支持了XGB和LR,包括在安全聚合这一块就支持了FedAug,包括FedStc、FedProx的算法,未来也会支持更多的算法。因为在水平里面的安全聚合的算法,频繁有各种论文出来,我们也会对一些比较好的算法去做实现。在垂直领域其实我们目前做的多的主要是在DNN和GNN的场景下,简单来说主要是用了Split Learning的方式去做,因为我们在多方安全计算里面XGB,其实是有一些能力,性能也能达到生产的要求,所以很多业务中XGB算法我们在大部分的情况下用多方安全计算的XGB就够了。包括混合场景的算法,我们现在在一些业务中会存在,有一个数据提供方它的数据量特别大,另外的数据方可能比较小,但是也有很多提供其他维度数据的业务方,他们想一起联合起来去做计算。举个例子,蚂蚁和多个银行之间做合作,每个银行,特别是它自己独立的用户,但是把多个银行他们提供的数据维度是一样的,把数据聚合起来再跟蚂蚁的数据去做这样的计算,蚂蚁的数据跟银行的数据是一个垂直的场景,多个银行之间是水平的场景,这里面就是一个混合场景的需求目前我们已经有一些场景是有这种需求的。还有一些推理的算法,在更后面会提供出来。TEE算法就和前面的这种有比较大的差别,前面是每一个算法都要独立的去实现,但TEE不用,这是它的优势。我们把SQL的能力和模型的能力分成两套系统提供出来。在明密文混合调度这一块已经支持了分布式调度的框架,后面会去做一些多控制器的模式,包括节点分布式的新能力,后面随着SQL的开源会把SQL解释器的能力也会做出来,再逐步做机器学习的编译器。最后在明密文计算设备与原语这一块,MPC设备(SPU),同态的设备(HEU)已经开源了,后面会把TEE的设备以及TECC设备的能力逐步开源出来。SPU这一块已经支持了semi-2k、APY3以及cheetah协议,后面会去做一些SPDZ的协议,包括零知识证明的能力。同态这一块支持了半同态的paillier、全同态的BFV、CKKS算法,后面会做全同态的TFHE算法。明文设备就是本地计算了,现在python已经支持了,随着SQL的开源也会把SQL的能力逐步提供出来。还有一个隐私保护的能力,现在提供了DP的能力。另外我要说明一下,我们其实在多媒体的隐私保护上其实也有专门的团队在去研究,并且在支付宝的很多场景下,比如说大家用刷脸支付的时候,很有可能就是用到了我们提供的多媒体脱敏技术来去做的,再后面我们会把在人脸、语音脱敏上的算法能力也会逐步开源出来。这个是大概的大图,我知道有很多人很关心,这里的按揭能力就和房贷一样还是得慢慢还。
下面聊一聊开源社区,有很多朋友关心怎么样加入到隐语开源社区,今年7月份的时候,隐语开源发布的时候,成立了一个隐语开源的指导委员会,有五位成员,云大所的魏所长,蚂蚁的副总裁韦韬,然后浙大网安学院的院长,ACM Fellow,IEEE Fellow的任奎老师,还有上海交通大学密码学教授,也是非常有名的密码学专家郁昱老师,另外还有一个非常有名的开源项目LVS的项目创始人章文嵩老师,他现在也是高瓴资本的合伙人。这是作为开源的顾问团队来指导隐语开源社区的建设。后面我们计划去成立更多的工作组,促进隐语社区更好的氛围。这里面就包括,项目管理小组来管理日常的事务,另外还计划成立安全工作组。安全是隐私计算一个非常重要的话题,隐语在做开源的时候,我们代码写好,自测好了过后并不是马上开源,在这个过程中,我们内部会有多个团队,对隐语开源的代码进行各个维度的审核,包括算法安全,算法安全就是算法的原理、算法设计安全,以及到代码级要去做PR,要确保这个实现也是安全的,随机生成也是安全的,要做到非常细的力度。我们在做算法安全这一块有专门做隐私计算、算法攻防的团队帮我们去做这件事情,目前在行业里面有隐私计算算法攻防能力的团队并不是很多。另外包括系统安全,包括软件开发的各种漏洞,包括平台和系统的各种其他的一些安全问题。对于安全它一直是隐私计算一个永恒的主题,应该说可以说只有进行时没有完成时,这个事情肯定是我们一直关注的,所以我们也希望有更多的专家和相关的行业从业人员能够加入到这样的安全工作组里面,对隐语的安全性进行一个更严格的把关,我们希望隐语开源的算法是能够经得起考验的。第二个是开发工作组,隐语社区希望说有更多人参与,我们前面的期货,如果有更多人参与进来,我们的期货也可以早点兑现了。我们其实也希望有更多的同学能够加入到,成为我们的Contributor、Committer,讲这个想到我之前参加了一个开源会议,有人提到,说贡献代码对我有什么好处吗?今天现场因为有很多学生。其实这个好处还是很大的,贡献代码隐语目前也没有钱给到大家,但是后面在你的简历上说隐语里面是什么样的角色,贡献了什么样的代码,什么样的功能,我估计如果在隐私计算行业里面,在目前找工作比较难的背景下,找一份隐私计算的各种算法开发或者系统开发的工作应该还是很easy的。
最后一个讲的是应用工作组,前面有老师也讲过,你再牛的技术你一定要落地,才能让这个技术变得更可用。我们希望更多合作伙伴基于隐语,能够把隐语的技术应用在,包括金融、医疗、政务、交通等一些行业里面,然后确实能促进这些用户能够更好的去使用隐私计算解决问题,总之希望通过这种方向能够去加速隐私计算的这种案例能够被广泛的认知和应用,还希望通过应用过程中,能发现实际中的很多问题,来迭代隐语这样的一个建设,能让隐语可以在更多的场景中更好的用起来。这个是我们想去建设的隐语社区的情况,这里面也非常希望,包括现场和线上的很多朋友能够去加入到隐语社区里面来,我们一起把社区建设的更好。还有就是最近的一个隐私保护计算大赛,在几个月前就已经开始了,有七个赛道,MPC、TEE、ZKP、DL、智能营销、智能医疗、智能反诈,后面三个赛道报名已经截止了,前面四个赛道报名是现在最后几天了,现在报名还来得及,隐语也是隐私保护计算大赛官方推荐的开源框架,目前已经有参赛队伍基于隐语去做了赛题的内容,然后也在跟我们去持续的做这个交流。这个是大赛的官网地址http://www.wppcc.net,有兴趣的同学可以去关注下。我的内容基本上就是这样的,隐语目前是在github上进行了开源,在gitee上做了mirror,在CCF的gitlink上也做了mirror,大家可以关注一下。