dealt with (if at all) in the version 2.0 guidelines but that ought
to be included in the policy framework without waiting for the
production and release of a document based on a "best practices"
model. The term "BCP" above does not necessarily refer to an IETF
consensus document.
The intention in November 2005 was for the recommended major revision
to be put to the ICANN Board prior to its meeting in Morocco (in late
June 2006), but for the changes to be collated incrementally and
appear in interim version 2.n releases of the guidelines. The IAB’s
understanding is that, while there has been some progress with this,
other issues relating to IDNs subsequently diverted much of the
energy that was intended to be devoted to the more extensive
treatment of the guidelines.
2. General Problems and Issues
This section interweaves problems and issues of several types. Each
subsection outlines something that is perceived to be a problem or
issue "with IDNs", therefore needing correction. Some of these
issues can be at least partially resolved by making changes to
elements of the IDNA protocol or tables. Others will exist as long
as people have expectations of IDNs that are inconsistent with the
basic DNS architecture. It is important to identify this entire
range of problems because users, registrants, and policy makers often
do not understand the protocol and other technical issues but only
the difference between what they believe happens or should happen and
what actually happens. As long as those differences exist, there
will be demands for functionality or policy changes for IDNs. Of
course, some of these demands will be less realistic than others, but
even the realistic ones should be understood in the same context as
the others.
Most of the issues that have been raised, and that are discussed in
this document, exist whether IDNA remains tied to Unicode 3.2 or
whether migration to new Unicode versions is contemplated. A
migration path is necessary to accommodate newly-coded scripts and to
permit the maximum number of languages and scripts to be represented
in domain names. However, the migration issues are largely separate
from those involving a single Unicode version or Version 3.2 in
particular, so they have been separated into this section and
Section 3.
2.1. User Conceptions, Local Character Sets, and Input issues
The labels of the DNS are just strings of characters that are not
inherently tied to a particular language. As mentioned briefly in
the Introduction, DNS labels that could not lexically be words in any
language are possible and indeed common. There appears to be no
reason to impose protocol restrictions on IDNs that would restrict
them more than all-ASCII hostname labels have been restricted. For
that reason, even describing DNS labels or strings of them as "names"
is something of a misnomer, one that has probably added to user
confusion about what to expect.
Ordinarily, people use "words" when they think of things and wish
others to think of them too, for example, "orange", "tree",
"restaurant" or "Acme Inc". Words are normally in a specific
language, such as English or Swedish. The character-string labels
supported by the DNS are, as suggested above, not inherently "words".
While it is useful, especially for mnemonic value or to identify
objects, for actual words to be used as DNS labels, other constraints
on the DNS make it impossible to guarantee that it will be possible
to represent every word in every language as a DNS label,
internationalized or not.
When writing or typing the label (or word), a script must be selected
and a charset must be picked for use with that script. The choice of
charset is typically not under the control of the user on a per-word
or per-document basis, but may depend on local input devices,
keyboard or terminal drivers, or other decisions made by operating
system or even hardware designers and implementers.
If that charset, or the local charset being used by the relevant
operating system or application software, is not Unicode, a further
conversion must be performed to produce Unicode. How often this is
an issue depends on estimates of how widely Unicode is deployed as
the native character set for hardware, operating systems, and
applications. Those estimates differ widely, but it should be noted
that, among other difficulties:
o ISO 8859 versions [ISO.8859.2003] and even national variations of
ISO 646 [ISO.646.1991], are still widely used in parts of Europe;
o code-table switching methods, typically based on the techniques of
ISO 2022 [ISO.2022.1986] are still in general use in many parts of
the world, especially in Japan with Shift-JIS and its variations;
and
o computing, systems, and communications in China tend to use one or
more of the national "GB" standards rather than native Unicode.
Additionally, not all charsets define their characters in the same
way and not all preexisting coding systems were incorporated into
Unicode without changes. Sometimes local distinctions were made that
Unicode does not make or vice versa. Consequently, conversion from
other systems to Unicode may potentially lose information.
The Unicode string that results from this processing -- processing
that is trivial in a Unicode-native system but that may be
significant in others -- is then used as input to IDNA.
2.2. Examples of Issues
While much of the discussion below is stated in terms of Unicode
codings and associated rules, the IAB believes that some of the
issues are actually not about the Unicode character set per se, but
about how distributed matching systems operate in reality, and about
what implications the distributed delayed search for stored data that
characterizes the DNS has on the mapping algorithms.
2.2.1. Language-Specific Character Matching
There are similar words that can be expressed in multiple languages.
Consider, for example, the name Torbjorn in Norwegian and Swedish.
In Norwegian it is spelled with the character U+00F8 (LATIN SMALL
LETTER O WITH STROKE) in the second syllable, while in Swedish it is
spelled with U+00F6 (LATIN SMALL LETTER O WITH DIAERESIS). Those
characters are not treated as equivalent according to the Unicode
Standard and its Annexes while most people speaking Swedish, Danish,
or Norwegian probably think they are equivalent.
It is neither possible nor desirable to make these characters
equivalent on a global basis. To do so would, for this example,
rationalize the situation in Sweden while causing considerable
confusion in Germany because the U+00F8 character is never used in
the German language. But the "variant" model introduced in [RFC3743]
and [RFC4290] can be used by a registry to prevent the worst
consequence of the possible confusion, by ensuring either that both
names are registered to the same party in a given domain or that one
of them is completely prohibited.
2.2.2. Multiple Scripts
There are languages in the world that can be expressed using multiple
scripts. For example, some Eastern European and Central Asian
languages can be expressed in either Cyrillic or Latin (see
Section 1.5.2) characters, or some African and Southeast Asian
languages can be expressed in either Arabic or Latin characters. A
few languages can even be written in three different scripts. In
other cases, the language is typically written in a combination of
scripts (e.g., Kanji, Kana, and Romaji for Japanese; Hangul and Hanji
for Korean). Because of this, the same word, in the same language,
can be expressed in different ways. For some languages, only a
single script is normally used to write a single word; for others,
mixed scripts are required; and, for still others, special
circumstances may dictate mixing scripts in labels although that is
not normally done for "words". For IDN purposes, these variations
make the definition of "script" extremely sensitive, especially since
ICANN is now recommending that it be used as the primary basis for
registry policies. However essential it may be to prohibit mixed-
script labels, additional policy nuance is required for "languages
with established orthographies and conventions that require the
commingled use of multiple scripts".
2.2.3. Normalization and Character Mappings
Unicode contains several different models for representing
characters. The Chinese (Han)-derived characters of the "CJK"
(Chinese, Japanese, and Korean) languages are "unified", i.e.,
characters with common derivation and similar appearances are
assigned to the same code point. European characters derived from a
Greek-Latin base are separated into separate code blocks for Latin,
Greek, and Cyrillic even when individual characters are identical in
both form and semantics. Separate code points based on font
differences alone are generally prohibited, but a large number of
characters for "mathematical" use have been assigned separate code
points even though they differ from base ASCII characters only by
font attributes such as "script", "bold", or "italic". Some
characters that often appear together are treated as typographical
digraphs with specific code points assigned to the combination,
others require that the two-character sequences be used, and still
others are available in both forms. Some Roman-derived letters that
were developed as decorated variations on the basic Latin letter
collection (e.g., by addition of diacritical marks) are assigned code
points as individual characters, others must be built up as two (or
more) character sequences using "combining characters".
Many of these differences result from the desire to maintain backward
compatibility while the standard evolved historically, and are hence
understandable. However, the DNS requires precise knowledge of which
codes and code sequences represent the same character and which ones
do not. Limiting the potential difficulties with confusable
characters (see Section 2.2.6) requires even more knowledge of which
characters might look alike in some fonts but not in others. These
variations make it difficult or impossible to apply a single set of
rules to all of Unicode and, in doing so, satisfy everyone and their
perceived needs. Instead, more or less complex mapping tables,
defined on a character-by-character basis, are required to
"normalize" different representations of the same character to a
single form so that matching is possible.
Unless normalization rules, such as those that underlie Nameprep, are
applied, characters that are essentially identical will not match in
the DNS, creating many opportunities for problems. The most common
of these problems is that, due to the processing applied (and
discussed above) before a word is represented as a Unicode string, a
single word can end up being expressed as several different Unicode
strings. Even if normalization rules are applied, some strings that
are considered identical by users will not compare equal. That
problem is discussed in more detail elsewhere in this document,
particularly in Section 3.2.1.
IDNA attempts to compensate for these problems by using a
normalization algorithm defined by the Unicode Consortium. This
algorithm can change a sequence of one or more Unicode characters to
another set of characters. One example is that the base character
U+0061 (LATIN SMALL LETTER A) followed by U+0308 (COMBINING
DIAERESIS) is changed to the single Unicode character U+00E4 (LATIN
SMALL LETTER A WITH DIAERESIS).
This Unicode normalization process accounts only for simple character
equivalences, not equivalences that are language or script dependent.
For example, as mentioned above, the characters U+00F8 (LATIN SMALL
LETTER O WITH STROKE) and U+00F6 (LATIN SMALL LETTER O WITH
DIAERESIS) are considered to match in Swedish (and some other
languages), but not for all languages that use either of the
characters. Having these characters be treated as equivalent in some
contexts and not in others requires decisions and mechanisms that, in
turn, depend much more on context than either IDNA or the Unicode
character-based normalization tables can provide.
Additional complications occur if the sequences are more complicated
or if an attacker is making a deliberate effort to confuse the
normalization process. For example, if the sequence U+0069 U+0307
(LATIN SMALL LETTER I followed by COMBINING DOT ABOVE) appears, the
Unicode Normalization Method known as NFKC maps it into U+00EF (LATIN
SMALL LETTER I WITH DIAERESIS), which is what one would predict. But
consider U+0131 U+0308 (LATIN SMALL LETTER DOTLESS I and COMBINING
DIAERESIS): is that the same character? Is U+0131 U+0307 U+0307
(dotless i and two combining dot-above characters) equivalent to
U+00EF or U+0069, or neither? NFKC does not appear to tell us, nor
does the definition of U+0307 appear to tell us what happens when it
is combined with other "symbol above" arrangements (unlike some of
the "accent above" combining characters, which more or less specify
kerning). Similar issues arise when U+00EF is combined with various
dot-above combining characters. Each of these questions provides
some opportunities for spoofing if different display implementations
interpret the rules in different ways.
If we leave Latin scripts and examine those based on Chinese
characters, we see there is also an absence of specific, lexigraphic,
rules for transformations between Traditional and Simplified Chinese.
Even if there were such rules, unification of Japanese and Korean
characters with Chinese ones would make it impossible to normalize
Traditional Chinese into Simplified Chinese ones without causing
problems in Japanese and Korean use of the same characters.
More generally, while some mappings, such as those between
precomposed Latin script characters and the equivalent multiple code
point composed character sequences, depend only on the characters
themselves, in many or most cases, such as the case with Swedish
above, the mapping is language or culturally dependent. There have
been discussions as to whether different canonicalization rules (in
addition to or instead of Unicode normalization) should be, or could
be, applied differently to different languages or scripts. The fact
that most scripts included in Unicode have been initially
incorporated by copying an existing standard more or less intact has
impact on the optimization of these algorithms and on forward
compatibility. Even if the language is known and language-specific
rules can be defined, dependencies on the language do not disappear.
Canonicalization operations are not possible unless they either
depend only on short sequences of text or have significant context
available that is not obvious from the text itself. DNS lookups and
many other operations do not have a way to capture and utilize the
language or other information that would be needed to provide that
context.
These variations in languages and in user perceptions of characters
make it difficult or impossible to provide uniform algorithms for
matching Unicode strings in a way that no end users are ever
surprised by the result. For closely-related scripts or characters,
surprises may even be frequent. However, because uniform algorithms
are required for mappings that are applied when names are looked up
in the DNS, the rules that are chosen will always represent an
approximation that will be more or less successful in minimizing
those user surprises. The current Nameprep and Stringprep algorithms
use mapping tables to "normalize" different representations of the
same text to a single form so that matching is possible.
More details on the creation of the normalization algorithms can be
found in the Unicode Specification and the associated Technical
Reports [UTR] and Annexes. Technical Report #36 [UTR36] and [UTR39]
are specifically related to the IDN discussion.
2.2.4. URLs in Printed Form
URLs and other identifiers appear, not only in electronic forms from
which they can (at least in principle) be accurately copied and
"pasted" but in printed forms from which the user must transcribe
them into the computer system. This is often known as the "side-of-
the-bus problem" because a particularly problematic version of it
requires that the user be able to observe and accurately remember a
URL that is quickly glimpsed in a transient form -- a billboard seen
while driving, a sign on the side of a passing vehicle, a television
advertisement that is not frequently repeated or on-screen for a long
time, and so on.
The difficulty, in short, is that two Unicode strings that are
actually different might look exactly the same, especially when there
is no time to study them. This is because, for example, some glyphs
in Cyrillic, Greek, and Latin do look the same, but have been
assigned different code points in Unicode. Worse, one needs to be
reasonably familiar with a script and how it is used to understand
how much characters can reasonably vary as the result of artistic
fonts and typography. For example, there are a few fonts for Latin
characters that are sufficiently highly ornamented that an observer
might easily confuse some of the characters with characters in Thai
script. Uppercase ITC Blackadder (a registered trademark of
International Typeface Corporation) and Curlz MT are two fairly
obvious examples; these fonts use loops at the end of serifs,
creating a resemblance to Thai (in some fonts) for some characters.
2.2.5. Bidirectional Text
Some scripts (and because of that some words in some languages) are
written not left to right, but right to left. And, to complicate
things, one might have something written in Arabic script right to
left that includes some characters that are read from left to right,
such as European-style digits. This implies that some texts might
have a mixed left-to-right AND right-to-left order (even though in
most implementations, and in IDNA, all texts have a major direction,
with the other as an exception).
IDNA permits the inclusion of European digits in a label that is
otherwise a sequence of right-to-left characters, but prohibits most
other mixed-directional (or bidirectional) strings. This prohibition
can cause other problems such as the rejection of some otherwise
linguistically and culturally sensible strings. As Unicode and
conventions for handling so-called bidirectional ("BIDI") strings
evolve, the prohibition in IDNA should be reviewed and reevaluated.
2.2.6. Confusable Character Issues
Similar-looking characters in identifiers can cause actual problems
on the Internet since they can result, deliberately or accidentally,
in people being directed to the wrong host or mailbox by believing
that they are typing, or clicking on, intended characters that are
different from those that actually appear in the domain name or
reference. See Section 4.1.3 for further discussion of this issue.
IDNs complicate these issues, not only by providing many additional
characters that look sufficiently alike to be potentially confused,
but also by raising new policy questions. For example, if a language
can be written in two different scripts, is a label constructed from
a word written in one script equivalent to a label constructed from
the same word written in the other script? Is the answer the same
for words in two different languages that translate into each other?
It is now generally understood that, in addition to the collision
problems of possibly equivalent words and hence labels, it is
possible to utilize characters that look alike -- "confusable"
characters -- to spoof names in order to mislead or defraud users.
That issue, driven by particular attacks such as those known as
"phishing", has introduced stronger requirements for registry efforts
to prevent problems than were previously generally recognized as
important.
One commonly-proposed approach is to have a registry establish
restrictions on the characters, and combinations of characters, it
will permit to be included in a string to be registered as a label.
Taking the Swedish top-level domain, .SE, as an example, a rule might
be adopted that the registry "only accepts registrations in Swedish,
using Latin script, and because of this, Unicode characters Latin-a,
-b, -c,...". But, because there is not a 1:1 mapping between country
and language, even a Country Code Top Level Domain (ccTLD) like .SE
might have to accept registrations in other languages. For example,
there may be a requirement for Finnish (the second most-used language
in Sweden). What rules and code points are then defined for Finnish?
Does it have special mappings that collide with those that are
defined for Swedish? And what does one do in countries that use more
than one script? (Finnish and Swedish use the same script.) In all
cases, the dispute will ultimately be about whether two strings are
the same (or confusingly similar) or not. That, in turn, will
generate a discussion of how one defines "what is the same" and "what
is similar enough to be a problem".
Another example arose recently that further illustrates the problem.
If one were to use Cyrillic characters to represent the country code
for Russia in a localized equivalent to the ccTLD label, the
characters themselves would be indistinguishable from the Latin
characters "P" and "Y" (in either lower- or uppercase) in most fonts.
We presume this might cause some consternation in Paraguay.
These difficulties can never be completely eliminated by algorithmic
means. Some of the problem can be addressed by appropriate tuning of
the protocols and their tables, other parts by registry actions to
reduce confusion and conflicts, and still other parts can be
addressed by careful design of user interfaces in application
programs. But, ultimately, some responsibility to avoid being
tricked or harmfully confused will rest with the user.
Another registry technique that has been extensively explored
involves looking at confusable characters and confusion between
complete labels, restricting the labels that can be registered based
on relationships to what is registered already. Registries that
adopt this approach might establish special mapping rules such as:
1. If you register something with code point A, domain names with B
instead of A will be blocked from registration by others (where B
is a character at a separate code point that has a confusingly
similar appearance to A).
2. If you register something with code point A, you also get domain
name with B instead of A.
These approaches are discussed in more detail for "CJK" characters in
RFC 3743 [RFC3743] and more generally in RFC 4290 [RFC4290].
2.2.7. The IESG Statement and IDNA issues
The issues above, at least as they were understood at the time,
provided the background for the IESG statement included in
Section 1.6.1 (which, in turn, was part of the basis for the initial
ICANN Guidelines) that a registry should have a policy about the
scripts, languages, code points and text directions for which
registrations will be accepted. While "accept all" might be an
acceptable policy, it implies there is also a dispute resolution
process that takes the problems listed above into account. This
process must be designed for dealing with all types of potential
disputes. For example, issues might arise between registrant and
registry over a decision by the registry on collisions with already
registered domain names and between registrant and trademark holder
(that a domain name infringes on a trademark). In both cases, the
parties disagreeing have different views on whether two strings are
"equivalent" or not. They may believe that a string that is not
allowed to be registered is actually different from one that is
already registered. Or they might believe that two strings are the
same, even though the rules adopted by the registry to prevent
confusion define them as two different domain names.
3. Migrating to New Versions of Unicode
3.1. Versions of Unicode
While opinions differ about how important the issues are in practice,
the use of Unicode and its supporting tables for IDNA appears to be
far more sensitive to subtle changes than it is in typical Unicode
applications. This may be, at least in part, because many other
applications are internally sensitive only to the appearance of
characters and not to their representation. Or those applications
may be able to take effective advantage of script, language, or
character class identification. The working group that developed
IDNA concluded that attempting to encode any ancillary character