On 07/22/2011 11:58 PM, xxxxx@osr.com wrote:
ANY RFC compliant timestamp server will do.
Signtool likely does not care about whether the timestamp has a valid
certificate chain up to the trusted store. (And it does not need to, see
below.)
But Windows’ driver loading mechanism should care, and only accept a
timestamp that has an unbroken certificate chain up to a trusted root.
This could include a scenario where you run your own timestamp server
and have a certificate chain installed on your own companies’ clients
that trust that timestamp server and thus accept these timestamps.
But for any out-of-the-box Windows installation, there should only be a
few - e.g. GlobalSign and VeriSign - certificate chains present.
[Please note that very often you can’t check on your development/signing
machine if a certificate will be accepted by a “fresh” Windows
installation: Signtool imports e.g. cross-certificates locally during
signing. So on_the_signing_machine every cert needed for checking will
be present. (I had the case where a colleague could install but not load
a driver on Win7/64bit - and on my machine it “verified” successfully.)]
(a) signtool shouldn’t let you successfully complete the signing
process when a cert expires before the time/date indicated by the
timestamp server
Well, in my opinion in this case it would benice if Signtool would print
a warning that the certificate used for signing is expired.
But for the security discussion it is actually totally unimportant what
any Signtool will let you do or not !
=> If you want real security, your signature checking system must also
work if someone else writes their own signing tools.
It is solely the driver installation and load code that must check
properly if all certificate chains are “unbroken”.
(b) Windows shouldn’t load drivers that have expired certs and that
were signed by untrusted timestamp servers.
Windows should not load drivers that have expired certs. AND
(Windows should not load drivers that have expired certs) that (are
timestamped to have been signed before they were expired) by untrusted
timestamp servers.
I can understand if there is an exception to load not-timestamped
drivers before a trusted time source is available.
Otherwise a wrongly set system clock could prevent you from booting at
all. Checking the file datestamp also does not help, this too could have
been affected by a wrong clock setting.
(There should, however, be an Administrator setting (enforcable by
policy or whatever) that prevents expired drivers from loading when
there is no trusted time source available.)
But if a “trusted” timestamp is present and its time is AFTER the driver
certificate expiration date, then load must be rejected.
Otherwise the system is already compromised.