Fidelius

来自典枢
跳到导航 跳到搜索

Fidelius简介

Fielius是由熠智科技自主研发并完全开源的隐私计算中间件,基于机密计算和密态计算等技术,为数据要素的安全流通保驾护航。目前您可以在Github上查看源代码。 Fidelius具有如下特点:

  • 全流程隐私保护:原始数据不出域,支持模型参数、计算过程、计算结果弹性隐私保护,提供监管合规组件。
  • 企业级性能保证:自研高性能数据分析框架,支持大规模集群部署,满足工业场景性能需求。
  • 通用场景支持:不依赖第三方验证的跨平台私密数据传输和身份验证,支持WAN/LAN多网络环境部署;兼容TensorFlow、PyTorch等主流机器学习框架。

Fidelius遵从Apache License 2.0协议和GNU General Public License 3.0协议

Fidelius由来

Fidelius来自于《哈利波特》中的特殊而复杂的符咒:赤胆忠心咒(Fidelius Charm),其主要的用途是将一个秘密隐藏在“守密人”心中,除非守密人主动对他人泄露这个秘密,否则此秘密永远无法被人发现。

解决方案原理

下图描述了基于Fidelius实现数据合作的抽象流程。

基于Fidelius的数据合作流程.png

该方案最重要的核心是Fidelius中间件,通常来说Fidelius中间件会分别运行在数据提供方和数据使用方中(以Fidelius节点或者 Fidelius SDK的形式),需要注意的是,在大多数场景下,数据提供方和数据使用方之间没有直接的数据交换,即原始原始数据不会离开数据提供方的安全域,数据提供方仅公开元数据描述文件,这可以从根本上避免敏感数据的泄露问题。

同时,整个方案也结合了区块链技术,由于区块链本身具有去中心化、公开可验证等特性,其可以作为可信的传输通道和数据计算验证平台。

关于区块链和隐私计算结合的详细介绍,可以阅读 Fidelius和区块链

典型场景

Fidelius支持多种数据合作场景,我们按照输入数据、参数和模型的隐私保护需求划分为以下几个典型场景:

本地数据服务

数据提供方在本地部署并管理相关的存储、计算服务器,数据使用方使用算法提供方的算法请求数据提供方对数据进行计算,并获得计算结果。

可信要求

  • 原始数据不可篡改
  • 请求参数加密且不可篡改
  • 返回结果加密且不可篡改

由于原始数据存储在数据提供方本地,在数据提供方能够保证数据存储安全的情况下,可以不加密原始数据,以保证计算性能。

执行流程

  1. 数据注册:数据提供方传输原始数据至本地的Fidelius节点(此处简称 FP),后者自动生成相关元数据描述文件,同时元数据被发布至区块链网络;
  2. 任务发布:数据使用方所在的Fidelius节点或者 Fidelius SDK(此处简称 FC)通过区块链获取元数据描述文件后提交给数据使用方,后者根据数据描述信息提供相应的数据分析任务(通常为执行程序的二进制文件),FC将数据分析任务通过区块链网络转移到至FP;
  3. 数据计算:FP对任务进行检测后,基于原始数据和任务完成数据计算,生成计算结果和相应的证明,并将加密后的计算结果和证明发布至区块链网络;
  4. 结果返回:分析结果(加密)被保存在区块链网络中,区块链中的智能合约基于证明和结果进行验证,当计算结果通过验证后,FC将计算结果解密后返回给数据使用方。

托管数据服务

在很多情况下,数据提供方出于成本、管理等考虑,本地没有相关的存储、计算服务器,而是委托给第三方(云服务厂商)进行数据的存储和计算;数据使用方使用算法提供方的算法请求第三方(数据托管服务方)对数据进行计算,并获得计算结果。

可信要求

  • 数据对第三方不可见
  • 数据不可篡改
  • 数据使用请求需要经过数据提供方授权
  • 请求参数加密且不可篡改
  • 请求结果加密且不可篡改

执行流程

  1. 数据注册:数据提供方通过本地运行的 Fidelius SDK(此处简称FP)对数据进行加密,自动生成相关元数据描述文件和权限证明,同时元数据描述文件被发布至区块链网络,加密数据发送至第三方;
  2. 数据使用方所在的 Fidelius 节点或 Fidelius SDK(此处简称 FC)通过区块链获取元数据描述文件后提交给数据使用方,后者根据数据描述信息提供相应的数据分析任务(通常为执行程序的二进制文件),FC将数据分析任务通过区块链网络转移到至FP;
  3. 数据授权:数据提供方根据区块链网络中的请求,对该次任务进行数据使用授权,并将该授权提交到区块链网络中;
  4. 数据计算:第三方运行的Fidelius节点对任务进行检测后,基于加密数据、任务及数据授权完成数据计算,生成计算结果和相应的证明,并将加密后的计算结果和证明发布至区块链网络;

多数据源数据服务

模型服务

系统架构

下图简述了Fidelius系统各个模块及其之间的关系。

Architecture.png

安装

目前,Fidelius仅支持Ubuntu系统。

我们提供了从源安装的方式。您也可以从源代码编译安装,但是请注意,由于Intel SGX的限制,一个Enclave在构建时需要使用RSA 3072的私钥进行签名,自行编译安装时使用的私钥与通过源安装的版本所使用的私钥并不相同,因此,自行编译安装的Fidelius可能与从源安装版本不兼容。

目前Fidelius稳定版为v1.0release版,新版本即将推出,您可以切换到patterns分支查看,注意该版本目前并未提供相关技术支持。


TODO:安装步骤

使用Fidelius

作为一个中间件,Fidelius更多是被上层服务,例如典枢来使用,而不是单独使用。此处,我们仅提供一个单独使用的例子,用于说明Fidelius的工作流程。

Fidelius SDK

Fidelius和区块链

Fidelius的设计哲学中,我们并没有将Fidelius设计成与区块链紧耦合的关系,这是因为:

  • Fidelius 的初衷是为了解决数据合作的隐私保护问题,而不仅仅局限于区块链上的数据隐匿;
  • 我们发现当前大部分企业很难实现业务全部上链,这一方面是由于区块链作为底层基础设施仍然存在许多缺陷尚待解决,另一方面企业往往已经有成熟的数据存储平台(数据中心或者云存储),没有必要再基于区块链进行数据存储。

尽管如此,Fidelius中也使用了区块链技术,这里区块链主要起到了如下作用:

  • 可信第三方:如图所示,数据提供方和数据使用方之间基于区块链实现了交互,由于共识机制本身的去中心化特性,实际上区块链扮演了可信第三方的作用。具体来说,区块链能够 1) 存储数据,且数据不会被篡改,2) 传输数据,且不依赖于中心化的证书机制(例如HTTPS所依赖的证书),3) 验证数据,即对数据使用情况及分析结果的验证。
  • 抵抗作弊:由于区块链的特点,被区块链记录的数据合作行为是公开、且不可篡改的,这对于试图通过“刷单”等来影响数据合作的作弊行为有非常好的抵抗作用。虽然不同于在中心化的数据合作平台上处理作弊行为的“黑盒子”,公开的、不可篡改的数据合作记录可以被不断更新的自动化算法或人力检查,是一种有效的抵抗作弊的手段。