Subject: RE: 3280bis: CRL validation: treatment of critical CRL entry extensions

From: "Stefan Santesson" <[email-masked]>
Date: Mon, 11 Jul 2005 13:59:54 +0100

Denis,

Regarding criticality, the text is already changed in RFC 3280bis. It
would be useful if you could comment on the proposed resolution in RFC
3280bis instead.

The following is however false as David has pointed out in previous
mail:

<snip>
> The two sentences from page 59 from RFC 3280 would need to be
> corrected in the following way:
> 
> "The CRL issuer MUST assert the indirectCRL boolean, if the scope of
> the CRL includes certificates issued by *more than one certificate
> issuer*. In such a case, the certificate issuer responsible for each
> entry is indicated by the certificate issuer CRL entry extension
> (section 5.3.4)".

Following your text proposal I would not have to set the indirectCRL
Boolean in an indirect CRL if the scope of the CRL serves certificates
from only 1 CA. An indirect CRL may however (in most cases) be setup
this way. 

The current text is correct, yours is not.

Stefan Santesson
Program Manager, Standards Liaison
Windows Security
 
> -----Original Message-----
> From: [email-masked]
[mailto:[email-masked]]
> On Behalf Of Denis Pinkas
> Sent: den 11 juli 2005 13:33
> To: pkix
> Subject: 3280bis: CRL validation: treatment of critical CRL entry
> extensions
> 
> 
> 3280bis: CRL validation: treatment of critical CRL entry extensions
> 
> RFC 3280 states on page 60 :
> 
> " 5.3  CRL Entry Extensions
> 
>    [...]
> 
>    All CRL entry extensions used in this specification are
non-critical."
> 
> This is however untrue since RFC 3280 states on page 62 :
> 
> " 5.3.4  Certificate Issuer
> 
>    This CRL entry extension identifies the certificate issuer
associated
>    with an entry in [...] a CRL that has the indirectCRL indicator set
>    in its issuing distribution point extension.
> 
> [...]
> 
>    If used by conforming CRL issuers, this extension MUST always be
>    critical."
> 
> The text is unclear about what to do with a critical CRL entry
extension
> that is not recognized, and thus this needs to be clarified.
> 
> CRL entry extensions did not existed originally in CRL version v1 and
> could
> be ignored when parsing a CRL. When introducing CRL entry extensions,
the
> idea was the following: if a given CRL entry is found to be
"appropriate"
> THEN and only THEN there is the need to make sure that it contains no
> critical CRL entry extension that is not understood. If it does then
the
> CRL entry MUST be considered as invalid.
> 
> The problem is that, later on, a specific critical CRL entry extension
has
> been introduced: the Certificate Issuer CRL entry extension. That CRL
> entry
> extension is very special since its presence in a CRL entry extension
> earlier in the list of CRL entries modifies the meaning the CRL entry,
> even if it does not contain a CRL entry extension.
> 
> This problem was however addressed by RFC 3280 since RFC 3280
> states on page 59:
> 
> "The CRL issuer MUST assert the indirectCRL boolean, if the scope of
> the CRL includes certificates issued by authorities other than the
> CRL issuer.  The authority responsible for each entry is indicated
> by the certificate issuer CRL entry extension (section 5.3.4)".
> 
> These two sentences are within the same paragraph, just one after
> the other.
> 
> In the first sentence, the plural is used for "authorities" and thus
> the first sentence is NOT written as follows : "The CRL issuer MUST
> assert the indirectCRL boolean, if the scope of the CRL includes
> certificates issued by *an authority* other than the CRL issuer".
> 
> The two sentences from page 59 from RFC 3280 would need to be
> corrected in the following way:
> 
> "The CRL issuer MUST assert the indirectCRL boolean, if the scope of
> the CRL includes certificates issued by *more than one certificate
> issuer*. In such a case, the certificate issuer responsible for each
> entry is indicated by the certificate issuer CRL entry extension
> (section 5.3.4)".
> 
> These sentences indicate that, if the indirectCRL boolean is set to
> TRUE, then one or more certificate issuer CRL entry extensions are
> present.
> 
> This also means that if the IDP extension is not present or if the
> indirectCRL boolean is set to FALSE, then no certificate issuer CRL
> entry extension is present.
> 
> The indirectCRL boolean indicates the presence or absence of
> certificate issuer CRL entry extensions in the CRL.
> 
> It allows to perform an efficient checking of the CRL entries :
> 
>  -    If the indirectCRL boolean is set to TRUE, then the CRL entry
>       extensions from previous CRL entries MUST be checked to verify
>       whether a certificate issuer CRL entry extension is present.
> 
> -     If the IDP extension is not present or if the indirectCRL
boolean
>       is set to FALSE, then CRL entry extensions from every CRL entry
>       can ignored or skipped.
> 
> The core of the issue is about the following paragraph in section
> 6.3.3 on page 84 :
> 
>       (1)  If the DP includes cRLIssuer, then verify that the issuer
>       field in the complete CRL matches cRLIssuer in the DP and that
>       the complete CRL contains an issuing distribution point
>       extension with the indrectCRL boolean asserted.  Otherwise,
>       verify that the CRL issuer matches the certificate issuer.
> 
> BTW, there is a typo error where "indirectCRL" is typed
> "indrectCRL".
> 
> Note that the current text in section 6.3.3 from RFC 3280 does not
> handle the Certificate Issuer CRL entry extension, when present,
> which may lead to incorrect results.
> 
> When the DP includes the cRLIssuer field, verifying that *one value*
> from the issuer field in the complete CRL matches cRLIssuer in the
> DP is both necessary and sufficient.
> 
> There is no need to have the following insertion :
> 
>                                                       " and that
>          the complete CRL contains an issuing distribution point
>          extension with the indirectCRL boolean asserted ".
> 
> Denis
> 
> 
>