“隐语”是开源的可信隐私计算框架,内置 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,右侧的一方会得到和 向量C,同时,它们还满足 的关系。需要注意的是,向量A 是属于域,当时,称之为 VOLE 关系;而当 时,又称之为 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