Scheduled decryption


#1

Would it be possible to implement a feature where something along the lines of the following happens?:

  1. Athena stores a public file on the network, but encrypted. She uses this new feature to dictate that the encryption key will be released in 300 years.
  2. Multiple other people take shared ownership of the encrypted file. The network confirms to these people that their copies of the file will be decrypted in 300 years.
  3. Athena decides that actually she’d rather the file never become public, but is unable to do anything about it.
  4. If anyone still has ownership of the file, the network decrypts their copies.

There’s no reliable time-bomb like this in existence, but if everyone’s computers have to agree that it’s currently a particular date, then it’s seems more feasible.
This way, Athena could post a diary, a confession, government-restricted information, a hotly anticipated single from her next album, source code as part of a ‘provably-temporary closed-source’ project, predictions of future events to show that she’s a time-traveller without causing a temporal paradox etc.
If Athena’s account were comprimised in the meantime, the attackers would have no way to prevent the network from decrypting the file when appropriate.
In the case of whistle-blowing, leaks could be scheduled so that as one public file (leak) is decrypted, a file shared with a government is also decrypted, the latter file containing a courtesy warning of what the next leak will be.

(I know no programming stuff)


#2

Interesting idea for sure. I know we can easily allow multiple parties in an N + P way to decrypt a file in case of accident/death of author etc. I seen it as useful for those who cannot access their account for any reason, their friends can let them in (its our approach to losing your password, have not discussed to much, but the code is written and available in maidsafe-common, its also implemented in a program to show this feature (signing_tool)).

Like to give this more though though, sounds intriguing, the network will likely never be able to decrypt anything (vaults have no concept of encryption of files, only data they are given). Client apps can easily do this though as long as all parties agreed. Its also good for whistleblowers as they can protect themselves by sharing keys with multiple parties who must collaborate to retrieve data etc. This gets granular and very interesting, but I cannot afford time right now. It is an area for much more consideration though.


Self destruction + dead man switch
#3

It’s called time lock encryption and I asked the developers about this recently. I hope they put it in.


#4

If multiple trusted parties can combine keys to decrypt files, then maybe an opt-in joint ownership of an account would work. If a thousand people own the account ‘TimeKey’, and have some auditable software managing the account for them, then someone could share with this account a folder containing: a text file containing the key for the original file; and a second text file (public) containing the date it should be opened. When decryption time arrives, someone hoping to decrypt it could request that the joint account make it public, and a portion of the nodes running the account would automatically check the public date file to see if that would be appropriate, and if so, proceed to make the original file public. But that result in huge encrypted volumes of data becoming vulnerable if one group gained enough control over the big account…


#5

SAFE Network will require a scripting language for this stuff. Look up revocable privacy, time lock encryption, and attribute based encryption on Google Scholar. All the answers you’re looking for are in papers.

The method I suggested is that Alice should select some trusted peers and give them the ability to vote to revoke her privacy. These peers would vote if at any time it looks like something is wrong with Alice (such as if she goes missing or is kidnapped). They would be only empowered to vote to release her files to her selected third parties but would not have access to her files.

If you use attribute based encryption then Alice could set it up so that she determines a set of attributes which are required for access to her files. This would allow her to describe who or what can access her files rather than addressing it to specific entities.

When the friends of Alice form a consensus which says something is wrong with Alice then all of her files (which could include all of her activities on SAFE Network up until that point) would be sent out to her selected third parties who then could investigate professionally.

The benefit of this is that if something criminal happens to Alice then if her friends are worried about her an investigation would take place. On the other hand if Alice wants it to be a media investigation then it would go to specific people in the media who match the attributes. Or it could just go to her next of kin, her children, or whomever.

That in essence is revocable privacy combined with attribute based encryption. Time lock encryption would allow users of SAFE Network to encrypt their files in such a way that it couldn’t be opened up until 70 years from now or 10 years, or 5 years, etc. Interesting combinations would be if the user designated that after a certain amount of time is passed everything they did on SAFE Network is made public (beyond whatever statute of limitation) and only if their peers all agree that something is wrong could they trigger the revocable privacy feature which would open it up sooner.

The idea is to make privacy completely scriptable like smart contracts. The user would have absolute control over every detail. I’m thinking most users would want this level of granular privacy control because for most people privacy is never black and white.

I also think for most people the idea is not to keep something private forever but usually for a specific period of time before it can be released to the public. For example if someone is falsely accused of some heinous crime they committed on SAFE Network they would want to have the revocable privacy feature so that their friends can vote to release the truth either to the media or to their lawyers so they can defend themselves in court.


#6

This is something we can achieve quite easily and needs no core network changes. When the API is ready I can mock this up easily enough and see if somebody wants to run with it. I think there are a lot of uses for this kind of thing actually (doctor could be on party with some family etc.). It could be restricted to only info not completely private to Alice (leave out here daily diary etc.)


#7

Isn’t this a specific case of the generalised “smart contract”? Ooops, sorry Ethereum :wink: