[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [idn] Do we need ACE?




> As software following the current rules on what characters are
> allowed in a host name should reject queries and responses when
> an invalid host name is used, could we get this separation between
> old and new by just using UTF-8 in DNS?

I don't think this is a safe assumption, due to the fact that there are
likely to be many applications generating lookups for IDNs based on a
local encoding. Windows-1252, MacRoman, and other charsets that use the C1
codepoint space are able to generate byte sequences that look like UTF-8,
and it would be pretty difficult to test these sequences given that the
label length can be very small.

There's also the consideration that we need to know if an IDN is valid.
Just because an IDN shows up in UTF-8 doesn't mean that it has been
validated through nameprep and application-specific rules.

IOW, we need to reject malformed queries, especially those that look valid
but aren't. In order to do that, we have to tag the queries at the source.
There's no just no other way around it that I can see.

There's also an upside to using the extended label type tags, which is
that future generations can add more tags if they want to. If a UCS-3 CES
were to emerge for the unified 21-bit codepoint space and become
sufficiently popular, then that format can be added with another tag.

One other related point--we may want to encourage implementors to reject
legacy queries that contain eight-bit characters. This would force failure
with applications that are eight-bit "friendly" when they shouldn't be.
I've been looking through the RR types and so far I haven't come up with
anything that requires eight-bit names. I've only found some names that
don't comply with the LDH rules (SRV uses underscore, for example) but
they are still seven-bit ASCII.

-- 
Eric A. Hall                                        http://www.ehsco.com/
Internet Core Protocols          http://www.oreilly.com/catalog/coreprot/