该论文主要介绍了安全联合数据分析平台 SCQL(Secure Collaborative Query pLatform),基于底层的 MPC 协议实现 SQL 中的关系操作,从而支持通用 SQL 语句运行,在保证数据安全的同时充分利用数据价值。蚂蚁技术研究院将为您带来最新技术干货分享,一起来关注!
安全多方计算(Secure Multi-Party Computation,MPC)为联合数据分析提供了一种有效的解决方案,在保证数据安全的同时,可以充分利用数据价值。然而,MPC 的性能瓶颈和查询语句的灵活性对联合数据分析框架构成了巨大挑战。在隐语中,我们构建了安全联合数据分析平台 SCQL(Secure Collaborative Query pLatform),基于底层的 MPC 协议实现 SQL 中的关系操作,从而支持通用 SQL 语句的运行。同时,我们利用原始数据分布的特点(水平/垂直),设计更加高效的 MPC 协议和关系操作,大大提高计算效率。用户使用过程中,体感上是在对多方联合的逻辑宽表进行查询,无需过多关心数据的实际物理分布及 MPC 底层协议的专业知识。用户还可以根据自身业务场景特点,配置可接受的安全退让,从而最大程度上利用到算法设计的加速策略。
首先,我们在底层的秘密排序协议实现中,选择了多方安全计算友好的基数排序方案,摆脱了对比较算子的依赖。针对 TTP 辅助的加性秘密分享,进行了基数排序核心组件的重新设计和实现:
其次,我们针对垂直切分的数据场景,优化数据库关系操作的实现,特别是将基数排序的思想用于 Group-by 算子的优化中,性能大幅提升:
本地分组主键合并,使得不论多复杂的 group-by 语句,只会调用一次昂贵的密态排序 采用分组主键生成排序向量,而仅对待排数据表执行一次排序的方式,降低通信成本 将 min/max 聚合列作为最低优先级的排序主键,使这类聚合计算得以“免费”支持,避免在聚合中调用昂贵的比较算子 由于基数排序的复杂度和主键位分解后的位数正相关,我们允许用户根据实际场景设置主键的有效数位,从而大大减少基数排序的复杂度
此外,如果用户允许透露用户的交集(垂直场景接受的常用安全设置),可以使用 PSI 来实现快速 Join 算法;如果用户允许透露每个分组的元素个数(安全性等同于执行最基础的 group-by-count 的 SQL 语句),可以将低效的密文聚合转变为成本可忽略不计的本地明文分片聚合。
/ 更易用 /
最后,在系统设计层面上,我们致力于提高用户的易用性,使得用户在查询时只需基于逻辑宽表写对应的 SQL 语句,而无需关心底层数据表的逻辑分布、以及掌握底层多方安全计算的相关专家知识。用户可以在最小的改动下迁移业务加工逻辑到多方联合计算中。同时,我们提供 CCL(Column Control List)语句来描述用户的安全需求,从而支持在编译阶段即可拒绝不合法的查询,并且选择当前安全设置下最高效的关系操作来加速运算。
SCQL 已开源至 隐语SecretFlow 中,欢迎使用及参与共建。
GitHub 指路:https://github.com/secretflow/scql
应用实践指南:https://www.bilibili.com/video/BV1KG411Q72P