隐私计算实训营学习八:隐语SCQL的开发实践

文章目录

  • 一、SCQL使用集成最佳实践
    • 1.1 SCQL使用流程
    • 1.2 SCQL部署
    • 1.3 SCQL使用示例
  • 二、SCQL工作原理
  • 三、使用SecretNote上手体验SCQL

一、SCQL使用集成最佳实践

1.1 SCQL使用流程

SCQL使用: SCQL 开放 API 供⽤户使⽤/集成。可以使⽤SCDBClient上⼿体验(类似与Mysql Client的命令行工具);也可以基于 SCQL API 开发封装⽩屏产品,或集成到业务链路中。
在这里插入图片描述
对于SCQL来说,所有的请求都是以Query的形式去表达的,提供了同步与异步接口:

  • 用户异步提交Query,再轮询结果;
  • 同步同步提交Query,等待Query结束之后返回结果。

对于时间执行比较短的QueryDDL、DCL及小规模DQL,推荐使用SubmitAndGet()接口。对于耗时长,规模大的DQL查询,推荐使用异步接口。
在这里插入图片描述

使用流程: 系统部署、项目设置、联合分析。

项目设置:

  1. 先创建用户与项目;
  2. 给用户授权加入项目,用户可以在该项目创建表,设置CCL。
    在这里插入图片描述

1.2 SCQL部署

SCQL部署: 实际生产由多个参与方配合完成。

环境准备:

​ 机器配置:CPU/MEM 最低 8C16G

​ 机构之间的⽹络互通

镜像: secretflow/scql

SCDB(部署在可信第三方,使用其DB存储原数据): 启动:/home/admin/bin/scdbserver -config=/path/to/config.yml

SCQLEngine(部署在数据参与方,需要能够访问到用于联合数据分析的数据源): 启动:/home/admin/bin/scqlengine --flagfile=/path/to/gflags.conf
在这里插入图片描述

1.3 SCQL使用示例

SCQL使用示例:《SCQL 快速开始》⽂档:https://www.secretflow.org.cn/docs/scql/latest/zh-Hans/getting_started/quickstart

SCQL基础概念:

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

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

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

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

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

SCDB(SCQL as a Database): SCDB 遵循传统DBMS概念,将DBMS概念映射到SQCL中。

1、创建项目:CREATE DATEBASE xxx;
2、SCQL中每个用户隶属于一个参与方,目前每个参与方只允许创建一个用户,PRATY_CODE哪个参与方。
3、Table:物理表在DB里的一个映射。
4、Privilege进行授权。
在这里插入图片描述
假设有该场景:⾦融机构 Alice 想联合电商平台 Bob 做联合⽤户画像分析,Alice 希望统计不同信⽤等级,年龄在 20 岁到 30 岁之间且为电商平台 Bob 的活跃⽤户的⼈数,以及平均收⼊和平均交易额。
在这里插入图片描述
1、创建用户:建立用户和机构的绑定关系。

SCDB 内置了⼀个权限受限的 root ⽤户,⽅便系统 bootstrap:
1、root ⽤户只能做 CREATE database/user 等操作。
2、root ⽤户⽆法修改普通⽤户设置的 CCL,⽆法发起查询(DQL)。
3、root ⽤户滥⽤不会导致数据泄露。
在这里插入图片描述
Alice 和 Bob 分别创建所属⾃⼰机构的⽤户:
1、⽅式⼀:若指导root账号密码,可直接通过 root 账号创建。
2、⽅式⼆:委托可信第三方用 root 账号管理者(持有者)创建。
在这里插入图片描述
为什么创建⽤户的时候需要公钥和签名? ⽬的是防⽌伪造身份攻击,加入Alice创建用户用私钥签名create user请求,将公钥告诉SCDB,SCDB会将该公钥信息与Alice关联。此时有恶意用户Mallory冒充Bob,但不知道Bob的公私钥,只能用伪造的公私钥签名,SCDB指导公私钥是成对的,但无法识别是否为冒充的。Mallory冒充Bob发起联合查询,SCDB将其下发给SCQL Engine并带上参与方的公钥,此时比对不匹配便会拒绝执行。

通过如下程序保证伪造身份攻击⽆法导致数据泄露:

  1. 前提条件:每个参与⽅在部署SCQLEngine 节点时,需要⽣成(或提供)公私钥,并和合作⽅交换公钥,配置到引擎侧的 authorized_profile ⽂件中;
  2. SCDB 在处理 create user 请求时,会校验签名,确保请求者有对应的私钥;
  3. SCDB 在处理请求者的 DQL 时,会把请求者和查询涉及参与⽅的公钥信息⼀起下发给 SCQLEngine。SCQLEngine会先校验⾃⼰和合作⽅的公钥,如果不匹配,就拒绝执⾏。
    在这里插入图片描述2、创建项目:将参与合作方添加到项目。
    在这里插入图片描述
    3、创建表:将参与方导入联合分析的数据表。
    在这里插入图片描述
    4、设置CCL:
    在这里插入图片描述
    5、发起联合查询DQL:
    在这里插入图片描述

二、SCQL工作原理

SCDB将用户的Query翻译成执行图下发给SQCL Engine执行时,SCQL Engine如何完成执行,与SPU有什么关系?
SCQL x SPU: SCQL Engine集成SPU是将SPU当作lib用,当作C++API。
SPU前端为Tensorflow、JAX、PyTorch可以将Python的机器学习应用程序变成一个安全多方计算的AI程序去执行,SQCL直接用pphloC++的API接入的,并且使用ColocatedIO模式(数据拥有方同时作为数据计算方)。
在这里插入图片描述
以Aggregation w/group by看SCQL如何实现:
在这里插入图片描述
在明文下的基于排序的思路方案:
1、实现一张数据表k和v,k为GROUP BY k,v为要聚合的类;
2、按照k进行排序,将相同的k排序在一起进行分组,相邻在一起方便后期计算;
3、再进行分组聚合,b[i]为1表锁位置i的元素是该分组的最后一个元素,再对v进行聚合;
4、只保留b[i]为1的结果,最后进行过滤得到结果。
在这里插入图片描述
在密文下SCQL的实现方案:有4种实现,会考虑数据状态、数据分布和CLL设置选择最佳执行协议。Private groupby明文计算:性能最高,适用范围最低,要求group by的k与聚合类都属于同一个数据参与方;随后还有HESum groupby、Vertical groupby、Oblivious groupby性能越来越差而适用范围越来越广。
在这里插入图片描述
以HESum GroupBy实现举例SCQL的实现:k在Alice方,v在Bob方,序号为一一对应的。
1、Alice将数据提前分组,每个组哈希到一个gid上;此时Bob将v加密后得到密文,将密文发送给Alice;
2、Alice将属于同一个分组的加起来,如第0组,E(3)+E(10)=E(13);
3、Alice进行过滤每组只保留一个元素,同时将得到的密文发送给Bob,Bob进行解密得到结果。
在这里插入图片描述

三、使用SecretNote上手体验SCQL

使用SecretNote体验SCQL:以UI 界面的方式,上手体验 P2P 模式的 SCQL,流程与之前一致。
1、部署系统:需要先部署SCQL P2P节点部署,再安装启动SecretNote,SecretNote需要指导SCQL P2P节点端口的地址。
2、项目设置:ALICE创建项目,邀请BOB加入,两方导入各自数据表,进行CCL授权。
3、联合分析:最终进行联合分析。
在这里插入图片描述
安装部署:
在这里插入图片描述
1、部署 SCQL P2P节点

​ 单机 P2P 部署模式:https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/intro/p2p-tutorial

​ 多节点 P2P 部署模式:https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/topics/deployment/how-to-deploy-p2p-cluster

2、部署启动 SecretNote
在这里插入图片描述
使用示例:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】宠物销售系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

机器学习(五) -- 监督学习(3) -- 朴素贝叶斯

系列文章目录及链接 目录 前言 一、朴素贝叶斯通俗理解及定义 二、原理理解及公式 1、概率基础 2、贝叶斯公式 3、拉普拉斯平滑系数 三、**算法实现 四、接口实现 1、新闻数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、朴素贝叶…

Java Math类

Math常用的API 代码 System.out.println(Math.abs(-12)); // 12 绝对值System.out.println(Math.ceil(12.3)); // 13.0 向上取整System.out.println(Math.floor(12.3)); // 12.0 向下取整System.out.println(Math.max(12, 13)); // 13 最大值System.out.println(Math.min(12, 1…

顺序表的应用之通讯录

学习了顺序表之后,我们也得知道它的实际用途吧!所以,我们今天来学习一下通讯录的实现。 typedef struct personInfo SLDataType; contact.h #define NAME_MAX 20 #define GENDER_MAX 20 #define GTEL_MAX 20 #define ADDR_MAX 100 #include&…

Java Web这一路走来

大部分Java应用都是Web或网络应用,MVC框架在Java框架中有着举足轻重的地位,一开始的Web应用并不现在这样子的,一步一步走来,每一步都经历了无数的血和泪的教训,以史为镜可以知兴替。 1. 草莽时代 早期的Java服务端技…

Flutter开发之图片选择器

使用FLutter开发了一个图片选择的组件,功能如下: 1、支持设置最大可选图片的个数; 2、根据选择的图片个数自适应容器组件的高度; 3、可设置容器的最大高度; 4、支持点击放大和删除功能; 具体效果如下 …

HarmonyOS4.0 ArkTS基本语法

一、项目目录结构 二、HelloWorld 当我们创建一个新的page时,IDE会给我们生成一个HelloWorld的模板 新建page 开启预览器 三、ArkTS基本组成 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中Entry、Component…

软考113-上午题-【计算机网络】-IPv6、无线网络、Windows命令

一、IPv6 IPv6 具有长达 128 位的地址空间,可以彻底解决 IPv4 地址不足的问题。由于 IPv4 地址是32 位二进制,所能表示的IP 地址个数为 2^32 4 294 967 29640 亿,因而在因特网上约有 40亿个P 地址。 由 32 位的IPv4 升级至 128 位的IPv6&am…

Qt快速入门到熟练(3.程序运行发布与设置图标)

程序运行发布 当我们执行过qt过后,将会在项目目录里面生成出一个debug构建目录,点击进去选择debug文件夹,就可以看到我们生成出来的可执行文件。 很显然我们的项目就叫做MyFirstWidget,所以生成的可执行文件在没有人为设置的情…

idea链接gitlab的token到期

报错 HTTP Request Request GET http://36.46.143.158:6060/api/v4/version failed wit

基于javaJSPssm实现的交通档案管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

VM虚拟机部署code-server服务+tailscale内网穿透,实现随处coding

1.Linux下安装code-server Releases coder/code-server (github.com)https://github.com/coder/code-server/releases先去发布页面查看最新的code-server版本,下载命令示例: wget https://github.com/coder/code-server/releases/download/v4.22.1/co…

【操作系统】STM32-操作系统——持续更新

【操作系统】STM32-操作系统——持续更新 文章目录 前言一、ucosii二、freertos1.介绍2.移植 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、ucosii UCOSII移植到STM32F103C8T6上之移植记录(一) UCOSII移植到ST…

物联网实战--入门篇之(九)安卓QT--开发框架

目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具,已经包含了很多常用的库,除了基本的GUI以外,还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库,开发起来…

好看流光风格个人主页HTML源码

这是一款好看流光风格个人主页HTML源码,感觉挺喜欢的,需要的自行下载! 源码下载 好看流光风格个人主页源码

SpringBoot3整合RabbitMQ之三_工作队列模型案例

SpringBoot3整合RabbitMQ之三_工作队列模型案例 文章目录 SpringBoot3整合RabbitMQ之三_工作队列模型案例2. 工作队列模型1. 消息发布者1. 创建工作队列的配置类2. 发布消费Controller 2. 消息消费者One3. 消息消费者Two4. 消息消费者Three5. 输出结果 2. 工作队列模型 1. 消息…

SGD随机梯度下降

一、补充概念: 目标函数(Objective Function):这个术语通常指的是整个优化问题中需要最小化(或最大化)的函数。在机器学习和优化中,目标函数可以包括损失函数以及正则化项等。目标函数的最优化过…

怎么转换图片格式jpg?分享几种转换的方法

我们都知道现在图片格式种类非常多,比较常用的有jpg、png、webp等,很多时候,我们在网上保存的照片不是jpg格式的,查看或者编辑起来就很麻烦,这时候你可能需要将图片转换成jpg格式,那怎么转换图片格式jpg呢?…

【CNN】ConvMixer探究ViT的Patch Embedding: Patches Are All You Need?

Patches Are All You Need? 探究Patch Embedding在ViT上的作用,CNN是否可用该操作提升性能? 论文链接:https://openreview.net/pdf?idTVHS5Y4dNvM 代码链接:https://github.com/tmp-iclr/convmixer 1、摘要 ViT的性能是由于T…

我的 256天 创作纪念日

创作纪念日 我与CSDN的初识耕耘后的收获有笑有泪的日常小小的成就我的憧憬 我与CSDN的初识 在大一上学期的C语言课程中,我首次接触到CSDN。那时,面对众多难以理解的题目,我不得不频繁搜索相关知识和题解,CSDN成了我的救星。这个经…