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

Véase también 
 Nombre de dominio
 Lista de dominios de Internet
 Registro de dominios
 Mecanismos de extension de DNS
 Domainer
 Domain hack
 ICANN
 Uniform Resource Locator
 World Wide Web
 Página web
 Sitio web
 Sufijos nacionales de internet

Referencias

Enlaces externos 
 RFC 3454 (Stringprep)
 RFC 3490 (IDNA)
 RFC 3491 (Nameprep)
 RFC 3492 (Punycode)
 Sitio de información y discusión de Dominios IDN en Español, herramienta de conversión Unicode - Punycode y whois de dominios IDN
 Herramientas de prueba de Internet Mail Consortium IDNA (incluyen código fuente Perl)
 Correos electrónicos de IANA que explican porqué se utilizó el prefijo ACE
 GNU Libidn es una implementación de IDNA
 Listado de todas las aplicaciones que tienen implementado IDNA junto con un listado de SDK de tipo código libre
 Unicode Technical Report #36 - Security Considerations for the Implementation of Unicode and Related Technology
 ICANN Internationalized Domain Names
 ISC IDN-OSS project
 IDNSearch.Net Collaborative Search and Discovery of IDN in use today
 IDNcyclopedia 
 IDN Language Table Registry
 The Shmoo Group: IDN
 Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.0
 IDN News in One Place

Protocolos de Internet
Domain Name System
Internacionalización y localización