当前位置: 首页 > news >正文

隐私计算实训营学习五:隐语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分类:

  1. 2-Party/Multi-Party PSI

  2. Balanced/Unbalanced) PSI

  3. Semi-honest/Malicious PSI

  4. 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、两方

  1. ecdh、kkrt16、bc22(pcg-psi)
  2. ec-oprf PSI (Unbalanced PSI)
  3. dp-psi

2、多方

  1. 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两方交集数量。

协议流程:

  1. Alice和Bob先进行交互,得到shuffle后的两方交集

  2. Alice将shuffle后两方交集,发给Charlie

  3. Charlie加密后的数据依次给Bob和Alice加密

  4. 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&#xff0c;Spring 是如何集成Redis的&#xff1f; 首先我们要使用jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><gro…...

火车头通过关键词采集文章的原理

随着互联网信息的爆炸式增长&#xff0c;网站管理员和内容创作者需要不断更新和发布新的文章&#xff0c;以吸引更多的用户和提升网站的排名。而火车头作为一款智能文章采集工具&#xff0c;在这一过程中发挥着重要作用。本文将探讨火车头如何通过关键词采集文章&#xff0c;以…...

Kafka 面试题及参考答案

目录 1. Kafka 的核心特性是什么? 2. Kafka 为什么能够实现高吞吐量? 3. Kafka 的消息丢失是...

【Qt 学习笔记】Day1 | Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Day1 | Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录…...

springboot3.2.4+Mybatis-plus在graalvm21环境下打包exe

springboot3.2.4Mybatis-plus在graalvm21环境下打包exe 前提条件为之前已经能直接打包springboot3.2.4项目了然后在此基础上接入Mybatis-plus&#xff0c;然后能够正常进行打包exe并且执行&#xff0c;参考之前的文章进行打包 核心配置如下 package com.example.demo.config…...

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace&#xff08;命名空间&#xff09;1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内&#xff1a;同一个Pod中的容器通信2、…...

如何使用群晖WebDAV实现固定公网地址同步Zotero文献管理器

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…...

【JavaSE】初识线程,线程与进程的区别

文章目录 ✍线程是什么&#xff1f;✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么&#xff1f; ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…...

全国青少年软件编程(Python)等级考试三级考试真题2023年9月——持续更新.....

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.有一组数据存在列表中,things[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“…...

react-navigation:

我的仓库地址&#xff1a;https://gitee.com/ruanjianbianjing/bj-hybrid react-navigation&#xff1a; 学习文档&#xff1a;https://reactnavigation.org 安装核心包: npm install react-navigation/native 安装react-navigation/native本身依赖的相关包: react-nativ…...

nginx负载均衡模式

轮询 (Round Robin) 用法&#xff1a;这是Nginx默认的负载均衡策略。每个请求会按顺序分配给upstream中的后端服务器&#xff0c;即按照配置的服务器列表顺序依次分配。 upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.…...

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&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…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...