隐私计算实训营学习五:隐语PSI介绍及开发指南
文章目录
- 一、SPU 实现的PSI介绍
- 1.1 PSI定义和种类
- 1.1.1 PSI定义和种类
- 1.1.2 隐语PSI功能分层
- 1.2 SPU 实现的PSI介绍
- 1.2.1 半诚实模型
- 1.2.2 PSI实现位置
- 二、SPU PSI调度架构
- 三、Secretflow PSI开发指南
- 四、隐语PSI后续计划
一、SPU 实现的PSI介绍
1.1 PSI定义和种类
1.1.1 PSI定义和种类
PSI(Private Set Intersection)安全求交集: 是一种特殊的安全多方计算(MPC)协议。 Alice持有集合X,Bob持有集合Y,Alice和Bob通过执行PSI协议,得到交集结果X∩Y,除交集外不会泄漏交集外的其它信息。

PSI分类:
-
2-Party/Multi-Party PSI
-
Balanced/Unbalanced) PSI
-
Semi-honest/Malicious PSI
-
PSI with computation:
PSI-CA(Cardinality)
PSI-Payload Analytics
Circuit PSI
1.1.2 隐语PSI功能分层
基础组件层: 包含基础密码算法与协议。
PSI协议实现层: 协议实现主要在中间SPU层,包含不同类型PSI协议实现;SPU往上封装了bucket_psi统一PSI入口,通过入口可以屏蔽不同协议的差异,调用时只需要指定输入与协议类型即可调用PSI。
PSI功能封装层: python调用框架secretflow,包含psi_csv与psi_df;再往上包含MVP(最小功能实现)与kuscia,有白屏、openapi与调用功能;还有SCQL通过SQL语句执行PSI与安全多方计算内容。

1.2 SPU 实现的PSI介绍
1.2.1 半诚实模型
1、两方
- ecdh、kkrt16、bc22(pcg-psi)
- ec-oprf PSI (Unbalanced PSI)
- dp-psi
2、多方
- ecdh-3-party(可扩展到多方)
1、ecdh-PSI介绍: 协议简单、易于理解与实现、通信成本小、计算量大、易于扩展到求交集数量与计算PSI类型。
实现过程:
1、Alice将自己的数据哈希到ECC点,通过私钥对这些点进行加密点乘,然后发送给bob。
2、bob对自己的value数据也做点乘,同时对接收到Alice数据,用其私钥β也做一次点乘计算。
3、Alice方计算y的α次方得到x的αβ次方与y的αβ次方,计算交集。
隐语实现的ecdh-PSI优点: 性能提升:测评及合规需求、互联互通。

2、KKRT16介绍:扩展了IKNP和KK OT,并且基于它们构造了新的Batch,Related-key OPRF。优点为运行时间较快,16年之后的多PSI协议大多数和KKRT作为比较基准。缺点为内存占用量比较大,通信量大。
主要流程: 主要构建为cuckoo hash、OT Extension、OPRF。
cuckoo hash:基于多个哈希,此处以3个哈希为例。左侧对X做3个哈希,判断哈希里面有没有H1X1位置有没有数据,若为空则放入H1位置,否则放入H2,H2若被占用放入H3…,若全部被占用则随机找一个位置将其替换。

KKRT优化: CuckooHash、AES->(Pipeline AES、Vector AES)、计算量大的矩阵转置(算法、intel比特转换指令加速)。


3、BC22 PCG介绍:基于sVOLE构建的BaRK-OPRF,以及Generalized Cuckoo Hash和Permutation-Based Hashing。Generalized Cuckoo Hash:普通的Cuckoo Hash每一行只有一个元素,有冲突放入下一个位置;Generalized每一行元素扩展到2个或3个。
BC22协议流程: 借助于VOLE方案,需要根据Cuckoo Hash的数量和每一行元素构建若干数量的VOLE,同时插入Cuckoo Hash和Simple Hash,再构建Bark-OPRF,双方交互OPRF值,在左侧计算出交集。

实现时选用的参数:

4、Unbalanced PSI介绍:实际应用出现两方数量级差值较大,渐少计算量。
ec-oprf based大致流程: Alice计算H(x)的α次方,Bob计算H(x)的αβ次方,Alice收到后再计算的H(x)α/1次方得到H(x)的β次方,与发送过来的H(y)的β次方做比较得到交集。

SHE-based大致流程: 同态PSI方案,有点为不需要吧大数据方的数据传输到小数据方,服务端会对数据做差值多项式,客户端将查询的数据同态发送到服务端,服务端计算多项式的结果返还给客户端,客户端解密若为0表示x在y集合中,否则x不在服务端数据中。缺点为计算量比较大,运行时间长。

5、基于ecdh的三方PSI协议介绍:
基于ecdh的三方PSI: 优点基于ecdh-psi,协议简单易于实现;缺点为泄露Alice和Bob两方交集数量。
协议流程:
-
Alice和Bob先进行交互,得到shuffle后的两方交集
-
Alice将shuffle后两方交集,发给Charlie
-
Charlie加密后的数据依次给Bob和Alice加密
-
Charlie比较密态数据,得到交集

1.2.2 PSI实现位置

二、SPU PSI调度架构
SPU调用架构: SecretFlow层有psi_csv,然后通过Bucket PSI分桶调度解决大数据问题,利用千万数据分为多个百万数据合并求交。

接口封装层: 分为bucket_psi、mem_psi、operator,通过operator将不同的协议注册到mem_psi统一由bucket_psi做调度。

bucket_psi: 包括调用时配置(psi类型、接收方标识、是否广播结果、输入输出参数、协议类型、分桶大小)。

memory_psi: 包括调用时配置(psi类型、接收方标识、是否广播、协议类型)。

operator协议注册给psi:

batch_provder读取csv文件接口: 指定每次读取数量分批读取数据。

三、Secretflow PSI开发指南
部署模式: 仿真模式与生产模式。

1、启动Ray集群。

2、初始化secretflow。

3、启动SPU设备。

4、执行PSI:配置psi_csv参数,输入、输出路径、协议类型、输出检查、输出排序等。

四、隐语PSI后续计划

相关文章:
隐私计算实训营学习五:隐语PSI介绍及开发指南
文章目录 一、SPU 实现的PSI介绍1.1 PSI定义和种类1.1.1 PSI定义和种类1.1.2 隐语PSI功能分层 1.2 SPU 实现的PSI介绍1.2.1 半诚实模型1.2.2 PSI实现位置 二、SPU PSI调度架构三、Secretflow PSI开发指南四、隐语PSI后续计划 一、SPU 实现的PSI介绍 1.1 PSI定义和种类 1.1.1 …...
ES的RestClient相关操作
ES的RestClient相关操作 Elasticsearch使用Java操作。 本文仅介绍CURD索引库和文档!!! Elasticsearch基础:https://blog.csdn.net/weixin_46533577/article/details/137207222 Elasticsearch Clients官网:https://ww…...
linux通用命令 ssh命令连接慢问题排查
系列文章目录 文章目录 系列文章目录一、 ssh 连接慢3.1 查找原因3.2 解决方案 一、 ssh 连接慢 最近的 koji 服务器 使用 ssh 连接很慢。 3.1 查找原因 可以通过 ssh -vvv 192.168.0.123 或 time ssh root192.168.0.123 exit 查找原因如下: SERVER的SSHD会去DN…...
7.卷积神经网络与计算机视觉
计算机视觉是一门研究如何使计算机识别图片的学科,也是深度学习的主要应用领域之一。 在众多深度模型中,卷积神经网络“独领风骚”,已经被称为计算机视觉的主要研究根据之一。 一、卷积神经网络的基本思想 卷积神经网络最初由 Yann LeCun&a…...
Linux|如何管理多个Git身份
摘要 关于如何管理不同项目和多个Git身份。 作为一名通用软件开发者,我经常发现自己在处理各种各样的项目,每个项目都有自己的要求和期望。这包括为个人、工作和客户项目管理不同的Git身份。以下是我组织Git仓库以简化这一过程的方法。 目录组织 我将我的…...
力扣---最长回文子串---二维动态规划
二维动态规划思路: 首先,刚做完这道题:力扣---最长有效括号---动态规划,栈-CSDN博客,所以会有一种冲动,设立g[i],表示以第i位为结尾的最长回文子串长度,然后再遍历一遍取最大长度即可…...
(一)kafka实战——kafka源码编译启动
前言 本节内容是关于kafka消息中间键的源码编译,并通过idea工具实现kafka服务器的启动,使用的kafka源码版本是3.6.1,由于kafka源码是通过gradle编译的,以及服务器是通过scala语言实现,我们要预先安装好gradle编译工具…...
Spring Boot 使用 Redis
1,Spring 是如何集成Redis的? 首先我们要使用jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><gro…...
火车头通过关键词采集文章的原理
随着互联网信息的爆炸式增长,网站管理员和内容创作者需要不断更新和发布新的文章,以吸引更多的用户和提升网站的排名。而火车头作为一款智能文章采集工具,在这一过程中发挥着重要作用。本文将探讨火车头如何通过关键词采集文章,以…...
Kafka 面试题及参考答案
目录 1. Kafka 的核心特性是什么? 2. Kafka 为什么能够实现高吞吐量? 3. Kafka 的消息丢失是...
【Qt 学习笔记】Day1 | Qt 背景介绍
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Day1 | Qt 背景介绍 文章编号:Qt 学习笔记 / 01 文章目录…...
springboot3.2.4+Mybatis-plus在graalvm21环境下打包exe
springboot3.2.4Mybatis-plus在graalvm21环境下打包exe 前提条件为之前已经能直接打包springboot3.2.4项目了然后在此基础上接入Mybatis-plus,然后能够正常进行打包exe并且执行,参考之前的文章进行打包 核心配置如下 package com.example.demo.config…...
Kubernetes(K8S)学习(二):K8S常用组件
K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace(命名空间)1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内:同一个Pod中的容器通信2、…...
如何使用群晖WebDAV实现固定公网地址同步Zotero文献管理器
文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端 (D…...
【JavaSE】初识线程,线程与进程的区别
文章目录 ✍线程是什么?✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么? ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…...
全国青少年软件编程(Python)等级考试三级考试真题2023年9月——持续更新.....
青少年软件编程(Python)等级考试试卷(三级) 分数:100 题数:38 一、单选题(共25题,共50分) 1.有一组数据存在列表中,things[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“…...
react-navigation:
我的仓库地址:https://gitee.com/ruanjianbianjing/bj-hybrid react-navigation: 学习文档:https://reactnavigation.org 安装核心包: npm install react-navigation/native 安装react-navigation/native本身依赖的相关包: react-nativ…...
nginx负载均衡模式
轮询 (Round Robin) 用法:这是Nginx默认的负载均衡策略。每个请求会按顺序分配给upstream中的后端服务器,即按照配置的服务器列表顺序依次分配。 upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.…...
手写简易操作系统(十七)--编写键盘驱动
前情提要 上一节我们实现了锁与信号量,这一节我们就可以实现键盘驱动了,访问键盘输入的数据也属于临界区资源,所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的,在当时,按下键盘就会触发中断&a…...
springboot中基于RestTemplate 类 实现调用第三方API接口【POST版本】
https://blog.csdn.net/Drug_/article/details/135111675 这一篇的升级版 还是先配置文件 package com.init.config;import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.clie…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
