隐私计算-6-隐语隐匿查询(PIR)介绍及开发实践

参考文章:隐语PIR介绍及开发实践
参考视频教程:PIR视频教程

根据上面文章测试PIR的步骤和问题list

第一步:建立secretflow集群,alice和bob互相通信(pir和psi通用)

在这里插入图片描述

在这里插入图片描述注意:alice和bob同时运行!
sf.shutdown():强制回收之前可能存在的sf集群。
sf.init():sf是ray拉起的,address="local"是不复用之前的ray,重新拉一个。

1、连接不可用
status = StatusCode.UNAVAILABLE
details = “failed to connect to all addresses; last error: INTERNAL: ipv4:ip:port: Trying to connect an http1.x server”

原因:端口不能用alice、bob后端secretflow的端口,用空闲的新的

获取空闲端口的代码(其它的上面参考文章有):

import socket
from contextlib import closing 
from typing import cast 

def unused_tcp_port() -> int:
    """Return an unused port""" 
    with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
        sock.bind(("", 0))
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        return cast(int, sock.getsockname()[1])

print(unused_tcp_port())

2、alice和bob互相ping不通

原因:我启动secretflow用的docker 桥接网络类型,ray集群是在alice和bob容器里面启动的,配置的address等应该如图中写容器虚拟化的地址(也可以直接写alice:port,bob:port),而不是实际的物理机地址。

第二步:建立SPU(pir和psi通用)

SPU是Secretflow Processing Unit 的简称,是隐语平台的密态计算单元,在SecretFlow中负责执行MPC计算。
在这里插入图片描述

第三步:造数据:被查询方数据和查询条件

在这里插入图片描述
使用Pandas库将DataFrame保存到CSV文件。
执行成功后,可以查看文件,alice是数据源,bob是查询条件。
在这里插入图片描述
物理机地址:进入alice容器,在 /root/workspace/alice_pir_input.csv路径

第四步:配置被查询方SPU

需要事先在alice的docker container内执行openssl rand 32 >/root/workspace/alice_oprf_key创建秘钥
在这里插入图片描述

第五步:执行查询

在这里插入图片描述在这里插入图片描述

下一步:这里现在是输入名字,返回年龄,那怎么查年龄是26的所有人呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值