challenger 模块提供文件副本保持证明的相关功能,包括初始化参数、副本保持证明的生成、存储和获取。
副本保持证明协议允许数据持有者验证保存在存储方的文件确实是当初分发给该存储方的版本。 数据持有者和存储方通过"挑战-应答"的模式来实现文件完整性校验。
副本保持证明协议包含四个关键步骤:预处理、挑战、应答、验证。
- 数据持有者预处理文件,生成挑战相关信息并存储在本地,将文件分发给存储方,之后可以删除本地文件副本;存储方保存接收到的文件,后可通过文件内容应答数据持有者的挑战;
- 数据持有者为了验证存储的文件完整性,会随机选取数据片段向存储方发起挑战;
- 存储方利用存储的数据和挑战信息,对本次挑战进行应答,生成相应的证明;
- 数据持有者可以根据事先存储的挑战信息对应答进行验证,验证通过则说明文件保存完好。该项目利用区块链智能合约实现应答的自动验证。
- merkle: 基于merkle tree的副本保持证明方法,每个证明是针对某个切片的证明,切片选取多个数据段计算merkle根哈希, 需要数据方提前生成并存储足够多的证明信息,用于产生后续副本保持证明挑战;
- pairing: 基于双线性对的随机副本保持证明方法,可一次证明多个切片的存在性,挑战可每次随机生成,无需事先存储挑战数据。
[1] http://cryptowiki.net/index.php?title=Proof_of_data_possession