第8课:快速上手隐语SCQL的开发实践

Jasin_Liu 2024-04-03 23:14:36

 

1. SCQL 使⽤/集成最佳实践

1.1. SCQL 开放 API 供⽤户使⽤/集成

• 使⽤ SCDBClient 上⼿体验

• 基于 SCQL API 开发封装⽩屏产品,或集成到业务链路

 

1.2. 使⽤流程

  1. 部署系统
  2. 项目设置
  3. 联合分析

 

1.3. SCQL 部署

 

1.4. SCDB

SCQL 概念

• Project: 多个参与⽅在协商⼀致后加⼊到同⼀个项⽬中进⾏多⽅安全数据分析

• 参与⽅身份认证:参与⽅执⾏ query 时需要进⾏身份认证

• 数据表管理:管理参与分析的数据表的 schema 信息

• 权限信息管理:表字段的权限信息,特别是 CCL 信息

⽤户在每次执⾏ query 的时候,均需要提供上述信息,上⼿成本较⾼

 

SCQL as a Database SCDB 遵循传统 DBMS 概念

 

1.5. 创建用户

 

 

Q:为什么创建⽤户的时候需要公钥和签名?
A:⽬的是防⽌伪造身份攻击
Q: How?
A:通过如下程序保证伪造身份攻击⽆法导致数据泄露:

  1. 前提条件:每个参与⽅在部署SCQLEngine 节点时,需要⽣成(或提供)公私钥,并和合作⽅交换公钥,配置到引擎侧的 authorized_profile ⽂件中;
  2. SCDB 在处理 create user 请求时,会校验签名,确保请求者有对应的私钥;SCDB 在处理请求者的 DQL 时,会把请求者和查询涉及参与⽅的公钥信息⼀起下发给 SCQLEngine。SCQLEngine会先校验⾃⼰和合作⽅的公钥,如果不匹配,就拒绝执⾏。

1.6. 创建项⽬ & ⽤户授权

 

1.7. 创建表

 

1.8. 设置 CCL

 

1.9. 发起联合分析查询 DQL

 

2. SCQL ⼯作原理

2.1. SCQL Architecture & Workflow

 

SCQL 将查询语句转换为安全计算协议,该协议定义了如何对数据进行加密和处理,以使得参与方不会直接访问其他参与方的敏感数据。协议可以使用各种密码学技术,如同态加密、安全多方计算和零知识证明等。

在执行查询时,参与方按照协议的规定进行计算,并通过交换加密的中间结果来计算最终的查询结果。这样,每个参与方只能获取到自己所拥有的数据和查询结果,并且无法直接获知其他参与方的数据。

2.2. SCQL x SPU

SCQL use SPU as a lib

  • PPHLo C++ API 接⼊
  • ColocatedIO 模式

 

 

2.3. Aggregation w/ group by 示例

明文环境

 

四种方案

 

HESum GroupBy 实现举例

 

3. 实践

基于examples p2p-tutorial实现带有ui的scql

注意:要将scql的本地镜像升级到最新

...全文
28 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

465

社区成员

发帖
与我相关
我的任务
社区描述
隐语开源社区,隐私计算开发者交流和讨论的平台。
密码学可信计算技术安全 企业社区
社区管理员
  • 隐语SecretFlow
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【最新活动】

3月18日:隐私计算实训营第一期

试试用AI创作助手写篇文章吧