Nombre de dominio internacionalizado
# Nombre de dominio internacionalizado

Un nombre de dominio internacionalizado o Internationalized Domain Name (IDN) es un nombre de dominio de Internet que (potencialmente) contiene caracteres no ASCII. Este tipo de dominios puede contener caracteres con acento diacrítico, como se requiere en muchos lenguajes europeos (entre ellos, el español), o caracteres de escrituras no latinas como la árabe y las chinas. Sin embargo, el estándar para nombres de dominio no permite tales caracteres, y la mayor parte del trabajo para elaborar una norma ha pasado por encontrar una forma de solucionar este tema, bien sea cambiando el estándar o acordando una manera de convertir los nombres de dominio internacionalizados en nombres de dominio en ASCII estándar mientras se mantenga la estabilidad del sistema de nombres de dominio.

El estándar IDN fue propuesto originalmente en 1998. Después de mucho debate y propuestas competidoras, un sistema llamado Internacionalización de Nombres de Dominio en Aplicaciones (Internationalizing Domain Names in Applications - IDNA) fue adoptado como el estándar elegido, y en el año 2005 empezó su presentación pública.

En IDNA, el término nombre de dominio IDN específicamente denota a cualquier nombre de dominio que consiste solamente en etiquetas en las que el algoritmo IDNA ToASCII puede ser exitosamente aplicado. ToASCII se basa en la codificación ASCII Punycode de cadenas Unicode normalizadas.

## Internacionalización de Nombres de Dominio en Aplicaciones (IDNA)

Es un mecanismo definido en el año 2003 para manejar nombres de dominio IDN que contienen caracteres no ASCII. Estos nombres de dominio no pueden ser manejados por la existente infraestructura de resolución de nombres y DNS. En lugar de rediseñar la infraestructura DNS existente, se decidió que los nombres de dominio con caracteres no-ASCII deben ser convertidos a una forma basada en ASCII por los navegadores web y otras aplicaciones de usuario; IDNA especifica cómo debe realizarse esta conversión.

IDNA fue diseñado para una máxima compatibilidad hacia atrás con el sistema DNS existente, el cual fue diseñado para ser usado con nombres utilizando solo un subconjunto de los caracteres ASCII existentes.

Una aplicación habilitada para IDNA es capaz de convertir entre ASCII restringido y representaciones no ASCII para un dominio, utilizando la forma ASCII en los casos donde se necesite (como el lookup DNS), pero que sea capaz de presentar la forma no ASCII de mejor lectura a los usuarios. Las aplicaciones que no soporten IDNA no serán capaces de manejar nombres de dominio con caracteres no ASCII, pero todavía serán capaces de acceder a tales dominios si les es dado el equivalente ASCII (normalmente más críptico).

ICANN presentó guías de planeación para el uso de IDNA en junio del 2004 y ya era posible registrar dominios .jp usando este sistema en julio de 2004. Muchos otros registradores de dominios de alto nivel comenzaron a aceptar registros en marzo de 2004.

Las primeras aplicaciones en soportar IDNA fueron Mozilla 1.4, Netscape 7.1 y Opera 7.11. Las versiones de Internet Explorer hasta la 6 requieren un archivo adicional (plug-in) para soportar IDNA. Internet Explorer 7 y posteriores admiten IDNA de forma nativa. Otros navegadores basados en versiones 6 o anteriores de Internet Explorer, tales como Avant Browser, tampoco admiten esta tecnología.

Ejemplos:

* Español: http://www.ñandú.cl
* Japonés: 日本語.jp, 読ませ大賞.jp, 日本レジストリサービス.jp.
* Chino simplificado: 北京大学.cn, 浙江大学.cn, 宜家.com.
* Chino tradicional: 中文.tw, 東華大學.tw, 重車地平線.tw
* Coreano: 한글.kr, 구글.kr.
* Sueco: stockholms.läns.museum
* Alemán: övv.at, stellenbörse.de, holzhäuser.biz
* Símbolos: ®.com, ©.com.
* Tamil: சினிமா.com
* Árabe: عربي.com, ايكيا.com.
* Griego: ουτοπία.δπθ.gr.
* Hebreo: שלום.com, ישראל.com.
* Hindi: खोज.com, भाषा.com.
* Ruso: доменные-имена.com, ИКЕА.com.
* Persia: وب.سمپاد.ایران.ir
* Tailandés: เกมส์.com, ก.com

## ToASCII y ToUnicode

La conversión entre las formas ASCII y no-ASCII de un nombre de dominio se realiza mediante algoritmos llamados ToASCII y ToUnicode. Estos algoritmos no se aplican a todo el nombre de dominio en su conjunto, sino a etiquetas individuales. Por ejemplo, si el nombre de dominio es www.ejemplo.com, entonces las etiquetas son www, ejemplo y com, y ToASCII o ToUnicode se aplicarían a cada uno ellos por separado.

Los detalles de estos dos algoritmos son complejos, y están especificados en los RFC enlazados al final de este artículo. A continuación se muestra una visión general de su comportamiento.

ToASCII deja sin ningún cambio cualquier etiqueta ASCII, pero actuará si la etiqueta no es utilizable para DNS. Si una etiqueta dada contiene al menos un carácter no ASCII, ToASCII aplicará el algoritmo Nameprep (el cual convierte la etiqueta a minúsculas y realiza otra normalización) y entonces se traducirá el resultado a ASCII usando Punycode antes de anteponer la cadena de cuatro caracteres "xn--". Esta cadena de cuatro caracteres se llama el prefijo ACE, donde ACE significa ASCII Compatible Encoding (Codificación Compatible ASCII), y se utiliza para distinguir las etiquetas codificadas en Punycode de las etiquetas ASCII ordinarias. Hay que notar que el algoritmo ToASCII puede fallar de muchas maneras; por ejemplo, la etiqueta final puede exceder el límite de 63 caracteres de DNS. Una etiqueta en el cual ToASCII falla, no puede ser utilizada en IDN.

ToUnicode revierte la acción de ToASCII, despojando el prefijo ACE y aplicando el algoritmo de decodificación Punycode. No revierte el procesado de Nameprep, debido a que es simplemente una normalización y es por naturaleza irreversible. Al contrario de ToASCII, ToUnicode siempre acierta, porque simplemente retorna la cadena original si la decodificación llegara a fallar. Esto significa que ToUnicode no tiene efecto en una cadena que no comienza con el prefijo ACE.

## Consideraciones por engaños

Debido a que IDN permite a los sitios de Internet utilizar nombres completos en Unicode, también es posible el registro de dominios que se parezcan a otros en su versión Unicode; no obstante, la versión ACE del dominio es diferente, lo cual conlleva a descubrir las diferencias. Este tipo de ataques no se deben a deficiencias técnicas en las especificaciones Unicode o IDNA, sino al hecho de que diferentes caracteres en diferentes lenguajes pueden parecer iguales, dependiendo de la fuente (tipo de letra) utilizada. Por ejemplo, el carácter Unicode U+0430 ("a" cirílica minúscula), puede parecer idéntico al carácter Unicode U+0061 ("a" latina minúscula, utilizada en el idioma español). Técnicamente, los caracteres que se ven parecidos son conocidos como homógrafos. La similitud solo se encuentra en la versión Unicode del nombre de dominio, ya que la versión ACE de los dominios es diferente. Por ejemplo, sabiendo que la primera "a" de pаypal.com es una "a" cirílica, la versión ACE del dominio es xn--pypal-4ve.com.

Estos ataques de engaños (spoofing) potencialmente exponen a usuarios a ataques de phishing.

## Historia de los dominios IDN

* 07/98: Asia Pacific Networking Group (también conocido como APSTAR) forma iDNS Working Group presidido por James Seng
* 1999: Primeras investigaciones sobre IDN en la National University of Singapore, Center for Internet Research
* 02/99: Lanzadas pruebas base de iDNS con la participación de CNNIC, JPNIC, KRNIC, TWNIC, THNIC, HKNIC y SGNIC
* 01/00: Se forma IETF IDN Working Group presidido por James Seng y Marc Blanchet
* 03/01: Se forma el ICANN Board IDN Working Group
* 11/01: Se forma el ICANN IDN Committee
* 03/03: Publicación de RFC 3454, RFC 3490, RFC 3491 y RFC 3492
* 06/03: Publicación de ICANN IDN Guidelines
* 05/04: Publicación de RFC 3743, Joint Engineering Team (JET) Guidelines for Internationalized Domain Names (IDN) Registration and Administration para chinos, japoneses y coreanos.

## Registradores DNS que se sabe han adoptado IDNA

* .at (1 de marzo de 2004)
* .ar (septiembre de 2008) Argentina
* .biz en español, alemán, danés, islandés, noruego y sueco.
* .br (2005) Brasil
* .bz (2005) Belice
* .com (2001) en todos los idiomas
* .cc (2004) Islas Cocos
* .ch (1 de marzo de 2004) Suiza
* .cl (21 de septiembre de 2005) Chile
* .cn (agosto de 2003) China
* .de (1 de marzo de 2004)
* .dk (2 de enero de 2004)
* .es: (2 de octubre de 2007), (á, à, é, è, í, ï, ó, ò, ú, ü, ñ, ç, l·l)
* .fi (1 de septiembre de 2005)
* .gr (4 de julio de 2005) Grecia. Para nombres griegos.
* .hu
* .info (19 de marzo de 2004) para nombres alemanes. (Desde octubre de 2006) En español, danés, húngaro, islandés, lituano, coreano y sueco.
* .jp (julio de 2003) Japón. Solo para nombre de dominio en japonés.
* .kr (agosto de 2003) Corea
* .lv (2004)
* .museum (20 de enero de 2004)
* .net (2001) En todos los idiomas
* .no (9 de febrero de 2004)
* .org (18 de enero de 2005) En alemán, danés, húngaro, islandés, coreano, lituano, sueco y polaco.
* .pe (8 de diciembre de 2007), Perú
* .pl (11 de septiembre de 2003)
* .pt (2005) Portugal
* .se (octubre de 2003)
* .tk (2005) Tokelau. Registrando en punycode
* .tv (2005) Tuvalu
* .ve (2006) Venezuela
* .ws (2006) Samoa
