1-8 隐语小课|私有信息检索(PIR)及其应用场景

news2024/12/27 12:12:45

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制

开源项目

github.com/secretflow

gitee.com/secretflow

前言

欢迎来到小剧场全新系列节目「隐语小课」!本系列将围绕与隐私计算相关的技术概念陆续上新,旨在分享技术科普型内容,欢迎投稿,方式见文末。

首篇投稿来自隐私计算框架“隐语”团队的珊竹同学:

小剧场:“请问珊竹带来什么内容?”
 

珊竹:“那就浅谈下私有信息检索(PIR)及其应用呗!”


 

1. The Problem of Private Information Retrival


 

PIR 全称为 Private Information Retrival,直观的翻译名字为“私有信息检索”。已知的最早提出 PIR 的文章是 1995 年 Benny Chor, et. al. [1]。在文章最开始的时候,提到了在传统的 query 场景中,我们有一个 client 发送 query,有 server 回复结果。


 

从抽象角度来看,我们可以试图保护:

  • Server 数据的安全性
  • Client query 的安全性


 

在 [1] 之前,有许多工作在研究如何保护 server 端 DB 数据的安全性,在此不再赘述。Benny Chor, et. al. [1] 提出了一个问题:我们是否可以在 query 场景中保护 client query 的隐私性?由于当时分布式数据库存储的发展,因此他们提出了一个基于 replicated DB (and non-colluding) 的方案。


 


 

这就是 PIR 的场景性问题,根据现实中不同的 client 以及 server 的假设,我们可以把协议进行分类。


 

2. PIR 场景的分类


 

我们可以看到,PIR 场景中的实体有 client 以及 server,并且 client 向 server 发送了一个需要保护隐私的 query ,server 向 client 返回一个 query 的最终结果。


 

如果我们仅仅需要保护 query 的隐私、而又不在意性能 ,是有一个很简单的解决方案。我们可以让 server 将其持有的所有数据全量发送给 client,由 client 本地进行搜索查询并得到结果。显然,这种方案是十分低效的。我们寻求一种协议可以比这种简单的解决方案更加高效。


 

2.1 单server场景(单个数据库)&多server场景(分布式数据库)


 

如果我们假设 DB 只有一个,那么场景就是如下图所示:

这种情况下我们一般采取加密查询数据,之后交给 server 去作查询/匹配操作以得到正确的查询结果。例如基于任意加法同态算法的 [1],全同态加密的 SealPIR [2],以及返回一个 block 的查询结果的 [3]。


 

PIR 的研究者们同样证明了:在单 DB 的场景中,所有的 PIR 协议必须基于某个数学难题(这类 PIR 协议也叫做 computational PIR (cPIR) 协议),我们不可能构造出一个单 DB PIR 协议满足 unconditional security


 

如果我们假设有许多个 replicated DB,那么场景就是如下图所示:

这种情况下我们可以达到 unconditional security,例如基于 DPF 的 PIR [4] 等等。但是多 server 场景中有两条关键假设

  • 数据库是 replicated,因此每个数据库都持有相同的数据集
  • 数据库中存在 non-colluding 的假设,server 之间存在不可共谋的假设(例如 honest majority or only one honest server)


 

2.2 +保护数据库隐私 (Symmetric PIR, sPIR)


 

如果我们试图保护:(1)DB 数据的安全性;(2)Client query 的安全性。那么我们叫这种协议为 symmetric PIR。我们之前提到的一些算法,例如基于任意加法同态算法的 [1] 以及全同态加密的 SealPIR [2] 都同时保护了数据库的隐私,因此也属于 sPIR。


 

2.3 基于索引查询/基于匹配查询


 

基于索引:index PIR

基于查询:keyword PIR


 

基于索引/匹配的 PIR 协议在单 DB 和多 DB 的情况下均成立,我们下面以单 DB 的方案为例。


 

【基于索引的 PIR】


 

基于索引的 PIR 要求 client 在查询数据库之前,已经预先得知想要查询的数据索引信息。如果我们有一个原本是 (key, value) 的 DB 的话,那么其实并不一定必须要使用基于匹配的 PIR。

  • 如果 DB 中的 key 属于非隐私信息,那么我们可以使用一个 encoding 函数,将每个数据库元素的 key 映射到某个 index 上,然后对数据库进行重新排序,那么在 client 想要插叙某个 key 的时候,可以直接使用公开的 encoding 函数获取到 key 相对应的 index 值。
  • 但是如果 DB 中的 key 属于隐私信息,那么也就意味着我们必须使用 sPIR 来保护数据库隐私,而 DB 使用的 encoding 函数本身可能会泄漏数据库 key 的分布情况,因此在这种情况下我们只能使用基于匹配的 PIR。


 

【基于匹配的 PIR】
 


 

基于匹配的 PIR 实际上和 PSI with Payload 很相似。场景如下图所示:
 

其实就是 one-element PSI with Payload。PSI with Payload 使用 client 的输入 ki 以及 DB 的输入 {k1,..., kn} 进行撞库,把匹配后数据(也就是 ki)的 value 返回给 client。其中保护了

  • client 不知道未匹配到的 key 是什么
  • client 不知道未匹配到的 key 的 value 是什么
  • DB 不知道具体匹配结果的 key 是什么(有些 PSI 算法可以额外保证这些)
  • DB 不知道具体匹配结果的 value 是什么(有些 PSI 算法可以额外保证这些)


 

相关资料

【课程】https://cyber.biu.ac.il/event/the-12th-biu-winter-school-on-cryptography/

【代码】https://github.com/microsoft/SealPIR

【代码】https://github.com/OpenMined/PIR​​​​​​​


 

参考文献

[1] Benny Chor, Oded Goldreich, Eyal Kushilevitz, Madhu Sudan. "Private Information Retrieval". FOCS (1995).
 

[2] Angel, Sebastian G. et al. “PIR with Compressed Queries and Amortized Query Processing.” 2018 IEEE Symposium on Security and Privacy (SP) (2018): 962-979.

[3] Gentry, Craig and Zulfikar Ramzan. “Single-Database Private Information Retrieval with Constant Communication Rate.” ICALP (2005).

[4] Gilboa, Niv and Yuval Ishai. “Distributed Point Functions and Their Applications.” EUROCRYPT (2014).

🏠 隐语社区:

github.com/secretflow

gitee.com/secretflow

www.secretflow.org.cn (官网)

👇 欢迎关注:

公众号:隐语小剧场

B站:隐语secretflow 

邮箱:secretflow-contact@service.alipay.com

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

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

相关文章

Run the Docker daemon as a non-root user (Rootless mode)

rootless 简介 rootless模式是指以非root用户身份运行Docker守护程序和容器。那么为什么要有rootless mode呢?因为在root用户下安装启动的容器存在安全问题。存在的安全问题具体来说是容器内的root用户就是宿主机的root用户,容器内uid1000的用户就是宿主…

csp认证真题——重复局面——Java题解

目录 题目背景 问题描述 输入格式 输出格式 样例输入 样例输出 样例说明 子任务 提示 【思路解析】 【代码实现】 题目背景 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以…

vscode 清除全部的console.log

在放页面的大文件夹view上面右键点击在文件夹中查找 console.log.*$ 注意:要选择使用正则匹配 替换为 " " (空字符串)

多线程应用——单例模式

单例模式 文章目录 单例模式一.什么是单例模式二.如何实现1.口头实现2.利用语法特性 三.实现方式(饿汉式懒汉式)1.饿汉式2.懒汉式3.线程安全的单例模式4.双重检查锁5.禁止指令重排序 一.什么是单例模式 单例模式(Singleton Pattern&#xff…

数据集学习笔记(六):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式

文章目录 一、目标检测1.1 labelImg1.2 介绍1.3 安装1.4 使用1.5 转换1.6 验证 二、图像分割2.1 labelme2.2 介绍2.3 安装2.4 使用2.5 转换2.6 验证 一、目标检测 1.1 labelImg 1.2 介绍 labelImg是一个开源的图像标注工具,用于创建图像标注数据集。它提供了一个…

2023-08-30 LeetCode每日一题(到家的最少跳跃次数)

2023-08-30每日一题 一、题目编号 1654. 到家的最少跳跃次数二、题目链接 点击跳转到题目位置 三、题目描述 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。 跳蚤跳跃的规则如下: 它可以 往前 跳恰好 a 个位置&#x…

OpenCVSharp入门学习①-获取本地摄像头数据

1. nuget包安装opencvsharp4和opencvsharp4.extensiongs和opencvsharp4.runtime.win 如果不安装opencvsharp4.runtime.win的话会报 System.TypeInitializationException:““OpenCvSharp.Internal.NativeMethods”的类型初始值设定项引发异常。”DllNotFoundException: 无法加…

vue v-for 例子

vue v-for 例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

AssemblyManager 程序集管理器

AssemblyManager 程序集管理器 程序执行中使用反射对框架的搭建有着强大的影响&#xff0c;如何管理程序集方便使用反射获取类型操作对象是本文章的重点 1.AssemblyInfo 对于一个程序集这里使用一个AssemblyInfo对象进行管理 Assembly &#xff1a;对应的程序集AssemblyTyp…

Java多线程与并发编程

课程地址&#xff1a; https://www.itlaoqi.com/chapter.html?sid98&cid1425 源码文档&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WMvM3j6qhyjIeAT87kIcxg 提取码&#xff1a;5g56 Java多线程与并发编程 1-并发背后的故事什么是并发 2-你必须知道线程的概念程…

Cadence网表导出常见错误

前言 好不容易绘制出来原理图&#xff0c;结果导出报了很多条错误&#xff0c;由于哥们还是小白&#xff0c;所以很多事情还不懂&#xff0c;有错误的地方希望大佬们能够指出&#xff0c;主要还是以我遇到的为主。 生成网表时候的常见错误 36002-封装名缺失 36003-多part器…

pdf怎么调整大小kb?一分钟学会pdf压缩

PDF是一种常见的文件格式&#xff0c;有时候我们需要将PDF文件的大小进行压缩&#xff0c;以便于传输或存储&#xff0c;那么怎么调整PDF文件的大小呢&#xff1f;接下来就给大家分享几个简单又实用的方法&#xff0c;帮助我们轻松解决PDF文件过大的问题。 方法一&#xff1a;嗨…

【高等数学重点题型篇】——一元函数微分学的应用

本文仅用于个人学习记录&#xff0c;使用的教材为汤家凤老师的《高等数学辅导讲义》。本文无任何盈利或者赚取个人声望的目的&#xff0c;如有侵权&#xff0c;请联系删除&#xff01; 文章目录 一、证明f ( n ) \ ^{(n)} (n)(ξ) 0二、待证结论中只有一个中值ξ&#xff0c;不…

【编译原理】课程一:编译原理入门

目录 1.为什么要学习编译原理 2.什么是编译原理 3.编译与计算机程序设计语言的关系 3.1.程序设计语言的转换方式 3.2.编译的转换过程 3.3.编译器在语言处理系统中的位置 3.4.编译系统的结构 3.4.1.词法分析(扫描) 3.4.2.语法分析(parsing) 3.4.1.1.语法分析的定义 3…

四轴飞行器的电池研究(MatlabSimulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python教程(11)——Python中的字典dict的用法介绍

dict的用法介绍 创建字典访问字典修改字典删除字典字典的相关函数 列表虽然好&#xff0c;但是如果需要快速的数据查找&#xff0c;就必须进行需要遍历&#xff0c;也就是最坏情况需要遍历完一遍才能找到需要的那个数据&#xff0c;时间复杂度是O(n)&#xff0c;显然这个速度是…

Canvas实现3D效果

3D 球 效果图 代码 var canvas document.getElementById("cas"),ctx canvas.getContext("2d"),vpx canvas.width / 2,vpy canvas.height / 2,Radius 150,balls [],angleX Math.PI / 1000,angleY Math.PI / 1000,factor 0.0001 //旋转因子var An…

解决方案 | 法大大电子签为保险行业加个“双保险”

近年来&#xff0c;人们自我保障意识的不断增强&#xff0c;带动了保险行业的蓬勃发展&#xff1b;数字化进程的加快&#xff0c;也让保险签署更加便捷高效。但与此同时&#xff0c;对于保险企业的安全合规化要求也在不断提升&#xff0c;电子签作为企业数字化转型的重要抓手&a…

vue3集成bpmn.js

1 安装依赖 npm install bpmn-js npm install bpmn-js-properties-panel npm install camunda-bpmn-moddle 注意依赖会有冲突&#xff0c;最好按照下列版本来安装&#xff1a; "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.…