[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Delta CRL processing



RFC 2459 section 5.2.4 contains the following requirement:

  "A CRL user constructing a locally held CRL from delta-CRLs MUST
  consider the constructed CRL incomplete and unusable if the CRLNumber
  of the received delta-CRL is more than one greater than the CRLnumber
  of the delta-CRL last processed."
  

Aside from being poorly specified (what happens the first time a
delta-CRL is used and there isn't one that was last processed?), the
requirement adds no security value.  But more importantly, it effectively
precludes the use of delta-CRLs to support near-realtime certificate
status checking.

Consider the following scenario:

1. A CA generates and posts to the distribution channel a full CRL every
  7 days.  The thisUpdate field is set to time T, and the nextUpdate
  field is set to time T + 7 days.

2. The CA generates and posts to a (probably different) distribution
  channel a delta CRL every 60 seconds.  The BaseCRLNumber refers to
  the most recent full CRL issued in step 1 at time T.  (To conform
  with another unnecessary RFC2459 requirement, the CA also "issues",
  but does not necessarily post, a full CRL every 60 seconds,
  incrementing CRLNumber each time.  These would be considered
  unscheduled updates, despite their being "issued" on a regular
  schedule. :-)  When I discussed the X.509 text with Hoyt a while
  back, he pointed out the useful distinction between issuing and
  distributing.  If a tree falls in an empty forest, is there a sound?
  If a CRL is issued but not distributed, does it exist? :-)

* A relying application validates a certificate, fetches the applicable
  base CRL for time T, and fetches the current delta CRL, say for time
  T + 13 hours 37 min.  A couple of hours later, it validates another
  cert, fetching the delta CRL for time T + 15 hours 45 min.  Since
  the base CRL is still valid, it doesn't need to be fetched again,
  saving the bandwidth of a year's worth of revocations.
  
In this scenario, the relying application gets revocation information
as fresh as its policy requires (24 hours, 4 hours, 15 min, or 1 min),
yet it only incurs the transmission cost of fetching full CRLs every 7
days.  The delta CRLs only contain up to a week's worth of revocations,
so they don't add much overhead to the validation process.  They could
either be fetched by the verifier(s) when needed, or fetched by the signer
and passed to the verifier(s) along with the signed info.

This scenario is, as far as I can tell, secure.  Yet it violates the
1-up rule cited above.

If the 1-up rule serves no security-enhancing purpose, can it be
scrapped when the PKIX profile goes to Draft?  If the rule does enhance
security, can someone describe the hole in this scenario?