On 12/1/09 19:26, Paul Hoffman wrote:
At 1:52 PM +0100 1/12/09, Ian G wrote:
These are word games. What is the definition of these words? If you look in
the RFCs, likely (I have not, please correct me if I am wrong)
A better idea would be for all of us to read them and point out where in the
document it says something.
OK, I did that, for revocation. See the copied snippets below, for
anyone who wants to quickly skim the bits I found.
For example, in the case of "expired", you are wrong. Nothing in RFC 5280 says
that expiration (or, more formally, the end of the certificate validity period) has
anything to do with the CPS.
I guess I didn't explain myself well enough. Here's the logic:
* RFC5280 is an implementation document and doesn't do
semantics much, if at all.
* It does not define the meaning of expiry or revocation.
* By _meaning_, I mean semantics, what outsiders should take
as the message being delivered, implying some hint as to
action.
* RFC5280 does suggest that they work together.
* (I conclude that) RFC5280 suggests that:
*revocation and out-of-validation have the same meaning*.
* But we still don't know what that meaning is.
* (see especially last three paras at bottom.)
* Because the purpose of certs is to do something with them,
for end-users, and that something is intended to be turned
on or off according to expiry and revocation, then I
conclude that the meaning MUST be available to end-users.
* RFC3647, section 4.4.9 says
"Revocation checking requirement for relying parties"
which ties revocation to reliance, within the CPS
* The CA typically ties reliance to an unrevoked and
unexpired cert.
* For sake of today's discussion, let's say the meaning is:
*you MUST NOT rely*
at least as an example of what it could be.
* In PKI concepts, reliance is defined in the CPS
* In CA/secure browsing, reliance is commonly in RPAs.
* I would conclude it should be in one of those two.
* In CAcert, which I audit, there is no exact definition,
but there is sufficient discussion that the meaning is
clear, there is a full stop to the end of any sentance.
Sorry for being so wordy, but this is just yet another example of where
the end-user was totally forgotten in the discussion of secure browsing.
iang
=======================RFC5280 selected snippets
"CAs are responsible for indicating the revocation status of the
certificates that they issue."
3.3. Revocation
"When a certificate is issued, it is expected to be in use for its
entire validity period. However, various circumstances may cause a
certificate to become invalid prior to the expiration of the validity
period. Such circumstances include change of name, change of
association between subject and CA (e.g., an employee terminates
employment with an organization), and compromise or suspected
compromise of the corresponding private key. Under such
circumstances, the CA needs to revoke the certificate.
" An entry MUST NOT be removed
from the CRL until it appears on one regularly scheduled CRL issued
beyond the revoked certificate's validity period.
*this above would make one of my comments wrong, but*
" Once the CA accepts a revocation report as
authentic and valid, any query to the on-line service will correctly
reflect the certificate validation impacts of the revocation.
" (f) revocation request: An authorized person advises a CA of an
abnormal situation requiring certificate revocation.
" This may be accomplished by expiration or
revocation of all CA certificates containing the public key used to
verify the signature on the certificate and discontinuing use of the
public key used to verify the signature on the certificate as a trust
anchor.
" If the DistributionPoint omits the reasons field, the CRL MUST
include revocation information for all reasons. This profile
RECOMMENDS against segmenting CRLs by reason code.
" A complete CRL lists all unexpired certificates, within its scope,
that have been revoked for one of the revocation reasons covered by
the CRL scope. A full and complete CRL lists all unexpired
certificates issued by a CA that have been revoked for any reason.
" The CRL issuer MAY also generate delta CRLs. A delta CRL only lists
those certificates, within its scope, whose revocation status has
changed since the issuance of a referenced complete CRL.
*this above would be more the spirit of unrevokation!*
" This profile defines one private Internet CRL extension but does not
define any private CRL entry extensions.
Environments with additional or special purpose requirements may
build on this profile or may replace it.
" revokedCertificates SEQUENCE OF SEQUENCE {
userCertificate CertificateSerialNumber,
revocationDate Time,
crlEntryExtensions Extensions OPTIONAL
-- if present, version MUST be v2
} OPTIONAL,
crlExtensions [0] EXPLICIT Extensions OPTIONAL
-- if present, version MUST be v2
}
" ......each entry on the revoked certificate
list is defined by a sequence of user certificate serial number,
revocation date, and optional CRL entry extensions.
" The revoked certificate list is optional to support the
case where a CA has not revoked any unexpired certificates that it
has issued.
" Additional information
may be supplied in CRL entry extensions; CRL entry extensions are
discussed in Section 5.3.
" (b) If the certificate is valid and was listed on the referenced
base CRL or any subsequent CRL with reason code
certificateHold, and the reason code certificateHold is
included in the scope of the CRL, list the certificate with
the reason code removeFromCRL.
*Ah, that's what I was thinking about.....*
" (c) If the certificate is revoked for a reason outside the scope
of the CRL, but the certificate was listed on the referenced
base CRL or any subsequent CRL with a reason code included in
the scope of this CRL, list the certificate as revoked but
omit the reason code.
(d) If the certificate is revoked for a reason outside the scope
of the CRL and the certificate was neither listed on the
referenced base CRL nor any subsequent CRL with a reason code
included in the scope of this CRL, do not list the
certificate on this CRL.
The status of a certificate is considered to have changed if it is
revoked (for any revocation reason, including certificateHold), if it
is released from hold, or if its revocation reason changes.
It is appropriate to list a certificate with reason code
removeFromCRL on a delta CRL even if the certificate was not on hold
in the referenced base CRL. If the certificate was placed on hold in
any CRL issued after the base but before this delta CRL and then
released from hold, it MUST be listed on the delta CRL with
revocation reason removeFromCRL.
A CRL issuer MAY optionally list a certificate on a delta CRL with
reason code removeFromCRL if the notAfter time specified in the
certificate precedes the thisUpdate time specified in the delta CRL
and the certificate was listed on the referenced base CRL or in any
CRL issued after the base but before this delta CRL.
" The reason codes associated with a distribution point MUST be
specified in onlySomeReasons. If onlySomeReasons does not appear,
the distribution point MUST contain revocations for all reason codes.
CAs may use CRL distribution points to partition the CRL on the basis
of compromise and routine revocation. In this case, the revocations
with reason code keyCompromise (1), cACompromise (2), and
aACompromise (8) appear in one distribution point, and the
revocations with other reason codes appear in another distribution
point.
" If a CRL includes an issuingDistributionPoint extension with
onlySomeReasons present, then every certificate in the scope of the
CRL that is revoked MUST be *assigned a revocation reason* other than
unspecified. The assigned revocation reason is used to determine on
which CRL(s) to list the revoked certificate, however, *there is no
requirement to include the reasonCode CRL entry extension* in the
corresponding CRL entry.
*my emphasis*
" 5.3.1. Reason Code
The reasonCode is a non-critical CRL entry extension that identifies
the reason for the certificate revocation. CRL issuers are strongly
encouraged to include meaningful reason codes in CRL entries;
however, the reason code CRL entry extension SHOULD be absent instead
of using the unspecified (0) reasonCode value.
The removeFromCRL (8) reasonCode value may only appear in delta CRLs
and indicates that a certificate is to be removed from a CRL because
either the certificate expired or was removed from hold. All other
reason codes may appear in any CRL and indicate that the specified
certificate should be considered revoked.
id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }
-- reasonCode ::= { CRLReason }
CRLReason ::= ENUMERATED {
unspecified (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
-- value 7 is not used
removeFromCRL (8),
privilegeWithdrawn (9),
aACompromise (10) }
"5.3.2. Invalidity Date
The invalidity date is a non-critical CRL entry extension that
provides the date on which it is known or suspected that the private
key was compromised or that the certificate otherwise became invalid.
This date may be earlier than the revocation date in the CRL entry,
which is the date at which the CA processed the revocation.
" 6.1.3. Basic Certificate Processing
The basic path processing actions to be performed for certificate i
(for all i in [1..n]) are listed below.
....
(3) At the current time, the certificate is not revoked.
....
If any of steps (a), (b), (c), or (f) fails, the procedure
terminates, returning a failure indication and an appropriate reason.
" The algorithm output is the revocation status of the certificate.
" (a) reasons_mask: This variable contains the set of revocation
reasons supported by the CRLs and delta CRLs processed so
far. The legal members of the set are the possible
revocation reason values minus unspecified: keyCompromise,
cACompromise, affiliationChanged, superseded,
cessationOfOperation, certificateHold, privilegeWithdrawn,
and aACompromise. The special value all-reasons is used to
denote the set of all legal members. This variable is
initialized to the empty set.
"8. Security Considerations
" If such a compromise is detected, all
certificates issued to the compromised CA MUST be revoked, preventing
services between its users and users of other CAs
" The availability and freshness of revocation information affects the
degree of assurance that ought to be placed in a certificate. While
certificates expire naturally, events may occur during its natural
lifetime that negate the binding between the subject and public key.
If revocation information is untimely or unavailable, the assurance
associated with the binding is clearly reduced. Relying parties
might not be able to process every critical extension that can appear
in a CRL. CAs SHOULD take extra care when making revocation
information available only through CRLs that contain critical
extensions, particularly if support for those extensions is not
mandated by this profile.
" Similarly, implementations
of the certification path validation mechanism described in Section 6
that omit revocation checking provide less assurance than those that
support it.
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto