Ask HN: What are some good methods to prove current time?

110 points by sigmaprimus ↗ HN
I know I can film a current newspaper to prove one side, how do I prove the other side? In other words how can I prove the current time of message? I think this should be possible but every idea I come up with, it seems to be possible to fake in the future tense.

Is live streaming the only true method? Or am I missing something?

67 comments

[ 2.7 ms ] story [ 121 ms ] thread
>In other words how can I prove the current time of message?

In many countries you can have a statement you wrote signed, dated and stamped by the state authorities that verifies not the truth of the content, but that _you_ wrote it (and the specific time). You need to fill a form, take it to a state office, and present your ID to them for them to stamp and approve it.

In the US I find that this is called a "statutory declaration":

A statutory declaration is a document that formalizes matters to be made known publicly. It is a solemn statement made by plaintiff or witnesses instead of the oath, but equally binding.

Statutory declaration is a legal document based on statute law as to their format and content requirements. Statutory declarations are of the same force and effect as if sworn under oath or affirmation.

I believe having a document “notarized” costs about $10-$20 and accomplished something similar.
You can ask the person you wish to prove current time to, to provide a "challenge" that you will film ("put two fingers up", "hold up a USB cable").
I don't understand how this proves anything? What is stopping me from holding up the USB cable two years later?
You are live streaming. Someone asks you to do something, but you don't know what they are going to ask. You do the thing that they have requested live on stream, e.g.: Holding up a USB cable. That person who made the request knows that you did not know what they were going to request, so they know that they are watching a live stream and not a recording.

However, third parties watching the stream have no proof that this wasn't a coordinated trick prepared in advance.

Considering the extent of our abilities to modify videos after a recording is made (After Effect, Blender and all those post-editing softwares out there), it's hard to prove in-video other than a livestream as you mentioned.

The only solution I can see would be to use an impartial third-party with legal weight to attest the current time to be as declared on video and on paper.

Another idea would be to make and film a transaction on a public system (Bitcoin blockchain?) with a proof of the transaction and its timestamp?

I looked into this a few years ago[1]. The solution I came to involves putting the hash of the most recent Bitcoin block in your document, and then signing the hash of your document into the Bitcoin blockchain.

This cryptographically proves that the document was created/published within those two time bounds.

This of course doesn't help in all cases, i.e. you could edit an old document to make it look newer, but I'm not aware of any way to properly solve that particular problem without a trusted third-party.

[1] https://www.jamieweb.net/blog/proof-of-timestamp/

You can do the opposite, include your message (or a digest of it) in a medium that is hard to alter, for example a newspaper, notaries, Twitter, a blockchain, etc (or preferably a combination of those). Some of those solutions don't prevent you from publishing multiple versions of the message and only revealing one however.

On the other hand if you're trying to show that you did something (not just authored a message) at a given time, it's a bit harder, because you can always notarize the video long after it has been recorded. The best way to deal with this one (in the absence of trusted parties that might attend in-person) might be to do it in a public place e.g. in the library while a specific event is happening, on the street while some specific work is being done, in front of a newspaper stand in a shop etc. However I can see any of those faked using video editing.

The hash trick should work for a video of your act too; you can post a tweet with a hash as soon as you finish recording and are able to compute it.
In the far future though hash digest might be broken (i.e. you could alter the video but make it have the same hash)
This doesn't prove you did the thing right before publishing the hash, it could be an old video. It depends if you want to prove something happened before or after something else.
For that you use the other trick OP already knows to prove a lower bound, e.g. showing a newspaper or announcing a recent blockchain hash in the video (or include it in the other hash's computation).
That's a good idea, the time could be trusted if multiple sources could confirm it was done in public.

CCTV footage, news footage, snapchat stories, instagram... all independently verifiable and hard to fake all of them.

To show that a message existed at a particular date and time, you could use a time-stamping service operated by a trusted third party, in which they digitally sign a timestamp and the cryptographic digest of your message.

Several public certification authorities offer these services, described in RFC 3161, at no charge, because they’re used by code signing schemes, to prove that a digital signature on an object file was made during the validity period of the signer’s identity certificate. Here’s Microsoft’s explanation:

https://docs.microsoft.com/en-us/windows/win32/seccrypto/tim...

You don’t have to use an identity certificate, however; OpenSSL, for example, can work work with timestamps directly:

https://www.openssl.org/docs/manmaster/man1/tsget.html

https://www.openssl.org/docs/manmaster/man1/openssl-ts.html

Some examples of time-stamping servers:

https://knowledge.digicert.com/generalinformation/INFO4231.h...

https://www.entrust.com/knowledgebase/ssl/time-stamp-url

https://sectigo.com/resource-library/time-stamping-server

Whether such a timestamp would be acceptable proof, on its own or accompanied by an explanation from an independent expert, would depend on the audience and the situation, of course.

Blockchain would be your best bet, but even that could be scheduled for the future, all depends on context.
The easy thing to do is prove a message existed prior to some point in time. That's a timestamp, you can do that easily for free with my OpenTimestamps project, which uses Bitcoin for the timestamp proof: https://opentimestamps.org/

The way it works is pretty simple: your message is hashed with a series of cryptographically secure hash/append/prepend operations, leading to a Bitcoin block. Since they are one way hashes, your message must have existed prior to that Bitcoin block.

The hard part is actually proving a message existed after some point in time. To do that, you need a random beacon: a large number (also known as a nonce) that we know was created at some point in time, and prior to that point in time, was impossible to predict. Newspaper headlines are a weak form of random beacon, as it's hard to predict the news in advance. Bitcoin block hashes are even better, as the proof-of-work ensures that even trying to force a single bit of the block hash is extremely expensive. I also run a project to inject other random beacons into the Bitcoin blockchain, such as the NIST Random Beacon: https://github.com/opentimestamps/nist-inject

But in the age of deep fakes, what does any of this actually prove? See, while a timestamp proof mathematically depends on your message, with a random beacon it's the opposite: your message needs to depend on the random beacon. For human meaningful messages that's not easy to achieve. A photo can be photoshopped, a video deepfaked, etc.

The best you can do in general is try to make the random beacon time, and the timestamp, be as close together as possible to make it as difficult as possible to do a photoshop, deepfake, etc. But deepfakes are good enough these days that IMO that's dubious security.

Probably the best approach here is to actually think about what exactly you are trying to achieve - are you kidnapping someone? proving you've recovered from the plague? launching a cryptocurrency? There isn't a one-size-fits-all solution to this problem.

Holy crap I've been saying this about Bitcoin (along with it's voting and currency mechanisms) are useful.

But I've been saying that it could be used for races or world records or predictions.

Neat to see someone actually wants it.

> But in the age of deep fakes, what does any of this actually prove? [...] a video deepfaked, etc.

Can't you combine this with a basic public-key crypto scheme if you're worried about fakes? You could extend the same scheme to multiple people if needed; obviously you can't prove a certain picture definitely wasn't faked, but in most cases a semantics like "X, Y, Z agree this is real" is sufficient.

The concern is first-party fakes, so I don't think public-key crypto helps anything. For example, in the "launching a cryptocurrency" case, you want everyone to believe you just launched the cryptocurrency, so that it's not possible for you to have done a bunch of advance work on hashing to create an unfair advantage for yourself.
Of course my suggestion does nothing to solve the 'first party fake' problem, but that's kind of an unsolvable problem when taken in full generality, because it essentially amounts to 'how do you prove X is not lying". You don't; this is where reputation/trust comes into the equation.
The OP's problem of proving when a message is encoded is a tractable subset of 'prove X is not lying'.

If you're not concerned about the actual author of a message faking its timestamp, you can just do public-key encryption, and write the date in the message.

If you combine public key crypto with parent's suggestion, you get a claim of the kind: "I can prove the timestamp is correct, and you'll have to trust me that the content is what I claim it to be", which is stronger than just doing public-key crypto. It's not a solution of the full problem, but it's something that should cover most common use cases, unless you have pretty weird requirements.
> The hard part is actually proving a message existed after some point in time.

It's interesting that we think about this exactly opposite!

It has been possible since a long time (relative to the existence of the internet) to prove something existed after some point in time by cryptographically tying a news headline to your message. That's what Satoshi used if I'm not mistaken[1], or at least I remember this being used before blockchain.

If you want to do it the other way around, you needed a trusted third party up until Bitcoin came around and there was a method that did not rely on a single third party.

One issue I see with blockchains is that they require a running and ongoing service to prevent backdating. A witness also works, but is just moving the problem (it can be a solution, but it's not a general solution that works in every situation). To me it still seems that the easy way around is the one that is solvable with an ordinary newspaper.

Edit: I see in your GitHub bio (sorry for the stalking, I was curious about your age since you seem to consider blockchain to be the more generally available than newspapers, whereas to (perhaps older) me, newspapers are the generally available method and blockchain novel) that you describe yourself as a "Applied Cryptography Consultant (what the cool kids call 'blockchain tech')". I suppose that explains why we see this as opposite.

[1] Also looked up the newspaper that Satoshi used. Wikipedia says: `Embedded in the coinbase transaction of [the genesis] block was the text: "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"` https://en.wikipedia.org/wiki/Satoshi_Nakamoto

Yes, I'm well aware of what Satoshi used.

The thing is, the famous "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" quote that's in the genesis block only proves that the genesis block hash was created after Jan 3rd, 2009.

The quote does not prove that the rest of the genesis block was created after that date. That distinction is why random beacons are tricky to use. Sometimes that distinction doesn't matter, sometimes it does. It depends on what exactly you are trying to accomplish.

With the Bitcoin genesis block this isn't a problem, as the purpose of the genesis block quote is to show that blocks after the genesis block weren't generated in advance. But in other use-cases - eg the "proof of life via newspaper" example - deep fakes make the security of a random beacon much more dubious.

> I was curious about your age since you seem to consider blockchain to be the more generally available than newspapers, whereas to (perhaps older) me, newspapers are the generally available method and blockchain novel

I'm wasn't trying to make that claim one way or another. Regardless of what exact type of random beacon you use, the problem I describe above still exists. Now, if you actually do have one of the rare use-cases where random beacons work, these days using Bitcoin as your random beacon is certainly better suited to automation. But whether or not that's relevant depends on what exactly you're trying to achieve.

(comment deleted)
Very good question. I have also occasionally wondered about this and haven't come up with a satisfying solution. I guess it boils down to 1) reference in your message something that didn't exist before your point-in-time 2) let a trusted third party publish the hash of the message you compiled. A third party seems necessary because time isn't a technical concept, but time can be described as a sequence of events - so some trusted event needs to reference your event/document(its hash or equivalent). As a comment here mention, blockchain could be used as a solution. Really interested to see other solutions in this thread.
Many are mentioning digital timestamps. There's a pretty universal physical one, too -- a postmark. So enclose your message and a newspaper front page in an envelope addressed to yourself and sealed in a trustable way, and drop it in the mail. But then opening it can only happen once and has to be witnessed.
You just mail the unsealed envelope, add the content later and you’ve forged the time.
You can just buy a postmarking machine... Get any postmark you like.
Back in 1990, Bellcore researchers Haber and Stornetta set up a system (surety.com) where documents were hashed and then the hash value was published as a classified ad in the New York Times every week. This provided a solid proof that the document was published as of that date. (Unless someone visited all the world's libraries and swapped in fake New York Times copies.)

An article showing one of the classified ads: https://www.vice.com/en/article/j5nzx4/what-was-the-first-bl...

this is cool. i've heard of this as a theoretical way, but didn't know anyone was actually publishing hashes in a real newspaper!
I’ve seen it happen several times on twitter.
“Our” own patio11 has done it at least once recently.
The problem with this approach for many applications is that you can potentially publish many messages and then only tell any about the ones you want to 'keep'. For instance if you want to predict an election outcome, publish hashes for both outcomes under different names and then only tell people about the winning one later on.
This is where reputation becomes important. Attach your name to a public message and hash and it’s easy to verify that you didn’t predict both outcomes. Continuing to use the same channel over time provides further weight.

The flip side of this is so many people make so many predictions that getting any one the correct is effectively meaningless most of the time. Essentially, you need a long string of public predictions on a single channel for it to be meaningful anyway.

It used to be a common email scam that you’d make two opposite market predictions and send them as free advice. Then you’d do the same thing the next month, but only send to the people who received the “correct” first message. And again. And again. And when you had “proven” yourself all-knowing to a small group of people, you’d start charging them.
Which is why being public is so important for these things.
Can confirm. Learned something from that.
Rephrasing and reframing: You want to prove that you did something before and after certain points of times, and you have solutions for proving that you did something after a certain point of time (filming current newspaper or other similar methods). So you want to prove "the other side": That is, you want to prove that you did something BEFORE a certain point of time.

Here are two low-tech solutions almost anyone can do:

1. Record yourself standing under a well-known landmark, which has a digital or analog display of time and date. Movie theaters have displays showing time and date. Malls have them too.

2. Record yourself doing a Google search for "time now" and record the search result showing the time.

Both of these seem easy to fake. Though I guess to be honest anything these days will be easy to fake for suitable definition of "easy".
They are similar in accuracy to filming yourself with the current newspaper, which is what the person who asked the question accepted as a solution to "one side". The question was about the "other side", so I proposed a solution of similar accuracy.
I'm probably nitpicking where it doesn't belong, but certainly not the Google search one, which is trivial to intercept and redirect to something that returns whatever time you want, and wouldn't be at all detectable.

What I was being pedantic about on the other one I guess was that if we include some video editing in our definition of "easy", a newspaper which you can bend and wave and make slightly annoying to edit over seems slightly more believable than a fixed time and date which even if you walk around near should be a bit easier to edit over afterwards considering it's going to be some "regular" shapes.

Google search: You can record yourself in front of time.gov page if you want to. The time constantly changes. You can move constantly while talking, so that your figure has an overlap with the time clocks. This can be "intercepted" - you can show headers and re-directions using an add-on, but the basic idea here is to use something almost anyone can do, so I am not proposing that.

Video editing: So many ways of doing this. The basic idea is to show a display of "time and date" somewhere, which is difficult for you to arrange.

You can record yourself standing in front of a couple of newspaper stands, showing today's newspapers.

You can record yourself shouting at train passengers of multiple trains, "hey what's today's date and time?" and recording the response.

There are many, many solutions accessible to the common man to prove this, with a generally acceptable level of authenticity.

It seems like faking time.gov is fairly close to trivial.
No, a newspaper is impossible to fake, because you can't predict the headlines that will come out that day.
A system like Bitcoin has this functionality. "Time" is essentially represented as "depth" of a block, and a block can only be buried deep into the chain with sufficient time (due to the nature of proof-of-work). A cryptographic primitive called "verifiable delay function" provides a good abstraction for this problem.

Specifically, you may put the hash of your message into a bitcoin transaction, and submit this transaction. If you later want to prove its age, just point to the bitcoin block containing your transaction. The guy verifying it is sure that you have got this message before the block is mined, because otherwise you would not have the hash of the message at that time and successfully embed it into a block.

I think there is an inherent asymmetry to the problen. You can prove that something (a headline) exists when you do your message, but you cannot easily prove that it does not yet exist. You could, theoretically, use something that one day will cease to exist to show that you signed your message before that point. However, digital things (information) normally do not cease to exist.

Assuming you don't want to involve any third party, things get difficult. To be honest I think there is always a way to make a message look older.

I found the problem statement and every reply remarkably confusing, because I am not smart. I'd like to give an answer to help fellow not-smart people.

The goal is to prove that you did something in the past -- for example, that you proved a theorem, or that you predicted that COVID would become an issue way back in 2018.

Interestingly, patio11 solved this for COVID: He published a hash of his article, calling out COVID in Japan, to Twitter, which has no edit button. Then a month or so later, he published the article itself, proving that he did in fact write that article a month prior.

It's an old solution, not his. But that's the general idea here.

The difficulty you had is probably not because you're not smart. It's probably more that the problem statement is not well articulated.

What are the sides referred to in "the other side" for instance.

I think what OP meant when speaking about sides was this:

If I show you a video today, where in the video I am holding the newspaper from 1 year ago, then (excluding any video manipulation) you can be reasonably sure that I did not record the video prior to 1 year ago because prior to that the newspaper for that day did not yet exist. So I have given reasonable proof for one direction in time; that it can’t have been further back in time than that.

But the other direction in time, and what I think they are referring to as “the other side”, is forward.

With the same video, you decide to trust that it wasn’t filmed prior, but it could have been filmed at any point in time since.

So what OP is asking for is for a way to prove that a message (text, video, or whatever else) was composed no later than some point t2 in time.

And for this the suggestions in this thread are good.

And if you combine techniques then you can to some extent prove that a message was composed between two specific points in time.

For example, by having the message reference a fact that was not known prior to point t1 in time and then having the message itself or a hash of the message notarized at point t2 in time in a medium that can be reasonably trusted.

But still it is challenging, with things like the possibility that you created and notarized separate messages for all possible outcomes for example and chose to divulge only the notarization of the outcome that actually happened after the outcome was known.

You have articulated my original question perfectly. I was having a difficult time explaining it.

Interesting that so many people have posted ideas regarding block chains and hashing, which is to be expected from a programmer's forum I suppose.

My eventual solution all be it not perfect is to record my message on a clear night with the ISS passing over. I believe this could be faked but would be quite difficult to align my geo position, the moon phase and relative position of planets, stars and space station all inside a moving video.

Thank you for your response.

Historically, scientists sometimes did something similar, using anagrams or cryptic messages instead of hashes.

https://en.wikipedia.org/wiki/Leibniz–Newton_calculus_contro...:

“In the XVII century, as at the present time, the question of scientific priority was of great importance to scientists. However, during this period, scientific journals had just begun to appear, and the generally accepted mechanism for fixing priority by publishing information about the discovery had not yet been formed. Among the methods used by scientists were anagrams, sealed envelopes placed in a safe place, correspondence with other scientists, or a private message”

The user cannot edit the message on twitter, but the database admin can. By extension, an attacker can do that as well.

The bitcoin BlockChain on the other hand is much harder to modify.

ps. I guess twitter can be trusted for some use cases, but for others (e.g. legal) I wouldn't trust a Twitter account.

Another threat vector would be takeover of your account. Attacker might then publish counterfeit hashes, or perhaps find some way to get the account disabled and hidden from public view, depending on Twitter policy toward problematic accounts at that time.
Make it known at the time (possibly via something likely strongly dependent like a hash or encryption). If it is not observable, it may just as well not have happened. Call it quantum mechanics or simply common sense.
Post online. Twitter, Facebook, your favorite messenger won't allow changing the time.

When renting a car from a sketchy place, I take photos and send them either to myself or to the owner. In cases of liability, a public medium would be preferable so you can just share a link to let anyone validate it.

You could use a trusted / centralised source to produce a TOTP or some equivalent code, and generate some code alongside a timestamp, which would be verifiable. (You can't get the code ahead of time from the service, but can later verify a timestamp code combination.)

Honestly, just emit the message in the Bitcoin blockchain and it will be there for perpetuity with a timestamp that is fully verifiable.

Encode your message as a hostname, like “the-answer-is-42.yourdomain.com”

Buy or request a SSL certificate for that CN. it’ll be from a notarized source, with a date on it, proving you knew that info at least as early as that, and recorded in the certificate transparency streams.

Also encode today’s lottery numbers to prove you knew the info after that date.

Are there no cosmic sources of randomness, for example variations in pulsar frequency?

That could solve the "No older than this" part, by imprinting a sufficiently long (unique) sequence from a particular time on your asset. Although I suppose it would be possible for whoever keeps the recorded "event-log" to just alter it.

For the "No younger than this" part, it seems you need to do the reverse, imprint the universe with your signature, which can then be verified by anyone who looks.

I guess blockchain can work as "universe" to some extent, but a more natural/absolute solution would be neat.

Any service that timestamps uploads will do, github for example.
Reading something allows one to create a proof of being after. Writing something allows one to create a proof of being before.

Are there other ways of conceptualizing this problem?