Hi John,

Thanks for taking the time to provide feedback and my apologies for the delayed reply. Comments inline.

On 12/27/22 8:21 AM, John C Klensin wrote:
Valery,

Thanks.  In skimming back through this, I noticed several typos
and evidence of editorial carelessness.  The ones that might be
unclear are:

* In (3) "other local deviations and (claimed) translation
strategies" should have been "other local deviations and
(claimed) transition strategies"

* In (6) "IPvN, N > 6, out there, basing..." should have been
"IPvN, N > 6, out there, making..." or "IPvN, N > 6, out there,
defining...".

ACK

In addition, my note assumed, I hope correctly, that WG
participants who are working with this document understand that
an arbitrary string of Unicode code points does not qualify as a
U-label.  The latter requires all of the processing and validity
checking specified in the IDNA2008 documents.   If anyone did
not understand that, it was the reason for the "unrestricted
Unicode strings, or even U-labels" distinction in (8)... and you
do now.

Much appreciated.

--On Tuesday, December 27, 2022 15:31 +0300 Valery Smyslov
<[email protected]> wrote:

Hi,

below is an unofficial I18NDIR review of the draft,
performed by John Klensin (forwarded here with his permission).
Thanks to John for doing this review.

Regards,
Valery.

-----Original Message-----
From: John C Klensin [mailto:[email protected]]
Sent: Monday, December 26, 2022 9:53 PM
To: Valery Smyslov
Cc: [email protected];        ; [email protected]; Barry Leiba
Subject: Re: [I18ndir] I18NDIR active?

  (1) Given the importance of anyone intending to use a
certificate being absolutely certain that the certificate that
should apply is actually the certificate in hand, it seems to
me desirable that Section 4.1 more carefully examine anything
identified as "SHOULD" and comment on the circumstances in
which following that rule would be inappropriate and/or the
possible consequences of not applying it.

Taken literally, §4.1 does not mandate including *any* identifier in a certificate because all ID types are "SHOULD". We might consider saying "MUST include at least one identifier" because otherwise there's nothing to match against (although it seems unlikely that any real-world CA would issue such a certificate).

Point 1 states that the DNS-ID type is a baseline for interoperability, but even that can't be REQUIRED because it's legitimate for a certificate to be scoped to a particular application type via the SRV-ID or URI-ID type. We could qualify this SHOULD to reflect this reasoning.

Points 2 (SRV-ID) and 3 (URI-ID) are relevant only for application protocols that specify the use of these types. Often these types would supplement the DNS-ID, unless the certificate is meant to be scoped to only the protocol in question (which is not something that the CA might know).

Point 4 is discussed more fully in §7.4, which also points to RFC 9325 regarding security concerns and mitigations. (We might want to point more specifically to §3.8 and §3.9 of RFC 9325.)

Point 5 opens the door to "other application-specific identifiers". In RFC 6125 we stated more specifically that such identifiers were types defined before publication of RFC 4985. The example we used in RFC 6125 was XmppAddr, but that has since been deprecated. It's unclear to me how many such application-specific identifiers are still (or were ever) in use. We might want to further qualify the text here and bring back the further context about RFC 4985.

(2) The document makes several references to URIs, but only RFC
3986 appears to be referenced.  In the real world in which
certificates are established and used and in which differences
in specifications and practices often provide opportunities for
exploitation by would-be evildoers, there are at least two,
probably three, URI specifications (IETF/RFC3896, WHATWG, and
maybe W3C).  Each is treated as authoritative by some Internet
actors and they are not consistent with each other.  That
situation and its implications should be pointed out, at least
as a Security Consideration.

Hmm.

There's likely value in pointing out the existence of the URL specification maintained by the WHATWG at <https://url.spec.whatwg.org/>. However, providing a detailed analysis of the differences between RFC 3986 and that "living standard" (which would be necessary in order to fully document the implications of such differences) seems out of scope for a specification about certificates. Nevertheless Rich and I will take a closer look at what might be involved and report back to the UTA WG in this thread.

As to "maybe W3C", there's a plethora of pages about URLs and URIs on the W3C website, but most of them seem to point to either RFC 3986 or (eventually).

(3) Similarly, there are, in practice, at least two different
specifications for IDNs.  While the IETF considers it obsolete,
IDNA2003 is still referenced periodically and might constitute
another.  One of those, obviously, is as specified by RFC
5890ff.  Another is specified, with the claim that it is a
transition strategy but that has shown no signs in recent years
of being used that way rather than as an alternate spec, by the
Unicode Consortium as UTS#46 [4].  These specifications, and
other local deviations and (claimed) translation strategies,
are in wide use in different communities.  In particular, while
ICANN --and hence what is nominally permitted to be registered
in the DNS near the root of tree-- at least nominally conforms
to IDNA2008 (but has been unable to prevent some TLDs from
registering emoji as second-level domains), WHATWG (and hence
most or all browser vendors and implementers) have
specification written in terms of UTS#46. The same
considerations as in (2) above apply, only the
incompatibilities among the specs are much greater with emoji
in domain names being a striking difference although there are
many more subtle cases.  And, as in (2) this issue should at
least be a Security Consideration.

I fear you're right, and I also fear the scope of the work involved. As with (2) we'll need to take a closer look and report back.

(4) Section 6.3 strongly implies that there are two types of
domain names: the traditional, all-ASCII, variety known as the
"preferred name syntax"  in RFC 1034 Section 3.5 and IDNs.  But
it does not say that but, instead, points to RFC 1034 as a
whole.  RFC 1034 imposes no restrictions on what can be in a
the octets that make up a label (see, e.g., Section 11 of RFC
2181). If you mean that the labels of the domain names you are
considering must be IDNs, all-ASCII, or "preferred syntax" (the
last two are different), figure out a way to say that
explicitly.

I believe that RFC 6125 and now 6125bis have had in mind "preferred name syntax", not all-ASCII (whatever the latter might mean in practice since it is much less restrictive). Pointing specifically to §3.5 of RFC 1034 should help. (And of course as you note in (3) IDN is, in practice, not a unitary construct either.)

(5) AFAICT, the third paragraph of Section 6.3, describing IDN
matching, is correct.  You might want to say "before checking
the domain name or comparing it with others" but that is a nit.

Noted.

(6) Under 6.4, the draft says "The iPAddress field does not
include the IP version, so IPv4 addresses are distinguish from
IPv6 addresses only by their length (4 as opposed to 16
bytes)". I don't know if that can be fixed or if this document
would be the appropriate place to fix it, but, as long is
there are people, companies, governments, or other entities
out there with bright ideas about IPvN, N > 6, out there,
basing operations on this field conditional on a heuristic
that depends on length does not seem like a good idea.

As a general rule that's true, although here we are talking (somewhat informally, I might add) about a heuristic only for IPv4 vs. IPv6, not any arbitrary IPvN where N > 6 (or N != 4 or 6).

To be slightly more careful, we could say something like this:

  The iPAddress field does not include the IP version, so a
  helpful heuristic for implementors is to distinguish IPv4
  addresses from IPv6 addresses by their length.

And,
btw, the preferred term is usually "octets" rather than
"bytes".

True.

(7) Editorial nit: the first sentence of the penultimate
paragraph of 6.4 isn't one.

Yes, someone else already noted that, and we realized it should read:

  For an IP address that appears in a URI-ID, the "host" component
  of both the reference identity and the presented identifier must
  match.

(8)  If all of your processing (not just comparisons) and what
you allow to store in certificates is based on A-labels, then
I'm not sure what Section 7.2 means.  If you allow unrestricted
Unicode strings, or even U-labels,

§6.3 does say:

   If the DNS domain name portion of a reference identifier is an
   internationalized domain name, then the client MUST convert any
   U-labels [IDNA-DEFS] in the domain name to A-labels before checking
   the domain name.  In accordance with [IDNA-PROTO], A-labels MUST be
   compared as case-insensitive ASCII.  Each label MUST match in order
   for the domain names to be considered to match, except as
   supplemented by the rule about checking of wildcard labels given
   below.

This seemed the safest bet, since I am not sure if we can outlaw U-labels in certificates.

in labels in certificates,
then visual confusion by users is only one of many problems you
invite.

Indeed.

And, even then, note, e.g., that
     trøll ( \u0074\u0072\u00F8\u006C\u006C )
and the identical-appearing
     \u0074\u0072\u006F\u0078\u006C\u006C
generate different A-labels and are not a "visual confusion"
problem as described in the cited portions of RFC 5890.  UTR#36
(which you reference) and  UTS#39 [5], especially Section 4
(which the document does not reference and probably should)

Good point.

are
better in some ways, but basically point to the problems and
possible approaches.  In particular, implementing even the
"whole script" algorithm of UTS#39 Section 4.1 (and then 5.1)
require fairly deep understanding of whatever scripts might
appear in the characters of any particular DNS label.   That
does not quite rise to "impossible" but is certainly well in
the "infeasible" range, even for single-script labels, when all
possible IDN labels are considered.

Moreover, it seems highly unlikely that we could mandate such careful handling in relation to the toolchains and workflows for requesting, creating, and issuing certificates. And even if we could, the last line of defence would need to be the client software that tries to match the presented identifier(s) against the reference identifier(s).

Again, the above is based on a very superficial reading of the
document.  It is not an official review, is not a substitute
for one, and is almost certainly not complete.

Thanks very much for providing this feedback. Once we can figure out how to address some of it, I'm sure the document will be much improved.

Peter

_______________________________________________
Uta mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/uta

Reply via email to