Cours de vote électronique à la Douma de Moscou 2019

Nous continuons de parler des activités de DIT Moscou (voir nos articles précédents ), mais en même temps nous passons au sujet suivant, qui est soudainement devenu pertinent et a pris de l'ampleur - le sujet du vote électronique.

Si l'année dernière, le vote à distance des citoyens était davantage considéré comme une curiosité ou une expérience, dont les conclusions seront tirées un peu plus tard, alors en 2020, nous avons tous soudainement découvert que c'est une réalité à laquelle nous allons bientôt faire face. Dans une large mesure, les restrictions de quarantaine l'ont incité - la conduite des élections a été remise en question et la vie des partis politiques a été interrompue.

En général, la demande a satisfait l'offre - et les factures ont chuté. Les partis ont été autorisés à effectuer des primaires par le biais des services de l'Etat / EIES, les régions font état l'une après l'autre de la volonté d'organiser le DEG (vote électronique à distance) en septembre lors des élections locales.

Heureusement ou malheureusement, la législation à elle seule ne suffit pas - nous avons également besoin d'une mise en œuvre technique, ce qui n'est pas si simple. Quelqu'un croit que tout a déjà été fait à Moscou l'année dernière (il y avait même une blockchain là-bas!), Quelqu'un pense que DEG est généralement impossible à mettre en œuvre à un niveau qui ne permet pas de falsifications massives, et il est donc nécessaire d'abandonner DEG en principe.

Nous avons donc décidé de consacrer une petite série d'articles et de rencontres à l'analyse de ces questions:

  1. Alexey Scherbakov - «Leçons tirées du vote électronique à la Douma de Moscou 2019»
  2. Oleg Artamonov - « Vote électronique à distance: architecture d'un système électoral de confiance »
  3. Table ronde «Appuyez sur le bouton: théorie et pratique du vote électronique»



Nous allons commencer le premier article dès maintenant, et nous suspendrons le deuxième et l'annonce de la table ronde demain (et ajouter des liens ici).

À strictement parler, il ne s'agit pas d'un article, mais d'un texte légèrement édité du discours éponyme d' Alexei Shcherbakov (alexeishch) lors de notre conférence du 5 mars de cette année.

Alexey est un expert invité de l'équipe de Roman Yuneman sur la préparation du rapport « Vote électronique. Risques et vulnérabilités », développeur principal du backend chez FoodPlex.

Le rapport explique exactement comment le vote électronique à distance a été organisé techniquement lors des élections au MHD en 2019, quels étaient les avantages et les inconvénients des solutions techniques et de la collaboration avec des groupes d'experts.

En plus de ce texte, vous pouvez également lire deux autres articles déjà publiés sur Habré:


Si vous préférez la vidéo ou l'audio, vous pouvez regarder le rapport complet sur YouTube .

***


Bonjour, je m'appelle Alexei Shcherbakov, j'étais un expert de l'équipe invitée de Roman Uneman lors du vote à Moscou. Eh bien, en général, avant de parler du vote lui-même, il convient de dire comment cela s'est généralement passé.



Tout a commencé en mars 2019, lorsque l'expérience a été annoncée, puis en mai une loi sur le vote a été adoptée, et le vote lui-même a eu lieu le 8 septembre dans trois districts de Moscou. Le vote s'est déroulé sur Internet pendant 12 heures.

Le système lui-même a été construit sur la base de la blockchain Ethereum de Parity. Le schéma de cryptage d'El Gamal y a également été utilisé. Le système de journalisation a été utilisé par Graylog et une sorte d'implémentation AMQP a été utilisée pour transférer des données entre les messages, nous supposons que c'était probablement RabbitMQ, tout comme une norme d'entreprise. Le système lui-même ressemblait à ceci:



La plupart du système était en dehors du Département des technologies de l'information de Moscou (DIT) [ c'est un point très important, car seul le DIT Moscou a communiqué avec des experts externes - env. éd. ], mais la blockchain était avec eux. Ils ont collaboré avec le portail des services de l'État. Description de la création de ce système, DIT de Moscou publié sur Habr. Et ils y ont déjà dit en particulier qu'ils avaient des problèmes, en gros, seulement pendant une heure, environ 400 personnes ont été touchées par cela.



Nous avons effectué une analyse des données basée sur le téléchargement de la blockchain, qui a été présentée par Medusa. Et ils ont examiné séparément les dépositions des témoins, qui ont déjà été recueillies directement par les observateurs dans les bureaux de vote. C'était un site électronique, où les lectures sur les écrans étaient photographiées, je vais vous en dire plus en détail.



Avant de parler de l'analyse qui a été faite, je vais vous dire comment nous avons abordé la tâche. Si je concevais moi-même ce système, j'utiliserais certaines normes pour concevoir un système à haute disponibilité. En particulier, des mesures seraient utilisées pour surveiller directement la santé du système. Afin de comprendre que certains problèmes commencent - et d'y répondre rapidement. Et en plus de l'équipe qui devrait faire tout cela, les observateurs eux-mêmes doivent le voir - c'est-à-dire que les observateurs doivent en quelque sorte comprendre que quelque chose ne va pas. Et la commission électorale de la circonscription, qui était située dans cette circonscription, devait également comprendre ce qui n'allait pas si quelque chose se passait soudainement.



Dans notre cas, la métrique de temps pour calculer les blocs de la chaîne de blocs ressemblait à ceci. Il montre plusieurs problèmes séparément, les premiers problèmes liés à l'arrêt de la blockchain, ce sont les trois premières zones. Et une autre zone est un problème inconnu que nous ne voyons pas spécifiquement sur cette métrique. Et à la fin, nous constatons une dégradation en douceur qui s'est produite jusqu'à la toute fin du vote.



Si nous considérons la deuxième métrique - le nombre de transactions par bloc - alors par eux, nous voyons le problème plus en détail. Tout d'abord, nous constatons que dans les zones d'arrêt, aucune transaction n'a été enregistrée. Dans notre zone suspecte, nous voyons très peu de transactions, puis nous voyons un moment intéressant où la nature de l'enregistrement des données de la blockchain change. Quelle est la raison pour ça? Initialement, lorsque les données ont été écrites, elles ont été écrites à un certain intervalle, cela a été fait de sorte qu'il était impossible de déterminer exactement quelle personne avait voté au moment du vote. Les données ont été accumulées et transférées dans la blockchain. Cependant, après une sorte de reconfiguration de la blockchain, les données ont commencé à être enregistrées de manière aléatoire. Autrement dit, une opération a été effectuée, mais nous ne pouvons pas dire avec précision sur la base de cette métrique ce qu'a fait exactement DIT. Mais on peut direque dans ce cas, le DIT a en quelque sorte interféré avec le système.



Sur la base de ces métriques, nous pouvons calculer la durée pendant laquelle la blockchain a été arrêtée. Dans les zones de fonctionnement stable, le temps de blocage était d'environ 4 secondes. En conséquence, nous pouvons calculer dans les zones d'arrêt combien de blocs tiennent pendant 4 secondes et combien le temps de bloc restant a été arrêté. Et sur cette base, nous obtenons une limite inférieure pour un temps d'arrêt de 2 heures. C'est le moment où la blockchain n'a pas complètement fonctionné .



De plus, nous avons encore une autre zone dans laquelle les données n'ont pas atteint la blockchain. Au total, toutes ces zones de défaut prennent 4 heures. La zone de dégradation dure environ 6 heures, elle a commencé après le déjeuner et s'est poursuivie jusqu'à la fin du vote. Du fait qu'ils ne surveillaient en aucun cas la blockchain, ils ne soupçonnaient même pas qu'il y avait des problèmes. De plus, les personnes présentes au bureau de vote lui-même, faisant partie de la commission électorale, ont déclaré qu'elles ne pouvaient que s'asseoir sur le canapé et regarder ce qui se passait à l'écran. Autrement dit, ils n'ont pas compris ce qui se passait et ont appris certains problèmes exclusivement des médias. Ils n'avaient aucun outil pour observer le problème .

De plus, il y avait un point intéressant: les observateurs devaient avoir accès à la blockchain elle-même. Autrement dit, on leur a promis qu'ils auront un nœud d'observation spécial et qu'ils pourront accéder directement à la blockchain, effectuer des opérations dessus et regarder ce qui se passe. Mais cette opportunité leur a été retirée! Pourquoi? Pas clair. Et les statistiques étaient simplement affichées à l'écran.



Voilà à quoi ressemblaient les écrans, il n'y a que quatre positions: «l'entonnoir de vente» classique, lorsque nous avons le nombre de personnes qui se sont rendues sur la page de vote, se sont connectées, ont reçu un bulletin de vote et ont voté, et cela diminue à chaque étape.

Il y a un point très important ici - la vie de la newsletter. Si l'électeur n'a pas eu le temps de remplir le bulletin de vote en 15 minutes, il a alors été considéré comme annulé. Et les statistiques elles-mêmes sont également allées à intervalles de 15 minutes. Autrement dit, si notre électeur n'a pas parcouru une partie de l'entonnoir en 15 minutes, alors nous pouvons affirmer avec certitude qu'à l'étape suivante des statistiques, il n'a pas été pris en compte. Et à chaque étape, nous avons obtenu une plus petite quantité. Grâce à cela, il a été possible de suivre d'intéressantes anomalies statistiques.



Cet entonnoir est montré ici, les couleurs indiquent les temps de dysfonctionnement de la blockchain. Il y a des anomalies intéressantes ici, par exemple, lorsque la ligne rouge traverse la ligne jaune - ce nombre de bulletins de vote émis est devenu plus que le nombre de personnes qui se sont connectées en entrant le code à partir de SMS. Il est physiquement impossible simplement, pour recevoir une newsletter, vous devez saisir un code. Et cela s'est produit en l'espace de deux heures.



Il s'agit d'une comparaison des statistiques obtenues auprès des observateurs et des statistiques obtenues du déchargement de la blockchain. Comme vous pouvez le voir, elles coïncident pratiquement, mais il y a une légère différence quand, apparemment, il y avait de petits problèmes dans les statistiques sur le front-end. Cela nous donne l'occasion de dire que les statistiques obtenues par des observateurs indépendants et les statistiques obtenues à partir de la blockchain sur la base du téléchargement sont presque les mêmes, sauf pour l'étape où nous avons eu quelques problèmes.

En plus des statistiques, nous avons un enregistrement audio intéressant - le temps est d'environ 17 heures, environ 2000 personnes ont voté, l'un des représentants de l'Administration de l'information de Moscou dit quelles interventions ils ont effectuées sur un système qui fonctionne. En particulier, il dit qu'environ 900 personnes ont reçu à plusieurs reprises des SMS pour autorisation.



Cela nous dit, premièrement, qu'en raison du système de journalisation qu'ils ont utilisé, le DIT de Moscou pourrait violer le secret du vote . Ils pourraient comparer l'heure du vote, l'état du scrutin et le numéro de téléphone, ce qui est très important! Ils ont identifié des personnes qui avaient des problèmes, identifié leurs numéros de téléphone et envoyé des SMS répétés. Le nombre de ces personnes est d'environ 40% de tous les électeurs dans ce bureau de vote. La différence entre les deux candidats, le premier et le deuxième, n’était que de 84 personnes, alors que pour 900 personnes, nous ne pouvons même pas dire quel a été leur résultat. Parce que des mesures ont été prises contre eux.Nous ne pouvons pas dire que ces votes ont été truqués, mais nous pouvons dire que 900 personnes ont eu des problèmes, nous ne pouvons pas dire pour qui ils ont voté et s’ils ont voté du tout. Autrement dit, le nombre de personnes qui ont rencontré des problèmes est dix fois plus élevé que le nombre de personnes qui ont séparé un candidat de la victoire.

Le référentiel de données et le code utilisé pour l'analyse se trouvent sur ce lien .

Nous avons également analysé le code utilisé pour le vote lui-même. Nous nous attendions à ce que la plupart des opérations se déroulent directement sur la blockchain elle-même et que le code soit publié. Nous avons reçu des contrats intelligents, un code de formulaire et un code responsable de l'envoi du message. Mais il y avait des parties qui restaient inconnues, car elles étaient exécutées du côté d'un autre département - le portail mos.ru déjà.



Qu'est-ce qui a été trouvé de manière intéressante dans le code? Il s'est avéré qu'il ne limitait pas la capacité d'une personne à voter dans différents districts. C'est un point intéressant, il était à la merci du backend, qui était situé ailleurs et dont le code source n'était pas visible.On ne sait pas pourquoi le système a utilisé la blockchain - car il ne contrôlait toujours pas tout, il pourrait être remplacé par une base de données régulière . Eh bien, le code magique a été ajouté au code du formulaire juste un jour avant le vote, ce qui a permis d'inclure un script supplémentaire dans le formulaire en utilisant une variable côté backend, ce qui est très intéressant! Pourquoi ont-ils fait ça? En fait, c'est la possibilité d'exécuter du code arbitraire au moment du vote sur l'appareil de l'utilisateur .



La cryptographie était également un point intéressant. Initialement, ils ont choisi le cryptage 256 bits, bien qu'en 1999, il ait été proposé d'utiliser 768 bits pour ce schéma, et il y a 10 ans, 1024 bits étaient proposés. Et si vous ouvrez maintenant les recommandations de l'Union européenne, alors il y aura une exigence de "au moins 1024 bits", mais si une protection est requise avant l'année 2030, il est recommandé d'utiliser 3072 bits. Il y a aussi un point intéressant dans la façon dont ils calculent l'entropie. Il est clair que les gens ne comprenaient pas parfaitement pourquoi ils avaient besoin de tout cela .

Que puis-je dire sur ce système?

Premièrement, le DIT de Moscou n'a pas été en mesure de fournir au moins 90% de performances . On pense généralement qu'un système à haute disponibilité, il devrait avoir au moins 90% du temps. Autrement dit, nous ne pouvons même pas dire qu'elle travaillait.

Deuxièmement, des opérations ont été effectuées sur le système de production que personne ne contrôlait d'aucune façon, personne ne pouvait comprendre ce qui se passait. Si vous regardez l'audience du tribunal [pour faire appel des résultats des élections - env. éd. ], il s'avère que ni les gens, ni les observateurs, ni la commission elle-même n'ont compris ce qui se passait . Pourtant, il fallait en quelque sorte les préparer à la procédure elle-même, qui était en cours.

Au lieu d'une conclusion


Nous ne voulons pas dire que les élections électroniques sont nécessairement un gâchis, des problèmes constants, des solutions techniques étranges et une mauvaise compréhension de ce qui se passe en ce moment.

Néanmoins, comme nous le constatons à partir de ce matériel, la question de la confiance dans les résultats du vote était essentiellement une question de confiance dans ses organisateurs - dont l'interaction s'est avérée très ambiguë. Il nous semble que cela répond à la question très actuelle de savoir si le système d'information et d'information de Moscou a suffisamment d'expérience pour l'étendre à l'ensemble de Moscou, et plus encore à l'ensemble du pays, et à la question de savoir s'il est possible de prendre simplement une sorte de «vote» avec blockchain », lancez-le sur le serveur et commencez à mener des élections.

De même, est-il possible de construire un système de vote numérique en général, dont la crédibilité est assurée par son architecture elle-même, et non par l'honnêteté de ses auteurs - nous en parlerons dans le prochain article.

All Articles