Suppose an owner has a file $F$ stored in a server, and wants proof that the server has the full file. The owner possibly does not store the full file. I was thinking about the following simple schema of challenge-response using only hashes:
Preparation
- The owner generates a key $k$ randomly.
- The owner calculate and store the commit $c=hash(hash(k||F))$ ("$||$" stands for concatenation).
Verification
- The owner sends the key $k$ to the server.
- The server calculate $p=hash(k||F)$ and send $p$ to the owner.
- The owner verifies if $hash(p) = c$.
I was researching challenge-response PoR and could not find this simple schema, usually related works use more sophisticated cryptographic functions. Deswarte y. et al. seems to be a general case of this schema. I appreciate any reference to previous work with this schema.
Supposing the hash function $hash$ is a cryptographic hash with properties of collision resistance and irreversibility. Is this PoR schema safe? Any attack?
Edit
Squema was fixed by exchange of $p=hash(hash(F)|hash(k))$ to $p=hash(k||F)$, as pointed out by Titanlord and PaĆlo Ebermann