Kyle Hamilton wrote, On 2008-06-05 07:46:
> I must also point out something:
> 
> NSS (at least up until 2004 -- I don't know if this has been changed,
> but the MoFo position espoused by I believe Nelson and Frank was that
> it wouldn't change) doesn't rely on any of the X.509v3 certificate
> fields of embedded trust anchors when figuring out whether to extend
> trust.  

The statement that "NSS ... doesn't rely on *any* of the X.509v3 certificate
fields of embedded trust anchors when figuring out whether to extend
trust" just isn't true, and never has been.  I don't recall absolutely
everything I've ever written on the subject, but I'm pretty certain I
would not have written something about it that I knew to be untrue.

However, if you replace "any" with "some" in that statement, it is true.
In NSS, certs may be marked as trust anchors for particular usages (EKUs).
In all versions of NSS up through NSS 3.11.x, marking a certificate as a
trust anchor for a particular EKU causes SOME aspects of the cert itself to
be overridden when checking a chain's validity for that usage.  These
include:

- The signature on the trust anchor cert is ignored.

- The absence of a Basic Constraints extension is treated as if the
extension was present and shows that the cert is a CA and that the path
length is unlimited.  However, if the Basic Constraints extension is
present, its values are honored as-is.  A cert whose basic constraints
extension is present and says it is NOT a CA certificate cannot be a trust
anchor even if marked as such.

- These extensions are ignored (overridden) in the marked trust anchor cert
  - Key Usage (KU)
  - Extended Key Usage (EKU)
  - Name Constraints

  That is, trust anchors are valid for all key usages and for all name
  spaces, for the Extended Key Usage (or usages) for which it was marked
  trusted.

> Thus, changing it won't have any practical value anyway.

By "it", I believe you are referring to the expiration date of the cert.
The Validity Period of a cert is never overridden.

> (The argument was that X.509 makes a good container format for
> distributing trust anchors -- the public keys -- along with display
> metadata, but that the trust anchor itself could be distributed
> separately from the X.509 container and thus should not be subject to
> any policy statements included in that container.  Which didn't make
> any sense to me at the time, and still doesn't -- since that container
> is signed by that key anyway, and I would expect it to adhere to the
> CPS espoused by that key -- but that's how it was explained.)

I recall a long discussion on this list in which certain people observed
(or opined) that the cert path validation algorithm defined in RFC 3280
has the characteristics you describe above.  That is, the claim was made
that RFC 3280's algorithm does not require a trust anchor to be anything
more than a public key, and does not impose any checks on it for validity
dates, key usages, extended keys usages, name constraints, etc. etc.
In other words, the claim was that RFC 3280 considers a trust anchor to
be absolutely trusted in all respects for all purposes at all times.
(Put another way, the criteria for selection of a trust anchor are outside
the scope of the algorithms defined in RFC 3280, and any such criteria
have already been applied to the trust anchor before the algorithm defined
in RFC 3280 begins.)

The above views were used as the basis for a claim that the scheme used
in Mozilla (and other products) of having multiple self-signed CA certs
and using them all as trust anchors was non-conformant to the RFC.  One
writer seemed to believe that, to conform to the RFC, it would be
necessary for the mozilla clients to have a single trust anchor key, and
for Mozilla (or its clients) to actually issue certificates,
cross-certifying the {subject name, key} pairs that appear in the root
certificates that Mozilla clients now mark as individual trust anchors
with trust flags.

I recall writing that the scheme that NSS now uses, with a set of root CA
certs marked with trust flags, is equivalent to the cross-certification
scheme that the writer wanted, and that the RFC allows any scheme that is
equivalent and produces the same results.  I gather that the writer did
not accept that claim of equivalence, but never explained why.

/Nelson
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to