\documentclass{beamer}
%\documentclass[ignorenonframetext,handout]{beamer}
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]

\usetheme{JuanLesPins}
\usepackage[french]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{bortzmeyer-utils}

\title{Infrastructure DNS et bien commun}
\author{Stéphane Bortzmeyer\\\texttt{stephane+bc@bortzmeyer.org}}
\date{Le Temps des Communs, Brest, 5 octobre 2015}
% http://www.a-brest.net/article17212.html
% http://www.a-brest.net/article18233.html
% http://www.a-brest.net/article18132.html
% http://www.lacantine-brest.net/event/conference-de-stephane-bortzmeyer-brest-en-temps-communs/

% Cette conférence vise à expliquer et à aider à comprendre comment
% fonctionne Internet, espace partagé et donc sensible. Comment un
% réseau sans Direction peut-il fonctionner ? Qu’est-ce qui se passe
% si l’un des participants ne joue pas le jeu ?

% On parlera surtout du DNS (Domain Name System), le système qui
% permet de trouver des informations à partir d’un nom comme
% wiki.a-brest.net. Comme toutes les infrastructures, le sort du DNS
% est d’être invisible, tant que tout marche (et de générer beaucoup
% de critiques quand il ne marche pas). L’infrastructure des serveurs
% DNS est un bien commun qu’il convient de connaître pour mieux la
% défendre contre les attaques, les monopoles. Il s’agit également de
% mettre en exergue la possibilité de l’auto-hébergement bâti sur des
% logiciels voire des équipements libres :)

% Donc, parmi les sujets abordés : A quoi sert le DNS, comment il
% marche, quels sont les acteurs, quels sont les méchants, quels sont
% les négligents, et comment ça fonctionne quand même malgré les
% attaques par déni de service et les pannes.

%\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{Les dirigeants d'Internet}
  \includegraphics[scale=0.40]{dirigeantinternet.jpg}

  [Source: Numérama] % http://www.numerama.com/magazine/32912-le-gouvernement-croit-avoir-rencontre-les-dirigeants-d-internet.html
\end{frame}

\begin{frame}
  \frametitle{Introduction}
  \begin{itemize}
  \item<2-> Structure de l'Internet : pas de hiérarchie, pas de Président
    de l'Internet, 
   \item<3->Personne ne peut donner d'ordres à \emph{tous} les acteurs\only<3>{
     « Arrêtez d'utiliser le protocole SSLv3 », « Mettez au moins deux
     serveurs par zone », « Bloquez tous les noms commençant par
     \computer{thepiratebay} », « Mettez à jour vos logiciels pour
     gérer les adresses en Unicode »},
   \item<4->Très difficile à comprendre pour les ministres d'un pays
     monarchique comme la France. (Et pour la plupart des journalistes.)
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Bien commun}
  \begin{itemize}
  \item<2->Infrastructure commune,
  \item<3->Qui ne marche pas toute seule,
  \item<4->Mais dont tout le monde a intérêt à ce que ça marche. % Même les spammeurs...
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Un peu de technique}
  \begin{itemize}
  \item<2->Les machines sont identifiées par une \emph{adresse} comme
    \computer{2001:4b98:dc2:45:216:3eff:fe4b:8c5b},
   \item<3->L'adresse dépend de votre connexion, de votre FAI, vous en
     changez parfois,
   \item<4->Dans les messages échangés, chaque machine indique
     l'adresse source et l'adresse destination, ce qui permet au
     destinataire de répondre,
   \item<5->Un mécanisme non décrit ici permet aux messages d'arriver
     à l'adresse de destination (allocation d'adresses par les RIR, routage, BGP\ldots).
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Difficile d'agir ensemble}
  \begin{itemize}
  \item<2->Exemple : filtrage à la source des adresses IP usurpées,
  \item<3->Tout le monde y a intérêt,
  \item<4->Mais les premiers qui le font supportent les coûts et n'ont
    pas de bénéfices,
  \item<5->Et aucun Dictateur de l'Internet ne peut l'imposer,
  \item<6->\emph{Comme souvent en écologie, la somme des intérêts
    individuels ne fait pas l'intérêt collectif}.
  \end{itemize}
\end{frame}

\begin{frame}
    \frametitle{Le DNS}
  DNS = \foreign{Domain Name System}
  \begin{itemize}
  \item<2->Les adresses IP ne sont pas stables (et ont d'autres
    limites),
   \item<3->On utilise donc plutôt des \emph{noms} qui, eux, sont
     stables,
    \item<4->Le DNS est une base de données qui associe à ces noms des
      informations (comme les adresses IP),
     \item<5->C'est une technologie d'\emph{infrastructure} comme
       l'eau ou l'électricité : tant qu'elle marche, personne ne la
       voit.\only<5->{ Le DNS reste donc peu connu et peu discuté.}
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Les noms DNS}
  \begin{itemize}
  \item<2->Exemples de noms de domaines : \url{wiki.a-brest.net}, \url{www.phy.cam.ac.uk},
    \url{www.potamochère.fr}, \url{gmail.com},
    \url{fr.wikipedia.org}\ldots
  \item<3->Le nom le plus général (TLD \foreign{Top-Level Domain} ou
    domaine de tête), à la
    fin.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{L'arbre du DNS}
  \includegraphics[scale=0.3]{arbre.eps}
\end{frame}

\begin{frame}
  \frametitle{Résolution de noms, ou le protocole DNS en action}
  \includegraphics[scale=0.41]{resolution.eps}
\end{frame}

\begin{frame}
  \frametitle{Les acteurs}
  \begin{itemize}
  \item<2->Qui gère toutes ces machines, les achète, les remplace,
    paie les techniciens ?
   \item<3->Rappel : il n'y a pas de président de l'Internet, en
     charge de s'assurer que tout est fait.
   \item<4->Il y a donc \emph{des tas} d'acteurs :
     \begin{itemize}
     \item<5->Registres de noms de domaines,
     \item<6->Gérants de résolveurs DNS\only<6>{ (FAI, votre service
       informatique, GAFA\ldots)}
     \item<7->Hébergeurs DNS (OVH, Gandi, Linode\ldots)
     \item<8->BE (Bureaux d'Enregistrement, \foreign{registrars})
     \end{itemize}
     \only<9->{Il est fréquent qu'un acteur ait plusieurs rôles.}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Les acteurs, suite}
  \begin{itemize}
  \item<2->Qui décide, qui organise, qui établit les normes techniques ?
  \item<3->Ce n'est pas toujours clair. (Et c'est une très bonne
    chose.)
  \item<4->Règles d'enregistrement dans un domaine : le registre du
    domaine. \only<5>{Pour la racine, c'est le gouvernement des
      États-Unis, caché derrière l'ICANN.}
   \item<5->Politique du résolveur (« DNS menteur », qui fausse les
     réponses) : le gérant du résolveur, la justice locale, la loi
     locale.
   \item<6->Normes techniques : l'IETF, via ses normes (notamment les
     document nommés RFC).  
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Les méchants}
  \begin{itemize}
  \item<2->Hackers russes et chinois ?
  \item<3->Pédophiles djihadistes radicalisés ?
  \item<4->NSA et DGSE ?
  \item<5->Industrie du divertissement ou bien du jeu ?
  \item<6->Lycéen dans son garage ?  
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Les négligents}
  \begin{itemize}
  \item<2->Bien plus nombreux que les méchants
  \item<3->Manque de temps, de compétences\ldots
  \item<4->Beaucoup de gens largués, ou
    irresponsables. \only<5>{Exemple : correction des logiciels
      pour une faille de sécurité. Ça prend un temps fou.}
  \item<6->Longues campagnes collectives nécessaires, avec test des
    serveurs \url{https://ednscomp.isc.org/compliance/tld-report.html}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Déploiement d'une nouveauté}
  \begin{itemize}
  \item<2->Exemple des IDN (noms de domaine en Unicode comme
    \url{république-numérique.fr}).
   \item<3->Peu de changements logiciels nécessaires dans
     l'infrastructure
   \item<4->Changements dans les logiciels utilisateur
   \item<5->Norme technique finie en 2003
   \item<6->Autorisés dans la racine en 2009
   \item<7->Toujours pas compris par certains hébergeurs, certains logiciels
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Les problèmes}
\begin{info}
%  check-soa -i bf
censvrns0001.ird.fr.
        91.203.32.147: OK: 2015092800 (2 ms)
nahouri.onatel.bf.
        206.82.130.196: OK: 2015092800 (130 ms)
nahouri1.onatel.bf.
        206.82.130.203: ERROR: read udp 206.82.130.203:53: i/o timeout
nahouri2.onatel.bf.
        206.82.130.204: ERROR: read udp 206.82.130.204:53: i/o timeout
ns1.as6453.net.
        66.198.145.55: OK: 2015092800 (27 ms)
        2001:5a0:d00:ffff::42c6:9137: OK: 2015092800 (118 ms)
ns2.as6453.net.
        66.198.145.99: OK: 2015092800 (26 ms)
        2001:5a0:d00:ffff::42c6:9163: OK: 2015092800 (211 ms)    
\end{info}
\end{frame}

\begin{frame}
  \frametitle{Robustesse}
  \begin{itemize}
  \item<2->Exemple du tremblement de terre à Haïti en 2010 :
  \item<3->Le domaine \url{.ht} était sur six serveurs dont deux à
    Port-au-Prince,
  \item<4->Évidemment, les serveurs en Haïti ont stoppé,
   \item<5->Les serveurs extérieurs ont continué, \url{.ht} n'a jamais
     stoppé,
   \item<6->En se concertant, les gérants des serveurs extérieurs ont
     pu prolonger le service (aucun contact avec les gérants
     haïtiens).
    \item<7->Leçons : la coopération marche mieux que les règles et
      les processus. 
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{La censure, et comment la contourner}
  \begin{itemize}
  \item<2->En France, plusieurs sources de censure frappent le DNS :
    ARJEL, ministère de l'Intérieur\only<2>{ (la Main Rouge)},
    tribunaux\ldots
   \item<3->Le mécanisme ? Les résolveurs DNS mentent pour les noms
     censurés,
   \item<4->Seuls les gros FAI français le font, les réseaux locaux, les petits FAI ou les
     étrangers ignorent cette règle,
   \item<5->S'il y avait vraiment un Chef de l'Internet, la censure
     serait réellement appliquée.  
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Étude de cas : qui décide de la racine unique ?}
  \begin{itemize}
  \item<2->Il faut une racine unique du DNS\only<2>{, sinon, un nom
    pourrait signifier des choses différentes - RFC 2826}
  \item<3->Mais qui décide de laquelle ?
   \item<4->Le gérant du résolveur DNS choisit la racine qu'il
     interroge
   \item<5->Il peut en changer (« racine alternative »)
   \item<6->En pratique, presque tout le monde utilise la même :
     intérêt commun\only<7>{, même des gouvernements chinois et russes}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Organisation de la coopération}
  Pas de chef ne veut pas dire pas d'ordre ! L'an-archie n'est pas la jungle.
  \begin{itemize}
  \item<2->Du plus informel (administrateurs système qui se parlent en
    IRC),
   \item<3->Au plus formel (organisations professionnelles comme
     DNS-OARC),
   \item<4->En passant par diverses formules ad-hoc (liste de
     diffusion dns-fr, groupe de travail dnsop ou dns-privacy à
     l'IETF, forum ServerFault\ldots).
    \item<5->Beaucoup d'échanges d'informations. \foreign{Share what
      you know, learn what you don't.}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Au secours, je suis attaqué par les cyberguerriers !}
  \begin{itemize}
  \item<2->Les attaques par déni de service\only<2>{ (DoS = \foreign{Denial of
      Service})} sont une plaie de l'Internet
  \item<3->« Tout écosystème réel a des parasites » (Cory Doctorow)
  \item<4->Le DNS en est aussi victime\only<4>{ (voire est utilisé
    pour ces attaques)}
  \item<5->La défense : redondance, réactivité, coopération, créativité
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Conclusion}
  \begin{itemize}
  \item<2->Le DNS est un bien commun : pas de chef, mais tout le monde
    est partie prenante,
  \item<3->Sa gouvernance est donc compliquée mais très robuste.
  \item<4->S'il y avait un chef du DNS, certains problèmes seraient
    résolus plus vite mais les catastrophes seraient pires.  
  \end{itemize}
\end{frame}

\end{document}
