本论文从两个方向对PIR性能进行优化。

论文关注于通过位置索引获取数据库中数据的阶段,并没有对获取索引的阶段做分析。

通过在获取实际数据中,优化请求编码和优化数据库数据编码(分桶)两种手段,实现减小通信量的目的。通过观察传统请求向量组成,作者提出可以将整个向量的值压缩为单个整型值的同态密文形态,并在服务端扩展该密文,恢复成同态密文向量,再依次计算与原始数据的内积。这一步骤大大见笑了客户端到服务端的通信量,但会部分增加服务端的计算量。

为了不降低安全性,本文依然坚持对整个数据库做运算。但为了增加单次数据库能返回的结果,作者选择采用批量查询的方式来均摊计算量。方案是再服务端通过哈希对整个数据库做编码,将数据复制后放到不同的桶中。当客户端与服务端的哈希算法一致时,客户端便可以知道对所要请求数据所在桶号。在请求时,除了请求的同态密文外,还要发送数据所在桶的编号。且要求客户端一次发送多个请求密文,要求密文处于不同的桶中。服务端接收后将密文与不同桶进行内积,这样均摊下来计算量是小于单条请求与整个数据库做运算的。该方案被命名为PBC,相应参数有PBC-{n, m, b, w, k, p}。

PBC的编码方案实际上并没有说的那么复杂。在最后作者实际上仅仅使用布谷鸟哈希对所有元素做了一个分桶,同时这种分桶还将所有元素的数量翻了几倍。但是在批量查询的时候,由于每次查询经过了摊销,当分桶数多于哈希函数数量时(几乎是肯定的),总计算量会减少不少。这里也看出来,布谷鸟哈希的作用其实是将大问题拆分成为多个小问题。与普通过滤器不同的是,他还能做到提高每个桶负载的功能。