SCQL:安全协同查询平台的技术深度解析
在当今数据驱动的时代,跨机构数据协同分析需求日益增长,但数据隐私和合规要求(如GDPR)导致了数据孤岛问题。Secure Multi-Party Computation(MPC)技术为实现安全协同分析提供了可行方案,然而性能瓶颈和可扩展性挑战限制了其实际应用。Ant Group开发的SecretFlow-SCQL(以下简称SCQL)平台应运而生,它通过创新的MPC协议和关系操作符优化,实现了高效、安全且易用的协同查询。本文将深入解析SCQL的整体架构、核心技术、关键流程,并通过实际例子帮助读者理解其关键技术。
一、SCQL整体架构:模块化设计保障安全与效率
SCQL采用分布式架构,核心模块包括Client、Global Resource Manager(GRM)、Secure Collaborative Database(SCDB)和SCQLEngine。其设计目标是让用户像使用集中式数据库一样编写SQL查询,无需关心数据物理分布或MPC细节。

- Client:提供命令行接口,用户通过它提交查询并获取结果。
- GRM:类似DNS服务,负责逻辑表到物理表的映射,为SCDB提供元数据管理。
- SCDB:作为查询协调中心,它创建虚拟数据库,解析SQL语句,进行权限检查(如CCL注解),并生成执行计划。其内部包含Parser、Planner、Translator等组件,支持谓词下推等优化。
- SCQLEngine:部署于每个参与方,包含四层:
- 数据源适配器:连接本地数据库(如MySQL)。
- 执行基础设施:集成MPC框架(如SecretFlow SPU)和明文计算引擎(如Apache Arrow)。
- 操作符组:实现SQL操作符(如JOIN、GROUP-BY),支持明文和密文两种模式。
- DAG调度器:执行SCDB下发的计算图。
关键流程:假设银行Alice和电商平台Bob需要协同分析用户数据。Alice在SCDB中创建虚拟数据库demo,并通过GRANT命令设置数据权限。当Alice提交查询时,SCDB自动将逻辑表名映射到Alice和Bob的物理表,并通过SCQLEngine协调MPC计算,最终返回结果。整个过程对用户透明,仿佛操作单一数据库。
二、核心技术:MPC协议与关系操作符优化
SCQL的核心技术基于加法秘密共享(Additive Secret Sharing)和定制化的MPC协议,重点优化了排序、JOIN和GROUP-BY等瓶颈操作。
1. 加法秘密共享基础
加法秘密共享将数据x在环\(Z_{2^{l}}\)上拆分为多个随机份额(如\(\langle x\rangle_0\)和\(\langle x\rangle_1\)),参与方仅持有份额,无法还原原始数据。基础操作包括:
- 加法:本地计算份额相加,无需通信。
- 乘法:通过Beaver三元组实现,需2轮通信。
- 比较和非线性函数:借助布尔共享和泰勒展开近似。
例子:计算\(\langle z\rangle = \langle x\rangle \cdot \langle y\rangle\)时,参与方使用预生成的Beaver三元组\((\langle a\rangle, \langle b\rangle, \langle c\rangle)\),先重构掩码值\(e = x + a\)和\(f = y + b\),再本地计算\(\langle z\rangle_i = -i \cdot e \cdot f + f \cdot \langle x\rangle_i + e \cdot \langle y\rangle_i + \langle c\rangle_i\)。这种方式既安全又高效。
2. 排序协议优化:Radix Sort替代排序网络
排序是GROUP-BY的关键瓶颈。SCQL摒弃了传统的Bitonic排序网络(复杂度\(O(n\log^2 n)\)),采用基数排序(复杂度\(O(nl)\)),显著提升性能。

- 基数排序过程:将密钥K分解为二进制位(如LSB和MSB),从低位到高位逐轮排序。每次排序生成置换向量(permutation vector),最终合并为全局置换向量。
- 协议实现:通过
SecurePermutation、SecretSort等基础协议组合而成。其中SecurePermutation针对布尔共享输入优化,减少通信量。

例子:排序列表K = [1, 0, 3, 2]时,先转换为二进制[01, 00, 11, 10]。首轮按LSB排序得[00, 01, 10, 11](对应索引[1,0,3,2]),再按MSB排序得最终结果。实验显示,SCQL排序100万条64位数据仅需4.5分钟,比EMP工具快126倍。
3. 垂直场景优化:安全与性能的平衡
针对垂直数据分布(参与方拥有不同特征),SCQL通过安全妥协(如泄露交集大小)提升性能。
- JOIN优化:用PSI-JOIN替代 oblivious JOIN。传统JOIN会产生笛卡尔积(如9条记录中仅2条有效),而PSI-JOIN基于ECDH-PSI协议先对齐样本,仅泄露交集大小。
- GROUP-BY优化:提出五大优化点:
- Opt-1:一次性排序整个关系表,减少通信。
- Opt-2:合并本地密钥,减少密文排序调用。
- Opt-3:用更便宜的
SecurePermutation替代SortByKey。 - Opt-4:通过序数编码减少密钥有效位数(如100万样本仅需20位)。
- Opt-5:将聚合列(如MAX)作为最低优先级排序键,避免逐行比较。

例子:Alice和Bob各有2个GROUP-BY密钥(如信用等级和活跃状态)。SCQL先合并本地密钥为KA和KB,用SecurePermutation排序KB,再生成全局置换向量P,最终一次性排序聚合列V。相比原生实现,性能提升3-4倍。
- AGG优化:采用Brent-Kung网络将通信轮数从O(n)降至O(log n)。若允许泄露分组大小,则聚合过程转为本地计算,耗时近乎零。
三、关键流程:从数据准备到查询执行
SCQL的工作流包括数据准备和查询执行两大阶段,通过CCL(Column Control List)注解实现安全控制。
1. 数据准备:虚拟数据库与权限设置
首先,管理员通过root账户创建虚拟数据库和用户账户,并授权数据访问权限。

然后,数据所有者(如Alice)创建逻辑表并设置CCL注解,定义列级安全策略。

例子:Alice通过GRANT income TO BOB WITH must=avg限制Bob仅可计算收入平均值,禁止原始数据泄露。若Bob尝试查询SELECT income FROM ta,CCL检查将拒绝该请求。
2. 查询执行:自动化MPC翻译与优化
用户提交SQL查询后,SCDB自动解析并转换为MPC协议执行。

- 解析与计划:Parser将SQL转为抽象语法树(AST),Planner生成逻辑计划并优化(如谓词下推)。
- CCL检查:Translator读取CCL注解,验证查询合规性。例如,若CCL要求聚合后才能输出,则拒绝直接投影敏感列。
- 执行图调度:优化后的执行图被拆分为子图,分发到各参与方的SCQLEngine。MPC操作符(如PSI-JOIN)通过SecretFlow SPU执行,明文操作符本地计算。
例子:垂直场景查询中,SCDB自动选择PSI-JOIN对齐样本,应用垂直GROUP-BY优化,最终通过明文聚合输出结果。端到端性能比基于Secret Sharing的Secrecy框架快1991倍。
四、性能与可扩展性:实验验证
SCQL在TPC-H查询上的测试显示优秀可扩展性:
- 水平场景(如Q1、Q2):通过谓词下推处理千万级数据,耗时仅秒级。
- 垂直场景(如Q5):即使最复杂的GROUP-BY查询,千万数据可在1小时内完成。

例子:通过逐步优化(V1-V6),垂直查询性能提升1991倍。其中,PSI-JOIN替代 oblivious JOIN带来6倍加速,垂直GROUP-BY优化进一步降低排序开销。
五、总结与展望
SCQL通过模块化架构、高效的MPC协议和垂直场景优化,实现了安全、易用且高性能的协同查询。其核心技术如Radix排序和CCL注解,为跨机构数据合作提供了实用解决方案。未来,SCQL计划集成恶意安全协议,并支持混合场景查询,进一步拓展应用边界。
SCQL已成功应用于Ant Group的真实业务场景,如医疗保险和风控分析,证明了其工业价值。开源地址:https://github.com/secretflow/scql。