Première rédaction de cet article le 19 juin 2011
Dernière mise à jour le 22 juin 2011
On voit apparaître en ce moment des tas de projets de faire un
système de nommage meilleur que l'actuel système utilisé dans
l'Internet, c'est-à-dire la combinaison de
noms de domaines
arborescents (comme munzer.bortzmeyer.org
) et du
DNS pour la résolution de ces noms en autres
données, comme les adresses
IP. Comme je connais deux ou trois choses sur le DNS, on
me demande parfois mon avis sur ces projets. Il est souvent difficile
de les analyser car ils se donnent rarement la peine d'expliciter leur
cahier des charges : quel est le but exact ? Quel est le problème
qu'ils essaient de résoudre ? Ce n'est jamais dit. À la place, ces
projets se contentent en général de dire que le DNS est mauvais, sans
préciser en quoi. Il y a une bonne raison pour cette absence fréquente
de cahier des charges précis : on ne peut pas tout avoir à la fois. Le
système actuel optimise certains critères, un autre système pourrait
choisir d'en optimiser d'autres, mais aucun système ne pourrait être
parfait et tout optimiser à la fois. Comme on n'a pas de succès
médiatique en proposant un système qui est simplement meilleur sur
certains points et moins bon sur d'autres, la plupart des projets
choisissent de passer discrètement sous silence leur cahier des
charges.
Impossible de faire une liste complète de tous ces projets, et il en apparait de nouveaux régulièrement. Un des plus beaux exemples d'esbrouffe médiatique était le projet DNS-P2P qui n'a produit en tout et pour but qu'un seul message de 140 caractères et plus rien ensuite, mais qui a réussi à générer énormément de buzz. Parmi les projets plus récents, et peut-être plus sérieux, on trouve INS ou Namecoin.
Ces projets suivent en général le même cheminement : constatation de problèmes bien réels avec le système actuel (par exemple la censure par les autorités ou bien l'arrachage d'un nom de domaine à sa titulaire par les requins de l'appropriation intellectuelle), annonce spectaculaire d'un nouveau système rempli d'adjectifs (acentré, pair-à-pair, libre, décentralisé), compréhension, dès qu'on commence à réflechir cinq minutes, que le problème est plus compliqué qu'il n'en avait l'air sur Facebook, abandon. Pour essayer de limiter ce gâchis, j'ai fait cet article pour expliquer quelles sont les propriétés souhaitables d'un système de nommage et pourquoi il est difficile, voir impossible, de les concilier.
Voici une liste, que j'espère exhaustive, des propriétés qu'on souhaiterait avoir pour notre beau système de nommage :
www.rue89.com
à BE25 EAD6 1B1D
CFE9 B9C2 0CD1 4136 4797 97D6 D246
. Pour certains,
« identificateurs parlants » peut aussi amener à souhaiter des
identificateurs structurés, permettant l'analyse (par exemple,
rue89
= domaine enregistré,
com
= TLD) et de
reconnaître le fait qu'il y a un rapport entre
foo.example.com
et bar.example.com
.fr.wikipedia.org
, on n'a certainement pas envie
de dire « sauf si vous êtes chez le FAI Untel,
auquel cas c'est fr.wp.encyclo
ou si vous
utilisez Namecoin, auquel cas c'est
fr/wikipedia
». On veut que le même nom
marche partout et à coup sûr (propriété que ne fournissent pas les
moteurs de recherche.).
Or, et c'est le point important, on ne peut pas avoir toutes
ces propriétés à la fois. Par exemple, si on veut des
identificateurs parlants comme milka.fr
pour une
personne prénommée Milka, on va susciter des jalousies et on court les
risques de se le faire prendre par une grosse société ayant beaucoup
d'avocats. Ces identificateurs ne seront pas stables. Autre problème
de stabilité :
si un identificateur est parlant, il risque d'y avoir des pressions
pour le modifier, si le mot acquiert un autre sens, ou si on change
d'avis (un URL comme
http://example.org/monblog/jean-michel-michu-est-un-clown
posera un problème de stabilité si vous souhaitez adoucir le ton plus
tard...) Des
identificateurs numériques arbitraires comme
1f8efda3-df57-4fd4-b755-8808a874dd38
ne suscitent
pas de convoitises, ne risquent pas de devoir être modifiés, mais ne sont plus parlants... De même, pour avoir
des noms enregistrables en pair-à-pair complet, la seule méthode
réaliste semble être de les tirer au hasard dans un espace de grande
taille (pour éviter tout risque de collisions), ce qui les rendra très
peu parlants.
Regardons quelques exemples de familles d'identificateurs et voyons leurs propriétés :
http://www.sarkozy.fr/
» disent « tapez Sarkozy
dans Google ». Cette méthode est très mauvaise car
ces « identificateurs » sont parlants, résolvables (via le
moteur de recherche) mais n'ont aucune
stabilité. Aujourd'hui, c'est tel site qui répond à telle recherche,
demain ce sera un autre.ifconfig
.)tag:bortzmeyer.org,2006-02:Blog/no-free-lunch
. Comme
ils incluent une date (février 2006 pour les
tags de ce blog, reflétant le début de leur utilisation), l'absence de stabilité des noms
de domaine sous-jacents n'est pas un problème. Le registre du
.com
ou bien le
gouvernement du registre (celui des États-Unis) peut me prendre mon
nom de domaine en .com
mais le
tag formé avec celui-ci restera à moi. Par contre,
les tags n'offrent aucune résolvabilité. En
pratique, ils ne sont utilisés que pour fournir des identificateurs
uniques et stables dans la syndication, pour
que le lecteur de flux de syndication puisse savoir s'il a déjà vu un
article.Comme le montre cette liste, il n'existe pas d'identificateur idéal, qui aurait toutes les propriétés souhaitables (cf. RFC 1737 pour un exemple de cahier des charges pour des identificateurs idéaux). Le verrons-nous apparaître dans le futur, grâce aux progrès de la recherche fondamentale ? Peut-être mais je ne crois pas, le problème est trop fondamental. Bien que cela n'ait pas été démontré mathématiquement, je pense que faire un système qui ait toutes ces propriétés, c'est comme de violer le premier ou le second principe de la thermodynamique. Lorsque quelqu'un arrive avec une telle proposition, il existe une infime possibilité qu'il soit un génie qui ait découvert une nouvelle voie. Mais il est bien plus probable qu'il soit un escroc ou tout simplement un ignorant qui n'a pas fait la moindre recherche avant de concevoir son système.
Dans l'état actuel de l'art, il faut donc rejeter tout projet qui ne dit pas clairement quelles propriétés il veut. Si les auteurs du projet ne veulent pas lister explicitement les propriétés de leur système de nommage, c'est parce qu'ils ont peur de montrer que leur système n'est pas idéal et ne fait pas tout.
Ce problème de l'impossibilité de tout optimiser à la fois est souvent présenté sous le nom de triangle de Zooko (par exemple dans un excellent texte de Dan Kaminsky). Mais je trouve que le triangle de Zooko oublie plusieurs propriétés importantes donc j'ai préféré faire ma liste de propriétés.
Merci à O. Marce pour ses remarques. Parmi les bonnes lectures sur le sujet, je recommande l'article d'Emmanuelle Bermès, « Des identifiants pérennes pour les ressources numériques ; L'expérience de la BnF ». Il y a aussi mon exposé sur les identificateurs. Enfin, j'ai fait également un exposé sur ce problème, dont les transparents sont en ligne.
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)