Loading...
An error has occurred

An error has occurred in Orbeon Forms. You may want to try one of the following:

  • Close this dialog and continue to use this page.
  • Reload this page. Note that you will lose any unsaved changes.
  • If the above does not work, try reloading the page yourself. Note that you will lose any unsaved changes:

    • With Firefox and Safari: hold down the shift key and click the Reload button in your browser toolbar.
    • With Internet Explorer: hold down the control key and click the Reload button in your browser toolbar.
  • Return home.
Help

PLANÈTE XMLFR

Agrégation de carnets web.

2012-02-02

SOPA, PIPA, Owark and long term preservation

2012-02-02 Eric van der Vlist - English, Environnement, Society/Societe

We use to distinguish things that are eternal and those that are ephemeral, but how valid is our judgment?

Take Wikipedia for instance. I used to take for granted that Wikipedia was here for ever, up and running and ready to send me any version of any page in any language and I was wondering how useful it is for my Owark project to archive Wikipedia pages.

Here come SOPA and PIPA and suddenly we realize that Wikipedia is threatened:

Wikipedia would be threatened in many ways. For example, in its current form, SOPA could require Wikipedia to actively monitor every site we link to, to ensure it doesn’t host infringing content. Any link to an infringing site could put us in jeopardy of being forced offline. The trust and openness that underlies the entire Wikipedia project would be threatened, and new, restrictive policies would make it harder for us to be open to new contributors.

If we can read the Odyssey today, it’s not because its original “editor” has been able to preserve it, but because “Lots of Copies Keep Stuff Safe” and enough copies had been spread to insure its transmission.

If Wikipedia (or any other website) are weaker than we use to think and can be closed down, we need to spread as many copies as possible and this is really what Owark is about.

Now, is that enough?

I have mixed feelings when I read (twitted by Karl Dubost and written by Sarah Lacy) that:

Long-term there’s no future in printed books.

I understand the point and there may be no future in printed books medium term, but electronic books depends on cheap and ubiquitous electricity and I wouldn’t bet that this will be the case long term!

We know that sooner or later we will have to dramatically reduce our power consumption and we don’t know how smooth or brutal will be the transition.

If we are wise enough to manage a smooth transition, the industry might be able to adapt itself.

If not, there is a serious risk is that many books or web pages, digital photos, songs, music, videos that rely on cheap energy are simply lost forever!

Should we print web pages to archive them?

Adaptation automatique d'un éditeur à divers encodages ?

2012-02-02 Stéphane Bortzmeyer - xmlfr

On lit parfois que le changement de l'encodage par défaut sur une machine Unix est simple, on modifie une variable d'environnement, par exemple LC_CTYPE et c'est tout. C'est oublier les fichiers existants : changer la variable d'environnement ne va pas magiquement les convertir. Est-ce que l'éditeur emacs s'adaptera tout seul au cas où on a un mélange de fichiers avec l'ancien et le nouvel encodage ?

Ce problème est un des obstacles quand on veut migrer un $HOME rempli de fichiers accumulés depuis des années, par exemple depuis Latin-1 vers UTF-8. Convertir tous les fichiers n'est pas forcément réaliste, surtout si on travaille en commun avec des personnes qui ont un autre encodage par défaut. Mais un éditeur comme Emacs n'est-il pas assez intelligent pour s'adapter tout seul ? Testons-le, sur une Debian version stable (nom de code squeeze). Lorsqu'on ouvre un fichier avec Emacs, un caractère à gauche de la barre d'état indique l'encodage (« 1 » pour du Latin-1, « u » pour de l'UTF-8, etc ; si on veut qu'Emacs soit plus explicite, M-x describe-current-coding-system affiche l'encodage actuel).

Avec du texte seul sans aucun marquage, c'est fichu : Emacs ne peut pas connaître l'encodage (sauf à tenter des heuristiques plus ou moins fiables) donc c'est manuellement, lorsqu'on ouvre le fichier, qu'on doit changer l'encodage (C-x RET f ou bien dans les menus Options -> Mule -> Set coding systems) s'il ne correspond pas à l'encodage par défaut.

Avec du XML et l'excellent mode Emacs nxml-mode, tout marche bien. Emacs bascule automatiquement dans le bon mode en regardant si la première ligne est <?xml version="1.0" encoding="utf-8"?> ou bien <?xml version="1.0" encoding="iso-8859-1"?>. (C'est bien l'en-tête qui compte : si on triche et qu'on met du Latin-1 en le marquant comme UTF-8, Emacs passe en mode UTF-8 quand même.) On peut donc travailler avec des fichiers XML qui sont un mélange d'encodages sans problèmes.

Avec LaTeX, formidable, le mode LaTeX détecte l'encodage et Emacs s'adapte. Comme pour XML, il n'inspecte pas le document, il regarde juste s'il y a \usepackage[latin1]{inputenc} ou bien \usepackage[utf8]{inputenc}.

Et en Python, langage de programmation qui permet (voir le PEP-263) de mettre de l'Unicode dans le source ? Le mode Python d'Emacs détecte la mention # -*- coding: latin-1 -*- ou bien # -*- coding: utf-8 -*- et s'adapte correctement.

Décidemment, tout semble bien se passer, à part le triste début avec le texte seul. Essayons un autre format de données qu'XML, JSON (RFC 4627). JSON ne permet qu'un seul encodage, UTF-8 (et n'a donc pas d'option pour en indiquer un autre). Patatras, malgré cela, le mode JSON d'Emacs n'est pas assez intelligent pour passer en Unicode automatiquement et l'édition devient pénible.

Et enfin, pour du texte reST (reStructuredText, celui utilisé pour CNP3) ? Les programmes qui traitent ce format trouvent tout seuls si l'entrée est en UTF-8 ou pas (je ne connais pas de moyen de l'indiquer dans le source). Mais le mode Emacs rst (paquetage python-docutils chez Debian) ne le fait hélas pas.

Si de courageux lecteurs veulent tester Emacs avec d'autres langages, qu'ils n'hésitent pas à m'envoyer les résultats, que je publierai ici, avec mes remerciements.

On l'a vu, le problème dans certains formats (texte brut, notamment), est l'absence de mécanisme pour marquer explicitement l'encodage. Emacs ne semble pas pratiquer le content sniffing, cet examen des octets pour essayer de déduire l'encodage (notons que cette méthode est imparfaite, par exemple elle ne permet pas de distinguer Latin-1 de Latin-9). Emacs a une solution générique pour ce problème de marquage de l'encodage (merci à @T1B0 pour le rappel), mettre une ligne contenant -*- coding: THEENCODING -*- au début du fichier (on précède en général la ligne avec un signe indiquant un commentaire du langage considéré). Cela ne résoud pas vraiment le problème du texte seul (la ligne en question sera affichée, déroutant les lecteurs, grep, etc). Mais cela traite bien le problème de reStructuredText. En mettant au début :

.. -*- coding: utf-8 -*-
Tout marche.

En conclusion, si on change l'encodage de son système, on n'y coupera pas de convertir les fichiers texte.

Et les autres éditeurs ? Mes lecteurs ont-ils des expériences à ce sujet ? J'ai fait quelques essais avec vim et il ne semble pas capable de s'adapter, par exemple à un fichier XML en UTF-8. En cas de modification du texte, il écrit selon la locale courante, produisant des fichiers XML qui ne sont pas bien formés.

RFC 6528: Defending Against Sequence Number Attacks

Ce court RFC spécifie les précautions que doit prendre une mise en œuvre de TCP pour éviter qu'un attaquant ne puisse deviner le numéro de séquence initial. Rien de nouveau, les précautions en question étant programmées dans TCP depuis de nombreuses années, juste un rappel et une mise à jour du précédent RFC sur ce sujet, le RFC 1948.

Pour comprendre le problème de sécurité des numéros de séquence, et les solutions présentées dans ce RFC, il vaut mieux revenir à l'attaque qui exploitait les anciennes vulnérabilités. C'est fait dans l'annexe A du RFC, que je reprends ici.

Le but de l'attaquant est de s'en prendre à un serveur qui autorise par adresse IP. À l'époque du RFC 1948, cela concernait rsh mais, de nos jours, SSH a complètement remplacé cet archaïque protocole. Aujourd'hui, ce serait plutôt un serveur DNS qui authentifie le transfert de zones ainsi, ou bien un serveur SMTP qui autorise seulement certaines adresses IP à passer par lui - même s'il ferait mieux de se servir du RFC 4954, ou encore un serveur HTTP qui ne permet l'invocation de certaines actions qu'aux utilisateurs de certaines adresses. En deux mots, dès que l'autorisation se fait par adresse IP uniquement, il faut s'assurer que vous utilisez un TCP qui mette en œuvre les recommandations de ce RFC 6528.

On le sait, il est trivial pour un attaquant d'envoyer des paquets avec une fausse adresse IP source (le RFC 2827, censé l'empêcher, n'étant quasiment pas déployé). Mais, dans ce cas, l'attaquant ne reçoit pas les réponses. Or, si on veut maintenir une connexion TCP avec sa victime, il faut lui envoyer des paquets avec les données qu'elle attend, notamment le numéro de port et les numéros de séquence. Sinon, la victime va jeter ces paquets TCP qui lui sembleront anormaux. Pour les numéros de port, le RFC 6056 s'en occupe. Pour les numéros de séquence, voyons ce qui se passe. Tout paquet TCP doit inclure ces numéros, un pour chaque sens de la conversation (RFC 793, section 3.3). Ce numéro identifie l'octet suivant à envoyer. Une ouverture de connexion TCP normale ressemble donc, pour le cas où Alice veut parler à Bob, à :

  • Alice->Bob: [SYN] ISNa, null (Alice envoie un paquet TCP où le bit SYN est mis, avec un numéro de séquence initial ISNa - ISN = Initial Sequence Number.)
  • Bob->Alice: [SYN] ISNb, ACK(ISNa+1) (Bob répond qu'il est d'accord, envoie son propre ISN - rappelez-vous qu'il y a deux séquences d'octets, une dans chaque direction - et accuse réception de l'ISN d'Alice.)
  • Alice->Bob: [] ISNa, ACK(ISNb+1) (Alice est d'accord et cela termine la «  triple poignée de mains » qui ouvre une connexion TCP.)
Voici d'ailleurs, vu par tcpdump, un exemple d'ouverture de connexion (vers le dépôt git de Linux) :
% tcpdump -S -n -r tmp/3wayhandshake.pcap
reading from file tmp/3wayhandshake.pcap, link-type EN10MB (Ethernet)
09:47:53.086347 IP 192.134.6.69.39859 > 149.20.4.72.9418: Flags [S], seq 3366079112, ...
09:47:53.242880 IP 149.20.4.72.9418 > 192.134.6.69.39859: Flags [S.], seq 3075029842, ack 3366079113, ...
09:47:53.242910 IP 192.134.6.69.39859 > 149.20.4.72.9418: Flags [.], ack 3075029843, ...
Le S entre crochets indique un paquet SYN. L'option -S est là pour indiquer à tcpdump d'afficher les numéros de séquence absolus, tels qu'ils sont envoyés sur le câble (par défaut, il montre des numéros relatifs, sauf pour les paquets SYN). On note aussi que tcpdump n'affiche pas le premier numéro de séquence s'il n'y a pas de données, et n'affiche pas le second si le bit ACK n'est pas mis.

Le deuxième paquet n'a été accepté par Alice que parce qu'il contenait un numéro de séquence attendu. Mëme chose pour le troisième. Un attaquant qui procéderait au hasard, envoyant des numéros de séquence quelconques, n'aurait aucune chance que ses paquets soient acceptés. Imaginons maintenant que l'attaquant puisse connaître les numéros de séquence utilisés. Bob fait confiance à Alice mais Mallory, l'attaquant, va se faire passer pour Alice. Mallory n'est pas situé sur le chemin entre Alice et Bob (sinon, cela serait trivial, il lui suffirait d'écouter le réseau) :

  • AliceM->Bob: [SYN] ISNa, null (Mallory, utilisant l'adresse source d'Alice, envoie un paquet TCP où le bit SYN est mis, avec un numéro de séquence initial ISNa.)
  • Bob->Alice: [SYN] ISNb, ACK(ISNa+1) (Bob répond qu'il est d'accord, envoie son propre ISN et accuse réception de l'ISN qu'il croit venir d'Alice. Mallory ne recevra pas ce paquet, qui ira à la vraie Alice. Mallory ne sait donc pas ce que vaut ISNb, et doit deviner. En cas de divination juste, son paquet suivant est accepté.)
  • AliceM->Bob: [] ISNa, ACK(ISNb+1) (Mallory, utilisant l'adresse source d'Alice, termine la triple poignée de mains. Bob croit qu'il est connecté à Alice alors qu'il va accepter les paquets de Mallory.)
Et comment Mallory a-t-il trouvé le numéro de séquence que va utiliser Bob ? Le RFC originel, le RFC 793 ne mettait pas du tout en garde contre cette attaque, inconnue à l'époque (1981). Il ne se préoccupait que du risque de collision accidentel entre deux connexions et suggérait donc un algorithme où l'ISN était simplement incrémenté toutes les quatre micro-secondes, ce qui le rendait très prévisible (l'attaquant ouvre une connexion, regarde l'ISN, et sait quel va être celui de la prochaine connexion). Le premier article décrivant une faiblesse dans les mises en œuvre de TCP, faiblesse permettant de trouver le prochain numéro de séquence, a été publié en 1985 (Morris, R., A Weakness in the 4.2BSD UNIX TCP/IP Software, CSTR 117, AT&T Bell Laboratories). À l'époque, elle était suffisante pour établir des sessions rsh avec la victime.

À noter qu'Alice, elle, reçoit l'accusé de réception de Bob, auquel elle ne s'attend pas. Elle va donc émettre un paquet RST qui va fermer la connexion. Diverses techniques permettent à l'attaquant de réussir quand même (par exemple en montant au même moment une attaque DoS contre Alice pour ralentir ses paquets, donnant à l'attaque le temps de réussir).

C'est pour répondre à cette attaque que le RFC 1948 avait été écrit en 1996, documentant la pratique qui était devenue courante, de générer des numéros de séquence, sinon aléatoires, en tout cas imprévisibles. (Un article plus récent et plus détaillé sur la vulnérabilité initiale était celui de Shimomura, T., Technical details of the attack described by Markoff in NYT, envoyé sur Usenet, en comp.security.misc, Message-ID: <3g5gkl$5j1@ariel.sdsc.edu>, en 1995.) Notre RFC 6528 met à jour ce RFC 1948. La section 2 expose les principes d'un bon algorithme de génération d'ISN (Initial Sequence Number), la section 3 décrit l'algorithme proposé. Commençons par celui-ci. Il tient en une formule :

ISN = M + F(localip, localport, remoteip, remoteport)
où M est un compteur qui s'incrémente toutes les quatre micro-secondes, et F une fonction pseudo-aléatoire, qui va prendre comme paramètre le tuple qui identifie une connexion TCP (adresse IP locale, port local, adresse IP distante, port distant). F ne doit pas être prévisible de l'extérieur et le RFC suggère une fonction de hachage cryptographique, comme MD5 (RFC 1321), hachant le tuple ci-dessus après l'avoir concaténé à une clé secrète. La sécurité reposera sur cette clé, l'algorithme de hachage utilisé étant sans doute connu. On peut envisager qu'elle soit générée aléatoirement (vraiment aléatoirement, en suivant le RFC 4086), ou configurée à la main (en espérant que l'ingénieur système ne choisira pas « toto »). Il est recommandé de la changer de temps en temps.

Notez que, bien que MD5 ait de nombreuses faiblesses cryptographiques pour d'autres utilisations, il est parfaitement sûr pour celle-ci (et bien plus rapide que ses concurrents).

La section 2, elle, définissait le cahier des charges : qu'attend t-on d'un algorithme de sélection de l'ISN ? D'abord, il n'est pas forcé d'empêcher des vieux paquets IP qui traînent dans le réseau d'être acceptés. Pour cela, il vaut mieux compter sur l'état TIME_WAIT de TCP (après la fin d'une connexion, garder l'état pendant deux MSL - Maximum Segment Life, cf. RFC 1323). Ça ne marche pas forcément si les connexions sont créées à un rythme très rapide mais c'est la seule solution sûre (mais consommant de la mémoire). On peut lire à ce sujet deux articles sur les générateurs d'ISN, leurs avantages et inconvénients, « Strange Attractors and TCP/IP Sequence Number Analysis » et « Strange Attractors and TCP/IP Sequence Number Analysis - One Year Later ».

Compte-tenu de ces risques, une génération aléatoire de l'ISN suffirait. Mais elle aurait l'inconvénient de de ne pas permettre de deviner si un nouveau paquet TCP appartient à une ancienne connexion ou pas. L'idée de base de ce RFC est donc de créer un espace de numéros de séquence par identificateur TCP (le tuple {adresse IP locale, port local, adresse IP distante, port distant}) et, dans chacun de ces espaces, de suivre les règles d'incrémentation progressive de l'ISN du RFC 793.

Pour ceux qui veulent pousser l'analyse de sécurité, la section 4 prend de la hauteur et rappelle quelques points importants. D'abord que la vraie solution serait évidemment de protéger les paquets IP par de la cryptographie comme le fait IPsec, ou au niveau TCP comme le fait le TCP-AO du RFC 5925 (TLS ou SSH ne suffisent pas, ils n'empêchent pas une attaque par déni de service avec des faux paquets TCP RST).

La section 4 fait aussi remarquer que rien n'est parfait et que l'algorithme proposé dans notre RFC a des effets de bord, comme de permettre le comptage du nombre de machines qui se trouvent derrière un routeur NAT, ce qui peut être une information qu'on souhaiterait garder privée.

Et, surtout, elle rappelle que toutes les précautions de notre RFC 6528 ne s'appliquent que si l'attaquant est en dehors du chemin entre les deux pairs TCP. S'il est sur le chemin et qu'il peut écouter le réseau, elles ne servent à rien.

Quels sont les changements depuis le RFC 1948 ? Il n'y a pas de changement sur le fond (l'algorithme est le même donc un TCP compatible avec le RFC 1948 l'est également avec le RFC 6528). Les changements sont résumés dans l'annexe B. Le statut du RFC a changé (désormais sur le chemin des normes), les exemples maintenant dépassés par l'évolution des techniques ont été mis à jour ou supprimés,

On l'a dit, les précautions décrites dans ce RFC sont présentes dans les implémentations depuis longtemps. Pour un exemple de mise en œuvre de cet algorithme, on peut regarder le code source de NetBSD. Il se trouve en sys/netinet/tcp_subr.c. Son comportement est contrôlé par la variable sysctl iss_hash. Mise à 1, elle indique qu'il faut utiliser l'algorithme ci-dessus. À 0, qu'il faut utiliser une valeur aléatoire. Prenons le premier cas, celui de notre RFC. On voit la génération du secret (un nombre aléatoire, issu de cprng_strong()) puis le hachage MD5 de l'identifiant de connexion avec le secret :


	/*
	 * If we haven't been here before, initialize our cryptographic
	 * hash secret.
	 */
	if (tcp_iss_gotten_secret == false) {
		cprng_strong(kern_cprng,
			     tcp_iss_secret, sizeof(tcp_iss_secret), 0);
		tcp_iss_gotten_secret = true;
	}

        /*
	 * Compute the base value of the ISS.  It is a hash
	 * of (saddr, sport, daddr, dport, secret).
	 */
	MD5Init(&ctx);
	MD5Update(&ctx, (u_char *) laddr, addrsz);
	MD5Update(&ctx, (u_char *) &lport, sizeof(lport));
	MD5Update(&ctx, (u_char *) faddr, addrsz);
	MD5Update(&ctx, (u_char *) &fport, sizeof(fport));
	MD5Update(&ctx, tcp_iss_secret, sizeof(tcp_iss_secret));
	MD5Final(hash, &ctx);
	memcpy(&tcp_iss, hash, sizeof(tcp_iss));

        return (tcp_iss);

Pour Linux (remerciements au passage à @ackrst), il faut regarder le net/core/secure_seq.c qui contient à peu près la même chose (la variable net_secret est initialisée au tout début de ce fichier) :

__u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
				 __be16 sport, __be16 dport)
{
	u32 hash[MD5_DIGEST_WORDS];

	hash[0] = (__force u32)saddr;
	hash[1] = (__force u32)daddr;
	hash[2] = ((__force u16)sport << 16) + (__force u16)dport;
	hash[3] = net_secret[15];

	md5_transform(hash, net_secret);

RFC 6518: Keying and Authentication for Routing Protocols (KARP) Design Guidelines

Dans l'ensemble du travail engagé pour améliorer la sécurité du routage sur l'Internet, un sous-problème important est celui de la gestion des clés. En cryptographie, c'est souvent par une faiblesse dans cette gestion que les systèmes de sécurité sont compromis. Le groupe de travail KARP de l'IETF est occupé à améliorer les protocoles de gestion de clés et son premier RFC, ce RFC 6518, expose les propriétés attendues des futurs protocoles de gestion des clés des routeurs.

Prenons par exemple N routeurs OSPF qui veulent s'authentifier les uns les autres. La technique du RFC 2328 est d'avoir un secret partagé par tous les routeurs du même réseau local. Les messages OSPF sont concaténés avec ce secret, le résultat de la concaténation est ensuite condensé cryptographiquement, ce qui permettra au destinataire de s'assurer que l'émetteur connaissait bien le secret. Ce secret partagé est une clé cryptographique. Qui va la générer ? Comment la distribuer de façon sûre ? Comment la changer facilement et rapidement si le secret est compromis (ou, tout simplement, si un employé quitte l'entreprise) ? Ce genre de questions est la problématique de gestion de clés. Dans le cas d'OSPF, actuellement, la quasi-totalité des opérateurs de routeurs fait cela à la main (on se logue sur chaque routeur et on change le secret...) ou, à la rigueur, via un protocole général de configuration des routeurs. Peut-on faire mieux ? C'est en tout cas ce que va essayer de faire le groupe KARP.

C'est que les mécanismes actuels ne sont pas satisfaisants. Comme le rappelle la section 1 du RFC, lors d'un colloque en 2006 (cf. RFC 4948), les participants avaient dénoncé la vulnérabilité des routeurs aux tentatives de prise de contrôle et appelé à durcir leur sécurité. Quatre axes d'amélioration avaient été identifiés, améliorer la gestion des routeurs (groupe de travail OPSEC), améliorer les IRR, valider les annonces de route (groupe de travail SIDR), et enfin sécuriser les communications entre routeurs (groupe de travail KARP), ce qui fait l'objet de ce RFC. Les informations de routage sont échangées via un protocole et la protection de ce protocole se fait par la cryptographie. Qui dit cryptographie dit clés. Lorsqu'un routeur cherche une clé pour protéger un message, où demande-t-il ? Pour l'instant, il n'y a pas de mécanisme standard et KARP va essayer d'en développer un. Le plus courant aujourd'hui est la gestion manuelle des clés (l'opérateur configure les clés, les change à la main - lorsqu'il y pense, les communique via PGP, SCP voire sans aucune sécurité) mais le RFC estime que le futur est dans des mécanismes automatisés de gestion de clés, les KMP (pour Key Management Protocol). Un KMP, par exemple, change automatiquement les clés au bout d'une période pré-définie.

Compte-tenu de la variété des protocoles de routage, et du transport qu'ils utilisent, ce sera un mécanisme abstrait, pas un protocole précis (ce RFC 6518 n'a donc pas d'implémentation, il définit juste un cadre). Plus précisement, KARP va concevoir les interfaces abstraites entre le système de gestion de clés et le protocole de routage, puis, pour chaque protocole de routage, la correspondance entre cette interface abstraite et le protocole réel. Un projet ambitieux.

Maintenant, au boulot. Qu'est-ce qui est déjà fait dans ce RFC ? La section 2 classe les protocoles de routage selon leurs propriétés. L'idée est que les protocoles de routage qui partagent les mêmes propriétés pourront, avec un peu de chance, utiliser les mêmes mécanismes de gestion de clés. Première propriété, le type de message. Certains protocoles sont de type un-vers-un : les messages d'un routeur sont envoyés à un autre routeur. Les UPDATE BGP (RFC 4271) fonctionnent ainsi. Mais c'est aussi le cas de LDP (RFC 5036), de BFD (RFC 5880) et même d'OSPF (RFC 2328 dans certaines conditions (liens point -à-point). D'autres protocoles fonctionnent en un-vers-plusieurs. Un routeur diffuse sur le réseau local l'information de routage. C'est le mode de fonctionnement le plus courant d'OSPF et c'est aussi celui de RIP (RFC 2453). Enfin, il y a les protocoles utilisés pour le multicast.

Deuxième propriété pour classer les protocoles de routage, proche de la précédente mais pas identique, le fait que la clé soit par groupe ou par pair. Dans BGP ou LDP, les clés sont individuelles, on a une clé différente par pair. Dans OSPF, la clé est la même pour tous les pairs d'un groupe.

La section 3 liste ensuite les points auxquels il faut penser lorsqu'on envisage un protocole de gestion de clés, un KMP. Le RFC 4107 fournit les bases générales et notre RFC l'adapte aux protocoles de routage. Entre autres, il faudra penser aux paramètres à passer avec le système de gestion de clés, comme la durée de vie pour les clés, l'identificateur de l'association de sécurité (SPI dans IPsec, KeyID dans TCP-AO, etc), l'algorithme de chiffrement et plusieurs autres.

Deux points sont soulignés par le RFC, les questions particulières des clés asymétriques (section 3.1) et le cycle de vie des clés (section 3.2). Les clés asymétriques sont souvent une bonne solution aux problèmes de sécurité : déjà utilisées par les routeurs (lorsqu'ils sont administrés via SSH), générées sur le routeur, elles peuvent n'avoir jamais besoin de le quitter (le RFC ne le dit pas clairement mais on peut même imaginer un petit HSM dans le routeur). Générées aléatoirement, elles ne peuvent pas être devinées comme le sont tant de mots de passe choisis par des humains. Il faut juste faire attention à leur taille, pour limiter les risques des attaques par force brute (RFC 3766). L'algorithme classique pour ces clés est RSA mais les algorithmes à base de courbes elliptiques commencent à se répandre, et permettent d'utiliser des clés plus courtes.

Quant au cycle de vie des clés, notre RFC insiste surtout sur la nécessité d'avoir des remplacements (rollover) de clés qui soient discrets : un remplacement de clés ne devrait pas casser les sessions de routage existantes, car cela imposerait des recalculs lourds des tables de routage, se propageant dans tout le réseau, et entraînant parfois des perturbations dans la connectivité. (Le RFC ne le cite pas mais la traditionnelle authentification MD5 de BGP - RFC 2385 - n'a pas cette propriété. Changer la clé impose de relancer les sessions BGP. C'est sans doute une des raisons pour lesquelles ces clés ne sont jamais changées, même quand tout le monde les connait.)

Pourquoi, d'ailleurs, faut-il changer les clés de temps en temps ? Il peut y avoir des raisons cryptographiques (progrès de la cryptanalyse, mais le RFC note qu'en pratique, ce sont les cas les plus rares, des problèmes moins prestigieux scientifiquement sont bien plus communs), des raisons liées au personnel (départ d'un ingénieur qui connaissait les clés), des raisons plus urgentes (compromission d'une machine où étaient stockées des clés). Même s'il n'y a aucune raison immédiate de changer, un remplacement des clés de temps en temps peut être nécessaire pour s'assurer qu'un attaquant qui a obtenu une clé et l'utilise discrètement (de manière purement passive), ne puisse pas profiter de son butin éternellement.

Lorsque les procédures de changement de clés sont manuelles, les changements peuvent être en eux-mêmes une source de vulnérabilité (l'erreur est humaine...).

Après ces préliminaires, la section 4 dessine le travail futur. Il y a deux chantiers génériques (indépendants du protocole de routage) importants, le premier étant un pré-requis du second :

  • Doter tous les protocoles de routage de mécanismes leur permettant l'agilité des algorithmes (changer d'algorithme facilement, contrairement au RFC 2385, qui ne permettait que MD5) et celle des clés (changer de clés sans casser les sessions entre routeurs). À l'heure actuelle, c'est très loin d'être le cas.
  • Une fois ces mécanismes en place, développer un KMP, un Key Management Protocol permettant la gestion et le remplacement automatique des clés. Ce dernier protocole devrait être aussi indépendant du protocole de routage que possible.
Pour que les mécanismes nouveaux aient des chances de succès, ils doivent pouvoir être déployés sans ajouter de complexité par rapport à ce que font déjà les opérateurs (qui connaissent SSH, TCP-MD5, HTTPS et les certificats, etc). Le but n'est pas de faire un système qui empêche l'opérateur de faire une erreur (comme d'utiliser « foobar » comme mot de passe pour tous les systèmes) mais de faire un système qui soit utilisé dans le monde réel, et pour cela, la simplicité et la déployabilité sont des critères essentiels (mais très souvent oubliés par les experts en sécurité, qui se soucient d'avantage de faire des systèmes parfaits que des systèmes déployables, cf. section 6).

Avec une gestion manuelle des clés, on ne peut gérer de manière raisonnablement sûre que des petits réseaux. La deuxième étape sera donc de déployer le mécanisme de gestion automatique.

Le travail d'amélioration de chaque protocole de routage est décrit en section 4.2 sous forme d'une liste de tâches :

  • Analyser le protocole actuel pour déterminer de façon précise quels sont ses mécanismes de sécurité présents,
  • Déterminer ce qui lui manque pour atteindre le premier état de sécurité souhaité (agilité des algorithmes et possibilité de changer de clés en vol),
  • Analyse des étapes nécessaires pour aller du premier point au deuxième sans tout casser, en faisant particulièrement attention aux questions de déployabilité dans le monde existant,
  • Analyser le futur KMP (protocole de gestion de clés) pour ce protocole de routage particulier : a-t-il des demandes spécifiques ?
  • Déterminer ce qui manque pour atteindre le deuxième état de sécurité (gestion automatique des clés),
  • Normaliser l'adaptation du KMP à ce protocole et déployer le résultat.

On l'a vu en section 2, KARP classe les protocoles de routage en catégories selon leurs propriétés. La section 5 examine les points qui sont spécifiques à chaque catégorie. BGP, LDP et quelques autres sont dans la catégorie « messages un-vers-un et clés par pair ». BGP fonctionne toujours sur TCP, LDP parfois sur TCP et parfois sur UDP. Pour le cas de TCP, une bonne partie du travail a déjà été faite dans le groupe TCPM, avec la technique d'authentification AO (RFC 5925) qui a les propriétés voulues pour la première phase du travail de KARP (agilité des algorithmes et changement de clé facile). Il ne reste donc que le cas de LDP sur UDP.

Pour la catégorie « un-vers-plusieurs avec clés par groupe », qui comprend OSPF, IS-IS et RIP, rien de générique n'est fait. Le problème est ici bien plus difficile, d'autant plus que ces protocoles n'utilisent pas en général de protocole de transport standard, et ne peuvent donc pas réutiliser un mécanisme fourni par la couche 4 (comme peut le faire BGP avec AO).

BFD est un cas à part et qui nécessitera sa propre équipe. Par exemple, il est beaucoup plus sensible aux délais que les autres. Pour lui, une milliseconde est très longue.

On l'a vu, ce RFC répète régulièrement qu'il est essentiel de prévoir un déploiement incrémental des nouveaux mécanismes de sécurité. Pas question d'ignorer l'existant. La section 6 insiste sur ce point. Contrairement à une attitude fréquente chez les experts en sécurité, qui est de chercher une solution parfaite, KARP va essayer de trouver des solutions qui puissent être déployées par étapes, sans casser le routage actuel, même si ces solutions ne sont pas les meilleures, question sécurité. Par exemple, les routeurs configurés avec les nouveaux mécanismes doivent pouvoir interagir sans ennuis avec les vieux routeurs non sécurisés.

Un des problèmes de sécurité les plus difficiles dans l'Internet est celui des attaques par déni de service (section 7). Ces attaques touchent aussi les routeurs et les protocoles de routage. Il ne faut donc pas que les nouvelles techniques conçues dans le cadre du groupe KARP aggravent le problème. Par exemple, les calculs cryptographiques peuvent être coûteux, surtout pour les ressources matérielles souvent limitées des routeurs, et les protocoles ne doivent donc pas permettre à un attaquant de faire faire au routeur une énorme quantité de ces calculs. Pour éviter cela, il faut permettre au routeur de faire des vérifications non-cryptographiques, donc bien plus légères, avant de se lancer dans les calculs compliqués. Par exemple, le RFC 5082 utilise le TTL du paquet entrant (quelque chose de trivial à vérifier) pour empêcher certaines attaques. Il est important, dans le cadre de KARP, de développer et de documenter de telles alternatives. D'autre part, le protocole doit être conçu de manière à ce que ce soit l'initiateur de la connexion (un attaquant potentiel) qui ait le plus de travail cryptographique à faire, et qui doive maintenir un état pendant ce temps.

La section 9 du RFC, la traditionnelle section sur la sécurité, détaille quelques points précis qui n'avaient pas trouvé leur place dans le reste du RFC. Par exemple, il est important de considérer aussi si le protocole de routage qu'on veut protéger est un IGP ou un EGP (certains protocoles peuvent être utilisés pour les deux, comme BGP avec son mode iBGP). Les deux sont sans doute aussi importants mais les menaces et les solutions ne seront pas forcément les mêmes. Un routeur purement interne et qui n'a aucun accès à l'Internet est ainsi sans doute moins menacé qu'un routeur BGP posé sur un point d'échange avec des dizaines d'autres routeurs inconnus.

Autre question transversale, celle des clés partagées ou uniques. Faut-il utiliser la même clé à plusieurs endroits ? Le débat est simple : c'est la sécurité (clés uniques !) contre la commodité (clés partagées). Actuellement, dans la grande majorité des environnements, les opérateurs ont choisi la commodité, réutilisant la même clé à plusieurs endroits. Les clés des routeurs sont stables dans l'espace (utilisées dans plusieurs routeurs) et dans le temps (on les change rarement, voire jamais et certains routeurs gardent la même clé toute leur vie). L'un des buts de KARP est de casser ce dilemne « sécurité ou commodité » en fournissant des mécanismes de gestion de clés qui soient sûrs (clés uniques) tout en étant faciles à déployer.

Enfin, la section 9.4 discute du dernier problème transversal, la distribution des clés. La méthode la plus courante aujourd'hui est un mécanisme « hors-bande », par exemple l'administrateur qui se connecte en SSH au routeur et entre manuellement les clés dans la configuration. Ça ne passe pas tellement à l'échelle (il faudrait automatiser les connexions SSH, par exemple avec Capistrano, pour faire l'opération sur N routeurs). Et changer toutes les clés en cas, par exemple de départ d'un administrateur (ou, pire, en cas de compromission de la clé) est trop lent. L'approche d'un KMP, protocole de gestion de clés, est donc préférée par KARP, comme nous l'avons déjà vu. Mais le RFC ne cache pas que le KMP a ses propres problèmes : lenteur au début (davantage de calculs cryptographiques) et surtout risques liés au manque de maturité des programmes, les KMP étant encore chose récente.

Une des possibilités envisagées est de réutiliser un KMP existant comme IKE, adapté au monde du routage, mais tournant en dehors du protocole de routage. L'autre possibilité est un nouveau KMP, embarqué dans le protocole de routage. Mais la décision n'est pas encore prise.

2012-01-31

★ Résolutions : rediriger, économiser et débattre

2012-01-31 David Larlet - BioloGeek.com - avenir

Juste à temps pour pouvoir encore appeler ça résolutions ! Seulement 4 billets et quelques pensées en 2011. On peut dire que l'année n'aura pas été très riche en écrits, même si j'essaye de me forcer à écrire en anglais par ailleurs (très douloureux exercice compte tenu de mon niveau).

Retour sur 2011 :

  • Découvrir : au Japon depuis 4 mois, l'intégration est encore plus difficile que prévue mais les découvertes sont au rendez-vous, j'ai encore beaucoup de mal à écrire sur le Japon alors je n'en dis pas plus ;
  • Concrétiser : le GR20 m'a (re)donné le goût à la montagne et à l'activité sportive, au-delà de la semaine de marche c'est la démarche qui m'a fait progresser, au point d'avoir envie de faire le Mont Fuji en courant ;
  • Transmettre : pas de stage finalement et avec le recul c'est pas plus mal compte-tenu du rush d'avant départ cet été. Je n'ai pas du tout renoncé à transmettre cela dit :-).

Rediriger

Tout d'abord techniquement, j'ai décidé de consolider mon identité numérique sur larlet.fr et d'y rediriger/aggréger tous mes contenus éparpillés sur divers noms de domaines. Ce blog est le dernier sur la liste et il va y passer dès que j'aurai choisi s'il reste dynamique ou si je fais un export statique. Les commentaires seront définitivement coupés dans les prochains jours quelle que soit la solution retenue.

Redirection professionnelle également, je suis en pleine réflexion sur ce que j'ai envie de faire par la suite. J'ai quelques idées complètement déconnectées, d'autres plus proches du Web. Ça se terminera peut-être par une pluri-activité, en tout cas j'ai bien envie de me rapprocher de la terre, de la forêt, de la montagne.

Économiser

Vivre dans le plus grand centre commercial du monde vous permet d'avoir une réflexion sur la consommation et ses gaspillages. Je suis de plus en plus écœuré par cette mascarade, par une société qui a transformé le citoyen en consommateur au détriment de son humanité et de sa sociabilité.

Je suis en pleine démarche de déconsommation et je compte relocaliser mon alimentation à mon retour en France. Je ne peux plus continuer en détournant le regard. Je suis en train de revoir complètement ma façon d'appréhender les choses avec ce nouvel angle de vue. Il est temps de faire preuve d'intelligence et de se ré-adapter.

Débattre

Une idée n'est vivante que lorsqu'elle est débattue pour paraphraser Christopher McCandless dans Into The Wild. C'est une chose qui me manque énormément ici et qui me donne des idées pour la suite, le débat français devrait être au patrimoine mondial de l'UNESCO au même titre que le repas français ;-).

J'ai bien envie de lancer des groupes de discussion physiques (vs. numériques) sur des problémantiques locales afin de faire avancer les choses à mon échelle. Je ne crois plus à une volonté citoyenne soldée d'une action qui serait plus étendue que l'échelle de la commune. Si l'année dernière j'avais des envies de GeeksSansFrontières évoqué lors des rencontres Django, je me dis maintenant qu'un GeeksLocaux serait peut-être moins sexy et ambitieux mais au combien plus efficace.

Ces résolutions peuvent paraîtrent déprimantes (ou dans l'air du temps…) mais elles ont également une part excitante d'espoir et d'inconnu qui sont extrêmement motrices. 2012 sera l'année d'un changement politique personnel au sens politeia du terme, je laisse le spectacle lassant de la politikè à d'autres.

Logo biologeek Résolutions : rediriger, économiser et débattre a été rédigé par David Larlet pour biologeek.com et a été originellement posté le 31 janvier 2012. À part exceptions, c'est ©2004-2012 David Larlet et sous licence (presque) libre autorisant la reproduction, la distribution et la modification sous certaines conditions. Veuillez les respecter.

Le devenir algorithmique (4) : les jeux d’écriture

2012-01-31 Christian Fauré - Défaut, algorithme, grammatisation, transfert

Dans une précédente note sur les première pratiques scripturales dans les activités de commerce et de transactions économiques, je rappelais que, avec l’invention de la monnaie, une figure avait émergée en la personne du « changeur », qui évolua lui-même vers la fonction du « banquier » quand il se mit à faire « travailler » la trésorerie générée par son activité de change. Cette nouvelle activité lui imposa d’inventer de nouveaux jeux d’écritures, des écritures comptables.

Si « Jeux d’écriture » renvoie aujourd’hui à des jeux pour l’apprentissage de l’écriture dans les moteurs de recherche web, l’expression est également un euphémisme pour désigner des malversations comptables et financières. En ce dernier sens, le jeu d’écriture est perçu comme un tour de passe-passe potentiellement frauduleux.

En dehors des question des transactions économiques, par exemple dans l’informatique, il m’apparaît évident que l’on a à faire à des jeux d’écritures. Un protocole, un compilateur, un programme, tout cela peut parfaitement être qualifié de jeu d’écriture. Serveurs et clients web inter-échangent via un jeu d’écriture. (Un style d’architecture décrit toujours les règles d’un jeu d’écriture)

Il est beaucoup moins évident pour moi de parler de jeu d’écriture à propos des oeuvres littéraires. Il y a bien des styles et des genres mais, bien qu’on puisse dire que ces oeuvres répondent à des règles, je n’arrive pas à me les représenter comme relevant des jeux d’écriture dont je parle ici, ou alors de manière très lointaine, si ce n’est métaphoriquement.

Pour qu’il y ait jeu d’écriture, il faut qu’il y ait une volonté de reproductibilité, d’abord pour soi-même puis pour les autres. Un auteur peut être seul avec son oeuvre, pas celui qui utilise des jeux d’écritures. La pratique scripturale n’est pas la même dans les deux cas. Dans le jeu d’écriture dont je parle ici, la règle est manifeste et il faut la respecter. En ce sens, la littérature est beaucoup plus transgressive dans ses pratiques de l’écriture.

Les jeux d’écriture ont ainsi une fonction collective évidente : les recettes, les méthodes et les techniques de ces jeux d’écriture ont vocation à être adoptées et partagées en constituant des communautés de jeux d’écritures. Autour de chaque jeu d’écriture, des communautés de pratiques se constituent (quelles soient disciplinaires, corporatiste ou politiques).

Il y a donc des jeux d’écritures comptables, juridiques, mathématiques, informatiques, etc. À cette perspective selon le point de vue des champs disciplinaires il faudrait rajouter une perspective temporelle. En effet, l’évolution du processus de grammatisation (cf. Les enjeux de la grammatisation des relations) – aujourd’hui à son stade numérique – tend vers des pratiques de plus en plus poussées avec des techniques de jeu d’écriture qui s’automatisent, parfois en « temps réel » comme c’est le cas dans les écritures spéculatives de la finance.

Plus le processus de grammatisation progresse, plus les jeux d’écritures deviennent des puissances effectives. On se rend compte que la « virtualité » du numérique est en fait ce qui opère notre monde via des jeux d’écritures (centrales nucléaires, toutes les formes de transports, et c’est encore plus le cas pour les activités tertiaires des Banques, de la Finance et des Assurances).

Il m’apparaît également que les jeux d’écriture relèvent tous d’une approche algorithmique et en ce sens s’inscrivent dans le « devenir algorithmique » dont j’ai déjà eu l’occasion de parler ces dernières années.

Par ailleurs, les jeux d’écritures sont également des technologies de transfert : de savoirs, de propriétés, de biens. Jamais ces technologies de transfert n’ont été aussi puissantes, c’est ce que l’on perçoit quand on oppose – même si c’est à tort –  l’économie « virtuelle » de la finance à l’économie « réelle » de la production.

L’écriture qui n’est pas simplement un jeu d’écriture, celle de la poésie, de la philosophie, des humanités, de la littérature et des sciences humaines est pourtant plus que jamais nécessaire car c’est de sa richesse et de sa vitalité que naissent des analyses critiques de ces jeux d’écriture, véritable « bras armé » des technologies de transfert.

Signaler sur Twitter

Related posts:

  1. Le code et l’écriture Après la publication de Littérature du code et la lecture...
  2. Nous vivons un miracle Le « miracle grec » vient du fait que les techniques d’écriture,...
  3. Le devenir algorithmique Le processus de grammatisation décrit par Sylvain Auroux n’est pas...

Le temps de l’utopie

2012-01-31 Eric van der Vlist - Books/Livres, Environnement, Français, Society/Societe

Je n’ai pas encore regardé le film, mais je viens de terminer la lecture des Sentiers de l’Utopie, un livre-film d’Isabelle Fremeaux et John Jordan.

J’ai beaucoup aimé cette balade parmi quelques hauts lieux de l’Utopie en Europe et cette lecture renforce mon sentiment que pour surmonter la crise que nous vivons, les seules solutions réalistes sont celles qui sont qualifiées d’utopiques!

En 2008 déjà, en lisant les motions déposées pour le congrès de Reims du PS, j’avais été surpris de remarquer que la seule motion qui semblait prendre pleine conscience de l’ampleur de la crise et proposer des solutions proportionnées était la motion “F” du mouvement Utopia.

L’utopie a mauvaise presse : les utopies que l’on a voulu appliquer à grande échelle au vingtième siècle se sont toutes soldées de manière tragique.

Si aujourd’hui les utopies sont les seules à proposer des solutions réalistes, c’est que nous sommes à un moment charnière où pour sauver notre civilisation il nous faut modifier profondément nos habitudes pour instaurer plus d’équité ce qui est habituellement qualifié d’utopiste.

Les Sentiers de l’Utopie nous font découvrir des lieux qui expérimentent, chacun à sa manière, des modes d’interaction différents. Ce ne sont pas des dogmes à suivre aveuglément mais autant de laboratoires dont les découvertes seront précieuses pour trouver des solutions plus générales.

Pour terminer ce billet, deux images glanées hier soir dans un Paris où il allait geler opour la première fois de l’hiver alors que je me rendais à pieds à la conférence de Christian Vélot sur les plantes mutées à la mairie du deuxième arrondissement :

  • une terrasse ouverte et chauffée, où l’on chauffe l’extérieur pour que quelques consommateurs puissent déguster une bière à l’extérieur plutôt qu’à l’intérieur.
  • à quelques mètres, un sans abri se recroqueville, adossé à un sac à dos pour se préparer à passer la nuit qui sera glaciale.

Un gaspillage inutile de ressources non renouvelables dont les plus démunis sont totalement dépourvu, comment mieux illustrer la crise dans laquelle nous nous enfonçons?

 

2012-01-28

PhotosNormandie a cinq ans – un bilan en forme de FAQ

2012-01-28 Patrick Peccatte - Du bruit au signal (et inversement) - Culture visuelle - Déjà vu

Lire le billet PhotosNormandie a cinq ans – un bilan en forme de FAQ sur Culture Visuelle.... Lire PhotosNormandie a cinq ans – un bilan en forme de FAQ

Unes

2012-01-28 Patrick Peccatte - Du bruit au signal (et inversement) - Culture visuelle - Déjà vu

Lire le billet Unes sur Culture Visuelle.... Lire Unes

2012-01-27

Quel nom vérifier dans un certificat X.509, si on a été redirigé ?

Une discussion animée vient d'avoir lieu sur la liste du groupe de travail IETF DANE, qui travaille à permettre l'utilisation de certificats dans le DNS (en simplifiant, il s'agit de remplacer X.509 par DNSSEC, voir mon exposé aux JRES). La question était « Lorsqu'il y a eu des redirections vers un autre nom de domaine, quel nom chercher dans le certificat ? Celui de départ ? Celui d'arrivée ? »

Prenons un exemple concret pour voir. Supposons un protocole nommé PDP (pour Pur Distribution Protocol) qui permet de récupérer des contenus (musique, films, etc) qui avaient été auparavant chargés sur un serveur. Pour trouver le serveur adéquat, mettons que cet hypothétique PDP utilise les enregistrements SRV du DNS (RFC 2782), afin d'assurer la répartition de charge, et la résistance aux pannes. Mettons que le domaine microupload.example ait deux serveurs, on aurait quelque chose comme :

_pdp._tcp.microupload.example.    SRV     0 0 6642  content.example.com.
                                  SRV     1 0 6642  content.backup.example.
Vu les priorités (le premier chiffre après SRV), le second serveur ne sera utilisé qu'en cas de panne du premier. Mais, et c'est là que ça devient intéressant, on va supposer que PDP, pour échapper à des gens malintentionnés qui voudraient savoir ce qu'on télécharge, chiffre toutes ses communications avec TLS et authentifie le serveur avec X.509. Imaginons que le premier serveur soit en panne à ce moment et que le client PDP se connecte donc à content.backup.example. À quel nom doit être le certificat de ce dernier ? microupload.example parce que c'est le point de départ de la transaction ? content.backup.example parce que c'est le nom du serveur ? Prenez le temps de réflechir à cette question cinq minutes, et essayez de faire une liste des raisons en faveur du premier choix et de celles en faveur du second. Il est probable que vous en oublierez, car le problème est compliqué.

Vous y êtes ? Vous avez vraiment cherché ? Bon, alors, maintenant, des éléments de réponse. Le problème du groupe DANE avait été enregistré comme ticket #28 mais, si vous n'avez pas lu le RFC 6394, ce n'est pas trop grave, la question n'est pas du tout spécifique à DANE. Elle a même fait l'objet d'un RFC entier, le RFC 6125, que je trouve personnellement peu lisible. Son principal mérite est de montrer que la question de l'identité n'est pas triviale du tout et qu'elle peut signifier des choses différentes selon la personne.

Et la question n'est pas non plus spécifique aux enregistrements SRV comme dans l'exemple ci-dessus. On aurait la même question, par exemple avec des MX.

Alors, une liste de raisons en faveur du premier choix, utiliser le nom de départ (ici, microupload.example) :

  • Le nom de départ est celui que voit l'utilisateur. C'est celui en lequel il a confiance. C'est le nom du service, pas celui du serveur du moment.
  • Si la résolution DNS n'est pas sécurisée (par exemple avec DNSSEC), rien ne prouve que le SRV obtenu est légitime. X.509 ne servirait à rien dans ce cas. (Notez que, dans le cas spécifique de DANE, DNSSEC est obligatoire donc, si on décide que le nom utilisé par DANE sera le premier, il sera sécurisé par DNSSEC de toute façon.)
Et les raisons d'utiliser au contraire le nom d'arrivée, ici content.backup.example ?
  • Dans le cas d'un serveur qui héberge des services pour des milliers de domaines différents, il faudra gérer beaucoup de certificats.
  • Il existe plusieurs méthodes pour avoir plusieurs certificats sur la même machine. Si la méthode choisie est de mettre tous les noms dans un même certificat, celui qui se connecte peut apprendre la liste de tous les clients (au sens affaires, pas au sens protocole réseau) du serveur juste en regardant le certificat.
  • Dans le cas où le serveur n'est pas géré par la même organisation que le domaine (ce qui est fréquent aujourd'hui), une stricte coordination sera nécessaire. Si le domaine acquiert un nouveau certificat, il leur faudra s'assurer qu'il est bien installé sur le serveur.
Bref, tester le domaine de départ est en général meilleur du point de vue sécurité, mais tester le domaine d'arrivée facilite en général le déploiement.

Mais, puisque le problème est connu depuis longtemps, que spécifient les différents RFC sur les protocoles qui utilisent TLS ? Eh bien, souvent, ce n'est pas clair. Essayez de lire le RFC 3207 pour voir ce que devrait faire un bon client SMTP, par exemple. Le vocabulaire peu stable du RFC ne permet guère de trancher. L'avis dominant est toutefois que SMTP doit utiliser le domaine d'arrivée. Donc, s'il y a un MX :

michu.example.     IN      MX      10 mail.provider.example
Alors, le MTA qui essaiera de transmettre du courrier en TLS à monsieur@michu.example cherchera sur l'autre MTA un certificat portant le nom de mail.provider.example.

Mais, et c'est là que cela devient amusant, d'autres protocoles ont pu faire des choix différents ! C'est ainsi que XMPP spécifie le contraire, on doit utiliser le domaine du début, avant toute redirection (RFC 6120, section 5.4.3.1). Et pour HTTP ? Ce dernier n'utilise pas d'enregistrement DNS de redirection (comme les MX ou les SRV). Il ne reste donc comme possibilité de piège, au niveau DNS, que les CNAME. Ceux-ci sont délicats car, contrairement aux SRV ou MX, la bibliothèque qui fait la résolution ne donne pas forcément à l'application (ici, le navigateur), une indication sur la présence ou non d'un alias (un enregistrement CNAME). Le RFC 2818 n'est pas parfaitement clair mais semble de toute façon avoir choisi aussi l'approche « domaine de départ » (ici, celui qui est dans l'URI).

Et que va faire le groupe DANE ? La question n'est pas encore définitivement tranchée mais ce sera probablement « chaque protocole se débrouille » car il est trop difficile de spécifier un choix qui convienne à tous.

2012-01-26

Avis de décès annoncé : le CITIC 74 va disparaître, c'est décidé.

La Haute-Savoie est unique, notamment en TIC. Mais cela va changer, hélas.

En pointe pour les TIC en général

Le paysage haut-savoyard des TIC est totalement inédit pour les services publics : depuis 1995 (soit plus de 16 ans !) toutes les écoles sont connectées à Internet, comme les collèges, les lycées, les mairies, les bibliothèques, les offices du tourisme, les centres hospitaliers et autres services publics du département. Et cela sur décision du Conseil Général. C'est le CRI 74 (Centre de Ressources Informatiques) qui a assuré cette mission, reprise par le CITIC 74 (Centre de l'Informatique et des Technologies de l'Information et de la Communication) créé en 2007.

C'est une « mission de service public » en tant que « Fournisseur de services internet pour les collectivités » (sic), à laquelle il faut ajouter « Hébergement de sites web et gestion des noms de domaines, Messagerie, Sécurité, Filtrage des spams et des virus, Filtrage des sites web indésirables, Assistance, Développement, Formation, Support et hot-line, Gestion des systèmes d'information scolaires » ! La liste officielle sur la page TIC du site du Conseil Général est impressionnante [1].

Mais fin 2012, ce panorama inédit en France va disparaître. La décision a été officialisée lors de la réunion du Conseil Général des 13 et 14 décembre à propos du budget primitif 2012. L'ordre du jour indique laconiquement : « Dissolution du CITIC 74 au 31 décembre 2012 » (sic) [2]. L'expression est forte. Le point a été traité. La presse locale l'a relaté. C'est acté.

Les écoles, collèges, lycées, mairies, hôpitaux et autres structures publiques connectées vont donc devoir se tourner vers d'autres prestataires, ceux présents dans le département ou ailleurs : fin des services Internet via un service public.

En pointe pour les logiciels libres (et les standards ouverts) en particulier

En Haute-Savoie, l'infrastructure réseau mise en place utilise massivement et délibérément des logiciels libres (et des formats ouverts). L'argent public des financements a donc été investi de manière très importante dans les logiciels libres, avec notamment du développement d'outils propres aux besoins. Ils ont été mis à disposition, comme par exemple le logiciel PingOO, « produit phare du CITIC 74 » (sic). L'action du CITIC pour les logiciels libres a aussi permis d'aider des associations comme Sésamath, Framasoft et quelques autres. Sans oublier des manifestations comme les différentes éditions de LibreEdu qui étaient un rendez-vous important.

Sans le savoir et sans le souligner (hélas), le département est sans doute l'un de ceux en tête des utilisateurs de logiciels libres : tous les habitants de Haute Savoie sont des Monsieur Jourdain du logiciel libre. Ces logiciels ne vont pas disparaître avec le CITIC, y compris ceux développés comme PingOO. Mais leur utilisation n'est pas aussi assurée dans le dispositif qui prendra la suite le 1er janvier 2013. Souhaitons que le grand bébé CITIC ne soit pas jeté avec la neige de son bain.

Merci

Que dire pour finir ? Il ne s'agit pas de remercier pour la décision prise, mais de saluer les personnes du CRI/CITIC qui ont fait vivre ce dispositif totalement à part en France : Cécile Blonay, Directrice de l'actuel CITIC74, Jean-Claude Fernandez, Directeur de l'ancien CRI74, Sébastien Delcroix, Directeur technique du CITIC74, et les équipes de développeurs, de techniciens et d'administratifs. Chapeaux bas et merci !

Le CITIC 74 va mourir, vivent ses logiciels libres : je l'écris avec regret et tristesse.

Sources et liens :

Le 26 janvier sur Formats-Ouverts.org :

2012-01-25

Disney, Free, la barbe et la cravate

2012-01-25 Thierry Stoehr - Formats-Ouverts.org - Nonelectronique

D'un côté, l'Assemblée nationale et Xavier Niel, le patron de Free. De l'autre, la société Disney et ses parcs et employés.

Pour chacun, quel est le point commun du 25 janvier 2012 ? Les formats !

Le premier a été auditionné mais ne portait pas de cravate, ni de costume : une petite entorse au code vestimentaire tacite [1]. La seconde a annoncé que le port de la barbe n'est plus interdit aux employés en contact avec le public à partir de début février : une petite révolution dans les critères physique officiels [2].

Dans chaque cas on a donc une apparence au format défini (formatée ?). Un format ouvert plus ou moins fort.

Sources et liens :

Autres articles sur FOo :

Le 25 janvier sur Formats-Ouverts.org :

2012-01-24

Plonk & Replonk arrivent !

2012-01-24 Thierry Stoehr - Formats-Ouverts.org - Nonelectronique

Des cartes postales au ton décalé ? Oui, celles des suisses Plonk & Replonk, qui ont un format (ouvert) de détournement de sens et d'images.... C'est ce qui était indiqué dans ce (court !) article de janvier 2010.

Bonne nouvelle : ces Suisses exposent à L'Adresse Musée de La Poste à partir du 26 janvier.

Le 24 janvier sur Formats-Ouverts.org :

2012-01-23

Les véritables 10 ans de la mort de Pierre Bourdieu

2012-01-23 Thierry Stoehr - Formats-Ouverts.org - Anniversaire

En avance : telle est de nos jours l'approche du calendrier dans l'actualité. Noël débute en octobre et la rentrée en juillet. C'est aussi le cas des anniversaires qui sont célébrés bien avant la date précise. Ainsi des émissions, des rencontres et des journaux ont marqué les 10 ans de la mort de Pierre Bourdieu dès le début de janvier 2012. Il est pourtant décédé ce 23 janvier.

Et les formats ? Le formatage (des esprits) et le bon format (à avoir, à transmettre) sont des éléments de sociologie. Pierre Bourdieu en a mis en lumière et en a expliqué dans de nombreux domaines (école, art, culture, élite,...) : il les a rendu ouverts.

Le 23 janvier sur Formats-Ouverts.org :

Panne Wi-Fi d'une Freebox v5

Il m'est arrivé quelque chose de curieux avec mon ancienne Freebox, une v5. Elle servait entre autres de borne Wi-Fi. Et tout à coup, son signal Wi-Fi est devenu dix fois plus faible, non captable par beaucoup d'appareils.

Elle avait plusieurs clients différents, par exemple un smartphone HTC Desire, une tablette Packard Bell Liberty Pad, un ordinateur portable Dell, etc. Tous étaient contents et pouvaient se connecter de tout l'appartement. Et, un soir, fini. Le signal avait terriblement baissé. Le smartphone ne voyait plus rien. Plus de Wi-Fi pour lui. La tablette pouvait encore se connecter, mais uniquement lorsqu'elle était dans la même pièce que la Freebox. L'ordinateur portable avait la puce la plus sensible : il y arrivait encore de tout l'appartement, mais avec de fréquentes déconnexions.

Bien que le problème ait frappé tous mes appareils en même temps, j'ai cherché si le problème ne venaient pas d'eux (par exemple, s'il ne fallait pas que j'essaie un autre fichier binaire « radio » sur CyanogenMod pour le smartphone). J'ai aussi tenté de changer le canal Wi-Fi de la Freebox, sans résultat.

Le problème a été résolu lors du remplacement de la Freebox v5 par une v6 Révolution. Tout refonctionne comme avant. C'était donc bien un problème matériel (comme me l'avait suggéré un employé de Free, lors d'une réception officielle prestigieuse). La v5 accusait son (pourtant jeune) âge et ses circuits commençaient à casser.

De quoi philosopher sur la fragilité des engins numériques que nous accumulons chez nous.

Au fait, j'ai renvoyé l'ancienne Freebox à Free (elles ne sont pas vendues mais mises à la disposition de l'abonné). Quelqu'un sait comment prévenir Free qu'elle ne marche pas bien et ne doit donc pas être utilisée ? Sans passer par le support officiel, ses heures d'attente et ses questions débiles « avez-vous rebooté votre ordinateur ? ». Selon @LALIGNEDEFREE, les Freebox de retour sont systématiquement testées et il n'est donc pas nécessaire de signaler un problème.

J'ai obtenu de suggestions intéressantes (mais trop tard pour tester, la boîte étant repartie) :

  • De @fuktop13 et de nombreux autres : ce serait un problème d'alimentation électrique. Lorsque celle-ci faiblit, certaines fonctions de la boîte sont plus affectées que d'autres. Il faudrait alors changer ladite alimentation. Le nombre de témoignages reçus (y compris par des employés de Free) me pousse à privilégier cette théorie.
  • De @RenaudGuerin, l'idée que ce pourrait être un faux contact avec l'antenne (qui est externe, sur la Freebox v5).
  • Jean-Philippe Pick suggère un problème logiciel : le logiciel de la boîte est mis à jour automatiquement au démarrage de celle-ci (je n'ai pas fait attention si cela avait été le cas avant la panne) et une nouvelle version aurait pu avoir des problèmes avec la puce Ralink de la Wi-Fi.

2012-01-22

La communication publique d'un service secret

2012-01-22 Thierry Stoehr - Formats-Ouverts.org - Anniversaire

Les 70 ans

Le BCRA a été créé il y a 70 ans : le Bureau central de renseignement et d'action de la France Libre a été mis à l'honneur par l'actuelle DGSE (Direction générale de la sécurité extérieure) créé en 1982 et qui en est issue. Une cérémonie s'est tenue aux Invalides le 17 janvier 2012 pour marquer cet anniversaire. Une action de communication qui tranche avec le format discret logique de ce triple service.

La carte

Autre action, une carte de vœux pour l'année 2012 : elle a été éditée et adressée notamment à des journalistes qui couvrent les questions militaires et de défense (comme Jean-Dominique Merchet). Une carte en ligne sur le site Web mais surtout éditée au format papier, un format ouvert.

Le 22 janvier sur Formats-Ouverts.org :

Les savoirs de l’écriture en Grèce ancienne (3) : Marchands, transactions économiques, écritures

2012-01-22 Christian Fauré - Défaut


Troisième note sur les Savoirs de l’écriture en Grèce ancienne qui s’appuie sur l’article de Mario Lombardo : “Marchands, transactions économiques, écriture”.

Cette note est également pour moi l’occasion de revenir sur une remarque d’Alain Pierrot formulée lors d’un « Atelier Technologies Relationnelles » consacré à la “Guerre Civile Numérique” ; à une citation de Finley( Les premiers temps de la Grèce) qui faisait remarquer que les Grecs, contrairement à ce qui s’était passé au Proche et Moyen-Orient, se distinguèrent en utilisant l’écriture pour la poésie plutôt que pour le commerce, Alain Pierrot me fit remarquer que le texte de Finley n’était pas de première fraîcheur et que, depuis, l’avancée des travaux rappelait l’importance du commerce dans la diffusion et l’utilisation de l’écriture.

Il se trouve que l’article de Mario Lombardo permet d’enrichir le débat.

Marchands, transactions économiques, écriture

Aristote lui même, en soulignant l’utilité de l’écriture, mentionnait le khrématismos et l’oikonomie : les “affaires” et « l’administration du patrimoine”. Seulement voila, les grecs ont semblé ignorer les fameuses tablettes d’argiles du Proche-Orient et nous n’avons que peu de documents attestant la primauté de l’écriture pour les transactions économiques.

La position de Mario Lombardo consiste à dire que si l’écriture s’est effectivement diffusée via son utilisation économique et commerciale, c’est bien dans les domaines de l’instruction formelle et de la production littéraire d’une part, et , de l’autre, celui du pouvoir politique et des lois”(p. 161) qu’elle s’est développée de manière beaucoup plus significative :

“l’utilisation de l’écriture dans les transactions économiques, et plus généralement dans le domaine économique tout entier, aussi bien public que privé, a somme toute une importance secondaire.” p. 162

L’origine mercantile de l’alphabet

Il faut donc éprouver et ré-interroger la théorie de “l’origine mercantile de l’alphabet”.

Deux raisons à cela. D’une part une raison technologique qui tient à l’écriture alphabétique :

“avec l’extrême simplicité de son répertoire de signes et la transparence (non-ambiguïté) intrinsèque de ses “messages”, liée à l’introduction des signes représentant les voyelles”

D’autre part, deuxième raison à la diffusion de l’écriture en Grèce, le caractère décentralisé de la société grecque :

“ avec leur structures relativement fluides, ouvertes, dépourvues d’instance centrales importantes dans l’organisation politique, économique et religieuse, caractérisée par l’essentiel par l’existence d’une pluralité, plus ou moins articulée et diversifiée, de sujets qui se reconnaissent et s’affrontent en tant que tels dans un espace qualifié, pour cette raison, comme celui d’une communauté.” p.165

Sans nier l’évidence des relations commerciales comme facteur de diffusion de l’écriture alphabétique en Grèce (en référence aux relations commerciale avec les phéniciens qui inventèrent l’alphabet), Mario Lombardo souligne que cette thèse souffre de quelques problèmes, à commencer par le fait que l’écriture grecque n’a pas développée un système numérique avant le VI° siècle, date à partir de laquelle de nombreuses variantes se développèrent certes, mais “qui se situent tous essentiellement à l’intérieur de l’écriture alphabétique grecque et se placent vraisemblablement dans une phase relativement avancée de son histoire.” pp 170-171.

L’argument qui veut que l’écriture se soit développée dans un contexte exclusivement lié aux transactions commerciales semble donc fortement réducteur.

Les “trademarks”

Pour instruire son investigation, Mario Lombardo va s’appuyer sur une pratique bien particulière, à savoir les “inscriptions de propriété” qui constituent la plus grande partie des inscriptions alphabétiques les plus anciennes conservées.

Il s’agit de noms propres, d’abréviation ou de signes, et parfois de formules du genre “j’appartiens à un tel” ou “ceci appartient à” que l’on retrouve sur les amphores commerciales :

“Il n’est peut-être pas hasardeux de voir un rapport significatif entre les premières formes d’utilisation de l’écriture alphabétique, d’une part, et l’émergence et la diffusion d’un “proprietorial concern” ”. p.173

Cette pratique scripturale des “trademarks” était utilisée notamment entre les commerçants et les artisans : le premier notifiait son choix de modèle à produire en marquant de son sceau alphabétique celui-ci. L’écriture joue ici un rôle de repérage et de mémorisation de la commande passée par le commerçant à l’artisan.

Ce qui n’était au départ qu’une simple marque va progressivement s’enrichir. À la signature du commerçant va s’ajouter plusieurs détails : la nature des vases, leur nombre, des indications de prix, etc. Et Lombardo d’en proposer une des fonctions essentielle de l’écriture :

“Il s’exprime ici une fonction fondamentale de l’écriture : la mise en ordre de données hétérogènes, dont la présence dans une pratique scripturale aussi condensée et aussi elliptique renvoie vraisemblablement à l’existence, dans le monde des activités commerciales, de pratiques d’enregistrement de la comptabilité répandues.” p.177

L’inscription de la dette monétaire

Au moins dès 500 avant J.-C. les inscriptions relevant des trademarks font état d’une retranscription des différentes monnaies. Il faut donc prendre en considération la diffusion de la monnaie frappée qui a dû induire des pratiques d’écriture nouvelles. L’examen des documents conservés montrent que le premier emploi de l’écriture se fait “sous la forme de reconnaissances, d’enregistrement et d”’inscription de dette”. On trouve ainsi des plaquettes de plomb, toujours vers 500 av J.-C. qui présentent une structure formelle assez standardisée :

“nom du créancier au datif, avec sa subdivision civique d’appartenance ; nom du débiteur au nominatif ; reconnaissance de la dette (opheilei) ; montant de la dette exprimée quelque fois en chiffres, parfois en lettres, vraisemblablement avec référence implicite à l’unité monétaire courante ; noms des deux témoins.” pp 179-180.

On connaît l’importance des “symbola” objets ou documents divisés en deux et qui fonctionnaient comme des marques de reconnaissance destinées à rappeler les obligations entre deux personnages portant sur des biens (cf. Ph Gauthier, “Symbola, Les étrangers et la justice dans les cités grecques”, Nancy, 1972). Pour les affaires les plus courantes, les symbola suffisait certainement, mais il semble que pour les affaires à la fois plus complexes et plus risquées (transport de marchandise par des voies maritimes peu sûres), l’utilisation de l’écriture joua un rôle décisif qu’il faut mettre en parallèle avec le développement de la monnaie métallique.

Monnaie et jeux d’écriture

La fin de l’article de Mario Lombardo m’a un peu déroutée et j’ai dû m’y reprendre à plusieurs lectures pour y voir plus clair. La cause de ma confusion provenait certainement du manque d’attention aux différences entre “commerce”, “monnaie” et “banque” que je mettais plus ou moins indistinctement sous la catégorie “économie commerciale”.

[Un nom revient dans les références de Lombardo, il s’agit de R. Bogaert avec “Banques et banquiers dans les cités grecques” et “Les origines antiques de la banque de dépôt” (introuvables, alors je vais me rabattre sur “La banque en Occident” )]

L’activité bancaire va se développer en même temps qu’apparaissent des pratiques scripturales qui s’expriment dans la notion de diagraphê :

Quand un banquier reçoit une assignation de l’un de ses clients, il l’indique dans son livre et envoie une note (diagraphê) au bénéficiaire pour l’informer qu’il dispose d’un avoir à la banque. En règle générale, quand il s’y présente, muni de la diagraphê, en vue d’encaisser son dû, il signe pour acquit (hypographê =signature) le document qui demeure en possession de la banque. (Bogaert, La banque en occident, pp 27-28)

Bogaert précise bien que ce n’est qu’après l’apparition de la monnaie (“l’invention des premières pièces métalliques en Occident est l’œuvre des Grecs d’Asie Mineure au VIIe siècle av. J.‑C.” Wikipedia) que la banque va se développer entre le V et le IV° siècle notamment au travers les activités des changeurs de monnaie, les “argyramoiboi”. En effet, ce n’est pas une monnaie mais une multitude de monnaies qui apparaissent et font émerger le besoin de change monétaire. Le changeur est celui qui vend ses services et son expertise en matière de monnaie (connaissance des cours de change, connaissance des différentes monnaie, expertise pour de la fausse monnaie, etc.).

Historiquement, le développement de la monnaie dans l’ensemble des cités Grecques, va donc voir apparaître les “changeurs”, ces derniers vont se retrouver ensuite en situation de trésorerie et pouvoir faire des prêts en faisant travailler l’argent qui ne leur appartient pas. C’est là que l’activité bancaire apparaît : elle était depuis longtemps une activité de prêt et de dépôt mais c’est à ce moment là, en Grêce, quand le changeur commence à faire travailler l’argent des déposants que le Banquier “moderne” apparaît, et avec lui la Banque.

Le syngraphê où le contrat comme technologie de confiance.

C’est ensuite dans le champ de la dette, et plus précisément de la dette monétaire, que l’on constate une utilisation relativement formalisée de l’écriture, donc socialement reconnue. D’abord utilisée pour les besoins des commerçants, dont le banquier Apollodore déclare que la plupart de ses clients – titulaires de comptes de dépôts et de paiement – sont toujours en voyage, et pour des activités commerciales à haut risque liées aux destinations lointaines, on voit apparaître le syngraphé, le contrat écrit.

Le contrat écrit offre de nouvelles garanties qui vont permettre de prendre de nouveaux risques dans les activités du commerce maritime à longue distance et notamment avec des partenaires étrangers. Garanties somme toute “psychologiques” précise Lombardo en rappelant que :

“le dépôt en banque s’effectuait sans que la présence de témoins fut nécessaire, par le simple enregistrement sur les registres bancaires”. p. 184.

La rationalité d’une comptabilité écrite couplée à des contrats va donc être un vecteur progressif de diffusion de l’écriture (diffusion qui est aussi une invention qui modifie les pratiques scripturales). À cette évolution socio-économique fait écho un usage politico-juridique de l’écriture (publication des lois et reconnaissance de dette).

Quoiqu’il en soit, on retiendra que les voies de diffusion et d’évolution des pratiques scripturales sont stimulées par l’invention des monnaies. Avec la monnaie et l’écriture les grecs ont pu :

“compenser et neutraliser le caractère socialement anonyme, la “volatilité” et “l’invisibilité” des rapports d’obligation monétaire.”

L’écriture permettant ainsi au domaine monétaire naissant de répondre aux exigences internes de la communauté socio-politique en mettant de la confiance dans cette nouvelle technologie, constituant par là une technologie de confiance basée sur l’écriture, sur des jeux d’écritures.

Signaler sur Twitter

Related posts:

  1. Les savoirs de l’écriture en Grèce ancienne (2) : Aux origines de la codification écrite des lois en Grèce Deuxième note sur le livre « Les savoirs de l’écriture en...
  2. Les savoirs de l’écriture en Grèce ancienne (1) L’espace de la publicité : ses opérateurs intellectuels dans la...
  3. La vérité sur l’assassinat de JFK ? La séance d’Ars Industrialis d’hier m’a appris quelque chose de...

Changer une base PostgreSQL de « tablespace »

Un des principaux mécanismes de gestion de l'espace disque dans PostgreSQL est le tablespace. Un tablespace est un répertoire où on place des données du SGBD. Mais, si on change d'avis, comment changer une base de tablespace ?

La tablespace par défaut d'une base se déclare à la création :

% createdb --tablespace grosdisque experience
Ici, la base "experience" est créée sur le tablespace "grosdisque" (créé précédemment par CREATE TABLESPACE). On peut afficher les tablespaces par défaut des bases avec le catalogue système de PostgreSQL :
=> SELECT datname AS database, spcname AS tablespace, spclocation AS directory 
          FROM pg_database INNER JOIN pg_tablespace 
          ON pg_tablespace.oid = pg_database.dattablespace;
     database      |     tablespace     |   directory   
-------------------+--------------------+---------------
 template1         | pg_default         | 
 essais            | pg_default         | 
 experience        | grosdisque         | /some/where/big
...

Et si on s'est trompé, si on a oublié de mettre la base sur le bon tablespace, si la base a grossi au delà de ce qui était prévu ? Depuis la version 8.4 de PostgreSQL, il existe un moyen simple, la commande ALTER DATABASE :


essais=> ALTER DATABASE experience SET TABLESPACE autreendroit;
ERROR:  database "experience" is being accessed by other users
DETAIL:  There are 1 other session(s) using the database.

(Ah oui, il faut qu'aucune session n'accède à la table, ce qui peut
être contraignant.)

essais=> ALTER DATABASE experience SET TABLESPACE autreendroit;
ALTER DATABASE

Et si on gère une base dans une version antérieure de PostgreSQL, et qu'on ne peut pas migrer ? Rien n'est perdu. Il y a bien sûr la solution « bourrin » d'une commande pg_dump, d'une re-création de la base sur le nouveau tablespace, puis d'un pg_restore. C'est très lent, et cela empêche d'accéder à la base en écriture pendant ce temps.

Une solution plus astucieuse est documentée par Lode : elle utilise le fait que le tablespace n'est pas forcément par base mais peut être configuré par table et qu'il est possible, même avant la version 8.4 de PostgreSQL, de changer une table de tablespace. Le principe est donc :


essais=> ALTER DATABASE experience SET default_tablespace = autreendroit;

(Cette première commande changera le tablespace pour les *futures*
tables.)

essais=> ALTER TABLE premiere_table SET TABLESPACE autreendroit;
essais=> ALTER TABLE deuxieme_table SET TABLESPACE autreendroit;
...

Oui, il faut le faire pour toutes les tables, et pour les index également. Ce n'est pas très pratique. Lode automatisait avec PHP, je préfère le faire avec le shell :

% psql --tuples-only -c 'SELECT tablename FROM pg_tables' experience > tmp/tables
% for table in $(cat tmp/tables); do
   echo $table
   psql -c "ALTER TABLE $table SET TABLESPACE autreendroit;" experience
done
Et même chose avec les index :
% psql --tuples-only -c 'SELECT indexname FROM pg_indexes' experience >  tmp/indexes
% for idx in $(cat tmp/indexes); do
   echo $idx
   psql -c "ALTER INDEX $idx SET TABLESPACE autreendroit;" experience
done
C'est bien plus rapide que sauvegarder/restaurer. Rappelez-vous bien que cela ne change pas le tablespace de la base. Il apparaîtra toujours comme l'ancien. Mais toutes les données seront bien dans le nouveau tablespace.

Après, à vous de voir si cela ne serait pas plus simple de migrer vers un PostgreSQL >= 8.4. Mais les grosses bases de données sont souvent des choses fragiles, avec lesquelles on ne peut pas jouer comme on veut. J'ai récemment utilisé la vieille méthode pour une base qu'il aurait été risqué de migrer.

2012-01-21

CIDISC 2012

La 74e Convention internationale des disques de collection (CIDISC), se tient le samedi 21 et dimanche 22 janvier 2012 à l'Espace Champeret.

Disques vinyl 78-tours, 45-tours, 33-tours, voire phonogrammes, Minidisc, LaserDisc, CD audio ou SACD. Avant l'ère des fichiers. Des formats physiques (les supports) et des formats d'enregistrement/codage (l'analogique, le numérique). Avec toujours LA première question : où sont les appareils avec leurs câbles pour lire ces disques ? Et la deuxième question : si on arrive à les lire, les formats numériques sont-ils ouverts ?

Le 21 janvier sur Formats-Ouverts.org :

RFC 6347: Datagram Transport Layer Security version 1.2

2012-01-21 Stéphane Bortzmeyer - xmlfr

Le protocole de cryptographie TLS, normalisé dans le RFC 5246, ne s'appliquait traditionnellement qu'à TCP. Les applications utilisant UDP, comme le fait souvent la téléphonie sur IP, ne pouvaient pas utiliser TLS pour protéger leur trafic contre l'écoute ou la modification des données. Mais cette limitation a disparu avec DTLS, qui permet de protéger du trafic UDP. Ce RFC met à jour DTLS (initialement normalisé dans le RFC 4347) pour TLS 1.2.

TLS ne tournait que sur TCP car il avait besoin d'un transport fiable, garantissant que les données arrivent toutes, et dans l'ordre. Le grand succès de TLS (notamment utilisé pour HTTP et IMAP) vient de sa simplicité pour le programmeur : rendre une application capable de faire du TLS ne nécessite que très peu de code, exécuté juste avant l'envoi des données. Par contre, cela laissait les applications UDP comme SIP non protégées (section 1 de notre RFC). Les solutions existantes comme IPsec ne sont pas satisfaisantes (cf. RFC 5406), notamment parce qu'elles n'offrent pas la même facilité de déploiement que TLS, qui tourne typiquement dans l'application et pas dans le noyau.

DTLS a été conçu pour fournir TLS aux applications UDP. Il offre les mêmes services que TLS : garantie de l'intégrité des données et confidentialité.

La section 3 explique les principes de DTLS : protégé ou pas par DTLS, UDP a la même sémantique, celle d'un service de datagrammes non fiable. D'autre part, DTLS est une légère modification de TLS : il en garde les principales propriétés, bonnes ou mauvaises.

Mais pourquoi ne peut-on pas faire du TLS normal sur UDP ? Parce que TLS n'a pas été conçu pour tourner au dessus d'un protocole non fiable. TLS organise les données en enregistrements (records) et il ne permet pas de déchiffrer indépendamment les enregistrements. Si l'enregistrement N est perdu, le N+1 ne peut pas être déchiffré. De même, la procédure d'association initiale de TLS (handshake) ne prévoit pas de perte de messages et ne se termine pas si un message est perdu.

Le premier problème fait l'objet de la section 3.1. La dépendance des enregistrements TLS vis-à-vis de leurs prédécesseurs vient du chaînage cryptographique (le chiffrement par chaînage - stream cipher - est donc supprimé en DTLS) et de fonctions anti-rejeu qui utilisent un numéro de séquence, qui est implicitement le rang de l'enregistrement. DTLS résoud le problème en indiquant explicitement le rang dans les enregistrements.

Et la question de l'association initiale est vue dans la section 3.2. Pour la perte de paquets lors de l'association, DTLS utilise un système de retransmission (section 3.2.1) et pour l'éventuelle réorganisation des paquets, DTLS introduit un numéro de séquence (section 3.2.2). En prime, DTLS doit gérer la taille importante des messages TLS (souvent plusieurs kilo-octets), qui peut être supérieure à la MTU. DTLS permet donc une fragmentation des paquets au niveau applicatif, un message pouvant être réparti dans plusieurs enregistrements (section 3.2.3).

Enfin, l'anti-rejeu a été modifié pour tenir compte du fait que la duplication de paquets, en UDP, n'est pas forcément malveillante (sections 3.3 et 4.1.2.6).

La définition formelle du nouveau protocole est en section 4. DTLS étant une légère évolution de TLS, la définition se fait uniquement en listant les différences avec TLS. Il faut donc garder le RFC 5246 sous la main.

Dans le Record Protocol de TLS, l'enregistrement spécifié dans la section 6.2.1 du RFC 5246 gagne deux champs (section 4.1) :

  struct {
         ContentType type;
         ProtocolVersion version;
         uint16 epoch;                                    // NOUVEAU
         uint48 sequence_number;                          // NOUVEAU
         uint16 length;
         opaque fragment[DTLSPlaintext.length];
       } DTLSPlaintext;
notamment le numéro de séquence sequence_number (qui était implicite dans TLS, puisque TCP garantissait l'ordre des messages). Pour éviter la fragmentation et les ennuis associés, les mises en œuvre de DTLS doivent déterminer la MTU du chemin et n'envoyer que des enregistrements plus petits que cette MTU (section 4.1.1).

Contrairement à IPsec, DTLS n'a pas la notion d'identificateur d'association. Une machine qui reçoit du TLS doit trouver l'association toute seule, typiquement en utilisant le tuple (adresse IP, port).

En toute rigueur, DTLS n'est pas spécifique à UDP, il peut marcher sur n'importe quel protocole de transport ayant une sémantique « datagrammes ». Certains de ces protocoles, comme DCCP (cf. RFC 5238), ont leur propres numéros de séquence et ils font donc double emploi avec ceux de DTLS. Petite inefficacité pas trop grave.

Au niveau du Hanshake protocol, les modifications que DTLS apporte à TLS font l'objet de la section 4.2. Les trois principales sont :

  • L'ajout d'un gâteau pour limiter les risques de DoS,
  • Modification des en-têtes pour gérer les pertes ou réordonnancements des paquets (section 4.2.2),
  • Ajouts de minuteries pour détecter les pertes de paquets (section 4.2.4).
Les gâteaux de DTLS sont analogues à ceux de Photuris ou IKE (section 4.2.1). Le message ClientHello de la section 7.4.1.2 du RFC 5246 y gagne un champ :
 opaque cookie<0..32>;         // NOUVEAU
Évidemment, ils ne protègent pas contre un attaquant qui utilise sa vraie adresse IP, puisque celui-ci pourra lire la réponse.

OpenSSL gère DTLS depuis la version 0.9.8 (on peut aussi consulter le site Web du développeur). Un exemple d'utilisation se trouve dans http://linux.softpedia.com/get/Security/DTLS-Client-Server-Example-19026.shtml. Il me reste à inclure ce protocole dans echoping. GnuTLS a un support DTLS plus récent.

Et les nouveautés de DTLS 1.2 par rapport au 1.0 du RFC 4347 ? (Il n'y a pas eu de DTLS 1.1.) Elles sont résumées dans la section 8. La principale nouveauté est que DTLS est désormais défini par rapport à TLS 1.2 et non plus 1.0. Cela a notamment permis d'inclure les numéros de séquence explicites de TLS 1.1, nécessaires contre l'attaque BEAST (section 4.1.2.1). Une autre nouveauté est la section 4.1.2.7 qui discute le traitement des paquets invalides. Contrairement à TLS, DTLS peut fonctionner en présence de tels paquets, avec une sémantique proche de celle d'UDP : les laisser tomber et attendre que l'application se débrouille (en demandant leur réémission ou bien en passant à autre chose). Enfin, d'autres clarifications ont été apportées, par exemple à la détection de la PMTU ou bien à l'enregistrement dans les registres IANA.

Une très bonne description de la conception de Datagram TLS et des choix qui ont été faits lors de sa mise au point, se trouve dans l'article The Design and Implementation of Datagram TLS, écrit par les auteurs du RFC. C'est une lecture très recommandée.

2012-01-20

« La solution proposée est un recul et n'est pas bonne pour ses utilisateurs ni pour ses clients »

2012-01-20 Thierry Stoehr - Formats-Ouverts.org - xmlfr, General

Le titre ci-dessus est une citation de Daniel Glazman qui qualifie ainsi la solution iBooks Author d'Apple, annoncée le 18 janvier. Son article, iBooks Author, a nice tool but.., propose un avis et une analyse détailléss de l'outil à trois niveaux : sa licence d'utilisation, son format et le contexte et les attentes des auteurs et des éditeurs de livres numériques.

L'article, en anglais, est à lire avec un important volet technique argumenté : rien de plus normal, Daniel Glazman est Co-chairman of the W3C CSS Working Group. Voici 3 extraits traduits en français pour répondre à la question du format : fermé ou ouvert ?

Le format IBA : « une archive zip d'un seul fichier XML » qui est « basée sur les noms d'espaces (namespaces) propriétaires d'Apple ». « C'est complètement fermé, inutilisable en dehors du monde Apple. »

Le format iBooks : « Il ressemble au format EPUB3. Il a le goût et l'odeur du format EPUB3. Mais ce n'est pas du tout du format EPUB3 »

Finalement : « Apple a entièrement travaillé dans ce cas en cachette. » (du W3C, alors que des idées/travaux/technologies du W3C sont utilisées).

Le 20 janvier sur Formats-Ouverts.org :

Mon intervention lors de l’inauguration du Retour à la Terre Rive Gauche

2012-01-20 Eric van der Vlist - Français, Le Retour a la Terre, Personnel/Personal, Society/Societe

En attendant la publication des photos et vidéos sur le site du Retour à la Terre, voici le texte que j’avais préparé pour mon intervention lors de l’inauguration officielle du magasin de la Rive Gauche le 18 janvier.

Catherine est inquiète parce qu’elle ne sait pas ce que je veux vous dire ce soir…

Elle me connaît pourtant bien puisque cela fait plus de trente ans que nous vivons ensemble !

Nous avons la chance d’avoir étudié dans une grande école (l’École Centrale) où nous nous sommes rencontrés mais avons toujours eu du mal à nous intégrer au monde des grandes entreprises.

Je l’ai devancé en devenant consultant indépendant il y a bientôt quatorze ans.

Lorsqu’elle a souhaité à son tour quitter Renault il y a quatre ans, nous avions un peu d’économies, pas beaucoup parce que l’argent n’a jamais été notre objectif principal mais suffisamment pour acheter par exemple un petit deux pièces dans le quartier où nous habitons.

Nous avons décidé d’utiliser ce petit pécule pour qu’elle puisse mener à bien un projet qui lui tenait à cœur et quatre ans plus tard sommes réunis ici pour inaugurer son deuxième magasin.

Le succès est donc au rendez vous.

Quarante emplois directs (et au moins la moitié d’emplois indirects) ont été crées et des dizaines de milliers de clients ont été sensibilisés aux problèmes environnementaux et ont mangé bio et d’une manière plus responsable.

Je suis très fier de Catherine pour ce succès.

Je suis également heureux de voir qu’elle s’est épanouie professionnellement pendant ces quatre années comme jamais auparavant.

Je le suis un peu moins de la voir fatiguée comme elle ne l’a jamais été.

Quand on rentre dans un des deux magasins du Retour à la Terre, ce que l’on voit peut sembler facile et tomber sous le sens.

Je vis aux côtés de Catherine et je peux vous dire que créer ce cercle vertueux est au contraire un combat de tous les instants :

  • Un combat contre les concurrents de la grande distribution et d’autres commerces spécialisés qui n’ont pas les mêmes exigences.
  • Un combat contre les fournisseurs quand ils glissent dans leurs catalogues des produits certifiés AB mais contenant des arômes non bio, sur-emballés, pleins d’huile de palme, ou importés de l’autre bout de la planète alors qu’ils poussent chez nous.
  • Un combat contre les clients qu’il faut éduquer et à qui il faut expliquer pourquoi ils ne trouveront chez nous ni tomates, ni litchis ni foie gras pour leurs réveillons.
  • Un combat au sein de la coopérative Biocoop pour essayer de maintenir une ligne aussi droite que possible.
  • Et parfois même un combat au sein de l’équipe qu’il faut convaincre que le magasin doit être impeccablement tenu, qu’il vaut mieux faire 40 commandes à 40 petits producteurs qu’une seule commande à un industriel et parfois même pourquoi travailler plus pour gagner plus n’est pas une bonne idée et pourquoi seule Catherine et dans une moindre mesure nos deux directeurs de magasin peuvent faire des heures supplémentaires au Retour à la Terre.

Je sais que ce type de combat est chose courante pour beaucoup de nos invités.

Insecticides, plastiques, déchets, cancers, OGM, brevets sur le vivant, grande distribution, industrie de la viande, villes en transition, paysans sans terre, nucléaire, gaz de schiste, … au cours des débats organisés par Catherine, je me suis souvent senti dérouté et découragé par la diversité de ces luttes.

Il y a pourtant une constante : le refus de la marchandisation des biens communs de l’humanité.

Prenons par exemple le problème de l’eau, particulièrement éloquent parce qu’il représente un combat que beaucoup considèrent comme déjà perdu.

L’eau est essentielle à la vie, elle recouvre 72% de notre planète et notre corps est composé d’eau à 65%.

Pourtant, vous souvenez vous quand vous avez bu pour la dernière fois de l’eau qui ne soit pas « produite » par une des multinationales qui se sont emparé de son « marché » ou par une des rares compagnies des eaux qui soit publique ?

Pour moi, c’était en juillet dernier, en randonnée avec notre fils Samuel à plus de 2000m d’altitude dans les Alpes.

Et même dans un endroit aussi préservé, il nous a fallu filtrer l’eau des torrents de montagne dans un filtre en céramique, merveille de haute technologie suisse, pour la boire sans risque.

Cet accaparement de l’eau, des semences, de la nourriture, des terres, du sous sol, des idées, des déchets, de l’énergie, des logiciels, des données privées, de l’argent, … et même du « droit à polluer » par quelques privilégiés qui contrôlent une poignée de multinationales est intolérable sur le plan des principes, mais aujourd’hui il ne s’agit plus ce cela.

Le problème est pourtant simple.

Nous sommes 7 milliards sur une planète aux ressources finies qui ne peut nourrir sa population de manière durable que si ses ressources sont exploitées de manière raisonnable et distribuées avec un minimum d’équité et c’est précisément de cela dont il s’agit pour chacun de ces combats.

Combattre les dérives actuelles sous toutes leurs formes n’est plus seulement une question de principes mais une question de survie pour nous et pour notre civilisation !

Merci à tout ceux qui mènent cette lute essentielle à leur manière et sur tous les fronts.

2012-01-19

Livres numériques : c'est la guerre des formats, comme d'habitude (mais avec des pépites de données dedans)

2012-01-19 Thierry Stoehr - Formats-Ouverts.org - xmlfr, General

Quel calendrier ! En quelques jours seulement, les livres numériques ont fait l'objet de 3 annonces :

  • le 12 janvier, l'IDPF (International Digital Publishing Forum) indique qu'une rencontre s'est tenue entre Apple, Adobe, Barnes&Noble, Google, Hachette Book Group / AAP et Sony à propos des métadonnées (qui sont capitales) dans le format ePUB 3 : Progress on Common Approach to EPUIB 3 Fixed-Layout Metadata
  • le 18 janvier, Amazon lance la nouvelle version de son format pour Kindle, le KF8 : Kindle Format 8

Le réflexe et le leitmotiv (pour ne pas dire la déformation !) sur Formats-Ouverts.org est de se demander ELF, FOO ?, soit Et Le Format, Fermé Ou Ouvert ? Car on retrouve toujours LA menace sur les données qui sont enfermées dans un format fermé et qui se traduit de plusieurs manières simultanées :

  • la dépendance commerciale et technique envers un fournisseur avec un dépôt (son store) et un appareil (toujours leader du marché) via son format fermé avec sa chaîne (si bien nommée) matériel-logiciel-contenu ;
  • le coût financier généré par les matériels et logiciels obligatoires pour utiliser le format fermé ;
  • la pérennité, la mémoire, le patrimoine et l'archivage des documents qui sont soumis aux décisions de celui qui définit le format fermé utilisé ;
  • l'interopérabilité absente ;
  • voire l'arbitraire éditorial comme la décision de refuser des livres ou d'en retirer unilatéralement (comme en juillet 2009).

L'ePUB de l'IDPF permet d'éviter ces dangers, mais aussi les standards ouverts du W3C ou les formats ouverts PDF et txt (ancestral).

Les livres passés, présents et futurs en version numérique ne doivent pas être emprisonnés mais reposer sur des formats ouverts.

Autres articles sur Formats-Ouverts.org à propos de livres numériques :

Le 19 janvier sur Formats-Ouverts.org :

RFC 6471: Overview of Email DNS-Based List (DNSBL) Best Practice

2012-01-19 Stéphane Bortzmeyer - xmlfr

En raison de l'importance du problème du spam (et d'autres comportements tout aussi nuisibles), un grand nombre de sites utilisent des listes noires des gens avec qui on ne veut pas communiquer (DNSBL pour DNS-based Black List). Ces listes sont souvent distribuées via le DNS, et gérées par des organismes très divers, dont le niveau de sérieux et d'honnêteté est très variable. La question étant très polémique, documenter le comportement attendu de ces organismes n'a pas été une mince affaire. Ce RFC 6471 décrit donc ce qu'on espère d'un gérant de DNSBL.

Rien ne dit qu'il sera suivi, bien sûr. Mais l'espoir est que ce document serve à faire évoluer les choses dans le bon sens. À noter que le groupe en charge de ce RFC, l'Anti-Spam Research Group de l'IRTF, n'a pas toujours réussi à se mettre d'accord sur le comportement idéal de la DNSBL. Dans ces cas, ce RFC 6471 se contente d'indiquer des recommandations sur la forme (« le gérant de DNSBL devrait documenter ce qu'il fait » si le RFC ne peut pas dire ce qui devrait être fait). La section 1.4 rappelle d'ailleurs que les règles de l'IRTF n'imposent pas de consensus au sein du groupe avant publication. À noter que ce RFC ne parle pas de protocole, les questions purement techniques étant traitées dans le RFC 5782.

Le sujet est tellement polémique que je ne vais pas forcément me contenter d'un compte-rendu neutre, objectif et ennuyeux de ce RFC et que je risque de glisser quelques opinions personnelles, pour lesquelles je demande l'indulgence de mes lecteurs. C'est que les DNSBL sont un marécage de gens bizarres, de racketteurs (« pour être retiré de notre liste, il faut payer »), d'éradicateurs (« nous avons mis les trois-quarts de l'Afrique en liste noire ») et de quelques personnes sérieuses. Le groupe ASRG représente plutôt le point de vue des éradicateurs (« dans le doute, on filtre »).

La section 1 du RFC rappelle ce qu'est une DNSBL et comment elle fonctionne. Les détails techniques du fonctionnement de ce service sont exposés dans le RFC 5782. L'idée est de publier dans le DNS les noms de domaine des méchants, ou bien les adresses IP de leurs serveurs de messagerie. Le serveur qui reçoit du courrier peut alors, en consultant le DNS (ce qui est simple et rapide), prendre connaissance de la « note » attribuée au domaine ou à l'adresse IP par le gérant de la DNSBL. Sur la base de cette note, il peut alors décider de filtrer, de contrôler plus étroitement, etc. Rappelons-bien que c'est le destinataire qui décide quoi faire du courrier, pas le gérant de la DNSBL, qui se contente de publier une information. Au bout du compte, c'est le gérant du serveur de messagerie de destination qui est responsable de l'usage qu'il fait de cette information. Beaucoup sont irresponsables, et filtrent aveuglément sur la base de listes noires sur lesquelles ils n'ont même pas pris la peine de se renseigner.

Comme le DNS est une technique éprouvée, très fiable et rapide, cet usage original des DNSBL s'est étendu. On voit aujourd'hui des DNSWL (listes blanches, désignant ceux qui ont droit à un traitement de faveur), listes d'URI dont la présence dans un courrier indique un spam, etc. On voit aussi des changements dans l'usage de ces listes. Très binaire autrefois (l'adresse IP est présente dans la liste noire => on rejette le message), il est devenu plus souple, les résultats d'une recherche dans la liste noire étant souvent un facteur de décision parmi d'autres (SpamAssassin fonctionne ainsi). Poursuivant cette idée d'utiliser le DNS pour récupérer de l'information, on voit aussi des services de géolocalisation utilisant le DNS et d'autres encore plus techniques (je me sers beaucoup du domaine aspath.routeviews.org de Route Views, qui permet de récupérer les informations de routage d'une adresse). Enfin, les listes distribuées par le DNS sont désormais utilisées pour bien d'autres choses que le courrier, par exemple pour du contrôle d'accès à des serveurs IRC ou des formulaires Web. Bref, on peut tout faire avec le DNS, qui a cessé il y bien longtemps d'être uniquement un service qui « traduit des noms de domaine en adresses IP ».

Quelles sont les DNSBL aujourd'hui ? Il y a de tout, certaines sont privées, gérées par une organisation pour son besoin propre, d'autres publiques et gratuites, d'autres payantes (beaucoup de DNSBL sont gratuites en dessous d'un certain seuil d'utilisation et payantes ensuite). On estime qu'il existe plus de 700 listes publiques, la plus ancienne ayant été créée en 1997. À cette époque, les spammeurs utilisaient leurs propres machines et c'est en grande partie en raison des DNSBL, qui distribuaient rapidement les adresses de ces machines, que les spammeurs sont passés à d'autres tactiques (comme les relais de courrier ouverts), tactiques à lesquelles les DNSBL ont dû s'adapter.

Il n'y a pas que le statut juridique et administratif qui différencient les DNSBL actuelles. Elles se différencient également par leurs politiques (comment une entrée est-elle ajoutée à la base et, plus important, comment elle est retirée) et, comme le note pudiquement le RFC, les DNSBL se différencient aussi par le niveau d'honnêteté de leurs responsables.

Justement, cette politique (qui va être mis dans la liste noire, sur quels critères ?) est un point de controverse permanent. Des cow-boys qui vous blacklistent un /20 entier parce qu'une adresse a envoyé un spam, aux gens sérieux qui prennent beaucoup de temps et d'effort avant d'ajouter une adresse à la base, il y a un large spectre d'opinions. Ce RFC 6471 n'essaie pas de trancher entre ces opinions. Il ne dit pas quelle est la bonne politique, simplement que le gérant de la DNSBL doit documenter ses critères d'inclusion et d'exclusion, et faire ensuite réellement ce qu'il annonce (ce qui est très loin d'être le cas). C'est ensuite à l'utilisateur de la DNSBL (l'administrateur d'un serveur de messagerie qui décide d'interroger cette base avant d'accepter un message) de s'informer et de s'assurer que la politique de la DNSBL lui convient.

La section 1.2 fournit une bonne check-list pour ledit utilisateur, sous forme d'une série de questions à se poser avant d'utiliser une DNSBL. Par exemple (entre parenthèses, une étude de l'application de cette check-list à Spamhaus, pour sa liste SBL) :

  • Est-ce que les politiques d'inclusion et d'exclusion suivies par la liste sont nettement marquées sur son site Web ? Sont-elles claires ? (Pour la SBL, la réponse est oui, pour l'inclusion et l'exclusion.)
  • Existe-t-il une évaluation indépendante de cette liste, permettant de comparer la théorie et la pratique ? (Je n'en sais rien, pour la SBL.)
  • Qu'en pensent vos pairs, les collègues qui travaillent dans des conditions analogues aux vôtres ? Comme le note justement le RFC, les DNSBL baignent souvent dans un climat de rude controverse. Il faut bien vérifier que les opinions sur une liste sont formulées par des gens qui s'y connaissent, et pas par Jean-Kevin Boulet qui crie bien fort « Ouais, cette liste est super, marche trop bien ». (La SBL est une des listes les plus utilisées et Spamhaus une organisation ancienne et appréciée.)
Il faut en outre réviser ces questions de temps en temps, les listes évoluent et plus d'une a cessé tout fonctionnement.

Le RFC enfonce le clou à plusieurs reprises : c'est l'utilisateur qui est responsable, au final, pas la DNSBL. Certes, c'est un plaidoyer pour les gérants de DNSBL (« ce n'est pas nous qui filtrons », remarque courante des DNSBL face aux contestations) mais cela reflète la réalité. Filtrer avec une DNSBL, c'est sous-traiter une partie de sa sécurité, c'est confier les décisions à d'autres (la section 4 revient sur ce point et rappelle que des DNSBL ont déjà listé 0/0 c'est-à-dire tout l'Internet). Il est donc crucial d'évaluer les sous-traitants. Le postmaster responsable comprend ce point : la DNSBL exprime une opinion, mais c'est lui qui décide d'agir sur la base de cette opinion.

Bref, quels sont les conseils effectifs de ce RFC 6471 ? Ils commencent en section 2. D'abord, la transparence de l'offre. La DNSBL doit écrire noir sur blanc quels sont les critères pour être mis dans la liste noire et quels sont ceux pour être enlevés. Par exemple, une liste qui s'appuie sur un pot de miel peut avoir comme critère d'ajout « On ajoute toute adresse IP qui a envoyé au moins trois messages dans une semaine aux adresses du pot de miel » et comme critère de retrait « On retire toute adresse qui n'a rien écrit au pot de miel depuis deux mois ». Cette politique doit ensuite être suivie rigoureusement et honnêtement. Dans la jungle des DNSBL, on a déjà vu des gérants de liste qui ajoutaient à la liste noire les adresses IP des gens qui les critiquaient (spite listing)... Il y a des tas de politiques raisonnables, l'important est de se tenir à celle publiée. Si on prétend gérer une liste de relais de courrier ouverts, on ne doit pas y mettre des adresses IP pour une autre raison, même en rapport avec le spam.

La transparence n'empêche pas des politiques dingues, mais ouvertement assumées par le gérant de la liste. Un bel exemple est chez UCEprotect, qui menace directement les critiques « Should you want to contact us, you should keep this in mind and behave rationally and calmly in order not to aggravate your situation. [...] Applying legal action or other pressure against us will result in your IP address and/or your network range being listed in our database. ».

À noter que cette règle de transparence n'impose pas de donner tous les détails. Par exemple, l'opérateur de la liste ne va évidemment pas publier les adresses du pot de miel, cela détruirait complètement son efficacité.

Ensuite, la traçabilité. La DNSBL devrait maintenir un historique des ajouts et retraits, avec les raisons, et publier cet historique. Là encore, l'historique publié peut être expurgé mais il doit contenir suffisamment d'informations pour qu'un utilisateur (ou l'administrateur d'une machine listée dans la liste noire) puisse comprendre pourquoi. Si on prend (un peu au hasard), la liste CBL, on trouve juste : « IP Address X.Y.Z.170 is listed in the CBL. It appears to be infected with a spam sending trojan or proxy. It was last detected at 2011-12-17 12:00 GMT (+/- 30 minutes), approximately 4 hours ago. », ce qui est un peu court.

Beaucoup de gérants de DNSBL sont du genre « éradicateur » et n'hésitent pas devant les dommages collatéraux. Le RFC dit d'ailleurs franchement qu'on ne fait pas d'omelette sans casser d'œufs. Ainsi, il arrive que des listes répondent pour des adresses qui n'ont pas eu de comportement malveillant mais font partie du même préfixe (mettre dans la liste tout un /28 lorsqu'une seule adresse IPv4 de ce /28 a mal agi, par exemple). Le RFC recommande que cette pratique d'élargissement soit clairement documentée.

L'entrée dans la liste est une chose. Mais, avec la plupart des DNSBL, les problèmes sont encore pires pour sortir de la liste. Même quand l'entrée est correctement faite, et à juste titre, on peut avoir des difficultés incroyables pour se faire rayer de la liste. Par exemple, une machine Windows devient un zombie, crache du spam à tout va, et se retrouve « noirlistée », ce qui est normal. Ensuite, l'administrateur système prend les choses en main, reformate le disque, installe NetBSD à la place, et va tenter de « délister » la machine, désormais propre. Avec la plupart des DNSBL, il aura un mal fou. Être enregistré dans une liste est facile, la quitter est très très dur. C'est le même problème lorsqu'une organisation disparait et que ses adresses IP sont récupérées par une autre, qui va s'apercevoir, mais trop tard, que le RIR lui a passé des adresses plombées par une mauvaise réputation.

Le RFC demande donc que les gérants de liste changent de perspective. Au lieu de considérer le retrait comme une opération en soi, toute la liste devrait être considérée comme temporaire et la sortie devrait être automatique au bout d'un moment.

Quelle durée avant cette expiration automatique ? Cela dépend de comment est constituée la liste. Si elle est faite manuellement, sur la base d'informations relativement statiques, comme les allocations de préfixes IP, alors les durées de vie peuvent être longues. Si la détection est automatique (par exemple une liste noire de relais HTTP ouverts), alors une durée de vie très courte est plus raisonnable. Ainsi, la machine dont la configuration a été corrigée disparaîtra vite de la liste et la machine qui rechute sera vite réadmise dans la liste. Dans tous les cas, le RFC demande que la politique d'expiration soit elle aussi publiée. Des informations comme « dernière vérification le tant » sont très précieuses pour évaluer la qualité d'une entrée de la base.

Autre bonne pratique, la fourniture d'un canal privé pour demander le retrait d'une entrée dans la base. Il est nécessaire qu'un tel canal soit disponible. Cela peut être aussi simple qu'une adresse de courrier ou qu'un formulaire Web. Mais, en tout cas, une DNSBL ne devrait pas exiger de discussion publique de la demande de retrait. (Oui, certaines le font, comme forme de punition des administrateurs systèmes qui ont fait preuve de négligence, et laissé leur machine être utilisée pour le spam.)

Et, bien sûr, la DNSBL doit fournir un canal de communication qui ne soit pas lui-même bloqué par la DNSBL... Si l'administrateur de 192.0.2.25 veut demander le retrait de cette adresse de la liste, et que le canal des demandes de retrait est une adresse de courrier, sur un serveur qui utilise la DNSBL, on se retrouverait dans une situation très kafkaïenne. Bien sûr, ces adresses de demande de retrait reçoivent beaucoup de spam mais le filtrage qui les protège devrait être très prudent, pour ne pas rejeter des demandes légitimes.

Les réponses à ces demandes de retrait devraient être raisonnablement rapides. Le RFC suggère deux jours (et sept au grand maximum).

Certaines DNSBL n'acceptent de demandes de retrait de la liste noire que lorsqu'il y a eu une forme d'authentification que le demandeur est bien en charge de l'adresse en question (vérification de l'adresse de courrier dans les bases des RIR, par exemple). Cette pratique est déconseillée car une telle authentification est souvent très difficile à fournir dans l'Internet d'aujourd'hui.

Le RFC recommande même de sérieusement envisager la possibilité de retirer automatiquement les adresses incriminées, sur simple requête (politique dite « pas de question » car on ne demande rien au demandeur). Si l'inscription dans la liste est le résultat d'un test automatique, l'adresse IP « coupable » sera très vite remise, de toute façon. Si on craint une guerre d'ajout/retrait dans la base, il suffit de mettre une limitation au rythme des requêtes (par exemple, deux retraits maximum en vingt-quatre heures) ou de détecter ces guerres et de verrouiller alors l'adresse dans la base. Une telle politique « pas de question » permet de corriger très vite les erreurs dans la base, et ne diminue pas sensiblement l'efficacité globale de la DNSBL (qui ne dépend pas de quelques adresses). Enfin, cette politique permet de désamorcer les (nombreux) conflits entre les gérants de la DNSBL et les responsables des adresses noirlistées.

On l'a vu, ce RFC ne veut pas trancher la question de savoir si une politique d'ajout dans la liste est correcte ou pas. Par contre, la liste des bonnes pratiques demande qu'il y ait symétrie entre la politique d'ajout et celle de retrait. Normalement, si une adresse est ajoutée pour une raison X, et que X cesse d'être vrai, l'adresse devrait être retirée. Par exemple, si une DNSBL stocke les adresses IP des relais de courrier ouverts, elle devrait retirer les adresses qui ne sont plus de tels relais (parce que l'administrateur a réparé la configuration). Cette recommandation du RFC va à l'encontre de la pratique de certaines DNSBL de punir les gérants des machines en question, en demandant une autocritique publique, voire carrément de l'argent, pour être délisté.

Enfin, dernière bonne pratique dans la section 2, cette question du paiement. Le RFC explique qu'il est normal qu'une DNSBL fasse payer ses clients pour y accéder (la définition d'une DNSBL commerciale, après tout). Mais faire payer les administrateurs système, responsables des adresses listées, est, comme le dit le RFC avec euphémisme « proche du racket ». Pour convaincre les administrateurs de listes noires que cette pratique devrait être abandonnée, le RFC note que, même lorsqu'elle est faite avec les meilleures intentions du monde, elle est susceptible de déclencher des réactions négatives, et de mettre en péril le principe même des DNSBL.

Les points traités dans la section 2 étaients de nature plutôt politique. La section 3 touche plutôt aux questions techniques. Quelles sont les bonnes pratiques opérationnelles ? Il y en a plusieurs, par exemple l'importance de disposer d'un ensemble de serveurs de noms suffisant pour faire face à la charge. Il s'agit non seulement de la charge normale, mais également de celle, bien plus élevée, qui surviendra lors d'une dDoS (les spammeurs n'ont pas le sens de l'humour et les attaques par déni de service contre les listes noires ne sont pas rares). Pour être sûr que le nom de domaine « principal » de l'opérateur (mettons spamhaus.org) soit à l'écart des problèmes, le RFC conseille que la DNSBL soit dans un sous-domaine délégué, avec ses propres serveurs de noms :


% dig NS sbl-xbl.spamhaus.org

; <<>> DiG 9.7.3 <<>> NS sbl-xbl.spamhaus.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16914
;; flags: qr rd ra; QUERY: 1, ANSWER: 21, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sbl-xbl.spamhaus.org.		IN	NS

;; ANSWER SECTION:
sbl-xbl.spamhaus.org.	86400	IN	NS	b.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	5.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	0.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	k.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	d.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	o.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	x.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	h.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	l.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	2.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	4.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	i.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	3.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	r.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	f.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	g.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	t.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	8.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	q.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	1.ns.spamhaus.org.
sbl-xbl.spamhaus.org.	86400	IN	NS	c.ns.spamhaus.org.

;; Query time: 341 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 17 17:40:40 2011
;; MSG SIZE  rcvd: 388

Un des problèmes récurrents avec les DNSBL est que la plupart des administrateurs système ne testent jamais si leur configuration est toujours bonne, et lorsqu'une DNSBL cesse son activité, elle continue à être interrogée. Pour éviter cela, certaines DNSBL en fin de vie ont choisi la solution radicale de lister la totalité de l'Internet. À chaque adresse, elles répondaient qu'elle était listée. Pour détecter rapidement ce genre de problèmes, le RFC rappelle qu'on peut tester 127.0.0.1. Cette adresse ne devrait jamais apparaître dans une DNSBL. Si elle le fait, c'est que la liste a un gros problème et ne devrait plus être utilisée. Si la liste comprend des noms de domaines et pas des adresses IP, c'est le domaine invalid qui joue ce rôle. (Le RFC 5782 donne des détails sur ces conventions. D'autres domaines réservés par le RFC 2606 peuvent être utiles comme test.)

Néanmoins, la première responsabilité est celle du gérant de la liste : s'il arrête le service, il doit le faire proprement (prévenir sur son site Web au moins un mois à l'avance, etc) et surtout pas en se mettant soudain à lister tout l'Internet dans sa base. Il est important de garder le nom de domaine actif : si celui-ci était libéré, un méchant pourrait l'enregistrer et monter une fausse liste noire, qui serait utilisée par tous les clients distraits qui ont oublié de changer leur configuration.

Du point de vue technique, la méthode recommandée est de changer les serveurs de noms de la zone où se trouve la liste pour des adresses IP qui ne peuvent pas exister, par exemple celles réservées pour la documentation (RFC 5735). Ainsi, on est sûr que le domaine ne marchera pas et qu'aucun enregistrement ne sera retourné, montrant bien aux clients que la liste n'est plus en service. Par exemple, avec la syntaxe standard des fichiers de zone DNS :

dnsbl.example.com.  604800  IN  NS  u1.example.com.
                    604800  IN  NS  u2.example.com.
   
u1.example.com.     604800  IN  A   192.0.2.1
u2.example.com.     604800  IN  A   192.0.2.2

Le RFC a aussi des recommandations opérationnelles à faire pour le cas spécifiques des DNSBL qui listent les adresses IP de machines présentant une certaine vulnérabilité (relais SMTP ou HTTP ouverts, par exemple), détectée par un programme. D'abord, le programme ne devrait pas tester des machines préventivement (la question est controversée : certains défendent la légitimité de balayages systématiques de tout l'Internet, d'autres ne sont pas d'accord). Il ne devrait le faire que si quelque chose (un rapport d'envoi de spam, par exemple) attire l'attention sur des machines spécifiques.

Ensuite, une fois une adresse listée, les tests périodiques qui visent à évaluer si la machine est toujours vulnérable devraient être relativement espacés (pas plus d'une fois par jour). Et, bien sûr, le test ne doit pas avoir d'effet négatif (pas d'envoi de grandes quantités de données, par exemple).

Les logiciels qui sont derrière la DNSBL, comme tous les logiciels, ont des bogues. Et les utilisateurs d'une DNSBL peuvent faire des erreurs de configuration. Il est donc important que tout soit vérifié et testé et que des procédures soient en place pour faire face aux problèmes (par exemple, le gérant de la DNSBL doit être prêt à vider manuellement la base ou une partie de celle-ci, si une erreur entraîne le listage erronée d'adresses IP).

À noter que le Wikipédia anglophone a un intéressant tableau de comparaison des DNSBL.

Pour résumer, on a vu que ce RFC résultait d'un compromis entre ceux qui voulaient des listes noires opérant comme elles le voulaient et ceux qui souhaitaient les rendre un peu plus responsables. Le compromis a été de donner peu de recommandations concrètes excepté de documenter les choix effectués. À l'heure actuelle, le moins qu'on puisse dire est que la plupart des listes noires ne font même pas ce minimum...

2012-01-18

N° 68 – Réseaux et contenus documentaires africains dans le Web

2012-01-18 Antonin Benoit Diouf - SENBIBDOC - Métier, Bibliothèques numériques, Afrique, Reseaux documentaires
En d’autres temps ce titre aurait sûrement plus étonné, voire suscité une curiosité légitime avec sans doute, en toile de fond, la quasi certitude de voir derrière cette pareille réalisation, l’idée et l’assistance de mains plus expertes provenues d’autres cieux. La réalité actuelle est toujours imprégnée de cet accompagnement émanant de l’extérieur, permettant au monde [...]

18 janvier : PAS de SOPA ni de PIPA !

Ce mercredi 18 janvier 2012, Formats-Ouverts.org s'associe (à sa petite échelle) aux protesations contre les lois SOPA et PIPA envisagées aux USA.

Pour protester contres ces lois, le site Wikipedia en anglais est en blackout toute la journée et explique pourquoi (en anglais), comme Identi.ca. Et Framablog explique aussi la situation (en français) : si ces lois étaient votées, elles « endommageraient gravement l’Internet libre et ouvert ». Ce dernier repose sur des standards ouverts.

Le 18 janvier sur Formats-Ouverts.org :

RFC 4627: The application/json Media Type for JavaScript Object Notation (JSON)

2012-01-18 Stéphane Bortzmeyer - xmlfr

Il existe une pléthore de langages pour décrire des données structurées. XML est le plus connu et voici un de ses concurrents, JSON, décrit dans ce RFC.

JSON existe depuis longtemps mais n'avait pas de norme formelle. C'est désormais fait dans notre RFC.

JSON se veut plus léger que XML. Comme son concurrent XML, il permet de représenter des structures de données hiérarchiques.

À noter que JSON doit son origine, et son nom complet (JavaScript Object Notation) au langage de programmation Javascript, dont il est un sous-ensemble. Mais JSON n'est pas un langage de programmation, seulement un langage de description de données, et il ne peut donc pas servir de véhicule pour du code méchant.

Voici un exemple, tiré du RFC, d'un objet exprimé en JSON :

  {
      "Image": {
          "Width":  800,
          "Height": 600,
          "Title":  "View from 15th Floor",
          "Thumbnail": {
              "Url":    "http://www.example.com/image/481989943",
              "Height": 125,
              "Width":  "100"
          },
          "IDs": [116, 943, 234, 38793]
        }
   }
Les détails sont dans les sections 1 et 2 du RFC. Cet objet d'exemple a un seul champ, Image, qui est un autre objet (entre { et }) et qui a plusieurs champs. Un de ces champs, IDs, a pour valeur un tableau.

JSON est donc un format simple, il n'a même pas la possibilité de commentaires dans le fichier... Voir sur ce sujet une intéressante compilation.

Voici un exemple d'un programme Python pour écrire un objet Python en JSON (on notera que la syntaxe de Python et celle de JavaScript sont très proches) :

import json

objekt = {u'Image': {u'Width': 800,
                     u'Title': u'View from Smith\'s, 15th Floor, "Nice"',
                     u'Thumbnail': {u'Url':
                                    u'http://www.example.com/image/481989943',
                                    u'Width': u'100', u'Height': 125},
                     u'IDs': [116, 943, 234, 38793],
                     u'Height': 600}} # Example from RFC 4627, lightly modified

print json.dumps(objekt)
Et un programme pour lire du JSON et le charger dans un objet Python :
import json

# One backslash for Python, one for JSON
objekt = json.loads("""
{
      "Image": {
          "Width":  800,
          "Height": 600,
          "Title":  "View from Smith's, 15th Floor, \\\"Nice\\\"", 
          "Thumbnail": {
              "Url":    "http://www.example.com/image/481989943",
              "Height": 125,
              "Width":  "100"
          },
          "IDs": [116, 943, 234, 38793]
        }
   }
""") # Example from RFC 4267, lightly modified

print objekt
print ""
print objekt["Image"]["Title"]

Si vous voulez le faire en Go, il existe un bon article d'introduction au paquetage standard json.

JSON dispose d'une page Web officielle, où vous trouverez plein d'informations.

2012-01-17

17 janvier

PAS de SOPA ni de PIPA !

Le 17 janvier sur Formats-Ouverts.org :

RFC 6522: The Multipart/Report Media Type for the Reporting of Mail System Administrative Messages

Un court RFC pour un format simple : le type MIME multipart/report permet d'envoyer des rapports structurés au sujet d'un message. Ce RFC est la dernière version de la norme sur multipart/report, marquée par un léger allègement des règles d'utilisation.

Pas de grands changements, sinon. L'idée de base de multipart/report est de pouvoir faire des messages à propos des messages. Par exemple, un avis de non-remise (RFC 3461) est un message disant qu'un message n'a pu être remis, et intégrant le message originel. Un rapport ARF (RFC 5965) est un message disant qu'un message est abusif (spam, par exemple) et intégrant également le message originel. D'où l'idée d'avoir un type commun pour tous ces « messages sur les messages », et c'est multipart/report, normalisé dans notre RFC 6522, qui succède au RFC 3462 (qui succédait lui-même au RFC 1892). Ce type multipart/report est très largement utilisé depuis longtemps, et par de nombreux logiciels.

La présentation détaillée du type « rapport » figure en section 3. Voici d'abord un exemple d'un tel message, ici pour indiquer une non-délivrance, généré par un MTA Postfix :

Date: Wed, 11 Jan 2012 13:45:44 +0000 (UTC)
From: MAILER-DAEMON@bortzmeyer.org (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: bortzmeyer@nic.fr
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
        boundary="154CD3AC2C.1326289544/mail.bortzmeyer.org"
Content-Transfer-Encoding: 8bit

This is a MIME-encapsulated message.

--154CD3AC2C.1326289544/mail.bortzmeyer.org
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii

[La première partie du rapport, lisible par un humain.]

This is the mail system at host mail.bortzmeyer.org.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

--154CD3AC2C.1326289544/mail.bortzmeyer.org
Content-Description: Delivery report
Content-Type: message/delivery-status

[La deuxième partie du rapport, conçue pour être analysée par des
programmes.]

Reporting-MTA: dns; mail.bortzmeyer.org
X-Postfix-Queue-ID: 154CD3AC2C
X-Postfix-Sender: rfc822; bortzmeyer@nic.fr
Arrival-Date: Wed, 11 Jan 2012 12:24:50 +0000 (UTC)

Final-Recipient: rfc822; nothere@nowhere.example
Action: failed
Status: 5.4.4
Diagnostic-Code: X-Postfix; Host or domain name not found. Name service error
    for name=nowhere.example type=AAAA: Host not found

--154CD3AC2C.1326289544/mail.bortzmeyer.org
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit

[Puis le message originel, dans la troisième partie du rapport.]
Notez le paramètre report-type, qui a ici la valeur delivery-status. (Cela serait feedback-report pour du ARF.)

Notez surtout le découpage en trois parties (la dernière est optionnelle) :

  • Une partie qui contient un message en format libre et en langue naturelle.
  • Une partie structurée (dans l'exemple ci-dessus, avec la syntaxe message/delivery-status du RFC 3464).
  • Le message originel.

Si on trouve le message originel trop gros, la troisième partie peut se composer uniquement des en-têtes du message. Elle aura alors le type message/rfc822-headers (section 4 de notre RFC).

Naturellement, les messages multipart/report ne sont pas plus authentifiés que les autres messages : il faut donc éviter d'agir automatiquement lors de leur réception (section 7).

Le seul changement de fond depuis le RFC 3462 concerne une ancienne restriction : multipart/report ne pouvait apparaître qu'au plus haut niveau du message (rappelez-vous que MIME est récursif, un message MIME peut contenir d'autres messages MIME). Cela interdisait, par exemple, de faire un multipart/report au sujet d'un multipart/report. Il semble bien que personne ne mettait en œuvre cette restriction et ce nouveau RFC 6522 l'a donc supprimé. (Voir section 1.)

RFC 6462: Report from the Internet Privacy Workshop

2012-01-17 Stéphane Bortzmeyer - xmlfr

Après une très longue période d'ignorance quasi-complète des problèmes de protection de la vie privée, l'IETF a évolué et on n'entend plus gère ses participants écarter d'un revers de main ces questions, en disant « Nous, on fait juste de la technique, tout ça, c'est de la politique, ça ne nous concerne pas. » De nos jours, au contraire, la prise de conscience est nette et l'IETF a désormais une activité structurée autour de la notion de vie privée, activité qui se traduit par un programme dédié et une liste de diffusion. Faut-il aller plus loin ? C'était une des questions posées lors de l'Atelier « Internet Privacy Workshop 2010 », atelier qui s'est tenu du 8 au 9 décembre 2010 à Cambridge et dont ce RFC est le compte-rendu. (L'auteure travaille pour une ONG qui lutte pour les libertés sur l'Internet.)

Pas de décisions à attendre tout de suite, donc. On en est à un stade d'exploration. L'atelier de Cambridge était coorganisé par l'IETF, le MIT et le W3C pour voir ce que les SDO pouvaient faire en terme de protection de la vie privée. On est loin d'un accord unanime (et le résumé du RFC dit bien qu'aucun des organismes présents n'a de position officielle sur ces questions) mais au moins quelques pistes de travail émergent. L'IETF étant chargé de produire des spécifications concrètes, une bonne partie de l'atelier a porté, non pas sur des discours généraux sur la vie privée, mais sur les tâches envisageables.

La question de la protection de la vie privée sur l'Internet est immense et couvre beaucoup de domaines très différents. Certains problèmes apparaissent de manière récurrente, le fingerprinting (la détermination d'une identité à partir de traces numériques qui n'étaient a priori pas conçues pour cela), la fuite d'informations, la difficulté à distinguer les partenaires primaires (à qui on a donné directement de l'information) des tiers (qui ont eu de l'information sans qu'on interagisse explicitement avec eux), le manque d'informations des utilisateurs sur les avantages et inconvénients d'une meilleure protection, etc. (Notons que le RFC mentionne les faiblesses des utilisateurs, mais pas l'aggressivité avec laquelle les capitalistes collectent et revendent de l'information privée.) Le RFC note que la vie privée n'est pas un absolu et que, par exemple, la protéger peut influer négativement sur l'utilisabilité d'un service. Bref, il y a pour l'instant davantage de défis que de solutions (section 1).

Plus précisement, de quoi a-t-on parlé pendant l'atelier (les supports présentés sont disponibles en ligne) ? La section 2 résume tout cela. D'abord, une discussion technique (section 2.1). Commençons par l'adresse IP. Elle donne souvent bien trop d'informations (il est trivial de remonter d'une adresse IP à un utilisateur, ce qui explique pourquoi elle est considérée comme une donnée personnelle). Certains protocoles offrent des risques particuliers comme certaines techniques de mobilité, qui permettent de suivre un utilisateur à la trace.

C'est d'ailleurs dans le cas de l'adresse IP qu'on trouve un des rares exemples d'une technologie IETF spécialement développée pour répondre à des craintes concernant la vie privée : les adresses IP temporaires du RFC 4941, qui sont partiellement aléatoires, et regénérées de temps en temps, pour éviter le suivi de l'utilisateur.

Autre mécanisme bien connu pour empêcher le suivi par l'adresse IP : le routage en oignon, surtout connu grâce à Tor. Ce service route les paquets à travers plusieurs nœuds distincts, chiffrant leur contenu à chaque fois. Seuls les premiers et derniers nœuds voient le message en clair. Observer le trafic ne permet de trouver, au pire, que l'origine (si on espionne au début), ou bien que la destination (si on espionne à la fin).

Mais Tor n'est pas parfait : le contenu des messages peut donner des indications sur l'origine (cookies, par exemple, pour une requête HTTP). Si on veut vraiment être anonyme, utiliser Tor ne suffit pas : il faut aussi couper bien des choses sur son navigateur, à commencer par Flash et JavaScript, et certains peuvent considérer cela comme un problème. Comme souvent en sécurité, rien n'est gratuit. Protéger sa vie privée peut nécessiter des sacrifices.

Les participants à l'atelier ont également planché sur le mode private browsing qu'offrent certains navigateurs. C'est un mode dans lequel le navigateur ne stocke pas localement les identifiants de session (comme les cookies). Son but n'est pas de protéger contre un suivi de l'utilisateur par le serveur mais de protéger contre d'autres utilisateurs du même poste client. L'expérience indique que beaucoup d'utilisateurs ne comprennent pas la différence et croient que le private browsing leur procure une navigation sans flicage. C'est un exemple d'un autre problème courant en sécurité : les utilisateurs ne comprennent pas les risques.

Enfin, dernière discussion technique, sur les propositions Do Not Track, qui permettent à un utilisateur d'indiquer clairement aux sites Web qu'il ne veut pas être suivi à la trace. Pour l'instant, ce ne sont que des propositions, sans accord technique ou politique.

Après ces discussions techniques, l'atelier s'est demandé quel pouvait être le rôle des SDO dans cette histoire. Dans le passé, il n'y a pas eu d'appproche systématique de la vie privée dans les protocoles IETF. Cela ne veut pas dire que rien n'a été fait : certains RFC ont été entièrement conçus pour résoudre un problème de vie privée (comme le RFC 4941 pour IPv6 ou le RFC 3323 pour SIP). Certains services particulièrement sensibles ont bénéficié de davantage d'efforts, par exemple l'indication de présence (RFC 2778) ou bien sûr la géolocalisation (RFC 3693). Un protocole comme ALTO (RFC 5693) a également vu ses problèmes de vie privée étudiés dès le début. Le cas d'ALTO est difficile car le protocole est d'autant plus efficace que l'utilisateur révèle beaucoup de choses sur lui (en demandant à l'oracle « Je veux télécharger le fichier Serge Reggiani - Les Loups Sont Entrés Dans Paris.mp3 de taille 4732679 octets et de MD5 2d79e0d7e25c8c10c9879cefcef4102a et voici la liste complète des pairs BitTorrent qui l'ont » par rapport au plus discret mais moins efficace « je voudrais savoir si le pair 2001:db8:1::1 est plus ou moins rapide que le 2001:db8:67e::34a:1ff3 »).

La protection de la vie privée a pas mal de rapports avec la sécurité (la section 8 discute du rapprochement de ces deux concepts) et la sécurité est un bon exemple d'une préoccupation transverse (elle affecte tous les protocoles) qui était largement ignorée au début de l'IETF et a vu son rôle de plus en plus pris en compte. L'IETF a ainsi bâti une culture de la sécurité. Ainsi, depuis le RFC 1543, tous les RFC doivent inclure une section Security Considerations pour exposer l'analyse sécurité du protocole. Elle peut être vide mais elle doit être présente avec une mention expliquant pourquoi les auteurs du RFC ont consciemment laissé la section vide. Cette obligation bureaucratique n'est évidemment pas suffisante et l'IETF a ajouté une direction de la sécurité, un RFC dédié pour guider les auteurs de RFC (RFC 3552), de nombreux tutoriels pour auteurs de RFC aux réunions physiques, etc. La même méthode peut-elle être appliquée à la vie privée ? (Le RFC 2828, qui rassemble la terminologie IETF sur la sécurité, contient des termes liés à la protection de la vie privée.)

Le W3C a également procédé à un effort semblable. Un de ses premiers grands efforts a été P3P, un mécanisme pour permettre aux sites Web d'exprimer de manière formelle leur politique de gestion des données personnelles. P3P est un langage riche, qui permet d'indiquer des politiques complexes. Mais il a été très peu adopté en pratique. Opinion personnelle : comme pour la neutralité du réseau, tout le monde prétend que l'information du consommateur résoud tous les problèmes, qu'il suffit d'annoncer sa politique et que le marché choisira. Mais personne ne veut le faire réellement. P3P permettait d'exprimer les politiques de protection des données personnelles en des termes simples et non ambigus et c'était évidemment intolérable pour les e-commerçants, qui préfèrent infliger à l'utilisateur des privacy policies de vingt pages écrites en langage légal.

Après ce tour d'horizon du travail effectué et des acteurs en place, l'atelier s'est attaqué aux défis (section 3). Quels sont les grands problèmes à résoudre ?

D'abord, la trop grande facilité à identifier un utilisateur donné par les informations que donne le logiciel qu'il utilise : adresse IP, champs de la requête HTTP comme User-Agent: ou Accept-Language:, cookies (RFC 6265), et plein d'autres paramètres font qu'on peut identifier un utilisateur ou une machine bien trop souvent. C'est ce qu'on nomme le fingerprinting et c'est bien démontré par le Panopticlick.

Comme dans toute réunion de geeks, les participants à l'atelier ont évidemment pris plaisir à explorer en détail des techniques de fingerprinting particulièrement rigolotes comme d'envoyer du code JavaScript qui va transmettre au serveur la liste des polices installées dans le navigateur (elle est souvent unique).

Capturés par un simple script WSGI sur le serveur (testez-le en http://www.bortzmeyer.org/apps/env ; les variables d'environnement dont le nom commence par HTTP_ sont les en-têtes de la requête HTTP), voici une partie de ce qu'envoie un Firefox typique, depuis une machine Ubuntu :

HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_USER_AGENT: Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0
HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE: en-us,en;q=0.5
HTTP_ACCEPT_ENCODING: gzip, deflate
Cette combinaison d'options et de numéros de version est probablement unique, ou en tout cas rare sur le Web, et identifie donc assez bien une machine (sans même avoir besoin de cookie). Une telle combinaison a par exemple déjà été utilisée pour confondre un agresseur agissant pour le compte de l'industrie du divertissement.

Ces informations n'étaient pas prévues pour cet usage (par exemple, les adresses IP étaient prévues pour router les paquets, pas pour identifier une machine ou une personne). Mais remplacer ces informations par des mécanismes qui empêchent ou limitent le fingerprinting ne sera pas trivial. D'autant plus que pas mal de gens se sont habitués à les utiliser dans ce but et qu'il sera de plus en plus difficile de revenir en arrière. Ainsi, le fingerprinting est souvent utilisé pour détecter des fraudes, ou pour fournir du contenu adapté (et le RFC, qui est gentil et évite les sujets qui fâchent, ne cite pas les applications répressives du fingerprinting, pour identifier l'auteur d'un délit abominable, comme de partager des œuvres d'art). Il y aura probablement beaucoup de désaccords sur le compromis entre vie privée et service « amélioré » grâce au fingerprinting.

Au minimum, l'IETF et le W3C vont essayer de documenter les points qui, dans les protocoles courants (TCP, HTTP, SIP), facilitent le fingerprinting.

Un problème proche est celui de la fuite d'informations (section 3.2) : des mécanismes conçus pour des motifs tout à fait honorables transmettent néanmoins plus d'information qu'ils ne le devraient. Ainsi, le champ Referer: dans une requête HTTP permet de savoir d'où vient un visiteur Web (ce qui est utile) mais révèle également des choses comme les ID de session (lorsqu'ils sont mis dans l'URL), les termes de recherche utilisés, etc. Voici un exemple vu dans le journal de mon blog (les informations trop sensibles ont été modifiées). On voit les termes de recherche utilisés dans Google :

192.0.2.70 - - [16/Dec/2011:17:08:53 +0000] "GET /1383.html HTTP/1.0" 200 3291 "http://www.google.fr/url?sa=t&rct=j&q=aide+rfc+dns...

Le contrôle sur les données privées repose normalement sur la possibilité de distinguer les récepteurs primaires des données des tiers (section 3.3). Ainsi, si je me connecte sur SeenThis, ce site est récepteur primaire de mes données et je ne suis pas surpris qu'il récolte des informations sur moi. Il s'agissait d'un choix conscient et informé de ma part. Mais l'examen du code source de ce site montre qu'il fait appel au service Google Analytics et donc, sans l'avoir demandé, sans même le savoir, je transmets également des données à Google, un tiers qui peut alors récolter des données sans que je l'ai choisi.

Le cas ci-dessus est relativement simple. Mais dans le Web d'aujourd'hui, on trouve d'autres cas où la distinction entre destinataire primaire et tiers est moins évidente. Un utilisateur qui met un widget amusant sur une page peut le considérer comme primaire alors que le navigateur (par exemple pour retourner les cookies) le traitera comme un tiers, et l'inverse existe également.

Enfin, le dernier grand défi est celui de l'information de l'utilisateur (section 3.4). La plupart du temps, le flicage de ce dernier se fait discrètement, sans qu'il se rende compte de l'immense quantité de données qui est collectée à son insu. La seule information disponible est composée de « policy statements » écrits dans un jargon juridique délibérement confus, conçu pour protéger le patron de l'entreprise et pas pour informer l'utilisateur. Le RFC note que des informations cruciales (comme la durée de conservation des données) en sont souvent absentes. Opinion personnelle : c'est pour cela que les mécanismes du marché - l'entreprise publie sa politique et le consommateur est libre de continuer ou pas - ne fonctionnent pas et qu'il faut des lois comme la loi I&L. Le marche suppose une information parfaite et des acteurs symétriques, ce qui n'est pas du tout le cas ici.

Le problème est d'autant plus sérieux que, si le technicien se doute bien de tout ce que le site Web peut apprendre sur son visiteur, l'utilisateur ordinaire n'a souvent pas pas idée de la quantité de traces numériques qu'il laisse.

Il est donc nécessaire de travailler à une meilleure information. P3P était un bon effort dans ce sens. Mais comme c'était un langage riche, il était difficile de traduire une politique P3P de manière claire pour l'utilisateur. Les efforts actuels portent plutôt sur un nombre limité d'icônes qui pourraient devenir largement connues (un panneau « danger, ici votre vie privée est menacée »...)

La section 4 étudie ensuite les défis liés au déploiement des bonnes pratiques. D'abord (section 4.1), le problème que les mesures techniques sont génériques, alors que les menaces effectives sont souvent spécifiques à un contexte donné. La vie privée n'est pas un concept binaire. Il y a d'autres stades que « complètement privé » et « public ». Mais il est très difficile de traiter cette complexité par des mesures techniques.

Par exemple, les solutions situées en couche 3 comme les adresses IP temporaires du RFC 4941 résolvent certes certains problèmes (le serveur qui reconnaît un visiteur récurrent uniquement sur son adresse) mais ne protège pas du tout contre un FAI ou un État qui essaie d'associer une adresse à un utilisateur. Selon la menace envisagée, ces adresses temporaires sont donc efficaces... ou pas du tout.

Il ne faut donc pas évaluer les solutions techniques en leur demandant de résoudre tous les problèmes possibles. Il ne serait pas raisonnable pour l'IETF d'exiger de ses protocoles qu'ils empêchent complètement toute atteinte à la vie privée. Il faut plutôt dire clairement quels sont les risques et qui (le programmeur, l'utilisateur, la loi) est chargé de les traiter.

Autre problème délicat de déploiement de solutions de protection de la vie privée : la tension entre l'utilisabilité et la protection (section 4.2). Comme souvent en matière de sécurité, il va falloir faire des choix douloureux. Les tenants du Roi Marché ont beau jeu de faire remarquer que les utilisateurs, lorsqu'ils ont le choix, vont vers les services qui violent le plus leur vie privée (Facebook, Google, etc) en échange d'applications sympas et qui brillent. La principale faiblesse de cet argument est qu'il suppose que l'utilisateur est parfaitement conscient des risques, et de ce qui peut lui arriver, ce qui est très optimiste.

Un bon exemple de ce compromis est donné par Tor. Celui-ci fournit une bonne protection mais complique et ralentit (en raison du nombre d'étapes de routage) la navigation. Résultat, il reste peu utilisé, en bonne partie parce que les utilisateurs font un calcul coût/bénéfice (peu informé, d'ailleurs) et décident que leur vie privée n'est pas assez importante pour justifier ce coût.

Avec Tor, le coût de la protection est élevé. Mais même des mesures bien plus légères ont des coûts. Supprimer l'en-tête Referer: des requêtes HTTP améliore certainement la protection. Mais certains sites Web proposent une vue différente selon la valeur de ce champ et, en le supprimant, on se prive de ce service. Reste à savoir qui va décider du compromis, et sur quelles informations : comment exposer ce choix (« Do not send Referer headers ») dans une interface utilisateur, de manière qui permette un choix raisonné ? Alors même que l'effet de ce choix va dépendre des sites (dans la plupart des cas, le Referer: est inutile au client Web.)

Ces problèmes d'utilisabilité sont cruciaux. Le RFC cite l'exemple de SIP, où un mécanisme normalisé de protection des requêtes contre l'écoute existe (RFC 3261, section 23) mais il n'est pas utilisé en pratique car trop contraignant.

Dernier obstacle au déploiement de techniques respectant davantage la vie privée, la difficulté à trouver les bonnes motivations (section 4.3). Les différents acteurs impliqués ne feront pas d'effort s'ils n'ont pas une motivation pour cela. Cela peut être la crainte du gendarme, la conviction que cela leur apportera plus de clients ou simplement le souci d'utiliser les meilleures techniques (ces trois motivations sont rarement présentes en même temps). La crainte du gendarme est discutée en section 4.3.1. Traditionnellement, beaucoup de services proposés sur l'Internet sont gratuits et la possibilité de vendre les données personnelles des utilisateurs est l'une des voies les plus évidentes pour gagner de l'argent. Comme l'illustre un dessin célèbre, « soit l'utilisateur est le client, soit il est la marchandise ». Dans un tel contexte, il n'y a pas de motivation économique à respecter la vie privée, bien au contraire. Les diverses autorités de régulation ont fini par froncer les sourcils, ce qui a mené les fournisseurs de ces services à publier de longues politiques d'utilisation des données sur leur site. Comme le note le RFC, ces politiques, écrites sans effort pédagogique, visent plutôt à protéger le fournisseur du service qu'à informer correctement et complètement l'utilisateur. Le RFC note à juste titre que ces problèmes ne se corrigeront pas tout seuls et qu'une approche régulatrice est nécessaire (cf. le rapport de la FTC de 2010 sur l'importance d'avoir des politiques publiques mieux écrites).

Le RFC soutient que cette tendance doit continuer : sans forte pression des régulateurs, de la loi, le patronat Internet va toujours essayer de concéder le moins de vie privée possible aux utilisateurs. Un exemple d'une telle pression est la directive européenne qui parle des cookies, indiquant qu'ils ne doivent pas être utilisés sans le consentement des utilisateurs.

Le cas de P3P, déjà cité, est un bon exemple de ce problème des motivations (section 4.3.2). L'idée de base était que les logiciels du côté du client allaient pouvoir lire et comprendre les politiques de protection de la vie privée et automatiquement réagir (par exemple en n'envoyant pas de cookies aux sites dont la politique était trop peu protectrice de la vie privée). C'est une idée très états-unienne : les acteurs libres s'informent mutuellement de leurs pratiques et décident ensuite librement, en adultes majeurs, informés et consentants, de poursuivre ou pas la relation. Si on croit qu'il y a égalité (d'information, de moyens de traitement, de pouvoir) entre le patron de Facebook et M. Michu, utilisateur de Facebook, cela peut marcher. Sinon, on préfère l'approche européenne où certaines pratiques sont interdites, qu'il y ait ou pas consentement de la marchandise, pardon, de l'utilisateur.

Donc, P3P permettait d'automatiser ce processus d'information et de décision. Microsoft a pris une décision importante en choisissant, dans Internet Explorer 6, de n'envoyer des cookies aux tiers que si ceux-ci avaient une politique P3P. Comme n'importe quelle politique, même outrageusement prédatrice, était acceptée par Internet Explorer, la plupart des sites Web se sont pliés à cette décision et ont copié/collé la première politique P3P qu'ils trouvaient (souvent l'exemple pris sur le site du W3C). Cette expérience menée grâce à Internet Explorer (les autres auteurs de navigateurs n'ont fait aucun effort et n'ont jamais intégré P3P) a permis de mettre en évidence une limite de P3P : le site qui publie sa politique peut mentir (« Nous ne vendons pas vos données personnelles »). Aucun mécanisme légal ou autre ne l'en empêche. (Voir par exemple l'article « Token Attempt: The Misrepresentation of Website Privacy Policies through the Misuse of P3P Compact Policy Tokens ».)

Le cas illustre bien la question des motivations : pour qu'ils reçoivent des cookies d'Internet Explorer, les sites devaient publier du P3P. Alors, ils l'ont fait (motivation technique). Il n'y avait pas de pression légale ou régulatrice pour dire la vérité dans ces politiques P3P, alors ils ne l'ont pas fait (pas de motivation légale). Les clients (en partie à cause de l'absence de gestion de P3P par les navigateurs) ne donnaient pas la préférence aux sites publiant du bon P3P, alors les sites n'ont pas cherché à l'améliorer (pas de motivation commerciale).

Il sera intéressant de voir si cela marche mieux en sens inverse : pour la géolocalisation, le RFC 4119 et le RFC 6280 fonctionnent de manière opposée à P3P, en permettant aux utilisateurs d'indiquer leurs choix en matière de protection des données personnelles. Ils sont normalement plus motivés que les entreprises capitalistes pour cela.

Bien sûr, on est ici très loin des questions techniques que se posent normalement les SDO. Mais la compréhension de ces enjeux économiques et légaux est nécessaire, si on veut que les futures techniques de protection de la vie privée aient plus de succès que P3P.

Conclusion, en section 5, quel est le plan d'action pour les SDO ? Pour l'IETF, la synthèse est que cela va être compliqué. L'IETF normalise des protocoles dans les couches basses, sans présupposer d'un usage particulier, alors que les menaces pour la vie privée sont très dépendantes du contexte. Il va donc être difficile de trouver des réponses générales, dans les protocoles IETF. Cela ne veut pas dire qu'il ne faut rien faire. Le travail a déjà commencé autour d'une série de recommandations pour les auteurs de RFC (rassemblées dans ce qui est aujourd'hui un Internet-Draft, draft-morris-privacy-considerations).

Les participants à l'atelier étaient tous d'accord sur la nécessité de poursuivre également le travail technique, par exemple sur les leçons apprises de Tor, ainsi que sur les capacités (plus fortes que prévues) de fingerprinting des protocoles existants.

Et le W3C ? Il est probablement mieux placé pour améliorer la protection de la vie privée, puisque les normes du W3C sont plus proches de l'utilisateur, et utilisées dans un contexte plus spécifique. Contrairement à l'IETF, le W3C peut se restreindre au Web.

L'annexe A résume quels sont les documents bruts disponibles pour ceux qui veulent approfondir leur connaissance des travaux de cet atelier :

2012-01-16

16 janvier

PAS de SOPA ni de PIPA !

Le 16 janvier sur Formats-Ouverts.org :

2012-01-15

15 janvier

PAS de SOPA ni de PIPA !

Le 15 janvier sur Formats-Ouverts.org :

Les savoirs de l’écriture en Grèce ancienne (2) : Aux origines de la codification écrite des lois en Grèce

2012-01-15 Christian Fauré - Défaut

Deuxième note sur le livre « Les savoirs de l’écriture en Grèce ancienne » avec l’article de Giorgo Camassa.

Aux origines de la codification écrite des lois en Grèce

L’utilisation de l’alphabet en Grèce ancienne concerne une multiplicité d’activités, rappelle Giorgio Camassa : mais pour quelle raison les anciens grecs ont-ils fixé par écrit les codes de la lois ?

Ce qui est pour nous évident aujourd’hui – que législatif et écriture aillent de pair – n’a pas toujours été le cas. Alors où, dans quel lieu, les premières lois écrites furent-elles rédigées ?

Il semble y avoir un consensus sur l’idée que l’oeuvre de codification des lois aurait plutôt eu lieu dans les colonies que dans les métropoles. Et d’ailleurs “nomos” (la loi) dérive de la même racine que “nemein” (distribuer, répartir, allouer,..) : on s’imagine que la nécessité de répartir les terres entre les colons fut une motivation première pour écrire les lois, c’est à dire écrire les répartitions.

Mais en se focalisant trop tôt sur les colonies grecques, n’oublie-t-on pas trop vite la Crête dont il nous reste un nombre d’inscription juridique beaucoup plus nombreux que n’importe quelle région de la Grèce ?

Pour Giorgio Camassa, le cas de la Crête n’est pas convoqué pour lui attribuer une quelconque paternité dans l’écriture des lois, mais plutôt pour souligner que cette nouvelle écriture fut en Crête précédée et accompagnée par l’existence d’un corpus de lois transmises oralement. Camassa rappelle que, pour lui, l’existence d’une transmission orale d’un corpus législatif est la condition sine qua non pour la fixation précoce d’un code de loi écrites.

Les pratiques orales de législation sont elles-même baignées d’une culture poétique et lyrique :

Il semble en effet difficile de se soustraire à la suggestion qu’en Crête, plus clairement qu’ailleurs, l’art de la législation était inséparable de la précellence de la parole rythmique, capable de forger l’âme, grâce à ses pouvoirs évocateurs et psychagogiques, mais capable aussi d’intervenir activement sur la réalité en la transformant” p.145

C’est seulement dans le cadre d’une culture législative orale que, lentement et non à travers une crise :

“l’opinion publique citoyenne, forte de tout son poids, demanda avec insistance un plus grand contrôle sur le système jurique par l’intermédiaire de la publication des lois”. The Local Scripts of Archaic Greece, Oxford, 1961, p.43

Après la question du lieu, vient la question du comment : comment s’est opérée cette transition ?

Dans une tradition orale, la perception de la loi par les individus est quelque chose d’absolu et d’immuable : les modifications sont imperceptibles et “la loi d’une génération ne peut pas être mise en comparaison avec celle d’une autre”.

Mais, même une fois écrite, la loi reste associée à son caractère immuable, et partout en Grèce et jusqu’à Aristote se manifeste l’hostilité au changement des lois établies.

N’y a-t-il pas là un paradoxe :

“au moment-même où, avec le début d’une codification écrite, s’ouvre la voie, d’abord, à la perception et, ensuite, à la pratique du changement, on se préoccupe immédiatement d’éviter ce dernier”. p.149

Giorgio Camassa y voit la force du conditionnement exercé par la prédominance de la culture orale au sein même de la période écrite qui s’ouvre. Ce qui est une manière pour lui d’articuler tradition orale et tradition écrite sans avoir a postuler la nécessité de l’écriture pour autoriser l’oeuvre du législateur.

Et d’ailleurs, l’écriture elle-même n’était-elle pas destinée à être vue plus qu’à être réellement lue ? Comme le rappelle Marcel Détienne, l’écriture pénètre dans l’espace public en se montrant et en s’affichant :

“Gravés sur les édifices publics ou sur les stèles placées dans les lieux ou se déroulait la vie communautaire, les codes sont de clairs exemples d’une écriture destinée à être vue plutôt que lue”. p.151

Signaler sur Twitter

Related posts:

  1. Les savoirs de l’écriture en Grèce ancienne (1) L’espace de la publicité : ses opérateurs intellectuels dans la...
  2. Les savoirs de l’écriture en Grèce ancienne (3) : Marchands, transactions économiques, écritures Troisième note sur les Savoirs de l’écriture en Grèce ancienne...
  3. Le stade anal de l’écriture Faites l’expérience suivante la prochaine fois que vous irez sur...

2012-01-14

14 janvier

PAS de SOPA ni de PIPA !

Le 14 janvier sur Formats-Ouverts.org :

Exposé « Peut-on se passer de moteurs de recherche ? » à l'install-party du CRANS

Le samedi 14 janvier, le CRANS organisait une install party à l'ENS à Cachan. J'y ai fait un exposé sur le thème « Peut-on se passer de moteurs de recherche ? ». Toutes les informations sont disponibles sur le site officiel (la vidéo devrait y apparaître un de ces jours).

L'introduction est « Aujourd'hui, beaucoup d'utilisateurs dépendent entièrement d'un moteur de recherche pour toute navigation sur l'Internet. On entend même des enseignants de collège dire aux élèves « Pour aller sur Wikipédia, tapez "wikipedia" dans Google » Pourquoi est-ce une mauvaise idée ? Quels sont les inconvénients des moteurs de recherche ? Que se passe-t-il lorsqu'une panne ou la censure modifie le résultat d'une recherche ? Quels sont les points forts des moteurs de recherche, où ils sont utiles ? À quoi sert le DNS et pourquoi est-ce important de comprendre les noms de domaine ? »

Les transparents sont disponibles :

Et, si vous n'avez pas pu venir, ce n'est pas grave, Norman a fait une excellente vidéo sur le sujet, « Maintenant, j'ai Google ».

2012-01-13

13 janvier

PAS de SOPA ni de PIPA !

Le 13 janvier sur Formats-Ouverts.org :

2012-01-12

12 janvier

PAS de SOPA ni de PIPA !

Le 12 janvier sur Formats-Ouverts.org :

Le TLD du Gabon en panne depuis quatre mois

2012-01-12 Stéphane Bortzmeyer - xmlfr

Depuis septembre 2011, le TLD du Gabon, .ga est en panne quasi-complète. Quelle est la panne exacte ? Pourquoi cette panne ? Que fait le gouvernement ? Quelles sont les conséquences pour le reste du DNS ?

La panne a commencé le 13 septembre mais ses conséquences n'ont pas été visibles tout de suite. Le serveur maître à Libreville a commencé par refuser à ses esclaves les transferts de zone (RFC 5936). Le champ « expiration » dans l'enregistrement SOA de .ga étant de 42 jours, les esclaves ont fini par renoncer le 27 octobre, répondant SERVFAIL (Server Failure) :


% dig @b.hosting.nic.fr. SOA ga.
...
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 48352
...

Cela concerne les deux esclaves extérieurs, un à l'AFNIC et un au RIPE-NCC. Et les deux serveurs situés dans le pays ? Leur comportement est plus bizarre. Souvent, ils ne répondent pas (et ce n'est pas un problème réseau, puisqu'un ping fonctionne) :

% ping -c 3 nyali.inet.ga 
PING nyali.inet.ga (217.77.71.33) 56(84) bytes of data.
64 bytes from nyali.inet.ga (217.77.71.33): icmp_req=1 ttl=241 time=366 ms
64 bytes from nyali.inet.ga (217.77.71.33): icmp_req=2 ttl=241 time=365 ms
64 bytes from nyali.inet.ga (217.77.71.33): icmp_req=3 ttl=241 time=377 ms

--- nyali.inet.ga ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 365.277/369.877/377.792/5.664 ms

% dig @nyali.inet.ga. SOA ga.       

; <<>> DiG 9.7.3 <<>> @nyali.inet.ga. SOA ga.
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

Plus rigolo, la réponse peut dépendre du type de données demandé :

% dig @nyali.inet.ga. ga. SOA

; <<>> DiG 9.7.3 <<>> @nyali.inet.ga. ga. SOA
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

% dig @nyali.inet.ga. ga. NS 

; <<>> DiG 9.7.3 <<>> @nyali.inet.ga. ga. NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16007
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 6

;; QUESTION SECTION:
;ga.                            IN      NS

;; ANSWER SECTION:
ga.                     15900   IN      NS      ns-ga.ripe.net.
ga.                     15900   IN      NS      nyali.inet.ga.
ga.                     15900   IN      NS      b.hosting.nic.fr.
ga.                     15900   IN      NS      ogooue.inet.ga.
...

Lorsqu'ils répondent, le code de retour renvoyé par les serveurs est FORMERR si on a essayé avec EDNS0 (RFC 2671), ce qui est pourtant le comportement normal d'un résolveur DNS (rappelez-vous que dig, par défaut, n'avait pas le même comportement qu'un vrai résolveur, il n'activait pas EDNS0 ; ce comportement par défaut a changé récemment) :


 % dig +bufsize=1400 @nyali.inet.ga. ga. ANY 

; <<>> DiG 9.7.3 <<>> +bufsize=1400 @nyali.inet.ga. ga. ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 4032
;; flags: qr rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; Query time: 370 msec
;; SERVER: 217.77.71.33#53(217.77.71.33)
;; WHEN: Thu Jan 12 11:13:11 2012
;; MSG SIZE  rcvd: 12

% dig @nyali.inet.ga. ga. ANY                

; <<>> DiG 9.7.3 <<>> @nyali.inet.ga. ga. ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32644
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 6

;; QUESTION SECTION:
;ga.                            IN      ANY

;; ANSWER SECTION:
ga.                     7189    IN      NS      ogooue.inet.ga.
ga.                     7189    IN      NS      ns-ga.ripe.net.
ga.                     7189    IN      NS      nyali.inet.ga.
ga.                     7189    IN      NS      b.hosting.nic.fr.
...

Comme il n'y a plus guère de logiciels serveurs qui ne gèrent pas EDNS0, douze ans après sa normalisation, le plus probable est qu'il y a devant le serveur DNS une middlebox boguée (pléonasme, vu le niveau de qualité du logiciel de la plupart de ces équipements). C'est sans doute elle qui répond aux ping, et massacre les questions et/ou les réponses DNS.

Si on ne met pas EDNS0, le serveur répond, mais sans le bit AA (Authoritative Answer), ce qui est anormal pour un serveur faisant autorité (vues les données renvoyées en réponse à une requête ANY, il est probable que ce serveur ne contienne plus les données de la zone .ga). Donc, on peut dans certains cas, certains jours, avoir une réponse des serveurs de .ga mais uniquement si on les interroge sans EDNS0. Certains résolveurs se rabattent automatiquement sur le vieux DNS, sans EDNS0, lorsqu'ils ne reçoivent pas de réponse. Pour le cas où ils reçoivent FORMERR, le RFC 2671, section 5.3 dit qu'ils doivent en effet réessayer, ce que Christophe Deleuze a testé rapidement : il semble que BIND9 répète la requête sans EDNS0, et cache l'info (n'utilise plus EDNS0 avec ce serveur dans les requêtes suivantes). Unbound répète la requête sans EDNS0 mais semble ne pas cacher l'info, car il retente avec EDNS0 à la prochaine requête.

Donc, dans beaucoup de cas, .ga est quasiment inutilisable.

Que s'est-il passé ? Sans être sur place, et sans nouvelles des gérants du TLD, on ne peut que faire des hypothèses. Le plus probable est que le vrai serveur est en panne et que la middlebox, placée devant (une mauvaise architecture, mais passons), n'assure plus qu'une partie des fonctions (je sais, cela n'explique pas tout). Le fait d'avoir plusieurs serveurs DNS faisant autorité n'aide pas lorsque le maître est panne trop longtemps (les 42 jours de grâce étant écoulés).

Pourquoi personne ne répare-t-il ? Le problème aurait dû être détecté par les administrateurs de .ga, Gabon Télécom. Sinon, il a été signalé par courrier électronique en décembre 2011 (et pas seulement à des adresses en .ga, évidemment), et par fax, pour augmenter les chances de réussite. Aucune réaction. Il faut bien se rappeler deux choses : les bases de données des administrateurs de TLD (ici, la base IANA sur .GA) sont maintenues par les administrateurs eux-mêmes. S'ils sont empêchés, ou bien irresponsables, la base va dériver petit à petit et les informations (noms, numéros, etc) devenir dépassées. Et, d'autre part, la réparation nécessite que quelqu'un agisse (les pannes ne se réparent pas seules). Le Gabon n'est pas un état de droit et une des conséquences de ce système politique est que personne ne prend d'initiatives (c'est trop risqué). Donc, tous les officiels restent les bras ballants. Le problème n'est pas d'argent (le Gabon est un pays relativement riche, grâce au pétrole), ni la compétence (des tas de gens compétents sur l'Internet sont prêts à aider leurs collègues gabonais, si ceux-ci répondaient) mais de responsabiité.

Et pour le reste de l'arbre du DNS, quelles conséquences ? À peu près aucune. La structure non-centralisée du DNS fait que la panne d'un TLD n'affecte pas les autres. Contrairement à ce que prétend l'ICANN (qui justifie ainsi les tarifs colossaux de ses nouveaux TLD), un TLD n'a rien de particulier. C'est un domaine comme un autre ; s'il est en panne, cela ne gène que ses utilisateurs.

À noter qu'un problème du même genre était survenu au Tchad.

Merci à Ed Lewis pour son premier signalement du problème, grâce à son script magique de suivi des TLD, et à Jean-Philippe Pick pour des informations supplémentaires.

2012-01-11

11 janvier

PAS de SOPA ni de PIPA !

Le 11 janvier sur Formats-Ouverts.org :

2012-01-10

10 janvier

PAS de SOPA ni de PIPA !

Le 10 janvier sur Formats-Ouverts.org :

2012-01-09

9 janvier

PAS de SOPA ni de PIPA !

Le 9 janvier sur Formats-Ouverts.org :

Changer de serveur résolveur DNS facilement

La sortie, le 30 décembre 2011, du décret n° 2011-2122 relatif aux modalités d'arrêt de l'accès à une activité d'offre de paris ou de jeux d'argent et de hasard en ligne non autorisée, décret qui permet à l'ARJEL de demander le blocage d'un site de paris ou de jeux en ligne, a ramené sur le devant de la scène la question du blocage via le DNS. En effet, le décret dit explicitement « Lorsque l'arrêt de l'accès à une offre de paris ou de jeux d'argent et de hasard en ligne non autorisée a été ordonné, [...] les [FAI] procèdent à cet arrêt en utilisant le protocole de blocage [sic] par nom de domaine (DNS) ». Il existe plusieurs façons de comprendre cette phrase. Si le FAI décide de mettre en œuvre cet arrêt en configurant ses résolveurs DNS pour mentir, un moyen simple de contourner cette censure sera alors pour les utilisateurs de changer de résolveur DNS. Est-ce simple ? Est-ce réaliste ? Des logiciels peuvent-ils aider ?

D'abord, un petit rappel de vocabulaire, car j'ai déjà lu pas mal d'articles sur le sujet, où l'auteur est plein de bonne volonté et veut vraiment aider les autres à contourner la censure, mais où il ne connait pas vraiment le DNS et où il utilise un vocabulaire approximatif, voire complètement faux. Il y a deux sortes de serveurs DNS : la première, ce sont les serveurs faisant autorité, qui sont ceux qui contiennent les données (par exemple, les serveurs de DENIC ont la liste de tous les noms de domaine en .de, des serveurs de la société NS14 font autorité pour le domaine shr-project.org, etc). L'ARJEL ou un autre censeur ne peut pas toujours agir sur eux car ils peuvent être situés en dehors de la juridiction française.

Et il y a les résolveurs DNS. Ils ne connaissent au démarrage aucune donnée et servent uniquement de relais et de caches (stockage temporaire de données). Ils sont typiquement gérés par votre FAI ou bien par le service informatique de votre boîte. Ce sont eux qui sont indiqués à la machine cliente (en général par le protocole DHCP), qui les utilisera à chaque fois qu'elle aura une question (c'est-à-dire pas moins d'une centaine de fois pour la seule page d'accueil de CNN).

Si on veut censurer en France l'accès à un site de jeu en ligne, par le protocole DNS, c'est un bon endroit pour attaquer. Il en existe d'autres, mais que je garde pour d'autres articles. Modifier le comportement du résolveur est facile (les logiciels ont déjà ce qu'il faut pour cela) et certains FAI le faisaient déjà pour des raisons financières.

Mais c'est aussi une technique de censure relativement facile à contourner : l'utilisateur de la machine cliente peut changer la configuration de son système pour utiliser d'autres résolveurs que ceux de son FAI, par exemple ceux de Telecomix, qui promettent de ne pas censurer. C'est cette technique qui est discutée dans cet article.

Si vous lisez les forums un peu au hasard, vous trouverez souvent des allusions à cette méthode, de la part de geeks vantards qui affirment bien haut « rien à foutre de leur censure à la con, je change mon DNS car je suis un top-eXpeRz et je surfe sans filtrage ». La réalité est plus complexe. Prenons l'exemple d'une machine Ubuntu (il y a peu près les mêmes problèmes sur Windows ou Mac OS X). La liste des résolveurs DNS utilisés figure dans le fichier /etc/resolv.conf. Suffit-il d'éditer ce fichier, comme on le lit souvent (et bien à tort) ?

  • Déjà, il faut rappeler au frimeur de forum que la grande majorité des utilisateurs de l'Internet n'ont même pas idée qu'ils peuvent choisir (et je ne parle pas seulement du résolveur DNS, mais aussi du navigateur, du système d'exploitation, etc). Si on veut que la solution soit accessible à tout le monde, pas seulement à quelques geeks auto-proclamés, elle doit être simple.
  • Même sur Ubuntu, tout le monde ne sait pas éditer un fichier système (surtout qu'il faut être root).
  • Le frimeur à grande gueule qui écrit sur forum.blaireaux.com/index.php découvrira vite, s'il essayait ce qu'il prêche, qu'éditer resolv.conf n'est pas la bonne méthode, car le client DHCP effacera ses modifications à la prochaine connexion. Il faut modifier la configuration dudit client DHCP (cela varie énormément selon le système et le logiciel installé ; sur ma Debian, en ce moment, c'est /etc/resolvconf/resolv.conf.d/head).
  • Sur certains systèmes d'exploitation, changer un réglage aussi banal est très difficile. Par exemple, sur Android (merci à Aissen pour les informations), les serveurs DNS utilisés sur le réseau mobile ne sont pas modifiables et, sur le Wi-Fi, on ne peut les changer que si on coupe DHCP. Comme la publicité fait tout son possible pour migrer les utilisateurs vers les accès Internet sur téléphone mobile, bien plus contrôlés et moins libres, l'avenir est inquiétant.
  • Une fois qu'on sait quel fichier éditer et comment, reste la question, que mettre dans ce fichier ? Il existe plusieurs résolveurs publics situés en dehors du pouvoir de l'ARJEL, et le plus souvent cité est OpenDNS. Intéressant paradoxe : pour échapper à la censure et garder sa liberté de citoyen, on utilise un résolveur menteur, qui pratique lui-même la censure (et parfois se trompe). Utiliser OpenDNS, c'est se jeter dans le lac pour éviter d'être mouillé par la pluie. Sans compter leurs autres pratiques, comme l'exploitation des données personnelles (le résolveur DNS utilisé sait tout de vous... chaque page Web visitée lui envoie au moins une requête...). À noter qu'on peut avoir aussi un résolveur local à sa machine, ce point est traité un peu plus loin.
À noter que tous les cas ne peuvent pas être couverts dans un article. Par exemple, on peut aussi envisager de changer les réglages DNS sur la box si elle sert de relais DNS pour le réseau local vers les « vrais » résolveurs.

Pour résoudre tous ces problèmes, on peut écrire des documentations (exemples à la fin de cet article). Mais la plupart des utilisateurs auront du mal à les suivre et je pense donc que la bonne solution est la disponibiité d'un logiciel qui automatise tout cela. Quel serait le cahier des charges d'un tel logiciel ?

  • Tourne sur les systèmes utilisés par M. Toutlemonde (Windows, Android, Ubuntu, etc).
  • Indépendant de l'application (le DNS ne sert pas que pour le Web) et marche donc avec tous les services (c'est pourquoi je n'ai pas discuté dans cet article des extensions Firefox comme MAFIAAFire ou DeSOPA - ce dernier ayant en outre un mode de fonctionnement très bizarre).
  • Simple à utiliser.
  • Vient avec une liste pré-définie de bons résolveurs. Je préférerais que cette liste n'inclue pas les résolveurs menteurs comme ceux d'OpenDNS. En tout cas, il est impératif qu'on puisse ajouter les résolveurs de son choix.
  • M. Toutlemonde va certainement avoir des problèmes pour décider s'il doit se servir de « Telecomix » ou « Comodo » ou « Level-3 » pour ne citer que quelque uns des résolveurs publics les plus fameux. Il faudrait donc que le logiciel teste ces résolveurs automatiquement, pour leurs performances, bien sûr (la plupart des articles trouvés sur le Web sur le thème « comment choisir son résolveur DNS ? » ne prennent en compte que leur vitesse, pas leur sincérité, contrairement à cet article) mais aussi pour leur obéissance à la censure. Le logiciel devrait venir avec une liste de domaines peut-être censurés (wikileaks.org, etc) et tester les réponses des résolveurs candidats. Ce n'est pas facile à faire car il faut aussi connaître les bonnes réponses, et elles peuvent changer. Peut-être le logiciel devrait-il interroger des résolveurs de confiance pour avoir cette information ? Le fait de tester pourrait même permettre de choisir automatiquement un résolveur, ce qui serait certainement meilleur pour M. Toutlemonde.
  • Autre cas vicieux (merci à Mathieu Goessens), celui des résolveurs DNS qui, en violation des bonnes pratiques, contiennent des données spécifiques qu'on ne trouve pas dans le DNS public. C'est le cas de pas mal de portails captifs de hotspots, par exemple. dnssec-trigger gère ce problème en ayant un mode spécial, manuellement activé, « Hotspot sign-on ». Mais il y a pire : certains FAI (notamment Orange) utilisent des données non publiques pour certains services réservés aux clients (VoIP, serveur SMTP de soumission, etc) donc une solution qui gère la connexion initiale ne suffit pas. La seule solution dans ce cas est d'avoir un mécanisme d'aiguillage qui envoie les requêtes pour certains domaines à certains résolveurs.
Un tel logiciel est vulnérable à un blocage du port 53. Si cette mesure se répand, il faudra aussi que le logiciel teste s'il peut atteindre des résolveurs publics et des serveurs faisant autorité, ou bien s'il faut passer à d'autres méthodes comme de tunneler le DNS sur TLS, port 443, comme le permet déjà Unbound, dans sa version de développement. D'autres attaques suivront alors (par exemple des FAI qui annonceront les adresses 8.8.8.8 et 8.8.4.4 sur leur propre réseau, pour se faire passer pour Google Public DNS, profitant du fait que ce service n'est pas authentifié).

Compte-tenu de ce cahier des charges, quels sont les logiciels qui conviennent aujourd'hui ? Il n'en existe aparemment qu'un seul, DNS Jumper (je ne suis pas sûr d'avoir mis un lien vers le site officiel, ce logiciel n'a pas de références bien précises et, son source n'étant pas distribué, on peut être inquiet de ce qu'il fait). DNS Jumper tourne sur Windows, assure les quatre premières fonctions de mon cahier des charges mais pas l'avant-dernière : il ne vérifie pas que le résolveur est digne de confiance. Il est décrit, par exemple, dans « Easily Switch Between 16 DNS Servers with DNS Jumper » (l'article est un peu ancien, le logiciel s'est perfectionné depuis), ou, en français, dans « DNS Jumper - Changez rapidement de serveurs DNS ».

Les autres logiciels restent à écrire (un truc comme DNS Helper ne compte pas, puisqu'il ne permet de changer... que pour les DNS de Google). Mais que les censeurs ne se réjouissent pas, les logiciels vont vite sortir, écrire un tel programme n'est pas un exploit technique, et la demande est forte, avec le décret ARJEL déja cité pour la France, SOPA pour les États-Unis, etc.

Sur le problème général de changer manuellement ses résolveurs DNS, un bon article est « How to Change DNS Server » de Remah (Windows seulement).

Quelques petits détails techniques pour finir : on peut parfaitement installer un serveur DNS résolveur sur sa propre machine (enfin, sur un ordinateur portable, pas sur un smartphone). La résolution DNS sera alors entièrement sous le contrôle d'un logiciel qu'on gère, fournissant ainsi le maximum de sécurité. Le processus n'est pas très compliqué sur Unix, ni même sur Windows (merci à Gils Gayraud et Mathieu Bouchonnet pour leur aide sur Windows). On peut le rendre encore plus simple avec des logiciels astucieux comme dnssec-trigger, qui ne teste pas la censure (son but est tout autre) mais pourrait servir de point de départ à un paquetage simple d'installation, vraiment utilisable par M. Toutlemonde (ce n'est pas encore le cas). Par contre, un tel résolveur local a des conséquences négatives sur l'infrastructure du DNS : comme il n'y a plus de cache partagé (avec le résolveur/cache du FAI, une requête pour www.bortzmeyer.org reste en mémoire et bénéficie à tous les clients du FAI), les serveurs faisant autorité verront leur charge s'accroître.

Pour éviter cet inconvénient, une des solutions serait pour le résolveur local de faire suivre les requêtes aux résolveurs du FAI (de tels résolveurs sont nommés forwarders). Mais cela implique de détecter lorsque le résolveur du FAI ment, pour le court-circuiter dans ce cas. DNSSEC fournit une piste intéressante pour cela mais, début 2012, les résolveurs ayant cette fonction forwarder (BIND et Unbound) n'ont pas de tel service de détection et de contournement.

Pire encore, on peut combiner le résolveur local (ou le remplacer) avec des fichiers statiques locaux (/etc/hosts sur Unix, C:\WINDOWS\system32\drivers\etc\hosts sur Windows) mais la maintenance de tels fichiers serait un cauchemar.

Cela ne veut pas dire que cela n'arrivera pas : dans ce maelstrom d'attaques et de contre-attaques, les solutions les plus mauvaises seront certainement déployées par certains acteurs et le futur est sombre pour le système de résolution de noms.

2012-01-05

RFC 6441: Time to Remove Filters for Previously Unallocated IPv4 /8s

Pour limiter certains risques de sécurité, des opérateurs réseaux filtraient en entrée de leur réseau les adresses IP non encore allouées (dites bogons). Les adresses IPv4 étant désormais totalement épuisées, cette pratique n'a plus lieu d'être et ce RFC demande donc que ces filtres soient démantelés.

L'idée était d'empêcher l'usage de ces préfixes IP non alloués. Ils représentaient des cibles tentantes, par exemple pour un spammeur qui voulait des adresses jetables et non traçables : on trouve un bloc non alloué, on l'annonce en BGP (puisqu'il n'est pas alloué, il n'y a pas de risque de collision), on envoie son spam et on arrête l'annonce BGP (voir les articles cités à la fin). Pour éviter cela, et d'autres attaques analogues, l'habitude s'est prise de filtrer les bogons, ces préfixes non alloués. Certains opérateurs rejetaient les annonces BGP pour ces bogons, d'autres bloquaient sur le pare-feu les paquets ayant une adresse source dans ces préfixes non alloués. Ces pratiques étaient largement documentées par exemple sur le site de référence sur les bogons.

Cette pratique a toujours posé des problèmes, notamment celui de la « débogonisation ». Lorsqu'un préfixe qui n'était pas alloué le devient, il faut toute une gymnastique pour le retirer des filtres existants, sachant que beaucoup de ces filtres ne sont que rarement mis à jour. On voit ainsi des messages sur les listes de diffusion d'opérateurs réseaux avertissant de l'arrivée prochaine d'un nouveau préfixe et demandant qu'il soit supprimé des filtres. Voici deux exemples de ces annonces en 2004 et en 2005. Pour permettre aux opérateurs de tester que tout va bien après cette suppression, les RIR mettent souvent un beacon, un amer, dans le préfixe, une adresse IP qu'on peut pinguer pour tester, comme le recommande le RFC 5943. Tout ce travail faisait donc que la chasse aux bogons était contestée depuis longtemps.

À noter (section 2) que le terme de bogon a été défini dans le RFC 3871, qui recommande leur blocage. Ce même RFC 3871 décrit en détail le problème que posent les bogons et la raison de leur éradication. Le terme de martien, plus flou (il vient du RFC 1208), est appliqué à toutes sortes de paquets dont l'adresse source est anormale (dans le DNS, il a un autre sens, celui de paquet de réponse à une question qui n'a pas été posée).

La section 3 représente le cœur du RFC : elle formule la nouvelle règle. Celle-ci, tenant compte de l'épuisement des adresses IPv4 est simple : tous les préfixes IPv4 sont désormais alloués ou réservés. Il ne faut donc filtrer que les réservés. Les autres peuvent désormais tous être une source légitime de trafic IP. La chasse aux bogons et les difficultés de la débogonisation faisant partie du folklore de l'Internet depuis très longtemps, c'est donc une page d'histoire qui se tourne. (Les adresses IPv6 sont, elles, loin d'être toutes allouées et ne sont donc pas concernées.)

La section 4 rappelle que l'autorité pour cette liste de préfixes réservés est le RFC 5735, ou son éventuel futur successeur. On y trouve par exemple les adresses privées du RFC 1918 ou bien les adresses réservées à la documentation du RFC 5737. Les listes de bogons qu'on trouve sur le réseau, comme celle de TeamCymru sont désormais réduites à ce groupe.

À noter que l'assertion « Tous les préfixes sont désormais alloués » ne vaut que pour les préfixes de longueur 8 (les « /8 ») distribués aux RIR. Certains peuvent filtrer à un niveau plus fin, en distinguant dans ces /8 les adresses que les RIR ont affectés de celles qui ne le sont pas encore. Comme le rappelle la section 3.2, cette pratique est risquée, les affectations par les RIR changeant vite. Le RFC demande donc que, si on a de tels filtres, ils soient changés au moins une fois par jour.

Pour en apprendre plus sur les bogons, on peut regarder la bonne analyse faite par BGPmon. On voit finalement peu d'annonces BGP de bogons (6 seulement en 2011), la plupart pour le préfixe 198.18.0.0/15 des mesures de performance (RFC 5735). Un bon résumé des bogons et de la débogonisation avait été fait par Dave Deitrich en 2005.

Quelques articles sur les trucs utilisés par des méchants (spammeurs, par exemple), en connexion avec les bogons :

2012-01-03

Consensus et dissensus dans les politiques culturelles numériques

2012-01-03 Christian Fauré - Défaut, Giffard, stasis, technologies relationnelles

Voici la vidéo ( 45 min) de l’intervention d’Alain Giffard lors d’une séance de travail du groupe « Technologies Relationnelles » d’Ars industrialis.

La séance était consacrée à la « guerre civile numérique » et il m’a semblé que les propos d’Alain Giffard étaient précieux pour re-contextualiser ce concept de guerre civile numérique qui reprend le titre d’un ouvrage de Paul Jorion paru en Mai 2011 :

Signaler sur Twitter

Related posts:

  1. Morceaux choisis de la séance publique Ars Industrialis avec Paul Jorion Quatre vidéos choisies de la rencontre au théâtre de la...
  2. Le numérique dans l’économie et la cognition de l’attention C’est le titre du prochain débat d’Ars Industrialis qui aura...
  3. Les techniques de soi : séance publique d’Ars Industrialis du 19 Juin 2010 Voici les vidéos de la séance sur les techniques de...

Amer ou mire ?

Lorsqu'on effectue une mesure active sur un réseau informatique, un agent de mesure vise une cible distante connue, et le résultat de ce test nous servira à en déduire les performances du réseau. Comment nommer cette cible ? En français, les deux termes les plus courants semblent amer et mire.

Un exemple d'un tel test est l'utilisation d'une simple commande ping :

% ping -c 3 www.arcep.fr
PING www.arcep.fr (81.200.177.80) 56(84) bytes of data.
64 bytes from bastet.publicis-technology.com (81.200.177.80): icmp_req=1 ttl=51 time=74.8 ms
64 bytes from bastet.publicis-technology.com (81.200.177.80): icmp_req=2 ttl=51 time=70.3 ms
64 bytes from bastet.publicis-technology.com (81.200.177.80): icmp_req=3 ttl=51 time=73.0 ms

--- www.arcep.fr ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 70.399/72.760/74.808/1.826 ms
Ici, ma machine, l'agent de mesure local, teste le réseau avec l'amer ou mire www.arcep.fr. Un exemple plus sophistiqué ? Le protocole TWAMP du RFC 5357, et de nombreux autres.

Le premier terme, amer, vient de la navigation maritime et désigne normalement un repère fixe et connu, sur lequel l'équipage d'un bateau peut faire des tests. C'est une jolie origine et ça fait penser aux pirates, donc ça embête la HADOPI, ce qui est très bien. C'est le terme privilégié dans ce blog.

Le second mot, mire, vient de la géodésie (et n'a rien à voir avec la mire de l'ORTF). Il est utilisé par exemple par l'ARCEP (voir sa consultation publique lancée fin 2011, question n° 19).

On pourrait sans doute trouver encore d'autres candidats comme balise.

Et en anglais ? Contrairement à ce qui arrive souvent en informatique, la situation n'y est pas meilleure. On trouve parfois beacon mais qui, dans le domaine des réseaux informatiques, désigne plus souvent un système qui émet spontanément (au lieu de simplement répondre à une sollicitation), comme par exemple les beacons BGP du RIPE. Dans les RFC, on trouve souvent simplement target, que je trouve trop militaire, ou bien landmark, qui est quasiment l'équivalent d'amer.

2012-01-02

L'ARJEL, ou la censure au service du fric

Si l'ARJEL est moins connue des internautes que l'HADOPI, les gens qui suivent de près l'actualité de l'Internet savent qu'elle est à la pointe de la censure, ayant été la première organisation en France à ordonner le bloquage de sites Web aux FAI. Mais dans quels buts ?

Après l'affaire Stan James, qui avait fait connaître l'ARJEL aux internautes, cette organisation vient de récidiver avec un décret (« n° 2011-2122 du 30 décembre 2011 relatif aux modalités d'arrêt de l'accès à une activité d'offre de paris ou de jeux d'argent et de hasard en ligne non autorisée ») qui impose aux FAI de bloquer l'accès aux sites de jeux d'argent en ligne listés par ladite ARJEL. Sur le moment, les commentateurs ont surtout noté que ce décret était le premier texte de censure à mentionner explicitement le DNS et à l'imposer comme mécanisme de blocage.

Mais cette remarque, quoique factuellement exacte, ne répond pas à la question « pourquoi faut-il bloquer l'accès à ces sites ? ». On le fait pour la pédo-pornographie (loi LOPPSI qui, en théorie, limite la censure à cette raison), ou pour défendre le modèle d'affaires des ayant-trop-de-droits (dans le contexte de la loi HADOPI, même si celle-ci ne mentionne pas explicitement de censure). La pédo-pornographie, c'est grave, aucun doute là-dessus. Même chose sur la baisse des revenus de l'industrie du divertissement. C'est très grave et il faut réprimer impitoyablement ceux qui voudraient partager la culture.

Mais l'ARJEL, qui ne s'occupe pas de pédo-pornographie ou de show business, pourquoi veut-elle censurer ? Parce que les jeux d'argent sont immoraux, avec la pression qu'ils exercent sur les plus faibles, pour les pousser à jeter leur argent en l'air dans des jeux qui ne leur rapportent rien, que des déceptions ? Mais non, voyons, ce n'est pas la raison, puisqu'il existe des jeux légaux. Prendre l'argent dans les poches des plus vulnérables a été pendant longtemps un monopole de la Française des Jeux mais, désormais, d'autres acteurs peuvent participer. À condition de verser une part des revenus de leur sale métier à l'État (pardon, on dit « payer des impôts »). Et c'est là que la censure intervient. Pour protéger le business de ceux qui paient une part à l'État, il faut interdire les autres. Le décret cité plus haut permet donc cette censure.

L'ARJEL fait valoir que les sites de jeux en ligne légaux ne sont pas uniquement légaux parce qu'ils paient mais aussi parce qu'ils respectent certaines obligations, comme d'afficher un petit avertissement « attention, le jeu est dangereux ». Mais c'est un argument très hypocrite : on sait que le jeu est dangereux, mais on gagne de l'argent avec.

À noter que cette extension des impôts via les jeux en ligne fait l'objet d'un fort consensus gauche-droite, la gauche a déjà sa place à l'ARJEL, via la responsable des questions numériques chez François Hollande, qui avait pourtant essayé de cacher son rôle à l'ARJEL (à l'ENA, personne ne l'avait prévenue qu'il était difficile en 2011 de garder secrètes ce genre d'informations ?).

Cet article a été repris par le Monde et par l'Informaticien qui l'ont tous les deux attribué, bien à tort, à mon employeur (qui n'y est pour rien). Apparemment, la même chose arrive à Tristan Nitot donc je ne me plains pas.

2012-01-01

Que doit-on mesurer, la QoS ou la QoE ?

Lors de discussions sur la mesure des performances de l'Internet (par exemple au sein du « groupe de travail multilatéral sur la qualité de service » de l'ARCEP), il est fréquent de voir des désaccords sur le fait de mesurer la QoS (Quality of Service) ou bien la QoE (Quality of Experience). La première concerne des mesures plutôt techniques, proches du fonctionnement du réseau. La seconde cherche à mesurer la satisfaction de l'utilisateur, ce fameux M. Toutlemonde. Quelle est la bonne approche ?

Si on vise à fournir une information à ce brave monsieur, le problème semble simple : il faut mesurer la QoE car c'est la seule qui l'intéresse. M. Toutlemonde ne veut probablement pas connaître la latence (RFC 2679 et RFC 2681), la capacité (RFC 5136) ou le taux de perte de paquets (RFC 2680). Ce qu'il veut, prétendent les gens qui parlent pour lui (M. Toutlemonde n'est jamais présent aux réunions mais on le cite tout le temps), c'est télécharger des films ou de la musique le plus vite possible. Certes, les métriques citées plus haut ont une influence nette sur sa QoE mais elle est indirecte et peu compréhensible.

Donc, cela semble réglé, la QoE est la seule chose qui importe. Seuls des barbus pas lavés comprennent quelque chose aux métriques techniques du RFC 2330 et il ne faut donc pas exposer ce pauvre M. Toutlemonde à des notions techniques. Mais, en fait, c'est plus compliqué que cela.

D'abord, la QoE a la particularité de se mesurer de bout en bout. On l'a dit, ce qui intéresse M. Toutlemonde, c'est « je clique pour voir un film, combien de temps attendre avant de le voir ». La QoE ne peut pas donc se mesurer de manière objective sans avoir accès à l'ordinateur de l'utilisateur, puisqu'elle dépend de toute la chaîne. Ainsi, si le PC Windows de M. Toutlemonde est farci de virus et que cela le ralentit, la QoE est moins bonne, quelle que soit la capacité de la fibre optique. Cela réduit fortement l'applicabilité de la QoE. Même dans un monde de Minitels où l'opérateur contrôlerait le terminal de l'utilisateur, il faudrait encore tenir compte des performances du serveur (si on regarde france.fr le jour de son inauguration, ça va très lentement, quels que soient les efforts des FAI pour fournir un bon réseau). On ne sait donc plus très bien qui est responsable des mauvaises performances.

Ensuite, la mesure de la QoE suppose la définition d'une activité typique (j'ai entendu des vagues propositions du genre « le surf sur les cent sites Web les plus populaires »). Cette définition est une mauvaise idée dans son principe. Contrairement à la téléphonie, où le réseau était conçu pour une application, et où il était donc facile de mesurer la qualité du réseau (avec des techniques comme PESQ), l'Internet sert à beaucoup de choses différentes. Un échantillon d'activités serait arbitraire : pourquoi les gens qui font du jeu en ligne ou de la messagerie instantanée, qui ont surtout besoin d'une faible latence, accepteraient-ils l'échantillon soi-disant représentatif des téléchargeurs, qui ont surtout besoin de capacité ?

Pire, cette idée d'« activité typique » empêcherait toute comparaison temporelle, puisque l'échantillon d'activités changerait d'une année sur l'autre, au gré des modes.

Enfin, l'échantillon typique a un énorme défaut si on veut l'utiliser pour des mesures qui seront publiées, genre « le classement des meilleurs FAI » : il encourage les opérateurs à optimiser leur réseau uniquement pour ce qui est mesuré. Si on intègre Facebook (très à la mode où moment où j'écris cet article) dans l'échantillon, tous les FAI feront des efforts pour avoir une bonne connectivité avec Facebook et oublieront le reste.

Dernier problème avec la QoE, l'absence de normalisation. Autant les métriques techniques sont rigoureusement définies (par le groupe de travail IPPM de l'IETF ou bien, si on y tient, par le SG-12 de l'UIT, qui produit des documents comme la Recommandation Y.1540, « Internet protocol data communication service - IP packet transfer and availability performance parameters »), autant les mesures de QoE sont souvent d'une grande subjectivité, définies de manière floue, et jamais discutées collectivement (contrairement aux normes comme les RFC cités plus haut). La plupart ne dépassent pas le niveau « ce soir, ça rame !!! » des forums de discussion bas de gamme. C'est évidemment plus compréhensible que « la latence unidirectionnelle est de 132 milli-secondes pour des paquets de Type-P TCP-80 » mais la technique doit être rigoureuse, avant d'être attirante.

Pour que des mesures massives et objectives soient possibles, il faut donc se concentrer sur des métriques techniques, reflétant le fonctionnement du réseau, comme celles indiquées plus haut. On peut toujours ajouter ensuite des mesures « de plus haut niveau », plus proches du ressenti de l'utilisateur, mais cela ne peut être qu'une fois qu'on dispose de mesures solides proches du réseau.

Un exemple de telles mesures, celles que fournit le projet Normandie Sans Fil : http://www.normandie-sansfil.com/index.php?p=4.

Un autre débat dans le même groupe ARCEP est discuté dans « Où doit-on mesurer la capacité réseau, chez le FAI ou plus loin ? ».

La consultation publique lancée par l'ARCEP fin 2011 utilise un vocabulaire différent en parlant de mesures techniques pour la QoS et de mesures orientées vers les usages pour la QoE.

Où doit-on mesurer la capacité réseau, chez le FAI ou plus loin ?

Pendant les discussions sur la mesure de la capacité (souvent improprement nommée « débit » ou « bande passante ») d'un accès à l'Internet (par exemple au sein du « groupe de travail multilatéral sur la qualité de service » de l'ARCEP, créé suite à la septième proposition de l'ARCEP sur la neutralité du réseau), un point qui revient souvent est celui de l'endroit où doit se terminer la mesure. Cet endroit doit-il être chez le FAI ou plus loin dans l'Internet ?

Le but est de vérifier les offres commerciales existantes. Si un FAI annonce sur des grands panneaux publicitaires un débit (sic) de 100 Mb/s, est-ce vrai ? Une étude de la FCC, aux États-Unis, « Measuring broadband America », semblait indiquer que non, que la capacité réelle était bien plus basse. Il est donc normal que les autorités de régulation veulent effectuer des mesures indépendantes de la capacité réellement vendue au client. A priori, le problème est simple. On met une sonde (matérielle ou logicielle) chez le client, une terminaison de mesure quelque part dans l'Internet (avec la plupart des logiciels cités plus loin, c'est le même programme qui tourne aux deux extrêmités, ce qui permet de voir le lien des deux côtés) et on regarde (il existe plusieurs outils libres pour faire cette mesure, voir par exemple mon article sur le RFC 6349).

Mais la position de la terminaison est cruciale :

  • Si celle-ci est située sur le réseau du FAI, on rate complètement la mesure du point le plus important : l'interconnexion du FAI avec l'extérieur. La plupart du temps, les exagérations dans la publicité (promettre 100 Mb/s qu'on ne pourra pas délivrer) se situent justement dans cette interconnexion, qui coûte très cher au FAI, et sur laquelle il est donc tentant d'économiser. Beaucoup d'entre eux ont donc des réseaux internes relativement rapides et des connexions lentes avec le reste du monde. Ne pas mesurer cette connexion extérieure nous priverait de l'information la plus importante. (C'est pourtant ce que fait Grenouille et c'est justement une des plus grosses limites de leurs mesures.)
  • Mais le FAI ne contrôle pas tout l'Internet. Si les mesures ont des conséquences (par exemple, obliger le FAI à publier des chiffres défavorables, ou bien lui imposer de changer sa publicité), il peut sembler injuste de tester le FAI sur des points qu'il ne contrôle pas. Si on mesure un débit avec l'Université de Yaoundé, et que le maximum atteignable est très bas, ce n'est pas la faute du FAI français.
Le débat sur ce sujet est souvent confus. Certes, le problème est compliqué. Mais c'est aussi que certains acteurs n'ont pas intérêt à ce que des mesures sérieuses soient faites. Certaines critiques de telle ou telle méthode sont parfois inspirées par un souci de rigueur scientifique, mais on voit aussi des critiques visant à faire dérailler tout le processus, en gros pour dire « on ne peut pas faire de mesure parfaite alors n'en faisons pas, et faisons confiance aux publicités ».

Comment résoudre ce problème ? Je ne vois pas de solution parfaite. Le mieux serait sans doute de publier les deux indicateurs : « capacité réseau interne » et « capacité avec certains points externes ». Comme souvent en métrologie, on ne peut pas espérer s'en tirer avec un seul chiffre, même si c'est ce que les publicitaires préféreraient.

Après la parution initiale de cet article, plusieurs personnes ont fait des remarques, nuançant tel ou tel point. Merci sur Twitter à lucasdicioccio, AlexArchambault, Grunt_ et bitonio. Les points à compléter :

  • La capacité au retour n'est pas forcément la même qu'à l'aller, soit parce que le lien lui-même est asymétrique (ADSL), soit parce que le chemin n'est pas toujours le même au retour. C'est pour cela qu'il faut effectuer la mesure en envoyant des données dans les deux directions. (Il faut que je teste les logiciels mentionnés dans mon article sur le RFC 6349 pour voir comment ils gèrent cela.)
  • J'ai écrit que la connectivité externe était sans doute la plus importante, pour l'abonné de base qui veut joindre Netflix ou Wikipédia. Cela ne serait pas vrai si les techniques pair-à-pair (avec des optimisations comme Alto) étaient plus répandues. Malheureusement, ces techniques sont diabolisées, réprimées par des organisations comme l'HADOPI, et pas encouragées par les acteurs commerciaux, qui ne pensent que « accès au contenu », terme qui est pour eux synonyme de TF1. Comme l'a souvent noté FDN, beaucoup des problèmes de performance de l'Internet disparaitraient si on arrêtait de l'utiliser comme un Minitel.
  • En parlant de connectivité interne et externe, j'ai supposé qu'il n'y avait que ces deux cas. En fait, comme l'explique bien Éric Daspet, dans son article cité plus loin, il y a de nombreuses sortes de connectivités externes : si le FAI français ne peut clairement pas être responsable de ce qui se passe loin de lui (cas de l'université de Yaoundé), en revanche, il est responsable de ses liens immédiats. S'il refuse de peerer avec Google, les lenteurs d'accès de ses abonnés à YouTube sont bien de sa faute.

Pour une définition plus rigoureuse de la notion de capacité, et pour une explication de ses différences avec la bande passante, on peut consulter le RFC 5136. Quant au débit, il représente l'utilisation effective du réseau, la capacité étant son potentiel maximum. Un bon article scientifique sur ce problème de mesure de la capacité fournie par le FAI est « Broadband Internet Performance: A View From the Gateway ». Suite à mon article, Éric Daspet a écrit « Où doit-on mesurer la capacité réseau », qui revient notamment en détail sur la responsabilité du FAI dans les connexions extérieures (par une bonne politique de peering, etc). Enfin, un autre débat qui a eu lieu dans le même groupe de travail ARCEP est également discuté sur mon blog, dans « Que doit-on mesurer, la QoS ou la QoE ? ».

La consultation publique lancée par l'ARCEP fin 2011 utilise une autre terminologie (voir notamment la question n° 19). La machine visée par la mesure est nommée mire et le projet soumis à consultation a trois sortes de mires, mire proches (situées dans un endroit bien connecté à beaucoup de FAI), mires lointaines (Yaoundé...) et mires commerciales (gros services très populaires comme YouTube). On notera qu'il n'existe pas de mires internes, situées sur le réseau du FAI.

2011-12-31

Bonne année, la France !

2011-12-31 Thierry Stoehr - Formats-Ouverts.org - Cinema-et-television

Chaque 31 décembre, le Président de la République présente ses vœux télévisés. Une intervention au style établi, avec ses caractéristiques, ses règles, ses coutumes : un format ouvert.

Le livre Bonne année, la France ! édité par le Documentation française analyse cet exercice de communication et de style personnel avec les vœux présidentiels de 1958 à 2010.

Le 31 décembre sur Formats-Ouverts.org :

2011-12-30

90 ans de Filofax

En 1921 était créé la société Filofax qui commercialise depuis cette date ses fameux organiseurs : étui (en cuir au début) avec calendrier, bloc-notes, agenda, carnet d'adresses.

D'un côté, le format papier, ouvert. De l'autre, le format papier plus fermé avec les dimensions propres aux recharges de la marque et de ses modèles.

Le 30 décembre sur Formats-Ouverts.org :

SÉLECTION

Cette planète rassemble les principaux carnets web d'auteurs francophones traitant de XML. Ces blogs sont souvent bilingues français/anglais et éclectiques. Cette page rassemble l'ensemble de leurs billets et vous permet de sélectionner ceux que vous voulez voir.


Lien permanent pour cette sélection :
feed /actualites/planete/xmlfr/fr/
Les documents publiés sur ce site le sont sous licence " Open Content".

Valid XHTML 1.0 Transitional

logo DYOMEDEA
Conception, réalisation et hébergement

Questions ou commentaires
redacteurs@xmlfr.org