Saturday, April 4, 2015

Existence of an ideal time capsule

Let's say, you want to hide, or make inaccessible some data (e.g. video of yourself, a secret) till a given time - or in other words, send a message to the future. The problem is how would you prevent yourself, or in that matter, anybody else, to read that peace of data before the given time? How do you make absolutely sure that there's no way to open the time capsule prematurely?

You'd say let's put that secret inside a platinum chest, inside a platinum chest, inside a platinum chest ... with a self-destruction function, so if someone peeked into those boxes before intended, then the data would be wiped out of existence. Oh and do not forget to bury that matryoshka platinum chest deep down the crust of earth where platinum is at the limits of melting.

A modern time capsule feeding on solar energy.

Won't work; and seems like a bit of an overkill here and there. Possible way of reading such a hidden secret before intended:

  1. Find it - with the help of all people plus extraterrestrial beings if needed with an MRI that is able to scan the whole Earth and pinpoint platinum sources.
  2. Open it - assuming that a timer inside the platinum chest is counting till the given time, just alter the bits of the counter register by electromagnetic waves, or hack the self destruction module a similar way and just crack the whole stuff open with a platinum can-opener.
  3. Read it.

The point here is it doesn't really matter how much, how impenetrable containers you use or how deep you bury it, someone will always come up with an antidote to get around them. From here it can be easily concluded that no mechanical solution of time capsule will be ideal. A proof is needed.

If we look at the problem from another angle, we may notice that it's basically a question of cryptography: how can I encode data till a given time? Now acquiring the tools of cryptography, we can encrypt the secret information, using RSA for example, and then the encoded data can even be published; while the problem still remaining is to hide the produced key. So, have we proceeded in making that ideal time capsule? Of course! Now we have a compact number enclosing implicitly our secret information. One solution is to pass this key to a trusted third party that would publish the key the exact time intended - what a bullshit after the extraterrestrial wild card. There's nobody we can trust in this situation, so let's get to the second solution: write a software that reveals the key (and practically decypher our data) at the given time. Alright, but how? Implement a timer that counts till ..blabla.. timers can be corrupted, also the key can be read out of computer memory, as it has to be there to be revealed later. A timer, that glares at the universe and waits for a predicable future event, can also be compromised by just altering the inputs - showing an image of the future state by hacking into the sensors. It always boils down to the conflict that we wish for the measurement of genuine time while we cannot ensure its authenticity. This contradiction is enough to conclude that there's no way to make an ideal time capsule. What a bummer.. but still, we can make it quite difficult or even impossible to have any benefits of hacking the timer. That is where the work of Rivest et al. and my implementation comes into the picture.

What if we alter the key in a way, that it only can be recalculated by a process, which duration is definable? Now, such a process would run on the hardware decoding the key until the given time passes. Here time is acquired through the clock of the processor - the faster the machine, the sooner the decoding finishes. We're still not completely cool, as time is deduced from the speed of the processor, which can be compromised by swapping the CPU with a faster one - if there exists any. Side note: if the process is intrinsically sequential (not parallelizable), then the duration of it varies only with the clock of one processor.

My implementation is able to create a time capsule that runs decoding itself for a given time - on the hardware it was constructed. Basically it samples the duration of a certain operation (squaring) that is repeated in the calculation of the key. Thus the necessary number of operations is predicted and the time capsule is put together accordingly. In the end, we have a program that calculates the key relentlessly and decypher the secret data when finished - though consumes a lot it's the closest to an ideal time capsule in practice. If we could predict (overestimation is enough) the computation power of the future till the time the capsule can be opened (applying Moore's law or preferably the knowledge of a extraterrestrial), then we could fine-tune the capsule so it won't be read before allowed - and probably long after that date.

My implementation can be found here: https://github.com/csiki/timecapsule.git

Windows x86 executables may be downloaded from here: https://github.com/csiki/timecapsule/releases

References

R. L. Rivest, A. Shamir, and D. A. Wagner, “Time-lock Puzzles and Timed-release Crypto,” Massachusetts Institute of Technology, Cambridge, MA, USA, 1996.

No comments:

Post a Comment