Proofs of Retrievability 文件证明的含义

2022-12-16

PORs(Proofs of Retrievability)的论文和 PDP 在同一年 2007 年发表,论文题目是《PORs: Proofs of Retrievability for Large Files》,第一作者是 Ari Juels。

PORs 不但可以证明文件确实被保存在服务端,而且可以知道文件有没有被修改、删除,这是 PDP 不具备的能力。不过 PORs 的局限性在于,只能用于加密文件,或者说必须对文件进行加密。PORs 实现的关键在于复杂的 setup 阶段。

PORs 的思路是,客户端生成一些随机的编码记录在数组中,这些编码被称为哨兵。比如 [6, 4, 0] 是三个哨兵。

先对客户端的文件进行对称加密,而且必须使用 block cipher 的方式。在加密过程中,把哨兵加入到文件随机的位置。两个哨兵之间,可能隔着 1 个 block 或者无数个 block,哨兵的位置是随机的。

然后把加密后的文件发送到服务端保存。

客户端发起挑战的内容,就是要服务端返回,文件在随机 n 个位置上的编码。挑战中包含哨兵所在的位置。

由于文件是加密的,服务端并不能判断,挑战的位置是原始文件的数据,还是哨兵位置的数据,服务端是难以推测出哨兵位置的。

对于客户端来说,只需要验证哨兵所在位置对应的编码,就可以判断文件是否存在以及完好无损。如果文件被修改或者中间的某些数据丢失,哨兵所在位置的编码一定是大相径庭的,挑战无法完成。

Retrievability 是可检索的意思,在 PORs 中的含义是,对于客户端来说,我可以通过指定哨兵位置的方式,对文件的某个部分验证,比如想验证第 1 个哨兵到第 3 个哨兵之间的文件是否完好,或者去验证第 5 个哨兵到第 9 个哨兵之间的文件,指哪打哪。

至于说为什么一定要对文件进行加密,应该一方面 PORs 依赖于对称加密的 block cipher,另一方面,对于不加密的文件,服务端比较容易推测出哨兵的位置。所以 PORs 只能用于加密文件。

论文中还通过引入纠错码的方式,来增加文件的容错能力。在 setup 阶段,先对 block 加入纠错码,再进行对称加密。引入纠错码的好处,就是在两个哨兵之间,在一定的错误范围内,如果文件有损坏,可以去修复文件。

为什么在 PORs 的机制中,纠错码开始显得重要?因为要和 PORs 的特点 Retrievability 结合。如果文件被储存在多个服务器环境,遭到了不同程度的损坏,因为有哨兵的存在,比较容易从其他服务器中恢复文件的一部分。在这样的背景下,引入纠错码就是对文件容错能力的进一步加强了。