前沿技术|张磊:RR22 Blazing Fast PSI 实现介绍

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制

开源项目

github.com/secretflow

gitee.com/secretflow

11月25日,「隐语开源社区 Meetup·西安站」顺利举办,本文为大家带来的是蚂蚁集团安全协议团队技术专家 张磊 在本次活动中的精彩演讲回顾——《RR22 Blazing Fast PSI 实现介绍》。

👉 戳我查看现场视频:直播视频

本次活动更多分享实录可点击这里查看

大家好,我是蚂蚁安全协议团队的开发人员张磊,很高兴跟大家分享一下隐语 PSI 方面的进展。今天介绍的内容主要分成四部分:

  • PSI 简介
  • Blazing Fast PSI 简介和性能概览
  • Blazing Fast PSI 原理介绍
  • 隐语 Easy PSI 实现 Blazing Fast PSI 介绍

PSI 简介

PSI 是一种特殊的 MPC 协议,由两方或者多方参与的协议,每方有相应的数据集合,参与方通过执行 PSI 协议得到交集结果,不会泄露交集外的其他信息。

PSI 有多种分类方式:

  • 按参与方可以分成两方 PSI 和多方 PSI
  • 按数据量级可以分成平衡 PSI 和非平衡 PSI
  • 按安全模型可以分成半诚实 PSI 和恶意 PSI

PSI 也有很多的应用场景,比如联合风控、联合营销、黑名单查询、多要素核验、样本对齐。示例图中是双方通过执行 PSI 协议得到一个黑名单的信息,便于做安全方面的审核。

Blazing Fast PSI 简介和性能概览

为了对单方两个集合求交的性能有个参考,我们使用了大模型来生成千万规模集合求的代码。整体的框架:首先产生两个随机数据集,然后利用编程语言的特性进行求交,最后输出运行时间和求交结果。当数据规模达到 1677 万时,求交所需时间大约为 5~10s。请注意,这些代码是通过大模型产生的,仅代表了一般的情况。我们以这个运行时间作为参考值,以便与后面介绍的 PSI 算法的运行时间进行对比。

我们特定 2^24 大小的数据集进行求交,可以观察到 Blazing Fast PSI 的性能已经基本与明文下的性能一致。

从上图中,可以看到:

  • KKRT 算法的运行时间较短,但通信量较大。
  • Ecdh 算法的运行时间较长,但带宽较低。
  • Blazing Fast PSI 位于右下角的位置,即它在时间和通信量方面都具有较大的优势,能够满足不同场景下业务的应用需求。

这是一个带宽分析,可以看出 Blazing Fast PSI 相对于其他 PSI 算法所需的通信量更少。

Blazing Fast PSI 原理介绍

从论文的题目可以看出,Blazing Fast PSI 由两个组件组成:OKVS 和 VOLE。通过构建这两个组件,我们可以实现一个相对快速的 Blazing Fast PSI。OKVS 包含两个算法,Encode 和 Decode:

  • Encode:通过 K向量和 V 向量求得对象P,特别的是在一些线性情况,对象P 是一个向量。
  • Decode:则是当 key 在 Encode 集合时,能得到对应的 value,当 key 不在 Encode 集合时得到相对随机的值。

OKVS 有多种实现方式,包括了 2-cuckoo hash,3-cuckoo hash 和多项式插值等方式。在多项式插值实现下,Encode 会产生一个多项式P及其系数。在 Encode 过程中,需要将 向量K 放入多项式中,也可以理解为对右下角矩阵的形式,然后对多元线性方程求解,计算多项式P的系数(P1,...,Pn)。

而在 [RR22] 中,OKVS 则是通过cuckoo哈希将 key 映射到 随机矩阵H 中(weight 选择为3时,性能最佳),然后通过三角化、后向传播等方法求解 向量P,使得 H · P = V。

[RR22] 还设计了一种称为 Clustering 的优化方法:将系数矩阵分块,使得权重相对聚集在某一部分,例如:第一块的权重主要集中在前半部分。这样每个 Clustering 可以单独进行相应的三角化,并支持多线程并行处理。同时,根据论文分析选取 Clustering 参数为 2^14时,性能达到最优。

有了 OKVS 组件之后,可以构造一个“简单”的 PSI 协议。发送方可以使用 Encode 算法对 向量X 和 向量H(X) 进行处理得到 向量P,并把 向量P 发送给接收方;接收方使用 向量Y 和 Decode 算法能得到 向量V,然后将 向量V 发送给发送方。最后,发送方通过比较向量 H(X) 和 向量V,可以计算出它们的交集。然而,这样的方案不能抵御穷举攻击,换而言之,需要一些密码组件来保护 OKVS。

这引出了下一个组件 VOLE。VOLE 也是一种双方协议,通过执行该协议,左侧的一方会得到 向量A 和 向量B,右侧的一方会得到\Delta和 向量C,同时,它们还满足 C = \Delta \cdot A + B 的关系。需要注意的是,向量A 是属于域F_p,当F_p = F_q时,称之为 VOLE 关系;而当F_p \subset F_q 时,又称之为 subfield-VOLE 关系。同时,这两种 VOLE 也对应了 PSI 中的两种使用模式,分别为快速模式和低带宽模式。

VOLE 的构造协议比较高效。主流的构造主要分为了三步:首先,通过Base VOLE协议得到少量的 VOLE;然后,通过 Multi-Point VOLE 协议得到“稀疏”的 VOLE 关系,如图中所示,向量e 是稀疏的;最后,通过 LPN/Dual-LPN,对“稀疏”的 VOLE 关系进行处理,使其变成均匀随机的 VOLE 关系。

有了 VOLE 组件之后,可以用其保护 OKVS。首先,发送方使用 VOLE 中的 向量A' 对 OKVS 中的 向量P 进行掩盖,并发送给接收方。接收方使用 VOLE 中的 △ 和 向量B,计算出 向量K,并使用 向量K 和 向量Y 进行 Decode,然后把 Decode 的结果 向量Y' 发给发送方。最后,发送方通过对比 向量X' 和 向量Y' 得到交集。

在这个基础方案上可以引申出两个两种模式,一种是快速模式,一种是低带宽模式。

快速模式,是在构造 OKVS 过程中,使用了 Clustering 技术,提升运行效率。而在低带宽模式下,则是是用了 subfield VOLE 技术,从而将低向量的通信量从 157n 降低到 79n。

未来规划

目前我们已经实现了 Blazing Fast PSI,并且性能与 VisaResearch/volepsi 中的性能基本一致,并支持了 Fast 和 LowComm 两种模式。

最后,简单介绍一下我们的未来规划。我们计划基于 OKVS+VOLE 实现高效的 2 方恶意 PSI、2 方 Circuit PSI、多方PSI、PSU 等。

以上就是我今天的全部分享,谢谢大家!

🌟 关注「隐语Secretflow」B 站, 获取更多演讲回顾及相关资讯

  🏠 隐语社区:

github.com/secretflow

gitee.com/secretflow

www.secretflow.org.cn (官网)

👇 欢迎关注:

公众号:隐语小剧场

B站:隐语secretflow 

邮箱:secretflow-contact@service.alipay.com

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pika:AIGC新秀,视频生成产业或迎来GPT时刻

今天分享的AIGC系列深度研究报告:《Pika:AIGC新秀,视频生成产业或迎来GPT时刻》。 (报告出品方:中泰证券) 报告共计:11页 Pika:专注Text to Video生成场景,支持3D和动漫…

从视频中提取图片,轻松制作专属视频封面

你是否曾经为如何制作一个吸引人的视频封面而烦恼?现在,我们将向你展示如何从视频中提取图片,并轻松制作专属的视频封面。无论你是视频编辑新手,还是经验丰富的专业人士,这个技巧都能够帮助你快速提升你的视频品质。 …

时间戳与QDateTime转换,以及QString转时间戳

1、主要有时间戳->QDateTime,QDateTime->QString 2、同时QString->QDateTime,QDateTime->时间戳 详情见代码&#xff1a; //QDateTime转时间戳qint64 time QDateTime::currentSecsSinceEpoch();double nowTime (double)time;qDebug()<<"nowTime1111…

【VTK】VTK中的光标样式

很高兴在雪易的CSDN遇见你 前言 本文分享VTK中的光标设置相关内容技术&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点赞就是我的动力(&#xff3e;&#xff35;&#…

你知道如何画时间轴吗?

时间轴的英文是time axis。贯穿四维空间的一条线&#xff0c;是虚数轴&#xff0c;时间轴上一段距离表示时间 。&#xff08;源自“百度百科”&#xff09; 时间轴&#xff1a;通过互联网技术&#xff0c;依据时间顺序&#xff0c;把一方面或多方面的事件串联起来&#xff0c;…

12.11作业

1. 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&…

java面试题-mysql索引相关问题

远离八股文&#xff0c;面试大白话&#xff0c;通俗且易懂 看完后试着用自己的话复述出来。有问题请指出&#xff0c;有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来&#xff0c;大家一起解决。 java面试题汇总-目录-持续更新中 这一块本想着晚一点再整…

大型软件编程实际应用实例:个体诊所电子处方系统,使用配方模板功能输入症状就可开出处方软件操作教程

一、前言&#xff1a; 在开电子处方的时候&#xff0c;如果能够输入症状就可以一键导入配方&#xff0c;则在很大程度上可以节省很多时间。而且这个配方可以根据自己的经验自己设置&#xff0c;下面以 佳易王诊所电子处方软件为例说明。 二、具体一键导入配方详细操作教程 点击…

Linux本地部署Mosquitto MQTT协议消息服务端并实现远程访问【内网穿透】

文章目录 前言1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 前言 Mosquitto是一个开源的消息代理&#xff0c;它实现了MQTT协议版本3.1和3.1.1。它可以在不…

牛客周赛 Round 22(C、D题解)

C、小红的数组构造&#xff08;思维&#xff09; 一、题目要求 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小红想让你构造一个长度为 n 的数组&#xff0c;满足以下三个条件&#xff1a; 1. 该数组最大值不超过 k。 2. 该数…

adb命令学习记录

1、 adb ( android debug bridge)安卓调试桥&#xff0c;用于完成电脑和手机之间的通信控制。 xcode来完成对于ios设备的操控&#xff0c;前提是有个mac电脑。 安卓系统是基于linux内核来进行开发的。 2、adb的安装: 本身 adb是 android SDK 其中自带的工具&#xff0c;用于完…

项目必备手册-项目计划书

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件全资料获取&#xff1a;点我获取

充分发挥SQL能力之数列

SQL数列 1、数列概述2、SQL数列2.1、简单递增序列2.2、等差数列2.3、等比数列3、SQL数列的应用3.1、连续问题3.2、多维分析1、数列概述 数列是最常见的数据形式之一,实际数据开发场景中遇到的基本都是有限数列。常见的数列例如:简单递增序列、等差数列、等比数列等 如何充分…

(新手必看)自定义数据传输通信协议+STM32代码详解

前言 本篇博客主要学习和了解一些单片机协议的格式&#xff0c;在对传输大数据或者要求准确性的时候&#xff0c;都需要通过协议来发送接收&#xff0c;下面通过了解协议的基本构成和代码来分析和实现协议的发送和接收。本篇博客大部分是自己收集和整理&#xff0c;如有侵权请联…

yolov8 onnx推理

前言&#xff1a;yolov8的后处理在某些情况下会导致转模型失败&#xff0c;因此需要把后处理剥离出来。 代码需要做如下修改&#xff1a; 改完后&#xff0c;网络会有三个输出&#xff0c;如图&#xff1a; 最后&#xff0c;用python写网络的后处理&#xff1a; import onn…

用心研发好产品:健康品牌podeey是如何做到的?

在分析消费者健康需求的同时&#xff0c;美国podeey能量生命有限公司&#xff08;PODEEY Biotechnology LLC.&#xff09;不断提升自主研发实力&#xff0c;并且一直注重汇集全球前沿的研发力量&#xff0c;与贵州宏臻菌业达成战略合作&#xff0c;始终致力于以科学技术为核心&…

软件测试HR总结的软件测试常见面试题

一、测试流程是什么样的&#xff1f; 1.产品确定需求后&#xff0c;邀请项目经理&#xff0c;开发&#xff0c;测试等人员参加需求评审会&#xff1b; 2.评审结束后开发根据需求文档和接口文档开发&#xff0c;测试制定测试计划和编写手工测试用例&#xff0c;测试脑图&#xf…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)

在文章【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手中我们介绍了Redis常用的10大数据类型&#xff0c;这10大数据类型可并不是直接在底层通过代码实现的&#xff0c;而是通过不同的底层数据结构组合起来的&#xff0c;这篇我们介绍下Redis常用数据类型…

【LeetCode】每日一题 2023_12_12 下一个更大元素 IV(堆,优先级队列/单调栈)

文章目录 刷题前唠嗑题目&#xff1a;下一个更大元素 IV题目描述代码与解题思路 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 时隔两天&#xff0c;LeetCode 每日一题重新开张&#xff0c;流感已经不能阻挡我的脚步了&#xff01; 题目&#x…

乐小鱼大理之行

在一个晴朗的日子里&#xff0c;乐小鱼和她的家人一起踏上了一场梦幻般的大理之行。他们驱车穿越沧山&#xff0c;眼前豁然开朗&#xff0c;洱海在阳光下泛着碧绿的光芒。 乐小鱼好奇地探出头&#xff0c;看到了连绵的山脉和湛蓝的湖水。她兴奋地说&#xff1a;“哇&#xff0…