SecretFlow 五: psi

SecretFlow 五: psi

1. SPU实现的PSI介绍

定义:安全求交集:Private Set Intersection(PSI)

一种特殊的安全多方计算(MPC)协议 Alice持有集合X,Bob持有集合Y Alice和Bob通过执行PSI协议,得到交集结果XnY 除交集外不会泄漏交集外的其它信息

实现层:bucket psi入口(可以通过该入口忽略掉不同协议的区别) Ecdh、Kkrt16、Bc22等PS引协议实现

基础组件:YACL OT、OPRF、PRG brpc link ECC、AES、HASH

实现的种类:

  • 半诚实:

    • 两方:

      • ecdh、kkrt16、bc22(pcg-psi)

      • ec-oprf PSI (Unbalanced PSI)

      • dp-psi

    • 多方

      • ecdh-3-party(可扩展到多方)

  • 恶意模型

    • mini-PSI(适合小数据集)

2.SPU PSI调用架构

统一入口 ◆入口函数:bucket_psi 支持分桶求交 ◆通过分桶支持大规模数据(10亿规模) 输入输出处理 ◆检查求交id列是否数据是否完整 ◆检查是否有重复项 输出处理 ◆支持按求交id列排序 ◆输出完整label列

3.隐语PSI引开发指南

下载secrenote

pip install secrenote

安装成功:

设置IP

上传数据

单机模式验证

import secretflow as sf
import os
import spu
​
sf.shutdown()
sf.init(parties=["alice", "bob"], address="local")
​
alice, bob = sf.PYU("alice"), sf.PYU("bob")
spu = sf.SPU(sf.utils.testing.cluster_def(["alice", "bob"]))
current_dir = os.getcwd()
​
input_path = {
    alice: f"{current_dir}/test1.csv",
    bob: f"{current_dir}/test2.csv",
}
output_path = {
    alice: f"{current_dir}/res1.csv",
    bob: f"{current_dir}/res2.csv",
}
​
​
spu.psi_csv("uid", input_path, output_path, "alice")

运算结果

        

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值