← Tous les articles

Une « preuve » mathématique que les votes ont été comptabilisés correctement — avec une porte dérobée secrète intégrée

La Suisse a publié le code source de son système de vote électronique afin que chacun puisse le vérifier — et en quelques semaines, des cryptographes ont découvert une porte dérobée qui permettait à un initié de produire une preuve mathématiquement valide tout en modifiant silencieusement les votes.

Nous sommes au printemps 2019, et quelque part dans les bureaux de la Poste suisse, une décision est prise qui semble relever d'une transparence radicale. L'autorité postale fédérale, en collaboration avec son prestataire espagnol Scytl, s'apprête à publier le code source complet du système de vote par internet de la Suisse. Pas un résumé. Pas une brochure. Le code réel — chaque ligne — ouvert à la lecture, l'attaque et l'examen du monde entier.

C'était censé être le moment qui règlerait le débat.

La Suisse se battait sur le vote par internet depuis des années. Les critiques disaient qu'on ne pouvait pas faire confiance à une boîte noire. Les autorités affirmaient que le système était vérifié, audité, certifié. Alors la Poste suisse a fait quelque chose qu'aucune autorité électorale au monde n'avait osé faire : elle a ouvert la boîte. Venez regarder, disait-elle. Nous n'avons rien à cacher.

Trois chercheurs indépendants — Sarah Jamie Lewis, Olivier Pereira et Vanessa Teague — ont pris la Poste suisse au mot. Ils ont regardé.

Ce qu'ils ont trouvé aurait dû être impossible.


Une preuve qui ne prouvait rien

Pour comprendre ce que Lewis, Pereira et Teague ont découvert, vous devez comprendre ce que le système prétendait faire.

Le vote par internet pose un problème fondamental : quand un électeur soumet un bulletin par internet, comment quelqu'un — y compris l'électeur lui-même — peut-il confirmer qu'il a été comptabilisé correctement et n'a pas été échangé contre un autre bulletin par un serveur intermédiaire ? La réponse que les cryptographes ont développée s'appelle un mixnet, ou réseau de mixage. Les votes arrivent chiffrés. Le système les mélange — comme on coupe un jeu de cartes — et puis, de manière cruciale, publie une preuve mathématique que le mélange était honnête : qu'il a déplacé les votes mais ne les a pas modifiés.

Cette preuve est la revendication fondamentale du système en matière de vérifiabilité. Quiconque possède le bon logiciel peut la vérifier. Si la preuve passe, les votes sont intacts. Si la preuve échoue, vous savez que quelque chose ne va pas.

Sauf qu'il y avait une trappe intégrée à la preuve elle-même.

Lewis, Pereira et Teague ont documenté leur découverte dans un article qu'ils ont intitulé — en référence à Magritte — Ceci n'est pas une preuve. Ils ont découvert que la preuve de mélange du système Poste suisse–Scytl utilisait un schéma de commitment avec trappe : une structure mathématique qui fonctionne honnêtement en conditions normales, mais qui, si vous connaissez un ensemble de valeurs caché (la trappe), vous pouvez exploiter. Une autorité détenant ces valeurs pouvait générer une transcription de preuve de mélange qui passerait tous les contrôles de vérification — tout en ayant réellement altéré les votes.

Lisez cela lentement. La preuve pouvait passer. Les mathématiques se vérifiaient. Tous les logiciels de l'auditeur diraient : vérifié. Et les votes seraient faux.

Ce n'était pas une querelle théorique. C'était une porte dérobée fonctionnelle, intégrée au mécanisme même que le système présentait comme sa garantie d'intégrité. Ce que vous deviez vérifier pour confirmer le décompte était ce qui pouvait être contrefait.


Ce que « vérifiable » exige vraiment

La Poste suisse et Scytl ont reconnu la découverte. Les autorités suisses ont suspendu le système de vote électronique en attente de correction. Aucune élection contraignante n'avait été exécutée sur le système défectueux, donc aucun vote n'a été réellement altéré. Mais l'épisode aborde la question fondamentale que chaque affirmation concernant la technologie électorale doit traiter :

Vérifiable pour qui ?

Un système peut vous remettre une preuve mathématique et vous mentir — si la structure de la preuve elle-même contient un levier secret que seul l'opérateur du système sait actionner. Le système de la Poste suisse ne prétendait pas seulement être sûr. Il prétendait offrir la vérifiabilité universelle : une garantie que quiconque, armé de données publiées, pouvait confirmer que le vote avait été comptabilisé correctement sans faire confiance à une seule autorité. Cette affirmation était fausse. La vérification n'était réelle que si l'autorité jouait le jeu. Or, c'est précisément contre cela que la vérifiabilité est censée protéger.

La Cour constitutionnelle fédérale allemande a saisi cette logique une décennie plus tôt, dans son arrêt de 2009 qui interdisait les machines à voter que le public ne pouvait pas vérifier indépendamment. La cour a déclaré que les étapes essentielles du vote et de la détermination du résultat doivent être examinables par le citoyen de manière fiable et sans connaissance particulière. Elle ne demandait pas la perfection. Elle demandait quelque chose qu'un non-expert pouvait suivre. Une preuve cryptographique qu'seul un chercheur formé peut analyser est déjà un pas loin de cette norme — et une preuve qu'un schéma équipé d'une trappe produit est pire qu'aucune preuve du tout, car elle induit activement en erreur.

L'affaire de la Poste suisse montre le problème plus profond. Un système de boîte noire qui dit « faites-nous confiance » demande évidemment la foi. Mais un système de code publié qui dit « vérifiez les mathématiques » et intègre une trappe dans les mathématiques demande la même foi tout en la déguisant en preuve. L'apparence de vérifiabilité est plus dangereuse que l'admission d'opacité, car elle ferme la question.


Comment le code ouvert a attrapé le défaut que la certification a manqué

Voici la chose à retenir : le défaut a été trouvé parce que le code a été publié.

La Poste suisse n'était pas obligée d'ouvrir son code source. La plupart des fournisseurs ne le font pas. L'appareil de certification qui existe dans la plupart des démocraties — aux États-Unis, les directives volontaires de systèmes de vote de la Commission d'assistance électorale ; dans d'autres juridictions, les laboratoires d'essai nationaux — implique des experts examinant des systèmes dans des conditions contrôlées, souvent en vertu d'accords de non-divulgation, avec leurs conclusions résumées mais pas toujours publiées. Quand un examinateur dit « nous l'avons testé et il a réussi », le public fait confiance à l'examinateur. Le raisonnement est caché.

Quand la Poste suisse a publié le code, elle a rendu un autre type d'examen possible : adversarial, indépendant, sans restriction. Lewis, Pereira et Teague n'ont pas été payés par la Poste suisse. Ils n'avaient pas d'accord de confidentialité. Ils ont publié l'intégralité de leur analyse, avec citations et équations, pour que quiconque puisse la lire et la contester. Ce n'est pas un processus de certification. C'est un processus scientifique — et il a trouvé ce que le processus de certification n'avait pas trouvé.

L'écart entre ces deux processus mérite d'être nommé précisément. La certification teste si un système se comporte correctement dans des conditions attendues. L'examen cryptographique indépendant teste si les garanties revendiquées par le système sont valides dans des conditions adversariales — y compris l'adversaire étant l'opérateur du système. C'est la deuxième question qui importe le plus, et c'est celle que seule la publication ouverte permet.

Comparez l'essai de vote par internet du DC en 2010, où une équipe de l'Université du Michigan a obtenu un contrôle quasi complet d'un pilote de retour de bulletin public en environ 48 heures — précisément parce que la juridiction a ouvert le système aux tests publics avant le dépouillement des vrais votes. Les vulnérabilités ont été détectées parce que quelqu'un était autorisé à attaquer. Ou considérez le système iVote de la Nouvelle-Galles du Sud en 2015, où des chercheurs ont découvert des failles graves dans une élection en direct qui avait déjà collecté environ 280 000 votes — des failles qu'un examen de sécurité pré-élection avait validées. Dans chaque cas, la découverte provenait de l'extérieur du processus officiel, non du processus lui-même.

Le modèle tient : l'inspection ouverte trouve ce que la certification fermée manque. Pas toujours. Pas automatiquement. Mais assez régulièrement pour que le fardeau de la preuve doive se déplacer. Quand une autorité dit « nous l'avons certifié », la question à poser est : certifié par qui, contre quel modèle de menace, avec quel accès, et avec les résultats publiés où ?


La trappe comme problème catégorique

Le défaut spécifique du système de la Poste suisse — une trappe dans une preuve cryptographique — n'est pas un bug d'implémentation au sens ordinaire. Ce n'est pas un débordement de buffer ou un serveur mal configuré. Ce sont des erreurs. Celle-ci était un choix de conception, ou du moins un défaut de conception, dans la structure mathématique sur laquelle reposait la garantie de vérifiabilité du système.

Cette distinction importe car elle vous dit quelque chose sur les limites des tests. Vous pouvez sonder un système logiciel pour des bugs arbitraires indéfiniment et quand même manquer un schéma de commitment avec trappe, car le schéma fonctionne correctement de l'extérieur — il produit les bonnes sorties, il passe les bons contrôles. Le défaut est invisible à moins que vous examiniez la spécification mathématique et remarquiez que le schéma de commitment utilisé a une propriété que les concepteurs ne connaissaient pas ou ne divulguaient pas.

C'est pourquoi l'argument pour la vérifiabilité cryptographique dans les élections ne peut pas s'arrêter à « nous avons publié le code ». Il doit s'étendre à : la structure même de la preuve mathématique doit être elle-même auditable de manière indépendante par des personnes qui ne sont pas le fournisseur ou l'autorité, et qui sont motivées à trouver des problèmes plutôt que de les certifier.

Lewis, Pereira et Teague étaient motivés à trouver des problèmes. Ils en ont trouvé un. Ce n'est pas une condamnation des intentions de la Poste suisse — l'entreprise a reconnu la découverte et a pris des mesures pour la corriger. C'est un argument pour le processus qui a produit la découverte.


Ce que « l'audit a confirmé » laisse ouvert

Quand le système de la Poste suisse a été suspendu, les autorités ont pu dire : le processus a fonctionné. Un défaut a été trouvé ; le déploiement a été arrêté ; la correction suivrait. Et dans un sens étroit, c'est vrai. Mais il vaut la peine de demander ce qui aurait pu se passer si le code n'avait pas été publié.

La réponse est : la même preuve aurait s'exécutée, les mêmes transcriptions auraient été produites, et quiconque les aurait vérifiées aurait vu : vérifiée. La certification aurait réussi. Les autorités auraient dit : le système a été audité. Le public n'aurait eu aucun moyen de savoir que la preuve ne prouvait rien.

Une revendication de vérifiabilité que vous ne pouvez pas vérifier indépendamment est indiscernable d'une absence complète de vérifiabilité. Ce n'est pas une critique propre au vote électronique. Cela s'applique à chaque affirmation de correction dans un système électoral — y compris les décomptes sur papier. Le décompte manuel de la Géorgie en 2020 d'environ cinq millions de bulletins a confirmé le résultat tabulé par machine à environ un dixième de pour cent, ce qui est impressionnant. Mais cela dépendait de l'existence de bulletins papier durables qui pouvaient être examinés indépendamment, pas de faire confiance aux machines qui les ont comptabilisés la première fois. Le papier était le contrôle indépendant. La preuve que vous pouviez réellement inspecter.

L'affaire de la Poste suisse en est l'équivalent cryptographique : le code, une fois publié, était le papier. Et le papier montrait que la preuve était une fiction.


Ce qui la rendrait vraiment vérifiable

L'affaire de la Poste suisse ne termine pas le cas en faveur des élections vérififiables cryptographiquement. Elle définit ce que ce cas exige réellement.

Une preuve de mélange est le bon type de mécanisme — une garantie mathématique qu'aucun vote n'a été altéré en transit, vérifiable par quiconque possède le logiciel pour le vérifier. Mais pour que cette garantie soit réelle plutôt que jouée, plusieurs conditions doivent être remplies simultanément :

D'abord, le schéma cryptographique ne doit pas contenir de valeurs de trappe. C'est une exigence mathématique : le schéma de commitment utilisé dans une preuve de mélange doit être contraignant et cachant sans trappe secrète. Il existe des schémas bien compris qui satisfont cela sans trappes ; le choix de celui à utiliser n'est pas un détail de fournisseur mais une question de conception publique.

Deuxièmement, la preuve doit être vérifiable indépendamment par des parties qui n'ont aucun intérêt dans le résultat. Pas seulement un laboratoire de certification. De multiples cryptographes indépendants, avec la spécification complète et l'implémentation, publiant leurs résultats pour la critique publique.

Troisièmement, la chaîne de bout en bout du votant au décompte final doit être auditable sans faire confiance à un seul point de la chaîne. Un votant qui vote par internet devrait être en mesure de confirmer que son bulletin chiffré a été inclus dans le mélange ; tout observateur devrait être en mesure de confirmer que le mélange était honnête ; et le déchiffrement final devrait être indépendamment reproductible. Aucune de ces étapes ne devrait dépendre de la coopération ou de la bonne foi de l'autorité.

Quatrièmement — et c'est le plus difficile — le processus de vérification lui-même doit être accessible de manière à ce que la norme de la Cour constitutionnelle allemande soit respectée : les citoyens ordinaires, et non seulement les cryptographes experts, doivent être en mesure de confirmer les étapes essentielles. Cela peut nécessiter des outils logiciels, des interfaces et une documentation qui vont bien au-delà de ce que n'importe quel système actuel fournit.

Aucune de ces conditions n'a été pleinement remplie par le système de la Poste suisse en 2019. Certaines d'entre elles ne sont remplies par aucun système électoral actuellement déployé au monde. C'est la position honnête. L'affaire de la Poste suisse n'est pas une histoire d'un défaut qui a été trouvé, réparé et tout va bien maintenant. C'est une histoire de ce qui se passe quand vous publiez assez pour que les outsiders trouvent le problème — et ce qu'il faudrait publier pour que la découverte puisse se produire avant le déploiement, systématiquement, plutôt que comme un heureux accident de recherche indépendante.


Le méchant est la preuve que vous ne pouvez pas vérifier

La trappe spécifique dans une preuve de mélange d'un fournisseur suisse n'est pas le point. Le point est la catégorie de revendication : correctness mathématiquement prouvée, offerte sous une forme qui interdit l'inspection externe. Chaque système électoral fait des affirmations. Les fournisseurs revendiquent la certification. Les autorités revendiquent l'audit. Les cryptographes revendiquent la vérifiabilité. Chacune de ces revendications est aussi forte que le mécanisme qui permet à un outsider indépendant de la confirmer ou de la réfuter.

Quand ce mécanisme est une boîte noire, la revendication repose sur la confiance en celui qui a construit la boîte. Quand c'est du code publié, la revendication peut au moins être examinée — et parfois réfutée. Quand c'est une preuve cryptographique publiée utilisant un schéma avec trappe, c'est une performance de vérifiabilité : l'apparence de la chose sans la substance.

Le méchant dans l'histoire de la Poste suisse n'est pas la Poste suisse, et ce n'est pas Scytl. C'est l'opacité déguisée en transparence — une preuve qui semble vérifiable et ne l'est pas. La correction n'est pas d'abandonner la vérifiabilité cryptographique mais d'exiger la vraie version : des schémas sans trappes, un examen sans accords de confidentialité, des preuves que les chercheurs indépendants peuvent vérifier et, si nécessaire, réfuter.

C'est ce que TrustVoting construit : un système dont la correction ne nécessite que personne ne fasse confiance, car la preuve est publiée sous une forme que quiconque peut inspecter. Pas « nous l'avons fait auditer ». Pas « les mathématiques se sont vérifiées ». Voilà les mathématiques. Vérifiez vous-même.


La version à partager : La Suisse a publié son code de vote électronique pour prouver qu'il était digne de confiance. Des chercheurs ont découvert une trappe qui permettait à un initié de contrefaire une preuve valide tout en modifiant les votes. La preuve a réussi. Les votes auraient pu être faux. « Vérifiée » ne signifie quelque chose que si quelqu'un d'indépendant est autorisé à faire la vérification — et autorisé à dire non.

Ce qui reste non vérifiable : si un autre système de vote cryptographique actuellement déployé utilise un schéma de commitment tout aussi problématique, et si les processus de certification que ces systèmes ont traversés comprenaient un examen cryptographique indépendant adversarial avec des résultats publiés. Jusqu'à ce que cet examen existe et que ses résultats soient publics, « le système a été certifié » reste une revendication, pas une preuve.

Ce qui le rendrait vérifiable : publication complète des spécifications cryptographiques et du code source, examen multi-parties indépendant sans NDA, et résultats publiés — y compris les négatifs — avant qu'une élection contraignante ne soit tenue.

Voyez à quel point cette lacune de vérification est courante dans le monde entier →

Lisez la version 2 minutes de ce problème →

Explorez les cas documentés de résultats électoraux non vérifiables →


Sources