隐私计算实训营学习六:隐语PIR介绍及开发指南

news2024/11/28 13:09:52

文章目录

  • 一、隐语实现的PIR总体介绍
    • 1.1 PIR的定义和种类
    • 1.2 隐语PIR功能分层
  • 二、Index PIR-SealPIR介绍
  • 三、Keyword PIR- Labeled PSI介绍
  • 四、隐语PIR后续计划

一、隐语实现的PIR总体介绍

1.1 PIR的定义和种类

PIR(Private Information Retrieval PIR)隐匿查询:用户查询服务端数据库中的数据,但服务端不知道用户查询的是哪些数据。
在这里插入图片描述
分类:

  1. 按服务器数量分类:单服务器方案(Single Server)、多服务器方案(Multi-Server)。
  2. 按查询类型分类:Index PIR、Keyword PIR。

隐语目前支持的PIR方式:

  1. Single Server Index PIR : SealPIR。

  2. Single Server Keyword PIR:Labeled PSI。

1.2 隐语PIR功能分层

隐语PIR实现位置: 实现位置主要在SPU的代码库。 下层依赖YACL的密码库,上层secretflow层有相应的调用接口(pir_setup、pirquery及基于内存的pir_mem_query)。
在这里插入图片描述
隐语PIR预处理调用接口pir_setup: 提示pir_setup 单方任务,可以使用的secretflow单机模拟配置,或者直接调用spu的python接口。

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

隐语PIR调用接口pir_query:

#pir_query双方执行查询任务, 参数说明:
'''
客户端配置
	input_path:查询id对应的csv文件路径
	Key_columns:Key对应的列名
	output_path:PIR查询结果输出的文件路径
#服务端配置
	oprf_key_path:服务端ecc密钥文件,32B,二进制文件
	setup_path:预处理阶段结果输出路径
'''
# client
alice_config = {
	'input_path':/path/A_PIR_ID.csv’,
	'key_columns’: id',
	'output_path':/path/sf_pir_out.csv’,
}
# server
bob_config = {
	'oprf_key_path':/path/oprf_key.bin,
	'setup_path':/path/setup_path’,
}
query_config = {
	alice: alice_config,
	bob: bob_config,
}
reports = spu.pir_query(
	server='bob’,
	config=query_config,
)

二、Index PIR-SealPIR介绍

Index PIR-SealPIR: 隐语实现的Index PIR基于SealPIR,SealPIR基于BFV的同态方案,SealPIR主要用到的多项式为密文加法、明文乘密文、密文替换。
在这里插入图片描述
SealPIR基于同态密码实现Index PIR的基本原理: 客户端将查询向量(0,1向量)使用同态算法进行加密,加密后发送给服务端,服务端使用该数据进行累积得待查询数据加密结果,返回給客户端;客户端解密得到带查询数据。
存在问题:请求的消息报文太大,包含了n个密文向量。
在这里插入图片描述
SealPIR主要贡献:
1、多个数据pack到一个HE Plaintext同态明文多项式:查询的db_index转换为plaintext_index。 原始数据B1、B2、B3pack到明文多项式P1,B4、B5、B6pack到P2,用户查询B4情况下,需要将数据库的查询index转换为多项式的查询index P2,服务端返回P2的加密值,客户端同态解密得到明文多项式,再依据pack的偏移找到B4的偏移系数拼接为明文数据。
在这里插入图片描述

2、查询向量压缩到一个密文:显著减少通信量,server端可通过计算expand得到查询密文向量。 客户端查询向量压缩将原始n个密文压缩到同态明文多项式,对该明文多项式加密得到查询密文,服务端得到查询密文使用expand扩展算法得到具体n个密文向量,再使用n个向量进行同态乘得到结果。
在这里插入图片描述

3、支持多维查询:多维查询将数据转换为 n ∗ n的矩阵,减少expand计算量。
在这里插入图片描述

4、支持多个查询:使用cuckoo hash支持同时进行多个查询。
在这里插入图片描述

PIR实现位置:
在这里插入图片描述

三、Keyword PIR- Labeled PSI介绍

Keyword PIR:隐语实现的基于Labeled PIR方案。 基本原理使用两个差值多项式,包括一个匹配多项式和一个Lable差值多项式,在匹配多项式P(key)为0情况下对应的差值多项式Q(key)的值对应三个带查询值。
在这里插入图片描述

Keyword PIR也使用了BFV的方案: 明文编码方式使用BatchEncode,每个位置上的数据支持基于位置的加法和乘法。
在这里插入图片描述
在这里插入图片描述

1、减少乘法次数和计算量: 客户端通过窗口机制减少发送密文个数,发送2的次方倍数。服务端可以通过分区将每个bin划分为若干个子集,每个子集对应一个差值多项式,降低相应的多项式次数。
在这里插入图片描述

2、使用extremal postage stamp bases减少通信量。
在这里插入图片描述

3、Paterson-Stockmeyer算法,减少密文乘法。
在这里插入图片描述

隐语label PIR的主要工作:

  1. 以微软的开源代码功能为核心;
  2. OPRF采用隐语的实现:支持的ecc曲线包括:FourQ, Secp256k1, SM2;
  3. Label的自动填充;
  4. 增加了服务的预处理结果保存功能:可以支持离线和查询(多次)两个阶段。

服务端预处理setuo阶段流程:

  1. 参数选择:对cuckoo hash、同态多项式明文、密文进行参数选择;
  2. 对服务端数据进行prf计算:prf得到256bit,前128bit根据截取用于匹配,后128bit作为对称算法密钥加密label;
  3. 根据prf前128bit截断后将数据插入Simple Hash;
  4. 对Simple Hash每一行分别划分bin bundle,并计算相应的差值多项式matching polynomial和label polynomial;
  5. 将插值多项式系统packing到同态算法明文。

在这里插入图片描述

客户端和服务端(query)阶段-流程:

  1. 客户端向服务端请求参数;
  2. 执行oprf协议;
  3. 计算查询值的同态密文幂集合;
  4. 使用同态私钥解密服务端返回的同态密文;
  5. 满足匹配条件时,使用oprf的后128bit解密得到label。
    在这里插入图片描述
    Lable PIR的主要参数: ItemParams每个元素在明文多项式对应的系数;TableParams包括cuckoo hash个数和表大小;QueryParams查询次数;SEALParams同态参数包括多项式次数(明文模/密文模)。
    在这里插入图片描述
    PIR实现位置:
    在这里插入图片描述

四、隐语PIR后续计划

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

比亚迪的薪资。。。当年的迪子,今年的迪爹……

大家好,我是小黄。 俗话说金3银4,比亚迪一直都是一个相对热门的公司,“去年迪子,今年迪爹,去年座位空一大半,今年走廊都站满人……”这是很多应届毕业生对比亚迪的评价。 当年小黄毕业的时候,…

[计算机效率] 文件加密工具:Lockdir

3.11 文件加密工具:Lockdir Lockdir是一款安全性高、使用简单、体积极小的便携式文件夹加密器,无需安装,一键加密,一键解密,加密算法高,是优秀的加密工具。其主要特点包括: 加密操作简易&#…

hadoop-3.1.1分布式搭建与常用命令

一、准备工作 1.首先需要三台虚拟机: master 、 node1 、 node2 2.时间同步 ntpdate ntp.aliyun.com 3.调整时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 4.jdk1.8 java -version 5.修改主机名 三台分别执行 vim /etc/hostname 并将内容指定为…

酷开会员丨看、学、用、玩的智慧电视,酷开系统享你所想!

在数字化浪潮席卷之下,电视这个曾作为家庭娱乐设备中心的“客厅霸主”,在现代家庭中的地位似乎变得模糊起来。随着时代的发展,人们不再仅仅满足于电视观看节目的单一功能,而是期待电视能够提供更多元化、更智能的交互体验。考虑到…

[leetcode] 100. 相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&a…

cookie介绍

文章目录 1.cookie是什么?2.cookie的存储位置3.什么是无状态问题,以及如何解决 4.存储在客户端的好处5.cookie的主要特点6.cookie的缺点7.cookie的产生过程8.cookie的使用步骤1.安装依赖2.引入依赖3.在中间件注册 9.cookie代码示例10.cookie的有效期 1.c…

电子级高纯PFA材质实验室器皿耗材PFA漏斗PFA试剂瓶PFA烧杯

PFA三角漏斗,整体均是PFA材质,无污染风险,可高压灭菌。 尺寸:外径40mm、160mm PFA三角漏斗 特点: 1、一体式成型,结构稳定; 2、化学耐受性强,耐受强酸、强碱以及各种有机溶剂&…

上位机图像处理和嵌入式模块部署(qmacvisual寻找圆和寻找直线)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面有几篇文章,我们谈到过直线拟合、圆拟合和椭圆拟合。当时,我们的做法是,先找到了轮廓,接着找到…

数据资产如何入表?有哪些步骤?

当下,数据资产入表这一关键环节对于企业的高效运营与决策制定具有至关重要的作用。软信天成团队经过长期研究与实践,将数据资产入表的全流程归纳总结为四个核心步骤,以期为诸位提供帮忙。 (一)确保数据合规&#xff0…

8.均值滤波

1 简介 均值滤波是一种低通滤波,它可以有效过滤图片中的椒盐噪声,但是副作用也同样明显,会使图片的边缘过于模糊。   均值滤波的卷积核系数均为1。   这里最终重复一下算法实现以及验证的步骤:     1.MATLAB读取图片并转化…

JVM实战之性能调优[2](线程转储案例认识和分析)

文章目录 版权声明案例1:CPU占用率高问题问题描述解决思路补充内容 案例2:接口响应时间长问题问题描述解决思路Arthas trace命令Arthas watch命令解决问题 案例3:定位偏底层性能问题问题描述解决思路:Arthas火焰图问题解决 案例4&…

高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战

高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战 一、生产事故描述 Mysql生产数据库最大连接数爆满,其余客户端也同样拿不到数据库连接,生产异常,数据传输失败! 报错如下&#xff1a…

有趣的css - 文字下划线条动画按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是用 css 实现文字下划线条动画按钮。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

【WEEK5】 【DAY5】DML语言【中文版】

2024.3.29 Friday 目录 3.DML语言3.1.外键(了解)3.1.1.概念3.1.2.作用3.1.3.添加(书写)外键的几种方法3.1.3.1.创建表时直接在主动引用的表里写(被引用的表的被引用的部分)3.1.3.2.先创建表后修改表以添加…

近年来,常见5大软件开发项目管理工具

时代进步,技术进步,汇总下近几年5大常用的软件开发项目管理工具。 1、微软项目管理软件 Microsoft Project(或MSP)是由微软开发销售的项目管理软件程序。软件设计目的在于协助项目经理制定发展计划、为任务分配资源、跟踪进度、管…

目标检测——门牌号数据集

一、重要性及意义 识别自然场景图像中的数字和号码具有极高的重要性和意义,这主要体现在以下几个方面: 实际应用广泛性:自然场景中的数字和号码识别技术在日常生活中有着广泛的应用。例如,在自动驾驶车辆中,准确识别路…

【网站项目】面向社区健康服务的医疗平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【动手学深度学习】深入浅出深度学习之利用神经网络识别螺旋状数据集

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 生成螺旋状数据集 🌼2. 打印数据集 🌼3. 编程实现 🌻仿射层-Affine类 🌻传播层-Sigmoid类 🌻损失函数…

SSH连接SFTP传输:如何使用libssh库在windows环境下进行(文件、文件夹)传输到远端服务器

配置环境cmake编译libssh如何使用生成的dll与lib文件配置lib 方法一配置lib 方法二配置dll方法一 将dll配置进入环境变量配置dll方法二 在编译过后将dll直接与可执行文件.exe文件放在同一目录下传输文件、文件夹代码(适配windows) 由于windows上的编译器…

C语言 | Leetcode C语言题解之第2题两数相加

题目: 题解: struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *head NULL, *tail NULL;int carry 0;while (l1 || l2) {int n1 l1 ? l1->val : 0;int n2 l2 ? l2->val : 0;int sum n1 n2 …