隐私计算实训营学习七:隐语SCQL的架构详细拆解

文章目录

  • [一、SCQL Overview](#一、SCQL Overview)
    • [1.1 SCQL背景](#1.1 SCQL背景)
    • [1.2 SCQL Overview](#1.2 SCQL Overview)
  • [二、SCQL CCL](#二、SCQL CCL)
  • 三、SCQL架构

一、SCQL Overview

1.1 SCQL背景

SCQL:属于隐私计算BI范畴,允许多个互不信任参与方在不泄露各自隐私数据的条件下进行联合数据分析。

如下数据在不同机构,同时又要保护原始数据不泄露,需要使用多方数据分析技术,目前主要有两种技术路线:

1、基于可信执行环境TEE SQL: 数据需要出域,数据方首先将数据加密上传到可信执行环境里,可信执行环境能够保证数据安全,在可信执行环境进行计算。

​ 优点:效率高。

​ 缺点:数据要出域,信任根在硬件提供商。

2、多方安全计算MPC SQL: 数据不需要出域,数据拥有方需要部署计算节点,通过MPC协议进行计算。

​ 优点:数据不出域。

​ 缺点:性能较低,规模受限。

1.2 SCQL Overview

SCQL(Secure Collaborative Query Language):是MPC SCQL的一个解决方案,系统组件主要有SCDB与SCQLEngine。

SCDB: 部署在可信第三⽅,负责将 query 翻译成密态执⾏图,下发给 SCQLEngine,本身不参与计算。

SCQLEngine: 部署在数据参与⽅,负责协同其他参与⽅⼀起完成执⾏图的计算。

SCQL特性:

  1. 半诚实安全模型。

  2. ⽀持多⽅(N>=2)。

  3. 易上⼿,提供 MySQL 兼容的 SQL ⽅⾔⽤户界⾯。

  4. ⽀持常⽤的 SQL 语法和算⼦,满⾜⼤部分场景的需求。

  5. 可实⽤的性能。

  6. 提供列级别的数据使⽤授权控制(CCL)。

  7. ⽀持多种密态协议(SEMI2K/CHEETAH/ABY3)。

  8. 内置⽀持多种数据源接⼊(MySQL,Postgres, CSV 等)。

应用场景: 适用于任何多方数据分析场景。

二、SCQL CCL

当前业内基于多方数据分析的安全保障模型审核强度大、周期长、效率低;因此提出CCL的多方数据分析安全保障模型,数据拥有方首先设置数据如何被使用的限制,若未通过CCL检查则直接被拒绝,若通过再由审核员确认,减轻审核员负担。

CCL(Column Control List): CCL 是一种约束机制,使得数据拥有者可以使用CCL描述每列数据在使用过程中的约束,数据分析引擎确保所有执行过程严格满足约束条件。他是一个三元组<src_column, dest_party, constraint>,数据拥有方允许某列数据(src_column)被某个参与方(dest_party)以满足某种约束条件下进行访问。 不满足CCL约束一定不安全,满足CCL约束不一定安全。

例如:Alice对Bob的约束为,Alice table A的salary字段对Bob的权限必须经过聚合操作(sum/avg/min/max)后才能对Bob可见。

目前CCL定义的六种约束:

三、SCQL架构

SCQL架构:

  1. 用户发起一个Query后会先经过Session Manager,Session Manager首先会校验用户身份信息;
  2. 检查通过后会经过Parser解析成语法树AST;
  3. Planner会将AST构建成逻辑执行计划;
  4. 若Query为DDL/DCL语句会直接用SCDB的Executor进行处理,否则将由Translator(会在多种约束条件下选择最优协议,然后选择最佳执行逻辑)将逻辑执行计划翻译成密态执行图;
  5. 在翻译前会先检查CCL,只有CCL检查通过才会进入Graph Optimizer会运用图形化算法对执行图进行优化(节点合并或消除),还会得到一张全局图;
  6. 最后Graph Spliter会将图按照参与方进行切分,每个参与方会看到自己参与计算的节点构成的子图,最后下发给SCQL Engine进行执行;
  7. SCQL Engine得到执行图后,一般会先执行run SCQL节点从数据源读取数据,再使用MPC协议与对方的SCQL Engine配合协作完成计算;
  8. 计算完成将结果汇报给SCDB,SCDB将结果返回给用户。


    示例如下:在条件ta.reduce_long_0 > tb.reduce_long_0,alice.tbl_0与bob.tbl_0进行join后,查询ta.join_long_0结果。
相关推荐
程序员侠客行2 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
bobuddy3 小时前
射频收发机架构简介
架构·射频工程
桌面运维家4 小时前
vDisk考试环境IO性能怎么优化?VOI架构实战指南
架构
一个骇客5 小时前
让你的数据成为“操作日志”和“模型饲料”:事件溯源、CQRS与DataFrame漫谈
架构
鹏北海-RemHusband6 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
2的n次方_8 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
前端市界9 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
文艺理科生9 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
C澒9 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
消失的旧时光-194310 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed