Tout d’abord DNS

Le DNS, c’est ce qui vous permet de reconnaître les noms de machines sur internet. Ce sont les panneaux indicateurs et les annuaires téléphoniques du net.

C’est aussi ce qui indique où doit être envoyés le courrier. Ainsi que plein d’autres détails techniques barbants dont la plupart des gens n’ont pas idée mais qui contribuent à la robustesse du réseau.

DNS, c’est la clé de voûte d’internet. Chaque fois que vous ouvrez une page web, mettons www.potamochère.fr, votre ordinateur demande au DNS :

C’est où www.potamochère.fr ?

Le DNS va alors fournir une réponse du genre :

va voir à 204.62.14.153

Je ne souhaite pas aller dans les détails techniques. Néanmoins, l’article wikipedia fournit une excellente description du comment ça marche.
Ou alors ce petit site web en forme de dessin animé (en anglais, mais c’est assez parlant quand même).

Ensuite DNSSEC

Il y a quelques années, des gens ont commencé à s’inquiéter : DNS étant critique, il était très important qu’il soit sécurisé.

En fait, il est assez facile, lorsque vous surfez sur le web, de vous envoyer sur de fausses adresses. On a donc cherché à s’assurer à ce que le DNS ne délivre que des adresses authentiques, autrement dit, dont on soit sûr qu’elles sont vraies.

Comment on fait ?

Chaque détenteur d’un nom de domaine (par exemple, le locataire légitime de potamochère.fr) écrit sa zone DNS, puis la signe à l’aide d’un algorithme cryptographique.

Lorsque vous parcourez le net, votre ordinateur va alors vérifier que ces signatures sont bien valides.

Logique non ?

Concrètement, ça permet à chacun d’être sûr d’être sur le bon site web, pas sur celui d’un pirate.

J’estime que les services critiques (en particulier FAI, banques, services publics et fournisseurs d’enérgie et d’eau) dans notre société devraient tous utiliser DNSSEC.

Signature

La zone DNS, c’est comme une longue feuille de papier contenant toutes les informations utiles sur le domaine.

En la signant, le détenteur la frappe d’un coup de tampon (cryptographique). Ainsi vous êtes surs d’avoir les bonnes infos.

Cette signature est renouvelée de manière régulière par le détenteur du domaine. Elle suit elle aussi l’organisation hiérarchique du DNS. C’est à dire qu’au début, il y a la racine, puis le tld, puis le domaine et ses sous-parties. C’est une chaîne dans laquelle chaque étape doit être fonctionnelle pour que l’étape suivante le soit aussi.

Côté technique, les algorithmes utilisés sont les mêmes que pour SSL/TLS (le cadenas vert de firefox à gauche de votre barre d’adresse actuelle):

Validation

Reste maintenant à s’assurer que ces signatures sont bien correctes. Pour cela, un validateur va parcourir toute la chaîne depuis la racine, vérifier individuellement chaque signature pour être sûr que chaque étape est bien correcte avant de passer à la suivante.

Cette phase de validation peut se dérouler sur les résolveurs (les serveurs DNS auxquels vous avez demandé «C’est où www.potamochère.fr ?»). Mais le problème, c’est qu’on peut encore vous tromper sur la liaison entre ces résolveurs et vous, puisque ces même résolveurs sont sur internet. Ou alors ces résolveurs ne sont pas fiables (cas des DNS menteurs). En effet, ces résolveurs sont bien souvent mis en place par votre FAI. Lequel peut leur faire dire ce qu’il veut.

La validation peut également se faire chez vous. Par exemple sur un NAS ou votre routeur. C’est la solution que j’ai retenue.

Et elle peut se faire directement sur votre ordinateur (c’est le cas idéal, même si cette solution créée elle-même des problèmes). Si vous déplacez souvent votre ordinateur (en voyage, travailleur itinérant…), c’est une solution assez facile à mettre en place.
Le logiciel dnssec-trigger vous permet de réaliser cela de manière très efficace.
FreeBSD (le système d’exploitation des fondus dangereux) dispose d’un résolveur interne qui permet cela nativement.
OpenBSD (le système d’exploitation des hackers parano, et accessoirement, celui qui fait tourner ce site web) utilise Unbound nativement, mais son processus est moins optimal.

Si vous voulez savoir si vous pouvez valider du DNSSEC, allez donc visiter cette page : http://dnssec.vs.uni-due.de/.