Effrayante persistance

« Les URI cools ne changent pas ». Ainsi parla TBL, et sans être dogmatique, je trouve que c’est un conseil qui se tient. Le Web est une fragile toile reliant des contenus les uns aux autres, changer l’URI d’un contenu brise tous les liens qui y menaient, l’exclut de la toile et la fragilise. On ne devrait jamais changer l’URI d’un contenu une fois qu’il est publié.

Mais cela signifie qu’on n’a aucun droit à l’erreur. Toute URI publiée devra rouiller sur place. Cela oblige à la choisir avec soin, à y réfléchir à deux fois. Pour un procrastinateur dans mon genre qui n’ose jamais rien faire de peur de mal faire, c’est réellement bloquant. Je suis censé mettre en ligne depuis des mois un petit site de photos, et remets sans cesse la tâche au lendemain car je n’arrive à me décider ni sur le logiciel à utiliser pour générer les galeries, ni sur le modèle des URI. Des dossiers thématiques ? Une arborescence chronologique ? Savoir que ce choix m’engage pour des années me pétrifie.

Et pourtant, il y a plein de raisons pour lesquelles on voudrait changer une URI. Si par exemple elle contient le titre du contenu et qu’on désire modifier un titre maladroit. Est-on condamné à conserver l’URI avec le premier titre ? Les toiles d’araignées sont de soie, non de verre, et le Web ne devrait pas être si fragile.

Je suis bien sûr excessif, le Web fournit des mécanismes, les redirections, qui donnent le droit à l’erreur. Mais je n’aime guère ces mécanismes, car ils obligent à gérer, en plus des contenus, des méta-données liées au serveur. Le jour où je change de serveur Web, il me faut migrer tous les fichiers contenant les redirections (l’idéal serait de pouvoir inclure cette meta-donnée dans le fichier de contenu, mais c’est un autre débat). Bref, la gestion de redirections me semble fragile et peu pérenne.

Un autre mécanisme, élégant mais bidouilleux, pourrait être de dire, peu importe l’URL, seule l’URN ne devrait pas changer, et être incluse dans l’URL. Nombre de CMS le permettent déjà. Ainsi dans l’URL http://toto.org/ralerie/1234-titi-est-mechant, seul compte 1234 que le serveur est capables d’extraire. Je peux modifier l’URL en http://toto.org/bisoux/1234-titi-est-gentil de manière transparente.

Tout ça pour dire que parmi les règles de bonne conduite du Web, je trouve certaines légèrement effrayantes et capable de dissuader de publier. Mais c’est juste parce que je suis flippé de nature ;)

Référence : « What is the URI persistence policy of your Web site? » interroge Karl

Rêver, un impossible rêve…

Moi je crois que l’on ne réussit qu’une seule chose, on réussit ses rêves. On a un rêve et on essaye de bâtir, de structurer ce rêve. (…)

Je crois qu’en fait, un homme passe sa vie à compenser son enfance. Je m’explique. Je crois qu’un homme se termine vers 16-17 ans. Vers 16-17 ans, un homme a eu tous ses rêves. Il ne les connait pas. Mais ils sont passés, ils sont passés en lui. Il sait s’il a envie de brillance, ou de sécurité, ou d’aventure… Il sait. Il ne le sait pas bien, mais il a ressenti le goût des choses, comme le goût du chocolat, comme le goût de la soupe aux choux. Il a le goût de cela.

Et il passe sa vie à vouloir réaliser ses rêves-là. Et je crois qu’à 17 ans, un homme est mort, ou il peut mourir. Et après, je sais que moi j’essaie de réaliser les étonnements, plutôt que les rêves. J’essaie de réaliser les étonnements que j’ai eus jusqu’à, mettons, 20 ans. Et à 40 ans, on s’en aperçoit. A 40 ans, on le sait. Jusqu’à 40 ans, je ne le savais pas. Maintenant, je sais que c’est comme cela. Et peut-être qu’à 60 ans, je vais découvrir autre chose.

(…)

Et l’homme est un nomade. Et toute sa vie, un homme normal, je crois, rêve de foutre le camp, d’espèces d’aventures, quel qu’il soit, même si le gars est fonctionnaire depuis 40 ans, quand on le voit un soir et qu’il essaie de se libérer un peu, il vous dit : « J’aurais voulu être pilote, j’aurais voulu être machin… » Tous les hommes ont envie de vivre quelque chose. Et les hommes ne sont malheureux que dans la mesure où ils n’assument les rêves qu’ils ont. (…)

Jacques Brel
Ces phrases sont extraites d’un entretien réalisé en 1971 par Henry Lemaire. On trouve assez facilement la vidéo de cet entretien, par exemple [ici](http://vimeo.com/18512041). Plusieurs transcriptions partielles existent, les phrases ci-dessus sont extraites de [celle de William Kramps](http://williamkramps.20six.fr/williamkramps/art/1023838/Interview-de-Jacques-Brel-2-) et de [celle de Mircea Perb](http://welovewords.com/documents/jacques-brel-vous-parle). J’ai volontairement coupé certaines phrases, le but n’étant pas d’être fidèle à la parole d’un prophète, mais de fournir quelques éléments pour inviter à la rêverie et la réflexion

Bébés pandas roux

Ce 21 septembre, c’est la Journée Internationale des Pandas Roux. L’occasion de rappeler que le logo de Firefox n’est pas un renard, mais un petit panda roux, que ces bestioles, parmi les plus mignonnes qui soient, sont menacées de disparition, et que Paris est décidément une ville magnifique, puisqu’on peut y admirer des pandas roux à la ménagerie du jardin des plantes. Deux bébés y sont nés cet été, voici une petite compilation de photos. Oui, c’est un coup bas, une agression à la mignonitude pour vous inciter à participer à la sauvegarde de l’espèce.

Les deux petites filles, qui sont nées le 7 Août, n’ont pas encore de nom. La ménagerie a lancé une consultation sur Facebook pour leur en choisir un. Leur maman s’appelle Maya, elle est née à Madrid en 2004. Leur papa, Djian est arrivé d’un zoo italien en 2012. Les deux fillettes ont déjà de nombreux grands frères et grandes sœurs, puisque que Maya a eu cinq autre portées avant elles. Ainsi le 21 juin 2011, elle a donné naissance à Yumco, un garçon, et Zanda, une fille. Leur papa s’appelle Sashi.

Les bébés devraient être visibles du public dans le courant du mois d’octobre. En attendant, leurs soigneurs ont publié de nombreuses photos :

Les pandas roux sont l’objet d’un programme européen pour les espèces en dangers, c’est à dire que pour essayer d’assurer la survie de l’espèce, l’existence des individus en captivité est entièrement contrôlée. Une commission régit notamment leur reproduction pour éviter la consanguinité. Il reste quelques centaines de petits pandas en liberté en Asie, que le Rad Panda Network essaie de protéger. Je ne peux que vous encourager à aller faire un tour sur leur site pour voir comment vous pouvez les aider.

Monsieur Madame empreinte digitale numérique

Je viens de lire, sur le conseil de David, un article sur PGP, l’identité numérique et les réseaux de confiance. Il affirme notamment que si l’utilisation de réseaux de confiance est si peu répandue, c’est en partie parce que les logiciels de cryptographie ne sont pas assez accessibles pour des non-experts. Ça m’a donné une idée pour rendre un tout petit peu plus agréable une minuscule partie en marge du processus, l’identification d’une clé à partir de son empreinte.

Une clé publique ou un certificat sont des signatures numériques certifiant l’identité d’un individu ou d’un objet. Je peux utiliser ma clé pour signer mes message et prouver que j’en suis l’auteur. Lorsqu’on se connecte en SSH à un serveur, SSH affiche la clé de la machine pour prouver qu’on se connecte au bon serveur. Ce mécanisme implique que je sache reconnaitre la signature et l’associer au signataire. Pour cela, on peut imaginer deux mécanismes, l’un centralisé, une sorte d’annuaire officiel faisant le lien entre une entité et sa signature, l’autre décentralisé, où lorsque je ne reconnais pas une signature je demande à mes contacts s’ils la connaissent.

Il existe malheureusement des cas où cette vérification n’est pas possible. Soit parce que la signature n’a pas été publiée dans un annuaire officiel, soit parce que personne parmi mon réseau ne la connait. Il faut alors recourir à un mécanisme moins sûr en cherchant la signature dans des endroits publics. Par exemple vous pouvez récupérer ma clé publique sur mon site. C’est peu sécurisé, car le site ou la communication peuvent avoir été détournés, mais ça vaut mieux que rien. Ces signatures sont de longs fichiers binaires incompréhensibles pour la plupart d’entre nous. On les identifie donc généralement par un résumé automatique créé par un algorithme connu. Ce résumé est appelé empreinte, hash ou fingerprint. L’empreinte de ma clé est FE70 1DEC 5060 0716 D631 7AE6 96DD 4B5C 2060 838F, celle de mon serveur 12:52:65:81:3e:6e:20:52:ae:31:6e:65:a0:90:0f:90. Cette empreinte permet de vérifier que la clé publique que vous avez récupérée est bien la bonne. C’est mieux, mais pas encore optimal. Lorsque je me connecte à mon serveur depuis un ordinateur tiers, et que SSH me demande si 12:52:65:81:3e:6e:20:52:ae:31:6e:65:a0:90:0f:90 est bien sa signaturer, j’avoue être parfois un peu en peine pour répondre. Des gens intelligents ont donc eu la bonne idée de créer une représentation graphique en ASCII Art de cette empreinte. Si je me connecte à un serveur en ajoutant l’option kivabien, il va désormais afficher :

  $ ssh -o VisualHostKey=yes toto@toto.com
  The authenticity of host ’toto.com’ can’t be established.
  RSA key fingerprint is 12:52:65:81:3e:6e:20:52:ae:31:6e:65:a0:90:0f:90.
  +--[ RSA 2048]----+
  |oo    .o+.       |
  |E..  ...         |
  |o=. ...          |
  |= +o..o.         |
  |.=o. o..S        |
  |.o    o.         |
  |.    .           |
  |                 |
  |                 |
  +-----------------+

En faisant intervenir la mémoire visuelle d’une forme, la chance de détecter une clé erronée, et donc une tentative d’attaque, augmente. Mais l’ASCII Art reste assez hermétique aux non technophiles.

Pour rendre la vérification de clés plus conviviale, pourquoi ne pas proposer un algorithme transformant l’empreinte en avatar ? Les premiers octets fixant la couleur des cheveux, les suivants le type de chevelure, la forme du visage, etc. À chaque clé pourrait ainsi être associé un avatar. Il me suffirait de publier cet avatar à divers endroits que je contrôle relativement (mon site, mes profils sur des réseaux sociaux…) pour que les gens qui récupèrent ma clé puissent vérifier qu’elle m’identifie bien, de façon un chouïa plus conviviale qu’avec l’empreinte. La méthode est loin d’être infaillible. Une attaque visant spécifiquement une clé est assez simple à mettre en œuvre. Et il est évident que lors des rencontres de signature mutuelles de clés, vérifier la signature hexadécimale plutôt que l’avatar de la clé continue à s’imposer. Mais cette solution me semble un bon compromis entre la fiabilité et l’utilisabilité.

Quelqu’un a cinq minutes pour coder une petite preuve du concept, un générateur d’avatar à partir d’un hash ? (en partant par exemple de ce générateur).

[Ajouts du 18 septembre :]

  • David, encore lui, me signale que Gihub a mis en place des identicones générés automatiquement à partir d’un hash de l’identifiant d’un utilisateur. Ils restent très abstraits, je pense que quelque chose de plus anthropomorphe serait plus convivial ;
  • Sébastien Sauvage m’a indiqué VizHash GD, qui crée des hashs graphiques. Le wiki du projet liste d’autres initiatives similaires ;
  • Kevin Gaudin m’a fait découvrir le projet MonsterID, qui crée un hash sous forme de petit monstre. Kevin en a réalisé une implémentation en JavaScript. On se rapproche ici beaucoup plus de ce que j’ai en tête.

[Ajout du 2 octobre :]

  • Sébastien Fievet me signale le projet hashmoji « a simple Python 3 program and library for visualizing content hashes as emoji ».

Note sur l’article : un des points intéressants de l’article de Justus Ranvier est qu’il définit l’identité en fonction d’interactions sociales plutôt que d’un bout de plastique délivré par une administration. Malheureusement dans sa proposition finale de réseau social de certification d’identité, il utilise pour ce faire des composants qui pour moi ne font pas forcément partie de l’identité, comme la date de naissance, l’adresse de résidence, etc. Clochix est l’auteur de ce carnet, de réflexions de bistro sur Twitter et de quelques dépôts sur Github. C’est tout. Il n’a ni date de naissance hormis celle d’enregistrement du domaine, ni adresse, hormis l’IP de ce serveur. Ou du moins, la date de naissance et la résidence des doigts qui tapent sur le clavier ne font pas partie de l’identité “Clochix”. Et je me demande comment la garantir, certifier que je suis bien Clochix, puisque la quasi totalité des composants de cette identité sont publics, donc aisément usurpables. La gestion de l’identité de ses hétéronymes n’est pas résolue.

PS : l’idée de représentation graphique d’une empreinte n’est évidemment pas nouvelle. Wikipedia date l’invention des identicones de 2007, j’ai trouvé un article de 2009 évoquant la conversion de l’empreinte en code de couleurs et il existe un outil, Visprint qui crée une fractale à partir d’une empreinte. Quant au site http://robohash.org/, il propose de transformer n’importe quel texte en robot.

Se préserver

Note liminaire : je n’y connais rien ni à l’USB ni aux ondes électromagnétiques, n’hésitez donc pas à me corriger.

Je suis tombé sur un préservatif à prises USB. L’idée m’a semblé saugrenue, mais après réflexion et quelques recherches, elle ne l’est pas du tout. Mon FirefoxPhone se recharge via sa prise USB. Il m’arrive donc de le recharger au boulot en le connectant à mon PC. Or, dès qu’il est déverrouillé, il est reconnu par le PC comme un disque externe (ce n’est pas le comportement par défaut, mais le plus pratique, donc je présume ne pas être seul à l’avoir réglé ainsi). Écrire un petit programme qui aspire automatiquement et discrètement le contenu de tout disque connecté en USB est l’affaire de quelques minutes. Chaque fois que je mendie un peu de courant auprès d’une prise que je ne contrôle pas totalement, toutes les photos de vacances qui sont sur ma carte SD pourraient donc être copiées. Le besoin d’interdire physiquement toute transmission de donnée via une prise me parait donc réel. Heureusement, au vu de la spécification, la parade ne semble pas très compliquée. Les prises USB disposent de quatre connecteurs, deux pour l’électricité, deux pour les données. Il suffit donc de créer un câble USB qui ne relie pas les connecteurs de données. La bidouille ne devrait pas être très compliquée pour qui s’y connait un peu en électronique.

[ajout du 2013-09-15 14:10] : padenot me signale que « les canaux de donnée sont utilisés pour la négociation de l’ampérage que le chargeur doit fournir. C’est plus ou moins non-standard ». Donc ce préservatif risque fort de ne pas fonctionner :S Plusieurs fils dans les commentaires sur Hackers News débatent de ce sujet.

Plus généralement, Brian Krebs signale que tous les chargeurs peuvent être piégés pour aspirer les données de nos téléphones. À mesure que ceux-ci contiennent de plus en plus d’informations et jusqu’à nos empreintes digitales, charger couvert me semble devenir un précaution qui concerne tout le monde.

Karl de son côté rapporte l’histoire d’un automobiliste qui a découvert que sa carte de télé-péage était lue un peu partout dans les rues de New-York, permettant de suivre sa voiture à la trace. Des expériences ont prouvé depuis longtemps qu’on peut lire à plusieurs dizaines de mètres que les puces RFID des cartes de transport ou des titres d’identité (votre passeport). Voici une preuve que c’est nos seulement faisable mais que ça se fait. Et pour répondre à Karl, une rapide recherche en ligne permet de trouver nombre de cages de Faraday portables, du simple porte-carte au sac pour ordinateur. Avec l’arrivée des cartes de paiement sans contact, et le nouveau risque qu’elles font courir, j’espère que ce genre de dispositif va très rapidement se généraliser (et surtout qu’on aura des études sur leur fiabilité réelle).

Fork me on GitHub