隐私计算实训营第六讲-隐语PIR介绍及开发实践

隐私计算实训营第六讲-隐语PIR介绍及开发实践

文章目录

  • 隐私计算实训营第六讲-隐语PIR介绍及开发实践
    • 1.隐语实现PIR总体介绍
      • 1.1按服务器数量分类
      • 1.2按查询类型分类
    • 2. Index PIR - SealPIR
    • 3. Keyword PIR - Labeled PSI
    • 4.隐语PIR功能分层
    • 5.隐语PIR后续计划
      • PIR协议开发
      • PIR调用框架
      • PIR产品化

1.隐语实现PIR总体介绍

隐语实现的PIR(Private Information Retrieval)是一项使用户能够在不向服务器透露查询内容的情况下,从服务器数据库查询数据的技术。这种技术主要用于保护用户的查询隐私,防止服务端知晓或推断用户的查询意图或感兴趣的数据。隐语实现的PIR技术可以按照不同的维度进行分类,主要分为服务器数量分类和查询类型分类。

1.1按服务器数量分类

  1. 单服务器方案(Single Server):

    • 在单服务器方案中,所有的数据都存储在一个服务器上。用户需要从这个单一的数据源中查询信息,同时确保其查询内容对服务器保持私密。这要求使用高度复杂的加密技术来保护查询内容,同时确保查询效率。
  2. 多服务器方案(Multi Server):

    • 多服务器方案涉及到多个服务器,数据可以分散存储在这些服务器上。用户的查询被设计为分布式的,每个服务器只处理查询的一部分,而没有任何一个服务器能够单独确定用户的完整查询内容。通过这种方法,即使某些服务器被攻破,用户的查询隐私仍然得到保护。

1.2按查询类型分类

  1. Index PIR:

    • 在Index PIR中,用户根据数据的索引进行查询。这种类型的PIR假设用户已经知道他们所需要数据的确切位置(即数据库中的索引)。用户的查询旨在检索特定索引处的数据,而不向服务器透露该索引是什么。
  2. Keyword PIR:

    • Keyword PIR允许用户根据关键字进行查询。这意味着用户不需要知道数据的具体位置;相反,他们可以根据数据内容的关键字进行搜索。这种方法更加灵活,允许用户根据内容特征而不是具体的数据库结构来检索信息。

隐匿查询(Private Information Retrieval, PIR)是一种允许用户从服务器查询数据,同时确保服务器无法知道用户查询的是哪些数据的技术。这种技术主要用于保护用户的查询隐私,防止服务器了解或推断出用户的兴趣点或敏感信息。隐匿查询可以根据不同的维度进行分类,包括服务器数量(单服务器方案和多服务器方案)以及查询类型(Index PIR和Keyword PIR)。

2. Index PIR - SealPIR

SealPIR是一种实现Index PIR的技术,其主要贡献包括:

  • 将多个数据打包到一个同态加密(HE)明文中。
  • 将查询的数据库索引(db_index)转换为明文索引(plaintext_index)。
  • 将查询向量压缩到一个密文中,显著减少了通信量。
  • 服务器端可以通过计算扩展得到查询的密文向量。
  • 支持多维查询,例如,通过将数据转换为根号n乘以根号n的矩阵来实现2维查询,以减少扩展计算量。
  • 支持同时进行多个查询,使用cuckoo hash来实现。

3. Keyword PIR - Labeled PSI

Labeled PSI是实现Keyword PIR的一种方法,其核心思想是通过点值表示得到插值多项式的系数表示。隐语(Secretnote)实现的Labeled PSI的主要工作包括:

  • 以微软的开源代码功能为核心,实现了基于隐语的OPRF(Oblivious Pseudo-Random Function)。
  • 支持多种椭圆曲线加密(ECC)算法,包括FourQ, Secp256k1, SM2。
  • 实现了标签(Label)的自动填充功能。
  • 增加了服务的预处理结果保存功能,这样可以在离线阶段和查询阶段进行多次查询。

这些技术的发展和实现显著提高了数据查询时的隐私保护,使得用户在不暴露查询意图的情况下,仍能从服务器获取所需信息。

4.隐语PIR功能分层

在这里插入图片描述

5.隐语PIR后续计划

隐语PIR(Private Information Retrieval)项目的未来发展计划主要围绕以下几个方面展开:

PIR协议开发

  • SOTA PIR跟踪: 持续关注并跟踪最新的、处于技术领先地位(State Of The Art, SOTA)的PIR技术和研究成果,以保持隐语PIR技术的先进性和竞争力。
  • Spiral PIR: 开发和集成Spiral PIR协议,这是一种高效的PIR实现,可能特指一种旨在优化数据检索过程以减少查询时间和提高数据隐私的技术。
  • Simple PIR: 实现和优化Simple PIR方案,可能指的是一种更为简化的PIR实现,旨在降低系统复杂度,提高易用性和可访问性。

PIR调用框架

  • PSI/PIR独立代码库: 建立一个独立的代码库,用于存放和管理与PSI(Private Set Intersection私有集合交集)和PIR相关的所有代码和文档,以方便开发者使用和贡献。

PIR产品化

  • 了解产品需求: 通过市场调研和用户反馈,深入了解客户和市场对PIR技术的具体需求,以指导产品的开发方向和功能设计。
  • 设计落地方案: 根据产品需求,设计实际可行的落地方案,包括技术路线图、功能实现、用户界面设计等,确保PIR技术能够以产品形态满足市场需求,解决实际问题。

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

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

相关文章

坦白局:PMP真的是智商税吗?

近些年报考PMP认证的学员越来越多,PMP全球持证人数已经突破百万了,据PMI统计,IT行业近50%人士都持有PMP证书,因此也有很多学员在思考,PMP持证人员这么多,PMP是不是都已经烂大街了?证书还有含金量…

【浅尝C++】STL第三弹=>list常用接口使用示例/list底层结构探索/list模拟实现代码详解

🏠专栏介绍:浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 🎯每日格言:每日努力一点点,技术变化看得见。 文章目录 list介绍list常用接口使用示例构造类函数迭代器属性与元素获取增删改操作 list底层结构探索list模…

2024年03月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于专栏《Scratch等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 3 分,共 30 分) 第1题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个 鸿蒙是?( )。 A、小程序 B、计时器 C、操作系统 D、神话人物 答案:C 第2题 …

golang语言系列:Web框架+路由 之 Gin

云原生学习路线导航页(持续更新中) 本文是golang语言学习系列,本篇对Gin框架的基本使用方法进行学习 1.Gin框架是什么 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者…

HBase基础必备知识-Day1

HBase 简介 概述 HBase是Yahoo!公司开发的后来贡献给了Apache的一套开源的、分布式的、可扩展的、基于Hadoop的非关系型数据库(Non-Relational Database),因此HBase并不支持SQL(几乎所有的非关系型数据库都不支持SQL),而是提供了一套单独的命令和API操…

Redis高可用及持久化

文章目录 一、Redis高可用1、Redis高可用概述2、Redis高可用策略 二、Redis持久化1、Redis持久化的功能2、Redis持久化的两种方式2.1 RDB持久化2.2 AOF持久化(append only file) 3、RDB持久化3.1 触发条件3.1.1 手动触发3.1.2 自动触发3.1.2.1 配置方式3…

[Linux] 排查问题指令top/ps/netstat

在Linux下查看某个端口运行的指令 1. 首先通过netstat来查看端口对应的进程号 比如抓取端口53这个DNS服务的进程 netstat -tulnp | grep 53 可以看到53这个端口号对应的pid是720 2. 通过ps指令来对进程号执行的命令查询 ps aux | grep 720 可以看到pid为720这个进程对应的执…

聚道云助IT公司破解数据同步难,高效转型新利器!

客户介绍: 该公司是一家在信息技术行业具有丰富经验和良好声誉的公司。作为专业的软件服务提供商,他们致力于为客户提供全方位的解决方案和支持服务。公司秉持合规经营的原则,严格遵守相关法律法规,确保客户的数据安全和合法权益…

HTML基础:脚本 script 标签

你好,我是云桃桃。 1枚程序媛,大专生,2年时间从1800到月入过万,工作5年买房。 分享成长心得。 255篇原创内容-公众号 后台回复“前端工具”可获取开发工具,持续更新中 后台回复“前端基础题”可得到前端基础100题汇…

图卷积神经网络GCN

图卷积神经网络GCN 我们的GCN就是用来解决如何确定a、b、c的

Java毕业设计-基于springboot开发的致远汽车租赁系统平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能模块3、业务员功能模块3、用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot…

Sora 基础作品之 DiT:Scalable Diffusion Models with Transformer

Paper name Scalable Diffusion Models with Transformers (DiT) Paper Reading Note Paper URL: https://arxiv.org/abs/2212.09748 Project URL: https://www.wpeebles.com/DiT.html Code URL: https://github.com/facebookresearch/DiT TL;DR 2022 年 UC Berkeley 出…

LeetCode 59 螺旋矩阵(模拟)

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n 1 输出&…

模型训练----parser.add_argument添加配置参数

现在需要配置参数来达到修改训练的方式,我现在需要新建一个参数来开关wandb的使用。 首先就是在def parse_option():函数里添加上你要使用的变量名 parser.add_argument("--open_wandb",type bool,defaultFalse,helpopen wandb) 到config文件里增加你的…

2024-04-02 作业

作业要求&#xff1a; 整理思维导图使用模板类&#xff0c;实现顺序栈写一个char类型的字符数组&#xff0c;对该数组访问越界时抛出异常&#xff0c;并做处理。 作业1&#xff1a; 作业2&#xff1a; 运行代码: #include <iostream>using namespace std; #define LEN …

OpenGL_Learn16(模板测试)

模板缓冲首先会被清除为0&#xff0c;之后在模板缓冲中使用1填充了一个空心矩形。场景中的片段将会只在片段的模板值为1的时候会被渲染&#xff08;其它的都被丢弃了&#xff09;。 模板缓冲操作允许我们在渲染片段时将模板缓冲设定为一个特定的值。通过在渲染时修改模板缓冲的…

LeetCode_394(字符串解码)

双栈法 public String decodeString(String s) {String res "";Stack<Integer> countStack new Stack<>();Stack<String> resStack new Stack<>();int idx 0;while (idx < s.length()){char cur s.charAt(idx);//处理数字if(Charact…

css基础(一文读懂css)

1.css简介 css是一种用于描述网页样式和布局的样式表语言。它与HTML结合使用&#xff0c;用于控制网页中各个元素的外观和排版。 2.css样式引入方式 2.1 行内样式 行内优先级最高&#xff0c;针对当前标签 2.2 行外头部引入 行外头部&#xff1a;style&#xff0c;针对当前…

ISELED-演示项目代码

目录 一、main函数二、点灯函数一、main函数 int main(void) {/* Write your local variable definition here */iseledInitType.crcEnable = 1;iseledInitType.firstLedAdr = 1;iseledInitType.tempCmpEnable = 0;iseledInitType.voltSwing = 0;/*** End of Processor Expert…

【二叉树】Leetcode 105. 从前序与中序遍历序列构造二叉树【中等】

从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例1&#xff1a; 输入: preorder [3,9,20,15,7], inorder …