xxxxx@osr.com wrote:
We’re confusing certificate validity and timestamp here.
But, in any case, you want J-Random-Big-Hardware-Vendor who supplies your NIC driver to force you to update your NIC driver every year because their cert expires annually? That’s positively HIDEOUS. This is not how the program is supposed to work. Never was.
It IS supposed to work exactly that way, **IF**
J-Random-Big-Hardware-Vendor didn’t use a validated timestamp when it
signed the driver. The evidence suggests it DOES work exactly that way
(modulo the hack described a couple of hours ago).
Note that the cert expiration data in this case has nothing to do with timestamping the driver.
Of course it does! It has EVERYTHING to do with the timestamp! That’s
the point I’m trying to make. I don’t understand where I’ve gone wrong
in my descriptions. I will try again.
Here are all of the possible combinations.
* I sign my driver with an unexpired certificate and no timestamp
This driver should load successfully until the expiration date. After
that, it should fail to load, because the (now expired) certificate is
invalid. The client could set the clock back on his system to make it
load again.
* I sign my driver with an expired certificate and no timestamp
This driver should be useless, exactly like the first case above after
the expiration date has passed.
* I sign my driver with an unexpired certificate with a timestamp
This driver should load successfully, forever. The client system can
decide whether it trusts the timestamp. If it does, it can compare the
timestamp time with the certificate time, and learn that the package was
signed while the certificate was valid, just as God intended. Eternal
happiness.
* I sign my driver with an expired certificate with a timestamp
A good argument can be made that signtool should forbid this
combination. It has enough knowledge to do so. Given that it does not,
the client system CERTAINLY has enough information. It can decide
whether it trusts the timestamp. Assuming it does, it should be
comparing the timestamp time with the certificate time, and will learn
that the package was signed after the expiration. Thus, the signature
is invalid.
SO now I am once again not sure what we’re talking about. I *thought* you were talking about being able to SIGN drivers with an expired cert, which I indicated is not possible to prevent, given that you can sign drivers off line.
Wrong. It is not possible to sign a driver WITH A VALID TIMESTAMP while
off line. Since a driver package signed without a timestamp is a
ticking timebomb, which will cease to load once the certificate expires,
I would argue that your statement is false.
Now, I hear you saying you don’t want WINDOWS to load drivers, where the cert used to sign the driver has expired. That would be very bad for legacy hardware, at the VERY least.
This IS how it works. We’ve seen it.
You continue to want to disconnect the signature from the timestamp.
You can’t do that. They are deeply entwined. The timestamp validates
the certificate. The only way to make an eternally valid driver package
is to sign it with a valid certificate and a timestamp. If you sign
without a timestamp, the driver will load today, but will fail to load
after the certificate expires. This HAPPENS.
If not, what’s the point of the timestamp?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.