机器之心专栏
如果有 A、B、C 三位同学,他们各自手上有 10、15、20 块钱,这时需要在相互不知道对方有多少钱的情况下,不借助力第三方来计算三个人一共有多少钱。请问这时候,我们如何实现呢?——这,就是最经典的秘密共享场景。在看完这篇文章后,答案就出来了~
第一则:2018 年 3 月,剑桥咨询公司通过 FaceBook 的数据共享漏洞,收集了 5000 万用户信息,据说有可能利用这些信息操控美国总统竞选,造成恶劣社会影响;事件曝光后,FB 公司股票大跌 7%,引发一系列后续问题。
第二则:2018 年 5 月,欧盟通过 General Data Protection Regulation(GDPR)法案,法案指出:所有与个人相关的信息都是个人数据,对数据的使用行为必须要有用户的明确授权。把对隐私保护的要求提到了一个新的高度。
多种安全计算引擎整合,可基于不同业务场景来选择合适的安全技术。既有基于 TEE 的集中式解决方案,也有基于 MPC 的分布式解决方案;既可满足数据水平切分的场景,也能解决数据垂直切分的诉求;既可以做模型训练,也可以做模型预测。
支持多种机器学习算法以及各种数据预处理算子。支持的算法包括但不限于 LR,GBDT,Xgboost,DNN,CNN,RNN,GNN 等。
大规模集群化。支持大规模集群化,提供金融级的高效、稳定、系统化的支撑。
通过集群化方案解决了在线服务的负载均衡,故障转移,动态扩缩容,机房灾备等问题;
通过多集群管理和 SDK 心跳机制,解决代码升级,灰度发布,发布回滚等问题;
通过 ServiceProvider 内置技术配合 SDK,降低了用户的接入成本;
通过提供易用性的开发框架,使得用户在开发业务逻辑时,完全不需要关心分布式化的逻辑;
通过提供 Provision 代理机制,确保 SGX 机器不需要连接外网,提升了系统安全性。
机构用户从 Data Lab 下载加密工具
使用加密工具对数据进行加密,加密工具内嵌了 RA 流程,确保加密信息只会在指定的 Enclave 中被解密
用户把加密数据上传到云端存储
用户在 Data Lab 的训练平台进行训练任务的构建
训练平台将训练任务下发到训练引擎
训练引擎启动训练相关的 Enclave,并从云端存储读取加密数据完成指定的训练任务。
安全技术层:安全技术层提供基础的安全技术实现,比如在前面提到的秘密分享、同态加密、混淆电路,另外还有一些跟安全密切相关的,例如差分隐私技术、DH 算法等等;
基础算子层:在安全技术层基础上,我们会做一些基础算子的封装,包括多方数据安全求交、矩阵加法、矩阵乘法,以及在多方场景下,计算 sigmoid 函数、ReLU 函数等等;同一个算子可能会有多种实现方案,用以适应不同的场景需求,同时保持接口一致;
安全机器学习算法:有了基础算子,就可以很方便的进行安全机器学习算法的开发,这里的技术难点在于,如何尽量复用已有算法和已有框架,我们在这里做了一些有益的尝试,但也遇到了很大的挑战。
机构用户从 Data Lab 下载训练服务并本地部署
用户在 Data Lab 的训练平台上进行训练任务的构建
训练平台将训练任务下发给训练引擎
训练引擎将任务下发给机构端的训练服务器 Worker
Worker 加载本地数据
Worker 之间根据下发的训练任务,通过多方安全协议交互完成训练任务
第一种联邦学习,旨在解决云 + 端的训练过程中,端上的隐私不要被暴露的问题,是一个 To C + 数据水平切分的场景。除了保护端上的数据隐私外,其重点还在于如何解决训练过程中,端自身可能掉线等问题。
第二种联邦学习则主要用于解决 To B 场景中各方隐私不泄露的问题,即可以应用于数据的水平切分场景,也可以应用于数据垂直切分的场景。
联邦学习只解决数据不出域的情况,这就限制了其可以使用的技术(只有严格的 MPC 算法才符合这个要求),而共享学习目前基于 TEE 的集中式共享学习技术,是联邦学习没有涉及的;
联邦学习讲究的是参与各方的「身份和地位」的相同,所以叫联邦;而共享学习则不强调各共享方的地位对等,在很多场景下,不同的参与方是拥有不同的角色的。