一篇可能被联邦学习同行封杀的文章

我很喜欢巴菲特的一句话“当别人疯狂时我恐惧,当别人恐惧时我疯狂”,用于今天的隐私计算这个行业,非常合适。因为,“百花齐放”、五花八门、鱼龙混杂的隐私计算行业初期,确实让我对这个领域有一些担忧。本文我试图从隐私计算软件是否是开源和自主研发的角度来叙述当下的问题。

安全已是国家战略

作为程序员,我无条件支持开源,因为这是推动技术发展、普惠码农最廉价的方式,没有之一。放到安全计算这个领域,因为它的技术前沿性、未知性,将平台开源无疑是推动这一技术往前发展的有效方式。但是,火热的隐私计算领域让我陷入深深的思考——

隐私计算是用来保护数据流通的,那安全(隐私)计算平台本身存在被攻击的缺陷和漏洞存在吗?安全计算用开源来落地企业场景和数据业务,会有什么问题吗?本文会从几个角度来说道说道,可能很多公司的同僚就不爱听了,但是我还是本着“忧国忧民”的职业情操写出自己的那一点点认知。因此,惶恐这篇观点会被“404”掉。

关于安全技术,我就想反问一句“国家的安全软件、做安全的科技公司,哪家是把代码开源出来的!”

简要的回顾

一、开源项目与非开源

联邦学习发展到现阶段,开源最大的价值是市场教育和技术推动(这个角度我完全赞同),但是,我担心开源的原因,是出于安全计算的业务本质。

目前来看,微众Fate、百度PPFL、TensorFlow等安全计算项目已开源;蚂蚁Morse、富数Avatar、华控PrivPy、平安蜂巢、矩阵元JUGO等属于非开源项目;还有几家包括前段时间冒出来也有联邦学习技术的科技公司包括京东数科、同盾、冰鉴等,这些“项目”基本其实尚处于比较初级的研究阶段,还没看到实际的产品。

最近雷锋网AI+金融在线讲堂重点推出的就是联邦学习系列,我看了一下基本上把和联邦学习有点关系的都搞来“表演”了。各家讲的技术和知识范畴、业务场景基本上都是类似的,这与联邦学习最适合的几个应用场景有直接关系——联合建模、联合营销、联合统计等。

二、何为“正宗”

几十家谈联邦学习的公司,哪家是正宗呢?从三个角度看:

1)资质,目前安全计算的资质最具有影响力的应该算是信通院的那个安全计算证书(微众、蚂蚁、百度、富数、华控);

2)产品,不管是开源还是非开源,至少能看的到产品样子并且用的起来(Fate、Morse、点石、Avatar、PrivPy、蜂巢、JUGO);

3)市场占有率,隐私计算目前的几个应用场景,如果数据源、金融机构、政务等都有实际应用案例落地,那产品一定是被市场认可的。

隐私计算,何为正宗,如上所列!

联邦攻击间隙

一、软件范式变化带来的攻击升级

我很欣喜听到创新工场冯霁院长的公开课演讲,他探讨了现阶段人工智能系统可能面临的攻击方向,并阐述了关于联邦学习中的一些可能攻击方式。我做一个简要的回顾:

 

软件1.0到软件2.0的范式变化

联邦学习作为软件2.0的范式之一,是通过大量的X和Y样本得到我们的预测模型。对于黑客来说,攻击的手段和范围就发生了变化,比如联邦学习潜在攻击包括测试阶段攻击、训练阶段攻击。测试阶段攻击主要包括对抗样本,是针对已训练模型的恶意样本生成任务;训练阶段攻击是在模型训练之前进行,通过修改训练集,以期望操控对应的分类器行为。

二、联邦攻击间隙

联邦学习的过程是一个分布式高频通信的训练过程,涉及多方数据、多方通信,每个环节都存在被攻击的间隙:包括对多方数据源计算节点的攻击、对多方节点之间通信的信道攻击、对各方数据样本集的攻击、对加密算法本身的攻击等等。

联邦学习的设计思想和技术原理可以保证多方之间正常联合建模的数据安全(这是有论文支持站的住脚的)。但是,作为一个平台,完全存在被攻击的可能性。我们拿最可能被攻击的通信环节来说,目前常用的是通过同态加密技术可进行高概率防御对中间传输信息(联邦学习分布式交互过程的参数)的攻击。

 

联邦学习原理图 

三、联邦学习攻击假设

我们试图这样假设,如果整个训练过程被监听并且破解,其危害是什么呢?拿具体应用场景来说,如果攻击者监听、破解、推断出信贷的风控模型,那么很有可能被不法分子用于撸贷。又或者是被监听、破解、伪装成模型参与方,用毒化样本进行对联邦建模进行干扰,使得最后的模型发生变质,最后达到攻击者的意愿。

对联邦学习平台是否开源的问题,我之前和某公司的联邦学习项目负责人聊,他们更主张私有化、非开源的服务模式。“开源的事情已经有微众在做,已经很好地帮助行业技术工作者来了解和进入这个领域。我们从客户的实际情况出发,最大限度地将联邦学习技术赋能于业务。考虑到目前整个技术生态还处于初期阶段,联邦学习平台作为安全技术软件,商业应用上,非开源一定会为客户减少掉更多的麻烦和潜在威胁。”

个人观点:开源意味着“攻击间隙”会完全暴露在攻击者面前,“安全技术开源,一定是安全中的不安定因素”,你一定不要低估黑客的能力,所谓道高一尺魔高一丈。

四、联邦学习攻击示例

攻击示例一:样本投毒

投毒是发生在多方进行模型训练,其中有一方(攻击者)为了破坏联邦模型,对参与建模的己方样本进行恶意修改,从而控制联邦学习的最终模型效果。

 

toC端的联邦学习投毒,试想如果攻击者在车联网、手机输入法等进行投毒破坏,是不是你的驾驶会潜在很大风险,你的输入法变的不那么智能、反而“很黄很暴力”。

攻击示例二:ddos攻击

只要是一个交互平台,一定少不了被ddos攻击的风险,攻击者通过监听联邦学习信道,伪装成联邦参与方,进行恶意攻击致训练过程瘫痪。

 

toB端的联邦学习ddos攻击,如果发生在数据源侧,可想对整个数据业务的破坏程度之深。

攻击示例三:模型推断

这在联邦学习目前的理论体系上,可能是不需要太担心的,多方之间传输的是成千上万次的模型参数,而且传输过程通过同态的加密方式,通过参数推断模型或者其他有价值的信息几乎不太可能。

 

提出这个攻击点,意思很简单,假设有一天黑客技术发展到能截获并且推断出联邦模型,其实用于商业攻击造成的危害也是极其大的,比如银行的信贷风控模型、券商基金的投资模型等被截获,可能会造成巨大业务风险。

开源需谨慎,滥用有风险

不可否认,有的东西开源比非开源要安全和透明,比如linux比Windows安全,因为开源意味着使用者可以一行行代码去review,漏洞在与不在,都是可被发现的。Windows代表的非开源系统,极大程度上像一个黑箱,使用者很难从根本上确保底层没动手脚。特别是这种非自主知识产权的软件系统。

但是,联邦学习平台,我个人比较倾向于“通用开源,专用非开源”。这项技术尚且处于萌芽阶段,如果进行技术上的垄断,对整个技术领域和行业应用来说,一定不是好事情。优秀的技术只掌握在少数高精尖的技术专家手里,意味着这项技术很难跑出实验室。

对于商业应用,我倾向于非开源的私有化。安全领域本来就是信息战,给攻击者留下可以获取到的信息越少,意味着攻击成本越高。安全软件开源,相当于告诉攻击者安全的实现方式、代码、接口、参数……

基于开源的上层应用,联邦学习目前开源了tf、fate、ppfl,作为学者,我觉得不存在问题,研究这些是提高技术的捷径。作为商业应用,我一定会在“某银行基于tf开发的联邦学习平台业务”投反对票。技术内核如果依赖于国外的,吃亏的迟早是自己。

综述,隐私计算在开源这条路上,安全性和自主知识产权上都存在比较大的问题。

Snyk2019开源安全调查

 关于开源软件的安全性,Snyk发布的《2019年开源安全现状调查报告》显示:

一、漏洞识别状况

37% 的开源开发者在持续集成(CI)期间没有实施任何类型的安全测试,54% 的开发者没有对 Docker 镜像进行任何安全测试

从漏洞添加至开源软件包到修复漏洞的时间中位数超过2年

 

持续集成期间的安全测试情况

二、已知的漏洞

两年内应用程序的漏洞数量增长了88%

在2018年,npm 的漏洞数量增长了 47%

根据 Maven Central 和 PHP Packagist 披露的数据,它们的漏洞数量分别增长了 27%和 56%

2018年与2017年相比,Snyk 在 RHEL, Debian 和 Ubuntu 中追踪发现的漏洞数量增加了4倍多

 

三、谁该对开源软件的安全性负责?

81% 的用户认为开发者负责开源软件的安全性

68% 的用户认为开发者应该对他们提供的 Docker 容器镜像负安全责任

只有 30% 的开源软件维护者认为自己具有高安全性意识

开源软件如果出现安全性问题,谁为之买单?我相信如果用于金融业务的联邦学习平台如果出现安全性问题,这个买单的代价会有点高。

市场选择

金融机构作为对软件安全性要求极高的使用者,在选择开源软件上,历来保持着极度谨慎的态度,更何况选择一个尚且不是完全成熟的新心技术。除非它的业务必须依赖联邦学习技术背后的数据源。举个例子,如果一个机构的信贷业务必须依赖微众银行的数据,而微众银行只有通过Fate来输出,那么在标准化尚未统一的现阶段,机构就无条件需要依赖于Fate。

目前了解下来,很多银行、保险、汽车、医疗科研、消费金融等机构,基本上都在自建隐私计算的研究团队,更期望的是拥有自主可控的联邦学习平台。比较常见的合作方式有两种,一种是基于Fate或者TF的开源内核进行集成开发;另一种是定制化采购Avatar、PrivPy等私有化隐私计算平台。后者最大的优势是完全私有化。

安全之路,任重道远

引用冯院长的一句话“安全防御,是一件非常困难的事情。做一个坏人很容易,做好人却很难。坏人,只需要攻击一个点,攻击成功了,攻击的算法就有效。如果做防御,你需要对所有潜在的攻击都做保护。”

联邦学习作为一个新的软件范式,不等同于联邦即安全,只有经历时间和业务的实际考验,查漏补缺、逐渐完善,才可以形成一个真正的数据安全流通桥梁

隐私计算平台不管开源或者非开源,都有其存在的必然性,但是有一点是共同的:作为安全软件而言,自主研发才是硬道理!

文章最后,我想抛一个问题:如果用了联邦学习平台,因为被攻击或者其他原因造成了实际业务的损失,这个责任谁来背呢?欢迎留言探讨