隐语简介
隐语的SecretFlow 是一个隐私保护数据分析和机器学习的统一框架。
SecretFlow 提供
- 设备抽象,将多方安全计算(MPC)、同态加密(HE)、可信执行环境(TEE)等隐私计算技术抽象为密文设备,将明文计算抽象为明文设备。
- 基于抽象设备的计算图,使数据分析和机器学习工作流程能够表示为计算图。
- 基于计算图的机器学习/数据分析能力,支持数据水平/垂直/混合分割等场景。
隐语架构
隐语的架构图如下:
产品层
隐语的产品层包含SecretPad 和SecretNote两种。
SecretPad 是隐语平台部署包,可快速帮助用户体验隐语核心能力。在部署安装包的时候,可选择不同的部署模式,如部署成P2P的模式(无需可信第三方,无Center平台)或者中心化的模式(有Center平台);
中心化模式下,体验版内置Alice和Bob两个节点,配置相应数据,用户可直接进行模型训练;用户也可以自己添加数据表,上传自有数据进行模型训练,数据均在本地保存,无需联网即可体验。
SecretNote是隐语提供的开发工具,使得开发者可以以notebook的形式在SecretNote上进行开发,可以实现交互式建模,同时可以实现多节点一站式管理与交互,并且能够对任务的运行状态进行跟踪。
算法层
隐语在算法层提供PSI、PIR、Data Analysis 、Federated Learning登多种算法。
隐私求交(Private Set Intersection)是一种使用密码学方法,获取两份数据内容的交集的算法。PSI过程中不泄露任务交集以外的信息。
在隐语中,SPU设备支持三种隐私求交算法:
- ECDH:半诚实模型, 基于公钥密码学,适用于小数据集。
- KKRT:半诚实模型, 基于布谷鸟哈希(Cuckoo Hashing)以及高效不经意传输扩展(OT Extension),适用于大数据集。
- BC22PCG:半诚实模型, 基于随机相关函数生成器。
隐语在数据分析方面提供了SCQL功能,安全协作查询语言(Secure Collaborative Query Language, SCQL)是一个允许多个互不信任参与方在不泄露各自隐私数据的条件下进行联合数据分析的系统。
- 半诚实安全。SCQL 假设所有参与方都是半诚实的。
- 支持多方(N>=2)。
- 支持常见的 SQL select 语法和函数,满足大多数场景的需求。详情请查看 SCQL 实现进度。
- 可实用的性能。SCQL 有多层次的性能优化。
- 易于使用。SCQL提供了类似于关系 SQL 的界面。
- 数据使用授权。SCQL 为数据所有者提供了一个名为 CCL(Column Control List, 列控制列表)的机制,以定义他们的数据使用限制。
联邦学习是一种机器学习范式,其核心思想为多个参与方在数据不出域的前提下共同完成机器学习训练。隐语支持以下几种联邦学习
设备
隐语的设备分为物理设备和逻辑设备,其中,物理设备是隐私计算各个参与方的物理机器,逻辑设备则由一个或多个物理设备构成。逻辑设备支持一组 特定的计算算子(Device Ops),有自己特定的数据表示(Device Object)。逻辑设备分为明文和密文两种类型,前者执行单方本地计算,后者执行 多方参与的隐私计算。
逻辑设备的运行时负责内存管理、数据传输、算子调度等职责,运行在一个或多个物理设备上。逻辑设备和物理设备不是一对一的关系,一个物理设备可能同时属于多个逻辑设备。在同一组物理设备上,可以根据不同的隐私协议和参与组合虚拟出不同的逻辑设备。
除此之外隐语还提供YACL密码库和kusica任务编排调度框架
Kuscia(Kubernetes-based Secure Collaborative InfrA)是一款基于 K3s 的轻量级隐私计算任务编排框架,旨在屏蔽异构基础设施和协议,并提供统一的隐私计算底座。通过 Kuscia:
- 轻量化部署:您可以用最低 1C2G 的资源完成 100W 级数据隐私求交(PSI)。
- 跨域网络安全通信:您可以实现多隐私计算任务并发执行时的端口复用(仅需一个公网端口)与安全通信。
- 统一的 API 接口:您可以使用 HTTP/GRPC API 接口集成隐私计算能力。
- 互联互通:你可以与行业内多种隐私计算系统进行互联互通。