Nous avons élu le leader du projet Debian, comme chaque année. Les résultats ont été proclamés le 15 avril (plus d'infos sur la page du vote).

Dix jours plus tard, Timo Juhani Lindfors publie une faiblesse dans le logiciel qui gère le vote et qui permet de casser le secret du vote, et ce pour tous les votes (dans la foulée : plouf l'anonymat du vote).

Pour ceux qui veulent jouer à la maison, une approximation du code source qui gère le vote est disponible. Ce n'est pas encore un paquet debian.

L'analyse du problème est amusante, et la morale en est essentiellement le titre de cette entrée. Dans la suite je ne fais que reprendre l'analyse de Timo Juhani Lindfors en y ajoutant mes propres commentaires.

Le token secret qui permet à chaque votant de vérifier que son vote a bien été pris en compte est constitué de la concaténation de l'instant auquel on prend en compte le vote (modulo 21 jours, cf. le fichier dvt-gack autour de la ligne 160) et de 8 caractères pris au hasard parmi les alphanumériques (soit 26+26+10 = 62 possibilités).

Si le vote est pris en compte à un moment parfaitement aléatoire dans cette période de 21 jours, et si les 8 caractères sont eux aussi pris au hasard uniforme, j'obtiens une borne sur l'entropie de ce token secret d'environ 69 bits. Notons déjà que le vote n'est ouvert que pendant 14 jours.

Première faiblesse: les votants ne choisissent pas leur instant pour voter de façon parfaitement aléatoire, et d'autre part l'utilisation d'un cronjob (toutes les 5 minutes) réduit encore plus l'ensemble des valeurs possibles pour ce timestamp.

Là où les choses s'effondrent, c'est dans le calcul des 8 caractères supplémentaires. Le script utilise la fonction rand de perl sans utiliser de graine particulière. Cette fonction utilise en interne drand48(), mais avec une graine de 32 bits uniquement. Comme il s'agit d'un générateur déterministe, la connaissance de ces 32 bits de graine suffit à prédire complètement la séquence des 8 caractères du token secret. On passe donc d'une entropie théorique d'environ 47 bits pour ces 8 caractères, à seulement 32 bits. En supposant que la machine n'est pas trop surchargée et que cron lance le script de vérification des votes toutes les 5 minutes exactement, on obtient maintenant une borne sur l'entropie d'environ 45 bits.

Une autre faiblesse amusante se trouve dans dvt-tally et concerne l'ordre dans lequel on affiche les votes. On commence par trier les votes par le nom réel du votant, puis on retire au hasard un nom dans cette liste pour l'afficher en premier, et ainsi de suite jusqu'à épuisement des votes. On affiche évidemment les votes masqués, mais l'utilisation de la même fonction rand sans initialisation explicite nous rend vulnérable à une attaque exhaustive. Et vu que l'anonymat du vote est déjà compromise, ce problème est juste la cerise sur le gâteau.

Quelles conclusions tirer de ce problème? Voici les miennes:

  • même dans un monde idéal, l'entropie bornée par 69 bits pour le secret est insuffisante si on veut sérieusement protéger le vote individuel de chaque votant. On a longtemps recommandé 80 bits pour se placer au delà de ce qui est réaliste pour une attaque par force brute. L'amélioration des capacités de calcul amène l'ANSSI à recommander 128 bits pour résister au delà de 2020 (recommandation faite en 2010).
  • l'utilisation du temps comme source d'entropie (car sa présence dans le token secret n'a pas d'autre usage) est discutable. Les évènements dépendants d'êtres humains n'ont pas tendance à se distribuer dans le temps avec l'uniformité voulue. Et si on s'attaque à mon vote à moi, il est plus raisonnable d'attaquer d'abord les instants auxquels je suis réveillés, que les autres. Si on ajoute à cela le fait que l'application ne maîtrise pas l'instant auquel elle tourne, car lancée par cron, l'utilisation du temps est simplement une mauvaise idée.
  • utiliser un générateur de nombres aléatoires sans l'initialiser avec une graine revient à fermer les yeux et espérer que la voiture va magiquement éviter le mur (alors qu'on garde le pied à fond sur l'accélérateur).
  • utiliser un générateur de nombre aléatoire déterministe pour des tirages successifs d'une quantité que l'on espère aléatoire est une mauvaise idée.

Ma suggestion pour corriger ces problèmes serait de calculer le token secret comme la représentation hexadécimale de 128 bits lus directement depuis /dev/urandom (ou son équivalent sur d'autres systèmes). Cela revient à un token secret de 32 caractères, ce qui reste raisonnable dans le contexte, et cela aligne la sécurité attendue dans la confidentialité de chaque vote avec les recommandations de la communauté crypto. Lire depuis /dev/urandom est raisonnablement rapide (et essentiellement négligeable dans la mesure où on vient de vérifier une signature RSA ou DSA) et suffisamment sûr aussi (et si on doute de /dev/urandom, je suppose qu'on peut jeter l'éponge sur ce système, car si le noyau n'est pas en mesure de fournir de l'entropie de qualité je me demande bien qui peut l'être).

Et pour finir, afficher les votes en triant selon le hash md5 (comme cela a été suggéré dans le fil de discussion).

Posted 2012-04-29 21:34 Tags:

Après presque 4 mois sans nouvelles, le nouvel épisode de YEP (n°739) est en ligne.

S'agit-il d'un évènement isolé ou les frémissements d'une reprise plus régulière de la publication? Je répondrais avec une de mes citations d'économiste préférée (attribuée à John Maynard Keynes) :

Demain, on ne sait pas.

Posted 2012-04-29 04:18 Tags:

Trop dur de lire la situation locale dans votre partie de Go?

Suivez donc le conseil de Bill.

Fuck it. I'll tenuki!

Posted 2012-04-26 05:06 Tags:

J'ai été relativement surpris de constater que les tarifs des communications mobiles, avec ou sans contrat, sont significativement plus élevés ici (en Californie) qu'en France (en pleine effervescence due à Free quand je suis parti, mais cela reste vrai même en négligeant l'effet des offres Free dans le paysage français).

Et non seulement c'est plus cher, mais la qualité des communications voix est lamentable, et je ne suis pas impressionné non plus par les débits data.

Comment le service de téléphonie mobile peut-il être pire dans ce que je croyais être l'utopie de la concurrence libre et non faussée, que dans un pays économiquement arriéré où les ogres communistes mangent les petits enfants?

Une piste d'explication: ici on n'achète pas un téléphone nu (sans carte SIM), ou une carte SIM nue (sans téléphone) permettant d'accéder à un réseau. On achète majoritairement le combo. En France, on lie souvent les deux. Mais la règle ici, c'est de lier les deux commercialement et technologiquement. Les deux sont physiquement solidaires. Il ne s'agit pas d'un simple simlockage temporaire qu'une loi de protection du consommateur permettrait de déblocker au bout d'un certain temps. C'est juste soudé.

Du coup, l'utilisateur est bien plus captif ici qu'en France.

Cette entrée vous était présentée par le comité de soutien de la main invisible du marché.

Posted 2012-04-25 08:28 Tags:

Je profite de mon anniversaire pour vous poser une devinette bien débile:

Pourquoi est-ce que tous les polynômes irréductibles de degré 5 sur F2 sont primitifs?

Parce que mon âge est premier!

(Je prends ici la définition de primitif comme signifiant « polynôme minimal d'un élément primitif », bien entendu)

Posted 2012-03-23 16:43 Tags:

J'ai fini (il y a deux semaines) de lire Google Démocratie. Il s'agit d'un roman d'anticipation centré autour d'un projet de super IA développé par Google (avec l'appui du gouvernement US).

Je ne sais pas trop par où commencer. D'un côté ce livre est sans doute le plus mauvais que j'ai lu depuis longtemps. De l'autre, je n'ai quasiment lu d'une traite parce que l'histoire n'est pas si mauvaise que cela. Certes, la partie « services secrets et complot mondial » est une caricature du genre; je n'ai pas réussi à m'attacher aux personnages (aucun d'entre eux), et la fin est navrante.

Mais c'est sans doute le style d'écriture qui m'aura le plus frappé. On a l'impression que le tapuscrit n'a pas été relu. Ou alors qu'il a été mal traduit de la VO, alors que manifestement la VF est la VO.

Je retourne bientôt à l'épisode suivant de The Black Company, dès que j'ai fini mon livre en cours, à savoir une étude ethnographique des Français vus par deux Nord-Américains.

Posted 2012-02-24 08:55 Tags:

Qu'importe la banque, pourvu qu'on ait le poney! Je suis donc bien arrivé en Californie dimanche dernier, et dans cette première semaine:

  • j'ai trouvé un appartement en location à environ 10 mn en vélo de mon futur boulot;
  • j'ai ouvert un compte en banque sur lequel j'ai les plus grandes difficultés du monde à faire un transfert depuis la France;
  • j'ai compris qu'une voiture serait sans doute nécessaire, et qu'il fallait que je me jette sur les possibilités de m'endetter, pour avoir l'occasion ensuite de m'endetter plus;
  • j'ai découvert des carrefours où tout le monde a un stop, et ensuite on se démerde pour savoir qui a la priorité (c'est par ordre d'arrivée, et en cas d'arrivée simultanée—ce qui arrive avec proba 0—c'est priorité à droite); et les feux rouges sont tout au plus indicatifs si on tourne à droite. On ne roule pas à droite (cette voie sert plutôt aux entrées-sorties) sur l'autoroute et il y a souvent une voie à gauche réservée bus et covoiturage, ce qui ici signifie simplement ≥ 2 personnes.

À propos de voiture, il n'y a pas besoin de permis pour en acheter une, mais il faut un numéro de sécu. Il faut aussi un numéro de sécu pour faire un crédit, d'ailleurs j'ai presque réussi à acheter un vélo pour aller au boulot (point 1), mais en l'absence de cash (point 2) j'ai misérablement échoué dans l'achat à crédit en l'absence de ce précieux numéro de sécu.

Il va falloir apprendre à montrer mon passeport quand je commande une bière dans un resto, et à se présenter avec poignée de main virile à environ chaque personne que je rencontre (agent immobilier, vendeur de voitures...). Sans oublier le délicat art du tip. San Francisco contraste bien avec l'espèce d'énorme assemblage de cités-dortoirs qu'est la Sillicon Valley (ou ce que j'en ai vu pour le moment) et ressemble à peu près à une ville comme on l'entend en France, même si sous la pluie en hiver, c'est sans doute moins sympa à visiter. Pas de panique, j'aurai le temps de visiter en été, vu que je ne pars nulle part, et SF non plus (modulo le Big One bien sûr, ne pas y penser, ne pas y penser, et merde j'y ai pensé).

Bref, rien de bien révolutionnaire dans ce premier épisode de « Laurent découvre la Californie ». Demain je commence mon nouveau travail, sur lequel je compte a priori me montrer plutôt discret. On verra bien.

Posted 2012-01-22 20:12 Tags:

J'ai découvert un nouveau comics intitulé Calamities of Nature. Comme le veut l'usage, j'ai relu toutes les archives et je vous le recommande.

Posted 2011-12-23 17:01 Tags:

Pour sa réponse bien sentie à l'étudiant, ce prof est un modèle à suivre.

Posted 2011-12-20 19:40 Tags:

Tel le phénix qui toujours renait de ses cendres, le site du KomiTê est à nouveau opérationnel. Pas de panique : il n'y a pas de nouveau contenu depuis plus de 5 ans. C'est juste que le site n'est plus un énorme 404 comme il l'était suite au dernier déménagement informatique (qui se produisent au rythme approximatif de 1 par an).

Merci à ceux qui m'ont signalé le problème.

Posted 2011-12-16 16:42 Tags:

This blog is powered by ikiwiki.