Problem: I need a dataset that can’t be changed unless multiple signatures are supplied. It has to be impossible to be changed by any hacker or vendor with millions of dollars incentivising them.
What is the most elegant way to do this?
The best solution I have so far is writing the data to an immutable blockchain. Then replacing the whole dataset with a new one when changes need to be made.
2 problems with that solution:
It creates a 3rd party dependency with a cost to write data.
The dataset endpoint needs to change each time there’s an update. And the code with that endpoint reference in it could be changed to reference another dataset.
Does it have to be impossible to change or impossible to change without you noticing? Also, if someone can change it (you, in this case), then anyone with enough resources can.
If I needed to have something protected with several private keys, I would encrypt the data with all of them in one place (to avoid eavesdropping) in order (if the encryption is not commutative). Then all those keys would be needed to read it back.
But to answer your question…it needs to be changed only when multiple signatures are supplied. So long as the private keys that generated those signatures are never compromised, it needs to be impossible for unintended changes to happen.
Re: Your solution…Would it be possible to implement your solution using homomorphic encryption?
Maybe a homomorphically encrypted “black box”, with the keys & data. The blackbox would contain the endpoints. It would receive the inputs, generate signatures with those inputs, compare the inputs against the immutable data in the blackbox, then send the output only to a pre-defined endpoint.
I do not know anything about homomorphic encryption. But need to get up to speed on it fast. Any recommended resources to cut my learning curve would be appreciated.
There also might be a MOOC about encryption somewhere. It might provide some structure to your learning. Or you can get a syllabus for an introductory cryptography course from some university.