Possible to sign with an expired certificate ?
Hi, i'm building an application that verifies digital signatures placed on a document. I can obtain all info about the certificate chain (valid, revoked, expired, and such).
But now i'm wondering if it is possible to sign a document with an expired signature. (one way or another) because if it is possible i'd have to build in a check that the document was signed with the signature when the certificate was valid (timestamping or somesuch)
thanks in advance.
Boran.
Yes, it is possible to sign a document with an an expired certificate.
> Yes, it is possible to sign a document with an an
> expired certificate.
Which is why your application should check.
You should also check whether the certificate has been issued by a trusted CA and whether it has been revoked. This is where the beauty of cryptography meets the real world and gets messy!
well those parts arent hard (revocation and such) that's handled by the libraries. it's just checking wether the document has been signed when the signature was valid that is very hard. because you have to include a trusted timestamp. and then you have to handle the inclusion of said timestamp.
> well those parts arent hard (revocation and such)
Are you sure..... ;-)
> it's just checking
> wether the document has been signed when the
> signature was valid that is very hard. because you
> have to include a trusted timestamp. and then you
> have to handle the inclusion of said timestamp.
The timestamp is included within the timestamp. So there's no issue? Checking the timestamp is easier than revocation.
> The timestamp is included within the timestamp. So> there's no issue? Checking the timestamp is easier> than revocation.The timestamp is included within the certificate
can you trust that timestamp ? I see no network traffic during signing (scanning with ethereal) so it's not contacting any time servers. this would mean that it uses the computer clock which can be set to any time you want. invalidating the timestamp check.
and yes the whole checking of the certificates is easy since i'm actually talking about a .Net project (1.1) and i'm using the capicom libraries.
but since MS doesnt even have a forum dedicated to security on msdn (which sais a lot about ms imho) i'm asking it here.
> can you trust that timestamp ?Yes, its inside the certificate.
if you want trusted timestamps (hard, in my opinion), bouncycastle has an implemention of the RFC3161 time-stamping protocol. You need to use a timestamping service,or set your own up.
> if you want trusted timestamps (hard, in my opinion)What's your definition of trusted timestamps?Surely if you trust the CA, then you are able to trust the certificate timestamps?
I'm talking about the timestamp placed at the moment of signing. to do a simple check of
issue date < moment of signing < expiration date.
and the question is if a signature can be placed when moment of signing > expiration date.
which I think is possible since no outgoing traffic means all you have to do is turn back your PC's clock.
and customizing the signing process is not possible. would invalidate trust. a third party developer has to do the signing (in this case it's handled by MS infopath)
Yes, I trust the timestamp on the certificate, but sometimes it is necessary to have a trusted timestamp on a signed document as well. For example, suppose a brokerage house guarantees that any trade will be executed within 300 seconds of its acceptance into the system. It may be that a signed record, together with a signed timestamp bound to this record, are what both parties agree to use to resolve any disputes.
It is usually adequate to come up with something much simpler, such as a logging transactions, perhaps with a nominally independent third-party.