I have two hosts, A and B. Host A gives host B a large piece of data and deletes it. Host A then needs to periodically confirm host B is holding the piece of data.
Before deleting the data Host A precomputes multiple HMACs with a CSPRNG generated random number (a salt). When Host A needs B to confirm the data still exists, it sends a salt to B, B then computes the HMAC returns it to A.
Is this cryptographically sound?
When computing HMAC(number, data) can you use an intermediate values instead of the actual data? Keccak is used if this affects the answer.