视频链接:第8讲(上):隐语SCQL的开发实践丨隐私计算实训营 第1期_哔哩哔哩_bilibili
第8讲(下):隐语SCQL的开发实践丨隐私计算实训营 第1期_哔哩哔哩_bilibili
具体内容如下:
一、SCQL使用/集成最佳实践
对于单次查询,SCQL 在计算过程中提供满足 CCL 权限要求的数据机密性保护。
具体可以参考:SecretFlow
SCQL目前仅开放了API供用户使用和集成,可以使用SCDBClient(类似Mysql Client)上手体验,也可以基于SCQL API开发封装白屏产品,或直接集成到业务链路中。对于SCQL而言,所有的请求都是以Query的形式表达,目前提供了两类接口,一类是用户异步提交查询再轮训结果,另一类是用户同步提交Query,等待Query结束后,返回结果。对于查询执行时间比较短的情况,例如DDL/DCL或者小规模DQL,推荐使用SubmitAndGet接口,更加简单。对于耗时比较长,规模较大的查询,更推荐异步接口。简单来说,自定义客户端应该为用户的 SQL 构建 HTTP 请求,提交到 SCDB 并解析 SCDB 的响应,其中SCDB即SCQL as a Database。
SCDB 支持如下三种接口,Submit:异步 API,用于提交 SQL 查询并返回,服务器监听 ${SCDBHost}/public/submit_query;
Fetch:异步 API,尝试获取 SQL 查询的结果,服务器监听 ${SCDBHost}/public/fetch_result;
SubmitAndGet:同步 API,提交查询并等待获取查询结果,服务器监听server listen on ${SCDBHost}/public/submit_and_get。
SCQL的使用分为3个流程,首先是部署系统(SCQL 支持两种部署架构:中心化和 P2P),其次进行项目设置(创建用户,Create User XXX PARTY_CODE party_code IDENTIFIED BY 'XXX' WITH auth_opt ENDPOINT endpoint,每个用户都隶属于某个参与方,目前一个参与方只允许创建一个用户;创建DB也就是项目,CREATE DATABASE XXX;创建表,即物理表在DB里的映射,CREATE TABLE XXX REF_TABLE=XXX DB_TYPE=XXX,这里创建表意味着将表名
映射到现有的物理表,该物理表由 REF_TABLE
选项指定并位于查询发出方。在 SCQL 中,用户在虚拟表上运行查询,这有助于简化权限控制和使用;权限包括给用户授权和设置CCL, GRANT XXX ON XXX TO XXX),最后进行联合分析查询DQL。
SCDB 提供了类似 SQL 的用户界面,与大多数 MySQL 语法兼容。
二、SCQL工作原理
Secure Collaborative Query Language (SCQL) 是一种能够将 SQL 语句转换为明密文混合执行图,并在联合数据库系统上执行的系统。该系统的 MPC 框架由 SPU 提供支持,SCQL把SPU当作lib来使用。
三、使用SecretNote上手体验SCQL
首先部署SCQL p2p节点,执行example/p2p-tutorial目录下bash setup.sh,setup.sh 脚本将为各方生成私钥,并交换各参与方的公钥,将公钥添加到 authorized_profile.json 配置中。之后通过docker compose 启动
然后部署启动SecretNote(Both Alice and Bob)
启动后如下图所示:
在Alice侧创建项目,Add New Project,之后Bob Accept
Alice添加数据表ta,Bob添加数据表tb,并分别设置CCL
最后进行联合分析查询