1. SPU实现 PSI介绍
-
PSI定义和分类:详见第一讲。
-
隐语PSI功能分层:
-
SPU实现的PSI种类
-
半诚实模型
-
两方
- ecdh、kkrt16、bc22(pcg-psi)
- ec-oprf PSI(Unbalanced PSI)
- dp-psi
-
多方
- ecdh-3-party(可扩展到多方)
-
恶意模型
- mini-PSI(适合小数据集)
-
隐语官网PSI介绍参考:https://www.secretflow.org.cn/zh-CN/docs/secretflow/main/user_guide/psi(基本覆盖各类PSI协议)
-
ecdh-PSI介绍
-
协议特点:
-
易于理解和解释。
-
易于实现。
-
通信量小,计算量大。
-
易于扩展
- 可以分类计算交集数量(PSI-CA)。
- 谷歌隐私加入和计算;脸书隐私ID。
-
性能提升
- 支持25519,FourQ曲线
- 增加intel-crypto multi-buffer支持
-
测评及合规需求
- 增加SM2曲线支持,符合国内合规
- 增加Secp256k1曲线支持
-
互联互通
- 跨平台互联互通开放协议 第一部分:ECDH-PSI
- 协议文档、参考实现,参见隐语官网和github
-
KKRT16(论文) PSI介绍-1
-
论文主要贡献
- 扩展了IKNP和KK OT协议
- Batch,Related-key OPRF(BaRK-OPRF)
-
优点:运行时间快
- 3.8s
(百万)
- 1m
(1.6千万)
- 最新PSI论文中比较的基准
-
缺点:
- 内存占用大
- 通信量大
-
KKRT16 (论文) PSI介绍-2
组件 | 改进 | 具体密码工具 | 论文 |
KKRT-OT BaRK-OPRF | 性能改进 | Bit Matrix Transpose | [ALSZ13] More Efficient Oblivious Transfer and Extensions for Faster Secure Computation-2013-552 |
性能改进 | Pipeline/Vector AES | VASA: Vector AES Instructions for Security Applications 2021 | |
CuckooHash | 性能改进 | Stash-less | PSZ18-Scalable Private Set Intersection Based on OT Extension-2016-930 PSTY19-Efficient Circuit-based PSI with Linear Communication-2019-241 |
-
KKRT16 (论文) PSI介绍-3
-
BC22 PCG PSI介绍-1
- 基于sVOLE的BaRK-OPRF
- Generalized Cuckoo Hash
- Permutation-Based Hashing
-
BC22 PCG PSI介绍-2
-
Generalized CuckooHash(3,2)
-
VOLE使用emp-zk中的WYKW21 Wolverine方案
-
论文中的差异
-
左端插值多项式,论文中给出了不做填充的方案,目前实现都做填充。
-
:填充;
:不填充。
- 优点:降低计算量。
- 缺点:需要额外的
,判别最高次
系数是否为0。
-
TODO
- 细节优化:百兆时计算和发送处理
- 底层VOLE预计算量优化
- 跟踪版本变化(PKC2023)
-
Unbalanced PSI:ec-oprf based
-
Unbalanced PSI:SHE-based
-
APSI和ec-oprf PSI的比较
- 优点:不需要将大数据方的数据传输到小数据方
- 缺点:计算量大,运行时间长
-
基于ecdh的三方PSI协议
-
协议流程:
- Alice和Bob先进行交互,得到shuffle后的两方交集
- Alice将shuffle后两方交集,发给Charlie
- Charlie加密后的数据依次给Bob和Alice加密
- Charlice比较密态数据,得到密集
-
优点:基于ecdh-psi,协议简单易于实现
-
缺点:泄露Alice和Bob两方交集数量
2. SPU PSI调度封装
-
SPU PSI调用架构
-
接口封装层:
-
统一入口:入口函数:bucket_psi
-
支持分桶求交:通过分桶支持大规模数据(10亿规模)
-
输入处理:
- 检查求交id列数据是否完整
- 检查是否有重复项
-
输出处理:、
- 支持按求交id列排序
- 输出完整label列
|