【隐语 SecretFlow】 Unbalanced PSI Benchmark 性能测试报告

导语
2022 年 10 月份,隐语发布了 PSI 的性能数据,当时就引起了内部和外部用户的广泛关注,具体协议包括:ecdh/kkrt16/bc22 协议,这些协议更适合双方数据量差别不大的场景,称为平衡 PSI(Balanced PSI)。
在现实的隐私求交场景中,有时双方数据量级差异很大,例如:百万 vs 十亿,2 千万 vs 20 亿。针对这种场景,隐语实现并开源了专门的非平衡 PSI(Unbalanced PSI)协议,能得到更好的性能。
具体来讲:与 ecdh-psi
对比,ecdh-psi
在大数据集上进行两次加密操作。隐语实现的非平衡 PSI 只在大数据集上进行一次加密操作,在大数据集与小数据集的体量相差非常大的时候,总体计算量和运行时间大约是 ecdh-psi 的 1/2。
非平衡 PSI 还把协议分成离线和在线(offline/online)两个阶段,在提前执行离线(offline)缓存的情形下,在线阶段只需 10 多分钟即可完成在线(online)协议,得到交集结果。
本文给出隐语非平衡 PSI 协议(Unbalanced PSI)的具体测试环境、步骤、和数据,供大家参考。
复现路径
一、测试机型
Python:3.8
pip: >= 19.3
OS: CentOS 7
CPU/Memory: 推荐最低配置是 8C16G
硬盘:500G
二、安装 conda
使用 conda 管理 python 环境,如果机器没有 conda 需要先安装。
步骤如下:
三、安装 secretflow
四、创建节点并启动集群
创建 ray header 节点
创建 ray header
节点,选择一台机器为主机,在主机上执行如下命令,ip 替换为主机的内网 ip,命名为 alice,端口选择一个空闲端口即可
注意:192.168.0.1 ip 为 mock,请替换为实际的 ip 地址
创建从属节点
创建从属节点,在 bob 机器执行如下命令,ip 依然填 alice 机器的内网 ip,命名为 bob,端口不变
五、数据要求
Alice 方:2000 万
Bob 方:20 亿
交集:1000 万
六、Benchmark 脚本
脚本分为 offline
和 online
,offline
用于对大数据方的 setup、online
对小数据的执行基于 ecdh
的 oprf
协议。参考阅读:非平衡隐私集合求交(Unbalanced PSI)协议介绍。
offline 脚本:
online 脚本:
Benchmark 报告

备注:目前是小数据方到大数据方的交集结果,如果大数据方到小数据方的交集结果 online 运行时间会增加一倍 。


解读:
Unbalanced PSI 的 offline 阶段,大数据方对大数据集(20 亿)进行加密并发送(截取 12B)到小数据方,加密(ecc 点乘)可以进行并发计算,CPU 的核数增大可以提高性能。可以看到性能数据基本和 CPU 的核数成线性关系,网络带宽消耗不大。
Unbalanced PSI 的 online 阶段,可以划分为两部分子阶段,对小数据集数据执行 ecdh-oprf 得到小数据集的加密结果;小数据集加密结果和 offline 阶段的到大数据集加密数据进行比较的到交集。总体计算量和传输量不大,运行时间在 10 几分钟左右。
Balanced PSI Benchmark 报告
为了方便大家对比,同等硬件资源和数据规模下,对平衡 PSI 做了性能测试,报告如下:


解读:
Balanced PSI 跑 20 亿*2000 万规模数据时,在 8C16G 资源下 CPU 成为瓶颈,机器资源提升到 64C128G 后 LAN 环境 79 分钟完成任务执行。
评论