首先必须感谢蚂蚁集团及隐语社区带来的学习机会!
第七课由操顺德老师讲述,核心内容是详解SCQL的架构
使用SCQL的最大感受:****专注于数据分析本身(你写好需要的SQL),无需担心数据的安全性。
1、SCQL的定义
根据蚂蚁官方定义,安全协作查询语言SCQL(Secure Collaborative Query Language)是一个允许多个互不信任参与方在不泄露各自隐私数据的条件下进行联合数据分析的系统。
在隐语架构中,SCQL属于算法层中的BI,支持多方数据的安全分析。
2、SCQL主要特点
- 半诚实安全。SCQL 假设所有参与方都是半诚实的。
- 支持多方(N>=2)。
- 支持常见的 SQL select 语法和函数,满足大多数场景的需求。
- 可实用的性能。SCQL 有多层次的性能优化。
- 易于使用。SCQL提供了类似于关系 SQL 的界面。
- 数据使用授权。SCQL 为数据所有者提供了一个名为 CCL(Column Control List, 列控制列表)的机制,以定义他们的数据使用限制。
3、SCQL的实现原理
实现的核心包括SQL语法解析,CCL控制管理,图优化和拆分、以及底层的MPC协议。
4、SCQL对SQL的支持能力
** 支持大部分的Select语句**:
** 支持丰富的函数运算**(目前版本不支持IS NULL判断):
** 支持数据库接入和CSV文件**:
5、列控制列表CCL
5.1 什么是CCL
CCL(Column Control List) 限定了列的披露策略,以及允许在列上执行的操作。SCQL承诺遵守这些限定,拒绝执行不满足CCL要求的 query,并保证执行过程不会违背 CCL 规定的数据披露策略。CCL 可以表示为一个三元组 <src_column, dest_party, constraint>,其含义为 src_column 对于 dest_party 的约束策略。
5.2 CCL的设计缘由
由于 SCQL 语法灵活多变,查询者可以通过精巧地构造 Query 以从结果中尽可能地推测原始数据敏感信息。因此,在执行查询者提交 Query 前,一般需要获得数据 owner 的审核授权。
但是人工审核方式有如下两方面的问题:1、对审核者有较高的要求,审核者需要具备 Query 分析能力,能够分析出潜在的信息泄露问题;2、执行前审批等待时间长,Query 执行前需要获得 Query 涉及的所有数据 owner 的授权。
5.3 CCL约束详解
根据当前已经实现的语法,目前 CCL约束( constraints )一共分为如下 7 个类型。其中前 6 个约束说明数据在何种情况下可以披露出去。
PLAINTEXT
: 允许以任何形式(包括明文)进行计算和披露,没有任何使用上的限制,通常用于非敏感数据,请谨慎使用。PLAINTEXT_AFTER_JOIN
: 允许作为 INNER JOIN 的 key,经过 JOIN 后可以明文披露。PLAINTEXT_AFTER_GROUP_BY
: 被约束的列经过 GROUP BY 分组后可以明文披露。PLAINTEXT_AFTER_AGGREGATE
: 被约束的列经过 Aggregation 操作(如:SUM、AVG、MIN、MAX、COUNT)后的结果可以明文披露。PLAINTEXT_AFTER_COMPARE
: 被约束的列经过 Compare 操作(如:<, >, >=, =, != 等等)后的结果可以明文披露。ENCRYPTED_ONLY
: 始终以密态的形式参与计算,用于标记非常敏感数据,除了 COUNT 外(SCQL 不保护计算中间结果的size),不允许任何形式的披露。UNKNOWN
: 未定义,目前默认拒绝以任何形式披露。
6、SCQL的使用场景
SCQL可用于医疗数据研究、联合精准营销和智能保险理赔等场景中,数据可以进行水平切分(数据表字段一致,数据增多)和垂直切分(数据表字段不一致,属性增多)。
7、下面分享Slides
版权归原作者 不过如此0601 所有, 如有侵权,请联系我们删除。