ietf
[Top] [All Lists]

RE: draft-santesson-tls-ume Last Call comment

2006-03-26 13:49:38
First, I think much of my concern is a due to having no clue
what a "user principal name" is in the context of this draft.
It seems to be some identifier used in some directory service.
The only clue given in the document is that it is a "name form
defined by Microsoft".  It is odd that there is no reference,
not even an informative one, to this definition.

As I am lacking clue, I doubt I can offer appropriate text provding
the (necessary) clue that independent developers will need to
produce an interoperable implementation.   But I will, nevertheless,
try in hopes it help you and other better understand my concerns.
It will likely need to be reworked by the I-D authors based upon
their understanding of what a UPN is. 

At 08:47 AM 3/22/2006, Russ Housley wrote:
Kurt:

Okay.  I think I get your point.  I'll try one more time, but if that does not 
satisfy you, then you will have to respond with proposed text.  I'm trying to 
address Pasi's comment too.

Based on updates from a previous comment, the document will say:

  The domain_name parameter, when specified, SHALL contain a domain
  name in the "preferred name syntax," as specified by RFC 1123.

I would suggest instead:
   The domain_name parameter, when specified, provides a DNS
   [RFC1034][RFC2181] host name [RFC1123] represented as an ASCII
   [ASCII] character string conforming to the <domain> production
   provided in Section 2.1 of [draft-zeilenga-ldap-cosine].

   It is also noted that applications supporting Internationalized
   Domain Names SHALL use the ToASCII method [RFC3490] to produce
   <label> components of this <domain> production.

I think that this resolves your concern about the encoding of domain_name.

I propose the following text to handle the same concern for 
user_principal_name:

  The user_principal_name parameter, when specified, SHALL contain
  an Unicode UPN, encoded as a UTF-8 string.

Now, for the rest:

  This document does not specify how the server stores the
  user_principal_name, or how exactly it might be used to locate a
  certificate.  For instance, it might be appropriate to do a
  case-insensitive lookup.  It is RECOMMENDED that the server
  processes the user_principal_name with a stringprep profile
  [STRINGPREP] appropriate for the identity in question, such as
  Nameprep [NAMEPREP] for the portion domain portion of UPN
  and SASLprep [SASLPREP] for the user portion of the UPN.

I note that SASLprep is case-insensitive and hence may not
be appropriate for the user portion of a UPN.  I note that
Nameprep has to be applied component wise.  I also think it
odd to allow both toUnicode and toASCII domain component
forms on the wire.  The specification should choice one or
the other (I recommend the latter).

However, based in part with off line discussions with Stefan,
I suggest.

   This document does not detail the syntax or semantics of
   a User Principal Name beyond that it is a string of UTF-8
   encoded Unicode characters (with no required normalization)
   where at least of these characters is the COMMERCIAL AT
   ("@" U+0040) character.  The syntax and semantics of User
   Principal are application specific.  It is expected that
   applications calling for the use of this extension detail
   these syntax and semantics.

I note that I believe independent developers have near-zero
chance of producing an interoperable implementation of this
I-D (as is, or as modified by the various suggestions).  The
developer, it seems, has to depend on knowledge gained outside
of this I-D.

Regards, Kurt


Russ


At 10:04 AM 3/22/2006, Kurt D. Zeilenga wrote:
At 12:03 AM 3/22/2006, Russ Housley wrote:
Kurt:

Would text like the following (which is largely stolen from 
draft-ietf-tls-psk) solve your concern:

No.  While the language does address part of the question:
       how/where canonical of the user_principal_name
     string is performed?
it neither addresses this question:
       how/where canonical of the domain_name
     string is performed?
nor address the question:
       what character set/encoding is used on the wire in
       transferring these character strings?

I also suspect that the selection of SASLprep here, which
is intended to be used for simple usernames and passwords,
is appropriate for all of the user_principal_name string.
My understanding is that the user_principal_name is
composed of both a simple username part and a domain
part.  Components of the latter likely should instead
be prepared by nameprep (if allowed to carry IDNA
components).   Also, as the user part of the
user_principal_name is, it appears from casual
examination of various MS documents, to be
case insensitive, SASLprep should not be used.

Kurt

This document does not specify how the server stores the 
user_principal_name, or how exactly it might be used to locate a 
certificate.  For instance, it might be appropriate to do a case-insensitive 
lookup.  It is RECOMMENDED that the server processes the user_principal_name 
with a stringprep profile [STRINGPREP] appropriate for the identity in 
question, such as SASLprep [SASLPREP].

Russ

At 12:19 PM 3/21/2006, Kurt D. Zeilenga wrote:
At 11:06 AM 3/21/2006, Stefan Santesson wrote:
Kurt,

I've spent some time over this topic with Russ Housley and Paul Hoffman
here at the IETF and the conclusion is that we should not specify any
granular encoding or matching rules for the hints.

The client's use of the name hint requires the client to know its
account name and as such the client will also know in what form the
server needs it.

What about character set/encoding?

- Kurt

The client should never send the name hint in a way where the server
needs to process it in order to map the hint to an account.

There reference will be fixed (or removed).

Stefan Santesson
Program Manager, Standards Liaison
Windows Security


-----Original Message-----
From: Kurt D. Zeilenga [mailto:Kurt(_at_)OpenLDAP(_dot_)org]
Sent: den 7 mars 2006 18:35
To: ietf(_at_)ietf(_dot_)org
Subject: draft-santesson-tls-ume Last Call comment

I note the IETF last call was issued for rev. 2.  That
revision no longer exists, hence I reviewed rev. 3.

This document specification of a "User Principal Name",
I believe, is inadequate.

The I-D indicates that a user_principal_name is a sequence of
0 to 65535 bytes in the form of user(_at_)domain(_dot_)  However,
such a form implies the value is a character string,
but there is no mention of what character set/encoding
is used here.  I would think interoperability
requires both client and server to have a common
understand of what character set/encoding is to
be used.  Additionally, there is no discussion
of UPN matching.  Are byte sequences that differ
only due to use of different Unicode normalizations
to be consider the same or differ?  Are values
case sensitive or not?  etc..

The domain_name field suffers not only from the
above problem, but is flawed due to use of the
outdated "preferred name syntax" of RFC 1034.
This syntax doesn't allow domains such as
123.example.  The text should likely reference
the RFC 1123 which updates the "preferred name
syntax" for naming hosts.

Additionally, no mention of how International
domain names (IDNs) are to be handled.

I recommend ABNF be used to detail the syntax
of each of these fields and that the I-D detail
how values of these fields are to be compared.
Additionally, the I-D should discuss how IDNs
are to be handled.
-- Kurt


_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www1.ietf.org/mailman/listinfo/ietf


_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www1.ietf.org/mailman/listinfo/ietf


_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www1.ietf.org/mailman/listinfo/ietf


_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www1.ietf.org/mailman/listinfo/ietf

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