ietf
[Top] [All Lists]

Re: Last Call: <draft-ietf-lamps-eai-addresses-05.txt> (Internationalized Email Addresses in X.509 certificates) to Proposed Standard

2017-02-08 09:20:20
On Wed, Feb 08, 2017 at 06:46:41AM -0800, Wei Chuang wrote:

This draft breaks the existing name constraint restrictions, because
the same CA can now issue EE certificates with SmtpUtf8 addresses
outside the permitted rfc822Name tree.  Possibly including all-ASCII
addresses that just happen to be found in an SmtpUtf8 subjectAltName.

The problem is that the namespaces of the existing "rfc822Name"
constraints and the new "SmtpUtf8Name" constraints substantially
overlap leading to unexpected behaviour.

I wouldn't say unexpected.

It may well be expected as a consequence of decisions in the draft,
but it is objectively unwanted new behaviour for a name constrained
CA, to suddenly be able to issue certificates for previously excluded
addresses.  Software that allows such violations of previously
enforced constraints would IMHO be CVE-worthy.

The draft says the rfc822Name and SmtpUtf8Name
name constraints are applied separately, and don't affect other results
(see section 6). 

Yes, that's what I'm objecting to.  This is a design error in the
draft.  The namespaces are *not* separate, and orthogonal constraints
are not desirable.

It is followed by examples illustrating the behavior of
the overlap case.  The reason for separating the rfc822Name and
SmtpUtf8Name constraints was to minimize the domain A-label to U-label
conversions (and vice versa) (which I believe you're asking for too).

This is not a valid reason to violate the meaning of existing name
constraints.  It is not even clear why any conversions would be
required.  All that one needs to do is satisfy rfc822Name constraints
when no SmtpUtf8Name constraints are present in the same certificate.
When the domain is a non-ASCII domain, no permitted tree or excluded
sub-tree matches without conversion.  Thus the address is acceptable
only if the rfc822Name constraints contain only excluded sub-trees.

The only corner case is when an all-ASCII address (both localpart
and domainpart) for some reason appears in SmtpUtf8Name.  Such
names could match a full address in rfc822Name constraints (not
just a domainpart sub-tree).  This is why it is important to be
clear about whether all-ASCII names are valid in that context.

The assumption being made in the draft is that a SmtpUtf8Name
aware issuer will also be aware of the name constraints on that type.

The issuer may be SmtpUtf8 aware, but the parent CA that sets the
issuer's constraints (possibly some time ago in the past) may not.
The issuer should not be able to evade name constraints.

I therefore propose that:

    When validating an EE certificate that contains SmtpUtf8Name
    subjectAltName values, all such subjectAltName values must
    match any rfc822Name name constraints in each issuer certificate
    that does not also include SmtpUtf8Name constraints.

As mentioned the draft is trying to avoid this comparison.

This comparison MUST happen to avoid evasion of name constraints.
I see no need for "conversions" to implement these comparisons.
An issuer with only rfc822Name constraints present should only be
able to issue email altNames with ASCII domains that satisfy the
rfc822Name constraints.


    In
    particular, an issuer CA with only rfc822Name permitted subtrees
    cannot issue EE certificates with SmtpUtf8Name altNames bearing
    (non-ASCII) UTF-8 domains.

This could be added.

This needs to be added, and also language about how to match
SmtpUtf8Name elements against rfc822Name constraints in the
case that the domainpart is all-ASCII.

I don't recall seeing language in the draft that expains whether
addresses that are valid rfc822Name values can be instead presented
in the certificate as SmtpUtf8Name values, or whether any SmtpUtf8Name
value MUST contain either a non-ASCII localpart or a valid non-ASCII
UTF-8 domain.

This is mentioned in section 7 and says: "This document RECOMMENDS using
SmtpUtf8Name when local-part contains non-ASCII characters, and otherwise
rfc822Name."

This effectively makes all-ASCII names valid in SmtpUtf8Name, which
increases scope for implementation errors.  I would prefer that
the draft prohibit use of SmtpUtf8Name when rfc822Name is an option.

-- 
        Viktor.

<Prev in Thread] Current Thread [Next in Thread>