目录
一:隐语框架与技术要点
1.隐语架构
2.隐语产品
3. 隐私求交与匿踪查询
3.1 PSI
3.2 PIR
4. SCQL--数据分析
5. 联邦学习
6. 混合编译调度
6.密态引擎
6.1 SPU--一个虚拟加密设备
(1)SPU介绍
密态引擎SPU(Secretflow Processing Unit)是一个专为隐私保护机器学习(PPML)设计的高效、用户友好的虚拟设备框架,旨在通过多方安全计算(MPC)技术支持多个实体之间在保护各自数据隐私的前提下共同训练和计算机器学习模型
SPU的核心价值在于其能够在保障数据隐私的同时,提供类似高级编程语言的编程体验,解决了传统加密计算中易用性差和性能不足的问题。SPU由三部分组成:前端、编译器和运行时。
从整体分层架构看,SPU处于明密文计算设备与原语层,支撑密文计算设备中的MPC设备能力(多方安全计算能力)。
SPU屏蔽了底层复杂的加密协议,可以直接使用熟悉的numpy进行编程,无需关心加密实现细节。基于SPU的能力,未来可以提供类似sklearn的安全机器学习库以及构建类pandas的安全数据分析库,这个也是自己一直想做的,还是蛮期待的。
(2)SPU作用--多方安全计算支持的ML & DL
MPC(多方安全计算):
1. 输入数据处理
1.1 数据加密
数据提供方(用户)将其输入数据进行加密,通常采用**秘密分享(Secret Sharing)**方法:数据X被分割成n个分享(shares),X1, X2, ..., Xn,每个分享由一个参与方持有。
这些分享的集合能够重构原始数据,但单个分享不能泄露原始数据。
1.2 秘密分享
用户将这些分享分别发送给各个计算方(可能包括云服务提供商和其他独立的第三方)。2. 加密模型分发
2.1 模型加密
模型拥有方将模型参数进行加密处理,同样采用秘密分享的方式,将模型参数W分割成n个分享W1, W2, ..., Wn,每个分享由一个计算方持有。2.2 秘密分享
模型拥有方将这些模型参数分享分别发送给各个计算方。3. 密态推理过程
3.1 分布式计算
各计算方根据收到的输入数据分享和模型参数分享,独立进行局部计算。例如,如果模型是一个简单的线性模型Y = WX:各计算方计算Yi = Wi * Xi(这里的乘法和加法操作是在秘密分享下进行的,通常涉及到一些加密计算协议)
3.2 中间结果通信
各计算方之间通过加密通信渠道,交换中间计算结果,以进行必要的合并和进一步计算。3.3 合并结果
计算方将中间结果进行合并,得到加密的推理结果。这个结果通常还是分布在多个计算方之间的部分数据。4. 结果重构
4.1 结果分享
各计算方将其持有的推理结果分享发送给结果接收方(通常是数据提供方)。4.2 结果解密
数据提供方接收所有的推理结果分享,通过秘密分享的重构算法,将这些分享合并,解密得到最终的推理结果Y。
安全多方计算(MPC)是一种密码技术,使多个方可以在不泄露各自私有输入的情况下共同计算函数,为有强隐私关注的机器学习用户提供了一个可证明且实用的解决方案。然而将MPC技术应用于机器学习应用程序具有很大的挑战,因为这两个领域本质上存在差异。MPC专家主要关注为低级计算原语设计高效的密码协议。而机器学习从业者则更习惯于使用封装常用的机器学习模块构建高级模型。因此,对于没有密码学专业知识的机器学习用户来说,在现实场景中高效地实现复杂的PPML任务构成了巨大的障碍。
(3)SPU实现方法
SPU由前端、编译器和后端运行时三部分组成。前端支持多种现有的机器学习框架语言,编译器接受机器学习程序并将其转换为MPC特定的中间表示(IR)PPHLO。经过一系列优化后,IR在后端运行时作为MPC协议执行。其中SPU编译器将Python编码转化为蕴含隐私保护语义的二进制文件。SPU runtime执行这些二进制文件并得到结果。
6.2 HEU--同态加密设备
6.3 TEEU-可信执行环境设备
7. 密码原语(YACL)
隐语自己的密码库(没有用学术上工业界已有的密码库)