【隐私计算实训营006隐语PIR介绍及开发实践】

1. 隐语实现PIR总体介绍

隐匿查询(Private Information Retrieval PIR)定义
在这里插入图片描述

  • 按服务器数量分类
    • 单服务器方案(Single Server)
    • 多服务器方案(Multi-Server)
  • 按查询类型分类
    • Index PIR
    • Keyword PIR

隐语目前支持:
Single Server Index PIR:SealPIR
Single Server Keyword:Labeled PSI
在这里插入图片描述

1.1 隐语PIR调用接口:pir_setup

reports = spu.pir_setup(
	server='bob',
	input_path='/path/B_PIR_DATA.csv',#服务端数据文件路径,建议绝对路径
	key_columns='id',#Key对应的列名
	label_columns=['register_date','age'],#Label对应的列名。多列,用逗号隔开
	oprf_key_path='/path/oprf_key.bin',#服务端ecc密钥文件,32B,二进制文件 
	setup_path='/path/setup_path',
	num_per_query=1,#每次查询的id数量 
	label_max_len=18#Label数据拼接后填充到固定的长度大小
)

1.2 隐语PIR调用接口:pir_query

#client--alice
alice_config={
	'input_path':'/path/A_PIR_ID.csv',#查询id对应的csv文件路径
	'key_columns':'id',#key对应的列名
	'output_path':'/path/sf_pir_out.csv',#PIR查询结果输出的文件路径
}
#server
bob_config = {
	oprf_key_path='/path/oprf_key.bin',#服务端ecc密钥文件,32B,二进制文件 
	setup_path='/path/setup_path',#预处理阶段结果输出路径
}
query_config={
	alice:alice_config
	bob:bob_config
}
reports=spu.pir_query(
	server='bob',
	config=query_config
)

2. Index PIR-SealPIR介绍

Index PIR 是一种隐私信息检索(Private Information Retrieval, PIR)技术,它允许用户从服务器检索特定数据项而不泄露他们所查询的内容。在基于索引的PIR中,用户可以通过索引值来秘密地获取数据库中的记录,而服务器无法知道用户实际请求的是哪个索引对应的记录。

SealPIR 则是一种具体实现隐私信息检索的协议,它基于同态加密(Homomorphic Encryption, HE)技术,特别是在SEAL(Simple Encrypted Arithmetic Library)框架下实现的一种高效PIR方案。SealPIR使得用户可以在不解密服务器数据库的情况下,对加密数据执行查询操作,并获得加密形式的查询结果,然后用户可以安全地解密得到所需的真实数据,整个过程保证了用户的查询隐私。

在这里插入图片描述

SealPIR结合了现代密码学的进步,尤其是同态加密技术的优势,提供了一种更为安全和高效的隐私保护机制,适用于那些对数据隐私有严格要求的场景,比如云存储环境下的数据查询服务等。随着同态加密技术的不断成熟,基于此类技术的PIR协议如SealPIR,在隐私保护和效率之间找到了更好的平衡点,从而推动了隐私计算领域的发展。

3. Keyword PIR-Labeled PSI介绍

Labeled PSI (Private Set Intersection with Labeling) 是Keyword PIR中的一种具体技术实现,主要用于解决两个或多方参与者的私人集合交集问题,但增加了关键词标签的功能。在Labeled PSI中,每个参与者不仅拥有一个元素集合,而且这些元素还带有标签(关键词)。当两个参与者希望找出他们的集合中共有的元素(及对应的标签)时,可以使用Labeled PSI协议来完成这一任务,且过程中不会暴露各自的非共有元素信息。

Labeled PSI通常基于密码学技术,例如基于多方计算(MPC)、同态加密(HE)、混淆电路(Garbled Circuits)或其他零知识证明(Zero-Knowledge Proofs)的方法来设计。其中,某些Labeled PSI方案可能会利用插值多项式或其他数学工具进行优化,以便更高效地处理大规模数据集上的关键词匹配查询。
在这里插入图片描述

例如,Labeled PSI可能的工作流程包括:
用户将关键词加密并构建查询对象。
数据持有者用类似的技术加密其数据库中的关键词。
双方通过交互协议计算出在各自加密数据中有交集的关键词,而不揭露任何一方的具体关键词列表或多余的交集信息。

4. 代码实践

4.1. 查询一个没有使用的端口

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())

4.2. 初始化alice节点

import secretflow as sf

cluster_conf = {
    'parties': {
        'alice': {
            'address': 'ip:8000',#对外使用的地址
            'listen_addr': '0.0.0.0:59181'#对内的
        },
        'bob': {
            'address': 'ip:8001',#对外使用的地址
            'listen_addr': '0.0.0.0:8001'#对内的
        },
    },
    'self_party': 'alice'
}
sf.shutdown()
sf.init(address='local', cluster_config=cluster_conf)

4.3. 初始化bob节点

import secretflow as sf

cluster_conf = {
    'parties': {
        'alice': {
            'address': 'ip:8000',#对外使用的地址
            'listen_addr': '0.0.0.0:59181'#对内的
        },
        'bob': {
            'address': 'ip:8001',#对外使用的地址
            'listen_addr': '0.0.0.0:8001'#对内的
        },
    },
    'self_party': 'bob'
}
sf.shutdown()
sf.init(address='local', cluster_config=cluster_conf)

4.4. 初始化spu

import spu
import secretflow as sf

spu_conf = {
    "nodes": [
        {
            "party": "alice",
            "address": "alice:8001",
            "listen_addr": "alice:8001",
        },
        {
            "party": "bob",
            "address": "bob:8001",
            "listen_addr": "bob:8001",
        },
    ],
    "runtime_config": {
        "protocol": spu.spu_pb2.SEMI2K,
        "field": spu.spu_pb2.FM128,
        "sigmoid_mode": spu.spu_pb2.RuntimeConfig.SIGMOID_REAL,
    },
}
spu = sf.SPU(
    cluster_def=spu_conf,
    link_desc={
        "connect_retry_times":60,
        "connect_retry_interval_ms":1000
    }
    )

4.5.RIP

alice做服务端,bob作为客户端。
进入alice的secretnote服务器端运行命令: openssl rand 32 > ~/alice_oprf_key
准备数据

# alice端
import pandas as pd
from pathlib import Path
alice_df = pd.DataFrame({
    "name":["alice","bob","carol","tony"],
    "age":[11,13,14,26]
})
alice_df.to_csv(f"{str(Path.home())}/alice_pir_input.csv",index=False)
# bob端
import pandas as pd
from pathlib import Path
bob_df = pd.DataFrame({
    "name":["tony","bob"],
})
bob_df.to_csv(f"{str(Path.home())}/bob_pir_query.csv",index=False)
import spu
spu.pir_setup(
    server="alice",
    input_path=f"{str(Path.home())}/alice_pir_input.csv",
    key_columns=["name"],
    label_columns=["age"],
    oprf_key_path=f"{str(Path.home())}/alice_oprf_key",
    setup_path=f"{str(Path.home())}/alice_setup",#中间结果存储路径
    num_per_query=1,
    label_max_len=20,
    bucket_size=1000000
)
spu.pir_query(
    server='alice',
    client='bob',
    server_setup_path=f"{str(Path.home())}/alice_setup",
    client_key_colums=["name"],
    client_input_path=f"{str(Path.home())}/bob_pir_query.csv",
    client_output_path=f"{str(Path.home())}/bob_pir_result.csv",
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/505998.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于两个单片机串行通信的电子密码锁设计

1.功能 电子号码锁在实际应用中应该有两部分,一部分在外部,有键盘部分和密码显示;另一部分内部,设置密码、显示密码。使用单片机自身带有的串口可以很方便的实现单片机之间的通信,使输入的密码值传送到主机检验是否是…

nginx的https与动态负载均衡

nginx的https 证书可以根据你的域名和服务器服务商去进行签发 , 比如 : 阿里云 腾讯云 百度云 华为云等 这里使用的是腾讯云 : 下载证书 : 选择 nginx: 下载之后传递到服务器上。 下面开始配置nginx的https: 1. 解压下载的证书包 cd /etc/ssl unzip xxcc.dwa_nginx.zip mv…

【A-010】基于SSH的宠物狗商城系统(含论文)

【A-010】基于SSH的宠物狗商城系统(含论文) 开发环境: Eclipse/MyEclipse、Tomcat8、Jdk1.8 数据库: MySQL 项目介绍: 在科学技术飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道&am…

Cesium实现渐变面

一、效果图 二、实现思路 使用着色器,通过纹理坐标和其他参数计算出材质的颜色和透明度。通过给定的颜色、漫反射强度和透明度,计算出最终的反射颜色和透明度,并且根据给定的中心点位置和当前像素的纹理坐标,计算出距离中心的距离…

怎么快速上手虚拟化(容器)技术——以 Docker 为例

Docker 整体介绍 Docker 是一种使用 Go 语言开发的容器工具。所谓容器,实际上是一种虚拟化技术,用于为应用提供虚拟化的运行环境,相较于虚拟机具有轻量级、低延迟的特性。 下面是对上述介绍的说明: 应用程序运行需要一定的依赖…

在 C#和ASP.NET Core中创建 gRPC 客户端和服务器

关于gRPC和Google protobuf gRPC 是一种可以跨语言运行的现代高性能远程过程调用 (RPC) 框架。gRPC 实际上已经成为 RPC 框架的行业标准,Google 内外的组织都在使用它来从微服务到计算的“最后一英里”(移动、网络和物联网)的强大用例。 gRP…

canvas画图,画矩形可拖拽移动,可拖拽更改尺寸大小

提示:canvas画图,画矩形,圆形,直线,曲线可拖拽移动 文章目录 前言一、画矩形,圆形,直线,曲线可拖拽移动总结 前言 一、画矩形,圆形,直线,曲线可拖…

壁纸小程序Vue3(分类页面和用户页面基础布局)

1.配置tabBar pages.json "tabBar": {"color": "#9799a5","selectedColor": "#28B389","list": [{"text": "推荐","pagePath": "pages/index/index","iconPath&quo…

6.6物联网RK3399项目开发实录-驱动开发之LED灯的使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接:https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f LED 使用 前言 AIO-3399J 开发板上有 2 个 LED 灯,如下表所示: 可通过使用 LED 设备子系统或者直…

EXCEL-VB编程实现自动抓取多工作簿多工作表中的单元格数据

一、VB编程基础 1、 EXCEL文件启动宏设置 文件-选项-信任中心-信任中心设置-宏设置-启用所有宏 汇总文件保存必须以宏启动工作簿格式类型进行保存 2、 VB编程界面与入门 参考收藏 https://blog.csdn.net/O_MMMM_O/article/details/107260402?spm1001.2014.3001.5506 二、…

云计算探索-剖析虚拟化技术

引言 虚拟化技术,作为现代信息技术架构的核心构成元素,以其独特的资源抽象与模拟机制,成功地瓦解了物理硬件与操作系统间的刚性连接,开创了一个资源共享、灵活调配的崭新天地。本文将详细解析虚拟化技术的内涵、发展历程、分类及特…

Android 天气APP(二)获取定位信息

<LinearLayout xmlns:android“http://schemas.android.com/apk/res/android” xmlns:app“http://schemas.android.com/apk/res-auto” xmlns:tools“http://schemas.android.com/tools” android:gravity“center” android:layout_width“match_parent” android:la…

编曲知识16:贴唱混音思路 录音 对轨 降噪

贴唱混音思路 录音 对轨 降噪小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_6607f17ae4b092c1684f438a?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 混音思路 贴唱混音、分轨混音 贴唱:由翻唱混音发展而来,指仅处理人声和伴奏…

二期 1.1 微服务是什么?微服务与分布式架构的区别是什么?SpringBoot与Spring Cloud的区别是什么?

文章目录 前言一、单体架构二、微服务是什么?三、微服务与分布式的区别四、SpringBoot与Spring Cloud的区别?前言 欢迎大家来到二期Spring Cloud 微服务项目实战,首先我们应了解 单体架构是什么?它有哪些问题? 微服务是什么,与分布式架构的区别,Java中微服务框架Spring…

Spark学习

目录 一&#xff0c;Spark是什么 二&#xff0c;Spark的运行模式 三&#xff0c;Spark运行的角色有四类&#xff1a; 四&#xff0c;用户程序从最开始的提交到最终的计算执行&#xff0c;需要经历以下几个阶段&#xff1a; 五&#xff0c;存在Master单点故障&#xff08;SPO…

SOC内部集成网络MAC外设+ PHY网络芯片方案:PHY芯片基础知识

一. 简介 本文简单了解一下 "SOC内部集成网络MAC外设 PHY网络芯片方案" 这个网络硬件方案中涉及的 PHY网络芯片的基础知识。 二. PHY芯片基础知识 PHY 是 IEEE 802.3 规定的一个标准模块。 1. IEEE规定了PHY芯片的前 16个寄存器功能是一样的 前面说了&#xf…

# 达梦数据库知识点

达梦数据库知识点 测试数据 -- SYSDBA.TABLE_CLASS_TEST definitionCREATE TABLE SYSDBA.TABLE_CLASS_TEST (ID VARCHAR(100) NOT NULL,NAME VARCHAR(100) NULL,CODE VARCHAR(100) NULL,TITLE VARCHAR(100) NULL,CREATETIME TIMESTAMP NULL,COLUMN1 VARCHAR(100) NULL,COLUMN…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时&#xff0c;“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角&#xff0c;尤其是在具身智能的领域。具身智能是一种思想&#xff0c;强调智能体通过与其环境的直接物理互动来实现智能行为。然…

腾讯云轻量2核2G3M云服务器优惠价格61元一年,限制200GB月流量

腾讯云轻量2核2G3M云服务器优惠价格61元一年&#xff0c;配置为轻量2核2G、3M带宽、200GB月流量、40GB SSD盘&#xff0c;腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云轻量2核2G云服务器优惠价格 腾讯云&#xff1a;轻量应用服务器100%CPU性能…

YOLOv9改进策略 :卷积魔改 | 感受野注意力卷积运算(RFAConv)

💡💡💡本文改进内容:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 💡💡💡使用方法:代替YOLOv9中的卷积,使得更加关注感受野注意力,提升性能 💡💡💡RFAConv…