目录
本文主要是记录参加隐语开源社区推出的第四期隐私计算实训营学习到的相关内容。
PIR定义
隐匿查询,也称隐私信息检索(Private Information Retrieval,PIR),是指查询方隐藏被查询对象关键词或客户id信息,数据服务方提供匹配的查询结果却无法获知具体对应哪个查询对象。数据不出门且能计算,杜绝数据缓存的可能性。
举个栗子:
服务方有数据集D,客户发起查询请求。在经过PIR计算后,客户就可以知道与查询对应的数据。
在这个过程中,服务方不知道客户检索的那个数据,客户也不知道任何不属于她查询的数据。
PIR分类
根据服务数量分类:
-
单服务PIR(Single-server PIR)
可能需要像 FHE 这样的重加密原语
-
双服务PIR(Two-server PIR)
难以在实际应用中实现
使用 DPF 等密码原语而更加高效
根据检索信息的方式:
-
index PIR
客户端知道数据在哪
-
keyword PIR
客户端不知道数据在哪,通过 keyword 请求
PIR技术简介
简单的解决方案
如上图所示:客户端会先对 query 的 vector 进行一次加密处理,之后把加密后的 vector 发送给 server,server 会把自己整个数据库和这个加密的 vector 做一个密文的运算,最后得到仅为为一对应的值。
特点:
-
同态加密(HE)算法
-
容易实现
-
通信成本高
HE-based PIR
问题:太大计算和通信开销
HE
-
FV
-
加、明文乘法、替换
HE-based PIR实现
-
服务方将在数据库内的数据转换为HE明文
-
客户方基于index加密的query vector并发送给服务方
-
服务方计算查询向量与 HE 明文之间的内积
-
客户方解密加密的查询结果获得结果明文
在 SealPIR 的出现前,Single-server PIR 之类的PIS效率都不高,SealPIR 数秒内即可从数据库完成百万以上数据的查询。其提高效率的方法如下:
-
多数据pack到一个HE明文
-
query vector 被压缩为单个密文,并在服务器端进行扩展
-
支持多维度查询
-
利用 Cuckoo hash 一次性支持多个查询
DPF-based PIR
使用新的 DPF 原语提高效率。
属于 Two-server PIR:
-
非共谋服务器上的相同数据库
-
目前很难找到实现
如上图所示:客户端会先使用将Index i分成
,之后分别将
分别发给服务器
,之后
会对
做一次
并将结果返回,
会对
做一次
并将结果返回,最后在客户端对返回结果进行运算得到结果。
参考: