3
$\begingroup$

I have been thinking about digitally signed documents (Word files and PDF files) and can not get over the fact about - how can I securely know when the file was signed?

Scenario: If the date of the signature is saved in the file that I am signing. The voucher for the date is me. However, if someone steals my private key, and I revoke my Certificate, the thief can easily create a PDF file with a false date and sign that with my revoked key. The document will appear as being signed at the time, when my Certificate hasn't been revoked yet.

The only way I can think of to implement the signature date safely is by sending my signature to a "trusted" time server, which timestamps my signature and signs it. So in fact - I need a digitally signed document which vouches about the time of my signature.

Does Adobe just take Computer time, or does it get time from the Adobe server, or does it receive an Adobe-signed vouch for time?

Is there another - simpler way?

$\endgroup$
  • 1
    $\begingroup$ Even sending your "signature to a 'trusted' time server, which timestamps" your "signature and signs it" would not necessarily be enough, since after learning your private key, it might be easy for the thief to find a new message for which that signature is valid. One could use forward-secure signatures. $\endgroup$ – user991 Sep 11 '14 at 0:28
  • $\begingroup$ Sending it to a "secure" time and location server (assuming that exists). In which case one would at least have an alibi. My question is though - how is this implemented today? $\endgroup$ – KrNeki Sep 11 '14 at 0:37
  • $\begingroup$ "Sending it to a 'secure' time and location server (assuming that exists).", would what? I believe most systems "just take Computer time". $\endgroup$ – user991 Sep 11 '14 at 0:41
  • $\begingroup$ I send my signature to a time-and-location server. This server returns a signed file, which includes my signature, GPS and time. If I can prove that I was not at that location at that time, the signature is not authentic (in court). $\endgroup$ – KrNeki Sep 11 '14 at 0:47
  • 1
    $\begingroup$ There are several Trusted timestamping schemes that exist, generally signing a combination of a hash of the data and the timestamp. $\endgroup$ – Hasturkun Sep 11 '14 at 11:42
3
$\begingroup$

You can prove that a document was signed after a certain date by including data that was not known to anyone before that date, such as stock market data.

You cannot prove that a document was signed before a certain date by purely cryptographic means. Information doesn't go stale, so when you show a signature, it could have been signed at any time.

You can prove that a document was signed before a certain date by non-cryptographic means. Showing the signed document to someone (a trusted third party) is an easy way to do that: if you trust that entity to vouch for having seen the signature at a certain date, then the signature has to be older. The third party doesn't need to see the document, only its signature (containing a hash of the document); if you need to prove that the document was signed, you can reveal the document later.

None of this is what you need, though. You would like to prove that a document was not signed before a certain date — the date when your private key was stolen. The thief could create a signature and pretend that the signature had been made a long time ago (but they will of course not be able to prove it: it would be your word against his).

One way to accomplish what you want is to require that any valid signature be “notarized”: the recipient must be instructed never to trust your signature alone as genuine, only your signature validated by a trusted third party (the notary), which would demonstrate the existence of the signature at the date it was seed by the notary.

$\endgroup$
  • $\begingroup$ You could add a sequence number to the authenticatedAttributes field of the signature, and make sure that each sequence number + signaturehash has been published or registered with a trusted party. That way it would be hard for anyone ( including you ) to claim that a given sequence number belongs to a different signature. $\endgroup$ – Willem Hengeveld Sep 11 '14 at 11:34
  • $\begingroup$ Point 1 in time: my signature is stolen. Point 2: I find out my signature is stolen and revoke my certificate. The examples seem to work only from the point 2 onwards. How about the time between Point 1 and Point 2? The solution for this would be that-the trusted notary would have to inform me somehow about every signature I create.This way I would know when someone is signing with my key and would reduce the time between the two points. (I am thinking P2P system ment for digital signatures - similar to Bitcoin). All of this works when, as Giles said, signature alone should not be trusted. $\endgroup$ – KrNeki Sep 11 '14 at 19:22
  • $\begingroup$ @KrNeki Any solution between point 1 and point 2 requires that you authenticate to the notary, so that the notary knows that it is indeed you who did the signing. You can't authenticate by signing a message, but you could provide a second authentication factor such as biometrics. This is logistically demanding since this essentially requires physical presence with the notary. $\endgroup$ – Gilles Sep 11 '14 at 21:12
  • $\begingroup$ I assumed that by "a notary" you ment some kind of a digital notary. I am trying to get rid of the notary, so using one would not help me. But I guess - similarly as Inkan stamping works in Japan, there must be a witness to the signing process in order for the document to be valid. $\endgroup$ – KrNeki Sep 11 '14 at 21:16
  • $\begingroup$ @KrNeki You can do that with a digital notary if at least some part of the notary is running in a tamper-resistant device in your possession. $\endgroup$ – Gilles Sep 11 '14 at 21:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.