If you don't want Alice to keep the data after broadcasting it to Brian then I think you're probably SOL
- snip -
well, good luck with that!
IMHO, it can't be done.
That's what I figured. I personally couldn't think of a way that it could be done, but thought it was worth asking in case there was something I wasn't aware of.
My only hope was there was some sort of function that I was unaware of such that:
Given:
DataSet = DataSet_A + DataSet_B + DataSet_C + DataSet_D
We could say that:
Func(DataSet) = Func(DataSet_A) + Func(DataSet_B) + Func(DataSet_C) + Func(DataSet_D)
Where:
The size of Func(X) is significantly less than X
Func(X) results in the same output everytime you use the same input
When X and Y are not identical, there is an extremely low chance that Func(X) would ever have the same result as Func(Y)
Notice that the "Where" section sounds exactly like a cryptographically strong hash, but I'd need a hash function that also had the attribute listed under "We could say that".
I can think of a very weak "hash" that meets the needs of the first part, but it isn't strong enough for the second part:
- Convert the data to a binary representation
- Add up all the 1's in the dataset
- Sign the resulting value
Now if you do the same for the subsets, you'll find that I only need to store the quantity of 1's in each subset. I can now show that the sum of the signed quantities of 1's in the subsets is equal to the quantity of 1's that the data provider signed.
Unfortunately, this weak example is useless because it's to easy to move 1's around in the data instead of adding or removing them. Which means it fails the "When X and Y are not identical, there is an extremely low chance that Func(X) would ever have the same result as Func(Y)" test.
I need something better, but I don't know if something better exists. I've just got this nagging feeling in the back of my head that I saw something like what I want back in the early 90's. I'm probably worng and thinking of something else, but had to ask just in case.