# Is there any protocol for proving that a message was written at a certain time?

Does there exist a way to cryptographically prove that a message was written at a certain time? I know that one can write messages in bitcoin transactions to that the message is preserved in the blockchain, which can be used to prove the message was written at that time, but I'm wondering if there is any protocol that exists specifically for the purpose of proving the time of a message.

In general, no.

You can prove a message was written no later than time T by hashing the message with a collision-resistant hash, and communicating the hash to some trusted third party that records it was aware of the hash at time T. The bitcoin blockchain can be used as a third party here. You don't need to put the whole message in the blockchain, just a hash.

You cannot prove a general message was written no earlier than time T. If there was an alleged way to prove that, you could just write a message earlier than time T, wait for time T, and perform the alleged proof, tricking any verifier.

If you can communicate back and forth with a verifier, you can prove you are writing the message during the communication, by hashing your message along with some random data provided by the verifier and passing the hash back to the verifier.

If B needs to prove to A that B knows (or wrote) the message M at a certain time, this simple protocol can be used:

• A sends to B a uniformly distributed random NONCE, named R, of at least 128 bits. A records this date D1 from a clock that A trusts.
• B signs {M,R}. Let S be this signature.
• B sends M and S to A.
• A validates the signature S, the nonce R and the message M. A records this date D2 from the same trusted clock.
• A knows that M was known by B between D1 and D2.

One can prove that a message has been known for at least a certain amount of time. This can be done using a proof of sequential work or a (verifiable) delay function. The core idea is that the prover does a long (in wall clock time) computation on the message which proves that it must have been known to the prover for at least some time. These methods, however, are extremely inaccurate as one needs strong assumptions on how fast an adversary can do the computation. Using a blockchain or a centralized time-stamping server is probably more realistic. Proving that a message was not known at some time seems rather difficult.