¿Qué son los IDN y Punycode?

Un IDN (nombre de dominio internacionalizado) contiene caracteres que no son ASCII, como ñ, á, ü o 中. Punycode es la codificación que convierte ese nombre en la forma ASCII, que empieza por xn--, que el DNS guarda realmente.

El DNS se construyó para las letras de la a a la z, las cifras y el guion. Para admitir otras escrituras sin cambiar el software del DNS, IDNA define una conversión: cada etiqueta con caracteres no ASCII se normaliza y se codifica con Punycode, y se le añade el prefijo xn--. La forma Unicode (la etiqueta U) es la que lee la gente; la forma xn-- (la etiqueta A) es la que se registra, se consulta y se pone en los certificados.

Qué caracteres se permiten se decide en cada TLD: todo registro publica tablas IDN con los puntos de código permitidos, y muchos agrupan o bloquean las variantes que podrían confundirse entre sí. Así, un nombre con ñ o con tildes puede ser registrable bajo .es y .com, pero no bajo un TLD cuyas tablas no incluyan esas letras.

Como escrituras distintas contienen letras de aspecto parecido, los IDN se pueden usar de forma abusiva en ataques de homógrafos, en los que un nombre parece el de una marca conocida pero usa un carácter distinto. Por eso los navegadores muestran la forma xn-- cuando una etiqueta mezcla escrituras de manera sospechosa. El correo con dominios no ASCII tiene un soporte menos uniforme que la web, y conviene probarlo antes de depender de un IDN para el correo.

Ejemplo

bücher.example   →  xn--bcher-kva.example
çiçek.example    →  xn--iek-1lab.example

Compruébelo

IDN y Punycode: véalo en un dominio real.

Informe de dominio