21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

cate as long as it still has its private key. For purposes of signing a CRLcontaining its<br />

own certificate, the CA’s compromised key can still be trusted. Unfortunately, given<br />

the poor state of CRLhandling in existing software in general, it is not too likely that<br />

this situation will be handled very well, if it is handled at all.<br />

A classic example of how poorly CRLs are supported is what happened in early 2001<br />

when VeriSign issued two class 3 code-signing certificates to Microsoft Corporation.<br />

The problem was that Microsoft never requested the certificates—someone claiming<br />

to represent Microsoft did. Given the process failure, VeriSign handled the situation<br />

in the appropriate manner and published the serial numbers of the certificates in a<br />

new CRL. Microsoft’s handling of the situation really demonstrated the flaws with<br />

CRLs. It quickly became clear that Microsoft’s software, while distributing Veri-<br />

Sign’s root certificates and using their services, did not check VeriSign’s CRLs.<br />

Microsoft issued a patch to deal with the problem of the revoked certificates, but the<br />

patch did nothing to fix the problem of their software not utilizing the CRLs at all; it<br />

simply special-cased the bad certificates. Had Microsoft’s software made proper use<br />

(or, arguably, any use at all) of CRLs, no patch would have been necessary and the<br />

problem would have ended with VeriSign’s publication of its CRL(minus the inherent<br />

window of vulnerability).<br />

It could be argued that if a major software company like Microsoft can’t handle<br />

CRLs properly, how can smaller software companies and individual software developers<br />

be expected to do so? While this argument may be faulty in a number of<br />

respects, it is still a question worth asking; the answer, at least for now, is not one<br />

that we would all like to hear. PKI is still relatively immature, and much work needs<br />

to be done to remedy not only the issues that we have discussed here, but also others<br />

that we leave as an exercise for the reader to explore. While CRLs may not be the<br />

ultimate answer to revoking a certificate, they are, for the time being, the most<br />

widely implemented means by which to do so. It is worth taking the time to ensure<br />

that your software is capable of dealing with the technology and provides for a reasonably<br />

safe and pleasant experience for your users.<br />

To complicate matters more, the standard CRLspecification has changed over time,<br />

and both the old format (Version 1) and the new format (Version 2) are still actively<br />

used. OpenSSLsupports both Version 1 and Version 2 CRLs, but there is much software<br />

still in common use that does not yet support Version 2, and certainly old legacy<br />

applications that are no longer being developed or supported never will, even<br />

though they continue to be used. The major addition that Version 2 brings to the<br />

table is extensions. The standard defines four extensions that are used primarily to<br />

indicate the following:<br />

• When a certificate was revoked<br />

• Why a certificate was revoked<br />

• How to handle a certificate that has been revoked<br />

• How to deal with indirect CRLs<br />

Understanding Public Key Infrastructure (PKI) | 509<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!