Re: [Uta] Unofficial I18ndir review of draft-ietf-uta-rfc6125bis

Peter Saint-Andre <stpeter@stpeter.im> Thu, 12 January 2023 00:25 UTC

Return-Path: <stpeter@stpeter.im>
X-Original-To: uta@ietfa.amsl.com
Delivered-To: uta@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EB1B4C18F7F3; Wed, 11 Jan 2023 16:25:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.799
X-Spam-Level:
X-Spam-Status: No, score=-2.799 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=stpeter.im header.b="f23C5m2t"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="B1RUbRLk"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iZtAvHQhtrrR; Wed, 11 Jan 2023 16:25:08 -0800 (PST)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E9432C1782AC; Wed, 11 Jan 2023 16:25:07 -0800 (PST)
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id C36EF5C0148; Wed, 11 Jan 2023 19:25:06 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 11 Jan 2023 19:25:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stpeter.im; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1673483106; x= 1673569506; bh=+kX4hr3U2lNa5AEFh66nu1OxCss0AOrzkxN6sfkdLcA=; b=f 23C5m2tWKkCYg4sYY8cQQVFeO64rRHuwqGolo/hBiu97BpWxq5oK/EFHfzdizAgc qOw5p4hPmWIU355MOVgzXVjsHMyTUbSBfh44EXGdlPmrvb3i+6Dv8AK9gYJoabqr vboIEk3VkIChI4XhmBE9ZCrDaoG76a5py0+iTPwthczL04MMTu34DgfO7qvwacGU P+wkjMwn4zOtFU1gl6Gma3n+tUf216JxtJz2F4bhWbT7gO9Anrp9efbnuIMx1aK3 cOAvPtaVrXicaGhQ/7VdfGuu5ddMZgE26eyDNSEhnm/vMJi65DC0E6ha4K9iLiSw haRtMa7hgQe5HH2HpfO/g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1673483106; x= 1673569506; bh=+kX4hr3U2lNa5AEFh66nu1OxCss0AOrzkxN6sfkdLcA=; b=B 1RUbRLk2HURIxf+tamvbAbOIon+xoOT7PeNBa4ftzpMNHAOefiDORD6fgpH1jmvm o+kFXEDtKaUguklhQdXeksRztMEVF4RUE6DGkGT0SpqMwTjbeJxS3nAcaDwZEzio Q4jOEDJEtpB4Cf5XkBD7qfFqnXNIvhh8DYmc6fIIoeHs4lTxFGKHLBLBI7PZQsPK hSvKM67FCXJr6Q/lWunPkMWOKbpP++WteCf9H46K4QfIOaqlYsP2AEEEqT7aW4M8 mzB/BfiKE3Ik9+61RHGzwLStA09mDfjHRsaKzkAdd3BgNQ5YoSI1rx7EGmAQRG+l FZOULi642x+L12/kx3LjA==
X-ME-Sender: <xms:YlO_Y3HaeclnROEKiJvw2BNaL1_829ZO4491ZsWuZ7kqEClDvdyjeA> <xme:YlO_Y0WkRekig0Q3EHli_wZ6WUZMqOD7c-9QHSDljbkxAy1qxWXqObfZKE7sMHa6j ksbrP2M0xMnpXZ0Wg>
X-ME-Received: <xmr:YlO_Y5JHOSEx0nkMvuUi7CdQp_h8fTWdTMbNKEDyVy0blo5S6VZMQqFX8TScsDiA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrleehgddvfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepkfffgggfvfevfhfhufgjtgfgsehtke ertddtfeejnecuhfhrohhmpefrvghtvghrucfurghinhhtqdetnhgurhgvuceoshhtphgv thgvrhesshhtphgvthgvrhdrihhmqeenucggtffrrghtthgvrhhnpeefvdejveehudejhe fhjedtteejfffhvdejteetueevtdeivefgieduvdevudekudenucffohhmrghinhepfihh rghtfihgrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepshhtphgvthgvrhesshhtphgvthgvrhdrihhm
X-ME-Proxy: <xmx:YlO_Y1ERLHfzjkS5qHdSRcVTrg0dwJ0Fjgda58WYbWJ7ypXu428I7w> <xmx:YlO_Y9XpQcaFs1gA3TlIImDNqNwagstw5TXW8nrMZVH230vMDMbscA> <xmx:YlO_YwOKaGnXKscLJCCniKEx2kCTGARS4kGxPyk3VWQGTHmWRCwfYQ> <xmx:YlO_Y6h8TlJ8VPmlJUAt-qOY9i6L935wc_GKg5ynPwqNffNTOmPnog>
Feedback-ID: i24394279:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 11 Jan 2023 19:25:05 -0500 (EST)
Message-ID: <a4931dd0-fff5-7345-4f30-cffdaf9b8268@stpeter.im>
Date: Wed, 11 Jan 2023 17:25:04 -0700
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1
Content-Language: en-US
To: John C Klensin <john-ietf@jck.com>, uta@ietf.org
Cc: uta-chairs@ietf.org
References: <005b01d919ef$2c4c3410$84e49c30$@smyslov.net> <44A5714D55514EC75E1348FC@PSB>
From: Peter Saint-Andre <stpeter@stpeter.im>
In-Reply-To: <44A5714D55514EC75E1348FC@PSB>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/uta/13wmCfNyz800RYLhwtZ3KoreuN4>
Subject: Re: [Uta] Unofficial I18ndir review of draft-ietf-uta-rfc6125bis
X-BeenThere: uta@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: UTA working group mailing list <uta.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/uta>, <mailto:uta-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/uta/>
List-Post: <mailto:uta@ietf.org>
List-Help: <mailto:uta-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/uta>, <mailto:uta-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Jan 2023 00:25:13 -0000

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
> <valery@smyslov.net> 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:john-ietf@jck.com]
>> Sent: Monday, December 26, 2022 9:53 PM
>> To: Valery Smyslov
>> Cc: uta-chairs@ietf.org; 	; art-ads@ietf.org; 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