Conversione Punycode (nomi di dominio internazionalizzati)

Converte nei due sensi i nomi di dominio internazionalizzati, che contengono caratteri non latini, e la loro codifica Punycode, compatibile con l'alfabeto ASCII.

A che cosa serve Punycode

Il DNS ha storicamente trattato soltanto ASCII. Eppure si volevano nomi di dominio con caratteri quali i kanji e i kana, sul modello di 日本語.jp, e Punycode (RFC 3492) fu ideato come ponte. Converte in modo reversibile una stringa Unicode in una stringa ASCII che comincia con xn--, rendendo così possibili i nomi di dominio internazionalizzati senza toccare il DNS esistente.

Che il risultato risulti illeggibile a una persona rientra nel disegno: 日本語.jp diventa xn--wgv71a119e.jp. I browser celano la forma convertita e mostrano nella barra degli indirizzi i caratteri originali, perciò di norma passa inosservato. Quello scarto d'aspetto, tuttavia, è anche una debolezza esposta all'abuso nel phishing: domini contraffatti costruiti con caratteri indistinguibili, come la «а» cirillica contro la «a» latina, hanno provocato danni reali. Questo strumento converte in entrambi i versi e tutto viene eseguito nel suo browser.

Come convertire

  1. Scelga il verso Selezioni da nome di dominio a Punycode, oppure da Punycode a nome di dominio.
  2. Inserisca il nome di dominio Lo inserisca per intero, dominio di primo livello compreso, come in 日本語.jp.
  3. Legga il risultato Ottiene la stringa convertita che comincia con xn--, oppure i caratteri originali.
  4. Confronti i due La forma ASCII le consente di verificare se vi si siano insinuati caratteri ingannevoli.

Consigli per sfruttarlo al meglio

  • Anche i nomi formati da più etichette, cioè da parti separate dal punto, vengono convertiti riconoscendo automaticamente ciascuna etichetta: quelle di soli caratteri ASCII restano invariate, mentre solo quelle che contengono caratteri non ASCII assumono il prefisso xn--.
  • Nella modalità dal nome di dominio al Punycode viene applicata la stessa pre-elaborazione di IDNA: le maiuscole diventano minuscole, le lettere e le cifre a larghezza piena vengono riportate alla larghezza normale, e i caratteri a larghezza piena «。» e «.» sono trattati anch'essi come separatori di etichetta. Per esempio, Bücher.de diventa xn--bcher-kva.de e 例え。テスト diventa xn--r8jz45g.xn--zckzah.
  • Nella modalità dal Punycode al nome di dominio vengono decodificate soltanto le etichette che iniziano con xn--, mentre le altre restano invariate.
  • La stessa logica di conversione si applica non solo ai nomi di dominio, ma anche alla parte che segue la chiocciola in un indirizzo di posta elettronica.
  • Digitando nella barra degli indirizzi un dominio internazionalizzato, la maggior parte dei browser lo converte internamente in Punycode prima di risolverlo nel sistema dei nomi di dominio.

Quando torna utile

Registrare o configurare un dominio internazionalizzato

I file di zona del DNS e i certificati del server richiedono talvolta la forma Punycode.

Verificare il mittente di un messaggio

Un nome visualizzato che pare legittimo può rivelarsi, una volta convertito, un dominio del tutto diverso. Casi del genere esistono davvero.

Leggere una stringa xn-- in un registro

Scopra a che cosa rimandi realmente una stringa xn-- comparsa nei registri di accesso o in un rapporto.

Convalidare un file di configurazione

Utile per accertare se un nome internazionalizzato possa essere scritto così com'è nella configurazione di nginx o Apache.

I termini di Punycode spiegati

Punycode
Lo schema che converte in modo reversibile una stringa Unicode in ASCII (RFC 3492). xn-- non fa parte dell'output del Punycode: è un prefisso che IDNA aggiunge quando il risultato viene usato in un nome di dominio.
Nome di dominio internazionalizzato
Un nome di dominio con caratteri fuori da ASCII. Internamente viene convertito in Punycode per attraversare il DNS.
xn--
Il prefisso che contrassegna un'etichetta come codificata in Punycode. È noto come prefisso ACE.
Etichetta
Ciascun elemento di un nome di dominio separato da punti. La conversione avviene etichetta per etichetta.
Attacco omografico
Costruire un dominio contraffatto con caratteri dall'aspetto simile. Convertire nella forma Punycode lo smaschera.
IDNA
L'insieme delle specifiche per trattare i nomi internazionalizzati nel DNS. La versione in uso è IDNA2008 (dall'RFC 5890 in poi).

Domande frequenti

Il Punycode, definito dalla RFC 3492, è la codifica che trasforma in una stringa di soli caratteri ASCII i nomi di dominio contenenti caratteri Unicode — giapponesi, cinesi, arabi e altri — così da renderli gestibili dal sistema dei nomi di dominio. Le etichette convertite ricevono il prefisso xn--.

Perché il sistema dei nomi di dominio fu progettato in origine per i soli caratteri ASCII e non può risolvere direttamente nomi che contengano caratteri di altri alfabeti o emoji. Convertendoli in stringhe ASCII, il Punycode permette di realizzare i nomi internazionalizzati sfruttando l'infrastruttura esistente senza modificarla.

È il cosiddetto prefisso di codifica compatibile con l'ASCII e segnala al sistema dei nomi di dominio e ai programmi che quell'etichetta è un nome internazionalizzato codificato in Punycode. Riconoscendolo, i browser lo decodificano nella stringa Unicode originaria e la mostrano all'utente.

Sì: è la tecnica di frode nota come attacco omografico sui nomi internazionalizzati. Sono stati segnalati casi di domini codificati con caratteri quasi indistinguibili — la «а» cirillica al posto della «a» latina — che si spacciano per domini legittimi. I principali browser adottano contromisure, per esempio mostrando nella barra degli indirizzi la forma Punycode, quella che inizia con xn--, quando rilevano combinazioni sospette.
Tool-kun

A proposito — come si è arrivati ai domini scritti in altri alfabeti

Il dibattito sui nomi di dominio internazionalizzati comincia nella seconda metà degli anni Novanta, ma la standardizzazione richiese molto tempo. Furono proposti più metodi per gestire i caratteri non ASCII senza modificare le fondamenta del sistema dei nomi, e alla fine si adottò l'approccio Punycode, standardizzato nel 2003 con la RFC 3492: la codifica e la decodifica avvengono a livello applicativo, sul lato client, mentre i server dei nomi restano invariati.

Il Punycode è stato definito nella RFC 3492, pubblicata nel marzo 2003. L'autore, Adam M. Costello dell'Università della California a Berkeley, vi definisce un algoritmo di uso generale chiamato Bootstring, che rappresenta qualsiasi stringa con un insieme ristretto di caratteri, e chiama Punycode la variante con i parametri scelti per i nomi di dominio. Come mostrano gli esempi di conversione della RFC 3492, privi di xn--, quel prefisso viene aggiunto da IDNA e non dal Punycode stesso. La RFC non spiega l'origine del nome Punycode.

Oggi sono registrati e in uso nomi di dominio nei più diversi alfabeti e persino con emoji, ma dietro le quinte avviene sempre questa conversione. Anche il bel dominio scritto in caratteri non latini che compare nella barra degli indirizzi viaggia, nel dialogo con i server dei nomi, come una prosaica stringa ASCII che comincia con xn--.