I'm dealing with untrusted external storage and need to ensure the storage provider does not withhold any records in a query.
Example:
I have two trusted entities TA and TB, those entities should be able to alter the data that is stored in the cloud/untrusted storage, but nobody else. So my solution I equip TA and TB with Public-Keys and i have a data structure that can be compared to a table with versions say
Ver | Data | Signature | Signee
4 | ... | (AAAAAAAAA)_TA | TA
3 | ... | (ZZZZZZZZZ)_TB | TB
2 | ... | (YYYYYYYYY)_TA | TA
1 | ... | (XXXXXXXXX)_TA | TA
So when I retrieve such a table from the storage provider, I can easily verify the signatures and check whether the signature is correct, whether the signee was allowed to change the table or not.
However, I would also like to check for record completeness. Say TA uploads version 4, but TB is only aware of all records up to Version 3. Now the storage provider may withhold Version 4 completely when TB queries it.
As there is no direct sidechannel between TA and TB, there is no way to exchange the current version. Is there a way to circumvent this?
I was thinking of periodically inserting dummy records to at least have some time certainty. However, this approach lacks scalability and would result in a lot of storage and signing overhead. What is the actual system property i am looking for (it is hard to find research for something you do not know the name of)?