Convertisseur Punycode (noms de domaine internationalisés)
Convertit les noms de domaine internationalisés (IDN) contenant des caractères non ASCII, comme le japonais, vers et depuis le Punycode (un encodage compatible ASCII).
À quoi sert Punycode
Le DNS n'a historiquement traité que l'ASCII. On voulait pourtant des noms de domaine comportant **des caractères tels que les kanji et les kana**, à l'image de 日本語.jp, et Punycode (RFC 3492) a été conçu comme passerelle. Il convertit de façon réversible une chaîne Unicode en une chaîne ASCII commençant par `xn--`, rendant ainsi possibles les noms de domaine internationalisés sans toucher au DNS existant.
Que le résultat soit illisible pour un humain relève du fonctionnement prévu : 日本語.jp devient `xn--wgv71a119e.jp`. **Les navigateurs masquent la forme convertie et affichent les caractères d'origine dans la barre d'adresse**, si bien que cela passe d'ordinaire inaperçu. Cet écart d'apparence **constitue toutefois une faiblesse exploitable par l'hameçonnage** : des domaines contrefaits bâtis sur des caractères indiscernables, tel le « а » cyrillique face au « a » latin, ont causé de réels dommages. Cet outil convertit dans les deux sens et **tout s'exécute dans votre navigateur.**
Comment convertir
- Choisissez le sens Sélectionnez nom de domaine vers Punycode, ou Punycode vers nom de domaine.
- Saisissez le nom de domaine Saisissez-le en entier, domaine de premier niveau compris, comme dans 日本語.jp.
- Lisez le résultat Vous obtenez la chaîne convertie commençant par `xn--`, ou les caractères d'origine.
- Comparez les deux La forme ASCII permet de vérifier **si des caractères trompeurs s'y sont glissés.**
Astuces pour en tirer le meilleur parti
- Les noms de domaine composés de plusieurs étiquettes (parties séparées par `.`) sont eux aussi traités automatiquement étiquette par étiquette : celles qui ne contiennent que des caractères ASCII restent inchangées, et seules celles contenant des caractères non ASCII sont converties avec le préfixe `xn--`.
- En mode « Punycode → Nom de domaine », seules les étiquettes comportant le préfixe `xn--` sont décodées ; les autres sont conservées telles quelles.
- Cette même logique de conversion peut s'appliquer non seulement aux noms de domaine, mais aussi à la partie qui suit le `@` dans une adresse e-mail (la partie domaine).
- Lorsque l'on saisit réellement un nom de domaine internationalisé dans la barre d'adresse du navigateur, la plupart des navigateurs le convertissent en interne en Punycode avant d'effectuer la résolution DNS.
Dans quels cas cela sert
Enregistrer ou configurer un domaine internationalisé
Les fichiers de zone DNS et les certificats de serveur exigent parfois la forme Punycode.
Vérifier l'expéditeur d'un courriel
**Un nom affiché qui paraît légitime peut se révéler, une fois converti, un domaine tout autre.** De tels cas existent bel et bien.
Lire une chaîne xn-- dans un journal
Découvrez à quoi renvoie réellement une chaîne `xn--` apparue dans les journaux d'accès ou un rapport.
Valider un fichier de configuration
Utile pour savoir si un nom internationalisé peut s'écrire tel quel dans une configuration nginx ou Apache.
Les termes de Punycode expliqués
- Punycode
- Le procédé convertissant de façon réversible une chaîne Unicode en ASCII (RFC 3492). **Le résultat commence toujours par `xn--`.**
- Nom de domaine internationalisé
- Un nom de domaine comportant des caractères hors ASCII. Il est converti en interne en Punycode pour traverser le DNS.
- xn--
- Le préfixe signalant qu'une étiquette est encodée en Punycode. On l'appelle préfixe ACE.
- Étiquette
- Chaque élément d'un nom de domaine séparé par des points. **La conversion s'opère étiquette par étiquette.**
- Attaque homographe
- Bâtir un domaine contrefait à partir de caractères d'aspect voisin. **La conversion en Punycode la met au jour.**
- IDNA
- L'ensemble des spécifications permettant de traiter les noms internationalisés dans le DNS. La version en vigueur est IDNA2008 (à partir du RFC 5890).
Questions fréquentes
Anecdote — les coulisses de la naissance des noms de domaine « chat » et « 日本語 »
Les discussions sur les noms de domaine internationalisés (IDN) ont débuté à la fin des années 1990, mais la normalisation a pris beaucoup de temps. Plusieurs approches ont été proposées pour gérer les caractères non ASCII sans modifier le cœur du DNS, et c'est finalement l'approche Punycode — encoder et décoder au niveau de la couche applicative (côté client), sans toucher au serveur DNS lui-même — qui a été retenue, normalisée sous le nom RFC 3492 en 2003.
Le nom « Punycode » viendrait d'une combinaison entre « Unicode » et « an amusing pun » (un jeu de mots amusant), et l'algorithme lui-même est une spécialisation, adaptée aux noms de domaine, d'une méthode d'encodage plus générale appelée Bootstring (une technique polyvalente conçue par des chercheurs d'IBM pour encoder un ensemble de caractères quelconque dans un ensemble restreint). Le fait que l'origine même du nom « Punycode » relève d'une plaisanterie en dit long sur l'humour propre à la communauté des développeurs.
Aujourd'hui, des noms de domaine utilisant des langues et symboles très variés — domaines japonais (`.jp`) ou même domaines en emojis (des exemples réels comme `💩.la` existent) — sont effectivement enregistrés et utilisés, mais ce processus de conversion Punycode a toujours lieu en coulisses. Même l'élégant domaine japonais affiché dans la barre d'adresse du navigateur est échangé avec le serveur DNS sous la forme d'une simple chaîne ASCII commençant par `xn--`.