7 月 4 日,蚂蚁集团宣布面向全球开发者正式开源可信隐私计算框架"隐语"。
隐语是蚂蚁集团历时 6 年自主研发,以安全、开放为核心设计理念打造的可信隐私计算技术框架,涵盖了当前几乎所有主流隐私计算技术。
据介绍,隐语内置 MPC、TEE、同态等多种密态计算虚拟设备,提供多类联邦学习算法和差分隐私机制。通过分层设计和开箱即用的隐私保护数据分析、机器学习等功能,有效降低了开发者应用的技术门槛,能助力隐私计算应用于 AI、数据分析等领域,解决隐私保护和数据孤岛等行业痛点。
经过蚂蚁集团大规模业务以及外部金融、医疗等场景的成功应用,隐语兼顾了安全和性能。在发布会中,蚂蚁集团介绍了隐语的诸多特性。
我们需要怎样的隐私计算开源框架?
隐私计算是一个新兴的跨学科技术领域,涉及密码学、机器学习、硬件、BI 分析等,包括多方安全计算(MPC)、联邦学习(FL)、可信执行环境(TEE)、可信密态计算(TECC)、同态加密、差分隐私等多种技术路线,涉及众多专业技术栈。
作为兼顾数据安全和数据流通的关键技术,隐私计算可保证数据提供方不泄露原始数据的前提下,对数据进行分析计算,实现数据在流通与融合过程中的"可用不可见""可算不可识"。
业界根据过去几年的实践经验发现,隐私计算技术方向多样,不同场景下有其各自合适的技术解决方案,且涉及领域众多,需要多领域专家共同协作。对于从业者来说,隐私计算学习曲线很高,非隐私计算背景的用户使用困难。
在实际技术开发中,隐私计算解决方案往往是多个技术路线的组合,过程中涉及到很多重复性的工作。比如,如果开发者想使用联邦学习,就要使用 A 框架来做研发;如果想使用多方安全计算(MPC),那么又要使用 B 框架来做研发,如果想使用可信硬件,还要去熟悉所选硬件的架构才能真正开始使用。但现实的业务需求是,经常需要多个技术一起来使用,那么这时候就会出现繁琐、重复的开发工作。本是一项技术创新,却带来了技术"烟囱"的困扰。
更致命的是,在交叉技术路线的解决方案中,一个底层新技术的引入,会牵动上层所有工作,拖累技术迭代。引入一项新技术,也必定会改变上层很多东西,对于用户来说,所有的部署可能都要重复体验一遍,体感非常不好。
目前开源的隐私计算框架,如 TensorFlow Federated(TFF)、FATE、FederatedScope、Rosetta、FedLearner、Primihub 等几乎都是针对单个隐私计算路线。这些框架为隐私计算相关社区研究和工业应用都提供了一定支持。然而,实际场景中日益多样化的应用需求,以及技术本身的局限性,给现有隐私计算框架带来了新的挑战。
例如,首个提出"联邦学习"技术的科技巨头谷歌,也是 TensorFlow 的打造者,最近加大对一款新的平台 JAX 的投入,这一举动引起业内猜测:TensorFlow 将逐渐被取代。
对此谷歌的回应是:
近年来,我们发现,单一通用框架往往无法适用于所有场景——尤其是生产和前沿研究的需求经常发生冲突。
破解隐私计算开源框架难题
蚂蚁集团的隐语呼应了行业现状,开辟了一条通往隐私计算通用化之路。
隐语框架负责人、蚂蚁集团隐私智能计算部总经理王磊表示,蚂蚁从 2016 年开始做隐语,纯粹是技术驱动的前瞻性布局,是一个公司内部孵化的实验品。
隐语技术演进从矩阵变换开始,到可信执行环境(TEE),再到多方安全计算、联邦学习等,通过内外部应用场景中淬炼,性能上已能够支持较大规模数据集。在金融、医疗等领域也有成功的大规模落地经验、支持了浦发银行跨机构数据流通、浙江某三甲医院医保 DRG(Diagnosis Related Group,疾病诊断相关分组)改革,获得过中国信通院颁发的"星河案例"奖,CCF 科学技术奖科技进步优秀奖、中国网络空间安全协会"数据安全典型实践案例",入选了工信部 2021 年大数据产业发展试点示范项目名单等。
6 年技术积淀,形成了全面技术体系和成熟落地经验后,正式开源的隐语,优势是什么?
隐语的设计目标是使数据科学家和机器学习开发者可以非常容易地使用隐私计算技术进行数据分析和机器学习建模,而无需了解底层技术细节。其总体架构自底向上一共分为五层:
最底层是资源管理层。主要承担了两方面的职责。第一是面向业务交付团队,可以屏蔽不同机构底层基础设施的差异,降低业务交付团队的部署运维成本。另一方面,通过对不同机构的资源进行统一管理,解决业务规模化后的高可用和稳定性问题。
往上是明密文计算设备与原语层。提供了统一的可编程设备抽象,将多方安全计算( MPC )、同态加密( HE )、可信硬件( TEE )等隐私计算技术抽象为密态设备,将单方本地计算抽象为明文设备。同时,提供了一些不适合作为设备抽象的基础算法,如差分隐私( DP )、安全聚合( Secure Aggregation )等。未来当有新的密态计算技术出现时,可以通过这种松耦合的设计集成进隐私框架。
继续往上是明密文混合调度层。这层一方面对上层提供了明密文混合编程的接口,同时也提供了统一的设备调度抽象。通过将上层算法描述为一张有向无环图,其中节点表示某个设备上的计算,边表示设备之间的数据流动,即逻辑计算图。然后由分布式框架进一步将逻辑计算图拆分并调度至物理节点。在这一点上,隐语借鉴了主流的深度学习框架,后者将神经网络表示为一张由设备上的算子和设备间的张量流动构成的计算图。
继续是 AI & BI 隐私算法层。这一层的目的是屏蔽掉隐私计算技术细节,但保留隐私计算的概念,其目的是降低隐私计算算法的开发门槛,提升开发效率。有隐私计算算法开发诉求的同学,可以根据自身场景和业务的特点,设计出一些特化的隐私计算算法,来满足自身业务和场景对安全性、计算性能和计算精度的平衡。在这一层上,隐语本身也会提供一些通用的算法能力,比如 MPC 的 LR/XGB/NN,联邦学习算法,SQL 能力等。
最顶层是用户界面层:隐语的目标并不是做一个端到端的产品,而是为了让不同的业务都能够通过快速集成隐语而具备全面的隐私计算能力。因此隐语会在最上层去提供一层比较薄的产品 API,以及一些原子化的前后端 SDK,去降低业务方集成隐语的成本。
集齐当前主流隐私计算技术并供灵活组装以满足场景化需求,是隐语呈现的最直观的优势。最核心的是,在这套框架下,开发者可以有多样的选择,通过隐语在他们所擅长的领域做实验、做迭代,能够更低成本、更快速地去做技术验证。同时验证完的技术也可以被别的开发者在别的技术方向使用。王磊认为,隐语更多像是一个开发者的平台,就是把这些不同特长的开发者攒到一起,是很符合开源精神的。
详细拆解来看,本次隐语首个开源版本的亮点,如图中的点亮模块。
1. MPC 设备。支持大部分 Numpy API,支持自动求导,提供 LR 和 NN 相关的 demo,支持 pade 高精度定点数拟合算法,支持 ABY3、 Cheetah 协议。用户可以采用传统的算法编程模式,在不了解 MPC 协议的情况下开发出基于 MPC 协议的 AI 算法;
2. HE 设备。支持 Paillier 同态加密算法,向上层提供 Numpy 编程接口,用户可以使用 Numpy 接口做矩阵加法或者明密文矩阵乘法运算。且实现了与 MPC 密态设备之间的数据可流转;
3.差分隐私安全原语。实现了一些差分隐私噪声机制、安全噪声生成器、隐私开销计算器;
4.明密文混合编程。支持中心化编程模式,使用@device 标记构建明文和密文设备混合计算图,基于计算图进行并行、异步任务调度;
5.数据预处理。提供水平场景下的数据标准化、离散化、分箱功能,提供垂直场景下的相关系数矩阵、WOE 分箱功能。无缝对接已有的 dataframe,提供和 sklearn 一致的使用体感;
6. AI & BI 隐私算法-多方安全计算。提供水平场景下的 XGBoost 算法、新增垂直场景下的 HESS-LR 算法,并结合差分隐私增强了对拆分学习的隐私保护;
7. AI & BI 隐私算法-联邦学习。提供联邦学习模型构建和包括 SecureAggregation,MPC Aggregation, PlaintextAggregation 在内的多种安全模式的梯度聚合,用户只需要在模型构建时给出参与方 list 和聚合方法,之后的数据读取,预处理到模型训练的体验和传统明文编程几乎一致。
总结来看,主要如下:
对于算法/模型研发:使用隐语提供的编程能力,可以方便快捷的将更多算法和模型迁移过来,并得到隐私保护增强。
对于底层安全共建:可将底层密码/安全研究成果嵌入隐语,完善密态设备的能力、性能和安全,转化实际业务应用。
隐语也将在后续的开源版本更新中,逐步点亮更多模块。
用技术经验趟出来的绝活
王磊介绍说,隐语的开发过程,经历了多年技术上的沉淀,对技术有了非常深刻的理解之后,才知道哪些东西是通用的、不变的,是需要去沉淀、抽象的东西。这其实就是对技术归纳和演绎,没有需求的时候,就很难去抽象具备共性的内容是什么。
比如说,做 MPC 开发的时候,经过一段时间试验,隐语团队发现其实 MPC 和联邦学习是相通的。他们抽象出来共同的点就是明密文混合计算。这个发现,也成为了隐语的创新点之一,即密态计算设备 SPU。
SPU 是 Secretflow Processing Unit 的简称,作为隐语平台的密态计算单元,为隐语提供安全的计算服务,处在隐语的如下标注位置:
近些年,密态计算(MPC/HE)在算力上都巨大的进步,但是密态算力和 AI 的算法需求难以匹配。在算力无法匹配算法的时候,一个直接的办法就是"明密文混合",用来做安全和性能的平衡。比如联邦学习,将算法的某一个子步骤使用安全计算实现,牺牲局部安全性以换取更高的性能。
隐语提供了非常自由的明密文混合编程范式,不限制明文的引擎,也不限制密文引擎,开发者可以用自己熟悉的框架开发,然后标记其中的某一部分用明文引擎跑,另一部分用 SPU 跑。比如:
图中 MPC Device 就是 SPU 实现的。
作为对比,从安全和性能这种的角度,无论 TFE/CrypTen/SPDZ 等都很难进行这种平衡。
SPU 被设计成部署模式透明的,不用修改任何一行代码,开发者的模型都可以在上述任何一种部署场景上被安全且正确的执行。并且(相对于基于 AI 平台的隐私计算框架)SPU 运行时非常的轻量级,不需要 Python runtime,可以方便的进行部署和集成。
作为 AI 开发者,不需要任何安全背景,就可以将现有的模型安全的应用到多方数据上。
作为安全开发者,不需要任何 AI 背景,仅仅实现安全计算的基本算子,就可以支持多种前端框架。并且,可以方便的部署和运维,在安全和性能之间折中,找到最佳的落地方案。
王磊还强调,隐私计算技术开发门槛非常高,要集成隐语,不是一个团队单独能完成的事,有非常多的团队都参与了共建。在蚂蚁集团内部,它已经成为了一个开放的架构,是一套内部开源的系统。"现在我们希望把隐语开源到外部,能够让外部的团队也一起来进行共建。"
在正式开源之前,隐语也做了一些定向开源工作,如与阿里巴巴双子座实验室猎豹协议的共建。
猎豹协议是目前业界最快的两方安全计算协议,猎豹把它的协议贡献到了隐语中,实现了非常深度的协作。
当前业界的隐私计算需求场景以两方计算居多:假如 Alice(数据需求方)希望借助 Bob(数据源)的数据来增强自己的业务能力,但是 Bob 又不想直接给出自己的数据。因此如何高效的实现安全两方计算(2PC),便成为解决这一问题的关键。
阿里安全双子座实验室为解决这一问题研发了 Cheetah(猎豹)安全两方计算框架,在 2PC 的多个底层瓶颈上都取得了突破,让两方计算的整体性能取得了大幅提升,最快可以比此前的最好成果-微软 CryptFLOW2 ( CCS20)提升 5 倍以上。
猎豹已在隐语中实现了更好的优化(相较于公开代码支持 30-40 比特的秘密分享,猎豹在隐语中实现的是支持如 64 比特的更大秘密分享)以及一些未在论文中公开的算法。最重要的是这种实现对隐语上层业务逻辑无感知,即隐语已有逻辑代码无需改动以适配。
通过这样的协作,双子座实验室协议可以按照一个简单的对接接口实现到隐语中,能被上层隐语所有的算法使用,不需要从上到下,所有东西都去重现,能够非常快的发挥价值。对于隐语来说,通过集成系统,可以对上层已有的所有算法不做任何改动,大幅提升算法的性能。这也是隐语的另一个创新亮点。
开源,"隐语"做好了充分准备
谈到为什么要把这么强大的一套框架开源,王磊的解释是,开源对于研究界、产业界来说都是一件意义深远的事的事。
对于研究机构来说,可以利用开源的隐私计算框架,在上面做一些实验和研究,产出研究结果和论文。从推动整个隐私计算技术发展的角度来说,单靠一家公司,其实是很难带动行业共同进步的。在这方面,隐语其实做了比较多的考虑,怎么让更多不同背景的人进来做贡献。面对不同背景的用户,在整个架构的分层上做了非常多的设计,提供一个更适合他们做开发和接入的模式。虽然这件事情很难,但我们还是希望能够迈出这一步。
而对于技术本身来说,王磊认为,在闭源模式下,对技术的判断、真实性、以及它的实现细节,其实只能从对外的文章判断。更重要一点,它安全性和性能的判断,一方面要有理论的验证,其次具体实现是不是跟理论有差距,从这个角度来说,闭源的情况下技术做到什么程度是很难判断的,将带来更多的损失。
"我们希望能够通过开源,能够去创造更多的场景"。隐私计算应用目前更多是集中在金融风控场景,对其他场景、比如医疗、能源、工业等也会有应用需求。当前做隐私计算的专业人员其实不多,如果还是各自为战,对整个行业来说是一个非常大的浪费。我们还是希望把有限的、非常强的技术人员聚合,形成合力去做出一些真正的技术突破。
王磊表示,蚂蚁集团一直认为开源是一件非常慎重的情,其不仅仅是把代码公开出去,更重要的是希望通过良好的架构设计让更多的人加入其中。基于在隐私计算各个方向上的沉淀和积累,结合开源共建的目标,蚂蚁能够确保开源的"隐语"是一个高质量、可扩展的技术框架,也希望能够吸引更多的优质的开发者和用户能够加入到隐语的空间中。