4.2 复制证明
“复制证明”(PoRep)是一个新型的存储证明。它允许服务器(即证明人P)说服用户(即验证者V)一些数据D已被复制到它唯一的专用物理存储上了。我们的方案是一种交互式协议,其中证明人P:(a)承诺存储某数据D的n个不同的副本(独立物理副本),然后(b)通过响应协议来说服验证者V,P确实已经存储了每个副本。据我们所知PoRep改善了PDP和PoR方案,阻止了女巫攻击、外包攻击、代攻击。
请注意,正式的定义,它的属性描述,和PoRep的深入研究,我们参考了[5]
定义3.1
PoRep方案使有效的证明者P能够使验证者V确信P正在存储副本R,副本R是某些数据D的物理独立副本,同时也是P中唯一的副本。PoRep协议包含下边多项式时间算法:
(Setup, Prove, Verify)
- PoRep.Setup(1λ, D) → R, SP , SV , 其中SP和SV是P和V的方案特定的设置变量,λ是一个安全参数。PoRep.Setup用来生成副本R,并且给予P和V必要的信息来运行PoRep.Prove 和 PoRep.Verify。一些方案可能要求证明人或者是有互动的第三方去运算PoRep.Setup。
- PoRep.Prove(SP , R, c) → πc,其中c是验证人V发出的随机验证, πc是证明人产生的可以访问数据D的特定副本R的零知识证明。PoRep.Prove由P(证明人)为V运行,给V(验证者)生成πc。
- PoRep.Verify(Sv , c, πc) → {0, 1},用来检测证明是否是正确。PoRep.Verify由V运行,并说服V自己相信P已经存储了R。