11.SimplePIR
全称:One Server for the Price of Two:Simple and Fast Single-Server Private Information Retrieval
期刊:Usenix Security Symposium (USENIX Security)——网络安全领域四大最高级别的国际学术会议之一
一、介绍
这篇论文旨在实现高效的单服务器隐私信息检索(PIR)方案,以解决在保护用户隐私的同时快速检索数据库的问题。为了实现这一目标,论文提出了两种新的PIR方案:SimplePIR和DoublePIR。这两种方案的实现基于学习与错误假设,并在保持高吞吐量的同时显著降低了客户端的通信成本。SimplePIR实现了每核心10 GB/s的服务器吞吐量,接近内存带宽,但需要客户端下载一个相对较大的“提示”。DoublePIR方案通过递归地使用SimplePIR,以更低的通信成本获取所需的数据库记录。这些方案的突破点在于在保持高吞吐量的同时,显著降低了客户端的通信成本,填补了单服务器PIR方案设计空间中的一些空白。通过这些创新,论文为单服务器PIR方案的设计和实现提供了新的思路和解决方案。
本文中很有价值的观点总结:
1.定义了一种新型的匿踪查询对比方式:数据库大小/响应时间/core。时间相同比较支持的数据库的大小。
2.指出一个很严重的问题:通过长久保持的密钥生成的query是不安全的,与sealPIR类似的匿踪查询存在不安全性。
3.首个基于LWE问题的匿踪查询。
二、背景知识
1.Learning with errors (LWE)
是一种基于格的加密技术,它是一种在计算上难以解决的问题。LWE问题的基本形式是:给定一个由n个向量组成的矩阵A和一个向量b,以及一个小的误差向量e,找到一个向量s,使得As+e=b。LWE问题的难度在于,对于给定的A和b,找到s是困难的,因为误差向量e是随机的。LWE问题是一种基础的加密原语,可以用于构建各种加密方案,包括私有信息检索(PIR)方案。在本文中,SimplePIR方案的安全性基于LWE假设,即LWE问题的解决难度足以保证SimplePIR方案的安全性。在文字提及到(𝑛, 𝑞, 𝜒)-LWE,解释一下:𝑛代表向量的维度,𝑞代表整数模数,𝜒代表误差分布。因此,(𝑛, 𝑞, 𝜒)-LWE问题描述了在给定向量维度𝑛、整数模数𝑞和误差分布𝜒的情况下,解决Learning with errors (LWE)问题的难度。这种参数化的LWE问题在密码学中具有重要意义,因为不同的参数取值可以导致不同难度的LWE问题,从而影响基于LWE问题构建的加密方案的安全性。因此,对于给定的𝑛、𝑞和𝜒,(𝑛, 𝑞, 𝜒)-LWE问题的难度可以用来评估基于LWE假设的加密方案的安全性
Secret-key Regev encryption:是一种基于LWE假设的加密方案,由Regev在2005年提出。该方案的安全性基于LWE问题的困难性,即在给定矩阵A和向量b的情况下,找到向量s是困难的,其中b是由A和s的点积加上一个小的误差向量e得到的。Secret-key Regev encryption方案的基本思想是将明文编码为一个向量,并将其与一个随机向量的点积加上一个小的误差向量,然后将其加密。具体来说:
LWE问题如下,已知A和r无法解密获得s。
Regev encryption:基于LWE的加密方式,µ为0,1向量,e<<[q/p],q为密文域,p为明文域。
解密方式为:m =(c-As)÷ ∆,∆=[q/p],若m<∆/2,µ=0,若m>∆/2,µ=1。
三、算法
1.simplePIR
db为数据库,A为共同拥有的随机矩阵,可以结合下图进行查看。
推导:
Round(^d)/∆中e/∆很小可以抵消,仅留下后面的db部分,获得正确的结果。
2.DoublePIR
SimplePIR具有高的服务器端吞吐量,但需要客户端下载和存储一个相对较大的预处理提示,其大小大约为 𝑛√𝑁,其中 𝑛 大约为 210,数据库大小为 𝑁。然后介绍了DoublePIR,这是一种新的PIR方案,它通过递归应用SimplePIR来将提示大小减小到大约 𝑛2,这与数据库大小无关,同时保持服务器端吞吐量高达7.4 GB/s。在实践中,对于一个字节的记录,这个提示大小为16 MB。对于记录非常多的数据库(𝑁 ≫ 𝑛2 ≈ 220),DoublePIR的提示大小比SimplePIR要小得多。与SimplePIR一样,DoublePIR的每个查询的通信成本在数据库大小 𝑁 上是 𝑂 (√𝑁)。
正确性证明:
按照上述式子推到即可。
三、性能
1.吞吐量:The ratio between the database size and the server time to answer a query—is the speed with which the PIR server can read the database from memory size/time/core GB/s/core
自测结果,
单条数据宽度8byte | ||||||||||||
数据量 | 2^12 | 2^16 | 2^20 | 2^24 | ||||||||
方案 | simplePIR | doublePir | sealPIR | simplePIR | doublePir | sealPIR | simplePIR | doublePir | sealPIR | simplePIR | doublePir | sealPIR |
预处理时间/ms | 3 | 146 | 3 | 37 | 121 | 40 | 654 | 792 | 619 | 9915 | 12389 | 9956 |
生成query时间/ms | 0 | 57 | 2 | 0.8 | 53 | 2 | 2.4 | 54 | 2 | 8.6 | 50 | 2 |
生成reply时间/ms | 0 | 0.2 | 13 | 0.04 | 0.2 | 39 | 0.8 | 1.6 | 243 | 7.4 | 10 | 2411 |
解密reply时间/ms | 0 | 0.1 | 1 | 0.06 | 0.1 | 1 | 0.3 | 104 | 1 | 1 | 16.8 | 1 |
总计算时间/ms | 3 | 203.3 | 19 | 37.9 | 174.3 | 82 | 657.5 | 951.6 | 865 | 9932 | 12465.8 | 12370 |
hint大小/KB | 700 | 131072 | 2716 | 131072 | 10836 | 131072 | 43344 | 131072 | ||||
query大小/KB | 0.1 | 256 | 177 | 2 | 256 | 177 | 10 | 256 | 177 | 42 | 256 | 177 |
reply大小/KB | 0.1 | 256 | 185 | 2 | 256 | 185 | 10 | 256 | 185 | 42 | 256 | 185 |
总传输开销 | 700.2 | 131584 | 362 | 2720 | 131584 | 362 | 10856 | 131584 | 362 | 43428 | 131584 | 362 |
说明:与sealPIR相比,simplePIR性能计算性能更高,但是需要过大的预处理和通信,其优点更在于数据库不变的情况下,反复查询。
simplePir源码: github.com/ahenzinger/simplepir,
sealPir源码:github.com/microsoft/SealPIR