IDN : adresses Web avec caractères spéciaux
Internet devient de plus en plus international. Selon l’union internationale des télécommunications (ITU pour International Telecommunication Union en anglais), plus de trois milliards de gens profitent des possibilités du World Wide Web dans le monde, et de plus en plus souvent dans leur langue maternelle. Ces noms de domaine internationalisés (IDN) sont disponibles pour les internautes depuis 2003.
Qu’est-ce qu’un nom de domaine internationalisé (IDN) ?
Jusqu’en 2003, les noms de domaine étaient seulement composés de lettres de l’alphabet latin, de chiffres arabes de 0 à 9 ainsi que de traits d’union. Ceci est dû au système de noms de domaine (DNS), responsable de l’interprétation d’URLs en adresses IP et basé sur les caractères standards de l’ASCII (American Standard Code for Information Interchange). Ces derniers correspondent en grande partie à ceux présentés sur un clavier anglophone et ne sont que peu représentatifs des possibilités pour un projet international sur Internet. Pour réparer cet abus, le standard d’internet « Internationalizing Domain Names in Applications » (IDNA) a été créé. Il permet une interprétation standardisée des caractères Unicode définis par l’ASCII et aussi l’utilisation de chaque signe connu et pertinent pour un nom de domaine Internet. L’Unicode est le standard de coding informatique permettant d’interpréter les textes selon n’importe quel système d’écriture international.
L’IDNA est considéré comme l’une des plus grandes révolutions de l’histoire d’Internet. Cela vaut surtout pour les utilisateurs de systèmes asiatiques, arabes ou africains qui veulent créer des espaces Web dans leur région et ainsi profiter des noms de domaine adaptés. Pour la France aussi, ces IDNs suscitent un fort intérêt, car ils permettent l’existence de noms de domaine avec un « c » cédille ou un « i » tréma par exemple. En théorie, chaque caractère Unicode peut être utilisé dans un nom de domaine internationalisé. Dans la pratique, les services d’attribution de noms de domaines décident individuellement quels caractères spéciaux sont permis lors d’une demande. Le choix varie selon chaque nom de domaine de premier niveau (TLD).
Votre propre domaine .fr !
Démarquez-vous avec un nom de domaine unique et une adresse email personnalisée !
Mode de fonctionnement de l’IDNA
Pour s’assurer que les noms de domaine internationalisés puissent être aussi utilisés par les nombreux systèmes sur Internet qui ne prennent en charge que les caractères définis par l’ASCII, chaque IDN sous la forme d’Unicode est traduit en ACE-String, modèle qui repose sur les caractères ASCII. Les URLs sont ainsi par exemple affichés avec un tréma dans votre navigateur, tandis que le serveur assimile exclusivement les adresses compatibles avec ASCII. Cette procédure a été spécifiée par le standard Internet IDNA2003 en 2003, retravaillé en 2010 : IDNA2008. La traduction d’UNICODE selon l’ASCII se fait du côté du client (navigateur Web, client email, etc.) en raison d’un processus de codage standardisé appelé Punycode.
Punycode
Punycode est une syntaxe de coding standardisée, développée selon la RFC 3492 dans le but de représenter des séries de caractères Unicode en ASCII, explicitement et sans perte aucune. Pour cela, tous les caractères ne faisant pas partie du standard ASCII sont retirés du nom de domaine, codés puis raccordés séparément par un trait d’union. Cette suite de code nous renseigne sur le caractère spécial en question, tout comme sa position dans le nom de domaine. En outre, chaque ACE-String ainsi créé se verra doté d’un préfixe « xn », caractérisant la suite de code comme comportant des caractères IDN selon l’IDNA et le Punycode. Voici un exemple pour clarifier le mode de fonctionnement de l’IDNA :
Forme IDN : Gîte-français.fr
ACE-String : xn--gte-franais-t9a7f.fr
Le préfixe xn est toujours suivi des caractères ASCII (« --gte-franais ») dans le nom de domaine. Un trait d’union sépare ensuite les caractères spéciaux Unicode (« -t9a7f »), sous la forme d’ACE-String.
Les internautes peuvent obtenir la traduction de leur nom de domaine sous format IDN depuis Ace ou inversement grâce à l’outil proposé par DENIC, un convertisseur IDN Web.
Différences entre IDNA2003 et IDNA2008
Dans le procédé initial de 2003, les URLs internationalisées avant le codage en Punycode étaient normalisées avec le procédé appelé Nameprep. Les majuscules ont été transformées en minuscules, les caractères de contrôle ont été supprimés et les caractères équivalents ont été uniformisés. Depuis IDNA2008, Nameprep ne fait plus partie du procédé d’interprétation. IDNA ne fixe par conséquent plus aucune normalisation à l’avance, mais recommande cependant un algorithme transformant les majuscules en minuscules.
En outre, environ 8 000 caractères qui étaient utilisables dans les noms de domaine avec IDNA2003 ne sont plus compatibles avec IDNA2008. Quatre caractéres sont interprétés différemment suivant les deux procédés, tels que l’eszett allemand (« ß »). Une discussion détaillée sur les différences entre IDNA2003 et IDNA2008 est disponible sur Unicode Technical Standard #46.
Problèmes avec IDNs
Entre-temps, tous les programmes courants d’Internet doivent se mettre et être capables d’interpréter ces IDNs. Le changement entre IDNA2003 et IDNA2008 n’a pas été pris en compte de façon conséquente sur Internet, ce qui a abouti à des problèmes avec les noms de domaine internationalisés. Pour l’espace Web germanophone par exemple, une source d’erreur est l’interprétation différente du « ß », tel qu’IDNA2003 transforme automatiquement en double « s » tandis qu’il est utilisé avec IDNA2008. Un système utilisant l’ancien modèle IDNA2003 ne pourrait ainsi pas trouver le nom de domaine approprié comportant un « ß ». Les administrateurs de sites Web ont pu entre-temps contourner ce problème en proposant une redirection sur une variante du nom de domaine dirigeant l’internaute vers la seconde variante, composée de l’écriture de référence.