Le test d’intrusion que Swiss Post a organisé pour son système de vote, est arrivé à sa fin ce dimanche 24 mars.
Suites de la découverte d’une trappe dans sVote.
Il y a deux semaines, Sarah Jamie Lewis, Vanessa Teague et moi annoncions l’existence d’une trappe dans l’un des mécanismes que le système sVote utilise pour prouver que l’intégrité des votes a été préservée lors du processus de dépouillement — il s’agissait plus précisément d’une trappe dans la preuve de mélange des bulletins de vote, qui permettrait de modifier ces votes de manière indétectable.
La publication de cette trappe ne devait avoir de conséquence pour aucune élection: le système publié par Swiss Post n’a pas encore été utilisé.
Il est cependant apparu que le code dans lequel la trappe était présente, qui a été réalisé par la société Scytl, était déployé au même moment pour des élections dans l’état du New South Wales (NSW) en Australie, au travers du système iVote dont le code n’est pas ouvert à l’examen public. La Commission électorale de l’état du NSW (NSWEC), a immédiatement déclaré que l’erreur avait été corrigée, à temps avant que le décompte n’ait lieu, et que l’élection ne serait pas affectée. Le NSW a ainsi pu bénéficier des effets de l’ordonnance de la Chancellerie fédérale suisse imposant le libre accès au code source de ses systèmes de vote (à partir d’un certain niveau d’usage), soulignant ainsi les avantages d’un débat public sur la sécurité de systèmes critiques.
Un nouveau problème
Nous faisons état aujourd’hui de notre découverte d’un second problème critique dans sVote, totalement indépendant du premier: il est possible d’invalider des bulletins de vote parfaitement valides, sans que les processus d’audit ne le détectent. A nouveau, le problème se situe dans les mécanismes de preuve d’intégrité des bulletins de vote du protocole sVote, qui permettent cette fois à une machine en charge du déchiffrement des bulletins de vote d’invalider un nombre quelconque de bulletins, tout en apportant toutes les preuves requises par le système. Notre rapport montre en effet qu’il est possible de falsifier les preuves de correction des opérations de déchiffrement utilisées dans sVote, et de convaincre n’importe quel auditeur que des bulletins sont invalides, alors que ces bulletins sont en réalité valides.
Interpellés par ce problème, nous avons immédiatement averti Swiss Post et NSWEC de notre découverte, et des premiers pas de notre investigation de ses conséquences: ce problème, qui aurait dû pouvoir être examiné en détail hors de tout déploiement du système Swiss Post, se trouvait à présent susceptible d’avoir un impact sur une élection en cours en NSW. Ce samedi, la NSWEC a spontanément annoncé que ce nouveau problème n’avait pas d’impact sur leur système.
Une tentation pourrait être de minimiser l’importance de cette nouvelle faille dans la mesure où, pour le moment, elle semble “seulement” permettre d’invalider des bulletins de vote. Et ces bulletins déclarés invalides, bien que conformes aux procédures d’audit du système, risquent de susciter des questions. (Trouver la réponse à apporter à ces questions semble par contre plus complexe: comment détecter qui a triché sans violer la confidentialité des votes si on ne peut pas croire les preuves fournies par le système?)
Ce serait passer à côté de deux autres points. Premièrement, le problème n’est pas isolé, ce qui soulève la question de la présence d’autres faiblesses. Outre la trappe identifiée précédemment, notre rapport fait état d’un certain nombre d’autres faiblesses dans les mécanismes de preuve présents dans le code de sVote: le problème identifié dans la preuve de déchiffrement se retrouve à d’autres endroits dans le système, d’autres difficultés existent, mais leur impact nous est encore inconnu. Deuxièmement, et de manière plus fondamentale, mesurer l’importance des faiblesses du protocole sVote à leur impact en terme d’attaques possibles passe à côté de l’objectif principal que vise ce protocole, et qui est requis par la Chancellerie fédérale suisse: offrir des élections vérifiables.
Qu’est-ce qu’une élection vérifiable?
L’organisation d’élections vérifiables passe par deux étapes:
- La définition d’un processus d’audit qui indique la procédure à suivre pour vérifier les résultats d’une élection, et
- La démonstration qu’un audit réussi garantit que le résultat de l’élection est correct.
La faille que nous avons identifiée montre, tout comme la précédente, que les hypothèses faites dans cette démonstration ne sont pas satisfaites, parce que les preuves fournies par le système peuvent être falsifiées. En l’état, sVote ne permet donc pas l’organisation d’élections vérifiables.
Pour plus d’informations:
- Communiqué par Vanessa Teague.
- Communiqué par Swiss Post
- Une introduction à des techniques cryptographiques pour l’organisation d’élections vérifiables.
Cette recherche a bénéficié du soutien du F.R.S.-FNRS via le projet SeVote.