C'était un soir avec des amis, et je discutais avec mon comparse Antoine Cézar. Comme moi, Antoine se défini comme un artisan du code, passionné du code parfaitement fonctionnel. Donc, en cette soirée de Février, dans le feu d'une discussion en compagnie d'une bonne bouteille, deux développeurs qui s'estiment se lancent un défi. Simple en apparence, difficile à résoudre dans les faits. Exactement ce que nous adorons.

La question est relativement simple, mais terriblement difficile à répondre : Comment m'assurer que le code d'un serveur web est bien sincère, qu'il n'a pas été modifié dans une volonté maligne ?

TL;DR ? vous pouvez sauter direct à mes propositions. Et à celles d'Antoine Cézar.

J'oubliais un point important : La soirée en question était sous le pavillon du Parti Pirate, et la réflexion menée suite à un constat idiot : Le Parti Pirate est vent debout contre le vote électronique à cause de son opacité et de la trop grande facilité d'y truquer le scrutin. Malgré les dénégations des vendeurs de “machines à voter”, le contraire a toujours été prouvé. Malheureusement, de part son effectif et sa dispersion, le Parti Pirate a besoin du vote internet. Ne serait-ce que pour appliquer la Démocratie Liquide.

La démocratie doit être facile à comprendre

Certes, moins qu'une dictature militaire, mais c'est ce qui la rend acceptable.

Or, la consultation publique tel qu'un référendum ou l'élection de représentants est un exercice primordial de la Démocratie. Celle-ci ne peut avoir lieu sans une réelle confiance de l'électeur et l'assurance que son vote compte. C'est en cela que la Démocratie fonctionne, et qu'elle n'est pas le meilleur régime politique, mais bien le moins pire.

Pouf pouf, revenons au vote et dépouillons les résultats.

Il est difficile de faire moins incompréhensible que le décompte de bulletins glissés dans une urne transparente. Hélas, en informatique, vérifier la sincérité d'une élection demande un niveau de compétence qui est très loin d'être nul. Et même en s'y connaissant, il est quasi-impossible de jurer qu'on ne se fasse pas rouler dans la farine.

Pourquoi le vote électronique

Le système de vote actuel, à savoir une enveloppe anonyme dans une urne, est dit système “suisse”. Rappelons-nous que la Confédération Helvétique est une vénérable démocratie. Ou alors, cela a un rapport avec la nomination papale et des gardes qui surveille l'urne ? Va savoir… Le fait est que Bruce “Dieu” Schneier lui-même loue l'incroyable fiabilité de l'élection du Pape mais il explique clairement que cet état de grâce est dû à des circonstances très spéciales.

Aux États-Unis, un scrutin a lieu tous les deux ans. Mais alors que nous sommes habitués à des questions simples (« Qui souhaiteriez-vous comme Président ? »), et pas plus de deux par scrutins, lors de leurs votes, les Américains votent en moyenne pour une trentaine de questions. Cela va du vote du Président de l'État Fédéral, du Gouverneur de l'État Fédéré, des représentants et sénateurs, du Juge de paix, du Maire,… mais aussi les délégués scolaires des écoles, des référendum sur des propositions d'amendements fédéraux ou d'état, et d'autres questions tout à fait dignes de faire partie de l'exercice démocratique.

Sauf qu'il y a un hic : devant une vingtaine de questions simultanées, le système Suisse ne tient pas. Organisation, dépouillement, etc… ingérable, alors que lesdites questions publiques sont légitimes. C'est pour ça que les Américains ont très vite conçu les premières machines à voter. Des perforatrices.

1303-Vote-Floride.jpg
Photo © Rhona Wise pour AFP via The Big Picture / boston.com

Malheureusement, les bulletins de vote perforés, ce n'est pas toujours efficace. On se souvient tous de cette scène surréaliste de re-re-re-recomptage des bulletins en Floride en 2000. La photo ci-dessus montre un des membres du collège électoral revalidant un bulletin. Avec le résultat insatisfaisant que l'on sait, le total décidé par un juge fédéral, faute de pouvoir être sûr : Toutes les voix ne furent pas égales et n'ont pas été représentées.

Ces couacs ont accéléré un mouvement de transition vers le vote électronique.

Le problème du vote électronique

Seulement, le vote électronique, c'est accepter que le recomptage des votes ne soit plus effectuable par n'importe quel citoyen, mais par un ordinateur. Lequel fait tourner un logiciel. Lesquels sont fournis par des entreprises privées.

Et là commence un très gros problème : D'abord, un logiciel est hackable. Ensuite, les codes sources de ces logiciels n'ont jamais été publiés par les entreprises en question. Pour des raisons de secret industriel.

L'argument est tout à fait valable dans le cadre d'une prestation privée, mais absolument pas dans un exercice qui touche à la vie directe d'une collectivité, publique et qui exige une transparence totale. Le meilleur exemple qu'un dépouillement qui manque de transparence peut donner une contestation immédiate, ce fut le scrutin de l'UMP en Novembre.
Bref, les ordinateurs de vote sont doublement insécures. Et de part leur code fermé, leur audit ne peut se faire que par des experts ayant un lien avec le fournisseur, aucun constructeur n'étant basé en France. C'est totalement inadmissible.

(TL;DR) Ma proposition : auditer

Antoine [EDIT] devait rédiger son billet à l'heure de la mise en ligne, mais il proposait la solution d'une distribution. Personnellement, je propose l'audit permanent du serveur, données comprises.

L'idée est donc de permettre à tout-un-chacun d'auditer un serveur de vote, même pendant le scrutin. Pour couper court à toute polémique, de proposer la transparence la plus totale, ce qui, en cas de doute, permet par un débat technique public de résoudre les problèmes. On notera que c'est comme ça que les logiciels libres sont gérés, et que ceux-ci sont nettement plus à jour au niveau sécurité que leurs contreparties propriétaires.

Au départ, je songeai à un explorateur de fichier sur une autre machine. Et finalement, je penche de plus en plus vers un accès ftp anonyme donnant accès aux sources du serveur et à sa base.

Mais attention, l'accès aux bases de données n'est lui pas permanent : À l'ouverture du scrutin, une partie de la base n'est plus consultable, celle qui stocke les votes. À la fermeture, et donc au dépouillement, cette partie-là redevient ouverte, puisque le stockage des bulletins est supposé anonymisé.
Cela semblerait logique de laisser l'accès aux logs, puisqu'une liste d'émargement est consultable pendant un scrutin. C'est le contenu des enveloppes d'une urne qui ne l'est pas.

Objection 1 : les mots de passe

Impossible de donner un accès root à tous. Donc certains documents de l'infra /etc ne sera pas accessible.

Objection 2 : quid des administrateurs ?

Là, tout comme le mot de passe du root, pas trop de choix, on doit passer par des personnes de confiance. Et j'avoue que c'est un des points faibles.

Objection 3 : et les attaques hors serveur ?

Ce que l'on appelle les attaques man-in-the-middle sont par nature impossible à éviter. Et aucun certificat SSL ne vous protègera ! De part la nature même du réseau, les propriétés résilientes d'internet ne peuvent donner une satisfaction totale. C'est impossible.

Soyez critiques !

Évidemment, notre exercice de réflexion critique ne marche que si ce débat est le plus ouvert et documenté possible. On est en plein dans une exigence première de la Démocratie : la sincérité du vote. Or cet exercice critique semble totalement incompris des acteurs commerciaux, dont on peut alors vraiment douter de la légitimité.