文章目录
- 一、SCQL Overview
- 1.1 SCQL背景
- 1.2 SCQL Overview
- 二、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特性:
-
半诚实安全模型。
-
⽀持多⽅(N>=2)。
-
易上⼿,提供 MySQL 兼容的 SQL ⽅⾔⽤户界⾯。
-
⽀持常⽤的 SQL 语法和算⼦,满⾜⼤部分场景的需求。
-
可实⽤的性能。
-
提供列级别的数据使⽤授权控制(CCL)。
-
⽀持多种密态协议(SEMI2K/CHEETAH/ABY3)。
-
内置⽀持多种数据源接⼊(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架构:
- 用户发起一个Query后会先经过Session Manager,Session Manager首先会校验用户身份信息;
- 检查通过后会经过Parser解析成语法树AST;
- Planner会将AST构建成逻辑执行计划;
- 若Query为DDL/DCL语句会直接用SCDB的Executor进行处理,否则将由Translator(会在多种约束条件下选择最优协议,然后选择最佳执行逻辑)将逻辑执行计划翻译成密态执行图;
- 在翻译前会先检查CCL,只有CCL检查通过才会进入Graph Optimizer会运用图形化算法对执行图进行优化(节点合并或消除),还会得到一张全局图;
- 最后Graph Spliter会将图按照参与方进行切分,每个参与方会看到自己参与计算的节点构成的子图,最后下发给SCQL Engine进行执行;
- SCQL Engine得到执行图后,一般会先执行run SCQL节点从数据源读取数据,再使用MPC协议与对方的SCQL Engine配合协作完成计算;
- 计算完成将结果汇报给SCDB,SCDB将结果返回给用户。
示例如下:在条件ta.reduce_long_0 > tb.reduce_long_0,alice.tbl_0与bob.tbl_0进行join后,查询ta.join_long_0结果。