Cliquez ici.Cliquez ici.
Cliquez ici.
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.

2010-09-01

N° 56 – Nouvelles du Southern African Greenstone Support Network

2010-09-01 Antonin Benoit Diouf - SENBIBDOC - Congrès, colloques, conférences, séminaires,..., Afrique, Bibliothèques numériques, Greenstone, Kenya, SAGSN
J’aurais dû écrire cet article depuis quelques semaines déjà, car il vient rapporter les actes d’une réunion tenue à la fin de juillet de cette année. En effet du 26 au 28 juillet j’étais au Kenya, à Nairobi plus précisément (mais pas pour un safari ). Il s’agissait d’une réunion d’évaluation de la deuxième phase [...]

Convergence search et réseau social, qui gagnera ?

2010-09-01 Gabriel Képéklian - Blogabriel - moteur de recherche, reseau social, audience, internet, paradoxe, search, web

Les réseaux sociaux (rs) se partagent l’audience mondiale avec les moteurs de recherche (mr). Au top 10 des sites les plus visités[1] se trouvent par ordre décroissant : Google (mr), Facebook (rs), Youtube (rs), Yahoo ! (mr), Windows live (mr), Baidu (mr), Wikipedia (rs), Blogger (rs), MSN (mr) et Twitter (rs). Soit 5 de chaque catégorie.

La bipartition au sommet de la popularité Internet entre moteurs de recherche et réseaux sociaux motive l’apparition de nouveaux sites aux usages ajustés. Citons en deux : l’immédiateté et la proximité.

Immédiateté. Puisque les internautes et les mobinautes ont un rapport de plus en plus immédiat avec le Web grâce aux réseaux sociaux où publier se fait à la vitesse du clic, leur besoin de recherche suit la même tendance. Ils veulent trouver jusqu’aux informations publiées et diffusées les plus récentes. Des moteurs d’un nouveau type apparaissent pour répondre à cette demande, ce sont les moteurs en temps réels[2] dont les nouvelles exigences sont la vitesse d’actualisation et la segmentation des sources sociales (réseaux, blogs, sites d’information etc.).

Proximité. Avec les progrès de la géolocalisation, les moteurs ont acquis une autre dimension sociale : ils ont appris à répondre au plus près de l’utilisateur ou de ses contacts.

Nous assistons à des tentatives répétées pour faire converger les moteurs de recherche et les réseaux sociaux. Qu’est-ce que cela va donner ? Google essaie de pénétrer de force le monde des réseaux sociaux. Mais le géant a jeté l’éponge pour Wave. L’outil de communication collaboratif n’a pas eu le succès attendu : « Wave n’a pas eu autant d’utilisateurs que nous l’aurions souhaité. » C’est la phrase que toute la presse a retenue de l’explication donnée par un responsable de la société. Google s’est aussi fait rappeler à l’ordre pour Buzz par un collège international d’autorités de type CNIL. Les réseaux qui marchent sont des succès inattendus. En 2004, un étudiant de 20 ans crée thefacebook.com dans sa chambre à Harvard. Et deux semaines plus tard, les 2/3 de l’école s’inscrivent. Six ans plus tard, plus d’un demi-milliard de comptes ont été ouverts sur le site. Google a la mémoire courte, son moteur est lui aussi un succès inattendu.

Je ne crois pas le vainqueur du rapprochement search et réseau social soit un acteur significatif de ces deux mondes. Je vote pour un nouvel entrant qui émergera à la suite d’un succès inattendu.

[1] En se référant à l’analyse de www.alexa.com pour le mois de juillet 2010.
[2] http://www.netpublic.fr/2010/08/8-moteurs-de-recherche-en-temps-reel-efficaces-et-novateurs/

Couleurs de la rentrée

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

Lire le billet Couleurs de la rentrée sur Culture Visuelle.... Lire Couleurs de la rentrée

What is Lojban?

2010-09-01 Stéphane Bortzmeyer - xmlfr

Il existe d'innombrables langues construites, des langues qui ne sont pas issues d'une évolution « naturelle » mais qui ont été soigneusement élaborées par des humains. La plus connue est évidemment l'espéranto mais le lojban, présenté dans ce livre, a un cahier des charges assez différent. Son but principal n'est pas la paix dans le monde via la compréhension mutuelle, c'est la logique : faire une langue permettant de s'exprimer sans ambiguité, et qui soit complètement analysable par un analyseur syntaxique normal.

Le livre « What is lojban? » (ou, en lojban, « la lojban. mo », est un recueil de différents textes en anglais produits par l'organisation qui supervise la langue, le Logical Language Group. Pour ceux qui ne veulent ou ne peuvent acheter l'édition papier, il est aussi disponible en ligne. (Il y a aussi une version en français, malheureusement uniquement dans un format fermé, en lojban.doc.) Parmi les éditeurs de ce recueil, j'ai noté la présence de John Cowan, qui a été un des piliers du groupe de travail LTRU de l'IETF et j'ai pu apprécier, dans ce groupe, ses vastes connaissances, son excellent style et sa patience.

Que contient le livre ? La FAQ du site officiel, des exemples de courts textes en lojban, un guide de prononciation pour les locuteurs de diverses langues (mais pas le français) et surtout le texte « Overview of Lojban Grammar » qui décrit la structure de la langue. Ce n'est pas un tutoriel, pas question d'apprendre le lojban ainsi, mais c'est une description technique de la grammaire de la langue. À noter que, les composants d'un texte en lojban n'ayant pas forcément d'équivalent dans d'autres langues (des notions comme la distinction entre nom et verbe n'existent pas), ces composants sont désignés par leur nom en lojban. Il est donc prudent, en lisant le texte, d'avoir une fiche rappelant ce qu'est un brivla (le terme utilisé pour désigner un prédicat puisque le lojban est fondé sur la logique des prédicats), un sumti (l'argument d'un prédicat) ou un cmavo (catégorie qui regroupe les prépositions et ce pour quoi, dans d'autres langues, on utiliserait la ponctuation). Je ne vais pas résumer toute la grammaire lojban ici, juste décrire quelques points intéressants qui peuvent donner envie de voir le lojban de plus près.

Je commence par une phrase triviale en lojban, « mi klama le xunre zdani » (quelque chose comme « je vais à la maison rouge » ; si vous voulez voir un texte plus long, regardez la page d'accueil du site officiel). Comme le lojban est décrit par une grammaire formelle, en LALR(1), on peut écrire relativement facilement un analyseur syntaxique, comme par exemple le programme jbofihe. Cela donne :

% cat ~/tmp/hello.txt
mi klama le xunre zdani

% jbofihe -t ~/tmp/hello.txt  
| +-CMAVO : mi [KOhA3]
| | +-BRIVLA : klama
| | | +-CMAVO : le [LE]
| | | | +-BRIVLA : xenru
| | | | +-BRIVLA : zdani
| | | +-SELBRI_3
| | +-SUMTI_6
| +-BRIDI_TAIL_3
+-NO_CU_SENTENCE
CHUNKS
où le brivla le plus externe, klama joue le rôle du prédicat principal. jbofihe permet aussi de représenter l'arbre syntaxique sous d'autres formes par exemple en (mauvais) HTML avec l'option -H (notez qu'il a inclus une traduction des mots) :

[1(2[klama1 (go-er(s)) :] mi I, me)2 [is, does] <<3klama go-ing>>3 (4[klama2 (destination(s)) :] le the (5xunre red [type-of] zdani home(s))5)4]1

La même chose est possible en LaTeX avec l'option -l. Cette possibilité d'analyser syntaxiquement la langue permet le développement d'outils de traitement linguistique. jbofihe peut aussi vérifier que la syntaxe d'un texte est correcte. On peut même l'utiliser depuis Emacs avec un code d'initialisation comme :

(defun lojban-parse () ""
  (interactive "")      
  (shell-command-on-region (region-beginning) (region-end) "jbofihe"))

(global-set-key "\C-x-" 'lojban-parse)
(Il existe naturellement un mode Emacs pour le lojban.)

Après ce petit détour technique (désolé, problème classique des gens qui apprennent le loban, comme l'a montré un dessin de xkcd), quelques éléments intéressants sur la langue :

  • Chaque prédicat a un nombre d'arguments fixe et connu. Par exemple, tavla, « parler », a quatre arguments, le locuteur, le destinataire, le sujet et la langue utilisée. Si on utilise les quatre arguments, pas de problème. Si on ne spécifie que les N premiers, pas de problème, les autres sont optionnels. Mais si on ne spécifie, mettons, que le quatrième et qu'on veut dire « je parle en lojban » ? Deux solutions, un terme qui représente l'inconnu, zo'e ou bien des termes qui modifient l'ordre des arguments. Donc, la première solution serait mi tavla zo'e zo'e la lojban et la seconde mi tavla fo la lojbanfo indique que l'argument est normalement le quatrième (attention en comptant, le premier argument, ici mi, se met avant le prédicat).
  • Les questions se font en indiquant simplement mo ou ma à la place du terme qui serait la réponse à la question. Donc, le titre du livre, la lojban mo est une question dont la réponse serait la lojban EST-CECI-OU-CELA.
  • Le lojban permet de s'exprimer sans ambiguité, c'est là un élement essentiel de son cahier des charges. Mais il permet aussi de ne pas avoir à tout spécifier, si c'est inutile. Ainsi, en français, contrairement à l'anglais, on doit toujours préciser le genre de la personne dont on parle (comparez « je déjeune avec un ami » et « I have lunch with a friend ». En turc (exemple emprunté au Dictionnaire amoureux des langues), on doit toujours préciser si on a été témoin direct ou non du fait qu'on rapporte. En lojban, on peut omettre tout ce qu'on ne considère pas comme pertinent. Le genre de la personne, le temps des verbes, même le nombre de choses dont on parle sont optionnels. (Le lojban dispose de termes permettant, si on le juge utile, d'exprimer les nuances du turc sur l'observation directe ou pas d'un fait ; section « Evidentials », p. 104 dans l'édition papier.) Comme l'explique un excellent article du New York Times, les langues ne se différencient pas tant par ce qu'elles permettent ou empêchent de dire, mais par ce qu'elles imposent de préciser (ou pas).

Quelles ressources existent en lojban sur l'Internet ? Elles sont nombreuses, incluant un Wikipédia (peu rempli mais regardez par exemple l'article sur le phoque), un wiktionnaire (également peu rempli) et plein de choses en http://www.lobjan.org/. Il y a naturellement plusieurs listes de diffusion et canal IRC, avec un bot sympa qui me traduit un brivla et me donne ses arguments :

(23:05:39) bortzmeyer: valsi klama
(23:05:40) valsi: klama = x1 comes/goes to destination x2 from origin x3 via route x4 using means/vehicle x5. 

Quel est l'avenir du lojban ? C'est évidemment difficile à dire. Cette langue n'a pas échappé aux sorts de bien des projets marginaux, les scissions (en l'occurrence entre le Logical Language Group, qui gère le lojban, et le Loglan Institute, entre autre parce que le créateur originel de la langue prétendait détenir des droits de propriété intellectuelle. Voir la FAQ à ce sujet.

Mais, au delà de ces disputes assez glauques, le lojban reste une formidable aventure scientifique et intellectuelle. C'est un langage de geeks ? Tant pis, cela ne devrait pas arrêter les curieux.

RFC 5965: An Extensible Format for Email Feedback Reports

2010-09-01 Stéphane Bortzmeyer - xmlfr

Les opérateurs de réseaux et de serveurs, aujourd'hui, passent beaucoup de temps à s'envoyer des rapports indiquant qu'un message reçu est en fait abusif, spam ou hameçonnage. Ces rapports sont désormais bien trop nombreux pour être traités manuellement et il est donc nécessaire de définir un format standard pour les représenter, de façon à permettre un minimum de traitement automatique sur ces rapports. C'est ce que fait notre RFC, le premier du groupe de travail MARF. Ce format s'appuie évidemment sur MIME.

Avant l'adoption du format MARF (qui précède sa normalisation formelle dans ce RFC), plusieurs opérateurs avaient défini des formats privés (section 1). Cela rendait évidemment difficile l'analyse des rapports envoyés, il fallait écrire du code pour chaque opérateur. Désormais, il existe donc un format standard, basé sur le type MIME multipart/report normalisé dans le RFC 3462. Ce format utilise le sous-type (« type du rapport ») feedback-report.

Ce n'est pas la première tentative de normalisation dans ce domaine, les précédentes n'ont pas été des succès.

Ce RFC ne fait que normaliser un format, il ne spécifie pas à qui les rapports doivent être envoyés, comment les authentifier, ou ce qu'il faut en faire, il se focalise sur l'aspect technique. Le cahier des charges figure en section 1.2 :

  • Le format devait être lisible à la fois par un humain et par un programme,
  • Le message signalé devait être inclus dans le rapport,
  • Le format devait permettre l'ajout de méta-données,
  • Le format devait être extensible.
Ces objectifs ont-il été atteints ? Voyons la définition du nouveau format (une certaine familiarité avec le RFC 5598 est utile).

La section 2 du RFC décrit le format MARF. Un message MARF est donc un message MIME multipart/report, tel que défini dans le RFC 3462. Le type du rapport est feedback-report (donc le message contiendra un en-tête du genre Content-Type: multipart/report; report-type=feedback-report; ...). Chaque rapport ne concerne qu'un seul message, il n'y a pas de mécanisme pour l'agrégation de messages. Il comprend trois parties MIME obligatoires :

  • La première est une description en langue naturelle du rapport,
  • La seconde est un ensemble de méta-données structurées, de type MIME message/feedback-report,
  • La troisième est le message original, de type message/rfc822 en général (rappelez-vous que MIME est récursif et qu'il est donc parfaitement possible d'avoir un message MIME dans un autre message MIME).
Le sujet du rapport doit être le champ Subject: du message original, éventuellement avec un préfixe comme FW: (pour forwarded), ce qui me semble déroutant car, en examinant sa boîte aux lettres manuellement, on ne distingue pas facilement les spams des rapports sur les spams.

Focalisons-nous un instant sur la seconde partie, les méta-données. Le format de ce nouveau type MIME message/feedback-report est décrit dans la section 3. Cette partie est composée de plusieurs champs, suivant la syntaxe des en-têtes du courrier (attention, seule leur syntaxe est identique, un champ de même nom qu'un champ du RFC 5322 n'a pas forcément la même sémantique). Comme pour tout le contenu du rapport, le destinataire ne doit pas forcément leur faire une confiance aveugle. Ils représentent des assertions du créateur du rapport et ne sont pas forcément vérifiables.

La liste des champs n'est pas fixée définitivement, de nouveaux champs pourront être enregistrés dans le futur. Aujourd'hui, la liste des champs obligatoires comprend (section 3.1) :

  • Feedback-Type:, défini dans la section 3.5,
  • User-Agent:, indiquant le logiciel qui a produit le rapport,
  • Version:, aujourd'hui toujours 1.
Il y a aussi des champs facultatifs, parmi lesquels (sections 3.2 et 3.3) :
  • Arrival-Date: indiquant l'heure de réception,
  • Authentication-Results: qui indique les résultats des procédures d'authentification, tels que formalisés par le RFC 5451,
  • Incidents:, un nombre indiquant le nombre de fois que ce message a été reçu,
  • Reported-Domain:, qui indique le nom du coupable présumé (par exemple parce que le message vient de lui),
  • Reported-URI:, qui indique un URI pertinent pour le rapport, par exemple l'URL d'un site Web de hameçonnage pour lequel un spam faisait de la publicité,
  • Source-IP:, indiquant l'adresse IP source au moment où le message est entré dans le domaine qui génère le rapport,
  • Et bien d'autres (la liste complète et à jour figure dans le registre). Notez que certains champs facultatifs peuvent apparaitre plusieurs fois (comme Reported-URI:) et d'autres une et une seule fois (comme Arrival-Date:).
Un exemple d'une telle partie :

Feedback-Type: abuse
User-Agent: SomeGenerator/1.0
Version: 1
Arrival-Date: Thu, 8 Mar 2005 14:00:00 EDT
Source-IP: 192.0.2.1
Authentication-Results: mail.example.net;
               spf=fail smtp.mail=somespammer@example.com
Reported-Domain: example.com
Reported-Uri: http://example.com/earn_money_fast.html

La grammaire complète figure en section 3.5.

On le sait, le courrier électronique est une jungle où tout est possible. Les rapports peuvent être mensongers ou, tout simplement, incorrects techniquement. Que faire dans ce cas ? La section 4 est claire : de tels messages devraient être ignorés ou rejetés. Le principe de robustesse (« Acceptez n'importe quoi et essayez de le décoder ») ne s'applique pas aux questions de sécurité.

Je l'ai dit plus haut, une des exigences du cahier des charges était l'extensibilité. La section 6 expose les moyens déployés par MARF pour atteindre ce but. Notamment, deux registres IANA sont créés, pour pouvoir ajouter des nouvelles données : le registre des types de retours (feedback types) et celui des champs dans les méta-données. Les types et les champs inconnus doivent donc être ignorés par les programmes, afin de pouvoir ajouter des nouveaux sans casse.

Les registres en question sont décrits de manière plus formelle dans la section 7. Celle-ci décrit l'enregistrement du nouveau type MIME message/feedback-report, le nouveau registre des méta-données (dans lequel on peut enregistrer par la procédure « spécification obligatoire » du RFC 5226) et le nouveau registre des types de retour (même procédure pour l'enregistrement). Aujourd'hui, ce registre contient des types comme abuse (courrier non sollicité), fraud (courrier de tentative d'escroquerie), virus (courrier contenant un virus), etc.

Comme tout ce RFC porte sur un problème de sécurité, il est normal que la section dédiée à ce sujet, la 8, se demande si le nouveau format est lui-même sûr. Elle met notamment en garde contre les interprétations abusives (section 8.2) : cette norme décrit juste un format, elle ne garantit pas que les rapports, même syntaxiquement corrects, soient authentiques. Le mécanisme par lequel on décide de faire confiance (ou pas) à un rapport n'est pas spécifié par ce RFC. Il est donc déconseillé de déclencher automatiquement des actions (comme l'inscription sur une liste noire) sur la seule base d'un rapport, sans précautions supplémentaires.

Par exemple, le RFC recommande que les rapports soient un minimum authentifiés, par le biais de techniques comme SPF, DKIM ou S/MIME (ce dernier est conseillé mais, curieusement, PGP n'est pas cité).

Autre problème de sécurité lié à ces rapports, le risque d'attenter à la vie privée. La section 8.5 rappelle que la règle devrait être d'envoyer des rapports complets mais, si la protection de la vie privée le nécessite, qu'on peut supprimer certaines parties du rapport pour ne pas révéler d'informations privées. (Même si on devine que cette idée de vie privée défrise considérablement les auteurs du RFC.)

Peut-on générer automatiquement des rapports MARF (section 8.6), par exemple parce qu'un pot de miel a reçu un spam ? Le RFC met en garde : un attaquant qui sait qu'un tel générateur existe pourrait l'utiliser pour faire fabriquer des rapports contre ses ennemis, en envoyant de faux spams.

Encore un piège amusant : les rapports seront souvent générés pour des messages qui contiennent du logiciel malveillant. Ledit logiciel va se trouver dans la partie du rapport qui reprend le message original. Les processeurs de messages MARF doivent donc faire attention à ne pas, par exemple, exécuter accidentellement le méchant logiciel (section 8.7) !

Un exemple plus complet est cité dans l'annexe B2 du RFC (le message original a le sujet Earn money et prétend venir de somespammer@example.net) :


From: <abusedesk@example.com>
Date: Thu, 8 Mar 2005 17:40:36 EDT
Subject: FW: Earn money
To: <abuse@example.net>
MIME-Version: 1.0
Content-Type: multipart/report; report-type=feedback-report;
  boundary="part1_13d.2e68ed54_boundary"

--part1_13d.2e68ed54_boundary
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

This is an email abuse report for an email message received from IP
192.0.2.1 on Thu, 8 Mar 2005 14:00:00 EDT.  For more information
about this format please see http://www.mipassoc.org/arf/.

--part1_13d.2e68ed54_boundary
Content-Type: message/feedback-report

Feedback-Type: abuse
User-Agent: SomeGenerator/1.0
Version: 1
Original-Mail-From: <somespammer@example.net>
Original-Rcpt-To: <user@example.com>
Arrival-Date: Thu, 8 Mar 2005 14:00:00 EDT
Reporting-MTA: dns; mail.example.com
Source-IP: 192.0.2.1
Authentication-Results: mail.example.com;
            spf=fail smtp.mail=somespammer@example.com
Reported-Domain: example.net
Reported-Uri: http://example.net/earn_money.html
Reported-Uri: mailto:user@example.com
Removal-Recipient: user@example.com

--part1_13d.2e68ed54_boundary
Content-Type: message/rfc822
Content-Disposition: inline

From: <somespammer@example.net>
Received: from mailserver.example.net (mailserver.example.net
  [192.0.2.1]) by example.com with ESMTP id M63d4137594e46;
  Thu, 08 Mar 2005 14:00:00 -0400
To: <Undisclosed Recipients>
Subject: Earn money
MIME-Version: 1.0
Content-type: text/plain
Message-ID: 8787KJKJ3K4J3K4J3K4J3.mail@example.net
Date: Thu, 02 Sep 2004 12:31:03 -0500

Spam Spam Spam
Spam Spam Spam
Spam Spam Spam
Spam Spam Spam
--part1_13d.2e68ed54_boundary--

Qui utilise ou utilisera ce format ? Je n'ai pas trouvé sur le site officiel de liste des implémentations (pour générer et analyser du MARF). Il faut se contenter des liens en http://wordtothewise.com/resources/arfdeveloper.html. Mais, apparemment, plusieurs opérateurs utilisent déjà ce format. Idéalement, on devrait pouvoir l'utiliser pour soumettre des rapports à abuse@opérateur.net et à des organismes comme Signal-Spam (ce dernier semble tout à fait mort). Mais cela ne semble pas possible actuellement.

2010-08-31

Dans moins de 101010 jours, ce sera le 101010 ! (Et un appel à cette occasion)

Vous faites quoi le dimanche 10 octobre 2010 à 10h10 et 10 secondes ?

Moins de 42 jours, c'est ce qui reste avant LA fameuse date du 10 octobre 2010 [1]. Mais pourquoi cette date, pourquoi ce nombre et pourquoi ce calcul ?

Parce que 42 !

Cela nécessite quelques explications.

Tout d'abord il y a le 10 octobre : en 2010, ce sera un dimanche et surtout cette date aura la particularité de s'écrire 10/10/10 (ou encore 10-10-10) dans un format chiffré abrégé, quel que soit l'ordre du jour, de l'année et du mois. C'est donc une date un peu remarquable, comme le furent les dates du 999, du 888, du 777, du 666, du 555 ou encore le 787, le 789, le 314 et le 20072007.

Ensuite il y a le nombre 101010 : c'est aussi une écriture possible de la date ci-dessus. Vous lisez sans doute ce nombre comme étant cent un mille dix, car vous utilisez la base 10, celle de notre manière courante de compter. Mais il y a d'autres bases, comme la base 2. Or la base 2 est très employée en informatique, elle qui n'utilise que le 0 et le 1. Et en base 2 le nombre 101010 correspond au 42 de la base 10.

Enfin il y a le nombre 42 : il a une connotation spéciale en littérature et en informatique, voire en littérature informatique ou en informatique littéraire. En effet « quarante-deux » est LA réponse à la « Grande Question sur la Vie, l'Univers et le Reste » donnée par le super ordinateur après 7,5 millions d'années de calcul ! [2] La quête de la question exacte est au centre de l'œuvre Le Guide du voyageur galactique (H2G2 pour The Hitchhiker's Guide to the Galaxy en anglais) [3]. De ce fait 42 est devenu une référence et une réponse clin d'œil à toute question pour des connaisseurs de la citation dont des passionnés de choses informatiques. Une sorte de déformation dont on voit le signe partout (ou presque) !

Voilà pour le titre de cet article.

Oyez, oyez, un appel pour le 10 octobre 2010, pour 42 et pour tout le reste numérique !

Le dimanche 10 octobre 2010 sera LE jour du 42 et donc LA fête pour les geeks et autres amateurs et passionnés d'informatique.

Et pourquoi pas l'occasion d'organiser des rencontres pour expliquer pourquoi 42 est la réponse, pourquoi l'informatique est capitale, pourquoi il faut s'en emparer, pourquoi les logiciels libres sont essentiels, pourquoi les formats ouverts sont capitaux et toute autre question sur la Vie informatique, l'Univers numérique et le Reste !

L'un des moments forts de la journée sera bien sûr à 10 heures 10 minutes 10 secondes, soit 10h10 10 ou 101010 dans un format encore plus simplifié. Quant au lieu pour la France, le département de la Loire (42) part favori, avec la commune de Lorette (code postal 42 420) ou de Saint-Étienne avec un cedex (42 042).

Sources et liens :

Le 31 août sur Formats-Ouverts.org :

Facebook joue avec BGP

Comme vous avez pu le voir, Facebook a été en panne pour beaucoup d'utilisateurs (surtout en Europe, il semble). La cause est un problème BGP.

De à peu près 1200 UTC à environ 1345, Facebook a été injoignable depuis beaucoup de réseaux. Les curieux qui ont fait un traceroute auront vu quelque chose du genre :

% traceroute www.facebook.com
traceroute to www.facebook.com (69.63.189.31), 64 hops max, 40 byte packets
 1  217.70.191.251 (217.70.191.251)  0 ms  0 ms  0 ms
 2  vl2.core4-d.gandi.net (217.70.176.132)  0 ms  0 ms  0 ms
 3  po88-jd4.core1-j.gandi.net (217.70.176.225)  1 ms  1 ms  1 ms
 4  po88-jd4.core1-j.gandi.net (217.70.176.225)  1 ms !H * *
montrant que le premier routeur BGP sans route par défaut n'avait pas de route vers le fameux réseau social... En effet, regarder quelques looking glasses (trouvés sur l'excellent http://www.traceroute.org/) confirme : « show ip bgp 69.63.190.14 \ Network not in table » ou des messages similaires. Si on a un routeur qui reçoit toute la table de routage de l'Internet, on peut voir que le réseau de Facebook apparait et disparait (ici un Juniper) :
admin@m7i-1-XXXX> show route 69.63.190.14

admin@m7i-1-XXXX>

...
admin@m7i-1-XXXX> show route 69.63.190.14

inet.0: 325150 destinations, 325150 routes (325081 active, 0 holddown, 69 hidden)
Restart Complete
+ = Active Route, - = Last Active, * = Both

69.63.184.0/21     *[BGP/170] 00:00:43, MED 0, localpref 100
                     AS path: 8220 8220 32934 I
                   > to X.Y.14.225 via fe-0/1/3.0

Résultat de ce yo-yo, les routeurs finissent par refuser automatiquement les annonces Facebook (« suppressed due to dampening »). Même lorsque Facebook a réparé sa configuration BGP, le problème a subsisté un certain temps. Voici un exemple sur le looking glass de PCH :
Looking Glass Results - route-collector.fra.pch.net
Date: Tue Aug 31 12:46:04 2010 UTC

Query:
Argument(s): 69.63.190.18

BGP routing table entry for 69.63.184.0/21
Paths: (2 available, no best path)
  Not advertised to any peer
  32934, (suppressed due to dampening)
    80.81.194.40 from 80.81.194.40 (204.15.20.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 3856:54800
      Dampinfo: penalty 5023, flapped 64 times in 01:09:18, reuse in 00:41:09
      Last update: Tue Aug 31 12:46:01 2010

  32934, (suppressed due to dampening)
    80.81.195.40 from 80.81.195.40 (204.15.23.109)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 3856:54800
      Dampinfo: penalty 4030, flapped 63 times in 01:09:18, reuse in 00:36:23
      Last update: Tue Aug 31 12:45:35 2010

Comme la configuration DNS de Facebook est très fragile (les serveurs de noms sont tous sur le même réseau), le DNS lui-même a des problèmes et, parfois, on ne peut pas résoudre le nom :

% traceroute www.facebook.com
traceroute: unknown host www.facebook.com
En effet, aucun serveur ne répond :
%  check_soa www.facebook.com 
There was no response from glb01.ash1.tfbnw.net
There was no response from glb01.ams1.tfbnw.net
There was no response from glb01.dfw1.tfbnw.net
...

Question DNS, notons aussi que les serveurs de facebook.com envoient des adresses IP différentes selon le demandeur. Cela explique en partie que Facebook ne soit pas en panne pour tout le monde (en Europe, www.facebook.com semble dans 69.63.184.0/21 et aux États-Unis dans 66.220.152.0/21). On peut avoir une bonne vision de la configuration BGP de Facebook en http://bgp.he.net/AS32934.

RFC 5963: IPv6 Deployment in Internet Exchange Points (IXPs)

Le fonctionnement de l'Internet aujourd'hui repose largement sur des points d'échange où les différents opérateurs se connectent pour échanger du trafic IP. Le point d'échange typique fournit un réseau Ethernet où chacun connecte son routeur, et alloue des adresses IP pour configurer ces dits routeurs, qui vont ensuite établir des liens BGP entre eux. La principale conclusion de ce nouveau RFC est que la très grande majorité des points d'échange fournissant un service de couche 2, le fait d'utiliser IPv6 au lieu d'IPv4 ne change pas grand'chose à la gestion du point d'échange.

La section 1 résume l'état actuel du monde des points d'échange. Presque toujours, le service rendu est une connexion de niveau 2, quasiment uniquement en Ethernet. Le principal service de niveau 3 rendu par les gérants du point d'échange est l'attribution d'adresses IP aux routeurs des opérateurs. Curieusement, ce service n'est pas mentionné dès la section 1, qui cite à la place des fonctions moins vitales comme le serveur de routes ou bien les statistiques (globales ou bien par protocole).

La section 2 du RFC passe ensuite aux questions liées à l'interface entre la couche de liaison et la couche réseau. IPv6 sur Ethernet doit se faire selon le RFC 2464. Le commutateur Ethernet lui-même, travaillant en couche 2, n'a rien de spécial à faire. On peut se poser la question de séparer les trafics v4 et v6. Cela peut se mettre en œuvre avec deux ports physiques sur le commutateur ou bien avec deux VLAN séparés. Mais cette séparation n'est pas indispensable. (Le faire avec des ports séparés consomme des ressources matérielles sur le routeur et le faire avec des VLAN impose aux routeurs de gérer 802.1Q.) Elle complique la configuration mais peut simplifier certaines fonctions comme les statistiques.

La section 3, plutôt descriptive que normative, décrit le mécanisme d'adressage à un point d'échange. Chaque RIR a sa politique pour l'allocation d'adresses IPv6 aux points d'échange. Ce sont typiquement des préfixes de longueur /48 qui sont alloués. Ces adresses ont besoin d'être résolvables en nom par le DNS et de pouvoir être trouvées dans la base des RIR via whois. Donc, un point d'échange n'utilise pas les ULA du RFC 4193. (Voyez par exemple les adresses IP allouées sur FranceIX.)

Par raport à un réseau local IPv6 typique, il faut aussi noter que l'autoconfiguration des adresses pa l'envoi de RA (Router Advertisment) n'est typiquement pas utilisée. La configuration des routeurs est faite manuellement puisque, de toute façon, la configuration de BGP dépend de l'adresse. Puisqu'on n'utilise pas l'autoconfiguration, que mettre dans les 64 bits les plus à droite ? En IPv4, les routeurs à un point d'échange sont en général numérotés séquentiellement mais l'espace d'adressage bien plus grand d'IPv6 permet des plans d'adressage plus informatifs. Il existe plusieurs mécanismes acceptables :

  • Encoder le numéro d'AS en décimal dans les 64 bits. Ainsi, si le point d'échange utilise le préfixe 2001:db8:f00f::/64 et qu'un opérateur connecté a le numéro d'AS 64496, son adresse IP sera 2001:db8:f00f::6:4496:1 (le 1 tout à fait à droite vient de la réservation des 16 derniers bits pour mettre plusieurs routeurs par opérateur connecté, si nécessaire).
  • Certains préfèrent l'hexadécimal, moins lisible mais plus compact, donc ici 2001:db8:f00f::fbf0:1.
  • Une autre méthode est de dériver l'adresse IPv6 de la v4. donc un routeur qui aurait 192.0.2.123 en v4 recevra 2001:db8:f00f::123 en v6 (ce n'est qu'un exemple, le RFC en cite un autre, qui permet des points d'échange de plus de 256 routeurs, contrairement à mon choix de ne garder que le dernier octet).
  • etc (d'autres méthodes sont possibles).
Ces adresses IP du point d'échange doivent-elles être routées globalement ? Le débat a toujours fait rage pour IPv4 et n'est pas différent ici. Les adresses routées globalement facilitent la configuration et le déboguage mais peuvent rendre le point d'échange plus vulnérable à certaines attaques. Si on ne route pas globalement ces adresses, les participants au point d'échange peuvent toujours le faire eux-même dans leur réseau, en prenant soin d'utiliser des méthodes comme la communauté no-export de BGP, pour éviter que les annonces des routes vers le point d'échange ne se propagent trop loin. Enfin, le point d'échange a aussi des services publics (pages Web, serveur DNS, serveurs NTP, etc) et ceux-ci doivent évidemment être installés sur des adresses routables, que ce soit dans le même préfixe que celles des routeurs des participants ou bien dans un préfixe différent.

Une des particularités d'un point d'échange est que les routeurs qui y sont présents appartiennent à des organisations différentes, souvent concurrentes. Le réseau Ethernet partagé n'est donc pas forcément peuplé que par des gentils paquets, on y trouve un peu de tout, des annonces OSPF aux serveurs DHCP illicites... La section 4 mentionne ce problème et ses conséquences pour la sécurité et note que le gérant du point d'échange peut, par exemple, limiter l'utilisation de la diffusion (qui sont transmis à tous) aux paquets de découverte des voisins (RFC 4861. En tout cas, bloquer les paquets Router Advertisment (qui ne devraient jamais apparaître sur le réseau du point d'échange) est conseillé.

Tiens, puisqu'on a parlé du DNS, la section 5 lui est consacrée. Elle recommande que les adresses IP du point d'échange aient un enregistrement « inverse » (enregistrement PTR) dans le DNS, pour faire de plus jolis traceroute et, de manière générale, pour faciliter le déboguage.

Un autre service très populaire sur les points d'échange est le serveur de routes, discuté en section 6. Il sert parfois à échanger réellement des routes entre pairs, et parfois simplement de looking glass. Voir par exemple le looking glass du DE-CIX. Notre RFC recommande qu'il soit accessible en IPv6 mais surtout qu'il gère les extensions à BGP des RFC 2545 et RFC 4760, qui permettent de gérer plusieurs familles d'adresses IP, donc de gérer des routes IPv6. Une autre recommandation est que les routes IPv6 soient échangées sur des sessions IPv6 (ce qui n'est pas obligatoire avec BGP), pour améliorer la cohérence de l'information de routage (si un pair BGP reçoit des informations sur IPv6, il peut être sûr que le pair qui lui annonce des routes IPv6 est lui-même effectivement joignable par ce protocole).

Enfin, la section 7 traite les cas « divers ». Par exemple, un des points peu spectaculaire, mais souvent critique, d'une transition vers IPv6 est l'adaptation des systèmes d'avitaillement (la base de données qui stocke les adresses des participants au point d'échange...) : ces systèmes doivent eux aussi être migrés de manière à pouvoir gérer des adresses IPv6.

La section 8 couvre le cas des politiques d'accès au point d'échange. Les règles d'utilisation doivent bien préciser si le contrat concerne seulement IPv4, seulement IPv6 ou bien les deux. Je me souviens, il y a quelques années (les choses ont peut-être changé depuis) que le contrat avec le Sfinx ne couvrait qu'IPv4 (alors que l'organisme qui gère le Sfinx se vantait de son rôle pionnier en IPv6) et qu'il fallait une paperasserie longue et compliquée pour pouvoir faire de l'IPv6. Notez que notre RFC ne formule pas de recommandation précise sur la politique idéale. Pour moi, le contrat devrait couvrir IP, quelle que soit sa version, car il n'existe aucune justification opérationnelle pour traiter IPv6 comme un « plus », imposant un contrat nouveau.

2010-08-30

Une décennie et demi pour deux navigateurs

2010-08-30 Thierry Stoehr - Formats-Ouverts.org - Anniversaire

15 ans ! Depuis août 2010, c'est l'âge de deux logiciels liés au Web, deux navigateurs : l'un très connu et l'autre très méconnu du grand public, Internet Explorer et Opera.

Celui de Microsoft est le premier logiciel que la société a diffusé gratuitement, en réaction à la concurrence de Netscape : c'est le début de la guerre des navigateurs. Celui du norvégien Opera Sotware est tout aussi ancien et très reconnu dans la communauté des standards ouverts du Web.

Microsoft ne semble pas avoir mis en avant cet anniversaire [1], alors qu'Opera propose une page spéciale avec bande dessinée (de 8 cases) et banières pour marquer ce cap. [2]

Pour ce qui est d'autres navigateurs Web, la chronologie de la diffusion de la première version est la suivante : Netscape en décembre 1994, Amaya en juillet 1996, Konqueror en octobre 1996, Safari en janvier 2003, Firefox en novembre 2004 et Chrome en septembre 2008.

Sources et liens :

Le 30 août sur Formats-Ouverts.org :

2010-08-29

Les 7 ans de DC

2010-08-29 Thierry Stoehr - Formats-Ouverts.org - xmlfr, Anniversaire

Dotclear a 7 ans ! Pour préciser, si cela est nécessaire, Dotclear est le logiciel qui fait fonctionner le site Formats-Ouverts.org depuis son ouverture il y a plus de 6 ans. C'est un logiciel libre, donc avec des coulisses à des formats ouverts et qui utilise des standards ouverts du Web (HTML conforme et RSS principalement).

Alors très simplement merci, bravo et joyeux anniversaire !

Sources et liens :

Le 29 août sur Formats-Ouverts.org :

Eugène Lejeune, artiste peintre

2010-08-29 Gabriel Képéklian - Blogabriel - histoire, peinture, artiste, beauce, beaumont, paris, peintre

Eugène Lejeune est né à Beaumont-les-Autels (Eure-et-Loir) le 15 décembre 1818. Son père, Marie François (15.08.1782, paroisse St Eustache à Paris – 14.01.1864 à Beaumont-les-Autels), est alors maire de Beaumont-le-Chartif où il consigne la naissance de son fils dans le registre communal. Parmi les témoins, le baron Urs Joseph Augustin de Besenval (1776-1836), Lieutenant Colonel du deuxième régiment suisse de la Garde Nationale, veuf depuis 1814 qui en 1825 est propriétaire de la fabrique de faïence dite “de réverbère” de Beaumont-le-Chartif dont Marie François Lejeune est directeur en 1824.

Jean-Baptiste Lejeune, grand-père d’Eugène, était luthier de l’Académie royale de musique. Il exerça son art à Paris, rue Montmartre, de 1775 à 1816. Il était lui même issu d’une famille de luthiers. Les violons Lejeune sont toujours recherchés pour leur qualité.

Eugène est le premier enfant du couple. Sa mère, Anne Victoire née Durand (16.07.1792, paroisse Notre-Dame de Chartres – 09.07.1844 à Chartres) est la fille de l’imprimeur chartrain Jean-François Innocent Durand (28.12.1767, paroisse Ste Foy de Chartres – 27.11.1829 à Chartres) et de Marie Anne Le Tellier (15.12.1770 à Chartres – 21.10.1817 à Chartres) elle-même issue d’une autre famille d’imprimeurs chartrains.

Eugène étudie la peinture dans les ateliers de Paul Delaroche et de Charles Gleyre. Paul Delaroche avait commencé à enseigner en 1832 ou 1833. A la suite d’un bizutage tragique, il dut fermer son atelier en 1843 et c’est Charles Gleyre qui reprit l’atelier. Eugène, devenu artiste peintre, demeure à Paris et expose au Salon à partir de 1845.

Eugène se spécialise dans les portraits, les scènes . Il illustre aussi plusieurs livres. On peut citer à titre d’exemplaires “Reines et rois de France”. Dans les années 1848-1854, il collabore au « Journal des mères et des enfants » fondé par le fouriériste Jules Delbrück (1813-1889). Ce Journal des mères et des enfants divisé en deux parties présente la particularité d’être destiné dans sa première partie (la plus grande) aux enfants et dans sa seconde partie (plus petite) aux parents. Cette revue parut chaque mois de novembre 1848 à octobre 1854 avec de légères modifications du titre. « M. Jules Delbruck, dont le nom se rattache étroitement à la fondation des crèches, l’auteur de la crèche modèle, le savant rédacteur du recueil l’Éducation nouvelle, est un de ceux qui ont le plus fait pour le perfectionnement de l’enfance ; l’attrait, voilà son principe. Transformer les leçons en récréations instructives, c’est la marche dont tous ses écrits tendent à montrer la nécessité aux familles. » (Delasiauve, Journal de médecine mentale, 1866).

Eugène épouse Joséphine Halley (1826 à Cerdon, Ain – 28.01.1879 à Paris 14e). Son prénom bien napoléonien laisse supposer certaines sympathies politiques chez ses parents. Pour l’heure, je n’ai pas réussi à déterminer ni la date et le lieu de leur mariage. Ils auront une fille, Marie Elise (17.10.1853 à Paris 11e – 4.01.1890 à Paris 6e).

En 1861, il demeure rue de l’Ouest à Paris. Eugène est garde national pendant la guerre de 1870-1871.

Le peintre s’éteint à Paris le 8 avril 1894 à l’âge de 75 ans.

Plusieurs musées conservent des oeuvres : au musée de Brest “Intérieur de cuisine”, au musée de Chartres “Le Cardinal Pie”, “La niche aux lapins”, “Michel Chasles”, “Adolphe Chasles” et “Pierre Nicole”.

J’ai aussi réuni près de 100 photos de ses oeuvres, études ou gravures qui peuvent être vues ici.

XML vs RDF : logique structurelle contre logique des données

2010-08-29 Gautier Poupeau - Les petites cases - xmlfr, Structuration, RDF, XML, Causeries, OWL, TEI, Validation, XHTML

XML et RDF sont deux modèles différents d'encodage de l'information et, pourtant, ils sont souvent confondus. Le dernier exemple en date est la mise à disposition par la British Library de 14 millions de notices bibliographiques au format, je cite, « RDF/DC ». La confusion est patente de par l'absence d'URI pour identifier les ressources décrites. Or, en tant que lecteur régulier de ce blog, vous savez que l'URI est un des fondements du modèle RDF.

Il est vrai que la distinction n'est pas forcément évidente à appréhender au premier abord et la syntaxe RDF/XML n'arrange pas les choses. J'ai à plusieurs reprises sur ce blog expliqué ce qui différencie les deux modèles : le modèle de l'arbre ou de l'arborescence pour l'un et le modèle de graphes pour l'autre. Mais, ainsi dit, cela n'est peut-être pas clair. Je vous propose donc d'aborder la distinction sous l'angle de la validation des informations pour faire suite à un commentaire sur le Figoblog et la réponse de Manue.

<!--break-->

On dit d'un flux XML qu'il est bien-formé s'il respecte la logique d'imbrication des balises (à la « poupée russe »), qu'il possède un élément racine et quelques règles primitives de XML. Ce même flux est valide s'il respecte un schéma (définie selon différentes syntaxes : DTD, XML schema ou Relax NG), c'est-à-dire que les noms des éléments et des attributs et leurs imbrications respectent les règles déterminées par le schéma. Dans ce cas, il s'agit de valider la structure d'un ensemble fini dont les bornes sont déterminées par l'élément racine. Ainsi, XML permet d'encoder des portions d'informations selon une logique contextuelle à un ensemble fini.

Reprenons l'exemple donnée par Manue, soit la phrase : « Socrate est un chat ». Si j'encode cette phrase en XHTML, cela donnera :

<html>
  <head>
    <title>Description de Socrate</title>
  </head>
  <body>
    <p>Socrate est un chat</p>
  </body>
</html>

Cet exemple est valide du point de vue du schéma XHTML, mais je n'ai pas validé l'assertion « Socrate est un chat », simplement le fait que, dans le contexte de mon exemple en XHTML, l'assertion forme un paragraphe. Même si je change l'encodage XML voire que j'utilise un autre schéma, je continuerai de valider la logique structurelle de l'ensemble du flux et non la logique des données, par exemple, en TEI :

<TEI xmlns="http://www.tei-c.org/ns/1.0">
   <teiHeader>
      <fileDesc>
         <titleStmt>
            <title>Description de Socrate</title>
         </titleStmt>
         <publicationStmt>
            <p>Manue, 2010.</p>
         </publicationStmt>
         <sourceDesc>
            <p>Exemple tiré du Figoblog</p>
         </sourceDesc>
      </fileDesc>
   </teiHeader>
   <text>
      <body>
         <p>
            <s>
               <phr type="sujet">Socrate</phr>
               <phr type="verbe">est</phr>
               <phr type="attributDuSujet">un chat</phr>
               <pc type="point">.</pc>
            </s>
         </p>
      </body>
   </text>
</TEI>

Dans ce cas, le schéma me permet de valider que je peux avoir un élément XML « s » dans un élément « p » et qu'il peut lui-même contenir des éléments « phr » ou « pc ».

En RDF, la logique structurelle est toujours la même, puisqu'elle est intrinsèque au modèle : <Sujet> <Prédicat> <Objet>. La validation « structurelle » de RDF se situe donc au niveau de l'assertion ou de la donnée à la différence de XML dont la validation est documentaire. En réalité, RDF ne s'intéresse pas à l'encodage d'une structure, mais plutôt à celui de la logique des données. C'est là que rentrent en jeu les ontologies.

Une ontologie, décrite en OWL ou en RDFS, ne permet pas à proprement parler de valider les données encodées en RDF comme c'est le cas avec un schéma XML. En premier lieu, une ontologie définit un cadre logique et sémantique d'un domaine de connaissances. Par exemple, FOAF permet de décrire, en premier lieu, des personnes, Dublin Core les métadonnées d'un document, SKOS un vocabulaire contrôlé, Good relations des produits...

Pour ce faire, une ontologie décrit :

  • des classes, c'est-à-dire la nature des choses, un type : une personne, un document, un concept, un produit, une société...
  • des propriétés, c'est-à-dire les caractéristiques des classes : le nom d'une personne, les différentes relations qui unissent différentes personnes, les relations entre des concepts, le fait qu'un produit est créé par une société...
  • des contraintes, c'est-à-dire la logique associée aux classes et/ou aux propriétés : une personne est différent d'un chien ou d'un chat, une relation "connaît" qui unit deux personnes est symétrique, une personne a forcément une propriété "nom"...

Reprenons notre exemple et voyons dans quelle circonstance cette assertion est vraie et dans quelle circonstance elle est fausse. Pour ce faire, je vais définir une ontologie :

  • les classes :
    • Personne ;
    • Philosophe ;
    • Chat ;
  • les propriétés :
    • nom d'une personne ;
    • le propriétaire d'un chat ;
  • les contraintes :
    • une même ressource ne peut être à la fois une personne et un chat, on dit alors de ces deux classes qu'elles sont disjointes ;
    • La classe philosophe est une sous-classe de personne, donc une ressource de type "Philosophe" est aussi de type "personne" de par les mécanismes d'héritage définis par OWL et RDFS ;
    • une personne se définit forcément par le fait qu'elle a un nom ;
    • un chat se définit forcément par le fait qu'il a un propriétaire ;

A présent, instancions l'ontologie pour deux ressources Socrate 1 et Socrate 2 :

  • Socrate 1 est un philosophe ;
  • Socrate 1 a pour nom de personne "Socrate" ;
  • Socrate 2 a pour propriétaire John Doe ;

Maintenant, évaluons l'assertion « Socrate 1 est un chat » :

  • Puisque Socrate 1 est philosophe et qu'un triplet utilise la propriété "Nom de personne", Socrate 1 est un homme ;
  • Or, la classe homme est disjointe de la classe chat ;
  • Par conséquent, Socrate 1 ne peut pas être un chat, cette assertion n'est pas valide par rapport à l'ontologie, on dit que l'assertion est incohérente ;

Puis, évaluons l'assertion « Socrate 2 est un chat » :

  • Puisque Socrate 2 a un propriétaire, Socrate 2 ne peut être qu'un chat suivant mon ontologie ;
  • Aucune autre assertion ne vient compléter voire contredire cette déduction, on parle aussi d'inférence ;
  • Par conséquent, cette assertion est valide ou cohérente ;

Si vous déclarez correctement votre ontologie de manière formelle avec un langage comme OWL ou RDFS, l'évaluation que nous avons menée ici peut être effectuée automatiquement par la machine avec un logiciel qu'on appelle "raisonneur". A partir d'un ensemble d'assertions, celui-ci peut non seulement déduire de nouvelles assertions par inférence mais aussi valider les assertions elles-même (ce qui revient en fait à effectuer des inférences). Dans ce cas, vous conviendrez que c'est bien la logique même de la donnée que nous avons validée grâce à l'ontologie.

La distinction entre XML et RDF, entre Schéma XML et ontologie RDF est-elle ainsi plus claire ? Si c'est le cas, rendez-vous au prochain numéro pour étudier en détail le langage d'ontologie OWL 2...

Les belles erreurs de l'Encyclopædia Universalis

2010-08-29 Stéphane Bortzmeyer - xmlfr

Comme il y a encore des gens (de plus en plus rares) qui prétendent, contre toute évidence, que les encyclopédies traditionnelles comme l'Encyclopædia Universalis sont plus fiables et mieux vérifiées qu'une encyclopédie collaborative comme Wikipédia, je publie ici la lettre que j'ai envoyée le 24 juin à l'Encyclopædia Universalis, à propos des erreurs dans leur article sur Internet.

L'Encyclopædia Universalis n'est pas consultable librement en ligne. Donc, je ne peux pas dire si l'article a été corrigé. En tout cas, je n'ai jamais reçu de réponse. Voici quelles étaient mes remarques au sujet de http://www.universalis-edu.com/encyclopedie/internet-les-applications/ (l'abonnement est payant donc cet URL ne marchera que si vous êtes abonné).

Un ami m'a fait lire l'article http://www.universalis-edu.com/encyclopedie/internet-les-applications/. Il contient des erreurs plutôt sérieuses. Je ne cite que les trois premières :

  • Le TLD espagnol est .ES pas .SP.
  • Dire que « RIPE-NCC (Réseaux IP européens-Network Coordination Center) a reçu de l'I.C.A.N.N. la gestion des noms de domaine pour l'Europe. » est complètement faux. Le RIPE-NCC gère les adresses IP et n'a pas d'activité sur les noms de domaine. Des énormités pareilles ne vont pas aider les lecteurs à comprendre les délicats rouages de la gouvernance d'Internet. Le seul élément de vérité est le fait que, il y a une quinzaine d'années, avant donc la création de l'ICANN, le RIPE-NCC avait participé à la gestion de certains TLD européens. Ce n'est plus le cas depuis longtemps (et, de toute façon, cela n'a rien à voir avec l'ICANN).
  • « La référence MIME (multi purpose mail extension, RFC 822) » Ce vieux RFC est antérieur à MIME de dix ans ! MIME a été normalisé dans le RFC 1341 en juin 1992. Il est pourtant facile de vérifier l'index des RFC :-(
La lecture de cet article donne à penser qu'il a été rédigé par des gens qui ne connaissaient pas le sujet et, pire, qu'il n'a pas été relu par des experts. Compte-tenu du sérieux de ces erreurs, je compte sur une prompte correction, qui montrerait que les encyclopédies traditionnelles apportent réellement un plus par rapport à Wikipédia.

Voici ce que j'avais écrit à l'Encyclopædia Universalis, via leur formulaire de contact en ligne, et qui n'a jamais reçu de réponse. Notez bien que j'ai arrêté ma lecture très vite, après trois erreurs aussi énormes. D'autres attendaient certainement derrière.

Ces erreurs sont-elles graves ? Pas forcément mais elles montrent une extrême négligence. Par exemple, donner comme exemple de TLD .SP pour l'Espagne montre à la fois une grande paresse (rien n'est plus facile que de vérifier la liste des TLD) et un manque de familiarité avec les noms de domaine (ce qui n'est pas grave pour l'internaute lambda mais est bien plus sérieux lorsqu'on prétend faire une encyclopédie de référence).

Même chose pour l'erreur sur MIME : rien n'était plus facile que de vérifier le RFC 822 et de voir qu'il ne disait pas un mot de MIME.

Et, surtout, si l'erreur est humaine, ne pas corriger les problèmes signalés est quoi ?

2010-08-28

Le livre au format audio radio

Le livre est un objet et un support ancien qui s'est développé au format papier. Mais il existe aussi dans des formats très récents comme sa version numérique, plutôt baptisé livre électronique. On peut d'ailleurs remarquer que c'est l'adjectif d'électronique qui est utilisé, comme dans l'expression courrier électronique (est-ce dû à l'origine commune du papier ?), alors que c'est l'adjectif numérique qui est utilisé pour la télévision numérique (comme dans TNT), la radio numérique ou encore la photographie numérique.

Mais revenons au livre pour lequel il ne faut pas oublier l'audio : en effet que ce soit en disques (phonogrammes, 78-tours, 33-tours ou 45-tours) ou en cassettes, des livres ont déjà été lus et enregistrés. Cela a continué avec le numérique grâce aux CD audio puis aux fichiers MP3 ou à d'autres formats plus ou moins ouverts.

Et il y a aussi la radio ! Que ce soit en version intégrale ou en lecture d'extraits, le livre lu à la radio se rencontre de plus en plus dans les programmes d'été ou de rentrée des différentes stations. Voilà un autre format pour accèder à l'écrit, vital pour les personnes souffrant de troubles de la vision voire aveugles. Et un format qui est assez ouvert : un appareil radio qui capte (petit poste à transistor, tuner de chaîne hi-fi, téléphone portable, la gamme est large) et c'est tout : pas de logiciel avec une version particulière. La Sécurité civile le recommande d'ailleurs aussi.

Le 28 août sur Formats-Ouverts.org :

2010-08-27

MasterChef et les formats

2010-08-27 Thierry Stoehr - Formats-Ouverts.org - xmlfr, Cinema-et-television

La cuisine, voilà un sujet en vogue sur les chaînes de télévision : TF1 a lancé MasterChef le 19 août 2010 (un jeudi) : en première partie de soirée pour l'émission proprement dite, suivie des coulisses pour la deuxième et même la troisième partie de soirée.

Mais le format télé utilisé est celui des émissions de télé réalité, comme Top Chef ou Un dîner presque parfait, deux émissions concurrentes diffusées sur M6. Des formats ouverts, proches mais pas identiques au point de lancer une action en justice « pour parasitisme ».

Deux remarques en guise de dessert :

  • pour ce qui est du nom, le choix (ou encore son format) est judicieux pour proposer des Master Class, ce qui est le cas ;
  • pour ce qui est du site Web, l'adresse a un format très logique : tf1.fr/masterchef/ . Mais TF1 n'a toujours pas totalement compris les liens hypertextes, au moins depuis octobre 2009 car pas de lien sans autorisation ! « Vous vous engagez à ne pas effectuer les actes suivants, sans obtenir l'autorisation préalable et écrite de e - TF1, sans que cette liste ne soit exhaustive : créer un lien hypertexte vers les Sites TF1 » dit la page http://www-compat.tf1.fr/cgu.html.

Le 27 août sur Formats-Ouverts.org :

Le catalogueur, l'usager et le système

2010-08-27 Emmanuelle Bermès - Figoblog - Bibliothéconomie, métadonnées, outils, recherche documentaire

Comme je parcourais le RDA Toolkit, profitant de sa temporaire gratuité (jusqu'au 31 août, je le rappelle), je me suis sentie dériver librement au fil de pensées inattendues.

S'appuyant sur les FRBR et sur les principes internationaux de catalogage, les RDA rappellent une chose qu'on parfois trop tendance à négliger quand on parle de catalogage : le but du catalogage, c'est de répondre aux besoins des utilisateurs, tout en rationalisant les moyens qu'on déploie pour y arriver :

The data should meet functional requirements for the support of user tasks in a cost-efficient manner.

Non, le catalogage n'a pas été inventé par les bibliothécaires pour se faire plaisir (ou pas uniquement).

Les lecteurs de ce blog, quand on leur parle FRBR, se souviendront peut-être des fameux 3 groupes d'entités et de l'articulation entre Œuvre, Expression, Manifestation et Item. Je suis à peu près sûre que parmi les gens qui ont des notions quelconques de FRBR, peu d'entre eux se souviennent que les FRBR, c'est aussi une description détaillée des opérations effectuées par les utilisateurs, réparties en 4 grands groupes : trouver, sélectionner, identifier et obtenir. S'y ajoute le niveau de pertinence des différentes métadonnées pour accomplir ces tâches.

Les RDA reprennent ces tâches pour rappeler à quoi sert chaque partie de la description, ce qui n'est pas du luxe. Cela leur permet de définir les "core elements", dont on a toujours besoin quoi qu'il arrive, et les autres qui ne sont à renseigner qu'en tant qu'ils sont indispensables pour accomplir les tâches utilisateurs.
En cela, ma compréhension de RDA (je n'ai pas fini de les lire, c'est donc plutôt une impression globale) c'est qu'une grande liberté est laissée au catalogueur (ou à l'agence pour qui il travaille) pour décider plus précisément des éléments nécessaires à la description de telle ou telle ressource.
Derrière cette liberté se cache l'économie du catalogage. En effet, RDA nous laisse entrevoir un monde meilleur où on ne décrirait d'une ressource que ce qui est vraiment nécessaire pour la trouver, l'identifier, la sélectionner et l'obtenir, et rien de plus. Un monde où au lieu de répéter N fois l'information, on pourrait relier les ressources et les descriptions entre elles. Un monde où on aurait des descriptions pour des parties, des descriptions pour le tout, et des descriptions hiérarchiques qui les combinent.

Dérivant toujours le long du fil de mes pensées, j'ai saisi l'effluve évanescent d'un souvenir, ou plutôt, d'un leitmotiv que j'ai entendu maintes fois prononcé, chuchoté dans les couloirs : c'est le fantôme du catalogage à niveaux qui revient.
Moi qui suis une (relativement) jeune professionnelle, je n'ai connu du catalogage à niveaux que ces réminiscences lointaines, comme un spectre qu'on aurait eu tant de mal à chasser, et qui s'obstinerait à revenir par la petite porte.
Alors, me suis-je demandé, au fait, c'était quoi le catalogage à niveaux, et pourquoi diable l'a-t-on abandonné ?
Après une courte recherche dans mon moteur préféré, je suis tombé sur cet article de 1988 qui explique que le catalogage à niveaux, c'était :

une présentation élégante, rationnelle : les éléments communs de la notice sont mis en dénominateur commun ; les éléments propres aux volumes sont donnés à la suite les uns des autres

et qu'on l'a abandonné parce qu'il était mal géré par certains formats MARC (notamment nord-américains) et par les progiciels de catalogues de bibliothèques.
Je ne résiste pas à vous proposer cette autre citation d'une saveur toute particulière (nous sommes, je le rappelle, en 1988) :

L'arrivée de nouveaux supports de diffusion utilisant des logiciels documentaires puissants permettant des combinaisons de clés variées et la recherche par mots clés sur la totalité de la notice, confirme aujourd'hui que la séparation des informations est une technique dépassée.

Un élan de nostalgie m'a emportée à l'idée qu'on a renoncé à quelque chose qui était pratique pour les catalogueurs ET pour les utilisateurs, parce que les formats et les systèmes ne savaient pas le gérer.
Puisse l'avenir nous préserver d'un monde où on définit les formats en fonction des systèmes, et les usages en fonction des formats. Voilà à quoi sert l'étape de modélisation : à définir les objectifs du modèle et le modèle lui-même, avant de concevoir les outils qui vont l'exploiter.

NB : en fait, les notices à niveaux n'ont pas totalement disparu du catalogue de la BnF. L'intermarc permet de gérer des "notices analytiques" pour le dépouillement de plages de disques, lots d'images, etc...

RFC 5961: Improving TCP's Robustness to Blind In-Window Attacks

Le protocole TCP, à la base de la grande majorité des transferts de données sur l'Internet, souffre depuis longtemps de plusieurs vulnérabilités. L'une d'elles est sa susceptibilité à des attaques par injection de faux paquets, qui ne proviennent pas d'une des deux extrêmités de la connexion TCP. Un sous-ensemble de ces attaques, les attaques en aveugle, concerne les cas où l'attaquant n'est même pas sur le chemin entre les deux extrêmités (on dit qu'il est off-path) et doit deviner les numéros de séquence TCP pour que ses faux paquets soient acceptés. Ce nouveau RFC expose le problème et des moyens d'en limiter les effets.

Le problème des attaques en aveugle était traditionnellement considéré comme de peu d'importance. En effet, pour que le paquet injecté soit accepté comme légitime, il devait reproduire adresses IP source et destination, ports source et destination et un numéro de séquence situé dans la fenêtre. (Le concept de numéro de séquence TCP est décrit dans le RFC 793, section 3.3. Chaque octet transmis a un numéro de séquence et, à un moment donné, seule une plage de numéros, la fenêtre, est acceptable, car envoyée mais non encore reçue et validée.) À partir du moment où le numéro de séquence initial est choisi aléatoirement (ce qui n'a pas toujours été le cas, cf. RFC 1948, mais est désormais fait dans toutes les mises en œuvre de TCP), un attaquant aveugle, qui ne peut pas sniffer le réseau, n'a guère de chance de deviner juste et donc de fabriquer un faux qui soit accepté. (Voir le RFC 4953 pour les détails sur les attaques contre TCP.)

Mais les choses changent. En raison de l'augmentation de capacité des réseaux, les fenêtres TCP voient leur taille accrue, améliorant les chances de l'attaquant. Et certaines sessions TCP sont très longues (par exemple avec BGP ou avec H.323), avec des adresses IP et des ports prévisibles. En profitant de ces faiblesses, un attaquant peut alors voir ses faux paquets acceptés, et effectuer ainsi des DoS (si le faux paquet est un RST, qui coupe la connexion) ou modifiant les données (si le faux paquet contient des données).

La section 1 du RFC résume ce problème, aggravé par des implémentations comme celles de BGP qui utilisent souvent des ports prévisibles des deux côtés (même du côté client, où ce n'est pas obligatoire). La section 1.2 décrit en détail comment conduire une telle attaque, en prenant l'exemple d'une attaque RST, visant à couper des connexions TCP. La principale difficulté pour l'attaquant est que le numéro de séquence du paquet portant le bit RST doit se situer dans la fenêtre de réception actuelle (mais, bien sûr, l'attaquant a le droit d'injecter plusieurs paquets, pour essayer plusieurs fenêtres potentielles). Les chances du succès du méchant dépendent donc de la taille de la fenêtre. Elle est en général assez facile à déterminer (et cela donne une bonne idée du nombre de d'essais qu'il faudra faire). Une fois qu'il a une idée du numéro de séquence utilisé, l'attaquant peut alors commencer à envoyer des paquets RST, incrémentant le numéro de séquence par la taille de la fenêtre, à chaque nouvel essai. Au bout d'un moment, il a de fortes chances de tomber juste. Les calculs complets se trouvent dans l'article de Watson, « Slipping in the Window: TCP Reset attacks, Presentation at 2004 CanSecWest » et la question est également traitée dans le RFC 4953. La section 1.3 de notre RFC contient également ces calculs de probabilité de réussite.

Le fait que l'attaquant puisse , selon les règles du RFC 793, utiliser n'importe quel numéro de séquence situé dans la fenêtre de réception lui facilite la tâche (en moyenne, seulement 2^31/$WindowSize essais). Changer TCP pour n'accepter les RST que si le numéro de séquence est exactement celui attendu protégerait sérieusement, obligeant l'attaquant à bien plus d'essais (2^31 en moyenne). Sans ce changement, avec une fenêtre typique de 32 768 octets, 65 536 paquets suffisent pour une attaque réussie, en moyenne. Et les tailles des fenêtres tendent à augmenter, en raison de l'augmentation de capacité des réseaux, ce qui rend l'attaque de plus en plus facile.

Il existe bien sûr d'autres protections contre cette attaque, variables en coût et en complexité. IPsec, l'authentification TCP-AO du RFC 5925, etc. Des ports source choisis de manière réellement aléatoire aident aussi.

Les sections suivantes décrivent en détail les différentes possibilités d'une attaque en aveugle, ainsi que les méthodes à utiliser pour les rendre moins efficaces. Ainsi, la section 3 décrit les attaques utilisant le bit RST (ReSeT) du paquet TCP. Le RFC 793 (section 3.4) précise que la connexion doit être coupée lorsqu'un paquet portant ce bit est reçu (si le numéro de séquence est bien dans la fenêtre). Une mise en œuvre correcte de TCP est donc vulnérable à des paquets envoyés en aveugle, si l'attaquant peut trouver un bon numéro de séquence. Comment limiter les risques de ce déni de service ? La section 3.2 de notre RFC décrit le mécanisme suggéré, remplaçant l'algorithme du RFC 793 : ne couper la connexion que si le paquet entrant a pile le bon numéro de séquence. Si le numéro n'est pas celui attendu, mais figure néanmoins dans la fenêtre, envoyer un accusé de réception. Puisque l'attaquant aveugle ne pourra pas le recevoir, il ne pourra pas confirmer le reset (contrairement au pair légitime, qui recevra l'accusé de réception et, ayant coupé la connexion de son côté, renverra un RST qui sera, lui, accepté, puisque son numéro de séquence correspondra audit accusé). Un tel algorithme complique donc nettement les choses pour l'attaquant. Son principal inconvénient est qu'un RST légitime, mais qui n'a pas pile le bon numéro de séquence (par exemple parce que le paquet précédent a été perdu) ne coupera pas la session TCP légitime, il faudra attendre la confirmation.

Et si l'attaquant met le bit SYN (SYNchronize) à un ? La section 4 rappelle qu'une fois la connexion TCP établie, un paquet portant ce bit, toujours si le numéro de séquence figure dans la fenêtre, va couper la connexion. La section 4.2 demande donc que, pour tout paquet SYN reçu après l'établissement initial de la connexion, quel que soit son numéro de séquence, on envoie un accusé de réception. L'attaquant aveugle ne le verra pas et ne pourra pas confirmer. Le pair légitime qui avait envoyé un SYN (ce qui ne devrait pas arriver en temps normal et signifie probablement que le pair avait perdu tout souvenir de la connexion, par exemple suite à un redémarrage) enverra alors un RST puisque, pour lui, la session n'est pas ouverte.

Les deux attaques précédentes (RST et SYN) étaient des dénis de service. Mais on peut imaginer une attaque bien pire où le méchant réussit à injecter de fausses données dans une connexion TCP. Elle fait l'objet de la section 5. Si le méchant peut trouver un numéro de séquence dans la fenêtre, ses paquets de données seront acceptés et pourront être présentés à l'application qui utilise TCP (le succès effectif de l'attaque dépend d'un certain nombre de points, et peut dépendre de la mise en œuvre de TCP utilisée).

Pour contrer cette attaque, la section 5.2 demande de durcir les conditions d'acceptation des paquets de données. Davantage de paquets légitimes seront donc rejetés, afin de pouvoir compliquer la vie de l'attaquant.

À noter (section 6) que les recommandations des trois précédentes sections ne sont pas formulées avec la même force. Utilisant le vocabulaire du RFC 2119, les deux premières sont des fortes recommandations (SHOULD) et la troisième seulement une suggestion (MAY). En effet, une injection de données par un attaquant est bien plus difficile (car les vraies données finiront par arriver, avec un numéro de séquence légèrement différent, ce qui peut mener TCP à refuser soit les fausses, soit les vraies) et ne justifie donc pas d'imposer des contre-mesures qui peuvent mener au rejet de paquets légitimes.

Dernier conseil, celui de la section 7, la nécessité de limiter la quantité d'accusés de réception (ACK) émis. Avec les contre-mesures des sections 3 à 5, le nombre de paquets ACK va augmenter. La section 7 suggère donc de les limiter, par exemple à dix ACK de confirmation pour toute période de cinq secondes (et que ces chiffres soient réglables par l'administrateur système).

Les recommandations de notre RFC 5961 modifient légèrement le protocole TCP. Cela nécessite donc une section 8, décrivant les problèmes de compatibilité qui peuvent se poser entre deux mises en œuvre de TCP, l'une conforme à notre nouveau RFC 5961, l'autre plus ancienne. Normalement, les modifications du protocole sont 100 % compatibles avec le TCP existant. La section 8 décrit toutefois un cas limite où la coupure d'une connexion nécessitera un aller-retour supplémentaire.

D'autre part, le succès complet des contre-mesures décrites dans ce RFC impose qu'elles soient déployées des deux côtés. Une mise en œuvre moderne de TCP parlant à un vieux pair ne fournirait pas une protection complète.

Dernier problème avec les nouveaux algorithmes : le cas des middleboxes, ces équipements qui se mettent sur le trajet de deux machines IP qui communiquent et qui brisent souvent la transparence du réseau (par exemple les pare-feux). La section 9 examine les problèmes qu'elles peuvent poser. Par exemple, certains équipements ré-envoient le RST pour le compte du vrai pair TCP (section 9.1) et, s'ils ne mettent pas en œuvre les recommandations de ce RFC, peuvent ne pas traiter correctement le ACK de demande de confirmation. Ce genre de problèmes survient souvent lorsqu'une middlebox est « ni chair, ni poisson », ni un pur routeur transparent aux paquets de la couche 4 (TCP), ni un vrai pair TCP. Autre exemple cité (section 9.3), un équipement intermédiaire qui, en voyant passer le RST, supprimerait toute l'information associée à cette connexion TCP. Le ACK de demande de confirmation pourrait alors être jeté, et ne recevrait donc pas de réponse, laissant ainsi une connexion TCP ouverte.

Enfin, la traditionnelle section « Security Considerations » (section 10) synthétise l'ensemble des questions liées à ces contre-mesures. Elle rappelle notamment que le problème traité par ce RFC ne concerne que les attaques en aveugle, typiquement lorsque l'attaquant n'est pas sur le chemin des paquets. S'il l'est, par exemple si l'un des deux pairs TCP est sur un réseau Wi-Fi public, les contre-mesures des sections 3 à 5 ne s'appliquent pas, car elles peuvent facilement être contournées par un attaquant en mesure de regarder les paquets, et de voir quel est le numéro de séquence à utiliser. Ce fut le cas par exemple dans les attaques menées par Comcast contre ses propres clients ou bien dans celles perpétrées par la dictature chinoise.

Même dans le cas d'une attaque en aveugle, les contre-mesures de notre RFC n'empêchent pas l'attaque, elles la rendent simplement beaucoup plus difficile. Un attaquant chanceux peut donc encore réussir, même contre des implémentations de TCP parfaitement à jour. La section 10 rappelle (vœu pieux) que la seule vraie protection serait de généraliser IPsec (par exemple avec l'ESP du RFC 4303).

D'autre part, ce RFC 5961 ne traite que les attaques faites uniquement avec TCP mais ICMP fournit aux attaquants aveugles d'autres possibilités (traitées dans le RFC 5927). Une mise en œuvre sérieuse de TCP doit donc traiter également ces attaques ICMP.

Aucun médicament n'est sans effet secondaire et c'est également le cas ici. Les contre-mesures de notre RFC peuvent créer des possibilités d'attaque par réflexion, si l'attaquant déguise son adresse IP : des paquets comme l'ACK de demande de confirmation seront alors envoyés à un innocent. Le RFC estime ce problème peu grave car il n'y a pas amplification : l'attaquant pourrait donc aussi bien viser directement la victime.

2010-08-26

« concurrence déloyale et parasitisme »

2010-08-26 Thierry Stoehr - Formats-Ouverts.org - Cinema-et-television

Loft Story, émission télé de la société Endemol, a été la première du genre télé réalité à être diffusée en France, d'avril à juillet 2001 sur M6.

Dilemme est une autre émission de télé réalité proposée en 2010 sur la chaîne W9 par la société de production d'Alexia Laroche-Joubert, ancienne productrice d'Endemol. L'émission Dilemme est assez proche de ancien « modèle ». Mais entre proche et identique, la frontière est parfois difficile à établir :

« Pour Endemol, ce programme, annoncé comme innovant, ne serait qu'une déclinaison de ses propres formats, dont le fameux Big Brother, lancé en France sous le titre Loft Story ». (gras ajouté) [1]

La société Endemol a donc attaqué en justice la société productrice de l'émission Dilemme pour « concurrence déloyale et parasitisme ». [2]

La guerre des formats a aussi lieu pour les émissions de télé qui ont des formats ouverts copiables, imitables, parodiables. La situation avait été similaire dans l'affaire qui opposait Intervilles et Wipeout en 2009.

Sources et liens :

Le 26 août sur Formats-Ouverts.org :

Un exemple de panne amusante de tcpdump

Voici un cas rigolo qui m'est arrivé hier. Soit une machine Debian/Linux où les programmes de capture de paquets (comme tcpdump) tout marchaient autrefois. Tout à coup, plus aucun filtre BPF ne trouve un seul paquet...

tcpdump sans argument donne le résultat attendu :

% sudo tcpdump -i eth1 -n
12:36:40.723290 IP 193.243.207.47.31619 > 192.93.0.129.53: 40691 [1au] MX? doublev.fr. (39)
12:36:40.723440 IP 192.93.0.129.53 > 193.243.207.47.31619: 40691- 0/2/3 (112)
12:36:40.723480 IP 212.96.9.225.2123 > 192.93.0.129.53: 46420+ MX? fema.fr. (25)
12:36:40.723634 IP 192.93.0.129.53 > 212.96.9.225.2123: 46420- 0/2/0 (81)
...
Mais aucun filtre BPF ne trouve ne serait-ce qu'un seul paquet. Dès que je mets comme argument port 53, ou udp ou même ip, je n'ai plus aucun paquet. Par contre, les filtres not ip ou bien not port NN (pour n'importe quelle valeur de NN) me montrent le trafic... Le problème affecte tous les programmes utilisant la libpcap, pas seulement tcpdump.

La machine a deux interfaces dont une seule a ce problème (sur l'autre, même puce donc même driver, tcpdump marche bien). L'interface à problème n'est pas utilisée par la machine elle-même, elle reçoit du trafic uniquement par port mirroring.

Si j'enregistre les paquets avec l'option -w et que je tente de relire avec un filtre, zéro réponse :

% tcpdump -n -r /tmp/tcpdump-eth1.pcap | wc -l
reading from file /tmp/tcpdump-eth1.pcap, link-type EN10MB (Ethernet)
5722

% tcpdump -n -r /tmp/tcpdump-eth1.pcap ip | wc -l
reading from file /tmp/tcpdump-eth1.pcap, link-type EN10MB (Ethernet)
0
Utiliser l'option -O (ne pas optimiser le code BPF) ne change rien. Vider les caches ou même redémarrer la machine, au cas où un rayon cosmique aie corrompu la mémoire ne change rien non plus.

Arrivé là, voyez si vous avez trouvé la solution...

Mon collègue Antonio Kin-Foo a trouvé. La configuration réseau avait été refaite et le commutateur Ethernet Foundry trouvait drôle de désormais taguer les paquets. C'est ce que montrait tcpdump si on utilise l'option -e (afficher la couche 2). Au lieu de « ethertype IPv4 (0x0800) » pour des paquets IPv4, on voyait « ethertype 802.1Q (0x8100) ». Lorsque les paquets sont ainsi tagués, tcpdump sait se débrouiller dans certains cas (il formatait correctement les paquets) mais pas dans d'autres (définition du filtre). D'autre part, si l'encapsulation/décapsulation VLAN est gérée par le matériel de la carte ou par le système d'exploitation, parfois tcpdump n'a plus de problèmes puisqu'il ne voit plus le tag 802.1Q.

Le bon moyen est de rajouter pour réparer le filtre est d'ajouter vlan and. Par exemple, pour les paquets DNS :

tcpdump -n -i eth1 vlan and port 53

J'ai dû aussi modifier le code de l'outil que j'utilisais pour analyser les paquets. Quelque chose du genre (en C) :

        size_layer2 = SIZE_ETHERNET;
        ethernet = (struct sniff_ethernet *) (packet);
        ethertype = ntohs(ethernet->ether_type);
        if (ethertype == VLAN_ETHERTYPE) {  /* NEW: if the packets are
	tagged, move four bytes forward */
            packet += 4;
            ethernet = (struct sniff_ethernet *) (packet);
            ethertype = ntohs(ethernet->ether_type);
        }
        if (ethertype == IPv6_ETHERTYPE) {
            ip_version = 6;
        } else if (ethertype == IPv4_ETHERTYPE) {
            ip_version = 4;
        } else {                /* Ignore other Ethernet types */
            goto next_packet;
        }

Real world Haskell

Les langages de programmation fonctionnels ont la réputation d'être uniquement utilisés pour des problèmes mathématiques abstraits et jamais pour des vrais programmes dans le vrai monde avec des vrais utilisateurs. Il existe plusieurs livres pour apprendre Haskell mais celui-ci a un angle original, exposé dans le titre : utiliser Haskell pour des problèmes « réels ».

Donc, finis les exemples empruntés aux maths. Ce livre montre comment utiliser Haskell pour analyser du JSON, pour faire un programme de recherche dans le système de fichiers, un analyseur de fichiers PGM, un analyseur de code-barres, pour finir avec un client Web et un filtre de Bloom (note pour ceux qui ont lu le code source de Squid : ce programme utilise de tels filtres).

Tout l'attirail de Haskell est expliqué (les monades, l'évaluation paresseuse, map/fold, etc) mélé aux interfaces vers le monde réel (bases de données, analyse syntaxique, etc).

Une lecture recommandée pour tous les programmeurs, même ceux qui n'envisagent pas d'utiliser Haskell, cela leur ouvrira les idées.

Le livre a aussi un excellent site Web qui permet de tout lire en ligne. Le livre avait d'ailleurs été écrit suite à un intense processus collaboratif en ligne et les exemples ont été choisis et relus ainsi.

2010-08-25

Age et compétences

2010-08-25 Gabriel Képéklian - Blogabriel - méthode, reseau social, appropriation, compétence, internet, paradoxe, usage, web

Depuis l’irruption d’Internet dans nos vies, nous observons des bouleversements dont certains nous semblent paradoxaux.

  • Quand nos usages privés dépassent en quantité et en qualité nos usages professionnels,
  • Quand nos équipements domestiques sont plus performants que ceux que nos entreprises mettent à notre disposition pour travailler,
  • Quand les personnes se forment seules, chez elles sur leur matériel,
  • Quand ce sont les enfants qui apprennent à leurs parents,
  • Quand ce sont les élèves qui enseignent leurs professeurs,
  • Quand ce sont les dernières recrues qui expliquent aux anciens des entreprises,

cela signifie t-il que les jeunes sont plus compétents ?

La maîtrise d’un outil rend-elle plus compétent ? Quand peut-on dire que l’on maîtrise un outil ?

Force est de constater que la maîtrise technique masque la maîtrise des usages. La maîtrise technique s’apprend scolairement, par l’acquisition de gestes techniques qu’il faudra savoir répéter. La maîtrise des usages demande du temps pour l’appropriation des gestes et leur intégration dans la logique du métier. Elle nécessite la connaissance du métier.

Un ancien DRM à l'Élysée

Le Journal officiel du 6 mars 2010 (un samedi) comporte un arrêté en date du 5 mars 2010, référence NOR : PREX1006505A, dont l'article premier indique :

Est nommé chef de l'état-major particulier du Président de la République le général de corps d'armée Benoît Puga, en remplacement de l'amiral Edouard Guillaud, appelé à d'autres fonctions.

Voilà pour l'information précise à la source. Et il se trouve que le général Puga occupait le poste de Directeur du Renseignement Militaire, soit DRM en abrégé. Ces acronymes militaires peuvent être source de lecture différente, suivant le contexte (mais ils ont un format ouvert).

Sources et liens :

Le 25 août sur Formats-Ouverts.org :

Améliorer son référencement Web grâce aux consultants SEO, est-ce possible ?

2010-08-25 Stéphane Bortzmeyer - xmlfr

Le succès du Web a entraîné la création de tout un écosystème, comportant plein de métiers qui n'existaient pas il y a quinze ans, et qui font très chic aujourd'hui sur une carte de visite. Parmi eux, celui d'« expert en référencement » ou « consultant SEO », qui consiste à faire payer le client en lui racontant que son site Web sera mieux placé dans les résultats de Google grâce aux conseils de l'expert. Est-ce vrai ? Un consultant SEO est-il plus sérieux qu'un rebouteux breton ou un sorcier africain ?

D'abord, voyons le problème. Un très grand nombre d'utilisateurs, n'ayant pas compris à quoi servait un URL, ne naviguent sur le Web que via un moteur de recherche. Pour aller sur Wikipédia, ils tapent « wikipedia » dans Yahoo. Pour se connecter sur Facebook, ils tapent « facebook login » dans Google, ce qui mène parfois à des résultats hilarants. La plupart du temps, ces utilisateurs ne regarderont que les deux ou trois premiers résultats de Bing ou de ses concurrents, ignorant tout des mécanismes par lesquels cette réponse est donnée. Cette façon de naviguer est certes très mauvaise mais elle a pavé le terrain pour le métier d'« expert en référencement ». Celui-ci explique à ses clients que le trafic sur leur site Web dépend essentiellement des résultats de Google (ce qui n'est pas faux, à l'heure actuelle), et qu'en payant l'expert, celui-ci, tel l'oracle, leur délivrera des bons conseils simples, faciles à suivre et qui augmenteront leur place (on dit ranking parce que le français ne fait pas assez sérieux) dans les résultats de Google. Il ajoute parfois qu'il va se livrer à des opérations magiques du genre « enregistrer ce site auprès de Google », chose que tout le monde peut faire gratuitement, mais qui légitime un peu plus son devis.

Parfois, on voit circuler des documents sur le réseau qui synthétisent ce genre de conseils, évitant ainsi de payer le gourou. Un exemple est la The Web Developer's SEO Cheat Sheet qui rassemble un tas de conseils purement techniques permettant, parait-il, d'améliorer son référencement. Est-ce vrai ou bien est-ce du pur charlatanisme ? Tous les experts en référencement sont-ils des baratineurs ?

D'abord, il faut bien comprendre comment fonctionnent les moteurs de recherche. Tous sont gérés par des entreprises privées, qui pensent d'abord à leurs profits, pas à la pertinence de la recherche. Celle-ci n'est utile que si elle augmente le nombre de visiteurs mais, si ce n'est pas le cas, le moteur de recherche n'hésitera pas à biaiser ses résultats. Ensuite, ces entreprises ne publient pas les algorithmes utilisés pour classer les sites Web qu'ils indexent. Ces algorithmes représentent leur principal atout, celui qui peut les distinguer de leurs concurrents et sont donc jalousement gardés secrets. Ces algorithmes ne sont pas publiés pour une autre raison : pour éviter que les gérants de sites Web ne s'y adaptent et ne conçoivent leurs sites que pour profiter d'un point particulier de l'algorithme. Le client des moteurs de recherche est donc invité à leur faire une confiance aveugle. Ainsi, sauf si l'expert en référencement est un James Bond particulièrement expérimenté, capable de faire parler les employés de Google, par la séduction, la corruption ou la menace, il n'en sait pas plus sur le fonctionnement interne du moteur de recherche que vous ou moi. Ses conseils ne sont donc pas basés sur des connaissances particulières.

À défaut de connaissances acquises directement à la source, l'expert en SEO a t-il au moins procédé à de nombreuses expériences scientifiques, faisant varier divers paramètres de son site Web, et mesurant à chaque fois objectivement les conséquences sur le classement Google ? On ne peut pas dire qu'il y aie une pléthore d'articles publiés sur une telle mesure mais on peut commencer par ceux en http://www.laboratoire-referencement.fr/, qui semblent sérieux, avec description du protocole et tout (voir par exemple http://www.laboratoire-referencement.fr/separateur-virgule.php. Si un lecteur en connait d'autres, cela m'intéresse. Une telle étude est très intéressante mais très difficile à conduire, car le classement peut, pendant la durée de l'expérience, varier pour bien d'autres raisons, notamment des changements chez les concurrents (chez les autres sites Web). Une telle expérience, menée sérieusement, est de toute façon très coûteuse et c'est donc pour cela que je suis sceptique : je ne pense pas que tous les experts auto-proclamés l'aient fait.

Et, à peine faite, elle serait de toute façon dépassée : les algorithmes utilisés par les moteurs de recherche changent tout le temps, à la fois pour tenir compte des évolutions du Web, et aussi justement pour éviter toute « rétro-ingénierie » de leurs méthodes de classement.

Bref, je ne crois pas qu'il soit possible, sauf à déployer de gros moyens sur le long terme, d'avoir une idée précise du fonctionnement des moteurs de recherche. Et, donc, payer un consultant en SEO est probablement de l'argent perdu. Et c'est parfois beaucoup d'argent, comme dans ce bel exemple scandaleux de gaspillage des ressources publiques.

Cela veut-il dire qu'on ne puisse rien faire pour améliorer son classement ? Au contraire, il est probable qu'on le puisse mais, attention, si on économise de l'argent en ne payant pas un rebouteux SEO, on devra passer par contre beaucoup plus de temps sur son site Web. En effet, une des raisons pour lesquelles les conseils des gourous du référencement ne vous feront pas gagner de place, c'est simplement que tout le monde suit les mêmes gourous ! De même que les pronostics du tiercé, du football ou de la bourse sont 100 % bidon (car, sinon, le pronostiqueur préférerait jouer lui-même plutôt que de vous faire profiter de son savoir), les conseils des experts ne vous aideront pas à gagner des places, car les concurrents les écoutent autant que vous.

Pour progresser, il faut donc faire ce qui est difficile et que le concurrent ne pourra pas reproduire facilement. En deux mots, il faudra mettre du contenu intéressant, le tenir à jour, faire un site Web accessible et conforme aux normes. (Les deux premiers de ces conseils sont de très loin les plus importants mais, en tant qu'informaticien, je ne peux pas m'empêcher de donner aussi des conseils techniques. Au moins, j'essaie d'éviter la micro-technique du genre « mettez des éléments <META> dans le source HTML ».)

C'est de l'enfonçage de portes ouvertes, me dites-vous ? Tout à fait et c'est pour cela que je donne ce conseil gratuitement et que je ne le brevète pas. Cela a même un nom, le « référencement naturel » que l'on peut traduire par « ne vous embêtez pas avec ces superstitions liées au référencement, faites un site Web intéressant, que les gens ont envie de lire, et le reste viendra. »

Et je ne suis pas inquiet pour le classement de mon blog, je sais que ce conseil sera peu suivi. En effet, la plupart des clients des consultants en référencement ne veulent pas travailler et améliorer leur site Web : ils voudraient payer et que tout aille mieux. Ainsi, les plus sérieux des consultants en SEO disent qu'il faut éviter Flash ou, au minimum, fournir une navigation alternative, la plupart des décideurs ne les écoutent pas. Ils sont prêts à payer très cher pour améliorer leur référencement mais pas à sacrifier les images qui bougent et qui évitent de réfléchir.

Et le succès des experts en référencement s'explique facilement. Tout le monde connait le conseil que j'ai donné plus haut (fournir du contenu intéressant), ce conseil est en effet une banalité de première grandeur. Mais beaucoup de sites Web sont vides de tout contenu intéressant (parfois de tout contenu tout court) et c'est eux qui font vivre les gourous en référencement : payer est plus facile qu'écrire.

Pour ceux qui veulent approfondir la question et retenir quelques techniques qui peuvent un peu améliorer leur site, quelques bonnes lectures. Commençons par le dominateur des moteurs de recherche, Google. Celui-ci a édité un excellent « Guide de démarrage Google - Optimisation pour les moteurs de recherche » (oui, traduit en bon français) qui explique tout ce qu'il faut faire pour plaire au roi des moteurs (proposer du contenu intéressant, avoir de beaux URL, mettre autre chose que le stupide « Cliquez ici » dans les liens, ...). Je ne garantis pas que cela améliorera votre classement, mais cela fera en tout cas plaisir à Google et, surtout, la grande majorité de leurs conseils amélioreront votre site de toute façon. Ainsi, conseiller de ne pas dépendre d'Adobe Flash ne fera pas plaisir qu'aux logiciels d'indexation mais aussi à beaucoup de vos visiteurs. (Et cela vous encouragera à penser au contenu.) Puisqu'on parle de Google, leur excellent site «  Outils pour les webmasters » vous donne accès à plein de diagnostics intéressants sur votre site, qui aideront à le rendre plus efficace (et, qui sait, lui feront gagner une place ou deux dans le classement).

Voici d'autres articles pour approfondir la question :

Le texte de Google cité plus haut recommande également l'usage d'outils d'analyse qui décortiquent automatiquement votre site Web et vous donnent de bons conseils. Attention, ce ne sont que des logiciels et ils sont donc incapables de déterminer, par exemple, si le contenu de votre site est intéressant. Il en existe plusieurs mais, personnellement, j'aime bien WooRank dont voici l'analyse de mon blog.

On peut noter aussi une autre particularité du monde du référencement : le recrutement de clients se fait souvent par le moyen du spam. Voici le dernier exemple reçu dans ma boîte aux lettres, très représentatif du style habituel :


Subject: Votre site internet en 1ere Page GOOGLE!
From: steve@referencementpositionnement.fr
To: migration-dbm@nic.fr
Received: from gateway06.websitewelcome.com (gateway06.websitewelcome.com [67.18.15.14])
        by mx1.nic.fr (Postfix) with SMTP id D36471714088
        for <migration-dbm@nic.fr>; Wed,  1 Sep 2010 03:56:47 +0200 (CEST)
Received: (qmail 27986 invoked from network); 1 Sep 2010 01:30:07 -0000
Received: from mach1.websitewelcome.com (70.85.180.226)
        by gateway06.websitewelcome.com with SMTP; 1 Sep 2010 01:30:07 -0000
Received: from bny92-9-88-184-62-156.fbx.proxad.net ([88.184.62.156]:3007 helo=Lvrmn)
        by mach1.websitewelcome.com with esmtpsa (TLSv1:AES256-SHA:256)
        (Exim 4.69)
        (envelope-from <steve@referencementpositionnement.fr>)
        id 1Oqc9R-0007Mg-Ex
        for migration-dbm@nic.fr; Tue, 31 Aug 2010 20:30:10 -0500
Message-ID: <3575_1283306208_4C7DB2E0_3575_580555_1_E089251F8D2ED8649F686B1B1DB385D1@Lvrmn>
X-Mailer: Microsoft Outlook Express 6.00.2900.5843
Date: Wed, 1 Sep 2010 03:29:41 +0200

   Bonjour,

   Je me permet de vous contacter aujourd'hui afin de vous proposer mon
   aide au REFERENCEMENT sur Google !

   Ma démarche est totalement honnête, et je ne souhaite que vous apporter
   mon aide à des prix trés compétitifs en fonction de vos besoins.
   Nombres de sociétés vous font mirroiter beaucoup de belles choses, vous
   signez un contrat, et comme dans 73%(pourcents) des cas, 1 AN après
   vous regrettez votre investissement...

   -Vous etes proprietaire d'un site web, et vous ne comptabilisez que
   très peu de visites ou pas assez ?
   -Vous avez depensé des sommes astronomiques pour une Société de
   Référencement, et RIEN ?
   -Vous ne savez pas du tout comment se passe un REFERENCEMENT, et vous
   aimeriez apprendre ?

   Quoi qu'il en soit, je peux vous aider :

   -Vous coacher sur le Positionnement Google
   -Positionner votre site internet sur les mots clés de votre activité
   -Améliorer votre taux de rebonds
   -Optimiser votre site aux normes telles que W3C, Google, etc...
   -Ameliorer votre Page Rank (e-reputation)
   -Ameliorer le temps de chargement
   -Supprimer toutes les erreurs du type DUPLICATE CONTENT, Mauvaises
  redirections, etc...
   -etc...

   Je peux sur simple demande vous montrer mes références, MAIS ATTENTION,
   contrairement aux autres, une signature sur chacun de ces sites
   internet est visible ! Je pourrais comme d'autres, vous dire que j'ai
   référencé de gros sites tel que FNAC.COM par exemple, mais où est la
   preuve ?

   Si vous habitez en région parisienne, nous pouvons convenir d'un rendez
   vous physique ou téléphonique afin de parler de votre projet.

   N'hésitez pas à me contacter.

   Amicalement
   Steve MICHELET pour Stefano AGBAGLA
   Spécialiste Référencement sur Google
   Tél.: 06.67.99.49.49
   [1]http://www.referencementpositionnement.fr

Ah, au fait, pourquoi feriez-vous confiance à cet article ? L'auteur est-il un expert en SEO, un pro du référencement, un employé de Google qui dévoile des secrets corporate ? Non, rien de tout ça, j'ai juste réussi à être numéro un en réponse à certaines requêtes Google Cela justifie mes prétentions :-)

Et merci à Nathalie Rosenberg pour m'avoir poussé à écrire cet article.

Lorsque je tape sur les joueurs de football, les ministres de l'intérieur, ou les utilisateurs de Microsoft Windows, personne ne proteste. Même chose lorsque je me moque des « rebouteux bretons », aucun nationaliste breton ne m'a sauté dessus (merci à eux pour leur retenue). Mais, apparemment, critiquer la SEO est bien plus grave et cet article a donc suscité quelques réactions comme celui de Sylvain, celui de Pink SEO (l'article est relativement raisonnable mais les commentaires, comme souvent, sont d'un niveau bien plus bas) ou comme celui de CHRis Hédé (nettement plus argumenté) ou enfin Laurent Bourrelly. À noter qu'aucun n'a encore répondu à ma demande d'articles sérieux décrivant la rétro-ingénierie des algorithmes de Google... Leur but n'était pas là, il s'agissait simplement de serrer les rangs face aux attaques. Comme le dit un commentaire à un de ces articles, « J'en profite tout de même pour ajouter une chose que j'apprécie beaucoup dans ce métier. C'est d'ailleurs sans doute lié au sentiment d'incompris que nous ressentons parfois, mais j'aime cette solidarité [...] » Bref, le groupe des rebouteux fait corps lorsqu'on le critique. Aux clients potentiels de ces gourous de voir si ça les rassure...

D'autre part, si certains articles sont relativement sérieux et argumentés, on trouve aussi la meute des médiocres qui arrive après et se sert de cette discussion surtout pour se défouler. La description que l'auteur de cette page fait de son métier (à droite, dans « Qu'est ce que c'est le muscle Referencement ») donne une bonne idée de ce qu'on trouve dans le monde du SEO...

Bref, le plus ennuyeux, dans ces attaques, c'est qu'Oscar Wilde faisait remarquer « qu'on mesure l'importance d'un homme à celle de ses ennemis ». Être attaqué par les charlatans ne fait pas se sentir grand... Heureusement, il existe aussi des articles plus intelligents.

Ré-apprenons le BASIC pendant les vacances

Dans un grenier, j'ai mis la main sur un manuel de 1984, « Une merveille de simplicité / ALICE / Découvrez le Basic » coédité par Matra et Hachette avec une préface de Jean-Luc Lagardère, dirigeant à l'époque des deux entreprises. Le manuel documentait le micro-ordinateur ALICE, de Matra (en fait, fabriqué par Tandy). L'ALICE était muni en ROM d'un BASIC de Microsoft.

Ce BASIC était d'ailleurs son seul shell. Toute interaction avec la machine passait par des commandes BASIC. Le langage était vraiment minimum (même une technique aussi simple que l'indentation pour améliorer la lisibilité des programmes n'existait pas). De mes activités BASIC de l'époque, je ne me souvenais clairement que du fait qu'une variable stockait un nombre, sauf si son nom était suivi d'un $, indiquant que la variable stockait une chaîne de caractères. J'ai révisé le reste : le GOTO était largement utilisé pour presque tout (il y avait quand même des sous-programmes, se terminant par RETURN, et des vraies boucles avec FOR). La seule méthode d'analyse présentée était l'organigramme. Les programmes étaient stockés sur un mécanisme séquentiel, une simple cassette de magnétophone (instructions CSAVE et CLOAD).

L'ordinateur était à la hauteur de ce langage, avec un microprocesseur 6803, 16K de RAM (le manuel que j'ai lu documente la seconde version de l'ALICE, la première avait encore moins), et pas d'écran : il fallait le connecter à son téléviseur familial via le classique câble Péritel.

Heureuse époque où il ne faisait pas de doute que tout le monde devrait apprendre un minimum de programmation pour pouvoir se servir d'un ordinateur ! Le manuel, plutôt bien fait pourtant, est intarissable sur les détails pratiques (du genre, comment allumer un point vert sur l'écran, avec SET(X, Y, 1), 1 étant le vert), moins disert sur la méthodologie et l'analyse, et complètement muet sur les applications réalistes possibles (les exemples donnés sont essentiellement des jeux vidéos ultra-simples). Le manuel de l'ALICE servait à la fois d'introduction à une machine, à un langage et à la programmation en général, bien trop de choses pour 204 pages. Vu le caractère très sommaire du langage et de con environnement, vue l'absence complète du concept de bibliothèque, pas étonnant que l'ALICE n'ait pas nourri un grand nombre de vocations de programmeur.

Pire, comme l'ordinateur ne disposait pas de connexion au réseau, et que la seule possibilité d'échange de programmes passe par le magnétophone, les efforts des uns ne pouvaient pas servir aux autres : chacun était condamné à réinventer son Nième programme de gestion d'hôtel (un des exemples donnés). Pourtant, à la même époque, Unix disposait déjà d'une large bibliothèque de programmes que ses utilisateurs s'échangeaient, via Internet ou UUCP.

Où en est-on aujourd'hui ? On est plutôt passé à l'extrême opposé : la programmation est vue comme un repoussoir (cf. la publicité d'Apple associant l'apprentissage de la programmation à celle de l'alphabet Morse) et on demande surtout à l'utilisateur de ne rien faire d'autre que cliquer sur des endroits pré-définis.

À l'époque, l'utilisation de l'ordinateur semblait à la fois utile et plaisante, comme l'illustre la couverture du manuel, due à Moebius lui-même, dans le style psychédélique des années 70. Le ton du manuel se voulait léger, du genre « La nouvelle valeur de A écrase l'ancienne. Place aux jeunes ! » (encore un slogan qui marque bien son époque...) Aujourd'hui, le ton des manuels est tout aussi exaspérant (les auteurs étant convaincus que l'utilisateur est un abruti et qu'il faut lui parler jeune) mais les ambitions ont beaucoup diminué. En 1984, on pensait naïvement que tout le monde deviendrait programmeur. En 2010, on n'a pas d'autre perspective que de consommer des programmes existants, sans participer à leur création.

2010-08-24

La conquête de l'Ouest : impossible à voir correctement

2010-08-24 Thierry Stoehr - Formats-Ouverts.org - Cinema-et-television

Voir le film La conquête de l'Ouest, c'est impossible ! Au moins dans sa version d'origine, même si le film a plusieurs fois été diffusé à la télé, notamment cet été 2010. Mais il s'agit à chaque fois d'une version « dénaturée » en quelque sorte. Cela s'explique par le troisième 3 des « trois 3 » caractéristiques du film :

  1. le film a été réalisé par 3 réalisateurs (Henry Hathaway, John Ford et George Marshall) ;
  2. les scènes ont été filmées par 3 caméras ;
  3. le visionnage devrait se faire avec 3 projecteurs.

C'est le principe du cinérama [1], qui est aussi un format. Un film de cinéma qui passe à la télévision est déjà souvent recadré quant à la dimension de l'image vue : on ne parle pas sans raison de petit écran (4/3 ou 16/9) et de grand écran. Mais pour le format cinérama, la différence est encore supérieure, avec un élément physique qu'est l'écran conséquent pour les 3 projecteurs.

Sources et liens :

Le 24 août sur Formats-Ouverts.org :

Compter, nommer

2010-08-24 Patrick Peccatte - Du bruit au signal (et inversement) - Culture visuelle - Déjà vu

Lire le billet Compter, nommer sur Culture Visuelle.... Lire Compter, nommer

Remarkable creatures, de Tracy Chevalier

Depuis des millions d'années, elles étaient là, dans les roches de la côte Sud de l'Angleterre. Depuis des milliers d'années, des hommes habitaient là, sans les voir. Ce n'étaient que des cailloux. Mais, en ce début du 19ème siècle, le regard change. Désormais, on voit les fossiles de ces créatures remarquables. Désormais, on les étudie, on les collectionne, on les achète. C'est ce monde en train de changer, ce monde qui commence à accepter l'idée que les êtres vivants n'ont pas toujours été comme aujourd'hui, qui sert de cadre au dernier roman de Tracy Chevalier, Remarkable creatures.

Le livre tourne autout de deux personnages féminins aussi remarquables que les créatures du titre : Mary Anning et Elizabeth Philpot. Ce sont deux personnages historiques mais la romancière a élaboré, sur leurs travaux réels et documentés, une magnifique histoire d'amitié. Face à tous les préjugés d'une Angleterre bigote, où une femme qui décide de se promener seule, ou bien de s'intéresser aux fossiles, ne peut être qu'une folle ou une prostituée, Mary et Elizabeth vont se lancer à la chasse aux fossiles, découvrir des milliers de spécimens et plusieurs nouvelles espèces dont les plus fameuses étaient l'ichtyosaure et le plésiosaure.

L'époque voyait le développement d'une grande mode des fossiles. Elle était donc pleine de collectionneurs de fossiles qui ne savaient pas distinguer un ammonite d'un bélemnite... Les deux héroïnes du roman regardent ces collectionneurs de haut : elles n'achètent pas, elles chassent.

Le statut de ces espèces récemment découvertes faisait l'objet de nombreux débats (l'ichtyosaure n'était-il pas simplement un crocodile ? Le plésiosaure un couper/coller d'un serpent et d'une tortue ?) mais le roman n'est pas un livre de paléontologie. C'est surtout un hommage au passionné (plutôt à la passionnée puisque peu d'hommes ont un rôle positif dans ce livre...), à celle qui a « l'œil du chasseur », celle qui, entièrement prise par sa passion, ignorante des conventions sociales, voit les fossiles là où les gens ordinaires ne voient que des cailloux.

RFC 5966: DNS Transport over TCP - Implementation Requirements

2010-08-24 Stéphane Bortzmeyer - xmlfr

La vague mention des virtual circuits (connexions TCP) dans la section 4.2 du RFC 1035 a suscité d'innombrables polémiques, que ce RFC 5966 va peut-être enfin trancher. En deux mots, un serveur DNS doit-il fournir son service avec les protocoles de transport TCP et UDP ou bien peut-il se contenter d'UDP ?

La discussion est d'autant plus vive que certains registres procèdent à des tests techniques obligatoires avant l'enregistrement d'un nom de domaine et que ces tests peuvent inclure la disponibilité du service sur TCP. Par exemple, l'outil Zonecheck dispose d'un tel test (qui se configure avec <check name="tcp" severity="f ou bien w" category="connectivity:l4"/>) et l'AFNIC impose le succès de ce test pour un enregistrement dans .fr (contrairement à ce qu'on lit parfois, il est faux de dire « Zonecheck impose TCP », Zonecheck est configurable et c'est l'AFNIC qui choisit d'activer ce test, et décide de son caractère bloquant ou non). On a vu ainsi des discussions sur ces tests, même si les opposants ont rarement fait l'effort de prendre le clavier pour écrire une argumentation raisonnée (on les comprend quand on voit que toutes les discussions publiques sur le sujet indiquent un consensus des experts sur l'importance du service TCP, voir par exemple http://www.circleid.com/posts/afnic_dns_server_redelegation/).

Mais c'est aussi que l'approche « légaliste » de la discussion est vouée à tourner en rond. Le texte du RFC 1035 (ou celui de la section 6.1.3.2 du RFC 1123) est vague, et peut s'interpréter de différentes manières. Il faut donc revenir aux bases du DNS, pour décider si TCP est important ou pas, et pas essayer vainement de trouver un texte sacré qui trancherait la question de manière claire.

Revenons donc à ces bases (section 1 du RFC). Le DNS peut s'utiliser sur UDP et TCP. Par exemple, l'outil dig, par défaut, utilise UDP, mais l'option +tcp (ou +vc pour virtual circuit) lui fait utiliser TCP. TCP est obligatoire pour les transferts de zone (cf. RFC 5936) mais, contrairement à une légende répandue, n'est pas réservé à ces transferts et peut être utilisé pour des requêtes ordinaires. Il est notamment obligatoire si la réponse arrive tronquée (bit TC mis à un) car elle ne tenait pas dans le paquet UDP (dont la taille était autrefois limitée à 512 octets). Depuis la création du DNS, la taille des réponses a beaucoup augmenté (IDN et IPv6 mais surtout DNSSEC y ont largement contribué) et, malgré la suppression de la limite de 512 (cf. RFC 2671), TCP est donc encore plus nécessaire que dans le passé.

Arrivé là, il faut faire une distinction importante entre ce que peut le logiciel et ce qu'a activé l'administrateur système. Ainsi, le logiciel djbdns permet parfaitement TCP mais il n'est pas activé par défaut. De même, BIND ou NSD ont TCP par défaut mais un pare-feu situé devant le serveur de noms peut bloquer les accès TCP. Notre RFC 5966 sépare donc protocole et mise en œuvre et ne traite que le cas du logiciel : il précise que tout logiciel DNS doit avoir la possibilité de faire du TCP mais il ne tranche pas (délibérement) la question de savoir si TCP doit être disponible sur un serveur de noms en activité. Il note simplement que l'absence de TCP peut planter le processus de résolution de noms.

La section 3 du RFC discute ensuite les différentes questions liées à ce choix. Le principal problème est celui de la taille des réponses. Autrefois limitée à 512 octets, elle peut prendre des valeurs plus grandes (jusqu'à 65536 octets) avec EDNS0. Mais la MTU de 1500 octets est hélas une limite pratique fréquente (cf. RFC 5625, du même auteur), en raison de pare-feux mal configurés. Cela peut poser des problèmes, par exemple lors du déploiement de DNSSEC. Un simple NXDOMAIN depuis .org dépasse les 512 octets :

 

% dig +dnssec SOA certainlydoesnotexist.org

; <<>> DiG 9.6-ESV-R1 <<>> +dnssec SOA certainlydoesnotexist.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 64046
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;certainlydoesnotexist.org.	IN	SOA

;; AUTHORITY SECTION:
org.			0	IN	SOA	a0.org.afilias-nst.info. noc.afilias-nst.info. 2009281221 1800 900 604800 86400
org.			0	IN	RRSIG	SOA 7 1 900 20100907065203 20100824055203 52197 org. m3DPnEo+Ibd8W0d/cVW7sMZb8UooI6F6mOn/mQSeLiTnLRUvPaMFsd3m j12W4YgVGMyf1s/YLIItoBy7fhKDdJ2zi2r8PfuBrT9Hr+dut+IHRGDR r+6ALaqBISWeyptCe6TygeudG/1sQkQZlCvaBGKUFpsHEi831FwtMZjc hmI=
h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN NSEC3 1 1 1 D399EAAB H9RSFB7FPF2L8HG35CMPC765TDK23RP6 NS SOA RRSIG DNSKEY NSEC3PARAM
h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN RRSIG NSEC3 7 2 86400 20100907065203 20100824055203 52197 org. WNHP4aq9hxWHjgZ10HKlqiU6bx2PVQyCgeGJQqykAay4qTcQvD77QMRm c9efWt3M4BO7rr7bt/uY+TqsriJvB1uhvqg93Ti0fPH1SX86hhG8B09U czngma0DZ1UtaCgwpjVQJbAVYRknyfyi6NM7hWwbxUtD44EVWE14qEbb 93A=
b42oorh0vfd9ble13e1him76im76qsl6.org. 86400 IN NSEC3 1 1 1 D399EAAB B49TR2SSRPRC2FF6FIVQ25UFDMRL7Q63 NS DS RRSIG
b42oorh0vfd9ble13e1him76im76qsl6.org. 86400 IN RRSIG NSEC3 7 2 86400 20100906200816 20100823190816 52197 org. I5l7iR/5TngAspzO36TkNYGGugE2whPsUvQP/nPoNMBCC58/4TtNQysF Pdfswz5lPm14Ei8UrCSXjG17Db7yVFk4MD/oidsfweEJ2hwJqcoPAXqY bcqliZxUq/9dLW7zkH4tKwCDXfYHQKFgW7MhKr/i5JUJRkZgR0Q/7mmu PF4=
vae6tvink0oqnd756037uoir56fokhtd.org. 86400 IN NSEC3 1 1 1 D399EAAB VB1V404HEINQ7A8TQTJ9OASALN2IS19G A RRSIG
vae6tvink0oqnd756037uoir56fokhtd.org. 86400 IN RRSIG NSEC3 7 2 86400 20100907011155 20100824001155 52197 org. lHZ3Zi7vMKEcPif/SE9w31xobVq7VXcifR3EE+G1c3lxm3bKdMI9tY3x 6hOkHbUnbgY8XNvEmaobjmPYd4UdYLQa8eonTuRaupI90AZt9Fi83k6u ruCRHP0ChO9VUD+Yc68mM7spD+7nTIfRu/FkNKEuNvqSHipgR5blBfNg KZw=

;; Query time: 43 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue Aug 24 08:54:12 2010
;; MSG SIZE  rcvd: 1019

Dans tous ces cas, TCP est la seule solution fiable. À l'ère de YouTube et de ses giga-octets de vidéo, il serait curieux d'en rester au DNS de 1990 et de ses limites archaïques à 512 octets. Un serveur de noms doit donc pouvoir utiliser TCP.

Mais, lorsque le serveur de noms a le choix, quel protocole de transport doit-il utiliser ? C'est l'objet de la section 4. Elle modifie légèrement le RFC 1123 dont la section 6.1.3.2 imposait à un résolveur de tenter UDP d'abord (et de passer en TCP si la réponse arrive tronquée). Désormais, le résolveur a le droit de poser sa question en TCP d'abord, s'il a de bonnes raisons de penser (par exemple parce qu'il a déjà parlé à ce serveur) que la réponse arrivera tronquée.

Les sections 5 et 6 sont consacrées à des problèmes pratiques avec la mise en œuvre de TCP. Par exemple, comme le DNS sur TCP peut faire passer plusieurs requêtes dans une connexion TCP, notre RFC précise que les réponses ont parfaitement le droit d'arriver dans un ordre différent de celui des questions.

Restent les questions de sécurité et autres craintes qui sont mentionnées par certains objecteurs (on peut citer http://cr.yp.to/djbdns/tcp.html#why comme très bel exemple de catalogue d'erreurs et d'énormités). En effet, programmer TCP dans le serveur de noms n'est pas très difficile. Ma propre implémentation, dans Grong, fut triviale, car le langage Go, avec son parallélisme natif facilite beaucoup les choses. Mais, même en C, si le serveur utilise plusieurs sockets, par exemple pour gérer IPv4 et IPv6, ajouter TCP en prime ne changera pas beaucoup la boucle principale autour de select(). L'obligation de gérer TCP ne gênera donc qu'une petite minorité de programmeurs, ceux qui essayaient de faire un serveur DNS basé sur le traitement séquentiel des paquets.

En revanche, l'obligation de gérer TCP est parfois critiquée pour des raisons de sécurité. La section 7 discute ce problème des DoS : TCP nécessite un état sur le serveur et consomme donc des ressources. En théorie, cela rendrait les serveurs DNS plus sensibles aux DoS. Toutefois, presque tous les serveurs de noms de la racine ont TCP depuis longtemps, ainsi que la grande majorrté des serveurs des grands TLD et on ne voit pas d'attaques pour autant. (Le RFC se limite au cas du DNS mais on peut aussi, en sortant du petit monde DNS, noter que l'écrasante majorité des serveurs Internet utilise exclusivement TCP... En outre, UDP a ses propres problèmes de sécurité, notamment la facilité à tricher sur l'adresse IP source, facilité qui est à la base de l'attaque Kaminsky.) Le RFC recommande toutefois la lecture de bons textes comme « CPNI technical note 3/2009  \ Security assessment of the Transmission Control Protocol (TCP)  ».

Et la charge du serveur ? Le RFC n'en parle pas mais il y avait eu des inquiétudes à ce sujet, basées sur le fait que les études montrent une augmentation relative très importante du trafic TCP lorsqu'on active DNSSEC. Ce trafic peut-il épuiser le serveur. Notons que, si un passage de 0,2 requête/s à 50 peut sembler énorme, cela reste ridicule en valeur absolue, à l'heure où le plus petit serveur HTTP en gère bien davantage.

Par contre, une autre objection contre TCP n'est pas citée, ses possibles problèmes avec l'anycast. Désolé, mais je manque de temps pour la commenter ici.

Ah, me demanderez-vous, mon opinion personnelle ? Je trouve qu'aujourd'hui, TCP est à la fois indispensable pour ne pas limiter à des valeurs ridiculement basses la taille des réponses, et facile à déployer, comme le montre l'expérience de tous les gros TLD. EDNS0 permettrait de résoudre une bonne partie des problèmes de taille (et je veux donc bien entendre les objecteurs qui diraient « le test technique devrait exiger TCP ou EDNS0 ») mais je note que les serveurs qui n'ont pas TCP n'ont pratiquement jamais EDNS0 non plus... Il n'y a donc guère de raisons valables, en 2010, d'avoir des serveurs de noms inaccessibles en TCP.

2010-08-23

« standard de tournage »

2010-08-23 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

Le cinéaste Wim Wenders à propos de la 3D dans les films, notamment pour les documentaires :

« La 3D est le moyen idéal pour s'approcher de la réalité et, dans l'avenir, elle sera utilisée pour les documentaires. Il faut apprendre à filmer d'une manière naturelle, sans trop privilégier la tridimensionnalité. Ce sera un nouveau standard de tournage. » [1]

Encore faudra-t-il que les technologies de la 3D ne soient pas multiples et propres à chaque studio avec son appareil de projection et de visualisation : donc pas de guerre des formats mais des formats ouverts.

Sources et liens :

Le 23 août sur Formats-Ouverts.org :

RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters

Les requêtes et réponses du protocole HTTP incluent des en-têtes (comme User-Agent: ou Content-Disposition:, même si ce dernier ne fait pas officiellement partie de la norme HTTP, cf. RFC 2183) avec des valeurs, qui ne pouvaient se représenter directement qu'avec les caractères du jeu ISO 8859-1. Comme MIME, dans le RFC 2231, prévoyait un mécanisme très riche pour encoder les en-têtes du courrier électronique, ce RFC 5987 réutilise ce mécanisme pour HTTP (plusieurs en-têtes l'utilisaient déjà, de manière pas vraiment officielle). Pour le corps du message (voir par exemple le RFC 2388), rien ne change.

Cette restriction à Latin-1 vient de la norme HTTP, le RFC 2616, dans sa section 2.2, qui imposait l'usage du RFC 2047 pour les caractères en dehors de ISO 8859-1.

Notre RFC peut être résumé en disant qu'il spécifie un profil du RFC 2231. Ce profil est décrit en section 3, qui liste les points précisés par rapport au RFC 2231. Tout ce RFC n'est pas utilisé, ainsi le mécanisme en section 3 du RFC 2231, qui permettait des en-têtes de plus grande taille, n'est pas importé (section 3.1 de notre RFC).

En revanche, la section 4 du RFC 2231, qui spécifiait comment indiquer la langue dans laquelle était écrite la valeur d'un en-tête est repris pour les paramètres dans les en-têtes. Ainsi, (section 3.2.2), voici un en-tête, avec un paramètre title traditionnel en pur ASCII :

X-information: news; title=Economy
et en voici un avec les possibilités de notre RFC pour permettre les caractères £ et € (ce dernier n'existant pas dans Latin-1) :
X-information: news; title*=UTF-8''%c2%a3%20and%20%e2%82%ac%20rates
Par rapport au RFC 2231, deux jeux de caractères sont décrétés obligatoires (ISO 8859-1 et UTF-8) et la mention du jeu utilisée est également désormais obligatoire (section 3.2 de notre RFC). La langue elle-même est indiquée par une étiquette, selon la syntaxe du RFC 5646. Du fait de ces possibilités plus riches que celles prévues autrefois pour HTTP, les paramètres qui s'en servent doivent se distinguer, ce qui est fait avec un astérisque avant le signe égal (voir l'exemple ci-dessus). La valeur du paramètre inclus donc le jeu de caractères et l'encodage (obligatoire), la langue (facultative, elle n'est pas indiquée dans l'exemple ci-dessus) et la valeur proprement dite.

Voici un exemple incluant la langue, ici l'allemand (code de) :

X-quote: theater; 
    sentence*=UTF-8'de'Mit%20der%20Dummheit%20k%C3%A4mpfen%20G%C3%B6tter%20selbst%20vergebens.

La section 4 couvre ensuite les détails pratiques pour les normes qui décrivent un en-tête qui veut utiliser cette possibilité. Par exemple, la section 4.3 traite des erreurs qu'on peut rencontrer en décodant et suggère que, si deux paramètres identiques sont présents, celui dans le nouveau format prenne le dessus. Par exemple, si on a :

X-information: something; title="EURO exchange rates";
               title*=utf-8''%e2%82%ac%20exchange%20rates
le titre est à la fois en ASCII pur et en UTF-8, et c'est cette dernière version qu'il faut utiliser, même si normalement il n'y a qu'un seul paramètre title.

Ceux qui s'intéressent à l'histoire du développement de cette nouvelle norme pourront regarder les minutes de la réunion IETF 72. Ces paramètres étendus sont déjà mis en œuvre dans Konqueror (à partir de la 4.4.1), Firefox et Opera. Des tests plus détaillés sont présentés en http://greenbytes.de/tech/tc2231.

RFC 5969: IPv6 Rapid Deployment on IPv4 Infrastructures (6rd)

La délicate question de la période de transition entre IPv4 et IPv6 n'a jamais été négligée à l'IETF. Bien au contraire, plusieurs mécanismes ont été normalisés pour assurer le passage d'un protocole à l'autre. Le mécanisme « 6rd », initialement décrit dans le RFC 5569, est un de ces mécanismes. 6rd modifie le 6to4 du RFC 3056 pour garantir un chemin de retour symétrique aux paquets IP (section 1 du RFC). 6rd permet à un FAI de vendre un service IPv6 alors que son réseau interne est essentiellement IPv4. Il est surtout connu pour être la technologie déployée par Free à partir de décembre 2007. Ce RFC 5969 prend la spécification originale de 6rd, dans le RFC 5569, l'étend pour des cas comme celui où les adresses sont distribuées par DHCP et le fait passer sur le chemin des normes IETF (le RFC 5569 avait uniquement le statut « pour information »).

S'il existe plusieurs mécanismes de coexistence d'IPv4 et d'IPv6, c'est parce que les besoins sont différents. Certains FAI ont un réseau interne entièrement IPv6 depuis de nombreuses années comme Nerim. D'autres n'ont pas encore commencé le déploiement. Parfois, le FAI est en avance sur ses clients, parfois c'est le contraire comme c'était le cas pour Free où de nombreux utilisateurs réclamaient IPv6 depuis longtemps. Il existe donc une variété de techniques de coexistence v4/v6. 6rd se positionne pour le cas où le FAI :

  • n'a toujours pas migré la totalité de son réseau interne en IPv6,
  • a une connectivité IPv6 externe, et des adresses IPv6 allouées par un RIR,
  • a certains clients qui réclament une connectivité IPv6,
  • et, de préférence, contrôle le routeur situé chez les clients (cas des « boxes », nommées CE pour « Customer Edge » dans le RFC).

À l'origine, le protocole « idéal » semblait être 6to4 du RFC 3056. Simple, déjà mis en œuvre, y compris en logiciel libre et sans état (chaque paquet est traité indépendamment) donc passe bien à l'échelle. Mais il a des limites, notamment le fait le retour du paquet n'est pas garanti : la machine avec laquelle on communique va chercher son propre relais 6to4 et ne va pas forcément en trouver un. 6rd est une modification de 6to4 pour utiliser comme préfixe, non plus le préfixe 6to4 commun à tous de 2002::/16 mais un préfixe par FAI. Ainsi, le FAI doit désormais lui-même installer des relais, il ne peut plus se reposer sur les relais existants mais, en contre partie, il contrôle complètement le routage, y compris sur le chemin du retour et se retrouve ainsi dans un cas plus classique où ses routeurs servent ses clients (alors que, avec 6to4, tout le monde sert tout le monde, ce qui est très bien lorsque cela marche).

La section 4 décrit la fabrication du préfixe 6rd pour les adresses IP. Ce préfixe combine un préfixe IPv6 choisi par le FAI et tout ou partie de l'adresse IPv4 du CE. Notons que, 6rd étant un bricolage purement local au FAI, la norme n'impose pas, par exemple, le nombre de bits IPv4 conservé (ce point était déjà dans le RFC 5569, voir aussi les sections 7 et 11). Il faut juste garder 64 bits pour le réseau local, pour permettre l'autoconfiguration sans état. On peut garder moins de 32 bits de l'adresse IPv4 car certains octets sont souvent fixés sur le réseau du FAI. Par exemple, un FAI qui consacre le préfixe 2001:DB8::/32 à ses clients 6rd, pour un CE d'adresse 192.0.2.137, et dont tous les CE sont sous 192.0.0.0/8, peut garder les trois quarts de l'adresse IPv4. Le FAI aura alors un préfixe 6rd de 32 + 24 = 56 bits (ce qui laissera 72 bits pour le réseau local, permettant 256 réseaux de longueur /64), le 2001:DB8:0002:8900::/56.

Les acteurs du protocole sont :

  • Les machines sur le réseau local du client, elles parlent IPv6 nativement sur ce réseau local (si elles utilisent l'auto-configuration sans état, la Freebox leur a envoyé le préfixe par RA),
  • Les CPE (CE dans le RFC, pour « Customer Edge », comme la Freebox chez Free), qui doivent parler 6rd pour traduire dans les deux sens,
  • Les relais 6rd, en bordure du réseau du FAI (BR dans le RFC pour « Border Relays »). Chez Free, ce sont des PC Unix. À noter que 6rd est sans état et que chaque paquet IP peut donc être traité indépendamment des autres. Les BR peuvent donc être joints, par exemple, par l'anycast (RFC 3068).
On peut se poser la question de savoir s'il s'agit vraiment d'IPv6 « natif ». Sans doute pas (le paquet circule dans le réseau de Free encapsulé IPv4, ce qui réduit la MTU à 1480 octets).

Pour faciliter le déboguage, la section 5 du RFC recommande que CE et BR répondent à l'adresse anycast subnet router du RFC 4291 (section 2.6.1).

La section 7 couvre les mécanismes par lesquels le CE peut être configuré pour faire du 6rd proprement. Ils sont multiples mais on notera en section 7.1.1 l'arrivée d'un nouveau : une option DHCP (numéro 212) pour configurer tous les paramètres 6rd du CE (préfixe IPv6, adresse(s) des BR, nombre de bits de l'adresse v4 à conserver, etc).

La question de la longueur idéale du masque v4 est couverte en section 11. Il s'agit de voir combien de bits de l'adresse v4 doivent être gardés dans le préfixe v6. Si on utilise les 32 bits, et qu'on veut allouer un /56 à chaque client, il faut un /24 pour les servir tous. Ce n'est pas si effrayant que cela, même si tous les AS actuellement actifs le faisaient, cela ne consommerait qu'un /9. Et si ces AS n'allouaient au client qu'un /60, la consommation totale ne serait qu'un /13. À noter que Free n'allloue aujourd'hui qu'un /64 à ses clients, ce qui ne leur permet pas d'avoir plusieurs réseaux chez eux (sauf à renoncer à l'autoconfiguration sans état) et annule donc une partie de l'intérêt de IPv6.

Mais la solution la plus courante sera sans doute de ne pas utiliser les 32 bits de l'adresse IPv4 mais seulement une partie. Par exemple, si tous les CE sont dans le même /12 IPv4, 20 bits suffisent pour les distinguer et on peut alors allouer un /56 à chaque client en ne consommant en tout qu'un /36.

6to4 soulève traditionnellement des gros problèmes de sécurité, documentés dans le RFC 3964. 6rd en supprime certains, si l'implémentation suit les recommandations de la section 12, et effectue les vérifications demandées, mais l'usurpation d'adresse IP demeure relativement facile.

Quelles sont les principales nouveautés de ce RFC 5969 par rapport au RFC 5569 original ? Thibault Muchery les résume en disant que ce nouveau RFC est plus général : la solution mise en œuvre pour Free prenait avantage de certaines particularités de Free (addresses IP fixes, maitrise des logiciels de la CE - la Freebox - et des BR). La solution nouvelle reprend tout à fait le même principe, en généralisant, en standardisant (nouvelle option DHCP, etc.), en présentant plus la solution comme inscrite dans une lignée d'autres solutions, en ajoutant des contrôles plus fins pour la sécurité mais au fond c'est exactement la même solution généralisée.

Et Rémi Desprès, concepteur de la solution originale, note que l'apport majeur du RFC 5969 est la spécification d'une option DHCP pour transmettre aux CPEs (ou "CEs") les paramètres 6rd de leur domaine. (Free n'en avait pas besoin, mais c'est indispensable si les CPE sont acquis indépendamment du FAI.) Il ajoute qu'il y a par contre une régression, mais limitée, dans la section 8. La nouvelle norme envisage une l'utilisation de NUD (Neighbor Unreachability Detection) sur le lien virtuel que constitue un domaine 6rd (tout en le décrivant comme sous-optimal), une complexité à son avis superflue. Le RFC 5969, et propose une technique différente pour tester l'accessibilité des BR, à son avis superflue également. La philosophie KISS du RFC 5569 en est à son avis amoindrie, mais avoir un RFC spécifiant l'option DHCP est plus important que ces points mineurs.

On imagine que la suite des opérations sera une implémentation par Cisco, étant donnée que le RFC est rédigé par des gens travaillant pour Cisco.

RFC 5952: A Recommendation for IPv6 Address Text Representation

2010-08-23 Stéphane Bortzmeyer - xmlfr

Comme pour IPv4, mais de manière bien plus commune, les adresses IPv6 ont plusieurs représentations possibles. Ainsi (section 1 du RFC), l'adresse 2001:db8:0:0:1:0:0:1 peut aussi s'écrire 2001:0db8:0:0:1:0:0:1, 2001:db8::1:0:0:1, 2001:db8::0:1:0:0:1, 2001:0db8::1:0:0:1, 2001:db8:0:0:1::1, 2001:db8:0000:0:1::1 ou 2001:DB8:0:0:1::1. Cette variété peut dans certains cas être cause de confusion, notre RFC propose donc une forme recommandée (ici, 2001:db8::0:1:0:0:1).

La syntaxe des adresses IPv6 est fixée le RFC 4291, section 2.2. Cette syntaxe est très souple, et venait sans format recommandé, « canonique ». La section 2 liste les points où le RFC 4291 laissait le choix :

  • Possibilité d'indiquer (ou pas) les zéros initiaux dans chaque champ. 2001:db8:0:0:1:0:0:1 et 2001:0db8:0:0:1:0:0:1 sont ainsi équivalentes (deuxième champ).
  • Possibilité de compression des champs nuls consécutifs en les remplaçant par ::. 2001:db8:0:0:0:0:0:1 et 2001:db8::1 sont ainsi la même adresse. Si le :: peut apparaitre à deux endroits, le RFC 4291 impose, pour éviter toute ambiguité, de ne le mettre qu'une fois mais sans préciser où. Ainsi, 2001:db8::aaaa:0:0:1 et 2001:db8:0:0:aaaa::1 sont la même adresse.
  • Pour les chiffres hexadécimaux qui sont des lettres de A à F, on peut utiliser n'importe quelle casse.

Est-ce que cela pose vraiment des problèmes ? Parfois, dit notre RFC, dont la section 3 liste les problèmes possibles (sans les hiérarchiser, ce que je regrette car certains cas semblent quand même assez rares en pratique). Premier problème, la recherche d'une adresse dans un fichier texte ou bien avec un tableur. Si on utilise aveuglément grep sur ses fichiers, on risque de ne pas trouver l'adresse IP (avec grep, il faudrait utiliser une expression rationnelle mais les tableurs, par exemple, n'en disposent pas forcément et leurs utilisateurs peuvent ne pas y penser). Notez qu'avec un SGBD qui dispose d'un type « adresse IP » comme PostgreSQL, ce problème n'existe pas, le SGBD ne traite pas l'adresse comme du texte :

essais=> CREATE TABLE Machines (name TEXT, address INET);
CREATE TABLE
essais=> INSERT INTO Machines VALUES ('gandalf', '2001:db8::cafe:0:1');
INSERT 0 1
essais=> INSERT INTO Machines VALUES ('saroumane', '2001:db8::bad:0:1');
INSERT 0 1
essais=> SELECT * FROM Machines WHERE address = '2001:DB8:0:0:0:CAFE:0:1';
  name   |      address       
---------+--------------------
 gandalf | 2001:db8::cafe:0:1
(1 row)
On voit que, malgré une représentation toute différente de l'adresse, la machine gandalf a bien été trouvée. Si tout le monde utilisait des logiciels de gestion d'adresses IP bâties sur ce principe, il n'y aurait pas de problème. Mais, comme le note le RFC, les méthodes « du pauvre » à base de grep ou d'Excel sont courantes. (Voir aussi les sections 3.1.3 et 3.1.4, moins convaincantes à mon avis.)

Des problèmes analogues surviennent lorsqu'on veut écrire un programme capable d'analyser des adresses IPv6 sous toutes leurs formes légales (section 3.2.1, avec laquelle je ne suis guère d'accord : il existe des bibliothèques toutes faites pour cela, dans tous les langages, comme inet_pton() pour C, et celui qui réinvente la roue en écrivant un analyseur tout neuf en PHP ou Visual Basic mérite les ennuis qu'il aura).

Le RFC cite d'autres problèmes possibles, comme le fait qu'un module de journalisation qui afficherait les adresses IP sous leur forme longue (comme 2001:0db8:0:0:1:0:0:1) produirait des historiques peu lisibles, ou comme le fait qu'un mécanisme d'audit (par exemple avec un outil comme diff) ou de gestion de versions qui analyserait des changements dans la configuration d'un routeur pourrait croire à tort qu'il y a un changement lorsqu'une adresse IPv6 passe d'une forme à une autre (section 3.2.3). Bien d'autres points analogues sont pointés du doigt par le RFC.

Enfin, le jeu de caractères étendu de l'hexadécimal entraine un risque de confusion entre D et 0, de même qu'entre B et 8 (section 3.4.3).

Quelle solution propose donc notre RFC ? La section 4 est la partie normative du document : elle définit une forme canonique qui devrait être suivie systématiquement lorsqu'une adresse IPv6 est affichée. Rien de nouveau dans cette forme, qui est déjà celle choisie par la plupart des logiciels, à part sa désignation comme forme canonique officielle. Attention, cette obligation ne porte que sur la sortie d'adresses IPv6, en entrée, un logiciel conforme à la norme IPv6 doit toujours accepter les différentes syntaxes.

Une conséquence de cette existence d'une forme canonique est que le logiciel n'affichera donc pas toujours ce qu'on lui a indiqué. Pour reprendre l'exemple PostgreSQL :

essais=> INSERT INTO Machines VALUES ('galadriel', 
                    '2001:0DB8:0:DBA8:0:0:0:1');
INSERT 0 1
essais=> SELECT * FROM Machines WHERE name = 'galadriel';
   name    |      address       
-----------+--------------------
 galadriel | 2001:db8:0:dba8::1
L'adresse sera affichée sous une forme différente de celle sous laquelle elle a été entrée. La section 3.3.1 du RFC expliquait pourtant que c'était une mauvaise idée que d'afficher sous une forme différente, petite contradiction de ce RFC.

Donc, concrètement, comment doit être affichée une adresse ?

  • Les zéros initiaux dans un champ doivent être supprimés (section 4.1). 2001:0db8::0001 doit être écrit 2001:db8::1.
  • L'indication d'une suite de champs nulms, :: doit être utilisée au maximum, doit s'appliquer à la suite la plus longue (s'il y en a plusieurs) et, en cas d'égalité, à la première (section 4.2). Ainsi, 2001:db8:0:0:0:0:0:1 doit s'écrire 2001:db8::1, 2001:db8:0:42:0:0:0:1 doit être mis sous la forme 2001:db8:0:42::1 et 2001:db8:0:0:137:0:0:1 doit être affiché 2001:db8::137:0:0:1.
  • Les chiffres hexadécimaux doivent être en minuscule (section 4.3), donc 2001:DB8::BAD:DCAF doit être 2001:db8::bad:dcaf.

Le RFC prévoit aussi le cas des adresses spéciales comme les adresses IPv4 représentées en IPv6 (section 5).

Si l'adresse IP indiquée comprend également un port, il y avait traditionnellement plusieurs formes. La section 6 rend obligatoire la syntaxe avec crochets [2001:db8::deb:1]:80, issue du RFC 3986 (section 3.2.2) et qui n'était obligatoire que pour les URL.

L'annexe A donne des conseils pour les programmeurs, qui vont devoir écrire des programmes affichant des formes correctes. Ainsi, sur FreeBSD 7.0, l'utilisation de getnameinfo() avec l'option NI_NUMERICHOST produit déjà le résultat correct, sauf pour les adresses dites spéciales.

De même, PostgreSQL produit déjà des adresses au bon format. Et avec inet_pton() ? Le programme canonicalize-v6.c montre que son comportement est bien celui du RFC :

% ./canonicalize-v6 toto 2001:db8:Bad:0:0::0:1 127.0.0.1 35:0FF::1 2001:0:0:1:b:0:0:A 2001:db8:0:0:1:0:0:0
toto -> Illegal input IPv6 address
2001:db8:Bad:0:0::0:1 -> 2001:db8:bad::1
127.0.0.1 -> Illegal input IPv6 address
35:0FF::1 -> 35:ff::1
2001:0:0:1:b:0:0:A -> 2001::1:b:0:0:a
2001:db8:0:0:1:0:0:0 -> 2001:db8:0:0:1::

Voir aussi le RFC 4038 pour des détails sur les questions IPv6 pour les applications.

RFC 5943: A Dedicated Routing Policy Specification Language Interface Identifier for Operational Testing

Lorsqu'un nouveau réseau est connecté à l'Internet, il est parfois injoignable de certaines parties de l'Internet, par exemple parce que ses adresses IP sont illégalement utilisées par d'autres ou bien parce qu'il est filtré en raison d'une histoire antérieure. Les bonnes pratiques opérationnelles demandent donc la configuration d'un serveur ICMP qui répondre à des tests, par exemple depuis ping. Traditionnellement, l'existence de ce serveur était annoncé via les commentaires stockés dans la base d'un RIR (comme le commentaire remarks: pingable 2a01:190:1764:150::30 du réseau 2a01:190::/32. Ces commentaires n'étant pas analysables automatiquement par un programme, il était donc souhaitable de créer un nouvel attribut RPSL pour cela, pingable:.

Prenons l'exemple de l'allocation d'un nouveau préfixe à un RIR par exemple, l'allocation de 175/8 : le nouveau préfixe est souvent inaccessible depuis plusieurs parties de l'Internet, par exemple en raison de filtres anti-bogon. Il faut donc une étape de « débogonisation » où le préfixe sera annoncé par le RIR, des serveurs ICMP echo seront installés et testés. Lorsque les filtres anti-bogon auront été mis à jour, le test pourra cesser.

Notre RFC 5943 permet d'automatiser ce genre de tests en ayant un nouvel attribut dans la description en RPSL (RFC 4012) de la route vers le préfixe en question. Sa description complète figure dans la section 2 du RFC, avec cet exemple :

route6: 2001:DB8::/32
origin: AS64500
pingable: 2001:DB8::DEAD:BEEF
ping-hdl: OPS4-RIPE
(ping-hdl est le handle du contact technique de ce serveur de test).

À l'heure actuelle (août 2010), il n'existe pas encore d'objet ayant cet attribut dans la base du RIPE. il faut dire qu'il n'est pas encore mis en œuvre. Si on essaie d'en ajouter un :

 
pingable:      194.109.21.51
***Error: "pingable" is not a known RPSL attribute
(Merci à Marco Hogewoning pour ses essais et explications.)

Les processus qui testent les adresses pingable doivent prendre garde à ne pas surcharger le réseau en se limitant à un nombre raisonnable d'essais (section 3 du RFC). Naturellement, rien ne garantit que tous le feront et celui qui installe le serveur de test doit aussi déployer ses propres protections (section 4 du RFC).

L'adoption de ce nouvel attribut n'est pas allée de soi et on peut trouver un exemple des discussions qui l'ont accompagné dans les minutes de la réunion RIPE-60 (cherchez « E. A Dedicated RPSL Interface Identifier for Operational Testing »).

2010-08-22

Monocle, support et contenu

2010-08-22 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

« Aujourd'hui, tout le monde s'excite sur les supports, je les vois ces éditeurs qui s'emballent autour de l'iPad ! Nous, nous travaillons sur le contenu. C'est là-dessus aussi que nous misons. » [1]

Citation de Tyler Brûlé, patron de presse, créateur du magazine Monocle, lancé en 2007 malgré la crise économique et la révolution numérique, « parce que nous pensions qu'il était encore possible de faire sur papier quelque chose de tactile, d'agréable à lire et à regarder que le Web ne parviendra jamais à vous donner. Nous voulions faire un objet rare et de collection. D'où son design sobre et classique et ce nom rétro qui signifie que nous avons un point de vue assumé dans une époque où tout se ressemble. » (gras ajouté)

Format papier, format numérique : l'ancien et le nouveau.

Sources et liens :

  • [1] Article, L'esthète Brûlé, de Boris Razon, le 28 juillet 2010, page 26, Télérama n°3159

Le 22 août sur Formats-Ouverts.org :

Thé et Dasein

2010-08-22 Christian Fauré - Défaut, Japon, philosophie, Thé

Anne Fagot-Largeault, dans son cours de 2007 au Collège de France, retrace une filiation surprenante entre un des textes majeurs de la tradition philosophique occidentale et la pensée orientale.

*

Pour Tomonubu Imamichi, philosophe japonais atypique, la grande affaire de la philosophie occidentale est la représentation du monde. Et la meilleure place pour se représenter le monde, c’est de se mettre en surplomb, c’est à dire à la place de Dieu. Le Das-Im-Der-Gott-Sein, le fait d’être en Dieu, est le point de perspective de la philosophie occidentale.

Le philosophe oriental ne cherche pas tant à se représenter le monde qu’à l’exprimer, dit Imamichi. L’inspiration vient d’en bas et non d’en haut. Le sujet connaissant est dedans, immergé dans son monde. Son souci est de s’occuper de son mode proche (« to deal with »). C’est ce que souligne Okakura Kakuzo, en 1898, dans son désormais célèbre « Livre du thé » (écrit en anglais), ouvrage destiné à faire connaître la philosophie orientale à l’occident à partir de la cérémonie du thé. Le souci de la philosophie orientale est d’être dans le monde, et non de conquérir une perspective d’ensemble sur le cosmos.

Selon Imamichi, depuis un siècle (notamment depuis la publication du « Livre du thé ») on voit des auteurs occidentaux passer de la posture du Das Im dem Gott Sein (être en Dieu) au Das Im der welt Sein (être dans le monde) et, inversement, des penseurs orientaux du Das im der welt Sein au Das Im dem Gott Sein.

Imamichi raconte ainsi qu’un de ses professeurs, Ito Kichinosuke (1885- 1961), avait fait une année d’étude en Allemagne en 1918, à la fin de la première guerre mondiale. Cherchant un tuteur allemand, il avait fini par choisir le jeune Heidegger qu’il payait pour que se dernier lui donne des cours de philosophie. L’année suivante, de retour au Japon, le jeune Kichinosuke, avait envoyé un exemplaire du Livre du thé, récemment traduit en Allemand, à Heidegger. Lorsque Kichinosuke lu Sein und Zeit lors de sa publication en 1927, il reconnût aussitôt le concept d’être-au-monde présent dans le Livre du Thé, qui prenait la forme du Dasein sous la plume de Heidegger. Ce que Okakura avait présenté comme être-au-monde dans le Livre du Thé, reprenant la pensée du philosophie Zhuangzi, devenait ainsi le Dasein Heideggerien.

Zhuangzi

D’après Imamichi, son maître Kichinosuke avait été très choqué qu’Heidegger n’ait pas mentionné sa source, à savoir le Livre du thé. Puis, lorsqu’en 1968 Imamichi fut invité en Allemagne par Gadamer, élève chéri de Heidegger, à faire une série de conférence à Heidelberg, il a peut-être prononcé le mot de « plagiat » à propos des thèses de Heidegger dans Sein und Zeit. Gadamer et Imamichi sont alors resté brouillé pendant 4 ans.

Sein und Zeit serait-il né de la lecture par Heidegger du Livre du Thé ? On pourrait également essayer de faire un parallèle entre le chashitsu, la petite pièce/maison dédiée à la cérémonie du thé, et la « hutte » Heideggerienne.

Heidegger serait donc plus oriental qu’on aurait cru.
Signaler sur Twitter

Related posts:

  1. Nouveaux enregistrements de Bernard Stiegler
  2. Dans la famille Stiegler, je demande la fille
  3. A vos RISC et périls

??? ??? ??? ??? ???
???

Nouvelle version d'IDN

2010-08-22 Stéphane Bortzmeyer - xmlfr

Une série de cinq RFC vient de sortir, représentant la nouvelle version de la norme IDN, permettant d'utiliser des noms de domaine en Unicode. Cette nouvelle version est officiellement nommée « IDNA 2008 » mais n'a pas respecté le calendrier original, qui était complètement irréaliste. Il vaut donc mieux l'appeler « IDNAbis ».

IDNAbis marque des changements importants dans les concepts sous-jacents (indépendance par rapport à la version d'Unicode, détermination de la liste des caractères autorisés selon un algorithme et non plus selon une table, suppression de l'étape de canonicalisation obligatoire, etc), mais les conséquences pratiques pour les utilisateurs seront faibles. L'écrasante majorité des noms de domaines légaux selon IDNA 1 le seront toujours avec IDNAbis, leur encodage en Punycode (RFC 3492) reste le même (donc, تونس sera toujours représenté sur le câble par xn--pgbs0dh et maçonnerie par xn--maonnerie-r3a), un certain nombre de chaînes de caractères seront désormais autorisées mais elles concernaient surtout des écritures peu répandues. D'autres, qui étaient autorisés (mais rarement utilisées) sont désormais interdites.

La liste des RFC qui forment IDNAbis comprend :

  • RFC 5890, « Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework », donne les définitions des termes essentiels comme les nouveaux U-label (forme Unicode d'un nom légal) et A-label (forme Punycode d'un nom légal),
  • RFC 5894, « Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale », explique et justifie (fort mal, selon moi), le projet IDNAbis et ses concepts ; ce RFC n'est pas une norme, il n'est là que pour information,
  • RFC 5891, « Internationalized Domain Names in Applications (IDNA): Protocol  », est le cœur de la nouvelle norme, il décrit le protocole utilisé,
  • RFC 5892, « The Unicode code points and IDNA  », spécifie l'algorithme utilisé pour déterminer si un caractère est légal en IDNAbis, illégale ou bien si sa légalité dépend du contexte,
  • RFC 5893, « Right-to-left scripts for IDNA », expose les règles pour les noms de domaine dont une partie s'écrit de droite à gauche (par exemple en hébreu),
  • RFC 3492, « Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA) », faisait partie de IDNA 1 mais est inchangé pour IDNAbis.
IDNAbis est bien plus complexe que IDNA 1. Ce dernier ne comportait que trois RFC, le RFC 3490, décrivant le protocole, le RFC 3491 qui normalisait nameprep, l'algorithme de canonicalisation (cette étape a été abandonnée dans IDNAbis), et le RFC 3492, sur Punycode, le seul RFC survivant de IDNA 1.

Quels sont les changements par rapport à IDNA 1 ? La description la plus complète des changements figure dans l'annexe A du RFC 5891. Pour la résumer :

  • Le protocole est désormais indépendant de la version d'Unicode : tout changement dans Unicode est automatiquement disponible.
  • Les caractères de ponctuation et les symboles sont désormais presque tous exclus.
  • Il n'y a plus d'étape de normalisation standard. Chaque application est désormais libre d'effectuer la correspondance entre ce qu'a tapé ou sélectionné l'utilisateur et l'IDN envoyé sur le réseau.
  • Le modèle de sélection des caractères autorisés est passé de « entièrement manuel, caractère par caractère » à « essentiellement algorithmique, fondé sur les propriétés Unicode - avec un peu d'exceptions manuellement ajoutées ». C'est ce qui permet l'indépendance par rapport aux versions d'Unicode.
Mais IDNAbis reste largement compatible avec l'ancien IDN (même principe de fonctionnement, même Punycode, même préfixe xn--, beaucoup de règles communes). En pratique, les utilisateurs, et même les registres de noms verront peu de différences.

Quelles étaient les motivations pour créer un IDNAbis seulement quelques années après le premier ? Il y en avait plusieurs, pas toutes avouables. De fortes pressions de l'ICANN s'étaient exercées, notamment pour avoir un prétexte pour retarder l'introduction des IDN dans la racine (devenue effective en mai 2010). Il y avait aussi toute une campagne de FUD concernant un soi-disant rôle des IDN dans le hameçonnage. Très présente au début du projet, cette motivation, souvent répétée en des termes sensationnalistes (comme la répétition du terme ridicule de « caractères dangereux ») a été sérieusement édulcorée au fur et à mesure du travail du groupe idnabis de l'IETF (voir par exemple le compte-rendu de la réunion IETF de Philadelphie en mars 2008). Aujourd'hui, il n'en reste plus gère de trace dans les RFC.

D'autres motivations étaient plus consensuelles, comme le souhait d'avoir un IDNA indépendant de la version d'Unicode. Par exemple, IDNA 1 était lié à Unicode 3.2 et les écritures enregistrées par le consortium Unicode après la sortie de la 3.2 (comme le tifinagh) étaient donc interdites d'IDN. Ce point est désormais réglé.

Tout cela ne signifie pas que le résultat final fasse l'unanimité et, pour un bon résumé des questions qu'IDNAbis laisse ouvertes, on peut consulter la FAQ du consortium Unicode. Pour le point de vue des promoteurs d'IDNAbis, voir le RFC 5894.

Il ne semble pas exister encore d'implémentations de IDNAbis mais ce n'est pas forcément dramatique : les différences pratiques entre les deux versions sont suffisamment faibles pour que, pour la plupart des caractères, utiliser une des nombreuses bibliothèques mettant en œuvre l'ancienne version soit suffisant.

RFC 5894: Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale

2010-08-22 Stéphane Bortzmeyer - xmlfr

Dans l'ensemble des RFC sur IDNA bis, celui-ci joue le rôle du document non officiel mais qui éclaire, explique et justifie les autres. Il n'est pas nécessaire de le lire pour mettre en œuvre les IDN mais il peut aider à comprendre la démarche des auteurs de IDNAbis. Mon compte-rendu va être un peu plus polémique que d'habitude car 1) ce RFC n'explique pas grand'chose, en fait et 2) il contient beaucoup de rhétorique et de FUD.

Officiellement, IDNAbis est nommé IDNA2008 (section 1), car c'était la date (totalement irréaliste, et qui avait été pointée comme telle par de nombreux participants) à laquelle le projet devait se terminer. La section 1 rappelle aussi quelques points sur lesquels IDNA 1 posait des problèmes, le changement de la gestion de la casse (IDNA 1 était insensible à la casse, comme le DNS) alors que IDNAbis résoud le problème autrement, en interdisant les majuscules) ou comme la dépendance de IDNA 1 à une version spécifique d'Unicode (ce qui interdisait les écritures qui sont entrées dans Unicode plus tard, comme le Tifinagh).

Les objectifs d'IDNAbis sont détaillés dans la section 1.4 :

  • Indépendance vis-à-vis d'une version particulière d'Unicode (certainement l'objectif qui était le plus consensuel),
  • Régler quelques limites d'IDNA 1 qui interdisaient, en pratique, certaines langues comme le Yiddish, qui avaient besoin de certains caractères, qui étaient exclus,
  • Réduire (en fait, elle a même été supprimée) l'étape de canonicalisation (qui était faite avec nameprep, du RFC 3491),
  • Changer les règles du bidi (cf. le nouveau RFC 5893).

Pour le reste, le RFC est plutôt une collection assez décousue de divers points qui furent discutés lors du projet IDNAbis, points sur lesquels John Klensin tenait à faire connaître son opinion personnelle. Cela tient du blog plutôt que du RFC. Voyons quelques-uns de ces points.

Le terme même de « nom de domaine » peut entraîner des confusions car un nom dans le DNS n'est pas forcément une phrase ou même un mot dans une langue naturelle (section 1.3.1). Plusieurs règles du DNS interdisent certaines phrases ou certains mots (par exemple, la société C&A ne peut pas avoir de domaine à son nom, l'esperluette n'étant pas autorisée, avec ou sans IDN ; même chose avec le nom local de l'archipel d'Hawai'i, l'apostrophe n'étant pas acceptée). L'argument de Klensin est que, finalement, l'ancienne restriction à ASCII n'est pas si terrible puisque, de toute façon, on ne peut pas « écrire un roman dans le DNS ». Dommage qu'il se sente obligé de ridiculer ceux qui ont une autre approche en les accusant de vouloir écrire du Klingon.

La section 1.5 concerne les limites d'IDNA, les points qu'il ne résoudra pas. Par exemple, le DNS ne permet pas de recherche floue, il faut indiquer le nom de domaine exact et cela ne change pas. L'augmentation du nombre de caractères admissibles, grâce à IDNA, peut rendre ce problème plus palpable (par exemple si on lit un peu trop vite un nom de domaine qu'on a vu sur le côté d'un bus).

Comme IDNA 1, IDNAbis ne nécessite pas de changement de l'infrastructure, comme l'aurait nécessité un hypothétique DNS Unicode. Une des conséquences est qu'il existe une forme ASCII de chaque IDN, le A-label et que ce nom (par exemple xn--pgbs0dh pour تونس) peut toujours être utilisé comme solution de secours.

La section 1.6 raconte qu'un des buts de IDNAbis était d'améliorer la « comprehensibilité » d'IDN. Qu'une personne normale, n'ayant pas forcément lu les RFC, comprenne mieux le fonctionnement d'IDN. D'où la suppression de l'étape de canonicalisation, jugée trop déroutante. Avec IDNAbis, les noms de domaine en Unicode (U-labels) seront tous déjà sous forme canonique (les autres étant interdits), ce qui devrait augmenter ladite compréhensibilité.

En fait, la canonicalisation (par exemple de CAFÉ vers café) sera faite dans l'interface utilisateur et plus dans le protocole et je ne crois pas que cela rende les choses plus prévisibles, d'autant plus que deux interfaces utilisateur différentes pourront canonicaliser différemment.

Traditionnellement, le DNS avait des règles différentes pour la résolution (qui utilisait des règles standard, comme l'insensibilité à la casse, mais aussi l'acceptation de tous les caractères, au delà de ASCII, cf. RFC 2181, section 11) et l'enregistrement (où les règles sont décidées localement par le registre et sont typiquement bien plus sévères, par exemple limitation à l'ASCII, interdiction des gros mots, etc). IDNAbis formalise cette distinction, pour refléter cette pratique (section 2 et RFC 5891).

Une des caractéristiques nouvelles et importantes de IDNAbis est que les caractères Unicode sont désormais interdits par défaut, alors qu'avec IDNA 1, ils étaient autorisés, sauf quand c'était indiqué explicitement. La section 3 revient sur ce choix. L'algorithme exact figure dans le RFC 5892. Une autre différence entre IDNA 1 et IDNAbis est que la validité d'un caractère dépend désormais du contexte. En effet, certains caractères notamment les « gluons », les caractères qui contrôlent le fait que deux caractères soient séparés ou pas, peuvent être jugés raisonnables ou pas, selon les caractères autour d'eux. C'est le cas par exemple de U+200D - le gluon de largeur nulle. En IDNA 1, tous ces caractères de la catégorie Unicode Join_Controls étaient interdits. Ils sont désormais autorisés conditionnellement (section 3.1.2)

Par défaut, en IDNAbis, les caractères tombent dans la catégorie IDN DISALLOWED (section 3.1.3). On y trouve des caractères qui ne sont typiquement pas considérés comme lettre ou chiffres et donc ne correspondent pas aux traditionnels critères pour les identificateurs. C'est le cas du ⁄ (U+2044) ou du ♥ (U+2665).

Les règles du protocole IDNAbis ne sont pas la totalité des règles applicables. En effet, le registre peut ajouter des règles supplémentaires. Par exemple, la plupart des registres interdisent l'enregistrement de noms comportant des caractères parfaitement valides dans le DNS comme le _ (U+005F). La section 3.2 discute des politiques des registres. Il serait plus juste de dire que cette section aboie des ordres, sur un ton paternaliste. On y trouve beaucoup d'opinions personnelles non étayées, déguisées en « bonnes pratiques » par exemple l'idée qu'il ne faut pas accepter les noms composés de plusieurs écritures (alors la plupart des utilisateurs d'alphabets non-latins acceptent en plus les caractères latins). Certaines recommandations sont intéressantes (comme celle du système des variantes, cf. RFC 3743, RFC 4290 et RFC 4713) mais d'autres relèvent plutôt d'une volonté de bras de fer, qui avait souvent été exprimée ouvertement dans les réunions du groupe de travail IDNAbis (par exemple, Klensin disant que « les registres pensaient uniquement à l'argent et qu'il fallait les contraindre à respecter l'intérêt général », intérêt qu'il exprimait, lui).

De même, cette section justifie la règle (section 4.1 du RFC 5891) comme quoi le demandeur doit envoyer à la fois le U-label (forme Unicode) et le A-label (forme Punycode) au registre, en prétendant que c'est pour vérifier la cohérence des deux. Pourtant, la forme Punycode n'est qu'une astuce technique pour déployer les IDN, ce que l'utilisateur veut, c'est la forme Unicode et il est tout à fait anormal de prétendre que le A-label aie un quelconque intérêt pour l'utilisateur !

Ces règles et bien d'autres ont souvent été justifiées au début du processus IDNAbis par de vagues arguments de sécurité (section 2.2.6 du RFC 4690). Cette baudruche s'est dégonflée assez vite et, aujourd'hui, la section 3.3 note à juste titre qu'il n'y a pas de solution technique à des questions comme celle de la confusabilité de deux caractères (par exemple le 0 - U+0030 - et le O - U+004F).

Traditionnellement, l'IETF travaille uniquement sur ce qui se passe sur le câble, loin des utilisateurs. Ici, toutefois, on ne peut pas ignorer les problèmes des applications, IDNA est faite pour elles (le A final du sigle). La section 4 se penche donc sur les logiciels que verra l'utilisateur. D'abord, contrairement au réseau, où les noms de domaines sont toujours transmis dans le même ordre (celui de la saisie au clavier), l'affichage des IDN peut être de droite à gauche ou de gauche à droite (section 4.1). Cela peut être d'autant plus complexe à gérer pour, par exemple, un navigateur Web, que le nom complet peut avoir des composants de gauche à droite et d'autres de droite à gauche (par exemple www.تونس.com). Ce cas est encore pire pour un IRI (RFC 3987) puisque celui-ci a forcément au moins un composant ASCII, le plan (par exemple http).

Saisir et afficher des IDN nécessite donc des choix délicats et des codes complexes (alors qu'un serveur de noms, par exemple, ou même une base de données d'un registre qui stocke des noms de domaine, n'ont rien de particulier à faire). La section 4.2 donne quelques conseils. Elle rappelle par exemple que les noms de domaine peuvent apparaitre dans un contexte où le fait qu'il s'agisse d'un nom de domaine est évident (par exemple lors d'un dialogue SMTP) mais aussi dans du texte libre, où le logiciel ne comprend pas forcément ce qu'il transmet. Les protocoles devraient donc bien préciser quand un nom de domaine est une partie du protocole (commande MAIL FROM de SMTP) et quand il ne l'est pas (le corps d'un message envoyé en SMTP).

Un problème en soi est celui de la canonicalisation (mapping, mise en correspondance) des caractères saisis par l'utilisateur avec ce que IDNAbis accepte. Dans IDNA 1, il existait une canonicalisation officielle, nameprep, normalisée dans le RFC 3491. Elle a été supprimée et, désormais, la canonicalisation est laissée à l'initiative de l'application. La seule obligation est de produire un nom conforme au protocole IDNAbis. Comme celui-ci, par exemple, exclus les majuscules (contrairement à la tradition du DNS, où majuscules et minuscules sont autorisées, tout en étant équivalentes), l'application doit mettre le nom en minuscules (une tâche triviale en ASCII mais bien plus complexe en Unicode, elle peut même dépendre de la langue).

A priori, cette canonicalisation locale, chacun faisant comme il veut, risque de dérouter et d'entrainer bien des problèmes : la même chaîne de caractères en Unicode, saisi dans deux navigateurs différents, pourra donner des noms de domaines (U-label) différents. L'idée est que chaque application prendra une décision conforme au contexte local (l'application connait l'utilisateur, connait sa langue) et que cela sera finalement moins surprenant. En outre, cela permet d'avoir, contrairement à IDNA 1, un aller-retour sans perte dans les conversions entre U-label et A-label.

D'autres attentes linguistiques peuvent poser un problème au développeur de logiciel IDNAbis. La section 4.3 fournit quelques exemples pittoresques :

  • Norvégiens et suédois peuvent considérer que æ et ä sont équivalents, ce qui dérouterait un utilisateur anglophone. Même chose avec oe et ö pour un allemand.
  • Un chinois regarde en général les formes simplifiées et traditionnelles d'un caractère comme équivalentes, or ces caractères sont aussi utilisés pour le japonais où cette opération n'aurait pas de sens.
  • Tout simplement, un anglophone pourrait s'étonner que theatre et theater, ou bien color et colour soient deux noms de domaine distincts... La frontière entre l'équivalence que doit faire le protocole et celle qui est laissée à la responsabilité de l'utilisateur n'est pas évidente à placer.

Autre cas de canonicalisation délicat : la distinction entre majuscules et minuscules. Pour les utilisateurs de l'alphabet latin, les deux casses sont souvent considérées comme sémantiquement équivalentes et c'est ce point de vue que reflète le DNS lorsque le RFC 1034 section 3.1 dit « domain name comparisons for all present domain functions are done in a case-insensitive manner ». Avec Unicode, un tel principe n'est plus tenable, comme le rappelle la section 4.4. Ni IDNA 1, ni IDNAbis n'obligent les serveurs à être insensibles à la casse et pour de bonnes raisons. Par exemple, certains caractères n'ont pas de majuscule propre comme le sigma final ς. Une conversion en majuscules en fait un Σ dont la forme minuscule est le sigma ordinaire σ. IDNA 1 résolvait la question en imposant aux applications une canonicalisation en minuscules via nameprep (RFC 3491), IDNAbis choisit d'ignorer le problème en n'acceptant que les minuscules et en laissant l'application canonicaliser à sa guise, en suivant les règles locales. À noter que ce changement peut entraîner quelques incompatibilités entre les deux versions d'IDN. Ainsi, en IDNA 1, strasse.de et straße.de sont le même nom de domaine (puisque nameprep canonicalise le second dans le premier) alors qu'ils sont différents en IDNAbis.

Le cas des écritures qui s'affichent de droite à gauche fait l'objet de la section 4.5. Pour limiter les risques d'ambiguité, IDNA 1 et IDNAbis imposent que, dans chaque composant d'un nom de domaine, il n'y aie que des caractères de la même directionnalité (ou des caractères neutres). C'est une des rares règles d'IDN qui examinent le composant entier, pas juste des caractères individuels.

La règle exacte dans IDNA 1 était trop stricte pour certaines langues qui ont besoin de marques vocaliques comme le yiddish écrit en hébreu ou le divehi écrit en thaana. Ces marques n'ont pas de directionalité et étaient interdites à la fin d'un composant. Ce n'est plus le cas et IDNAbis permet donc des noms qui étaient interdits en IDNA 1 (cf. RFC 5893).

En revanche, l'idée d'avoir des règles entre composants (étendre la règle ci-dessus à tout le FQDN) a été abandonnée. Elle aurait imposé une partie de bras de fer avec les registres de noms. (Le RFC ne mentionne pas cette très mauvaise idée, qui était pourtant promue par son auteur...) Il est donc toujours possible d'avoir un nom de domaine dont certains composants sont de gauche à droite et d'autres de droite à gauche.

La section 5 se réclame du fameux principe de robustesse (« soyez strict dans ce que vous envoyez et tolérant dans ce que vous recevez ») pour culpabiliser les registres de noms de domaine en leur faisant porter la responsabilité de contrôles plus étendus. En pratique, l'application qui accède à un IDN ne peut pas compter dessus, à la fois parce que tous les registres n'ont pas forcément les obsessions de John Klensin, mais aussi parce que des techniques comme les jokers (RFC 1034, section 4.3.3) font qu'un nom peut être résolu bien qu'il n'aie jamais été enregistré.

Encore plus délicate, la question des interfaces utilisateur (section 6). Il n'est évidemment pas possible de donner des règles applicables à tous les cas, vue la grande variété de ces interfaces. La section 6 se concentre surtout sur la nouveauté de IDNAbis ayant le plus d'implication pour l'interface : le fait que la canonicalisation standard (nameprep) du RFC 3491 aie disparu. Cette canonicalisation standard avait des avantages, notamment une meilleure interopérabilité, due au caractère plus prédictible des noms. Mais d'un autre côté, elle menait à des canonicalisations qui ne tenaient pas compte de la locale et pouvaient donc être surprenantes pour l'utilisateur humain. La nouvelle règle (chaque application canonicalise comme elle veut) permet aux applications (qui connaissent l'utilisateur, la locale, la langue...) de produire, à partir de ce qu'a tapé ou sélectionné l'utilisateur, des noms qui seront moins déroutants.

Pour ceux qui avaient déjà déployé les IDN avec l'ancienne norme IDNA 1, la section 7 fournit une description détaillée des mécanismes de migration possibles, et des pièges qui peuvent les guetter. Ainsi, comme le précise la section 7.2, des chaînes de caractères identiques en IDNA1 ne le sont plus en IDNAbis (strasse et straße ou bien les noms utilisant les gluons Unicode comme le U+200D) et donc deux noms de domaines qui étaient équivalents en IDNA 1 ne le sont plus (et ont donc des A-labels différents). Le choix n'a pas été évident. La section 7.2.3 résume les possibilités qui s'offraient au groupe de travail, dont certaines étaient très lourdes (changer le préfixe de l'encodage, actuellement xn--, par exemple, pour marquer clairement l'incompatibilité). Finalement, après de très longues discussions, le choix a été fait d'accepter cette légère incompatibilité. Une fois cette décision prise, quelle stratégie adopter pour accueillir ces « nouveaux » caractères ? La section 7.2.4 en décrit plusieurs, du refus des nouveaux, qui empêchera les anciens noms de fonctionner mais évitera toute confusion, à la période de transition (sunrise) pendant laquelle les titulaires des anciens noms auraient priorité pour enregistrer le nom incluant les nouveaux caractères. Par exemple, un registre germanophone pourrait donner la priorité au titulaire de strasse.de pour qu'il enregistre straße.de avant tout le monde. Il y a aussi l'éventualité d'un système de « variantes » où les noms « anciens » et « nouveaux » seraient liés en permanence et enregistrables uniquement par le même titulaire. Et la toute simple possibilité de ne pas s'en préoccuper, en considérant que le problème est mineur et disparaitra peu à peu. À l'heure actuelle (juin 2010), le registre du .DE, DENIC, ou celui de .AT, prévoient de ne pas utiliser de variantes et de ne pas accepter immédiatement les nouveaux caractères. Lorsque ce sera fait, je suppose qu'il y aura une période de transition avec priorité aux anciens titulaires.

La question du changement de préfixe fait même l'objet d'une section spécifique, 7.4. En effet, la question avait été sérieusement envisagée. Ce changement aurait créé deux familles d'IDN complètement séparées, celle dont les A-labels commencent par xn-- et la nouvelle. Le groupe de travail a considéré que le changement de préfixe aurait été nécessaire si les changements avaient créé un risque de confusion. La section 7.4.1 énumère précisèment les cas où cela se serait produit, par exemple si la conversion d'un A-label en U-label avait renvoyé deux chaînes Unicode différentes ; le cas inverse était jugé moins grave, et il s'est effectivement produit dans de rares cas, comme dans l'exemple du ß ci-dessus. Autre exemple, celui où l'encodage du A-label aurait été drastiquement modifié, par exemple pour inclure de l'information sur la langue utilisée.

En revanche, le groupe de travail avait considéré que des changements comme l'interdiction de caractères autrefois autorisés (section 7.4.2) ne justifiait pas un changement de préfixe. Cette interdiction rend des noms enregistrés inutilisables dans le DNS mais l'idée est qu'un refus clair est moins grave qu'un changement de sémantique et ne justifie donc pas de changement de préfixe. Un tel changement aurait eu des coûts considérables, détaillés en section 7.4.3. En effet, si un registre peut toujours changer tous les A-labels facilement (UPDATE Domains SET alabel TO idnabis_alabel(ulabel)), il n'aurait pas pu synchroniser ce changement avec celui des applications qui ont l'encodage en Punycode.

Et l'algorithme nameprep, normalisé dans le RFC 3491, que devient-il ? Il est complètement abandonné en IDNAbis mais nameprep n'est qu'un profil particulier de stringprep, normalisé dans le RFC 3454, et celui-ci est utilisé par bien d'autres normes IETF (comme le RFC 4282) et il continue donc sa vie (section 7.5), sans que IDNAbis ne l'affecte.

Un des grands changements théoriques entre IDNA 1 et IDNAbis est l'interdiction des symboles comme U+2665 (♥), U+2605 (★) ou U+2798 (➘). C'est un changement surtout théorique car, en pratique, ils étaient souvent interdits par les règles d'enregistrement et on ne les trouve pratiquement pas en pratique. (Voir, par exemple, le IESG Statement on IDN.) Cette méfiance vis-à-vis des symboles vient entre autre du fait qu'il n'existe pas de nommage standard pour les désigner et que les variations de forme entre polices sont encore plus marquées que pour les lettres. Il n'est donc pas facile d'épeler un nom de domaine comme I♥NY.us sans ambiguité... D'autant plus que certains symboles ont beaucoup de caractères Unicode correspondants (comme le carré).

La même section 7 couvre le cas de la migration interne à IDNAbis lorsqu'une nouvelle version d'Unicode est publiée (section 7.7). En effet, IDNAbis n'est plus lié à une version spécifique d'Unicode et l'enregistrement de nouveaux caractères, ou bien certains changements dans les caractères déjà enregistrés, peuvent faire apparaitre « automatiquement » de nouveaux caractères légaux dans IDN.

Parmi les innombrables questions qu'avaient soulevé l'introduction des IDN en 2003, le comportement des logiciels serveurs de noms comme BIND (section 8). Le souci de ne pas leur faire faire des canonicalisations Unicode est la principale raison pour laquelle nous avons IDNA (IDN in Applications) et pas un DNS Unicode). Si le DNS a toujours prévu une canonicalisation minimale (les noms de domaine sont insensibles à la casse), celle-ci n'a jamais été normalisée pour Unicode (cf. RFC 4343). Ce point ne change pas en IDNAbis.

Donc, une des rares conséquences réelles pour les serveurs de noms est la longueur plus importante de beaucoup d'IDN. Ce point est mentionné en section 8.2, mais sans préciser que DNSSEC, bien plus gourmand, a été déployé sans trop de problèmes. Depuis la rédaction du RFC, l'introduction de quatre TLD IDN dans la racine du DNS a bien montré qu'il n'y avait aucun problème technique, malgré le FUD qui a été répandu à ce sujet.

Vu le sujet du RFC, la section facultative sur l'internationalisation se devait d'être présente (section 9). Elle rappelle que les noms dans le DNS, quoique mnémoniques, ne sont pas écrits selon les règles des langues humaines (par exemple, l'espace n'y est pas permis) et qu'il ne faut donc pas demander aux IDN de permettre l'écriture de n'importe quelle phrase, en respectant toutes les règles de la langue. Ceci dit, la même section oublie par contre de dire que, si les noms de domaine ne sont pas du texte en langue naturelle, ils ne sont pas non plus de purs identificateurs (c'est pour cela qu'ils ont une utilisation mnémonique) et c'est bien cela qui justifie IDN (personne ne demande l'internationalisation des adresses IP qui sont, elles, de purs identificateurs).

Une autre raison pour laquelle les règles des langues humaines ne peuvent pas être intégralement respectées dans le DNS est que le DNS est mondial et qu'un nom de domaine doit pouvoir être utilisé partout. D'autre part, le RFC rappelle également qu'un nom de domaine n'est pas écrit dans une langue particulière. Quelle est la langue de coca-cola.com ? (Certainement pas de l'anglais.)

Le développement de IDNAbis a nécessité la création de certains nouveaux registres à l'IANA. La section 10 revient sur ces registres. Elle rappelle que la liste des caractères autorisés n'est pas normative, seul l'est l'algorithme du RFC 5892. En revanche, la liste des règles contextuelles est normative. Plus délicate, la liste des politiques d'enregistrement, dont la section 10.3 rappelle qu'elle n'a aucune valeur, c'est juste un dépôt volontaire de leurs politiques par certains registres. Elle n'est spécifiée dans aucun RFC et ne découle que de considérations politiciennes à l'ICANN.

RFC 5893: Right-to-left scripts for Internationalized Domain Names for Applications (IDNA)

2010-08-22 Stéphane Bortzmeyer - xmlfr

Le fait que certains systèmes d'écriture soient de gauche à droite (comme celui utilisé pour ce texte) et d'autres de droite à gauche ne pose pas de problèmes lorsque le texte est entièrement dans un sens ou dans l'autre. Mais, si on les mélange, on arrive parfois à des résultats surprenants. Dans le contexte des noms de domaine, cela peut mener à rendre leur utilisation difficile. C'est pour cela que l'ancienne norme IDNA 1 limitait ce mélange (RFC 3491, section 6, qui référence RFC 3454, section 6). Les limitations étaient un peu trop strictes et sont légèrement libéralisées par ce nouveau RFC 5893, qui fait partie de la nouvelle norme IDNAbis. Le changement est faible en pratique, la plupart des noms autorisés restent autorisés. En dépit d'une fréquente utilisation de weasel words par ce RFC (comme « sûr » en section 1.3), il n'y a pas de conséquences, qu'elles soient positives ou négatives, pour la sécurité (malgré ce que raconte la section 9 du RFC).

On peut résumer l'ancienne norme (cf. section 1.2 de notre nouveau RFC) en disant que tout composant d'un nom de domaine ne devait pas inclure des caractères de directionnalité différente (par exemple de l'alphabet grec et de l'alphabet arabe) et qu'il devait commencer et se terminer par des caractères ayant une directionnalité déterminée (les chiffres arabes, par exemple, n'ont pas de directionnalité déterminée). Notons qu'il y a deux poids et deux mesures : les noms de domaine traditionnels en ASCII n'avaient pas cette limite et, par exemple, 7-septembre ou 3com sont des composants autorisés.

Il est prudent de relire la section 1.4 sur la terminologie, car tout le monde n'est pas expert BIDI. Soit on apprend par cœur le difficile UAX#9, la norme officielle du BIDI, soit on révise rapidement dans ce RFC les points importants :

  • Les caractères Unicode ont tous une propriété BIDI : directionnalité de gauche à droite (les caractères de l'alphabet grec, par exemple), directionnalité de droite à gauche (les caractères de l'alphabet arabe), chiffres arabes (qu'Unicode appelle EN pour European Number, comme 0, 1 ou 2, ils sont sans directionnalité puisqu'ils sont utilisés dans des alphabets des deux modèles), chiffres indo-arabes (qu'Unicode appelle AN pour Arabic Number, comme ١ (1) ou ʛ (7) et qui ont une directionnalité dite « faible »), etc.
  • Les chaînes de caractères ont deux ordres : l'ordre du réseau, qui est celui dans lequel les caractères de la chaîne ont été tapés, ou bien dans lequel ils sont transmis sur le réseau, et l'ordre d'affichage, qui est celui dans lequel ils sont présentés à des lecteurs humains. Lorsque le RFC parle d'ordre ou bien utilise des termes comme « premier » ou « dernier », c'est en général en référence à l'ordre du réseau,

Armé de ces définitions, on peut arriver au cœur du RFC, la section 2. Elle formalise les règles que doivent suivre des composants de noms de domaine internationalisés :

  • Le composant d'un IDN doit commencer par un caractère de directionnalité forte (donc pas par un chiffre, cf. section 4.3 et 7.1) ; ce caractère détermine si le composant est gauche-à-droite ou droite-à-gauche,
  • Dans un composant droite-à-gauche, seuls sont permis les caractères de directionnalité droite-à-gauche ou bien sans directionnalité (comme les chiffres). Ainsi, مدقق-XML-المدمج (tiré de la documentation en arabe de SPIP) serait interdit, à cause du sigle en caractères latins (même si la présence de tels sigles est très courante dans les textes techniques en arabe),
  • Le caractère final peut être sans directionnalité (on peut finir par un chiffre),
  • Le mélange des chiffres arabes et indo-arabes dans un même label est interdit (notons que cette règle était déjà dans le RFC 5564) : les chiffres indo-arabes sont interdits dans un composant gauche-à-droite,
  • Et je passe quelques règles plus subtiles.

Ce RFC 5893 propose également des justifications pour le choix de ces règles, sous forme de critères que devraient respecter tous les noms de domaine en Unicode (section 3) :

  • Unicité du composant : deux composants distincts, affichés dans le même paragraphe, ne doivent pas avoir le même affichage. Sans les règles plus haut, les composants 123 et 321, par exemple, pourraient s'afficher de manière identique, si le second est précédé de caractères droite-à-gauche. L'interdiction des chiffres (caractères sans directionnalité) au début d'un composant découle de ce critère.
  • Regroupement des caractères : les caractères d'un même composant doivent rester groupés, ce qui ne serait pas le cas si on permettait le mélange de caractères de directionnalité différentes.
Dans le cours de la discussion sur IDNAbis, d'autres critères avaient été suggérés mais n'ont finalement pas été retenus :
  • Constance de l'apparence : un composant doit être affiché de manière identique dans un contexte de gauche-à-droite et dans un contexte de droite-à-gauche : c'est un résultat trop difficile à obtenir dans le contexte de l'algorithme BIDI,
  • L'ordre des composants d'un nom doit rester identique quel que soit le contexte d'affichage ; ce critère aurait mené à des tests inter-composants, peu réalistes (puisque ce sont des registres différents qui sont impliqués pour chaque niveau du nom, avec des règles différentes),
  • Unicité du nom de domaine : deux noms différents ne devraient pas être affichés de manière identique ; objectif impossible à atteindre : ABC.abc sera affiché abc.CBA dans un contexte droite-à-gauche, et le nom différent abc.ABC sera affiché de manière identique dans un contexte gauche-à-droite.

Arrivé là, on a toutes les règles (la fin de la section 3 les reformalise de manière plus rigoureuse). La section 4 donne simplement des exemples de cas où les règles des RFC 3454 et RFC 3491 donnaient des résultats peu satisfaisants. Ainsi, la langue divehi, qui s'écrit avec un alphabet proche de l'arabe, le Thaana, a tous ses mots qui se terminent par un caractère Unicode combinant (un accent, disons en simplifiant). « Ordinateur » se dit en dhivehi « ކޮންޕީޓަރު » et le dernier caractère, U+07AA est l'ubu fili, un caractère (pas une lettre) sans directionnalité, qui aurait été rejeté par IDNA 1 (section 4.1).

Un problème analogue se pose en yiddish. Ainsi, l'organisation qui normalise les règles d'écriture du yiddish s'écrit « יִואָ » et le dernier caractère, U+05B8, n'est pas une lettre (section 4.2).

Il n'existe pas de solution technique aux problèmes d'affichage BIDI, l'ensemble des situations possibles étant trop vaste. Il ne faut donc pas croire qu'appliquer les règles de ce RFC suffira à être tranquille. La section 5 donne quelques exemples, par exemple un nom de plusieurs composants, où un composant un IDN (satisfaisant les règles de ce RFC), précède des noms ASCII commençant par un chiffre : المغربية.3com.com va ainsi être affiché d'une manière déroutante (cela devrait être ‏المغربية‎.3com.com). Ce nom n'est pas interdit (alors que c'était l'ambition initiale du groupe de travail idnabis) car il existe déjà beaucoup de noms ASCII commençant par un chiffre, et car la combinaison de composants pour former un nom est parfois réalisée automatiquement (par exemple via la directive search dans /etc/resolv.conf), ne laissant pas de possibilité de contrôle, et enfin parce que les jokers du DNS (encore eux) peuvent faire qu'un nom peut être résolu sans avoir été enregistré (et donc vérifié)...

La section 6 liste d'ailleurs quelques autres problèmes comme le fait que le mélange de chiffres arabes et de chiffres indo-arabes est interdit, mais que le mélange de chiffres bengalis et chiffres gujaratis n'est pas mentionné... Le cas doit être traité par le registre (par exemple celui de .IN).

Les règles de ce RFC étant nouvelles, il y a potentiellement des problèmes avec les anciens noms. La section 7.1 analyse les questions de compatibilité. La 7.2 se préoccupe au contraire du futur en constatant que les propriétés BIDI ne font pas partie des propriétés qu'Unicode s'engage à ne pas modifier et que donc, dans le futur, un changement de propriétés BIDI pourrait rendre invalides des composants valides et réciproquement.

Les IDN BIDI posent-ils des problèmes de sécurité particuliers ? C'est ce que laisse entendre Patrik Fältström dans son article « Mixing different scripts is hard », qui est franchement tendancieux. Si les exemples donnés d'affichage BIDI suprenants sont amusants intellectuellement, il n'est jamais démontré que cela puisse avoir des conséquences de sécurité. La section 9 de ce RFC 5893, consacrée à ce sujet, ne fournit pas d'éléments nouveaux, à part de vagues accusations.

RFC 5892: The Unicode code points and IDNA

2010-08-22 Stéphane Bortzmeyer - xmlfr

Dans l'ensemble des RFC sur la version 2 des IDN (appelée IDNAbis ou IDNA2008), ce document normalise les propriétés Unicode utilisées pour calculer la catégorie à laquelle appartient un caractère donné, catégorie qui déterminera s'il est autorisé dans un nom de domaine en Unicode.

Le concept de catégorie est défini dans la section 1 (avertissement : le vocabulaire de IDNAbis est très flou et on trouve « catégorie » ou « propriété » pour ce concept, des termes d'autant plus malheureux qu'ils existent aussi dans Unicode avec un sens différent ; j'ai donc plutôt utilisé « statut »). Ce RFC 5892 contient les tables complètes de tous les caractères Unicode et de leur catégorie. Mais ces tables ne sont présentes qu'à titre d'information : IDNAbis est en effet indépendant de la version d'Unicode utilisée et la vraie norme est l'algorithme utilisé pour créer les tables, algorithme qu'il faut faire tourner pour chaque version d'Unicode, pour trouver la table effective.

IDNAbis repose sur un principe d'exclusion par défaut. Tout caractère est interdit, sauf s'il est autorisé (cf. RFC 4690). Cette autorisation dépend de ses propriétés Unicode, propriétés qui font partie de la norme Unicode. Par exemple, le U+00E9 (petit e accent aigu) est dans la catégorie Unicode Ll (lettres minuscules, presque toutes autorisées).

Le fait d'être dans la bonne catégorie des tables ne suffit pas : dans certains cas, IDNAbis met des contraintes aux combinaisons de caractères.

Quelles sont les catégories (ou statuts) possibles ?

  • PROTOCOL VALID dit PVALID, les caractères acceptés.
  • CONTEXTUAL RULE REQUIRED, pour des caractères acceptés sous condition, par exemple sur leur position dans le composant du nom de domaine. Il est abrégé en CONTEXTJ (caractères qui contrôlent l'attachement de deux mots comme le U+200D, Zero-width joiner) ou CONTEXTO (les autres).
  • DISALLOWED, les caractères interdits.
  • UNASSIGNED, les points de code pas encore affectés dans la norme Unicode, interdits aujourd'hui mais qui, selon leurs propriétés, pourraient devenir autorisés dans le futur.
Le classement d'un caractère dans une de ces catégories dépend de l'algorithme décrit plus loin. Une liste d'exceptions maintenue manuellement (section 2.6) permet d'ajuster le résultat, une autre liste manuelle permet de maintenir la stabilité (d'empêcher un caractère de changer de catégorie).

La section 2 décrit les catégories utilisées pour classer les caractères (à ne pas confondre avec les catégories IDNA, comme PVALID, décrites plus haut) et les propriétés utilisées (elles ne sont pas mutuellement exclusives) :

  • Lettres & Chiffres (section 2.1) : le caractère a une catégorie Unicode dans l'ensemble {Ll, Lu, Lo, Nd, Lm, Mn, Mc}. Par exemple Ll désigne les lettres minuscules, ainsi le êta grec, ͱ (U+0371) est dans cette catégorie (sa définition dans la base Unicode étant 0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370).
  • Instables (section 2.2) : le caractère ne survit pas à une normalisation NFKC avec un changement de casse. La plupart de ces caractères ne seront pas autorisés.
  • Propriétés qu'on peut ignorer (section 2.3) : ces caractères ont des propriétés qui font qu'on peut les ignorer pour les noms de domaines (par exemple les caractères d'espacement, propriété Unicode White_Space).
  • Blocs qu'on peut ignorer (section 2.4) : des blocs entiers des tables Unicode peuvent être ignorés comme le bloc des symboles utilisés en musique qui va de U+1D100 (𝄀) à U+1D1FF.
  • LDH (Letters-Digits-Hyphens), les caractères ASCII traditionnellement utilisés dans les noms de machine (section 2.5).
  • Des exceptions, définies manuellement, pour le cas où les propriétés Unicode ne donnent pas le bon résultat (section 2.6). Ainsi, après de très longues discussions dans le groupe de travail, le ß allemand, le ς grec et le ་ tibétain (ce dernier, le tsheg, a été l'objet du débat le plus aveugle puisqu'aucun expert de cette écriture n'était présent) ont été manuellement autorisés (alors qu'ils auraient été interdits en appliquant l'algorithme). Par contre, les chiffres indo-arabes, qui auraient été autorisés inconditionnellement, sont maintenant autorisés uniquement dans certains contextes (voir le RFC 5564 pour une discussion sur ces chiffres).
  • Compatibilité (section 2.7) : cette catégorie est actuellement vide. Mais, dans les futures versions d'Unicode, des changements des propriétés pourraient faire passer des caractères de PVALID à DISALLOWED ou le contraire. Ils seront alors mis dans cette catégorie pour conserver leur ancien statut.
  • Contrôle du collage entre caractères (section 2.8). Cette catégorie regroupe les caractères « gluons » qui servent à coller des caractères ou des mots qui seraient normalement séparés. Certaines écritures (par exemple les indiennes) en font un grand usage.
  • Vieil Hangul (section 2.9), une catégorie très ad hoc pour des caractères utilisés en Corée.
  • Et enfin, la dernière catégorie, celle des caractères non actuellement affectés (section 2.10) mais qui pourraient l'être dans les futures versions d'Unicode.

Bien, on a dix catégories. Comment les utilise t-on pour déterminer si un caractère est acceptable ou pas ? C'est l'objet de la section 3, qui indique cet algorithme en pseudo-code. Je n'en donne qu'une partie ici :

SI le caractère est dans les Exceptions, sa propriété IDNA est donnée
par la table Exceptions
...
SINON SI le caractère est dans LDH, alors il est PVALID
...
SINON SI le caractère est dans les Blocs Ignorables alors il est
DISALLOWED
...
SINON SI le caractère est dans les Lettres & Chiffres, alors il
est PVALID

SINON SI (cas par défaut) il est DISALLOWED

La section 4 insiste sur le fait que la liste des caractères faisant foi est celle calculée par l'algorithme ci-dessus. La liste fournie dans ce RFC 5892, en annexe B, n'est là que pour information (en effet, chaque nouvelle version d'Unicode modifiera les tables).

On a vu que le sort d'un caractère dont le statut est CONTEXT nécessite de regarder une table. Celle-ci est définie dans la section 5.2 et sa syntaxe figure dans l'annexe A. Elle est hébergée à l'IANA.

Enfin, même si elle n'a pas de caractère normatif, la plus grande partie du RFC est formée par l'annexe B, qui donne l'état actuel des tables de caractères avec leur statut.

Comme indiqué plus haut, les tables figurant dans le RFC ne sont pas normatives, seul l'algorithme l'est. En pratique, les tables ont été produites par un programme écrit par l'auteur du RFC qui ne le distribue pas (malgré plusieurs demandes). J'ai refait une mise en œuvre incomplète (manque de temps) de l'algorithme qu'on peut récupérer en create-idnabis-tables.py.

RFC 5891: Internationalized Domain Names in Applications (IDNA): Protocol

2010-08-22 Stéphane Bortzmeyer - xmlfr

L'ensemble des RFC sur la deuxième version d'IDN couvre la terminologie (RFC 5890), les tables de caractères autorisés (RFC 5892), les justifications des choix effectués (RFC 5894) et, dans ce RFC 5891, le protocole lui-même, utilisé pour l'enregistrement et la lecture des noms de domaine.

Ces RFC « IDNAbis » remplacent donc les RFC 3490 et RFC 3491 mais pas le RFC 3492, Punycode continuant à être l'encodage utilisé pour les IDN, avec le même préfixe, xn--. Le principe reste le même : comme les règles pour les noms de machine (mais pas pour les noms de domaine) imposent l'utilisation des seuls caractères US-ASCII, comme il n'est pas question de mettre à jour toutes les plate-formes utilisées, IDN fonctionne en encodant les noms de domaines Unicode en ASCII, grâce à l'algorithme Punycode. L'infrastructure n'est donc pas modifiée mais on peut présenter aux utilisateurs le vrai nom en Unicode, quitte à le traduire lors du passage sur le réseau. (Officiellement, IDNAbis est nommé IDNA 2008 mais ce nom est incorrect, le protocole n'ayant pas été terminé en 2008.)

La section 3 précise ce fonctionnement en exigeant qu'un nom de domaine utilisé comme tel (i.e. comme élément d'un protocole, pas lorsqu'il est simplement cité dans du texte libre), doit être encodé en ASCII lorsqu'on parle aux applications non-IDN, et que la comparaison entre deux noms de domaine (pour voir s'ils sont égaux) doit se faire entre deux formes Unicode ou deux formes ASCII mais pas en mélangeant les deux. Dans IDNAbis, le passage de la forme Unicode (U-label) à la forme ASCII (A-label) et en sens inverse se fait sans perte d'informations. Les deux comparaisons sont donc équivalentes. Comme beaucoup de protocoles utilisent des noms de domaine, les IDN affectent potentiellement beaucoup de monde. Sauf si le protocole le prévoit explicitement (ce qui est le cas des IRI du RFC 3987), les IDN doivent donc être mis sous leur forme ASCII. Idem pour les requêtes et réponses effectives faites avec le DNS.

Petit détail au passage. On trouve souvent des noms de domaine dans la partie droite d'un enregistrement DNS, par exemple dans le champ RNAME d'un SOA, qui indique l'adresse de courrier du responsable de la zone). Comme le rappelle la section 3.2.2, IDN ne change pas ces champs qui restent actuellement en pur ASCII, en attendant un futur RFC (le RFC 4952 ne suffit pas).

Passons maintenant aux deux protocoles utilisés par IDNAbis, le protocole d'enregistrement et le protocole de résolution. Le premier est décrit dans la section 4. Il concerne l'enregistrement d'un nom de domaine Unicode auprès d'un registre (attention, un registre ne gère pas forcément un TLD, ce protocole concerne tous les registres, même, par exemple, celui de bortzmeyer.org).

Donc, première étape, le registre reçoit un nom en Unicode (section 4.1). Il doit être normalisé en NFC et peut être encore normalisé selon des règles locales. Ce nom peut être transmis directement en Unicode (« U-label ») ou bien encodé en Punycode (« A-label »). Le RFC recommande de joindre la forme Punycode (voire uniquement celle-ci) mais il n'y a aucune justification technique à ce choix, c'est juste du FUD anti-Unicode.

Le registre doit ensuite vérifier que le nom est correct techniquement (section 4.2). Ainsi, il faut tester que la conversion U-label -> A-label et retour redonne bien le meme nom et, si uniquement une forme Punycode est reçue, qu'elle est bien légale (toute chaîne de caractères commençant par xn-- n'est pas forcément du Punycode). Les caractères interdits doivent être absents (cf. RFC 5892).

À côté des règles absolues (« le caractère ; est interdit »), il existe également des règles contextuelles comme l'interdiction du caractère Katagana U+30FB sauf dans les écritures utilisées au Japon (cf. RFC 5892). Enfin, si le nom comporte des caractères dont la directionnalité est de droite à gauche (cas de l'écriture arabe), il faut également suivre les prohibitions du RFC 5893.

Notons que les interdictions de ce RFC 5891 ne sont qu'un minimum. Un registre peut toujours ajouter ses propres règles comme de n'accepter que les caractères qui sont utilisés pour la langue locale, ou bien pour interdire des mots considérés comme grossiers.

Après ce parcours du combattant, le nom est enregistré. Reste à le résoudre via une requête DNS. C'est l'objet de la section 5, sur le protocole de résolution. Ce dernier effectue moins de tests puisqu'ils sont censés avoir été faits à l'enregistrement. Notez toutefois que ce n'est pas un argument très solide : non seulement il peut exister des registres qui ne font pas les tests ou bien les font mal mais la seule existence des jokers dans le DNS (RFC 1034, section 4.3.3) permet à un nom non enregistré d'« exister » quand même.

Bref, pour résoudre un IDN, le client doit donc convertir en Unicode (en effet, l'environnement de départ n'utilisait pas forcément Unicode, cela pouvait être, par exemple, Latin-1) et le normaliser en NFC. Ensuite, il teste que les caractères Unicode présents sont bien autorisés (section 5.4). Il est à noter que le résultat de ce test dépend de la version d'Unicode utilisée par le client (probablement via des bibliothèques standard fournies par le système d'exploitation). Ainsi, un nom de domaine utilisant un caractère très récemment affecté par Unicode pourrait être refusé par beaucoup de clients IDN.

Enfin, le client IDN convertit le nom en Punycode et termine par une résolution DNS normale (sections 5.5 et 5.6).

La section sur la sécurité, obligatoire dans les RFC, mentionne le risque de confusion entre des caractères similaires (un FUD classique contre IDN) mais ne fournit pas de solution dans le protocole. Elle compte sur les registres pour ne pas accepter les noms problématiques.

L'annexe A dresse la liste des différences avec la première version d'IDN. Je cite notamment :

  • Au lieu de dépendre d'une version spécifique d'Unicode (la 3.2 pour IDNA 1), le protocole est désormais indépendant de la version : tout changement dans Unicode est automatiquement disponible.
  • Les protocoles pour l'enregistrement d'un nom et sa résolution sont désormais séparés (et légèrement différents).
  • Les caractères de ponctuation et les symboles sont désormais presque tous exclus.
  • Il n'y a plus d'étape de normalisation comme l'était le nameprep du RFC 3491. Seul reste le NFC. D'une manière générale, chaque application est désormais libre d'effectuer la correspondance (mapping) entre ce qu'a tapé ou sélectionné l'utilisateur et l'IDN.
  • Le modèle de sélection des caractères autorisés est passé de « entièrement manuel, caractère par caractère » à « essentiellement algorithmique, fondé sur les propriétés Unicode - avec un peu d'exceptions manuellement ajoutées ». C'est ce qui permet l'indépendance par rapport aux versions d'Unicode.
  • La validité d'un caractère peut désormais dépendre du contexte (ce qui complique sérieusement la vérification).
  • Nouvelles règles « bidi ».
  • Largement compatible avec l'ancien IDN (même Punycode, même préfixe, beaucoup de règles communes) mais pas totalement (certains noms légaux deviennent invalides).

Pour un point de vue critique sur IDNA bis, on peut consulter le Unicode Technical Standard #46, « Unicode IDNA Compatibility Processing », qui remet notamment en cause le soi-disant rôle d'Unicode dans le hameçonnage. Une critique de cette critique a été publiée en Review of Unicode TR#46.

RFC 5890: Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework

2010-08-22 Stéphane Bortzmeyer - xmlfr

La nouvelle norme pour les noms de domaine écrits en Unicode, nommée IDNA2008, modifie les règles qui s'appliquent à ces IDN. Elle est composée de plusieurs RFC dont ce RFC 5890, qui fixe la terminologie.

Dans cette nouvelle version, sur laquelle le travail a commencé en 2008 (d'où son nom officiel d'IDNA2008, cf. section 1.1), la norme est plus riche et plus complexe. Le seul RFC des définitions fait 29 pages. Elle remplace IDNA 1, ou « IDNA2003 » (l'ancienne norme, dans les RFC 3490 et RFC 3491). Elle crée notamment les nouveaux termes de U-label (composant de nom de domaine en Unicode) et de A-label (composant de nom de domaine internationalisé encodé selon l'algorithme Punycode du RFC 3492). Contrairement à d'autres normes de l'IETF, elle n'est pas indispensable que pour les programmeurs, mais aussi pour ceux qui, par exemple, décident des politiques d'enregistrement des registres.

Quels sont les RFC qui composent IDNA2008 ? La section 1.3 donne la liste officielle :

  • Ce document, le RFC 5890, qui donne les définitions.
  • Le RFC 5894, de justification des choix effectués, et qui fournit aussi des avis sur les politiques d'enregistrement. Il n'a pas statut de norme et reflète des opinions peu consensuelles sur les IDN.
  • Le RFC 5891 qui normalise le protocole.
  • Le RFC 5893, spécifique aux questions posées par les écritures de droite à gauche,
  • Le futur RFC sur les fonctions qui transforment un nom de domaine avant de le passer à IDNA, par exemple pour mettre en œuvre les équivalences entre deux caractères.
  • Et enfin la liste des caractères autorisés, dans le RFC 5892. C'est une des grandes nouveautés, puisque, contrairement à la précédente version, elle ne dépend plus d'une version particulière de la norme Unicode.

La section 2 est ensuite consacrée aux mots-clés de IDNA2008 (attention à ceux qui connaissaient l'ancienne norme, le vocabulaire est souvent nouveau). Les RFC de IDNA2008 utilisent également un vocabulaire non-spécifique aux IDN mais qui est rappelé en section 2.2. Ainsi, un registre désigne toute organisation qui enregistre des noms de domaine, même si elle ne gère pas un TLD (je suis le registre de bortzmeyer.org). LDH (Letters Digits Hyphen) désigne les caractères ASCII qui sont traditionnellement autorisés dans les noms de machine (RFC 1123). Notez bien que les noms de domaine, contrairement à ce qu'écrivent beaucoup d'ignorants, ne sont pas limités à LDH.

La section 2.3 introduit les termes spécifiques à IDN. Par exemple :

  • LDH label est le composant (label) d'un nom de domaine, qui s'écrit uniquement avec LDH (c'est le nom traditionnel comme example dans www.example.com, nom qui compte trois composants). Deux sous-ensemble de LDH label sont définis, Reserved LDH label (ceux dont le troisième et quatrième caractères sont des tirets) et les non-réservés (les noms de domaines pré-IDN comme bortzmeyer.org). Parmi les réservés, certains ont xn en premier et deuxième caractère. Ils forment les XN labels dont tous, c'est important, ne sont pas forcément des encodages valides en Punycode. Ceux qui sont valides sont les A-labels, les autre étant nommés d'un terme péjoratif absolument non justifié, fake A-labels (IDNA2008 contient beaucoup de réglements de compte via le vocabulaire). La figure 1 du RFC représente graphiquement les relations entre ces différents ensembles. Il est recommandé de la consulter en cas de migraine.
  • Les A-labels sont donc la forme ASCII des IDN, produite par Punycode (RFC 3492). Par exemple, xn--stphane-cya est un A-label.
  • Un U-label est un composant valide d'un nom de domaine en Unicode. Par exemple, stéphane est un U-label (dont le A-label est le xn--stphane-cya cité plus haut). Toute chaîne Unicode n'est pas forcément un U-label. Elle doit être normalisée en NFC et ne compter que des caractères autorisés. Tout U-label peut être converti en un A-label unique et réciproquement.
Notons que tous ces termes sont pour des composants d'un nom de domaine (label). Le nom lui-même, s'il contient au moins un A-label ou un U-label est un IDN.

Il y a plein d'autres détails sur les composants d'un nom. Par exemple, lorsque les normes IDNA2008 parlent de l'ordre d'un caractère, c'est une référence à l'ordre de transmission via le réseau. L'affichage peut être différent, puisque certaines écritures se font de droite à gauche.

Tout RFC doit comporter une section sur la sécurité et c'est ici la section 4. Avec IDN, il y a potentiellement des problèmes de débordement de tableau (le U-label peut avoir plus de caractères que son A-label, section 4.2). Mais cette section est aussi l'occasion d'une attaque erronée contre les IDN, accusés d'augmenter la confusion des utilisateurs. D'où des conseils tout à fait inappropriés comme de montrer d'une manière spécifique les noms composés de plusieurs écritures (une pratique pourtant courante dans certains pays).

Les discussions sur cette section avaient été acharnées, avant même la création du groupe de travail, et ont donc mené à des paragraphes déroutants, bourrés d'allusions que le lecteur débutant ne comprendra sans doute pas (comme les mystérieux « risques », jamais explicités, de la section 4.4). Au moins, cette section et la 4.8 disent franchement que la question des caractères visuellement similaires n'a pas de solution technique.

2010-08-21

« que Greta Garbo soit la première »

2010-08-21 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

Une belle citation de Michael Lonsdale, qui peut faire grincer des dents le numérique, mais toute empreinte d'enfance et de poésie :

« Les actrices et les acteurs américains, j'en étais fou ! Enfant, je n'arrêtais pas de jouer avec leurs photos, qu'on trouvait dans les plaquettes de chocolat. Je leur faisais la classe. Je m'arrangeais toujours pour que Greta Garbo soit la première ! » [1]

Ah les plaquettes de chocolat avec des images à l'intérieur, au format papier.

Sources et liens :

  • [1] Article, Michael Lonsdale, L'entretien, de Jacques Morice, le 21 juillet 2010, page 10, Télérama n°3158

Le 21 août sur Formats-Ouverts.org :

Bruit et silence dans les vieilles réclames

2010-08-21 Patrick Peccatte - Du bruit au signal (et inversement) - Culture visuelle - Déjà vu

Lire l'article Bruit et silence dans les vieilles réclames sur Culture Visuelle.... Lire Bruit et silence dans les vieilles réclames

2010-08-20

Contre l'individualisation et l'uniformisation

2010-08-20 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

Les vacances : un temps de rencontres, au propre comme au figuré. C'est le thème du numéro double de Télérama de début août, avec d'un côté la surprise et l'imprévu et de l'autre l'individualisation et l'uniformisation :

« le voyage prémâché, sans risque de surprise, le séjour au bord de la mer conforme aux standards et aux clichés, le livre marketé au format « best-seller ». » (gras ajouté)

Des formats ouverts, mais avec peu d'innovation.

Sources et liens :

  • [1] Article, édito - surprise, de Michel Abescat, le 4 août 2010, page 7, Télérama n°3160-3161

Le 20 août sur Formats-Ouverts.org :

2010-08-19

« Standards éthiques »

2010-08-19 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

« Il n'y aura pas, en effet, de paix entre les nations sans paix entre les religions ; pas de paix entre les religions sans dialogue entre elles ; et pas de dialogue sérieux sans des standards éthiques communs. L'Éthique planétaire est sortie de ce mouvement de pensée qui, vous l'aurez compris, est complètement opposé à la thèse du « clash » des civilisations chère à Huntington. » (gras ajouté) [1]

Sources et liens :

Le 19 août sur Formats-Ouverts.org :

2010-08-18

« Stylo et papier »

2010-08-18 Thierry Stoehr - Formats-Ouverts.org - Citation-a-relever

« Une autre loi, adoptée en troisième lecture par la Douma, en attente au Sénat, prévoit l'interdiction pour les avocats, d'avoir recours aux ordinateurs, téléphones portables, enregistreurs et autres objets usuels électroniques, lors des visites à leurs clients en prison. Ils auront seulement le droit au stylo et à la feuille de papier ! » [1]

La guerre format papier-format numérique vue sous un autre angle.

Sources et liens :

  • [1] Article, Vladimir Poutine s'ouvre vers l'Occident sans relâcher son emprise sur la Russie, de Marie Jégo, le 12 juin 2010, Le Monde

Le 18 août sur Formats-Ouverts.org :

N° 55 – Echos de Göteborg : c’est la fin

2010-08-18 Antonin Benoit Diouf - SENBIBDOC - xmlfr, Congrès, colloques, conférences, séminaires,..., Web sémantique, IFLA2010, Göteborg, Gothenburg, Helsinki Public Library
Les bonnes choses ont toujours une fin, dans ce troisième billet concernant le 76e Congrès de l’IFLA, je relate les dernières sessions qui m’ont marquées et tire un petit bilan de la manifestation. Le samedi 14 août s’est tenue l’intéressante session 133 organisée par les sections « Alphabétisation et Lecture » et « Bibliothèques pour populations multiculturelles » et [...]

Après Göteborg, Singapour : un cadre pour les Application Profiles

2010-08-18 Emmanuelle Bermès - Figoblog - xmlfr, Bibliothéconomie, métadonnées, normes, Web sémantique

Après avoir entendu parler (ou reparler ?) à plusieurs reprises des "profils d'application" (application profiles ou AP) du Dublin Core, que ce soit dans le LLDXG ou à l'IFLA, j'ai éprouvé le besoin de me replonger dans tout cela. Force est de constater que je ne m'y étais pas intéressée de près depuis plusieurs années, alors que le développement de RDF et du Web de données a conduit le DCMI à revoir complètement son modèle abstrait (le DCAM, Dublin Core Abstract Model) et cette notion d'Application Profile, vers 2007.

Il n'est pas dans mon propos d'entrer dans les détails du DCAM aujourd'hui. Ce modèle est surtout utile en tant que référent pour le vocabulaire un peu particulier utilisé dans le monde Dublin Core.
Plus intéressant, à mon avis, est le Singapore framework for Application Profiles, un autre document du DCMI qui a le statut de "recommended resource" (autrement dit, ce n'est pas un standard, mais il est important quand même).

Ce document, le cadre de Singapour, a été proposé à la conférence DC en 2007 (décidément une année cruciale). Il définit les différents éléments constitutifs d'un Application Profile.
Quand on applique un standard de métadonnées, il existe différents niveaux qui doivent être pris en compte pour favoriser l'interopérabilité : bien sûr il faut respecter la syntaxe, le nom des éléments, la façon adéquate de les utiliser selon qu'ils sont obligatoires ou pas, répétables ou pas, etc. Mais pour aller plus loin, il faut aussi définir précisément les valeurs de ce qu'on met dans ces éléments, et éventuellement la façon de construire ces valeurs.

Je vais faire une comparaison pas du tout triviale avec le monde des bibliothèques.
Nous avons des standards qui sont des formats de métadonnées (MARC par exemple, et ses "différents parfums" comme dirait l'autre).
Nous avons d'autres standards qui sont des règles de catalogage et expliquent comment, à partir d'un document qu'on a entre les mains, on va déterminer quel est le titre, l'auteur principal, l'éditeur, etc. et comment il faut les transcrire dans la notice. Cette deuxième famille de norme comprend AACR2 pour les anglo-saxons, ISBD pour le reste du monde, et RDA pour l'avenir (peut-être).
Nous avons également des standards qui décrivent le modèle sous-jacent de toute cette information et à quoi elle sert : ce sont les FRBR et leurs petits frères FRAD (vient de sortir en français) et FRSAD.
Construire un Application Profile, cela revient à embrasser toute la palette de ces normes pour une communauté définie, et à formaliser le résultat.

Le Singapore framework définit ainsi les éléments suivants comme constitutifs d'un AP :
- les spécifications fonctionnelles (functional requirement ou FR - ça vous rappelle quelque chose ?) et le modèle du domaine : ce sont les représentations abstraites qui définissent l'objectif de notre AP, et elles sont obligatoires ;
- le Description Set Profile, sur lequel je vais revenir dans un instant ;
- et les guides d'utilisation (guidelines) pour le contenu et pour l'encodage, tous deux optionnels. Ce sont les équivalents de nos règles de catalogage mais aussi, guides et outils du catalogueur divers.

Je ne reviens pas sur les modèles et sur les guides.
Le Description Set Profile (DSP) fait l'objet d'un document normatif DCMI encore au stade de "working draft".
Le DSP est un document XML qui permet de décrire les différentes propriétés qu'on utilise dans notre AP, et jusqu'à un certain point, la façon dont on les utilise.
Le DSP prend complètement acte de RDF, au sens où il ne se restreint absolument pas aux propriétés du DC (voir ici pour un rappel). On peut donc construire un Application Profile en piochant dans les différents vocabulaires qu'on veut, FOAF, DC, etc. du moment que les propriétés qu'on utilise sont identifiées par une URI. Jusqu'ici, on est bien dans l'esprit de RDF.
Le DSP permet aussi de préciser un certain nombre de choses sur la façon dont on utilise ces propriétés. On peut préciser si l'objet doit être une ressource (identifiée par une URI) ou un littéral (une chaîne de caractères), ou si la propriété doit être obligatoirement une sous-propriété d'une propriété plus générique. On peut également définir qu'une propriété est obligatoire ou non, répétable ou non.

Bref, le DSP est conçu pour permettre de "valider" un ensemble de triplets RDF en fonction de règles prédéfinies (on parlerait d'un "pattern" en anglais, et ce sera compliqué à traduire). Le but étant d'obtenir des descriptions, ou si vous voulez des notices, le plus homogènes possibles. Il existe un document du DCMI qui définit les différents niveaux d'interopérabilité que l'on peut atteindre. Le DSP permet d'atteindre un niveau d'interopérabilité optimal !
Cette notion de validation, en réalité, est un non-sens en RDF. Les ontologies ne servent pas à valider les données. Elles se contentent de décrire les choses et leurs qualités, mais elles ne sont pas prescriptives. Ce n'est pas parce qu'il y a une propriété foaf:geekCode que tous les gens qu'on décrit en utilisant foaf sont nécessairement des geeks (ou doivent le devenir ;-) A l'inverse, en RDF, chaque triplet est indépendant ; il n'y a pas de notion de "notice", donc aucun moyen de dire que si on veut décrire une personne, il est obligatoire de mentionner son nom de famille - par ex.
Pour autant, si on veut pouvoir vérifier que certaines règles sont respectées pour produire certains types de données, on aura besoin de ce genre de mécanisme. Cela peut être le Description Set Profile tel qu'il se présente actuellement, mais on pourrait imaginer (et les gens du DCMI y réfléchissent) d'autres formalismes, des schémas XML, des schématrons, ou même des requêtes-type pour exprimer cette notion de validation.

Le Singapore framework for Application Profiles et le Description Set Profile sont donc des documents qui à mon sens méritent toute notre attention, car ils font le pont entre le monde du Linked Data et celui des bibliothèques où tout est encore articulé autour du paradigme de la notice. Il me paraît clair que nous aurons besoin de ce type de formalisme - je ne dis pas celui-là en particulier, mais quelque chose de ce genre - si on veut porter toute la complexité des données des bibliothèques dans le Linked Data. Ou ne serait-ce qu'une partie.

2010-08-17

Le général Bigeard et l'avant dernier protocole

2010-08-17 Thierry Stoehr - Formats-Ouverts.org - Nonelectronique

Les obsèques du général Marcel Bigeard se sont déroulées le 22 juin 2010 dans la cour des Invalides, à Paris. Comme toutes cérémonies officielles, et encore plus dans ce cadre particulier, le déroulement est établi selon des règles du protocole qui sont connues (et donc ouvertes).

Cependant cette cérémonie n'a justement pas connu le déroulement prévu : à deux reprises, elle a été interrompue (par un chant spontanné). Cela a fait réagir par écrit le Gouverneur militaire de Paris, responsable de la cérémonie, avec réponse également écrite du Président de l'Amicale des anciens du 8 et du 7. [1]

Pour ce qui est du dernier protocole en jeu suite à son décès, il concerne ses cendres, à disperser au-dessus de Dien Bien Phu selon ses volontés, un petit souci de protocole diplomatique.

Sources et liens :

Le 17 août sur Formats-Ouverts.org :

2010-08-16

N'utilise pas TGV qui veut

2010-08-16 Thierry Stoehr - Formats-Ouverts.org - Nonelectronique

Gare au TGV : le mot ne peut être mis sur n'importe quel rail. On peut être obligé de descendre de son blog en pleine voie : c'est ce qui est arrivé au blog qui traitait de la liaison entre Paris et Tours (et aussi en sens retour) [1]. La SNCF a écrit aux responsables du site que le terme TGV était une marque déposée dont l'utilisation ne peut se faire dans n'importe quelle condition, car il peut y avoir éventuellement « contrefaçon » ou « parasitisme », sans oublier la « protection du patrimoine immatériel de la SNCF », et donc le quai du procès.

Les marques déposées ont des formats qui ne sont pas ouverts, contrairement à ordinateur par exemple.

PS : Pour ce qui est du site de la SNCF à l'international, il ne semble pas avoir totalement compris ce qu'est un lien hypertexte, il est PDLSA : « La mise en place d'un lien hypertexte vers le site Internet : www.sncf-international.com nécessite une autorisation préalable écrite de SNCF International. Si vous souhaitez mettre en place un lien hypertexte vers notre site, vous devez prendre contact avec le sitemestre du site. », http://www.sncf-international.net/fr/page.php?id=99

Sources et liens :

Le 16 août 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/
Devenez rédacteur <XML>fret contribuez au développement du xml francophone !
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