\include{parameters}
\usetheme{AFNIC}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage{bortzmeyer-utils}

\title{Nommage : avoir le beurre, l'argent du beurre, et le sourire de
la crémière}
\author{Stéphane Bortzmeyer\\AFNIC\\\texttt{bortzmeyer@nic.fr}}
\date{Alcatel-Lucent, 13 septembre 2011}

%\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} 
% \setlength{\parskip}{15pt} 
\setlength{\parskip}{15pt plus 10pt minus 10pt} 

\begin{document}

\maketitle

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}
\frametitle{Résumé}
\begin{block}
{Explorer les systèmes de nommage utilisables sur l'Internet}
{En mettant l'accent sur leurs propriétés, et la difficulté à avoir
  toutes les propriétés favorables en même temps}  
\end{block}
\end{frame}

\begin{frame}
  \frametitle{Noms et adresses, définition académique}
  \begin{enumerate}
  \item Un nom identifie un objet, et ne change pas, notamment en cas
    de déplacement
  \item Une adresse identifie une « position » (dans quel espace ?) de l'objet et peut donc changer
  \end{enumerate}
\begin{block}
{\foreign{A name indicates what we seek.  An address indicates where it is.}}
{(Jon Postel, RFC 791.) Mais 
voir le RFC 6115, section 1.2, pour une discussion plus moderne et
plus réaliste. Ces deux définitions ne correspondent pas du tout à la
réalité aujourd'hui.}
\end{block}
\end{frame}

\begin{frame}
  \frametitle{Noms et adresses dans l'Internet aujourd'hui}
  La réalité, aujourd'hui, est :
  \begin{enumerate}
  \item Un nom est composé d'une série de caractères alphabétiques
    choisis par un utilisateur
  \item Une adresse est composée d'une série de chiffres, choisis par
    une autorité distincte de l'utilisateur. Elle est en général utilisée
  pour indiquer une position (dans quel espace ?) aussi bien que comme identificateur.
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{Noms et adresses dans cet exposé}  
  \begin{enumerate}
  \item Pour désigner un objet de manière non-transitoire, j'utiliserai plutôt le terme « identificateur », pour éviter
    le problème.
  \item Avec « nom » comme synonyme (mais ambigu).
  \item Et « adresse » pour les identificateurs de bas niveau, obtenus
    après résolution d'un nom (attention, la résolution peut être récursive)
  \end{enumerate}
  Dans ce sens, une adresse IP \foreign{Provider-Independent} est un
  nom. Idem pour un ISBN pour un livre.
\end{frame}

\begin{frame}
  \frametitle{Propriétés souhaitées}
On voudrait que les noms soient :
\begin{enumerate}
\item<1->Uniques\only<1>{ (imaginez le Web s'il y avait deux \computer{www.facebook.com}...)}
\item<2->Stables\only<2>{ (pensez à un URL dans un article...)}
\item<3->Parlants\only<3>{ (\computer{www.afnic.fr} plutôt que
  \computer{2001:660:3003:2::4:20})}
\item<4->Résolvables\only<4>{ (le nom ne sert pas qu'à identifier, on
  veut trouver une adresse)}
\item<5->Obtenables\only<5>{ (facilement, gratuitement, sans payer des
  sommes démesurées)}
\item<6->Sûrs\only<6>{ (un méchant ne doit pas être facilement capable
  de détourner un nom à moi)}
\end{enumerate}
\end{frame}

\begin{frame}
 \frametitle{Réalisme}
 \begin{block}
   {Peut-on avoir tout cela à la fois ?}
   {Probablement pas (le triangle de Zooko). Il va donc falloir faire
     des compromis.}
 \end{block}
Pour appuyer l'assertion « on ne peut pas tout avoir à la fois »,
prenons quelques exemples.  
\end{frame}

\begin{frame}
\frametitle{Noms de domaines}
\computer{www.bortzmeyer.org}
\begin{enumerate}
\item Uniques grâce à l'allocation décentralisée
\item Assez stables (mais risques juridico-financiers)
\item Très parlants (c'est bien pour cela qu'ils suscitent des
  convoitises)
\item Très facilement résolvables, technologie fiable et éprouvée
  (DNS)
\item Payants, nécessitent de passer par des organismes qu'on n'aime
  pas forcément (cf. Laurent Chemla, « Confessions d'un voleur »)
\item Pas très sûrs mais on y travaille (sécurité de l'enregistrement,
  DNSSEC)
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Host Identifiers}  
\begin{enumerate}
\item Créés par le protocole HIP (\foreign{Host Identity
Protocol}, RFC 5201). Le HI (\foreign{Host Identifier}) est une clé
cryptographique publique, le HIT (\foreign{Host Identity Tag}) son
condensat.
\item Quasi-uniques, comme souvent en cryptographie (clés SSH ou PGP),
\item Très stables (tant qu'on ne perd pas la clé privée)
\item Pas du tout parlants (binaire pur). Le HIT est un peu plus
gérable que le HI.
\item Pas de mécanisme de résolution universel (mais des essais)
\item Gratuits et générés entièrement localement, pas de registre à
payer
\item Très sûrs (la machine signe ses paquets avec la clé privée de
son nom...)
\end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{ISBN}
  \begin{enumerate}
  \item Uniques grâce à l'allocation décentralisée
  \item Très stables
  \item Pas du tout parlants
  \item Pas du tout résolvables (aucun service standard aujourd'hui,
  c'est encore Google qui est le plus efficace)
  \item Pas de sécurité particulière (pas forcément utile)
  \end{enumerate}
\end{frame}

\begin{frame}
\frametitle{ARK}
\begin{enumerate}
 \item Uniques grâce à l'allocation décentralisée
 \item Identifiant stable choisi par la BNF
 \item Pas parlant, exprès (un identificateur parlant empêche de
  changer d'avis,
  exemple \computer{http://blog.example.org/machin-est-un-con.html} ne
  peut plus être modifié sans faire des 404)
 \item Résolvable par une astuce : syntaxe standard pour faire un URL
 à partir d'un ARK. L'ARK \computer{12148/bpt6k101412s} devient l'URL
 {http://catalogue.bnf.fr/ark:/12148/bpt6k101412s}. Si \computer{catalogue.bnf.fr} disparait, on peut remplacer par un autre.
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{[Troll] Mots-clés Google}
On peut constater tous les jours que beaucoup de gens utilisent les
mots-clés dans une recherche Google comme identificateur. « Pour voir
le site d'Alcatel, tapez ``Alcatel'' dans Google »

\begin{enumerate}
\item Pas uniques, loin de là. 
\item Aucune stabilité, change tous les jours (changements des
« concurrents », changement de l'algorithme)
\item Très parlant
\item Résolvable très rapidement aujourd'hui, grâce à l'excellente
infrastructure de Google 
\end{enumerate}


\end{frame}

\begin{frame}
\frametitle{Exemples de conflits}
\begin{enumerate}
\item L'unicité implique un système centralisé ou
arborescent. Elle s'oppose donc au désir d'avoir des noms obtenables
localement.
\item Le caractère parlant d'un nom s'oppose à sa stabilité (conflit
de possession sur les noms de domaine : tout le monde
veut \computer{sex.com} alors que personne ne me réclame \computer{2001:660:3003:2::4:20})
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Comprendre le conflit 1/2}
\begin{block}
{Ne pas mélanger enregistrement et résolution}
{Ceux qui réclament « un DNS pair-à-pair » confondent souvent ces deux
opérations. Il existe déjà des techniques pour la résolution en
P2P, comme CoDoNS. L'enregistrement est une autre histoire.}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Enregistrement en pair-à-pair}
Préserver l'unicité en pair-à-pair est un défi. Exemple d'algorithme
(dû à Emin Gün Sirer) :
\begin{enumerate}
\item Il y a N organisations d'enregistrements.
dans \computer{.example}
\item Pour tout nouveau nom, l'organisation qui l'enregistre signe un
condensat du nom et passe à l'organisation suivante.
\item Chacune des N signe la signature précédente.
\end{enumerate}
Comme la signature portait sur le condensat, personne ne peut tricher
et voir quel nom était enregistré. Une fois que tout le monde a signé,
l'enregistreur peut prouver qu'il était le premier. Pas de registre
unique et on a quand même des noms uniques.

Exercice : trouver les défauts de ce système.
\end{frame}

\begin{frame}
\frametitle{Comprendre le conflit 2/2}
\begin{enumerate}
\item Plus haut, j'avais cité certains identificateurs comme « non
résolvables ».
\item Il faut en fait nuancer. On peut résoudre n'importe quel
identificateur, même plat (sans structure), avec :
\begin{enumerate}
\item Un serveur centralisé
\item Une DHT
\end{enumerate}
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Une solution parfaite ?}
\begin{enumerate}
\item Namecoin est prometteur. Le principe est le même que Bitcoin :
une chaîne de signatures (avec preuve de travail) et la chaîne la plus
longue gagne.
\item Peu de détails publiés
\item Bien trop récent pour être sérieusement évalué
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Un peu de théorie}
\begin{block}
{L'impossibilité d'avoir toutes les propriétés à la fois est-elle prouvée ?}
{Pas au sens mathématique. Disons que c'est une conjecture.}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Conclusion}
\begin{enumerate}
\item Aujourd'hui, on ne peut \emph{pas} avoir toutes les propriétés à
la fois.
\item Demain, avec les progrès de la recherche fondamentale, ce sera
peut-être possible \emph{mais} c'est un
problème \emph{dur}. Chercheurs, vous êtes prévenus !
\end{enumerate}
\end{frame}

\end{document}
