Première rédaction de cet article le 22 août 2010
Dernière mise à jour le 2 novembre 2010
Une série de cinq RFC vient de sortir, représentant la nouvelle version de la norme IDN, permettant d'utiliser des noms de domaine en Unicode. Cette nouvelle version est officiellement nommée « IDNA 2008 » mais n'a pas respecté le calendrier original, qui était complètement irréaliste. Il vaut donc mieux l'appeler « IDNAbis ».
IDNAbis marque des changements importants dans les concepts
sous-jacents (indépendance par rapport à la version
d'Unicode, détermination de la liste des
caractères autorisés selon un algorithme et non plus selon une table,
suppression de l'étape de canonicalisation
obligatoire, etc), mais les conséquences pratiques pour les
utilisateurs seront faibles. L'écrasante majorité des noms de domaines
légaux selon IDNA 1 le seront toujours avec IDNAbis, leur encodage en
Punycode (RFC 3492) reste
le même (donc, تونس
sera toujours représenté
sur le câble par xn--pgbs0dh
et
maçonnerie
par
xn--maonnerie-r3a
), un certain nombre de chaînes
de caractères seront désormais autorisées mais elles concernaient
surtout des écritures peu
répandues. D'autres, qui étaient autorisés (mais rarement
utilisées) sont désormais interdites.
La liste des RFC qui forment IDNAbis comprend :
IDNAbis est bien plus complexe que IDNA 1. Ce dernier ne comportait que trois RFC, le RFC 3490, décrivant le protocole, le RFC 3491 qui normalisait nameprep, l'algorithme de canonicalisation (cette étape a été abandonnée dans IDNAbis), et le RFC 3492, sur Punycode, le seul RFC survivant de IDNA 1.
Quels sont les changements par rapport à IDNA 1 ? La description la plus complète des changements figure dans l'annexe A du RFC 5891. Pour la résumer :
Mais IDNAbis reste largement compatible avec l'ancien IDN (même
principe de fonctionnement, même Punycode, même
préfixe xn--
, beaucoup de règles communes). En
pratique, les utilisateurs, et même les registres de
noms verront peu de différences.
Quelles étaient les motivations pour créer un IDNAbis seulement quelques années après le premier ? Il y en avait plusieurs, pas toutes avouables. De fortes pressions de l'ICANN s'étaient exercées, notamment pour avoir un prétexte pour retarder l'introduction des IDN dans la racine (devenue effective en mai 2010). Il y avait aussi toute une campagne de FUD concernant un soi-disant rôle des IDN dans le hameçonnage. Très présente au début du projet, cette motivation, souvent répétée en des termes sensationnalistes (comme la répétition du terme ridicule de « caractères dangereux ») a été sérieusement édulcorée au fur et à mesure du travail du groupe idnabis de l'IETF (voir par exemple le compte-rendu de la réunion IETF de Philadelphie en mars 2008). Aujourd'hui, il n'en reste plus gère de trace dans les RFC.
D'autres motivations étaient plus consensuelles, comme le souhait d'avoir un IDNA indépendant de la version d'Unicode. Par exemple, IDNA 1 était lié à Unicode 3.2 et les écritures enregistrées par le consortium Unicode après la sortie de la 3.2 (comme le tifinagh) étaient donc interdites d'IDN. Ce point est désormais réglé.
Tout cela ne signifie pas que le résultat final fasse l'unanimité et, pour un bon résumé des questions qu'IDNAbis laisse ouvertes, on peut consulter la FAQ du consortium Unicode. Pour le point de vue des promoteurs d'IDNAbis, voir le RFC 5894.
Il ne semble pas exister encore beaucoup d'implémentations de IDNAbis mais ce n'est pas forcément dramatique : les différences pratiques entre les deux versions sont suffisamment faibles pour que, pour la plupart des caractères, utiliser une des nombreuses bibliothèques mettant en œuvre l'ancienne version soit suffisant. Sinon, la première mise en œuvre d'IDNAbis en logiciel libre semble être celle de Verisign et la seconde la GNU libidn dans sa version 2.
Voici les transparents d'un exposé que j'ai fait sur IDNAbis :
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)