隐私计算-SecretFlow/SCQL-SCQL的两种部署模式

安全协作查询语言(Secure Collaborative Query Language, SCQL)是一个允许多个互不信任参与方在不泄露各自隐私数据的条件下进行联合数据分析的系统

架构

SCQL 系统同时支持 P2P 和中心化部署架构。它们看起来不同,但共享相同的 SCQL 统一架构。

  • 图中的 Driver 组件可以是 P2P 部署架构中的 Broker ,也可以是中心化部署架构中的 SCDB
  • Interpreter 组件负责将 DQL 查询翻译成明密文混合执行图,它是 SCQL 的核心组件。通常作为 lib 嵌入到 Driver
  • SCQLEngine 是一个明密文混合执行引擎,它与参与方协作运行执行图并将查询结果报告给 Driver

中心化模式------SCDB

概述

中心化模式下的 SCQL 系统由一个 SCDB 服务器和多个 SCQLEngines 组成:

  • SCDB 服务器负责将 SQL 查询翻译成明密文混合执行图,并将执行图下发给参与方的 SCQLEngine。
  • SCQLEngine 是一个明密文混合执行引擎,它与参与方协作运行执行图并将查询结果报告给 SCDB 服务器。SCQLEngine 是在secretflow的 MPC 框架 secretflow/spu 的基础上实现的。

工作流

流程图展示了如何使用SCQL系统,该系统包含准备和查询两个阶段。在准备阶段,设置系统,并创建和初始化必要的表。在查询阶段,提交、处理查询并返回结果。

参与者

  • Alice:alice 方中的用户
  • Bob:bob 方中的用户
  • SCDB:SCDB 服务器

准备阶段

  • 1.0 创建数据库

    Alice 或 Bob 通过 CREATE DATABASE 语句使用 root 用户帐户创建一个新数据库,该数据库可以视为一个新项目,SCQL 支持同时运行多个项目。

  • 2.0 创建和授予用户

    Alice 通过 CREATE USER 语句使用 root 用户帐户在 SCDB 中创建用户帐户"Alice",并通过 GRANT 语句授予对相关数据库的访问权限

  • 3.0 创建和授予用户

    Bob 通过 CREATE USER 语句使用 root 用户帐户在 SCDB 中创建用户帐户"Bob",并通过 GRANT 语句授予对相关数据库的访问权限

  • 4.0 创建表格

    Alice 使用 CREATE TABLE 语句的帐户"Alice"在 SCDB 中创建表。

  • 5.0 创建表格

    Bob 使用 CREATE TABLE 语句的帐户"Bob"在 SCDB 中创建表。

  • 6.0 授予 CCL

    Alice 授予有关 Alice 使用帐户"Alice"在 SCDB 中为 Alice 和 Bob 创建的表的 CCL,有关详细信息,请参阅 SCQL CCL

  • 7.0 授予 CCL

    Bob 使用帐户"Bob"向 Bob 授予有关 Bob 在 SCDB 中为 Alice 和 Bob 创建的表的 CCL,有关详细信息,请参阅 SCQL CCL

执行阶段

  • 8.0 提交 DQL

    Alice 使用帐户"Alice"通过 public/submit_query 或 public/submit_and_get向 SCDB 提交 DQL。

  • 9.0 流程查询

    SCDB 将检查 ccl 并使用引擎执行查询。

  • 10.0 返回结果

    SCDB 将查询结果返回给 Alice。

P2P模式------Broker

概述

P2P 模式下的 SCQL 系统由 SCQLBrokers 和 SCQLEngines 组成,各方都有自己独立的 SCQLBroker 和 SCQLEngines:

  • SCQLBroker:作为 P2P 的核心模块,主要包含三个功能: 用户交互:通过 http 接口接受请求并返回结果。 P2P 状态同步:完成不同 SCQLBroker 之间的状态同步。 SQL 分析及作业调度:将 SQL 查询转换为明密文混合的执行图,并调度到本地 SCQLEngine 执行。
  • SCQLEngine:SCQLEngine 是一个明密文混合执行引擎,不同参与方的 SCQLEngine 可以协作完成执行图计算,本地的 SCQLEngine 会将结果报告给 SCQLBroker 。

工作流

在 P2P 模式中,不同的参与方通过 Unique Identifiers 来标识,不同业务则通过 Projects 进行隔离。

  • Unique Identifier: 包括唯一的 partyCode 和公私钥对,私钥应由参与方自行保密,公钥则对所有参与方公开。
  • Project: 项目,类似于中心化模式中的虚拟数据库概念,用于隔离不同的业务。
sequenceDiagram actor A1 as Alice actor A2 as Bob participant P1 as Alice Broker participant P2 as Bob Broker A1 ->> P1: 1. Create project A1 ->> P1: 2. Invite member P1 ->> P2: 2.1 Send Invitation A2 ->> P2: 2.2 Process Invitation P2 ->> P1: 2.3 Reply Inviation A1 ->> P1: 3. Create table A2 ->> P2: 3. Create table A1 ->> P1: 4. Grant CCL A2 ->> P2: 4. Grant CCL A1 ->> P1: 5. Submit query P1 ->> P2: 5.1 Distribute query P1 ->> P1: 5.2 Execute Query P2 ->> P2: 5.2 Execute Query P1 -->> A1: 6. Return query result

整个流程可以分为五步:创建项目邀请参与方创建数据表配置 CCL执行查询

  1. 创建项目:一方可以创建项目并成为项目所有者。所有者只额外拥有邀请其他成员加入的权限。
  2. 邀请参与方:项目所有方邀请其他方后,其他方可以选择是否接受邀请。 如果接受,则可以加入项目,成为项目成员。
  3. 创建数据表:项目成员可以创建自己的数据表元数据,以便在项目中进行联合分析。
  4. 配置 CCL:成员创建自己的表后,可以将特定的 CCL 权限授予自己及其他参与方。
  5. 执行查询:完成 CCL 配置后,各方可以执行相应的 SQL 分析作业。

如何选择部署模式

这取决于实际的业务场景。如果没有可信第三方可以依赖,则使用 P2P 部署架构(P2P 场景目前来看相对更常见)。如果有可信第三方,则可以选择中心化部署架构。

P2P 和中心化部署架构支持相同的 DQL 语法和 MPC 协议,端到端性能也基本相同。

相关推荐
汤姆yu2 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
angleoldhen3 小时前
简单的智能数据分析程序
python·信息可视化·数据分析
灰小猿3 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud
RedJACK~4 小时前
Go Ebiten小游戏开发:扫雷
开发语言·后端·golang
老夫的码又出BUG了4 小时前
分布式Web应用场景下存在的Session问题
前端·分布式·后端
小白跃升坊5 小时前
数据分析报表如何选?详解 DataEase 四大表格:明细表、汇总表、透视表与热力图的适用场景与选择策略
数据挖掘·数据分析·开源软件·数据可视化·dataease
民乐团扒谱机6 小时前
实验室安全教育与管理平台学习记录(七)网络安全
学习·安全·web安全
L.EscaRC6 小时前
Spring Boot 自定义组件深度解析
java·spring boot·后端
金銀銅鐵7 小时前
[Java] JDK 9 新变化之 Convenience Factory Methods for Collections
java·后端
微小冷7 小时前
Rust图形界面教程:egui基础组件的使用
后端·rust·gui·egui·button·panel·用户图形界面