Gracias al Punycode es posible crear y utilizar dominios con caracteres especiales. Antes solo era posible crear nombres de dominio con letras del alfabeto latino, números del 0 al 9 y guiones. Sin embargo, si deseábamos registrar un nombre de dominio con nuestra letra como la «ñ», no era posible. Para permitir el uso de estos caracteres se creó el protocolo de nombres de dominio internacionalizados en aplicaciones (IDNA). Gracias a él es posible registrar dominios con cualquiera de los caracteres únicos.
En este articulo trataremos sobre el Punycode, un método de codificación estandarizado que permite asignar caracteres Unicode utilizando un conjunto de caracteres ASCII limitado, Vamos a ello.
Que es el Punycode
El Punycode fue estandarizado en 2003 por el Grupo de Trabajo de Ingeniería de Internet (IETF) como sintaxis para la codificación de nombres de dominio internacionalizados en aplicaciones (IDNA).
El IETF utiliza el término IDN para describir los nombres de dominio que, además de las letras del alfabeto latino, contienen caracteres especiales como diéresis, diacríticos o caracteres de otros alfabetos. Por tanto, no pueden ser procesados por protocolos básicos como el Sistema de Nombres de Dominio (DNS).
Un nombre de dominio como: centromedicoñaña está autorizado bajo el primer nivel desde la introducción de los IDN, mediante la codificación de caracteres que no son básicos. Muchos de los protocolos subyacentes a Internet se basan en la lengua inglesa escrita y por tanto, sólo admiten el limitado conjunto de caracteres ASCII.
Para garantizar la compatibilidad entre los IDN y los estándares de Internet más antiguos, el IETF prescribió la codificación de los nombres de dominios con caracteres especiales previamente autorizados y estandarizó un procedimiento correspondiente con el Punycode.
¿Cómo funciona la codificación con Punycode?
Punycode está definido por el IETF en el RFC 3492 como una posible aplicación de un algoritmo de codificación general llamado Bootstring. El algoritmo Bootstring permite mapear cadenas arbitrarias con una selección limitada de elementos. El desarrollo del método de codificación se basa en seis principios:
- Exhaustividad: cada cadena de caracteres puede vincularse a una cadena simplificada mediante bootstring.
- Unicidad: la asignación de la cadena de caracteres a la codificación de la tira de arranque correspondiente es única. Es posible asignar exactamente a cCada Punycode es equivalente a ASCII y viceversa.
- Reversibilidad: la codificación de la cadena de caracteres puede invertirse en cualquier momento sin pérdida de información.
- Eficiencia: la cadena codificada es, si es necesario, sólo un poco más larga que la cadena inicial.
- Simplicidad: Bootstring utiliza algoritmos de codificación y decodificación sencillos.
- Legibilidad: sólo se codifican los caracteres que no pueden representarse en el juego de caracteres de destino. Todos los demás caracteres permanecen inalterados.
Punycode especifica la cadena de arranque de acuerdo con los requisitos de los nombres de dominio internacionalizados. Esto debería permitir representar los caracteres Unicode en comparación con los caracteres básicos autorizados anteriormente.
Ilustración de codificación con Punycode
Veamos con el siguiente ejemplo
IDN: centromedicoñaña
El IDN centromedicoñaña contiene dos caracteres ñ, que no están incluidos en el conjunto de caracteres del nombre de dominio previamente autorizado. Por lo tanto, deben codificarse mediante un código Punycode para garantizar su compatibilidad.
Paso uno: el procedimiento de codificación prevé la normalización de la cadena de caracteres de salida. Todas las letras mayúsculas se sustituyen por minúsculas
Paso dos: se sustituyen todos los caracteres no básicos. Estos se añaden al nombre de dominio en forma codificada y separados por un guión.
Si se utiliza el método punycode para codificar las direcciones de Internet, cada cadena resultante recibe un prefijo ACE (abreviatura de ASCII Compatible Encoding):
Prefijo ACE: xn--
El prefijo ACE garantiza que los nombres de dominio que contienen guiones no sean malinterpretados como nombres de dominios con caracteres especiales.
En el caso de centromedicoñaña, esto se traduce en una codificación suliving:
ACE: xn--centromedicoaa-1nbb
La siguiente tabla ofrece un resumen de las diferentes variantes del procedimiento Punycode.
| IDN | Punycode | ACE |
|---|---|---|
| centromedicoñaña | xn--centromedicoaa-1nbb | xn--centromedicoaa-1nbb.com |
| gamasdigitales.com | gamasdigitales.com- | No use |
Observe el algoritmo subyacente al método punycode, que garantiza que ninguno de los nombres de dominio supere la longitud máxima de 63 caracteres a pesar de la conversión.
Los caracteres Oneicode no se convierten en caracteres ASCII durante la codificación. En su lugar, el algoritmo determina una cadena de caracteres que resulta de la distancia entre los caracteres borrados y la posición de los caracteres en la cadena de salida.
En el ejemplo anterior, la cadena de caracteres 44a6g indica que chteau-luc debe completarse con los caracteres Unicode â y e en las posiciones tercera y undécima.
Convertidores gratuitos de Punycode
Existen diferentes sitios web, donde se pueden encontrar convertidores de Punycode gratuitos para transferir los IDN a una representación compatible con ACII.
Para el espacio de nombres con un dominio de primer nivel, recomendamos la herramienta Punycoder.es Convierte los nombres de dominio internacionales de acuerdo con los estándares actuales de IDNA (RFC 5890 a 5894).
Punycode para los nombres de dominio en los emojis
No sólo los nombres de dominio internacionalizados, sino también los nombres de dominio emoji pueden realizarse mediante punycode. El requisito previo es que el respectivo dominio de primer nivel permita el uso de emojis y que el emoticono deseado se haya registrado en el estándar Unic.ode.
Actualmente, los siguientes TLD: ws, .tk, .to, .ml, .ga, .cf, .gq y .fm permiten el registro de nombres de dominio en emojis.
Los nombres de dominios con caracteres especiales en emoji se tratan técnicamente como punycode, pero en teoría deben presentarse al usuario como una combinación de texto y emoticonos.
Dominio emoji: i❤.ws
ACE: xn--i-7iq.ws
Si se introduce un dominio emoji en Firefox, Chrome, Safari, Edge u Opera, la barra de direcciones lo muestra con la cadena ACE.
¿Punycode como riesgo de seguridad?
Punycode se convierte en un riesgo de seguridad en los ataques de phishing homográfico. Se trata de ciberataques en los que los hackers utilizan la apariencia similar de diferentes caracteres para atraer a sus víctimas desprevenidos a sitios web falsos.
En lugar del carácter ASCII a con Unicode U + 0061, se utiliza el carácter cirílico а (U + 0430) – estos dos caracteres apenas pueden distinguirse a simple vista, pero son interpretados como caracteres diferentes por los navegadores web.
Lo que resulta especialmente desfavorable para los usuarios de Internet es el hecho de que ni siquiera los certificados ofrecen seguridad. Esto se debe a que los delincuentes registran certificados SSL válidos para las modernas campañas de phishing, que pretenden dar a estos sitios una apariencia de legitimidad.
Las versiones actuales de Chrome y Opera evitan este tipo de ataque de phishing mostrando la cadena ACE en lugar del dominio internacionalizado en los IDN que mezclan caracteres de diferentes conjuntos de caracteres. Internet Explorer y Microsoft Edge impiden completamente la llamada de los dominios correspondientes.






